Marks submodules as dirty
Updates submodule references to indicate uncommitted changes within their working directories, likely for debugging or tracking modifications. No functional changes to the main repository.
This commit is contained in:
parent
d6ff256e32
commit
f017d011cf
66 changed files with 23347 additions and 0 deletions
34
drivers/eeprom/painter/comms/qp_comms_dummy.c
Normal file
34
drivers/eeprom/painter/comms/qp_comms_dummy.c
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
// Copyright 2023 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#ifdef QUANTUM_PAINTER_DUMMY_COMMS_ENABLE
|
||||
|
||||
# include "qp_comms_dummy.h"
|
||||
|
||||
static bool dummy_comms_init(painter_device_t device) {
|
||||
// No-op.
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool dummy_comms_start(painter_device_t device) {
|
||||
// No-op.
|
||||
return true;
|
||||
}
|
||||
|
||||
static void dummy_comms_stop(painter_device_t device) {
|
||||
// No-op.
|
||||
}
|
||||
|
||||
uint32_t dummy_comms_send(painter_device_t device, const void *data, uint32_t byte_count) {
|
||||
// No-op.
|
||||
return byte_count;
|
||||
}
|
||||
|
||||
painter_comms_vtable_t dummy_comms_vtable = {
|
||||
// These are all effective no-op's because they're not actually needed.
|
||||
.comms_init = dummy_comms_init,
|
||||
.comms_start = dummy_comms_start,
|
||||
.comms_stop = dummy_comms_stop,
|
||||
.comms_send = dummy_comms_send};
|
||||
|
||||
#endif // QUANTUM_PAINTER_DUMMY_COMMS_ENABLE
|
||||
11
drivers/eeprom/painter/comms/qp_comms_dummy.h
Normal file
11
drivers/eeprom/painter/comms/qp_comms_dummy.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
// Copyright 2023 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#ifdef QUANTUM_PAINTER_DUMMY_COMMS_ENABLE
|
||||
|
||||
# include "qp_internal.h"
|
||||
|
||||
extern painter_comms_vtable_t dummy_comms_vtable;
|
||||
|
||||
#endif // QUANTUM_PAINTER_DUMMY_COMMS_ENABLE
|
||||
90
drivers/eeprom/painter/comms/qp_comms_i2c.c
Normal file
90
drivers/eeprom/painter/comms/qp_comms_i2c.c
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
// Copyright 2022 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#ifdef QUANTUM_PAINTER_I2C_ENABLE
|
||||
|
||||
# include "i2c_master.h"
|
||||
# include "qp_comms_i2c.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Helpers
|
||||
|
||||
static uint32_t qp_comms_i2c_send_raw(painter_device_t device, const void *data, uint32_t byte_count) {
|
||||
painter_driver_t * driver = (painter_driver_t *)device;
|
||||
qp_comms_i2c_config_t *comms_config = (qp_comms_i2c_config_t *)driver->comms_config;
|
||||
i2c_status_t res = i2c_transmit(comms_config->chip_address << 1, data, byte_count, I2C_TIMEOUT);
|
||||
if (res < 0) {
|
||||
return 0;
|
||||
}
|
||||
return byte_count;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Base I2C support
|
||||
|
||||
bool qp_comms_i2c_init(painter_device_t device) {
|
||||
i2c_init();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool qp_comms_i2c_start(painter_device_t device) {
|
||||
return true;
|
||||
}
|
||||
|
||||
uint32_t qp_comms_i2c_send_data(painter_device_t device, const void *data, uint32_t byte_count) {
|
||||
return qp_comms_i2c_send_raw(device, data, byte_count);
|
||||
}
|
||||
|
||||
void qp_comms_i2c_stop(painter_device_t device) {}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Command+Data I2C support
|
||||
|
||||
static const uint8_t cmd_byte = 0x00;
|
||||
static const uint8_t data_byte = 0x40;
|
||||
|
||||
void qp_comms_i2c_cmddata_send_command(painter_device_t device, uint8_t cmd) {
|
||||
uint8_t buf[2] = {cmd_byte, cmd};
|
||||
qp_comms_i2c_send_raw(device, &buf, 2);
|
||||
}
|
||||
|
||||
uint32_t qp_comms_i2c_cmddata_send_data(painter_device_t device, const void *data, uint32_t byte_count) {
|
||||
uint8_t buf[1 + byte_count];
|
||||
buf[0] = data_byte;
|
||||
memcpy(&buf[1], data, byte_count);
|
||||
if (qp_comms_i2c_send_raw(device, buf, sizeof(buf)) != sizeof(buf)) {
|
||||
return 0;
|
||||
}
|
||||
return byte_count;
|
||||
}
|
||||
|
||||
void qp_comms_i2c_bulk_command_sequence(painter_device_t device, const uint8_t *sequence, size_t sequence_len) {
|
||||
uint8_t buf[32];
|
||||
for (size_t i = 0; i < sequence_len;) {
|
||||
uint8_t command = sequence[i];
|
||||
uint8_t delay = sequence[i + 1];
|
||||
uint8_t num_bytes = sequence[i + 2];
|
||||
buf[0] = cmd_byte;
|
||||
buf[1] = command;
|
||||
memcpy(&buf[2], &sequence[i + 3], num_bytes);
|
||||
qp_comms_i2c_send_raw(device, buf, num_bytes + 2);
|
||||
if (delay > 0) {
|
||||
wait_ms(delay);
|
||||
}
|
||||
i += (3 + num_bytes);
|
||||
}
|
||||
}
|
||||
|
||||
const painter_comms_with_command_vtable_t i2c_comms_cmddata_vtable = {
|
||||
.base =
|
||||
{
|
||||
.comms_init = qp_comms_i2c_init,
|
||||
.comms_start = qp_comms_i2c_start,
|
||||
.comms_send = qp_comms_i2c_cmddata_send_data,
|
||||
.comms_stop = qp_comms_i2c_stop,
|
||||
},
|
||||
.send_command = qp_comms_i2c_cmddata_send_command,
|
||||
.bulk_command_sequence = qp_comms_i2c_bulk_command_sequence,
|
||||
};
|
||||
|
||||
#endif // QUANTUM_PAINTER_I2C_ENABLE
|
||||
28
drivers/eeprom/painter/comms/qp_comms_i2c.h
Normal file
28
drivers/eeprom/painter/comms/qp_comms_i2c.h
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
// Copyright 2022 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#ifdef QUANTUM_PAINTER_I2C_ENABLE
|
||||
|
||||
# include <stdint.h>
|
||||
|
||||
# include "gpio.h"
|
||||
# include "qp_internal.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Base I2C support
|
||||
|
||||
typedef struct qp_comms_i2c_config_t {
|
||||
uint8_t chip_address;
|
||||
} qp_comms_i2c_config_t;
|
||||
|
||||
bool qp_comms_i2c_init(painter_device_t device);
|
||||
bool qp_comms_i2c_start(painter_device_t device);
|
||||
uint32_t qp_comms_i2c_send_data(painter_device_t device, const void* data, uint32_t byte_count);
|
||||
void qp_comms_i2c_stop(painter_device_t device);
|
||||
|
||||
extern const painter_comms_with_command_vtable_t i2c_comms_cmddata_vtable;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#endif // QUANTUM_PAINTER_I2C_ENABLE
|
||||
147
drivers/eeprom/painter/comms/qp_comms_spi.c
Normal file
147
drivers/eeprom/painter/comms/qp_comms_spi.c
Normal file
|
|
@ -0,0 +1,147 @@
|
|||
// Copyright 2021 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#ifdef QUANTUM_PAINTER_SPI_ENABLE
|
||||
|
||||
# include "spi_master.h"
|
||||
# include "qp_comms_spi.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Base SPI support
|
||||
|
||||
bool qp_comms_spi_init(painter_device_t device) {
|
||||
painter_driver_t * driver = (painter_driver_t *)device;
|
||||
qp_comms_spi_config_t *comms_config = (qp_comms_spi_config_t *)driver->comms_config;
|
||||
|
||||
// Initialize the SPI peripheral
|
||||
spi_init();
|
||||
|
||||
// Set up CS as output high
|
||||
gpio_set_pin_output(comms_config->chip_select_pin);
|
||||
gpio_write_pin_high(comms_config->chip_select_pin);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool qp_comms_spi_start(painter_device_t device) {
|
||||
painter_driver_t * driver = (painter_driver_t *)device;
|
||||
qp_comms_spi_config_t *comms_config = (qp_comms_spi_config_t *)driver->comms_config;
|
||||
|
||||
return spi_start(comms_config->chip_select_pin, comms_config->lsb_first, comms_config->mode, comms_config->divisor);
|
||||
}
|
||||
|
||||
uint32_t qp_comms_spi_send_data(painter_device_t device, const void *data, uint32_t byte_count) {
|
||||
uint32_t bytes_remaining = byte_count;
|
||||
const uint8_t *p = (const uint8_t *)data;
|
||||
const uint32_t max_msg_length = 1024;
|
||||
|
||||
while (bytes_remaining > 0) {
|
||||
uint32_t bytes_this_loop = QP_MIN(bytes_remaining, max_msg_length);
|
||||
spi_transmit(p, bytes_this_loop);
|
||||
p += bytes_this_loop;
|
||||
bytes_remaining -= bytes_this_loop;
|
||||
}
|
||||
|
||||
return byte_count - bytes_remaining;
|
||||
}
|
||||
|
||||
void qp_comms_spi_stop(painter_device_t device) {
|
||||
painter_driver_t * driver = (painter_driver_t *)device;
|
||||
qp_comms_spi_config_t *comms_config = (qp_comms_spi_config_t *)driver->comms_config;
|
||||
spi_stop();
|
||||
gpio_write_pin_high(comms_config->chip_select_pin);
|
||||
}
|
||||
|
||||
const painter_comms_vtable_t spi_comms_vtable = {
|
||||
.comms_init = qp_comms_spi_init,
|
||||
.comms_start = qp_comms_spi_start,
|
||||
.comms_send = qp_comms_spi_send_data,
|
||||
.comms_stop = qp_comms_spi_stop,
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// SPI with D/C and RST pins
|
||||
|
||||
# ifdef QUANTUM_PAINTER_SPI_DC_RESET_ENABLE
|
||||
|
||||
bool qp_comms_spi_dc_reset_init(painter_device_t device) {
|
||||
if (!qp_comms_spi_init(device)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
painter_driver_t * driver = (painter_driver_t *)device;
|
||||
qp_comms_spi_dc_reset_config_t *comms_config = (qp_comms_spi_dc_reset_config_t *)driver->comms_config;
|
||||
|
||||
// Set up D/C as output low, if specified
|
||||
if (comms_config->dc_pin != NO_PIN) {
|
||||
gpio_set_pin_output(comms_config->dc_pin);
|
||||
gpio_write_pin_low(comms_config->dc_pin);
|
||||
}
|
||||
|
||||
// Set up RST as output, if specified, performing a reset in the process
|
||||
if (comms_config->reset_pin != NO_PIN) {
|
||||
gpio_set_pin_output(comms_config->reset_pin);
|
||||
gpio_write_pin_low(comms_config->reset_pin);
|
||||
wait_ms(20);
|
||||
gpio_write_pin_high(comms_config->reset_pin);
|
||||
wait_ms(20);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
uint32_t qp_comms_spi_dc_reset_send_data(painter_device_t device, const void *data, uint32_t byte_count) {
|
||||
painter_driver_t * driver = (painter_driver_t *)device;
|
||||
qp_comms_spi_dc_reset_config_t *comms_config = (qp_comms_spi_dc_reset_config_t *)driver->comms_config;
|
||||
gpio_write_pin_high(comms_config->dc_pin);
|
||||
return qp_comms_spi_send_data(device, data, byte_count);
|
||||
}
|
||||
|
||||
void qp_comms_spi_dc_reset_send_command(painter_device_t device, uint8_t cmd) {
|
||||
painter_driver_t * driver = (painter_driver_t *)device;
|
||||
qp_comms_spi_dc_reset_config_t *comms_config = (qp_comms_spi_dc_reset_config_t *)driver->comms_config;
|
||||
gpio_write_pin_low(comms_config->dc_pin);
|
||||
spi_write(cmd);
|
||||
}
|
||||
|
||||
void qp_comms_spi_dc_reset_bulk_command_sequence(painter_device_t device, const uint8_t *sequence, size_t sequence_len) {
|
||||
painter_driver_t * driver = (painter_driver_t *)device;
|
||||
qp_comms_spi_dc_reset_config_t *comms_config = (qp_comms_spi_dc_reset_config_t *)driver->comms_config;
|
||||
for (size_t i = 0; i < sequence_len;) {
|
||||
uint8_t command = sequence[i];
|
||||
uint8_t delay = sequence[i + 1];
|
||||
uint8_t num_bytes = sequence[i + 2];
|
||||
qp_comms_spi_dc_reset_send_command(device, command);
|
||||
if (num_bytes > 0) {
|
||||
if (comms_config->command_params_uses_command_pin) {
|
||||
for (uint8_t j = 0; j < num_bytes; j++) {
|
||||
qp_comms_spi_dc_reset_send_command(device, sequence[i + 3 + j]);
|
||||
}
|
||||
} else {
|
||||
qp_comms_spi_dc_reset_send_data(device, &sequence[i + 3], num_bytes);
|
||||
}
|
||||
}
|
||||
if (delay > 0) {
|
||||
wait_ms(delay);
|
||||
}
|
||||
i += (3 + num_bytes);
|
||||
}
|
||||
}
|
||||
|
||||
const painter_comms_with_command_vtable_t spi_comms_with_dc_vtable = {
|
||||
.base =
|
||||
{
|
||||
.comms_init = qp_comms_spi_dc_reset_init,
|
||||
.comms_start = qp_comms_spi_start,
|
||||
.comms_send = qp_comms_spi_dc_reset_send_data,
|
||||
.comms_stop = qp_comms_spi_stop,
|
||||
},
|
||||
.send_command = qp_comms_spi_dc_reset_send_command,
|
||||
.bulk_command_sequence = qp_comms_spi_dc_reset_bulk_command_sequence,
|
||||
};
|
||||
|
||||
# endif // QUANTUM_PAINTER_SPI_DC_RESET_ENABLE
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#endif // QUANTUM_PAINTER_SPI_ENABLE
|
||||
52
drivers/eeprom/painter/comms/qp_comms_spi.h
Normal file
52
drivers/eeprom/painter/comms/qp_comms_spi.h
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
// Copyright 2021 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#ifdef QUANTUM_PAINTER_SPI_ENABLE
|
||||
|
||||
# include <stdint.h>
|
||||
|
||||
# include "gpio.h"
|
||||
# include "qp_internal.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Base SPI support
|
||||
|
||||
typedef struct qp_comms_spi_config_t {
|
||||
pin_t chip_select_pin;
|
||||
uint16_t divisor;
|
||||
bool lsb_first;
|
||||
int8_t mode;
|
||||
} qp_comms_spi_config_t;
|
||||
|
||||
bool qp_comms_spi_init(painter_device_t device);
|
||||
bool qp_comms_spi_start(painter_device_t device);
|
||||
uint32_t qp_comms_spi_send_data(painter_device_t device, const void* data, uint32_t byte_count);
|
||||
void qp_comms_spi_stop(painter_device_t device);
|
||||
|
||||
extern const painter_comms_vtable_t spi_comms_vtable;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// SPI with D/C and RST pins
|
||||
|
||||
# ifdef QUANTUM_PAINTER_SPI_DC_RESET_ENABLE
|
||||
|
||||
typedef struct qp_comms_spi_dc_reset_config_t {
|
||||
qp_comms_spi_config_t spi_config;
|
||||
pin_t dc_pin;
|
||||
pin_t reset_pin;
|
||||
bool command_params_uses_command_pin; // keep D/C held low when sending command sequences for data bytes
|
||||
} qp_comms_spi_dc_reset_config_t;
|
||||
|
||||
bool qp_comms_spi_dc_reset_init(painter_device_t device);
|
||||
void qp_comms_spi_dc_reset_send_command(painter_device_t device, uint8_t cmd);
|
||||
uint32_t qp_comms_spi_dc_reset_send_data(painter_device_t device, const void* data, uint32_t byte_count);
|
||||
void qp_comms_spi_dc_reset_bulk_command_sequence(painter_device_t device, const uint8_t* sequence, size_t sequence_len);
|
||||
|
||||
extern const painter_comms_with_command_vtable_t spi_comms_with_dc_vtable;
|
||||
|
||||
# endif // QUANTUM_PAINTER_SPI_DC_RESET_ENABLE
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#endif // QUANTUM_PAINTER_SPI_ENABLE
|
||||
157
drivers/eeprom/painter/gc9a01/qp_gc9a01.c
Normal file
157
drivers/eeprom/painter/gc9a01/qp_gc9a01.c
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
// Copyright 2021 Paul Cotter (@gr1mr3aver)
|
||||
// Copyright 2023 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "qp_internal.h"
|
||||
#include "qp_comms.h"
|
||||
#include "qp_gc9a01.h"
|
||||
#include "qp_gc9a01_opcodes.h"
|
||||
#include "qp_tft_panel.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Driver storage
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
tft_panel_dc_reset_painter_device_t gc9a01_drivers[GC9A01_NUM_DEVICES] = {0};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Initialization
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
__attribute__((weak)) bool qp_gc9a01_init(painter_device_t device, painter_rotation_t rotation) {
|
||||
// A lot of these "unknown" opcodes are sourced from other OSS projects and are seemingly required for this display to function.
|
||||
// clang-format off
|
||||
const uint8_t gc9a01_init_sequence[] = {
|
||||
// Command, Delay, N, Data[N]
|
||||
GC9A01_SET_INTER_REG_ENABLE2, 0, 0,
|
||||
0xEB, 0, 1, 0x14,
|
||||
GC9A01_SET_INTER_REG_ENABLE1, 0, 0,
|
||||
GC9A01_SET_INTER_REG_ENABLE2, 0, 0,
|
||||
0xEB, 0, 1, 0x14,
|
||||
0x84, 0, 1, 0x40,
|
||||
0x85, 0, 1, 0xFF,
|
||||
0x86, 0, 1, 0xFF,
|
||||
0x87, 0, 1, 0xFF,
|
||||
0x88, 0, 1, 0x0A,
|
||||
0x89, 0, 1, 0x21,
|
||||
0x8a, 0, 1, 0x00,
|
||||
0x8b, 0, 1, 0x80,
|
||||
0x8c, 0, 1, 0x01,
|
||||
0x8d, 0, 1, 0x01,
|
||||
0x8e, 0, 1, 0xFF,
|
||||
0x8f, 0, 1, 0xFF,
|
||||
GC9A01_SET_FUNCTION_CTL, 0, 2, 0x00, 0x20,
|
||||
GC9A01_SET_PIX_FMT, 0, 1, 0x55,
|
||||
0x90, 0, 4, 0x08, 0x08, 0x08, 0x08,
|
||||
0xBD, 0, 1, 0x06,
|
||||
0xBC, 0, 1, 0x00,
|
||||
0xFF, 0, 3, 0x60, 0x01, 0x04,
|
||||
GC9A01_SET_POWER_CTL_2, 0, 1, 0x13,
|
||||
GC9A01_SET_POWER_CTL_3, 0, 1, 0x13,
|
||||
GC9A01_SET_POWER_CTL_4, 0, 1, 0x22,
|
||||
0xBE, 0, 1, 0x11,
|
||||
0xE1, 0, 2, 0x10, 0x0E,
|
||||
0xDF, 0, 3, 0x21, 0x0C, 0x02,
|
||||
GC9A01_SET_GAMMA1, 0, 6, 0x45, 0x09, 0x08, 0x08, 0x26, 0x2A,
|
||||
GC9A01_SET_GAMMA2, 0, 6, 0x43, 0x70, 0x72, 0x36, 0x37, 0x6F,
|
||||
GC9A01_SET_GAMMA3, 0, 6, 0x45, 0x09, 0x08, 0x08, 0x26, 0x2A,
|
||||
GC9A01_SET_GAMMA4, 0, 6, 0x43, 0x70, 0x72, 0x36, 0x37, 0x6F,
|
||||
0xED, 0, 2, 0x1B, 0x0B,
|
||||
0xAE, 0, 1, 0x77,
|
||||
0xCD, 0, 1, 0x63,
|
||||
0x70, 0, 9, 0x07, 0x07, 0x04, 0x0E, 0x0F, 0x09, 0x07, 0x08, 0x03,
|
||||
GC9A01_SET_FRAME_RATE, 0, 1, 0x34,
|
||||
0x62, 0, 12, 0x18, 0x0D, 0x71, 0xED, 0x70, 0x70, 0x18, 0x0F, 0x71, 0xEF, 0x70, 0x70,
|
||||
0x63, 0, 12, 0x18, 0x11, 0x71, 0xF1, 0x70, 0x70, 0x18, 0x13, 0x71, 0xF3, 0x70, 0x70,
|
||||
0x64, 0, 7, 0x28, 0x29, 0xF1, 0x01, 0xF1, 0x00, 0x07,
|
||||
0x66, 0, 10, 0x3C, 0x00, 0xCD, 0x67, 0x45, 0x45, 0x10, 0x00, 0x00, 0x00,
|
||||
0x67, 0, 10, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x01, 0x54, 0x10, 0x32, 0x98,
|
||||
0x74, 0, 7, 0x10, 0x85, 0x80, 0x00, 0x00, 0x4E, 0x00,
|
||||
0x98, 0, 2, 0x3E, 0x07,
|
||||
GC9A01_CMD_TEARING_OFF, 0, 0,
|
||||
GC9A01_CMD_INVERT_OFF, 0, 0,
|
||||
GC9A01_CMD_SLEEP_OFF, 120, 0,
|
||||
GC9A01_CMD_DISPLAY_ON, 20, 0
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
// clang-format on
|
||||
qp_comms_bulk_command_sequence(device, gc9a01_init_sequence, sizeof(gc9a01_init_sequence));
|
||||
|
||||
// Configure the rotation (i.e. the ordering and direction of memory writes in GRAM)
|
||||
const uint8_t madctl[] = {
|
||||
[QP_ROTATION_0] = GC9A01_MADCTL_BGR,
|
||||
[QP_ROTATION_90] = GC9A01_MADCTL_BGR | GC9A01_MADCTL_MX | GC9A01_MADCTL_MV,
|
||||
[QP_ROTATION_180] = GC9A01_MADCTL_BGR | GC9A01_MADCTL_MX | GC9A01_MADCTL_MY,
|
||||
[QP_ROTATION_270] = GC9A01_MADCTL_BGR | GC9A01_MADCTL_MV | GC9A01_MADCTL_MY,
|
||||
};
|
||||
qp_comms_command_databyte(device, GC9A01_SET_MEM_ACS_CTL, madctl[rotation]);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Driver vtable
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
const tft_panel_dc_reset_painter_driver_vtable_t gc9a01_driver_vtable = {
|
||||
.base =
|
||||
{
|
||||
.init = qp_gc9a01_init,
|
||||
.power = qp_tft_panel_power,
|
||||
.clear = qp_tft_panel_clear,
|
||||
.flush = qp_tft_panel_flush,
|
||||
.pixdata = qp_tft_panel_pixdata,
|
||||
.viewport = qp_tft_panel_viewport,
|
||||
.palette_convert = qp_tft_panel_palette_convert_rgb565_swapped,
|
||||
.append_pixels = qp_tft_panel_append_pixels_rgb565,
|
||||
.append_pixdata = qp_tft_panel_append_pixdata,
|
||||
},
|
||||
.num_window_bytes = 2,
|
||||
.swap_window_coords = false,
|
||||
.opcodes =
|
||||
{
|
||||
.display_on = GC9A01_CMD_DISPLAY_ON,
|
||||
.display_off = GC9A01_CMD_DISPLAY_OFF,
|
||||
.set_column_address = GC9A01_SET_COL_ADDR,
|
||||
.set_row_address = GC9A01_SET_PAGE_ADDR,
|
||||
.enable_writes = GC9A01_SET_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
#ifdef QUANTUM_PAINTER_GC9A01_SPI_ENABLE
|
||||
// Factory function for creating a handle to the ILI9341 device
|
||||
painter_device_t qp_gc9a01_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode) {
|
||||
for (uint32_t i = 0; i < GC9A01_NUM_DEVICES; ++i) {
|
||||
tft_panel_dc_reset_painter_device_t *driver = &gc9a01_drivers[i];
|
||||
if (!driver->base.driver_vtable) {
|
||||
driver->base.driver_vtable = (const painter_driver_vtable_t *)&gc9a01_driver_vtable;
|
||||
driver->base.comms_vtable = (const painter_comms_vtable_t *)&spi_comms_with_dc_vtable;
|
||||
driver->base.native_bits_per_pixel = 16; // RGB565
|
||||
driver->base.panel_width = panel_width;
|
||||
driver->base.panel_height = panel_height;
|
||||
driver->base.rotation = QP_ROTATION_0;
|
||||
driver->base.offset_x = 0;
|
||||
driver->base.offset_y = 0;
|
||||
|
||||
// SPI and other pin configuration
|
||||
driver->base.comms_config = &driver->spi_dc_reset_config;
|
||||
driver->spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin;
|
||||
driver->spi_dc_reset_config.spi_config.divisor = spi_divisor;
|
||||
driver->spi_dc_reset_config.spi_config.lsb_first = false;
|
||||
driver->spi_dc_reset_config.spi_config.mode = spi_mode;
|
||||
driver->spi_dc_reset_config.dc_pin = dc_pin;
|
||||
driver->spi_dc_reset_config.reset_pin = reset_pin;
|
||||
driver->spi_dc_reset_config.command_params_uses_command_pin = false;
|
||||
|
||||
if (!qp_internal_register_device((painter_device_t)driver)) {
|
||||
memset(driver, 0, sizeof(tft_panel_dc_reset_painter_device_t));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return (painter_device_t)driver;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif // QUANTUM_PAINTER_GC9A01_SPI_ENABLE
|
||||
36
drivers/eeprom/painter/gc9a01/qp_gc9a01.h
Normal file
36
drivers/eeprom/painter/gc9a01/qp_gc9a01.h
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
// Copyright 2021 Paul Cotter (@gr1mr3aver)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#include "gpio.h"
|
||||
#include "qp_internal.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter GC9A01 configurables (add to your keyboard's config.h)
|
||||
|
||||
#ifndef GC9A01_NUM_DEVICES
|
||||
/**
|
||||
* @def This controls the maximum number of GC9A01 devices that Quantum Painter can communicate with at any one time.
|
||||
* Increasing this number allows for multiple displays to be used.
|
||||
*/
|
||||
# define GC9A01_NUM_DEVICES 1
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter GC9A01 device factories
|
||||
|
||||
#ifdef QUANTUM_PAINTER_GC9A01_SPI_ENABLE
|
||||
/**
|
||||
* Factory method for an GC9A01 SPI LCD device.
|
||||
*
|
||||
* @param panel_width[in] the width of the display panel
|
||||
* @param panel_height[in] the height of the display panel
|
||||
* @param chip_select_pin[in] the GPIO pin used for SPI chip select
|
||||
* @param dc_pin[in] the GPIO pin used for D/C control
|
||||
* @param reset_pin[in] the GPIO pin used for RST
|
||||
* @param spi_divisor[in] the SPI divisor to use when communicating with the display
|
||||
* @param spi_mode[in] the SPI mode to use when communicating with the display
|
||||
* @return the device handle used with all drawing routines in Quantum Painter
|
||||
*/
|
||||
painter_device_t qp_gc9a01_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode);
|
||||
#endif // QUANTUM_PAINTER_GC9A01_SPI_ENABLE
|
||||
77
drivers/eeprom/painter/gc9a01/qp_gc9a01_opcodes.h
Normal file
77
drivers/eeprom/painter/gc9a01/qp_gc9a01_opcodes.h
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
// Copyright 2021 Paul Cotter (@gr1mr3aver)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter GC9A01 command opcodes
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Level 1 command opcodes
|
||||
|
||||
#define GC9A01_GET_ID_INFO 0x04 // Get ID information
|
||||
#define GC9A01_GET_STATUS 0x09 // Get status
|
||||
#define GC9A01_CMD_SLEEP_ON 0x10 // Enter sleep mode
|
||||
#define GC9A01_CMD_SLEEP_OFF 0x11 // Exit sleep mode
|
||||
#define GC9A01_CMD_PARTIAL_ON 0x12 // Enter partial mode
|
||||
#define GC9A01_CMD_PARTIAL_OFF 0x13 // Exit partial mode
|
||||
#define GC9A01_CMD_INVERT_ON 0x20 // Enter inverted mode
|
||||
#define GC9A01_CMD_INVERT_OFF 0x21 // Exit inverted mode
|
||||
#define GC9A01_CMD_DISPLAY_OFF 0x28 // Disable display
|
||||
#define GC9A01_CMD_DISPLAY_ON 0x29 // Enable display
|
||||
#define GC9A01_SET_COL_ADDR 0x2A // Set column address
|
||||
#define GC9A01_SET_PAGE_ADDR 0x2B // Set page address
|
||||
#define GC9A01_SET_MEM 0x2C // Set memory
|
||||
#define GC9A01_SET_PARTIAL_AREA 0x30 // Set partial area
|
||||
#define GC9A01_SET_VSCROLL 0x33 // Set vertical scroll def
|
||||
#define GC9A01_CMD_TEARING_ON 0x34 // Tearing line enabled
|
||||
#define GC9A01_CMD_TEARING_OFF 0x35 // Tearing line disabled
|
||||
#define GC9A01_SET_MEM_ACS_CTL 0x36 // Set mem access ctl
|
||||
#define GC9A01_SET_VSCROLL_ADDR 0x37 // Set vscroll start addr
|
||||
#define GC9A01_CMD_IDLE_OFF 0x38 // Exit idle mode
|
||||
#define GC9A01_CMD_IDLE_ON 0x39 // Enter idle mode
|
||||
#define GC9A01_SET_PIX_FMT 0x3A // Set pixel format
|
||||
#define GC9A01_SET_MEM_CONT 0x3C // Set memory continue
|
||||
#define GC9A01_SET_TEAR_SCANLINE 0x44 // Set tearing scanline
|
||||
#define GC9A01_GET_TEAR_SCANLINE 0x45 // Get tearing scanline
|
||||
#define GC9A01_SET_BRIGHTNESS 0x51 // Set brightness
|
||||
#define GC9A01_SET_DISPLAY_CTL 0x53 // Set display ctl
|
||||
#define GC9A01_GET_ID1 0xDA // Get ID1
|
||||
#define GC9A01_GET_ID2 0xDB // Get ID2
|
||||
#define GC9A01_GET_ID3 0xDC // Get ID3
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Level 2 command opcodes
|
||||
|
||||
#define GC9A01_SET_RGB_IF_SIG_CTL 0xB0 // RGB IF signal ctl
|
||||
#define GC9A01_SET_BLANKING_PORCH_CTL 0xB5 // Set blanking porch ctl
|
||||
#define GC9A01_SET_FUNCTION_CTL 0xB6 // Set function ctl
|
||||
#define GC9A01_SET_TEARING_EFFECT 0xBA // Set backlight ctl 3
|
||||
#define GC9A01_SET_IF_CTL 0xF6 // Set interface control
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Level 3 command opcodes
|
||||
|
||||
#define GC9A01_SET_FRAME_RATE 0xE8 // Set frame rate
|
||||
#define GC9A01_SET_SPI_2DATA 0xE9 // Set frame rate
|
||||
#define GC9A01_SET_POWER_CTL_1 0xC1 // Set power ctl 1
|
||||
#define GC9A01_SET_POWER_CTL_2 0xC3 // Set power ctl 2
|
||||
#define GC9A01_SET_POWER_CTL_3 0xC4 // Set power ctl 3
|
||||
#define GC9A01_SET_POWER_CTL_4 0xC9 // Set power ctl 4
|
||||
#define GC9A01_SET_POWER_CTL_7 0xA7 // Set power ctl 7
|
||||
#define GC9A01_SET_INTER_REG_ENABLE1 0xFE // Enable Inter Register 1
|
||||
#define GC9A01_SET_INTER_REG_ENABLE2 0xEF // Enable Inter Register 2
|
||||
#define GC9A01_SET_GAMMA1 0xF0 //
|
||||
#define GC9A01_SET_GAMMA2 0xF1
|
||||
#define GC9A01_SET_GAMMA3 0xF2
|
||||
#define GC9A01_SET_GAMMA4 0xF3
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// MADCTL Flags
|
||||
#define GC9A01_MADCTL_MY 0b10000000
|
||||
#define GC9A01_MADCTL_MX 0b01000000
|
||||
#define GC9A01_MADCTL_MV 0b00100000
|
||||
#define GC9A01_MADCTL_ML 0b00010000
|
||||
#define GC9A01_MADCTL_RGB 0b00000000
|
||||
#define GC9A01_MADCTL_BGR 0b00001000
|
||||
#define GC9A01_MADCTL_MH 0b00000100
|
||||
67
drivers/eeprom/painter/generic/qp_surface.h
Normal file
67
drivers/eeprom/painter/generic/qp_surface.h
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
// Copyright 2022 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#include "qp_internal.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter surface helpers
|
||||
|
||||
// Helper for determining buffer size required for a surface
|
||||
#define SURFACE_REQUIRED_BUFFER_BYTE_SIZE(w, h, bpp) ((((w) * (h) * (bpp)) + 7) / 8)
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter surface configurables (add to your keyboard's config.h)
|
||||
|
||||
#ifndef SURFACE_NUM_DEVICES
|
||||
/**
|
||||
* @def This controls the maximum number of surface devices that Quantum Painter can use at any one time.
|
||||
* Increasing this number allows for multiple framebuffers to be used. Each requires its own RAM allocation.
|
||||
*/
|
||||
# define SURFACE_NUM_DEVICES 1
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Forward declarations
|
||||
|
||||
#ifdef QUANTUM_PAINTER_SURFACE_ENABLE
|
||||
|
||||
// Surface struct
|
||||
struct surface_painter_device_t;
|
||||
typedef struct surface_painter_device_t surface_painter_device_t;
|
||||
|
||||
/**
|
||||
* Factory method for an RGB565 surface (aka framebuffer).
|
||||
*
|
||||
* @param panel_width[in] the width of the display panel
|
||||
* @param panel_height[in] the height of the display panel
|
||||
* @param buffer[in] pointer to a preallocated uint8_t buffer of size `SURFACE_REQUIRED_BUFFER_BYTE_SIZE(panel_width, panel_height, 16)`
|
||||
* @return the device handle used with all drawing routines in Quantum Painter
|
||||
*/
|
||||
painter_device_t qp_make_rgb565_surface(uint16_t panel_width, uint16_t panel_height, void *buffer);
|
||||
|
||||
/**
|
||||
* Factory method for a 1bpp monochrome surface (aka framebuffer).
|
||||
*
|
||||
* @param panel_width[in] the width of the display panel
|
||||
* @param panel_height[in] the height of the display panel
|
||||
* @param buffer[in] pointer to a preallocated uint8_t buffer of size `SURFACE_REQUIRED_BUFFER_BYTE_SIZE(panel_width, panel_height, 1)`
|
||||
* @return the device handle used with all drawing routines in Quantum Painter
|
||||
*/
|
||||
painter_device_t qp_make_mono1bpp_surface(uint16_t panel_width, uint16_t panel_height, void *buffer);
|
||||
|
||||
/**
|
||||
* Helper method to draw the contents of the framebuffer to the target device.
|
||||
*
|
||||
* After successful completion, the dirty area is reset.
|
||||
*
|
||||
* @param surface[in] the surface to copy from
|
||||
* @param target[in] the target device to copy into
|
||||
* @param x[in] the x-location of the original position of the framebuffer
|
||||
* @param y[in] the y-location of the original position of the framebuffer
|
||||
* @param entire_surface[in] whether the entire surface should be drawn, instead of just the dirty region
|
||||
* @return whether the draw operation completed successfully
|
||||
*/
|
||||
bool qp_surface_draw(painter_device_t surface, painter_device_t target, uint16_t x, uint16_t y, bool entire_surface);
|
||||
|
||||
#endif // QUANTUM_PAINTER_SURFACE_ENABLE
|
||||
141
drivers/eeprom/painter/generic/qp_surface_common.c
Normal file
141
drivers/eeprom/painter/generic/qp_surface_common.c
Normal file
|
|
@ -0,0 +1,141 @@
|
|||
// Copyright 2022 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "color.h"
|
||||
#include "qp_draw.h"
|
||||
#include "qp_surface_internal.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Driver storage
|
||||
|
||||
surface_painter_device_t surface_drivers[SURFACE_NUM_DEVICES] = {0};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Helpers
|
||||
|
||||
void qp_surface_increment_pixdata_location(surface_viewport_data_t *viewport) {
|
||||
// Increment the X-position
|
||||
viewport->pixdata_x++;
|
||||
|
||||
// If the x-coord has gone past the right-side edge, loop it back around and increment the y-coord
|
||||
if (viewport->pixdata_x > viewport->viewport_r) {
|
||||
viewport->pixdata_x = viewport->viewport_l;
|
||||
viewport->pixdata_y++;
|
||||
}
|
||||
|
||||
// If the y-coord has gone past the bottom, loop it back to the top
|
||||
if (viewport->pixdata_y > viewport->viewport_b) {
|
||||
viewport->pixdata_y = viewport->viewport_t;
|
||||
}
|
||||
}
|
||||
|
||||
void qp_surface_update_dirty(surface_dirty_data_t *dirty, uint16_t x, uint16_t y) {
|
||||
// Maintain dirty region
|
||||
if (dirty->l > x) {
|
||||
dirty->l = x;
|
||||
dirty->is_dirty = true;
|
||||
}
|
||||
if (dirty->r < x) {
|
||||
dirty->r = x;
|
||||
dirty->is_dirty = true;
|
||||
}
|
||||
if (dirty->t > y) {
|
||||
dirty->t = y;
|
||||
dirty->is_dirty = true;
|
||||
}
|
||||
if (dirty->b < y) {
|
||||
dirty->b = y;
|
||||
dirty->is_dirty = true;
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Driver vtable
|
||||
|
||||
bool qp_surface_init(painter_device_t device, painter_rotation_t rotation) {
|
||||
painter_driver_t * driver = (painter_driver_t *)device;
|
||||
surface_painter_device_t *surface = (surface_painter_device_t *)driver;
|
||||
memset(surface->buffer, 0, SURFACE_REQUIRED_BUFFER_BYTE_SIZE(driver->panel_width, driver->panel_height, driver->native_bits_per_pixel));
|
||||
|
||||
surface->dirty.l = 0;
|
||||
surface->dirty.t = 0;
|
||||
surface->dirty.r = surface->base.panel_width - 1;
|
||||
surface->dirty.b = surface->base.panel_height - 1;
|
||||
surface->dirty.is_dirty = true;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool qp_surface_power(painter_device_t device, bool power_on) {
|
||||
// No-op.
|
||||
return true;
|
||||
}
|
||||
|
||||
bool qp_surface_clear(painter_device_t device) {
|
||||
painter_driver_t *driver = (painter_driver_t *)device;
|
||||
driver->driver_vtable->init(device, driver->rotation); // Re-init the surface
|
||||
return true;
|
||||
}
|
||||
|
||||
bool qp_surface_flush(painter_device_t device) {
|
||||
painter_driver_t * driver = (painter_driver_t *)device;
|
||||
surface_painter_device_t *surface = (surface_painter_device_t *)driver;
|
||||
surface->dirty.l = surface->dirty.t = UINT16_MAX;
|
||||
surface->dirty.r = surface->dirty.b = 0;
|
||||
surface->dirty.is_dirty = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool qp_surface_viewport(painter_device_t device, uint16_t left, uint16_t top, uint16_t right, uint16_t bottom) {
|
||||
painter_driver_t * driver = (painter_driver_t *)device;
|
||||
surface_painter_device_t *surface = (surface_painter_device_t *)driver;
|
||||
|
||||
// Set the viewport locations
|
||||
surface->viewport.viewport_l = left;
|
||||
surface->viewport.viewport_t = top;
|
||||
surface->viewport.viewport_r = right;
|
||||
surface->viewport.viewport_b = bottom;
|
||||
|
||||
// Reset the write location to the top left
|
||||
surface->viewport.pixdata_x = left;
|
||||
surface->viewport.pixdata_y = top;
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Drawing routine to copy out the dirty region and send it to another device
|
||||
|
||||
bool qp_surface_draw(painter_device_t surface, painter_device_t target, uint16_t x, uint16_t y, bool entire_surface) {
|
||||
painter_driver_t * surface_driver = (painter_driver_t *)surface;
|
||||
surface_painter_device_t *surface_handle = (surface_painter_device_t *)surface_driver;
|
||||
painter_driver_t * target_driver = (painter_driver_t *)target;
|
||||
|
||||
// If we're not dirty... we're done.
|
||||
if (!surface_handle->dirty.is_dirty) {
|
||||
qp_dprintf("qp_surface_draw: ok (not dirty, skipping)\n");
|
||||
return true;
|
||||
}
|
||||
|
||||
// If we have incompatible bit depths, drop out
|
||||
if (surface_driver->native_bits_per_pixel != target_driver->native_bits_per_pixel) {
|
||||
qp_dprintf("qp_surface_draw: fail (incompatible bpp: surface=%d, target=%d)\n", (int)surface_driver->native_bits_per_pixel, (int)target_driver->native_bits_per_pixel);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Offload to the pixdata transfer function
|
||||
surface_painter_driver_vtable_t *vtable = (surface_painter_driver_vtable_t *)surface_driver->driver_vtable;
|
||||
bool ok = vtable->target_pixdata_transfer(surface_driver, target_driver, x, y, entire_surface);
|
||||
if (!ok) {
|
||||
qp_dprintf("qp_surface_draw: fail (could not transfer pixel data)\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Clear the dirty info for the surface
|
||||
ok = qp_flush(surface);
|
||||
if (!ok) {
|
||||
qp_dprintf("qp_surface_draw: fail (could not flush)\n");
|
||||
return false;
|
||||
}
|
||||
qp_dprintf("qp_surface_draw: ok\n");
|
||||
return true;
|
||||
}
|
||||
119
drivers/eeprom/painter/generic/qp_surface_internal.h
Normal file
119
drivers/eeprom/painter/generic/qp_surface_internal.h
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
// Copyright 2022 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#ifdef QUANTUM_PAINTER_SURFACE_ENABLE
|
||||
|
||||
# include "qp_surface.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Internal declarations
|
||||
|
||||
// Surface vtable
|
||||
typedef struct surface_painter_driver_vtable_t {
|
||||
painter_driver_vtable_t base; // must be first, so it can be cast to/from the painter_driver_vtable_t* type
|
||||
|
||||
bool (*target_pixdata_transfer)(painter_driver_t *surface_driver, painter_driver_t *target_driver, uint16_t x, uint16_t y, bool entire_surface);
|
||||
} surface_painter_driver_vtable_t;
|
||||
|
||||
typedef struct surface_dirty_data_t {
|
||||
bool is_dirty;
|
||||
uint16_t l;
|
||||
uint16_t t;
|
||||
uint16_t r;
|
||||
uint16_t b;
|
||||
} surface_dirty_data_t;
|
||||
|
||||
typedef struct surface_viewport_data_t {
|
||||
// Manually manage the viewport for streaming pixel data to the display
|
||||
uint16_t viewport_l;
|
||||
uint16_t viewport_t;
|
||||
uint16_t viewport_r;
|
||||
uint16_t viewport_b;
|
||||
|
||||
// Current write location to the display when streaming pixel data
|
||||
uint16_t pixdata_x;
|
||||
uint16_t pixdata_y;
|
||||
} surface_viewport_data_t;
|
||||
|
||||
// Surface struct
|
||||
typedef struct surface_painter_device_t {
|
||||
painter_driver_t base; // must be first, so it can be cast to/from the painter_device_t* type
|
||||
|
||||
// The target buffer
|
||||
union {
|
||||
void * buffer;
|
||||
uint8_t * u8buffer;
|
||||
uint16_t *u16buffer;
|
||||
};
|
||||
|
||||
// Manually manage the viewport for streaming pixel data to the display
|
||||
surface_viewport_data_t viewport;
|
||||
|
||||
// Maintain a dirty region so we can stream only what we need
|
||||
surface_dirty_data_t dirty;
|
||||
} surface_painter_device_t;
|
||||
|
||||
/**
|
||||
* Factory method for an RGB565 surface (aka framebuffer). Accepts an external device table.
|
||||
*
|
||||
* @param device_table[in] the table of devices to use for instantiation
|
||||
* @param device_table_len[in] the length of the table of devices
|
||||
* @param panel_width[in] the width of the display panel
|
||||
* @param panel_height[in] the height of the display panel
|
||||
* @param buffer[in] pointer to a preallocated uint8_t buffer of size `SURFACE_REQUIRED_BUFFER_BYTE_SIZE(panel_width, panel_height, 16)`
|
||||
* @return the device handle used with all drawing routines in Quantum Painter
|
||||
*/
|
||||
painter_device_t qp_make_rgb565_surface_advanced(surface_painter_device_t *device_table, size_t device_table_len, uint16_t panel_width, uint16_t panel_height, void *buffer);
|
||||
|
||||
/**
|
||||
* Factory method for a 1bpp monochrome surface (aka framebuffer).
|
||||
*
|
||||
* @param device_table[in] the table of devices to use for instantiation
|
||||
* @param device_table_len[in] the length of the table of devices
|
||||
* @param panel_width[in] the width of the display panel
|
||||
* @param panel_height[in] the height of the display panel
|
||||
* @param buffer[in] pointer to a preallocated uint8_t buffer of size `SURFACE_REQUIRED_BUFFER_BYTE_SIZE(panel_width, panel_height, 16)`
|
||||
* @return the device handle used with all drawing routines in Quantum Painter
|
||||
*/
|
||||
painter_device_t qp_make_mono1bpp_surface_advanced(surface_painter_device_t *device_table, size_t device_table_len, uint16_t panel_width, uint16_t panel_height, void *buffer);
|
||||
|
||||
// Driver storage
|
||||
extern surface_painter_device_t surface_drivers[SURFACE_NUM_DEVICES];
|
||||
|
||||
// Surface common APIs
|
||||
bool qp_surface_init(painter_device_t device, painter_rotation_t rotation);
|
||||
bool qp_surface_power(painter_device_t device, bool power_on);
|
||||
bool qp_surface_clear(painter_device_t device);
|
||||
bool qp_surface_flush(painter_device_t device);
|
||||
bool qp_surface_viewport(painter_device_t device, uint16_t left, uint16_t top, uint16_t right, uint16_t bottom);
|
||||
void qp_surface_increment_pixdata_location(surface_viewport_data_t *viewport);
|
||||
void qp_surface_update_dirty(surface_dirty_data_t *dirty, uint16_t x, uint16_t y);
|
||||
|
||||
#endif // QUANTUM_PAINTER_SURFACE_ENABLE
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Factory functions for creating a handle to a surface
|
||||
|
||||
#define SURFACE_FACTORY_FUNCTION_IMPL(function_name, vtable, bpp) \
|
||||
painter_device_t(function_name##_advanced)(surface_painter_device_t * device_table, size_t device_table_len, uint16_t panel_width, uint16_t panel_height, void *buffer) { \
|
||||
for (uint32_t i = 0; i < device_table_len; ++i) { \
|
||||
surface_painter_device_t *driver = &device_table[i]; \
|
||||
if (!driver->base.driver_vtable) { \
|
||||
driver->base.driver_vtable = (painter_driver_vtable_t *)&(vtable); \
|
||||
driver->base.native_bits_per_pixel = (bpp); \
|
||||
driver->base.comms_vtable = &dummy_comms_vtable; \
|
||||
driver->base.panel_width = panel_width; \
|
||||
driver->base.panel_height = panel_height; \
|
||||
driver->base.rotation = QP_ROTATION_0; \
|
||||
driver->base.offset_x = 0; \
|
||||
driver->base.offset_y = 0; \
|
||||
driver->buffer = buffer; \
|
||||
return (painter_device_t)driver; \
|
||||
} \
|
||||
} \
|
||||
return NULL; \
|
||||
} \
|
||||
painter_device_t(function_name)(uint16_t panel_width, uint16_t panel_height, void *buffer) { \
|
||||
return (function_name##_advanced)(surface_drivers, SURFACE_NUM_DEVICES, panel_width, panel_height, buffer); \
|
||||
}
|
||||
113
drivers/eeprom/painter/generic/qp_surface_mono1bpp.c
Normal file
113
drivers/eeprom/painter/generic/qp_surface_mono1bpp.c
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
// Copyright 2022 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#ifdef QUANTUM_PAINTER_SURFACE_ENABLE
|
||||
|
||||
# include "color.h"
|
||||
# include "qp_draw.h"
|
||||
# include "qp_surface_internal.h"
|
||||
# include "qp_comms_dummy.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Surface driver impl: mono1bpp
|
||||
|
||||
static inline void setpixel_mono1bpp(surface_painter_device_t *surface, uint16_t x, uint16_t y, bool mono_pixel) {
|
||||
uint16_t w = surface->base.panel_width;
|
||||
uint16_t h = surface->base.panel_height;
|
||||
|
||||
// Drop out if it's off-screen
|
||||
if (x >= w || y >= h) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Figure out which location needs to be updated
|
||||
uint32_t pixel_num = y * w + x;
|
||||
uint32_t byte_offset = pixel_num / 8;
|
||||
uint8_t bit_offset = pixel_num % 8;
|
||||
bool curr_val = (surface->u8buffer[byte_offset] & (1 << bit_offset)) ? true : false;
|
||||
|
||||
// Skip messing with the dirty info if the original value already matches
|
||||
if (curr_val != mono_pixel) {
|
||||
// Update the dirty region
|
||||
qp_surface_update_dirty(&surface->dirty, x, y);
|
||||
|
||||
// Update the pixel data in the buffer
|
||||
if (mono_pixel) {
|
||||
surface->u8buffer[byte_offset] |= (1 << bit_offset);
|
||||
} else {
|
||||
surface->u8buffer[byte_offset] &= ~(1 << bit_offset);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static inline void append_pixel_mono1bpp(surface_painter_device_t *surface, bool mono_pixel) {
|
||||
setpixel_mono1bpp(surface, surface->viewport.pixdata_x, surface->viewport.pixdata_y, mono_pixel);
|
||||
qp_surface_increment_pixdata_location(&surface->viewport);
|
||||
}
|
||||
|
||||
static inline void stream_pixdata_mono1bpp(surface_painter_device_t *surface, const uint8_t *data, uint32_t native_pixel_count) {
|
||||
for (uint32_t pixel_counter = 0; pixel_counter < native_pixel_count; ++pixel_counter) {
|
||||
uint32_t byte_offset = pixel_counter / 8;
|
||||
uint8_t bit_offset = pixel_counter % 8;
|
||||
append_pixel_mono1bpp(surface, (data[byte_offset] & (1 << bit_offset)) ? true : false);
|
||||
}
|
||||
}
|
||||
|
||||
// Stream pixel data to the current write position in GRAM
|
||||
static bool qp_surface_pixdata_mono1bpp(painter_device_t device, const void *pixel_data, uint32_t native_pixel_count) {
|
||||
painter_driver_t * driver = (painter_driver_t *)device;
|
||||
surface_painter_device_t *surface = (surface_painter_device_t *)driver;
|
||||
stream_pixdata_mono1bpp(surface, (const uint8_t *)pixel_data, native_pixel_count);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Pixel colour conversion
|
||||
static bool qp_surface_palette_convert_mono1bpp(painter_device_t device, int16_t palette_size, qp_pixel_t *palette) {
|
||||
for (int16_t i = 0; i < palette_size; ++i) {
|
||||
palette[i].mono = (palette[i].hsv888.v > 127) ? 1 : 0;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Append pixels to the target location, keyed by the pixel index
|
||||
static bool qp_surface_append_pixels_mono1bpp(painter_device_t device, uint8_t *target_buffer, qp_pixel_t *palette, uint32_t pixel_offset, uint32_t pixel_count, uint8_t *palette_indices) {
|
||||
for (uint32_t i = 0; i < pixel_count; ++i) {
|
||||
uint32_t pixel_num = pixel_offset + i;
|
||||
uint32_t byte_offset = pixel_num / 8;
|
||||
uint8_t bit_offset = pixel_num % 8;
|
||||
if (palette[palette_indices[i]].mono) {
|
||||
target_buffer[byte_offset] |= (1 << bit_offset);
|
||||
} else {
|
||||
target_buffer[byte_offset] &= ~(1 << bit_offset);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool mono1bpp_target_pixdata_transfer(painter_driver_t *surface_driver, painter_driver_t *target_driver, uint16_t x, uint16_t y, bool entire_surface) {
|
||||
return false; // Not yet supported.
|
||||
}
|
||||
|
||||
static bool qp_surface_append_pixdata_mono1bpp(painter_device_t device, uint8_t *target_buffer, uint32_t pixdata_offset, uint8_t pixdata_byte) {
|
||||
return false; // Just use 1bpp images.
|
||||
}
|
||||
|
||||
const surface_painter_driver_vtable_t mono1bpp_surface_driver_vtable = {
|
||||
.base =
|
||||
{
|
||||
.init = qp_surface_init,
|
||||
.power = qp_surface_power,
|
||||
.clear = qp_surface_clear,
|
||||
.flush = qp_surface_flush,
|
||||
.pixdata = qp_surface_pixdata_mono1bpp,
|
||||
.viewport = qp_surface_viewport,
|
||||
.palette_convert = qp_surface_palette_convert_mono1bpp,
|
||||
.append_pixels = qp_surface_append_pixels_mono1bpp,
|
||||
.append_pixdata = qp_surface_append_pixdata_mono1bpp,
|
||||
},
|
||||
.target_pixdata_transfer = mono1bpp_target_pixdata_transfer,
|
||||
};
|
||||
|
||||
SURFACE_FACTORY_FUNCTION_IMPL(qp_make_mono1bpp_surface, mono1bpp_surface_driver_vtable, 1);
|
||||
|
||||
#endif // QUANTUM_PAINTER_SURFACE_ENABLE
|
||||
145
drivers/eeprom/painter/generic/qp_surface_rgb565.c
Normal file
145
drivers/eeprom/painter/generic/qp_surface_rgb565.c
Normal file
|
|
@ -0,0 +1,145 @@
|
|||
// Copyright 2022 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#ifdef QUANTUM_PAINTER_SURFACE_ENABLE
|
||||
|
||||
# include "color.h"
|
||||
# include "qp_draw.h"
|
||||
# include "qp_surface_internal.h"
|
||||
# include "qp_comms_dummy.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Surface driver impl: rgb565
|
||||
|
||||
static inline void setpixel_rgb565(surface_painter_device_t *surface, uint16_t x, uint16_t y, uint16_t rgb565) {
|
||||
uint16_t w = surface->base.panel_width;
|
||||
uint16_t h = surface->base.panel_height;
|
||||
|
||||
// Drop out if it's off-screen
|
||||
if (x >= w || y >= h) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Skip messing with the dirty info if the original value already matches
|
||||
if (surface->u16buffer[y * w + x] != rgb565) {
|
||||
// Update the dirty region
|
||||
qp_surface_update_dirty(&surface->dirty, x, y);
|
||||
|
||||
// Update the pixel data in the buffer
|
||||
surface->u16buffer[y * w + x] = rgb565;
|
||||
}
|
||||
}
|
||||
|
||||
static inline void append_pixel_rgb565(surface_painter_device_t *surface, uint16_t rgb565) {
|
||||
setpixel_rgb565(surface, surface->viewport.pixdata_x, surface->viewport.pixdata_y, rgb565);
|
||||
qp_surface_increment_pixdata_location(&surface->viewport);
|
||||
}
|
||||
|
||||
static inline void stream_pixdata_rgb565(surface_painter_device_t *surface, const uint16_t *data, uint32_t native_pixel_count) {
|
||||
for (uint32_t pixel_counter = 0; pixel_counter < native_pixel_count; ++pixel_counter) {
|
||||
append_pixel_rgb565(surface, data[pixel_counter]);
|
||||
}
|
||||
}
|
||||
|
||||
// Stream pixel data to the current write position in GRAM
|
||||
static bool qp_surface_pixdata_rgb565(painter_device_t device, const void *pixel_data, uint32_t native_pixel_count) {
|
||||
painter_driver_t * driver = (painter_driver_t *)device;
|
||||
surface_painter_device_t *surface = (surface_painter_device_t *)driver;
|
||||
stream_pixdata_rgb565(surface, (const uint16_t *)pixel_data, native_pixel_count);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Pixel colour conversion
|
||||
static bool qp_surface_palette_convert_rgb565_swapped(painter_device_t device, int16_t palette_size, qp_pixel_t *palette) {
|
||||
for (int16_t i = 0; i < palette_size; ++i) {
|
||||
RGB rgb = hsv_to_rgb_nocie((HSV){palette[i].hsv888.h, palette[i].hsv888.s, palette[i].hsv888.v});
|
||||
uint16_t rgb565 = (((uint16_t)rgb.r) >> 3) << 11 | (((uint16_t)rgb.g) >> 2) << 5 | (((uint16_t)rgb.b) >> 3);
|
||||
palette[i].rgb565 = __builtin_bswap16(rgb565);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Append pixels to the target location, keyed by the pixel index
|
||||
static bool qp_surface_append_pixels_rgb565(painter_device_t device, uint8_t *target_buffer, qp_pixel_t *palette, uint32_t pixel_offset, uint32_t pixel_count, uint8_t *palette_indices) {
|
||||
uint16_t *buf = (uint16_t *)target_buffer;
|
||||
for (uint32_t i = 0; i < pixel_count; ++i) {
|
||||
buf[pixel_offset + i] = palette[palette_indices[i]].rgb565;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool rgb565_target_pixdata_transfer(painter_driver_t *surface_driver, painter_driver_t *target_driver, uint16_t x, uint16_t y, bool entire_surface) {
|
||||
surface_painter_device_t *surface_handle = (surface_painter_device_t *)surface_driver;
|
||||
|
||||
uint16_t l = entire_surface ? 0 : surface_handle->dirty.l;
|
||||
uint16_t t = entire_surface ? 0 : surface_handle->dirty.t;
|
||||
uint16_t r = entire_surface ? (surface_handle->base.panel_width - 1) : surface_handle->dirty.r;
|
||||
uint16_t b = entire_surface ? (surface_handle->base.panel_height - 1) : surface_handle->dirty.b;
|
||||
|
||||
// Set the target drawing area
|
||||
bool ok = qp_viewport((painter_device_t)target_driver, x + l, y + t, x + r, y + b);
|
||||
if (!ok) {
|
||||
qp_dprintf("rgb565_target_pixdata_transfer: fail (could not set target viewport)\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Housekeeping of the amount of pixels to transfer
|
||||
uint32_t total_pixel_count = (8 * QUANTUM_PAINTER_PIXDATA_BUFFER_SIZE) / surface_driver->native_bits_per_pixel;
|
||||
uint32_t pixel_counter = 0;
|
||||
uint16_t *target_buffer = (uint16_t *)qp_internal_global_pixdata_buffer;
|
||||
|
||||
// Fill the global pixdata area so that we can start transferring to the panel
|
||||
for (uint16_t y = t; y <= b; ++y) {
|
||||
for (uint16_t x = l; x <= r; ++x) {
|
||||
// Update the target buffer
|
||||
target_buffer[pixel_counter++] = surface_handle->u16buffer[y * surface_handle->base.panel_width + x];
|
||||
|
||||
// If we've accumulated enough data, send it
|
||||
if (pixel_counter == total_pixel_count) {
|
||||
ok = qp_pixdata((painter_device_t)target_driver, qp_internal_global_pixdata_buffer, pixel_counter);
|
||||
if (!ok) {
|
||||
qp_dprintf("rgb565_target_pixdata_transfer: fail (could not stream pixdata to target)\n");
|
||||
return false;
|
||||
}
|
||||
// Reset the counter
|
||||
pixel_counter = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If there's any leftover data, send it
|
||||
if (pixel_counter > 0) {
|
||||
ok = qp_pixdata((painter_device_t)target_driver, qp_internal_global_pixdata_buffer, pixel_counter);
|
||||
if (!ok) {
|
||||
qp_dprintf("rgb565_target_pixdata_transfer: fail (could not stream pixdata to target)\n");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool qp_surface_append_pixdata_rgb565(painter_device_t device, uint8_t *target_buffer, uint32_t pixdata_offset, uint8_t pixdata_byte) {
|
||||
target_buffer[pixdata_offset] = pixdata_byte;
|
||||
return true;
|
||||
}
|
||||
|
||||
const surface_painter_driver_vtable_t rgb565_surface_driver_vtable = {
|
||||
.base =
|
||||
{
|
||||
.init = qp_surface_init,
|
||||
.power = qp_surface_power,
|
||||
.clear = qp_surface_clear,
|
||||
.flush = qp_surface_flush,
|
||||
.pixdata = qp_surface_pixdata_rgb565,
|
||||
.viewport = qp_surface_viewport,
|
||||
.palette_convert = qp_surface_palette_convert_rgb565_swapped,
|
||||
.append_pixels = qp_surface_append_pixels_rgb565,
|
||||
.append_pixdata = qp_surface_append_pixdata_rgb565,
|
||||
},
|
||||
.target_pixdata_transfer = rgb565_target_pixdata_transfer,
|
||||
};
|
||||
|
||||
SURFACE_FACTORY_FUNCTION_IMPL(qp_make_rgb565_surface, rgb565_surface_driver_vtable, 16);
|
||||
|
||||
#endif // QUANTUM_PAINTER_SURFACE_ENABLE
|
||||
128
drivers/eeprom/painter/ili9xxx/qp_ili9163.c
Normal file
128
drivers/eeprom/painter/ili9xxx/qp_ili9163.c
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
// Copyright 2021-2023 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "qp_internal.h"
|
||||
#include "qp_comms.h"
|
||||
#include "qp_ili9163.h"
|
||||
#include "qp_ili9xxx_opcodes.h"
|
||||
#include "qp_tft_panel.h"
|
||||
|
||||
#ifdef QUANTUM_PAINTER_ILI9163_SPI_ENABLE
|
||||
# include "qp_comms_spi.h"
|
||||
#endif // QUANTUM_PAINTER_ILI9163_SPI_ENABLE
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Common
|
||||
|
||||
// Driver storage
|
||||
tft_panel_dc_reset_painter_device_t ili9163_drivers[ILI9163_NUM_DEVICES] = {0};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Initialization
|
||||
|
||||
__attribute__((weak)) bool qp_ili9163_init(painter_device_t device, painter_rotation_t rotation) {
|
||||
// clang-format off
|
||||
const uint8_t ili9163_init_sequence[] = {
|
||||
// Command, Delay, N, Data[N]
|
||||
ILI9XXX_CMD_RESET, 120, 0,
|
||||
ILI9XXX_CMD_SLEEP_OFF, 5, 0,
|
||||
ILI9XXX_SET_PIX_FMT, 0, 1, 0x55,
|
||||
ILI9XXX_SET_GAMMA, 0, 1, 0x04,
|
||||
ILI9XXX_ENABLE_3_GAMMA, 0, 1, 0x01,
|
||||
ILI9XXX_SET_FUNCTION_CTL, 0, 2, 0xFF, 0x06,
|
||||
ILI9XXX_SET_PGAMMA, 0, 15, 0x36, 0x29, 0x12, 0x22, 0x1C, 0x15, 0x42, 0xB7, 0x2F, 0x13, 0x12, 0x0A, 0x11, 0x0B, 0x06,
|
||||
ILI9XXX_SET_NGAMMA, 0, 15, 0x09, 0x16, 0x2D, 0x0D, 0x13, 0x15, 0x40, 0x48, 0x53, 0x0C, 0x1D, 0x25, 0x2E, 0x34, 0x39,
|
||||
ILI9XXX_SET_FRAME_CTL_NORMAL, 0, 2, 0x08, 0x02,
|
||||
ILI9XXX_SET_POWER_CTL_1, 0, 2, 0x0A, 0x02,
|
||||
ILI9XXX_SET_POWER_CTL_2, 0, 1, 0x02,
|
||||
ILI9XXX_SET_VCOM_CTL_1, 0, 2, 0x50, 0x63,
|
||||
ILI9XXX_SET_VCOM_CTL_2, 0, 1, 0x00,
|
||||
ILI9XXX_CMD_PARTIAL_OFF, 0, 0,
|
||||
ILI9XXX_CMD_DISPLAY_ON, 20, 0
|
||||
};
|
||||
// clang-format on
|
||||
qp_comms_bulk_command_sequence(device, ili9163_init_sequence, sizeof(ili9163_init_sequence));
|
||||
|
||||
// Configure the rotation (i.e. the ordering and direction of memory writes in GRAM)
|
||||
const uint8_t madctl[] = {
|
||||
[QP_ROTATION_0] = ILI9XXX_MADCTL_BGR,
|
||||
[QP_ROTATION_90] = ILI9XXX_MADCTL_BGR | ILI9XXX_MADCTL_MX | ILI9XXX_MADCTL_MV,
|
||||
[QP_ROTATION_180] = ILI9XXX_MADCTL_BGR | ILI9XXX_MADCTL_MX | ILI9XXX_MADCTL_MY,
|
||||
[QP_ROTATION_270] = ILI9XXX_MADCTL_BGR | ILI9XXX_MADCTL_MV | ILI9XXX_MADCTL_MY,
|
||||
};
|
||||
qp_comms_command_databyte(device, ILI9XXX_SET_MEM_ACS_CTL, madctl[rotation]);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Driver vtable
|
||||
|
||||
const tft_panel_dc_reset_painter_driver_vtable_t ili9163_driver_vtable = {
|
||||
.base =
|
||||
{
|
||||
.init = qp_ili9163_init,
|
||||
.power = qp_tft_panel_power,
|
||||
.clear = qp_tft_panel_clear,
|
||||
.flush = qp_tft_panel_flush,
|
||||
.pixdata = qp_tft_panel_pixdata,
|
||||
.viewport = qp_tft_panel_viewport,
|
||||
.palette_convert = qp_tft_panel_palette_convert_rgb565_swapped,
|
||||
.append_pixels = qp_tft_panel_append_pixels_rgb565,
|
||||
.append_pixdata = qp_tft_panel_append_pixdata,
|
||||
},
|
||||
.num_window_bytes = 2,
|
||||
.swap_window_coords = false,
|
||||
.opcodes =
|
||||
{
|
||||
.display_on = ILI9XXX_CMD_DISPLAY_ON,
|
||||
.display_off = ILI9XXX_CMD_DISPLAY_OFF,
|
||||
.set_column_address = ILI9XXX_SET_COL_ADDR,
|
||||
.set_row_address = ILI9XXX_SET_PAGE_ADDR,
|
||||
.enable_writes = ILI9XXX_SET_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// SPI
|
||||
|
||||
#ifdef QUANTUM_PAINTER_ILI9163_SPI_ENABLE
|
||||
|
||||
// Factory function for creating a handle to the ILI9163 device
|
||||
painter_device_t qp_ili9163_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode) {
|
||||
for (uint32_t i = 0; i < ILI9163_NUM_DEVICES; ++i) {
|
||||
tft_panel_dc_reset_painter_device_t *driver = &ili9163_drivers[i];
|
||||
if (!driver->base.driver_vtable) {
|
||||
driver->base.driver_vtable = (const painter_driver_vtable_t *)&ili9163_driver_vtable;
|
||||
driver->base.comms_vtable = (const painter_comms_vtable_t *)&spi_comms_with_dc_vtable;
|
||||
driver->base.panel_width = panel_width;
|
||||
driver->base.panel_height = panel_height;
|
||||
driver->base.rotation = QP_ROTATION_0;
|
||||
driver->base.offset_x = 0;
|
||||
driver->base.offset_y = 0;
|
||||
driver->base.native_bits_per_pixel = 16; // RGB565
|
||||
|
||||
// SPI and other pin configuration
|
||||
driver->base.comms_config = &driver->spi_dc_reset_config;
|
||||
driver->spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin;
|
||||
driver->spi_dc_reset_config.spi_config.divisor = spi_divisor;
|
||||
driver->spi_dc_reset_config.spi_config.lsb_first = false;
|
||||
driver->spi_dc_reset_config.spi_config.mode = spi_mode;
|
||||
driver->spi_dc_reset_config.dc_pin = dc_pin;
|
||||
driver->spi_dc_reset_config.reset_pin = reset_pin;
|
||||
driver->spi_dc_reset_config.command_params_uses_command_pin = false;
|
||||
|
||||
if (!qp_internal_register_device((painter_device_t)driver)) {
|
||||
memset(driver, 0, sizeof(tft_panel_dc_reset_painter_device_t));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return (painter_device_t)driver;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif // QUANTUM_PAINTER_ILI9163_SPI_ENABLE
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
36
drivers/eeprom/painter/ili9xxx/qp_ili9163.h
Normal file
36
drivers/eeprom/painter/ili9xxx/qp_ili9163.h
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
// Copyright 2021 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#include "gpio.h"
|
||||
#include "qp_internal.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter ILI9163 configurables (add to your keyboard's config.h)
|
||||
|
||||
#ifndef ILI9163_NUM_DEVICES
|
||||
/**
|
||||
* @def This controls the maximum number of ILI9163 devices that Quantum Painter can communicate with at any one time.
|
||||
* Increasing this number allows for multiple displays to be used.
|
||||
*/
|
||||
# define ILI9163_NUM_DEVICES 1
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter ILI9163 device factories
|
||||
|
||||
#ifdef QUANTUM_PAINTER_ILI9163_SPI_ENABLE
|
||||
/**
|
||||
* Factory method for an ILI9163 SPI LCD device.
|
||||
*
|
||||
* @param panel_width[in] the width of the display panel
|
||||
* @param panel_height[in] the height of the display panel
|
||||
* @param chip_select_pin[in] the GPIO pin used for SPI chip select
|
||||
* @param dc_pin[in] the GPIO pin used for D/C control
|
||||
* @param reset_pin[in] the GPIO pin used for RST
|
||||
* @param spi_divisor[in] the SPI divisor to use when communicating with the display
|
||||
* @param spi_mode[in] the SPI mode to use when communicating with the display
|
||||
* @return the device handle used with all drawing routines in Quantum Painter
|
||||
*/
|
||||
painter_device_t qp_ili9163_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode);
|
||||
#endif // QUANTUM_PAINTER_ILI9163_SPI_ENABLE
|
||||
135
drivers/eeprom/painter/ili9xxx/qp_ili9341.c
Normal file
135
drivers/eeprom/painter/ili9xxx/qp_ili9341.c
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
// Copyright 2021-2023 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "qp_internal.h"
|
||||
#include "qp_comms.h"
|
||||
#include "qp_ili9341.h"
|
||||
#include "qp_ili9xxx_opcodes.h"
|
||||
#include "qp_tft_panel.h"
|
||||
|
||||
#ifdef QUANTUM_PAINTER_ILI9341_SPI_ENABLE
|
||||
# include <qp_comms_spi.h>
|
||||
#endif // QUANTUM_PAINTER_ILI9341_SPI_ENABLE
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Common
|
||||
|
||||
// Driver storage
|
||||
tft_panel_dc_reset_painter_device_t ili9341_drivers[ILI9341_NUM_DEVICES] = {0};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Initialization
|
||||
|
||||
__attribute__((weak)) bool qp_ili9341_init(painter_device_t device, painter_rotation_t rotation) {
|
||||
// clang-format off
|
||||
const uint8_t ili9341_init_sequence[] = {
|
||||
// Command, Delay, N, Data[N]
|
||||
ILI9XXX_CMD_RESET, 120, 0,
|
||||
ILI9XXX_CMD_SLEEP_OFF, 5, 0,
|
||||
ILI9XXX_POWER_CTL_A, 0, 5, 0x39, 0x2C, 0x00, 0x34, 0x02,
|
||||
ILI9XXX_POWER_CTL_B, 0, 3, 0x00, 0xD9, 0x30,
|
||||
ILI9XXX_POWER_ON_SEQ_CTL, 0, 4, 0x64, 0x03, 0x12, 0x81,
|
||||
ILI9XXX_SET_PUMP_RATIO_CTL, 0, 1, 0x20,
|
||||
ILI9XXX_SET_POWER_CTL_1, 0, 1, 0x26,
|
||||
ILI9XXX_SET_POWER_CTL_2, 0, 1, 0x11,
|
||||
ILI9XXX_SET_VCOM_CTL_1, 0, 2, 0x35, 0x3E,
|
||||
ILI9XXX_SET_VCOM_CTL_2, 0, 1, 0xBE,
|
||||
ILI9XXX_DRV_TIMING_CTL_A, 0, 3, 0x85, 0x10, 0x7A,
|
||||
ILI9XXX_DRV_TIMING_CTL_B, 0, 2, 0x00, 0x00,
|
||||
ILI9XXX_SET_BRIGHTNESS, 0, 1, 0xFF,
|
||||
ILI9XXX_ENABLE_3_GAMMA, 0, 1, 0x00,
|
||||
ILI9XXX_SET_GAMMA, 0, 1, 0x01,
|
||||
ILI9XXX_SET_PGAMMA, 0, 15, 0x0F, 0x29, 0x24, 0x0C, 0x0E, 0x09, 0x4E, 0x78, 0x3C, 0x09, 0x13, 0x05, 0x17, 0x11, 0x00,
|
||||
ILI9XXX_SET_NGAMMA, 0, 15, 0x00, 0x16, 0x1B, 0x04, 0x11, 0x07, 0x31, 0x33, 0x42, 0x05, 0x0C, 0x0A, 0x28, 0x2F, 0x0F,
|
||||
ILI9XXX_SET_PIX_FMT, 0, 1, 0x05,
|
||||
ILI9XXX_SET_FRAME_CTL_NORMAL, 0, 2, 0x00, 0x1B,
|
||||
ILI9XXX_SET_FUNCTION_CTL, 0, 2, 0x0A, 0xA2,
|
||||
ILI9XXX_CMD_PARTIAL_OFF, 0, 0,
|
||||
ILI9XXX_CMD_DISPLAY_ON, 20, 0
|
||||
};
|
||||
// clang-format on
|
||||
qp_comms_bulk_command_sequence(device, ili9341_init_sequence, sizeof(ili9341_init_sequence));
|
||||
|
||||
// Configure the rotation (i.e. the ordering and direction of memory writes in GRAM)
|
||||
const uint8_t madctl[] = {
|
||||
[QP_ROTATION_0] = ILI9XXX_MADCTL_BGR,
|
||||
[QP_ROTATION_90] = ILI9XXX_MADCTL_BGR | ILI9XXX_MADCTL_MX | ILI9XXX_MADCTL_MV,
|
||||
[QP_ROTATION_180] = ILI9XXX_MADCTL_BGR | ILI9XXX_MADCTL_MX | ILI9XXX_MADCTL_MY,
|
||||
[QP_ROTATION_270] = ILI9XXX_MADCTL_BGR | ILI9XXX_MADCTL_MV | ILI9XXX_MADCTL_MY,
|
||||
};
|
||||
qp_comms_command_databyte(device, ILI9XXX_SET_MEM_ACS_CTL, madctl[rotation]);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Driver vtable
|
||||
|
||||
const tft_panel_dc_reset_painter_driver_vtable_t ili9341_driver_vtable = {
|
||||
.base =
|
||||
{
|
||||
.init = qp_ili9341_init,
|
||||
.power = qp_tft_panel_power,
|
||||
.clear = qp_tft_panel_clear,
|
||||
.flush = qp_tft_panel_flush,
|
||||
.pixdata = qp_tft_panel_pixdata,
|
||||
.viewport = qp_tft_panel_viewport,
|
||||
.palette_convert = qp_tft_panel_palette_convert_rgb565_swapped,
|
||||
.append_pixels = qp_tft_panel_append_pixels_rgb565,
|
||||
.append_pixdata = qp_tft_panel_append_pixdata,
|
||||
},
|
||||
.num_window_bytes = 2,
|
||||
.swap_window_coords = false,
|
||||
.opcodes =
|
||||
{
|
||||
.display_on = ILI9XXX_CMD_DISPLAY_ON,
|
||||
.display_off = ILI9XXX_CMD_DISPLAY_OFF,
|
||||
.set_column_address = ILI9XXX_SET_COL_ADDR,
|
||||
.set_row_address = ILI9XXX_SET_PAGE_ADDR,
|
||||
.enable_writes = ILI9XXX_SET_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// SPI
|
||||
|
||||
#ifdef QUANTUM_PAINTER_ILI9341_SPI_ENABLE
|
||||
|
||||
// Factory function for creating a handle to the ILI9341 device
|
||||
painter_device_t qp_ili9341_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode) {
|
||||
for (uint32_t i = 0; i < ILI9341_NUM_DEVICES; ++i) {
|
||||
tft_panel_dc_reset_painter_device_t *driver = &ili9341_drivers[i];
|
||||
if (!driver->base.driver_vtable) {
|
||||
driver->base.driver_vtable = (const painter_driver_vtable_t *)&ili9341_driver_vtable;
|
||||
driver->base.comms_vtable = (const painter_comms_vtable_t *)&spi_comms_with_dc_vtable;
|
||||
driver->base.native_bits_per_pixel = 16; // RGB565
|
||||
driver->base.panel_width = panel_width;
|
||||
driver->base.panel_height = panel_height;
|
||||
driver->base.rotation = QP_ROTATION_0;
|
||||
driver->base.offset_x = 0;
|
||||
driver->base.offset_y = 0;
|
||||
|
||||
// SPI and other pin configuration
|
||||
driver->base.comms_config = &driver->spi_dc_reset_config;
|
||||
driver->spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin;
|
||||
driver->spi_dc_reset_config.spi_config.divisor = spi_divisor;
|
||||
driver->spi_dc_reset_config.spi_config.lsb_first = false;
|
||||
driver->spi_dc_reset_config.spi_config.mode = spi_mode;
|
||||
driver->spi_dc_reset_config.dc_pin = dc_pin;
|
||||
driver->spi_dc_reset_config.reset_pin = reset_pin;
|
||||
driver->spi_dc_reset_config.command_params_uses_command_pin = false;
|
||||
|
||||
if (!qp_internal_register_device((painter_device_t)driver)) {
|
||||
memset(driver, 0, sizeof(tft_panel_dc_reset_painter_device_t));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return (painter_device_t)driver;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif // QUANTUM_PAINTER_ILI9341_SPI_ENABLE
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
36
drivers/eeprom/painter/ili9xxx/qp_ili9341.h
Normal file
36
drivers/eeprom/painter/ili9xxx/qp_ili9341.h
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
// Copyright 2021 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#include "gpio.h"
|
||||
#include "qp_internal.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter ILI9341 configurables (add to your keyboard's config.h)
|
||||
|
||||
#ifndef ILI9341_NUM_DEVICES
|
||||
/**
|
||||
* @def This controls the maximum number of ILI9341 devices that Quantum Painter can communicate with at any one time.
|
||||
* Increasing this number allows for multiple displays to be used.
|
||||
*/
|
||||
# define ILI9341_NUM_DEVICES 1
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter ILI9341 device factories
|
||||
|
||||
#ifdef QUANTUM_PAINTER_ILI9341_SPI_ENABLE
|
||||
/**
|
||||
* Factory method for an ILI9341 SPI LCD device.
|
||||
*
|
||||
* @param panel_width[in] the width of the display panel
|
||||
* @param panel_height[in] the height of the display panel
|
||||
* @param chip_select_pin[in] the GPIO pin used for SPI chip select
|
||||
* @param dc_pin[in] the GPIO pin used for D/C control
|
||||
* @param reset_pin[in] the GPIO pin used for RST
|
||||
* @param spi_divisor[in] the SPI divisor to use when communicating with the display
|
||||
* @param spi_mode[in] the SPI mode to use when communicating with the display
|
||||
* @return the device handle used with all drawing routines in Quantum Painter
|
||||
*/
|
||||
painter_device_t qp_ili9341_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode);
|
||||
#endif // QUANTUM_PAINTER_ILI9341_SPI_ENABLE
|
||||
298
drivers/eeprom/painter/ili9xxx/qp_ili9486.c
Normal file
298
drivers/eeprom/painter/ili9xxx/qp_ili9486.c
Normal file
|
|
@ -0,0 +1,298 @@
|
|||
// Copyright 2021 Nick Brassel (@tzarc)
|
||||
// Copyright 2023 Pablo Martinez (@elpekenin) <elpekenin@elpekenin.dev>
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "qp_internal.h"
|
||||
#include "qp_comms.h"
|
||||
#include "qp_ili9486.h"
|
||||
#include "qp_ili9xxx_opcodes.h"
|
||||
#include "qp_tft_panel.h"
|
||||
|
||||
#ifdef QUANTUM_PAINTER_ILI9486_SPI_ENABLE
|
||||
# include "spi_master.h"
|
||||
# include <qp_comms_spi.h>
|
||||
#endif // QUANTUM_PAINTER_ILI9486_SPI_ENABLE
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Common
|
||||
|
||||
// Driver storage
|
||||
tft_panel_dc_reset_painter_device_t ili9486_drivers[ILI9486_NUM_DEVICES] = {0};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Initialization
|
||||
|
||||
bool qp_ili9486_init(painter_device_t device, painter_rotation_t rotation) {
|
||||
// clang-format off
|
||||
const uint8_t ili9486_init_sequence[] = {
|
||||
// Command, Delay, N, Data[N]
|
||||
ILI9XXX_CMD_RESET, 120, 0,
|
||||
ILI9XXX_SET_PIX_FMT, 0, 1, 0x55,
|
||||
ILI9XXX_SET_PGAMMA, 0, 15, 0x0F, 0x1F, 0x1C, 0x0C, 0x0F, 0x08, 0x48, 0x98, 0x37, 0x0A, 0x13, 0x04, 0x11, 0x0D, 0x00,
|
||||
ILI9XXX_SET_NGAMMA, 0, 15, 0x0F, 0x32, 0x2E, 0x0B, 0x0D, 0x05, 0x47, 0x75, 0x37, 0x06, 0x10, 0x03, 0x24, 0x20, 0x00,
|
||||
ILI9XXX_SET_POWER_CTL_1, 0, 2, 0x0D, 0x0D,
|
||||
ILI9XXX_SET_POWER_CTL_2, 0, 2, 0x43, 0x00,
|
||||
ILI9XXX_SET_POWER_CTL_3, 0, 1, 0x00,
|
||||
ILI9XXX_SET_VCOM_CTL_1, 0, 4, 0x00, 0x48, 0x00, 0x48,
|
||||
ILI9XXX_SET_INVERSION_CTL, 0, 1, 0x02,
|
||||
};
|
||||
// clang-format on
|
||||
qp_comms_bulk_command_sequence(device, ili9486_init_sequence, sizeof(ili9486_init_sequence));
|
||||
|
||||
// Configure the rotation (i.e. the ordering and direction of memory writes in GRAM)
|
||||
const uint8_t madctl[] = {
|
||||
[QP_ROTATION_0] = ILI9XXX_MADCTL_BGR,
|
||||
[QP_ROTATION_90] = ILI9XXX_MADCTL_BGR | ILI9XXX_MADCTL_MV,
|
||||
[QP_ROTATION_180] = ILI9XXX_MADCTL_BGR,
|
||||
[QP_ROTATION_270] = ILI9XXX_MADCTL_BGR | ILI9XXX_MADCTL_MV,
|
||||
};
|
||||
const uint8_t functl[] = {
|
||||
[QP_ROTATION_0] = 0x42,
|
||||
[QP_ROTATION_90] = 0x62,
|
||||
[QP_ROTATION_180] = 0x22,
|
||||
[QP_ROTATION_270] = 0x02,
|
||||
};
|
||||
|
||||
// clang-format off
|
||||
uint8_t rotation_sequence[] = {
|
||||
// Command, Delay, N, Data[N]
|
||||
ILI9XXX_SET_MEM_ACS_CTL, 0, 1, madctl[rotation],
|
||||
ILI9XXX_SET_FUNCTION_CTL, 0, 2, 0x00, functl[rotation],
|
||||
ILI9XXX_CMD_SLEEP_OFF, 5, 0,
|
||||
ILI9XXX_CMD_DISPLAY_ON, 5, 0,
|
||||
};
|
||||
// clang-format on
|
||||
qp_comms_bulk_command_sequence(device, rotation_sequence, sizeof(rotation_sequence));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Driver vtable
|
||||
|
||||
// waveshare variant needs some tweaks due to shift registers
|
||||
static void qp_comms_spi_dc_reset_send_command_odd_cs_pulse(painter_device_t device, uint8_t cmd) {
|
||||
painter_driver_t * driver = (painter_driver_t *)device;
|
||||
qp_comms_spi_dc_reset_config_t *comms_config = (qp_comms_spi_dc_reset_config_t *)driver->comms_config;
|
||||
|
||||
writePinLow(comms_config->spi_config.chip_select_pin);
|
||||
qp_comms_spi_dc_reset_send_command(device, cmd);
|
||||
writePinHigh(comms_config->spi_config.chip_select_pin);
|
||||
}
|
||||
|
||||
static uint32_t qp_comms_spi_send_data_odd_cs_pulse(painter_device_t device, const void *data, uint32_t byte_count) {
|
||||
painter_driver_t * driver = (painter_driver_t *)device;
|
||||
qp_comms_spi_dc_reset_config_t *comms_config = (qp_comms_spi_dc_reset_config_t *)driver->comms_config;
|
||||
|
||||
uint32_t bytes_remaining = byte_count;
|
||||
const uint8_t *p = (const uint8_t *)data;
|
||||
uint32_t max_msg_length = 1024;
|
||||
|
||||
writePinHigh(comms_config->dc_pin);
|
||||
while (bytes_remaining > 0) {
|
||||
uint32_t bytes_this_loop = QP_MIN(bytes_remaining, max_msg_length);
|
||||
bool odd_bytes = bytes_this_loop & 1;
|
||||
|
||||
// send data
|
||||
writePinLow(comms_config->spi_config.chip_select_pin);
|
||||
spi_transmit(p, bytes_this_loop);
|
||||
p += bytes_this_loop;
|
||||
|
||||
// extra CS toggle, for alignment
|
||||
if (odd_bytes) {
|
||||
writePinHigh(comms_config->spi_config.chip_select_pin);
|
||||
writePinLow(comms_config->spi_config.chip_select_pin);
|
||||
}
|
||||
|
||||
bytes_remaining -= bytes_this_loop;
|
||||
}
|
||||
|
||||
return byte_count - bytes_remaining;
|
||||
}
|
||||
|
||||
static uint32_t qp_ili9486_send_data_toggling(painter_device_t device, const uint8_t *data, uint32_t byte_count) {
|
||||
painter_driver_t * driver = (painter_driver_t *)device;
|
||||
qp_comms_spi_dc_reset_config_t *comms_config = (qp_comms_spi_dc_reset_config_t *)driver->comms_config;
|
||||
|
||||
uint32_t ret;
|
||||
for (uint8_t j = 0; j < byte_count; ++j) {
|
||||
writePinLow(comms_config->spi_config.chip_select_pin);
|
||||
ret = qp_comms_spi_dc_reset_send_data(device, &data[j], 1);
|
||||
writePinHigh(comms_config->spi_config.chip_select_pin);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void qp_comms_spi_send_command_sequence_odd_cs_pulse(painter_device_t device, const uint8_t *sequence, size_t sequence_len) {
|
||||
for (size_t i = 0; i < sequence_len;) {
|
||||
uint8_t command = sequence[i];
|
||||
uint8_t delay = sequence[i + 1];
|
||||
uint8_t num_bytes = sequence[i + 2];
|
||||
|
||||
qp_comms_spi_dc_reset_send_command_odd_cs_pulse(device, command);
|
||||
if (num_bytes > 0) {
|
||||
qp_ili9486_send_data_toggling(device, &sequence[i + 3], num_bytes);
|
||||
}
|
||||
|
||||
if (delay > 0) {
|
||||
wait_ms(delay);
|
||||
}
|
||||
i += (3 + num_bytes);
|
||||
}
|
||||
}
|
||||
|
||||
static bool qp_ili9486_viewport(painter_device_t device, uint16_t left, uint16_t top, uint16_t right, uint16_t bottom) {
|
||||
painter_driver_t * driver = (painter_driver_t *)device;
|
||||
tft_panel_dc_reset_painter_driver_vtable_t *vtable = (tft_panel_dc_reset_painter_driver_vtable_t *)driver->driver_vtable;
|
||||
|
||||
// Fix up the drawing location if required
|
||||
left += driver->offset_x;
|
||||
right += driver->offset_x;
|
||||
top += driver->offset_y;
|
||||
bottom += driver->offset_y;
|
||||
|
||||
// Check if we need to manually swap the window coordinates based on whether or not we're in a sideways rotation
|
||||
if (vtable->swap_window_coords && (driver->rotation == QP_ROTATION_90 || driver->rotation == QP_ROTATION_270)) {
|
||||
uint16_t temp;
|
||||
|
||||
temp = left;
|
||||
left = top;
|
||||
top = temp;
|
||||
|
||||
temp = right;
|
||||
right = bottom;
|
||||
bottom = temp;
|
||||
}
|
||||
|
||||
// Set up the x-window
|
||||
uint8_t xbuf[4] = {left >> 8, left & 0xFF, right >> 8, right & 0xFF};
|
||||
qp_comms_spi_dc_reset_send_command_odd_cs_pulse(device, vtable->opcodes.set_column_address);
|
||||
qp_ili9486_send_data_toggling(device, xbuf, 4);
|
||||
|
||||
// Set up the y-window
|
||||
uint8_t ybuf[4] = {top >> 8, top & 0xFF, bottom >> 8, bottom & 0xFF};
|
||||
qp_comms_spi_dc_reset_send_command_odd_cs_pulse(device, vtable->opcodes.set_row_address);
|
||||
qp_ili9486_send_data_toggling(device, ybuf, 4);
|
||||
|
||||
// Lock in the window
|
||||
qp_comms_spi_dc_reset_send_command_odd_cs_pulse(device, vtable->opcodes.enable_writes);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Regular
|
||||
const tft_panel_dc_reset_painter_driver_vtable_t ili9486_driver_vtable = {
|
||||
.base =
|
||||
{
|
||||
.init = qp_ili9486_init,
|
||||
.power = qp_tft_panel_power,
|
||||
.clear = qp_tft_panel_clear,
|
||||
.flush = qp_tft_panel_flush,
|
||||
.pixdata = qp_tft_panel_pixdata,
|
||||
.viewport = qp_tft_panel_viewport,
|
||||
.palette_convert = qp_tft_panel_palette_convert_rgb565_swapped,
|
||||
.append_pixels = qp_tft_panel_append_pixels_rgb565,
|
||||
.append_pixdata = qp_tft_panel_append_pixdata,
|
||||
},
|
||||
.num_window_bytes = 2,
|
||||
.swap_window_coords = false,
|
||||
.opcodes =
|
||||
{
|
||||
.display_on = ILI9XXX_CMD_DISPLAY_ON,
|
||||
.display_off = ILI9XXX_CMD_DISPLAY_OFF,
|
||||
.set_column_address = ILI9XXX_SET_COL_ADDR,
|
||||
.set_row_address = ILI9XXX_SET_PAGE_ADDR,
|
||||
.enable_writes = ILI9XXX_SET_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
// Waveshare tweaks
|
||||
const tft_panel_dc_reset_painter_driver_vtable_t ili9486_waveshare_driver_vtable = {
|
||||
.base =
|
||||
{
|
||||
.init = qp_ili9486_init,
|
||||
.power = qp_tft_panel_power,
|
||||
.clear = qp_tft_panel_clear,
|
||||
.flush = qp_tft_panel_flush,
|
||||
.pixdata = qp_tft_panel_pixdata,
|
||||
.viewport = qp_ili9486_viewport,
|
||||
.palette_convert = qp_tft_panel_palette_convert_rgb565_swapped,
|
||||
.append_pixels = qp_tft_panel_append_pixels_rgb565,
|
||||
.append_pixdata = qp_tft_panel_append_pixdata,
|
||||
},
|
||||
.num_window_bytes = 2,
|
||||
.swap_window_coords = false,
|
||||
.opcodes =
|
||||
{
|
||||
.display_on = ILI9XXX_CMD_DISPLAY_ON,
|
||||
.display_off = ILI9XXX_CMD_DISPLAY_OFF,
|
||||
.set_column_address = ILI9XXX_SET_COL_ADDR,
|
||||
.set_row_address = ILI9XXX_SET_PAGE_ADDR,
|
||||
.enable_writes = ILI9XXX_SET_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
static const painter_comms_with_command_vtable_t spi_comms_odd_cs_pulse_vtable = {
|
||||
.base =
|
||||
{
|
||||
.comms_init = qp_comms_spi_dc_reset_init,
|
||||
.comms_start = qp_comms_spi_start,
|
||||
.comms_send = qp_comms_spi_send_data_odd_cs_pulse,
|
||||
.comms_stop = qp_comms_spi_stop,
|
||||
},
|
||||
.send_command = qp_comms_spi_dc_reset_send_command_odd_cs_pulse,
|
||||
.bulk_command_sequence = qp_comms_spi_send_command_sequence_odd_cs_pulse,
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// SPI
|
||||
|
||||
#ifdef QUANTUM_PAINTER_ILI9486_SPI_ENABLE
|
||||
|
||||
// Factory function for creating a handle to the ILI9486 device
|
||||
painter_device_t qp_ili9486_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode) {
|
||||
for (uint32_t i = 0; i < ILI9486_NUM_DEVICES; ++i) {
|
||||
tft_panel_dc_reset_painter_device_t *driver = &ili9486_drivers[i];
|
||||
if (!driver->base.driver_vtable) {
|
||||
driver->base.driver_vtable = (const painter_driver_vtable_t *)&ili9486_driver_vtable;
|
||||
driver->base.comms_vtable = (const painter_comms_vtable_t *)&spi_comms_with_dc_vtable;
|
||||
driver->base.native_bits_per_pixel = 16; // RGB565
|
||||
driver->base.panel_width = panel_width;
|
||||
driver->base.panel_height = panel_height;
|
||||
driver->base.rotation = QP_ROTATION_0;
|
||||
driver->base.offset_x = 0;
|
||||
driver->base.offset_y = 0;
|
||||
|
||||
// SPI and other pin configuration
|
||||
driver->base.comms_config = &driver->spi_dc_reset_config;
|
||||
driver->spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin;
|
||||
driver->spi_dc_reset_config.spi_config.divisor = spi_divisor;
|
||||
driver->spi_dc_reset_config.spi_config.lsb_first = false;
|
||||
driver->spi_dc_reset_config.spi_config.mode = spi_mode;
|
||||
driver->spi_dc_reset_config.dc_pin = dc_pin;
|
||||
driver->spi_dc_reset_config.reset_pin = reset_pin;
|
||||
|
||||
if (!qp_internal_register_device((painter_device_t)driver)) {
|
||||
memset(driver, 0, sizeof(tft_panel_dc_reset_painter_device_t));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return (painter_device_t)driver;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
painter_device_t qp_ili9486_make_spi_waveshare_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode) {
|
||||
painter_device_t device = qp_ili9486_make_spi_device(panel_width, panel_height, chip_select_pin, dc_pin, reset_pin, spi_divisor, spi_mode);
|
||||
if (device) {
|
||||
tft_panel_dc_reset_painter_device_t *driver = (tft_panel_dc_reset_painter_device_t *)device;
|
||||
driver->base.driver_vtable = (const painter_driver_vtable_t *)&ili9486_waveshare_driver_vtable;
|
||||
driver->base.comms_vtable = (const painter_comms_vtable_t *)&spi_comms_odd_cs_pulse_vtable;
|
||||
}
|
||||
return device;
|
||||
}
|
||||
|
||||
#endif // QUANTUM_PAINTER_ILI9486_SPI_ENABLE
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
52
drivers/eeprom/painter/ili9xxx/qp_ili9486.h
Normal file
52
drivers/eeprom/painter/ili9xxx/qp_ili9486.h
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
// Copyright 2021 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "gpio.h"
|
||||
#include "qp_internal.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter ILI9486 configurables (add to your keyboard's config.h)
|
||||
|
||||
#ifndef ILI9486_NUM_DEVICES
|
||||
/**
|
||||
* @def This controls the maximum number of ILI9486 devices that Quantum Painter can communicate with at any one time.
|
||||
* Increasing this number allows for multiple displays to be used.
|
||||
*/
|
||||
# define ILI9486_NUM_DEVICES 1
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter ILI9486 device factories
|
||||
|
||||
#ifdef QUANTUM_PAINTER_ILI9486_SPI_ENABLE
|
||||
/**
|
||||
* Factory method for an ILI9486 SPI LCD device.
|
||||
*
|
||||
* @param panel_width[in] the width of the display panel
|
||||
* @param panel_height[in] the height of the display panel
|
||||
* @param chip_select_pin[in] the GPIO pin used for SPI chip select
|
||||
* @param dc_pin[in] the GPIO pin used for D/C control
|
||||
* @param reset_pin[in] the GPIO pin used for RST
|
||||
* @param spi_divisor[in] the SPI divisor to use when communicating with the display
|
||||
* @param spi_mode[in] the SPI mode to use when communicating with the display
|
||||
* @return the device handle used with all drawing routines in Quantum Painter
|
||||
*/
|
||||
painter_device_t qp_ili9486_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode);
|
||||
|
||||
/**
|
||||
* Factory method for an ILI9486 SPI LCD device.
|
||||
*
|
||||
* @param panel_width[in] the width of the display panel
|
||||
* @param panel_height[in] the height of the display panel
|
||||
* @param chip_select_pin[in] the GPIO pin used for SPI chip select
|
||||
* @param dc_pin[in] the GPIO pin used for D/C control
|
||||
* @param reset_pin[in] the GPIO pin used for RST
|
||||
* @param spi_divisor[in] the SPI divisor to use when communicating with the display
|
||||
* @param spi_mode[in] the SPI mode to use when communicating with the display
|
||||
* @return the device handle used with all drawing routines in Quantum Painter
|
||||
*/
|
||||
painter_device_t qp_ili9486_make_spi_waveshare_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode);
|
||||
|
||||
#endif // QUANTUM_PAINTER_ILI9486_SPI_ENABLE
|
||||
128
drivers/eeprom/painter/ili9xxx/qp_ili9488.c
Normal file
128
drivers/eeprom/painter/ili9xxx/qp_ili9488.c
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
// Copyright 2021-2023 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "qp_internal.h"
|
||||
#include "qp_comms.h"
|
||||
#include "qp_ili9488.h"
|
||||
#include "qp_ili9xxx_opcodes.h"
|
||||
#include "qp_tft_panel.h"
|
||||
|
||||
#ifdef QUANTUM_PAINTER_ILI9488_SPI_ENABLE
|
||||
# include <qp_comms_spi.h>
|
||||
#endif // QUANTUM_PAINTER_ILI9488_SPI_ENABLE
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Common
|
||||
|
||||
// Driver storage
|
||||
tft_panel_dc_reset_painter_device_t ili9488_drivers[ILI9488_NUM_DEVICES] = {0};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Initialization
|
||||
|
||||
__attribute__((weak)) bool qp_ili9488_init(painter_device_t device, painter_rotation_t rotation) {
|
||||
// clang-format off
|
||||
const uint8_t ili9488_init_sequence[] = {
|
||||
// Command, Delay, N, Data[N]
|
||||
ILI9XXX_CMD_RESET, 120, 0,
|
||||
ILI9XXX_SET_PGAMMA, 0, 15, 0x00, 0x03, 0x09, 0x08, 0x16, 0x0A, 0x3F, 0x78, 0x4C, 0x09, 0x0A, 0x08, 0x16, 0x1A, 0x0F,
|
||||
ILI9XXX_SET_NGAMMA, 0, 15, 0x00, 0x16, 0x19, 0x03, 0x0F, 0x05, 0x32, 0x45, 0x46, 0x04, 0x0E, 0x0D, 0x35, 0x37, 0x0F,
|
||||
ILI9XXX_SET_POWER_CTL_1, 0, 2, 0x17, 0x15,
|
||||
ILI9XXX_SET_POWER_CTL_2, 0, 1, 0x41,
|
||||
ILI9XXX_SET_VCOM_CTL_1, 0, 3, 0x00, 0x12, 0x80,
|
||||
ILI9XXX_SET_PIX_FMT, 0, 1, 0x66,
|
||||
ILI9XXX_SET_RGB_IF_SIG_CTL, 0, 1, 0x80,
|
||||
ILI9XXX_SET_FRAME_CTL_NORMAL, 0, 1, 0xA0,
|
||||
ILI9XXX_SET_INVERSION_CTL, 0, 1, 0x02,
|
||||
ILI9XXX_SET_FUNCTION_CTL, 0, 2, 0x02, 0x02,
|
||||
ILI9XXX_SET_IMAGE_FUNCTION, 0, 1, 0x00,
|
||||
ILI9XXX_SET_PUMP_RATIO_CTL, 0, 4, 0xA9, 0x51, 0x2C, 0x82,
|
||||
ILI9XXX_CMD_SLEEP_OFF, 5, 0,
|
||||
ILI9XXX_CMD_DISPLAY_ON, 20, 0
|
||||
};
|
||||
// clang-format on
|
||||
qp_comms_bulk_command_sequence(device, ili9488_init_sequence, sizeof(ili9488_init_sequence));
|
||||
|
||||
// Configure the rotation (i.e. the ordering and direction of memory writes in GRAM)
|
||||
const uint8_t madctl[] = {
|
||||
[QP_ROTATION_0] = ILI9XXX_MADCTL_BGR | ILI9XXX_MADCTL_MY,
|
||||
[QP_ROTATION_90] = ILI9XXX_MADCTL_BGR | ILI9XXX_MADCTL_MX | ILI9XXX_MADCTL_MV | ILI9XXX_MADCTL_MY,
|
||||
[QP_ROTATION_180] = ILI9XXX_MADCTL_BGR | ILI9XXX_MADCTL_MX,
|
||||
[QP_ROTATION_270] = ILI9XXX_MADCTL_BGR | ILI9XXX_MADCTL_MV,
|
||||
};
|
||||
qp_comms_command_databyte(device, ILI9XXX_SET_MEM_ACS_CTL, madctl[rotation]);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Driver vtable
|
||||
|
||||
const tft_panel_dc_reset_painter_driver_vtable_t ili9488_driver_vtable = {
|
||||
.base =
|
||||
{
|
||||
.init = qp_ili9488_init,
|
||||
.power = qp_tft_panel_power,
|
||||
.clear = qp_tft_panel_clear,
|
||||
.flush = qp_tft_panel_flush,
|
||||
.pixdata = qp_tft_panel_pixdata,
|
||||
.viewport = qp_tft_panel_viewport,
|
||||
.palette_convert = qp_tft_panel_palette_convert_rgb888,
|
||||
.append_pixels = qp_tft_panel_append_pixels_rgb888,
|
||||
.append_pixdata = qp_tft_panel_append_pixdata,
|
||||
},
|
||||
.num_window_bytes = 2,
|
||||
.swap_window_coords = false,
|
||||
.opcodes =
|
||||
{
|
||||
.display_on = ILI9XXX_CMD_DISPLAY_ON,
|
||||
.display_off = ILI9XXX_CMD_DISPLAY_OFF,
|
||||
.set_column_address = ILI9XXX_SET_COL_ADDR,
|
||||
.set_row_address = ILI9XXX_SET_PAGE_ADDR,
|
||||
.enable_writes = ILI9XXX_SET_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// SPI
|
||||
|
||||
#ifdef QUANTUM_PAINTER_ILI9488_SPI_ENABLE
|
||||
|
||||
// Factory function for creating a handle to the ILI9488 device
|
||||
painter_device_t qp_ili9488_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode) {
|
||||
for (uint32_t i = 0; i < ILI9488_NUM_DEVICES; ++i) {
|
||||
tft_panel_dc_reset_painter_device_t *driver = &ili9488_drivers[i];
|
||||
if (!driver->base.driver_vtable) {
|
||||
driver->base.driver_vtable = (const painter_driver_vtable_t *)&ili9488_driver_vtable;
|
||||
driver->base.comms_vtable = (const painter_comms_vtable_t *)&spi_comms_with_dc_vtable;
|
||||
driver->base.native_bits_per_pixel = 24; // RGB888
|
||||
driver->base.panel_width = panel_width;
|
||||
driver->base.panel_height = panel_height;
|
||||
driver->base.rotation = QP_ROTATION_0;
|
||||
driver->base.offset_x = 0;
|
||||
driver->base.offset_y = 0;
|
||||
|
||||
// SPI and other pin configuration
|
||||
driver->base.comms_config = &driver->spi_dc_reset_config;
|
||||
driver->spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin;
|
||||
driver->spi_dc_reset_config.spi_config.divisor = spi_divisor;
|
||||
driver->spi_dc_reset_config.spi_config.lsb_first = false;
|
||||
driver->spi_dc_reset_config.spi_config.mode = spi_mode;
|
||||
driver->spi_dc_reset_config.dc_pin = dc_pin;
|
||||
driver->spi_dc_reset_config.reset_pin = reset_pin;
|
||||
driver->spi_dc_reset_config.command_params_uses_command_pin = false;
|
||||
|
||||
if (!qp_internal_register_device((painter_device_t)driver)) {
|
||||
memset(driver, 0, sizeof(tft_panel_dc_reset_painter_device_t));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return (painter_device_t)driver;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif // QUANTUM_PAINTER_ILI9488_SPI_ENABLE
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
36
drivers/eeprom/painter/ili9xxx/qp_ili9488.h
Normal file
36
drivers/eeprom/painter/ili9xxx/qp_ili9488.h
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
// Copyright 2021 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#include "gpio.h"
|
||||
#include "qp_internal.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter ILI9488 configurables (add to your keyboard's config.h)
|
||||
|
||||
#ifndef ILI9488_NUM_DEVICES
|
||||
/**
|
||||
* @def This controls the maximum number of ILI9488 devices that Quantum Painter can communicate with at any one time.
|
||||
* Increasing this number allows for multiple displays to be used.
|
||||
*/
|
||||
# define ILI9488_NUM_DEVICES 1
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter ILI9488 device factories
|
||||
|
||||
#ifdef QUANTUM_PAINTER_ILI9488_SPI_ENABLE
|
||||
/**
|
||||
* Factory method for an ILI9488 SPI LCD device.
|
||||
*
|
||||
* @param panel_width[in] the width of the display panel
|
||||
* @param panel_height[in] the height of the display panel
|
||||
* @param chip_select_pin[in] the GPIO pin used for SPI chip select
|
||||
* @param dc_pin[in] the GPIO pin used for D/C control
|
||||
* @param reset_pin[in] the GPIO pin used for RST
|
||||
* @param spi_divisor[in] the SPI divisor to use when communicating with the display
|
||||
* @param spi_mode[in] the SPI mode to use when communicating with the display
|
||||
* @return the device handle used with all drawing routines in Quantum Painter
|
||||
*/
|
||||
painter_device_t qp_ili9488_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode);
|
||||
#endif // QUANTUM_PAINTER_ILI9488_SPI_ENABLE
|
||||
102
drivers/eeprom/painter/ili9xxx/qp_ili9xxx_opcodes.h
Normal file
102
drivers/eeprom/painter/ili9xxx/qp_ili9xxx_opcodes.h
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
// Copyright 2021 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter ILI9xxx command opcodes
|
||||
#define ILI9XXX_CMD_NOP 0x00 // No operation
|
||||
#define ILI9XXX_CMD_RESET 0x01 // Software reset
|
||||
#define ILI9XXX_GET_ID_INFO 0x04 // Get ID information
|
||||
#define ILI9XXX_GET_STATUS 0x09 // Get status
|
||||
#define ILI9XXX_GET_PWR_MODE 0x0A // Get power mode
|
||||
#define ILI9XXX_GET_MADCTL 0x0B // Get MADCTL
|
||||
#define ILI9XXX_GET_PIX_FMT 0x0C // Get pixel format
|
||||
#define ILI9XXX_GET_IMG_FMT 0x0D // Get image format
|
||||
#define ILI9XXX_GET_SIG_MODE 0x0E // Get signal mode
|
||||
#define ILI9XXX_GET_SELF_DIAG 0x0F // Get self-diagnostics
|
||||
#define ILI9XXX_CMD_SLEEP_ON 0x10 // Enter sleep mode
|
||||
#define ILI9XXX_CMD_SLEEP_OFF 0x11 // Exist sleep mode
|
||||
#define ILI9XXX_CMD_PARTIAL_ON 0x12 // Enter partial mode
|
||||
#define ILI9XXX_CMD_PARTIAL_OFF 0x13 // Exit partial mode
|
||||
#define ILI9XXX_CMD_INVERT_OFF 0x20 // Exit inverted mode
|
||||
#define ILI9XXX_CMD_INVERT_ON 0x21 // Enter inverted mode
|
||||
#define ILI9XXX_SET_GAMMA 0x26 // Set gamma params
|
||||
#define ILI9XXX_CMD_DISPLAY_OFF 0x28 // Disable display
|
||||
#define ILI9XXX_CMD_DISPLAY_ON 0x29 // Enable display
|
||||
#define ILI9XXX_SET_COL_ADDR 0x2A // Set column address
|
||||
#define ILI9XXX_SET_PAGE_ADDR 0x2B // Set page address
|
||||
#define ILI9XXX_SET_MEM 0x2C // Set memory
|
||||
#define ILI9XXX_SET_COLOR 0x2D // Set color
|
||||
#define ILI9XXX_GET_MEM 0x2E // Get memory
|
||||
#define ILI9XXX_SET_PARTIAL_AREA 0x30 // Set partial area
|
||||
#define ILI9XXX_SET_VSCROLL 0x33 // Set vertical scroll def
|
||||
#define ILI9XXX_CMD_TEARING_ON 0x34 // Tearing line enabled
|
||||
#define ILI9XXX_CMD_TEARING_OFF 0x35 // Tearing line disabled
|
||||
#define ILI9XXX_SET_MEM_ACS_CTL 0x36 // Set mem access ctl
|
||||
#define ILI9XXX_SET_VSCROLL_ADDR 0x37 // Set vscroll start addr
|
||||
#define ILI9XXX_CMD_IDLE_OFF 0x38 // Exit idle mode
|
||||
#define ILI9XXX_CMD_IDLE_ON 0x39 // Enter idle mode
|
||||
#define ILI9XXX_SET_PIX_FMT 0x3A // Set pixel format
|
||||
#define ILI9XXX_SET_MEM_CONT 0x3C // Set memory continue
|
||||
#define ILI9XXX_GET_MEM_CONT 0x3E // Get memory continue
|
||||
#define ILI9XXX_SET_TEAR_SCANLINE 0x44 // Set tearing scanline
|
||||
#define ILI9XXX_GET_TEAR_SCANLINE 0x45 // Get tearing scanline
|
||||
#define ILI9XXX_SET_BRIGHTNESS 0x51 // Set brightness
|
||||
#define ILI9XXX_GET_BRIGHTNESS 0x52 // Get brightness
|
||||
#define ILI9XXX_SET_DISPLAY_CTL 0x53 // Set display ctl
|
||||
#define ILI9XXX_GET_DISPLAY_CTL 0x54 // Get display ctl
|
||||
#define ILI9XXX_SET_CABC 0x55 // Set CABC
|
||||
#define ILI9XXX_GET_CABC 0x56 // Get CABC
|
||||
#define ILI9XXX_SET_CABC_MIN 0x5E // Set CABC min
|
||||
#define ILI9XXX_GET_CABC_MIN 0x5F // Set CABC max
|
||||
#define ILI9XXX_GET_ID1 0xDA // Get ID1
|
||||
#define ILI9XXX_GET_ID2 0xDB // Get ID2
|
||||
#define ILI9XXX_GET_ID3 0xDC // Get ID3
|
||||
#define ILI9XXX_SET_RGB_IF_SIG_CTL 0xB0 // RGB IF signal ctl
|
||||
#define ILI9XXX_SET_FRAME_CTL_NORMAL 0xB1 // Set frame ctl (normal)
|
||||
#define ILI9XXX_SET_FRAME_CTL_IDLE 0xB2 // Set frame ctl (idle)
|
||||
#define ILI9XXX_SET_FRAME_CTL_PARTIAL 0xB3 // Set frame ctl (partial)
|
||||
#define ILI9XXX_SET_INVERSION_CTL 0xB4 // Set inversion ctl
|
||||
#define ILI9XXX_SET_BLANKING_PORCH_CTL 0xB5 // Set blanking porch ctl
|
||||
#define ILI9XXX_SET_FUNCTION_CTL 0xB6 // Set function ctl
|
||||
#define ILI9XXX_SET_ENTRY_MODE 0xB7 // Set entry mode
|
||||
#define ILI9XXX_SET_LIGHT_CTL_1 0xB8 // Set backlight ctl 1
|
||||
#define ILI9XXX_SET_LIGHT_CTL_2 0xB9 // Set backlight ctl 2
|
||||
#define ILI9XXX_SET_LIGHT_CTL_3 0xBA // Set backlight ctl 3
|
||||
#define ILI9XXX_SET_LIGHT_CTL_4 0xBB // Set backlight ctl 4
|
||||
#define ILI9XXX_SET_LIGHT_CTL_5 0xBC // Set backlight ctl 5
|
||||
#define ILI9XXX_SET_LIGHT_CTL_7 0xBE // Set backlight ctl 7
|
||||
#define ILI9XXX_SET_LIGHT_CTL_8 0xBF // Set backlight ctl 8
|
||||
#define ILI9XXX_SET_POWER_CTL_1 0xC0 // Set power ctl 1
|
||||
#define ILI9XXX_SET_POWER_CTL_2 0xC1 // Set power ctl 2
|
||||
#define ILI9XXX_SET_POWER_CTL_3 0xC2 // Set power ctl 3
|
||||
#define ILI9XXX_SET_VCOM_CTL_1 0xC5 // Set VCOM ctl 1
|
||||
#define ILI9XXX_SET_VCOM_CTL_2 0xC7 // Set VCOM ctl 2
|
||||
#define ILI9XXX_POWER_CTL_A 0xCB // Set power control A
|
||||
#define ILI9XXX_POWER_CTL_B 0xCF // Set power control B
|
||||
#define ILI9XXX_DRV_TIMING_CTL_A 0xE8 // Set driver timing control A
|
||||
#define ILI9XXX_DRV_TIMING_CTL_B 0xEA // Set driver timing control B
|
||||
#define ILI9XXX_POWER_ON_SEQ_CTL 0xED // Set Power on sequence control
|
||||
#define ILI9XXX_SET_NVMEM 0xD0 // Set NVMEM data
|
||||
#define ILI9XXX_GET_NVMEM_KEY 0xD1 // Get NVMEM protect key
|
||||
#define ILI9XXX_GET_NVMEM_STATUS 0xD2 // Get NVMEM status
|
||||
#define ILI9XXX_GET_ID4 0xD3 // Get ID4
|
||||
#define ILI9XXX_SET_PGAMMA 0xE0 // Set positive gamma
|
||||
#define ILI9XXX_SET_NGAMMA 0xE1 // Set negative gamma
|
||||
#define ILI9XXX_SET_DGAMMA_CTL_1 0xE2 // Set digital gamma ctl 1
|
||||
#define ILI9XXX_SET_DGAMMA_CTL_2 0xE3 // Set digital gamma ctl 2
|
||||
#define ILI9XXX_SET_IMAGE_FUNCTION 0xE9 // Set image function
|
||||
#define ILI9XXX_ENABLE_3_GAMMA 0xF2 // Enable 3 gamma
|
||||
#define ILI9XXX_SET_IF_CTL 0xF6 // Set interface control
|
||||
#define ILI9XXX_SET_PUMP_RATIO_CTL 0xF7 // Set pump ratio control
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// MADCTL Flags
|
||||
#define ILI9XXX_MADCTL_MY 0b10000000
|
||||
#define ILI9XXX_MADCTL_MX 0b01000000
|
||||
#define ILI9XXX_MADCTL_MV 0b00100000
|
||||
#define ILI9XXX_MADCTL_ML 0b00010000
|
||||
#define ILI9XXX_MADCTL_RGB 0b00000000
|
||||
#define ILI9XXX_MADCTL_BGR 0b00001000
|
||||
#define ILI9XXX_MADCTL_MH 0b00000100
|
||||
195
drivers/eeprom/painter/oled_panel/qp_oled_panel.c
Normal file
195
drivers/eeprom/painter/oled_panel/qp_oled_panel.c
Normal file
|
|
@ -0,0 +1,195 @@
|
|||
// Copyright 2023 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "color.h"
|
||||
#include "qp_internal.h"
|
||||
#include "qp_comms.h"
|
||||
#include "qp_draw.h"
|
||||
#include "qp_oled_panel.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter API implementations
|
||||
|
||||
// Power control
|
||||
bool qp_oled_panel_power(painter_device_t device, bool power_on) {
|
||||
painter_driver_t * driver = (painter_driver_t *)device;
|
||||
oled_panel_painter_driver_vtable_t *vtable = (oled_panel_painter_driver_vtable_t *)driver->driver_vtable;
|
||||
qp_comms_command(device, power_on ? vtable->opcodes.display_on : vtable->opcodes.display_off);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Screen clear
|
||||
bool qp_oled_panel_clear(painter_device_t device) {
|
||||
painter_driver_t *driver = (painter_driver_t *)device;
|
||||
driver->driver_vtable->init(device, driver->rotation); // Re-init the display
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Surface passthru
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
bool qp_oled_panel_passthru_pixdata(painter_device_t device, const void *pixel_data, uint32_t native_pixel_count) {
|
||||
oled_panel_painter_device_t *driver = (oled_panel_painter_device_t *)device;
|
||||
return driver->surface.base.validate_ok && driver->surface.base.driver_vtable->pixdata(&driver->surface.base, pixel_data, native_pixel_count);
|
||||
}
|
||||
|
||||
bool qp_oled_panel_passthru_viewport(painter_device_t device, uint16_t left, uint16_t top, uint16_t right, uint16_t bottom) {
|
||||
oled_panel_painter_device_t *driver = (oled_panel_painter_device_t *)device;
|
||||
return driver->surface.base.validate_ok && driver->surface.base.driver_vtable->viewport(&driver->surface.base, left, top, right, bottom);
|
||||
}
|
||||
|
||||
bool qp_oled_panel_passthru_palette_convert(painter_device_t device, int16_t palette_size, qp_pixel_t *palette) {
|
||||
oled_panel_painter_device_t *driver = (oled_panel_painter_device_t *)device;
|
||||
return driver->surface.base.validate_ok && driver->surface.base.driver_vtable->palette_convert(&driver->surface.base, palette_size, palette);
|
||||
}
|
||||
|
||||
bool qp_oled_panel_passthru_append_pixels(painter_device_t device, uint8_t *target_buffer, qp_pixel_t *palette, uint32_t pixel_offset, uint32_t pixel_count, uint8_t *palette_indices) {
|
||||
oled_panel_painter_device_t *driver = (oled_panel_painter_device_t *)device;
|
||||
return driver->surface.base.validate_ok && driver->surface.base.driver_vtable->append_pixels(&driver->surface.base, target_buffer, palette, pixel_offset, pixel_count, palette_indices);
|
||||
}
|
||||
|
||||
bool qp_oled_panel_passthru_append_pixdata(painter_device_t device, uint8_t *target_buffer, uint32_t pixdata_offset, uint8_t pixdata_byte) {
|
||||
oled_panel_painter_device_t *driver = (oled_panel_painter_device_t *)device;
|
||||
return driver->surface.base.validate_ok && driver->surface.base.driver_vtable->append_pixdata(&driver->surface.base, target_buffer, pixdata_offset, pixdata_byte);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Flush helpers
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void qp_oled_panel_page_column_flush_rot0(painter_device_t device, surface_dirty_data_t *dirty, const uint8_t *framebuffer) {
|
||||
painter_driver_t * driver = (painter_driver_t *)device;
|
||||
oled_panel_painter_driver_vtable_t *vtable = (oled_panel_painter_driver_vtable_t *)driver->driver_vtable;
|
||||
|
||||
// TODO: account for offset_x/y in base driver
|
||||
int min_page = dirty->t / 8;
|
||||
int max_page = dirty->b / 8;
|
||||
int min_column = dirty->l;
|
||||
int max_column = dirty->r;
|
||||
|
||||
for (int page = min_page; page <= max_page; ++page) {
|
||||
int cols_required = max_column - min_column + 1;
|
||||
uint8_t column_data[cols_required];
|
||||
memset(column_data, 0, cols_required);
|
||||
for (int x = min_column; x <= max_column; ++x) {
|
||||
uint16_t data_offset = x - min_column;
|
||||
for (int y = 0; y < 8; ++y) {
|
||||
uint32_t pixel_num = ((page * 8) + y) * driver->panel_width + x;
|
||||
uint32_t byte_offset = pixel_num / 8;
|
||||
uint8_t bit_offset = pixel_num % 8;
|
||||
column_data[data_offset] |= ((framebuffer[byte_offset] & (1 << bit_offset)) >> bit_offset) << y;
|
||||
}
|
||||
}
|
||||
|
||||
int actual_page = page;
|
||||
int start_column = min_column;
|
||||
qp_comms_command(device, vtable->opcodes.set_page | actual_page);
|
||||
qp_comms_command(device, vtable->opcodes.set_column_lsb | (start_column & 0x0F));
|
||||
qp_comms_command(device, vtable->opcodes.set_column_msb | (start_column & 0xF0) >> 4);
|
||||
qp_comms_send(device, column_data, cols_required);
|
||||
}
|
||||
}
|
||||
|
||||
void qp_oled_panel_page_column_flush_rot90(painter_device_t device, surface_dirty_data_t *dirty, const uint8_t *framebuffer) {
|
||||
painter_driver_t * driver = (painter_driver_t *)device;
|
||||
oled_panel_painter_driver_vtable_t *vtable = (oled_panel_painter_driver_vtable_t *)driver->driver_vtable;
|
||||
|
||||
// TODO: account for offset_x/y in base driver
|
||||
int num_columns = driver->panel_width;
|
||||
int min_page = dirty->l / 8;
|
||||
int max_page = dirty->r / 8;
|
||||
int min_column = dirty->t;
|
||||
int max_column = dirty->b;
|
||||
|
||||
for (int page = min_page; page <= max_page; ++page) {
|
||||
int cols_required = max_column - min_column + 1;
|
||||
uint8_t column_data[cols_required];
|
||||
memset(column_data, 0, cols_required);
|
||||
for (int y = min_column; y <= max_column; ++y) {
|
||||
uint16_t data_offset = cols_required - 1 - (y - min_column);
|
||||
for (int x = 0; x < 8; ++x) {
|
||||
uint32_t pixel_num = y * driver->panel_height + ((page * 8) + x);
|
||||
uint32_t byte_offset = pixel_num / 8;
|
||||
uint8_t bit_offset = pixel_num % 8;
|
||||
column_data[data_offset] |= ((framebuffer[byte_offset] & (1 << bit_offset)) >> bit_offset) << x;
|
||||
}
|
||||
}
|
||||
|
||||
int actual_page = page;
|
||||
int start_column = num_columns - 1 - max_column;
|
||||
qp_comms_command(device, vtable->opcodes.set_page | actual_page);
|
||||
qp_comms_command(device, vtable->opcodes.set_column_lsb | (start_column & 0x0F));
|
||||
qp_comms_command(device, vtable->opcodes.set_column_msb | (start_column & 0xF0) >> 4);
|
||||
qp_comms_send(device, column_data, cols_required);
|
||||
}
|
||||
}
|
||||
|
||||
void qp_oled_panel_page_column_flush_rot180(painter_device_t device, surface_dirty_data_t *dirty, const uint8_t *framebuffer) {
|
||||
painter_driver_t * driver = (painter_driver_t *)device;
|
||||
oled_panel_painter_driver_vtable_t *vtable = (oled_panel_painter_driver_vtable_t *)driver->driver_vtable;
|
||||
|
||||
// TODO: account for offset_x/y in base driver
|
||||
int num_pages = driver->panel_height / 8;
|
||||
int num_columns = driver->panel_width;
|
||||
int min_page = dirty->t / 8;
|
||||
int max_page = dirty->b / 8;
|
||||
int min_column = dirty->l;
|
||||
int max_column = dirty->r;
|
||||
|
||||
for (int page = min_page; page <= max_page; ++page) {
|
||||
int cols_required = max_column - min_column + 1;
|
||||
uint8_t column_data[cols_required];
|
||||
memset(column_data, 0, cols_required);
|
||||
for (int x = min_column; x <= max_column; ++x) {
|
||||
uint16_t data_offset = cols_required - 1 - (x - min_column);
|
||||
for (int y = 0; y < 8; ++y) {
|
||||
uint32_t pixel_num = ((page * 8) + y) * driver->panel_width + x;
|
||||
uint32_t byte_offset = pixel_num / 8;
|
||||
uint8_t bit_offset = pixel_num % 8;
|
||||
column_data[data_offset] |= ((framebuffer[byte_offset] & (1 << bit_offset)) >> bit_offset) << (7 - y);
|
||||
}
|
||||
}
|
||||
|
||||
int actual_page = num_pages - 1 - page;
|
||||
int start_column = num_columns - 1 - max_column;
|
||||
qp_comms_command(device, vtable->opcodes.set_page | actual_page);
|
||||
qp_comms_command(device, vtable->opcodes.set_column_lsb | (start_column & 0x0F));
|
||||
qp_comms_command(device, vtable->opcodes.set_column_msb | (start_column & 0xF0) >> 4);
|
||||
qp_comms_send(device, column_data, cols_required);
|
||||
}
|
||||
}
|
||||
|
||||
void qp_oled_panel_page_column_flush_rot270(painter_device_t device, surface_dirty_data_t *dirty, const uint8_t *framebuffer) {
|
||||
painter_driver_t * driver = (painter_driver_t *)device;
|
||||
oled_panel_painter_driver_vtable_t *vtable = (oled_panel_painter_driver_vtable_t *)driver->driver_vtable;
|
||||
|
||||
// TODO: account for offset_x/y in base driver
|
||||
int num_pages = driver->panel_height / 8;
|
||||
int min_page = dirty->l / 8;
|
||||
int max_page = dirty->r / 8;
|
||||
int min_column = dirty->t;
|
||||
int max_column = dirty->b;
|
||||
|
||||
for (int page = min_page; page <= max_page; ++page) {
|
||||
int cols_required = max_column - min_column + 1;
|
||||
uint8_t column_data[cols_required];
|
||||
memset(column_data, 0, cols_required);
|
||||
for (int y = min_column; y <= max_column; ++y) {
|
||||
uint16_t data_offset = y - min_column;
|
||||
for (int x = 0; x < 8; ++x) {
|
||||
uint32_t pixel_num = y * driver->panel_height + ((page * 8) + x);
|
||||
uint32_t byte_offset = pixel_num / 8;
|
||||
uint8_t bit_offset = pixel_num % 8;
|
||||
column_data[data_offset] |= ((framebuffer[byte_offset] & (1 << bit_offset)) >> bit_offset) << (7 - x);
|
||||
}
|
||||
}
|
||||
|
||||
int actual_page = num_pages - 1 - page;
|
||||
int start_column = min_column;
|
||||
qp_comms_command(device, vtable->opcodes.set_page | actual_page);
|
||||
qp_comms_command(device, vtable->opcodes.set_column_lsb | (start_column & 0x0F));
|
||||
qp_comms_command(device, vtable->opcodes.set_column_msb | (start_column & 0xF0) >> 4);
|
||||
qp_comms_send(device, column_data, cols_required);
|
||||
}
|
||||
}
|
||||
68
drivers/eeprom/painter/oled_panel/qp_oled_panel.h
Normal file
68
drivers/eeprom/painter/oled_panel/qp_oled_panel.h
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
// Copyright 2023 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#include "color.h"
|
||||
#include "qp_internal.h"
|
||||
#include "qp_surface_internal.h"
|
||||
|
||||
#ifdef QUANTUM_PAINTER_SPI_ENABLE
|
||||
# include "qp_comms_spi.h"
|
||||
#endif // QUANTUM_PAINTER_SPI_ENABLE
|
||||
|
||||
#ifdef QUANTUM_PAINTER_I2C_ENABLE
|
||||
# include "qp_comms_i2c.h"
|
||||
#endif // QUANTUM_PAINTER_I2C_ENABLE
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Common OLED panel implementation
|
||||
|
||||
// Driver vtable with extras
|
||||
typedef struct oled_panel_painter_driver_vtable_t {
|
||||
painter_driver_vtable_t base; // must be first, so it can be cast to/from the painter_driver_vtable_t* type
|
||||
|
||||
// Opcodes for normal display operation
|
||||
struct {
|
||||
uint8_t display_on;
|
||||
uint8_t display_off;
|
||||
uint8_t set_page;
|
||||
uint8_t set_column_lsb;
|
||||
uint8_t set_column_msb;
|
||||
} opcodes;
|
||||
} oled_panel_painter_driver_vtable_t;
|
||||
|
||||
// Device definition
|
||||
typedef struct oled_panel_painter_device_t {
|
||||
painter_driver_t base; // must be first, so it can be cast to/from the painter_device_t* type
|
||||
|
||||
union {
|
||||
#ifdef QUANTUM_PAINTER_SPI_ENABLE
|
||||
// SPI-based configurables
|
||||
qp_comms_spi_dc_reset_config_t spi_dc_reset_config;
|
||||
#endif // QUANTUM_PAINTER_SPI_ENABLE
|
||||
#ifdef QUANTUM_PAINTER_I2C_ENABLE
|
||||
// I2C-based configurables
|
||||
qp_comms_i2c_config_t i2c_config;
|
||||
#endif // QUANTUM_PAINTER_I2C_ENABLE
|
||||
};
|
||||
|
||||
surface_painter_device_t surface;
|
||||
} oled_panel_painter_device_t;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Forward declarations for injecting into concrete driver vtables
|
||||
|
||||
bool qp_oled_panel_power(painter_device_t device, bool power_on);
|
||||
bool qp_oled_panel_clear(painter_device_t device);
|
||||
|
||||
bool qp_oled_panel_passthru_pixdata(painter_device_t device, const void *pixel_data, uint32_t native_pixel_count);
|
||||
bool qp_oled_panel_passthru_viewport(painter_device_t device, uint16_t left, uint16_t top, uint16_t right, uint16_t bottom);
|
||||
bool qp_oled_panel_passthru_palette_convert(painter_device_t device, int16_t palette_size, qp_pixel_t *palette);
|
||||
bool qp_oled_panel_passthru_append_pixels(painter_device_t device, uint8_t *target_buffer, qp_pixel_t *palette, uint32_t pixel_offset, uint32_t pixel_count, uint8_t *palette_indices);
|
||||
bool qp_oled_panel_passthru_append_pixdata(painter_device_t device, uint8_t *target_buffer, uint32_t pixdata_offset, uint8_t pixdata_byte);
|
||||
|
||||
// Helpers for flushing data from the dirty region to the correct location on the OLED
|
||||
void qp_oled_panel_page_column_flush_rot0(painter_device_t device, surface_dirty_data_t *dirty, const uint8_t *framebuffer);
|
||||
void qp_oled_panel_page_column_flush_rot90(painter_device_t device, surface_dirty_data_t *dirty, const uint8_t *framebuffer);
|
||||
void qp_oled_panel_page_column_flush_rot180(painter_device_t device, surface_dirty_data_t *dirty, const uint8_t *framebuffer);
|
||||
void qp_oled_panel_page_column_flush_rot270(painter_device_t device, surface_dirty_data_t *dirty, const uint8_t *framebuffer);
|
||||
216
drivers/eeprom/painter/sh1106/qp_sh1106.c
Normal file
216
drivers/eeprom/painter/sh1106/qp_sh1106.c
Normal file
|
|
@ -0,0 +1,216 @@
|
|||
// Copyright 2023 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "qp_internal.h"
|
||||
#include "qp_comms.h"
|
||||
#include "qp_oled_panel.h"
|
||||
#include "qp_sh1106.h"
|
||||
#include "qp_sh1106_opcodes.h"
|
||||
#include "qp_surface.h"
|
||||
#include "qp_surface_internal.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Driver storage
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
typedef struct sh1106_device_t {
|
||||
oled_panel_painter_device_t oled;
|
||||
|
||||
uint8_t framebuffer[SURFACE_REQUIRED_BUFFER_BYTE_SIZE(128, 64, 1)];
|
||||
} sh1106_device_t;
|
||||
|
||||
static sh1106_device_t sh1106_drivers[SH1106_NUM_DEVICES] = {0};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter API implementations
|
||||
|
||||
// Initialisation
|
||||
__attribute__((weak)) bool qp_sh1106_init(painter_device_t device, painter_rotation_t rotation) {
|
||||
sh1106_device_t *driver = (sh1106_device_t *)device;
|
||||
|
||||
// Change the surface geometry based on the panel rotation
|
||||
if (rotation == QP_ROTATION_90 || rotation == QP_ROTATION_270) {
|
||||
driver->oled.surface.base.panel_width = driver->oled.base.panel_height;
|
||||
driver->oled.surface.base.panel_height = driver->oled.base.panel_width;
|
||||
} else {
|
||||
driver->oled.surface.base.panel_width = driver->oled.base.panel_width;
|
||||
driver->oled.surface.base.panel_height = driver->oled.base.panel_height;
|
||||
}
|
||||
|
||||
// Init the internal surface
|
||||
if (!qp_init(&driver->oled.surface.base, QP_ROTATION_0)) {
|
||||
qp_dprintf("Failed to init internal surface in qp_sh1106_init\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
uint8_t sh1106_init_sequence[] = {
|
||||
// Command, Delay, N, Data[N]
|
||||
SH1106_SET_MUX_RATIO, 0, 1, 0x3F,
|
||||
SH1106_DISPLAY_OFFSET, 0, 1, 0x00,
|
||||
SH1106_DISPLAY_START_LINE, 0, 0,
|
||||
SH1106_SET_SEGMENT_REMAP_INV, 0, 0,
|
||||
SH1106_COM_SCAN_DIR_DEC, 0, 0,
|
||||
SH1106_COM_PADS_HW_CFG, 0, 1, 0x12,
|
||||
SH1106_SET_CONTRAST, 0, 1, 0x7F,
|
||||
SH1106_ALL_ON_RESUME, 0, 0,
|
||||
SH1106_NON_INVERTING_DISPLAY, 0, 0,
|
||||
SH1106_SET_OSC_DIVFREQ, 0, 1, 0x80,
|
||||
SH1106_SET_CHARGE_PUMP, 0, 1, 0x14,
|
||||
SH1106_DISPLAY_ON, 0, 0,
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
// If the display height is anything other than the default 64 pixels, change SH1106_SET_MUX_RATIO data byte to the correct value
|
||||
if (driver->oled.base.panel_height != 64) {
|
||||
sh1106_init_sequence[3] = driver->oled.base.panel_height - 1;
|
||||
}
|
||||
|
||||
// For 128x32 or 96x16 displays, change SH1106_COM_PADS_HW_CFG data byte from alternative (0x12) to sequential (0x02) configuration
|
||||
if (driver->oled.base.panel_height <= 32) {
|
||||
sh1106_init_sequence[20] = 0x02;
|
||||
}
|
||||
|
||||
qp_comms_bulk_command_sequence(device, sh1106_init_sequence, sizeof(sh1106_init_sequence));
|
||||
return true;
|
||||
}
|
||||
|
||||
// Screen flush
|
||||
bool qp_sh1106_flush(painter_device_t device) {
|
||||
sh1106_device_t *driver = (sh1106_device_t *)device;
|
||||
|
||||
if (!driver->oled.surface.dirty.is_dirty) {
|
||||
return true;
|
||||
}
|
||||
|
||||
switch (driver->oled.base.rotation) {
|
||||
default:
|
||||
case QP_ROTATION_0:
|
||||
qp_oled_panel_page_column_flush_rot0(device, &driver->oled.surface.dirty, driver->framebuffer);
|
||||
break;
|
||||
case QP_ROTATION_90:
|
||||
qp_oled_panel_page_column_flush_rot90(device, &driver->oled.surface.dirty, driver->framebuffer);
|
||||
break;
|
||||
case QP_ROTATION_180:
|
||||
qp_oled_panel_page_column_flush_rot180(device, &driver->oled.surface.dirty, driver->framebuffer);
|
||||
break;
|
||||
case QP_ROTATION_270:
|
||||
qp_oled_panel_page_column_flush_rot270(device, &driver->oled.surface.dirty, driver->framebuffer);
|
||||
break;
|
||||
}
|
||||
|
||||
// Clear the dirty area
|
||||
qp_flush(&driver->oled.surface);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Driver vtable
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
const oled_panel_painter_driver_vtable_t sh1106_driver_vtable = {
|
||||
.base =
|
||||
{
|
||||
.init = qp_sh1106_init,
|
||||
.power = qp_oled_panel_power,
|
||||
.clear = qp_oled_panel_clear,
|
||||
.flush = qp_sh1106_flush,
|
||||
.pixdata = qp_oled_panel_passthru_pixdata,
|
||||
.viewport = qp_oled_panel_passthru_viewport,
|
||||
.palette_convert = qp_oled_panel_passthru_palette_convert,
|
||||
.append_pixels = qp_oled_panel_passthru_append_pixels,
|
||||
.append_pixdata = qp_oled_panel_passthru_append_pixdata,
|
||||
},
|
||||
.opcodes =
|
||||
{
|
||||
.display_on = SH1106_DISPLAY_ON,
|
||||
.display_off = SH1106_DISPLAY_OFF,
|
||||
.set_page = SH1106_PAGE_ADDR,
|
||||
.set_column_lsb = SH1106_SETCOLUMN_LSB,
|
||||
.set_column_msb = SH1106_SETCOLUMN_MSB,
|
||||
},
|
||||
};
|
||||
|
||||
#ifdef QUANTUM_PAINTER_SH1106_SPI_ENABLE
|
||||
// Factory function for creating a handle to the SH1106 device
|
||||
painter_device_t qp_sh1106_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode) {
|
||||
for (uint32_t i = 0; i < SH1106_NUM_DEVICES; ++i) {
|
||||
sh1106_device_t *driver = &sh1106_drivers[i];
|
||||
if (!driver->oled.base.driver_vtable) {
|
||||
painter_device_t surface = qp_make_mono1bpp_surface_advanced(&driver->oled.surface, 1, panel_width, panel_height, driver->framebuffer);
|
||||
if (!surface) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Setup the OLED device
|
||||
driver->oled.base.driver_vtable = (const painter_driver_vtable_t *)&sh1106_driver_vtable;
|
||||
driver->oled.base.comms_vtable = (const painter_comms_vtable_t *)&spi_comms_with_dc_vtable;
|
||||
driver->oled.base.native_bits_per_pixel = 1; // 1bpp mono
|
||||
driver->oled.base.panel_width = panel_width;
|
||||
driver->oled.base.panel_height = panel_height;
|
||||
driver->oled.base.rotation = QP_ROTATION_0;
|
||||
driver->oled.base.offset_x = 0;
|
||||
driver->oled.base.offset_y = 0;
|
||||
|
||||
// SPI and other pin configuration
|
||||
driver->oled.base.comms_config = &driver->oled.spi_dc_reset_config;
|
||||
driver->oled.spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin;
|
||||
driver->oled.spi_dc_reset_config.spi_config.divisor = spi_divisor;
|
||||
driver->oled.spi_dc_reset_config.spi_config.lsb_first = false;
|
||||
driver->oled.spi_dc_reset_config.spi_config.mode = spi_mode;
|
||||
driver->oled.spi_dc_reset_config.dc_pin = dc_pin;
|
||||
driver->oled.spi_dc_reset_config.reset_pin = reset_pin;
|
||||
driver->oled.spi_dc_reset_config.command_params_uses_command_pin = true;
|
||||
|
||||
if (!qp_internal_register_device((painter_device_t)driver)) {
|
||||
memset(driver, 0, sizeof(sh1106_device_t));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return (painter_device_t)driver;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif // QUANTUM_PAINTER_SH1106_SPI_ENABLE
|
||||
|
||||
#ifdef QUANTUM_PAINTER_SH1106_I2C_ENABLE
|
||||
// Factory function for creating a handle to the SH1106 device
|
||||
painter_device_t qp_sh1106_make_i2c_device(uint16_t panel_width, uint16_t panel_height, uint8_t i2c_address) {
|
||||
for (uint32_t i = 0; i < SH1106_NUM_DEVICES; ++i) {
|
||||
sh1106_device_t *driver = &sh1106_drivers[i];
|
||||
if (!driver->oled.base.driver_vtable) {
|
||||
// Instantiate the surface, intentional swap of width/high due to transpose
|
||||
painter_device_t surface = qp_make_mono1bpp_surface_advanced(&driver->oled.surface, 1, panel_width, panel_height, driver->framebuffer);
|
||||
if (!surface) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Setup the OLED device
|
||||
driver->oled.base.driver_vtable = (const painter_driver_vtable_t *)&sh1106_driver_vtable;
|
||||
driver->oled.base.comms_vtable = (const painter_comms_vtable_t *)&i2c_comms_cmddata_vtable;
|
||||
driver->oled.base.native_bits_per_pixel = 1; // 1bpp mono
|
||||
driver->oled.base.panel_width = panel_width;
|
||||
driver->oled.base.panel_height = panel_height;
|
||||
driver->oled.base.rotation = QP_ROTATION_0;
|
||||
driver->oled.base.offset_x = 0;
|
||||
driver->oled.base.offset_y = 0;
|
||||
|
||||
// I2C configuration
|
||||
driver->oled.base.comms_config = &driver->oled.i2c_config;
|
||||
driver->oled.i2c_config.chip_address = i2c_address;
|
||||
|
||||
if (!qp_internal_register_device((painter_device_t)driver)) {
|
||||
memset(driver, 0, sizeof(sh1106_device_t));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return (painter_device_t)driver;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif // QUANTUM_PAINTER_SH1106_I2C_ENABLE
|
||||
66
drivers/eeprom/painter/sh1106/qp_sh1106.h
Normal file
66
drivers/eeprom/painter/sh1106/qp_sh1106.h
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
// Copyright 2023 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#include "gpio.h"
|
||||
#include "qp_internal.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter SH1106 configurables (add to your keyboard's config.h)
|
||||
|
||||
#if defined(QUANTUM_PAINTER_SH1106_SPI_ENABLE) && !defined(SH1106_NUM_SPI_DEVICES)
|
||||
/**
|
||||
* @def This controls the maximum number of SPI SH1106 devices that Quantum Painter can communicate with at any one time.
|
||||
* Increasing this number allows for multiple displays to be used.
|
||||
*/
|
||||
# define SH1106_NUM_SPI_DEVICES 1
|
||||
#else
|
||||
# define SH1106_NUM_SPI_DEVICES 0
|
||||
#endif
|
||||
|
||||
#if defined(QUANTUM_PAINTER_SH1106_I2C_ENABLE) && !defined(SH1106_NUM_I2C_DEVICES)
|
||||
/**
|
||||
* @def This controls the maximum number of I2C SH1106 devices that Quantum Painter can communicate with at any one time.
|
||||
* Increasing this number allows for multiple displays to be used.
|
||||
*/
|
||||
# define SH1106_NUM_I2C_DEVICES 1
|
||||
#else
|
||||
# define SH1106_NUM_I2C_DEVICES 0
|
||||
#endif
|
||||
|
||||
#define SH1106_NUM_DEVICES ((SH1106_NUM_SPI_DEVICES) + (SH1106_NUM_I2C_DEVICES))
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter SH1106 device factories
|
||||
|
||||
#ifdef QUANTUM_PAINTER_SH1106_SPI_ENABLE
|
||||
|
||||
/**
|
||||
* Factory method for an SH1106 SPI LCD device.
|
||||
*
|
||||
* @param panel_width[in] the width of the display in pixels (usually 128)
|
||||
* @param panel_height[in] the height of the display in pixels (usually 64)
|
||||
* @param chip_select_pin[in] the GPIO pin used for SPI chip select
|
||||
* @param dc_pin[in] the GPIO pin used for D/C control
|
||||
* @param reset_pin[in] the GPIO pin used for RST
|
||||
* @param spi_divisor[in] the SPI divisor to use when communicating with the display
|
||||
* @param spi_mode[in] the SPI mode to use when communicating with the display
|
||||
* @return the device handle used with all drawing routines in Quantum Painter
|
||||
*/
|
||||
painter_device_t qp_sh1106_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode);
|
||||
|
||||
#endif // QUANTUM_PAINTER_SH1106_SPI_ENABLE
|
||||
|
||||
#ifdef QUANTUM_PAINTER_SH1106_I2C_ENABLE
|
||||
|
||||
/**
|
||||
* Factory method for an SH1106 I2C LCD device.
|
||||
*
|
||||
* @param panel_width[in] the width of the display in pixels (usually 128)
|
||||
* @param panel_height[in] the height of the display in pixels (usually 64)
|
||||
* @param i2c_address[in] the I2C address to use
|
||||
* @return the device handle used with all drawing routines in Quantum Painter
|
||||
*/
|
||||
painter_device_t qp_sh1106_make_i2c_device(uint16_t panel_width, uint16_t panel_height, uint8_t i2c_address);
|
||||
|
||||
#endif // QUANTUM_PAINTER_SH1106_I2C_ENABLE
|
||||
26
drivers/eeprom/painter/sh1106/qp_sh1106_opcodes.h
Normal file
26
drivers/eeprom/painter/sh1106/qp_sh1106_opcodes.h
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
// Copyright 2023 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#define SH1106_DISPLAY_ON 0xAF
|
||||
#define SH1106_DISPLAY_OFF 0xAE
|
||||
#define SH1106_SET_OSC_DIVFREQ 0xD5
|
||||
#define SH1106_SET_MUX_RATIO 0xA8
|
||||
#define SH1106_DISPLAY_OFFSET 0xD3
|
||||
#define SH1106_DISPLAY_START_LINE 0x40
|
||||
#define SH1106_SET_CHARGE_PUMP 0x8D
|
||||
#define SH1106_SET_SEGMENT_REMAP_NORMAL 0xA0
|
||||
#define SH1106_SET_SEGMENT_REMAP_INV 0xA1
|
||||
#define SH1106_COM_SCAN_DIR_INC 0xC0
|
||||
#define SH1106_COM_SCAN_DIR_DEC 0xC8
|
||||
#define SH1106_COM_PADS_HW_CFG 0xDA
|
||||
#define SH1106_SET_CONTRAST 0x81
|
||||
#define SH1106_SET_PRECHARGE_PERIOD 0xD9
|
||||
#define SH1106_VCOM_DESELECT_LEVEL 0xDB
|
||||
#define SH1106_ALL_ON_RESUME 0xA4
|
||||
#define SH1106_NON_INVERTING_DISPLAY 0xA6
|
||||
#define SH1106_DEACTIVATE_SCROLL 0x2E
|
||||
|
||||
#define SH1106_SETCOLUMN_LSB 0x00
|
||||
#define SH1106_SETCOLUMN_MSB 0x10
|
||||
#define SH1106_PAGE_ADDR 0xB0
|
||||
132
drivers/eeprom/painter/ssd1351/qp_ssd1351.c
Normal file
132
drivers/eeprom/painter/ssd1351/qp_ssd1351.c
Normal file
|
|
@ -0,0 +1,132 @@
|
|||
// Copyright 2021-2023 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "qp_internal.h"
|
||||
#include "qp_comms.h"
|
||||
#include "qp_ssd1351.h"
|
||||
#include "qp_ssd1351_opcodes.h"
|
||||
#include "qp_tft_panel.h"
|
||||
|
||||
#ifdef QUANTUM_PAINTER_SSD1351_SPI_ENABLE
|
||||
# include "qp_comms_spi.h"
|
||||
#endif // QUANTUM_PAINTER_SSD1351_SPI_ENABLE
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Common
|
||||
|
||||
// Driver storage
|
||||
tft_panel_dc_reset_painter_device_t ssd1351_drivers[SSD1351_NUM_DEVICES] = {0};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Initialization
|
||||
|
||||
__attribute__((weak)) bool qp_ssd1351_init(painter_device_t device, painter_rotation_t rotation) {
|
||||
tft_panel_dc_reset_painter_device_t *driver = (tft_panel_dc_reset_painter_device_t *)device;
|
||||
|
||||
// clang-format off
|
||||
const uint8_t ssd1351_init_sequence[] = {
|
||||
// Command, Delay, N, Data[N]
|
||||
SSD1351_COMMANDLOCK, 5, 1, 0x12,
|
||||
SSD1351_COMMANDLOCK, 5, 1, 0xB1,
|
||||
SSD1351_DISPLAYOFF, 5, 0,
|
||||
SSD1351_CLOCKDIV, 5, 1, 0xF1,
|
||||
SSD1351_MUXRATIO, 5, 1, 0x7F,
|
||||
SSD1351_DISPLAYOFFSET, 5, 1, 0x00,
|
||||
SSD1351_SETGPIO, 5, 1, 0x00,
|
||||
SSD1351_FUNCTIONSELECT, 5, 1, 0x01,
|
||||
SSD1351_PRECHARGE, 5, 1, 0x32,
|
||||
SSD1351_VCOMH, 5, 1, 0x05,
|
||||
SSD1351_NORMALDISPLAY, 5, 0,
|
||||
SSD1351_CONTRASTABC, 5, 3, 0xC8, 0x80, 0xC8,
|
||||
SSD1351_CONTRASTMASTER, 5, 1, 0x0F,
|
||||
SSD1351_SETVSL, 5, 3, 0xA0, 0xB5, 0x55,
|
||||
SSD1351_PRECHARGE2, 5, 1, 0x01,
|
||||
SSD1351_DISPLAYON, 5, 0,
|
||||
};
|
||||
// clang-format on
|
||||
qp_comms_bulk_command_sequence(device, ssd1351_init_sequence, sizeof(ssd1351_init_sequence));
|
||||
|
||||
// Configure the rotation (i.e. the ordering and direction of memory writes in GRAM)
|
||||
const uint8_t madctl[] = {
|
||||
[QP_ROTATION_0] = SSD1351_MADCTL_BGR | SSD1351_MADCTL_MY,
|
||||
[QP_ROTATION_90] = SSD1351_MADCTL_BGR | SSD1351_MADCTL_MX | SSD1351_MADCTL_MY | SSD1351_MADCTL_MV,
|
||||
[QP_ROTATION_180] = SSD1351_MADCTL_BGR | SSD1351_MADCTL_MX,
|
||||
[QP_ROTATION_270] = SSD1351_MADCTL_BGR | SSD1351_MADCTL_MV,
|
||||
};
|
||||
qp_comms_command_databyte(device, SSD1351_SETREMAP, madctl[rotation]);
|
||||
qp_comms_command_databyte(device, SSD1351_STARTLINE, (rotation == QP_ROTATION_0 || rotation == QP_ROTATION_90) ? driver->base.panel_height : 0);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Driver vtable
|
||||
|
||||
const tft_panel_dc_reset_painter_driver_vtable_t ssd1351_driver_vtable = {
|
||||
.base =
|
||||
{
|
||||
.init = qp_ssd1351_init,
|
||||
.power = qp_tft_panel_power,
|
||||
.clear = qp_tft_panel_clear,
|
||||
.flush = qp_tft_panel_flush,
|
||||
.pixdata = qp_tft_panel_pixdata,
|
||||
.viewport = qp_tft_panel_viewport,
|
||||
.palette_convert = qp_tft_panel_palette_convert_rgb565_swapped,
|
||||
.append_pixels = qp_tft_panel_append_pixels_rgb565,
|
||||
.append_pixdata = qp_tft_panel_append_pixdata,
|
||||
},
|
||||
.num_window_bytes = 1,
|
||||
.swap_window_coords = true,
|
||||
.opcodes =
|
||||
{
|
||||
.display_on = SSD1351_DISPLAYON,
|
||||
.display_off = SSD1351_DISPLAYOFF,
|
||||
.set_column_address = SSD1351_SETCOLUMN,
|
||||
.set_row_address = SSD1351_SETROW,
|
||||
.enable_writes = SSD1351_WRITERAM,
|
||||
},
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// SPI
|
||||
|
||||
#ifdef QUANTUM_PAINTER_SSD1351_SPI_ENABLE
|
||||
|
||||
// Factory function for creating a handle to the SSD1351 device
|
||||
painter_device_t qp_ssd1351_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode) {
|
||||
for (uint32_t i = 0; i < SSD1351_NUM_DEVICES; ++i) {
|
||||
tft_panel_dc_reset_painter_device_t *driver = &ssd1351_drivers[i];
|
||||
if (!driver->base.driver_vtable) {
|
||||
driver->base.driver_vtable = (const painter_driver_vtable_t *)&ssd1351_driver_vtable;
|
||||
driver->base.comms_vtable = (const painter_comms_vtable_t *)&spi_comms_with_dc_vtable;
|
||||
driver->base.panel_width = panel_width;
|
||||
driver->base.panel_height = panel_height;
|
||||
driver->base.rotation = QP_ROTATION_0;
|
||||
driver->base.offset_x = 0;
|
||||
driver->base.offset_y = 0;
|
||||
driver->base.native_bits_per_pixel = 16; // RGB565
|
||||
|
||||
// SPI and other pin configuration
|
||||
driver->base.comms_config = &driver->spi_dc_reset_config;
|
||||
driver->spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin;
|
||||
driver->spi_dc_reset_config.spi_config.divisor = spi_divisor;
|
||||
driver->spi_dc_reset_config.spi_config.lsb_first = false;
|
||||
driver->spi_dc_reset_config.spi_config.mode = spi_mode;
|
||||
driver->spi_dc_reset_config.dc_pin = dc_pin;
|
||||
driver->spi_dc_reset_config.reset_pin = reset_pin;
|
||||
driver->spi_dc_reset_config.command_params_uses_command_pin = false;
|
||||
|
||||
if (!qp_internal_register_device((painter_device_t)driver)) {
|
||||
memset(driver, 0, sizeof(tft_panel_dc_reset_painter_device_t));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return (painter_device_t)driver;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif // QUANTUM_PAINTER_SSD1351_SPI_ENABLE
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
36
drivers/eeprom/painter/ssd1351/qp_ssd1351.h
Normal file
36
drivers/eeprom/painter/ssd1351/qp_ssd1351.h
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
// Copyright 2021 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#include "gpio.h"
|
||||
#include "qp_internal.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter SSD1351 configurables (add to your keyboard's config.h)
|
||||
|
||||
#ifndef SSD1351_NUM_DEVICES
|
||||
/**
|
||||
* @def This controls the maximum number of SSD1351 devices that Quantum Painter can communicate with at any one time.
|
||||
* Increasing this number allows for multiple displays to be used.
|
||||
*/
|
||||
# define SSD1351_NUM_DEVICES 1
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter SSD1351 device factories
|
||||
|
||||
#ifdef QUANTUM_PAINTER_SSD1351_SPI_ENABLE
|
||||
/**
|
||||
* Factory method for an SSD1351 SPI OLED device.
|
||||
*
|
||||
* @param panel_width[in] the width of the display panel
|
||||
* @param panel_height[in] the height of the display panel
|
||||
* @param chip_select_pin[in] the GPIO pin used for SPI chip select
|
||||
* @param dc_pin[in] the GPIO pin used for D/C control
|
||||
* @param reset_pin[in] the GPIO pin used for RST
|
||||
* @param spi_divisor[in] the SPI divisor to use when communicating with the display
|
||||
* @param spi_mode[in] the SPI mode to use when communicating with the display
|
||||
* @return the device handle used with all drawing routines in Quantum Painter
|
||||
*/
|
||||
painter_device_t qp_ssd1351_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode);
|
||||
#endif // QUANTUM_PAINTER_SSD1351_SPI_ENABLE
|
||||
47
drivers/eeprom/painter/ssd1351/qp_ssd1351_opcodes.h
Normal file
47
drivers/eeprom/painter/ssd1351/qp_ssd1351_opcodes.h
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
// Copyright 2021 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter SSD1351 command opcodes
|
||||
|
||||
// System function commands
|
||||
#define SSD1351_SETCOLUMN 0x15
|
||||
#define SSD1351_SETROW 0x75
|
||||
#define SSD1351_WRITERAM 0x5C
|
||||
#define SSD1351_READRAM 0x5D
|
||||
#define SSD1351_SETREMAP 0xA0
|
||||
#define SSD1351_STARTLINE 0xA1
|
||||
#define SSD1351_DISPLAYOFFSET 0xA2
|
||||
#define SSD1351_DISPLAYALLOFF 0xA4
|
||||
#define SSD1351_DISPLAYALLON 0xA5
|
||||
#define SSD1351_NORMALDISPLAY 0xA6
|
||||
#define SSD1351_INVERTDISPLAY 0xA7
|
||||
#define SSD1351_FUNCTIONSELECT 0xAB
|
||||
#define SSD1351_DISPLAYOFF 0xAE
|
||||
#define SSD1351_DISPLAYON 0xAF
|
||||
#define SSD1351_PRECHARGE 0xB1
|
||||
#define SSD1351_DISPLAYENHANCE 0xB2
|
||||
#define SSD1351_CLOCKDIV 0xB3
|
||||
#define SSD1351_SETVSL 0xB4
|
||||
#define SSD1351_SETGPIO 0xB5
|
||||
#define SSD1351_PRECHARGE2 0xB6
|
||||
#define SSD1351_SETGRAY 0xB8
|
||||
#define SSD1351_USELUT 0xB9
|
||||
#define SSD1351_PRECHARGELEVEL 0xBB
|
||||
#define SSD1351_VCOMH 0xBE
|
||||
#define SSD1351_CONTRASTABC 0xC1
|
||||
#define SSD1351_CONTRASTMASTER 0xC7
|
||||
#define SSD1351_MUXRATIO 0xCA
|
||||
#define SSD1351_COMMANDLOCK 0xFD
|
||||
#define SSD1351_HORIZSCROLL 0x96
|
||||
#define SSD1351_STOPSCROLL 0x9E
|
||||
#define SSD1351_STARTSCROLL 0x9F
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// SETREMAP (MADCTL) Flags
|
||||
#define SSD1351_MADCTL_MY 0b00010000
|
||||
#define SSD1351_MADCTL_MX 0b00000010
|
||||
#define SSD1351_MADCTL_MV 0b00000001
|
||||
#define SSD1351_MADCTL_RGB 0b01100000
|
||||
#define SSD1351_MADCTL_BGR 0b01100100
|
||||
154
drivers/eeprom/painter/st77xx/qp_st7735.c
Normal file
154
drivers/eeprom/painter/st77xx/qp_st7735.c
Normal file
|
|
@ -0,0 +1,154 @@
|
|||
// Copyright 2021 Paul Cotter (@gr1mr3aver)
|
||||
// Copyright 2021-2023 Nick Brassel (@tzarc)
|
||||
// Copyright 2022 David Hoelscher (@customMK)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "qp_internal.h"
|
||||
#include "qp_comms.h"
|
||||
#include "qp_st7735.h"
|
||||
#include "qp_st77xx_opcodes.h"
|
||||
#include "qp_st7735_opcodes.h"
|
||||
#include "qp_tft_panel.h"
|
||||
|
||||
#ifdef QUANTUM_PAINTER_ST7735_SPI_ENABLE
|
||||
# include "qp_comms_spi.h"
|
||||
#endif // QUANTUM_PAINTER_ST7735_SPI_ENABLE
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Common
|
||||
|
||||
// Driver storage
|
||||
tft_panel_dc_reset_painter_device_t st7735_drivers[ST7735_NUM_DEVICES] = {0};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Automatic viewport offsets
|
||||
|
||||
#ifndef ST7735_NO_AUTOMATIC_OFFSETS
|
||||
static inline void st7735_automatic_viewport_offsets(painter_device_t device, painter_rotation_t rotation) {
|
||||
painter_driver_t *driver = (painter_driver_t *)device;
|
||||
|
||||
// clang-format off
|
||||
const struct {
|
||||
uint16_t offset_x;
|
||||
uint16_t offset_y;
|
||||
} rotation_offsets_80x160[] = {
|
||||
[QP_ROTATION_0] = { .offset_x = 24, .offset_y = 0 },
|
||||
[QP_ROTATION_90] = { .offset_x = 0, .offset_y = 24 },
|
||||
[QP_ROTATION_180] = { .offset_x = 24, .offset_y = 0 },
|
||||
[QP_ROTATION_270] = { .offset_x = 0, .offset_y = 24 },
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
if (driver->panel_width == 80 && driver->panel_height == 160) {
|
||||
driver->offset_x = rotation_offsets_80x160[rotation].offset_x;
|
||||
driver->offset_y = rotation_offsets_80x160[rotation].offset_y;
|
||||
}
|
||||
}
|
||||
#endif // ST7735_NO_AUTOMATIC_OFFSETS
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Initialization
|
||||
|
||||
__attribute__((weak)) bool qp_st7735_init(painter_device_t device, painter_rotation_t rotation) {
|
||||
// clang-format off
|
||||
const uint8_t st7735_init_sequence[] = {
|
||||
// Command, Delay, N, Data[N]
|
||||
ST77XX_CMD_RESET, 120, 0,
|
||||
ST77XX_CMD_SLEEP_OFF, 5, 0,
|
||||
ST77XX_SET_PIX_FMT, 0, 1, 0x55,
|
||||
ST77XX_CMD_INVERT_OFF, 0, 0,
|
||||
ST77XX_CMD_NORMAL_ON, 0, 0,
|
||||
ST7735_SET_PGAMMA, 0, 16, 0x02, 0x1C, 0x07, 0x12, 0x37, 0x32, 0x29, 0x2D, 0x29, 0x25, 0x2B, 0x39, 0x00, 0x01, 0x03, 0x10,
|
||||
ST7735_SET_NGAMMA, 0, 16, 0x03, 0x1D, 0x07, 0x06, 0x2E, 0x2C, 0x29, 0x2D, 0x2E, 0x2E, 0x37, 0x3F, 0x00, 0x00, 0x02, 0x10,
|
||||
ST77XX_CMD_DISPLAY_ON, 20, 0
|
||||
};
|
||||
// clang-format on
|
||||
qp_comms_bulk_command_sequence(device, st7735_init_sequence, sizeof(st7735_init_sequence));
|
||||
|
||||
// Configure the rotation (i.e. the ordering and direction of memory writes in GRAM)
|
||||
const uint8_t madctl[] = {
|
||||
[QP_ROTATION_0] = ST77XX_MADCTL_BGR,
|
||||
[QP_ROTATION_90] = ST77XX_MADCTL_BGR | ST77XX_MADCTL_MX | ST77XX_MADCTL_MV,
|
||||
[QP_ROTATION_180] = ST77XX_MADCTL_BGR | ST77XX_MADCTL_MX | ST77XX_MADCTL_MY,
|
||||
[QP_ROTATION_270] = ST77XX_MADCTL_BGR | ST77XX_MADCTL_MV | ST77XX_MADCTL_MY,
|
||||
};
|
||||
qp_comms_command_databyte(device, ST77XX_SET_MADCTL, madctl[rotation]);
|
||||
|
||||
#ifndef ST7735_NO_AUTOMATIC_VIEWPORT_OFFSETS
|
||||
st7735_automatic_viewport_offsets(device, rotation);
|
||||
#endif // ST7735_NO_AUTOMATIC_VIEWPORT_OFFSETS
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Driver vtable
|
||||
|
||||
const tft_panel_dc_reset_painter_driver_vtable_t st7735_driver_vtable = {
|
||||
.base =
|
||||
{
|
||||
.init = qp_st7735_init,
|
||||
.power = qp_tft_panel_power,
|
||||
.clear = qp_tft_panel_clear,
|
||||
.flush = qp_tft_panel_flush,
|
||||
.pixdata = qp_tft_panel_pixdata,
|
||||
.viewport = qp_tft_panel_viewport,
|
||||
.palette_convert = qp_tft_panel_palette_convert_rgb565_swapped,
|
||||
.append_pixels = qp_tft_panel_append_pixels_rgb565,
|
||||
.append_pixdata = qp_tft_panel_append_pixdata,
|
||||
},
|
||||
.num_window_bytes = 2,
|
||||
.swap_window_coords = false,
|
||||
.opcodes =
|
||||
{
|
||||
.display_on = ST77XX_CMD_DISPLAY_ON,
|
||||
.display_off = ST77XX_CMD_DISPLAY_OFF,
|
||||
.set_column_address = ST77XX_SET_COL_ADDR,
|
||||
.set_row_address = ST77XX_SET_ROW_ADDR,
|
||||
.enable_writes = ST77XX_SET_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// SPI
|
||||
|
||||
#ifdef QUANTUM_PAINTER_ST7735_SPI_ENABLE
|
||||
|
||||
// Factory function for creating a handle to the ST7735 device
|
||||
painter_device_t qp_st7735_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode) {
|
||||
for (uint32_t i = 0; i < ST7735_NUM_DEVICES; ++i) {
|
||||
tft_panel_dc_reset_painter_device_t *driver = &st7735_drivers[i];
|
||||
if (!driver->base.driver_vtable) {
|
||||
driver->base.driver_vtable = (const painter_driver_vtable_t *)&st7735_driver_vtable;
|
||||
driver->base.comms_vtable = (const painter_comms_vtable_t *)&spi_comms_with_dc_vtable;
|
||||
driver->base.panel_width = panel_width;
|
||||
driver->base.panel_height = panel_height;
|
||||
driver->base.rotation = QP_ROTATION_0;
|
||||
driver->base.offset_x = 0;
|
||||
driver->base.offset_y = 0;
|
||||
driver->base.native_bits_per_pixel = 16; // RGB565
|
||||
|
||||
// SPI and other pin configuration
|
||||
driver->base.comms_config = &driver->spi_dc_reset_config;
|
||||
driver->spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin;
|
||||
driver->spi_dc_reset_config.spi_config.divisor = spi_divisor;
|
||||
driver->spi_dc_reset_config.spi_config.lsb_first = false;
|
||||
driver->spi_dc_reset_config.spi_config.mode = spi_mode;
|
||||
driver->spi_dc_reset_config.dc_pin = dc_pin;
|
||||
driver->spi_dc_reset_config.reset_pin = reset_pin;
|
||||
driver->spi_dc_reset_config.command_params_uses_command_pin = false;
|
||||
|
||||
if (!qp_internal_register_device((painter_device_t)driver)) {
|
||||
memset(driver, 0, sizeof(tft_panel_dc_reset_painter_device_t));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return (painter_device_t)driver;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif // QUANTUM_PAINTER_ST7735_SPI_ENABLE
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
44
drivers/eeprom/painter/st77xx/qp_st7735.h
Normal file
44
drivers/eeprom/painter/st77xx/qp_st7735.h
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
// Copyright 2021 Paul Cotter (@gr1mr3aver)
|
||||
// Copyright 2021 Nick Brassel (@tzarc)
|
||||
// Copyright 2022 David Hoelscher (@customMK)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#include "gpio.h"
|
||||
#include "qp_internal.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter ST7735 configurables (add to your keyboard's config.h)
|
||||
|
||||
#ifndef ST7735_NUM_DEVICES
|
||||
/**
|
||||
* @def This controls the maximum number of ST7735 devices that Quantum Painter can communicate with at any one time.
|
||||
* Increasing this number allows for multiple displays to be used.
|
||||
*/
|
||||
# define ST7735_NUM_DEVICES 1
|
||||
#endif
|
||||
|
||||
// Additional configuration options to be copied to your keyboard's config.h (don't change here):
|
||||
|
||||
// If you know exactly which offsets should be used on your panel with respect to selected rotation, then this config
|
||||
// option allows you to save some flash space -- you'll need to invoke qp_set_viewport_offsets() instead from your keyboard.
|
||||
// #define ST7735_NO_AUTOMATIC_VIEWPORT_OFFSETS
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter ST7735 device factories
|
||||
|
||||
#ifdef QUANTUM_PAINTER_ST7735_SPI_ENABLE
|
||||
/**
|
||||
* Factory method for an ST7735 SPI LCD device.
|
||||
*
|
||||
* @param panel_width[in] the width of the display panel
|
||||
* @param panel_height[in] the height of the display panel
|
||||
* @param chip_select_pin[in] the GPIO pin used for SPI chip select
|
||||
* @param dc_pin[in] the GPIO pin used for D/C control
|
||||
* @param reset_pin[in] the GPIO pin used for RST
|
||||
* @param spi_divisor[in] the SPI divisor to use when communicating with the display
|
||||
* @param spi_mode[in] the SPI mode to use when communicating with the display
|
||||
* @return the device handle used with all drawing routines in Quantum Painter
|
||||
*/
|
||||
painter_device_t qp_st7735_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode);
|
||||
#endif // QUANTUM_PAINTER_ST7735_SPI_ENABLE
|
||||
30
drivers/eeprom/painter/st77xx/qp_st7735_opcodes.h
Normal file
30
drivers/eeprom/painter/st77xx/qp_st7735_opcodes.h
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
// Copyright 2022 David Hoelscher (@customMK)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter ST7735 additional command opcodes
|
||||
|
||||
// Panel Function Commands
|
||||
#define ST7735_SET_FRAME_RATE_CTL_1 0xB1 // Set frame rate control 1
|
||||
#define ST7735_SET_FRAME_RATE_CTL_2 0xB2 // Set frame rate control 2
|
||||
#define ST7735_SET_FRAME_RATE_CTL_3 0xB3 // Set frame rate control 3
|
||||
#define ST7735_SET_INVERSION_CTL 0xB4 // Set inversion mode control
|
||||
#define ST7735_SET_DISPLAY_CTL 0xB6 // Set display control 5
|
||||
#define ST7735_SET_POWER_CTL_1 0xC0 // Set GVDD
|
||||
#define ST7735_SET_POWER_CTL_2 0xC1 // Set VGH and VGL
|
||||
#define ST7735_SET_POWER_CTL_3 0xC2 // Set normal mode op amp current
|
||||
#define ST7735_SET_POWER_CTL_4 0xC3 // Set idle mode op amp current
|
||||
#define ST7735_SET_POWER_CTL_5 0xC4 // Set partial mode op amp current
|
||||
#define ST7735_SET_VCOM_CTL 0xC5 // Set VCOM voltages
|
||||
#define ST7735_SET_VCOM_OFFSET_CTL 0xC7 // Set VCOM offset ctl
|
||||
#define ST7735_SET_LCD_ID 0xD1 // Set LCD module version
|
||||
#define ST7735_SET_PROJECT_ID 0xD2 // Set product project ID
|
||||
#define ST7735_SET_POWER_CTL_6 0xFC // Set partial+idle op amp current
|
||||
#define ST7735_SET_NVMEM_CTL_STATUS 0xD9 // EEPROM Control Status
|
||||
#define ST7735_SET_NVMEM_READ_CMD 0xCC // EEPROM Read Command
|
||||
#define ST7735_SET_NVMEM_WRITE_CMD 0xDF // EEPROM Write Command
|
||||
#define ST7735_SET_PGAMMA 0xE0 // Set positive gamma
|
||||
#define ST7735_SET_NGAMMA 0xE1 // Set negative gamma
|
||||
#define ST7735_SET_EXTENSION_ENABLE 0xF0 // Enable extension command
|
||||
#define ST7735_SET_VCOM_DELAY 0xFF // Set VCOM delay time
|
||||
151
drivers/eeprom/painter/st77xx/qp_st7789.c
Normal file
151
drivers/eeprom/painter/st77xx/qp_st7789.c
Normal file
|
|
@ -0,0 +1,151 @@
|
|||
// Copyright 2021 Paul Cotter (@gr1mr3aver)
|
||||
// Copyright 2021-2023 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "qp_internal.h"
|
||||
#include "qp_comms.h"
|
||||
#include "qp_st7789.h"
|
||||
#include "qp_st77xx_opcodes.h"
|
||||
#include "qp_st7789_opcodes.h"
|
||||
#include "qp_tft_panel.h"
|
||||
|
||||
#ifdef QUANTUM_PAINTER_ST7789_SPI_ENABLE
|
||||
# include "qp_comms_spi.h"
|
||||
#endif // QUANTUM_PAINTER_ST7789_SPI_ENABLE
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Common
|
||||
|
||||
// Driver storage
|
||||
tft_panel_dc_reset_painter_device_t st7789_drivers[ST7789_NUM_DEVICES] = {0};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Automatic viewport offsets
|
||||
|
||||
#ifndef ST7789_NO_AUTOMATIC_OFFSETS
|
||||
static inline void st7789_automatic_viewport_offsets(painter_device_t device, painter_rotation_t rotation) {
|
||||
painter_driver_t *driver = (painter_driver_t *)device;
|
||||
|
||||
// clang-format off
|
||||
const struct {
|
||||
uint16_t offset_x;
|
||||
uint16_t offset_y;
|
||||
} rotation_offsets_240x240[] = {
|
||||
[QP_ROTATION_0] = { .offset_x = 0, .offset_y = 0 },
|
||||
[QP_ROTATION_90] = { .offset_x = 0, .offset_y = 0 },
|
||||
[QP_ROTATION_180] = { .offset_x = 0, .offset_y = 80 },
|
||||
[QP_ROTATION_270] = { .offset_x = 80, .offset_y = 0 },
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
if (driver->panel_width == 240 && driver->panel_height == 240) {
|
||||
driver->offset_x = rotation_offsets_240x240[rotation].offset_x;
|
||||
driver->offset_y = rotation_offsets_240x240[rotation].offset_y;
|
||||
}
|
||||
}
|
||||
#endif // ST7789_NO_AUTOMATIC_OFFSETS
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Initialization
|
||||
|
||||
__attribute__((weak)) bool qp_st7789_init(painter_device_t device, painter_rotation_t rotation) {
|
||||
// clang-format off
|
||||
const uint8_t st7789_init_sequence[] = {
|
||||
// Command, Delay, N, Data[N]
|
||||
ST77XX_CMD_RESET, 120, 0,
|
||||
ST77XX_CMD_SLEEP_OFF, 5, 0,
|
||||
ST77XX_SET_PIX_FMT, 0, 1, 0x55,
|
||||
ST77XX_CMD_INVERT_ON, 0, 0,
|
||||
ST77XX_CMD_NORMAL_ON, 0, 0,
|
||||
ST77XX_CMD_DISPLAY_ON, 20, 0
|
||||
};
|
||||
// clang-format on
|
||||
qp_comms_bulk_command_sequence(device, st7789_init_sequence, sizeof(st7789_init_sequence));
|
||||
|
||||
// Configure the rotation (i.e. the ordering and direction of memory writes in GRAM)
|
||||
const uint8_t madctl[] = {
|
||||
[QP_ROTATION_0] = ST77XX_MADCTL_RGB,
|
||||
[QP_ROTATION_90] = ST77XX_MADCTL_RGB | ST77XX_MADCTL_MX | ST77XX_MADCTL_MV,
|
||||
[QP_ROTATION_180] = ST77XX_MADCTL_RGB | ST77XX_MADCTL_MX | ST77XX_MADCTL_MY,
|
||||
[QP_ROTATION_270] = ST77XX_MADCTL_RGB | ST77XX_MADCTL_MV | ST77XX_MADCTL_MY,
|
||||
};
|
||||
qp_comms_command_databyte(device, ST77XX_SET_MADCTL, madctl[rotation]);
|
||||
|
||||
#ifndef ST7789_NO_AUTOMATIC_VIEWPORT_OFFSETS
|
||||
st7789_automatic_viewport_offsets(device, rotation);
|
||||
#endif // ST7789_NO_AUTOMATIC_VIEWPORT_OFFSETS
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Driver vtable
|
||||
|
||||
const tft_panel_dc_reset_painter_driver_vtable_t st7789_driver_vtable = {
|
||||
.base =
|
||||
{
|
||||
.init = qp_st7789_init,
|
||||
.power = qp_tft_panel_power,
|
||||
.clear = qp_tft_panel_clear,
|
||||
.flush = qp_tft_panel_flush,
|
||||
.pixdata = qp_tft_panel_pixdata,
|
||||
.viewport = qp_tft_panel_viewport,
|
||||
.palette_convert = qp_tft_panel_palette_convert_rgb565_swapped,
|
||||
.append_pixels = qp_tft_panel_append_pixels_rgb565,
|
||||
.append_pixdata = qp_tft_panel_append_pixdata,
|
||||
},
|
||||
.num_window_bytes = 2,
|
||||
.swap_window_coords = false,
|
||||
.opcodes =
|
||||
{
|
||||
.display_on = ST77XX_CMD_DISPLAY_ON,
|
||||
.display_off = ST77XX_CMD_DISPLAY_OFF,
|
||||
.set_column_address = ST77XX_SET_COL_ADDR,
|
||||
.set_row_address = ST77XX_SET_ROW_ADDR,
|
||||
.enable_writes = ST77XX_SET_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// SPI
|
||||
|
||||
#ifdef QUANTUM_PAINTER_ST7789_SPI_ENABLE
|
||||
|
||||
// Factory function for creating a handle to the ST7789 device
|
||||
painter_device_t qp_st7789_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode) {
|
||||
for (uint32_t i = 0; i < ST7789_NUM_DEVICES; ++i) {
|
||||
tft_panel_dc_reset_painter_device_t *driver = &st7789_drivers[i];
|
||||
if (!driver->base.driver_vtable) {
|
||||
driver->base.driver_vtable = (const painter_driver_vtable_t *)&st7789_driver_vtable;
|
||||
driver->base.comms_vtable = (const painter_comms_vtable_t *)&spi_comms_with_dc_vtable;
|
||||
driver->base.panel_width = panel_width;
|
||||
driver->base.panel_height = panel_height;
|
||||
driver->base.rotation = QP_ROTATION_0;
|
||||
driver->base.offset_x = 0;
|
||||
driver->base.offset_y = 0;
|
||||
driver->base.native_bits_per_pixel = 16; // RGB565
|
||||
|
||||
// SPI and other pin configuration
|
||||
driver->base.comms_config = &driver->spi_dc_reset_config;
|
||||
driver->spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin;
|
||||
driver->spi_dc_reset_config.spi_config.divisor = spi_divisor;
|
||||
driver->spi_dc_reset_config.spi_config.lsb_first = false;
|
||||
driver->spi_dc_reset_config.spi_config.mode = spi_mode;
|
||||
driver->spi_dc_reset_config.dc_pin = dc_pin;
|
||||
driver->spi_dc_reset_config.reset_pin = reset_pin;
|
||||
driver->spi_dc_reset_config.command_params_uses_command_pin = false;
|
||||
|
||||
if (!qp_internal_register_device((painter_device_t)driver)) {
|
||||
memset(driver, 0, sizeof(tft_panel_dc_reset_painter_device_t));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return (painter_device_t)driver;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif // QUANTUM_PAINTER_ST7789_SPI_ENABLE
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
43
drivers/eeprom/painter/st77xx/qp_st7789.h
Normal file
43
drivers/eeprom/painter/st77xx/qp_st7789.h
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
// Copyright 2021 Paul Cotter (@gr1mr3aver)
|
||||
// Copyright 2021 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#include "gpio.h"
|
||||
#include "qp_internal.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter ST7789 configurables (add to your keyboard's config.h)
|
||||
|
||||
#ifndef ST7789_NUM_DEVICES
|
||||
/**
|
||||
* @def This controls the maximum number of ST7789 devices that Quantum Painter can communicate with at any one time.
|
||||
* Increasing this number allows for multiple displays to be used.
|
||||
*/
|
||||
# define ST7789_NUM_DEVICES 1
|
||||
#endif
|
||||
|
||||
// Additional configuration options to be copied to your keyboard's config.h (don't change here):
|
||||
|
||||
// If you know exactly which offsets should be used on your panel with respect to selected rotation, then this config
|
||||
// option allows you to save some flash space -- you'll need to invoke qp_set_viewport_offsets() instead from your keyboard.
|
||||
// #define ST7789_NO_AUTOMATIC_VIEWPORT_OFFSETS
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter ST7789 device factories
|
||||
|
||||
#ifdef QUANTUM_PAINTER_ST7789_SPI_ENABLE
|
||||
/**
|
||||
* Factory method for an ST7789 SPI LCD device.
|
||||
*
|
||||
* @param panel_width[in] the width of the display panel
|
||||
* @param panel_height[in] the height of the display panel
|
||||
* @param chip_select_pin[in] the GPIO pin used for SPI chip select
|
||||
* @param dc_pin[in] the GPIO pin used for D/C control
|
||||
* @param reset_pin[in] the GPIO pin used for RST
|
||||
* @param spi_divisor[in] the SPI divisor to use when communicating with the display
|
||||
* @param spi_mode[in] the SPI mode to use when communicating with the display
|
||||
* @return the device handle used with all drawing routines in Quantum Painter
|
||||
*/
|
||||
painter_device_t qp_st7789_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode);
|
||||
#endif // QUANTUM_PAINTER_ST7789_SPI_ENABLE
|
||||
63
drivers/eeprom/painter/st77xx/qp_st7789_opcodes.h
Normal file
63
drivers/eeprom/painter/st77xx/qp_st7789_opcodes.h
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
// Copyright 2021 Paul Cotter (@gr1mr3aver)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter ST7789 additional command opcodes
|
||||
|
||||
// System function commands
|
||||
#define ST7789_GET_SELF_DIAG 0x0F // Get self-diagnostic result
|
||||
#define ST7789_SET_VERT_SCRL 0x33 // Set vertical scroll definition
|
||||
#define ST7789_SET_VERT_SCRL_ADDR 0x37 // SEt Vertical scroll start address
|
||||
#define ST7789_SET_MEM_CONT 0x3C // Memory Write continue
|
||||
#define ST7789_GET_MEM_CONT 0x3E // Memory Read continue
|
||||
#define ST7789_SET_TEAR_LINE 0x44 // Set tear scanline
|
||||
#define ST7789_GET_TEAR_LINE 0x45 // Get tear scanline
|
||||
#define ST7789_SET_BRIGHTNESS 0x51 // Set display brightness
|
||||
#define ST7789_GET_BRIGHTNESS 0x52 // Get display brightness
|
||||
#define ST7789_SET_CTRL 0x53 // Set CTRL display
|
||||
#define ST7789_GET_CTRL 0x54 // Get CTRL display value
|
||||
#define ST7789_SET_CAB_COLOR 0x55 // Set content adaptive brightness control and color enhancement
|
||||
#define ST7789_GET_CAB_COLOR 0x56 // Get content adaptive brightness control and color enhancement
|
||||
#define ST7789_SET_CAB_BRIGHTNESS 0x5E // Set content adaptive minimum brightness
|
||||
#define ST7789_GET_CAB_BRIGHTNESS 0x5F // Get content adaptive minimum brightness
|
||||
#define ST7789_GET_ABC_SELF_DIAG 0x68 // Get Auto brightness control self diagnostics
|
||||
|
||||
// Panel Function Commands
|
||||
#define ST7789_SET_RAM_CTL 0xB0 // Set RAM control
|
||||
#define ST7789_SET_RGB_CTL 0xB1 // Set RGB control
|
||||
#define ST7789_SET_PORCH_CTL 0xB2 // Set Porch control
|
||||
#define ST7789_SET_FRAME_RATE_CTL_1 0xB3 // Set frame rate control 1
|
||||
#define ST7789_SET_PARTIAL_CTL 0xB5 // Set Partial control
|
||||
#define ST7789_SET_GATE_CTL 0xB7 // Set gate control
|
||||
#define ST7789_SET_GATE_ON_TIMING 0xB8 // Set gate on timing adjustment
|
||||
#define ST7789_SET_DIGITAL_GAMMA_ON 0xBA // Enable digital gamma
|
||||
#define ST7789_SET_VCOM 0xBB // Set VCOM
|
||||
#define ST7789_SET_POWER_SAVE 0xBC // Set power saving mode
|
||||
#define ST7789_SET_DISP_OFF_POWER 0xBD // Set display off power saving
|
||||
#define ST7789_SET_LCM_CTL 0xC0 // Set LCM control
|
||||
#define ST7789_SET_IDS 0xC1 // Set IDs
|
||||
#define ST7789_SET_VDV_VRH_ON 0xC2 // Set VDV and VRH command enable
|
||||
#define ST7789_SET_VRH 0xC3 // Set VRH
|
||||
#define ST7789_SET_VDV 0xC4 // Set VDV
|
||||
#define ST7789_SET_VCOM_OFFSET 0xC5 // Set VCOM offset ctl
|
||||
#define ST7789_SET_FRAME_RATE_CTL_2 0xC6 // Set frame rate control 2
|
||||
#define ST7789_SET_CABC_CTL 0xC7 // Set CABC Control
|
||||
#define ST7789_GET_REG_1 0xC8 // Get register value selection1
|
||||
#define ST7789_GET_REG_2 0xCA // Get register value selection2
|
||||
#define ST7789_SET_PWM_FREQ 0xCC // Set PWM frequency
|
||||
#define ST7789_SET_POWER_CTL_1 0xD0 // Set power ctl 1
|
||||
#define ST7789_SET_VAP_VAN_ON 0xD2 // Enable VAP/VAN signal output
|
||||
#define ST7789_SET_CMD2_ENABLE 0xDF // Enable command 2
|
||||
#define ST7789_SET_PGAMMA 0xE0 // Set positive gamma
|
||||
#define ST7789_SET_NGAMMA 0xE1 // Set negative gamma
|
||||
#define ST7789_SET_DIGITAL_GAMMA_RED 0xE2 // Set digital gamma lookup table for red
|
||||
#define ST7789_SET_DIGITAL_GAMMA_BLUE 0xE3 // Get digital gamma lookup table for blue
|
||||
#define ST7789_SET_GATE_CTL_2 0xE4 // Set gate control 2
|
||||
#define ST7789_SET_SPI2_ENABLE 0xE7 // Enable SPI2
|
||||
#define ST7789_SET_POWER_CTL_2 0xE8 // Set power ctl 2
|
||||
#define ST7789_SET_EQ_TIME_CTL 0xE9 // Set equalize time control
|
||||
#define ST7789_SET_PROG_CTL 0xEC // Set program control
|
||||
#define ST7789_SET_PROG_MODE_ENABLE 0xFA // Set program mode enable
|
||||
#define ST7789_SET_NVMEM 0xFC // Set NVMEM data
|
||||
#define ST7789_SET_PROG_ACTION 0xFE // Set program action
|
||||
50
drivers/eeprom/painter/st77xx/qp_st77xx_opcodes.h
Normal file
50
drivers/eeprom/painter/st77xx/qp_st77xx_opcodes.h
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
// Copyright 2021 Paul Cotter (@gr1mr3aver)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter ST77XX command opcodes
|
||||
|
||||
// System function commands
|
||||
#define ST77XX_CMD_NOP 0x00 // No operation
|
||||
#define ST77XX_CMD_RESET 0x01 // Software reset
|
||||
#define ST77XX_GET_ID_INFO 0x04 // Get ID information
|
||||
#define ST77XX_GET_STATUS 0x09 // Get status
|
||||
#define ST77XX_GET_PWR_MODE 0x0A // Get power mode
|
||||
#define ST77XX_GET_MADCTL 0x0B // Get mem access ctl
|
||||
#define ST77XX_GET_PIX_FMT 0x0C // Get pixel format
|
||||
#define ST77XX_GET_IMG_FMT 0x0D // Get image format
|
||||
#define ST77XX_GET_SIG_MODE 0x0E // Get signal mode
|
||||
#define ST77XX_CMD_SLEEP_ON 0x10 // Enter sleep mode
|
||||
#define ST77XX_CMD_SLEEP_OFF 0x11 // Exist sleep mode
|
||||
#define ST77XX_CMD_PARTIAL_ON 0x12 // Enter partial mode
|
||||
#define ST77XX_CMD_NORMAL_ON 0x13 // Exit partial mode
|
||||
#define ST77XX_CMD_INVERT_OFF 0x20 // Exit inverted mode
|
||||
#define ST77XX_CMD_INVERT_ON 0x21 // Enter inverted mode
|
||||
#define ST77XX_SET_GAMMA 0x26 // Set gamma params
|
||||
#define ST77XX_CMD_DISPLAY_OFF 0x28 // Disable display
|
||||
#define ST77XX_CMD_DISPLAY_ON 0x29 // Enable display
|
||||
#define ST77XX_SET_COL_ADDR 0x2A // Set column address
|
||||
#define ST77XX_SET_ROW_ADDR 0x2B // Set page (row) address
|
||||
#define ST77XX_SET_MEM 0x2C // Set memory
|
||||
#define ST77XX_GET_MEM 0x2E // Get memory
|
||||
#define ST77XX_SET_PARTIAL_AREA 0x30 // Set partial area
|
||||
#define ST77XX_CMD_TEARING_OFF 0x34 // Tearing line disabled
|
||||
#define ST77XX_CMD_TEARING_ON 0x35 // Tearing line enabled
|
||||
#define ST77XX_SET_MADCTL 0x36 // Set mem access ctl
|
||||
#define ST77XX_CMD_IDLE_OFF 0x38 // Exit idle mode
|
||||
#define ST77XX_CMD_IDLE_ON 0x39 // Enter idle mode
|
||||
#define ST77XX_SET_PIX_FMT 0x3A // Set pixel format
|
||||
#define ST77XX_GET_ID1 0xDA // Get ID1
|
||||
#define ST77XX_GET_ID2 0xDB // Get ID2
|
||||
#define ST77XX_GET_ID3 0xDC // Get ID3
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// MADCTL Flags
|
||||
#define ST77XX_MADCTL_MY 0b10000000
|
||||
#define ST77XX_MADCTL_MX 0b01000000
|
||||
#define ST77XX_MADCTL_MV 0b00100000
|
||||
#define ST77XX_MADCTL_ML 0b00010000
|
||||
#define ST77XX_MADCTL_RGB 0b00000000
|
||||
#define ST77XX_MADCTL_BGR 0b00001000
|
||||
#define ST77XX_MADCTL_MH 0b00000100
|
||||
133
drivers/eeprom/painter/tft_panel/qp_tft_panel.c
Normal file
133
drivers/eeprom/painter/tft_panel/qp_tft_panel.c
Normal file
|
|
@ -0,0 +1,133 @@
|
|||
// Copyright 2021 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "color.h"
|
||||
#include "qp_internal.h"
|
||||
#include "qp_comms.h"
|
||||
#include "qp_draw.h"
|
||||
#include "qp_tft_panel.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Quantum Painter API implementations
|
||||
|
||||
// Power control
|
||||
bool qp_tft_panel_power(painter_device_t device, bool power_on) {
|
||||
painter_driver_t * driver = (painter_driver_t *)device;
|
||||
tft_panel_dc_reset_painter_driver_vtable_t *vtable = (tft_panel_dc_reset_painter_driver_vtable_t *)driver->driver_vtable;
|
||||
qp_comms_command(device, power_on ? vtable->opcodes.display_on : vtable->opcodes.display_off);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Screen clear
|
||||
bool qp_tft_panel_clear(painter_device_t device) {
|
||||
painter_driver_t *driver = (painter_driver_t *)device;
|
||||
driver->driver_vtable->init(device, driver->rotation); // Re-init the LCD
|
||||
return true;
|
||||
}
|
||||
|
||||
// Screen flush
|
||||
bool qp_tft_panel_flush(painter_device_t device) {
|
||||
// No-op, as there's no framebuffer in RAM for this device.
|
||||
return true;
|
||||
}
|
||||
|
||||
// Viewport to draw to
|
||||
bool qp_tft_panel_viewport(painter_device_t device, uint16_t left, uint16_t top, uint16_t right, uint16_t bottom) {
|
||||
painter_driver_t * driver = (painter_driver_t *)device;
|
||||
tft_panel_dc_reset_painter_driver_vtable_t *vtable = (tft_panel_dc_reset_painter_driver_vtable_t *)driver->driver_vtable;
|
||||
|
||||
// Fix up the drawing location if required
|
||||
left += driver->offset_x;
|
||||
right += driver->offset_x;
|
||||
top += driver->offset_y;
|
||||
bottom += driver->offset_y;
|
||||
|
||||
// Check if we need to manually swap the window coordinates based on whether or not we're in a sideways rotation
|
||||
if (vtable->swap_window_coords && (driver->rotation == QP_ROTATION_90 || driver->rotation == QP_ROTATION_270)) {
|
||||
uint16_t temp;
|
||||
|
||||
temp = left;
|
||||
left = top;
|
||||
top = temp;
|
||||
|
||||
temp = right;
|
||||
right = bottom;
|
||||
bottom = temp;
|
||||
}
|
||||
|
||||
if (vtable->num_window_bytes == 1) {
|
||||
// Set up the x-window
|
||||
uint8_t xbuf[2] = {left & 0xFF, right & 0xFF};
|
||||
qp_comms_command_databuf(device, vtable->opcodes.set_column_address, xbuf, sizeof(xbuf));
|
||||
|
||||
// Set up the y-window
|
||||
uint8_t ybuf[2] = {top & 0xFF, bottom & 0xFF};
|
||||
qp_comms_command_databuf(device, vtable->opcodes.set_row_address, ybuf, sizeof(ybuf));
|
||||
} else if (vtable->num_window_bytes == 2) {
|
||||
// Set up the x-window
|
||||
uint8_t xbuf[4] = {left >> 8, left & 0xFF, right >> 8, right & 0xFF};
|
||||
qp_comms_command_databuf(device, vtable->opcodes.set_column_address, xbuf, sizeof(xbuf));
|
||||
|
||||
// Set up the y-window
|
||||
uint8_t ybuf[4] = {top >> 8, top & 0xFF, bottom >> 8, bottom & 0xFF};
|
||||
qp_comms_command_databuf(device, vtable->opcodes.set_row_address, ybuf, sizeof(ybuf));
|
||||
}
|
||||
|
||||
// Lock in the window
|
||||
qp_comms_command(device, vtable->opcodes.enable_writes);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Stream pixel data to the current write position in GRAM
|
||||
bool qp_tft_panel_pixdata(painter_device_t device, const void *pixel_data, uint32_t native_pixel_count) {
|
||||
painter_driver_t *driver = (painter_driver_t *)device;
|
||||
qp_comms_send(device, pixel_data, native_pixel_count * driver->native_bits_per_pixel / 8);
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Convert supplied palette entries into their native equivalents
|
||||
|
||||
bool qp_tft_panel_palette_convert_rgb565_swapped(painter_device_t device, int16_t palette_size, qp_pixel_t *palette) {
|
||||
for (int16_t i = 0; i < palette_size; ++i) {
|
||||
RGB rgb = hsv_to_rgb_nocie((HSV){palette[i].hsv888.h, palette[i].hsv888.s, palette[i].hsv888.v});
|
||||
uint16_t rgb565 = (((uint16_t)rgb.r) >> 3) << 11 | (((uint16_t)rgb.g) >> 2) << 5 | (((uint16_t)rgb.b) >> 3);
|
||||
palette[i].rgb565 = __builtin_bswap16(rgb565);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool qp_tft_panel_palette_convert_rgb888(painter_device_t device, int16_t palette_size, qp_pixel_t *palette) {
|
||||
for (int16_t i = 0; i < palette_size; ++i) {
|
||||
RGB rgb = hsv_to_rgb_nocie((HSV){palette[i].hsv888.h, palette[i].hsv888.s, palette[i].hsv888.v});
|
||||
palette[i].rgb888.r = rgb.r;
|
||||
palette[i].rgb888.g = rgb.g;
|
||||
palette[i].rgb888.b = rgb.b;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Append pixels to the target location, keyed by the pixel index
|
||||
|
||||
bool qp_tft_panel_append_pixels_rgb565(painter_device_t device, uint8_t *target_buffer, qp_pixel_t *palette, uint32_t pixel_offset, uint32_t pixel_count, uint8_t *palette_indices) {
|
||||
uint16_t *buf = (uint16_t *)target_buffer;
|
||||
for (uint32_t i = 0; i < pixel_count; ++i) {
|
||||
buf[pixel_offset + i] = palette[palette_indices[i]].rgb565;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool qp_tft_panel_append_pixels_rgb888(painter_device_t device, uint8_t *target_buffer, qp_pixel_t *palette, uint32_t pixel_offset, uint32_t pixel_count, uint8_t *palette_indices) {
|
||||
for (uint32_t i = 0; i < pixel_count; ++i) {
|
||||
target_buffer[(pixel_offset + i) * 3 + 0] = palette[palette_indices[i]].rgb888.r;
|
||||
target_buffer[(pixel_offset + i) * 3 + 1] = palette[palette_indices[i]].rgb888.g;
|
||||
target_buffer[(pixel_offset + i) * 3 + 2] = palette[palette_indices[i]].rgb888.b;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool qp_tft_panel_append_pixdata(painter_device_t device, uint8_t *target_buffer, uint32_t pixdata_offset, uint8_t pixdata_byte) {
|
||||
target_buffer[pixdata_offset] = pixdata_byte;
|
||||
return true;
|
||||
}
|
||||
64
drivers/eeprom/painter/tft_panel/qp_tft_panel.h
Normal file
64
drivers/eeprom/painter/tft_panel/qp_tft_panel.h
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
// Copyright 2021 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#include "color.h"
|
||||
#include "qp_internal.h"
|
||||
|
||||
#ifdef QUANTUM_PAINTER_SPI_ENABLE
|
||||
# include "qp_comms_spi.h"
|
||||
#endif // QUANTUM_PAINTER_SPI_ENABLE
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Common TFT panel implementation using D/C, and RST pins.
|
||||
|
||||
// Driver vtable with extras
|
||||
typedef struct tft_panel_dc_reset_painter_driver_vtable_t {
|
||||
painter_driver_vtable_t base; // must be first, so it can be cast to/from the painter_driver_vtable_t* type
|
||||
|
||||
// Number of bytes for transmitting x/y coordinates
|
||||
uint8_t num_window_bytes;
|
||||
|
||||
// Whether or not the x/y coords should be swapped on 90/270 rotation
|
||||
bool swap_window_coords;
|
||||
|
||||
// Opcodes for normal display operation
|
||||
struct {
|
||||
uint8_t display_on;
|
||||
uint8_t display_off;
|
||||
uint8_t set_column_address;
|
||||
uint8_t set_row_address;
|
||||
uint8_t enable_writes;
|
||||
} opcodes;
|
||||
} tft_panel_dc_reset_painter_driver_vtable_t;
|
||||
|
||||
// Device definition
|
||||
typedef struct tft_panel_dc_reset_painter_device_t {
|
||||
painter_driver_t base; // must be first, so it can be cast to/from the painter_device_t* type
|
||||
|
||||
union {
|
||||
#ifdef QUANTUM_PAINTER_SPI_ENABLE
|
||||
// SPI-based configurables
|
||||
qp_comms_spi_dc_reset_config_t spi_dc_reset_config;
|
||||
#endif // QUANTUM_PAINTER_SPI_ENABLE
|
||||
|
||||
// TODO: I2C/parallel etc.
|
||||
};
|
||||
} tft_panel_dc_reset_painter_device_t;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Forward declarations for injecting into concrete driver vtables
|
||||
|
||||
bool qp_tft_panel_power(painter_device_t device, bool power_on);
|
||||
bool qp_tft_panel_clear(painter_device_t device);
|
||||
bool qp_tft_panel_flush(painter_device_t device);
|
||||
bool qp_tft_panel_viewport(painter_device_t device, uint16_t left, uint16_t top, uint16_t right, uint16_t bottom);
|
||||
bool qp_tft_panel_pixdata(painter_device_t device, const void *pixel_data, uint32_t native_pixel_count);
|
||||
|
||||
bool qp_tft_panel_palette_convert_rgb565_swapped(painter_device_t device, int16_t palette_size, qp_pixel_t *palette);
|
||||
bool qp_tft_panel_palette_convert_rgb888(painter_device_t device, int16_t palette_size, qp_pixel_t *palette);
|
||||
|
||||
bool qp_tft_panel_append_pixels_rgb565(painter_device_t device, uint8_t *target_buffer, qp_pixel_t *palette, uint32_t pixel_offset, uint32_t pixel_count, uint8_t *palette_indices);
|
||||
bool qp_tft_panel_append_pixels_rgb888(painter_device_t device, uint8_t *target_buffer, qp_pixel_t *palette, uint32_t pixel_offset, uint32_t pixel_count, uint8_t *palette_indices);
|
||||
|
||||
bool qp_tft_panel_append_pixdata(painter_device_t device, uint8_t *target_buffer, uint32_t pixdata_offset, uint8_t pixdata_byte);
|
||||
4291
keyboards/zodiarkpi/bao.qgf.c
Normal file
4291
keyboards/zodiarkpi/bao.qgf.c
Normal file
File diff suppressed because it is too large
Load diff
14
keyboards/zodiarkpi/bao.qgf.h
Normal file
14
keyboards/zodiarkpi/bao.qgf.h
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
// Copyright 2025 QMK -- generated source code only, image retains original copyright
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
// This file was auto-generated by `painter_convert_graphics` with arguments:
|
||||
// format | pal256
|
||||
// output | vial-qmk
|
||||
// input | bao.jpg
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <qp.h>
|
||||
|
||||
extern const uint32_t gfx_bao_length;
|
||||
extern const uint8_t gfx_bao[68290];
|
||||
98
keyboards/zodiarkpi/config.h
Normal file
98
keyboards/zodiarkpi/config.h
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
/*
|
||||
Copyright 2023 Spencer Deven <splitlogicdesign@gmail.com>
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// SPI config
|
||||
#define SPI_DRIVER SPID1
|
||||
#define SPI_SCK_PIN GP14
|
||||
#define SPI_MOSI_PIN GP15
|
||||
#define SPI_MISO_PIN GP12
|
||||
|
||||
// SplitHands config
|
||||
#define SPLIT_HAND_PIN GP13
|
||||
|
||||
// Serial config
|
||||
#define SERIAL_USART_FULL_DUPLEX
|
||||
#define SERIAL_USART_TX_PIN GP0
|
||||
#define SERIAL_USART_RX_PIN GP1
|
||||
#define SERIAL_USART_DRIVER SIOD0
|
||||
|
||||
// Serial PIO Driver configs for blue Prototypes, comment out if using the any other board
|
||||
// #define SERIAL_USART_PIN_SWAP
|
||||
|
||||
|
||||
// RP2040 Bootloader double tap
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
|
||||
|
||||
// I2C config, comment out if using dual axis encoder
|
||||
// #define I2C_DRIVER I2CD0
|
||||
// #define I2C1_SCL_PIN GP17
|
||||
// #define I2C1_SDA_PIN GP16
|
||||
|
||||
// RGB Matrix Config
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
/* RGB Defines */
|
||||
#define WS2812_DI_PIN GP2
|
||||
#define RGB_MATRIX_LED_COUNT 88
|
||||
#define RGB_MATRIX_SPLIT { 44,44 }
|
||||
/* Enable Framebuffer and keypress effects */
|
||||
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||
#define RGB_MATRIX_KEYPRESSES
|
||||
/* Enable individiual effects */
|
||||
#define ENABLE_RGB_MATRIX_ALPHAS_MODS
|
||||
#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
||||
#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
|
||||
#define ENABLE_RGB_MATRIX_BREATHING
|
||||
#define ENABLE_RGB_MATRIX_BAND_SAT
|
||||
#define ENABLE_RGB_MATRIX_BAND_VAL
|
||||
#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
|
||||
#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
|
||||
#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
|
||||
#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
|
||||
#define ENABLE_RGB_MATRIX_CYCLE_ALL
|
||||
#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
|
||||
#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
|
||||
#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
|
||||
#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
|
||||
#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
|
||||
#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
|
||||
#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
|
||||
#define ENABLE_RGB_MATRIX_DUAL_BEACON
|
||||
#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
|
||||
#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
|
||||
#define ENABLE_RGB_MATRIX_RAINDROPS
|
||||
#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
|
||||
#define ENABLE_RGB_MATRIX_HUE_BREATHING
|
||||
#define ENABLE_RGB_MATRIX_HUE_PENDULUM
|
||||
#define ENABLE_RGB_MATRIX_HUE_WAVE
|
||||
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
|
||||
#define ENABLE_RGB_MATRIX_PIXEL_FLOW
|
||||
#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
|
||||
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
|
||||
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
|
||||
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
|
||||
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
|
||||
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
|
||||
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
|
||||
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
|
||||
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
|
||||
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
|
||||
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
|
||||
#define ENABLE_RGB_MATRIX_SPLASH
|
||||
#define ENABLE_RGB_MATRIX_MULTISPLASH
|
||||
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
|
||||
#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
||||
#endif
|
||||
31
keyboards/zodiarkpi/halconf.h
Normal file
31
keyboards/zodiarkpi/halconf.h
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
Copyright 2023 Spencer Deven <splitlogicdesign@gmail.com>
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// Comment the following line out if using blue prototype boards
|
||||
#define HAL_USE_SIO TRUE
|
||||
|
||||
// Comment the following line out if using dual encoders
|
||||
// #define HAL_USE_I2C TRUE
|
||||
|
||||
// SPI Config
|
||||
#define HAL_USE_SPI TRUE
|
||||
#undef SPI_USE_WAIT
|
||||
#define SPI_USE_WAIT TRUE
|
||||
|
||||
#undef SPI_SELECT_MODE
|
||||
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
|
||||
|
||||
#include_next <halconf.h>
|
||||
731
keyboards/zodiarkpi/images/ZodiarkPiLogo2Green.qgf.c
Normal file
731
keyboards/zodiarkpi/images/ZodiarkPiLogo2Green.qgf.c
Normal file
|
|
@ -0,0 +1,731 @@
|
|||
// Copyright 2023 QMK -- generated source code only, image retains original copyright
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
// This file was auto-generated by `qmk painter-convert-graphics -i ZodiarkPiLogo2Green.png -f pal16`
|
||||
|
||||
#include <qp.h>
|
||||
|
||||
const uint32_t gfx_ZodiarkPiLogo2Green_length = 11476;
|
||||
|
||||
// clang-format off
|
||||
const uint8_t gfx_ZodiarkPiLogo2Green[11476] = {
|
||||
0x00, 0xFF, 0x12, 0x00, 0x00, 0x51, 0x47, 0x46, 0x01, 0xD4, 0x2C, 0x00, 0x00, 0x2B, 0xD3, 0xFF,
|
||||
0xFF, 0xF0, 0x00, 0x40, 0x01, 0x01, 0x00, 0x01, 0xFE, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||
0x02, 0xFD, 0x06, 0x00, 0x00, 0x06, 0x00, 0x01, 0xFF, 0xE8, 0x03, 0x03, 0xFC, 0x30, 0x00, 0x00,
|
||||
0x62, 0x11, 0xBE, 0x1A, 0x0B, 0xB3, 0x74, 0x2A, 0xBB, 0x6B, 0x23, 0xA3, 0x47, 0x4E, 0x98, 0x47,
|
||||
0x4D, 0x97, 0x45, 0x51, 0x97, 0x7A, 0x39, 0x98, 0x07, 0x0B, 0x8B, 0x78, 0x2E, 0x7E, 0x71, 0x19,
|
||||
0x59, 0x77, 0x55, 0x30, 0x74, 0x78, 0x11, 0x00, 0xFF, 0x0D, 0xAA, 0xFF, 0x0D, 0x00, 0x00, 0x00,
|
||||
0x05, 0xFA, 0x6F, 0x2C, 0x00, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F,
|
||||
0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F,
|
||||
0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F,
|
||||
0x66, 0x7F, 0x66, 0x70, 0x66, 0x80, 0x64, 0x76, 0x66, 0x82, 0x36, 0x01, 0x32, 0x75, 0x66, 0x8D,
|
||||
0x13, 0x21, 0x20, 0x21, 0x32, 0x33, 0x13, 0x22, 0x33, 0x22, 0x20, 0x33, 0x21, 0x20, 0x2C, 0x66,
|
||||
0x80, 0x64, 0x3D, 0x66, 0x84, 0x11, 0x22, 0x10, 0x20, 0x11, 0x02, 0x00, 0x87, 0x10, 0x02, 0x00,
|
||||
0x12, 0x01, 0x20, 0x01, 0x31, 0x1C, 0x66, 0x82, 0x34, 0x33, 0x31, 0x0A, 0x66, 0x82, 0x46, 0x11,
|
||||
0x63, 0x3C, 0x66, 0x91, 0x36, 0x02, 0x20, 0x83, 0x33, 0x83, 0x21, 0x22, 0x10, 0x02, 0x01, 0x02,
|
||||
0x12, 0x21, 0x22, 0x00, 0x11, 0x63, 0x16, 0x66, 0x81, 0x36, 0x02, 0x04, 0x00, 0x8C, 0x02, 0x22,
|
||||
0x12, 0x21, 0x12, 0x01, 0x10, 0x12, 0x11, 0x32, 0x33, 0x21, 0x10, 0x3D, 0x66, 0x92, 0x26, 0x21,
|
||||
0x30, 0xCB, 0xBB, 0xCC, 0xBB, 0xAA, 0xBA, 0x9A, 0xAA, 0x79, 0xA7, 0xBB, 0x8A, 0x13, 0x21, 0x10,
|
||||
0x32, 0x16, 0x66, 0x81, 0x03, 0x00, 0x02, 0x20, 0x81, 0x12, 0x21, 0x02, 0x02, 0x83, 0x00, 0x20,
|
||||
0x22, 0x20, 0x02, 0x22, 0x02, 0x02, 0x82, 0x00, 0x02, 0x63, 0x3C, 0x66, 0x83, 0x23, 0x21, 0x82,
|
||||
0xFC, 0x03, 0xFF, 0x8C, 0xDF, 0xFF, 0xCD, 0xAB, 0xDC, 0xFC, 0xFF, 0xCF, 0xAB, 0x27, 0x02, 0x22,
|
||||
0x32, 0x15, 0x66, 0x8E, 0x23, 0x20, 0x02, 0x82, 0xBA, 0xBB, 0x7A, 0x99, 0x89, 0x97, 0xAA, 0x79,
|
||||
0x88, 0x77, 0x79, 0x02, 0x00, 0x81, 0x02, 0x64, 0x3C, 0x66, 0x83, 0x03, 0x00, 0xA1, 0xFD, 0x06,
|
||||
0xFF, 0x82, 0xCD, 0xFF, 0xBC, 0x03, 0xFF, 0x85, 0xBC, 0x6A, 0x23, 0x10, 0x20, 0x64, 0x13, 0x66,
|
||||
0x8B, 0x22, 0x02, 0xA8, 0xBB, 0xAB, 0xFC, 0xCF, 0xFC, 0xAC, 0xDA, 0xFF, 0xDE, 0x02, 0xCC, 0x83,
|
||||
0xAC, 0x22, 0x00, 0x30, 0x3D, 0x66, 0x83, 0x26, 0x12, 0x92, 0xFC, 0x0C, 0xFF, 0x86, 0xEF, 0xCF,
|
||||
0x8B, 0x22, 0x02, 0x12, 0x32, 0x11, 0x66, 0x87, 0x16, 0x00, 0x70, 0xA9, 0xFD, 0xDC, 0xFF, 0xDF,
|
||||
0x07, 0xFF, 0x83, 0xAE, 0x23, 0x02, 0x61, 0x3D, 0x66, 0x83, 0x26, 0x11, 0x10, 0xFA, 0x08, 0xFF,
|
||||
0x80, 0xBD, 0x03, 0xFF, 0x88, 0xBF, 0xFC, 0xDF, 0x8B, 0x03, 0x02, 0x00, 0x12, 0x63, 0x0F, 0x66,
|
||||
0x85, 0x26, 0x10, 0x30, 0xB8, 0xFF, 0xEF, 0x09, 0xFF, 0x83, 0xBF, 0x03, 0x00, 0x32, 0x3D, 0x66,
|
||||
0x83, 0x26, 0x10, 0x01, 0xC7, 0x0A, 0xFF, 0x82, 0xCE, 0xFF, 0xCF, 0x02, 0xFF, 0x86, 0xDF, 0xAB,
|
||||
0x27, 0x02, 0x00, 0x12, 0x63, 0x0E, 0x66, 0x83, 0x36, 0x10, 0x22, 0xFB, 0x02, 0xFF, 0x83, 0xCF,
|
||||
0xCA, 0xFF, 0xFD, 0x05, 0xFF, 0x83, 0xAB, 0x27, 0x02, 0x10, 0x3D, 0x66, 0x80, 0x46, 0x02, 0x02,
|
||||
0x80, 0xC9, 0x08, 0xFF, 0x81, 0xDF, 0xFC, 0x07, 0xFF, 0x85, 0x9B, 0x23, 0x02, 0x20, 0x10, 0x64,
|
||||
0x0D, 0x66, 0x83, 0x24, 0x10, 0x81, 0xFC, 0x04, 0xFF, 0x81, 0xCF, 0xFD, 0x04, 0xFF, 0x84, 0xCF,
|
||||
0xAA, 0x29, 0x02, 0x30, 0x3D, 0x66, 0x83, 0x36, 0x21, 0x22, 0xB8, 0x0F, 0xFF, 0x02, 0xDF, 0x81,
|
||||
0x39, 0x12, 0x02, 0x22, 0x81, 0x20, 0x32, 0x0D, 0x66, 0x82, 0x23, 0x00, 0xA2, 0x05, 0xFF, 0x81,
|
||||
0xCF, 0xFB, 0x05, 0xFF, 0x83, 0xAB, 0x03, 0x00, 0x30, 0x3E, 0x66, 0x84, 0x02, 0x00, 0xA3, 0xFF,
|
||||
0xCF, 0x0E, 0xFF, 0x88, 0xEF, 0x7A, 0x73, 0xA9, 0x8A, 0x12, 0x00, 0x12, 0x63, 0x0B, 0x66, 0x85,
|
||||
0x24, 0x22, 0xA1, 0xFE, 0xBC, 0xFC, 0x02, 0xFF, 0x8A, 0xDF, 0xFC, 0xBB, 0xFF, 0xCB, 0xFF, 0xBF,
|
||||
0x19, 0x22, 0x20, 0x62, 0x3E, 0x66, 0x83, 0x04, 0x20, 0x32, 0xFA, 0x02, 0xFF, 0x80, 0xFD, 0x06,
|
||||
0xFF, 0x81, 0xBF, 0xFA, 0x05, 0xFF, 0x89, 0xCE, 0xAC, 0xCA, 0xCF, 0x7A, 0x21, 0x22, 0x10, 0x31,
|
||||
0x64, 0x09, 0x66, 0x84, 0x24, 0x00, 0xA1, 0xFD, 0xBF, 0x05, 0xFF, 0x88, 0xBB, 0xFF, 0xBB, 0xFF,
|
||||
0xBF, 0x7A, 0x10, 0x00, 0x63, 0x3E, 0x66, 0x85, 0x13, 0x10, 0x12, 0xFA, 0xBF, 0xFD, 0x02, 0xFF,
|
||||
0x81, 0xCF, 0xFC, 0x04, 0xFF, 0x80, 0xFD, 0x05, 0xFF, 0x8A, 0xFC, 0xFF, 0xFC, 0xCF, 0xCC, 0xAB,
|
||||
0x27, 0x20, 0x02, 0x11, 0x63, 0x08, 0x66, 0x84, 0x01, 0x20, 0xB8, 0xFF, 0xCC, 0x07, 0xFF, 0x83,
|
||||
0xAA, 0xFE, 0xFF, 0x7B, 0x02, 0x12, 0x40, 0x66, 0x82, 0x21, 0x20, 0xB7, 0x02, 0xFF, 0x81, 0xBF,
|
||||
0xCB, 0x06, 0xFF, 0x80, 0xCB, 0x07, 0xFF, 0x80, 0xCC, 0x02, 0xFF, 0x86, 0xEF, 0xBC, 0x8A, 0x22,
|
||||
0x11, 0x20, 0x63, 0x06, 0x66, 0x80, 0x26, 0x02, 0x20, 0x80, 0xC9, 0x06, 0xFF, 0x80, 0xDF, 0x02,
|
||||
0xFF, 0x85, 0xFD, 0xDE, 0xCF, 0x08, 0x02, 0x30, 0x40, 0x66, 0x82, 0x03, 0x20, 0xB2, 0x02, 0xFF,
|
||||
0x82, 0xAF, 0x98, 0xFC, 0x0B, 0xFF, 0x80, 0xFD, 0x06, 0xFF, 0x85, 0xBF, 0x9A, 0x17, 0x12, 0x20,
|
||||
0x63, 0x05, 0x66, 0x83, 0x13, 0x20, 0x22, 0xFA, 0x0B, 0xFF, 0x83, 0xAF, 0x01, 0x20, 0x63, 0x40,
|
||||
0x66, 0x88, 0x03, 0x00, 0xB2, 0xFF, 0xEF, 0xFF, 0xCB, 0xCF, 0xCB, 0x0C, 0xFF, 0x80, 0xFE, 0x06,
|
||||
0xFF, 0x84, 0x9B, 0x11, 0x22, 0x20, 0x63, 0x04, 0x66, 0x83, 0x36, 0x20, 0x00, 0xDA, 0x02, 0xFF,
|
||||
0x80, 0xEF, 0x08, 0xFF, 0x82, 0x9F, 0x22, 0x00, 0x41, 0x66, 0x89, 0x14, 0x00, 0xB2, 0xFF, 0xAC,
|
||||
0xFC, 0xFF, 0xBF, 0xA9, 0xFD, 0x07, 0xFF, 0x80, 0xFE, 0x05, 0xFF, 0x80, 0xFC, 0x04, 0xFF, 0x85,
|
||||
0xCF, 0xAA, 0x18, 0x02, 0x11, 0x63, 0x04, 0x66, 0x85, 0x02, 0x22, 0xD9, 0xFF, 0xFE, 0xBF, 0x08,
|
||||
0xFF, 0x82, 0x9C, 0x12, 0x11, 0x3F, 0x66, 0x87, 0x36, 0x11, 0x10, 0x21, 0xA1, 0xFD, 0xCF, 0xFE,
|
||||
0x02, 0xFF, 0x82, 0xFD, 0xFF, 0xCC, 0x0A, 0xFF, 0x80, 0xFD, 0x03, 0xFF, 0x80, 0xFE, 0x02, 0xFF,
|
||||
0x86, 0xBF, 0xCA, 0xAC, 0x27, 0x02, 0x11, 0x43, 0x03, 0x66, 0x02, 0x22, 0x80, 0xC8, 0x02, 0xFF,
|
||||
0x80, 0xDF, 0x08, 0xFF, 0x82, 0x9C, 0x12, 0x10, 0x40, 0x66, 0x83, 0x24, 0x12, 0x20, 0xA1, 0x02,
|
||||
0xFF, 0x80, 0xFC, 0x02, 0xFF, 0x82, 0xBF, 0xFC, 0xCC, 0x0F, 0xFF, 0x80, 0xCF, 0x03, 0xFF, 0x8A,
|
||||
0xCF, 0xAB, 0x28, 0x00, 0x02, 0x32, 0x66, 0x34, 0x20, 0x12, 0xEA, 0x0A, 0xFF, 0x83, 0xAF, 0x18,
|
||||
0x10, 0x30, 0x41, 0x66, 0x83, 0x24, 0x02, 0x90, 0xDC, 0x02, 0xFF, 0x83, 0xCF, 0xFA, 0xFF, 0xFD,
|
||||
0x04, 0xFF, 0x81, 0xEF, 0xFD, 0x09, 0xFF, 0x82, 0xFC, 0xEF, 0xFC, 0x03, 0xFF, 0x85, 0xEF, 0xAC,
|
||||
0x78, 0x21, 0x00, 0x22, 0x02, 0x20, 0x81, 0x32, 0xFB, 0x0A, 0xFF, 0x83, 0xAF, 0x22, 0x00, 0x31,
|
||||
0x41, 0x66, 0x83, 0x36, 0x00, 0x10, 0xDA, 0x03, 0xFF, 0x82, 0xFD, 0xBF, 0xCA, 0x04, 0xFF, 0x82,
|
||||
0xAB, 0xBA, 0xFD, 0x02, 0xFF, 0x80, 0xBC, 0x03, 0xFF, 0x80, 0xCC, 0x02, 0xFF, 0x83, 0xCF, 0xCA,
|
||||
0xDF, 0xFC, 0x02, 0xFF, 0x88, 0xCD, 0xBC, 0x3A, 0x21, 0x00, 0x22, 0x20, 0x22, 0xEA, 0x02, 0xFF,
|
||||
0x80, 0xFC, 0x03, 0xFF, 0x80, 0xFE, 0x03, 0xFF, 0x84, 0x8C, 0x02, 0x20, 0x21, 0x64, 0x40, 0x66,
|
||||
0x80, 0x36, 0x02, 0x20, 0x81, 0xA2, 0xFE, 0x03, 0xFF, 0x8A, 0xCF, 0xCB, 0xBB, 0xAB, 0xAA, 0xCB,
|
||||
0x2A, 0xA3, 0xFF, 0xBF, 0xFD, 0x04, 0xFF, 0x80, 0xEF, 0x03, 0xFF, 0x82, 0xFD, 0xAD, 0xEA, 0x02,
|
||||
0xFF, 0x87, 0xAB, 0xFE, 0xBD, 0x9A, 0x18, 0x01, 0x02, 0x30, 0x02, 0xCB, 0x03, 0xFF, 0x80, 0xFD,
|
||||
0x05, 0xFF, 0x82, 0x7B, 0x00, 0x30, 0x43, 0x66, 0x84, 0x13, 0x20, 0xA1, 0xFC, 0xEF, 0x02, 0xFF,
|
||||
0x80, 0xFE, 0x02, 0xBB, 0x88, 0x9A, 0x89, 0xBA, 0x08, 0x70, 0xCA, 0xDE, 0xFF, 0xCF, 0x03, 0xFF,
|
||||
0x80, 0xCF, 0x03, 0xFF, 0x80, 0xDC, 0x02, 0xFF, 0x81, 0xBF, 0xFB, 0x02, 0xFF, 0x87, 0xFC, 0xFF,
|
||||
0xAC, 0x23, 0x00, 0xA2, 0xAB, 0xC9, 0x09, 0xFF, 0x82, 0x1A, 0x10, 0x62, 0x43, 0x66, 0x83, 0x16,
|
||||
0x20, 0x72, 0xFB, 0x03, 0xFF, 0x8A, 0xFD, 0xDF, 0xFF, 0xCD, 0xCC, 0xFF, 0x1A, 0x20, 0x30, 0xB9,
|
||||
0xFC, 0x04, 0xFF, 0x82, 0xDF, 0xFF, 0xDB, 0x04, 0xFF, 0x81, 0xCF, 0xFD, 0x04, 0xFF, 0x85, 0xDD,
|
||||
0x9A, 0x13, 0xB8, 0xCF, 0xEB, 0x05, 0xFF, 0x86, 0xCF, 0xFC, 0xFF, 0xAF, 0x22, 0x12, 0x63, 0x43,
|
||||
0x66, 0x83, 0x36, 0x22, 0x20, 0xF9, 0x09, 0xFF, 0x85, 0x1A, 0x00, 0x02, 0x22, 0xA7, 0xFB, 0x03,
|
||||
0xFF, 0x80, 0xBC, 0x06, 0xFF, 0x81, 0xBE, 0xFE, 0x05, 0xFF, 0x82, 0xEF, 0x9B, 0xB7, 0x09, 0xFF,
|
||||
0x83, 0xDF, 0x3B, 0x22, 0x40, 0x45, 0x66, 0x82, 0x23, 0x22, 0xD8, 0x09, 0xFF, 0x81, 0x19, 0x20,
|
||||
0x02, 0x02, 0x82, 0x10, 0xA8, 0xFB, 0x04, 0xFF, 0x82, 0xFC, 0xFF, 0xFC, 0x02, 0xFF, 0x02, 0xCF,
|
||||
0x80, 0xFA, 0x05, 0xFF, 0x81, 0xCF, 0xBA, 0x0A, 0xFF, 0x82, 0x1A, 0x20, 0x62, 0x45, 0x66, 0x82,
|
||||
0x23, 0x21, 0xB3, 0x04, 0xFF, 0x81, 0xDF, 0xFC, 0x03, 0xFF, 0x80, 0x2A, 0x02, 0x10, 0x8A, 0x23,
|
||||
0x02, 0x01, 0xA3, 0xBB, 0xFC, 0xCC, 0xFF, 0xFE, 0xCF, 0xFB, 0x02, 0xFF, 0x80, 0xCF, 0x04, 0xFF,
|
||||
0x80, 0xEF, 0x0E, 0xFF, 0x83, 0x2A, 0x00, 0x11, 0x64, 0x44, 0x66, 0x82, 0x26, 0x21, 0xA0, 0x04,
|
||||
0xFF, 0x81, 0xDF, 0xFC, 0x03, 0xFF, 0x8B, 0x2A, 0x20, 0x32, 0x66, 0x36, 0x02, 0x22, 0x32, 0xA8,
|
||||
0xFC, 0xEF, 0xEB, 0x09, 0xFF, 0x81, 0xBC, 0xFD, 0x0A, 0xFF, 0x85, 0xCB, 0xFF, 0xAF, 0x27, 0x20,
|
||||
0x32, 0x46, 0x66, 0x82, 0x02, 0x82, 0xFC, 0x08, 0xFF, 0x82, 0x2A, 0x22, 0x61, 0x02, 0x66, 0x86,
|
||||
0x16, 0x02, 0x10, 0x21, 0xA7, 0xDC, 0xFC, 0x02, 0xFF, 0x80, 0xEF, 0x0A, 0xFF, 0x85, 0xCF, 0xEC,
|
||||
0xFF, 0xFC, 0xFF, 0xCF, 0x02, 0xFF, 0x85, 0xFD, 0xFF, 0x7B, 0x20, 0x10, 0x32, 0x46, 0x66, 0x82,
|
||||
0x02, 0x12, 0xCA, 0x08, 0xFF, 0x82, 0x9C, 0x02, 0x40, 0x03, 0x66, 0x85, 0x46, 0x23, 0x00, 0x10,
|
||||
0x87, 0xBA, 0x02, 0xFF, 0x80, 0xBB, 0x02, 0xFF, 0x82, 0xBF, 0xFB, 0xDF, 0x05, 0xFF, 0x81, 0x9B,
|
||||
0xB9, 0x02, 0xFF, 0x8A, 0xCF, 0x8A, 0xFA, 0xFF, 0xFC, 0xDD, 0x19, 0x20, 0x22, 0x10, 0x64, 0x45,
|
||||
0x66, 0x82, 0x03, 0x12, 0xFA, 0x07, 0xFF, 0x83, 0xCD, 0x3B, 0x00, 0x30, 0x05, 0x66, 0x88, 0x13,
|
||||
0x22, 0x02, 0xA8, 0xAA, 0xCA, 0xFC, 0xFF, 0xFD, 0x02, 0xFF, 0x80, 0xBC, 0x02, 0xFF, 0x84, 0xEF,
|
||||
0xFD, 0xBF, 0x77, 0xDA, 0x02, 0xFF, 0x88, 0xAE, 0xA9, 0xFB, 0xFF, 0xDF, 0xBE, 0x27, 0x00, 0x31,
|
||||
0x47, 0x66, 0x82, 0x21, 0x20, 0xC9, 0x07, 0xFF, 0x83, 0xBB, 0x8B, 0x00, 0x30, 0x05, 0x66, 0x86,
|
||||
0x36, 0x01, 0x02, 0x00, 0x02, 0xA3, 0xDB, 0x09, 0xFF, 0x82, 0x8C, 0xA1, 0xFC, 0x03, 0xFF, 0x80,
|
||||
0xED, 0x02, 0xFF, 0x83, 0xBB, 0xBE, 0x21, 0x22, 0x48, 0x66, 0x83, 0x23, 0x22, 0xA3, 0xFB, 0x06,
|
||||
0xFF, 0x84, 0xEF, 0x3B, 0x00, 0x10, 0x63, 0x06, 0x66, 0x80, 0x23, 0x02, 0x20, 0x82, 0x02, 0x93,
|
||||
0xEB, 0x03, 0xFF, 0x80, 0xCC, 0x03, 0xFF, 0x84, 0xDF, 0x8A, 0xFA, 0xFF, 0xCF, 0x05, 0xFF, 0x83,
|
||||
0xAA, 0x8B, 0x12, 0x32, 0x49, 0x66, 0x83, 0x21, 0x92, 0xFC, 0xCF, 0x04, 0xFF, 0x84, 0xFE, 0xCF,
|
||||
0x1A, 0x02, 0x22, 0x07, 0x66, 0x86, 0x46, 0x64, 0x24, 0x02, 0x20, 0xA3, 0xFC, 0x04, 0xFF, 0x83,
|
||||
0xFD, 0xFF, 0xCF, 0xA7, 0x03, 0xFF, 0x80, 0xDF, 0x03, 0xFF, 0x84, 0xFE, 0xBB, 0x29, 0x02, 0x30,
|
||||
0x49, 0x66, 0x82, 0x03, 0x30, 0xFB, 0x05, 0xFF, 0x84, 0xFE, 0xFF, 0x8B, 0x02, 0x12, 0x0A, 0x66,
|
||||
0x86, 0x36, 0x01, 0x20, 0xB9, 0xFC, 0xFF, 0xFC, 0x03, 0xFF, 0x81, 0xBF, 0xA8, 0x02, 0xFF, 0x80,
|
||||
0xFE, 0x02, 0xFF, 0x80, 0xFE, 0x02, 0xFF, 0x83, 0xAF, 0x01, 0x20, 0x62, 0x49, 0x66, 0x82, 0x23,
|
||||
0x10, 0xBA, 0x07, 0xFF, 0x82, 0x8B, 0x02, 0x30, 0x0B, 0x66, 0x80, 0x14, 0x02, 0x20, 0x83, 0xA7,
|
||||
0xCC, 0xFF, 0xCF, 0x02, 0xFF, 0x81, 0xAF, 0xFA, 0x08, 0xFF, 0x82, 0x9E, 0x00, 0x12, 0x4A, 0x66,
|
||||
0x84, 0x03, 0x02, 0xB8, 0xFF, 0xDF, 0x05, 0xFF, 0x82, 0x9A, 0x02, 0x40, 0x0B, 0x66, 0x85, 0x36,
|
||||
0x12, 0x20, 0x12, 0x88, 0xCA, 0x03, 0xFF, 0x87, 0xCF, 0xFE, 0xFF, 0xEF, 0xFB, 0xFF, 0xEF, 0xFB,
|
||||
0x02, 0xFF, 0x83, 0x3B, 0x10, 0x12, 0x64, 0x49, 0x66, 0x82, 0x14, 0x22, 0xB1, 0x07, 0xFF, 0x82,
|
||||
0xAC, 0x21, 0x30, 0x0D, 0x66, 0x84, 0x23, 0x22, 0x02, 0x93, 0xFA, 0x02, 0xFF, 0x82, 0xBD, 0xFE,
|
||||
0xFD, 0x02, 0xFF, 0x80, 0xEF, 0x02, 0xFF, 0x82, 0xEE, 0xFF, 0x3B, 0x02, 0x10, 0x4A, 0x66, 0x83,
|
||||
0x46, 0x22, 0x92, 0xFC, 0x06, 0xFF, 0x82, 0xAF, 0x02, 0x10, 0x0E, 0x66, 0x80, 0x13, 0x02, 0x20,
|
||||
0x85, 0xA2, 0xFD, 0xFF, 0xBF, 0xFF, 0xFB, 0x05, 0xFF, 0x84, 0xEF, 0xFF, 0x1A, 0x10, 0x32, 0x4B,
|
||||
0x66, 0x83, 0x21, 0x80, 0xFC, 0xDF, 0x05, 0xFF, 0x82, 0xAF, 0x01, 0x10, 0x0F, 0x66, 0x87, 0x36,
|
||||
0x12, 0x20, 0xB9, 0xDC, 0xBF, 0xCE, 0xBA, 0x06, 0xFF, 0x83, 0xCF, 0x28, 0x22, 0x30, 0x4B, 0x66,
|
||||
0x82, 0x11, 0x20, 0xFA, 0x03, 0xFF, 0x80, 0xEF, 0x02, 0xFD, 0x82, 0xAF, 0x20, 0x30, 0x10, 0x66,
|
||||
0x86, 0x24, 0x00, 0x10, 0xA8, 0xBB, 0xAD, 0xA8, 0x06, 0xFF, 0x83, 0xAF, 0x22, 0x12, 0x63, 0x4B,
|
||||
0x66, 0x82, 0x23, 0x02, 0xC9, 0x03, 0xFF, 0x86, 0xBF, 0xFB, 0xFF, 0xAF, 0x20, 0x22, 0x30, 0x10,
|
||||
0x66, 0x85, 0x12, 0x00, 0x12, 0xB7, 0xFF, 0xFC, 0x06, 0xFF, 0x82, 0xAF, 0x02, 0x40, 0x4C, 0x66,
|
||||
0x82, 0x36, 0x00, 0x91, 0x03, 0xFF, 0x86, 0xBF, 0xFC, 0xFF, 0xBF, 0x22, 0x00, 0x60, 0x11, 0x66,
|
||||
0x8D, 0x23, 0x12, 0x72, 0xCB, 0xCE, 0xAA, 0xBB, 0xCB, 0xCC, 0xFE, 0xDF, 0x8B, 0x00, 0x61, 0x4D,
|
||||
0x66, 0x82, 0x03, 0x20, 0xFA, 0x05, 0xFF, 0x83, 0xCE, 0x27, 0x00, 0x30, 0x12, 0x66, 0x86, 0x01,
|
||||
0x21, 0x83, 0x89, 0x11, 0x12, 0x32, 0x02, 0x99, 0x83, 0xAA, 0x18, 0x20, 0x64, 0x4D, 0x66, 0x89,
|
||||
0x36, 0x02, 0xA3, 0xCB, 0xBB, 0xCC, 0xBB, 0xBC, 0xAB, 0x07, 0x02, 0x12, 0x80, 0x63, 0x11, 0x66,
|
||||
0x83, 0x36, 0x11, 0x22, 0x20, 0x02, 0x22, 0x85, 0x02, 0x12, 0x02, 0x22, 0x10, 0x30, 0x4F, 0x66,
|
||||
0x84, 0x03, 0x02, 0x32, 0x31, 0x38, 0x02, 0x33, 0x83, 0x22, 0x00, 0x21, 0x61, 0x13, 0x66, 0x8A,
|
||||
0x36, 0x13, 0x12, 0x63, 0x36, 0x11, 0x21, 0x01, 0x00, 0x21, 0x63, 0x4F, 0x66, 0x85, 0x16, 0x22,
|
||||
0x20, 0x10, 0x11, 0x02, 0x02, 0x00, 0x82, 0x20, 0x12, 0x63, 0x06, 0x66, 0x80, 0x64, 0x14, 0x66,
|
||||
0x80, 0x33, 0x51, 0x66, 0x84, 0x36, 0x66, 0x34, 0x13, 0x32, 0x03, 0x33, 0x80, 0x64, 0x07, 0x66,
|
||||
0x81, 0x13, 0x31, 0x07, 0x66, 0x80, 0x36, 0x6B, 0x66, 0x81, 0x34, 0x33, 0x03, 0x22, 0x88, 0x12,
|
||||
0x21, 0x11, 0x21, 0x31, 0x13, 0x33, 0x12, 0x61, 0x68, 0x66, 0x80, 0x33, 0x03, 0x11, 0x82, 0x13,
|
||||
0x97, 0x9A, 0x03, 0x99, 0x88, 0x37, 0x33, 0x13, 0x11, 0x21, 0x20, 0x21, 0x62, 0x36, 0x63, 0x66,
|
||||
0x80, 0x36, 0x02, 0x12, 0x88, 0x81, 0x98, 0xBA, 0xCB, 0xCC, 0xFD, 0xFF, 0xEC, 0xEF, 0x02, 0xCC,
|
||||
0x88, 0xBB, 0xAA, 0x79, 0x11, 0x22, 0x21, 0x12, 0x31, 0x64, 0x61, 0x66, 0x02, 0x21, 0x81, 0xA8,
|
||||
0xCB, 0x02, 0xFD, 0x09, 0xFF, 0x87, 0xFC, 0xCE, 0xAB, 0x89, 0x12, 0x01, 0x20, 0x63, 0x5F, 0x66,
|
||||
0x84, 0x36, 0x22, 0x01, 0xB9, 0xDC, 0x03, 0xFF, 0x80, 0xFE, 0x04, 0xFF, 0x83, 0xBF, 0xCC, 0xFC,
|
||||
0xFE, 0x03, 0xFF, 0x85, 0xBB, 0x9A, 0x88, 0x17, 0x20, 0x63, 0x5D, 0x66, 0x9C, 0x46, 0x13, 0x20,
|
||||
0xA9, 0xCB, 0xFF, 0xDB, 0xFE, 0xFF, 0xFB, 0xFF, 0xDF, 0xCF, 0xFF, 0xAE, 0xBA, 0xFB, 0xBC, 0xEF,
|
||||
0xCF, 0xCC, 0xA9, 0xFC, 0xFF, 0xAB, 0x03, 0x11, 0x31, 0x64, 0x5B, 0x66, 0x8A, 0x01, 0x10, 0xA3,
|
||||
0xEC, 0xCE, 0xFF, 0xCF, 0xFD, 0xFF, 0xFC, 0xFD, 0x04, 0xFF, 0x83, 0xFC, 0xFF, 0xCC, 0xCF, 0x02,
|
||||
0xFF, 0x80, 0xCB, 0x02, 0xFF, 0x84, 0xDF, 0x9B, 0x79, 0x22, 0x21, 0x5B, 0x66, 0x83, 0x23, 0x80,
|
||||
0xB9, 0xCC, 0x06, 0xFF, 0x80, 0xFC, 0x04, 0xFF, 0x80, 0xFC, 0x07, 0xFF, 0x86, 0xCC, 0xFF, 0xBF,
|
||||
0xCB, 0x7A, 0x02, 0x64, 0x58, 0x66, 0x84, 0x36, 0x12, 0x20, 0xB7, 0xCB, 0x02, 0xFF, 0x81, 0xDF,
|
||||
0xEB, 0x04, 0xFF, 0x80, 0xCF, 0x02, 0xFF, 0x80, 0xDF, 0x06, 0xFF, 0x82, 0xFE, 0xFF, 0xDF, 0x03,
|
||||
0xFF, 0x82, 0xAF, 0x02, 0x62, 0x59, 0x66, 0x82, 0x01, 0x12, 0xFA, 0x02, 0xFF, 0x02, 0xCF, 0x86,
|
||||
0xCB, 0xFC, 0xFF, 0xCE, 0xBB, 0x9B, 0xA9, 0x02, 0xAA, 0x80, 0xCB, 0x02, 0xBB, 0x03, 0xFF, 0x83,
|
||||
0xFD, 0xDF, 0xFF, 0xCC, 0x02, 0xFF, 0x82, 0xCF, 0x19, 0x22, 0x59, 0x66, 0x82, 0x12, 0xA1, 0xFE,
|
||||
0x06, 0xFF, 0x8B, 0xBE, 0x7A, 0x03, 0x22, 0x11, 0x10, 0x22, 0x33, 0x81, 0xA9, 0xCB, 0xFE, 0x02,
|
||||
0xFF, 0x80, 0xBB, 0x02, 0xFF, 0x80, 0xCF, 0x02, 0xFF, 0x82, 0xAC, 0x02, 0x61, 0x57, 0x66, 0x82,
|
||||
0x16, 0x20, 0xC5, 0x06, 0xFF, 0x8D, 0xCF, 0x3A, 0x11, 0x01, 0x31, 0x33, 0x13, 0x11, 0x31, 0x12,
|
||||
0x11, 0x71, 0xB9, 0xFC, 0x02, 0xFF, 0x82, 0xFC, 0xFF, 0xCF, 0x02, 0xFF, 0x82, 0xCF, 0x28, 0x61,
|
||||
0x57, 0x66, 0x82, 0x01, 0x70, 0xFB, 0x04, 0xFF, 0x86, 0xCF, 0xFC, 0x9B, 0x11, 0x31, 0x33, 0x43,
|
||||
0x05, 0x44, 0x8D, 0x33, 0x23, 0x12, 0x83, 0xFB, 0xFF, 0xCC, 0xFB, 0xDF, 0xCD, 0xFE, 0xDF, 0x1A,
|
||||
0x31, 0x57, 0x66, 0x82, 0x21, 0xA0, 0xFC, 0x05, 0xFF, 0x82, 0xAC, 0x13, 0x32, 0x02, 0x44, 0x80,
|
||||
0x64, 0x04, 0x66, 0x02, 0x45, 0x83, 0x44, 0x23, 0x22, 0xC9, 0x03, 0xFF, 0x80, 0xFD, 0x03, 0xFF,
|
||||
0x81, 0x2B, 0x10, 0x57, 0x66, 0x81, 0x23, 0xB1, 0x06, 0xFF, 0x83, 0x8B, 0x11, 0x44, 0x65, 0x08,
|
||||
0x66, 0x83, 0x56, 0x34, 0x10, 0x91, 0x03, 0xFF, 0x81, 0xEF, 0xFE, 0x02, 0xFF, 0x81, 0x7C, 0x10,
|
||||
0x57, 0x66, 0x8A, 0x01, 0xB3, 0xBF, 0xFE, 0xFF, 0xFC, 0xFF, 0xCF, 0x08, 0x30, 0x64, 0x0A, 0x66,
|
||||
0x83, 0x34, 0x01, 0x21, 0xFB, 0x06, 0xFF, 0x81, 0x5C, 0x10, 0x55, 0x66, 0x84, 0x36, 0x11, 0x20,
|
||||
0xC9, 0xDF, 0x03, 0xFF, 0x84, 0xFD, 0xBF, 0x21, 0x41, 0x65, 0x0A, 0x66, 0x83, 0x46, 0x34, 0x20,
|
||||
0xF9, 0x06, 0xFF, 0x81, 0x8C, 0x12, 0x56, 0x66, 0x82, 0x36, 0x20, 0xC8, 0x02, 0xFF, 0x02, 0xFC,
|
||||
0x84, 0xFF, 0x9E, 0x02, 0x43, 0x64, 0x0B, 0x66, 0x82, 0x34, 0x02, 0xC9, 0x06, 0xFF, 0x81, 0x7B,
|
||||
0x22, 0x56, 0x66, 0x82, 0x36, 0x22, 0xE9, 0x02, 0xFF, 0x86, 0xCF, 0xFA, 0xFF, 0x3B, 0x10, 0x44,
|
||||
0x65, 0x0A, 0x66, 0x84, 0x56, 0x45, 0x02, 0xC8, 0xEF, 0x05, 0xFF, 0x81, 0x7C, 0x12, 0x56, 0x66,
|
||||
0x8A, 0x26, 0x12, 0xEA, 0xFF, 0xFD, 0xFF, 0xFB, 0xFF, 0x1B, 0x30, 0x44, 0x0B, 0x66, 0x83, 0x45,
|
||||
0x44, 0x22, 0xC7, 0x06, 0xFF, 0x81, 0x8C, 0x10, 0x56, 0x66, 0x82, 0x46, 0x12, 0xCA, 0x05, 0xFF,
|
||||
0x83, 0x0A, 0x30, 0x64, 0x65, 0x0A, 0x66, 0x83, 0x44, 0x23, 0x20, 0xC9, 0x03, 0xFF, 0x80, 0xDF,
|
||||
0x02, 0xFF, 0x81, 0x29, 0x41, 0x56, 0x66, 0x82, 0x46, 0x00, 0xFB, 0x05, 0xFF, 0x82, 0x0A, 0x30,
|
||||
0x44, 0x0B, 0x66, 0x83, 0x56, 0x14, 0x11, 0xFA, 0x05, 0xFF, 0x83, 0xBF, 0x13, 0x31, 0x64, 0x55,
|
||||
0x66, 0x82, 0x46, 0x11, 0xFA, 0x03, 0xFF, 0x85, 0xCF, 0xFF, 0x2B, 0x31, 0x64, 0x65, 0x0A, 0x66,
|
||||
0x83, 0x45, 0x14, 0x71, 0xFD, 0x03, 0xFF, 0x85, 0xDF, 0xFF, 0xBF, 0x01, 0x12, 0x63, 0x56, 0x66,
|
||||
0x81, 0x21, 0xC8, 0x05, 0xFF, 0x83, 0x9F, 0x10, 0x43, 0x65, 0x0A, 0x66, 0x82, 0x34, 0x01, 0xB8,
|
||||
0x04, 0xFF, 0x84, 0xFD, 0xFF, 0x3B, 0x22, 0x63, 0x56, 0x66, 0x83, 0x36, 0x02, 0xB1, 0xDE, 0x04,
|
||||
0xFF, 0x83, 0xCF, 0x18, 0x31, 0x44, 0x04, 0x66, 0x80, 0x64, 0x03, 0x66, 0x85, 0x56, 0x46, 0x23,
|
||||
0x91, 0xFB, 0xCD, 0x04, 0xFF, 0x82, 0xBF, 0x28, 0x61, 0x58, 0x66, 0x82, 0x13, 0x91, 0xCD, 0x04,
|
||||
0xFF, 0x87, 0xCC, 0x8C, 0x10, 0x43, 0x64, 0x66, 0x55, 0x44, 0x04, 0x66, 0x83, 0x44, 0x34, 0x12,
|
||||
0xC9, 0x06, 0xFF, 0x82, 0x8B, 0x12, 0x63, 0x58, 0x66, 0x82, 0x16, 0x72, 0xDB, 0x04, 0xFF, 0x83,
|
||||
0xCE, 0xBF, 0x28, 0x31, 0x04, 0x44, 0x80, 0x65, 0x02, 0x66, 0x84, 0x45, 0x34, 0x23, 0x91, 0xFC,
|
||||
0x05, 0xFF, 0x82, 0xBE, 0x28, 0x61, 0x59, 0x66, 0x82, 0x13, 0x10, 0xB9, 0x06, 0xFF, 0x82, 0xAB,
|
||||
0x18, 0x31, 0x02, 0x33, 0x04, 0x44, 0x85, 0x33, 0x11, 0x31, 0xC9, 0xFF, 0xFC, 0x04, 0xFF, 0x82,
|
||||
0x3B, 0x01, 0x64, 0x5A, 0x66, 0x82, 0x21, 0x72, 0xFB, 0x03, 0xFF, 0x86, 0xCF, 0xFF, 0xEF, 0x9B,
|
||||
0x13, 0x22, 0x12, 0x03, 0x33, 0x8C, 0x23, 0x12, 0x33, 0xBA, 0xFE, 0xDF, 0xFF, 0xEF, 0xFC, 0xFF,
|
||||
0xBC, 0x18, 0x20, 0x5B, 0x66, 0x82, 0x36, 0x21, 0xC9, 0x03, 0xFF, 0x80, 0xDF, 0x02, 0xFF, 0x93,
|
||||
0xBF, 0x9B, 0x27, 0x22, 0x21, 0x11, 0x21, 0x71, 0xA9, 0xBB, 0xFD, 0xFF, 0xDF, 0xCF, 0xFD, 0xFF,
|
||||
0xCF, 0x29, 0x22, 0x63, 0x5C, 0x66, 0x82, 0x03, 0xA2, 0xFC, 0x02, 0xFF, 0x80, 0xCF, 0x03, 0xFF,
|
||||
0x88, 0xDE, 0xBC, 0xAA, 0xA9, 0xBA, 0xAA, 0xCA, 0xCD, 0xFC, 0x02, 0xFF, 0x81, 0xCF, 0xEF, 0x02,
|
||||
0xFF, 0x83, 0x9B, 0x11, 0x33, 0x63, 0x5C, 0x66, 0x84, 0x13, 0x01, 0xB9, 0xFF, 0xEF, 0x03, 0xFF,
|
||||
0x81, 0xCF, 0xFC, 0x04, 0xFF, 0x80, 0xCF, 0x05, 0xFF, 0x85, 0xBF, 0xCE, 0xFE, 0xBF, 0x18, 0x42,
|
||||
0x02, 0x66, 0x80, 0xA6, 0x03, 0xAA, 0x80, 0x6A, 0x57, 0x66, 0x83, 0x01, 0x00, 0x70, 0xCA, 0x04,
|
||||
0xFF, 0x80, 0xFE, 0x03, 0xFF, 0x80, 0xFD, 0x02, 0xFF, 0x80, 0xCF, 0x06, 0xFF, 0x82, 0xCF, 0x3A,
|
||||
0x31, 0x03, 0x66, 0x80, 0xCA, 0x03, 0xCC, 0x8B, 0xBB, 0xAA, 0x9A, 0x45, 0x13, 0x12, 0x11, 0x21,
|
||||
0x12, 0x11, 0x31, 0x64, 0x4D, 0x66, 0x85, 0x34, 0x01, 0x90, 0xCB, 0xFC, 0xDF, 0x02, 0xFF, 0x80,
|
||||
0xFC, 0x04, 0xFF, 0x81, 0xEF, 0xCF, 0x05, 0xFF, 0x83, 0xBD, 0x9B, 0x22, 0x63, 0x03, 0x66, 0x80,
|
||||
0xFA, 0x03, 0xFF, 0x85, 0xCF, 0xBC, 0x9A, 0x45, 0x23, 0x02, 0x04, 0x00, 0x81, 0x02, 0x31, 0x4D,
|
||||
0x66, 0x80, 0x16, 0x02, 0x20, 0x80, 0x91, 0x02, 0xFB, 0x02, 0xFF, 0x83, 0xCF, 0xFC, 0xFF, 0xDF,
|
||||
0x05, 0xFF, 0x85, 0xDF, 0xFF, 0xCF, 0x9B, 0x01, 0x41, 0x04, 0x66, 0x80, 0xFA, 0x03, 0xFF, 0x84,
|
||||
0xFE, 0xBC, 0xAB, 0x9A, 0x14, 0x06, 0x00, 0x81, 0x10, 0x63, 0x4C, 0x66, 0x87, 0x11, 0x12, 0x11,
|
||||
0x10, 0xB9, 0xFB, 0xFF, 0xFE, 0x03, 0xFF, 0x80, 0xFD, 0x05, 0xFF, 0x84, 0xBE, 0xBC, 0x8A, 0x23,
|
||||
0x32, 0x05, 0x66, 0x88, 0xFA, 0xFF, 0xEF, 0xFF, 0xDF, 0xBC, 0xBB, 0x8A, 0x37, 0x07, 0x00, 0x80,
|
||||
0x31, 0x4F, 0x66, 0x88, 0x13, 0x21, 0xB8, 0xDC, 0xEE, 0xFB, 0xDF, 0xFC, 0xCF, 0x04, 0xFF, 0x84,
|
||||
0xDF, 0xBC, 0x18, 0x21, 0x33, 0x06, 0x66, 0x80, 0xFA, 0x03, 0xFF, 0x85, 0xCF, 0xCB, 0xBB, 0x9A,
|
||||
0x28, 0x22, 0x05, 0x00, 0x82, 0x10, 0x02, 0x63, 0x4F, 0x66, 0x85, 0x13, 0x12, 0x88, 0xB9, 0xCB,
|
||||
0xFE, 0x03, 0xFF, 0x86, 0xEE, 0xCF, 0xBC, 0x6A, 0x28, 0x11, 0x63, 0x07, 0x66, 0x80, 0xFA, 0x04,
|
||||
0xFF, 0x84, 0xCD, 0xBC, 0xAA, 0x78, 0x12, 0x04, 0x22, 0x80, 0x02, 0x02, 0x00, 0x80, 0x30, 0x50,
|
||||
0x66, 0x8D, 0x33, 0x12, 0x11, 0x98, 0xAA, 0xBB, 0x9A, 0x99, 0x9A, 0x99, 0x38, 0x01, 0x11, 0x63,
|
||||
0x08, 0x66, 0x80, 0xFA, 0x03, 0xFF, 0x8E, 0xDF, 0xFF, 0xBC, 0xAB, 0x79, 0x38, 0x12, 0x11, 0x21,
|
||||
0x11, 0x20, 0x00, 0x20, 0x10, 0x63, 0x50, 0x66, 0x84, 0x36, 0x33, 0x12, 0x21, 0x22, 0x02, 0x11,
|
||||
0x02, 0x12, 0x82, 0x11, 0x33, 0x63, 0x09, 0x66, 0x80, 0xFA, 0x06, 0xFF, 0x81, 0xCF, 0xBC, 0x02,
|
||||
0xBB, 0x80, 0xBA, 0x05, 0xAA, 0x81, 0x99, 0x6A, 0x53, 0x66, 0x85, 0x13, 0x33, 0x43, 0x46, 0x33,
|
||||
0x43, 0x0C, 0x66, 0x80, 0xFA, 0x0D, 0xFF, 0x84, 0xDF, 0xEF, 0xFD, 0xDE, 0xAC, 0x4A, 0x66, 0x82,
|
||||
0x36, 0x33, 0x32, 0x06, 0x66, 0x81, 0x46, 0x44, 0x04, 0x66, 0x81, 0x46, 0x64, 0x0A, 0x66, 0x80,
|
||||
0xFA, 0x11, 0xFF, 0x80, 0xAF, 0x49, 0x66, 0x80, 0x26, 0x02, 0x11, 0x80, 0x12, 0x03, 0x22, 0x81,
|
||||
0x11, 0x12, 0x02, 0x11, 0x80, 0x22, 0x02, 0x12, 0x80, 0x11, 0x02, 0x21, 0x04, 0x11, 0x83, 0x32,
|
||||
0x21, 0x11, 0x63, 0x03, 0x66, 0x80, 0xFA, 0x11, 0xFF, 0x80, 0xAF, 0x49, 0x66, 0x8C, 0x13, 0xA9,
|
||||
0xAB, 0x9A, 0x85, 0x87, 0x58, 0x86, 0x88, 0x77, 0x99, 0x88, 0x78, 0x04, 0x99, 0x88, 0xA9, 0x9A,
|
||||
0x99, 0x89, 0x87, 0x18, 0x17, 0x22, 0x62, 0x02, 0x66, 0x80, 0xFA, 0x11, 0xFF, 0x80, 0xAF, 0x49,
|
||||
0x66, 0x87, 0x21, 0xFB, 0xDF, 0xCC, 0xDC, 0xCC, 0xDD, 0xDC, 0x02, 0xCD, 0x8B, 0xCB, 0xEC, 0xCE,
|
||||
0xFC, 0xCF, 0xBD, 0xCC, 0xCB, 0xBE, 0xCB, 0xBD, 0xCC, 0x02, 0xBC, 0x81, 0x1A, 0x60, 0x02, 0x66,
|
||||
0x80, 0xFA, 0x11, 0xFF, 0x80, 0xAF, 0x49, 0x66, 0x89, 0x21, 0xFB, 0xCF, 0xEC, 0xFF, 0xFD, 0xFF,
|
||||
0xFB, 0xCF, 0xDF, 0x04, 0xFF, 0x02, 0xCF, 0x03, 0xFF, 0x81, 0xDD, 0xED, 0x02, 0xFF, 0x82, 0xCE,
|
||||
0x1B, 0x62, 0x02, 0x66, 0x80, 0xFA, 0x11, 0xFF, 0x80, 0xAF, 0x49, 0x66, 0x82, 0x22, 0xCA, 0xCF,
|
||||
0x02, 0xFF, 0x84, 0xDB, 0xFF, 0xFE, 0xFF, 0xEF, 0x05, 0xFF, 0x85, 0xDF, 0xFF, 0xFD, 0xFF, 0xCE,
|
||||
0xDF, 0x03, 0xFF, 0x81, 0x1B, 0x61, 0x02, 0x66, 0x80, 0xFA, 0x11, 0xFF, 0x80, 0xAF, 0x49, 0x66,
|
||||
0x82, 0x13, 0xB8, 0xCF, 0x02, 0xFF, 0x80, 0xDC, 0x0B, 0xFF, 0x84, 0xFE, 0xFF, 0xBF, 0xBD, 0xFD,
|
||||
0x02, 0xFF, 0x81, 0x2A, 0x61, 0x02, 0x66, 0x80, 0xFA, 0x11, 0xFF, 0x80, 0xAF, 0x3B, 0x66, 0x80,
|
||||
0xA6, 0x05, 0xBB, 0x80, 0xAB, 0x03, 0xAA, 0x85, 0x69, 0x65, 0x66, 0x46, 0x13, 0xB9, 0x03, 0xFF,
|
||||
0x80, 0xEB, 0x0B, 0xFF, 0x82, 0xFD, 0xFF, 0xCE, 0x04, 0xFF, 0x81, 0x2A, 0x61, 0x02, 0x66, 0x80,
|
||||
0xFA, 0x11, 0xFF, 0x80, 0xAF, 0x3B, 0x66, 0x80, 0xB6, 0x07, 0xFF, 0x8B, 0xBC, 0xBB, 0xAB, 0x99,
|
||||
0x65, 0x12, 0x21, 0xFA, 0xFF, 0xEE, 0xFF, 0xFC, 0x02, 0xFF, 0x80, 0xDF, 0x04, 0xFF, 0x80, 0xFD,
|
||||
0x04, 0xFF, 0x02, 0xCF, 0x04, 0xFF, 0x81, 0x2A, 0x61, 0x02, 0x66, 0x80, 0xFA, 0x11, 0xFF, 0x80,
|
||||
0xAF, 0x3B, 0x66, 0x82, 0xB6, 0xFF, 0xFD, 0x05, 0xFF, 0x89, 0xEE, 0xBB, 0xBC, 0x9A, 0x89, 0x12,
|
||||
0x00, 0xC9, 0xFF, 0xEF, 0x03, 0xFF, 0x86, 0xBD, 0xBA, 0xAA, 0xBB, 0xCB, 0xBC, 0xAB, 0x03, 0xBB,
|
||||
0x81, 0xAB, 0xAA, 0x04, 0xFF, 0x82, 0xDF, 0x0A, 0xA1, 0x02, 0xBB, 0x80, 0xFB, 0x11, 0xFF, 0x80,
|
||||
0xAF, 0x3B, 0x66, 0x80, 0xB6, 0x08, 0xFF, 0x87, 0xCF, 0xBC, 0xAB, 0x9A, 0x17, 0x22, 0xC7, 0xCF,
|
||||
0x03, 0xFF, 0x87, 0xCD, 0x3A, 0x21, 0x20, 0x00, 0x12, 0x13, 0x01, 0x02, 0x00, 0x83, 0x11, 0x20,
|
||||
0x22, 0xFB, 0x02, 0xFF, 0x84, 0xFD, 0xFF, 0x2A, 0x90, 0xFC, 0x08, 0xFF, 0x80, 0xCF, 0x0A, 0xFF,
|
||||
0x80, 0xAF, 0x3B, 0x66, 0x80, 0xB6, 0x07, 0xFF, 0x89, 0xFE, 0xEF, 0xCD, 0xBB, 0x9A, 0x27, 0x20,
|
||||
0xB8, 0xFE, 0xDF, 0x02, 0xFF, 0x84, 0x9C, 0x21, 0x22, 0x20, 0x22, 0x03, 0x02, 0x82, 0x20, 0x22,
|
||||
0x20, 0x02, 0x02, 0x86, 0xFB, 0xFF, 0xDD, 0xFF, 0xCF, 0x09, 0xB1, 0x09, 0xFF, 0x80, 0xDF, 0x0A,
|
||||
0xFF, 0x80, 0xAF, 0x3B, 0x66, 0x80, 0xB6, 0x09, 0xFF, 0x85, 0xCC, 0xBB, 0x9A, 0x27, 0x02, 0xB3,
|
||||
0x04, 0xFF, 0x81, 0x8B, 0x22, 0x02, 0x00, 0x02, 0x20, 0x02, 0x22, 0x81, 0x20, 0x00, 0x02, 0x02,
|
||||
0x81, 0x12, 0xFB, 0x03, 0xFF, 0x82, 0xEF, 0x29, 0xB1, 0x09, 0xFF, 0x83, 0xBF, 0xFC, 0xCF, 0xFC,
|
||||
0x07, 0xFF, 0x80, 0xAF, 0x3B, 0x66, 0x80, 0xB6, 0x08, 0xFF, 0x86, 0xFD, 0xBC, 0xBB, 0xAA, 0x79,
|
||||
0x21, 0xC3, 0x04, 0xFF, 0x82, 0xAC, 0x02, 0x20, 0x02, 0x22, 0x80, 0x02, 0x04, 0x00, 0x83, 0x02,
|
||||
0x22, 0x30, 0xFC, 0x03, 0xFF, 0x82, 0xDF, 0x27, 0xC1, 0x07, 0xFF, 0x86, 0xCF, 0xFF, 0xBF, 0xFC,
|
||||
0xBE, 0xFB, 0xBB, 0x06, 0xFF, 0x80, 0xAF, 0x3B, 0x66, 0x80, 0xB6, 0x09, 0xFF, 0x85, 0xCC, 0xBC,
|
||||
0xAB, 0x99, 0x03, 0xA1, 0x04, 0xFF, 0x80, 0xBF, 0x03, 0x22, 0x80, 0x00, 0x02, 0x22, 0x80, 0x00,
|
||||
0x02, 0x22, 0x80, 0x02, 0x02, 0x22, 0x80, 0xFC, 0x03, 0xFF, 0x84, 0xCF, 0x08, 0xC8, 0xFF, 0xFD,
|
||||
0x08, 0xFF, 0x83, 0xBF, 0xEC, 0xFE, 0xCC, 0x06, 0xFF, 0x80, 0xAF, 0x3B, 0x66, 0x80, 0xB6, 0x0B,
|
||||
0xFF, 0x84, 0xEE, 0xCD, 0x2A, 0xA0, 0xEF, 0x03, 0xFF, 0x8D, 0xCF, 0x28, 0xA7, 0xAA, 0x9A, 0x99,
|
||||
0x98, 0x99, 0x77, 0x88, 0x77, 0x17, 0x72, 0xFC, 0x03, 0xFF, 0x83, 0xCF, 0x03, 0xFA, 0xFE, 0x07,
|
||||
0xFF, 0x86, 0xBC, 0xFF, 0xAC, 0xEB, 0xEC, 0xFF, 0xCF, 0x05, 0xFF, 0x80, 0xAF, 0x3B, 0x66, 0x80,
|
||||
0xB6, 0x0D, 0xFF, 0x8C, 0x7C, 0x80, 0xFC, 0xCF, 0xFF, 0xFC, 0xFF, 0x09, 0xA3, 0xEC, 0xFF, 0xFE,
|
||||
0xCD, 0x03, 0xCC, 0x83, 0xBB, 0x7B, 0x80, 0xFC, 0x03, 0xFF, 0x82, 0xAF, 0x12, 0xFB, 0x05, 0xFF,
|
||||
0x80, 0xCF, 0x02, 0xFF, 0x86, 0xCC, 0xBF, 0xBA, 0xBB, 0xAA, 0xFE, 0xBF, 0x05, 0xFF, 0x80, 0xAF,
|
||||
0x3B, 0x66, 0x80, 0xB6, 0x0D, 0xFF, 0x82, 0xBF, 0x10, 0xFB, 0x04, 0xFF, 0x82, 0x7A, 0x32, 0xFB,
|
||||
0x06, 0xFF, 0x83, 0xCF, 0x1A, 0xA1, 0xFC, 0x03, 0xFF, 0x82, 0x9F, 0x10, 0xFC, 0x07, 0xFF, 0x83,
|
||||
0xBC, 0xBA, 0xBB, 0xBA, 0x02, 0xCB, 0x80, 0xCC, 0x06, 0xFF, 0x80, 0xAF, 0x3B, 0x66, 0x80, 0xB6,
|
||||
0x0D, 0xFF, 0x82, 0xCF, 0x23, 0xCA, 0x04, 0xFF, 0x82, 0xAC, 0x01, 0xC8, 0x06, 0xFF, 0x82, 0x9C,
|
||||
0x12, 0xDA, 0x02, 0xFD, 0x02, 0xFF, 0x82, 0x8C, 0x72, 0xFC, 0x03, 0xFF, 0x80, 0xFC, 0x02, 0xFF,
|
||||
0x89, 0xBC, 0xAA, 0xBB, 0xCB, 0xAA, 0xFB, 0xCF, 0xBB, 0xFF, 0xCB, 0x04, 0xFF, 0x80, 0xAF, 0x3B,
|
||||
0x66, 0x80, 0xB6, 0x0D, 0xFF, 0x82, 0xAF, 0x23, 0xB7, 0x04, 0xFF, 0x84, 0xCC, 0x28, 0x80, 0xFB,
|
||||
0xFE, 0x02, 0xFF, 0x84, 0xCF, 0xCD, 0x09, 0xA1, 0xFD, 0x04, 0xFF, 0x81, 0x7B, 0x80, 0x02, 0xFF,
|
||||
0x84, 0xFE, 0xFF, 0xFC, 0xFF, 0xAF, 0x02, 0xBA, 0x80, 0xAC, 0x02, 0xBB, 0x85, 0xCB, 0xAC, 0xAA,
|
||||
0xBE, 0xAA, 0xFC, 0x03, 0xFF, 0x80, 0xAF, 0x3B, 0x66, 0x80, 0xB6, 0x0D, 0xFF, 0x82, 0xAF, 0x21,
|
||||
0x90, 0x05, 0xFF, 0x8A, 0x7B, 0x02, 0x82, 0xA9, 0xCB, 0xBC, 0x8A, 0x78, 0x01, 0xD8, 0xFD, 0x03,
|
||||
0xFF, 0x82, 0xDF, 0x09, 0xB1, 0x04, 0xFF, 0x8C, 0xBC, 0xFE, 0xAC, 0xBA, 0xA9, 0xBC, 0xBA, 0xBB,
|
||||
0xAB, 0xBB, 0xAA, 0xAC, 0xCB, 0x04, 0xFF, 0x80, 0xAF, 0x3B, 0x66, 0x80, 0xB6, 0x0E, 0xFF, 0x83,
|
||||
0x3A, 0x32, 0xBB, 0xFD, 0x02, 0xFF, 0x82, 0xFE, 0xAD, 0x3A, 0x02, 0x12, 0x87, 0x37, 0x22, 0x11,
|
||||
0x22, 0x97, 0xFC, 0xFF, 0xFC, 0x02, 0xFF, 0x82, 0xBF, 0x03, 0xC3, 0x04, 0xFF, 0x8C, 0xCE, 0xFF,
|
||||
0xBC, 0xAA, 0x7A, 0xA9, 0xAA, 0xA9, 0x9B, 0xA9, 0xBA, 0xBC, 0xFC, 0x04, 0xFF, 0x80, 0xAF, 0x3B,
|
||||
0x66, 0x80, 0xB6, 0x0A, 0xFF, 0x80, 0xED, 0x03, 0xFF, 0x82, 0xBF, 0x03, 0xC9, 0x05, 0xFF, 0x82,
|
||||
0xCF, 0xAB, 0x18, 0x02, 0x31, 0x85, 0xA8, 0xBB, 0xCC, 0xFD, 0xFF, 0xFE, 0x02, 0xFF, 0x82, 0x9C,
|
||||
0x22, 0xFB, 0x02, 0xFF, 0x80, 0xDF, 0x02, 0xFF, 0x8C, 0xAE, 0xAA, 0xBA, 0x9B, 0xA8, 0xBC, 0xBA,
|
||||
0xAB, 0x8A, 0xA9, 0xCA, 0xBA, 0xFE, 0x03, 0xFF, 0x80, 0xAF, 0x3B, 0x66, 0x80, 0xB6, 0x0A, 0xFF,
|
||||
0x87, 0xFD, 0xFF, 0xCF, 0xFE, 0xBC, 0x3B, 0xA1, 0xFC, 0x04, 0xFF, 0x84, 0xFE, 0xDF, 0xBC, 0xBB,
|
||||
0xCC, 0x07, 0xFF, 0x82, 0xDF, 0x19, 0xA1, 0x04, 0xFF, 0x92, 0xBE, 0xDF, 0xBB, 0x9B, 0xAA, 0xBA,
|
||||
0xBB, 0x9B, 0x99, 0x9A, 0xA9, 0x9A, 0xB9, 0x99, 0xFB, 0xBE, 0xFD, 0xFF, 0xAC, 0x3B, 0x66, 0x80,
|
||||
0xB6, 0x0A, 0xFF, 0x87, 0xDD, 0xFF, 0xCF, 0xFE, 0xFF, 0xAF, 0x11, 0xC9, 0x02, 0xFF, 0x80, 0xFC,
|
||||
0x02, 0xFF, 0x80, 0xFC, 0x09, 0xFF, 0x84, 0xFD, 0xAF, 0x02, 0x92, 0xFC, 0x03, 0xFF, 0x92, 0xBF,
|
||||
0xCF, 0xAA, 0xBB, 0xAB, 0xA7, 0x89, 0x3A, 0x73, 0x79, 0xA3, 0xAA, 0xBA, 0xAA, 0xEB, 0xBC, 0xFF,
|
||||
0xCD, 0xAC, 0x3B, 0x66, 0x80, 0xB6, 0x0A, 0xFF, 0x88, 0xCF, 0xBC, 0xCF, 0xBD, 0xBC, 0xBD, 0x2A,
|
||||
0x80, 0xFB, 0x0E, 0xFF, 0x89, 0xBF, 0x1A, 0x91, 0xBB, 0xFF, 0xDF, 0xFB, 0xFF, 0xFD, 0xAB, 0x02,
|
||||
0xAA, 0x80, 0xAB, 0x02, 0x99, 0x8B, 0xAB, 0xA9, 0x79, 0x98, 0xAA, 0xA9, 0xAA, 0xAC, 0xDC, 0xFF,
|
||||
0xBC, 0xAC, 0x3B, 0x66, 0x80, 0xA6, 0x09, 0xFF, 0x8C, 0xCC, 0xEF, 0xFF, 0xBD, 0xBB, 0xBC, 0xEC,
|
||||
0xAC, 0x22, 0xB9, 0xFC, 0xFF, 0xDF, 0x05, 0xFF, 0x81, 0xFC, 0xDF, 0x03, 0xFF, 0x8B, 0xCF, 0x3A,
|
||||
0x12, 0xC8, 0xCC, 0xFF, 0xBC, 0xEB, 0xCF, 0xBB, 0xCD, 0xAB, 0x03, 0xAA, 0x8C, 0x99, 0x9A, 0x88,
|
||||
0x98, 0x88, 0x9A, 0x88, 0xAA, 0xBB, 0xAB, 0xCC, 0xFE, 0xAF, 0x3B, 0x66, 0x80, 0xA6, 0x0A, 0xFF,
|
||||
0x8A, 0xBF, 0xCB, 0xFC, 0xDB, 0xBF, 0xBB, 0x9B, 0x02, 0x72, 0xBA, 0xED, 0x0A, 0xFF, 0x96, 0xCF,
|
||||
0x8A, 0x11, 0x98, 0xBB, 0xCB, 0xFD, 0xFC, 0xFF, 0xBC, 0xDC, 0xCB, 0xAC, 0xBB, 0x9A, 0x99, 0x31,
|
||||
0x37, 0x89, 0x8A, 0x33, 0x89, 0x98, 0x02, 0xAA, 0x02, 0xAB, 0x81, 0xFB, 0xAC, 0x3B, 0x66, 0x80,
|
||||
0xA6, 0x08, 0xFF, 0x8E, 0xEF, 0xFE, 0xBE, 0xEB, 0xCB, 0xDD, 0xFF, 0xBC, 0xAB, 0x21, 0x22, 0x72,
|
||||
0xA9, 0xBB, 0xDD, 0x05, 0xFF, 0x9F, 0xDF, 0xCE, 0xBB, 0x3A, 0x12, 0x98, 0xBA, 0xBC, 0xAA, 0xBB,
|
||||
0xFC, 0xFF, 0xBC, 0xFF, 0xCC, 0xAB, 0xB9, 0x2A, 0x93, 0xA8, 0x23, 0x83, 0x1A, 0x31, 0x33, 0x88,
|
||||
0xA8, 0xAB, 0xB9, 0xBA, 0xFC, 0xAA, 0x3B, 0x66, 0x80, 0xA6, 0x08, 0xFF, 0x80, 0xBD, 0x02, 0xBB,
|
||||
0x8C, 0xDD, 0xBA, 0xEF, 0xCC, 0xBB, 0x7A, 0x71, 0x18, 0x22, 0x00, 0x82, 0xAA, 0xBB, 0x02, 0xCC,
|
||||
0x86, 0xFF, 0xCF, 0xBB, 0x9A, 0x17, 0x12, 0x97, 0x03, 0xAA, 0x93, 0xBA, 0xAB, 0xBB, 0xBA, 0xCF,
|
||||
0xBC, 0xAA, 0x8A, 0xA9, 0x3A, 0xA9, 0xAB, 0x37, 0xA9, 0x19, 0x31, 0x71, 0x82, 0x78, 0xBA, 0x02,
|
||||
0xBB, 0x81, 0xFC, 0xAB, 0x3B, 0x66, 0x81, 0xA6, 0xFB, 0x06, 0xFF, 0x83, 0xEE, 0xBF, 0xBA, 0xAB,
|
||||
0x02, 0xBB, 0x95, 0xAB, 0xBC, 0xAB, 0x99, 0x89, 0xA9, 0x03, 0x81, 0x23, 0x02, 0x21, 0x73, 0x77,
|
||||
0xA9, 0x79, 0x21, 0x20, 0x77, 0x93, 0x99, 0x88, 0x8A, 0x02, 0xBA, 0x80, 0xAA, 0x02, 0xBA, 0x81,
|
||||
0xCB, 0xBC, 0x02, 0xAA, 0x8B, 0xBA, 0x39, 0x87, 0x7A, 0x93, 0x87, 0x11, 0x38, 0x97, 0xA8, 0x89,
|
||||
0xCA, 0x02, 0xAB, 0x81, 0xFA, 0xAC, 0x3C, 0x66, 0x80, 0xBA, 0x06, 0xFF, 0x85, 0xBF, 0xFD, 0xCB,
|
||||
0xBC, 0xBB, 0xCC, 0x02, 0xAB, 0x91, 0x99, 0x7A, 0xAA, 0xA9, 0x19, 0x93, 0x99, 0x17, 0x22, 0x20,
|
||||
0x01, 0x22, 0x10, 0x12, 0x31, 0xA9, 0x9A, 0xB9, 0x03, 0xAA, 0x80, 0xBA, 0x02, 0xAB, 0x94, 0xAA,
|
||||
0xBA, 0xBD, 0xBA, 0x7A, 0xB8, 0x39, 0x32, 0x88, 0x79, 0x71, 0x79, 0x87, 0x77, 0x99, 0x73, 0xBB,
|
||||
0xAA, 0xBB, 0xFB, 0xAB, 0x3C, 0x66, 0x81, 0xA6, 0xFB, 0x06, 0xFF, 0x80, 0xCF, 0x02, 0xAA, 0xAD,
|
||||
0xBB, 0xAB, 0xA9, 0xAA, 0xA8, 0x8A, 0x99, 0x83, 0x79, 0xA8, 0x99, 0x37, 0x22, 0x81, 0x88, 0x38,
|
||||
0x93, 0x88, 0x32, 0x79, 0x7A, 0xA7, 0x8B, 0x77, 0x83, 0xAA, 0xA9, 0x9A, 0xA8, 0xAB, 0x9A, 0xA9,
|
||||
0x79, 0xB9, 0xAA, 0x88, 0xAA, 0x7A, 0x80, 0x7A, 0x72, 0x22, 0x33, 0xA3, 0xAA, 0xBA, 0x02, 0xCB,
|
||||
0x80, 0xAC, 0x3D, 0x66, 0x80, 0xCA, 0x06, 0xFF, 0x80, 0xCF, 0x03, 0xAB, 0x97, 0xAA, 0xA9, 0xAA,
|
||||
0xA9, 0x7A, 0x83, 0x88, 0xAA, 0x98, 0x89, 0x38, 0x83, 0x72, 0x21, 0x32, 0x33, 0x73, 0x81, 0x73,
|
||||
0x78, 0x13, 0x7A, 0x81, 0x99, 0x02, 0xA9, 0x95, 0x8A, 0xA7, 0x9A, 0xA9, 0xBB, 0x7A, 0xBA, 0x9A,
|
||||
0x78, 0x21, 0x11, 0x33, 0x27, 0x92, 0x38, 0x88, 0x77, 0x99, 0xA9, 0xB9, 0xCB, 0xAB, 0x3D, 0x66,
|
||||
0x81, 0xA6, 0xFC, 0x04, 0xFF, 0x86, 0xBC, 0xBD, 0xAA, 0xBC, 0xAB, 0xA9, 0xAA, 0x02, 0x89, 0x85,
|
||||
0x79, 0x93, 0xAA, 0x79, 0x17, 0x83, 0x02, 0x77, 0x8D, 0x21, 0x17, 0x72, 0x33, 0x87, 0x77, 0x38,
|
||||
0x17, 0x31, 0x89, 0x93, 0x9B, 0x93, 0x89, 0x02, 0xAA, 0x90, 0x9A, 0xA9, 0x7A, 0x38, 0x98, 0x28,
|
||||
0x13, 0x39, 0x81, 0x77, 0x18, 0x92, 0x89, 0x87, 0x73, 0xAA, 0xBA, 0x03, 0xAA, 0x3E, 0x66, 0x80,
|
||||
0xCA, 0x04, 0xFF, 0x93, 0xBF, 0xBB, 0xAA, 0x9A, 0xAB, 0xAA, 0x9A, 0x78, 0x18, 0x31, 0x71, 0xA7,
|
||||
0x13, 0x11, 0x13, 0x32, 0x38, 0x22, 0x98, 0x88, 0x02, 0x73, 0x93, 0x38, 0x77, 0x13, 0x71, 0x33,
|
||||
0x78, 0x9A, 0x97, 0xAA, 0xB9, 0xAA, 0x7A, 0x83, 0x37, 0x88, 0x79, 0x33, 0x21, 0x99, 0x27, 0x02,
|
||||
0x12, 0x84, 0x31, 0x38, 0x17, 0x73, 0x83, 0x02, 0xAA, 0x81, 0xBC, 0xAC, 0x3E, 0x66, 0x81, 0xA6,
|
||||
0xFC, 0x03, 0xFF, 0x80, 0xBC, 0x02, 0xCC, 0xAF, 0xAB, 0x9A, 0x39, 0x87, 0x11, 0x22, 0x20, 0x22,
|
||||
0x10, 0x21, 0x12, 0x01, 0x20, 0x73, 0x38, 0x33, 0x18, 0x11, 0x12, 0x13, 0x72, 0x22, 0x98, 0x22,
|
||||
0x7A, 0x37, 0x71, 0x89, 0x93, 0x9A, 0xAB, 0x99, 0x98, 0x78, 0x9A, 0x98, 0x21, 0x72, 0x08, 0x12,
|
||||
0x33, 0x12, 0x39, 0x32, 0x83, 0x88, 0xBA, 0xAA, 0x02, 0xAB, 0x3F, 0x66, 0x09, 0xAA, 0x87, 0xA9,
|
||||
0xAA, 0x01, 0x02, 0x11, 0x22, 0x20, 0x02, 0x02, 0x00, 0x86, 0x22, 0x11, 0x27, 0x20, 0x13, 0x31,
|
||||
0x20, 0x02, 0x22, 0x87, 0x11, 0x37, 0x22, 0x37, 0x98, 0x77, 0x89, 0x97, 0x03, 0xAA, 0x91, 0xA8,
|
||||
0x9A, 0x98, 0x88, 0x23, 0x20, 0x72, 0x01, 0x11, 0x82, 0x17, 0x21, 0x83, 0x39, 0xA8, 0xBA, 0xBC,
|
||||
0xAB, 0x4A, 0x66, 0x87, 0x01, 0xA9, 0xAA, 0x99, 0x79, 0x77, 0x23, 0x12, 0x02, 0x22, 0x81, 0x02,
|
||||
0x00, 0x03, 0x22, 0x02, 0x00, 0x80, 0x22, 0x02, 0x20, 0x84, 0x22, 0x82, 0x99, 0x77, 0x78, 0x02,
|
||||
0xA9, 0x90, 0xAA, 0x93, 0x89, 0x78, 0x23, 0x87, 0x03, 0x93, 0x23, 0x71, 0x83, 0x13, 0x31, 0x17,
|
||||
0x71, 0x89, 0xB8, 0x02, 0xAB, 0x4A, 0x66, 0x82, 0x12, 0xDB, 0xFD, 0x03, 0xCC, 0x85, 0xBC, 0xAB,
|
||||
0x9A, 0x78, 0x22, 0x11, 0x02, 0x20, 0x83, 0x22, 0x20, 0x22, 0x00, 0x02, 0x22, 0x85, 0x02, 0x22,
|
||||
0x20, 0x22, 0x32, 0xA5, 0x02, 0xAA, 0x91, 0xA9, 0x8A, 0xA9, 0x88, 0x28, 0x13, 0x33, 0x22, 0x82,
|
||||
0x31, 0x21, 0x87, 0x3A, 0x73, 0xA9, 0xB9, 0xBB, 0xAC, 0x4A, 0x66, 0x84, 0x31, 0xFC, 0xFF, 0xCF,
|
||||
0xDD, 0x03, 0xFF, 0x87, 0xDF, 0xBC, 0xBB, 0xAA, 0x99, 0xBA, 0xBB, 0x9A, 0x04, 0x88, 0x81, 0x13,
|
||||
0x03, 0x02, 0x00, 0x90, 0x02, 0x53, 0x66, 0xCA, 0xEC, 0xCF, 0xBC, 0x99, 0x23, 0x11, 0x21, 0x20,
|
||||
0x71, 0x21, 0x81, 0x39, 0x38, 0x02, 0xA9, 0x82, 0xCB, 0xAA, 0xAB, 0x4A, 0x66, 0x83, 0x30, 0xFC,
|
||||
0xBF, 0xDF, 0x08, 0xFF, 0x8F, 0xFD, 0xCB, 0xFE, 0xCE, 0xCB, 0xCD, 0xCC, 0xCD, 0xBC, 0xAB, 0xAA,
|
||||
0x89, 0x21, 0x43, 0x66, 0xFA, 0x02, 0xFF, 0x8F, 0xBF, 0x79, 0x17, 0x21, 0x33, 0x12, 0x13, 0x38,
|
||||
0x91, 0x18, 0x33, 0x87, 0x99, 0xAA, 0xBB, 0xAB, 0x4A, 0x66, 0x83, 0x31, 0xFC, 0xFF, 0xAD, 0x0A,
|
||||
0xFF, 0x84, 0xFE, 0xFF, 0xDF, 0xFF, 0xCF, 0x04, 0xFF, 0x84, 0xCF, 0x28, 0x43, 0x66, 0xFA, 0x02,
|
||||
0xFF, 0x8F, 0xCF, 0x9A, 0x79, 0x07, 0x32, 0x12, 0x31, 0x18, 0x32, 0x33, 0x83, 0x89, 0x9A, 0xA8,
|
||||
0xDB, 0xAC, 0x4A, 0x66, 0x83, 0x21, 0xFB, 0xFF, 0xBE, 0x06, 0xFF, 0x83, 0xCF, 0xFF, 0xCF, 0xFE,
|
||||
0x04, 0xFF, 0x81, 0xCF, 0xEF, 0x04, 0xFF, 0x83, 0x19, 0x41, 0x64, 0xCA, 0x02, 0xFF, 0x85, 0xBF,
|
||||
0x79, 0x11, 0x22, 0x00, 0x10, 0x02, 0x11, 0x87, 0x22, 0x83, 0xA7, 0x79, 0x71, 0xA9, 0xCA, 0xAC,
|
||||
0x49, 0x66, 0x84, 0x46, 0x22, 0xFA, 0xFF, 0xBF, 0x02, 0xFF, 0x81, 0xEB, 0xBF, 0x04, 0xFF, 0x81,
|
||||
0xDF, 0xFC, 0x05, 0xFF, 0x81, 0xBF, 0xFC, 0x02, 0xFF, 0x84, 0xCF, 0x28, 0x41, 0x64, 0xCA, 0x02,
|
||||
0xFF, 0x8F, 0xBF, 0x79, 0x11, 0x23, 0x22, 0x12, 0x87, 0x12, 0x18, 0x21, 0x72, 0x79, 0x73, 0x89,
|
||||
0xB9, 0xAC, 0x4A, 0x66, 0x81, 0x01, 0xFA, 0x04, 0xFF, 0x81, 0xCF, 0xFC, 0x02, 0xFF, 0x85, 0xEF,
|
||||
0xFF, 0xCF, 0xCC, 0xFD, 0xFB, 0x02, 0xFF, 0x82, 0xBF, 0xFE, 0xDF, 0x02, 0xFF, 0x84, 0xDF, 0x28,
|
||||
0x30, 0x64, 0xCA, 0x02, 0xFF, 0x8F, 0xBF, 0x97, 0x12, 0x33, 0x27, 0x72, 0x28, 0x01, 0x02, 0x12,
|
||||
0x31, 0x93, 0xAA, 0x98, 0xB9, 0xAC, 0x4A, 0x66, 0x81, 0x02, 0xFA, 0x08, 0xFF, 0x81, 0xEF, 0xCF,
|
||||
0x02, 0xFF, 0x82, 0xDC, 0xFF, 0xFC, 0x04, 0xFF, 0x80, 0xFE, 0x02, 0xFF, 0x83, 0x0A, 0x10, 0x54,
|
||||
0xCA, 0x02, 0xFF, 0x81, 0xCF, 0x39, 0x02, 0x22, 0x8B, 0x11, 0x00, 0x20, 0x21, 0x20, 0x31, 0x77,
|
||||
0xA7, 0x9B, 0xA9, 0xAA, 0xAB, 0x49, 0x66, 0x82, 0x36, 0x10, 0xFA, 0x08, 0xFF, 0x84, 0xBF, 0xFF,
|
||||
0xEF, 0xFF, 0xFC, 0x09, 0xFF, 0x83, 0x2A, 0x42, 0x64, 0xCA, 0x02, 0xFF, 0x8D, 0xCF, 0x79, 0x12,
|
||||
0x80, 0x98, 0x01, 0x31, 0x11, 0x01, 0x82, 0x33, 0xA8, 0x9A, 0xBA, 0x02, 0xAB, 0x49, 0x66, 0x84,
|
||||
0x36, 0x21, 0xFA, 0xFF, 0xCF, 0x04, 0xFF, 0x82, 0xDF, 0xFF, 0xDF, 0x04, 0xFF, 0x80, 0xFC, 0x06,
|
||||
0xFF, 0x85, 0xDF, 0xFF, 0x0A, 0x41, 0x66, 0xFA, 0x02, 0xFF, 0x88, 0xCF, 0x9A, 0x78, 0x81, 0x27,
|
||||
0x22, 0x72, 0x22, 0x03, 0x02, 0x12, 0x84, 0x87, 0x98, 0xA7, 0xBB, 0xAC, 0x4A, 0x66, 0x81, 0x13,
|
||||
0xE8, 0x0A, 0xFF, 0x81, 0xBE, 0xFF, 0x02, 0xFC, 0x07, 0xFF, 0x84, 0xCF, 0x29, 0x43, 0x66, 0xCA,
|
||||
0x03, 0xFF, 0x8E, 0x3A, 0x31, 0x13, 0x01, 0x12, 0x23, 0x00, 0x11, 0x31, 0x78, 0x87, 0xA8, 0x9A,
|
||||
0xAB, 0x9A, 0x4A, 0x66, 0x83, 0x24, 0xB7, 0xDF, 0xFC, 0x02, 0xFF, 0x81, 0xDD, 0xCF, 0x03, 0xFF,
|
||||
0x80, 0xBE, 0x05, 0xFF, 0x80, 0xDF, 0x05, 0xFF, 0x84, 0xCF, 0x19, 0x43, 0x64, 0xCA, 0x02, 0xFF,
|
||||
0x8F, 0xBF, 0x39, 0x20, 0x32, 0x21, 0x33, 0x01, 0x20, 0x72, 0x38, 0x83, 0xA9, 0xA8, 0x9A, 0xAA,
|
||||
0xAB, 0x4A, 0x66, 0x81, 0x26, 0x81, 0x02, 0x99, 0x80, 0xAA, 0x02, 0xA9, 0x86, 0xBB, 0xCB, 0xCC,
|
||||
0xFC, 0xCF, 0xFF, 0xFE, 0x02, 0xFF, 0x80, 0xCF, 0x06, 0xFF, 0x84, 0xCF, 0x18, 0x31, 0x64, 0xCA,
|
||||
0x02, 0xFF, 0x81, 0xBF, 0x77, 0x02, 0x02, 0x82, 0x20, 0x00, 0x11, 0x02, 0x12, 0x86, 0x32, 0xA8,
|
||||
0x87, 0xA9, 0x7A, 0xBA, 0xAA, 0x4A, 0x66, 0x80, 0x36, 0x02, 0x20, 0x8C, 0x02, 0x22, 0x02, 0x10,
|
||||
0x22, 0x11, 0x37, 0xA8, 0xAA, 0x9A, 0xB9, 0xBC, 0xCA, 0x03, 0xCC, 0x88, 0xBC, 0xCB, 0xFF, 0xCF,
|
||||
0xCC, 0x18, 0x32, 0x64, 0xCA, 0x02, 0xFF, 0x83, 0xCF, 0x99, 0x3A, 0x00, 0x02, 0x22, 0x89, 0x10,
|
||||
0x01, 0x81, 0x12, 0x71, 0x88, 0xA7, 0xAB, 0xBB, 0xAA, 0x42, 0x66, 0x80, 0x46, 0x06, 0x33, 0x84,
|
||||
0x44, 0x34, 0x13, 0x22, 0x02, 0x02, 0x01, 0x95, 0x10, 0x00, 0x11, 0x02, 0x22, 0x10, 0x21, 0x10,
|
||||
0x33, 0x72, 0x87, 0x38, 0x73, 0x33, 0x83, 0xA9, 0xAA, 0xBA, 0x18, 0x42, 0x66, 0xCA, 0x02, 0xFF,
|
||||
0x8F, 0xCF, 0x79, 0x13, 0x20, 0x12, 0x29, 0x00, 0x22, 0x72, 0x21, 0x71, 0x79, 0x83, 0xA7, 0xCC,
|
||||
0xAB, 0x41, 0x66, 0x86, 0x36, 0x12, 0x10, 0x00, 0x10, 0x11, 0x00, 0x02, 0x10, 0x88, 0x00, 0x10,
|
||||
0x22, 0x12, 0x00, 0x22, 0x12, 0x22, 0x12, 0x02, 0x11, 0x02, 0x01, 0x02, 0x20, 0x82, 0x02, 0x20,
|
||||
0x02, 0x02, 0x20, 0x87, 0x01, 0x02, 0x20, 0x12, 0x20, 0x53, 0x66, 0xCA, 0x02, 0xFF, 0x8F, 0xCF,
|
||||
0x28, 0x22, 0x20, 0x02, 0x73, 0x11, 0x21, 0x12, 0x33, 0x87, 0x38, 0x97, 0x9A, 0xBB, 0xAA, 0x41,
|
||||
0x66, 0x81, 0x23, 0x22, 0x0C, 0x00, 0x81, 0x22, 0x02, 0x03, 0x22, 0x80, 0x02, 0x02, 0x22, 0x81,
|
||||
0x00, 0x20, 0x02, 0x02, 0x02, 0x00, 0x88, 0x22, 0x11, 0x12, 0x21, 0x01, 0x52, 0xA9, 0xAA, 0xFB,
|
||||
0x02, 0xFF, 0x84, 0xBF, 0x78, 0x23, 0x72, 0x21, 0x02, 0x12, 0x88, 0x13, 0x32, 0x88, 0xA7, 0xA8,
|
||||
0x89, 0xBB, 0xAC, 0xAB, 0x3F, 0x66, 0x83, 0x96, 0x89, 0x17, 0x12, 0x0B, 0x00, 0x80, 0x01, 0x06,
|
||||
0x00, 0x82, 0x20, 0x00, 0x20, 0x02, 0x00, 0x85, 0x22, 0x20, 0x00, 0x02, 0x71, 0x87, 0x02, 0xAA,
|
||||
0x81, 0xCA, 0xCB, 0x04, 0xFF, 0x8F, 0xBF, 0x28, 0x01, 0x11, 0x31, 0x22, 0x23, 0x22, 0x30, 0x9A,
|
||||
0x73, 0x98, 0x87, 0xBA, 0xBB, 0xAB, 0x3E, 0x66, 0x85, 0xA6, 0xBA, 0x9A, 0x37, 0x13, 0x02, 0x19,
|
||||
0x00, 0x86, 0x22, 0x83, 0x97, 0xBB, 0xCB, 0xFC, 0xCF, 0x04, 0xFF, 0x82, 0xBF, 0x17, 0x10, 0x02,
|
||||
0x11, 0x8A, 0x00, 0x12, 0x71, 0x13, 0x88, 0x17, 0x81, 0xA8, 0x99, 0xBA, 0xAF, 0x3E, 0x66, 0x88,
|
||||
0xBA, 0xBB, 0xAA, 0x99, 0x33, 0x20, 0x00, 0x20, 0x02, 0x03, 0x22, 0x82, 0x20, 0x02, 0x20, 0x02,
|
||||
0x22, 0x80, 0x02, 0x0C, 0x00, 0x85, 0x20, 0x12, 0x72, 0xA9, 0xAA, 0xCC, 0x06, 0xFF, 0x85, 0xBF,
|
||||
0x27, 0x21, 0x13, 0x02, 0x22, 0x02, 0x12, 0x87, 0x77, 0x38, 0x83, 0x98, 0xA9, 0x97, 0xBB, 0xAC,
|
||||
0x3D, 0x66, 0x86, 0xB6, 0xFC, 0xCC, 0xBC, 0x89, 0x37, 0x01, 0x02, 0x22, 0x81, 0x31, 0x77, 0x02,
|
||||
0x37, 0x88, 0x13, 0x10, 0x12, 0x21, 0x01, 0x22, 0x20, 0x22, 0x00, 0x02, 0x22, 0x02, 0x00, 0x02,
|
||||
0x22, 0x02, 0x00, 0x88, 0x20, 0x02, 0x10, 0x72, 0x78, 0xAA, 0xBB, 0xFC, 0xFD, 0x04, 0xFF, 0x86,
|
||||
0xBF, 0x27, 0x01, 0x31, 0x21, 0x22, 0x02, 0x02, 0x11, 0x81, 0x87, 0x37, 0x02, 0x99, 0x82, 0xA8,
|
||||
0xAB, 0xAC, 0x3D, 0x66, 0x91, 0xCA, 0xCF, 0xFF, 0xBF, 0xAA, 0x19, 0x01, 0x11, 0xA7, 0xBA, 0xCB,
|
||||
0xBC, 0xBB, 0x0A, 0x80, 0xA9, 0xAA, 0x8A, 0x03, 0xAA, 0x02, 0x99, 0x83, 0x79, 0x87, 0x78, 0x37,
|
||||
0x02, 0x33, 0x80, 0x21, 0x02, 0x22, 0x85, 0x21, 0x73, 0x99, 0xAA, 0xBB, 0xFC, 0x05, 0xFF, 0x8C,
|
||||
0xBF, 0x27, 0x02, 0x22, 0x10, 0x22, 0x12, 0x93, 0x17, 0xA3, 0x89, 0x77, 0x98, 0x02, 0xAA, 0x80,
|
||||
0xAB, 0x3C, 0x66, 0x81, 0xA6, 0xFC, 0x02, 0xFF, 0x85, 0xCF, 0xBB, 0x8A, 0x98, 0xBA, 0xDC, 0x03,
|
||||
0xFF, 0x8A, 0xAF, 0x27, 0x22, 0x11, 0x12, 0x31, 0xCA, 0xDC, 0xCC, 0xDC, 0xDF, 0x02, 0xCD, 0x81,
|
||||
0xCC, 0xBC, 0x04, 0xBB, 0x81, 0xAA, 0xBA, 0x02, 0xBB, 0x80, 0xCB, 0x02, 0xCC, 0x94, 0xBD, 0xBB,
|
||||
0xAB, 0xFB, 0xBC, 0xAB, 0x13, 0x01, 0x22, 0x31, 0x18, 0x22, 0x31, 0x71, 0x89, 0x98, 0xAA, 0xBA,
|
||||
0xAA, 0xCB, 0xAC, 0x3C, 0x66, 0x80, 0xB6, 0x03, 0xFF, 0x83, 0xCF, 0xAB, 0xAA, 0xCA, 0x04, 0xFF,
|
||||
0x8A, 0xBD, 0x3A, 0x10, 0xAA, 0x79, 0x27, 0x00, 0x82, 0xAA, 0x98, 0xCB, 0x0E, 0xFF, 0x02, 0xCC,
|
||||
0x94, 0x9B, 0x97, 0x33, 0xB9, 0x9A, 0x38, 0x98, 0x07, 0x31, 0x01, 0x00, 0x02, 0x22, 0x10, 0x77,
|
||||
0x79, 0x9A, 0xA9, 0xCA, 0xBD, 0xAB, 0x3C, 0x66, 0x80, 0xCA, 0x04, 0xFF, 0x82, 0xBC, 0xBA, 0xFD,
|
||||
0x03, 0xFF, 0x8D, 0xAC, 0x39, 0x00, 0x72, 0xFC, 0xCF, 0xBC, 0x8A, 0x11, 0x22, 0x12, 0xB8, 0xFB,
|
||||
0xEE, 0x0A, 0xFF, 0x8E, 0xEF, 0xCE, 0xAA, 0xBB, 0x9A, 0xBA, 0x39, 0xA8, 0x8A, 0x38, 0x37, 0x11,
|
||||
0x22, 0x23, 0x12, 0x02, 0x02, 0x87, 0x32, 0x37, 0x89, 0xA9, 0x9A, 0xBA, 0xBC, 0xAB, 0x3C, 0x66,
|
||||
0x80, 0xFA, 0x04, 0xFF, 0x80, 0xDC, 0x04, 0xFF, 0x8E, 0xCF, 0xAB, 0x79, 0x20, 0xA2, 0xFE, 0xDF,
|
||||
0xFF, 0xDE, 0xAB, 0x18, 0x22, 0x20, 0xA8, 0xBB, 0x0A, 0xFF, 0x92, 0xBF, 0xFB, 0xBC, 0xAB, 0xAA,
|
||||
0x99, 0x3A, 0x99, 0x18, 0x82, 0x28, 0x32, 0x88, 0x23, 0x32, 0x18, 0x21, 0x83, 0x39, 0x02, 0xA9,
|
||||
0x83, 0x9A, 0xB9, 0xFE, 0xAF, 0x3C, 0x66, 0x80, 0xFB, 0x04, 0xFF, 0x80, 0xFD, 0x05, 0xFF, 0x85,
|
||||
0xBC, 0xBD, 0x08, 0xA2, 0xFF, 0xBC, 0x03, 0xFF, 0x87, 0xAB, 0x39, 0x01, 0x12, 0xA9, 0xCB, 0xFF,
|
||||
0xCF, 0x05, 0xFF, 0x86, 0xED, 0xFF, 0xCF, 0xFD, 0xCF, 0xAB, 0xA9, 0x02, 0x87, 0x85, 0x33, 0x28,
|
||||
0x72, 0x18, 0x12, 0x11, 0x02, 0x20, 0x81, 0x03, 0x10, 0x02, 0x33, 0x85, 0xA9, 0xAA, 0xBA, 0xCB,
|
||||
0xEC, 0xAF, 0x3C, 0x66, 0x80, 0xFB, 0x0A, 0xFF, 0x83, 0xBC, 0xBF, 0x08, 0xB1, 0x04, 0xFF, 0x8A,
|
||||
0xFC, 0xCC, 0xBC, 0x9B, 0x18, 0x10, 0x81, 0xBB, 0x7B, 0xBB, 0xBA, 0x03, 0xFF, 0x9A, 0xFD, 0xBB,
|
||||
0xFF, 0xFC, 0xAB, 0xCB, 0x9A, 0xAA, 0x78, 0x39, 0x17, 0x11, 0x17, 0x01, 0x02, 0x11, 0x32, 0x22,
|
||||
0x72, 0x87, 0x88, 0xAA, 0xA9, 0x9A, 0xBA, 0xBB, 0xAC, 0x3C, 0x66, 0x80, 0xFB, 0x0B, 0xFF, 0x82,
|
||||
0xBF, 0x27, 0xC3, 0x04, 0xFF, 0x80, 0xFC, 0x02, 0xFF, 0x88, 0xCF, 0xBC, 0x9A, 0x22, 0x12, 0x21,
|
||||
0x12, 0xA3, 0xFE, 0x03, 0xFF, 0x81, 0xCC, 0xBF, 0x02, 0xBB, 0x95, 0xCF, 0xAA, 0xA9, 0xAA, 0x79,
|
||||
0x89, 0x33, 0x12, 0x31, 0x02, 0x11, 0x81, 0x23, 0x20, 0x32, 0x33, 0xA9, 0x9A, 0xBA, 0xCB, 0xBC,
|
||||
0xAB, 0x3C, 0x66, 0x80, 0xFC, 0x0B, 0xFF, 0x82, 0xBF, 0x27, 0xB3, 0x03, 0xFF, 0x80, 0xFC, 0x05,
|
||||
0xFF, 0xA3, 0xCF, 0x8A, 0x23, 0x02, 0x22, 0x93, 0xAA, 0xBA, 0xCC, 0xDF, 0xFF, 0xCF, 0xCC, 0xCB,
|
||||
0xAC, 0xAB, 0x99, 0xA9, 0x79, 0x37, 0x89, 0x21, 0xA8, 0x27, 0x12, 0x83, 0x32, 0x83, 0x33, 0x03,
|
||||
0x87, 0xB9, 0xBA, 0xCA, 0xDF, 0xAB, 0x3C, 0x66, 0x80, 0xFC, 0x0A, 0xFF, 0x85, 0xCB, 0xBF, 0x28,
|
||||
0x91, 0xAA, 0xFD, 0x08, 0xFF, 0x83, 0xDF, 0xBC, 0xAA, 0x38, 0x03, 0x11, 0x9B, 0x83, 0xA8, 0xBA,
|
||||
0xAC, 0xDA, 0xEE, 0xBC, 0xAB, 0xA9, 0x8A, 0x98, 0x73, 0x79, 0x23, 0x11, 0x13, 0x81, 0x83, 0x31,
|
||||
0xA8, 0x39, 0x38, 0xA7, 0xCA, 0xAA, 0xFC, 0xFF, 0xAF, 0x3C, 0x66, 0x80, 0xFB, 0x0A, 0xFF, 0x86,
|
||||
0xCC, 0xBD, 0x8B, 0x01, 0x20, 0x88, 0xDB, 0x02, 0xFF, 0x80, 0xCF, 0x03, 0xFF, 0x81, 0xCF, 0xFC,
|
||||
0x02, 0xFF, 0x80, 0xBF, 0x02, 0xAA, 0x87, 0x79, 0x23, 0x02, 0x10, 0xA7, 0xBB, 0xFB, 0xCF, 0x02,
|
||||
0xBB, 0x92, 0x9A, 0x87, 0x89, 0x98, 0x7A, 0x22, 0x11, 0x93, 0x13, 0x99, 0x87, 0x3A, 0xA9, 0xB9,
|
||||
0xBC, 0xAA, 0xBD, 0xCA, 0xAF, 0x3C, 0x66, 0x80, 0xFB, 0x06, 0xFF, 0x80, 0xBC, 0x03, 0xFF, 0x87,
|
||||
0xBD, 0xAB, 0xBC, 0xAA, 0x23, 0x20, 0x93, 0xFB, 0x05, 0xFF, 0x80, 0xCF, 0x02, 0xFF, 0x8C, 0xDD,
|
||||
0xFF, 0xFD, 0xFF, 0xCC, 0xBC, 0x89, 0x11, 0x12, 0x32, 0xB9, 0xAC, 0xB9, 0x02, 0xAA, 0x8D, 0x93,
|
||||
0x87, 0x11, 0x97, 0x27, 0x30, 0x99, 0x27, 0x97, 0x18, 0x37, 0x87, 0x99, 0xBA, 0x02, 0xCB, 0x81,
|
||||
0xFC, 0xAF, 0x3C, 0x66, 0x80, 0xFB, 0x04, 0xFF, 0x87, 0xCF, 0xEB, 0xBB, 0xFF, 0xBA, 0xFF, 0xAC,
|
||||
0xBA, 0x02, 0xBB, 0x83, 0x88, 0x38, 0x02, 0xF9, 0x07, 0xFF, 0x80, 0xDF, 0x06, 0xFF, 0x86, 0xCC,
|
||||
0xBA, 0x9A, 0x28, 0x11, 0x23, 0xA9, 0x02, 0xAA, 0x91, 0x88, 0xAA, 0x9A, 0x78, 0x89, 0x32, 0x88,
|
||||
0x3A, 0x97, 0x88, 0x98, 0xAA, 0x7A, 0xA9, 0xFC, 0xBC, 0xFF, 0xAF, 0x3C, 0x66, 0x80, 0xFB, 0x04,
|
||||
0xFF, 0x81, 0xBF, 0xFA, 0x02, 0xFF, 0x82, 0xCB, 0xCF, 0x9A, 0x02, 0xBB, 0x85, 0x9A, 0xB9, 0xAB,
|
||||
0x01, 0xC8, 0xCF, 0x03, 0xFF, 0x80, 0xBF, 0x04, 0xFF, 0x80, 0xFE, 0x03, 0xFF, 0x81, 0xBF, 0xEB,
|
||||
0x02, 0xFF, 0x97, 0xBC, 0x29, 0x11, 0x72, 0x88, 0xBA, 0x3A, 0xB9, 0x7A, 0x88, 0x37, 0x72, 0x73,
|
||||
0x77, 0x79, 0xAA, 0xBA, 0xAA, 0x8A, 0xBA, 0xDA, 0xBB, 0xFF, 0xAF, 0x3C, 0x66, 0x80, 0xFB, 0x03,
|
||||
0xFF, 0x89, 0xFB, 0xDF, 0xFF, 0xCD, 0xCF, 0xBB, 0xAD, 0x99, 0xCA, 0xAC, 0x02, 0xAA, 0x83, 0x89,
|
||||
0x22, 0xC8, 0xEE, 0x03, 0xFF, 0x82, 0xDF, 0xCC, 0xFD, 0x06, 0xFF, 0x81, 0xBF, 0xFD, 0x03, 0xFF,
|
||||
0x93, 0xBC, 0xAB, 0x02, 0xA7, 0xAA, 0x1A, 0xA8, 0x89, 0x18, 0x33, 0x77, 0xA8, 0xAA, 0x78, 0x8A,
|
||||
0xA9, 0x7A, 0xA8, 0xBA, 0xDA, 0x02, 0xFF, 0x80, 0xAF, 0x3C, 0x66, 0x80, 0xFB, 0x03, 0xFF, 0x8E,
|
||||
0xDB, 0xBF, 0xDC, 0xAB, 0xCC, 0xCB, 0xAC, 0xAA, 0x98, 0x89, 0xBA, 0x79, 0x13, 0x20, 0xD8, 0x04,
|
||||
0xFF, 0x85, 0xCF, 0x98, 0xBA, 0xCB, 0xCD, 0xFE, 0x08, 0xFF, 0x90, 0xFE, 0xCF, 0x28, 0x30, 0xA8,
|
||||
0x1A, 0xA9, 0x89, 0xA9, 0x7A, 0x99, 0xA9, 0x9A, 0x79, 0x9A, 0xA9, 0xAA, 0x02, 0xBA, 0x80, 0xCB,
|
||||
0x02, 0xFF, 0x80, 0xAF, 0x3C, 0x66, 0x80, 0xFB, 0x04, 0xFF, 0x8D, 0xAD, 0xAB, 0xBB, 0xCF, 0xAA,
|
||||
0xAC, 0xA9, 0x8A, 0x88, 0xAB, 0x3A, 0x73, 0x22, 0xC8, 0x04, 0xFF, 0x89, 0xBF, 0x22, 0x12, 0x31,
|
||||
0xA9, 0xBB, 0xCC, 0xDF, 0xFF, 0xFD, 0x02, 0xFF, 0x80, 0xDF, 0x03, 0xFF, 0x85, 0x2A, 0x72, 0xA9,
|
||||
0x8A, 0x89, 0xA8, 0x02, 0x9A, 0x85, 0x78, 0x77, 0x87, 0x88, 0xA8, 0xBA, 0x02, 0xBB, 0x84, 0xCB,
|
||||
0xBC, 0xFC, 0xFF, 0xAF, 0x3C, 0x66, 0x80, 0xFB, 0x04, 0xFF, 0x83, 0xBF, 0xBC, 0xFB, 0xBF, 0x02,
|
||||
0xAA, 0x87, 0x9A, 0x97, 0xA9, 0x9B, 0xAA, 0x99, 0x22, 0xDA, 0x04, 0xFF, 0x88, 0xBF, 0x22, 0x73,
|
||||
0x23, 0x22, 0x32, 0x98, 0xBA, 0xCB, 0x07, 0xFF, 0x94, 0x8C, 0x12, 0xAA, 0x89, 0x9A, 0xA8, 0x89,
|
||||
0x9A, 0x81, 0x89, 0x98, 0x88, 0xAA, 0xA9, 0xAA, 0xBA, 0xCD, 0xBB, 0xFC, 0xFF, 0xAF, 0x3C, 0x66,
|
||||
0x80, 0xFB, 0x02, 0xFF, 0x8F, 0xCF, 0xFB, 0xAC, 0xBB, 0xBC, 0xCC, 0xAB, 0xBA, 0x7A, 0x39, 0x82,
|
||||
0x8A, 0x79, 0x01, 0x00, 0xFA, 0x04, 0xFF, 0x8B, 0xAF, 0x02, 0x38, 0x13, 0x22, 0x02, 0x21, 0x10,
|
||||
0x83, 0xB9, 0xCF, 0xFE, 0x04, 0xFF, 0x91, 0xBF, 0x02, 0x87, 0xAA, 0x9A, 0xAA, 0xB8, 0x8A, 0x97,
|
||||
0x9A, 0xB7, 0xAA, 0xBB, 0xAA, 0xBB, 0xBA, 0xDC, 0xCC, 0x02, 0xFF, 0x80, 0xAF, 0x3C, 0x66, 0x80,
|
||||
0xFB, 0x02, 0xFF, 0x9E, 0xCF, 0xDB, 0xBB, 0x9A, 0xBB, 0xAB, 0xAA, 0xA9, 0x38, 0x97, 0x37, 0x97,
|
||||
0x38, 0x13, 0x22, 0xFB, 0xEB, 0xFD, 0xFB, 0xFF, 0xBF, 0x02, 0x11, 0x88, 0x22, 0x72, 0x1A, 0x22,
|
||||
0x00, 0x81, 0xFB, 0x02, 0xFF, 0x80, 0xDF, 0x02, 0xFF, 0x8C, 0xCF, 0x27, 0x82, 0xBA, 0x9A, 0xBA,
|
||||
0xAA, 0x9A, 0xA9, 0xAA, 0xBA, 0xAA, 0xA9, 0x02, 0xBB, 0x80, 0xBA, 0x04, 0xFF, 0x80, 0xAF, 0x3C,
|
||||
0x66, 0x80, 0xFB, 0x03, 0xFF, 0x81, 0xAB, 0xBA, 0x02, 0xBC, 0x8C, 0x9B, 0xA8, 0x98, 0x87, 0xA9,
|
||||
0x7A, 0x98, 0x18, 0x23, 0x22, 0xFA, 0xFD, 0xFC, 0x02, 0xFF, 0x8B, 0xBF, 0x23, 0xA2, 0x38, 0x99,
|
||||
0x77, 0x07, 0x32, 0x98, 0xBA, 0xFF, 0xFD, 0x05, 0xFF, 0x88, 0x2A, 0xA2, 0xAC, 0xA9, 0x9A, 0xA9,
|
||||
0x9A, 0xAA, 0x77, 0x02, 0xAA, 0x81, 0xBB, 0xCA, 0x02, 0xCC, 0x80, 0xBB, 0x03, 0xFF, 0x80, 0xAF,
|
||||
0x3C, 0x66, 0x80, 0xFB, 0x03, 0xFF, 0x81, 0xAA, 0xBB, 0x03, 0xAB, 0x02, 0xAA, 0x87, 0x99, 0x39,
|
||||
0x88, 0x8A, 0x37, 0x78, 0x12, 0xFB, 0x02, 0xFF, 0x8A, 0xEF, 0xFF, 0xAF, 0x21, 0x83, 0x13, 0x23,
|
||||
0x22, 0x30, 0xBA, 0xDC, 0x07, 0xFF, 0x85, 0xCF, 0x28, 0xA0, 0xAC, 0xBA, 0x9B, 0x02, 0xA9, 0x89,
|
||||
0x9A, 0x78, 0xBB, 0xBA, 0xCD, 0xCB, 0xBA, 0xBB, 0xCC, 0xFE, 0x02, 0xFF, 0x80, 0xAF, 0x3C, 0x66,
|
||||
0x80, 0xFB, 0x02, 0xFF, 0x86, 0xBF, 0xAA, 0xBC, 0xAB, 0x9A, 0xCB, 0x8A, 0x02, 0x93, 0x86, 0x28,
|
||||
0x83, 0x87, 0x88, 0x2A, 0x32, 0xFC, 0x03, 0xFF, 0x87, 0xFC, 0xAF, 0x20, 0x22, 0x20, 0x12, 0x98,
|
||||
0xBA, 0x0A, 0xFF, 0x8A, 0x1A, 0x70, 0xBA, 0xBC, 0xAB, 0xA9, 0x9A, 0xAA, 0xAB, 0x9B, 0xA9, 0x03,
|
||||
0xBA, 0x82, 0xDF, 0xFF, 0xBF, 0x02, 0xFF, 0x80, 0xAF, 0x3C, 0x66, 0x80, 0xFB, 0x02, 0xFF, 0x82,
|
||||
0xAF, 0xBA, 0xCB, 0x02, 0xAB, 0x8A, 0xAA, 0x39, 0x31, 0x93, 0x18, 0x93, 0x11, 0x30, 0x1A, 0x31,
|
||||
0xFC, 0x04, 0xFF, 0x85, 0xAE, 0x22, 0x30, 0x88, 0xAA, 0xFC, 0x02, 0xFF, 0x81, 0xCF, 0xFE, 0x06,
|
||||
0xFF, 0x94, 0xFC, 0xAC, 0x22, 0x81, 0xAA, 0xCC, 0xBB, 0xAB, 0xAA, 0xCC, 0x9C, 0xAA, 0xA8, 0xCB,
|
||||
0xBC, 0xFC, 0xDF, 0xCF, 0xFD, 0xFF, 0xAF, 0x3C, 0x66, 0x80, 0xFB, 0x02, 0xFF, 0x90, 0xBC, 0x9B,
|
||||
0xA9, 0x99, 0xAC, 0x38, 0x97, 0x73, 0x13, 0x18, 0x22, 0x73, 0x33, 0x18, 0x81, 0xFC, 0xFD, 0x03,
|
||||
0xFF, 0x86, 0xAF, 0x99, 0xBA, 0xCD, 0xBC, 0xFF, 0xCF, 0x05, 0xFF, 0x80, 0xDD, 0x03, 0xFF, 0x8F,
|
||||
0xEE, 0x8C, 0x02, 0xB9, 0x9B, 0xCC, 0xAA, 0xBB, 0xBC, 0xBA, 0xBC, 0xCB, 0xBA, 0xFF, 0xBF, 0xFB,
|
||||
0x04, 0xFF, 0x80, 0xAF, 0x3C, 0x66, 0x80, 0xFA, 0x02, 0xFF, 0x02, 0xAB, 0x8D, 0x8A, 0xA8, 0xBC,
|
||||
0x18, 0xA9, 0x87, 0x39, 0x27, 0x22, 0x73, 0x38, 0x13, 0x81, 0xFC, 0x05, 0xFF, 0x80, 0xCC, 0x05,
|
||||
0xFF, 0x80, 0xDF, 0x06, 0xFF, 0x8E, 0xFE, 0xCC, 0xAB, 0x19, 0x71, 0xDB, 0xBC, 0xFF, 0xBB, 0xAB,
|
||||
0xCB, 0xAA, 0xCB, 0xBB, 0xFD, 0x02, 0xFF, 0x80, 0xEF, 0x04, 0xFF, 0x80, 0xAF, 0x3C, 0x66, 0x80,
|
||||
0xB6, 0x02, 0xFF, 0x81, 0xAB, 0xAA, 0x02, 0xBB, 0x02, 0xAA, 0x89, 0x9A, 0x73, 0x19, 0x77, 0x10,
|
||||
0x83, 0x38, 0x14, 0x32, 0xFC, 0x03, 0xFF, 0x80, 0xFD, 0x07, 0xFF, 0x80, 0xCF, 0x04, 0xFF, 0x02,
|
||||
0xFE, 0x84, 0xAB, 0x88, 0x23, 0x01, 0xB3, 0x03, 0xFF, 0x87, 0xBF, 0xBB, 0xFC, 0xBB, 0xBC, 0xCA,
|
||||
0xFF, 0xCB, 0x06, 0xFF, 0x80, 0xAF, 0x3D, 0x66, 0x82, 0xFB, 0xFF, 0xCF, 0x02, 0xAA, 0x8B, 0xA9,
|
||||
0x88, 0xAA, 0x97, 0x87, 0x8A, 0x01, 0x31, 0x32, 0x33, 0x13, 0x82, 0x04, 0xFF, 0x80, 0xFB, 0x07,
|
||||
0xFF, 0x80, 0xDF, 0x03, 0xFF, 0x87, 0xCC, 0xBB, 0x9A, 0x13, 0x11, 0x32, 0x64, 0xC6, 0x03, 0xFF,
|
||||
0x86, 0xCF, 0xBE, 0xCB, 0xFC, 0xBF, 0xFC, 0xFD, 0x07, 0xFF, 0x80, 0xAF, 0x3D, 0x66, 0x8C, 0xB9,
|
||||
0xFF, 0xBD, 0x9A, 0xAA, 0x77, 0xA8, 0x78, 0x22, 0x81, 0x3A, 0x20, 0x33, 0x02, 0x20, 0x81, 0x01,
|
||||
0xA7, 0x04, 0xFF, 0x80, 0xFC, 0x0A, 0xFF, 0x84, 0xCC, 0xAA, 0x37, 0x22, 0x11, 0x03, 0x66, 0x80,
|
||||
0xC6, 0x03, 0xFF, 0x83, 0xBB, 0xCD, 0xBB, 0xFB, 0x03, 0xFF, 0x80, 0xCD, 0x06, 0xFF, 0x80, 0xAF,
|
||||
0x3E, 0x66, 0x8F, 0xCB, 0xAC, 0xAB, 0xCA, 0x6A, 0x9A, 0x31, 0x17, 0x72, 0x18, 0x02, 0x12, 0x33,
|
||||
0x81, 0xA9, 0xFB, 0x02, 0xFF, 0x81, 0xCF, 0xFE, 0x05, 0xFF, 0x89, 0xFE, 0xFF, 0xDF, 0xCE, 0xBB,
|
||||
0xAB, 0x79, 0x11, 0x12, 0x63, 0x04, 0x66, 0x80, 0xC6, 0x03, 0xFF, 0x80, 0xBC, 0x0D, 0xFF, 0x80,
|
||||
0xAF, 0x3E, 0x66, 0x81, 0xB6, 0xAC, 0x02, 0xBB, 0x8A, 0xAA, 0x9A, 0x88, 0x8A, 0x38, 0x22, 0x80,
|
||||
0xBA, 0xBB, 0xCB, 0xFC, 0x03, 0xFF, 0x81, 0xCF, 0xFC, 0x05, 0xFF, 0x87, 0xCC, 0xDF, 0xAB, 0x39,
|
||||
0x13, 0x21, 0x11, 0x43, 0x06, 0x66, 0x80, 0xC6, 0x03, 0xFF, 0x80, 0xEF, 0x0D, 0xFF, 0x80, 0xAF,
|
||||
0x3F, 0x66, 0x89, 0xAA, 0xBA, 0xA5, 0xAA, 0x85, 0xB6, 0x6B, 0x13, 0x22, 0xB1, 0x02, 0xFF, 0x80,
|
||||
0xFE, 0x0A, 0xFF, 0x83, 0xCF, 0xBB, 0x7A, 0x13, 0x02, 0x11, 0x80, 0x33, 0x08, 0x66, 0x80, 0xCA,
|
||||
0x03, 0xFF, 0x83, 0xEF, 0xFF, 0xEF, 0xEB, 0x0A, 0xFF, 0x80, 0xAF, 0x41, 0x66, 0x87, 0xA6, 0x6A,
|
||||
0x46, 0xA6, 0x5A, 0x34, 0x20, 0xD9, 0x06, 0xFF, 0x81, 0xDF, 0xCF, 0x02, 0xFF, 0x87, 0xCF, 0xAB,
|
||||
0xAA, 0x8A, 0x13, 0x11, 0x32, 0x63, 0x0A, 0x66, 0x80, 0xCA, 0x11, 0xFF, 0x80, 0xAF, 0x46, 0x66,
|
||||
0x82, 0x36, 0x10, 0xFB, 0x03, 0xFF, 0x81, 0xFE, 0xDB, 0x02, 0xFF, 0x84, 0xEF, 0xBD, 0xBC, 0x35,
|
||||
0x22, 0x02, 0x11, 0x81, 0x31, 0x63, 0x0C, 0x66, 0x80, 0xC6, 0x11, 0xFF, 0x80, 0xAF, 0x46, 0x66,
|
||||
0x82, 0x16, 0x70, 0xFC, 0x03, 0xFF, 0x89, 0xFE, 0xDB, 0xFF, 0xEF, 0xCC, 0xBC, 0x7A, 0x01, 0x31,
|
||||
0x64, 0x0F, 0x66, 0x80, 0xC6, 0x11, 0xFF, 0x80, 0xAF, 0x46, 0x66, 0x81, 0x23, 0xA2, 0x02, 0xFF,
|
||||
0x89, 0xEF, 0xCC, 0xEB, 0xFC, 0xBC, 0xAB, 0x78, 0x44, 0x23, 0x31, 0x11, 0x66, 0x80, 0xC6, 0x11,
|
||||
0xFF, 0x80, 0xAF, 0x46, 0x66, 0x81, 0x21, 0xA1, 0x03, 0xFF, 0x86, 0xCD, 0xAA, 0x9A, 0x37, 0x03,
|
||||
0x11, 0x33, 0x13, 0x66, 0x80, 0xC6, 0x11, 0xFF, 0x80, 0xAF, 0x45, 0x66, 0x88, 0x46, 0x10, 0xC9,
|
||||
0xCC, 0xCF, 0xBC, 0x89, 0x11, 0x21, 0x02, 0x22, 0x80, 0x41, 0x14, 0x66, 0x80, 0xC6, 0x11, 0xFF,
|
||||
0x80, 0xAF, 0x46, 0x66, 0x87, 0x12, 0xA1, 0xAA, 0x89, 0x13, 0x22, 0x32, 0x64, 0x17, 0x66, 0x81,
|
||||
0xB6, 0xFC, 0x10, 0xFF, 0x80, 0xAF, 0x46, 0x66, 0x85, 0x26, 0x02, 0x12, 0x21, 0x11, 0x20, 0x12,
|
||||
0x66, 0x80, 0x64, 0x07, 0x66, 0x80, 0xCA, 0x10, 0xFF, 0x80, 0xAF, 0x46, 0x66, 0x81, 0x16, 0x22,
|
||||
0x03, 0x66, 0x80, 0x12, 0x10, 0x66, 0x86, 0x64, 0x36, 0x32, 0x31, 0x66, 0x34, 0x23, 0x02, 0x22,
|
||||
0x82, 0x30, 0xA5, 0xFC, 0x0F, 0xFF, 0x80, 0xAF, 0x46, 0x66, 0x81, 0x26, 0x63, 0x03, 0x66, 0x80,
|
||||
0x36, 0x05, 0x66, 0x80, 0x34, 0x04, 0x33, 0x82, 0x13, 0x22, 0x12, 0x02, 0x11, 0x86, 0x12, 0x11,
|
||||
0x21, 0x11, 0x00, 0x11, 0x12, 0x02, 0x11, 0x83, 0x01, 0x22, 0x33, 0xCA, 0x0F, 0xFF, 0x80, 0xAF,
|
||||
0x4D, 0x66, 0x86, 0x44, 0x34, 0x33, 0x22, 0x11, 0x01, 0x21, 0x02, 0x11, 0x92, 0x21, 0x11, 0x13,
|
||||
0x31, 0x22, 0x73, 0x17, 0x32, 0x96, 0x88, 0x78, 0x79, 0xA9, 0x8A, 0x19, 0x00, 0x32, 0xA6, 0xFC,
|
||||
0x0E, 0xFF, 0x80, 0xAF, 0x48, 0x66, 0x83, 0x46, 0x33, 0x23, 0x12, 0x04, 0x11, 0x83, 0x83, 0xAA,
|
||||
0xA9, 0xBB, 0x02, 0xAA, 0x03, 0xBB, 0x80, 0xCB, 0x03, 0xBB, 0x8B, 0xCB, 0xDC, 0xBC, 0xCD, 0xED,
|
||||
0xBC, 0xCC, 0x8C, 0x02, 0x20, 0x63, 0xCA, 0x0E, 0xFF, 0x80, 0xAF, 0x46, 0x66, 0x81, 0x36, 0x23,
|
||||
0x02, 0x11, 0x02, 0x12, 0x81, 0x83, 0x88, 0x02, 0xAA, 0x84, 0xCB, 0xBB, 0xFC, 0xFF, 0xCD, 0x02,
|
||||
0xFF, 0x83, 0xFE, 0xDF, 0xFB, 0xFC, 0x05, 0xFF, 0x81, 0xBF, 0xFD, 0x02, 0xFF, 0x86, 0xAF, 0x01,
|
||||
0x63, 0x66, 0xA6, 0xCB, 0xFC, 0x0C, 0xFF, 0x80, 0xAF, 0x46, 0x66, 0x83, 0x03, 0x82, 0x99, 0xAA,
|
||||
0x02, 0xBB, 0x83, 0xCC, 0xDC, 0xFD, 0xFC, 0x02, 0xFF, 0x80, 0xCD, 0x03, 0xFF, 0x84, 0xEF, 0xFD,
|
||||
0xFF, 0xFD, 0xFE, 0x03, 0xFF, 0x83, 0xBF, 0xDD, 0xBF, 0xFB, 0x02, 0xFF, 0x82, 0xBF, 0x01, 0x63,
|
||||
0x02, 0x66, 0x80, 0xA6, 0x05, 0xAA, 0x05, 0xBB, 0x03, 0xCC, 0x80, 0xAC, 0x46, 0x66, 0x83, 0x23,
|
||||
0xA2, 0xAB, 0xFC, 0x02, 0xFF, 0x83, 0xDF, 0xFC, 0xFF, 0xFE, 0x07, 0xFF, 0x83, 0xCC, 0xFC, 0xBF,
|
||||
0xFC, 0x03, 0xFF, 0x81, 0xAE, 0xCA, 0x04, 0xFF, 0x82, 0xAD, 0x02, 0x31, 0x0E, 0x66, 0x82, 0xA6,
|
||||
0xAA, 0x6A, 0x46, 0x66, 0x82, 0x01, 0xB1, 0xDF, 0x02, 0xFF, 0x81, 0xBF, 0xFD, 0x09, 0xFF, 0x83,
|
||||
0xDF, 0x9A, 0xA9, 0xFD, 0x02, 0xFF, 0x84, 0xBF, 0xFF, 0x9E, 0xB8, 0xFD, 0x03, 0xFF, 0x82, 0xBF,
|
||||
0x28, 0x32, 0x56, 0x66, 0x83, 0x16, 0x00, 0xB7, 0xFB, 0x03, 0xFF, 0x80, 0xEF, 0x02, 0xFF, 0x80,
|
||||
0xFD, 0x03, 0xFF, 0x80, 0xCF, 0x03, 0xFF, 0x82, 0xBB, 0xCC, 0xFB, 0x04, 0xFF, 0x81, 0xCF, 0xBA,
|
||||
0x04, 0xFF, 0x82, 0xEF, 0x2A, 0x30, 0x56, 0x66, 0x83, 0x26, 0x12, 0xAA, 0xFB, 0x03, 0xFF, 0x81,
|
||||
0xAF, 0xEF, 0x05, 0xFF, 0x82, 0xCE, 0xDF, 0xCF, 0x0B, 0xFF, 0x85, 0xFC, 0xFF, 0xFE, 0xFF, 0x2B,
|
||||
0x32, 0x56, 0x66, 0x83, 0x22, 0x90, 0xAC, 0xFC, 0x0B, 0xFF, 0x82, 0xFE, 0xFF, 0xEF, 0x02, 0xFF,
|
||||
0x80, 0xEF, 0x02, 0xFF, 0x83, 0xEF, 0xFF, 0xBD, 0xFC, 0x02, 0xFF, 0x84, 0xFB, 0xFD, 0xFF, 0x1B,
|
||||
0x20, 0x55, 0x66, 0x83, 0x36, 0x02, 0xA0, 0xCF, 0x09, 0xFF, 0x87, 0xDE, 0xCA, 0xFD, 0xFF, 0xEF,
|
||||
0xFF, 0xDF, 0xAB, 0x02, 0xAA, 0x85, 0xBA, 0x99, 0xAA, 0x99, 0x98, 0xFB, 0x04, 0xFF, 0x81, 0x8D,
|
||||
0x21, 0x55, 0x66, 0x85, 0x13, 0x00, 0xA1, 0xBB, 0xBC, 0xCC, 0x03, 0xBB, 0x02, 0xAB, 0x83, 0xAA,
|
||||
0x9A, 0x99, 0xCA, 0x04, 0xFF, 0x89, 0xAF, 0x21, 0x22, 0x11, 0x20, 0x12, 0x21, 0x11, 0x02, 0xC7,
|
||||
0x04, 0xFF, 0x82, 0xAD, 0x12, 0x63, 0x55, 0x66, 0x86, 0x01, 0x12, 0x33, 0x87, 0x31, 0x23, 0x22,
|
||||
0x05, 0x11, 0x82, 0x20, 0xB2, 0xCC, 0x03, 0xFF, 0x82, 0x8C, 0x01, 0x31, 0x02, 0x21, 0x80, 0x31,
|
||||
0x02, 0x33, 0x82, 0x00, 0xA1, 0xFC, 0x03, 0xFF, 0x82, 0xBF, 0x21, 0x30, 0x55, 0x66, 0x86, 0x13,
|
||||
0x10, 0x00, 0x02, 0x10, 0x32, 0x11, 0x02, 0x12, 0x86, 0x33, 0x34, 0x13, 0x00, 0xB2, 0xAB, 0xFB,
|
||||
0x02, 0xFF, 0x81, 0x3B, 0x10, 0x06, 0x44, 0x82, 0x01, 0x91, 0xFD, 0x03, 0xFF, 0x82, 0xBF, 0x02,
|
||||
0x61, 0x56, 0x66, 0x83, 0x13, 0x12, 0x33, 0x43, 0x06, 0x66, 0x82, 0x14, 0x00, 0xB3, 0x03, 0xFF,
|
||||
0x82, 0xCF, 0x0A, 0x11, 0x02, 0x44, 0x03, 0x65, 0x83, 0x34, 0x02, 0x11, 0xFB, 0x03, 0xFF, 0x82,
|
||||
0xCF, 0x03, 0x62, 0x60, 0x66, 0x82, 0x46, 0x20, 0xC7, 0x02, 0xFF, 0x84, 0xCF, 0xEF, 0x0A, 0x11,
|
||||
0x64, 0x04, 0x66, 0x83, 0x45, 0x14, 0x12, 0xFA, 0x03, 0xFF, 0x82, 0xCF, 0x03, 0x60, 0x60, 0x66,
|
||||
0x82, 0x26, 0x12, 0xFA, 0x02, 0xFF, 0x84, 0xCF, 0xCD, 0x29, 0x30, 0x44, 0x04, 0x66, 0x8A, 0x56,
|
||||
0x34, 0x12, 0xFB, 0xDF, 0xAC, 0xFF, 0xBE, 0x07, 0x20, 0x64, 0x5F, 0x66, 0x82, 0x13, 0x72, 0xFC,
|
||||
0x03, 0xFF, 0x83, 0xBD, 0x07, 0x30, 0x64, 0x05, 0x66, 0x88, 0x24, 0x21, 0xFA, 0xFF, 0xBC, 0xFF,
|
||||
0xCC, 0x07, 0x32, 0x5E, 0x66, 0x83, 0x46, 0x12, 0x31, 0xB9, 0x04, 0xFF, 0x83, 0xCD, 0x28, 0x30,
|
||||
0x64, 0x05, 0x66, 0x82, 0x24, 0x00, 0xD9, 0x03, 0xFF, 0x82, 0xBB, 0x29, 0x30, 0x5D, 0x66, 0x8C,
|
||||
0x34, 0x21, 0x81, 0xB9, 0xDF, 0xFF, 0xFC, 0xDC, 0xFF, 0xBF, 0x23, 0x30, 0x54, 0x05, 0x66, 0x82,
|
||||
0x34, 0x00, 0xF9, 0x02, 0xFF, 0x83, 0xFC, 0xFF, 0x2A, 0x20, 0x5B, 0x66, 0x80, 0x33, 0x02, 0x11,
|
||||
0x81, 0x87, 0xCA, 0x03, 0xFF, 0x86, 0xFE, 0xFD, 0xFF, 0xBF, 0x01, 0x42, 0x64, 0x05, 0x66, 0x82,
|
||||
0x34, 0x00, 0xFA, 0x04, 0xFF, 0x81, 0x2B, 0x00, 0x5A, 0x66, 0x85, 0x13, 0x11, 0x83, 0xA8, 0xFB,
|
||||
0xFD, 0x03, 0xFF, 0x81, 0xFC, 0xFE, 0x02, 0xBF, 0x85, 0x21, 0x42, 0x56, 0x66, 0x56, 0x65, 0x02,
|
||||
0x66, 0x82, 0x34, 0x02, 0xCA, 0x04, 0xFF, 0x82, 0x7C, 0x00, 0x61, 0x57, 0x66, 0x84, 0x16, 0x21,
|
||||
0x01, 0xA7, 0xCC, 0x02, 0xFF, 0x80, 0xFC, 0x04, 0xFF, 0x84, 0xEB, 0xFF, 0xBF, 0x03, 0x30, 0x03,
|
||||
0x44, 0x8C, 0x54, 0x44, 0x45, 0x34, 0x00, 0xB9, 0xFB, 0xFF, 0xCF, 0xFF, 0xAF, 0x11, 0x61, 0x55,
|
||||
0x66, 0x80, 0x36, 0x02, 0x22, 0x82, 0x71, 0xA9, 0xEB, 0x08, 0xFF, 0x84, 0xCC, 0xFF, 0xBF, 0x1A,
|
||||
0x10, 0x02, 0x33, 0x86, 0x22, 0x44, 0x34, 0x43, 0x34, 0x02, 0xC8, 0x02, 0xFF, 0x84, 0xCF, 0xFF,
|
||||
0xAF, 0x22, 0x31, 0x54, 0x66, 0x86, 0x46, 0x03, 0x12, 0xA9, 0xDB, 0xBE, 0xFB, 0x09, 0xFF, 0x8C,
|
||||
0xBF, 0xEF, 0x9B, 0x13, 0x11, 0x00, 0x10, 0x33, 0x01, 0x20, 0x11, 0x72, 0xFB, 0x04, 0xFF, 0x82,
|
||||
0xAF, 0x00, 0x41, 0x53, 0x66, 0x80, 0x13, 0x02, 0x11, 0x81, 0xB7, 0xFC, 0x04, 0xFF, 0x81, 0xCF,
|
||||
0xFE, 0x09, 0xFF, 0x84, 0xBC, 0x8A, 0x01, 0x10, 0x11, 0x02, 0x22, 0x81, 0x71, 0xBA, 0x05, 0xFF,
|
||||
0x82, 0xBF, 0x08, 0x60, 0x51, 0x66, 0x85, 0x36, 0x12, 0x31, 0x98, 0xBB, 0xFD, 0x05, 0xFF, 0x80,
|
||||
0xEF, 0x02, 0xFF, 0x80, 0xBB, 0x08, 0xFF, 0x81, 0xCE, 0x9A, 0x02, 0x99, 0x83, 0x98, 0xBA, 0xCB,
|
||||
0xFC, 0x05, 0xFF, 0x82, 0xCF, 0x08, 0x32, 0x51, 0x66, 0x83, 0x26, 0x20, 0xB9, 0xFC, 0x0A, 0xFF,
|
||||
0x80, 0xFE, 0x09, 0xFF, 0x80, 0xCF, 0x02, 0xCC, 0x82, 0xFC, 0xCF, 0xFD, 0x07, 0xFF, 0x81, 0x28,
|
||||
0x31, 0x51, 0x66, 0x82, 0x03, 0x92, 0xFC, 0x05, 0xFF, 0x81, 0xBF, 0xFC, 0x04, 0xFF, 0x02, 0xCC,
|
||||
0x80, 0xCB, 0x05, 0xFF, 0x83, 0xFD, 0xFF, 0xEF, 0xEC, 0x0A, 0xFF, 0x82, 0xBF, 0x27, 0x30, 0x51,
|
||||
0x66, 0x81, 0x21, 0xB3, 0x06, 0xFF, 0x80, 0xDF, 0x03, 0xFF, 0x85, 0xBF, 0xBC, 0x7A, 0x37, 0x91,
|
||||
0xCB, 0x02, 0xFF, 0x80, 0xCF, 0x02, 0xFF, 0x80, 0xFC, 0x04, 0xFF, 0x83, 0xCF, 0xEF, 0xFC, 0xFD,
|
||||
0x04, 0xFF, 0x82, 0xAF, 0x03, 0x40, 0x50, 0x66, 0x82, 0x36, 0x00, 0xF9, 0x05, 0xFF, 0x8D, 0xFC,
|
||||
0xDF, 0xFF, 0xCF, 0xBB, 0x8A, 0x39, 0x11, 0x21, 0x00, 0x81, 0xEA, 0xFF, 0xBC, 0x02, 0xFF, 0x81,
|
||||
0xBE, 0xDE, 0x03, 0xFF, 0x82, 0xCF, 0xDC, 0xFD, 0x03, 0xFF, 0x84, 0xFE, 0xFD, 0xAF, 0x01, 0x30,
|
||||
0x50, 0x66, 0x82, 0x16, 0x10, 0xFA, 0x03, 0xFF, 0x85, 0xDF, 0xFE, 0xFF, 0xBC, 0xCC, 0x9B, 0x02,
|
||||
0x11, 0x87, 0x01, 0x32, 0x66, 0x12, 0x00, 0xA3, 0xFC, 0xEF, 0x07, 0xFF, 0x82, 0xCF, 0xEF, 0xCB,
|
||||
0x04, 0xFF, 0x83, 0xEF, 0x1A, 0x21, 0x32, 0x50, 0x66, 0x82, 0x06, 0x21, 0xFB, 0x04, 0xFF, 0x87,
|
||||
0xDC, 0xAB, 0x79, 0x88, 0x11, 0x31, 0x43, 0x46, 0x02, 0x66, 0x86, 0x46, 0x23, 0x12, 0xB9, 0xDC,
|
||||
0xEE, 0xFB, 0x05, 0xFF, 0x81, 0xBF, 0xFC, 0x05, 0xFF, 0x82, 0xAC, 0x23, 0x30, 0x51, 0x66, 0x82,
|
||||
0x04, 0x32, 0xFB, 0x02, 0xFF, 0x86, 0xBC, 0xAB, 0x89, 0x22, 0x01, 0x11, 0x31, 0x06, 0x66, 0x87,
|
||||
0x36, 0x21, 0x12, 0x98, 0xBA, 0xCB, 0xFF, 0xFE, 0x06, 0xFF, 0x86, 0xEF, 0xCF, 0xCC, 0xBB, 0x29,
|
||||
0x00, 0x62, 0x4F, 0x66, 0x86, 0x46, 0x33, 0x02, 0x22, 0xBA, 0xBC, 0xAB, 0x02, 0x11, 0x80, 0x21,
|
||||
0x02, 0x20, 0x80, 0x63, 0x08, 0x66, 0x92, 0x36, 0x22, 0x02, 0x20, 0x83, 0xA9, 0xBA, 0xBC, 0xBB,
|
||||
0xCC, 0xCF, 0xCC, 0xBB, 0xAB, 0x9A, 0x38, 0x13, 0x00, 0x30, 0x50, 0x66, 0x8A, 0x36, 0x13, 0x20,
|
||||
0x10, 0xA8, 0x38, 0x11, 0x20, 0x33, 0x13, 0x63, 0x0B, 0x66, 0x91, 0x13, 0x01, 0x02, 0x11, 0x02,
|
||||
0x22, 0x21, 0x32, 0x71, 0x79, 0x83, 0x88, 0x12, 0x20, 0x12, 0x22, 0x31, 0x63, 0x52, 0x66, 0x85,
|
||||
0x23, 0x22, 0x20, 0x11, 0x33, 0x63, 0x10, 0x66, 0x83, 0x23, 0x66, 0x33, 0x01, 0x02, 0x22, 0x82,
|
||||
0x00, 0x11, 0x22, 0x02, 0x11, 0x81, 0x01, 0x40, 0x56, 0x66, 0x82, 0x46, 0x12, 0x62, 0x15, 0x66,
|
||||
0x84, 0x46, 0x33, 0x22, 0x11, 0x43, 0x04, 0x66, 0x80, 0x63, 0x6F, 0x66, 0x81, 0x36, 0x64, 0x64,
|
||||
0x66, 0x80, 0x33, 0x72, 0x66, 0x87, 0x36, 0x31, 0x64, 0x36, 0x34, 0x00, 0x31, 0x33, 0x02, 0x66,
|
||||
0x80, 0x23, 0x02, 0x31, 0x80, 0x63, 0x69, 0x66, 0x81, 0x16, 0x20, 0x02, 0x01, 0x83, 0x00, 0x20,
|
||||
0x22, 0x00, 0x02, 0x22, 0x02, 0x00, 0x86, 0x12, 0x00, 0x10, 0x20, 0x31, 0x66, 0x36, 0x04, 0x66,
|
||||
0x81, 0x36, 0x63, 0x5F, 0x66, 0x89, 0x12, 0x11, 0x77, 0x38, 0x73, 0x13, 0x31, 0x27, 0x32, 0x21,
|
||||
0x02, 0x22, 0x8E, 0x11, 0x22, 0x12, 0x00, 0x21, 0x11, 0x00, 0x10, 0x11, 0x12, 0x22, 0x02, 0x00,
|
||||
0x32, 0x64, 0x5C, 0x66, 0x85, 0x14, 0x12, 0xA9, 0xCB, 0xBC, 0xCA, 0x02, 0xBC, 0x02, 0xBB, 0x8A,
|
||||
0xAB, 0xAA, 0xBA, 0xBB, 0xAB, 0x89, 0x99, 0x8A, 0x38, 0x33, 0x11, 0x02, 0x21, 0x02, 0x22, 0x88,
|
||||
0x00, 0x11, 0x21, 0x12, 0x11, 0x12, 0x11, 0x31, 0x43, 0x55, 0x66, 0x83, 0x36, 0x11, 0x72, 0xFB,
|
||||
0x02, 0xFF, 0x80, 0xFD, 0x03, 0xFF, 0x80, 0xFD, 0x02, 0xFF, 0x85, 0xDD, 0xFF, 0xCF, 0xCC, 0xFE,
|
||||
0xDF, 0x02, 0xCC, 0x81, 0xBB, 0xBA, 0x02, 0xBB, 0x02, 0xAA, 0x84, 0x99, 0x28, 0x12, 0x31, 0x13,
|
||||
0x02, 0x21, 0x02, 0x11, 0x85, 0x01, 0x21, 0x22, 0x11, 0x33, 0x64, 0x4F, 0x66, 0x82, 0x22, 0x92,
|
||||
0xFB, 0x09, 0xFF, 0x83, 0xFD, 0xFF, 0xBF, 0xFB, 0x02, 0xFF, 0x80, 0xFC, 0x04, 0xFF, 0x84, 0xFC,
|
||||
0xFF, 0xFC, 0xFF, 0xBC, 0x02, 0xBB, 0x87, 0xBC, 0xAA, 0x89, 0x88, 0x38, 0x23, 0x87, 0x23, 0x03,
|
||||
0x11, 0x80, 0x31, 0x4D, 0x66, 0x83, 0x36, 0x20, 0x92, 0xFD, 0x06, 0xFF, 0x87, 0xFB, 0xFF, 0xEF,
|
||||
0xFC, 0xFF, 0xCF, 0xDF, 0xFB, 0x02, 0xFF, 0x80, 0xFB, 0x02, 0xFF, 0x87, 0xFC, 0xFD, 0xBF, 0xFA,
|
||||
0xFE, 0xBF, 0xFB, 0xCC, 0x02, 0xFF, 0x8B, 0xDF, 0xCD, 0xCB, 0xBB, 0xDC, 0xBC, 0xAA, 0xA9, 0x39,
|
||||
0x01, 0x32, 0x33, 0x4B, 0x66, 0x84, 0x26, 0x01, 0xA2, 0xFE, 0xFD, 0x03, 0xFF, 0x81, 0xBB, 0xDE,
|
||||
0x05, 0xFF, 0x81, 0xCF, 0xFE, 0x06, 0xFF, 0x84, 0xFC, 0xCF, 0xFF, 0xFD, 0xCF, 0x05, 0xFF, 0x83,
|
||||
0xEF, 0xFF, 0xFD, 0xED, 0x02, 0xFF, 0x80, 0xBD, 0x02, 0xBC, 0x82, 0x18, 0x00, 0x31, 0x4B, 0x66,
|
||||
0x83, 0x03, 0x20, 0xA1, 0xFD, 0x05, 0xFF, 0x80, 0xBF, 0x05, 0xFF, 0x81, 0x9B, 0xBA, 0x07, 0xFF,
|
||||
0x80, 0xDF, 0x0B, 0xFF, 0x80, 0xBB, 0x02, 0xFF, 0x80, 0xBB, 0x02, 0xFF, 0x82, 0x2B, 0x00, 0x62,
|
||||
0x4A, 0x66, 0x83, 0x14, 0x20, 0x00, 0xC8, 0x06, 0xFF, 0x80, 0xCF, 0x02, 0xFF, 0x80, 0xCF, 0x02,
|
||||
0xFF, 0x81, 0xBD, 0xFC, 0x06, 0xFF, 0x81, 0xFD, 0xDF, 0x05, 0xFF, 0x87, 0xEF, 0xCF, 0xFF, 0xAC,
|
||||
0xFB, 0xFF, 0xBF, 0xFB, 0x04, 0xFF, 0x82, 0x7C, 0x00, 0x61, 0x4B, 0x66, 0x82, 0x02, 0x20, 0xFA,
|
||||
0x06, 0xFF, 0x02, 0xEF, 0x81, 0xFF, 0xCF, 0x05, 0xFF, 0x80, 0xCF, 0x0B, 0xFF, 0x84, 0xCF, 0xBC,
|
||||
0xFC, 0xEF, 0xFE, 0x07, 0xFF, 0x82, 0x9E, 0x20, 0x30, 0x4A, 0x66, 0x83, 0x46, 0x22, 0x82, 0xDB,
|
||||
0x0F, 0xFF, 0x83, 0xBE, 0xCF, 0xFD, 0xDD, 0x04, 0xFF, 0x80, 0xBA, 0x04, 0xFF, 0x80, 0xDF, 0x03,
|
||||
0xFF, 0x80, 0xCF, 0x06, 0xFF, 0x82, 0xBF, 0x08, 0x20, 0x4B, 0x66, 0x88, 0x01, 0x20, 0xA8, 0xBA,
|
||||
0xCC, 0xFD, 0xFF, 0xDF, 0xFE, 0x0C, 0xFF, 0x82, 0xDF, 0xFF, 0xFC, 0x07, 0xFF, 0x80, 0xFE, 0x03,
|
||||
0xFF, 0x82, 0xBF, 0xFF, 0xFC, 0x05, 0xFF, 0x82, 0x0A, 0x12, 0x64, 0x4A, 0x66, 0x8B, 0x36, 0x22,
|
||||
0x11, 0x12, 0x87, 0xA7, 0xBB, 0xAA, 0x99, 0xA9, 0xAA, 0xFB, 0x05, 0xFF, 0x80, 0xFD, 0x03, 0xFF,
|
||||
0x82, 0xBD, 0xFF, 0xFD, 0x04, 0xFF, 0x80, 0xEC, 0x08, 0xFF, 0x80, 0xFE, 0x05, 0xFF, 0x82, 0x1A,
|
||||
0x22, 0x62, 0x4B, 0x66, 0x8B, 0x02, 0x11, 0x21, 0x10, 0x01, 0x21, 0x11, 0x20, 0x22, 0x20, 0xA3,
|
||||
0xFB, 0x02, 0xFF, 0x82, 0xDF, 0xCF, 0xDB, 0x08, 0xFF, 0x02, 0xAB, 0x82, 0xA9, 0xBA, 0xAA, 0x02,
|
||||
0xBB, 0x85, 0xCB, 0xAA, 0xCA, 0xCC, 0xAC, 0xBA, 0x02, 0xCB, 0x02, 0xFF, 0x82, 0x7B, 0x20, 0x62,
|
||||
0x4A, 0x66, 0x88, 0x46, 0x11, 0x63, 0x66, 0x33, 0x01, 0x10, 0x11, 0x01, 0x02, 0x20, 0x82, 0x22,
|
||||
0xA3, 0xFC, 0x03, 0xFF, 0x80, 0xFC, 0x06, 0xFF, 0x02, 0xCF, 0x93, 0x18, 0x21, 0x22, 0x02, 0x01,
|
||||
0x11, 0x31, 0x71, 0x13, 0x81, 0x78, 0x98, 0x89, 0x91, 0xBA, 0xAB, 0xAA, 0x19, 0x20, 0x61, 0x50,
|
||||
0x66, 0x89, 0x64, 0x66, 0x33, 0x23, 0x21, 0x01, 0x12, 0xA7, 0xFB, 0xFC, 0x09, 0xFF, 0x83, 0xCD,
|
||||
0x39, 0x22, 0x02, 0x02, 0x22, 0x84, 0x12, 0x00, 0x22, 0x00, 0x22, 0x03, 0x21, 0x86, 0x00, 0x01,
|
||||
0x11, 0x22, 0x00, 0x20, 0x63, 0x55, 0x66, 0x85, 0x23, 0x00, 0x02, 0xB3, 0xFF, 0xDF, 0x09, 0xFF,
|
||||
0x8A, 0xBF, 0x8A, 0x02, 0x00, 0x30, 0x66, 0x64, 0x66, 0x34, 0x13, 0x22, 0x02, 0x33, 0x85, 0x21,
|
||||
0x12, 0x21, 0x11, 0x13, 0x31, 0x57, 0x66, 0x83, 0x12, 0x22, 0xB3, 0xFD, 0x02, 0xFF, 0x80, 0xDF,
|
||||
0x04, 0xFF, 0x85, 0xDF, 0xFF, 0xFC, 0xFF, 0xCF, 0x3A, 0x02, 0x02, 0x81, 0x11, 0x61, 0x02, 0x66,
|
||||
0x81, 0x36, 0x64, 0x5E, 0x66, 0x83, 0x23, 0x02, 0x81, 0xEA, 0x06, 0xFF, 0x82, 0xDF, 0xFF, 0xBF,
|
||||
0x02, 0xFE, 0x02, 0xFF, 0x85, 0xCF, 0xAB, 0x03, 0x00, 0x30, 0x64, 0x5F, 0x66, 0x86, 0x36, 0x11,
|
||||
0x20, 0x91, 0xCB, 0xFF, 0xFD, 0x06, 0xFF, 0x80, 0xFD, 0x06, 0xFF, 0x88, 0xEF, 0xAB, 0x23, 0x02,
|
||||
0x10, 0x33, 0x66, 0x26, 0x64, 0x5A, 0x66, 0x87, 0x36, 0x11, 0x21, 0x93, 0xCB, 0xFB, 0xFF, 0xFC,
|
||||
0x02, 0xFF, 0x80, 0xDF, 0x02, 0xFF, 0x82, 0xCF, 0xFB, 0xEF, 0x03, 0xFF, 0x80, 0xFD, 0x03, 0xFF,
|
||||
0x86, 0xAC, 0x7A, 0x22, 0x02, 0x31, 0x11, 0x41, 0x59, 0x66, 0x86, 0x23, 0x11, 0x12, 0xA7, 0xBB,
|
||||
0xEF, 0xFB, 0x04, 0xFF, 0x80, 0xCF, 0x03, 0xFF, 0x85, 0xFC, 0xAC, 0xFC, 0xFF, 0xCF, 0xFA, 0x02,
|
||||
0xFF, 0x87, 0xFE, 0xFF, 0xDF, 0x7B, 0x01, 0x00, 0x10, 0x20, 0x57, 0x66, 0x86, 0x36, 0x22, 0x11,
|
||||
0x71, 0xA9, 0xFC, 0xDD, 0x08, 0xFF, 0x80, 0xFB, 0x02, 0xFF, 0x82, 0xEF, 0xFF, 0xBF, 0x02, 0xFF,
|
||||
0x81, 0xCF, 0xFC, 0x03, 0xFF, 0x85, 0xCF, 0x9A, 0x28, 0x22, 0x02, 0x61, 0x55, 0x66, 0x84, 0x14,
|
||||
0x01, 0x10, 0xA7, 0xCB, 0x09, 0xFF, 0x80, 0xBD, 0x03, 0xFF, 0x80, 0xFE, 0x02, 0xFF, 0x81, 0xBE,
|
||||
0xFE, 0x03, 0xFF, 0x80, 0xEF, 0x03, 0xFF, 0x84, 0xCC, 0xBC, 0x3A, 0x20, 0x12, 0x53, 0x66, 0x85,
|
||||
0x36, 0x11, 0x00, 0x22, 0xB7, 0xEC, 0x06, 0xFF, 0x81, 0xCF, 0xFE, 0x04, 0xFF, 0x82, 0xEC, 0xCF,
|
||||
0xFB, 0x02, 0xFF, 0x82, 0xCF, 0xFF, 0xEB, 0x02, 0xFF, 0x80, 0xFD, 0x05, 0xFF, 0x84, 0xBF, 0x39,
|
||||
0x12, 0x31, 0x64, 0x51, 0x66, 0x84, 0x13, 0x00, 0x22, 0xA8, 0xFB, 0x0B, 0xFF, 0x89, 0xCE, 0xCF,
|
||||
0xAB, 0x7A, 0xB8, 0xEC, 0xFF, 0xBF, 0xFF, 0xFD, 0x09, 0xFF, 0x84, 0xBE, 0x17, 0x11, 0x21, 0x33,
|
||||
0x4F, 0x66, 0x84, 0x23, 0x10, 0x80, 0xA9, 0xFC, 0x05, 0xFF, 0x82, 0xFD, 0xBF, 0xFC, 0x02, 0xFF,
|
||||
0x89, 0xFE, 0xFF, 0xAC, 0x99, 0x01, 0x20, 0x22, 0x91, 0xBB, 0xFC, 0x04, 0xFF, 0x81, 0xBD, 0xFC,
|
||||
0x05, 0xFF, 0x86, 0xBF, 0x97, 0x8A, 0x07, 0x11, 0x22, 0x42, 0x4C, 0x66, 0x83, 0x13, 0x20, 0x30,
|
||||
0xCA, 0x05, 0xFF, 0x80, 0xCF, 0x05, 0xFF, 0x8C, 0xCF, 0xDC, 0xAB, 0x18, 0x11, 0x10, 0x22, 0x11,
|
||||
0x10, 0x22, 0xA7, 0xFB, 0xFC, 0x0A, 0xFF, 0x85, 0xCB, 0xCF, 0x8B, 0x27, 0x22, 0x30, 0x4B, 0x66,
|
||||
0x84, 0x13, 0x20, 0x81, 0xBA, 0xFE, 0x03, 0xFF, 0x80, 0xBB, 0x06, 0xFF, 0x82, 0xCF, 0xAB, 0x6A,
|
||||
0x02, 0x21, 0x8A, 0x12, 0x22, 0x63, 0x46, 0x23, 0x12, 0x21, 0x93, 0xBA, 0xCF, 0xFC, 0x06, 0xFF,
|
||||
0x02, 0xBF, 0x84, 0xBA, 0xFF, 0xDF, 0xBC, 0x28, 0x02, 0x22, 0x80, 0x64, 0x48, 0x66, 0x83, 0x21,
|
||||
0x10, 0x81, 0xCA, 0x05, 0xFF, 0x80, 0xFC, 0x03, 0xFF, 0x87, 0xDB, 0xFF, 0xCE, 0xAB, 0x28, 0x01,
|
||||
0x02, 0x31, 0x05, 0x66, 0x85, 0x36, 0x21, 0x00, 0x82, 0xBA, 0xFC, 0x06, 0xFF, 0x89, 0xCF, 0xBF,
|
||||
0xA9, 0xCF, 0xFD, 0xFF, 0xBD, 0x7A, 0x11, 0x31, 0x47, 0x66, 0x83, 0x13, 0x20, 0x92, 0xCA, 0x04,
|
||||
0xFF, 0x82, 0xDC, 0xFF, 0xFC, 0x03, 0xFF, 0x84, 0xFE, 0xCF, 0x7A, 0x21, 0x02, 0x02, 0x22, 0x80,
|
||||
0x63, 0x05, 0x66, 0x81, 0x36, 0x01, 0x02, 0x22, 0x82, 0x32, 0xA9, 0xFB, 0x05, 0xFF, 0x02, 0xCF,
|
||||
0x80, 0xA9, 0x04, 0xFF, 0x84, 0xBE, 0x19, 0x00, 0x20, 0x30, 0x44, 0x66, 0x83, 0x26, 0x02, 0x80,
|
||||
0xFA, 0x0B, 0xFF, 0x84, 0xBB, 0x9A, 0x22, 0x00, 0x41, 0x09, 0x66, 0x82, 0x33, 0x22, 0x01, 0x02,
|
||||
0x21, 0x81, 0xA1, 0xDB, 0x05, 0xFF, 0x81, 0xDF, 0xBB, 0x05, 0xFF, 0x84, 0xBC, 0x19, 0x21, 0x12,
|
||||
0x63, 0x42, 0x66, 0x80, 0x36, 0x02, 0x01, 0x80, 0xB9, 0x07, 0xFF, 0x81, 0xCF, 0xFB, 0x02, 0xFF,
|
||||
0x84, 0xAB, 0x17, 0x22, 0x20, 0x32, 0x0D, 0x66, 0x80, 0x23, 0x02, 0x20, 0x84, 0x71, 0xB9, 0xFC,
|
||||
0xFF, 0xCB, 0x02, 0xFF, 0x82, 0xBE, 0xFB, 0xFC, 0x03, 0xFF, 0x84, 0xFD, 0xBD, 0x2A, 0x00, 0x61,
|
||||
0x42, 0x66, 0x83, 0x16, 0x00, 0x12, 0xFB, 0x08, 0xFF, 0x86, 0xEC, 0xDF, 0x9B, 0x03, 0x02, 0x31,
|
||||
0x63, 0x0F, 0x66, 0x85, 0x36, 0x02, 0x21, 0x32, 0xBA, 0xFD, 0x03, 0xFF, 0x81, 0xBF, 0xFB, 0x06,
|
||||
0xFF, 0x82, 0x7B, 0x22, 0x30, 0x42, 0x66, 0x83, 0x02, 0x22, 0x71, 0xFC, 0x07, 0xFF, 0x85, 0xBF,
|
||||
0xAB, 0x89, 0x22, 0x02, 0x32, 0x13, 0x66, 0x84, 0x13, 0x00, 0x22, 0x68, 0xCA, 0x02, 0xFF, 0x81,
|
||||
0xBF, 0xFB, 0x02, 0xFF, 0x80, 0xCF, 0x03, 0xFF, 0x83, 0xAB, 0x22, 0x00, 0x63, 0x41, 0x66, 0x82,
|
||||
0x23, 0x20, 0xB1, 0x06, 0xFF, 0x86, 0xCF, 0xBB, 0x3A, 0x02, 0x20, 0x00, 0x32, 0x15, 0x66, 0x85,
|
||||
0x33, 0x12, 0x10, 0x82, 0xBA, 0xEB, 0x03, 0xFF, 0x80, 0xFE, 0x02, 0xFF, 0x02, 0xCF, 0x83, 0xBA,
|
||||
0x19, 0x01, 0x62, 0x41, 0x66, 0x82, 0x23, 0x02, 0xC8, 0x04, 0xFF, 0x87, 0xCF, 0xCB, 0xAB, 0x87,
|
||||
0x01, 0x20, 0x11, 0x31, 0x18, 0x66, 0x84, 0x13, 0x02, 0x80, 0xA9, 0xCC, 0x03, 0xFF, 0x81, 0xDF,
|
||||
0xFC, 0x02, 0xFF, 0x83, 0xEC, 0x8B, 0x11, 0x22, 0x40, 0x66, 0x83, 0x36, 0x01, 0x20, 0xFB, 0x04,
|
||||
0xFF, 0x85, 0xBC, 0x9A, 0x23, 0x02, 0x01, 0x31, 0x1B, 0x66, 0x84, 0x23, 0x12, 0x11, 0x83, 0xB9,
|
||||
0x07, 0xFF, 0x82, 0x8C, 0x11, 0x12, 0x3F, 0x66, 0x84, 0x13, 0x11, 0x00, 0x32, 0xFB, 0x02, 0xFF,
|
||||
0x85, 0xBD, 0x9B, 0x17, 0x21, 0x01, 0x31, 0x1D, 0x66, 0x80, 0x36, 0x02, 0x12, 0x84, 0x00, 0x31,
|
||||
0xA9, 0xBA, 0xFB, 0x04, 0xFF, 0x82, 0x3B, 0x22, 0x12, 0x3F, 0x66, 0x80, 0x36, 0x02, 0x00, 0x84,
|
||||
0x70, 0xFB, 0xCE, 0xBB, 0x19, 0x02, 0x11, 0x81, 0x21, 0x63, 0x21, 0x66, 0x85, 0x13, 0x10, 0x12,
|
||||
0x10, 0x93, 0xBB, 0x03, 0xFF, 0x83, 0x9B, 0x20, 0x12, 0x63, 0x3F, 0x66, 0x88, 0x13, 0x22, 0x12,
|
||||
0x98, 0x89, 0x13, 0x02, 0x10, 0x63, 0x24, 0x66, 0x89, 0x46, 0x34, 0x01, 0x20, 0x31, 0xA9, 0xCB,
|
||||
0xFF, 0xBF, 0x28, 0x02, 0x20, 0x80, 0x31, 0x3E, 0x66, 0x83, 0x36, 0x22, 0x01, 0x12, 0x02, 0x11,
|
||||
0x80, 0x31, 0x29, 0x66, 0x89, 0x13, 0x20, 0x12, 0x83, 0xA9, 0xBB, 0x19, 0x02, 0x00, 0x62, 0x3F,
|
||||
0x66, 0x81, 0x36, 0x31, 0x02, 0x33, 0x2C, 0x66, 0x88, 0x24, 0x00, 0x10, 0x22, 0x73, 0x07, 0x02,
|
||||
0x20, 0x64, 0x70, 0x66, 0x81, 0x36, 0x33, 0x03, 0x22, 0x02, 0x02, 0x80, 0x41, 0x73, 0x66, 0x85,
|
||||
0x34, 0x02, 0x00, 0x22, 0x00, 0x63, 0x73, 0x66, 0x82, 0x46, 0x13, 0x12, 0x02, 0x10, 0x80, 0x64,
|
||||
0x75, 0x66, 0x82, 0x36, 0x23, 0x31, 0x78, 0x66, 0x80, 0x64, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66,
|
||||
0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66,
|
||||
0x7F, 0x66, 0x3F, 0x66,
|
||||
};
|
||||
// clang-format on
|
||||
11
keyboards/zodiarkpi/images/ZodiarkPiLogo2Green.qgf.h
Normal file
11
keyboards/zodiarkpi/images/ZodiarkPiLogo2Green.qgf.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
// Copyright 2023 QMK -- generated source code only, image retains original copyright
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
// This file was auto-generated by `qmk painter-convert-graphics -i ZodiarkPiLogo2Green.png -f pal16`
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <qp.h>
|
||||
|
||||
extern const uint32_t gfx_ZodiarkPiLogo2Green_length;
|
||||
extern const uint8_t gfx_ZodiarkPiLogo2Green[11476];
|
||||
634
keyboards/zodiarkpi/images/ZodiarkPiLogoGC.qgf.c
Normal file
634
keyboards/zodiarkpi/images/ZodiarkPiLogoGC.qgf.c
Normal file
|
|
@ -0,0 +1,634 @@
|
|||
// Copyright 2023 QMK -- generated source code only, image retains original copyright
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
// This file was auto-generated by `qmk painter-convert-graphics -i ZodiarkPiLogoGC.png -f pal16`
|
||||
|
||||
#include <qp.h>
|
||||
|
||||
const uint32_t gfx_ZodiarkPiLogoGC_length = 9935;
|
||||
|
||||
// clang-format off
|
||||
const uint8_t gfx_ZodiarkPiLogoGC[9935] = {
|
||||
0x00, 0xFF, 0x12, 0x00, 0x00, 0x51, 0x47, 0x46, 0x01, 0xCF, 0x26, 0x00, 0x00, 0x30, 0xD9, 0xFF,
|
||||
0xFF, 0xF0, 0x00, 0xF0, 0x00, 0x01, 0x00, 0x01, 0xFE, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||
0x02, 0xFD, 0x06, 0x00, 0x00, 0x06, 0x00, 0x01, 0xFF, 0xE8, 0x03, 0x03, 0xFC, 0x30, 0x00, 0x00,
|
||||
0x00, 0x02, 0xF8, 0x00, 0x07, 0xEA, 0xFD, 0x23, 0xEB, 0x00, 0x18, 0xDD, 0xFD, 0x2B, 0xEA, 0xFC,
|
||||
0x2A, 0xE9, 0xFD, 0x2A, 0xE9, 0x00, 0x2A, 0xE9, 0x00, 0x11, 0xD0, 0x00, 0x12, 0xC4, 0x00, 0x03,
|
||||
0x8E, 0x00, 0x05, 0x5E, 0x00, 0x04, 0x39, 0x00, 0x00, 0x23, 0x00, 0x00, 0x14, 0x00, 0x00, 0x03,
|
||||
0x05, 0xFA, 0x6A, 0x26, 0x00, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F,
|
||||
0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F,
|
||||
0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F,
|
||||
0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F,
|
||||
0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7E, 0x66, 0x80, 0x26, 0x6D, 0x22, 0x80,
|
||||
0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80,
|
||||
0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80,
|
||||
0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80,
|
||||
0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80,
|
||||
0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80,
|
||||
0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80,
|
||||
0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80,
|
||||
0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80,
|
||||
0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80,
|
||||
0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80,
|
||||
0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80,
|
||||
0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80,
|
||||
0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80,
|
||||
0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x55, 0x80,
|
||||
0x62, 0x09, 0x66, 0x80, 0x26, 0x6C, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6C, 0x66,
|
||||
0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6C, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26,
|
||||
0x6C, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6C, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66,
|
||||
0x80, 0x26, 0x23, 0x66, 0x80, 0x76, 0x0B, 0x77, 0x02, 0x67, 0x02, 0x77, 0x83, 0x67, 0x76, 0x77,
|
||||
0x67, 0x15, 0x77, 0x20, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x22, 0x66, 0x81, 0x56,
|
||||
0x97, 0x0C, 0x99, 0x80, 0x89, 0x05, 0x99, 0x80, 0x89, 0x15, 0x99, 0x80, 0x67, 0x1E, 0x66, 0x82,
|
||||
0x55, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x22, 0x66, 0x88, 0x22, 0xB9, 0xCC, 0xBC, 0xBB, 0xCC,
|
||||
0xBC, 0xCB, 0xCC, 0x03, 0xBB, 0x81, 0xAB, 0xBB, 0x02, 0xAB, 0x80, 0xBA, 0x03, 0xBB, 0x82, 0xAB,
|
||||
0xAA, 0xAB, 0x06, 0xBB, 0x82, 0xCB, 0xCC, 0xBB, 0x02, 0xCC, 0x88, 0xBB, 0xCC, 0xBC, 0xCB, 0xCC,
|
||||
0xBC, 0xCB, 0xBC, 0x79, 0x1E, 0x66, 0x82, 0x22, 0x55, 0x62, 0x09, 0x66, 0x80, 0x26, 0x21, 0x66,
|
||||
0x82, 0x56, 0x11, 0xEA, 0x07, 0xFF, 0x02, 0xEF, 0x02, 0xCC, 0x88, 0xCB, 0xAB, 0xBB, 0xAB, 0xBA,
|
||||
0xAB, 0xAA, 0xAB, 0xBA, 0x04, 0xBB, 0x83, 0xCD, 0xCB, 0xCC, 0xFE, 0x0B, 0xFF, 0x81, 0xBF, 0x79,
|
||||
0x1D, 0x66, 0x83, 0x26, 0x21, 0x56, 0x62, 0x09, 0x66, 0x83, 0x26, 0x66, 0x56, 0x65, 0x1E, 0x66,
|
||||
0x82, 0x15, 0x00, 0xEA, 0x07, 0xFF, 0x85, 0xEF, 0xEE, 0xCD, 0xBB, 0xBA, 0xAB, 0x02, 0xBB, 0x87,
|
||||
0xAB, 0x9A, 0xBA, 0x9A, 0xAA, 0xBA, 0xAB, 0xAA, 0x02, 0xBB, 0x83, 0xCB, 0xBB, 0xCC, 0xEE, 0x0A,
|
||||
0xFF, 0x81, 0xBF, 0x79, 0x1D, 0x66, 0x83, 0x15, 0x21, 0x56, 0x62, 0x09, 0x66, 0x87, 0x26, 0x66,
|
||||
0x26, 0x11, 0x21, 0x25, 0x52, 0x67, 0x19, 0x66, 0x83, 0x56, 0x01, 0x00, 0xFA, 0x07, 0xFF, 0x82,
|
||||
0xEF, 0xCD, 0xBC, 0x02, 0xBA, 0x03, 0xAA, 0x81, 0x9A, 0x99, 0x02, 0xA9, 0x8C, 0xAA, 0xA9, 0x9A,
|
||||
0xA9, 0xAA, 0xBA, 0xBB, 0xCC, 0xCB, 0xCD, 0xFC, 0xDF, 0xEC, 0x07, 0xFF, 0x81, 0xBF, 0x79, 0x1B,
|
||||
0x66, 0x85, 0x56, 0x66, 0x02, 0x21, 0x56, 0x62, 0x09, 0x66, 0x87, 0x26, 0x66, 0x27, 0x00, 0x10,
|
||||
0x01, 0x10, 0x62, 0x19, 0x66, 0x80, 0x15, 0x02, 0x00, 0x80, 0xFA, 0x07, 0xFF, 0x83, 0xEF, 0xCD,
|
||||
0xBB, 0xBA, 0x03, 0xAA, 0x88, 0xA9, 0x9A, 0x98, 0x9A, 0xA9, 0x99, 0x98, 0x99, 0xA9, 0x03, 0xAA,
|
||||
0x85, 0xBA, 0xBC, 0xBB, 0xDB, 0xDE, 0xDC, 0x07, 0xFF, 0x81, 0xBF, 0x79, 0x1B, 0x66, 0x85, 0x25,
|
||||
0x21, 0x01, 0x51, 0x56, 0x62, 0x09, 0x66, 0x83, 0x26, 0x66, 0x56, 0x01, 0x03, 0x00, 0x81, 0x10,
|
||||
0x62, 0x18, 0x66, 0x83, 0x05, 0x00, 0x10, 0xFA, 0x08, 0xFF, 0x8C, 0xCE, 0xBB, 0xAA, 0xBB, 0xAA,
|
||||
0x99, 0x98, 0x99, 0x83, 0xAA, 0x98, 0x89, 0x93, 0x02, 0x99, 0x03, 0xAA, 0x02, 0xBB, 0x83, 0xBA,
|
||||
0xDB, 0xCC, 0xED, 0x07, 0xFF, 0x81, 0xBF, 0x68, 0x1B, 0x66, 0x80, 0x15, 0x02, 0x00, 0x82, 0x72,
|
||||
0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x02, 0x66, 0x80, 0x02, 0x04, 0x00, 0x83, 0x10, 0x22, 0x25,
|
||||
0x65, 0x15, 0x66, 0x83, 0x02, 0x00, 0x10, 0xFA, 0x06, 0xFF, 0x8C, 0xDF, 0xEC, 0xBC, 0xBB, 0xAA,
|
||||
0xBA, 0xAA, 0x98, 0x33, 0x88, 0x89, 0x98, 0x93, 0x02, 0x99, 0x8A, 0x89, 0x99, 0x9A, 0xA9, 0xAA,
|
||||
0xAB, 0xAA, 0xBA, 0xCC, 0xCB, 0xFE, 0x07, 0xFF, 0x81, 0xBF, 0x68, 0x1A, 0x66, 0x81, 0x25, 0x02,
|
||||
0x02, 0x00, 0x82, 0x72, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x02, 0x66, 0x80, 0x02, 0x02, 0x00,
|
||||
0x80, 0x01, 0x03, 0x00, 0x81, 0x11, 0x62, 0x15, 0x66, 0x83, 0x02, 0x00, 0x10, 0xFA, 0x05, 0xFF,
|
||||
0x96, 0xEF, 0xBF, 0xCA, 0x9A, 0xAA, 0x9A, 0x88, 0x89, 0x93, 0x38, 0x83, 0x39, 0x18, 0x81, 0x89,
|
||||
0x98, 0x33, 0x83, 0x99, 0xAA, 0x9A, 0xAA, 0x99, 0x02, 0xBA, 0x83, 0xBB, 0xDD, 0xDC, 0xED, 0x05,
|
||||
0xFF, 0x81, 0xAF, 0x68, 0x19, 0x66, 0x81, 0x25, 0x01, 0x03, 0x00, 0x82, 0x72, 0x56, 0x62, 0x09,
|
||||
0x66, 0x80, 0x26, 0x02, 0x66, 0x84, 0x02, 0x81, 0x99, 0x3A, 0x11, 0x03, 0x00, 0x83, 0x52, 0x65,
|
||||
0x55, 0x65, 0x12, 0x66, 0x83, 0x02, 0x00, 0x10, 0xFA, 0x05, 0xFF, 0x89, 0xCE, 0xBD, 0xBA, 0xAB,
|
||||
0xAA, 0x99, 0x39, 0x88, 0x11, 0x93, 0x02, 0x13, 0x8A, 0x33, 0x31, 0x11, 0x81, 0x38, 0x98, 0x99,
|
||||
0x98, 0x19, 0x98, 0x9A, 0x02, 0xBA, 0x02, 0xBB, 0x80, 0xEC, 0x06, 0xFF, 0x81, 0xAE, 0x67, 0x18,
|
||||
0x66, 0x81, 0x55, 0x01, 0x03, 0x00, 0x83, 0x10, 0x62, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x02,
|
||||
0x66, 0x85, 0x02, 0xB8, 0xBC, 0xAA, 0xA9, 0x03, 0x02, 0x00, 0x83, 0x10, 0x52, 0x22, 0x52, 0x12,
|
||||
0x66, 0x83, 0x02, 0x00, 0x10, 0xFA, 0x04, 0xFF, 0x80, 0xEF, 0x02, 0xCD, 0x88, 0xBB, 0xAB, 0x9A,
|
||||
0x89, 0x88, 0x83, 0x11, 0x31, 0x38, 0x02, 0x11, 0x84, 0x10, 0x11, 0x81, 0x89, 0x88, 0x02, 0x38,
|
||||
0x88, 0x13, 0x98, 0xA9, 0xAA, 0xBA, 0xAB, 0xCB, 0xED, 0xFE, 0x05, 0xFF, 0x81, 0xAE, 0x67, 0x17,
|
||||
0x66, 0x81, 0x56, 0x12, 0x02, 0x00, 0x85, 0x10, 0x19, 0x10, 0x66, 0x56, 0x62, 0x09, 0x66, 0x80,
|
||||
0x26, 0x02, 0x66, 0x86, 0x02, 0xB8, 0xDE, 0xCC, 0xCB, 0xAB, 0x89, 0x02, 0x00, 0x02, 0x11, 0x80,
|
||||
0x21, 0x12, 0x66, 0x83, 0x02, 0x00, 0x10, 0xFA, 0x04, 0xFF, 0x97, 0xCF, 0xDC, 0xBC, 0xBB, 0xAA,
|
||||
0x9A, 0x38, 0x88, 0x81, 0x13, 0x11, 0x38, 0x11, 0x00, 0x10, 0x31, 0x11, 0x31, 0x11, 0x13, 0x38,
|
||||
0x13, 0x38, 0xA9, 0x02, 0xAA, 0x83, 0xBB, 0xDB, 0xCC, 0xDC, 0x05, 0xFF, 0x81, 0xAE, 0x67, 0x17,
|
||||
0x66, 0x80, 0x26, 0x02, 0x00, 0x86, 0x93, 0xA8, 0x8B, 0x20, 0x66, 0x56, 0x62, 0x09, 0x66, 0x80,
|
||||
0x26, 0x02, 0x66, 0x81, 0x02, 0xB8, 0x02, 0xFF, 0x84, 0xEF, 0xEE, 0xBF, 0x18, 0x01, 0x02, 0x00,
|
||||
0x81, 0x20, 0x67, 0x11, 0x66, 0x83, 0x01, 0x00, 0x10, 0xFA, 0x04, 0xFF, 0x82, 0xCF, 0xCC, 0xBB,
|
||||
0x03, 0xAA, 0x84, 0x18, 0x83, 0x93, 0x83, 0x13, 0x02, 0x11, 0x80, 0x10, 0x02, 0x01, 0x83, 0x00,
|
||||
0x30, 0x33, 0x10, 0x02, 0x31, 0x87, 0x89, 0x99, 0xA9, 0xAA, 0xBB, 0xBA, 0xCC, 0xED, 0x05, 0xFF,
|
||||
0x81, 0xAE, 0x67, 0x17, 0x66, 0x89, 0x27, 0x00, 0x81, 0xCA, 0xCC, 0x1B, 0x51, 0x66, 0x56, 0x62,
|
||||
0x09, 0x66, 0x80, 0x26, 0x02, 0x66, 0x88, 0x02, 0xB8, 0xEE, 0xFF, 0xCE, 0xFD, 0xCF, 0xAB, 0x3A,
|
||||
0x02, 0x00, 0x81, 0x10, 0x52, 0x11, 0x66, 0x83, 0x01, 0x00, 0x10, 0xFA, 0x04, 0xFF, 0x92, 0xBD,
|
||||
0xBC, 0xCB, 0xAB, 0x9A, 0x89, 0x11, 0x88, 0x31, 0x11, 0x18, 0x31, 0x11, 0x10, 0x01, 0x00, 0x10,
|
||||
0x11, 0x31, 0x02, 0x00, 0x88, 0x30, 0x89, 0x99, 0xA9, 0xAA, 0xBA, 0xAA, 0xED, 0xFE, 0x05, 0xFF,
|
||||
0x81, 0xAE, 0x67, 0x17, 0x66, 0x89, 0x17, 0x30, 0xAA, 0xEB, 0xEF, 0x0A, 0x51, 0x66, 0x56, 0x62,
|
||||
0x09, 0x66, 0x91, 0x26, 0x66, 0x76, 0x02, 0xB8, 0xEE, 0xCE, 0xBC, 0xFC, 0xFF, 0xFE, 0xBD, 0x18,
|
||||
0x01, 0x00, 0x11, 0x52, 0x65, 0x0F, 0x66, 0x83, 0x01, 0x00, 0x30, 0xFB, 0x04, 0xFF, 0x02, 0xBC,
|
||||
0x86, 0xCB, 0xAB, 0x9A, 0x93, 0x39, 0x81, 0x13, 0x03, 0x11, 0x85, 0x31, 0x11, 0x01, 0x00, 0x10,
|
||||
0x11, 0x02, 0x00, 0x82, 0x01, 0x10, 0x98, 0x02, 0x99, 0x84, 0xA9, 0xAA, 0xBA, 0xCB, 0xFE, 0x05,
|
||||
0xFF, 0x81, 0xAD, 0x67, 0x0E, 0x66, 0x84, 0x56, 0x66, 0x56, 0x12, 0x52, 0x04, 0x66, 0x89, 0x12,
|
||||
0x90, 0xCD, 0xEC, 0xCF, 0x0A, 0x72, 0x66, 0x56, 0x62, 0x09, 0x66, 0x88, 0x26, 0x66, 0x76, 0x01,
|
||||
0xB9, 0xFF, 0xCE, 0xBC, 0xFD, 0x02, 0xFF, 0x82, 0xEF, 0xAB, 0x3A, 0x02, 0x00, 0x82, 0x10, 0x21,
|
||||
0x62, 0x0E, 0x66, 0x83, 0x01, 0x00, 0x80, 0xFB, 0x04, 0xFF, 0x80, 0xEF, 0x02, 0xBB, 0x02, 0xAB,
|
||||
0x02, 0x99, 0x85, 0x93, 0x39, 0x11, 0x00, 0x11, 0x31, 0x02, 0x11, 0x82, 0x01, 0x11, 0x01, 0x02,
|
||||
0x00, 0x80, 0x13, 0x02, 0x33, 0x81, 0x83, 0x89, 0x02, 0xAA, 0x82, 0xB9, 0xBB, 0xFD, 0x05, 0xFF,
|
||||
0x81, 0xAD, 0x67, 0x0E, 0x66, 0x85, 0x16, 0x52, 0x12, 0x00, 0x10, 0x65, 0x02, 0x66, 0x8A, 0x56,
|
||||
0x02, 0xA1, 0xDF, 0xFD, 0xBF, 0x08, 0x72, 0x66, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x02, 0x66,
|
||||
0x84, 0x01, 0xC9, 0xDF, 0xDE, 0xED, 0x04, 0xFF, 0x82, 0xEE, 0xAC, 0x19, 0x03, 0x00, 0x80, 0x61,
|
||||
0x0E, 0x66, 0x83, 0x12, 0x31, 0x93, 0xFB, 0x04, 0xFF, 0x88, 0xCC, 0xBC, 0xAA, 0xAB, 0x9A, 0x98,
|
||||
0x99, 0x18, 0x31, 0x02, 0x01, 0x82, 0x00, 0x10, 0x01, 0x02, 0x10, 0x83, 0x13, 0x00, 0x10, 0x01,
|
||||
0x02, 0x11, 0x87, 0x31, 0x99, 0x9A, 0xA9, 0xAA, 0xBA, 0xCB, 0xFD, 0x05, 0xFF, 0x81, 0xAD, 0x67,
|
||||
0x0E, 0x66, 0x81, 0x16, 0x11, 0x03, 0x00, 0x80, 0x72, 0x02, 0x66, 0x8A, 0x56, 0x01, 0xC9, 0xDE,
|
||||
0xFD, 0xBE, 0x01, 0x72, 0x66, 0x56, 0x62, 0x09, 0x66, 0x87, 0x26, 0x66, 0x76, 0x02, 0xB9, 0xDF,
|
||||
0xCE, 0xEB, 0x03, 0xFF, 0x84, 0xEE, 0xFD, 0xDE, 0xAB, 0x19, 0x02, 0x00, 0x81, 0x10, 0x52, 0x0D,
|
||||
0x66, 0x83, 0x15, 0x99, 0xA9, 0xFB, 0x03, 0xFF, 0x90, 0xDF, 0xBC, 0xCD, 0xBB, 0xAB, 0x9A, 0x99,
|
||||
0x13, 0x88, 0x81, 0x11, 0x19, 0x11, 0x10, 0x81, 0x01, 0x00, 0x02, 0x01, 0x83, 0x10, 0x01, 0x00,
|
||||
0x31, 0x02, 0x98, 0x80, 0x8A, 0x02, 0x99, 0x83, 0xBB, 0xCA, 0xDD, 0xDC, 0x04, 0xFF, 0x81, 0xAD,
|
||||
0x67, 0x0E, 0x66, 0x80, 0x15, 0x02, 0x00, 0x82, 0x31, 0x01, 0x72, 0x02, 0x66, 0x8A, 0x15, 0x80,
|
||||
0xEB, 0xEF, 0xED, 0xAC, 0x10, 0x65, 0x66, 0x56, 0x62, 0x09, 0x66, 0x90, 0x26, 0x66, 0x76, 0x02,
|
||||
0xA1, 0xFD, 0xDF, 0xEB, 0xDD, 0xFE, 0xFF, 0xDE, 0xFC, 0xDE, 0xCC, 0xAB, 0x13, 0x02, 0x00, 0x81,
|
||||
0x20, 0x65, 0x0C, 0x66, 0x83, 0x98, 0xAA, 0xBA, 0xFC, 0x03, 0xFF, 0x8A, 0xEF, 0xED, 0xCD, 0xBB,
|
||||
0xAB, 0xBB, 0x9A, 0x98, 0x93, 0x18, 0x38, 0x02, 0x11, 0x85, 0x10, 0x91, 0x13, 0x00, 0x10, 0x01,
|
||||
0x02, 0x11, 0x86, 0x01, 0x11, 0x31, 0x38, 0x89, 0xA9, 0x99, 0x02, 0xBB, 0x81, 0xCB, 0xDC, 0x04,
|
||||
0xFF, 0x81, 0xAC, 0x67, 0x0D, 0x66, 0x86, 0x76, 0x02, 0x10, 0xA3, 0xBB, 0x08, 0x72, 0x02, 0x66,
|
||||
0x8A, 0x02, 0x90, 0xFD, 0xCE, 0xDC, 0x8C, 0x10, 0x67, 0x66, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26,
|
||||
0x02, 0x66, 0x86, 0x02, 0xB8, 0xEE, 0xCC, 0xFD, 0xDE, 0xFD, 0x02, 0xEF, 0x88, 0xED, 0xCC, 0xBC,
|
||||
0xBA, 0xAB, 0x9A, 0x01, 0x00, 0x51, 0x0C, 0x66, 0x83, 0xA8, 0xBA, 0xBB, 0xFD, 0x05, 0xFF, 0x88,
|
||||
0xCC, 0xBB, 0xAB, 0xA9, 0x99, 0xA3, 0x99, 0x38, 0x19, 0x05, 0x11, 0x81, 0x00, 0x10, 0x03, 0x11,
|
||||
0x8A, 0x18, 0x10, 0x11, 0x31, 0x89, 0x98, 0xAA, 0xBA, 0xBC, 0xDB, 0xFE, 0x04, 0xFF, 0x81, 0xAC,
|
||||
0x67, 0x0D, 0x66, 0x8F, 0x56, 0x01, 0xA9, 0xCB, 0xBE, 0x08, 0x72, 0x66, 0x56, 0x02, 0xB1, 0xEF,
|
||||
0xCE, 0xEE, 0x1B, 0x20, 0x02, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x02, 0x66, 0x84,
|
||||
0x01, 0xC9, 0xEF, 0xCC, 0xFD, 0x02, 0xFF, 0x8A, 0xDF, 0xFE, 0xFF, 0xDE, 0xDD, 0xCC, 0xDE, 0xCD,
|
||||
0x9A, 0x03, 0x20, 0x0C, 0x66, 0x83, 0xA9, 0xBB, 0xCB, 0xFE, 0x03, 0xFF, 0x92, 0xEF, 0xDE, 0xED,
|
||||
0xAB, 0x9A, 0xA9, 0x99, 0xA9, 0x39, 0x38, 0x11, 0x18, 0x31, 0x11, 0x10, 0x13, 0x10, 0x00, 0x10,
|
||||
0x02, 0x00, 0x86, 0x01, 0x91, 0x01, 0x11, 0x93, 0x98, 0xAA, 0x02, 0xBA, 0x80, 0xEC, 0x05, 0xFF,
|
||||
0x81, 0x9C, 0x67, 0x0D, 0x66, 0x8F, 0x26, 0x90, 0xDB, 0xDD, 0xCE, 0x09, 0x72, 0x66, 0x56, 0x01,
|
||||
0xE9, 0xEF, 0xEE, 0xDE, 0x0A, 0x61, 0x02, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x02,
|
||||
0x66, 0x83, 0x02, 0xB8, 0xDE, 0xFE, 0x08, 0xFF, 0x85, 0xDF, 0xFE, 0xEE, 0xDE, 0x1A, 0x20, 0x0C,
|
||||
0x66, 0x83, 0xB9, 0xCC, 0xDC, 0xFE, 0x04, 0xFF, 0x82, 0xEF, 0xDE, 0xAC, 0x02, 0xAA, 0x93, 0xA9,
|
||||
0x89, 0x13, 0x19, 0x31, 0x33, 0x88, 0x13, 0x11, 0x18, 0x91, 0x11, 0x01, 0x00, 0x11, 0x01, 0x11,
|
||||
0x31, 0x38, 0x99, 0x02, 0xAA, 0x83, 0xBA, 0xBB, 0xDC, 0xFE, 0x04, 0xFF, 0x81, 0x9C, 0x67, 0x0D,
|
||||
0x66, 0x8F, 0x27, 0xA0, 0xEC, 0xED, 0xCF, 0x09, 0x72, 0x66, 0x56, 0x11, 0xFA, 0xFF, 0xEF, 0xDD,
|
||||
0x09, 0x62, 0x02, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x86, 0x26, 0x66, 0x76, 0x02, 0xB9, 0xBD,
|
||||
0xFD, 0x04, 0xFF, 0x83, 0xFE, 0xFF, 0xDF, 0xCB, 0x02, 0xFF, 0x84, 0xCC, 0xFF, 0x3B, 0x10, 0x65,
|
||||
0x0B, 0x66, 0x83, 0xBA, 0xDC, 0xDD, 0xFE, 0x05, 0xFF, 0x81, 0xEF, 0xBD, 0x02, 0xAA, 0x85, 0xAB,
|
||||
0x99, 0x98, 0x8A, 0x93, 0x33, 0x02, 0x99, 0x8B, 0x98, 0x8A, 0x98, 0x39, 0x13, 0x11, 0x33, 0x11,
|
||||
0x01, 0x93, 0x88, 0x99, 0x03, 0xAA, 0x02, 0xCB, 0x80, 0xDC, 0x04, 0xFF, 0x81, 0x9C, 0x67, 0x05,
|
||||
0x66, 0x80, 0x56, 0x03, 0x55, 0x04, 0x66, 0x8F, 0x16, 0xA0, 0xEC, 0xFF, 0xBE, 0x08, 0x72, 0x66,
|
||||
0x26, 0x80, 0xEB, 0xDE, 0xFE, 0xCE, 0x09, 0x62, 0x02, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x86,
|
||||
0x26, 0x66, 0x56, 0x01, 0xCA, 0xBE, 0xFD, 0x04, 0xFF, 0x8A, 0xFD, 0xFF, 0xBF, 0xAA, 0xFF, 0xCE,
|
||||
0xDD, 0xFF, 0x1B, 0x20, 0x65, 0x03, 0x66, 0x84, 0x76, 0x67, 0x75, 0x56, 0x25, 0x02, 0x66, 0x84,
|
||||
0x76, 0xCA, 0xCC, 0xDD, 0xFE, 0x05, 0xFF, 0x83, 0xEF, 0xCD, 0xBA, 0xAA, 0x02, 0xAB, 0x81, 0xAA,
|
||||
0x9A, 0x02, 0x98, 0x81, 0xBA, 0xAB, 0x02, 0xBB, 0x81, 0xBA, 0xAB, 0x02, 0xAA, 0x85, 0x39, 0x38,
|
||||
0x33, 0x89, 0x99, 0xA9, 0x02, 0xAA, 0x83, 0xBA, 0xFC, 0xEE, 0xFE, 0x03, 0xFF, 0x82, 0xCF, 0x9A,
|
||||
0x67, 0x03, 0x66, 0x83, 0x55, 0x57, 0x12, 0x21, 0x02, 0x11, 0x80, 0x62, 0x03, 0x66, 0x8F, 0x16,
|
||||
0xA1, 0xCB, 0xEE, 0xBE, 0x03, 0x72, 0x66, 0x15, 0xA0, 0xDD, 0xCE, 0xDC, 0xBE, 0x03, 0x62, 0x02,
|
||||
0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x85, 0x26, 0x66, 0x56, 0x01, 0xBA, 0xED, 0x02, 0xFF, 0x81,
|
||||
0xEF, 0xDC, 0x03, 0xFF, 0x87, 0xCF, 0xAA, 0xFE, 0xCE, 0xDD, 0xFE, 0x1A, 0x20, 0x04, 0x66, 0x81,
|
||||
0x26, 0x12, 0x02, 0x11, 0x86, 0x12, 0x62, 0x66, 0x76, 0xCA, 0xDD, 0xFE, 0x06, 0xFF, 0x82, 0xEF,
|
||||
0xED, 0xCB, 0x03, 0xAA, 0x80, 0x9A, 0x02, 0x99, 0x81, 0xA9, 0xFC, 0x06, 0xFF, 0x8A, 0xDF, 0x9A,
|
||||
0x11, 0x83, 0x38, 0xA9, 0x99, 0xAA, 0xBA, 0xBB, 0xFC, 0x05, 0xFF, 0x81, 0xAC, 0x79, 0x02, 0x66,
|
||||
0x83, 0x25, 0x52, 0x21, 0x12, 0x04, 0x00, 0x80, 0x21, 0x03, 0x66, 0x8A, 0x15, 0xA1, 0xDB, 0xEE,
|
||||
0xAD, 0x01, 0x72, 0x66, 0x02, 0xA1, 0xBC, 0x02, 0xBB, 0x82, 0x9D, 0x10, 0x65, 0x02, 0x66, 0x81,
|
||||
0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x02, 0x66, 0x91, 0x01, 0xB9, 0xEC, 0xDE, 0xED, 0xEF, 0xDC,
|
||||
0xDE, 0xFE, 0xFF, 0xEE, 0xCC, 0xEE, 0xDE, 0xEE, 0xFE, 0x1A, 0x20, 0x03, 0x66, 0x81, 0x26, 0x01,
|
||||
0x03, 0x00, 0x85, 0x01, 0x72, 0x66, 0x76, 0xCA, 0xDD, 0x09, 0xFF, 0x81, 0xCE, 0xBB, 0x02, 0xAA,
|
||||
0x84, 0x9A, 0x89, 0x99, 0xA9, 0xFC, 0x06, 0xFF, 0x8A, 0xDF, 0xAA, 0x11, 0x88, 0x98, 0xAA, 0x99,
|
||||
0xA9, 0xBA, 0xAB, 0xFB, 0x04, 0xFF, 0x86, 0xCF, 0x8A, 0x65, 0x55, 0x25, 0x12, 0x11, 0x03, 0x00,
|
||||
0x84, 0x10, 0x13, 0x01, 0x10, 0x65, 0x02, 0x66, 0x8E, 0x15, 0xB3, 0xFE, 0xEE, 0xAD, 0x11, 0x62,
|
||||
0x26, 0x01, 0xA1, 0xAB, 0xBA, 0xCC, 0x8C, 0x20, 0x03, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x94,
|
||||
0x26, 0x66, 0x76, 0x01, 0xB3, 0xED, 0xCE, 0xCC, 0xFF, 0xFE, 0xDF, 0xFE, 0xFF, 0xEF, 0xEE, 0xDF,
|
||||
0xFE, 0xDD, 0xFF, 0x1A, 0x20, 0x02, 0x66, 0x83, 0x76, 0x12, 0x00, 0x31, 0x02, 0x38, 0x85, 0x00,
|
||||
0x21, 0x67, 0x76, 0xCA, 0xFE, 0x08, 0xFF, 0x89, 0xDF, 0xBC, 0xCD, 0xBB, 0xAC, 0xAA, 0x9A, 0x98,
|
||||
0xA9, 0xFD, 0x06, 0xFF, 0x82, 0xEF, 0xAB, 0x89, 0x02, 0x88, 0x85, 0x89, 0x98, 0xA9, 0xBA, 0xAA,
|
||||
0xFD, 0x04, 0xFF, 0x82, 0xAC, 0x18, 0x52, 0x02, 0x11, 0x03, 0x00, 0x86, 0x10, 0xA8, 0xA9, 0xAB,
|
||||
0x9A, 0x00, 0x51, 0x02, 0x66, 0x8E, 0x15, 0xB8, 0xDF, 0xEE, 0xAC, 0x13, 0x75, 0x02, 0x10, 0xAA,
|
||||
0xAB, 0xCB, 0xDF, 0x1B, 0x20, 0x03, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x94, 0x26, 0x66, 0x76,
|
||||
0x01, 0xA1, 0xDB, 0xDF, 0xCC, 0xEF, 0xED, 0xEF, 0xEC, 0xFF, 0xDF, 0xFD, 0xDD, 0xFE, 0xED, 0xDF,
|
||||
0x0A, 0x21, 0x02, 0x66, 0x8A, 0x15, 0x01, 0xA3, 0xBA, 0xBB, 0xAB, 0x39, 0x10, 0x72, 0x76, 0xCA,
|
||||
0x09, 0xFF, 0x89, 0xCF, 0xCC, 0xCD, 0xCB, 0xBC, 0xAB, 0xAA, 0x99, 0xA9, 0xFC, 0x03, 0xFF, 0x80,
|
||||
0xEF, 0x02, 0xFF, 0x82, 0xDF, 0x8A, 0x38, 0x03, 0x99, 0x02, 0xAA, 0x82, 0xBB, 0x38, 0xDA, 0x03,
|
||||
0xEE, 0x83, 0xDE, 0x8A, 0x01, 0x10, 0x02, 0x00, 0x89, 0x81, 0x98, 0x99, 0xAA, 0xDB, 0xFD, 0xEF,
|
||||
0xBE, 0x09, 0x50, 0x02, 0x66, 0x8E, 0x02, 0xB3, 0xBD, 0xDD, 0xBC, 0x03, 0x22, 0x00, 0x80, 0xEC,
|
||||
0xCD, 0xDD, 0xCE, 0x0A, 0x61, 0x03, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0xA1, 0x26, 0x66, 0x76,
|
||||
0x01, 0x90, 0xB9, 0xEC, 0xED, 0xFF, 0xFE, 0xEF, 0xAB, 0xFD, 0xEF, 0xED, 0xDD, 0xCD, 0xFC, 0xCF,
|
||||
0x09, 0x51, 0x66, 0x56, 0x02, 0x30, 0xDA, 0xED, 0xFF, 0xEF, 0xBC, 0x09, 0x21, 0x65, 0xBA, 0x06,
|
||||
0xBB, 0x80, 0xEB, 0x02, 0xFF, 0x83, 0xDF, 0xFE, 0xCD, 0xBC, 0x02, 0xBB, 0x81, 0xAA, 0x98, 0x06,
|
||||
0xAA, 0x82, 0xBA, 0xFD, 0xCF, 0x02, 0x89, 0x87, 0x9A, 0xA9, 0xAA, 0xA9, 0x3A, 0x38, 0x00, 0x91,
|
||||
0x04, 0xAA, 0x80, 0x19, 0x02, 0x00, 0x8B, 0x80, 0xA9, 0xBA, 0xCB, 0xBB, 0xDC, 0xEE, 0xFF, 0xFE,
|
||||
0xDD, 0x8B, 0x20, 0x02, 0x66, 0x8E, 0x15, 0xB3, 0xBB, 0xDE, 0xBE, 0x01, 0x22, 0x00, 0xA1, 0xFE,
|
||||
0xCC, 0xED, 0xCF, 0x09, 0x61, 0x03, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x87, 0x26, 0x66, 0x76,
|
||||
0x01, 0x10, 0x33, 0xA9, 0xBA, 0x02, 0xCC, 0x98, 0xDD, 0xAB, 0xFD, 0xDF, 0xCB, 0xEE, 0xCE, 0xFC,
|
||||
0xCF, 0x09, 0x51, 0x66, 0x56, 0x01, 0xA8, 0xDD, 0xFD, 0xEF, 0xFF, 0xED, 0x9B, 0x00, 0x52, 0x77,
|
||||
0x78, 0x04, 0x77, 0x8D, 0x87, 0xDA, 0xFF, 0xDD, 0xFF, 0xEE, 0xDC, 0xCE, 0xBB, 0xBC, 0xAA, 0xA9,
|
||||
0x9A, 0x78, 0x04, 0x77, 0x8D, 0xA8, 0xFC, 0xDF, 0xAA, 0x99, 0x9A, 0xAA, 0xA9, 0x38, 0x01, 0x00,
|
||||
0x83, 0x10, 0x75, 0x03, 0x77, 0x8E, 0x15, 0x10, 0x99, 0xBA, 0xDC, 0xFD, 0xFF, 0xCE, 0xED, 0xCD,
|
||||
0xED, 0xFE, 0xED, 0xAE, 0x11, 0x02, 0x66, 0x8E, 0x15, 0xB8, 0xEC, 0xCD, 0xAD, 0x01, 0x51, 0x01,
|
||||
0xC8, 0xFF, 0xEE, 0xDE, 0xBD, 0x01, 0x61, 0x03, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x83, 0x26,
|
||||
0x66, 0x76, 0x01, 0x02, 0x00, 0x9B, 0x10, 0x11, 0x99, 0x88, 0xAA, 0xBA, 0xDC, 0xBF, 0xAA, 0xCC,
|
||||
0xEE, 0xDE, 0xCC, 0x1A, 0x21, 0x66, 0x26, 0x11, 0xDB, 0xDE, 0xFE, 0xFF, 0xEF, 0xEE, 0xBE, 0x09,
|
||||
0x10, 0x65, 0x05, 0x66, 0x89, 0x76, 0xDA, 0xEF, 0xDD, 0xFE, 0xED, 0xFE, 0xDF, 0xCC, 0xAB, 0x02,
|
||||
0xAA, 0x89, 0x99, 0x57, 0x56, 0x22, 0x55, 0x22, 0xA7, 0xEC, 0xCF, 0xA9, 0x02, 0x99, 0x87, 0xAA,
|
||||
0x9A, 0x01, 0x81, 0xAA, 0xBB, 0x18, 0x62, 0x03, 0x66, 0x99, 0x16, 0xA0, 0xCB, 0xDC, 0xFF, 0xFE,
|
||||
0xFF, 0xCC, 0xDC, 0xDE, 0xFE, 0xDF, 0xDC, 0xBE, 0x11, 0x65, 0x66, 0x05, 0xB9, 0xFD, 0xCE, 0xAC,
|
||||
0x11, 0x25, 0x00, 0xDA, 0x02, 0xFF, 0x83, 0xCE, 0x9C, 0x10, 0x62, 0x03, 0x66, 0x81, 0x56, 0x62,
|
||||
0x09, 0x66, 0x83, 0x26, 0x66, 0x76, 0x01, 0x07, 0x00, 0x96, 0x91, 0xAA, 0xCF, 0x89, 0xCA, 0xFE,
|
||||
0xBD, 0xB9, 0x1A, 0x20, 0x66, 0x26, 0x91, 0xED, 0xCD, 0xED, 0xFE, 0xDE, 0xDD, 0xEC, 0x9B, 0x10,
|
||||
0x65, 0x03, 0x66, 0x86, 0x56, 0x66, 0x76, 0xCA, 0xEE, 0xDD, 0xFE, 0x02, 0xFF, 0x8E, 0xCD, 0xBC,
|
||||
0xAB, 0xA9, 0xAA, 0x99, 0x22, 0x11, 0x10, 0x22, 0x11, 0x92, 0xDB, 0xCD, 0x9A, 0x02, 0xAA, 0x83,
|
||||
0xAB, 0x19, 0x81, 0xCA, 0x02, 0xDD, 0x81, 0x19, 0x52, 0x03, 0x66, 0x88, 0x17, 0xA1, 0xEC, 0xFE,
|
||||
0xDD, 0xFD, 0xFF, 0xCB, 0xFE, 0x02, 0xFF, 0x8E, 0xDE, 0xED, 0xBF, 0x01, 0x62, 0x66, 0x02, 0xC9,
|
||||
0xCE, 0xEE, 0xAC, 0x11, 0x25, 0x10, 0xDA, 0x02, 0xFF, 0x83, 0xEF, 0x3C, 0x20, 0x65, 0x03, 0x66,
|
||||
0x81, 0x56, 0x62, 0x09, 0x66, 0x84, 0x26, 0x66, 0x76, 0x11, 0x12, 0x07, 0x00, 0x8E, 0xB8, 0xFF,
|
||||
0x9B, 0xA9, 0xDB, 0xBD, 0xBA, 0x1A, 0x20, 0x66, 0x12, 0xA1, 0xDC, 0xCC, 0xDD, 0x02, 0xFE, 0x84,
|
||||
0xFF, 0xFE, 0xCE, 0x08, 0x52, 0x03, 0x66, 0x80, 0x26, 0x02, 0x22, 0x83, 0xA9, 0xBB, 0xCC, 0xFE,
|
||||
0x02, 0xFF, 0x02, 0xBC, 0x83, 0xAB, 0xA8, 0x9A, 0x19, 0x05, 0x00, 0x89, 0x80, 0xDB, 0xCC, 0xBC,
|
||||
0xAA, 0xBB, 0xAB, 0x13, 0xCA, 0xFE, 0x02, 0xDD, 0x81, 0x1A, 0x51, 0x03, 0x66, 0x89, 0x17, 0xA1,
|
||||
0xEC, 0xEE, 0xCD, 0xEE, 0xFE, 0xDD, 0xFF, 0xDE, 0x02, 0xEE, 0x8D, 0xED, 0xBF, 0x01, 0x61, 0x66,
|
||||
0x02, 0xC9, 0xBD, 0xED, 0xAD, 0x11, 0x17, 0x80, 0xEB, 0x03, 0xFF, 0x81, 0x1B, 0x21, 0x04, 0x66,
|
||||
0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x02, 0x66, 0x82, 0x22, 0x56, 0x22, 0x02, 0x12, 0x03,
|
||||
0x00, 0x85, 0x10, 0xEA, 0xFF, 0xCF, 0x9A, 0xBA, 0x02, 0xCC, 0x89, 0x09, 0x21, 0x66, 0x01, 0xB3,
|
||||
0xDE, 0xDC, 0xED, 0xFF, 0xEE, 0x02, 0xFF, 0x82, 0xEF, 0x1A, 0x21, 0x03, 0x66, 0x80, 0x02, 0x02,
|
||||
0x00, 0x87, 0x10, 0x31, 0xA9, 0xBA, 0xDB, 0xEE, 0xCE, 0xBC, 0x02, 0xAA, 0x88, 0x39, 0x08, 0x80,
|
||||
0x99, 0xA9, 0xAA, 0x99, 0x13, 0xCA, 0x02, 0xBC, 0x85, 0xBB, 0xCB, 0xBC, 0x93, 0xFC, 0xEF, 0x02,
|
||||
0xFF, 0x81, 0x1B, 0x51, 0x03, 0x66, 0x9E, 0x17, 0xA1, 0xED, 0xDE, 0xBD, 0xDE, 0xFE, 0xEF, 0xFE,
|
||||
0xBC, 0xDC, 0xED, 0xEE, 0xDE, 0x08, 0x61, 0x66, 0x01, 0xC9, 0xCD, 0xFE, 0xAE, 0x11, 0x02, 0xA1,
|
||||
0xFD, 0xFF, 0xEE, 0xCE, 0x09, 0x51, 0x04, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x02,
|
||||
0x66, 0x80, 0x55, 0x03, 0x66, 0x88, 0x26, 0x11, 0x22, 0x00, 0x30, 0xFB, 0xFF, 0xED, 0xCF, 0x02,
|
||||
0xCB, 0x8B, 0xAB, 0x01, 0x51, 0x56, 0x00, 0xDA, 0xCE, 0xCC, 0xEC, 0xFE, 0xEE, 0xFF, 0x02, 0xEE,
|
||||
0x88, 0xAC, 0x11, 0x65, 0x66, 0x76, 0x01, 0x83, 0x33, 0x13, 0x03, 0x11, 0x84, 0xA8, 0xDB, 0xEC,
|
||||
0xBC, 0xAA, 0x02, 0x9A, 0x89, 0x08, 0xB1, 0xEF, 0xFF, 0xDD, 0xBE, 0x19, 0xBA, 0xBB, 0xAC, 0x02,
|
||||
0xBB, 0x87, 0xAC, 0x93, 0xFC, 0xDF, 0xFE, 0xFF, 0x8B, 0x21, 0x03, 0x66, 0x9E, 0x16, 0xA1, 0xCC,
|
||||
0xDE, 0xED, 0xEF, 0xBC, 0xBB, 0xBA, 0xAA, 0xEB, 0xDE, 0xED, 0xDE, 0x09, 0x62, 0x76, 0x01, 0xCA,
|
||||
0xDF, 0xEC, 0xAD, 0x11, 0x01, 0xB3, 0xFE, 0xFF, 0xDE, 0xBF, 0x01, 0x52, 0x04, 0x66, 0x81, 0x56,
|
||||
0x62, 0x09, 0x66, 0x80, 0x26, 0x06, 0x66, 0x9F, 0x76, 0x22, 0x67, 0x00, 0xA3, 0xFE, 0xFF, 0xDD,
|
||||
0xDF, 0xFE, 0xEE, 0x1B, 0x00, 0x62, 0x26, 0x10, 0xDB, 0xCC, 0xCD, 0xDC, 0xED, 0xFD, 0xEF, 0xDD,
|
||||
0xED, 0xCE, 0x19, 0x51, 0x66, 0x76, 0x11, 0xCB, 0x02, 0xBB, 0x02, 0xAA, 0x89, 0x89, 0x11, 0xA3,
|
||||
0xDA, 0xAB, 0xAA, 0x9A, 0x89, 0x18, 0xB1, 0x02, 0xFF, 0x8F, 0xFD, 0xBE, 0x18, 0xBA, 0xBB, 0xBC,
|
||||
0xCC, 0xBB, 0x9C, 0xA3, 0xFD, 0xEF, 0xFE, 0xEF, 0xAD, 0x21, 0x03, 0x66, 0x87, 0x26, 0xA1, 0xCB,
|
||||
0xDE, 0xED, 0xAC, 0x89, 0x38, 0x02, 0x11, 0x81, 0xB8, 0xDE, 0x02, 0xCD, 0x8B, 0x0A, 0x61, 0x66,
|
||||
0x11, 0xDA, 0xCE, 0xEB, 0xAD, 0x11, 0x00, 0xC9, 0xFE, 0x02, 0xFF, 0x82, 0xAE, 0x11, 0x62, 0x04,
|
||||
0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x07, 0x66, 0x02, 0x56, 0x93, 0x00, 0xC9, 0xEE,
|
||||
0xDD, 0xEE, 0xDF, 0xFE, 0xDF, 0x0A, 0x20, 0x65, 0x26, 0x10, 0xDB, 0xDC, 0xCD, 0xED, 0xFE, 0xEE,
|
||||
0xEF, 0x02, 0xDD, 0x82, 0xEC, 0x9C, 0x21, 0x02, 0x66, 0x90, 0x81, 0xDB, 0xFF, 0xEF, 0xFE, 0xEF,
|
||||
0xCC, 0x8A, 0x11, 0xC9, 0xAB, 0xAA, 0x8A, 0x18, 0x19, 0xB3, 0xFF, 0x02, 0xFE, 0x81, 0xBF, 0x18,
|
||||
0x02, 0xAA, 0x8B, 0xDC, 0xCB, 0xBB, 0x8B, 0xB8, 0xFF, 0xEF, 0xFF, 0xDE, 0xBF, 0x11, 0x65, 0x02,
|
||||
0x66, 0x85, 0x26, 0xA1, 0xCC, 0xBD, 0xCF, 0x19, 0x04, 0x00, 0x94, 0x90, 0xEE, 0xBD, 0xCC, 0x0A,
|
||||
0x61, 0x76, 0x11, 0xDA, 0xDE, 0xCB, 0xAD, 0x11, 0x10, 0xEA, 0xFD, 0xCD, 0xFE, 0x9C, 0x10, 0x65,
|
||||
0x04, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x08, 0x66, 0x84, 0x27, 0x00, 0xDA, 0xDE,
|
||||
0xCC, 0x02, 0xEE, 0x97, 0xFE, 0xBF, 0x08, 0x51, 0x66, 0x15, 0x30, 0xFC, 0xCE, 0xCB, 0xDD, 0xAB,
|
||||
0xAA, 0xEB, 0xCD, 0xED, 0xCC, 0xBD, 0x11, 0x67, 0x56, 0x91, 0xFC, 0xFF, 0x02, 0xEE, 0x8F, 0xFF,
|
||||
0xEE, 0xCD, 0x1A, 0xA1, 0xAB, 0xAA, 0xA9, 0x39, 0x08, 0xC8, 0xFF, 0xED, 0xFF, 0xBF, 0x18, 0x02,
|
||||
0x99, 0x8B, 0xDB, 0xCB, 0xBC, 0x3A, 0xC9, 0xEE, 0xDE, 0xFE, 0xDE, 0xCD, 0x18, 0x62, 0x02, 0x66,
|
||||
0x86, 0x17, 0xA1, 0xCC, 0xAA, 0xBC, 0x03, 0x00, 0x03, 0x11, 0x93, 0x80, 0xDC, 0xCC, 0xDC, 0x0A,
|
||||
0x61, 0x76, 0x11, 0xCA, 0xDE, 0xDC, 0xAD, 0x00, 0x90, 0xEB, 0xED, 0xBD, 0xFE, 0x1A, 0x20, 0x05,
|
||||
0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x08, 0x66, 0xA5, 0x17, 0x10, 0xDB, 0xEF, 0xDD,
|
||||
0xFF, 0xEF, 0xDD, 0x9C, 0x00, 0x62, 0x66, 0x12, 0x90, 0xCB, 0xCE, 0xEC, 0xAD, 0x13, 0x11, 0x93,
|
||||
0xDB, 0xEE, 0xCD, 0xBD, 0x19, 0x72, 0x76, 0x91, 0xFC, 0xFF, 0xCE, 0xFD, 0xFF, 0xDE, 0xFE, 0xAD,
|
||||
0x18, 0x02, 0xAA, 0x96, 0x98, 0x89, 0x01, 0xC9, 0xDF, 0xED, 0xFF, 0xBE, 0x01, 0x88, 0x98, 0xFB,
|
||||
0xCE, 0xCB, 0x19, 0xDA, 0xDE, 0xEF, 0xFE, 0xDF, 0xED, 0x19, 0x62, 0x02, 0x66, 0x9D, 0x16, 0xA1,
|
||||
0xBC, 0xAA, 0xBC, 0x03, 0x11, 0x52, 0x65, 0x27, 0x10, 0xCB, 0xCC, 0xDC, 0x0A, 0x61, 0x76, 0x11,
|
||||
0xCA, 0xEE, 0xFF, 0xAD, 0x00, 0xA1, 0xED, 0xFE, 0xEE, 0xDF, 0x09, 0x21, 0x05, 0x66, 0x81, 0x56,
|
||||
0x62, 0x09, 0x66, 0x80, 0x26, 0x08, 0x66, 0x82, 0x02, 0x90, 0xDB, 0x02, 0xFF, 0x8C, 0xDD, 0xEE,
|
||||
0xDE, 0x1A, 0x00, 0x62, 0x66, 0x15, 0xA1, 0xBA, 0xCC, 0xCD, 0x19, 0x02, 0x00, 0xB8, 0x10, 0xC9,
|
||||
0xCD, 0xCC, 0xDC, 0x1A, 0x71, 0x66, 0x91, 0xDC, 0xEC, 0xDE, 0xED, 0xFF, 0xED, 0xFD, 0xDE, 0x1A,
|
||||
0xA8, 0xAA, 0x33, 0x89, 0x00, 0xC9, 0xCC, 0xED, 0xFF, 0xAE, 0x01, 0x11, 0x81, 0xFB, 0xCF, 0xBB,
|
||||
0x19, 0xEA, 0xEF, 0xCE, 0xED, 0xFF, 0xEF, 0x1A, 0x51, 0x66, 0x76, 0x12, 0xA0, 0xCC, 0xCB, 0xBE,
|
||||
0x13, 0x52, 0x65, 0x66, 0x26, 0x10, 0xEA, 0x02, 0xED, 0x8F, 0x1B, 0x51, 0x76, 0x11, 0xBA, 0xEC,
|
||||
0xFF, 0xAD, 0x00, 0xB3, 0xDF, 0xFD, 0xFF, 0xBD, 0x08, 0x51, 0x05, 0x66, 0x81, 0x56, 0x62, 0x09,
|
||||
0x66, 0x80, 0x26, 0x07, 0x66, 0x83, 0x56, 0x01, 0xA1, 0xED, 0x02, 0xFF, 0x02, 0xCC, 0x95, 0xBD,
|
||||
0x08, 0x20, 0x65, 0x66, 0x02, 0xC3, 0xDC, 0xDD, 0xAF, 0x01, 0x20, 0x12, 0x11, 0xA1, 0xEC, 0xDC,
|
||||
0xEC, 0x8B, 0x21, 0x26, 0x90, 0x02, 0xDC, 0x02, 0xEE, 0x81, 0xFE, 0xDE, 0x02, 0xDD, 0x99, 0x9B,
|
||||
0x91, 0xAA, 0x99, 0x03, 0x00, 0xD9, 0xCC, 0xED, 0xFE, 0xAE, 0x01, 0x00, 0x30, 0xFB, 0xCE, 0xBD,
|
||||
0x38, 0xCB, 0xFD, 0xCE, 0xFD, 0xFF, 0xEE, 0x3C, 0x51, 0x02, 0x66, 0x86, 0x25, 0x90, 0xEC, 0xEE,
|
||||
0xBE, 0x18, 0x65, 0x02, 0x66, 0x94, 0x26, 0x10, 0xFA, 0xFF, 0xEE, 0x0A, 0x20, 0x76, 0x11, 0xCA,
|
||||
0xFD, 0xFF, 0x9C, 0x00, 0xC9, 0xDF, 0xFD, 0xFF, 0xAD, 0x01, 0x62, 0x05, 0x66, 0x81, 0x56, 0x62,
|
||||
0x09, 0x66, 0x80, 0x26, 0x07, 0x66, 0x85, 0x26, 0x01, 0xB8, 0xEB, 0xDE, 0xFF, 0x02, 0xDD, 0x9B,
|
||||
0xAD, 0x01, 0x52, 0x66, 0x26, 0x01, 0xC9, 0xCC, 0xFE, 0x9D, 0x11, 0x51, 0x25, 0x22, 0x11, 0xCA,
|
||||
0xEF, 0xFD, 0xAD, 0x10, 0x25, 0xA0, 0xCC, 0xCB, 0xED, 0xDD, 0xEE, 0xDD, 0x02, 0xDE, 0x99, 0xAD,
|
||||
0x83, 0xA9, 0x39, 0x38, 0x00, 0xC9, 0xBC, 0xDC, 0xFE, 0xAF, 0x01, 0x00, 0x30, 0xFB, 0xDF, 0xBF,
|
||||
0x93, 0xBC, 0xDC, 0xAD, 0xFA, 0xEF, 0xEE, 0x9E, 0x21, 0x02, 0x66, 0x86, 0x26, 0x91, 0xEC, 0xCC,
|
||||
0xBE, 0x13, 0x65, 0x02, 0x66, 0x94, 0x56, 0x11, 0xFA, 0xFF, 0xEF, 0x0A, 0x20, 0x26, 0x31, 0xDB,
|
||||
0xFC, 0xFF, 0x9C, 0x10, 0xEA, 0xDF, 0xEE, 0xFE, 0x9C, 0x10, 0x62, 0x05, 0x66, 0x81, 0x56, 0x62,
|
||||
0x09, 0x66, 0x80, 0x26, 0x07, 0x66, 0x93, 0x16, 0x00, 0xCA, 0xEC, 0xBC, 0xCF, 0xDC, 0xEE, 0x9C,
|
||||
0x00, 0x62, 0x66, 0x56, 0x01, 0xDA, 0xDE, 0xFF, 0x8B, 0x21, 0x45, 0x02, 0x66, 0x96, 0x12, 0xA1,
|
||||
0xFD, 0xEF, 0xAE, 0x11, 0x25, 0x90, 0xCB, 0xDD, 0xBC, 0xBA, 0xBB, 0xCB, 0xCD, 0xED, 0xDE, 0x39,
|
||||
0x99, 0x18, 0x81, 0x01, 0xC9, 0x02, 0xEE, 0x90, 0xEF, 0xAE, 0x01, 0x00, 0x30, 0xFB, 0xFF, 0xAE,
|
||||
0xA3, 0xDE, 0xDD, 0x3B, 0xEA, 0xDD, 0xEE, 0xAE, 0x21, 0x02, 0x66, 0x86, 0x26, 0x90, 0xDC, 0xDD,
|
||||
0xBF, 0x03, 0x62, 0x02, 0x66, 0x94, 0x25, 0x11, 0xDA, 0xFF, 0xDE, 0x0A, 0x20, 0x27, 0x30, 0xCB,
|
||||
0xEC, 0xDE, 0xAD, 0x91, 0xFC, 0xBD, 0xCC, 0xDC, 0x3A, 0x10, 0x65, 0x05, 0x66, 0x81, 0x56, 0x62,
|
||||
0x09, 0x66, 0x80, 0x26, 0x07, 0x66, 0x8A, 0x12, 0x80, 0xEB, 0xDC, 0xCD, 0xDF, 0xDC, 0xEE, 0x1B,
|
||||
0x10, 0x65, 0x02, 0x66, 0x85, 0x12, 0xCA, 0xCD, 0xFF, 0x1A, 0x51, 0x03, 0x66, 0x8D, 0x26, 0x90,
|
||||
0xFC, 0xEF, 0xBD, 0x19, 0x22, 0xA1, 0xDB, 0xDE, 0x3A, 0x10, 0x11, 0xB9, 0x02, 0xDD, 0x83, 0xEE,
|
||||
0x3A, 0x93, 0x39, 0x02, 0x11, 0x9C, 0xDA, 0xFE, 0xEE, 0xDD, 0xAD, 0x01, 0x00, 0x30, 0xFB, 0xFF,
|
||||
0xAD, 0xA3, 0xFF, 0xDE, 0x0A, 0xC9, 0xDD, 0xDE, 0xAE, 0x20, 0x65, 0x66, 0x26, 0x91, 0xDB, 0xFE,
|
||||
0xBF, 0x08, 0x62, 0x02, 0x66, 0x93, 0x15, 0x10, 0xCA, 0xFE, 0xEF, 0x0A, 0x21, 0x15, 0x80, 0xCB,
|
||||
0xFD, 0xBC, 0xAD, 0xA3, 0xEE, 0xCE, 0xDD, 0xDC, 0x1A, 0x10, 0x06, 0x66, 0x81, 0x56, 0x62, 0x09,
|
||||
0x66, 0x80, 0x26, 0x07, 0x66, 0x89, 0x02, 0xA1, 0xDC, 0xBB, 0xCC, 0xFD, 0xEE, 0xDF, 0x09, 0x20,
|
||||
0x03, 0x66, 0x85, 0x11, 0xCB, 0xCC, 0xDE, 0x19, 0x62, 0x03, 0x66, 0x97, 0x56, 0x11, 0xDA, 0xEE,
|
||||
0xDE, 0x1A, 0x21, 0xA1, 0xEC, 0xEE, 0x1B, 0x00, 0x10, 0x81, 0xCB, 0xED, 0xEE, 0x9C, 0xA3, 0x39,
|
||||
0x18, 0x01, 0xDA, 0xED, 0x02, 0xDD, 0x98, 0xAC, 0x01, 0x00, 0x30, 0xFB, 0xFF, 0xAD, 0xB8, 0xFF,
|
||||
0xDC, 0x0A, 0xC8, 0xDF, 0xCC, 0xAD, 0x11, 0x65, 0x66, 0x26, 0x91, 0xDC, 0xFE, 0xBF, 0x08, 0x72,
|
||||
0x02, 0x66, 0x8F, 0x25, 0x10, 0xDA, 0xED, 0xDE, 0x0A, 0x51, 0x15, 0x80, 0xBB, 0xEC, 0xCD, 0xBE,
|
||||
0xCA, 0xEE, 0xCD, 0x02, 0xBC, 0x82, 0x08, 0x20, 0x67, 0x05, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66,
|
||||
0x80, 0x26, 0x06, 0x66, 0x8A, 0x26, 0x01, 0xB8, 0xFE, 0xDE, 0xCC, 0xFC, 0xDD, 0xBF, 0x03, 0x61,
|
||||
0x03, 0x66, 0x85, 0x11, 0xDB, 0xCC, 0xBD, 0x18, 0x72, 0x04, 0x66, 0xB1, 0x01, 0xC9, 0xDE, 0xED,
|
||||
0x1A, 0x21, 0xA0, 0xDC, 0xED, 0x1B, 0x00, 0x90, 0x1A, 0xA8, 0xED, 0xEF, 0xAC, 0x98, 0x33, 0x13,
|
||||
0x00, 0xC9, 0xFE, 0xED, 0xFE, 0xBF, 0x01, 0x00, 0x80, 0xFB, 0xEF, 0xAC, 0xB8, 0xEE, 0xCE, 0x09,
|
||||
0xA1, 0xDE, 0xDD, 0xBE, 0x11, 0x65, 0x66, 0x26, 0x91, 0xCC, 0xEC, 0xBE, 0x08, 0x42, 0x02, 0x66,
|
||||
0x8A, 0x26, 0x10, 0xFA, 0xCC, 0xDE, 0x09, 0x62, 0x25, 0x90, 0xDB, 0xDD, 0x02, 0xEF, 0x02, 0xDD,
|
||||
0x85, 0xCD, 0xBC, 0xAC, 0x01, 0x20, 0x67, 0x05, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26,
|
||||
0x06, 0x66, 0x84, 0x25, 0x00, 0xC9, 0xCE, 0xFC, 0x02, 0xFF, 0x83, 0xFE, 0x9C, 0x00, 0x62, 0x03,
|
||||
0x66, 0x85, 0x31, 0xDB, 0xDC, 0xBE, 0x13, 0x62, 0x04, 0x66, 0x96, 0x12, 0xB8, 0xDE, 0xFE, 0x8B,
|
||||
0x21, 0xA0, 0xEC, 0xED, 0x1B, 0x00, 0x90, 0xAC, 0x31, 0xEB, 0xEF, 0xAE, 0x13, 0x33, 0x13, 0x10,
|
||||
0xDA, 0xCF, 0x02, 0xEC, 0xA7, 0xAD, 0x01, 0x00, 0x80, 0xFB, 0xCF, 0x8A, 0xB3, 0xEF, 0xCE, 0x13,
|
||||
0x81, 0xDC, 0xEE, 0xCE, 0x19, 0x65, 0x66, 0x26, 0x91, 0xCB, 0xCC, 0xBC, 0x08, 0x52, 0x66, 0x65,
|
||||
0x26, 0x80, 0xEC, 0xCC, 0xDE, 0x08, 0x65, 0x27, 0x90, 0xCB, 0xDC, 0xEE, 0xDE, 0x02, 0xED, 0x85,
|
||||
0xDE, 0xFF, 0xAD, 0x10, 0x21, 0x67, 0x05, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x06,
|
||||
0x66, 0x8A, 0x12, 0x10, 0xBA, 0xBD, 0xDB, 0xEE, 0xDF, 0xDC, 0x1A, 0x00, 0x65, 0x03, 0x66, 0x80,
|
||||
0x31, 0x02, 0xCB, 0x82, 0xBE, 0x13, 0x65, 0x03, 0x66, 0x97, 0x46, 0x16, 0xB1, 0xCD, 0xEC, 0x9D,
|
||||
0x11, 0xA1, 0xDC, 0xEE, 0x1B, 0x00, 0x90, 0xCC, 0x1A, 0xEA, 0xDE, 0xBE, 0x13, 0x81, 0x18, 0x10,
|
||||
0xFA, 0xCF, 0x02, 0xDC, 0x80, 0xAD, 0x02, 0x00, 0x94, 0x80, 0xFB, 0xBF, 0x18, 0xB8, 0xDE, 0xBE,
|
||||
0x31, 0x18, 0xFB, 0xFE, 0xDD, 0x1A, 0x62, 0x66, 0x26, 0x90, 0xDB, 0xBB, 0xBC, 0x08, 0x02, 0x11,
|
||||
0x94, 0x21, 0x12, 0xA1, 0xEF, 0xDD, 0xBD, 0x13, 0x66, 0x27, 0x90, 0xDC, 0xED, 0xEF, 0xEE, 0xFE,
|
||||
0xCC, 0xBC, 0xFD, 0x9C, 0x20, 0x22, 0x06, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x06,
|
||||
0x66, 0x8A, 0x02, 0xA0, 0xDC, 0xCE, 0xEC, 0xFE, 0xDF, 0xBB, 0x08, 0x20, 0x65, 0x03, 0x66, 0x85,
|
||||
0x81, 0xCB, 0xCA, 0xBD, 0x11, 0x65, 0x04, 0x66, 0x99, 0x27, 0xA1, 0xCC, 0xDD, 0xAE, 0x10, 0xA1,
|
||||
0xDC, 0xEE, 0x1B, 0x00, 0x90, 0xFC, 0x1B, 0xEA, 0xDE, 0xCD, 0x18, 0x88, 0x03, 0x10, 0xEB, 0xEE,
|
||||
0xCC, 0xDC, 0xAE, 0x02, 0x00, 0x94, 0x80, 0xFC, 0xBE, 0x13, 0xEA, 0xDD, 0xAC, 0x11, 0x13, 0xEA,
|
||||
0xFE, 0xEE, 0x1B, 0x61, 0x66, 0x26, 0x91, 0xDB, 0xAB, 0xCE, 0x09, 0x04, 0x00, 0x87, 0xB1, 0xDF,
|
||||
0xEE, 0xAC, 0x11, 0x62, 0x27, 0x90, 0x02, 0xDC, 0x88, 0xDF, 0xFC, 0xFF, 0xCC, 0xBC, 0xFD, 0x1B,
|
||||
0x20, 0x67, 0x06, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x06, 0x66, 0x89, 0x02, 0xB1,
|
||||
0xFF, 0xBC, 0xDC, 0xCD, 0xFC, 0xAC, 0x01, 0x52, 0x04, 0x66, 0x85, 0x91, 0xCC, 0xCB, 0xAE, 0x11,
|
||||
0x65, 0x04, 0x66, 0x91, 0x27, 0x91, 0xEC, 0xEE, 0xAF, 0x10, 0xA1, 0xEC, 0xFF, 0x1B, 0x00, 0xA0,
|
||||
0xEC, 0x3B, 0xD9, 0xDE, 0xED, 0x19, 0x02, 0x13, 0x85, 0x10, 0xCA, 0xBD, 0xDC, 0xED, 0x9C, 0x02,
|
||||
0x00, 0xAA, 0x90, 0xFC, 0xBE, 0x13, 0xEA, 0xED, 0x9D, 0x00, 0x18, 0xC8, 0xFE, 0xCF, 0x3B, 0x61,
|
||||
0x66, 0x26, 0x91, 0xDC, 0x9B, 0xDD, 0xAB, 0x19, 0x01, 0x00, 0x10, 0xC9, 0xEF, 0xFE, 0xAD, 0x00,
|
||||
0x62, 0x27, 0x90, 0xEC, 0xED, 0xEF, 0xFD, 0xFF, 0xEF, 0xCC, 0xCD, 0x0A, 0x51, 0x07, 0x66, 0x81,
|
||||
0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x05, 0x66, 0x8A, 0x56, 0x01, 0xB9, 0xCE, 0xBC, 0xDC, 0xCD,
|
||||
0xFB, 0x9C, 0x00, 0x62, 0x04, 0x66, 0x85, 0x91, 0xEC, 0xFD, 0xAF, 0x10, 0x65, 0x04, 0x66, 0x99,
|
||||
0x27, 0xA1, 0xFC, 0xFF, 0xAF, 0x11, 0xA1, 0xEC, 0xFF, 0x1B, 0x00, 0xA0, 0xFC, 0x9C, 0xC8, 0xEE,
|
||||
0xFE, 0x19, 0x33, 0x13, 0x10, 0xDA, 0xCD, 0xED, 0xDD, 0x9C, 0x02, 0x00, 0xAA, 0x90, 0xFC, 0xBF,
|
||||
0x18, 0xEB, 0xFD, 0x8C, 0x10, 0x13, 0xB3, 0xFE, 0xDF, 0x9C, 0x20, 0x66, 0x26, 0x91, 0xCB, 0xBB,
|
||||
0xDD, 0xCD, 0xBB, 0xAA, 0x9A, 0xA9, 0xFB, 0xEF, 0xCC, 0x9C, 0x10, 0x65, 0x27, 0x90, 0xFC, 0xFF,
|
||||
0xCE, 0xDC, 0xEF, 0xDE, 0xCB, 0xBD, 0x09, 0x71, 0x07, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80,
|
||||
0x26, 0x05, 0x66, 0x84, 0x26, 0x10, 0xEA, 0xDE, 0xDD, 0x02, 0xEE, 0x83, 0xED, 0x8C, 0x10, 0x65,
|
||||
0x04, 0x66, 0x84, 0x91, 0xFC, 0xED, 0xAF, 0x11, 0x05, 0x66, 0x99, 0x27, 0xA1, 0xFC, 0xDE, 0xAD,
|
||||
0x11, 0xA1, 0xEC, 0xDE, 0x1B, 0x00, 0xA0, 0xFD, 0xAD, 0xB3, 0xEE, 0xFF, 0x19, 0x13, 0x18, 0x10,
|
||||
0xDA, 0xCC, 0xDD, 0xDC, 0x9C, 0x02, 0x00, 0x95, 0x90, 0xFC, 0xBF, 0x88, 0xDB, 0xED, 0x1B, 0x81,
|
||||
0x18, 0xB1, 0xED, 0xFE, 0xAE, 0x21, 0x66, 0x56, 0x91, 0xEC, 0xEE, 0xDD, 0xFF, 0xEF, 0x03, 0xCC,
|
||||
0x91, 0xFC, 0xFF, 0xCC, 0x8C, 0x10, 0x66, 0x16, 0x90, 0xFC, 0xFF, 0xCE, 0xDC, 0xEF, 0xDE, 0xED,
|
||||
0xCE, 0x09, 0x20, 0x07, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x05, 0x66, 0x89, 0x25,
|
||||
0x10, 0xFA, 0xEE, 0xED, 0xDF, 0xDD, 0xBD, 0x8B, 0x20, 0x05, 0x66, 0x85, 0x91, 0xFC, 0xED, 0xAF,
|
||||
0x21, 0x67, 0x04, 0x66, 0x96, 0x26, 0x91, 0xEC, 0xDE, 0xAD, 0x11, 0x90, 0xEC, 0xEF, 0x3B, 0x00,
|
||||
0xA0, 0xFD, 0xAD, 0xB1, 0xEF, 0xFE, 0x19, 0x13, 0x19, 0x10, 0xDA, 0xED, 0x02, 0xCC, 0x80, 0x9B,
|
||||
0x02, 0x00, 0x97, 0x90, 0xFC, 0xAD, 0x91, 0xDC, 0xFF, 0x1B, 0x33, 0x38, 0xA1, 0xFD, 0xEF, 0xBD,
|
||||
0x21, 0x66, 0x56, 0x81, 0xFB, 0xEF, 0xCC, 0xFD, 0xDE, 0xDC, 0xDD, 0x02, 0xDC, 0x02, 0xEE, 0x87,
|
||||
0x1B, 0x10, 0x66, 0x15, 0xA0, 0xDC, 0xFF, 0xEE, 0x02, 0xFF, 0x85, 0xDD, 0xEE, 0xCC, 0x0A, 0x20,
|
||||
0x67, 0x06, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x05, 0x66, 0x89, 0x12, 0x80, 0xFC,
|
||||
0xDD, 0xEC, 0xCD, 0xCC, 0xBC, 0x19, 0x20, 0x04, 0x66, 0x85, 0x26, 0x91, 0xDC, 0xFD, 0x9D, 0x10,
|
||||
0x05, 0x66, 0x91, 0x12, 0x90, 0xCC, 0xCD, 0xAF, 0x11, 0xA0, 0xDC, 0xFE, 0x8B, 0x00, 0xA0, 0xFD,
|
||||
0x9C, 0xB1, 0xEF, 0xDE, 0x18, 0x02, 0x13, 0x85, 0x10, 0xFB, 0xDE, 0xDD, 0xED, 0x9C, 0x02, 0x00,
|
||||
0x94, 0x90, 0xEC, 0x9C, 0xB1, 0xDD, 0xEE, 0x1A, 0x11, 0x00, 0x90, 0xFC, 0xEF, 0xBE, 0x21, 0x66,
|
||||
0x56, 0x31, 0xEB, 0xEF, 0xED, 0xEF, 0x02, 0xEE, 0x8C, 0xED, 0xCD, 0xFD, 0xFF, 0xCF, 0x09, 0x21,
|
||||
0x66, 0x17, 0x90, 0xDC, 0xFF, 0xCD, 0x02, 0xFF, 0x85, 0xDE, 0xEE, 0xCC, 0x1B, 0x20, 0x67, 0x06,
|
||||
0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x04, 0x66, 0x82, 0x56, 0x02, 0xA0, 0x02, 0xFF,
|
||||
0x80, 0xEF, 0x02, 0xDD, 0x82, 0xBE, 0x08, 0x20, 0x04, 0x66, 0x86, 0x16, 0x90, 0xDC, 0xED, 0xAD,
|
||||
0x11, 0x62, 0x04, 0x66, 0x95, 0x02, 0xA0, 0xFD, 0xDE, 0xAD, 0x11, 0x90, 0xEC, 0xFF, 0x1B, 0x00,
|
||||
0xA1, 0xFD, 0x1B, 0xB3, 0xFF, 0xDF, 0x08, 0x11, 0x31, 0x30, 0xFB, 0x02, 0xDD, 0x81, 0xED, 0x8B,
|
||||
0x02, 0x00, 0x86, 0x90, 0xDC, 0x3B, 0xD8, 0xCD, 0xDD, 0x1A, 0x02, 0x11, 0xA1, 0x91, 0xFC, 0xDE,
|
||||
0xBE, 0x11, 0x66, 0x56, 0x81, 0xEB, 0xDE, 0xDC, 0xCF, 0xDC, 0xDD, 0xCC, 0xBC, 0xFD, 0xFF, 0xAC,
|
||||
0x01, 0x62, 0x66, 0x27, 0xA1, 0xED, 0xFF, 0xDD, 0xFE, 0xFF, 0xFE, 0xDE, 0xDD, 0x8B, 0x20, 0x07,
|
||||
0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x04, 0x66, 0x8A, 0x26, 0x00, 0xB1, 0xEF, 0xED,
|
||||
0xCD, 0xCC, 0xCB, 0xAC, 0x01, 0x51, 0x04, 0x66, 0x86, 0x17, 0x80, 0xFC, 0xDE, 0xAD, 0x01, 0x62,
|
||||
0x04, 0x66, 0x96, 0x15, 0xA0, 0xFD, 0xDE, 0xAD, 0x11, 0xA0, 0xDC, 0xFF, 0x1B, 0x00, 0xA1, 0xFD,
|
||||
0x1B, 0xD9, 0xFD, 0xBF, 0x03, 0x81, 0x13, 0x80, 0xFB, 0xEE, 0x02, 0xFE, 0x80, 0x1B, 0x02, 0x00,
|
||||
0x98, 0xA0, 0xDC, 0x1A, 0xF9, 0xDE, 0xCC, 0xBC, 0xAA, 0xAB, 0xBA, 0xFD, 0xEF, 0xCF, 0x01, 0x62,
|
||||
0x56, 0x91, 0xEB, 0xDD, 0xDC, 0xBE, 0xFB, 0xDD, 0xDC, 0xDD, 0x02, 0xFF, 0x88, 0x1A, 0x10, 0x65,
|
||||
0x66, 0x12, 0xA1, 0xFE, 0xEE, 0xCC, 0x03, 0xDD, 0x02, 0xCC, 0x82, 0x9C, 0x10, 0x62, 0x06, 0x66,
|
||||
0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x04, 0x66, 0x82, 0x15, 0x00, 0xD9, 0x02, 0xDD, 0x85,
|
||||
0xCD, 0xEE, 0xDD, 0x9B, 0x00, 0x52, 0x04, 0x66, 0x86, 0x26, 0x80, 0xEB, 0xCC, 0xBD, 0x03, 0x62,
|
||||
0x04, 0x66, 0x99, 0x02, 0xB1, 0xDE, 0xDC, 0x9D, 0x11, 0x90, 0xDB, 0xEE, 0x1B, 0x00, 0xA1, 0xCE,
|
||||
0x19, 0xCA, 0xFC, 0xBE, 0x13, 0x81, 0x13, 0x90, 0xFD, 0xEE, 0xFE, 0xFD, 0x3B, 0x02, 0x00, 0x9C,
|
||||
0xA0, 0xBC, 0x13, 0xEB, 0xFF, 0xDD, 0xED, 0xEE, 0xFE, 0xEE, 0xDE, 0xED, 0xCF, 0x19, 0x62, 0x56,
|
||||
0x81, 0xDB, 0xEE, 0xCC, 0xBB, 0xCB, 0xDC, 0xCC, 0xFC, 0xFE, 0xCF, 0x09, 0x20, 0x02, 0x66, 0x8C,
|
||||
0x12, 0xA1, 0xEF, 0xEE, 0xDD, 0xCD, 0xDD, 0xEE, 0xED, 0xDD, 0xBD, 0x01, 0x71, 0x06, 0x66, 0x81,
|
||||
0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x04, 0x66, 0x83, 0x02, 0x10, 0xEB, 0xED, 0x02, 0xFF, 0x84,
|
||||
0xFE, 0xEF, 0x1A, 0x10, 0x65, 0x04, 0x66, 0x86, 0x76, 0x11, 0xDB, 0xDC, 0xDF, 0x09, 0x52, 0x04,
|
||||
0x66, 0x99, 0x02, 0xB9, 0xDD, 0xDC, 0x9B, 0x21, 0x91, 0xDB, 0xFF, 0x1B, 0x00, 0xA1, 0x9B, 0x31,
|
||||
0xDB, 0xDD, 0xAD, 0x31, 0x88, 0x01, 0x90, 0xFF, 0xDD, 0xEE, 0xDD, 0x1B, 0x02, 0x00, 0x9C, 0xA0,
|
||||
0xAB, 0x80, 0xEC, 0xEF, 0xEE, 0xED, 0xDD, 0xDE, 0xED, 0xCD, 0xEC, 0xEF, 0x8B, 0x61, 0x56, 0x31,
|
||||
0xCB, 0xEF, 0xCD, 0x9A, 0x98, 0xBA, 0xFE, 0xFF, 0xFE, 0xBF, 0x08, 0x51, 0x02, 0x66, 0x8C, 0x02,
|
||||
0xA1, 0xCD, 0xEE, 0xDD, 0xBC, 0xDD, 0xFE, 0xEF, 0xFF, 0xCF, 0x09, 0x71, 0x06, 0x66, 0x81, 0x56,
|
||||
0x62, 0x09, 0x66, 0x80, 0x26, 0x04, 0x66, 0x89, 0x01, 0x10, 0xCB, 0xDD, 0xED, 0xEF, 0xEE, 0xDE,
|
||||
0x0A, 0x21, 0x06, 0x66, 0x85, 0x12, 0xDB, 0xDC, 0xFF, 0x1A, 0x21, 0x03, 0x66, 0x82, 0x26, 0x11,
|
||||
0xCA, 0x02, 0xDD, 0x95, 0x3B, 0x51, 0x91, 0xDB, 0xEF, 0x1B, 0x00, 0xA1, 0x18, 0xA1, 0xDC, 0xDD,
|
||||
0xAC, 0x91, 0x89, 0x01, 0xA0, 0xFF, 0xCD, 0xED, 0xDE, 0x1B, 0x02, 0x00, 0x8A, 0xA0, 0x1A, 0x90,
|
||||
0xFC, 0xEF, 0xFE, 0xEE, 0xDE, 0xDD, 0xED, 0xDE, 0x02, 0xDD, 0x8F, 0x9B, 0x61, 0x56, 0x31, 0xCA,
|
||||
0xFE, 0xDE, 0x1A, 0x00, 0x91, 0xFB, 0xEF, 0xFF, 0xBF, 0x13, 0x62, 0x02, 0x66, 0x8C, 0x02, 0xA1,
|
||||
0xDD, 0xCB, 0xEE, 0xCD, 0xDE, 0xFD, 0xEF, 0xFE, 0xDF, 0x1A, 0x61, 0x06, 0x66, 0x81, 0x56, 0x62,
|
||||
0x09, 0x66, 0x80, 0x26, 0x03, 0x66, 0x85, 0x56, 0x01, 0x10, 0xBA, 0xDD, 0xDC, 0x02, 0xFF, 0x82,
|
||||
0xCE, 0x09, 0x71, 0x06, 0x66, 0xA3, 0x12, 0xEA, 0xFE, 0xFF, 0x9C, 0x11, 0x22, 0x66, 0x76, 0x12,
|
||||
0x91, 0xFC, 0xDF, 0xDE, 0x1A, 0x51, 0x91, 0xFC, 0xDF, 0x3B, 0x00, 0x10, 0x81, 0xCA, 0xFE, 0xDE,
|
||||
0x9C, 0x98, 0x39, 0x01, 0xA1, 0xFF, 0xCE, 0xED, 0xDE, 0x1A, 0x02, 0x00, 0x82, 0xA0, 0x1A, 0xA1,
|
||||
0x02, 0xDD, 0x8F, 0xEF, 0xEE, 0xDE, 0xED, 0xDE, 0xFF, 0xCD, 0xCC, 0xAC, 0x21, 0x55, 0x31, 0xDA,
|
||||
0xFE, 0xDF, 0x1A, 0x02, 0x00, 0x8E, 0xDA, 0xED, 0xDD, 0xBC, 0x18, 0x62, 0x66, 0x56, 0x02, 0xA1,
|
||||
0xCC, 0xBA, 0xFD, 0xDE, 0xED, 0x03, 0xFE, 0x83, 0xCF, 0x1A, 0x20, 0x67, 0x05, 0x66, 0x81, 0x56,
|
||||
0x62, 0x09, 0x66, 0x80, 0x26, 0x03, 0x66, 0x85, 0x26, 0x00, 0x11, 0xCA, 0xEF, 0xEE, 0x02, 0xEF,
|
||||
0x82, 0xAE, 0x01, 0x61, 0x06, 0x66, 0xA3, 0x02, 0xCA, 0xDD, 0xCD, 0xBE, 0x03, 0x10, 0x62, 0x26,
|
||||
0x01, 0xB3, 0xFF, 0xDF, 0xDD, 0x1A, 0x22, 0x90, 0xCB, 0xDD, 0x9C, 0x00, 0x81, 0xB9, 0xEC, 0xDD,
|
||||
0xEC, 0x3B, 0x31, 0x89, 0x01, 0xB1, 0xFF, 0xCC, 0xED, 0xCE, 0x0A, 0x02, 0x00, 0x82, 0xA0, 0x1A,
|
||||
0xB8, 0x02, 0xED, 0xA7, 0xEF, 0xFE, 0xCE, 0xEC, 0xED, 0xDD, 0xDE, 0xDD, 0xAD, 0x11, 0x72, 0x12,
|
||||
0xDA, 0xFF, 0xDF, 0x1A, 0x21, 0x02, 0xB8, 0xED, 0xDD, 0xCC, 0x09, 0x51, 0x66, 0x56, 0x01, 0xB3,
|
||||
0xDC, 0xCB, 0xFE, 0xDE, 0xDC, 0xDF, 0xDC, 0xEE, 0xDD, 0x8B, 0x10, 0x65, 0x05, 0x66, 0x81, 0x56,
|
||||
0x62, 0x09, 0x66, 0x80, 0x26, 0x03, 0x66, 0x85, 0x26, 0x00, 0x88, 0xDA, 0xED, 0xFE, 0x02, 0xCD,
|
||||
0x82, 0x9C, 0x00, 0x62, 0x06, 0x66, 0xA3, 0x02, 0xC9, 0xCC, 0xCD, 0xEE, 0x8A, 0x00, 0x10, 0x01,
|
||||
0x80, 0xDA, 0xFF, 0xEF, 0xBD, 0x19, 0x22, 0x90, 0xDC, 0xDD, 0xBD, 0x99, 0xBA, 0xDC, 0xFE, 0xEE,
|
||||
0xED, 0x1A, 0x30, 0x99, 0x01, 0xB1, 0xFF, 0xDD, 0xFE, 0xDF, 0x0A, 0x02, 0x00, 0xA0, 0xA0, 0x1A,
|
||||
0xDA, 0xED, 0xDE, 0xCD, 0xFE, 0xCF, 0xEC, 0xEE, 0xDD, 0xFF, 0xCE, 0xBE, 0x01, 0x72, 0x02, 0xC9,
|
||||
0xEF, 0xEE, 0x1A, 0x51, 0x15, 0xB1, 0xED, 0xEE, 0xED, 0x1A, 0x51, 0x66, 0x26, 0x01, 0xB3, 0x02,
|
||||
0xED, 0x89, 0xDF, 0xFE, 0xBD, 0xCA, 0xDD, 0xDE, 0xFC, 0x9C, 0x00, 0x62, 0x05, 0x66, 0x81, 0x56,
|
||||
0x62, 0x09, 0x66, 0x80, 0x26, 0x03, 0x66, 0x85, 0x16, 0x30, 0xAB, 0xDC, 0xDD, 0xEE, 0x02, 0xDE,
|
||||
0x82, 0x1B, 0x10, 0x65, 0x06, 0x66, 0x81, 0x15, 0xB3, 0x02, 0xCC, 0x82, 0xDC, 0xBC, 0x39, 0x02,
|
||||
0x00, 0x8D, 0xB8, 0xEC, 0xDC, 0xDD, 0xAC, 0x11, 0x25, 0x90, 0xDC, 0xDE, 0xCD, 0xCC, 0xFE, 0xEF,
|
||||
0x02, 0xFF, 0x8A, 0xBF, 0x08, 0x98, 0xA9, 0x08, 0xB1, 0xFE, 0xFF, 0xEE, 0xCF, 0x0A, 0x02, 0x00,
|
||||
0x83, 0x90, 0x33, 0xDB, 0xCC, 0x02, 0xDD, 0xA6, 0xED, 0xCE, 0xFC, 0xDE, 0xFE, 0xFF, 0xEF, 0xBE,
|
||||
0x08, 0x72, 0x02, 0xB9, 0xDE, 0xEC, 0x1A, 0x61, 0x26, 0x90, 0xDC, 0xEE, 0xEF, 0x1B, 0x51, 0x66,
|
||||
0x26, 0x01, 0xB3, 0xEE, 0xED, 0xEF, 0xFE, 0x8B, 0xA1, 0xED, 0xEF, 0xFE, 0xAF, 0x01, 0x52, 0x05,
|
||||
0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x02, 0x66, 0x8A, 0x76, 0x02, 0xA0, 0xDC, 0xFE,
|
||||
0xEE, 0xFF, 0xEF, 0xCD, 0x0A, 0x20, 0x04, 0x66, 0x86, 0x55, 0x25, 0x72, 0x16, 0xA0, 0xED, 0xDD,
|
||||
0x02, 0xED, 0x84, 0xBC, 0xAA, 0xA9, 0xCB, 0xEC, 0x02, 0xDD, 0x92, 0x9B, 0x20, 0x26, 0x91, 0xBC,
|
||||
0xBB, 0xED, 0xFE, 0xCF, 0xED, 0xEE, 0xFE, 0xAC, 0x10, 0x99, 0xA8, 0x09, 0xB1, 0xDD, 0x02, 0xEE,
|
||||
0x81, 0xCE, 0x0A, 0x02, 0x00, 0x82, 0x81, 0x91, 0xDC, 0x02, 0xCD, 0x83, 0x9A, 0xA9, 0xBA, 0xCB,
|
||||
0x02, 0xCC, 0xA1, 0xFD, 0xDF, 0xCD, 0x09, 0x72, 0x15, 0xC9, 0xEE, 0xFD, 0x3B, 0x71, 0x56, 0x31,
|
||||
0xEB, 0xEE, 0xFE, 0x3B, 0x21, 0x66, 0x56, 0x01, 0xB3, 0xDD, 0xED, 0xFE, 0xFF, 0x1A, 0x90, 0xBB,
|
||||
0xEE, 0xDE, 0xBF, 0x08, 0x51, 0x05, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x02, 0x66,
|
||||
0x9A, 0x56, 0x01, 0xB1, 0xDD, 0xFE, 0xFF, 0xEE, 0xDF, 0xBB, 0x08, 0x71, 0x56, 0x55, 0x65, 0x56,
|
||||
0x12, 0x01, 0x51, 0x25, 0x90, 0xCC, 0xCD, 0xFE, 0xFF, 0xEE, 0xDD, 0xDC, 0x02, 0xEE, 0x87, 0xDF,
|
||||
0xCD, 0x1A, 0x61, 0x26, 0x90, 0xDC, 0xEE, 0x02, 0xFF, 0x02, 0xEE, 0x02, 0xCE, 0x8A, 0x1A, 0x10,
|
||||
0xA9, 0x98, 0x03, 0xB8, 0xBC, 0xCB, 0xDD, 0xCD, 0x09, 0x02, 0x00, 0x9C, 0x91, 0xA1, 0xED, 0xDE,
|
||||
0xAD, 0x01, 0x00, 0x10, 0x31, 0x88, 0x98, 0xCA, 0xDE, 0xCC, 0x1A, 0x72, 0x15, 0xB3, 0xEE, 0xED,
|
||||
0x3B, 0x71, 0x66, 0x11, 0xDA, 0xCD, 0xFC, 0x8E, 0x21, 0x02, 0x66, 0x8D, 0x02, 0xB1, 0xDF, 0xCE,
|
||||
0xFC, 0xBF, 0x08, 0x10, 0xCB, 0xEE, 0xCD, 0xEE, 0x1A, 0x21, 0x05, 0x66, 0x81, 0x56, 0x62, 0x09,
|
||||
0x66, 0x80, 0x26, 0x02, 0x66, 0x82, 0x26, 0x00, 0xC9, 0x02, 0xDE, 0x9E, 0xEF, 0xDD, 0xFF, 0xAC,
|
||||
0x01, 0x21, 0x22, 0x11, 0x22, 0x12, 0x01, 0x00, 0x10, 0x25, 0x10, 0xCA, 0xED, 0xEF, 0xEE, 0xDD,
|
||||
0xED, 0xEE, 0xFE, 0xEF, 0xEE, 0xBC, 0x01, 0x72, 0x26, 0x90, 0xDC, 0x03, 0xEE, 0x8E, 0xDE, 0xED,
|
||||
0xDF, 0xAC, 0x13, 0x11, 0x99, 0x89, 0x01, 0xC8, 0xCC, 0xEC, 0xEE, 0xCF, 0x09, 0x02, 0x00, 0x87,
|
||||
0x91, 0xA1, 0xDD, 0xFE, 0x8B, 0x31, 0x10, 0x01, 0x03, 0x00, 0xA1, 0xA1, 0xDD, 0xCC, 0x1A, 0x72,
|
||||
0x15, 0xB3, 0xCD, 0xDC, 0x3B, 0x71, 0x66, 0x02, 0xD9, 0xFE, 0xFF, 0xAF, 0x21, 0x65, 0x66, 0x02,
|
||||
0xB1, 0xFF, 0xEF, 0xFD, 0xAD, 0x01, 0x00, 0xCA, 0xED, 0xEE, 0xFF, 0x8C, 0x20, 0x05, 0x66, 0x81,
|
||||
0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x02, 0x66, 0x8A, 0x26, 0x10, 0xEA, 0xFF, 0xEF, 0xFF, 0xFE,
|
||||
0xEF, 0x9C, 0x00, 0x10, 0x06, 0x00, 0x8A, 0x10, 0x62, 0x01, 0xB9, 0xFB, 0xEF, 0xDE, 0xCC, 0xCB,
|
||||
0xDD, 0xFD, 0x02, 0xFF, 0x84, 0x9C, 0x10, 0x65, 0x15, 0xA0, 0x02, 0xCC, 0x87, 0xCD, 0xDD, 0xDE,
|
||||
0xED, 0xBD, 0x3A, 0xA3, 0xAA, 0x02, 0x99, 0x82, 0x01, 0xD9, 0xDD, 0x02, 0xFF, 0x81, 0xCF, 0x09,
|
||||
0x02, 0x00, 0xA8, 0x81, 0xB3, 0xCC, 0xED, 0x1A, 0xA9, 0x33, 0x18, 0x93, 0x19, 0x11, 0xA0, 0xDD,
|
||||
0xCC, 0x1A, 0x21, 0x15, 0xB1, 0xCC, 0xDC, 0x3B, 0x51, 0x66, 0x16, 0xC8, 0xFE, 0xFF, 0xBF, 0x11,
|
||||
0x62, 0x66, 0x02, 0xB8, 0xEE, 0xFF, 0xFD, 0x8B, 0x10, 0x01, 0xA1, 0xEC, 0x02, 0xCD, 0x82, 0x9C,
|
||||
0x10, 0x62, 0x04, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x02, 0x66, 0x88, 0x15, 0x90,
|
||||
0xEC, 0xFF, 0xEF, 0xFE, 0xFF, 0xBF, 0x1A, 0x09, 0x00, 0x88, 0x62, 0x15, 0xA1, 0xCB, 0xEF, 0xDE,
|
||||
0xCC, 0xDB, 0xFE, 0x02, 0xFF, 0x88, 0xDF, 0x0A, 0x10, 0x66, 0x27, 0xA1, 0xCD, 0xED, 0xDE, 0x02,
|
||||
0xED, 0x8D, 0xCD, 0x9A, 0x81, 0xBA, 0xBB, 0xAA, 0x9A, 0x01, 0xB8, 0xFF, 0xCD, 0xCC, 0xBC, 0x09,
|
||||
0x02, 0x00, 0xAD, 0x11, 0xB8, 0xFF, 0xCE, 0x19, 0xA9, 0x89, 0x39, 0x81, 0x19, 0x12, 0x90, 0xEC,
|
||||
0xCD, 0x8B, 0x00, 0x11, 0xA1, 0xDC, 0xFF, 0x3B, 0x21, 0x66, 0x16, 0xB1, 0xDD, 0xEE, 0xEF, 0x19,
|
||||
0x52, 0x56, 0x02, 0xC8, 0xDD, 0xEE, 0xEC, 0x1A, 0x10, 0x15, 0xA0, 0xFD, 0xDE, 0xCE, 0xAC, 0x01,
|
||||
0x52, 0x04, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x02, 0x66, 0x88, 0x02, 0xA0, 0xCC,
|
||||
0xFE, 0xEE, 0xED, 0xFF, 0xAE, 0x01, 0x02, 0x00, 0x8D, 0x01, 0x00, 0x11, 0x83, 0x33, 0x99, 0x01,
|
||||
0x62, 0x25, 0x10, 0xCA, 0xFF, 0xEE, 0xCF, 0x03, 0xFF, 0x95, 0xFE, 0xBE, 0x03, 0x10, 0x66, 0x27,
|
||||
0xA1, 0xCD, 0xDC, 0xDE, 0xDC, 0xBC, 0x9A, 0x01, 0xA8, 0xBC, 0xBB, 0xAB, 0x9A, 0x03, 0x91, 0xAA,
|
||||
0x02, 0x99, 0x80, 0x39, 0x04, 0x00, 0x9F, 0xA1, 0xCB, 0xBE, 0x18, 0xA9, 0xAA, 0x99, 0x89, 0x11,
|
||||
0x38, 0x80, 0xEB, 0xCD, 0x9C, 0x00, 0x12, 0xA1, 0xEC, 0xFF, 0x3B, 0x51, 0x66, 0x26, 0x90, 0xCB,
|
||||
0xCD, 0xDC, 0x09, 0x51, 0x56, 0x02, 0xC8, 0x02, 0xCC, 0x8A, 0xFD, 0x0A, 0x20, 0x17, 0x80, 0xFB,
|
||||
0xDF, 0xFE, 0xCF, 0x08, 0x51, 0x04, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x90, 0x26, 0x66, 0x76,
|
||||
0x01, 0xB1, 0xCC, 0xFE, 0xFF, 0xEE, 0xFF, 0xAE, 0x88, 0x89, 0x99, 0xAA, 0x99, 0xAA, 0x02, 0xBB,
|
||||
0x93, 0xBC, 0x01, 0x62, 0x26, 0x01, 0xA3, 0xED, 0xEE, 0xDD, 0xEE, 0xFF, 0xEF, 0xDD, 0x3A, 0x00,
|
||||
0x11, 0x66, 0x27, 0x91, 0xBB, 0x02, 0xAA, 0x8B, 0x99, 0x38, 0x11, 0x31, 0xBB, 0xBC, 0xCB, 0xAB,
|
||||
0x9A, 0x18, 0x00, 0x11, 0x02, 0x00, 0x88, 0x10, 0x11, 0x01, 0x00, 0x81, 0x11, 0x83, 0x99, 0x91,
|
||||
0x02, 0xAA, 0xA6, 0x9A, 0x99, 0x13, 0x38, 0x80, 0xFB, 0xDE, 0xAD, 0x11, 0x17, 0xA1, 0xFD, 0xFF,
|
||||
0x3B, 0x61, 0x66, 0x26, 0x31, 0xDB, 0xDD, 0xDC, 0x0A, 0x50, 0x56, 0x01, 0xC8, 0xDD, 0xCC, 0xED,
|
||||
0x0A, 0x20, 0x56, 0x10, 0xEA, 0xDF, 0xFD, 0xFF, 0x1A, 0x20, 0x04, 0x66, 0x81, 0x56, 0x62, 0x09,
|
||||
0x66, 0xA4, 0x26, 0x66, 0x56, 0x01, 0xC9, 0xEF, 0xFF, 0xCD, 0xEC, 0xEF, 0xDF, 0xBB, 0xBC, 0xCC,
|
||||
0xBD, 0xCB, 0xCD, 0xED, 0xFD, 0xBE, 0x08, 0x62, 0x56, 0x01, 0x10, 0xBA, 0xDD, 0xDC, 0xEF, 0xFF,
|
||||
0xDD, 0xAD, 0x03, 0x10, 0x22, 0x66, 0x26, 0x03, 0x11, 0x8B, 0x01, 0x00, 0x30, 0xA9, 0xB9, 0xDE,
|
||||
0xBC, 0xCC, 0xBB, 0xAA, 0x89, 0x13, 0x02, 0x11, 0x82, 0x12, 0x21, 0x26, 0x02, 0x00, 0x81, 0xA3,
|
||||
0x09, 0x02, 0x00, 0xA4, 0xA1, 0xAB, 0xAA, 0x8A, 0x98, 0x18, 0x11, 0x31, 0xFB, 0xFF, 0xBD, 0x13,
|
||||
0x27, 0xA1, 0xFC, 0xFE, 0x8B, 0x20, 0x67, 0x56, 0x11, 0xEB, 0xFE, 0xDE, 0x1B, 0x50, 0x26, 0x00,
|
||||
0xC9, 0xCE, 0xEC, 0xDF, 0x0A, 0x20, 0x66, 0x01, 0xDA, 0x03, 0xFF, 0x81, 0x1B, 0x20, 0x04, 0x66,
|
||||
0x81, 0x56, 0x62, 0x09, 0x66, 0x8B, 0x26, 0x66, 0x15, 0x10, 0xDA, 0xDF, 0xED, 0xBC, 0xDC, 0xFE,
|
||||
0xEF, 0xBA, 0x02, 0xFF, 0x99, 0xCE, 0xEC, 0xFF, 0xEF, 0xFD, 0xCF, 0x08, 0x62, 0x56, 0x12, 0x01,
|
||||
0x91, 0xDB, 0xEC, 0xCE, 0xFD, 0xBD, 0x3A, 0x10, 0x11, 0x55, 0x66, 0x56, 0x12, 0x11, 0x01, 0x02,
|
||||
0x00, 0x8E, 0xA8, 0xFC, 0xEC, 0xCD, 0xBB, 0xCC, 0xBB, 0xA9, 0x8A, 0x79, 0x77, 0x66, 0x26, 0x65,
|
||||
0x26, 0x02, 0x00, 0xAE, 0xB3, 0x1B, 0x91, 0x99, 0xBA, 0xBB, 0x9A, 0x38, 0x39, 0x11, 0x10, 0x11,
|
||||
0xEA, 0xDE, 0xBE, 0x18, 0x27, 0x91, 0xEB, 0xFE, 0x8B, 0x20, 0x67, 0x56, 0x01, 0xFA, 0xFE, 0xEE,
|
||||
0x3B, 0x20, 0x25, 0x01, 0xC8, 0xCF, 0xFC, 0xEF, 0x0A, 0x21, 0x66, 0x02, 0xC8, 0xFE, 0xDD, 0xFF,
|
||||
0x8E, 0x10, 0x65, 0x03, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0xA1, 0x26, 0x66, 0x12, 0x30, 0xFB,
|
||||
0xDF, 0xFD, 0xCD, 0xFF, 0xFE, 0xDF, 0xA9, 0xFE, 0xFF, 0xEF, 0xCE, 0xFD, 0xFF, 0xCD, 0xCC, 0x08,
|
||||
0x62, 0x66, 0x25, 0x01, 0x00, 0x81, 0xAA, 0xBA, 0xBB, 0x3A, 0x01, 0x21, 0x55, 0x03, 0x66, 0x02,
|
||||
0x55, 0x8C, 0x12, 0x11, 0x31, 0xBA, 0xFF, 0xEF, 0xCD, 0xCC, 0xBC, 0xBB, 0xAA, 0x9A, 0x69, 0x04,
|
||||
0x66, 0x80, 0x26, 0x02, 0x00, 0x83, 0xB3, 0x9D, 0xC9, 0xCC, 0x02, 0xBB, 0x8B, 0x9A, 0x98, 0x39,
|
||||
0x31, 0x13, 0x00, 0xA3, 0xDB, 0xBE, 0x18, 0x55, 0x91, 0x02, 0xCB, 0x9A, 0x8B, 0x20, 0x67, 0x66,
|
||||
0x12, 0xD8, 0xEF, 0xDE, 0x8C, 0x20, 0x56, 0x02, 0xC9, 0xDD, 0xFE, 0xFF, 0x1A, 0x51, 0x66, 0x15,
|
||||
0xB1, 0xEE, 0xBC, 0xCC, 0x9C, 0x00, 0x65, 0x03, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x86, 0x26,
|
||||
0x66, 0x02, 0x90, 0xFB, 0xEF, 0xFE, 0x02, 0xFF, 0x86, 0xEE, 0xDF, 0xA9, 0xEE, 0xEF, 0xFE, 0xEF,
|
||||
0x02, 0xEE, 0x87, 0xBD, 0xCC, 0x08, 0x62, 0x66, 0x56, 0x12, 0x01, 0x02, 0x00, 0x02, 0x11, 0x82,
|
||||
0x00, 0x10, 0x62, 0x06, 0x66, 0x83, 0x25, 0x83, 0x99, 0xCA, 0x02, 0xFF, 0x80, 0xEF, 0x02, 0xCC,
|
||||
0x83, 0xBB, 0xAA, 0x9A, 0x68, 0x04, 0x66, 0x80, 0x26, 0x02, 0x00, 0x84, 0xB3, 0xAE, 0xBA, 0xDC,
|
||||
0xBC, 0x02, 0xAA, 0x8A, 0x89, 0x93, 0x39, 0x31, 0x13, 0x00, 0x98, 0xAA, 0x08, 0x72, 0x31, 0x02,
|
||||
0xBA, 0x95, 0x8B, 0x10, 0x65, 0x66, 0x15, 0xA1, 0xFF, 0xCF, 0x9D, 0x20, 0x56, 0x02, 0xC9, 0xDE,
|
||||
0xEE, 0xFF, 0x1A, 0x51, 0x66, 0x15, 0x90, 0xFD, 0x02, 0xCD, 0x82, 0xAC, 0x01, 0x62, 0x03, 0x66,
|
||||
0x81, 0x56, 0x62, 0x09, 0x66, 0x86, 0x26, 0x66, 0x12, 0x80, 0xDB, 0xCC, 0xEC, 0x02, 0xFF, 0x84,
|
||||
0xDF, 0xEE, 0xBA, 0xFE, 0xEF, 0x02, 0xFF, 0x85, 0xEE, 0xFE, 0xDE, 0xCE, 0x08, 0x62, 0x02, 0x66,
|
||||
0x82, 0x55, 0x15, 0x11, 0x03, 0x00, 0x82, 0x10, 0x21, 0x65, 0x06, 0x66, 0x83, 0x86, 0xA9, 0xAA,
|
||||
0xDB, 0x02, 0xFF, 0x81, 0xDF, 0xCC, 0x03, 0xBB, 0x81, 0xAA, 0x69, 0x04, 0x66, 0x80, 0x26, 0x02,
|
||||
0x00, 0xAE, 0xB3, 0xCF, 0xCB, 0xDD, 0xCC, 0xAC, 0x99, 0xAA, 0x98, 0x88, 0xA9, 0x8A, 0x01, 0x00,
|
||||
0x11, 0x01, 0x51, 0x01, 0x11, 0xBA, 0x8B, 0x10, 0x62, 0x66, 0x15, 0x90, 0xFC, 0xEF, 0xAE, 0x21,
|
||||
0x66, 0x02, 0xB8, 0xDE, 0xFE, 0xFF, 0x1A, 0x20, 0x66, 0x26, 0x10, 0xEA, 0xEF, 0xEE, 0xBF, 0x08,
|
||||
0x62, 0x03, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x8D, 0x26, 0x66, 0x16, 0x10, 0xBA, 0xCC, 0xFD,
|
||||
0xEF, 0xFE, 0xBE, 0xEC, 0xCB, 0xEF, 0xED, 0x05, 0xFF, 0x82, 0xBF, 0x03, 0x62, 0x03, 0x66, 0x87,
|
||||
0x56, 0x55, 0x11, 0x22, 0x52, 0x22, 0x55, 0x65, 0x06, 0x66, 0x83, 0x97, 0xAA, 0xBB, 0xDC, 0x02,
|
||||
0xFF, 0x86, 0xDD, 0xCC, 0xBC, 0xBB, 0xBA, 0xAA, 0x69, 0x04, 0x66, 0x80, 0x26, 0x02, 0x00, 0x85,
|
||||
0xB1, 0xEF, 0xDC, 0xEF, 0xDD, 0xBD, 0x02, 0xAA, 0xA6, 0xA9, 0x13, 0x33, 0x11, 0x23, 0x01, 0x00,
|
||||
0x10, 0x21, 0x12, 0x00, 0x10, 0x18, 0x20, 0x67, 0x66, 0x26, 0x31, 0xFB, 0xFF, 0xAF, 0x11, 0x65,
|
||||
0x02, 0xD9, 0xEF, 0xFF, 0xDF, 0x0A, 0x51, 0x66, 0x56, 0x00, 0xC9, 0xCF, 0xFC, 0xEF, 0x0A, 0x51,
|
||||
0x03, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x8D, 0x26, 0x66, 0x15, 0x10, 0xDA, 0xED, 0xFF, 0xDE,
|
||||
0xEE, 0xCE, 0xCD, 0xBB, 0xDE, 0xDC, 0x05, 0xFF, 0x82, 0xBF, 0x03, 0x62, 0x05, 0x66, 0x81, 0x22,
|
||||
0x65, 0x0A, 0x66, 0x83, 0x97, 0xBA, 0xBB, 0xEC, 0x02, 0xFF, 0x83, 0xEE, 0xCD, 0xBD, 0xBB, 0x02,
|
||||
0xBA, 0x80, 0x69, 0x04, 0x66, 0x80, 0x26, 0x02, 0x00, 0x84, 0xA0, 0xFD, 0xFF, 0xDE, 0xDD, 0x02,
|
||||
0xBC, 0x8B, 0xAA, 0xA9, 0x88, 0x99, 0x11, 0x89, 0x25, 0x12, 0x52, 0x66, 0x56, 0x15, 0x02, 0x00,
|
||||
0x81, 0x21, 0x67, 0x02, 0x66, 0x8C, 0x12, 0xFA, 0xEE, 0xBF, 0x03, 0x22, 0x01, 0xE9, 0xFF, 0xFE,
|
||||
0xCF, 0x09, 0x61, 0x02, 0x66, 0x86, 0x01, 0xB1, 0xEF, 0xFE, 0xDF, 0x1A, 0x20, 0x03, 0x66, 0x81,
|
||||
0x56, 0x62, 0x09, 0x66, 0x84, 0x26, 0x66, 0x02, 0x10, 0xDA, 0x02, 0xFF, 0x85, 0xEF, 0xDF, 0xCC,
|
||||
0xAC, 0xBB, 0xED, 0x04, 0xFF, 0x84, 0xFE, 0xEE, 0xBF, 0x03, 0x62, 0x05, 0x66, 0x80, 0x55, 0x0B,
|
||||
0x66, 0x83, 0xA7, 0xCB, 0xCC, 0xEC, 0x03, 0xFF, 0x85, 0xCD, 0xBC, 0xBB, 0xAB, 0xBA, 0x69, 0x04,
|
||||
0x66, 0x80, 0x26, 0x02, 0x00, 0x8D, 0x90, 0xFC, 0xEF, 0xFD, 0xDF, 0xBB, 0xAB, 0xAA, 0xA9, 0x9A,
|
||||
0x99, 0x83, 0xAA, 0x67, 0x04, 0x66, 0x83, 0x26, 0x02, 0x00, 0x51, 0x03, 0x66, 0x8C, 0x12, 0xD9,
|
||||
0xEF, 0xDE, 0x09, 0x22, 0x01, 0xC9, 0xEF, 0xFE, 0xCF, 0x09, 0x72, 0x02, 0x66, 0x81, 0x02, 0xA0,
|
||||
0x02, 0xFF, 0x82, 0xEF, 0x8C, 0x20, 0x03, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x95, 0x26, 0x66,
|
||||
0x12, 0x30, 0xCA, 0xFF, 0xFE, 0xDF, 0xCE, 0xBA, 0xCC, 0xDC, 0xEE, 0xFE, 0xFF, 0xEE, 0xEF, 0xED,
|
||||
0xFE, 0xAC, 0x01, 0x62, 0x11, 0x66, 0x83, 0xA7, 0xCB, 0xDD, 0xED, 0x04, 0xFF, 0x84, 0xCE, 0xCC,
|
||||
0xBC, 0xBB, 0x68, 0x04, 0x66, 0x80, 0x26, 0x02, 0x00, 0x8D, 0x30, 0xFB, 0xFF, 0xFE, 0xEF, 0xDD,
|
||||
0xCC, 0xBB, 0xAA, 0x8A, 0xA8, 0x38, 0x99, 0x67, 0x05, 0x66, 0x81, 0x26, 0x21, 0x04, 0x66, 0x8C,
|
||||
0x12, 0xB8, 0xFF, 0xEF, 0x0A, 0x51, 0x02, 0xA3, 0xEC, 0xFF, 0xBF, 0x01, 0x62, 0x02, 0x66, 0x87,
|
||||
0x15, 0x90, 0xFC, 0xEF, 0xDE, 0xAC, 0x10, 0x65, 0x02, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x84,
|
||||
0x26, 0x66, 0x15, 0x30, 0xDA, 0x02, 0xFF, 0x8E, 0xDE, 0xCD, 0xCB, 0xED, 0xDF, 0xEF, 0xFE, 0xFF,
|
||||
0xDD, 0xFF, 0xFE, 0xBF, 0x19, 0x10, 0x62, 0x11, 0x66, 0x83, 0xA7, 0xDB, 0xDD, 0xFE, 0x04, 0xFF,
|
||||
0x80, 0xEF, 0x02, 0xCD, 0x81, 0xAB, 0x68, 0x04, 0x66, 0x80, 0x26, 0x02, 0x00, 0x81, 0x10, 0xDA,
|
||||
0x02, 0xFF, 0x84, 0xCF, 0xDB, 0xBB, 0xBC, 0xAB, 0x02, 0xAA, 0x82, 0x99, 0x39, 0x65, 0x05, 0x66,
|
||||
0x81, 0x56, 0x52, 0x04, 0x66, 0x8C, 0x15, 0x91, 0xCA, 0xDF, 0x1B, 0x20, 0x12, 0x80, 0xA9, 0xBA,
|
||||
0xBD, 0x01, 0x62, 0x02, 0x66, 0x87, 0x25, 0x10, 0xEA, 0xFF, 0xDF, 0xBC, 0x11, 0x65, 0x02, 0x66,
|
||||
0x81, 0x56, 0x62, 0x09, 0x66, 0x8A, 0x26, 0x66, 0x15, 0x30, 0xFB, 0xEE, 0xFF, 0xEE, 0xBC, 0xFE,
|
||||
0xCB, 0x04, 0xFF, 0x86, 0xDD, 0xCD, 0xBC, 0x8A, 0x01, 0x21, 0x65, 0x11, 0x66, 0x82, 0xA7, 0xDC,
|
||||
0xED, 0x05, 0xFF, 0x84, 0xEF, 0xDD, 0xCE, 0xAC, 0x67, 0x04, 0x66, 0x80, 0x26, 0x02, 0x00, 0x81,
|
||||
0x10, 0xB9, 0x02, 0xFF, 0x82, 0xCF, 0xDC, 0xBB, 0x02, 0xAB, 0x84, 0xBA, 0xAB, 0xA9, 0x39, 0x65,
|
||||
0x0B, 0x66, 0x86, 0x26, 0x00, 0x91, 0xAA, 0x1A, 0x51, 0x26, 0x02, 0x00, 0x83, 0x31, 0x9A, 0x00,
|
||||
0x62, 0x02, 0x66, 0x82, 0x56, 0x01, 0xB8, 0x02, 0xFF, 0x82, 0xCE, 0x03, 0x62, 0x02, 0x66, 0x81,
|
||||
0x56, 0x62, 0x09, 0x66, 0x8B, 0x26, 0x66, 0x12, 0x80, 0xFB, 0xEE, 0xFF, 0xDF, 0xAA, 0xFF, 0xDC,
|
||||
0xEF, 0x02, 0xFF, 0x86, 0xDF, 0xDC, 0xAB, 0x39, 0x01, 0x10, 0x72, 0x12, 0x66, 0x82, 0xA8, 0xDD,
|
||||
0xED, 0x06, 0xFF, 0x02, 0xEE, 0x81, 0xBE, 0x67, 0x04, 0x66, 0x8B, 0x56, 0x01, 0x10, 0x81, 0xA9,
|
||||
0xFD, 0xFF, 0xEF, 0xCB, 0xBC, 0xAB, 0xBB, 0x02, 0xAA, 0x82, 0xA9, 0x9A, 0x67, 0x0B, 0x66, 0x87,
|
||||
0x26, 0x01, 0x00, 0x11, 0x01, 0x61, 0x66, 0x02, 0x02, 0x00, 0x82, 0x11, 0x00, 0x51, 0x03, 0x66,
|
||||
0x81, 0x02, 0xA1, 0x02, 0xFF, 0x82, 0xDF, 0x09, 0x62, 0x02, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66,
|
||||
0x90, 0x26, 0x66, 0x12, 0x30, 0xFB, 0xFF, 0xFD, 0xCE, 0xBA, 0xDF, 0xFE, 0xDF, 0xFF, 0xEF, 0xCC,
|
||||
0x9B, 0x18, 0x02, 0x00, 0x80, 0x21, 0x13, 0x66, 0x82, 0xB8, 0xED, 0xEE, 0x06, 0xFF, 0x83, 0xEF,
|
||||
0xFE, 0xBE, 0x67, 0x04, 0x66, 0x90, 0x56, 0x01, 0x81, 0xA8, 0xBA, 0xEC, 0xFF, 0xEF, 0xCB, 0xBB,
|
||||
0xAA, 0xBB, 0xAB, 0xA9, 0xBA, 0x9A, 0x67, 0x0B, 0x66, 0x82, 0x56, 0x22, 0x01, 0x02, 0x00, 0x83,
|
||||
0x62, 0x66, 0x15, 0x11, 0x02, 0x00, 0x81, 0x10, 0x52, 0x03, 0x66, 0x86, 0x15, 0x90, 0xFC, 0xFF,
|
||||
0xDF, 0x0A, 0x61, 0x02, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x86, 0x26, 0x66, 0x16, 0x80, 0xFB,
|
||||
0xEF, 0xFE, 0x02, 0xCD, 0x81, 0xCC, 0xFD, 0x02, 0xEF, 0x82, 0xBC, 0x9A, 0x03, 0x02, 0x00, 0x81,
|
||||
0x10, 0x65, 0x13, 0x66, 0x81, 0xB9, 0xDD, 0x09, 0xFF, 0x81, 0xBE, 0x67, 0x05, 0x66, 0x84, 0x12,
|
||||
0x98, 0xA9, 0xBB, 0xDC, 0x02, 0xFF, 0x81, 0xDD, 0xCC, 0x02, 0xBB, 0x80, 0xAB, 0x02, 0xAA, 0x81,
|
||||
0x9A, 0x67, 0x0D, 0x66, 0x86, 0x25, 0x12, 0x00, 0x62, 0x66, 0x56, 0x25, 0x02, 0x01, 0x81, 0x52,
|
||||
0x65, 0x03, 0x66, 0x86, 0x26, 0x10, 0xEA, 0xEE, 0xEF, 0x1B, 0x50, 0x02, 0x66, 0x81, 0x56, 0x62,
|
||||
0x09, 0x66, 0x86, 0x26, 0x66, 0x17, 0x90, 0xFB, 0xEF, 0xFF, 0x02, 0xDE, 0x85, 0xCB, 0xFE, 0xCD,
|
||||
0xAB, 0x39, 0x01, 0x02, 0x00, 0x81, 0x21, 0x52, 0x14, 0x66, 0x80, 0xB9, 0x02, 0xEE, 0x08, 0xFF,
|
||||
0x81, 0xBE, 0x67, 0x05, 0x66, 0x8A, 0x35, 0xA9, 0xBA, 0xDC, 0xDE, 0xFE, 0xFF, 0xDF, 0xDB, 0xBD,
|
||||
0xAB, 0x03, 0xAA, 0x81, 0x9A, 0x67, 0x0E, 0x66, 0x82, 0x56, 0x10, 0x65, 0x03, 0x66, 0x82, 0x15,
|
||||
0x22, 0x65, 0x04, 0x66, 0x8A, 0x56, 0x01, 0xC9, 0xDF, 0xED, 0x9C, 0x20, 0x67, 0x66, 0x56, 0x62,
|
||||
0x09, 0x66, 0x8C, 0x26, 0x66, 0x15, 0x90, 0xFC, 0xFF, 0xDF, 0xCC, 0xFC, 0xED, 0xCD, 0xAA, 0x11,
|
||||
0x02, 0x00, 0x82, 0x10, 0x22, 0x52, 0x14, 0x66, 0x83, 0x76, 0xB9, 0xEE, 0xFE, 0x08, 0xFF, 0x81,
|
||||
0xBE, 0x67, 0x05, 0x66, 0x82, 0x34, 0xA9, 0xDB, 0x02, 0xFF, 0x8A, 0xEF, 0xED, 0xDF, 0xDC, 0xBD,
|
||||
0xBC, 0xAA, 0xBA, 0xAA, 0x9A, 0x67, 0x0F, 0x66, 0x80, 0x21, 0x04, 0x66, 0x80, 0x26, 0x07, 0x66,
|
||||
0x89, 0x02, 0xA1, 0xED, 0xFE, 0xAD, 0x10, 0x67, 0x66, 0x56, 0x62, 0x09, 0x66, 0x87, 0x26, 0x66,
|
||||
0x12, 0x90, 0xFC, 0xFF, 0xEF, 0xDC, 0x02, 0xCC, 0x81, 0xAB, 0x11, 0x03, 0x00, 0x80, 0x21, 0x16,
|
||||
0x66, 0x83, 0x76, 0xB9, 0xEF, 0xFE, 0x08, 0xFF, 0x81, 0xAC, 0x67, 0x05, 0x66, 0x82, 0x76, 0xA9,
|
||||
0xCB, 0x02, 0xFF, 0x80, 0xEF, 0x02, 0xEE, 0x87, 0xFE, 0xEF, 0xEE, 0xBD, 0xCB, 0xBC, 0x9A, 0x67,
|
||||
0x0F, 0x66, 0x80, 0x52, 0x0C, 0x66, 0x89, 0x12, 0x30, 0xBA, 0xEC, 0xAE, 0x11, 0x67, 0x66, 0x56,
|
||||
0x62, 0x09, 0x66, 0x8A, 0x26, 0x66, 0x12, 0x90, 0xDC, 0xFF, 0xEF, 0xBC, 0x9A, 0x99, 0x19, 0x02,
|
||||
0x00, 0x82, 0x20, 0x25, 0x52, 0x16, 0x66, 0x81, 0x76, 0xB9, 0x09, 0xFF, 0x82, 0xCF, 0x9A, 0x67,
|
||||
0x06, 0x66, 0x82, 0xA7, 0xDB, 0xFE, 0x08, 0xFF, 0x82, 0xFE, 0xBD, 0x79, 0x1D, 0x66, 0x89, 0x26,
|
||||
0x00, 0x81, 0xBA, 0xAC, 0x11, 0x67, 0x66, 0x56, 0x62, 0x09, 0x66, 0x88, 0x26, 0x66, 0x02, 0x90,
|
||||
0xFC, 0xCE, 0xBC, 0x3A, 0x01, 0x03, 0x00, 0x81, 0x20, 0x52, 0x18, 0x66, 0x82, 0x76, 0xB9, 0xEE,
|
||||
0x08, 0xFF, 0x81, 0xAC, 0x79, 0x07, 0x66, 0x82, 0x96, 0xCA, 0xFE, 0x08, 0xFF, 0x82, 0xDF, 0x9B,
|
||||
0x67, 0x1D, 0x66, 0x89, 0x56, 0x01, 0x00, 0x80, 0x89, 0x10, 0x67, 0x66, 0x56, 0x62, 0x09, 0x66,
|
||||
0x87, 0x26, 0x56, 0x01, 0x90, 0xBB, 0x9A, 0x89, 0x01, 0x03, 0x00, 0x81, 0x10, 0x62, 0x19, 0x66,
|
||||
0x82, 0x76, 0xB9, 0xEC, 0x07, 0xFF, 0x82, 0xCF, 0x9A, 0x67, 0x07, 0x66, 0x82, 0x56, 0xA9, 0xDB,
|
||||
0x08, 0xFF, 0x81, 0xBD, 0x79, 0x1F, 0x66, 0x80, 0x15, 0x03, 0x00, 0x84, 0x10, 0x67, 0x66, 0x56,
|
||||
0x62, 0x09, 0x66, 0x85, 0x26, 0x56, 0x01, 0x00, 0x93, 0x03, 0x04, 0x00, 0x81, 0x10, 0x51, 0x1A,
|
||||
0x66, 0x82, 0x76, 0xB9, 0xFD, 0x07, 0xFF, 0x81, 0xAC, 0x79, 0x09, 0x66, 0x82, 0x75, 0xA9, 0xBB,
|
||||
0x06, 0xCC, 0x82, 0xBC, 0x9B, 0x67, 0x1F, 0x66, 0x81, 0x26, 0x01, 0x02, 0x00, 0x84, 0x10, 0x67,
|
||||
0x66, 0x56, 0x62, 0x09, 0x66, 0x82, 0x26, 0x56, 0x01, 0x05, 0x00, 0x83, 0x21, 0x01, 0x51, 0x65,
|
||||
0x1A, 0x66, 0x81, 0x76, 0xA9, 0x07, 0xBB, 0x81, 0xAB, 0x7A, 0x0B, 0x66, 0x83, 0x77, 0x99, 0xA9,
|
||||
0xAA, 0x05, 0x99, 0x80, 0x79, 0x20, 0x66, 0x80, 0x56, 0x02, 0x12, 0x85, 0x00, 0x20, 0x67, 0x66,
|
||||
0x56, 0x62, 0x09, 0x66, 0x82, 0x26, 0x66, 0x15, 0x04, 0x00, 0x83, 0x11, 0x72, 0x12, 0x62, 0x1C,
|
||||
0x66, 0x80, 0x97, 0x08, 0x99, 0x80, 0x67, 0x0C, 0x66, 0x82, 0x54, 0x76, 0x67, 0x05, 0x55, 0x80,
|
||||
0x65, 0x21, 0x66, 0x83, 0x76, 0x26, 0x00, 0x62, 0x02, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x8A,
|
||||
0x26, 0x66, 0x56, 0x12, 0x00, 0x11, 0x21, 0x52, 0x65, 0x22, 0x65, 0x1C, 0x66, 0x80, 0x56, 0x02,
|
||||
0x44, 0x06, 0x55, 0x38, 0x66, 0x81, 0x56, 0x21, 0x03, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80,
|
||||
0x26, 0x02, 0x66, 0x83, 0x55, 0x22, 0x52, 0x55, 0x02, 0x66, 0x80, 0x55, 0x5E, 0x66, 0x81, 0x56,
|
||||
0x52, 0x03, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x68, 0x66, 0x80, 0x65, 0x03, 0x66,
|
||||
0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6C, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26,
|
||||
0x6C, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6C, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66,
|
||||
0x80, 0x26, 0x6C, 0x66, 0x81, 0x56, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x55, 0x80, 0x62, 0x09,
|
||||
0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09,
|
||||
0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09,
|
||||
0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09,
|
||||
0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09,
|
||||
0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09,
|
||||
0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09,
|
||||
0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09,
|
||||
0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09,
|
||||
0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09,
|
||||
0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09,
|
||||
0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09,
|
||||
0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09,
|
||||
0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09,
|
||||
0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09, 0x66, 0x80, 0x26, 0x6D, 0x66, 0x80, 0x62, 0x09,
|
||||
0x66, 0x80, 0x26, 0x6D, 0x22, 0x80, 0x62, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F,
|
||||
0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F,
|
||||
0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F,
|
||||
0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F,
|
||||
0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x7F, 0x66, 0x78, 0x66,
|
||||
};
|
||||
// clang-format on
|
||||
11
keyboards/zodiarkpi/images/ZodiarkPiLogoGC.qgf.h
Normal file
11
keyboards/zodiarkpi/images/ZodiarkPiLogoGC.qgf.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
// Copyright 2023 QMK -- generated source code only, image retains original copyright
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
// This file was auto-generated by `qmk painter-convert-graphics -i ZodiarkPiLogoGC.png -f pal16`
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <qp.h>
|
||||
|
||||
extern const uint32_t gfx_ZodiarkPiLogoGC_length;
|
||||
extern const uint8_t gfx_ZodiarkPiLogoGC[9935];
|
||||
807
keyboards/zodiarkpi/images/ZodiarkPiLogoSTpink.qgf.c
Normal file
807
keyboards/zodiarkpi/images/ZodiarkPiLogoSTpink.qgf.c
Normal file
|
|
@ -0,0 +1,807 @@
|
|||
// Copyright 2024 QMK -- generated source code only, image retains original copyright
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
// This file was auto-generated by `qmk painter-convert-graphics -i ZodiarkPiLogoSTpink.png -f pal16`
|
||||
|
||||
#include <qp.h>
|
||||
|
||||
const uint32_t gfx_ZodiarkPiLogoSTpink_length = 12701;
|
||||
|
||||
// clang-format off
|
||||
const uint8_t gfx_ZodiarkPiLogoSTpink[12701] = {
|
||||
0x00, 0xFF, 0x12, 0x00, 0x00, 0x51, 0x47, 0x46, 0x01, 0x9D, 0x31, 0x00, 0x00, 0x62, 0xCE, 0xFF,
|
||||
0xFF, 0xF0, 0x00, 0x40, 0x01, 0x01, 0x00, 0x01, 0xFE, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||
0x02, 0xFD, 0x06, 0x00, 0x00, 0x06, 0x00, 0x01, 0xFF, 0xE8, 0x03, 0x03, 0xFC, 0x30, 0x00, 0x00,
|
||||
0x00, 0x00, 0xFC, 0x15, 0x02, 0xF6, 0x00, 0x06, 0xE2, 0xFD, 0x2B, 0xEA, 0xFC, 0x2A, 0xE9, 0xFD,
|
||||
0x2A, 0xE9, 0x00, 0x2A, 0xE9, 0x00, 0x0A, 0xCA, 0x00, 0x02, 0xAA, 0x00, 0x04, 0x74, 0x00, 0x03,
|
||||
0x47, 0x00, 0x05, 0x2C, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||
0x05, 0xFA, 0x38, 0x31, 0x00, 0x7F, 0x55, 0x7F, 0x55, 0x7F, 0x55, 0x7F, 0x55, 0x7F, 0x55, 0x7F,
|
||||
0x55, 0x7F, 0x55, 0x7F, 0x55, 0x7F, 0x55, 0x7F, 0x55, 0x7F, 0x55, 0x7F, 0x55, 0x7F, 0x55, 0x7F,
|
||||
0x55, 0x7F, 0x55, 0x7F, 0x55, 0x7F, 0x55, 0x7F, 0x55, 0x7F, 0x55, 0x7F, 0x55, 0x7F, 0x55, 0x7F,
|
||||
0x55, 0x7F, 0x55, 0x70, 0x55, 0x80, 0x52, 0x76, 0x55, 0x82, 0x25, 0x00, 0x21, 0x75, 0x55, 0x80,
|
||||
0x12, 0x02, 0x00, 0x02, 0x11, 0x88, 0x22, 0x12, 0x11, 0x22, 0x01, 0x10, 0x11, 0x01, 0x10, 0x2C,
|
||||
0x55, 0x80, 0x54, 0x3D, 0x55, 0x80, 0x01, 0x0D, 0x00, 0x80, 0x21, 0x1C, 0x55, 0x82, 0x24, 0x12,
|
||||
0x21, 0x0A, 0x55, 0x82, 0x45, 0x11, 0x52, 0x3C, 0x55, 0x83, 0x25, 0x00, 0x10, 0x72, 0x02, 0x22,
|
||||
0x80, 0x12, 0x04, 0x11, 0x86, 0x00, 0x10, 0x21, 0x01, 0x00, 0x10, 0x52, 0x16, 0x55, 0x81, 0x15,
|
||||
0x01, 0x05, 0x00, 0x81, 0x11, 0x01, 0x02, 0x11, 0x81, 0x01, 0x10, 0x04, 0x11, 0x81, 0x01, 0x00,
|
||||
0x3D, 0x55, 0x88, 0x15, 0x00, 0x20, 0xA9, 0x9A, 0xAA, 0x9A, 0x89, 0x99, 0x02, 0x88, 0x87, 0x77,
|
||||
0x87, 0x99, 0x78, 0x12, 0x01, 0x10, 0x21, 0x16, 0x55, 0x80, 0x01, 0x03, 0x00, 0x87, 0x21, 0x22,
|
||||
0x11, 0x10, 0x01, 0x10, 0x11, 0x01, 0x06, 0x00, 0x80, 0x52, 0x3C, 0x55, 0x93, 0x02, 0x00, 0x81,
|
||||
0xDA, 0xDD, 0xED, 0xBC, 0xBB, 0xCB, 0xAB, 0x99, 0xAA, 0xBA, 0xDC, 0xAB, 0x9A, 0x27, 0x11, 0x00,
|
||||
0x10, 0x15, 0x55, 0x8B, 0x02, 0x00, 0x10, 0x72, 0x98, 0x99, 0x78, 0x87, 0x78, 0x87, 0x88, 0x78,
|
||||
0x03, 0x77, 0x80, 0x01, 0x02, 0x00, 0x80, 0x54, 0x3C, 0x55, 0x95, 0x01, 0x00, 0x81, 0xEB, 0xBC,
|
||||
0xFD, 0xDE, 0xFE, 0xFF, 0xCF, 0xAA, 0xDD, 0xAA, 0xFC, 0xEF, 0xBD, 0x9A, 0x78, 0x12, 0x00, 0x10,
|
||||
0x54, 0x13, 0x55, 0x8B, 0x01, 0x10, 0x87, 0xA9, 0x99, 0xCA, 0xAB, 0xBA, 0x9A, 0xA9, 0xBB, 0xAB,
|
||||
0x02, 0xAA, 0x83, 0x9A, 0x02, 0x00, 0x20, 0x3D, 0x55, 0x87, 0x05, 0x00, 0x71, 0xDA, 0xDE, 0xEE,
|
||||
0xED, 0xFF, 0x02, 0xEE, 0x8C, 0xDD, 0xEF, 0xBB, 0xFD, 0xFF, 0xEF, 0xBC, 0xAB, 0x89, 0x12, 0x00,
|
||||
0x10, 0x21, 0x11, 0x55, 0x8B, 0x15, 0x00, 0x70, 0x88, 0xBA, 0xAA, 0xEC, 0xAC, 0xFD, 0xBD, 0xEC,
|
||||
0xDD, 0x02, 0xEE, 0x84, 0xDE, 0x9B, 0x02, 0x00, 0x51, 0x3D, 0x55, 0x94, 0x15, 0x00, 0x20, 0xB9,
|
||||
0xFF, 0xEF, 0xEE, 0xFE, 0xBD, 0xFD, 0xFF, 0xDF, 0xAA, 0xEB, 0xDD, 0xEE, 0x9B, 0xDA, 0xAC, 0x89,
|
||||
0x12, 0x02, 0x00, 0x81, 0x10, 0x52, 0x0F, 0x55, 0x92, 0x15, 0x00, 0x20, 0x97, 0xCB, 0xBB, 0xCC,
|
||||
0xCB, 0xEE, 0xFE, 0xEF, 0xED, 0xCE, 0xDC, 0xDD, 0x9B, 0x02, 0x00, 0x10, 0x3D, 0x55, 0x83, 0x15,
|
||||
0x00, 0x10, 0xA7, 0x02, 0xFE, 0x83, 0xCE, 0xDC, 0xCD, 0xFD, 0x02, 0xEF, 0x89, 0xBC, 0xDB, 0xAB,
|
||||
0xDC, 0xAB, 0xEB, 0xEF, 0xAC, 0x8A, 0x17, 0x02, 0x00, 0x81, 0x10, 0x52, 0x0E, 0x55, 0x92, 0x15,
|
||||
0x00, 0x20, 0xB9, 0xDE, 0xDC, 0xAC, 0xA9, 0xCC, 0xDB, 0xCE, 0xCB, 0xDE, 0xEE, 0xCE, 0x9A, 0x17,
|
||||
0x00, 0x10, 0x3D, 0x55, 0x83, 0x25, 0x00, 0x10, 0xA8, 0x02, 0xEE, 0x90, 0xEF, 0xBC, 0xED, 0xFF,
|
||||
0xCE, 0xFE, 0xAD, 0xCA, 0xBC, 0xFD, 0xDD, 0xFE, 0xEF, 0xCC, 0xBD, 0x79, 0x12, 0x02, 0x00, 0x81,
|
||||
0x10, 0x54, 0x0D, 0x55, 0x92, 0x12, 0x00, 0x70, 0xDA, 0xDE, 0xEC, 0xCE, 0xCB, 0xAD, 0xCA, 0xCE,
|
||||
0xDC, 0xEE, 0xFF, 0xAD, 0x88, 0x18, 0x00, 0x10, 0x3D, 0x55, 0x87, 0x25, 0x01, 0x00, 0xA7, 0xFD,
|
||||
0xCD, 0xFE, 0xDE, 0x02, 0xFE, 0x85, 0xEF, 0xFF, 0xDE, 0xEC, 0xDE, 0xFE, 0x02, 0xFF, 0x88, 0xEF,
|
||||
0xBB, 0xAD, 0x28, 0x12, 0x11, 0x01, 0x00, 0x21, 0x0D, 0x55, 0x85, 0x01, 0x00, 0x92, 0xEB, 0xBD,
|
||||
0xEC, 0x02, 0xFF, 0x8A, 0xAD, 0xCA, 0xBC, 0xDC, 0xCC, 0xFE, 0xCE, 0x8A, 0x02, 0x00, 0x20, 0x3E,
|
||||
0x55, 0x9B, 0x01, 0x00, 0x92, 0xDB, 0xAB, 0xEC, 0xED, 0xEF, 0xDD, 0xFF, 0xDE, 0xEE, 0xED, 0xCE,
|
||||
0xDB, 0xFF, 0xDD, 0xEF, 0xCD, 0xBD, 0x79, 0x77, 0x88, 0x78, 0x01, 0x00, 0x10, 0x52, 0x0B, 0x55,
|
||||
0x85, 0x04, 0x00, 0x91, 0xDB, 0x9A, 0xDA, 0x02, 0xFF, 0x87, 0xAD, 0xCA, 0xAA, 0xBC, 0xA9, 0xFD,
|
||||
0xAD, 0x28, 0x02, 0x00, 0x80, 0x51, 0x3E, 0x55, 0x99, 0x04, 0x00, 0x21, 0xB9, 0xBC, 0xCC, 0xCA,
|
||||
0xFE, 0xCD, 0xED, 0xBC, 0xED, 0xFE, 0xAC, 0xB9, 0xEE, 0xDD, 0xBE, 0xDC, 0xDE, 0xAB, 0x9A, 0xA8,
|
||||
0xAB, 0x79, 0x11, 0x02, 0x00, 0x81, 0x11, 0x54, 0x09, 0x55, 0x85, 0x04, 0x00, 0x81, 0xDA, 0xAB,
|
||||
0xEB, 0x02, 0xFF, 0x8A, 0xDE, 0xCD, 0xA9, 0xCC, 0xAA, 0xEC, 0xAC, 0x78, 0x01, 0x00, 0x51, 0x3E,
|
||||
0x55, 0x9E, 0x12, 0x00, 0x10, 0xB9, 0xAB, 0xCA, 0xCB, 0xDC, 0xAD, 0xDA, 0xCD, 0xFD, 0xFF, 0xBE,
|
||||
0xCA, 0xCE, 0xDC, 0xDE, 0xED, 0xCE, 0xBA, 0xBD, 0xCA, 0xAD, 0xAA, 0x89, 0x17, 0x01, 0x00, 0x10,
|
||||
0x51, 0x08, 0x55, 0x85, 0x01, 0x00, 0xA7, 0xDC, 0xAA, 0xFC, 0x03, 0xFF, 0x88, 0xDE, 0xCC, 0xBD,
|
||||
0x99, 0xBB, 0xBD, 0x79, 0x01, 0x10, 0x40, 0x55, 0x9E, 0x01, 0x10, 0xA7, 0xBC, 0xDB, 0xAC, 0xA9,
|
||||
0xCC, 0xEC, 0xCE, 0xEC, 0xFF, 0xCF, 0xAA, 0xBC, 0xDB, 0xEF, 0xFF, 0xDF, 0xDC, 0xCE, 0xAA, 0xBC,
|
||||
0xDC, 0xBC, 0x9A, 0x78, 0x11, 0x00, 0x10, 0x52, 0x06, 0x55, 0x86, 0x15, 0x00, 0x10, 0xA8, 0xEE,
|
||||
0xCD, 0xFE, 0x03, 0xFF, 0x88, 0xBD, 0xEC, 0xDE, 0xBB, 0xAB, 0xAC, 0x17, 0x00, 0x10, 0x40, 0x55,
|
||||
0x9F, 0x02, 0x00, 0x92, 0xDC, 0xED, 0x9B, 0x87, 0xBA, 0xDB, 0xDE, 0xED, 0xFF, 0xDF, 0xBB, 0xCD,
|
||||
0xEC, 0xEF, 0xFE, 0xCE, 0xDB, 0xDF, 0xCC, 0xBD, 0xEC, 0xFF, 0xCE, 0xAB, 0x89, 0x17, 0x00, 0x10,
|
||||
0x52, 0x05, 0x55, 0x8A, 0x12, 0x00, 0x10, 0xB8, 0xFE, 0xFF, 0xDE, 0xFD, 0xFF, 0xEF, 0xBC, 0x02,
|
||||
0xED, 0x85, 0xEF, 0xDD, 0x9C, 0x02, 0x00, 0x52, 0x40, 0x55, 0x83, 0x02, 0x00, 0x92, 0xEC, 0x02,
|
||||
0xBC, 0x9A, 0xAA, 0xAB, 0xA9, 0xDC, 0xEC, 0xEF, 0xDE, 0xED, 0xCE, 0xEC, 0xCE, 0xDB, 0xCE, 0xDB,
|
||||
0xBE, 0xDB, 0xCE, 0xDC, 0xDE, 0xFE, 0xCE, 0xBB, 0x8A, 0x12, 0x00, 0x10, 0x52, 0x04, 0x55, 0x91,
|
||||
0x25, 0x00, 0x10, 0xA8, 0xEE, 0xED, 0xBD, 0xEC, 0xFF, 0xEF, 0xBB, 0xFD, 0xEE, 0xFF, 0xEE, 0x8B,
|
||||
0x01, 0x00, 0x41, 0x55, 0xA1, 0x02, 0x00, 0x92, 0xDC, 0x9A, 0xDA, 0xDD, 0x9C, 0x88, 0xDA, 0xDC,
|
||||
0xBD, 0xDC, 0xED, 0xEE, 0xFE, 0xCE, 0xDB, 0xDE, 0xDC, 0xCE, 0xDB, 0xCE, 0xBA, 0xDE, 0xDC, 0xBC,
|
||||
0xFD, 0xAC, 0x89, 0x17, 0x00, 0x10, 0x51, 0x04, 0x55, 0x90, 0x01, 0x10, 0xA8, 0xCE, 0xDB, 0xAC,
|
||||
0xEB, 0xFF, 0xEF, 0xCC, 0xEE, 0xED, 0xEF, 0xDC, 0x8A, 0x01, 0x10, 0x3F, 0x55, 0x81, 0x15, 0x11,
|
||||
0x02, 0x00, 0xA0, 0x81, 0xDA, 0xAB, 0xDB, 0xFF, 0xCE, 0xBA, 0xCC, 0xAA, 0xCD, 0xED, 0xCE, 0xFD,
|
||||
0xFF, 0xDF, 0xCB, 0xEE, 0xDC, 0xCE, 0xCA, 0xDE, 0xDB, 0xCE, 0xCB, 0xCD, 0xFD, 0x9C, 0xA9, 0x8A,
|
||||
0x17, 0x00, 0x10, 0x41, 0x03, 0x55, 0x86, 0x01, 0x10, 0xA7, 0xEE, 0xED, 0xAC, 0xEC, 0x02, 0xFF,
|
||||
0x80, 0xEE, 0x02, 0xFF, 0x84, 0xEF, 0xBD, 0x8A, 0x01, 0x10, 0x40, 0x55, 0x80, 0x12, 0x02, 0x00,
|
||||
0xA6, 0x91, 0xDB, 0xCE, 0xBA, 0xCD, 0xDB, 0x9C, 0xCA, 0xAA, 0xED, 0xFF, 0xEF, 0xFE, 0xFF, 0xEF,
|
||||
0xDC, 0xFF, 0xEE, 0xEF, 0xEC, 0xEF, 0xED, 0xDF, 0xDB, 0xAC, 0xDB, 0xBD, 0xDB, 0xAC, 0x9A, 0x17,
|
||||
0x01, 0x00, 0x11, 0x55, 0x14, 0x00, 0x10, 0xB8, 0x02, 0xFF, 0x81, 0xDE, 0xFE, 0x05, 0xFF, 0x84,
|
||||
0xCE, 0x9B, 0x27, 0x00, 0x20, 0x41, 0x55, 0x8F, 0x14, 0x00, 0x81, 0xBA, 0xED, 0xDC, 0xAC, 0xB9,
|
||||
0xBD, 0xCA, 0xCC, 0xFD, 0xFF, 0xEF, 0xBC, 0xCB, 0x02, 0xFE, 0x90, 0xEF, 0xBC, 0xFD, 0xFF, 0xDF,
|
||||
0xBB, 0xCD, 0xCA, 0xBD, 0xBA, 0xBD, 0xEC, 0xCE, 0xBB, 0x9A, 0x28, 0x01, 0x04, 0x00, 0x84, 0x21,
|
||||
0xC9, 0xFF, 0xEF, 0xEC, 0x02, 0xFF, 0x88, 0xDF, 0xFD, 0xEF, 0xFE, 0xDE, 0x8B, 0x01, 0x00, 0x20,
|
||||
0x41, 0x55, 0xA3, 0x15, 0x00, 0x20, 0xA8, 0xFD, 0xFF, 0xCE, 0xDB, 0x9C, 0xA8, 0xCC, 0xBC, 0xBB,
|
||||
0xCC, 0x89, 0x98, 0xEB, 0xCD, 0xDD, 0xAA, 0xEC, 0xDF, 0xCE, 0xAA, 0xED, 0xEC, 0xAD, 0xA9, 0xAC,
|
||||
0xCA, 0xCE, 0xDB, 0xAB, 0xAA, 0x28, 0x11, 0x03, 0x00, 0x90, 0x11, 0xB8, 0xCC, 0xCD, 0xBA, 0xEE,
|
||||
0xFD, 0xBD, 0xDB, 0xEE, 0xFF, 0xDF, 0x7A, 0x01, 0x00, 0x11, 0x54, 0x40, 0x55, 0x80, 0x15, 0x02,
|
||||
0x00, 0xB2, 0x92, 0xEB, 0xEF, 0xFE, 0xEF, 0xAC, 0xA9, 0x9A, 0x99, 0x98, 0xAA, 0x28, 0x92, 0xDB,
|
||||
0x9B, 0xDA, 0xBC, 0xFD, 0xBE, 0xDC, 0xBC, 0xCC, 0xEC, 0xCE, 0xCA, 0x9B, 0xB9, 0xBE, 0xCB, 0x9A,
|
||||
0xCB, 0xAA, 0x89, 0x27, 0x01, 0x00, 0x21, 0xA9, 0xAA, 0xDB, 0xDC, 0xBE, 0xDB, 0xDF, 0xED, 0xCD,
|
||||
0xFE, 0xDF, 0x29, 0x00, 0x10, 0x43, 0x55, 0x87, 0x12, 0x00, 0x81, 0xDA, 0xBD, 0xEC, 0xCE, 0xBB,
|
||||
0x02, 0x99, 0x8C, 0x88, 0x87, 0x98, 0x18, 0x71, 0xA8, 0xAB, 0xDC, 0xAB, 0xEC, 0xDE, 0xEE, 0xAC,
|
||||
0x02, 0xDB, 0x9B, 0xCD, 0xBA, 0xBD, 0xDB, 0xAC, 0xC9, 0xBC, 0xCD, 0xBA, 0xBB, 0x9A, 0x12, 0x00,
|
||||
0x82, 0x9A, 0xA8, 0xFD, 0xFE, 0xDF, 0xFD, 0xFF, 0xCE, 0xEC, 0xFF, 0xBE, 0x18, 0x00, 0x51, 0x43,
|
||||
0x55, 0x89, 0x15, 0x00, 0x71, 0xC9, 0xCE, 0xEC, 0xDF, 0xCB, 0xBB, 0xCC, 0x02, 0xAA, 0x9D, 0xBB,
|
||||
0x19, 0x00, 0x21, 0x98, 0xBA, 0xCC, 0xEE, 0xCC, 0xEE, 0xAC, 0xBC, 0xB9, 0xCD, 0xDC, 0xCD, 0xFD,
|
||||
0xAC, 0xDB, 0xCD, 0xDE, 0xDC, 0xCE, 0xAA, 0x89, 0x12, 0x97, 0xAB, 0xB9, 0xFE, 0x04, 0xFF, 0x86,
|
||||
0xAC, 0xCA, 0xDD, 0x9B, 0x02, 0x00, 0x52, 0x43, 0x55, 0x8D, 0x15, 0x01, 0x10, 0xB8, 0xEE, 0xFE,
|
||||
0xFF, 0xDD, 0xCB, 0xFE, 0xDD, 0xDE, 0xCE, 0x29, 0x02, 0x00, 0x8D, 0x21, 0x97, 0xBA, 0xEC, 0xED,
|
||||
0xDF, 0x9A, 0xCB, 0xDB, 0xCE, 0xDB, 0xCE, 0xEE, 0x9B, 0x02, 0xCB, 0x81, 0xCE, 0xED, 0x02, 0xDD,
|
||||
0x84, 0xBC, 0x89, 0x97, 0xCC, 0xDB, 0x05, 0xFF, 0x85, 0xBD, 0xDB, 0xAB, 0x29, 0x00, 0x40, 0x45,
|
||||
0x55, 0x8C, 0x02, 0x10, 0xA8, 0xFE, 0xFF, 0xDF, 0xDC, 0xCC, 0xEC, 0xCD, 0xEE, 0xBE, 0x18, 0x03,
|
||||
0x00, 0x84, 0x11, 0x82, 0xB9, 0xDD, 0xEE, 0x02, 0xBC, 0x84, 0xCA, 0xBE, 0xCA, 0xCD, 0xEE, 0x02,
|
||||
0xAC, 0x89, 0xB9, 0xEE, 0xEF, 0xDC, 0xFE, 0xFF, 0xAC, 0x99, 0xEB, 0xEC, 0x04, 0xFF, 0x86, 0xEF,
|
||||
0xDC, 0xEE, 0xBC, 0x18, 0x00, 0x51, 0x45, 0x55, 0xA5, 0x02, 0x00, 0x92, 0xFC, 0xFF, 0xDF, 0xEC,
|
||||
0xBD, 0xCA, 0xEE, 0xEF, 0xBE, 0x18, 0x00, 0x10, 0x12, 0x00, 0x10, 0x82, 0xA9, 0xBA, 0xAA, 0xCC,
|
||||
0xDB, 0xAC, 0xB9, 0xEE, 0xEF, 0xAB, 0xDC, 0xDB, 0xFF, 0xEF, 0xBC, 0xFD, 0xFF, 0xDF, 0xCB, 0x02,
|
||||
0xFE, 0x8B, 0xFF, 0xDE, 0xFE, 0xFF, 0xEF, 0xCC, 0xCE, 0xBC, 0x19, 0x00, 0x10, 0x54, 0x44, 0x55,
|
||||
0x9C, 0x15, 0x00, 0x81, 0xFB, 0xFF, 0xEF, 0xFE, 0xBD, 0xDA, 0xEE, 0xEF, 0xBD, 0x19, 0x00, 0x21,
|
||||
0x55, 0x25, 0x01, 0x10, 0x21, 0x97, 0xBA, 0xBD, 0xB9, 0xCD, 0xDB, 0xCD, 0xFE, 0xCD, 0x02, 0xFE,
|
||||
0x93, 0xFF, 0xCF, 0x9A, 0xEB, 0xFE, 0xFF, 0xEF, 0xFE, 0xEF, 0xED, 0xCC, 0xDC, 0xFE, 0xCF, 0xAA,
|
||||
0xCC, 0x9B, 0x02, 0x00, 0x21, 0x46, 0x55, 0x83, 0x00, 0x70, 0xCA, 0xFE, 0x02, 0xFF, 0x87, 0xDF,
|
||||
0xEC, 0xCC, 0xFE, 0xCF, 0x29, 0x00, 0x51, 0x02, 0x55, 0x80, 0x15, 0x02, 0x00, 0x9E, 0x10, 0x97,
|
||||
0xAA, 0xBA, 0xCD, 0xEE, 0xBB, 0xED, 0xDD, 0xCE, 0xEB, 0xEE, 0xEF, 0xBC, 0xDD, 0xEC, 0xEF, 0xAC,
|
||||
0xBA, 0xBD, 0xCA, 0xCE, 0xAB, 0xDB, 0xCF, 0xBA, 0xBC, 0x7A, 0x01, 0x00, 0x20, 0x46, 0x55, 0x83,
|
||||
0x01, 0x20, 0xA9, 0xFC, 0x02, 0xFF, 0x87, 0xEF, 0xEE, 0xDE, 0xEE, 0xCD, 0x7A, 0x00, 0x20, 0x03,
|
||||
0x55, 0x9D, 0x45, 0x12, 0x00, 0x21, 0x87, 0x98, 0xBB, 0xCB, 0x99, 0xEB, 0xCC, 0xAC, 0xC9, 0xBC,
|
||||
0xFD, 0xCD, 0xDE, 0xEC, 0xBE, 0x79, 0x98, 0xCB, 0xDB, 0xAC, 0x78, 0xB9, 0xBD, 0xBA, 0xAA, 0x28,
|
||||
0x02, 0x00, 0x81, 0x10, 0x54, 0x45, 0x55, 0x83, 0x01, 0x10, 0xB9, 0xFD, 0x04, 0xFF, 0x85, 0xEF,
|
||||
0xDE, 0xAA, 0x29, 0x00, 0x20, 0x05, 0x55, 0x98, 0x02, 0x00, 0x10, 0x87, 0x89, 0xA9, 0xBA, 0xCD,
|
||||
0xBA, 0xCD, 0xCC, 0x9A, 0xFC, 0xDE, 0xBD, 0xDA, 0x9C, 0x27, 0xA9, 0xDD, 0xED, 0x9B, 0x88, 0xDA,
|
||||
0xCE, 0x02, 0xAB, 0x82, 0x07, 0x00, 0x21, 0x47, 0x55, 0x84, 0x01, 0x10, 0xA8, 0xEB, 0xEF, 0x03,
|
||||
0xFF, 0x85, 0xEF, 0xCD, 0x99, 0x7A, 0x00, 0x20, 0x05, 0x55, 0x9C, 0x25, 0x01, 0x00, 0x10, 0x11,
|
||||
0x82, 0xA9, 0xDC, 0xDD, 0xCE, 0xED, 0xBC, 0xED, 0xCC, 0xDE, 0xDD, 0x7A, 0x92, 0xCA, 0xCE, 0xEE,
|
||||
0xBC, 0xBA, 0xEC, 0xCF, 0x9A, 0x9B, 0x02, 0x10, 0x48, 0x55, 0x85, 0x12, 0x00, 0x92, 0xCA, 0xBD,
|
||||
0xFD, 0x02, 0xFF, 0x83, 0xEF, 0xDC, 0xBC, 0x29, 0x02, 0x00, 0x80, 0x52, 0x06, 0x55, 0x80, 0x02,
|
||||
0x02, 0x00, 0x86, 0x10, 0x82, 0xB9, 0xFD, 0xCE, 0xDD, 0xAA, 0x02, 0xED, 0x87, 0xDE, 0xBE, 0x79,
|
||||
0xB9, 0xDB, 0xAC, 0xDC, 0xEC, 0x02, 0xFF, 0x84, 0xBD, 0x88, 0x79, 0x01, 0x10, 0x49, 0x55, 0x84,
|
||||
0x01, 0x81, 0xDA, 0xAB, 0xFC, 0x02, 0xFF, 0x85, 0xDF, 0xCB, 0xAC, 0x18, 0x00, 0x10, 0x07, 0x55,
|
||||
0x9A, 0x45, 0x54, 0x14, 0x00, 0x10, 0x82, 0xCA, 0xCD, 0xDD, 0xBB, 0xCE, 0xDB, 0xBD, 0xAC, 0x87,
|
||||
0xBB, 0xDB, 0xBC, 0xBD, 0xEC, 0xED, 0xDF, 0xBB, 0x9A, 0x18, 0x00, 0x20, 0x49, 0x55, 0x8C, 0x01,
|
||||
0x20, 0xB9, 0xCD, 0xFE, 0xFF, 0xEF, 0xDD, 0xCB, 0xCD, 0x7A, 0x00, 0x10, 0x0A, 0x55, 0x97, 0x25,
|
||||
0x01, 0x20, 0x98, 0xBA, 0xCC, 0xBA, 0xBD, 0xEC, 0xBC, 0x9C, 0x97, 0xCB, 0xDC, 0xBB, 0xBD, 0xDC,
|
||||
0xCB, 0xEE, 0xDC, 0x9B, 0x02, 0x00, 0x51, 0x49, 0x55, 0x8C, 0x02, 0x20, 0x99, 0xFC, 0xEE, 0xFF,
|
||||
0xDF, 0xEC, 0xEE, 0xCF, 0x7A, 0x00, 0x20, 0x0B, 0x55, 0x95, 0x14, 0x00, 0x11, 0x97, 0xAA, 0xCB,
|
||||
0xAC, 0xEC, 0xDE, 0x9B, 0xB9, 0xEE, 0xDE, 0xDC, 0xEE, 0xDE, 0xDC, 0xFF, 0xEE, 0x8B, 0x01, 0x00,
|
||||
0x4A, 0x55, 0x8C, 0x02, 0x10, 0x97, 0xEC, 0xBC, 0xFE, 0xEF, 0xCB, 0xFE, 0xBE, 0x89, 0x01, 0x40,
|
||||
0x0B, 0x55, 0x96, 0x25, 0x11, 0x00, 0x10, 0x87, 0xA9, 0xCC, 0xFE, 0xEF, 0xAC, 0xDB, 0xED, 0xBD,
|
||||
0xC9, 0xDD, 0xBE, 0xB9, 0xDD, 0xCF, 0x29, 0x00, 0x10, 0x54, 0x49, 0x55, 0x8C, 0x14, 0x00, 0x92,
|
||||
0xEC, 0xCC, 0xFE, 0xEF, 0xDC, 0xFF, 0xCF, 0x9A, 0x01, 0x20, 0x0D, 0x55, 0x93, 0x12, 0x00, 0x10,
|
||||
0x72, 0xB9, 0xFD, 0xEF, 0xAB, 0xCB, 0xCA, 0xBE, 0xCB, 0xBB, 0xCD, 0xCB, 0xBB, 0xCD, 0x29, 0x00,
|
||||
0x10, 0x4A, 0x55, 0x8C, 0x45, 0x00, 0x81, 0xDA, 0xDE, 0xFE, 0xFF, 0xDE, 0xFE, 0xEE, 0x9B, 0x02,
|
||||
0x10, 0x0E, 0x55, 0x92, 0x12, 0x00, 0x10, 0x82, 0xCA, 0xEE, 0xAB, 0xBB, 0xBA, 0xEE, 0xED, 0xCB,
|
||||
0xBD, 0xCB, 0xBB, 0xCE, 0x29, 0x00, 0x20, 0x4B, 0x55, 0x8B, 0x01, 0x81, 0xEA, 0xBD, 0xFD, 0xFF,
|
||||
0xBD, 0xDD, 0xCB, 0x8B, 0x01, 0x10, 0x0F, 0x55, 0x84, 0x25, 0x01, 0x10, 0x98, 0xBA, 0x02, 0xAB,
|
||||
0x8A, 0x98, 0xEB, 0xFF, 0xEE, 0xCE, 0xEC, 0xED, 0xAD, 0x17, 0x00, 0x20, 0x4B, 0x55, 0x8B, 0x01,
|
||||
0x20, 0xC9, 0xDE, 0xED, 0xEE, 0xBD, 0xCB, 0xCA, 0x8B, 0x01, 0x20, 0x10, 0x55, 0x90, 0x14, 0x00,
|
||||
0x21, 0x97, 0xA9, 0x9B, 0x97, 0xCB, 0xFE, 0xFF, 0xCD, 0xFE, 0xFF, 0x9B, 0x02, 0x10, 0x52, 0x4B,
|
||||
0x55, 0x8C, 0x02, 0x10, 0xA7, 0xCD, 0xDB, 0xEE, 0x9C, 0xC9, 0xED, 0x8B, 0x01, 0x00, 0x10, 0x10,
|
||||
0x55, 0x85, 0x01, 0x00, 0x10, 0x97, 0xBB, 0xBA, 0x02, 0xCC, 0x02, 0xED, 0x84, 0xFF, 0xEF, 0x8B,
|
||||
0x01, 0x20, 0x4C, 0x55, 0x8C, 0x25, 0x00, 0x81, 0xEB, 0xFD, 0xFF, 0xAC, 0xCA, 0xDF, 0x9C, 0x02,
|
||||
0x00, 0x50, 0x11, 0x55, 0x84, 0x12, 0x00, 0x71, 0xA9, 0xAB, 0x02, 0x99, 0x02, 0xAA, 0x84, 0xBB,
|
||||
0xAB, 0x79, 0x00, 0x51, 0x4D, 0x55, 0x8B, 0x02, 0x20, 0xB9, 0xED, 0xDD, 0xCE, 0xDC, 0xBD, 0xAB,
|
||||
0x07, 0x00, 0x10, 0x12, 0x55, 0x87, 0x01, 0x10, 0x72, 0x88, 0x12, 0x11, 0x22, 0x87, 0x02, 0x88,
|
||||
0x82, 0x18, 0x10, 0x54, 0x4D, 0x55, 0x83, 0x25, 0x00, 0x82, 0xA9, 0x03, 0xAA, 0x85, 0x9A, 0x99,
|
||||
0x17, 0x00, 0x10, 0x51, 0x11, 0x55, 0x83, 0x15, 0x01, 0x00, 0x11, 0x03, 0x00, 0x02, 0x10, 0x82,
|
||||
0x11, 0x01, 0x20, 0x4F, 0x55, 0x84, 0x02, 0x10, 0x21, 0x22, 0x27, 0x02, 0x22, 0x83, 0x11, 0x01,
|
||||
0x00, 0x51, 0x13, 0x55, 0x80, 0x25, 0x02, 0x11, 0x81, 0x51, 0x25, 0x02, 0x11, 0x02, 0x00, 0x81,
|
||||
0x11, 0x51, 0x4F, 0x55, 0x80, 0x15, 0x08, 0x00, 0x81, 0x10, 0x51, 0x06, 0x55, 0x80, 0x54, 0x14,
|
||||
0x55, 0x80, 0x22, 0x51, 0x55, 0x82, 0x25, 0x55, 0x24, 0x02, 0x11, 0x83, 0x22, 0x21, 0x22, 0x54,
|
||||
0x07, 0x55, 0x81, 0x12, 0x20, 0x07, 0x55, 0x80, 0x25, 0x6B, 0x55, 0x02, 0x22, 0x81, 0x11, 0x01,
|
||||
0x07, 0x11, 0x82, 0x22, 0x01, 0x51, 0x68, 0x55, 0x80, 0x12, 0x03, 0x11, 0x81, 0x22, 0x77, 0x02,
|
||||
0x88, 0x8A, 0x87, 0x88, 0x27, 0x22, 0x12, 0x11, 0x01, 0x10, 0x11, 0x51, 0x25, 0x63, 0x55, 0x85,
|
||||
0x25, 0x01, 0x11, 0x22, 0x87, 0x99, 0x02, 0xAA, 0x02, 0xBB, 0x81, 0xBA, 0xBB, 0x02, 0xAA, 0x84,
|
||||
0x9A, 0x89, 0x28, 0x12, 0x01, 0x02, 0x00, 0x81, 0x11, 0x52, 0x61, 0x55, 0x96, 0x01, 0x11, 0x87,
|
||||
0xAA, 0xBA, 0xCB, 0xED, 0xFF, 0xCE, 0xFD, 0xEF, 0xCE, 0xDC, 0xDD, 0xCC, 0xBA, 0xAB, 0x9A, 0x78,
|
||||
0x11, 0x01, 0x00, 0x52, 0x5F, 0x55, 0x80, 0x25, 0x02, 0x11, 0x96, 0x97, 0xAA, 0xCB, 0xEC, 0xDE,
|
||||
0xDB, 0xED, 0xBD, 0xDC, 0xED, 0xAC, 0xAA, 0xBA, 0xCB, 0xCC, 0xCD, 0xBC, 0x9A, 0x89, 0x88, 0x12,
|
||||
0x10, 0x52, 0x5D, 0x55, 0x99, 0x45, 0x12, 0x20, 0x98, 0xAA, 0xBC, 0xA9, 0xCB, 0xBB, 0xB9, 0xDB,
|
||||
0xAD, 0xAC, 0xDB, 0x8B, 0x98, 0xB9, 0xAA, 0xBB, 0xAC, 0xAA, 0x98, 0xBA, 0xBB, 0x8A, 0x12, 0x02,
|
||||
0x11, 0x80, 0x54, 0x5B, 0x55, 0x88, 0x01, 0x00, 0x82, 0xBA, 0xAB, 0xCC, 0xAB, 0xCB, 0xCC, 0x02,
|
||||
0xCA, 0x91, 0xDD, 0xBD, 0xEC, 0xBD, 0xCA, 0xBB, 0xAA, 0xAC, 0xBC, 0xCB, 0xAA, 0xDB, 0xBB, 0xBD,
|
||||
0x89, 0x78, 0x01, 0x10, 0x5B, 0x55, 0x8F, 0x02, 0x21, 0x98, 0xAA, 0xBB, 0xCD, 0xCC, 0xED, 0xEE,
|
||||
0xDD, 0xBA, 0xDD, 0xDE, 0xFE, 0xCE, 0xCA, 0x02, 0xCB, 0x02, 0xCE, 0x89, 0xCC, 0xCB, 0xCC, 0xAA,
|
||||
0xDC, 0x9C, 0xAA, 0x29, 0x00, 0x54, 0x58, 0x55, 0x8D, 0x15, 0x11, 0x00, 0x92, 0xA9, 0xCC, 0xBC,
|
||||
0xAC, 0xBA, 0xEC, 0xFF, 0xEE, 0xCC, 0xAC, 0x03, 0xBB, 0x8E, 0xDB, 0xCB, 0xCC, 0xFE, 0xDE, 0xCD,
|
||||
0xDB, 0xCB, 0xBB, 0xBC, 0xBD, 0xDC, 0x9B, 0x02, 0x51, 0x59, 0x55, 0x84, 0x01, 0x20, 0xB9, 0xCB,
|
||||
0xFE, 0x02, 0xAC, 0x85, 0xAA, 0xDA, 0xDE, 0xAB, 0x9A, 0x79, 0x02, 0x88, 0x80, 0x98, 0x02, 0xAA,
|
||||
0x8C, 0xA9, 0xEC, 0xEF, 0xBD, 0xCA, 0xAB, 0xCC, 0xAA, 0xDC, 0xCE, 0xAD, 0x18, 0x10, 0x59, 0x55,
|
||||
0x8B, 0x01, 0x81, 0xEB, 0xEE, 0xFF, 0xDE, 0xBD, 0xDC, 0xDD, 0xAB, 0x79, 0x12, 0x04, 0x11, 0x02,
|
||||
0x22, 0x88, 0x98, 0xA9, 0xDB, 0xCE, 0xBC, 0xA9, 0xDB, 0xCB, 0xAB, 0x02, 0xCD, 0x82, 0x8A, 0x01,
|
||||
0x51, 0x57, 0x55, 0x8F, 0x15, 0x10, 0xA7, 0xED, 0xDE, 0xEE, 0xDE, 0xCE, 0xED, 0xAC, 0x79, 0x11,
|
||||
0x00, 0x11, 0x22, 0x12, 0x04, 0x11, 0x87, 0x21, 0x98, 0xBA, 0xDC, 0xBC, 0xCA, 0xDB, 0xAB, 0x02,
|
||||
0xBB, 0x82, 0xAD, 0x07, 0x50, 0x57, 0x55, 0x8D, 0x01, 0x70, 0xCA, 0xCB, 0xCD, 0xBD, 0xED, 0xAD,
|
||||
0xBA, 0x79, 0x11, 0x21, 0x22, 0x42, 0x05, 0x44, 0x8D, 0x22, 0x11, 0x21, 0x87, 0xBA, 0xCB, 0xAA,
|
||||
0xB9, 0xBC, 0xAA, 0xBB, 0xBD, 0x19, 0x10, 0x57, 0x55, 0x8A, 0x01, 0x81, 0xBA, 0xDC, 0xBD, 0xCC,
|
||||
0xED, 0xBD, 0x9A, 0x12, 0x21, 0x03, 0x44, 0x84, 0x55, 0x45, 0x43, 0x35, 0x36, 0x02, 0x44, 0x85,
|
||||
0x12, 0x10, 0xA8, 0xDC, 0xBC, 0xDB, 0x02, 0xCB, 0x83, 0xCD, 0xCB, 0x29, 0x10, 0x57, 0x55, 0x8B,
|
||||
0x01, 0x91, 0xBC, 0xED, 0xBD, 0xDC, 0xED, 0xCE, 0x29, 0x10, 0x42, 0x54, 0x08, 0x55, 0x8C, 0x45,
|
||||
0x24, 0x00, 0x81, 0xDB, 0xCD, 0xED, 0xBD, 0xDB, 0xEE, 0xDD, 0x2A, 0x10, 0x57, 0x55, 0x8A, 0x01,
|
||||
0xA2, 0x9B, 0xEB, 0xBD, 0xCA, 0xDC, 0xAC, 0x18, 0x20, 0x54, 0x0A, 0x55, 0x87, 0x24, 0x01, 0x20,
|
||||
0xB9, 0xBC, 0xEC, 0xDE, 0xDC, 0x02, 0xED, 0x81, 0x7A, 0x00, 0x55, 0x55, 0x8C, 0x25, 0x11, 0x00,
|
||||
0xA8, 0xAC, 0xDC, 0xCC, 0xBB, 0xCA, 0x9C, 0x02, 0x41, 0x54, 0x0A, 0x55, 0x8B, 0x45, 0x12, 0x10,
|
||||
0xB8, 0xBD, 0xEC, 0xEF, 0xEE, 0xFE, 0xED, 0x7A, 0x10, 0x56, 0x55, 0x8B, 0x15, 0x00, 0xA7, 0xCD,
|
||||
0xBC, 0xBA, 0xCA, 0xEC, 0x8B, 0x01, 0x42, 0x54, 0x0A, 0x55, 0x86, 0x53, 0x24, 0x10, 0xA8, 0xDD,
|
||||
0xEE, 0xEF, 0x02, 0xEE, 0x82, 0xCC, 0x79, 0x10, 0x56, 0x55, 0x8A, 0x25, 0x10, 0xB8, 0xED, 0xDD,
|
||||
0xAC, 0xB9, 0xEE, 0x2A, 0x10, 0x44, 0x0B, 0x55, 0x84, 0x65, 0x45, 0x01, 0xA7, 0xBC, 0x02, 0xCD,
|
||||
0x84, 0xDC, 0xED, 0xDE, 0x7A, 0x10, 0x56, 0x55, 0x8A, 0x15, 0x20, 0xB9, 0xCB, 0xEB, 0xCF, 0xBA,
|
||||
0xDD, 0x29, 0x10, 0x64, 0x0B, 0x55, 0x8B, 0x46, 0x44, 0x01, 0xA2, 0xDC, 0xBD, 0xED, 0xCE, 0xEE,
|
||||
0xDF, 0x7A, 0x10, 0x56, 0x55, 0x8A, 0x45, 0x10, 0xA9, 0xDB, 0xED, 0xEE, 0xDC, 0xBC, 0x19, 0x20,
|
||||
0x34, 0x0B, 0x55, 0x8B, 0x45, 0x12, 0x00, 0xA7, 0xFE, 0xEF, 0xFF, 0xAD, 0xCC, 0xBE, 0x18, 0x40,
|
||||
0x56, 0x55, 0x8A, 0x45, 0x10, 0xC9, 0xED, 0xEF, 0xDD, 0xCC, 0xBD, 0x19, 0x20, 0x54, 0x0B, 0x55,
|
||||
0x84, 0x45, 0x14, 0x10, 0xB9, 0xFE, 0x02, 0xFF, 0x85, 0xCD, 0xBD, 0xAD, 0x02, 0x21, 0x54, 0x55,
|
||||
0x55, 0x8A, 0x45, 0x10, 0xC9, 0xFE, 0xFF, 0xDD, 0xAB, 0xDD, 0x29, 0x10, 0x54, 0x0A, 0x55, 0x8D,
|
||||
0x35, 0x44, 0x12, 0x71, 0xEA, 0xED, 0xDE, 0xEF, 0xBC, 0xCC, 0x9B, 0x02, 0x10, 0x52, 0x56, 0x55,
|
||||
0x82, 0x00, 0xA7, 0xDC, 0x02, 0xFF, 0x84, 0xDD, 0xDC, 0x8B, 0x11, 0x42, 0x0A, 0x55, 0x8C, 0x45,
|
||||
0x24, 0x11, 0x97, 0xCC, 0xCB, 0xDD, 0xEF, 0xBB, 0xCD, 0x29, 0x10, 0x52, 0x56, 0x55, 0x85, 0x15,
|
||||
0x00, 0x92, 0xAB, 0xFD, 0xFF, 0x02, 0xEE, 0x83, 0xAC, 0x18, 0x21, 0x54, 0x08, 0x55, 0x8C, 0x53,
|
||||
0x45, 0x12, 0x81, 0xCA, 0xAA, 0xDC, 0xDB, 0xEF, 0xCB, 0xAC, 0x17, 0x51, 0x58, 0x55, 0x83, 0x12,
|
||||
0x81, 0xAA, 0xDD, 0x02, 0xFF, 0x88, 0xCE, 0xAA, 0x7A, 0x11, 0x42, 0x35, 0x53, 0x55, 0x65, 0x02,
|
||||
0x55, 0x8E, 0x35, 0x53, 0x45, 0x24, 0x11, 0xA8, 0xDD, 0xCB, 0xDC, 0xEC, 0xEF, 0xCD, 0x79, 0x01,
|
||||
0x52, 0x58, 0x55, 0x8A, 0x15, 0x70, 0xAA, 0xBC, 0xFD, 0xFF, 0xCE, 0xAB, 0x9C, 0x17, 0x11, 0x03,
|
||||
0x44, 0x80, 0x34, 0x03, 0x55, 0x8C, 0x44, 0x22, 0x11, 0x81, 0xDA, 0xDC, 0xCC, 0xCB, 0xEC, 0xDE,
|
||||
0x9B, 0x17, 0x51, 0x59, 0x55, 0x85, 0x11, 0x10, 0xA8, 0xDC, 0xFE, 0xDF, 0x02, 0xBD, 0x85, 0xCD,
|
||||
0x8A, 0x12, 0x11, 0x22, 0x11, 0x04, 0x44, 0x87, 0x12, 0x11, 0x21, 0xA8, 0xCB, 0xCA, 0xCC, 0xCB,
|
||||
0x02, 0xCC, 0x82, 0x79, 0x01, 0x54, 0x5A, 0x55, 0x8C, 0x01, 0x71, 0xCA, 0xED, 0xDF, 0xEE, 0xAD,
|
||||
0xFC, 0xBD, 0x89, 0x12, 0x01, 0x10, 0x02, 0x22, 0x80, 0x21, 0x02, 0x11, 0x8A, 0x22, 0xA8, 0xDB,
|
||||
0xBD, 0xCB, 0xBD, 0xCA, 0xBD, 0x9A, 0x17, 0x10, 0x5B, 0x55, 0x8B, 0x25, 0x11, 0xA8, 0xEC, 0xDE,
|
||||
0xED, 0xAD, 0xEC, 0xFF, 0xAC, 0x89, 0x27, 0x04, 0x11, 0x8C, 0x71, 0x88, 0xA9, 0xDB, 0xFF, 0xAD,
|
||||
0xAB, 0xCB, 0xBC, 0xAB, 0x28, 0x01, 0x51, 0x5C, 0x55, 0x9B, 0x02, 0x81, 0xDA, 0xCE, 0xCB, 0xAC,
|
||||
0xEC, 0xFF, 0xBD, 0xAB, 0x9A, 0x89, 0x88, 0x99, 0x89, 0xA9, 0xAA, 0xBA, 0xDE, 0xEE, 0xAC, 0xBB,
|
||||
0xDB, 0xCE, 0x8A, 0x11, 0x21, 0x51, 0x5C, 0x55, 0x83, 0x01, 0x10, 0xA8, 0xCB, 0x02, 0xBB, 0x93,
|
||||
0xFD, 0xEF, 0xAD, 0xCA, 0xCD, 0xBC, 0xBB, 0xCB, 0xAB, 0xBB, 0xDD, 0xBC, 0xEE, 0xCE, 0x9C, 0xAB,
|
||||
0xCB, 0x9B, 0x17, 0x41, 0x02, 0x55, 0x80, 0x87, 0x03, 0x88, 0x81, 0x78, 0x57, 0x56, 0x55, 0x93,
|
||||
0x01, 0x00, 0x21, 0xA8, 0xDB, 0xCC, 0xDC, 0xCD, 0xBB, 0xDB, 0xED, 0xBE, 0xDA, 0xFE, 0xCE, 0xAC,
|
||||
0xDB, 0xCC, 0xCD, 0xCE, 0x02, 0xCD, 0x82, 0xAC, 0x29, 0x11, 0x03, 0x55, 0x80, 0xA8, 0x03, 0xAA,
|
||||
0x84, 0x9A, 0x89, 0x88, 0x47, 0x12, 0x06, 0x11, 0x80, 0x52, 0x4D, 0x55, 0x91, 0x24, 0x00, 0x81,
|
||||
0xA9, 0xCA, 0xBB, 0xCB, 0xBC, 0xCA, 0xEC, 0xDE, 0xDD, 0xFE, 0xBD, 0xAC, 0xDB, 0xDD, 0xCE, 0x02,
|
||||
0xEE, 0x83, 0x9B, 0x89, 0x12, 0x52, 0x03, 0x55, 0x82, 0xB8, 0xBC, 0xCC, 0x02, 0xAB, 0x83, 0xAA,
|
||||
0x79, 0x27, 0x12, 0x06, 0x00, 0x80, 0x21, 0x4D, 0x55, 0x85, 0x15, 0x00, 0x10, 0x82, 0xBA, 0xCA,
|
||||
0x02, 0xCD, 0x8E, 0xAB, 0xCA, 0xCC, 0xBC, 0xEC, 0xDE, 0xBD, 0xEC, 0xBC, 0xAC, 0xCD, 0xAB, 0x89,
|
||||
0x12, 0x41, 0x04, 0x55, 0x81, 0xB8, 0xDE, 0x02, 0xBC, 0x84, 0xBB, 0x9A, 0x99, 0x78, 0x14, 0x07,
|
||||
0x00, 0x80, 0x51, 0x4C, 0x55, 0x03, 0x11, 0x83, 0x10, 0x98, 0xB9, 0xCE, 0x03, 0xCB, 0x8B, 0xBB,
|
||||
0xBA, 0xED, 0xCE, 0xBC, 0xED, 0xCD, 0xAB, 0x9A, 0x78, 0x12, 0x21, 0x05, 0x55, 0x81, 0xB8, 0xEE,
|
||||
0x02, 0xBC, 0x84, 0xBB, 0xAA, 0x9A, 0x89, 0x27, 0x07, 0x00, 0x80, 0x10, 0x4F, 0x55, 0x8A, 0x11,
|
||||
0x21, 0x98, 0xAA, 0xBB, 0xCA, 0xAD, 0xCA, 0xAC, 0xDC, 0xDE, 0x02, 0xCD, 0x84, 0xAB, 0x9A, 0x17,
|
||||
0x11, 0x21, 0x06, 0x55, 0x88, 0xB8, 0xFE, 0xDE, 0xBD, 0xAB, 0xAA, 0x9A, 0x88, 0x17, 0x08, 0x00,
|
||||
0x80, 0x51, 0x4F, 0x55, 0x86, 0x12, 0x11, 0x72, 0x98, 0xAA, 0xBB, 0xCC, 0x03, 0xBB, 0x85, 0xAB,
|
||||
0x9A, 0x79, 0x27, 0x01, 0x52, 0x07, 0x55, 0x84, 0xB8, 0xFE, 0xEF, 0xCE, 0xBB, 0x02, 0xAA, 0x82,
|
||||
0x89, 0x27, 0x11, 0x07, 0x00, 0x80, 0x10, 0x50, 0x55, 0x86, 0x12, 0x11, 0x21, 0x72, 0x98, 0x99,
|
||||
0x89, 0x03, 0x88, 0x83, 0x27, 0x11, 0x10, 0x52, 0x08, 0x55, 0x83, 0xB8, 0xFE, 0xFF, 0xCE, 0x02,
|
||||
0xBB, 0x85, 0x9A, 0x89, 0x78, 0x27, 0x22, 0x12, 0x06, 0x11, 0x80, 0x52, 0x50, 0x55, 0x80, 0x25,
|
||||
0x0A, 0x11, 0x80, 0x52, 0x09, 0x55, 0x83, 0xB8, 0xFE, 0xFF, 0xEF, 0x02, 0xDD, 0x82, 0xBC, 0xAB,
|
||||
0xAA, 0x05, 0x99, 0x80, 0x89, 0x03, 0x88, 0x80, 0x78, 0x53, 0x55, 0x85, 0x11, 0x21, 0x42, 0x45,
|
||||
0x22, 0x42, 0x0C, 0x55, 0x83, 0xB8, 0xFE, 0xFF, 0xEF, 0x02, 0xFF, 0x82, 0xEE, 0xDE, 0xDD, 0x04,
|
||||
0xCC, 0x80, 0xBC, 0x04, 0xBB, 0x80, 0x8A, 0x4A, 0x55, 0x82, 0x25, 0x12, 0x21, 0x06, 0x55, 0x81,
|
||||
0x45, 0x44, 0x04, 0x55, 0x81, 0x45, 0x54, 0x0A, 0x55, 0x83, 0xB8, 0xFE, 0xFF, 0xEF, 0x0E, 0xFF,
|
||||
0x80, 0x8B, 0x49, 0x55, 0x80, 0x15, 0x17, 0x11, 0x80, 0x52, 0x03, 0x55, 0x83, 0xB8, 0xFE, 0xFF,
|
||||
0xEF, 0x0E, 0xFF, 0x80, 0x8B, 0x49, 0x55, 0x83, 0x11, 0x97, 0x99, 0x88, 0x03, 0x77, 0x80, 0x78,
|
||||
0x02, 0x77, 0x02, 0x87, 0x80, 0x78, 0x06, 0x88, 0x80, 0x87, 0x02, 0x77, 0x83, 0x27, 0x17, 0x11,
|
||||
0x51, 0x02, 0x55, 0x83, 0xB8, 0xFE, 0xFF, 0xEF, 0x0E, 0xFF, 0x80, 0x9B, 0x49, 0x55, 0x82, 0x11,
|
||||
0xB9, 0xBC, 0x08, 0xAA, 0x83, 0xBA, 0xAB, 0xBA, 0xAB, 0x02, 0xAA, 0x82, 0xA9, 0x9B, 0xA9, 0x03,
|
||||
0xAA, 0x82, 0x9A, 0x18, 0x50, 0x02, 0x55, 0x83, 0xB8, 0xFE, 0xFF, 0xEF, 0x0E, 0xFF, 0x80, 0x9B,
|
||||
0x49, 0x55, 0x8D, 0x11, 0xB9, 0xAC, 0xBA, 0xCC, 0xCA, 0xBC, 0xC9, 0xAC, 0xAB, 0xCB, 0xDD, 0xDB,
|
||||
0xCD, 0x02, 0xAC, 0x89, 0xDC, 0xCB, 0xBD, 0xBA, 0xBB, 0xDC, 0xBD, 0xAB, 0x19, 0x50, 0x02, 0x55,
|
||||
0x83, 0xB8, 0xFE, 0xFF, 0xEF, 0x0E, 0xFF, 0x80, 0x9B, 0x49, 0x55, 0x99, 0x11, 0xA9, 0xAC, 0xBB,
|
||||
0xCB, 0xB9, 0xCC, 0xDB, 0xCE, 0xBC, 0xCC, 0xDB, 0xEC, 0xCC, 0xCD, 0xBD, 0xDD, 0xDB, 0xCE, 0xAB,
|
||||
0xBB, 0xEC, 0xDE, 0xBD, 0x19, 0x50, 0x02, 0x55, 0x83, 0xB8, 0xFE, 0xFF, 0xEF, 0x0E, 0xFF, 0x80,
|
||||
0x8B, 0x49, 0x55, 0x8A, 0x11, 0x97, 0xAB, 0xCB, 0xCD, 0xBA, 0xCC, 0xDB, 0xDF, 0xDE, 0xEE, 0x02,
|
||||
0xED, 0x81, 0xEC, 0xEF, 0x02, 0xCD, 0x88, 0xDB, 0xCE, 0xAC, 0x9A, 0xDA, 0xFF, 0xBE, 0x19, 0x50,
|
||||
0x02, 0x55, 0x83, 0xB8, 0xFE, 0xFF, 0xEF, 0x0E, 0xFF, 0x80, 0x8B, 0x3B, 0x55, 0x80, 0x95, 0x06,
|
||||
0x99, 0x03, 0x88, 0x89, 0x78, 0x56, 0x55, 0x45, 0x11, 0xA7, 0xCC, 0xCB, 0xCD, 0xB9, 0x02, 0xCB,
|
||||
0x02, 0xEE, 0x8F, 0xDC, 0xFF, 0xDE, 0xEC, 0xEF, 0xCC, 0xDE, 0xCB, 0xCD, 0xAB, 0xBB, 0xEC, 0xEF,
|
||||
0xBC, 0x18, 0x51, 0x02, 0x55, 0x83, 0xB8, 0xFE, 0xFF, 0xEF, 0x0E, 0xFF, 0x80, 0x8B, 0x3B, 0x55,
|
||||
0x80, 0x95, 0x02, 0xBB, 0x80, 0xCC, 0x04, 0xBB, 0x8E, 0x9A, 0x99, 0x89, 0x88, 0x57, 0x11, 0x10,
|
||||
0xB8, 0xDD, 0xBB, 0xDD, 0xCA, 0xDC, 0xBB, 0xBC, 0x02, 0xCC, 0x82, 0xEC, 0xCE, 0xBA, 0x02, 0xCC,
|
||||
0x81, 0xCD, 0xCC, 0x02, 0xAB, 0x85, 0xCC, 0xED, 0xDE, 0xBC, 0x19, 0x51, 0x02, 0x55, 0x83, 0xB8,
|
||||
0xFE, 0xFF, 0xEF, 0x0E, 0xFF, 0x80, 0x8B, 0x3B, 0x55, 0x82, 0x96, 0xCC, 0xCA, 0x02, 0xDD, 0x90,
|
||||
0xCC, 0xCB, 0xCC, 0xBB, 0xAA, 0x9A, 0x88, 0x77, 0x12, 0x10, 0xA8, 0xCB, 0xBC, 0xED, 0xDD, 0xDB,
|
||||
0xAB, 0x03, 0x99, 0x81, 0xA9, 0xAA, 0x06, 0x99, 0x86, 0xDB, 0xDE, 0xCD, 0xDC, 0xBE, 0x18, 0x81,
|
||||
0x02, 0x99, 0x80, 0xC9, 0x02, 0xFF, 0x85, 0xEF, 0xFF, 0xEF, 0xFF, 0xDE, 0xFE, 0x09, 0xFF, 0x80,
|
||||
0x9B, 0x3B, 0x55, 0x95, 0x96, 0xEC, 0xDC, 0xEE, 0xDC, 0xDD, 0xCC, 0xBC, 0xCC, 0xAB, 0xAA, 0x99,
|
||||
0x88, 0x27, 0x01, 0xA7, 0xAB, 0xBC, 0xED, 0xDE, 0xAA, 0x28, 0x03, 0x11, 0x81, 0x21, 0x22, 0x05,
|
||||
0x11, 0x8A, 0x21, 0xC9, 0xCD, 0xBD, 0xCB, 0xBD, 0x18, 0x81, 0xBA, 0xBB, 0xEC, 0x02, 0xFF, 0x85,
|
||||
0xEF, 0xFF, 0xCD, 0xEE, 0xAC, 0xFC, 0x09, 0xFF, 0x80, 0x9B, 0x3B, 0x55, 0x83, 0x95, 0xFC, 0xEF,
|
||||
0xEE, 0x02, 0xDD, 0x8F, 0xDE, 0xBB, 0xCB, 0xBC, 0xAA, 0x9A, 0x89, 0x17, 0x01, 0xA7, 0xCB, 0xAC,
|
||||
0xED, 0xDC, 0x8A, 0x01, 0x04, 0x00, 0x80, 0x10, 0x05, 0x00, 0x89, 0x10, 0xC9, 0xCD, 0xAB, 0xBC,
|
||||
0xAB, 0x17, 0x92, 0xDC, 0xFE, 0x03, 0xFF, 0x87, 0xEF, 0xFF, 0xCD, 0xEE, 0xAC, 0xEC, 0xDE, 0xED,
|
||||
0x07, 0xFF, 0x80, 0x9B, 0x3B, 0x55, 0x81, 0x95, 0xFC, 0x02, 0xFF, 0x90, 0xDE, 0xDD, 0xDE, 0xCB,
|
||||
0xCC, 0xBC, 0xAA, 0x99, 0x89, 0x17, 0x00, 0xA2, 0xCB, 0xBC, 0xED, 0xDE, 0x7A, 0x0B, 0x00, 0x89,
|
||||
0x10, 0xC9, 0xBC, 0xCC, 0xDE, 0xBD, 0x18, 0xA2, 0xDD, 0xFE, 0x03, 0xFF, 0x89, 0xEF, 0xFF, 0xCE,
|
||||
0xEE, 0xAC, 0xCA, 0xAC, 0xCA, 0xCC, 0xFE, 0x05, 0xFF, 0x80, 0x8B, 0x3B, 0x55, 0x95, 0x95, 0xFC,
|
||||
0xFF, 0xEF, 0xDD, 0xCD, 0xED, 0xCC, 0xCD, 0xBB, 0xAA, 0x99, 0x89, 0x27, 0x01, 0xA2, 0xCC, 0xCD,
|
||||
0xDC, 0xEF, 0x8A, 0x01, 0x0A, 0x00, 0x89, 0x20, 0xCA, 0xCD, 0xEE, 0xCE, 0xAD, 0x17, 0xA2, 0xCD,
|
||||
0xDC, 0x03, 0xFF, 0x02, 0xEF, 0x87, 0xAC, 0xEC, 0xAC, 0xBA, 0x9B, 0xB9, 0xAA, 0xFC, 0x05, 0xFF,
|
||||
0x80, 0x8B, 0x3B, 0x55, 0x85, 0x95, 0xFC, 0xFF, 0xEF, 0xED, 0xDE, 0x02, 0xDD, 0x81, 0xCD, 0xBB,
|
||||
0x02, 0xAA, 0x84, 0x99, 0x78, 0x12, 0x91, 0xCC, 0x02, 0xED, 0x82, 0xFE, 0x9C, 0x02, 0x06, 0x11,
|
||||
0x04, 0x00, 0x8A, 0x20, 0xDA, 0xCC, 0xFE, 0xEF, 0xAE, 0x17, 0xA8, 0xCC, 0xBA, 0xFD, 0x02, 0xFF,
|
||||
0x02, 0xEF, 0x88, 0xCD, 0xBC, 0xCD, 0xAB, 0xBA, 0xCB, 0xAA, 0xCC, 0xFE, 0x04, 0xFF, 0x80, 0x8B,
|
||||
0x3B, 0x55, 0x84, 0x95, 0xFC, 0xFF, 0xEF, 0xFE, 0x03, 0xFF, 0x8E, 0xEF, 0xDE, 0xCC, 0xBC, 0xBB,
|
||||
0xAA, 0x29, 0x81, 0xBB, 0xDC, 0xCC, 0xDC, 0xAE, 0x17, 0x87, 0x04, 0x88, 0x04, 0x77, 0x88, 0x27,
|
||||
0x20, 0xEA, 0xED, 0xEF, 0xFF, 0xAE, 0x12, 0xB8, 0x02, 0xBB, 0x8D, 0xEE, 0xFF, 0xEF, 0xDD, 0xCE,
|
||||
0xCC, 0x9A, 0xBB, 0x9A, 0xB9, 0xBA, 0xCC, 0xAC, 0xEB, 0x04, 0xFF, 0x80, 0x8B, 0x3B, 0x55, 0x84,
|
||||
0x95, 0xFC, 0xFF, 0xEF, 0xFE, 0x05, 0xFF, 0x8D, 0xFE, 0xEF, 0xEE, 0xDE, 0x7A, 0x71, 0xDA, 0xAC,
|
||||
0xCC, 0xBA, 0xBE, 0x18, 0x92, 0xBA, 0x02, 0xBB, 0x05, 0xAA, 0x93, 0x79, 0x71, 0xDA, 0xEE, 0xCD,
|
||||
0xED, 0x9C, 0x11, 0xC9, 0xBC, 0xDC, 0xED, 0xEE, 0xDE, 0xAB, 0xCC, 0xBB, 0xAA, 0x9B, 0xA9, 0x02,
|
||||
0x99, 0x82, 0xCB, 0x9B, 0xDB, 0x04, 0xFF, 0x80, 0x8B, 0x3B, 0x55, 0x84, 0x95, 0xFC, 0xFF, 0xEF,
|
||||
0xFE, 0x09, 0xFF, 0x8A, 0x9C, 0x11, 0xC9, 0xBD, 0xDC, 0xDD, 0xBE, 0x29, 0x21, 0xDA, 0xFF, 0x03,
|
||||
0xEE, 0x8B, 0xDE, 0xDC, 0xAD, 0x18, 0x82, 0xBA, 0xDC, 0xBB, 0xDB, 0x8B, 0x21, 0xEA, 0x02, 0xEE,
|
||||
0x82, 0xDE, 0xEC, 0xEE, 0x02, 0xBC, 0x83, 0x9A, 0x99, 0xA9, 0x99, 0x03, 0xAA, 0x81, 0xCC, 0xDC,
|
||||
0x04, 0xFF, 0x80, 0x9B, 0x3B, 0x55, 0x84, 0x95, 0xFB, 0xFF, 0xEF, 0xFE, 0x09, 0xFF, 0x83, 0xAD,
|
||||
0x12, 0xA9, 0xDD, 0x02, 0xCD, 0xA4, 0xCC, 0x9A, 0x11, 0xA8, 0xFC, 0xFF, 0xFE, 0xFF, 0xDD, 0xDC,
|
||||
0x8A, 0x21, 0xA8, 0xCA, 0xDA, 0xBD, 0xDB, 0x8A, 0x21, 0xFA, 0xEF, 0xED, 0xBE, 0xCA, 0xFF, 0xBD,
|
||||
0x9A, 0x88, 0xA9, 0xAA, 0x98, 0xB9, 0xAB, 0x99, 0xBB, 0xAA, 0xFC, 0x03, 0xFF, 0x80, 0x9B, 0x3B,
|
||||
0x55, 0x84, 0x95, 0xFB, 0xFF, 0xEF, 0xFE, 0x08, 0xFF, 0xA0, 0xEF, 0x9B, 0x12, 0x97, 0xCC, 0xDE,
|
||||
0xDD, 0xCD, 0xAA, 0x17, 0x71, 0xB9, 0xBB, 0xEB, 0xDE, 0xAB, 0xAA, 0x18, 0x82, 0xDA, 0xDC, 0xCB,
|
||||
0xDC, 0xBD, 0x29, 0x81, 0xFB, 0xDF, 0xDB, 0xBE, 0xBA, 0xED, 0x9B, 0x02, 0x99, 0x81, 0x9A, 0x99,
|
||||
0x02, 0xA9, 0x84, 0x8A, 0x99, 0x9B, 0x98, 0xDA, 0x02, 0xFF, 0x81, 0xEE, 0x8B, 0x3B, 0x55, 0x84,
|
||||
0x95, 0xFB, 0xFF, 0xEF, 0xFE, 0x08, 0xFF, 0xA3, 0xEF, 0x8B, 0x02, 0x81, 0xCB, 0xCD, 0xDD, 0xDE,
|
||||
0xCC, 0x29, 0x11, 0x82, 0x88, 0xA9, 0xAA, 0x89, 0x77, 0x11, 0xA8, 0xCA, 0xDC, 0xCB, 0xEC, 0xAE,
|
||||
0x18, 0x92, 0xFC, 0xDF, 0xDB, 0xDE, 0x9A, 0xCB, 0x9A, 0x99, 0x88, 0xAA, 0x02, 0x99, 0x89, 0x9A,
|
||||
0xA9, 0x99, 0x9A, 0xA9, 0xEB, 0xEF, 0xED, 0xCC, 0x8B, 0x3B, 0x55, 0x84, 0x95, 0xFB, 0xFF, 0xEF,
|
||||
0xFE, 0x05, 0xFF, 0xB2, 0xEF, 0xDD, 0xFF, 0xCD, 0xBD, 0x29, 0x21, 0xA9, 0xBB, 0xCC, 0xDE, 0xDB,
|
||||
0x9B, 0x28, 0x12, 0x11, 0x77, 0x22, 0x11, 0x22, 0x82, 0xCA, 0xCC, 0xCA, 0xDD, 0xFE, 0xAD, 0x12,
|
||||
0xA2, 0xFE, 0xEF, 0xCC, 0xED, 0xAB, 0xBB, 0x9A, 0x98, 0x79, 0x88, 0x99, 0x98, 0x79, 0x98, 0xA9,
|
||||
0x9A, 0xBA, 0xFD, 0xDF, 0xCB, 0xCC, 0x8B, 0x3B, 0x55, 0x84, 0x95, 0xFB, 0xFF, 0xEF, 0xFE, 0x05,
|
||||
0xFF, 0x8F, 0xDF, 0xBA, 0xFE, 0xBC, 0xDC, 0x9B, 0x12, 0xA7, 0xCC, 0xDC, 0xEF, 0xCC, 0xBD, 0xAB,
|
||||
0x99, 0x17, 0x02, 0x22, 0x82, 0x98, 0x99, 0xAA, 0x02, 0xCB, 0x9B, 0xDB, 0xBC, 0xDD, 0x7A, 0x11,
|
||||
0xC9, 0xED, 0xEF, 0xAB, 0xCC, 0xCD, 0x9B, 0x89, 0x98, 0x89, 0x87, 0x9A, 0xA9, 0x8A, 0x89, 0x98,
|
||||
0xA9, 0x98, 0xEB, 0xCD, 0xCB, 0xEE, 0x8B, 0x3B, 0x55, 0x84, 0x95, 0xFB, 0xFF, 0xEF, 0xFE, 0x05,
|
||||
0xFF, 0x8C, 0xEF, 0xCB, 0xDD, 0xAC, 0xCB, 0x9A, 0x29, 0x81, 0xDA, 0xFE, 0xEF, 0xEC, 0xCE, 0x02,
|
||||
0xBB, 0x80, 0x9A, 0x02, 0xAA, 0xA0, 0xCB, 0xCC, 0xCD, 0xDD, 0xCB, 0xCC, 0xBB, 0xAD, 0x18, 0x81,
|
||||
0xDB, 0xEC, 0xFF, 0xCD, 0x9B, 0xBB, 0x99, 0x89, 0x88, 0x98, 0x99, 0x89, 0x88, 0x89, 0x98, 0x89,
|
||||
0x98, 0x78, 0xC9, 0xAB, 0xDB, 0xDD, 0x8A, 0x3B, 0x55, 0x84, 0x95, 0xFB, 0xFF, 0xEF, 0xFE, 0x05,
|
||||
0xFF, 0x93, 0xDE, 0xAB, 0xBB, 0xAB, 0xCB, 0xBB, 0x8B, 0x12, 0xA8, 0xEC, 0xCE, 0xCA, 0xBD, 0xCC,
|
||||
0xCA, 0xDE, 0xDD, 0xCD, 0xEE, 0xDC, 0x02, 0xEE, 0x89, 0xEC, 0xBD, 0xCA, 0x9B, 0x11, 0x82, 0xDA,
|
||||
0xDE, 0xEC, 0xEF, 0x02, 0xAB, 0x89, 0x98, 0x9A, 0x99, 0x87, 0x88, 0x29, 0x72, 0x28, 0x92, 0x88,
|
||||
0x02, 0x99, 0x84, 0xBA, 0x9A, 0xDB, 0xAB, 0x8A, 0x3B, 0x55, 0x84, 0x95, 0xFB, 0xFF, 0xEF, 0xFE,
|
||||
0x03, 0xFF, 0x85, 0xEF, 0xEE, 0xCC, 0xAC, 0xAA, 0xAB, 0x03, 0x9A, 0x83, 0x28, 0x71, 0xCA, 0xDC,
|
||||
0x02, 0xBB, 0x86, 0xBC, 0xDC, 0xDE, 0xDC, 0xEE, 0xED, 0xCE, 0x02, 0xDD, 0x9C, 0xDB, 0xCD, 0x9B,
|
||||
0x28, 0x81, 0xA9, 0xEB, 0xAC, 0xCA, 0xDE, 0xBB, 0x9A, 0x99, 0x88, 0x99, 0x87, 0x88, 0x89, 0x87,
|
||||
0x28, 0x87, 0x88, 0x97, 0x98, 0x9A, 0xAA, 0xCC, 0x9A, 0x8A, 0x3B, 0x55, 0x84, 0x95, 0xFB, 0xFF,
|
||||
0xEF, 0xFE, 0x03, 0xFF, 0x85, 0xDF, 0xCC, 0xAA, 0xBC, 0xBB, 0xAA, 0x02, 0x9A, 0x87, 0xBA, 0x8A,
|
||||
0x11, 0x97, 0xCA, 0xCC, 0xBD, 0xDD, 0x02, 0xEE, 0x83, 0xBD, 0xDC, 0xCA, 0xAC, 0x02, 0xCC, 0x8C,
|
||||
0xDD, 0xAB, 0x28, 0x11, 0xA8, 0xAA, 0xCC, 0x9A, 0xB9, 0xAC, 0xA9, 0xAA, 0x8A, 0x02, 0x98, 0x02,
|
||||
0x88, 0x02, 0x78, 0x89, 0x87, 0x78, 0x89, 0x77, 0x89, 0xA9, 0x8A, 0xAA, 0xBB, 0x9B, 0x3B, 0x55,
|
||||
0x84, 0x95, 0xFB, 0xFF, 0xEF, 0xFE, 0x03, 0xFF, 0x8E, 0xEF, 0xCD, 0xBB, 0xAB, 0xAA, 0xBA, 0xA9,
|
||||
0x9B, 0x99, 0x7A, 0x01, 0x21, 0x98, 0xBA, 0xBC, 0x02, 0xDC, 0x82, 0xDD, 0xCC, 0xEE, 0x03, 0xBC,
|
||||
0x8A, 0xCC, 0xAB, 0x79, 0x11, 0x87, 0x99, 0xAA, 0xBB, 0xBA, 0xBB, 0x9A, 0x02, 0xAA, 0x83, 0x8A,
|
||||
0xA9, 0x78, 0x88, 0x02, 0x22, 0x84, 0x78, 0x88, 0x22, 0x77, 0x88, 0x03, 0x99, 0x82, 0x89, 0xCA,
|
||||
0x8A, 0x3B, 0x55, 0x84, 0x95, 0xFB, 0xFF, 0xEF, 0xFE, 0x03, 0xFF, 0x9C, 0xEE, 0xBC, 0xBB, 0xAB,
|
||||
0xB9, 0xA9, 0xBA, 0xBB, 0xAA, 0x89, 0x01, 0x00, 0x21, 0x88, 0x99, 0xAA, 0xCB, 0xED, 0xEC, 0xEF,
|
||||
0xDD, 0xAC, 0xAB, 0x99, 0x28, 0x11, 0x87, 0x99, 0x9A, 0x02, 0x99, 0x8C, 0xBA, 0xBB, 0x9A, 0xBB,
|
||||
0xAA, 0x8A, 0x98, 0x28, 0x82, 0x87, 0x22, 0x72, 0x28, 0x02, 0x22, 0x86, 0x77, 0x98, 0x89, 0x98,
|
||||
0x99, 0xAA, 0x89, 0x3B, 0x55, 0x84, 0x85, 0xEB, 0xFF, 0xEF, 0xFE, 0x02, 0xFF, 0x91, 0xDF, 0xDC,
|
||||
0xAA, 0x99, 0x9A, 0xAA, 0x99, 0xBB, 0xAA, 0x9A, 0x78, 0x22, 0x17, 0x00, 0x11, 0x72, 0x98, 0xA9,
|
||||
0x02, 0xAA, 0x86, 0xBB, 0xAB, 0x9A, 0x89, 0x27, 0x11, 0x87, 0x02, 0x98, 0x81, 0x99, 0x98, 0x02,
|
||||
0x99, 0x94, 0xA9, 0xAB, 0x9A, 0x99, 0x88, 0x97, 0x29, 0x98, 0x99, 0x27, 0x87, 0x28, 0x21, 0x22,
|
||||
0x72, 0x77, 0x99, 0xA9, 0x99, 0xBA, 0x89, 0x3B, 0x55, 0x8C, 0x85, 0xB9, 0xFE, 0xEF, 0xFE, 0xFF,
|
||||
0xEF, 0xCE, 0xBB, 0xAB, 0x99, 0x9A, 0xAA, 0x02, 0x99, 0x81, 0x9A, 0x89, 0x03, 0x88, 0x92, 0x12,
|
||||
0x71, 0x12, 0x11, 0x21, 0x22, 0x77, 0x88, 0x78, 0x22, 0x11, 0x72, 0x82, 0x88, 0x87, 0x89, 0x99,
|
||||
0x98, 0x89, 0x02, 0x99, 0x93, 0xA9, 0xAA, 0x99, 0x89, 0x99, 0x28, 0x72, 0x78, 0x72, 0x77, 0x22,
|
||||
0x77, 0x72, 0x87, 0x78, 0xA9, 0x8A, 0x89, 0xB9, 0x8A, 0x3C, 0x55, 0x88, 0x98, 0xEC, 0xEF, 0xFE,
|
||||
0xFF, 0xCD, 0xED, 0xAC, 0xBA, 0x02, 0xAA, 0x8E, 0x99, 0xAA, 0x99, 0x89, 0x88, 0x78, 0x88, 0x98,
|
||||
0x28, 0x82, 0x88, 0x22, 0x01, 0x21, 0x12, 0x02, 0x11, 0x81, 0x12, 0x72, 0x02, 0x88, 0x80, 0x98,
|
||||
0x04, 0x99, 0x80, 0x89, 0x02, 0x99, 0x86, 0x98, 0xAA, 0xA9, 0x79, 0x98, 0x28, 0x22, 0x02, 0x77,
|
||||
0x82, 0x21, 0x78, 0x87, 0x02, 0x77, 0x85, 0x72, 0xA9, 0x99, 0x9A, 0xBA, 0x8A, 0x3C, 0x55, 0x88,
|
||||
0x85, 0xC9, 0xEE, 0xFE, 0xFF, 0xCE, 0xDD, 0xBD, 0xAC, 0x03, 0x99, 0x89, 0x9A, 0x98, 0x89, 0x88,
|
||||
0x78, 0x88, 0x72, 0x78, 0x87, 0x78, 0x02, 0x22, 0x89, 0x71, 0x87, 0x27, 0x82, 0x78, 0x22, 0x77,
|
||||
0x78, 0x87, 0x89, 0x02, 0x72, 0x94, 0x88, 0x87, 0x79, 0x97, 0x99, 0x89, 0x88, 0x27, 0x98, 0x88,
|
||||
0x77, 0x88, 0x78, 0x71, 0x79, 0x21, 0x12, 0x22, 0x82, 0x99, 0x98, 0x02, 0xA9, 0x80, 0x8A, 0x3D,
|
||||
0x55, 0x87, 0xA8, 0xEC, 0xFE, 0xFF, 0xEF, 0xBC, 0xCC, 0xAC, 0x02, 0x99, 0x8D, 0x89, 0x88, 0x98,
|
||||
0x89, 0x88, 0x78, 0x77, 0x87, 0x88, 0x77, 0x88, 0x27, 0x72, 0x21, 0x03, 0x22, 0x02, 0x72, 0x90,
|
||||
0x22, 0x78, 0x22, 0x78, 0x72, 0x77, 0x88, 0x98, 0x78, 0x87, 0x89, 0x88, 0x99, 0x78, 0x98, 0x89,
|
||||
0x77, 0x03, 0x22, 0x82, 0x27, 0x81, 0x27, 0x02, 0x77, 0x84, 0x87, 0x88, 0x98, 0xAA, 0x89, 0x3D,
|
||||
0x55, 0x82, 0x85, 0xCA, 0xFE, 0x02, 0xFF, 0x92, 0xCD, 0xAA, 0x9A, 0x99, 0x9A, 0x8A, 0x98, 0x89,
|
||||
0x78, 0x88, 0x78, 0x87, 0x98, 0x78, 0x27, 0x72, 0x27, 0x77, 0x11, 0x03, 0x22, 0x82, 0x82, 0x72,
|
||||
0x27, 0x02, 0x22, 0x93, 0x77, 0x82, 0x89, 0x82, 0x88, 0x98, 0x99, 0x89, 0x88, 0x78, 0x27, 0x87,
|
||||
0x17, 0x22, 0x27, 0x72, 0x27, 0x17, 0x81, 0x78, 0x02, 0x72, 0x84, 0x88, 0xA9, 0x99, 0x98, 0x89,
|
||||
0x3E, 0x55, 0x88, 0xA8, 0xEC, 0xFF, 0xEF, 0xDE, 0x9B, 0xA9, 0x99, 0x89, 0x02, 0x99, 0x82, 0x88,
|
||||
0x77, 0x27, 0x02, 0x22, 0x80, 0x87, 0x02, 0x12, 0x85, 0x22, 0x21, 0x27, 0x22, 0x87, 0x77, 0x02,
|
||||
0x72, 0x8F, 0x27, 0x72, 0x27, 0x72, 0x22, 0x78, 0x88, 0x77, 0x89, 0x98, 0x99, 0x79, 0x72, 0x27,
|
||||
0x77, 0x78, 0x02, 0x22, 0x84, 0x88, 0x27, 0x21, 0x12, 0x21, 0x02, 0x27, 0x81, 0x22, 0x72, 0x02,
|
||||
0x98, 0x81, 0x9A, 0x8A, 0x3E, 0x55, 0x81, 0x85, 0xBA, 0x03, 0xBB, 0x80, 0x9A, 0x02, 0xAA, 0x85,
|
||||
0x99, 0x88, 0x27, 0x72, 0x12, 0x01, 0x02, 0x00, 0x88, 0x21, 0x01, 0x10, 0x12, 0x21, 0x72, 0x27,
|
||||
0x22, 0x27, 0x02, 0x21, 0x8B, 0x12, 0x22, 0x12, 0x77, 0x11, 0x78, 0x27, 0x22, 0x78, 0x82, 0x88,
|
||||
0x99, 0x02, 0x88, 0x8E, 0x77, 0x89, 0x77, 0x12, 0x72, 0x17, 0x11, 0x22, 0x21, 0x27, 0x22, 0x72,
|
||||
0x77, 0x99, 0x98, 0x02, 0x89, 0x3F, 0x55, 0x06, 0x88, 0x81, 0x99, 0x98, 0x03, 0x88, 0x80, 0x01,
|
||||
0x03, 0x11, 0x80, 0x01, 0x04, 0x00, 0x86, 0x11, 0x22, 0x11, 0x12, 0x21, 0x01, 0x11, 0x03, 0x22,
|
||||
0x9A, 0x01, 0x22, 0x77, 0x72, 0x87, 0x72, 0x88, 0x99, 0x88, 0x87, 0x88, 0x78, 0x77, 0x22, 0x11,
|
||||
0x72, 0x12, 0x21, 0x72, 0x17, 0x21, 0x87, 0x28, 0x87, 0x99, 0xAA, 0x89, 0x4A, 0x55, 0x86, 0x10,
|
||||
0x88, 0x99, 0x88, 0x27, 0x77, 0x22, 0x02, 0x11, 0x03, 0x00, 0x80, 0x10, 0x02, 0x00, 0x80, 0x10,
|
||||
0x03, 0x11, 0x9A, 0x00, 0x21, 0x72, 0x88, 0x27, 0x77, 0x88, 0x98, 0x89, 0x77, 0x87, 0x77, 0x22,
|
||||
0x77, 0x12, 0x82, 0x12, 0x21, 0x82, 0x12, 0x22, 0x27, 0x22, 0x88, 0x97, 0x99, 0x89, 0x4A, 0x55,
|
||||
0x82, 0x20, 0xA9, 0xCB, 0x03, 0xAA, 0x84, 0x9A, 0x99, 0x89, 0x27, 0x22, 0x05, 0x11, 0x81, 0x00,
|
||||
0x11, 0x02, 0x00, 0x80, 0x10, 0x03, 0x11, 0x82, 0x21, 0x87, 0x88, 0x02, 0x98, 0x83, 0x89, 0x88,
|
||||
0x77, 0x27, 0x02, 0x22, 0x81, 0x11, 0x71, 0x02, 0x22, 0x86, 0x72, 0x28, 0x72, 0x88, 0x98, 0x99,
|
||||
0x8A, 0x4A, 0x55, 0x89, 0x20, 0xBA, 0xBC, 0xAC, 0xAA, 0xEC, 0xDD, 0xBC, 0xAB, 0xAA, 0x02, 0x99,
|
||||
0x85, 0x88, 0x98, 0x99, 0x88, 0x77, 0x88, 0x02, 0x77, 0x81, 0x22, 0x12, 0x02, 0x11, 0x88, 0x00,
|
||||
0x62, 0x66, 0xA8, 0xBA, 0xAB, 0x9A, 0x78, 0x17, 0x02, 0x11, 0x83, 0x10, 0x22, 0x11, 0x72, 0x02,
|
||||
0x28, 0x82, 0x88, 0x98, 0xA9, 0x02, 0x89, 0x4A, 0x55, 0x8F, 0x20, 0xDA, 0xAC, 0xAB, 0xCC, 0xFE,
|
||||
0xFF, 0xCE, 0xEE, 0xCE, 0xCC, 0xBC, 0xBA, 0xAA, 0xCB, 0xAB, 0x05, 0xAA, 0x80, 0x9A, 0x02, 0x88,
|
||||
0x95, 0x02, 0x42, 0x65, 0xA8, 0xED, 0xDE, 0xAC, 0x77, 0x27, 0x12, 0x22, 0x21, 0x22, 0x27, 0x71,
|
||||
0x17, 0x22, 0x77, 0x87, 0x98, 0xA9, 0x8A, 0x4A, 0x55, 0xA6, 0x20, 0xEA, 0xCE, 0x9A, 0xDB, 0xFF,
|
||||
0xDE, 0xEE, 0xDE, 0xEE, 0xDE, 0xBD, 0xBB, 0xCC, 0xDB, 0xDD, 0xAB, 0xCC, 0xAC, 0xBC, 0xCB, 0xCD,
|
||||
0xBB, 0xAB, 0x07, 0x41, 0x65, 0xA8, 0xFE, 0xFF, 0xAD, 0x89, 0x78, 0x12, 0x22, 0x11, 0x21, 0x27,
|
||||
0x21, 0x02, 0x72, 0x84, 0x77, 0x88, 0x97, 0xA9, 0x8A, 0x4A, 0x55, 0x9F, 0x20, 0xC9, 0xEE, 0xAB,
|
||||
0xFC, 0xCE, 0xBB, 0xCC, 0xBC, 0xEC, 0xAC, 0xCC, 0xAB, 0xDB, 0xDC, 0xEE, 0xBD, 0xEC, 0xAC, 0xBC,
|
||||
0xDB, 0xFF, 0xFE, 0xBF, 0x18, 0x41, 0x65, 0xA8, 0xFE, 0xFF, 0xAC, 0x78, 0x02, 0x12, 0x80, 0x11,
|
||||
0x02, 0x21, 0x88, 0x11, 0x22, 0x72, 0x87, 0x28, 0x22, 0x98, 0xA9, 0x8A, 0x49, 0x55, 0x95, 0x45,
|
||||
0x10, 0xB9, 0xED, 0xAC, 0xEC, 0xBD, 0xB9, 0xAB, 0xCB, 0xCE, 0xCC, 0xDD, 0xAB, 0xBA, 0xCC, 0xDB,
|
||||
0xCE, 0xFD, 0xBE, 0xAC, 0xCA, 0x02, 0xFE, 0x96, 0xAE, 0x07, 0x41, 0x65, 0xA8, 0xFE, 0xFF, 0xAC,
|
||||
0x78, 0x21, 0x22, 0x12, 0x10, 0x72, 0x22, 0x17, 0x22, 0x21, 0x28, 0x72, 0x78, 0x98, 0x8A, 0x4A,
|
||||
0x55, 0x82, 0x11, 0xB9, 0xFF, 0x02, 0xCD, 0x9A, 0xDD, 0xAB, 0xCA, 0xBD, 0xDD, 0xBD, 0xCC, 0xAC,
|
||||
0xAA, 0xBB, 0xB9, 0xCC, 0xED, 0xAC, 0xBB, 0xAB, 0xDC, 0xEC, 0xAE, 0x07, 0x20, 0x64, 0xA8, 0xFE,
|
||||
0xFF, 0x9C, 0x77, 0x02, 0x22, 0x83, 0x27, 0x71, 0x27, 0x11, 0x02, 0x12, 0x02, 0x72, 0x83, 0x89,
|
||||
0x88, 0x98, 0x8A, 0x4A, 0x55, 0x8B, 0x11, 0xB9, 0xDF, 0xBC, 0xDD, 0xDC, 0xCC, 0xCB, 0xDE, 0xCE,
|
||||
0xBD, 0xAB, 0x02, 0xCC, 0x91, 0xAA, 0xCB, 0xCA, 0xBC, 0xCD, 0xBC, 0xCC, 0xCB, 0xDC, 0xBD, 0x18,
|
||||
0x10, 0x62, 0xA8, 0xFE, 0xFF, 0xAD, 0x28, 0x02, 0x11, 0x80, 0x21, 0x03, 0x11, 0x87, 0x01, 0x21,
|
||||
0x77, 0x97, 0x89, 0x97, 0x98, 0x89, 0x49, 0x55, 0x85, 0x25, 0x10, 0xC9, 0xCE, 0xCD, 0xDD, 0x02,
|
||||
0xEE, 0x02, 0xDD, 0x9B, 0xEE, 0xAC, 0xCC, 0xBC, 0xCD, 0xBA, 0xDC, 0xCC, 0xDB, 0xBD, 0xDB, 0xEE,
|
||||
0xED, 0xDE, 0xBD, 0x18, 0x41, 0x64, 0xA8, 0xFE, 0xFF, 0xAD, 0x78, 0x12, 0x71, 0x78, 0x11, 0x22,
|
||||
0x02, 0x12, 0x86, 0x72, 0x22, 0x87, 0x88, 0xA9, 0x89, 0x8A, 0x49, 0x55, 0x84, 0x25, 0x10, 0xC9,
|
||||
0xEF, 0xAD, 0x02, 0xED, 0xA2, 0xEF, 0xCC, 0xAC, 0xEC, 0xBD, 0xBB, 0xBC, 0xDC, 0xBB, 0xCA, 0xCD,
|
||||
0xCB, 0xDE, 0xBD, 0xFE, 0xEF, 0xBE, 0xBB, 0x18, 0x41, 0x63, 0xA8, 0xFE, 0xFF, 0xAD, 0x88, 0x78,
|
||||
0x72, 0x27, 0x10, 0x72, 0x11, 0x12, 0x10, 0x22, 0x02, 0x77, 0x82, 0x87, 0x99, 0x8A, 0x4A, 0x55,
|
||||
0x9F, 0x11, 0xB8, 0xFF, 0xCE, 0xDC, 0xFE, 0xEE, 0xCC, 0xBD, 0xED, 0xBD, 0xCC, 0xAB, 0xCC, 0xBA,
|
||||
0xDA, 0xCE, 0xCC, 0xFE, 0xDF, 0xFF, 0xEF, 0xCE, 0xAC, 0x18, 0x41, 0x65, 0xA8, 0xFE, 0xFF, 0xBE,
|
||||
0x78, 0x02, 0x22, 0x8B, 0x11, 0x21, 0x22, 0x01, 0x11, 0x21, 0x27, 0x77, 0x87, 0x78, 0x99, 0x89,
|
||||
0x4A, 0x55, 0x83, 0x14, 0x92, 0xAB, 0xBA, 0x02, 0xBB, 0x8D, 0xBA, 0xAB, 0xDB, 0xCD, 0xCE, 0xAB,
|
||||
0xCC, 0xDB, 0xDD, 0xDC, 0xBD, 0xAB, 0xFC, 0xEF, 0x02, 0xFF, 0x92, 0xDF, 0xAD, 0x18, 0x41, 0x63,
|
||||
0xA8, 0xFE, 0xFF, 0xAD, 0x27, 0x11, 0x21, 0x11, 0x22, 0x11, 0x01, 0x21, 0x27, 0x82, 0x02, 0x88,
|
||||
0x82, 0x78, 0x99, 0x89, 0x4A, 0x55, 0x83, 0x15, 0x71, 0x78, 0x87, 0x03, 0x88, 0x80, 0x99, 0x02,
|
||||
0xAA, 0x89, 0xBA, 0xAB, 0xBB, 0xCB, 0xDD, 0xEC, 0xAD, 0xCB, 0xFE, 0xDE, 0x02, 0xED, 0x8C, 0xDE,
|
||||
0xAC, 0x18, 0x21, 0x64, 0xA8, 0xFE, 0xFF, 0xAD, 0x27, 0x12, 0x10, 0x01, 0x02, 0x11, 0x88, 0x12,
|
||||
0x21, 0x22, 0x87, 0x77, 0x88, 0x78, 0x99, 0x89, 0x4A, 0x55, 0x83, 0x15, 0x00, 0x01, 0x10, 0x03,
|
||||
0x11, 0x02, 0x22, 0x86, 0x77, 0x87, 0x99, 0x88, 0x98, 0xAA, 0xA9, 0x05, 0xAA, 0x8E, 0xBB, 0xAC,
|
||||
0xAA, 0x18, 0x21, 0x64, 0xA8, 0xFE, 0xFF, 0xAD, 0x88, 0x28, 0x10, 0x11, 0x01, 0x02, 0x11, 0x84,
|
||||
0x71, 0x12, 0x72, 0x77, 0x87, 0x02, 0x99, 0x80, 0x88, 0x42, 0x55, 0x81, 0x45, 0x12, 0x02, 0x11,
|
||||
0x80, 0x21, 0x02, 0x22, 0x84, 0x44, 0x24, 0x11, 0x10, 0x01, 0x06, 0x00, 0x80, 0x10, 0x03, 0x11,
|
||||
0x87, 0x22, 0x72, 0x77, 0x27, 0x77, 0x22, 0x72, 0x88, 0x02, 0x99, 0x8B, 0x17, 0x41, 0x65, 0xA8,
|
||||
0xFE, 0xFF, 0xAD, 0x78, 0x12, 0x00, 0x10, 0x27, 0x02, 0x00, 0x87, 0x21, 0x12, 0x72, 0x78, 0x72,
|
||||
0x87, 0xAA, 0x89, 0x41, 0x55, 0x81, 0x25, 0x11, 0x0A, 0x00, 0x80, 0x10, 0x03, 0x00, 0x02, 0x11,
|
||||
0x80, 0x01, 0x0A, 0x00, 0x80, 0x10, 0x02, 0x11, 0x8C, 0x21, 0x11, 0x51, 0x66, 0xA8, 0xFE, 0xFF,
|
||||
0xAD, 0x27, 0x01, 0x10, 0x11, 0x72, 0x03, 0x11, 0x80, 0x22, 0x02, 0x77, 0x83, 0x82, 0x88, 0x9A,
|
||||
0x89, 0x41, 0x55, 0x81, 0x12, 0x10, 0x0B, 0x00, 0x80, 0x01, 0x08, 0x00, 0x80, 0x10, 0x03, 0x00,
|
||||
0x82, 0x11, 0x00, 0x10, 0x04, 0x11, 0x80, 0x71, 0x02, 0x88, 0x88, 0xB9, 0xFE, 0xFF, 0x9D, 0x77,
|
||||
0x12, 0x72, 0x12, 0x11, 0x02, 0x22, 0x81, 0x21, 0x77, 0x02, 0x87, 0x83, 0x77, 0xA9, 0x9A, 0x89,
|
||||
0x3F, 0x55, 0x83, 0x87, 0x77, 0x17, 0x11, 0x1B, 0x00, 0x87, 0x72, 0x87, 0x98, 0x89, 0xA9, 0xAA,
|
||||
0xBB, 0xEB, 0x02, 0xFF, 0x8F, 0x9C, 0x27, 0x11, 0x21, 0x22, 0x11, 0x12, 0x11, 0x21, 0x88, 0x72,
|
||||
0x87, 0x77, 0xA9, 0x9A, 0x89, 0x3E, 0x55, 0x84, 0x85, 0x98, 0x88, 0x27, 0x12, 0x1B, 0x00, 0x87,
|
||||
0x72, 0x87, 0x99, 0xAA, 0xCA, 0xAB, 0xCC, 0xFD, 0x02, 0xFF, 0x8B, 0x9C, 0x17, 0x11, 0x12, 0x21,
|
||||
0x11, 0x12, 0x22, 0x12, 0x77, 0x22, 0x72, 0x02, 0x88, 0x81, 0xA9, 0x8A, 0x3D, 0x55, 0x86, 0x75,
|
||||
0xA9, 0x99, 0x89, 0x88, 0x22, 0x01, 0x19, 0x00, 0x87, 0x11, 0x72, 0x88, 0x99, 0xAA, 0xBB, 0xCC,
|
||||
0xEE, 0x03, 0xFF, 0x8F, 0x9D, 0x27, 0x21, 0x12, 0x01, 0x00, 0x11, 0x22, 0x77, 0x27, 0x72, 0x87,
|
||||
0x88, 0x87, 0x99, 0x8A, 0x3D, 0x55, 0x80, 0x96, 0x02, 0xAA, 0x8C, 0x9A, 0x78, 0x22, 0x01, 0x00,
|
||||
0x10, 0x21, 0x72, 0x27, 0x22, 0x12, 0x21, 0x22, 0x06, 0x11, 0x0A, 0x00, 0x87, 0x11, 0x72, 0x78,
|
||||
0x98, 0xAA, 0xBA, 0xCB, 0xEE, 0x03, 0xFF, 0x8A, 0x9D, 0x17, 0x11, 0x21, 0x02, 0x00, 0x10, 0x21,
|
||||
0x22, 0x87, 0x22, 0x02, 0x87, 0x82, 0x98, 0x9A, 0x8A, 0x3D, 0x55, 0x89, 0xA8, 0xAA, 0xBB, 0xAB,
|
||||
0x89, 0x27, 0x11, 0x21, 0x87, 0x99, 0x02, 0xAA, 0x82, 0x9A, 0x18, 0x71, 0x02, 0x88, 0x80, 0x78,
|
||||
0x05, 0x88, 0x03, 0x77, 0x80, 0x27, 0x04, 0x22, 0x87, 0x11, 0x22, 0x72, 0x78, 0x98, 0xAA, 0xBA,
|
||||
0xBB, 0x02, 0xCC, 0x8E, 0xEC, 0xCD, 0x9C, 0x17, 0x11, 0x22, 0x11, 0x01, 0x10, 0x82, 0x22, 0x82,
|
||||
0x78, 0x77, 0x87, 0x03, 0x89, 0x3C, 0x55, 0x8A, 0x85, 0xCA, 0xDD, 0xED, 0xAC, 0x99, 0x78, 0x87,
|
||||
0x98, 0xBA, 0xDC, 0x02, 0xDD, 0x81, 0x8B, 0x02, 0x02, 0x11, 0x82, 0x12, 0x21, 0xA9, 0x03, 0xAA,
|
||||
0x80, 0xAB, 0x05, 0xAA, 0x07, 0x99, 0x03, 0xAA, 0x87, 0x9A, 0xA9, 0x99, 0xBA, 0x9A, 0x99, 0x12,
|
||||
0x11, 0x02, 0x21, 0x8A, 0x27, 0x01, 0x21, 0x71, 0x78, 0x87, 0x89, 0x99, 0x88, 0xA9, 0x8A, 0x3C,
|
||||
0x55, 0x81, 0x95, 0xEB, 0x02, 0xFF, 0x96, 0xAD, 0x9A, 0x88, 0xA9, 0xDB, 0xFE, 0xFF, 0xBD, 0xAA,
|
||||
0x29, 0x21, 0x88, 0x28, 0x22, 0x11, 0x71, 0x88, 0x77, 0xAA, 0xEC, 0xDD, 0xEE, 0xDE, 0x03, 0xDD,
|
||||
0x06, 0xCC, 0x80, 0xBC, 0x02, 0xAA, 0x8A, 0x89, 0x87, 0x22, 0x98, 0x89, 0x27, 0x77, 0x12, 0x71,
|
||||
0x12, 0x11, 0x02, 0x00, 0x87, 0x21, 0x72, 0x78, 0x88, 0x98, 0xA9, 0x9A, 0x89, 0x3C, 0x55, 0x81,
|
||||
0xA8, 0xFC, 0x02, 0xFF, 0x83, 0xBE, 0x9A, 0xA9, 0xDB, 0x02, 0xFF, 0x8F, 0xCD, 0x9A, 0x28, 0x01,
|
||||
0x70, 0xBA, 0xAB, 0x9A, 0x89, 0x12, 0x11, 0x10, 0x98, 0xCA, 0xBB, 0xFD, 0x09, 0xFF, 0x8E, 0xBD,
|
||||
0xAB, 0x89, 0x99, 0x88, 0x99, 0x28, 0x87, 0x88, 0x27, 0x22, 0x11, 0x22, 0x12, 0x10, 0x02, 0x11,
|
||||
0x02, 0x22, 0x85, 0x78, 0x98, 0x89, 0x98, 0x9A, 0x8A, 0x3C, 0x55, 0x81, 0xB8, 0xFE, 0x02, 0xFF,
|
||||
0x97, 0xCE, 0xAA, 0xDB, 0xFE, 0xFF, 0xEF, 0xAB, 0x89, 0x78, 0x01, 0x81, 0xEB, 0xBC, 0xCC, 0xAB,
|
||||
0x99, 0x17, 0x01, 0x11, 0x97, 0xAA, 0xEC, 0xFF, 0xEE, 0x04, 0xFF, 0x96, 0xEF, 0xDD, 0xEF, 0x9B,
|
||||
0xB9, 0xAA, 0x9A, 0x89, 0x88, 0x28, 0x87, 0x17, 0x72, 0x17, 0x21, 0x77, 0x12, 0x21, 0x27, 0x11,
|
||||
0x72, 0x28, 0x87, 0x02, 0x88, 0x82, 0x98, 0xBB, 0x8B, 0x3C, 0x55, 0x80, 0xB9, 0x03, 0xFF, 0xA3,
|
||||
0xBD, 0xCB, 0xFE, 0xFF, 0xEF, 0xEE, 0xBD, 0x9A, 0xAA, 0x17, 0x91, 0xDB, 0xAA, 0xCC, 0xCB, 0xBB,
|
||||
0x9A, 0x28, 0x11, 0x21, 0x97, 0xA9, 0xEC, 0xAC, 0xDC, 0xCC, 0xFE, 0xFF, 0xDF, 0xBA, 0xCC, 0xAC,
|
||||
0xCA, 0xAB, 0x9A, 0x88, 0x02, 0x77, 0x89, 0x22, 0x17, 0x21, 0x17, 0x11, 0x22, 0x11, 0x21, 0x12,
|
||||
0x11, 0x02, 0x22, 0x02, 0x98, 0x83, 0x99, 0xAA, 0xBA, 0x8B, 0x3B, 0x55, 0x81, 0x65, 0xC9, 0x03,
|
||||
0xFF, 0x81, 0xBD, 0xED, 0x02, 0xFF, 0x8B, 0xCE, 0xEC, 0xDF, 0x9A, 0xAB, 0x17, 0x92, 0xED, 0xCC,
|
||||
0xDC, 0xCC, 0xCA, 0x02, 0xAA, 0x85, 0x89, 0x17, 0x11, 0x72, 0xA9, 0x79, 0x02, 0x99, 0x8F, 0xFC,
|
||||
0xFF, 0xDE, 0xBB, 0xA9, 0xBC, 0xBA, 0x89, 0xAA, 0x88, 0x98, 0x77, 0x28, 0x22, 0x21, 0x22, 0x02,
|
||||
0x11, 0x8B, 0x12, 0x21, 0x02, 0x21, 0x77, 0x87, 0x89, 0x87, 0x88, 0x99, 0xA9, 0x8A, 0x3B, 0x55,
|
||||
0x81, 0x75, 0xC9, 0x02, 0xFF, 0x82, 0xEF, 0xDD, 0xFE, 0x02, 0xFF, 0x9B, 0xCE, 0xEC, 0xEE, 0xCD,
|
||||
0xAC, 0x02, 0xA2, 0xDE, 0xDB, 0xDC, 0xBC, 0xCA, 0xBC, 0xCB, 0xAC, 0x9A, 0x88, 0x12, 0x22, 0x11,
|
||||
0x22, 0x92, 0xCB, 0xDC, 0xEC, 0xCE, 0xAA, 0xAB, 0x02, 0x99, 0x80, 0xAB, 0x02, 0x88, 0x8A, 0x98,
|
||||
0x28, 0x88, 0x22, 0x12, 0x22, 0x11, 0x22, 0x72, 0x12, 0x11, 0x02, 0x22, 0x02, 0x88, 0x83, 0x99,
|
||||
0xA9, 0x9A, 0x89, 0x3B, 0x55, 0x81, 0x75, 0xCA, 0x02, 0xFF, 0x81, 0xCD, 0xED, 0x03, 0xFF, 0x8A,
|
||||
0xEF, 0xCD, 0xDC, 0xCC, 0x9C, 0x17, 0xA2, 0xCB, 0xDB, 0xBD, 0xBA, 0x02, 0xDC, 0x8E, 0xEE, 0xDE,
|
||||
0xCD, 0xAB, 0x79, 0x27, 0x11, 0x01, 0x82, 0x98, 0xA9, 0xAA, 0xBB, 0xCB, 0xAC, 0x02, 0xAA, 0x83,
|
||||
0x9A, 0x89, 0x88, 0x87, 0x02, 0x77, 0x8F, 0x78, 0x12, 0x87, 0x17, 0x22, 0x72, 0x22, 0x72, 0x22,
|
||||
0x12, 0x72, 0x98, 0x99, 0xA9, 0xAB, 0x89, 0x3B, 0x55, 0x85, 0x75, 0xDA, 0xFF, 0xEF, 0xBC, 0xFD,
|
||||
0x04, 0xFF, 0x93, 0xBD, 0xCB, 0xAA, 0x9B, 0x17, 0x81, 0x98, 0xBA, 0xDC, 0xBC, 0xDC, 0xBD, 0xFD,
|
||||
0xEF, 0xDE, 0xCD, 0xAB, 0x9A, 0x99, 0x28, 0x02, 0x11, 0x88, 0x21, 0x72, 0x88, 0x99, 0x9A, 0xA9,
|
||||
0xBB, 0xAA, 0x89, 0x03, 0x88, 0x84, 0x22, 0x78, 0x12, 0x21, 0x12, 0x02, 0x72, 0x89, 0x22, 0x87,
|
||||
0x28, 0x27, 0x87, 0xA9, 0x99, 0xBA, 0xCB, 0x9B, 0x3B, 0x55, 0x8E, 0x75, 0xC9, 0xFF, 0xEF, 0xCC,
|
||||
0xFE, 0xFF, 0xEF, 0xCC, 0xFE, 0xDE, 0xCC, 0xAA, 0x9A, 0x79, 0x02, 0x11, 0x81, 0x87, 0xA9, 0x02,
|
||||
0xBC, 0x8C, 0xAC, 0xEC, 0xCD, 0xBD, 0xAC, 0xBA, 0xCC, 0xBC, 0xAB, 0x88, 0x89, 0x77, 0x12, 0x02,
|
||||
0x11, 0x87, 0x97, 0x99, 0xB9, 0xAB, 0x99, 0xA9, 0x79, 0x72, 0x02, 0x77, 0x8E, 0x28, 0x11, 0x21,
|
||||
0x82, 0x22, 0x87, 0x77, 0x28, 0x88, 0x98, 0xAA, 0x98, 0xAA, 0xA9, 0x8B, 0x3B, 0x55, 0x81, 0x75,
|
||||
0xC9, 0x02, 0xFF, 0x90, 0xDD, 0xFE, 0xCE, 0xCC, 0xAA, 0xDC, 0xBB, 0xCB, 0x9B, 0x99, 0x9A, 0x89,
|
||||
0x12, 0x11, 0x72, 0xC9, 0xCD, 0x02, 0xCE, 0x83, 0xDD, 0xCE, 0xAB, 0xCC, 0x02, 0xBB, 0x80, 0xDC,
|
||||
0x02, 0xBB, 0x93, 0xAA, 0x9A, 0x78, 0x12, 0x11, 0x22, 0x98, 0x9A, 0x98, 0x99, 0x88, 0x82, 0x77,
|
||||
0x22, 0x77, 0x17, 0x21, 0x77, 0x27, 0x82, 0x02, 0x27, 0x82, 0x77, 0x88, 0x99, 0x02, 0xAA, 0x81,
|
||||
0xBA, 0x8B, 0x3B, 0x55, 0x81, 0x75, 0xC9, 0x02, 0xFF, 0x89, 0xEE, 0xFF, 0xAC, 0xB9, 0x9A, 0xBC,
|
||||
0xA9, 0xCB, 0x8A, 0xA9, 0x02, 0x9A, 0x84, 0x87, 0x28, 0x11, 0xB8, 0xCD, 0x02, 0xDE, 0x91, 0xCD,
|
||||
0xBC, 0xBB, 0xDD, 0xBB, 0xDC, 0xCB, 0xCC, 0xBC, 0xED, 0xBD, 0xAA, 0x99, 0x78, 0x27, 0x21, 0x22,
|
||||
0x97, 0x02, 0x88, 0x91, 0x87, 0x89, 0x88, 0x77, 0x78, 0x22, 0x78, 0x28, 0x72, 0x78, 0x87, 0x88,
|
||||
0x79, 0x98, 0xCA, 0xAA, 0xDB, 0x8B, 0x3B, 0x55, 0x9A, 0x75, 0xC9, 0xFF, 0xEF, 0xCC, 0xDC, 0x9C,
|
||||
0xB9, 0xCC, 0xCD, 0xA9, 0xAC, 0x89, 0xA9, 0x99, 0x88, 0x98, 0x8A, 0x12, 0xA7, 0xAB, 0xDC, 0xDD,
|
||||
0xBD, 0xAB, 0xCB, 0xFE, 0x02, 0xDD, 0x85, 0xCB, 0xDC, 0xCD, 0xED, 0xAB, 0xB9, 0x02, 0xBB, 0x8A,
|
||||
0x9A, 0x17, 0x12, 0x71, 0x77, 0x98, 0x28, 0x98, 0x79, 0x77, 0x27, 0x02, 0x72, 0x02, 0x77, 0x88,
|
||||
0x89, 0x99, 0x88, 0x78, 0x98, 0xA9, 0x9A, 0xEB, 0x8B, 0x3B, 0x55, 0x8E, 0x75, 0xC9, 0xFF, 0xEF,
|
||||
0xBD, 0xBA, 0xBD, 0xCB, 0xAB, 0xAC, 0x99, 0x9A, 0x87, 0xA9, 0x9A, 0x02, 0x99, 0xAB, 0x78, 0x01,
|
||||
0xA7, 0xBB, 0xDC, 0xEE, 0xCD, 0xAC, 0xAA, 0xCB, 0xEC, 0xCE, 0xBB, 0xED, 0xCE, 0xEC, 0xAC, 0xDA,
|
||||
0xDD, 0xFE, 0xCE, 0x9A, 0x89, 0x12, 0x87, 0x89, 0x28, 0x87, 0x77, 0x27, 0x22, 0x27, 0x87, 0x88,
|
||||
0x77, 0x78, 0x88, 0x78, 0x87, 0x99, 0xA9, 0xCB, 0xFE, 0x8B, 0x3B, 0x55, 0x81, 0x75, 0xC9, 0x02,
|
||||
0xFF, 0x84, 0xBD, 0xA9, 0x9B, 0xAA, 0x89, 0x02, 0xAA, 0x88, 0x8A, 0x88, 0x87, 0x78, 0x99, 0x28,
|
||||
0x12, 0x00, 0xA7, 0x02, 0xDD, 0x8A, 0xDC, 0xCB, 0xAB, 0x88, 0x98, 0xA9, 0xAA, 0xCB, 0xCC, 0xBD,
|
||||
0xCB, 0x02, 0xCD, 0x8C, 0xDE, 0xDC, 0xDE, 0xCB, 0xAC, 0x17, 0x21, 0x87, 0x28, 0x98, 0x87, 0x88,
|
||||
0x78, 0x02, 0x87, 0x02, 0x78, 0x02, 0x88, 0x86, 0x89, 0x99, 0x98, 0xA9, 0xDC, 0xFE, 0x9B, 0x3B,
|
||||
0x55, 0x81, 0x75, 0xC9, 0x02, 0xFF, 0x82, 0xDE, 0xDC, 0x9B, 0x02, 0x99, 0x8A, 0xAB, 0x98, 0x8A,
|
||||
0x98, 0x88, 0x77, 0x89, 0x28, 0x22, 0x00, 0xA7, 0x02, 0xEE, 0x02, 0xDC, 0x87, 0x9B, 0x12, 0x11,
|
||||
0x21, 0x88, 0xA9, 0xAA, 0xAB, 0x02, 0xBB, 0x8D, 0xDD, 0xCD, 0xBC, 0xED, 0xDD, 0xCE, 0x29, 0x20,
|
||||
0x98, 0x78, 0x88, 0x98, 0x78, 0x88, 0x04, 0x77, 0x88, 0x88, 0x99, 0xA9, 0x99, 0xAA, 0x9A, 0xBA,
|
||||
0xED, 0x9B, 0x3B, 0x55, 0x81, 0x65, 0xC9, 0x02, 0xFF, 0x86, 0xCE, 0xDC, 0x9B, 0x9A, 0xBA, 0x9B,
|
||||
0x99, 0x02, 0x89, 0x87, 0x87, 0x98, 0x89, 0x88, 0x78, 0x11, 0xB8, 0xEE, 0x02, 0xED, 0x8E, 0xDD,
|
||||
0x9C, 0x01, 0x22, 0x12, 0x10, 0x22, 0x87, 0x99, 0xAA, 0xCB, 0xCE, 0xED, 0xDE, 0xFF, 0x02, 0xEF,
|
||||
0x83, 0x7A, 0x21, 0x99, 0x87, 0x03, 0x88, 0x86, 0x78, 0x72, 0x78, 0x87, 0x77, 0x99, 0x88, 0x02,
|
||||
0x98, 0x84, 0xAA, 0x99, 0xDA, 0xFE, 0x8B, 0x3B, 0x55, 0x81, 0x65, 0xC9, 0x02, 0xFF, 0x83, 0xAD,
|
||||
0xB9, 0x8A, 0x99, 0x02, 0xAA, 0x8F, 0x9A, 0xA9, 0x79, 0x28, 0x82, 0x78, 0x77, 0x12, 0x10, 0xB9,
|
||||
0xCC, 0xDB, 0xDC, 0xCB, 0x9B, 0x11, 0x02, 0x27, 0x81, 0x00, 0x10, 0x02, 0x11, 0x8A, 0x72, 0x98,
|
||||
0xAB, 0xDB, 0xBD, 0xDE, 0xCE, 0xEE, 0x9C, 0x12, 0x87, 0x02, 0x88, 0x85, 0x89, 0x98, 0x78, 0x87,
|
||||
0x78, 0x97, 0x03, 0x99, 0x86, 0x9A, 0x99, 0xBA, 0xAA, 0xFC, 0xFF, 0x8B, 0x3C, 0x55, 0x80, 0xC9,
|
||||
0x02, 0xFF, 0x85, 0xAD, 0xA9, 0x9A, 0x89, 0x99, 0x9A, 0x02, 0x88, 0x86, 0x27, 0x87, 0x27, 0x87,
|
||||
0x78, 0x12, 0x20, 0x02, 0xB9, 0x97, 0xBA, 0xCA, 0xDB, 0x9C, 0x02, 0x21, 0x77, 0x22, 0x71, 0x28,
|
||||
0x00, 0x11, 0x71, 0xBA, 0xCB, 0xBC, 0xBD, 0xCC, 0xCD, 0xAD, 0x07, 0x72, 0xA9, 0x89, 0x02, 0x98,
|
||||
0x83, 0x88, 0x98, 0x88, 0x99, 0x02, 0x88, 0x84, 0x99, 0x9A, 0xA9, 0xCB, 0xDC, 0x02, 0xFF, 0x80,
|
||||
0x8B, 0x3B, 0x55, 0x81, 0x65, 0xC9, 0x02, 0xFF, 0x85, 0xCE, 0x9A, 0x99, 0x9A, 0xAA, 0x8A, 0x02,
|
||||
0x87, 0x89, 0x72, 0x87, 0x78, 0x87, 0x17, 0x22, 0x10, 0xB9, 0xBB, 0xCA, 0x02, 0xDC, 0x96, 0xAC,
|
||||
0x02, 0x81, 0x27, 0x87, 0x77, 0x12, 0x21, 0x87, 0xA9, 0xCB, 0xCA, 0xED, 0xDE, 0xEE, 0xCE, 0xBC,
|
||||
0x18, 0x91, 0x8A, 0x98, 0x89, 0x98, 0x02, 0x88, 0x80, 0x77, 0x02, 0x98, 0x81, 0x99, 0xA9, 0x02,
|
||||
0xAA, 0x81, 0xA9, 0xDB, 0x02, 0xFF, 0x80, 0x8B, 0x3B, 0x55, 0x81, 0x65, 0xC9, 0x02, 0xFF, 0xA0,
|
||||
0xBD, 0x89, 0x9A, 0x99, 0x89, 0x99, 0x88, 0x99, 0x87, 0x77, 0x87, 0x78, 0x27, 0x78, 0x20, 0xD9,
|
||||
0xDE, 0xDB, 0xBC, 0xEC, 0x9B, 0x01, 0x72, 0x27, 0x12, 0x11, 0x21, 0xA8, 0xAA, 0xDC, 0xEE, 0xDD,
|
||||
0xFD, 0x02, 0xFF, 0x86, 0xBD, 0xAC, 0x18, 0x81, 0x9A, 0x99, 0x89, 0x02, 0x98, 0x81, 0x79, 0x77,
|
||||
0x02, 0x99, 0x02, 0xAA, 0x86, 0xA9, 0x9A, 0xAA, 0xCB, 0xFD, 0xFF, 0x8B, 0x3C, 0x55, 0x80, 0xC9,
|
||||
0x02, 0xFF, 0x86, 0xAC, 0x98, 0x9A, 0x89, 0x78, 0xA9, 0x79, 0x02, 0x82, 0xAF, 0x17, 0x72, 0x77,
|
||||
0x87, 0x29, 0x70, 0xEA, 0xDE, 0xDB, 0xCD, 0xDA, 0x9C, 0x01, 0x10, 0x11, 0x21, 0x87, 0x98, 0xDB,
|
||||
0xCD, 0xED, 0xFF, 0xEF, 0xFE, 0xFF, 0xFE, 0xDE, 0xBC, 0x18, 0x21, 0x98, 0xAA, 0x99, 0x98, 0x89,
|
||||
0x88, 0x99, 0x89, 0x88, 0x98, 0x99, 0x98, 0xBB, 0xCC, 0x9B, 0xEB, 0xFF, 0x9B, 0x3C, 0x55, 0xAC,
|
||||
0xC9, 0xFF, 0xEF, 0x9B, 0x98, 0xAA, 0x89, 0x99, 0x89, 0x77, 0x21, 0x77, 0x17, 0x72, 0x12, 0x21,
|
||||
0x28, 0x20, 0xDA, 0xCC, 0xBC, 0xDB, 0xDC, 0x9B, 0x01, 0x21, 0x78, 0x98, 0xBA, 0xCB, 0xDE, 0xAC,
|
||||
0xDB, 0xFE, 0xEF, 0xDC, 0xED, 0xEC, 0xCF, 0xCA, 0x8A, 0x01, 0x71, 0x99, 0xAA, 0x03, 0x99, 0x8B,
|
||||
0xAA, 0x8A, 0x98, 0x97, 0xA9, 0x9A, 0xDA, 0xBD, 0xAB, 0xEB, 0xFF, 0x9B, 0x3C, 0x55, 0x84, 0xC9,
|
||||
0xFF, 0xDF, 0x9A, 0x89, 0x02, 0x88, 0x92, 0x9A, 0x27, 0x87, 0x72, 0x22, 0x17, 0x21, 0x72, 0x22,
|
||||
0x12, 0x70, 0xCA, 0xDB, 0xCD, 0xDC, 0xDB, 0x9B, 0x88, 0x98, 0x02, 0xAA, 0x9F, 0xCC, 0xAC, 0xBC,
|
||||
0xCD, 0xDC, 0xED, 0xCF, 0xBA, 0xDB, 0xEC, 0xDF, 0xBB, 0x7A, 0x11, 0x98, 0x89, 0xAA, 0x98, 0x99,
|
||||
0x9A, 0x99, 0x9A, 0xAA, 0x99, 0xDB, 0x9B, 0xCA, 0xDE, 0xCD, 0xFE, 0xFF, 0x8B, 0x3C, 0x55, 0x8A,
|
||||
0xB9, 0xFD, 0xCF, 0x89, 0x99, 0x78, 0x97, 0x9A, 0x27, 0x88, 0x72, 0x02, 0x27, 0x8E, 0x10, 0x72,
|
||||
0x22, 0x12, 0x70, 0xDA, 0xCD, 0xCB, 0xDD, 0xDC, 0xBE, 0xAA, 0xCB, 0xBB, 0xCC, 0x02, 0xCD, 0x99,
|
||||
0xAC, 0xEC, 0xCC, 0xEC, 0xDF, 0xCB, 0xDD, 0xBB, 0xAA, 0x99, 0x17, 0x71, 0xBA, 0xAA, 0xBB, 0x99,
|
||||
0x9A, 0xAA, 0x89, 0xAA, 0xA9, 0xBB, 0xCB, 0xBD, 0xBB, 0xFD, 0x03, 0xFF, 0x80, 0x8B, 0x3C, 0x55,
|
||||
0x84, 0x97, 0xDB, 0xCF, 0x9A, 0x89, 0x02, 0x99, 0xB0, 0x88, 0x89, 0x88, 0x72, 0x28, 0x27, 0x21,
|
||||
0x77, 0x27, 0x14, 0x70, 0xEA, 0xBE, 0xDB, 0xCE, 0xCA, 0xFE, 0xEE, 0xDD, 0xBC, 0xFE, 0xEF, 0xCE,
|
||||
0xAC, 0xCC, 0xDC, 0xED, 0xDD, 0xCB, 0xBB, 0x89, 0x27, 0x12, 0x01, 0x92, 0xEC, 0xCD, 0xDE, 0x9B,
|
||||
0x9A, 0xBA, 0xAA, 0x9A, 0xA9, 0xBC, 0xA9, 0xED, 0xBC, 0xFD, 0x03, 0xFF, 0x80, 0x8B, 0x3C, 0x55,
|
||||
0x83, 0x75, 0xB9, 0xED, 0xAC, 0x03, 0x88, 0x97, 0x78, 0x88, 0x87, 0x77, 0x79, 0x11, 0x22, 0x21,
|
||||
0x22, 0x02, 0x81, 0xFB, 0xCE, 0xEC, 0xCE, 0xBA, 0xED, 0xEE, 0xED, 0xEE, 0xFF, 0xDF, 0xCE, 0xAC,
|
||||
0x02, 0xCC, 0x84, 0xCB, 0xBA, 0xAA, 0x89, 0x12, 0x02, 0x11, 0x8F, 0x54, 0xA7, 0xFD, 0xFF, 0xEF,
|
||||
0xAC, 0xAB, 0xA9, 0xCA, 0x9B, 0xCA, 0xCB, 0xBB, 0xFD, 0xCD, 0xFE, 0x03, 0xFF, 0x80, 0x8B, 0x3D,
|
||||
0x55, 0x8C, 0x97, 0xCB, 0x9A, 0x88, 0x98, 0x77, 0x88, 0x77, 0x12, 0x71, 0x29, 0x21, 0x22, 0x03,
|
||||
0x11, 0x85, 0x92, 0xFC, 0xEF, 0xDE, 0xCD, 0xCA, 0x02, 0xDC, 0x83, 0xEF, 0xCD, 0xED, 0xBD, 0x02,
|
||||
0xCD, 0x02, 0xBC, 0x82, 0xAA, 0x89, 0x27, 0x02, 0x11, 0x03, 0x55, 0x8E, 0xA8, 0xFD, 0xFF, 0xCF,
|
||||
0xAA, 0xAB, 0x9A, 0xB9, 0xCD, 0xED, 0xDD, 0xAB, 0xEC, 0xBC, 0xFD, 0x03, 0xFF, 0x80, 0x8B, 0x3D,
|
||||
0x55, 0xA0, 0x75, 0xA9, 0x9A, 0x89, 0xA9, 0x89, 0x88, 0x22, 0x17, 0x71, 0x18, 0x11, 0x21, 0x22,
|
||||
0x72, 0x88, 0xB9, 0xFD, 0xEF, 0xAD, 0xCB, 0xCC, 0xDC, 0xEC, 0xDD, 0xDE, 0xBB, 0xDD, 0xAC, 0xAB,
|
||||
0x9A, 0x99, 0x28, 0x02, 0x11, 0x80, 0x52, 0x04, 0x55, 0x88, 0xA8, 0xFD, 0xFF, 0xCF, 0xAA, 0xDC,
|
||||
0xBC, 0xBB, 0xFE, 0x02, 0xFF, 0x83, 0xCD, 0xFE, 0xDE, 0xFE, 0x03, 0xFF, 0x80, 0x9B, 0x3E, 0x55,
|
||||
0x82, 0x97, 0x9A, 0xA9, 0x02, 0x99, 0x86, 0x88, 0x77, 0x79, 0x72, 0x01, 0x71, 0x98, 0x02, 0xAA,
|
||||
0x8F, 0xBA, 0xDB, 0xFE, 0xEF, 0xAC, 0xCA, 0xDD, 0xED, 0xDC, 0xBB, 0xCD, 0xAA, 0xAB, 0x9A, 0x28,
|
||||
0x12, 0x02, 0x11, 0x80, 0x21, 0x06, 0x55, 0x88, 0xA8, 0xFD, 0xFF, 0xDF, 0xBB, 0xFD, 0xCE, 0xCB,
|
||||
0xFE, 0x02, 0xFF, 0x80, 0xEF, 0x06, 0xFF, 0x80, 0x9B, 0x3E, 0x55, 0x9B, 0x65, 0x88, 0x98, 0x87,
|
||||
0x89, 0x77, 0x98, 0x8A, 0x22, 0x01, 0x92, 0xCB, 0xDE, 0xDB, 0xDC, 0xDB, 0xED, 0xCE, 0xBD, 0xDC,
|
||||
0xED, 0xDE, 0xCC, 0xCB, 0xAB, 0x9A, 0x78, 0x12, 0x02, 0x11, 0x80, 0x21, 0x08, 0x55, 0x88, 0xA8,
|
||||
0xFD, 0xFF, 0xDF, 0xBB, 0xFD, 0xBE, 0xBA, 0xFD, 0x09, 0xFF, 0x80, 0x9B, 0x3F, 0x55, 0x8C, 0x75,
|
||||
0x77, 0x85, 0x78, 0x45, 0x85, 0x78, 0x24, 0x10, 0xA8, 0xFE, 0xEF, 0xDC, 0x03, 0xCB, 0x02, 0xAC,
|
||||
0x82, 0xBB, 0xCC, 0xAA, 0x02, 0x99, 0x81, 0x79, 0x22, 0x02, 0x11, 0x80, 0x51, 0x0A, 0x55, 0x87,
|
||||
0xA8, 0xFD, 0xFF, 0xEF, 0xDD, 0xFF, 0xDF, 0xDC, 0x0A, 0xFF, 0x80, 0x8B, 0x46, 0x55, 0x8E, 0x15,
|
||||
0x20, 0xC9, 0xFE, 0xDF, 0xCC, 0xCB, 0xBA, 0xDC, 0xCD, 0xBD, 0xAB, 0xAA, 0x27, 0x12, 0x03, 0x11,
|
||||
0x80, 0x51, 0x0C, 0x55, 0x83, 0xA8, 0xFD, 0xFF, 0xEF, 0x0E, 0xFF, 0x80, 0x8B, 0x46, 0x55, 0x8F,
|
||||
0x05, 0x70, 0xBA, 0xFC, 0xBD, 0xCB, 0xBB, 0xA9, 0xED, 0xBC, 0xAA, 0x9A, 0x79, 0x01, 0x21, 0x54,
|
||||
0x0F, 0x55, 0x83, 0xA8, 0xFD, 0xFF, 0xEF, 0x0E, 0xFF, 0x80, 0x8B, 0x46, 0x55, 0x84, 0x02, 0x91,
|
||||
0xDB, 0xDE, 0xBD, 0x02, 0xAA, 0x86, 0xBA, 0xAA, 0x99, 0x78, 0x24, 0x12, 0x21, 0x11, 0x55, 0x83,
|
||||
0xA8, 0xFD, 0xFF, 0xEF, 0x0E, 0xFF, 0x80, 0x8B, 0x46, 0x55, 0x85, 0x01, 0x91, 0xCB, 0xBC, 0xBD,
|
||||
0xAA, 0x02, 0x89, 0x80, 0x27, 0x02, 0x11, 0x80, 0x21, 0x13, 0x55, 0x83, 0xA7, 0xFD, 0xFF, 0xEF,
|
||||
0x0E, 0xFF, 0x80, 0x8B, 0x45, 0x55, 0x86, 0x45, 0x10, 0xA7, 0xAA, 0xAB, 0x9A, 0x78, 0x03, 0x11,
|
||||
0x81, 0x00, 0x41, 0x14, 0x55, 0x83, 0xA7, 0xFC, 0xFF, 0xEF, 0x0E, 0xFF, 0x80, 0x9B, 0x46, 0x55,
|
||||
0x87, 0x01, 0x82, 0x88, 0x78, 0x12, 0x01, 0x11, 0x54, 0x17, 0x55, 0x83, 0x95, 0xDA, 0xFF, 0xEF,
|
||||
0x0E, 0xFF, 0x80, 0x9B, 0x46, 0x55, 0x81, 0x15, 0x10, 0x03, 0x11, 0x80, 0x00, 0x12, 0x55, 0x80,
|
||||
0x54, 0x07, 0x55, 0x82, 0xA8, 0xFD, 0xEF, 0x0E, 0xFF, 0x80, 0x8B, 0x46, 0x55, 0x81, 0x15, 0x10,
|
||||
0x03, 0x55, 0x80, 0x11, 0x10, 0x55, 0x85, 0x54, 0x25, 0x11, 0x21, 0x55, 0x24, 0x02, 0x11, 0x84,
|
||||
0x01, 0x10, 0x94, 0xDA, 0xEF, 0x0E, 0xFF, 0x80, 0x8B, 0x46, 0x55, 0x81, 0x15, 0x52, 0x03, 0x55,
|
||||
0x80, 0x15, 0x05, 0x55, 0x84, 0x24, 0x22, 0x11, 0x21, 0x12, 0x07, 0x11, 0x80, 0x01, 0x05, 0x11,
|
||||
0x02, 0x01, 0x83, 0x10, 0x22, 0xA8, 0xED, 0x0E, 0xFF, 0x80, 0x8B, 0x4D, 0x55, 0x82, 0x44, 0x24,
|
||||
0x22, 0x07, 0x11, 0x81, 0x22, 0x12, 0x03, 0x22, 0x82, 0x27, 0x22, 0x88, 0x02, 0x77, 0x88, 0x78,
|
||||
0x88, 0x79, 0x28, 0x00, 0x20, 0x87, 0xCA, 0xFE, 0x0D, 0xFF, 0x80, 0x8B, 0x48, 0x55, 0x81, 0x45,
|
||||
0x22, 0x06, 0x11, 0x80, 0x82, 0x02, 0x88, 0x85, 0x99, 0x89, 0x98, 0x99, 0x9A, 0x99, 0x03, 0xA9,
|
||||
0x03, 0xAA, 0x80, 0x9A, 0x02, 0xAA, 0x87, 0x9A, 0xAA, 0x7A, 0x00, 0x10, 0x52, 0xA8, 0xEC, 0x04,
|
||||
0xEE, 0x09, 0xFF, 0x80, 0x9B, 0x46, 0x55, 0x80, 0x25, 0x04, 0x11, 0x92, 0x21, 0x72, 0x87, 0x88,
|
||||
0x98, 0xAA, 0x99, 0xBA, 0xBC, 0xAB, 0xCB, 0xBC, 0xBB, 0xAB, 0xB9, 0xCA, 0xCB, 0xDC, 0xDD, 0x02,
|
||||
0xBC, 0x8B, 0x9B, 0xEB, 0xBD, 0xCC, 0x8B, 0x01, 0x52, 0x55, 0x85, 0xA9, 0xAA, 0xBA, 0x04, 0xBB,
|
||||
0x03, 0xCC, 0x80, 0xDC, 0x03, 0xDD, 0x80, 0x9B, 0x46, 0x55, 0x85, 0x02, 0x20, 0x88, 0x98, 0x99,
|
||||
0xA9, 0x02, 0xAA, 0x02, 0xBA, 0x96, 0xCB, 0xBB, 0xAA, 0xDD, 0xCE, 0xFE, 0xBE, 0xCA, 0xCB, 0xBB,
|
||||
0xDB, 0xCC, 0xBC, 0xCC, 0x9B, 0xBA, 0x9C, 0xCA, 0xDD, 0xDC, 0x9B, 0x01, 0x52, 0x02, 0x55, 0x80,
|
||||
0x87, 0x04, 0x88, 0x06, 0x99, 0x03, 0xAA, 0x80, 0x8A, 0x46, 0x55, 0x83, 0x02, 0x91, 0x9A, 0xBA,
|
||||
0x02, 0xBC, 0x94, 0xAB, 0xCA, 0xDC, 0xDB, 0xDE, 0xDB, 0xDD, 0xCD, 0xFE, 0xEF, 0xBD, 0xAA, 0xBA,
|
||||
0xAC, 0xCA, 0xCC, 0xBC, 0xBD, 0x9B, 0xA8, 0xCC, 0x02, 0xDC, 0x83, 0xCD, 0x9B, 0x01, 0x21, 0x0C,
|
||||
0x55, 0x84, 0x76, 0x77, 0x87, 0x88, 0x78, 0x46, 0x55, 0xA0, 0x01, 0x92, 0xBB, 0xBC, 0xDD, 0xAC,
|
||||
0xBB, 0xEC, 0xCD, 0xEC, 0xFF, 0xFD, 0xEF, 0xBC, 0xED, 0xDE, 0xAD, 0x88, 0x98, 0xCA, 0xEC, 0xDE,
|
||||
0xAB, 0xDC, 0x8B, 0x97, 0xDA, 0xDD, 0xCC, 0xDD, 0x9B, 0x17, 0x10, 0x56, 0x55, 0xA1, 0x15, 0x10,
|
||||
0x97, 0xC9, 0xEC, 0xFE, 0xCE, 0xBC, 0xDC, 0xBD, 0xDA, 0xEF, 0xEC, 0xCD, 0xAB, 0xCC, 0xCD, 0xBE,
|
||||
0xA9, 0xAA, 0xB9, 0xFE, 0xFF, 0xBD, 0xCC, 0xAC, 0x99, 0xBB, 0xDB, 0xDC, 0xDD, 0xBC, 0x18, 0x20,
|
||||
0x56, 0x55, 0x8D, 0x15, 0x20, 0x89, 0xC9, 0xED, 0xEC, 0xEF, 0x9B, 0xBB, 0xBC, 0xEB, 0xEE, 0xDD,
|
||||
0xBB, 0x02, 0xAB, 0x86, 0xAC, 0xCC, 0xCB, 0xDD, 0xDB, 0xDE, 0xFF, 0x02, 0xDE, 0x88, 0xCE, 0xCB,
|
||||
0xCD, 0xCA, 0xCB, 0xDB, 0xCE, 0x29, 0x20, 0x56, 0x55, 0x93, 0x01, 0x71, 0x9A, 0xDA, 0xED, 0xDD,
|
||||
0xFF, 0xBD, 0xCC, 0xDE, 0xEE, 0xDC, 0xDE, 0xCB, 0xCC, 0xCB, 0xBD, 0xBC, 0xCB, 0xBC, 0x02, 0xBB,
|
||||
0x80, 0xCB, 0x02, 0xBB, 0x88, 0xAA, 0xBA, 0xDC, 0xBB, 0xB9, 0xCA, 0xDE, 0x2A, 0x10, 0x55, 0x55,
|
||||
0x8A, 0x15, 0x00, 0x81, 0xAB, 0xDC, 0xEE, 0xDD, 0xEC, 0xDD, 0xCC, 0xBD, 0x02, 0xBB, 0x86, 0xAB,
|
||||
0xA9, 0xCA, 0xED, 0xBD, 0xCD, 0xAC, 0x02, 0x89, 0x02, 0x99, 0x03, 0x88, 0x87, 0x87, 0xC9, 0xEE,
|
||||
0xDC, 0xCB, 0xDC, 0x7A, 0x00, 0x55, 0x55, 0x83, 0x12, 0x00, 0x82, 0x9A, 0x02, 0xAA, 0x82, 0x9A,
|
||||
0xA9, 0xAA, 0x02, 0x99, 0x03, 0x88, 0x86, 0xA8, 0xCB, 0xFD, 0xDE, 0xEE, 0x8B, 0x12, 0x06, 0x11,
|
||||
0x88, 0x10, 0xA7, 0xEC, 0xDC, 0xDD, 0xCC, 0x8B, 0x01, 0x51, 0x55, 0x55, 0x88, 0x01, 0x20, 0x22,
|
||||
0x27, 0x22, 0x12, 0x21, 0x11, 0x12, 0x04, 0x11, 0x86, 0x92, 0xAA, 0xDB, 0xFF, 0xEF, 0x7A, 0x00,
|
||||
0x03, 0x11, 0x80, 0x21, 0x02, 0x22, 0x88, 0x00, 0x91, 0xCA, 0xCB, 0xED, 0xEE, 0x9C, 0x01, 0x20,
|
||||
0x55, 0x55, 0x80, 0x12, 0x03, 0x00, 0x80, 0x10, 0x04, 0x11, 0x8A, 0x21, 0x24, 0x12, 0x00, 0x92,
|
||||
0x99, 0xB9, 0xDE, 0xCE, 0x2A, 0x10, 0x06, 0x44, 0x83, 0x01, 0x81, 0xDA, 0xCC, 0x02, 0xDE, 0x82,
|
||||
0x9C, 0x02, 0x51, 0x56, 0x55, 0x83, 0x12, 0x10, 0x22, 0x41, 0x06, 0x55, 0x82, 0x14, 0x00, 0xA2,
|
||||
0x02, 0xBB, 0x86, 0xBC, 0xAD, 0x18, 0x10, 0x42, 0x54, 0x56, 0x02, 0x55, 0x84, 0x24, 0x01, 0x20,
|
||||
0xDA, 0xDE, 0x02, 0xEF, 0x82, 0xAD, 0x02, 0x51, 0x60, 0x55, 0x89, 0x25, 0x00, 0xA2, 0xEC, 0xCD,
|
||||
0xAC, 0xBC, 0x18, 0x10, 0x54, 0x04, 0x55, 0x89, 0x44, 0x12, 0x10, 0xC9, 0xDE, 0xBD, 0xDD, 0xAC,
|
||||
0x02, 0x50, 0x60, 0x55, 0x89, 0x15, 0x10, 0xB8, 0xCB, 0xBC, 0xAC, 0xAA, 0x08, 0x10, 0x64, 0x04,
|
||||
0x55, 0x8A, 0x45, 0x14, 0x20, 0xC9, 0xBE, 0x9A, 0xDB, 0x9B, 0x02, 0x10, 0x54, 0x5F, 0x55, 0x89,
|
||||
0x01, 0x71, 0xCA, 0xCB, 0xDC, 0xBD, 0xAB, 0x07, 0x10, 0x54, 0x05, 0x55, 0x88, 0x14, 0x10, 0xB9,
|
||||
0xCD, 0xAA, 0xCB, 0xAA, 0x07, 0x20, 0x5E, 0x55, 0x8B, 0x25, 0x11, 0x21, 0x98, 0xDC, 0xBB, 0xCC,
|
||||
0xBC, 0xAB, 0x07, 0x10, 0x54, 0x05, 0x55, 0x83, 0x14, 0x10, 0xA7, 0xEE, 0x02, 0xCC, 0x82, 0xA9,
|
||||
0x07, 0x20, 0x5D, 0x55, 0x8C, 0x14, 0x11, 0x71, 0x98, 0xBB, 0xCD, 0xBA, 0xAA, 0xBC, 0xAC, 0x02,
|
||||
0x20, 0x44, 0x05, 0x55, 0x88, 0x24, 0x10, 0xB8, 0xFF, 0xCF, 0xCA, 0xBB, 0x19, 0x10, 0x5B, 0x55,
|
||||
0x80, 0x12, 0x02, 0x11, 0x8A, 0x82, 0xA9, 0xCB, 0xEE, 0xDF, 0xCB, 0xCA, 0xBD, 0x9C, 0x02, 0x41,
|
||||
0x06, 0x55, 0x88, 0x24, 0x10, 0xB8, 0xFE, 0xEF, 0xDC, 0xCC, 0x29, 0x00, 0x5A, 0x55, 0x8E, 0x12,
|
||||
0x11, 0x72, 0x98, 0xBA, 0xDB, 0xBB, 0xED, 0xCE, 0xCA, 0xCB, 0xAC, 0x9B, 0x02, 0x41, 0x02, 0x55,
|
||||
0x81, 0x45, 0x54, 0x02, 0x55, 0x89, 0x24, 0x10, 0xA8, 0xDB, 0xFF, 0xCD, 0xCC, 0x7A, 0x01, 0x51,
|
||||
0x57, 0x55, 0x90, 0x15, 0x10, 0x11, 0x82, 0xAA, 0xBB, 0xBC, 0xDA, 0xDD, 0xCC, 0xEE, 0xCC, 0xBA,
|
||||
0xCD, 0x9C, 0x02, 0x20, 0x04, 0x44, 0x8B, 0x45, 0x54, 0x24, 0x10, 0x98, 0xC9, 0xEE, 0xAB, 0xCC,
|
||||
0x9C, 0x02, 0x50, 0x55, 0x55, 0x80, 0x15, 0x02, 0x11, 0x83, 0x72, 0x98, 0xBA, 0xBC, 0x02, 0xCC,
|
||||
0x99, 0xEC, 0xCD, 0xEE, 0xDF, 0xCD, 0xAA, 0xCC, 0x9B, 0x18, 0x00, 0x21, 0x22, 0x11, 0x44, 0x24,
|
||||
0x22, 0x12, 0x10, 0xA8, 0xBB, 0xED, 0xAC, 0xEC, 0x9B, 0x01, 0x20, 0x54, 0x55, 0xA3, 0x45, 0x01,
|
||||
0x21, 0x97, 0xAA, 0xAB, 0xC9, 0xDE, 0xCE, 0xED, 0xDD, 0xBB, 0xFD, 0xBD, 0xED, 0xCC, 0xAB, 0xBC,
|
||||
0x8A, 0x12, 0x11, 0x00, 0x10, 0x22, 0x01, 0x00, 0x01, 0x71, 0xC9, 0xDB, 0xFE, 0xCE, 0xFE, 0x9C,
|
||||
0x01, 0x41, 0x53, 0x55, 0x9C, 0x12, 0x11, 0x21, 0x97, 0xCA, 0xDD, 0xBD, 0xDB, 0xEE, 0xAC, 0xDB,
|
||||
0xED, 0xCC, 0xFE, 0xEF, 0xFE, 0xEE, 0xBC, 0xED, 0xBD, 0x9A, 0x78, 0x01, 0x10, 0x11, 0x10, 0x11,
|
||||
0x72, 0xA8, 0x02, 0xDB, 0x85, 0xFF, 0xEF, 0xEE, 0xAC, 0x02, 0x50, 0x51, 0x55, 0x93, 0x25, 0x11,
|
||||
0x21, 0x87, 0xA9, 0xCA, 0xEE, 0xBD, 0xBC, 0xDB, 0xFF, 0xBD, 0xEC, 0xCE, 0xAA, 0xEC, 0xFF, 0xEF,
|
||||
0xEC, 0xDE, 0x02, 0xFF, 0x82, 0xCE, 0xAB, 0x79, 0x02, 0x88, 0x8B, 0x87, 0x98, 0xAA, 0xCA, 0xCB,
|
||||
0xDC, 0xEE, 0xDE, 0xDB, 0xAB, 0x18, 0x20, 0x51, 0x55, 0x90, 0x05, 0x20, 0x98, 0xBA, 0xEC, 0xEF,
|
||||
0xDD, 0xDE, 0xCE, 0xEC, 0xFF, 0xDF, 0xFE, 0xDF, 0xBB, 0xCC, 0xDD, 0x02, 0xFE, 0x85, 0xEE, 0xFF,
|
||||
0xEF, 0xEC, 0xBD, 0xAB, 0x02, 0xAA, 0x8B, 0xBA, 0xAB, 0xCA, 0xDC, 0xCB, 0xDC, 0xCD, 0xDD, 0xEC,
|
||||
0xBD, 0x08, 0x20, 0x51, 0x55, 0x89, 0x01, 0x81, 0xCA, 0xCD, 0xFD, 0xEF, 0xDC, 0xFF, 0xAC, 0xDA,
|
||||
0x02, 0xFF, 0x81, 0xCE, 0xCD, 0x03, 0xAA, 0x95, 0xDB, 0xEF, 0xCC, 0xDD, 0xCE, 0xCA, 0xDC, 0xBD,
|
||||
0xBA, 0xEC, 0xEE, 0xBD, 0xDC, 0xDD, 0xBB, 0xDD, 0xCD, 0xEC, 0xED, 0xAD, 0x07, 0x20, 0x51, 0x55,
|
||||
0x94, 0x01, 0x92, 0xDC, 0xDD, 0xFE, 0xDF, 0xDB, 0xED, 0xAC, 0xFC, 0xFF, 0xCD, 0x9B, 0xAA, 0x78,
|
||||
0x27, 0x82, 0xA9, 0xEC, 0xDE, 0xAC, 0x02, 0xCC, 0x8A, 0xBA, 0xBC, 0xDC, 0xFE, 0xEF, 0xAC, 0xBC,
|
||||
0xCA, 0xBA, 0xBD, 0xBC, 0x02, 0xDB, 0x82, 0x9B, 0x02, 0x40, 0x50, 0x55, 0xA7, 0x15, 0x10, 0xB8,
|
||||
0xEE, 0xDC, 0xEE, 0xCE, 0xCC, 0xCA, 0xBC, 0xED, 0xAC, 0x9A, 0x78, 0x27, 0x11, 0x01, 0x10, 0x71,
|
||||
0xB9, 0xDE, 0x9A, 0xDC, 0xDE, 0x9B, 0xBB, 0xED, 0xFD, 0xEF, 0xAC, 0xBA, 0xCA, 0xDD, 0xBD, 0xCD,
|
||||
0xCB, 0xCA, 0x9B, 0x02, 0x20, 0x50, 0x55, 0x88, 0x15, 0x10, 0xB9, 0xEE, 0xDC, 0xFE, 0xAD, 0xDB,
|
||||
0xBC, 0x02, 0xAA, 0x9C, 0x89, 0x12, 0x11, 0x01, 0x10, 0x55, 0x01, 0x10, 0x92, 0xCA, 0xBB, 0xCC,
|
||||
0xDB, 0xCD, 0xBC, 0xED, 0xEE, 0xDD, 0xAD, 0xBB, 0xA9, 0xCD, 0xEE, 0xEF, 0xEC, 0xBC, 0x29, 0x00,
|
||||
0x21, 0x50, 0x55, 0x8A, 0x05, 0x20, 0xDA, 0xFF, 0xFE, 0xDE, 0xBC, 0xAA, 0x9A, 0x78, 0x27, 0x02,
|
||||
0x11, 0x81, 0x42, 0x25, 0x02, 0x55, 0x95, 0x45, 0x01, 0x20, 0x98, 0xAA, 0xBB, 0xB9, 0xEE, 0xCD,
|
||||
0xEE, 0xED, 0xBC, 0xAC, 0xCA, 0xDB, 0xCD, 0xFE, 0xEF, 0xCC, 0x8A, 0x02, 0x10, 0x51, 0x55, 0x8B,
|
||||
0x04, 0x20, 0xBA, 0xDD, 0xBC, 0x9A, 0x99, 0x77, 0x12, 0x01, 0x11, 0x21, 0x06, 0x55, 0x94, 0x25,
|
||||
0x00, 0x11, 0x87, 0x98, 0xA9, 0xBB, 0xCB, 0xCE, 0xDB, 0xDD, 0xCE, 0xED, 0xDC, 0xBC, 0xAB, 0xAA,
|
||||
0x9A, 0x18, 0x00, 0x51, 0x4F, 0x55, 0x89, 0x45, 0x12, 0x01, 0x20, 0xA9, 0x9A, 0x89, 0x12, 0x11,
|
||||
0x01, 0x02, 0x00, 0x80, 0x52, 0x08, 0x55, 0x92, 0x25, 0x01, 0x10, 0x21, 0x72, 0x98, 0x99, 0xAA,
|
||||
0xA9, 0xAA, 0xAB, 0xAA, 0xA9, 0x99, 0x78, 0x77, 0x12, 0x01, 0x20, 0x50, 0x55, 0x8A, 0x25, 0x11,
|
||||
0x00, 0x10, 0x87, 0x27, 0x11, 0x10, 0x21, 0x12, 0x52, 0x0B, 0x55, 0x80, 0x01, 0x02, 0x00, 0x03,
|
||||
0x11, 0x02, 0x22, 0x86, 0x72, 0x77, 0x72, 0x77, 0x12, 0x01, 0x10, 0x02, 0x11, 0x80, 0x52, 0x52,
|
||||
0x55, 0x85, 0x11, 0x01, 0x11, 0x10, 0x11, 0x51, 0x10, 0x55, 0x84, 0x11, 0x55, 0x12, 0x01, 0x10,
|
||||
0x02, 0x00, 0x03, 0x11, 0x82, 0x10, 0x00, 0x40, 0x56, 0x55, 0x82, 0x45, 0x01, 0x51, 0x15, 0x55,
|
||||
0x84, 0x45, 0x22, 0x00, 0x11, 0x42, 0x04, 0x55, 0x80, 0x52, 0x6F, 0x55, 0x81, 0x25, 0x52, 0x64,
|
||||
0x55, 0x80, 0x11, 0x72, 0x55, 0x87, 0x25, 0x11, 0x54, 0x25, 0x22, 0x00, 0x21, 0x22, 0x02, 0x55,
|
||||
0x83, 0x12, 0x21, 0x11, 0x52, 0x69, 0x55, 0x80, 0x15, 0x03, 0x00, 0x80, 0x10, 0x07, 0x00, 0x80,
|
||||
0x10, 0x03, 0x00, 0x82, 0x11, 0x55, 0x25, 0x04, 0x55, 0x81, 0x25, 0x52, 0x5F, 0x55, 0x84, 0x01,
|
||||
0x21, 0x72, 0x22, 0x72, 0x04, 0x22, 0x80, 0x12, 0x04, 0x11, 0x80, 0x00, 0x03, 0x11, 0x88, 0x00,
|
||||
0x10, 0x11, 0x01, 0x11, 0x01, 0x00, 0x11, 0x54, 0x5C, 0x55, 0x85, 0x14, 0x10, 0x98, 0xAA, 0x9A,
|
||||
0xA9, 0x02, 0xAA, 0x83, 0x99, 0xA9, 0x9A, 0x89, 0x02, 0x99, 0x81, 0x89, 0x77, 0x02, 0x88, 0x85,
|
||||
0x27, 0x22, 0x12, 0x11, 0x21, 0x12, 0x07, 0x11, 0x80, 0x01, 0x02, 0x21, 0x55, 0x55, 0x92, 0x25,
|
||||
0x01, 0x70, 0xB9, 0xED, 0xCE, 0xDB, 0xCC, 0xDE, 0xCC, 0xBA, 0xCD, 0xBB, 0xBA, 0xCC, 0xAC, 0xAA,
|
||||
0xBB, 0xAB, 0x02, 0xAA, 0x84, 0x9A, 0x99, 0xA9, 0x99, 0x89, 0x02, 0x88, 0x83, 0x27, 0x11, 0x22,
|
||||
0x12, 0x04, 0x11, 0x81, 0x01, 0x10, 0x03, 0x11, 0x80, 0x54, 0x4F, 0x55, 0x94, 0x01, 0x81, 0xB9,
|
||||
0xFE, 0xBD, 0xDB, 0xDC, 0xEE, 0xDE, 0xCB, 0xCD, 0xBD, 0xCB, 0xBC, 0x9B, 0xC9, 0xDB, 0xBD, 0xCA,
|
||||
0xCB, 0xCD, 0x02, 0xCC, 0x8E, 0xBA, 0xBC, 0xBA, 0xBB, 0xAA, 0x99, 0xA9, 0x9A, 0x89, 0x78, 0x87,
|
||||
0x77, 0x22, 0x72, 0x22, 0x04, 0x11, 0x4D, 0x55, 0x85, 0x25, 0x00, 0x81, 0xDA, 0xFE, 0xCE, 0x02,
|
||||
0xCB, 0x99, 0xBB, 0xBC, 0xCA, 0xCD, 0xBD, 0xCA, 0xCC, 0xAC, 0xBB, 0xB9, 0xDE, 0xCC, 0xBA, 0xFD,
|
||||
0xCE, 0xCA, 0xBA, 0xAC, 0xB9, 0xBB, 0xAC, 0xB9, 0xAA, 0xCC, 0xBC, 0xAB, 0x05, 0xAA, 0x85, 0x89,
|
||||
0x88, 0x28, 0x01, 0x21, 0x22, 0x4B, 0x55, 0x82, 0x15, 0x00, 0x81, 0x02, 0xDB, 0xA2, 0xEE, 0xCD,
|
||||
0xCC, 0x9A, 0xBB, 0xEB, 0xCE, 0xDE, 0xDD, 0xEE, 0xAB, 0xCB, 0xEC, 0xED, 0xEF, 0xDC, 0xFF, 0xCE,
|
||||
0xCA, 0xAB, 0xBC, 0xCA, 0xAB, 0xCC, 0xDB, 0xCC, 0xCE, 0xED, 0xBB, 0xCD, 0xCB, 0xBA, 0xFD, 0xDF,
|
||||
0xAA, 0x02, 0x9A, 0x82, 0x17, 0x00, 0x10, 0x4B, 0x55, 0x83, 0x01, 0x00, 0x81, 0xEB, 0x02, 0xED,
|
||||
0x8D, 0xEF, 0xEE, 0xBC, 0xAC, 0xDB, 0xEF, 0xCD, 0xBC, 0xCD, 0x89, 0xA8, 0xDC, 0xCE, 0xFE, 0x02,
|
||||
0xFF, 0x87, 0xCE, 0xCB, 0xAC, 0xCC, 0xDC, 0xCD, 0xDE, 0xDB, 0x02, 0xCD, 0x87, 0xDC, 0xBC, 0xCC,
|
||||
0xCD, 0xA9, 0xEB, 0xCE, 0x99, 0x02, 0xCC, 0x82, 0x29, 0x00, 0x51, 0x4A, 0x55, 0x80, 0x14, 0x02,
|
||||
0x00, 0xA5, 0xA7, 0xFD, 0xEF, 0xEE, 0xCE, 0xFE, 0xEF, 0xAC, 0xDB, 0xED, 0xAC, 0xCC, 0xEE, 0xAB,
|
||||
0xCA, 0xDC, 0xCE, 0xFE, 0xFF, 0xEF, 0xDE, 0xDB, 0xAC, 0xEC, 0xFE, 0xFF, 0xEF, 0xDC, 0xBD, 0xAB,
|
||||
0xCB, 0x9A, 0xCA, 0xDE, 0x9B, 0xC9, 0xEE, 0xBC, 0x02, 0xDC, 0x82, 0x7A, 0x01, 0x51, 0x4B, 0x55,
|
||||
0x86, 0x01, 0x20, 0xB9, 0xEF, 0xEE, 0xED, 0xDE, 0x02, 0xFF, 0x02, 0xBC, 0x8A, 0xDB, 0xAB, 0xEC,
|
||||
0xEE, 0xCD, 0xDD, 0xCB, 0xAC, 0xCC, 0xEC, 0xCD, 0x02, 0xED, 0x94, 0xCE, 0xDD, 0xCB, 0xFE, 0xFF,
|
||||
0xDD, 0xAC, 0x9A, 0xBA, 0xBC, 0xDB, 0xBC, 0xBD, 0xEC, 0xCD, 0xEE, 0xDE, 0xCB, 0x8B, 0x01, 0x20,
|
||||
0x4A, 0x55, 0x87, 0x45, 0x01, 0x70, 0xB9, 0xCB, 0xFE, 0xFF, 0xEE, 0x02, 0xFF, 0x88, 0xEE, 0xDE,
|
||||
0xED, 0xCE, 0xEE, 0xCC, 0xDE, 0xDD, 0xCB, 0x02, 0xAB, 0x81, 0xCA, 0xAB, 0x02, 0xEC, 0x83, 0xDE,
|
||||
0xBD, 0x99, 0xFC, 0x02, 0xFF, 0x85, 0xBD, 0xBB, 0xDC, 0xDE, 0xDD, 0xAB, 0x02, 0xEC, 0x86, 0xDE,
|
||||
0xCD, 0xED, 0xCC, 0xAC, 0x02, 0x10, 0x4B, 0x55, 0x87, 0x01, 0x10, 0x87, 0x98, 0xAA, 0xBA, 0xCC,
|
||||
0xBC, 0x02, 0xBB, 0x81, 0xBC, 0xED, 0x02, 0xEF, 0x84, 0xCB, 0xDD, 0xEE, 0xDC, 0xCC, 0x02, 0xDD,
|
||||
0x98, 0xAB, 0xCD, 0xBA, 0xCD, 0xDD, 0xCB, 0xEE, 0xED, 0xFF, 0xCE, 0xDB, 0xDC, 0xDF, 0xDC, 0xAB,
|
||||
0xBB, 0xCA, 0xBD, 0xED, 0xFE, 0xBD, 0xBC, 0x18, 0x00, 0x54, 0x4A, 0x55, 0x9C, 0x25, 0x00, 0x10,
|
||||
0x11, 0x72, 0x87, 0x99, 0x89, 0x88, 0x98, 0x99, 0xB9, 0xDD, 0xDE, 0xDD, 0xCC, 0xBD, 0xCA, 0xBB,
|
||||
0xFD, 0xEF, 0xAB, 0xDC, 0xDB, 0xCD, 0xED, 0xCC, 0xBD, 0xBA, 0x03, 0xCC, 0x02, 0xDD, 0x84, 0xBB,
|
||||
0xCB, 0xDE, 0xBB, 0xCB, 0x02, 0xDC, 0x84, 0xDE, 0xCE, 0x29, 0x00, 0x51, 0x4B, 0x55, 0x02, 0x00,
|
||||
0x81, 0x01, 0x00, 0x03, 0x11, 0x91, 0x01, 0x10, 0x11, 0x82, 0xBA, 0xCD, 0xEE, 0xAB, 0xAC, 0xB9,
|
||||
0xCC, 0xFE, 0xFF, 0xCD, 0xEE, 0xEC, 0xBD, 0xCD, 0x02, 0x99, 0x80, 0x88, 0x03, 0x99, 0x02, 0xAA,
|
||||
0x84, 0x99, 0xA9, 0xAA, 0x9A, 0xA9, 0x02, 0xAA, 0x84, 0xCC, 0xBB, 0x79, 0x00, 0x50, 0x4A, 0x55,
|
||||
0x88, 0x45, 0x11, 0x52, 0x55, 0x22, 0x01, 0x00, 0x11, 0x01, 0x02, 0x00, 0x89, 0x10, 0x82, 0xBA,
|
||||
0xED, 0xBC, 0xCD, 0xCA, 0xBB, 0xFD, 0xFF, 0x02, 0xEF, 0x80, 0xEE, 0x02, 0xAB, 0x80, 0x17, 0x05,
|
||||
0x11, 0x87, 0x22, 0x72, 0x12, 0x72, 0x77, 0x88, 0x78, 0x72, 0x02, 0x99, 0x83, 0x98, 0x28, 0x00,
|
||||
0x51, 0x50, 0x55, 0x82, 0x54, 0x55, 0x12, 0x02, 0x11, 0x90, 0x00, 0x10, 0x87, 0xB9, 0xCA, 0xDE,
|
||||
0xDC, 0xCB, 0xFE, 0xFF, 0xDE, 0xEE, 0xFE, 0xCE, 0xAB, 0x28, 0x01, 0x03, 0x00, 0x82, 0x11, 0x00,
|
||||
0x11, 0x03, 0x00, 0x82, 0x11, 0x01, 0x10, 0x03, 0x11, 0x82, 0x01, 0x00, 0x52, 0x55, 0x55, 0x9B,
|
||||
0x12, 0x00, 0x10, 0x92, 0xEB, 0xAC, 0xDC, 0xCC, 0xEE, 0xED, 0xCD, 0xEE, 0xDD, 0xEE, 0xCC, 0x9B,
|
||||
0x79, 0x01, 0x00, 0x11, 0x55, 0x54, 0x55, 0x24, 0x12, 0x10, 0x21, 0x12, 0x06, 0x11, 0x57, 0x55,
|
||||
0x94, 0x01, 0x00, 0x92, 0xEB, 0xCE, 0xED, 0xAB, 0xDD, 0xCB, 0xBC, 0xED, 0xAC, 0xCC, 0xCA, 0xBD,
|
||||
0xAB, 0x28, 0x12, 0x00, 0x11, 0x51, 0x02, 0x55, 0x81, 0x25, 0x54, 0x5E, 0x55, 0x96, 0x11, 0x10,
|
||||
0x21, 0xB9, 0xED, 0xCE, 0xED, 0xDD, 0xEE, 0xCC, 0xBD, 0xDC, 0x9B, 0xDB, 0xCB, 0xCD, 0xDC, 0xAB,
|
||||
0x89, 0x12, 0x00, 0x10, 0x54, 0x5F, 0x55, 0x86, 0x25, 0x01, 0x10, 0x82, 0xA9, 0xCB, 0xCA, 0x02,
|
||||
0xEE, 0x93, 0xBC, 0xDD, 0xCB, 0xBD, 0xDB, 0xBC, 0xED, 0xCC, 0xEE, 0xFE, 0xCD, 0xBC, 0x8A, 0x12,
|
||||
0x11, 0x10, 0x21, 0x55, 0x15, 0x54, 0x5A, 0x55, 0x9D, 0x15, 0x01, 0x11, 0x82, 0xA9, 0xBA, 0xBD,
|
||||
0xCA, 0xEE, 0xDC, 0xAB, 0xEC, 0xED, 0xAD, 0xB9, 0xBC, 0xEC, 0xBC, 0xCD, 0xDB, 0xEF, 0xDF, 0xBB,
|
||||
0x9A, 0x78, 0x12, 0x00, 0x10, 0x01, 0x41, 0x59, 0x55, 0x9B, 0x12, 0x10, 0x11, 0x97, 0xA9, 0xBC,
|
||||
0xBA, 0xBD, 0xEB, 0xDE, 0xDB, 0xAC, 0xCB, 0xDC, 0xBE, 0xCA, 0x8A, 0xDA, 0xBD, 0xAC, 0xB9, 0xCD,
|
||||
0xDD, 0xCB, 0xCD, 0xAB, 0x79, 0x11, 0x02, 0x00, 0x80, 0x10, 0x57, 0x55, 0xA1, 0x25, 0x11, 0x10,
|
||||
0x71, 0x98, 0xBA, 0xAA, 0xCD, 0xEC, 0xBD, 0xEC, 0xCC, 0xED, 0xBD, 0xCC, 0xBA, 0xCD, 0xDB, 0xBC,
|
||||
0xDC, 0x9B, 0xCB, 0xDB, 0xAC, 0xDA, 0xCC, 0xCD, 0xCB, 0xAC, 0x89, 0x27, 0x01, 0x00, 0x51, 0x55,
|
||||
0x55, 0x87, 0x14, 0x00, 0x21, 0x87, 0xA9, 0xCB, 0xEE, 0xBC, 0x02, 0xED, 0x8B, 0xDE, 0xFD, 0xDD,
|
||||
0xDF, 0xAA, 0xCC, 0xCB, 0xCE, 0xDB, 0xDE, 0xEE, 0x9B, 0x02, 0xDB, 0x8A, 0xCE, 0xED, 0xBC, 0xEC,
|
||||
0xED, 0xCF, 0xAA, 0x9A, 0x28, 0x01, 0x10, 0x53, 0x55, 0x8F, 0x25, 0x11, 0x00, 0x10, 0x97, 0xBA,
|
||||
0xEC, 0xFF, 0xEF, 0xCC, 0xDE, 0xEC, 0xAC, 0xEB, 0xFF, 0xEF, 0x02, 0xBC, 0x94, 0xBA, 0xAB, 0xCA,
|
||||
0xCD, 0xEE, 0xAB, 0xBB, 0xB9, 0xEE, 0xDE, 0xCB, 0xFE, 0xFF, 0xEF, 0xDD, 0xCE, 0x9A, 0x28, 0x01,
|
||||
0x11, 0x54, 0x51, 0x55, 0x86, 0x02, 0x00, 0x10, 0x87, 0xCA, 0xDE, 0xFD, 0x02, 0xEF, 0x86, 0xCB,
|
||||
0xCE, 0xEC, 0xBC, 0xEC, 0xFE, 0xDF, 0x02, 0xAB, 0x8B, 0x99, 0x78, 0x97, 0xBA, 0xDC, 0x9B, 0xCB,
|
||||
0xCA, 0xFF, 0xEF, 0xCC, 0xEC, 0x03, 0xFF, 0x86, 0xEF, 0xCC, 0x9B, 0x12, 0x11, 0x10, 0x21, 0x4F,
|
||||
0x55, 0x87, 0x12, 0x00, 0x71, 0x88, 0xBA, 0xEC, 0xEF, 0xFF, 0x02, 0xCD, 0x94, 0xCA, 0xAC, 0xDA,
|
||||
0xDE, 0xCD, 0xDB, 0xBD, 0x9A, 0x88, 0x12, 0x01, 0x10, 0x82, 0xA9, 0xBA, 0xEC, 0xDC, 0xFF, 0xEF,
|
||||
0x9B, 0xDA, 0x04, 0xFF, 0x87, 0xFE, 0xAD, 0x87, 0x89, 0x12, 0x00, 0x10, 0x41, 0x4C, 0x55, 0x84,
|
||||
0x12, 0x00, 0x21, 0xA8, 0xBB, 0x02, 0xDD, 0x8C, 0xCB, 0xEE, 0xAB, 0xDC, 0xEC, 0xBD, 0xEC, 0xCE,
|
||||
0xAB, 0xAA, 0x89, 0x17, 0x11, 0x03, 0x00, 0x82, 0x10, 0x21, 0x87, 0x02, 0xBA, 0x85, 0xDE, 0xED,
|
||||
0xBD, 0xDB, 0xDD, 0xFE, 0x02, 0xFF, 0x87, 0xCD, 0xBD, 0xA9, 0xAB, 0x89, 0x27, 0x01, 0x10, 0x4B,
|
||||
0x55, 0x93, 0x12, 0x00, 0x72, 0xA8, 0xDB, 0xFF, 0xEF, 0xBE, 0x99, 0xEC, 0xDD, 0xDE, 0xEC, 0xDE,
|
||||
0xEE, 0xAC, 0x99, 0x88, 0x12, 0x00, 0x02, 0x11, 0x8E, 0x52, 0x25, 0x12, 0x01, 0x11, 0x82, 0xA9,
|
||||
0xAB, 0xCA, 0xDE, 0xDC, 0xCE, 0xED, 0xFF, 0xEF, 0x02, 0xAB, 0x87, 0x98, 0xCB, 0xBC, 0x9A, 0x28,
|
||||
0x01, 0x11, 0x54, 0x48, 0x55, 0x94, 0x01, 0x10, 0x71, 0xA9, 0xDB, 0xFF, 0xEF, 0xCD, 0xCE, 0xBA,
|
||||
0xEE, 0xFE, 0xBE, 0xBA, 0xCD, 0xAB, 0x89, 0x27, 0x11, 0x00, 0x20, 0x05, 0x55, 0x95, 0x25, 0x00,
|
||||
0x10, 0x72, 0x98, 0xBA, 0xED, 0xCC, 0xBD, 0xEC, 0xFF, 0xEF, 0xAB, 0xAC, 0x87, 0xAB, 0xDB, 0xDF,
|
||||
0x9A, 0x78, 0x01, 0x10, 0x47, 0x55, 0x92, 0x12, 0x00, 0x82, 0xA9, 0xEC, 0xFF, 0xEF, 0xDF, 0xAA,
|
||||
0xCC, 0xCA, 0xFE, 0xFF, 0xCE, 0xCB, 0xAB, 0x78, 0x11, 0x00, 0x02, 0x11, 0x80, 0x51, 0x05, 0x55,
|
||||
0x81, 0x25, 0x01, 0x02, 0x00, 0x87, 0x21, 0x98, 0xBA, 0xED, 0xDE, 0xED, 0xFF, 0xEF, 0x02, 0xAC,
|
||||
0x89, 0x88, 0xCB, 0xEC, 0xEF, 0xCE, 0xAB, 0x28, 0x01, 0x00, 0x10, 0x44, 0x55, 0x84, 0x15, 0x00,
|
||||
0x71, 0xB9, 0xEC, 0x02, 0xFF, 0x84, 0xCE, 0xEE, 0xDD, 0xCE, 0xDB, 0x02, 0xFF, 0x85, 0xBD, 0x9A,
|
||||
0x79, 0x01, 0x00, 0x41, 0x09, 0x55, 0x81, 0x12, 0x11, 0x02, 0x00, 0x82, 0x11, 0x92, 0xAA, 0x02,
|
||||
0xCB, 0x8E, 0xDE, 0xDC, 0xCD, 0xBC, 0x99, 0xDB, 0xED, 0xDE, 0xFD, 0xDF, 0x9A, 0x28, 0x01, 0x00,
|
||||
0x51, 0x42, 0x55, 0x85, 0x25, 0x01, 0x10, 0xA8, 0xDC, 0xCB, 0x02, 0xFF, 0x8B, 0xCD, 0xFE, 0xFF,
|
||||
0xAD, 0xBA, 0xEE, 0xBC, 0x8A, 0x27, 0x11, 0x00, 0x11, 0x0D, 0x55, 0x94, 0x12, 0x00, 0x10, 0x72,
|
||||
0x98, 0xCA, 0xBD, 0xA9, 0xBD, 0xDB, 0x9B, 0xB9, 0xCA, 0xDE, 0xEC, 0xCE, 0xBA, 0xAA, 0x18, 0x00,
|
||||
0x51, 0x42, 0x55, 0x85, 0x15, 0x00, 0x20, 0xC9, 0xDE, 0xED, 0x02, 0xFF, 0x8A, 0xDD, 0xFE, 0xFF,
|
||||
0xBD, 0xBA, 0xAB, 0x89, 0x17, 0x00, 0x11, 0x52, 0x0F, 0x55, 0x93, 0x25, 0x01, 0x00, 0x21, 0xA8,
|
||||
0xBA, 0xCB, 0xDE, 0xED, 0x9C, 0xB9, 0xED, 0xDF, 0xCC, 0xEE, 0xED, 0xCE, 0x7A, 0x01, 0x10, 0x42,
|
||||
0x55, 0x90, 0x01, 0x00, 0x71, 0xDA, 0xBC, 0xFD, 0xFF, 0xDF, 0xCB, 0xDE, 0xDD, 0x9B, 0x99, 0x78,
|
||||
0x12, 0x00, 0x10, 0x13, 0x55, 0x92, 0x12, 0x00, 0x21, 0x87, 0xA9, 0xCB, 0xDC, 0xAC, 0xC9, 0xEF,
|
||||
0xDD, 0xAB, 0xEB, 0xCD, 0xBD, 0x89, 0x02, 0x00, 0x52, 0x41, 0x55, 0x8F, 0x01, 0x00, 0x92, 0xEC,
|
||||
0xCC, 0xEE, 0xED, 0xCE, 0xDB, 0xAC, 0xAA, 0x28, 0x12, 0x01, 0x00, 0x21, 0x15, 0x55, 0x80, 0x12,
|
||||
0x02, 0x11, 0x88, 0x72, 0x99, 0xB9, 0xCD, 0xEC, 0xBE, 0xDB, 0xCD, 0xDC, 0x02, 0xAB, 0x83, 0x98,
|
||||
0x18, 0x00, 0x51, 0x41, 0x55, 0x84, 0x01, 0x10, 0xA7, 0xDD, 0xCB, 0x02, 0xFE, 0x87, 0xAD, 0xA9,
|
||||
0x8A, 0x77, 0x01, 0x00, 0x11, 0x21, 0x18, 0x55, 0x89, 0x11, 0x10, 0x21, 0x98, 0xAA, 0xDB, 0xEE,
|
||||
0xED, 0xBE, 0xCA, 0x02, 0xCD, 0x83, 0xBA, 0x7A, 0x00, 0x10, 0x40, 0x55, 0x8D, 0x25, 0x00, 0x20,
|
||||
0xB9, 0xFF, 0xED, 0xDE, 0xBC, 0x9A, 0x89, 0x12, 0x01, 0x00, 0x10, 0x1B, 0x55, 0x88, 0x12, 0x00,
|
||||
0x11, 0x72, 0x98, 0xBB, 0xCC, 0xDD, 0xDB, 0x02, 0xFF, 0x83, 0xDE, 0x7A, 0x01, 0x10, 0x3F, 0x55,
|
||||
0x8C, 0x12, 0x11, 0x00, 0x20, 0xC9, 0xFF, 0xCE, 0xAA, 0x89, 0x27, 0x11, 0x00, 0x21, 0x1D, 0x55,
|
||||
0x80, 0x25, 0x02, 0x11, 0x8B, 0x00, 0x21, 0x88, 0x99, 0xBA, 0xCC, 0xFE, 0xEE, 0xDF, 0x29, 0x00,
|
||||
0x10, 0x3F, 0x55, 0x80, 0x15, 0x02, 0x00, 0x88, 0x20, 0xB9, 0xAB, 0x9A, 0x27, 0x11, 0x00, 0x11,
|
||||
0x52, 0x21, 0x55, 0x81, 0x12, 0x10, 0x02, 0x11, 0x88, 0x82, 0xA9, 0xCB, 0xCC, 0xCD, 0x79, 0x01,
|
||||
0x10, 0x52, 0x3F, 0x55, 0x88, 0x02, 0x00, 0x10, 0x88, 0x78, 0x12, 0x01, 0x10, 0x51, 0x24, 0x55,
|
||||
0x89, 0x45, 0x24, 0x01, 0x10, 0x71, 0x98, 0xAA, 0xCB, 0x9B, 0x17, 0x02, 0x00, 0x80, 0x21, 0x3E,
|
||||
0x55, 0x82, 0x25, 0x01, 0x00, 0x02, 0x11, 0x81, 0x10, 0x21, 0x29, 0x55, 0x86, 0x11, 0x00, 0x11,
|
||||
0x87, 0x98, 0xAA, 0x18, 0x02, 0x00, 0x80, 0x51, 0x3F, 0x55, 0x80, 0x25, 0x02, 0x11, 0x80, 0x22,
|
||||
0x2C, 0x55, 0x88, 0x12, 0x00, 0x10, 0x11, 0x72, 0x17, 0x00, 0x10, 0x54, 0x70, 0x55, 0x82, 0x25,
|
||||
0x22, 0x11, 0x04, 0x00, 0x80, 0x41, 0x73, 0x55, 0x81, 0x14, 0x01, 0x03, 0x00, 0x80, 0x51, 0x73,
|
||||
0x55, 0x80, 0x45, 0x02, 0x11, 0x82, 0x00, 0x10, 0x54, 0x75, 0x55, 0x82, 0x25, 0x11, 0x21, 0x78,
|
||||
0x55, 0x80, 0x52, 0x7F, 0x55, 0x7F, 0x55, 0x7F, 0x55, 0x7F, 0x55, 0x7F, 0x55, 0x7F, 0x55, 0x7F,
|
||||
0x55, 0x7F, 0x55, 0x7F, 0x55, 0x7F, 0x55, 0x7F, 0x55, 0x7F, 0x55, 0x3F, 0x55,
|
||||
};
|
||||
// clang-format on
|
||||
11
keyboards/zodiarkpi/images/ZodiarkPiLogoSTpink.qgf.h
Normal file
11
keyboards/zodiarkpi/images/ZodiarkPiLogoSTpink.qgf.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
// Copyright 2024 QMK -- generated source code only, image retains original copyright
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
// This file was auto-generated by `qmk painter-convert-graphics -i ZodiarkPiLogoSTpink.png -f pal16`
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <qp.h>
|
||||
|
||||
extern const uint32_t gfx_ZodiarkPiLogoSTpink_length;
|
||||
extern const uint8_t gfx_ZodiarkPiLogoSTpink[12701];
|
||||
116
keyboards/zodiarkpi/info.json
Normal file
116
keyboards/zodiarkpi/info.json
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
{
|
||||
"keyboard_name": "ZodiarkPi",
|
||||
"manufacturer": "Split Logic Keyboards",
|
||||
"url": "http://splitlogic.xyz/",
|
||||
"maintainer": "Aleblazer",
|
||||
"processor": "RP2040",
|
||||
"bootloader": "rp2040",
|
||||
"features": {
|
||||
"console": true
|
||||
},
|
||||
"board": "GENERIC_RP_RP2040",
|
||||
"usb": {
|
||||
"vid": "0xF901",
|
||||
"pid": "0xF920",
|
||||
"device_version": "0.0.1"
|
||||
},
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "GP22", "pin_b": "GP26", "resolution": 2},
|
||||
{"pin_a": "GP17", "pin_b": "GP16", "resolution": 2}
|
||||
]
|
||||
},
|
||||
"split": {
|
||||
"enabled": true,
|
||||
"encoder": {
|
||||
"right": {
|
||||
"rotary": [
|
||||
{"pin_a": "GP26", "pin_b": "GP22", "resolution": 2},
|
||||
{"pin_a": "GP16", "pin_b": "GP17", "resolution": 2},
|
||||
{"pin_a": "GP27", "pin_b": "GP28", "resolution": 2}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"matrix_pins": {
|
||||
"cols": ["GP8", "GP9", "GP10", "GP18", "GP19", "GP20", "GP21"],
|
||||
"rows": ["GP3", "GP4", "GP5", "GP6", "GP7"]
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{ "matrix": [ 0, 0 ], "x": 0, "y": 0.53 },
|
||||
{ "matrix": [ 0, 1 ], "x": 1, "y": 0.53 },
|
||||
{ "matrix": [ 0, 2 ], "x": 2, "y": 0.13 },
|
||||
{ "matrix": [ 0, 3 ], "x": 3, "y": 0 },
|
||||
{ "matrix": [ 0, 4 ], "x": 4, "y": 0.13 },
|
||||
{ "matrix": [ 0, 5 ], "x": 5, "y": 0.25 },
|
||||
{ "matrix": [ 5, 5 ], "x": 11, "y": 0.25 },
|
||||
{ "matrix": [ 5, 4 ], "x": 12, "y": 0.13 },
|
||||
{ "matrix": [ 5, 3 ], "x": 13, "y": 0 },
|
||||
{ "matrix": [ 5, 2 ], "x": 14, "y": 0.13 },
|
||||
{ "matrix": [ 5, 1 ], "x": 15, "y": 0.53 },
|
||||
{ "matrix": [ 5, 0 ], "x": 16, "y": 0.53 },
|
||||
{ "matrix": [ 1, 0 ], "x": 0, "y": 1.53 },
|
||||
{ "matrix": [ 1, 1 ], "x": 1, "y": 1.53 },
|
||||
{ "matrix": [ 1, 2 ], "x": 2, "y": 1.13 },
|
||||
{ "matrix": [ 1, 3 ], "x": 3, "y": 1 },
|
||||
{ "matrix": [ 1, 4 ], "x": 4, "y": 1.13 },
|
||||
{ "matrix": [ 1, 5 ], "x": 5, "y": 1.25 },
|
||||
{ "matrix": [ 6, 5 ], "x": 11, "y": 1.25 },
|
||||
{ "matrix": [ 6, 4 ], "x": 12, "y": 1.13 },
|
||||
{ "matrix": [ 6, 3 ], "x": 13, "y": 1 },
|
||||
{ "matrix": [ 6, 2 ], "x": 14, "y": 1.13 },
|
||||
{ "matrix": [ 6, 1 ], "x": 15, "y": 1.53 },
|
||||
{ "matrix": [ 6, 0 ], "x": 16, "y": 1.53 },
|
||||
{ "matrix": [ 2, 0 ], "x": 0, "y": 2.53 },
|
||||
{ "matrix": [ 2, 1 ], "x": 1, "y": 2.53 },
|
||||
{ "matrix": [ 2, 2 ], "x": 2, "y": 2.13 },
|
||||
{ "matrix": [ 2, 3 ], "x": 3, "y": 2 },
|
||||
{ "matrix": [ 2, 4 ], "x": 4, "y": 2.13 },
|
||||
{ "matrix": [ 2, 5 ], "x": 5, "y": 2.25 },
|
||||
{ "matrix": [ 1, 6 ], "x": 6, "y": 2.45 },
|
||||
{ "matrix": [ 0, 6 ], "x": 7.25, "y": 2.45 },
|
||||
{ "matrix": [ 5, 6 ], "x": 8.75, "y": 2.45 },
|
||||
{ "matrix": [ 6, 6 ], "x": 10, "y": 2.45 },
|
||||
{ "matrix": [ 7, 5 ], "x": 11, "y": 2.25 },
|
||||
{ "matrix": [ 7, 4 ], "x": 12, "y": 2.13 },
|
||||
{ "matrix": [ 7, 3 ], "x": 13, "y": 2 },
|
||||
{ "matrix": [ 7, 2 ], "x": 14, "y": 2.13 },
|
||||
{ "matrix": [ 7, 1 ], "x": 15, "y": 2.53 },
|
||||
{ "matrix": [ 7, 0 ], "x": 16, "y": 2.53 },
|
||||
{ "matrix": [ 3, 0 ], "x": 0, "y": 3.53 },
|
||||
{ "matrix": [ 3, 1 ], "x": 1, "y": 3.53 },
|
||||
{ "matrix": [ 3, 2 ], "x": 2, "y": 3.13 },
|
||||
{ "matrix": [ 3, 3 ], "x": 3, "y": 3 },
|
||||
{ "matrix": [ 3, 4 ], "x": 4, "y": 3.13 },
|
||||
{ "matrix": [ 3, 5 ], "x": 5, "y": 3.25 },
|
||||
{ "matrix": [ 2, 6 ], "x": 6.17, "y": 3.6 },
|
||||
{ "matrix": [ 3, 6 ], "x": 7.17, "y": 3.6 },
|
||||
{ "matrix": [ 8, 6 ], "x": 8.9, "y": 3.6 },
|
||||
{ "matrix": [ 7, 6 ], "x": 9.9, "y": 3.6 },
|
||||
{ "matrix": [ 8, 5 ], "x": 11, "y": 3.25 },
|
||||
{ "matrix": [ 8, 4 ], "x": 12, "y": 3.13 },
|
||||
{ "matrix": [ 8, 3 ], "x": 13, "y": 3 },
|
||||
{ "matrix": [ 8, 2 ], "x": 14, "y": 3.13 },
|
||||
{ "matrix": [ 8, 1 ], "x": 15, "y": 3.53 },
|
||||
{ "matrix": [ 8, 0 ], "x": 16, "y": 3.53 },
|
||||
{ "matrix": [ 4, 0 ], "x": 0, "y": 4.53 },
|
||||
{ "matrix": [ 4, 1 ], "x": 1, "y": 4.53 },
|
||||
{ "matrix": [ 4, 2 ], "x": 2, "y": 4.13 },
|
||||
{ "matrix": [ 4, 3 ], "x": 3, "y": 4 },
|
||||
{ "matrix": [ 4, 4 ], "x": 4, "y": 4.13 },
|
||||
{ "matrix": [ 4, 5 ], "x": 5.67, "y": 4.6, "w": 1.5 },
|
||||
{ "matrix": [ 4, 6 ], "x": 7.17, "y": 4.6 },
|
||||
{ "matrix": [ 9, 6 ], "x": 8.9, "y": 4.6 },
|
||||
{ "matrix": [ 9, 5 ], "x": 9.9, "y": 4.6, "w": 1.5 },
|
||||
{ "matrix": [ 9, 4 ], "x": 12, "y": 4.13 },
|
||||
{ "matrix": [ 9, 3 ], "x": 13, "y": 4 },
|
||||
{ "matrix": [ 9, 2 ], "x": 14, "y": 4.13 },
|
||||
{ "matrix": [ 9, 1 ], "x": 15, "y": 4.53 },
|
||||
{ "matrix": [ 9, 0 ], "x": 16, "y": 4.53 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
50
keyboards/zodiarkpi/keymaps/default/keymap.c
Normal file
50
keyboards/zodiarkpi/keymaps/default/keymap.c
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
/*
|
||||
Copyright 2023 Spencer Deven <splitlogicdesign@gmail.com>
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||
MO(3), KC_A, KC_S, KC_D, KC_F, KC_G, KC_MINS, KC_MUTE, RGB_TOG, KC_EQL, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_GRV, KC_LBRC, KC_RBRC, KC_DEL,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||
KC_LCTL, KC_LALT, KC_LGUI, KC_F12, MO(1), KC_SPC, KC_ENT, KC_ENT, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
[1] = LAYOUT(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
KC_PSLS, KC_P7, KC_P8, KC_P9, _______, KC_NUM, KC_NUM, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_F12,
|
||||
KC_CAPS, KC_P4, KC_P5, KC_P6, _______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______,
|
||||
_______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______,
|
||||
_______, KC_P0, KC_PDOT, KC_PENT, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_PENT, _______
|
||||
),
|
||||
|
||||
[2] = LAYOUT(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
KC_PSLS, KC_P7, KC_P8, KC_P9, _______, KC_NUM, KC_NUM, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_F12,
|
||||
KC_CAPS, KC_P4, KC_P5, KC_P6, _______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______,
|
||||
_______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______,
|
||||
_______, KC_P0, KC_PDOT, KC_PENT, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_PENT, _______
|
||||
),
|
||||
|
||||
[3] = LAYOUT(
|
||||
QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F12,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD
|
||||
)
|
||||
|
||||
};
|
||||
24
keyboards/zodiarkpi/keymaps/vial/config.h
Normal file
24
keyboards/zodiarkpi/keymaps/vial/config.h
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
#pragma once
|
||||
|
||||
#define VIAL_KEYBOARD_UID {0x40, 0x8F, 0xAC, 0x8A, 0x06, 0x9C, 0x58, 0x9E}
|
||||
|
||||
// Screen support
|
||||
#define ST7789_NUM_DEVICES 1
|
||||
#define QUANTUM_PAINTER_DISPLAY_TIMEOUT 0
|
||||
#define LCD_RST_PIN GP27
|
||||
#define LCD_DC_PIN GP28
|
||||
#define LCD_CS_PIN GP11
|
||||
#define LCD_SPI_DIVISOR 8
|
||||
#define QUANTUM_PAINTER_DEBUG
|
||||
#define QUANTUM_PAINTER_SUPPORTS_NATIVE_COLORS true
|
||||
#define QUANTUM_PAINTER_NUM_IMAGES 4
|
||||
// Cirque support, comment out if using two screens
|
||||
#define SPLIT_POINTING_ENABLE
|
||||
#define POINTING_DEVICE_RIGHT
|
||||
#define CIRQUE_PINNACLE_POSITION_MODE CIRQUE_PINNACLE_ABSOLUTE_MODE
|
||||
#define CIRQUE_PINNACLE_DIAMETER_MM 40
|
||||
#define CIRQUE_PINNACLE_CURVED_OVERLAY
|
||||
#define POINTING_DEVICE_CS_PIN GP11
|
||||
#define CIRQUE_PINNACLE_TAP_ENABLE
|
||||
#define POINTING_DEVICE_GESTURES_SCROLL_ENABLE
|
||||
#define CIRQUE_PINNACLE_TAPPING_TERM 100
|
||||
54
keyboards/zodiarkpi/keymaps/vial/keymap.c
Normal file
54
keyboards/zodiarkpi/keymaps/vial/keymap.c
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
/*
|
||||
Copyright 2023 Spencer Deven <splitlogicdesign@gmail.com>
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include "bao.qgf.h"
|
||||
#include "numi.qgf.h"
|
||||
#include "nyanners.qgf.h"
|
||||
#include "mouse.qgf.h"
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||
MO(3), KC_A, KC_S, KC_D, KC_F, KC_G, KC_MINS, KC_MUTE, RGB_TOG, KC_EQL, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_GRV, KC_LBRC, KC_RBRC, KC_DEL,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||
KC_LCTL, KC_LALT, KC_LGUI, KC_F12, MO(1), KC_SPC, KC_ENT, KC_ENT, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
[1] = LAYOUT(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
KC_PSLS, KC_P7, KC_P8, KC_P9, _______, KC_NUM, KC_NUM, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_F12,
|
||||
KC_CAPS, KC_P4, KC_P5, KC_P6, _______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______,
|
||||
_______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______,
|
||||
_______, KC_P0, KC_PDOT, KC_PENT, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_PENT, _______
|
||||
),
|
||||
|
||||
[2] = LAYOUT(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
KC_PSLS, KC_P7, KC_P8, KC_P9, _______, KC_NUM, KC_NUM, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_F12,
|
||||
KC_CAPS, KC_P4, KC_P5, KC_P6, _______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______,
|
||||
_______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______,
|
||||
_______, KC_P0, KC_PDOT, KC_PENT, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_PENT, _______
|
||||
),
|
||||
|
||||
[3] = LAYOUT(
|
||||
QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F12,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD
|
||||
)
|
||||
|
||||
};
|
||||
8
keyboards/zodiarkpi/keymaps/vial/rules.mk
Normal file
8
keyboards/zodiarkpi/keymaps/vial/rules.mk
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
VIA_ENABLE = yes
|
||||
VIAL_ENABLE = yes
|
||||
VIAL_INSECURE = yes
|
||||
QUANTUM_PAINTER_ENABLE = yes
|
||||
QUANTUM_PAINTER_DRIVERS += st7789_spi
|
||||
POINTING_DEVICE_DRIVER = cirque_pinnacle_spi
|
||||
POINTING_DEVICE_ENABLE = yes
|
||||
VIALRGB_ENABLE = yes
|
||||
373
keyboards/zodiarkpi/keymaps/vial/vial.json
Normal file
373
keyboards/zodiarkpi/keymaps/vial/vial.json
Normal file
|
|
@ -0,0 +1,373 @@
|
|||
{
|
||||
"name": "ZodiarkPi",
|
||||
"vendorId": "0xF901",
|
||||
"productId": "0xF920",
|
||||
"keycodes": ["qmk_lighting"],
|
||||
"menus": ["qmk_rgb_matrix"],
|
||||
"lighting": "vialrgb",
|
||||
"matrix": {"rows": 10, "cols": 7},
|
||||
"layouts": {
|
||||
"keymap": [
|
||||
[
|
||||
{
|
||||
"y": 1,
|
||||
"x": 3
|
||||
},
|
||||
"0,3",
|
||||
{
|
||||
"x": 11
|
||||
},
|
||||
"5,3"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.8700000000000001,
|
||||
"x": 2
|
||||
},
|
||||
"0,2",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"0,4",
|
||||
{
|
||||
"x": 9
|
||||
},
|
||||
"5,4",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"5,2"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.8799999999999999,
|
||||
"x": 5
|
||||
},
|
||||
"0,5",
|
||||
{
|
||||
"x": 7
|
||||
},
|
||||
"5,5"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.72,
|
||||
"c": "#777777"
|
||||
},
|
||||
"0,0",
|
||||
{
|
||||
"c": "#cccccc"
|
||||
},
|
||||
"0,1",
|
||||
{
|
||||
"x": 15
|
||||
},
|
||||
"5,1",
|
||||
{
|
||||
"c": "#777777"
|
||||
},
|
||||
"5,0"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.5300000000000002,
|
||||
"x": 3,
|
||||
"c": "#cccccc"
|
||||
},
|
||||
"1,3",
|
||||
{
|
||||
"x": 11
|
||||
},
|
||||
"6,3"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.8700000000000001,
|
||||
"x": 2
|
||||
},
|
||||
"1,2",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"1,4",
|
||||
{
|
||||
"x": 9
|
||||
},
|
||||
"6,4",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"6,2"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.8799999999999999,
|
||||
"x": 5
|
||||
},
|
||||
"1,5",
|
||||
{
|
||||
"x": 7
|
||||
},
|
||||
"6,5"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.7199999999999998,
|
||||
"c": "#aaaaaa"
|
||||
},
|
||||
"1,0",
|
||||
{
|
||||
"c": "#cccccc"
|
||||
},
|
||||
"1,1",
|
||||
{
|
||||
"x": 15
|
||||
},
|
||||
"6,1",
|
||||
"6,0"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.8300000000000001,
|
||||
"x": 6
|
||||
},
|
||||
"0,6",
|
||||
{
|
||||
"x": 5
|
||||
},
|
||||
"5,6"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.8500000000000001,
|
||||
"x": 7
|
||||
},
|
||||
"0,0\n\n\n\n\n\n\n\n\ne",
|
||||
"0,1\n\n\n\n\n\n\n\n\ne",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"5,0\n\n\n\n\n\n\n\n\ne",
|
||||
"5,1\n\n\n\n\n\n\n\n\ne"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.8500000000000001,
|
||||
"x": 3
|
||||
},
|
||||
"2,3",
|
||||
{
|
||||
"x": 11
|
||||
},
|
||||
"7,3"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.8700000000000001,
|
||||
"x": 2
|
||||
},
|
||||
"2,2",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"2,4",
|
||||
{
|
||||
"x": 9
|
||||
},
|
||||
"7,4",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"7,2"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.8799999999999999,
|
||||
"x": 5
|
||||
},
|
||||
"2,5",
|
||||
{
|
||||
"x": 7
|
||||
},
|
||||
"7,5"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.7199999999999998,
|
||||
"c": "#aaaaaa"
|
||||
},
|
||||
"2,0",
|
||||
{
|
||||
"c": "#cccccc"
|
||||
},
|
||||
"2,1",
|
||||
{
|
||||
"x": 15
|
||||
},
|
||||
"7,1",
|
||||
"7,0"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.8300000000000001,
|
||||
"x": 6
|
||||
},
|
||||
"1,6",
|
||||
{
|
||||
"x": 5
|
||||
},
|
||||
"6,6"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.7000000000000002,
|
||||
"x": 3
|
||||
},
|
||||
"3,3",
|
||||
{
|
||||
"x": 11
|
||||
},
|
||||
"8,3"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.8700000000000001,
|
||||
"x": 2
|
||||
},
|
||||
"3,2",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"3,4",
|
||||
{
|
||||
"x": 9
|
||||
},
|
||||
"8,4",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"8,2"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.8799999999999999,
|
||||
"x": 5
|
||||
},
|
||||
"3,5",
|
||||
{
|
||||
"x": 7
|
||||
},
|
||||
"8,5"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.7199999999999998,
|
||||
"c": "#aaaaaa"
|
||||
},
|
||||
"3,0",
|
||||
{
|
||||
"c": "#cccccc"
|
||||
},
|
||||
"3,1",
|
||||
{
|
||||
"x": 15
|
||||
},
|
||||
"8,1",
|
||||
{
|
||||
"c": "#777777"
|
||||
},
|
||||
"8,0"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.5300000000000002,
|
||||
"x": 3,
|
||||
"c": "#aaaaaa"
|
||||
},
|
||||
"4,3",
|
||||
{
|
||||
"x": 11,
|
||||
"c": "#777777"
|
||||
},
|
||||
"9,3"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.8700000000000001,
|
||||
"x": 2,
|
||||
"c": "#aaaaaa"
|
||||
},
|
||||
"4,2",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"4,4",
|
||||
{
|
||||
"x": 9
|
||||
},
|
||||
"9,4",
|
||||
{
|
||||
"x": 1,
|
||||
"c": "#777777"
|
||||
},
|
||||
"9,2"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.5999999999999996,
|
||||
"c": "#aaaaaa"
|
||||
},
|
||||
"4,0",
|
||||
"4,1",
|
||||
{
|
||||
"x": 15,
|
||||
"c": "#777777"
|
||||
},
|
||||
"9,1",
|
||||
"9,0"
|
||||
],
|
||||
[
|
||||
{
|
||||
"r": 30,
|
||||
"rx": 6.5,
|
||||
"ry": 4.25,
|
||||
"y": 0.5999999999999996,
|
||||
"x": 0.16999999999999993,
|
||||
"c": "#cccccc"
|
||||
},
|
||||
"2,6",
|
||||
"3,6"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": -0.33000000000000007,
|
||||
"c": "#777777",
|
||||
"w": 1.5
|
||||
},
|
||||
"4,5",
|
||||
"4,6"
|
||||
],
|
||||
[
|
||||
{
|
||||
"r": -30,
|
||||
"rx": 13,
|
||||
"y": 0.34999999999999964,
|
||||
"x": -2.5999999999999996,
|
||||
"c": "#cccccc"
|
||||
},
|
||||
"8,6",
|
||||
"7,6"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": -2.5999999999999996,
|
||||
"c": "#777777"
|
||||
},
|
||||
"9,6",
|
||||
{
|
||||
"w": 1.5
|
||||
},
|
||||
"9,5"]
|
||||
]
|
||||
}
|
||||
}
|
||||
22
keyboards/zodiarkpi/mcuconf.h
Normal file
22
keyboards/zodiarkpi/mcuconf.h
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
/*
|
||||
Copyright 2023 Spencer Deven <splitlogicdesign@gmail.com>
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef RP_SPI_USE_SPI1
|
||||
#define RP_SPI_USE_SPI1 TRUE
|
||||
|
||||
#undef RP_SIO_USE_UART0
|
||||
#define RP_SIO_USE_UART0 TRUE
|
||||
4481
keyboards/zodiarkpi/mouse.qgf.c
Normal file
4481
keyboards/zodiarkpi/mouse.qgf.c
Normal file
File diff suppressed because it is too large
Load diff
14
keyboards/zodiarkpi/mouse.qgf.h
Normal file
14
keyboards/zodiarkpi/mouse.qgf.h
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
// Copyright 2025 QMK -- generated source code only, image retains original copyright
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
// This file was auto-generated by `painter_convert_graphics` with arguments:
|
||||
// format | pal256
|
||||
// output | vial-qmk
|
||||
// input | mouse.jpg
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <qp.h>
|
||||
|
||||
extern const uint32_t gfx_mouse_length;
|
||||
extern const uint8_t gfx_mouse[71334];
|
||||
3982
keyboards/zodiarkpi/numi.qgf.c
Normal file
3982
keyboards/zodiarkpi/numi.qgf.c
Normal file
File diff suppressed because it is too large
Load diff
14
keyboards/zodiarkpi/numi.qgf.h
Normal file
14
keyboards/zodiarkpi/numi.qgf.h
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
// Copyright 2025 QMK -- generated source code only, image retains original copyright
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
// This file was auto-generated by `painter_convert_graphics` with arguments:
|
||||
// format | pal256
|
||||
// output | vial-qmk
|
||||
// input | numi.jpg
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <qp.h>
|
||||
|
||||
extern const uint32_t gfx_numi_length;
|
||||
extern const uint8_t gfx_numi[63345];
|
||||
3572
keyboards/zodiarkpi/nyanners.qgf.c
Normal file
3572
keyboards/zodiarkpi/nyanners.qgf.c
Normal file
File diff suppressed because it is too large
Load diff
14
keyboards/zodiarkpi/nyanners.qgf.h
Normal file
14
keyboards/zodiarkpi/nyanners.qgf.h
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
// Copyright 2025 QMK -- generated source code only, image retains original copyright
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
// This file was auto-generated by `painter_convert_graphics` with arguments:
|
||||
// format | pal256
|
||||
// output | vial-qmk
|
||||
// input | nyanners.jpg
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <qp.h>
|
||||
|
||||
extern const uint32_t gfx_nyanners_length;
|
||||
extern const uint8_t gfx_nyanners[56795];
|
||||
22
keyboards/zodiarkpi/readme.md
Normal file
22
keyboards/zodiarkpi/readme.md
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
# ZodiarkPi
|
||||
|
||||

|
||||
|
||||
WIP (Ignore the picture of the ZodZero)
|
||||
|
||||
* Keyboard Maintainer: [Aleblazer](https://github.com/Aleblazer/), [Discord Link](https://discord.gg/BCSbXwskVt)
|
||||
* Hardware Supported: Raspberry Pi Pico/Waveshare RP2040 Plus
|
||||
* Hardware Availability: [Split Logic Keyboards](https://splitlogic.xyz/)
|
||||
|
||||
## Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make aleblazer/zodiarkpi:default
|
||||
|
||||
## Flashing example for this keyboard:
|
||||
make aleblazer/zodiarkpi:default: flash
|
||||
|
||||
## Bootloader
|
||||
|
||||
Remove the interconnect USB-C cable from halves, plug host into one side, hold boot, press reset, release boot. Move the UF2 file to the removable media. Repeat process on the other side.
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
7
keyboards/zodiarkpi/rules.mk
Normal file
7
keyboards/zodiarkpi/rules.mk
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
SERIAL_DRIVER = vendor
|
||||
ENCODER_ENABLE = yes
|
||||
MOUSEKEY_ENABLE = yes
|
||||
EXTRAKEY_ENABLE = yes
|
||||
RGB_MATRIX_ENABLE = yes
|
||||
RGB_MATRIX_DRIVER = ws2812
|
||||
WS2812_DRIVER = vendor
|
||||
269
keyboards/zodiarkpi/zodiarkpi.c
Normal file
269
keyboards/zodiarkpi/zodiarkpi.c
Normal file
|
|
@ -0,0 +1,269 @@
|
|||
/*
|
||||
Copyright 2023 Spencer Deven <splitlogicdesign@gmail.com>
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include "quantum.h"
|
||||
#include "print.h"
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
led_config_t g_led_config = { {
|
||||
// Key Matrix to LED Index
|
||||
// Left Hand
|
||||
{ 8, 6, 5, 3, 2, 0, NO_LED },
|
||||
{ 9, 10, 11, 12, 13, 14, 15 },
|
||||
{ 24, 22, 21, 19, 18, 17, 31 },
|
||||
{ 25, 26, 27, 28, 29, 30, 32 },
|
||||
{ 43, 41, 40, 38, 37, 35, 33 },
|
||||
// Right Hand
|
||||
{ 52, 50, 49, 47, 46, 44, NO_LED },
|
||||
{ 53, 54, 55, 56, 57, 58, 59 },
|
||||
{ 68, 66, 65, 63, 62, 64, 75 },
|
||||
{ 69, 70, 71, 72, 73, 74, 76 },
|
||||
{ 87, 85, 84, 82, 81, 79, 77 },
|
||||
|
||||
|
||||
},
|
||||
{
|
||||
{ 80, 10 },
|
||||
{ 74, 2 },
|
||||
{ 64, 9 },
|
||||
{ 49, 7 },
|
||||
{ 38, 1 },
|
||||
{ 33, 9 },
|
||||
{ 18, 13 },
|
||||
{ 9, 5 },
|
||||
{ 2, 13 },
|
||||
{ 2, 24 },
|
||||
{ 18, 24 },
|
||||
{ 33, 19 },
|
||||
{ 49, 18 },
|
||||
{ 64, 20 },
|
||||
{ 80, 21 },
|
||||
{ 96, 37 },
|
||||
{ 91, 29 },
|
||||
{ 80, 32 },
|
||||
{ 64, 31 },
|
||||
{ 49, 29 },
|
||||
{ 41, 29 },
|
||||
{ 33, 30 },
|
||||
{ 18, 35 },
|
||||
{ 10, 35 },
|
||||
{ 2, 35 },
|
||||
{ 2, 45 },
|
||||
{ 18, 45 },
|
||||
{ 33, 41 },
|
||||
{ 49, 40 },
|
||||
{ 64, 41 },
|
||||
{ 80, 42 },
|
||||
{ 96, 49 },
|
||||
{ 108, 54 },
|
||||
{ 102, 64 },
|
||||
{ 93, 61 },
|
||||
{ 85, 58 },
|
||||
{ 72, 53 },
|
||||
{ 64, 52 },
|
||||
{ 49, 50 },
|
||||
{ 41, 52 },
|
||||
{ 33, 52 },
|
||||
{ 18, 56 },
|
||||
{ 10, 57 },
|
||||
{ 2, 56 },
|
||||
{ 142, 10 },
|
||||
{ 149, 2 },
|
||||
{ 158, 9 },
|
||||
{ 174, 7 },
|
||||
{ 185, 1 },
|
||||
{ 190, 9 },
|
||||
{ 205, 13 },
|
||||
{ 213, 5 },
|
||||
{ 220, 13 },
|
||||
{ 220, 24 },
|
||||
{ 205, 24 },
|
||||
{ 190, 19 },
|
||||
{ 174, 18 },
|
||||
{ 158, 20 },
|
||||
{ 142, 21 },
|
||||
{ 126, 37 },
|
||||
{ 133, 29 },
|
||||
{ 142, 32 },
|
||||
{ 158, 31 },
|
||||
{ 174, 29 },
|
||||
{ 182, 29 },
|
||||
{ 190, 30 },
|
||||
{ 205, 35 },
|
||||
{ 213, 35 },
|
||||
{ 220, 35 },
|
||||
{ 220, 45 },
|
||||
{ 205, 45 },
|
||||
{ 190, 41 },
|
||||
{ 174, 40 },
|
||||
{ 158, 41 },
|
||||
{ 142, 42 },
|
||||
{ 127, 49 },
|
||||
{ 113, 54 },
|
||||
{ 120, 64 },
|
||||
{ 129, 61 },
|
||||
{ 138, 58 },
|
||||
{ 151, 53 },
|
||||
{ 158, 52 },
|
||||
{ 174, 50 },
|
||||
{ 182, 52 },
|
||||
{ 190, 52 },
|
||||
{ 205, 56 },
|
||||
{ 214, 57 },
|
||||
{ 220, 56 },
|
||||
},
|
||||
{
|
||||
// LED Index to Flag
|
||||
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
|
||||
} };
|
||||
#endif
|
||||
|
||||
#ifdef ENCODER_ENABLE
|
||||
|
||||
bool encoder_update_kb(uint8_t index, bool clockwise) {
|
||||
if (!encoder_update_user(index, clockwise)) {
|
||||
return false; /* Don't process further events if user function exists and returns false */
|
||||
}
|
||||
if (index == 0) { /* First encoder */
|
||||
if (clockwise) {
|
||||
tap_code_delay(KC_VOLD, 10);
|
||||
} else {
|
||||
tap_code_delay(KC_VOLU, 10);
|
||||
}
|
||||
} else if (index == 1) { /* Second encoder */
|
||||
if (clockwise) {
|
||||
rgblight_decrease_val();
|
||||
} else {
|
||||
rgblight_increase_val();
|
||||
}
|
||||
|
||||
} else if (index == 2) { /* Third encoder */
|
||||
if (clockwise) {
|
||||
tap_code(KC_MS_WH_DOWN);
|
||||
} else {
|
||||
tap_code(KC_MS_WH_UP);
|
||||
}
|
||||
} else if (index == 3) { /* Fourth encoder */
|
||||
if (clockwise) {
|
||||
tap_code(KC_MS_WH_RIGHT);
|
||||
} else {
|
||||
tap_code(KC_MS_WH_LEFT);
|
||||
}
|
||||
} else if (index == 4) { /* Fifth encoder */
|
||||
if (clockwise) {
|
||||
tap_code(KC_MS_WH_DOWN);
|
||||
} else {
|
||||
tap_code(KC_MS_WH_UP);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef QUANTUM_PAINTER_ENABLE
|
||||
|
||||
#include "bao.qgf.c"
|
||||
#include "nyanners.qgf.c"
|
||||
#include "numi.qgf.c"
|
||||
#include "mouse.qgf.c"
|
||||
|
||||
static painter_device_t display;
|
||||
static painter_image_handle_t image;
|
||||
|
||||
// st7789 enable, comment out the following line if not using a st7789
|
||||
painter_device_t qp_st7789_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode);
|
||||
// gc9a01 enable, comment out the following line if not using a gc9a01
|
||||
// painter_device_t qp_gc9a01_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode);
|
||||
|
||||
void keyboard_post_init_user(void) {
|
||||
// Customise these values to desired behaviour
|
||||
debug_enable=true;
|
||||
debug_matrix=true;
|
||||
debug_keyboard=true;
|
||||
debug_mouse=true;
|
||||
}
|
||||
|
||||
uint32_t deferred_init(uint32_t trigger_time, void *cb_arg) {
|
||||
|
||||
print("doing stuff\n");
|
||||
|
||||
// ##st7789 sc
|
||||
#endif
|
||||
reen support, comment out this section if not using a st7789 screen
|
||||
display = qp_st7789_make_spi_device(320, 240, LCD_CS_PIN, LCD_DC_PIN, LCD_RST_PIN, LCD_SPI_DIVISOR, 3);
|
||||
if (is_keyboard_left()) {
|
||||
qp_power(display, true);
|
||||
}
|
||||
if (is_keyboard_left()) {
|
||||
qp_init(display, QP_ROTATION_270);
|
||||
}
|
||||
// If using pointing device on right side, comment out following 3 lines
|
||||
// else {
|
||||
// qp_init(display, QP_ROTATION_0);
|
||||
// }
|
||||
if (is_keyboard_left()) {
|
||||
image = qp_load_image_mem(gfx_bao);
|
||||
image = qp_load_image_mem(gfx_nyanners);
|
||||
image = qp_load_image_mem(gfx_mouse);
|
||||
image = qp_load_image_mem(gfx_numi);
|
||||
}
|
||||
// If using pointing device on right side, comment out following 3 lines
|
||||
// else {
|
||||
// image = qp_load_image_mem(gfx_ZodiarkPiLogoSTpink);
|
||||
// }
|
||||
//S ##end st7789 screen support
|
||||
|
||||
// ##gc9a01 screeen support, comment out this section if not using a gc9a01 screen
|
||||
// display = qp_gc9a01_make_spi_device(240, 240, LCD_CS_PIN, LCD_DC_PIN, LCD_RST_PIN, LCD_SPI_DIVISOR, 0);
|
||||
// qp_power(display, true);
|
||||
// if (is_keyboard_left()) {
|
||||
// qp_init(display, QP_ROTATION_0);
|
||||
// }
|
||||
// If using pointing device on right side, comment out following 3 lines
|
||||
// else {
|
||||
// qp_init(display, QP_ROTATION_0);
|
||||
// }
|
||||
|
||||
// if (is_keyboard_left()) {
|
||||
// image = qp_load_image_mem(gfx_ZodiarkPiLogoGC);
|
||||
// }
|
||||
// If using pointing device on right side, comment out following 3 lines
|
||||
// else {
|
||||
// image = qp_load_image_mem(gfx_ZodiarkPiLogoGC);
|
||||
// }
|
||||
// ##end GC9A01 screeen support
|
||||
|
||||
if (image != NULL) {
|
||||
print("image was not null\n");
|
||||
if (is_keyboard_left()) {
|
||||
qp
|
||||
#endif
|
||||
_drawimage(display, 0, 0, image);
|
||||
}
|
||||
// If using pointing device on right side, comment out following 3 lines
|
||||
// else {
|
||||
// qp_drawimage(display, 0, 0, image);
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
void keyboard_post_init_kb(void)
|
||||
{
|
||||
debug_enable=true;
|
||||
defer_exec(3000, deferred_init, NULL);
|
||||
}
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue