Stephan Bösebeck 9 years ago
commit 8b883c797f

@ -0,0 +1,25 @@
#include "Bantam44.h"
__attribute__ ((weak))
void matrix_init_user(void) {
// leave these blank
}
__attribute__ ((weak))
void matrix_scan_user(void) {
// leave these blank
}
void matrix_init_kb(void) {
// put your keyboard start-up code here
// runs once when the firmware starts up
matrix_init_user();
}
void matrix_scan_kb(void) {
// put your looping keyboard code here
// runs every cycle (a lot)
matrix_scan_user();
}

@ -0,0 +1,29 @@
#ifndef BANTAM44_H
#define BANTAM44_H
#include "matrix.h"
#include "keymap_common.h"
#include "backlight.h"
#include <stddef.h>
// This a shortcut to help you visually see your layout.
// The following is an example using the Planck MIT layout
// The first section contains all of the arguements
// The second converts the arguments into a two-dimensional array
#define KEYMAP( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
K30, K31, K32, K33, K34, K35, K36, K37, K38 \
) \
{ \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_NO, K2A }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \
{ K30, K31, K32, KC_NO, K33, KC_NO, K34, KC_NO, K35, K36, K37, K38 }, \
}
void matrix_init_user(void);
void matrix_scan_user(void);
#endif

@ -0,0 +1,139 @@
#----------------------------------------------------------------------------
# On command line:
#
# make all = Make software.
#
# make clean = Clean out built project files.
#
# make coff = Convert ELF to AVR COFF.
#
# make extcoff = Convert ELF to AVR Extended COFF.
#
# make program = Download the hex file to the device.
# Please customize your programmer settings(PROGRAM_CMD)
#
# make teensy = Download the hex file to the device, using teensy_loader_cli.
# (must have teensy_loader_cli installed).
#
# make dfu = Download the hex file to the device, using dfu-programmer (must
# have dfu-programmer installed).
#
# make flip = Download the hex file to the device, using Atmel FLIP (must
# have Atmel FLIP installed).
#
# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
# (must have dfu-programmer installed).
#
# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
# (must have Atmel FLIP installed).
#
# make debug = Start either simulavr or avarice as specified for debugging,
# with avr-gdb or avr-insight as the front end for debugging.
#
# make filename.s = Just compile filename.c into the assembler code only.
#
# make filename.i = Create a preprocessed source file for use in submitting
# bug reports to the GCC project.
#
# To rebuild project do "make clean" then "make all".
#----------------------------------------------------------------------------
# Target file name (without extension).
TARGET = Bantam44
# Directory common source filess exist
TOP_DIR = ../..
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# # project specific files
SRC = Bantam44.c
ifdef KEYMAP
SRC := keymaps/$(KEYMAP).c $(SRC)
else
SRC := keymaps/default.c $(SRC)
endif
CONFIG_H = config.h
# MCU name
#MCU = at90usb1287
MCU = atmega32u4
# Processor frequency.
# This will define a symbol, F_CPU, in all source code files equal to the
# processor frequency in Hz. You can then use this symbol in your source code to
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
# automatically to create a 32-bit value in your source code.
#
# This will be an integer division of F_USB below, as it is sourced by
# F_USB after it has run through any CPU prescalers. Note that this value
# does not *change* the processor frequency - it should merely be updated to
# reflect the processor speed set externally so that the code can use accurate
# software delays.
F_CPU = 16000000
#
# LUFA specific
#
# Target architecture (see library "Board Types" documentation).
ARCH = AVR8
# Input clock frequency.
# This will define a symbol, F_USB, in all source code files equal to the
# input clock frequency (before any prescaling is performed) in Hz. This value may
# differ from F_CPU if prescaling is used on the latter, and is required as the
# raw input clock is fed directly to the PLL sections of the AVR for high speed
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
# at the end, this will be done automatically to create a 32-bit value in your
# source code.
#
# If no clock division is performed on the input clock inside the AVR (via the
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
F_USB = $(F_CPU)
# Interrupt driven control endpoint task(+60)
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
# Boot Section Size in *bytes*
# Teensy halfKay 512
# Teensy++ halfKay 1024
# Atmel DFU loader 4096
# LUFA bootloader 4096
# USBaspLoader 2048
OPT_DEFS += -DBOOTLOADER_SIZE=512
# Build Options
# comment out to disable the options.
#
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
# NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
# MIDI_ENABLE = YES # MIDI controls
# UNICODE_ENABLE = YES # Unicode
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TOP_DIR)
VPATH += $(TMK_DIR)
include $(TOP_DIR)/quantum/quantum.mk

@ -0,0 +1,24 @@
Bantam44 keyboard firmware
======================
## Quantum MK Firmware
For the full Quantum feature list, see [the parent README.md](/README.md).
## Building
Download or clone the whole firmware and navigate to the keyboard/Bantam44 folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file.
Depending on which keymap you would like to use, you will have to compile slightly differently.
### Default
To build with the default keymap, simply run `make`.
### Other Keymaps
Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like:
```
$ make KEYMAP=[default|jack|<name>]
```
Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.

@ -0,0 +1,81 @@
/*
Copyright 2012 Jun Wako <wakojun@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 2 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/>.
*/
#ifndef CONFIG_H
#define CONFIG_H
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x6060
#define DEVICE_VER 0x0001
#define MANUFACTURER Bantam Keyboards
#define PRODUCT Bantam44
#define DESCRIPTION A custom keyboard
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
// Planck PCB default pin-out
// Change this to how you wired your keyboard
// COLS: Left to right, ROWS: Top to bottom
#define COLS (int []){ B0, B1, B2, B3, B7, D0, B6, F7, F6, F5, F4, F1 }
#define ROWS (int []){ F0, D6, D4, D5 }
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
/* number of backlight levels */
#define BACKLIGHT_LEVELS 3
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
/* key combination for command */
#define IS_COMMAND() ( \
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/*
* Feature disable options
* These options are also useful to firmware size reduction.
*/
/* disable debug print */
//#define NO_DEBUG
/* disable print */
//#define NO_PRINT
/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
#endif

@ -0,0 +1,30 @@
#include "Bantam44.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = { /* Base */
{KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC },
{KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_NO, KC_ENT },
{KC_CAPS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT },
{KC_LCTL, KC_LGUI, KC_LALT, KC_NO, MO(1), KC_NO, KC_SPC, KC_NO, MO(2), KC_SCLN, KC_QUOT, KC_SLSH }
},
[1] = { /* LOWER */
{KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DELT },
{KC_TAB, KC_MPRV, KC_MPLY, KC_MNXT, KC_GRV, KC_BSLS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_NO, KC_ENT },
{KC_CAPS, KC_LSFT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_NO, KC_HOME, KC_PGUP, KC_RSFT },
{KC_LCTL, KC_LGUI, KC_LALT, KC_NO, KC_TRNS, KC_NO, KC_SPC, KC_NO, KC_TRNS, KC_END, KC_PGDN, KC_EXLM }
},
[2] = { /* RAISE */
{KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DELT },
{KC_TAB, KC_MUTE, KC_VOLD, KC_VOLU, KC_TILD, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_NO, KC_ENT },
{KC_CAPS, KC_LSFT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_UP, KC_RSFT },
{KC_LCTL, KC_LGUI, KC_LALT, KC_NO, KC_TRNS, KC_NO, KC_SPC, KC_NO, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT }
}
};
const uint16_t PROGMEM fn_actions[] = {
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // MACRODOWN only works in this function
{
return MACRO_NONE;
};

@ -1,16 +1,16 @@
#include "atomic.h" #include "atomic.h"
__attribute__ ((weak)) __attribute__ ((weak))
void * matrix_init_user(void) { void matrix_init_user(void) {
// leave these blank // leave these blank
}; }
__attribute__ ((weak)) __attribute__ ((weak))
void * matrix_scan_user(void) { void matrix_scan_user(void) {
// leave these blank // leave these blank
}; }
void * matrix_init_kb(void) { void matrix_init_kb(void) {
// put your keyboard start-up code here // put your keyboard start-up code here
// runs once when the firmware starts up // runs once when the firmware starts up
@ -25,16 +25,12 @@ void * matrix_init_kb(void) {
DDRE |= (1<<6); DDRE |= (1<<6);
PORTE |= (1<<6); PORTE |= (1<<6);
if (matrix_init_user) { matrix_init_user();
(*matrix_init_user)();
} }
};
void * matrix_scan_kb(void) { void matrix_scan_kb(void) {
// put your looping keyboard code here // put your looping keyboard code here
// runs every cycle (a lot) // runs every cycle (a lot)
if (matrix_scan_user) { matrix_scan_user();
(*matrix_scan_user)();
} }
};

@ -24,7 +24,7 @@
{ K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E } \ { K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E } \
} }
void * matrix_init_user(void); void matrix_init_user(void);
void * matrix_scan_user(void); void matrix_scan_user(void);
#endif #endif

@ -1,16 +1,16 @@
#include "atreus.h" #include "atreus.h"
__attribute__ ((weak)) __attribute__ ((weak))
void * matrix_init_user(void) { void matrix_init_user(void) {
// leave these blank // leave these blank
}; };
__attribute__ ((weak)) __attribute__ ((weak))
void * matrix_scan_user(void) { void matrix_scan_user(void) {
// leave these blank // leave these blank
}; };
void * matrix_init_kb(void) { void matrix_init_kb(void) {
// put your keyboard start-up code here // put your keyboard start-up code here
// runs once when the firmware starts up // runs once when the firmware starts up
@ -19,7 +19,7 @@ void * matrix_init_kb(void) {
} }
}; };
void * matrix_scan_kb(void) { void matrix_scan_kb(void) {
// put your looping keyboard code here // put your looping keyboard code here
// runs every cycle (a lot) // runs every cycle (a lot)

@ -22,7 +22,7 @@
{ k2a, k30, k31, k32, k33, k34, k36, k37, k38, k39, k3a } \ { k2a, k30, k31, k32, k33, k34, k36, k37, k38, k39, k3a } \
} }
void * matrix_init_user(void); void matrix_init_user(void);
void * matrix_scan_user(void); void matrix_scan_user(void);
#endif #endif

@ -0,0 +1,19 @@
#!/bin/bash
#a tool to fix broken keymaps as a result of pull request #190
#changing the declaration of matrix_scan_user() and matrix_init_user()
#
#This script will save a copy of the specified keymap as keymap.c.bak
#and then create a new keymap.c with the definion corrected.
#this script must be run from the ergodox_ez directory
if [ $# -ne 1 ]; then
echo $0: usage: ./190hotfix keymap_name
exit 1
fi
echo Saving backup as ./keymaps/$1/keymap.c.bak ...
mv ./keymaps/$1/keymap.c ./keymaps/$1/keymap.c.bak
echo Modifying ./keymaps/$1/keymap.c ...
cat ./keymaps/$1/keymap.c.bak | sed -r 's/^void \* matrix_/void matrix_/'>./keymaps/$1/keymap.c
echo Complete!

@ -5,16 +5,16 @@ bool i2c_initialized = 0;
uint8_t mcp23018_status = 0x20; uint8_t mcp23018_status = 0x20;
__attribute__ ((weak)) __attribute__ ((weak))
void * matrix_init_user(void) { void matrix_init_user(void) {
return NULL;
}; }
__attribute__ ((weak)) __attribute__ ((weak))
void * matrix_scan_user(void) { void matrix_scan_user(void) {
return NULL;
}; }
void * matrix_init_kb(void) { void matrix_init_kb(void) {
// keyboard LEDs (see "PWM on ports OC1(A|B|C)" in "teensy-2-0.md") // keyboard LEDs (see "PWM on ports OC1(A|B|C)" in "teensy-2-0.md")
TCCR1A = 0b10101001; // set and configure fast PWM TCCR1A = 0b10101001; // set and configure fast PWM
TCCR1B = 0b00001001; // set and configure fast PWM TCCR1B = 0b00001001; // set and configure fast PWM
@ -34,22 +34,13 @@ void * matrix_init_kb(void) {
ergodox_blink_all_leds(); ergodox_blink_all_leds();
if (matrix_init_user) { matrix_init_user();
(*matrix_init_user)();
} }
return NULL; void matrix_scan_kb(void) {
}; matrix_scan_user();
void * matrix_scan_kb(void) {
if (matrix_scan_user) {
(*matrix_scan_user)();
} }
return NULL;
};
void ergodox_blink_all_leds(void) void ergodox_blink_all_leds(void)
{ {

@ -123,8 +123,8 @@ inline void ergodox_led_all_set(uint8_t n)
{ k0D, k1D, k2D, k3D, k4D, KC_NO } \ { k0D, k1D, k2D, k3D, k4D, KC_NO } \
} }
void * matrix_init_user(void); void matrix_init_user(void);
void * matrix_scan_user(void); void matrix_scan_user(void);

File diff suppressed because it is too large Load Diff

@ -158,12 +158,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

File diff suppressed because it is too large Load Diff

@ -243,12 +243,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) void matrix_scan_user(void)
{ {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

File diff suppressed because it is too large Load Diff

@ -155,12 +155,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

File diff suppressed because it is too large Load Diff

@ -210,12 +210,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

File diff suppressed because it is too large Load Diff

@ -154,12 +154,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
return NULL;
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
/* leds is a static array holding the current brightness of each of the /* leds is a static array holding the current brightness of each of the
* three keyboard LEDs. It's 4 long simply to avoid the ugliness of +1s and * three keyboard LEDs. It's 4 long simply to avoid the ugliness of +1s and
* -1s in the code below, and because wasting a byte really doesn't matter * -1s in the code below, and because wasting a byte really doesn't matter
@ -191,5 +191,5 @@ void * matrix_scan_user(void) {
} }
} }
return NULL;
}; };

File diff suppressed because it is too large Load Diff

@ -155,12 +155,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

File diff suppressed because it is too large Load Diff

@ -158,12 +158,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

File diff suppressed because it is too large Load Diff

@ -200,12 +200,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

File diff suppressed because it is too large Load Diff

@ -155,12 +155,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

File diff suppressed because it is too large Load Diff

@ -155,12 +155,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

@ -156,12 +156,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

@ -182,12 +182,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

File diff suppressed because it is too large Load Diff

@ -157,12 +157,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

File diff suppressed because it is too large Load Diff

@ -157,12 +157,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

File diff suppressed because it is too large Load Diff

@ -89,12 +89,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

File diff suppressed because it is too large Load Diff

@ -244,12 +244,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

File diff suppressed because it is too large Load Diff

@ -155,12 +155,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

File diff suppressed because it is too large Load Diff

@ -155,12 +155,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

@ -155,12 +155,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

File diff suppressed because it is too large Load Diff

@ -248,12 +248,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
} }
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
return NULL;
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

File diff suppressed because it is too large Load Diff

@ -161,12 +161,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

File diff suppressed because it is too large Load Diff

@ -390,12 +390,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

File diff suppressed because it is too large Load Diff

@ -227,12 +227,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

@ -158,12 +158,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

File diff suppressed because it is too large Load Diff

@ -162,12 +162,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

@ -199,12 +199,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

File diff suppressed because it is too large Load Diff

@ -108,11 +108,11 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);
ergodox_board_led_off(); ergodox_board_led_off();
ergodox_right_led_1_off(); ergodox_right_led_1_off();

@ -114,12 +114,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

File diff suppressed because it is too large Load Diff

@ -215,12 +215,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
return NULL;
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
ergodox_board_led_off(); ergodox_board_led_off();
ergodox_right_led_1_off(); ergodox_right_led_1_off();
@ -238,5 +238,5 @@ void * matrix_scan_user(void) {
if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) { if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
ergodox_right_led_3_on(); ergodox_right_led_3_on();
} }
return NULL;
}; };

@ -1,1538 +0,0 @@
:100000000C9454090C9498090C9498090C94980930
:100010000C9498090C9498090C9498090C949809DC
:100020000C9498090C9498090C94C4140C9496158B
:100030000C9498090C9498090C9498090C949809BC
:100040000C9498090C94172E0C9498090C94980908
:100050000C9498090C941E240C9498090C949809FB
:100060000C9498090C9498090C9498090C9498098C
:100070000C9498090C9498090C9498090C9498097C
:100080000C9498090C9498090C9498090C9498096C
:100090000C9498090C9498090C9498090C9498095C
:1000A0000C9498090C9498090C949809FB151D164A
:1000B00008171D1608175F1682160817D716EA16B6
:1000C000381A381A661A661AA81AE41AE41CE41CCC
:1000D000FC1AE41CF31BF31BBE1CE41CE41CD21C26
:1000E000751901620262016202620035002B00E1B3
:1000F00000E100E00000001E00140004001D0002EA
:10010000304E001F001A0016001B00E300E1002023
:1001100000080007000600AE002C002100150009B1
:1001200000190065744B00220017000A000500004A
:100130000029744C002A0000002800000008544CDC
:10014000002A00000028000000500023001C000BC3
:1001500000110000004F00240018000D001000E600
:1001600000520025000C000E0036002D002C002649
:100170000012000F0037004A00E50027001300338B
:100180000038002E00510030002F00347231724DC3
:1001900071000035002B00E100E100E00000001ECE
:1001A0000034000400330002304E001F00360012FD
:1001B000001400E300E1002000370008000D00AE4D
:1001C000002C002100130018000E0065744B002263
:1001D000001C000C001B00000029744C002A0000C9
:1001E000002800000008544C002A000000280000ED
:1001F000005000230009000700050000004F002404
:10020000000A000B001000E600520025000600174F
:10021000001A002F002C0026001500110019004ABA
:1002200000E50027000F0016001D00300051002ED1
:100230000038002D7231724D710000000000000086
:1002400000000000000000000000000000000000AE
:10025000000000000000000000000000000000009E
:10026000000000000000000000000000000000008E
:10027000000000000000000000000000000000007E
:10028000000000000000000000000000000000006E
:10029000000000000000000000000000000000005E
:1002A000000000000000000000000000000000004E
:1002B000000000000000000000000000000000003E
:1002C000000000000000000000000000000000002E
:1002D000000000000000000000000000000000001E
:1002E000000000000000000000000000000000000E
:1002F00000000000000000000000000000000000FE
:1003000000000000000000000000000000000000ED
:1003100000000000000000000000000000000000DD
:1003200000000000000000000000000000000000CD
:1003300000000000000000000000000000000000BD
:1003400000000000000000000000000000000000AD
:10035000000000000000000000000000000000009D
:10036000000000000000000000000000000000008D
:10037000000000000000000000000000000000007D
:10038000000000000000000000000000000000006D
:10039000000000000000000000000000000000005D
:1003A000000000000000000000000000000000004D
:1003B000000000000000000000000000000000003D
:1003C000000000000000000000000000000000002D
:1003D000000000000000000000000000000000001D
:1003E000000000000000000000000000000000000D
:1003F00000000000000000000000000000000000FD
:1004000000000000000000000000000000000000EC
:1004100000000000000000000000000000000000DC
:1004200000000000000000000000000000000000CC
:1004300000000000000000000000000000000000BC
:1004400000000000000000000000000000000000AC
:10045000000000000000000000000000000000009C
:10046000000000000000000000000000000000008C
:10047000000000000000000000000000000000007C
:10048000000000000000000000000000000000006C
:10049000000000000000000000000000000000005C
:1004A000000000000000000000000000000000004C
:1004B000000000000000000000000000000000003C
:1004C000000000000000000000000000000000002C
:1004D000000000000000000000000000000000001C
:1004E000000000000000000000000000000000000C
:1004F00000000000000000000000000000000000FC
:1005000000000000000000000000000000000000EB
:1005100000000000000000000000000000000000DB
:1005200000000000000000000000000000000000CB
:1005300000000000000000000000000000000000BB
:1005400000000000000000000000000000000000AB
:10055000000000000000000000000000000000009B
:10056000000000000000000000000000000000008B
:10057000000000000000000000000000000000007B
:10058000000000000000000000000000000000006B
:10059000000000000000000000000000000000005B
:1005A000000000000000000000000000000000004B
:1005B000000000000000000000000000000000003B
:1005C000000000000000000000000000000000002B
:1005D000000000000000000000000000000000001B
:1005E000000000000000000000000000000000000B
:1005F00000000000000000000000000000000000FB
:1006000000000000000000000000000000000000EA
:1006100000000000000000000000000000000000DA
:1006200000000000000000000000000100010001C7
:10063000000100010000003A003F004400010001F9
:100640000001003B00400045000100010001003CAA
:1006500000410001000100010001003D00420001D5
:10066000000100010001003E004300010001000004
:100670000001000100010000000100000001000174
:1006800000010000005000000053003F0001005234
:100690000051000000390040004A004D004F0001A9
:1006A0000001002B005F005C005900620001005453
:1006B0000060005D005A0001300100550061005EDD
:1006C000005B0063000100560057005700580058B7
:1006D00071000001000100010001000100000001A3
:1006E0000001000100010001000100010001000102
:1006F000004C020100010001000100B200490101AB
:1007000000A80001000100B1004902010001000140
:10071000000100B500A800000001004900A9000088
:1007200000AA0000000100490001000000010000D3
:10073000000100B00001000100010000000100A55F
:10074000000100010001000100AC00A60001000151
:1007500000010001000100A70001000100010001EB
:1007600000010046000100010001000100AB00474C
:1007700000480001000100010000000A002530319E
:100780003662003A200025303258000A722F63206A
:1007900030313233343536373839414243444546B7
:1007A0000A000A002530325800626F756E636521B9
:1007B0003A20006C65667420736964652061747406
:1007C00061636865640A006C6566742073696465BA
:1007D000206E6F7420726573706F6E64696E670A45
:1007E00000747279696E6720746F20726573657426
:1007F000206D637032333031380A000A4445425567
:10080000473A20656E61626C65642E0A005B735D19
:10081000004B6579626F6172642073746172742E2B
:100820000A005B575D005B535D005B525D005B44FB
:100830005D005B435D0016034500720067006F00BA
:1008400044006F007800200045005A0000001603A5
:100850004500720067006F0044006F0078002000C0
:1008600045005A0000000403090409028D00050137
:1008700000A0FA090400000103010100092111018F
:100880000001223F000705810308000A0904010056
:100890000103010200092111010001224D00070599
:1008A000820308000A090402000103000000092174
:1008B000110100012236000705830308000A09041C
:1008C00003000203000000092111010001222000A1
:1008D0000705840320000107050403200001090423
:1008E0000400010300000009211101000122390068
:1008F000070585031000011201100100000008ED3A
:10090000FE071301000102000105010906A101050E
:100910000719E029E71500250195087501810205F1
:100920000819012905950575019102950175039135
:1009300001050719002977150025019578750181B2
:1009400002C00631FF0974A1010975150025FF9544
:1009500020750881020976150025FF9520750891FC
:1009600002C005010980A101850216010026B70019
:100970001A01002AB700751095018100C0050C0905
:1009800001A1018503160100269C021A01002A9C80
:1009900002751095018100C005010902A10109013C
:1009A000A100050919012905150025019505750105
:1009B0008102950175038101050109300931158115
:1009C000257F95027508810609381581257F9501D7
:1009D00075088106050C0A38021581257F95017579
:1009E000088106C0C005010906A101050719E02913
:1009F000E7150025019508750181029501750881AB
:100A000001050819012905950575019102950175E2
:100A10000391010507190029FF150025FF950675AB
:100A2000088100C00A002530325820006B657962C9
:100A30006F6172645F7265706F72743A20000A00B1
:100A400025303258006B6579626F6172645F73653F
:100A5000745F6C65643A200064656C5F6B65795FF8
:100A60006269743A2063616E27742064656C3A2071
:100A7000253032580A006164645F6B65795F626992
:100A8000743A2063616E2774206164643A202530D3
:100A900032580A00646F6E652E0A00626F6F676DD0
:100AA00061676963207363616E3A202E2E2E2000E9
:100AB000290A002575002F002575005D2800256492
:100AC000002000256400200025640020002564002B
:100AD0007C0025303258006D6F7573656B65792029
:100AE0005B62746E7C782079207620685D28726560
:100AF000702F61636C293A205B006D6B5F776865CE
:100B0000656C5F74696D655F746F5F6D6178203DC2
:100B10002025640A006D6B5F776865656C5F6D61A9
:100B2000785F7370656564203D2025640A006D6BF5
:100B30005F74696D655F746F5F6D6178203D20251E
:100B4000640A006D6B5F6D61785F7370656564202A
:100B50003D2025640A006D6B5F696E746572766175
:100B60006C203D2025640A006D6B5F64656C6179C3
:100B7000203D2025640A006D6B5F776865656C5FBA
:100B800074696D655F746F5F6D6178203D202564C9
:100B90000A006D6B5F776865656C5F6D61785F7388
:100BA00070656564203D2025640A006D6B5F746983
:100BB0006D655F746F5F6D6178203D2025640A006C
:100BC0006D6B5F6D61785F7370656564203D202596
:100BD000640A006D6B5F696E74657276616C203DAE
:100BE0002025640A006D6B5F64656C6179203D208F
:100BF00025640A000A00257500363A207768656585
:100C00006C5F74696D655F746F5F6D61783A200029
:100C10000A00257500353A20776865656C5F6D615F
:100C2000785F73706565643A20000A0025750034AA
:100C30003A2074696D655F746F5F6D61783A20006A
:100C40000A00257500333A206D61785F7370656521
:100C5000643A20000A00257500323A20696E7465F6
:100C60007276616C286D73293A20000A00257500A0
:100C7000313A2064656C6179282A31306D73293AE4
:100C800020000A092D2056616C756573202D0A001D
:100C90004D3E004D25643E20003F00736574206486
:100CA000656661756C740A00433E20007768657262
:100CB000652064656C74613A20637572736F723D70
:100CC00025642C20776865656C3D25640A5365654D
:100CD00020687474703A2F2F656E2E77696B697077
:100CE000656469612E6F72672F77696B692F4D6F2D
:100CF0007573655F6B6579730A000A092D204D6F66
:100D00007573656B6579202D0A4553432F713A0938
:100D1000717569740A313A0964656C6179282A3100
:100D2000306D73290A323A09696E74657276616CA6
:100D3000286D73290A333A096D61785F73706565B0
:100D4000640A343A0974696D655F746F5F6D617828
:100D50000A353A09776865656C5F6D61785F737015
:100D60006565640A363A09776865656C5F74696D14
:100D7000655F746F5F6D61780A0A703A0970726915
:100D80006E742076616C7565730A643A09736574D4
:100D90002064656661756C74730A75703A092B314D
:100DA0000A646F776E3A092D310A706775703A09D7
:100DB0002B31300A7067646F776E3A092D31300A33
:100DC0000A7370656564203D2064656C7461202A37
:100DD000206D61785F7370656564202A20287265D4
:100DE00070656174202F2074696D655F746F5F6D2D
:100DF0006178290A003F004D3E2000433E20004C10
:100E000025640A000A092D20436F6E736F6C6520FC
:100E10002D0A4553432F713A09717569740A6D3A69
:100E2000096D6F7573656B65790A000A092D204D90
:100E300061676963202D0A643A0964656275670A0F
:100E4000783A096465627567206D61747269780A21
:100E50006B3A096465627567206B6579626F6172D0
:100E6000640A6D3A096465627567206D6F75736514
:100E70000A763A0976657273696F6E0A733A097376
:100E800074617475730A633A09636F6E736F6C658E
:100E9000206D6F64650A302D343A096C6179657292
:100EA000302D34284631302D4634290A506175736F
:100EB0003A09626F6F746C6F616465720A653A0912
:100EC000656570726F6D0A6E3A094E4B524F0A7A21
:100ED0003A09736C656570204C45442074657374E1
:100EE0000A000A002575002E6E6B726F3A20000A08
:100EF000002575002E737761705F6261636B736CA0
:100F00006173685F6261636B73706163653A20004F
:100F10000A002575002E737761705F6772617665D0
:100F20005F6573633A20000A002575002E6E6F5FBF
:100F30006775693A20000A002575002E7377617085
:100F40005F72616C745F726775693A20000A0025F0
:100F500075002E737761705F6C616C745F6C677580
:100F6000693A20000A002575002E636170736C6F6A
:100F7000636B5F746F5F636F6E74726F6C3A2000A7
:100F80000A002575002E737761705F636F6E74724F
:100F90006F6C5F636170736C6F636B3A20000A0063
:100FA00025303258006B65796D61705F636F6E66D6
:100FB00069672E7261773A20000A002575002E6D50
:100FC0006F7573653A20000A002575002E6B6579F0
:100FD000626F6172643A20000A002575002E6D610F
:100FE000747269783A20000A002575002E656E61DA
:100FF000626C653A20000A00253032580064656250
:1010000075675F636F6E6669672E7261773A20005D
:101010000A0025750064656661756C745F6C6179A2
:1010200065723A20003F004E4B524F3A206F666681
:101030000A004E4B524F3A206F6E0A0074696D657C
:10104000725F636F756E743A202530346C580A00F5
:101050006B6579626F6172645F6E6B726F3A2025A7
:10106000580A006B6579626F6172645F69646C65D0
:101070003A2025580A006B6579626F6172645F706F
:10108000726F746F636F6C3A2025580A00686F7333
:10109000745F6B6579626F6172645F6C65647328FD
:1010A000293A2025580A000A092D205374617475C5
:1010B00073202D0A004743433A20342E382E312026
:1010C0004156522D4C4942433A20312E382E30732E
:1010D000766E204156525F415243483A2061767203
:1010E000350A004F5054494F4E533A204C55464113
:1010F00020424F4F544D41474943204D4F55534592
:101100004B45592045585452414B455920434F4E69
:10111000534F4C4520434F4D4D414E44204E4B5272
:101120004F203531320A004255494C443A2035614E
:1011300031386134322D6469727479202831383A3B
:1011400034363A343620466562203231203230312E
:1011500036290A005649443A203078464545442805
:101160004572676F446F7820455A29205049443AA8
:1011700020307831333037284572676F446F7820DC
:10118000455A29205645523A203078303030310ABD
:1011900000444553433A20742E6D2E6B2E206B6510
:1011A00079626F617264206669726D776172652021
:1011B000666F72204572676F646F780A000A092DA6
:1011C0002056657273696F6E202D0A000A6D6F7567
:1011D00073653A206F66660A000A6D6F7573653A2B
:1011E000206F6E0A000A6B6579626F6172643A2043
:1011F0006F66660A000A6B6579626F6172643A20F5
:101200006F6E0A000A6D61747269783A206F6666C3
:101210000A000A6D61747269783A206F6E0A000ADA
:1012200064656275673A206F6E0A000A64656275CC
:10123000673A206F66660A000A0A626F6F746C6F05
:10124000616465722E2E2E2000433E20006565638A
:101250006F6E6669673A0A00536C656570204C458D
:101260004420746573740A00000000000000000050
:10127000000000010204060A0F17202C3A4A5D7193
:10128000879DB3C7DAE9F5FCFFFCF5E9DAC7B39D42
:1012900087715D4A3A2C20170F0A060402010000EC
:1012A000000000000000000011241FBECFEFDAE0B4
:1012B000DEBFCDBF04B603FE24C08091F90190913A
:1012C000FA01A091FB01B091FC018730904BA7403F
:1012D000B04BB9F41092F9011092FA011092FB018F
:1012E0001092FC0114BE84B7877F84BF88E10FB6DB
:1012F000F89480936000109260000FBEE0E0FFE37E
:10130000099511E0A0E0B1E0EAECFFE502C005902C
:101310000D92AA33B107D9F721E0AAE3B1E001C0E9
:101320001D92A93FB207E1F70E94FE110C94E32F32
:101330000C940000FF93EF93E0913A01F0913B0190
:10134000309709F00995EF91FF910895FC0185917F
:10135000803011F0EFDFFBCF0895FF27E0E230E2AD
:1013600047FF0CC0419597FF09C0EDE2609570956D
:1013700080959095611D711D811D911D27FF02C0F3
:10138000219530E350E2AA27660F771F881F991F27
:10139000AA1FA41710F0A41B63955A95A9F7AA30A9
:1013A00008F0A95FA05DAF93F39561157105810504
:1013B000910541F7ED3211F4EF93F395F21718F41C
:1013C0003F93F395FBCF8F91B5DFFA95E1F7089541
:1013D000E991F9918591803021F0853219F0AADFE9
:1013E000F9CF089520E0E89455915532C1F3503378
:1013F00011F4689455915A3348F4505390F3220FE6
:10140000022E220F220F200D250FF4CF0EF421956E
:1014100089919991533619F3533729F1533559F17D
:10142000BC0188279927E8945C3621F48991999129
:1014300068945591543639F446EF7EF077FF0DC02D
:101440008FEF9FEF0AC055374AE039F0583540E139
:1014500021F0523642E009F00895FF93EF937DDFCB
:10146000EF91FF91B7CFFF93EF93FC018191803013
:10147000B9F360DFFBCFFF93EF9368DFF1CFDF932A
:10148000CF93CDB7DEB72596A3DFCF91DF91089537
:10149000613049F0623071F488E00E94BC2189E03B
:1014A0000E94BC2107C0FC018281882319F080EED4
:1014B00090E0089580E090E0089580E090E0089545
:1014C00056985E9825982D9826982E9827982F98AC
:1014D0008091BC019091BD01A091BE01B091BF016E
:1014E00090FF02C0259A2D9A8091C0019091C10170
:1014F000A091C201B091C3010297A105B10511F4F9
:10150000269A2E9A0E94421781FF02C0279A2F9A8C
:1015100080E090E0089580E69AE0892B11F00E9427
:10152000600A80E090E0089556985E9825982D987E
:1015300026982E9827982F988FEF90E09093890007
:101540008093880090938B0080938A0090938D0005
:1015500080938C00259A2D9A2FEF80E792E02150FE
:1015600080409040E1F700C00000269A2E9A2FEFAD
:1015700080E792E0215080409040E1F700C00000F9
:10158000279A2F9A2FEF80E792E0215080409040D9
:10159000E1F700C0000025982D982FEF80E792E03A
:1015A000215080409040E1F700C0000026982E981E
:1015B0002FEF80E792E0215080409040E1F700C09B
:1015C000000027982F9856985E9825982D98269871
:1015D0002E9827982F98089589EA8093800089E0B3
:1015E0008093810024982C983F988AB18F748AB98F
:1015F0006E98479A8BB1806B8BB9769A0E94940A49
:101600008DE59AE0892B11F00E945D0A80E090E060
:10161000089580E28093000180913C0181110EC009
:101620000E94580B81E080933C012FEF83ED90E303
:10163000215080409040E1F700C0000080E40E940B
:101640005E0B8093000181112EC00E94880B809355
:101650000001811128C00E94880B80930001811134
:1016600022C08FE30E94880B8093000181111BC070
:101670000E94800B80E40E945E0B80930001811128
:1016800012C08CE00E94880B8093000181110BC076
:101690000E94880B80930001811105C08FE30E9496
:1016A000880B809300010E94800B809100010895B7
:1016B0001092B9008AE08093B800089594EA90935C
:1016C000BC009091BC0097FFFCCF9091B900987F2F
:1016D000983021F0903111F081E008958093BB00A3
:1016E00084E88093BC008091BC0087FFFCCF809190
:1016F000B900887F883111F0803471F780E0089557
:1017000084E98093BC008091BC0084FDFCCF0895E7
:101710008093BB0084E88093BC008091BC0087FF6D
:10172000FCCF9091B900987F81E0983209F480E075
:10173000089584E88093BC008091BC0087FFFCCFB3
:101740008091BB00089580910001811115C080E453
:101750000E945E0B8093000181110CC082E10E9407
:10176000880B80930001811105C08FEF0E94880BC8
:10177000809300010E94800B84B1807F84B985B181
:10178000807F85B98AB1837F8AB98BB1837F8BB91A
:101790003E98469808950E94090B809300010E948C
:1017A000A30B80B38C7080BB81B3836F81BBECE4EF
:1017B000F1E0AEE3B1E011921D9281E0EA35F80765
:1017C000D1F78CEE9AE0892B11F00C94EC0A089575
:1017D0009F92AF92BF92CF92DF92EF92FF920F93C0
:1017E0001F93CF93DF93809100018823E1F08091D4
:1017F0003D018F5F80933D01811115C081EE97E01F
:101800000E94A6090E94090B80930001882329F0F9
:1018100087EC97E00E94A60906C083EB97E00E9440
:10182000A6090E94940A0EE311E0C0E0D0E0BB24B8
:10183000B39482E0A82ECC24C394D12C24EAE22EC7
:1018400027E0F22EC73000F580910001811162C0BF
:1018500080E40E945E0B80930001811112C082E13E
:101860000E94880B8093000181110BC0C6010C2ED1
:1018700001C0880F0A94EAF780950E94880B809334
:1018800000010E94800B46C0CA30A1F028F4C83085
:1018900059F0C93061F005C0CC3089F070F0CD301E
:1018A00089F0209A289810C0219A29980DC0229A70
:1018B0002A980AC0239A2B9807C0529A01C0539ABB
:1018C0005B9802C03E9A4698E0EAEA95F1F78FB13C
:1018D000799985C092E081708B25892B7C9B02C011
:1018E00090E001C094E0892B7D9B02C090E001C094
:1018F00098E0892B7E9B02C090E001C090E1892B8B
:101900009FB19095991F9927991F9295990F907E55
:10191000892B10C080910001811176C080E40E9463
:101920005E0B80930001882309F45BC0912C0E9418
:10193000800B892DF8019081981739F1808380916F
:101940000101882301F18091D70180FF04C089EA59
:1019500097E00E94A6098091D70180FF0CC080917A
:1019600001011F928F93FF92EF920E943F0A0F9006
:101970000F900F900F908091D70180FF04C082EAF2
:1019800097E00E94A609A09201010E94A30B219654
:101990000F5F1F4FCE30D10509F054CF8091010168
:1019A0008823B1F0815080930101882339F08FE9B9
:1019B0009FE00197F1F700C000000AC0ACE4B1E07D
:1019C000EEE3F1E081918D9391E0EC34F907D1F7EA
:1019D0008BE89AE0892BD1F00E948B0A17C090E027
:1019E0007ACF83E10E94880B8093000181119ECF02
:1019F00081E40E945E0B80930001811197CF0E94C9
:101A0000990B982E909493CF80E094CF81E0DF9152
:101A1000CF911F910F91FF90EF90DF90CF90BF90EB
:101A2000AF909F900895E82FF0E0E45BFE4F808137
:101A30000895CF92DF92EF92FF920F931F93CF936F
:101A4000DF938BE897E00E94A6093CE4E32E31E0A7
:101A5000F32EC0E0D0E046E8C42E47E0D42E0DE7D8
:101A600017E0DF93CF93DF92CF920E943F0A83E883
:101A700097E00E94A609F70181917F0190E00E9402
:101A800087239F938F931F930F930E943F0A8BE7A7
:101A900097E00E94A60921968DB79EB708960FB6CB
:101AA000F8949EBF0FBE8DBFCE30D105D1F6DF9129
:101AB000CF911F910F91FF90EF90DF90CF900895FD
:101AC0008B3B910578F4883A910540F5853A91056C
:101AD000D0F48430910508F0B1C08130910509F44B
:101AE000ADC06BC0803E910508F467C0883E91058B
:101AF00008F4A4C09C01205F31092031310508F0B1
:101B00005CC090650895853A910509F459C0863AFC
:101B1000910509F458C083E890E40895883A910546
:101B200009F454C0893A910509F453C08A3A9105E1
:101B300009F452C08B3A910509F451C08C3A9105D1
:101B400009F450C08D3A910509F44FC0803B9105CE
:101B500009F44EC08E3A910509F44DC08F3A9105B3
:101B600009F44CC0813B910509F44BC0823B9105BF
:101B700009F44AC0833B910509F449C0843B9105AF
:101B800009F448C0853B910509F447C0863B91059F
:101B900009F446C0873B910509F445C0883B91058F
:101BA00009F444C0893B910509F443C08A3B91057F
:101BB00009F042C08AE296E4089580E090E008953A
:101BC00081E890E4089582E890E4089582EE94E438
:101BD000089589EE94E408958AEE94E4089585EBDF
:101BE00094E4089586EB94E4089587EB94E40895D3
:101BF0008CEC94E408958DEC94E4089583E895E4E6
:101C000008958AE895E4089582E995E4089584E9C1
:101C100095E4089581E296E4089583E296E40895B8
:101C200084E296E4089585E296E4089586E296E4D7
:101C3000089587E296E4089580E094E40895089575
:101C400096E0799FF001112494E5899FE00DF11D44
:101C50001124E60FF11DEE0FFF1FE551FF4F859197
:101C600094910895880F991F85599040FC018591A2
:101C700094910895880F991F85519F4FFC0185917C
:101C80009491089526E0729FF001112444E5849F09
:101C9000E00DF11D1124E60FF11DEE0FFF1FE551C0
:101CA000FF4F25913491C9019A9581159F4110F4F8
:101CB000C9010895C90190528115904128F4C901C4
:101CC0009F700E943A0E0895C9019053811590416A
:101CD00020F4C9019927906C0895211580E53807F3
:101CE00069F40E94051D9FEF24E34CE091502040D1
:101CF0004040E1F700C000000C944324213080E50F
:101D0000380751F48BEF97E00E94A6098091D70124
:101D100081608093D7010895C90190558115904144
:101D200008F050C0832F99278F7099278130910533
:101D3000D9F4A9014370552702C0880F991F4A950D
:101D4000E2F79C68A90164E0440F551F6A95E1F72A
:101D500044275370842B952B73E0220F331F7A9501
:101D6000E1F7207633271DC08230910529F4922FA8
:101D70008827816F906A089583309105A9F4A9019D
:101D80004370552781E090E002C0880F991F4A9563
:101D9000E2F79C6843E0220F331F4A95E1F7207E6B
:101DA0003770822B932B08950497F1F4A9014370A7
:101DB000552781E090E002C0880F991F4A95E2F70D
:101DC0009A68E8CFC90190578115904120F4C90164
:101DD0009F7090620895C90190588115904120F438
:101DE000C9019F70906A0895203E3105E0F4203CBF
:101DF000310558F52133310509F470C048F4293212
:101E0000310509F464C02A32310509F46EC074C08A
:101E100029333105F1F022383105D9F02533310568
:101E200009F44EC069C0233E310589F138F4203EE3
:101E30003105C1F0223E3105E1F05EC0263E31059C
:101E400069F1273E3105A9F157C0C9010E94320E40
:101E500008958091EA0180FD02C081FF4DC080EEAF
:101E600090E04BC08091EA0180FFF9CF89E390E0D8
:101E700044C08091EA0182FF0EC08091EA0184FF94
:101E800003C080E090E039C083EE90E036C08091DE
:101E9000EA0182FFF2CF82EE90E02FC08091EA014A
:101EA00083FF0BC08091EA0184FDEBCF87EE90E0C9
:101EB00024C08091EA0183FFF5CF86EE90E01DC03B
:101EC0008091EA0185FF07C089E290E016C0809109
:101ED000EA0185FFF9CF85E390E00FC08091EA0128
:101EE00086FF07C08AE290E008C08091EA0186FF81
:101EF000F9CF81E390E001C0C9010E94600D08950F
:101F0000089580916D0108959FB7F89410925C0137
:101F10009FBF9091F001943009F058C09091E90072
:101F20009F702091EC0020FF02C020E801C020E05B
:101F3000292B94E09093E9009091EB0090FF43C02F
:101F40009091EE0097FF3FC090915A01992321F0A4
:101F50009091E80095FF37C010925A0196E03091B9
:101F6000E80035FD15C03091F001343061F5309155
:101F7000EB0035FD28C0915021F481E080935A0197
:101F800022C0EFE9FFE03197F1F700C00000E7CF92
:101F90008093F1008091E80085FD0AC08091E800FF
:101FA00080FFFCCF8091E8008E778093E80006C028
:101FB0008FB7F89491E090935C018FBF2F702093BE
:101FC000E90080E008952F702093E9008FEF0895D5
:101FD000CF93DF9300D01F92CDB7DEB72091F001F1
:101FE000243019F523E029839B838A832093E90019
:101FF0008FEF9091E800815095FD06C095ED9A9580
:10200000F1F700008111F5CF8091E80085FF0DC048
:1020100040E050E063E070E0CE0101960E94B7120C
:102020008091E8008E778093E8000F900F900F90DA
:10203000DF91CF910895CF93DF9300D01F92CDB75A
:10204000DEB72091F001243021F522E029839B8323
:102050008A8383E08093E9008FEF9091E8008150BC
:1020600095FD06C095ED9A95F1F700008111F5CF29
:102070008091E80085FF0DC040E050E063E070E033
:10208000CE0101960E94B7128091E8008E7780936E
:10209000E8000F900F900F90DF91CF91089520915D
:1020A000F0012430F1F422E02093E9002FEF309189
:1020B000E800215035FD06C035ED3A95F1F70000F6
:1020C0002111F5CF2091E80025FF0BC040E050E042
:1020D00065E070E00E94B7128091E8008E778093EF
:1020E000E8000895CF93DF93EC018091F0018430F4
:1020F00009F047C080910C018823E1F080910D0127
:102100008823C1F085E08093E9008FEF9091E8008B
:10211000815095FD06C095E19A95F1F70000811177
:10212000F5CF8091E80085FF2CC040E050E060E1F1
:1021300070E017C081E08093E9008FEF9091E80094
:10214000815095FD06C095ED9A95F1F7000081113B
:10215000F5CF8091E80085FF14C040E050E068E0D2
:1021600070E0CE010E94B7128091E8008E778093D4
:10217000E80080E1FE01ADE5B1E001900D928A95A5
:10218000E1F7DF91CF91089582E398E00E94A609DC
:102190008091EF01811109C00E9449140E94A61488
:1021A0008091E20084608093E20008958EE298E0DE
:1021B0000E94A6091092EF0108958AE298E00C941B
:1021C000A60986E298E00E94A6090C94042E82E2F9
:1021D00098E00E94A6090E94DE230E940A2E0E9417
:1021E00042170C94800F80915B018F5F80935B019D
:1021F00062E30E94782F911135C010925B018091AB
:102200005C01882379F18091F001843049F5809157
:10221000E9008F709091EC0090FF02C090E801C03F
:1022200090E0982B84E08093E9008091EB0080FFA0
:1022300014C08091EE0087FF10C08091E80085FFF8
:1022400003C01092F100F9CF8091E80080FF05C033
:102250008091E8008E778093E8009F709093E9006A
:1022600010925C01089542E061EC81E00E94C3138A
:1022700042E061EC82E00E94C31342E061EC83E043
:102280000E94C31342E261EC84E00E94C31342E166
:1022900061EC85E00C94C3138091F201833009F462
:1022A00055C030F4813071F0823009F48EC0089549
:1022B0008A3009F47AC08B3009F460C0893009F0A3
:1022C0009CC020C08091F101813A09F096C08091B4
:1022D000E800877F8093E8008091F5019091F601F6
:1022E000892B21F060E080E090E003C060E18DE5A3
:1022F00091E070E00E9400138091E8008B7780935A
:10230000E80008958091F101813209F076C0809152
:10231000F5019091F601009719F0049709F06DC04E
:102320008091E800877F8093E8008091E80082FD3B
:1023300005C08091F0018111F8CF5FC08091F1005C
:1023400080936D018091E8008B7753C08091F101FB
:10235000813A09F052C08091F5019091F601892BE4
:1023600009F04BC08091E800877F8093E80080915E
:10237000E80080FFFCCF80910C0136C08091F10114
:102380008132D9F58091F5019091F601892BA9F55B
:102390008091E800877F8093E8000E94F813809185
:1023A000F30180930C010C94051D8091F1018132A1
:1023B00021F58091E800877F8093E8000E94F81360
:1023C0008091F40180936E0108958091F101813A2A
:1023D000A1F48091E800877F8093E8008091E80075
:1023E00080FFFCCF80916E018093F1008091E80026
:1023F0008E778093E8000C94F813089584B7877F54
:1024000084BF88E10FB6F89480936000109260005A
:102410000FBE90E080E80FB6F8948093610090932F
:1024200061000FBE0E94CB170E9449140E94A6149F
:102430008091E20084608093E20084E89FE00E9443
:10244000702378940E9420170E94CD1782E091E0BB
:102450000E943D170E94F22D81E198E00E94A6099A
:102460008091F001853089F48DE098E00E94A60902
:102470000E94A1238091EE01882391F30E94C92339
:10248000882371F30E94A112EBCF0E94FB17E8CFC3
:10249000292F332723303105A9F06CF42130310581
:1024A00009F442C02230310509F043C08DE890E0C4
:1024B0002AE638E042C021323105C9F02232310526
:1024C00019F137C099278130910541F0823091058B
:1024D00041F0892B71F5E6E6F8E005C0EEE4F8E09E
:1024E00002C0E6E3F8E0849190E09F0126C06530E9
:1024F00000F5E62FF0E0EE0FFF1FEB5DFE4F2081B1
:10250000318189E090E019C0653098F4E62FF0E061
:10251000DF01AA0FBB1FA55EBE4F2D913C91EA5E65
:10252000FE4F808190E009C082E190E027EF38E023
:1025300004C080E090E020E030E0FA0131832083A5
:10254000089580E189BD82E189BD09B400FEFDCF17
:102550008091D8008F7D8093D8008091E0008260C8
:102560008093E0008091E00081FDFCCF0895CF9240
:10257000DF92EF92FF920F931F93CF93DF937C0133
:102580008B01EA010E941914811131C0209731F0AA
:1025900088819981081B190BE80EF91EC12CD12CDA
:1025A0000115110519F18091E80085FD14C0809195
:1025B000E8008E778093E800209741F08881998128
:1025C0008C0D9D1D9983888385E011C00E9419148C
:1025D000882331F30CC0F70181917F018093F100D2
:1025E00001501109FFEFCF1ADF0ADACF80E0DF9147
:1025F000CF911F910F91FF90EF90DF90CF900895B2
:102600002091F7013091F8012617370748F061153E
:10261000710539F42091E8002E772093E80001C07D
:10262000B901FC0120E061157105B9F18091F0015B
:10263000882309F440C0853009F43FC08091E80048
:1026400083FD3DC08091E80082FF06C08091E800D4
:1026500082FF26C080E008958091E80080FFE3CFEC
:102660002091F3008091F20090E0922B61157105AA
:1026700051F08830910538F421912093F100615098
:1026800071090196F3CF21E0089709F020E08091CD
:10269000E8008E778093E800C6CF2111C7CFD6CF50
:1026A0008091F001882339F0853039F08091E8007D
:1026B00083FFCCCF04C082E0089583E0089581E0D9
:1026C00008952091F7013091F8012617370748F057
:1026D0006115710539F42091E8002E772093E80008
:1026E00001C0B901FC0120E061157105C1F18091C3
:1026F000F001882309F441C0853009F440C080917D
:10270000E80083FD3EC08091E80082FF06C0809112
:10271000E80082FF27C080E008958091E80080FFF4
:10272000E3CF2091F3008091F20090E0922B6115AD
:10273000710559F08830910540F424912093F100FF
:102740003196615071090196F2CF21E0089709F0A6
:1027500020E08091E8008E778093E800C5CF2111BA
:10276000C6CFD5CF8091F001882339F0853039F07C
:102770008091E80083FFCBCF04C082E0089583E01E
:10278000089581E00895982F973058F59093E900C7
:10279000981739F07091EC002091ED005091F00005
:1027A00003C0242F762F50E021FF19C03091EB0099
:1027B0003E7F3093EB003091ED003D7F3093ED0094
:1027C0003091EB0031603093EB007093EC0020937C
:1027D000ED005093F0002091EE0027FF07C09F5FAF
:1027E000D3CF8F708093E90081E0089580E0089551
:1027F0008091F10187FD05C08091E80080FF0EC047
:1028000012C08091E80082FD05C08091F001811125
:10281000F8CF08958091E8008B7708C08091F0018F
:102820008111EACF08958091E8008E778093E800C7
:1028300008958091E4009091E50045E62091EC0038
:1028400020FF21C02091E80020FD21C02091F0014F
:10285000222389F0253089F02091EB0025FD0FC05F
:102860002091E4003091E5002817390739F34150F1
:1028700041F0C901E3CF82E0089583E0089581E04B
:10288000089584E008952091E80022FFDFCF80E0E2
:1028900008950E94B7140E94BF14E0EEF0E080811A
:1028A00081608083E8EDF0E080818F77808319BCC0
:1028B000A7EDB0E08C918E7F8C9380818F7E80839A
:1028C0001092EF0108950F931F93CF93DF930E940F
:1028D000B7140E94BF14C8EDD0E088818F77888339
:1028E00088818068888388818F7D888319BC109255
:1028F000F0011092EC011092EE011092ED0100EE49
:1029000010E0F80180818B7F8083888181608883DB
:1029100042E060E080E00E94C313E1EEF0E08081DD
:102920008E7F8083E2EEF0E0808181608083808111
:1029300088608083F80180818E7F808388818061B8
:102940008883DF91CF911F910F910895E8EDF0E01A
:1029500080818F7E8083E7EDF0E0808181608083DD
:1029600084E082BF81E08093EF010C946314E8ED72
:10297000F0E080818E7F80831092E20008951092B3
:10298000DA001092E10008951F920F920FB60F9295
:1029900011242F933F934F935F936F937F938F9364
:1029A0009F93AF93BF93EF93FF938091E10082FFDA
:1029B0000BC08091E20082FF07C08091E1008B7F15
:1029C0008093E1000E94F3108091DA0080FF1FC025
:1029D0008091D80080FF1BC08091DA008E7F8093A9
:1029E000DA008091D90080FF0DC080E189BD82E1CD
:1029F00089BD09B400FEFDCF81E08093F0010E9403
:102A0000C41005C019BC1092F0010E94D61080912C
:102A1000E10080FF19C08091E20080FF15C0809125
:102A2000E2008E7F8093E2008091E20080618093DB
:102A3000E2008091D80080628093D80019BC85E0C4
:102A40008093F0010E94E1108091E10084FF30C08A
:102A50008091E20084FF2CC080E189BD82E189BDC4
:102A600009B400FEFDCF8091D8008F7D8093D800FF
:102A70008091E1008F7E8093E1008091E2008F7E63
:102A80008093E2008091E20081608093E200809177
:102A9000EC01882311F084E007C08091E30087FFF8
:102AA00002C083E001C081E08093F0010E94E71042
:102AB0008091E10083FF29C08091E20083FF25C05F
:102AC0008091E100877F8093E10082E08093F001B4
:102AD0001092EC018091E1008E7F8093E100809163
:102AE000E2008E7F8093E2008091E200806180931B
:102AF000E20042E060E080E00E94C3138091F000B9
:102B000088608093F0000E94DD10FF91EF91BF91EB
:102B1000AF919F918F917F916F915F914F913F9175
:102B20002F910F900FBE0F901F9018951F920F922C
:102B30000FB60F9211242F933F934F935F936F9390
:102B40007F938F939F93AF93BF93CF93EF93FF9315
:102B5000C091E900CF708091EC001092E900809163
:102B6000F000877F8093F00078940E94D215109235
:102B7000E9008091F00088608093F000C093E90044
:102B8000FF91EF91CF91BF91AF919F918F917F91E5
:102B90006F915F914F913F912F910F900FBE0F90CA
:102BA0001F9018951F93CF93DF93CDB7DEB7AA97E9
:102BB0000FB6F894DEBF0FBECDBFE1EFF1E080911C
:102BC000F100819321E0E93FF207C9F70E944C111F
:102BD0008091E80083FF1CC12091F1013091F20146
:102BE000832F90E08A30910508F012C1FC01EA5A67
:102BF000FF4F0C94982F203881F0223809F008C13B
:102C00008091F5018F708093E9008091EB0085FB46
:102C1000882780F91092E90006C08091ED0190911B
:102C2000EE01911182609091E800977F9093E80007
:102C30008093F1001092F100C5C0822F8D7F09F0C2
:102C4000E7C0222319F0223061F0E2C08091F30145
:102C5000813009F0DDC0333009F080E08093EE016F
:102C600028C08091F301811124C02091F5012F70BB
:102C700009F4CEC02093E9008091EB0080FF19C0D9
:102C80008091EB00333011F4806211C08061809339
:102C9000EB0081E090E0022E01C0880F0A94EAF771
:102CA0008093EA001092EA008091EB0088608093A4
:102CB000EB001092E9008091E800877F86C0211127
:102CC000A7C01091F3011F778091E3008078812BDA
:102CD0008093E3008091E800877F8093E8000E9462
:102CE000F8138091E80080FFFCCF8091E3008068BA
:102CF0008093E300112311F083E001C082E0809310
:102D0000F00186C02058223008F082C08091F30183
:102D10009091F4018C3D23E0920779F583E08A835A
:102D20008AE289834FB7F894DE01139620E03EE0F3
:102D300051E2E32FF0E050935700E49120FF03C0ED
:102D4000E295EF703F5FEF708E2F90E0EA3010F069
:102D5000C79601C0C0968D939D932F5F243149F78C
:102D60004FBF8091E800877F8093E8006AE270E0BF
:102D7000CE0101960E94001314C0AE014F5F5F4F59
:102D80006091F5010E944812009709F441C020911A
:102D9000E800277F2093E800BC0189819A810E9486
:102DA00061138091E8008B778093E80031C0203870
:102DB00079F58091E800877F8093E8008091EC01AD
:102DC0008093F1008091E8008E778093E8000E9464
:102DD000F8131EC021111CC09091F3019230C0F471
:102DE0008091E800877F8093E8009093EC010E9437
:102DF000F8138091EC01811104C08091E30087FFFA
:102E000002C084E001C081E08093F0010E94331190
:102E10008091E80083FF0AC08091E800877F80935B
:102E2000E8008091EB0080628093EB00AA960FB6D9
:102E3000F894DEBF0FBECDBFDF91CF911F910895F3
:102E4000CF938091F0018823B1F08091E9008F70D9
:102E50009091EC0090FF02C090E801C090E0C92F73
:102E6000C82B1092E9008091E80083FD0E94D215E2
:102E7000CF70C093E900CF9108959093740180932F
:102E800073010895E0917301F0917401309721F07E
:102E90000190F081E02D099480E00895FF920F9356
:102EA0001F93CF93DF938C01E0917301F091740134
:102EB000309799F10280F381E02D09958091D70137
:102EC00082FF2BC080FF04C08CE29AE00E94A6091A
:102ED000E80180E1F82E06E21AE08091D70180FF38
:102EE0000BC088811F928F931F930F930E943F0AFC
:102EF0000F900F900F900F90FA942196F110EDCF54
:102F00008091D70180FF09C084E29AE0DF91CF91E0
:102F10001F910F91FF900C94A609DF91CF911F9103
:102F20000F91FF900895E0917301F0917401309733
:102F300021F00480F581E02D09940895209171011C
:102F4000309172018217930771F090937201809310
:102F50007101E0917301F0917401309721F00680C6
:102F6000F781E02D0994089520916F01309170014F
:102F70008217930771F09093700180936F01E09135
:102F80007301F0917401309721F00084F185E02DF8
:102F90000994089508950C94CA170E94E0230E9492
:102FA000CB0B0C94A624CF93C82F8091D70182FF1E
:102FB0001EC080FF04C085E49AE00E94A6098091AB
:102FC000D70180FF0CC01F92CF9320E43AE03F93DB
:102FD0002F930E943F0A0F900F900F900F908091B7
:102FE000D70180FF04C08EE39AE00E94A6098C2FCF
:102FF000CF910C94800FCF92DF92EF92FF920F93BC
:103000001F93CF93DF93CDB7DEB72B970FB6F8940E
:10301000DEBF0FBECDBF0E94E80B36E7E32E31E0E6
:10302000F32E00E010E0C02E802F0E94130DF70158
:10303000D1907F01D826B1F40F5F1F4F0E301105DC
:1030400091F78FEF89838A831B820E94E923816035
:10305000782F9D838C8349815A816B818D810E9459
:103060009E1841C09091D70191FF04C08B870E94A8
:10307000190D8B8520E030E04D2D50E0922FBA01E4
:10308000022E02C0759567950A94E2F760FF25C08D
:103090002E83CF82EE24E394F12C02C0EE0CFF1CB1
:1030A0009A95E2F790E08E219F2121E0892B09F487
:1030B00020E028870E94E9238160782F9A878987FA
:1030C0004E815F8168858A850E949E18F801EA58C2
:1030D000FE4F80818E25808306C02F5F3F4F2630B4
:1030E000310561F6A9CF0E941428109175010E9444
:1030F00042171817A1F00E944217809375012B9672
:103100000FB6F894DEBF0FBECDBFDF91CF911F91F8
:103110000F91FF90EF90DF90CF900C94D3172B96E8
:103120000FB6F894DEBF0FBECDBFDF91CF911F91D8
:103130000F91FF90EF90DF90CF900895CF93DF93A2
:10314000CDB7DEB72B970FB6F894DEBF0FBECDBF5D
:103150004F83588769877A878B87DE01119686E0CF
:10316000FD0111928A95E9F785E0FE0137960190FD
:103170000D928A95E1F749815A816B817C818D811D
:103180009E810E94D11F2B960FB6F894DEBF0FBE12
:10319000CDBFDF91CF910895CF93C82F882309F435
:1031A000C1C0823859F40E94421781FDBBC089E337
:1031B0000E946E220E944A2389E30CC0833879F46E
:1031C0000E94421780FDAEC083E50E946E220E94DD
:1031D0004A2383E50E94BF22CF910C944A2384386E
:1031E00059F40E94421782FD9DC087E40E946E221E
:1031F0000E944A2387E4EECF8CEF8C0F813A48F48B
:103200008C2F0E949D2C81118DC08C2F0E946E22CC
:10321000E3CF80E28C0F883048F4C77081E001C0B2
:10322000880FCA95EAF70E941123D6CF8BE58C0F41
:10323000833078F4C53A29F0C63A31F482E890E058
:1032400005C081E890E002C083E890E0CF910C9443
:103250009E1788E58C0F833108F064C0C83A39F1B5
:10326000C93A41F1CA3A49F1CB3A51F1CC3A59F154
:10327000CD3A61F1C03B69F1CE3A71F1CF3A79F1C3
:10328000C13B81F1C23B89F1C33B91F1C43B99F150
:10329000C53BA1F1C63BA9F1C73BB1F1C83BB9F1B0
:1032A000C93BC1F1CA3BC9F58AE292E038C082EE5F
:1032B00090E035C089EE90E032C08AEE90E02FC0F9
:1032C00085EB90E02CC086EB90E029C087EB90E086
:1032D00026C08CEC90E023C08DEC90E020C083E809
:1032E00091E01DC08AE891E01AC082E991E017C020
:1032F00084E991E014C081E292E011C083E292E09F
:103300000EC084E292E00BC085E292E008C086E243
:1033100092E005C087E292E002C080E090E0CF91A9
:103320000C94B417CF910895882309F44BC08238C8
:1033300059F40E94421781FF45C089E30E946E2222
:103340000E944A2389E30CC0833871F40E9442171B
:1033500080FF38C083E50E946E220E944A2383E5E5
:103360000E94BF220C944A23843859F40E944217C9
:1033700082FF28C087E40E946E220E944A2387E4CD
:10338000EFCF9CEF980F913A58F390E2980F983056
:1033900050F4877091E001C0990F8A95EAF7892F60
:1033A0000E941723DFCF9BE5980F933020F480E035
:1033B00090E00C949E17885A833120F480E090E0CE
:1033C0000C94B4170895882321F00E9411230C94C3
:1033D0004A230895882321F00E9417230C944A233E
:1033E0000895CF92DF92EF92FF920F931F93CF93A6
:1033F000DF93CDB7DEB728970FB6F894DEBF0FBEC8
:10340000CDBF8C0185E0F801DE01119601900D928F
:103410008A95E1F7F80140813181F280258122957A
:103420002F7083819481892B31F03F3F31F481E00B
:103430004F3F19F403C081E001C080E080FDC4C2A9
:1034400049833A8389819A812F830E942C229E830B
:1034500088870E942B220E94FE204E81E42FE29555
:10346000EF70F0E0E05AFF4F2F8168850C94982FA1
:10347000842F807F142F1F70882311F01295107FE6
:10348000FF2059F0112309F454C2812F68870E944C
:1034900021230E944A2368854CC2862F0E949419DA
:1034A000112309F491C2812F0E94272328960FB679
:1034B000F894DEBF0FBECDBFDF91CF911F910F916A
:1034C000FF90EF90DF90CF900C944A23342F307F01
:1034D000842F8F70303211F08295807F662319F02F
:1034E000613019F12BC0FF20B1F0222309F493C100
:1034F000213009F090C128960FB6F894DEBF0FBEB8
:10350000CDBFDF91CF911F910F91FF90EF90DF9092
:10351000CF900C943123222319F0213009F454C2A6
:103520008E830E9434238E8189C1FF2021F02230B6
:1035300008F04AC270C1211147C280C1FF2021F0AA
:10354000222309F468C1F5C1222309F477C105C219
:10355000242F26952695237030E02115310521F082
:1035600021303105C9F030C2FF2021F0862F942F81
:10357000937002C080E090E028960FB6F894DEBF0A
:103580000FBECDBFDF91CF911F910F91FF90EF90B4
:10359000DF90CF900C949E17FF2021F0862F942F60
:1035A000937002C080E090E028960FB6F894DEBFDA
:1035B0000FBECDBFDF91CF911F910F91FF90EF9084
:1035C000DF90CF900C94B417862FFF2019F00E9443
:1035D0009A2602C00E94022728960FB6F894DEBFF2
:1035E0000FBECDBFDF91CF911F910F91FF90EF9054
:1035F000DF90CF900C948727842F837009F076C0DA
:10360000F110E2C1262F229526952770220F220F56
:10361000862F8F70C82ED12CE12CF12C022E04C0E5
:10362000CC0CDD1CEE1CFF1C0A94D2F764FF10C00A
:103630006FE070E080E090E004C0660F771F881FA5
:10364000991F2A95D2F7609570958095909503C043
:1036500060E070E0CB01242F269526952370422F41
:1036600050E042305105D1F04330510559F16C29F9
:103670007D298E299F294130510541F128960FB6A9
:10368000F894DEBF0FBECDBFDF91CF911F910F9198
:10369000FF90EF90DF90CF900C9423216C297D292F
:1036A0008E299F2928960FB6F894DEBF0FBECDBF96
:1036B000DF91CF911F910F91FF90EF90DF90CF900E
:1036C0000C943D210E942321C701B60128960FB614
:1036D000F894DEBF0FBECDBFDF91CF911F910F9148
:1036E000FF90EF90DF90CF900C940921FF2019F00C
:1036F000842F817001C08695882309F465C1262F27
:10370000229526952770220F220F862F8F70C82EA4
:10371000D12CE12CF12C022E04C0CC0CDD1CEE1CB3
:10372000FF1C0A94D2F764FF10C06FE070E080E0E5
:1037300090E004C0660F771F881F991F2A95D2F763
:10374000609570958095909503C060E070E0CB0126
:10375000242F269526952370422F50E042305105A4
:10376000D1F04330510559F16C297D298E299F29CB
:103770004130510541F128960FB6F894DEBF0FBED7
:10378000CDBFDF91CF911F910F91FF90EF90DF9010
:10379000CF900C94F7216C297D298E299F2928969A
:1037A0000FB6F894DEBF0FBECDBFDF91CF911F9152
:1037B0000F91FF90EF90DF90CF900C9411220E9418
:1037C000F721C701B60128960FB6F894DEBF0FBEE9
:1037D000CDBFDF91CF911F910F91FF90EF90DF90C0
:1037E000CF900C94DD21603FC9F118F4603E50F495
:1037F0009BC0623F09F460C008F44AC0633F09F40B
:103800006FC092C0162F1F70842F8F71FF2099F008
:103810000E947621812F28960FB6F894DEBF0FBE46
:10382000CDBFDF91CF911F910F91FF90EF90DF906F
:10383000CF900C94E3190E949721812F28960FB600
:10384000F894DEBF0FBECDBFDF91CF911F910F91D6
:10385000FF90EF90DF90CF900C94EA19FF20A1F039
:103860002111B2C0842F8F7128960FB6F894DEBF55
:103870000FBECDBFDF91CF911F910F91FF90EF90C1
:10388000DF90CF900C94BC21223008F09DC0EACF8D
:10389000FF20A1F0842F8F7128960FB6F894DEBF19
:1038A0000FBECDBFDF91CF911F910F91FF90EF9091
:1038B000DF90CF900C947621FF2061F3842F8F71DD
:1038C00028960FB6F894DEBF0FBECDBFDF91CF9123
:1038D0001F910F91FF90EF90DF90CF900C94972164
:1038E000FF2091F0842F8F7128960FB6F894DEBFD9
:1038F0000FBECDBFDF91CF911F910F91FF90EF9041
:10390000DF90CF900C94612128960FB6F894DEBF1B
:103910000FBECDBFDF91CF911F910F91FF90EF9020
:10392000DF90CF900C945721FF20A1F0222309F4BF
:10393000B1CF862F28960FB6F894DEBF0FBECDBF4D
:10394000DF91CF911F910F91FF90EF90DF90CF907B
:103950000C94CC18222309F4B1CF862F28960FB6E9
:10396000F894DEBF0FBECDBFDF91CF911F910F91B5
:10397000FF90EF90DF90CF900C9494194F70C80196
:103980000E94480A28960FB6F894DEBF0FBECDBF3E
:10399000DF91CF911F910F91FF90EF90DF90CF902B
:1039A0000C947E204F70C80128960FB6F894DEBFA5
:1039B0000FBECDBFDF91CF911F910F91FF90EF9080
:1039C000DF90CF900C941F0E28960FB6F894DEBFB0
:1039D0000FBECDBFDF91CF911F910F91FF90EF9060
:1039E000DF90CF9008950E942E230E9403230E940F
:1039F0004A230E94B5280E94872780E090E00E9419
:103A00009E1780E090E00C94B4170E941E230C9443
:103A1000F31C0E942C22292F22952F7030E02C308D
:103A200031054CF42A3031056CF422503109223032
:103A3000310590F407C02C30310551F02F3031059D
:103A400039F00AC0803E10F0803F31F481E00895E3
:103A500093FB882780F9089580E00895CF93DF9342
:103A600000D000D01F92CDB7DEB70F900F900F900F
:103A70000F900F90DF91CF910895CF93DF9300D0F7
:103A800000D000D0CDB7DEB726960FB6F894DEBFD3
:103A90000FBECDBFDF91CF9108951F93CF93DF93DA
:103AA000C091840116E080918501C81799F0D0E09B
:103AB0001C9FF0011D9FF00D1124EA57FE4F40811D
:103AC000518162817381848195810E943D1D21967F
:103AD000C770E9CFDF91CF911F9108954091B60152
:103AE0005091B7016091B8017091B9018091BA010C
:103AF0009091BB010C943D1DCF938091BB018295A9
:103B00008F7009F05FC08091B801882309F45AC012
:103B100020918401A09185016091B6017091B70157
:103B20008091B9019091BA0131E06F3F09F030E026
:103B3000B32FC6E02A1709F445C0009721F07F3F54
:103B400021F44B2F03C041E001C040E030E040FDD4
:103B500035C0C29FF001C39FF00D1124EA57FE4FFC
:103B6000418174132BC04081641328C042814111EC
:103B700025C0438154814817590710F44150510919
:103B8000481B590B483C5105C8F48091BB018F700C
:103B900080618093BB0186E0829FF001839FF00DDE
:103BA0001124E557FE4F80818F708061808386EB02
:103BB00091E00E94F119CF910C944D1D2F5F3F4F62
:103BC0002770B8CFCF910895CF92DF92EF92FF92F6
:103BD0000F931F93CF93DF93CDB7DEB762970FB6E6
:103BE000F894DEBF0FBECDBF8C0185E0F801DE0189
:103BF0001D9601900D928A95E1F7D8014C9111968E
:103C00005C91119712966C9112971396ED90FC901F
:103C100014977091B601E091B7012091B9013091EC
:103C2000BA012115310531F0EF3F31F481E07F3FDA
:103C300019F403C081E001C080E0B82FB170CB2E31
:103C400080FD6CC1D090B801DD2009F4F5C0F09181
:103C5000BB01E216F30638F0C701821B930B883CC8
:103C6000910548F09BC0209530952E0D3F1D283CB6
:103C7000310508F093C08F2F807F09F052C0E51303
:103C800014C0741312C0D62E61110FC0FF70F06102
:103C9000F093BB010E946E1D86EB91E00E94F1192A
:103CA0008091BB01F80185836CC1EF2831F05F3F43
:103CB00031F481E04F3F19F403C081E001C080E09E
:103CC00080FD03C081E0862701C080E0F82FF170FD
:103CD000FF2E80FF1CC0809184012091850136E079
:103CE000821709F428C190E0389FF001399FF00D48
:103CF0001124EA57FE4F7181571306C07081471394
:103D000003C07281671303C001968770E9CFD62E76
:103D1000662309F436C18091BB0181608093BB01A9
:103D200053C0E51308C0741306C0611104C0D80164
:103D30001596FC93AEC04D875E878D859E856A8BF8
:103D40000E94091D6A89882329F1D62E662311F164
:103D50002091BB01822F82958F7090E002970CF426
:103D600060C08091B6019091B70198878F831986C2
:103D7000FB86EA862C87CE01079651C0E51731F104
:103D80004D875E878D859E856A8B0E94091D6A8995
:103D900081112EC0C8010E94F119A4C08F2F807F0D
:103DA00069F77E2DF98AE88A89890E942E1D86EBA3
:103DB00091E00E94F119E6EBF1E086E0DF011D924F
:103DC0008A95E9F70E946E1DD12CDBC07413D8CF01
:103DD0006111D6CFD8011596FC93C8010E94F11944
:103DE000E6EBF1E086E0DF011D928A95E9F7C9C0B4
:103DF000D62E662379F22091BB01822F82958F7097
:103E000090E0029774F08091B6019091B7019A8387
:103E100089831B82FD82EC822E83CE0101960E9453
:103E2000F11986E0F801A6EBB1E001900D928A95B8
:103E3000E1F70E947C1D6FC0E216F30628F0C7016F
:103E4000821B930B9C0104C0209530952E0D3F1DC5
:103E5000283C310508F052C0D62E662309F49ACFCB
:103E6000E5132CC074132AC08091BB0180FD1DC0D6
:103E7000982F92959F70C9F0D80115968C9315973D
:103E80009F3039F09F5F9295907F8F70892B1596A8
:103E90008C93C8010E94F11986E0F801A6EBB1E00D
:103EA00001900D928A95E1F736C086E0F801A6EB05
:103EB000B1E001900D928A95E1F763C04D875E876E
:103EC0008D859E850E94091D882379F086E0F80182
:103ED000A6EBB1E001900D928A95E1F70E947C1D5E
:103EE0000E946E1DDD24D3944CC08091BB01816083
:103EF0008093BB01C8010E94F11943C07E2DF98A4D
:103F0000E88A89890E942E1DE6EBF1E086E0DF0158
:103F10001D928A95E9F70E946E1D33C0662309F44D
:103F200039CF4D875E878D859E850E94091D882328
:103F300009F430CFCBCF4D875E878D859E850E945B
:103F40002C22292F22952F7030E0223031052CF4BD
:103F50009F7041F0811106C00CC0243031052CF453
:103F60009F7049F4805E883020F0C8010E94F119EA
:103F7000CF2CDC2C06C0D80115969C91907F91F730
:103F8000F8CF8D2D62960FB6F894DEBF0FBECDBF71
:103F9000DF91CF911F910F91FF90EF90DF90CF9025
:103FA00008951F93CF93DF93CDB7DEB72C970FB64D
:103FB000F894DEBF0FBECDBF4F83588769877A87DD
:103FC0008B879C87CE0107960E94E41D8823C1F051
:103FD0002F8138858A859B85892B31F03F3F11F0F1
:103FE00080E003C02F3FE1F781E0811147C04F819E
:103FF000588569857A858B859C850E943D1D3EC0CC
:1040000086E0FE013796DE01119601900D928A95A9
:10401000E1F7FF81E8854A855B854115510531F05F
:10402000EF3F31F481E0FF3F19F403C081E001C0AC
:1040300080E080FD23C02091850130E0C901019618
:10404000877099276091840170E086179707F1F1D6
:10405000F983EA835D834C8396E0929FD001939F1E
:10406000B00D1124AA57BE4FFE01319601900D925A
:104070009A95E1F7809385010E944D1D16E080918D
:10408000840190918501891779F1189FC00111244D
:104090008A579E4F0E94E41D882331F1E0918401EC
:1040A0001E9FF0011124EA57FE4F40815181628129
:1040B0007381848195810E943D1D8091840190E0EF
:1040C00001968770992780938401D9CF0E94051D9E
:1040D0001092850110928401E6EBF1E086E0DF01A9
:1040E0001D928A95E9F7CACF2C960FB6F894DEBFD9
:1040F0000FBECDBFDF91CF911F910895EF92FF9238
:104100000F931F93CF93DF93FC01009709F46FC0C7
:10411000F12CEE24E394EF0121968491843740F44E
:10412000843008F055C0813081F0823021F15FC0C9
:10413000853709F447C0C0F19CE7980F903708F025
:1041400056C08F770E94941945C08F010E5F1F4F94
:10415000FE01849190E2980F983050F48770FE2D04
:1041600001C0FF0F8A95EAF78F2F0E94212315C007
:104170000E94CC1814C08F010E5F1F4FFE01849166
:1041800090E2980F983068F48770FE2D01C0FF0F01
:104190008A95EAF78F2F0E9427230E944A23E8017D
:1041A00019C00E949419FBCFCF010296FE01C49161
:1041B000CC2361F0EFE9FFE03197F1F700C0000098
:1041C000C150F6CFCF010296FE01F490EC0102C07F
:1041D0000E94CC188F2D882341F0EFE9FFE0319742
:1041E000F1F700C000008150F6CFFE0194CFDF91BF
:1041F000CF911F910F91FF90EF90089508956093D4
:10420000C0017093C1018093C2019093C3010C94CB
:10421000F31C0F931F930091C0011091C1012091D5
:10422000C2013091C301062B172B282B392B009389
:10423000C0011093C1012093C2013093C3011F91AB
:104240000F910C94F31C0F931F930091C0011091D8
:10425000C1012091C2013091C301062317232823F5
:1042600039230093C0011093C1012093C201309300
:10427000C3011F910F910C94F31C0F931F93009196
:10428000C0011091C1012091C2013091C3010627E4
:104290001727282739270093C0011093C1012093C5
:1042A000C2013093C3011F910F910C94F31C109223
:1042B000BC011092BD011092BE011092BF010C947E
:1042C000F31C41E050E060E070E004C0440F551F73
:1042D000661F771F8A95D2F74093BC015093BD01AA
:1042E0006093BE017093BF010C94F31C41E050E059
:1042F00060E070E004C0440F551F661F771F8A9569
:10430000D2F78091BC019091BD01A091BE01B09106
:10431000BF01842B952BA62BB72B8093BC019093C8
:10432000BD01A093BE01B093BF010C94F31C41E00A
:1043300050E060E070E004C0440F551F661F771F17
:104340008A95D2F740955095609570958091BC0103
:104350009091BD01A091BE01B091BF01842395232E
:10436000A623B7238093BC019093BD01A093BE0107
:10437000B093BF010C94F31C41E050E060E070E0AA
:1043800004C0440F551F661F771F8A95D2F780918E
:10439000BC019091BD01A091BE01B091BF018427E5
:1043A0009527A627B7278093BC019093BD01A093C2
:1043B000BE01B093BF010C94F31C0F931F930091A7
:1043C000BC011091BD012091BE013091BF01062BAF
:1043D000172B282B392B0093BC011093BD01209380
:1043E000BE013093BF011F910F910C94F31C0F93EA
:1043F0001F930091BC011091BD012091BE0130912D
:10440000BF0106231723282339230093BC011093EF
:10441000BD012093BE013093BF011F910F910C94F9
:10442000F31C0F931F930091BC011091BD012091CB
:10443000BE013091BF01062717272827392700938F
:10444000BC011093BD012093BE013093BF011F91A9
:104450000F910C94F31C0895CF92DF92EF92FF928C
:104460000F931F93CF93DF93EC01C090C001D090C6
:10447000C101E090C201F090C3018091BC01909114
:10448000BD01A091BE01B091BF01C82AD92AEA2A74
:10449000FB2A0FE110E0B701A601002E04C07695BB
:1044A0006795579547950A94D2F740FF07C0BE011C
:1044B000802F0E94420E8130910539F4015011097C
:1044C00050F7BE0180E00E94420EDF91CF911F9114
:1044D0000F91FF90EF90DF90CF90089590910C0195
:1044E000992361F190910D01992341F1982F9695AF
:1044F000969596959F3088F4E0910E01F0910F010A
:10450000E90FF11D877021E030E001C0220F8A958C
:10451000EAF78181822B818308959091D70190FFE2
:104520002DC01F928F9386E79AE09F938F930E94EE
:104530003F0A0F900F900F900F90089540910E0139
:1045400050910F0120E030E09FEFFA01E20FF31FDE
:104550006281681799F09F3F19F4611101C0922F91
:104560002F5F3F4F2E30310581F79F3F39F0FA0121
:10457000E90FF11D97FDFA958283089508959091B2
:104580000C01992369F190910D01992349F1982F1C
:104590009695969596959F3090F4E0910E01F09146
:1045A0000F01E90FF11D877021E030E001C0220FFB
:1045B0008A95EAF720958181282321830895909197
:1045C000D70190FF1FC01F928F9388E59AE09F93B9
:1045D0008F930E943F0A0F900F900F900F900895B5
:1045E00040910E0150910F0120E030E0FA01E20FFE
:1045F000F31F9281981301C012822F5F3F4F2E301C
:104600003105A1F7089581E090E0E0910E01F0916D
:104610000F01E80FF91F1082019680319105A9F76B
:1046200008959091D601982B9093D6010895809586
:104630009091D60198239093D60108951092D601B7
:1046400008959091D501982B9093D5010895809568
:104650009091D50198239093D50108951092D5019A
:1046600008958093C40108951092C4010895409163
:104670000E0150910F0120E030E080E0FA01E20FDE
:10468000F31F918191118F5F2F5F3F4F2F303105C5
:10469000A9F70895E0910E01F0910F018091D601E4
:1046A0008083E0910E01F0910F0180819091D501FE
:1046B000892B80839091C401992361F0E0910E01D0
:1046C000F0910F018081892B80830E943723811113
:1046D0001092C40180910E0190910F010C944E171D
:1046E00090933B0180933A0108958295982F9C7C8A
:1046F00096959695837344E0849F90011124922BA4
:10470000892F8A7A86959575990F892B08951F931D
:10471000CF93DF931F92CDB7DEB799830E947523A5
:10472000182F9981892F0E947523212F30E0322F75
:104730002227A901482BCA010F90DF91CF911F9129
:1047400008958091F001843009F11092D80120E49D
:1047500088E190E00FB6F894A895809360000FBEB2
:104760002093600083B7817F846083BF83B78160BB
:1047700083BF7894889583B78E7F83BF88E10FB617
:10478000F89480936000109260000FBE0895089521
:104790000895CF930E94C7230E94E80B0E94C8236C
:1047A000C0E08C2F0E94130D811105C0CF5FCE3069
:1047B000C1F780E001C081E0CF9108950C94051D00
:1047C00082E084BD93E095BD9AEF97BD80936E0023
:1047D00008952FB7F8948091D9019091DA01A091B2
:1047E000DB01B091DC012FBF0895CF92DF92EF92F1
:1047F000FF920F931F932FB7F8944091D9015091D6
:10480000DA016091DB017091DC012FBF6A017B014D
:10481000EE24FF248C0120E030E0C016D106E20631
:10482000F30610F441505109481B590BCA011F915E
:104830000F91FF90EF90DF90CF9008951F920F920D
:104840000FB60F9211248F939F93AF93BF938091D4
:10485000D9019091DA01A091DB01B091DC010196C0
:10486000A11DB11D8093D9019093DA01A093DB01C2
:10487000B093DC01BF91AF919F918F910F900FBECC
:104880000F901F9018950E944914F8942FEF87EA13
:1048900091E6215080409040E1F700C0000087E0A1
:1048A00090EBDC018093F9019093FA01A093FB0156
:1048B000B093FC012CE088E190E00FB6F894A89545
:1048C000809360000FBE20936000FFCFEF92FF92B5
:1048D0000F931F93CF93DF93E82EF12C8F2D0E941F
:1048E000130DC0E0D0E0082F10E098010C2E02C09C
:1048F000359527950A94E2F720FD05C02196C6302C
:10490000D10599F709C06C2F7F2D80E00E94200E01
:10491000E812F4CF81E005C0F3948EE0F812DECF08
:1049200080E0DF91CF911F910F91FF90EF9008955C
:10493000CF93C82F8CE20E946624882321F08C2F0D
:10494000CF910C94662480E0CF910895CF930E947C
:10495000F325811102C00E94D9258BE99AE00E94BB
:10496000A609C5E6C15049F00E94E80B8FE39CE917
:104970000197F1F700C00000F5CF84E99AE00E94AA
:10498000A60989E20E949824811111C18AE20E943D
:10499000982481110E94D92585E00E9498248111D4
:1049A0000E9443240E94FE258093D70187E00E9445
:1049B0009824882399F18BE10E949824882351F050
:1049C0009091D70191FB882780F921E0822780FB15
:1049D00091F922C08EE00E949824882351F0909192
:1049E000D70192FB882780F921E0822780FB92F98A
:1049F00013C080E10E9498249091D701882341F050
:104A000093FB882780F921E0822780FB93F904C07B
:104A1000892F809580FB90F99093D7018091D701E1
:104A20000E9402260E9410268093EA0180EE0E94D6
:104A30009824882341F08091EA01982F909590FB6B
:104A400080F98093EA0189E30E949824882359F031
:104A50009091EA0191FB882780F921E0822780FB71
:104A600091F99093EA0182EE0E949824882359F0EC
:104A70009091EA0192FB882780F921E0822780FB50
:104A800092F99093EA0186EE0E949824882359F0C7
:104A90009091EA0193FB882780F921E0822780FB2F
:104AA00093F99093EA0183EE0E949824882359F0A9
:104AB0009091EA0194FB882780F921E0822780FB0E
:104AC00094F99093EA0185E30E949824882359F091
:104AD0009091EA0195FB882780F921E0822780FBED
:104AE00095F99093EA0181E30E949824882359F074
:104AF0009091EA0196FB882780F921E0822780FBCC
:104B000096F99093EA0181E10E949824882359F054
:104B10009091EA0197FB882780F921E0822780FBAA
:104B200097F99093EA018091EA010E9414268091FE
:104B3000EA0187FB882780F980930D0187E20E94B4
:104B40009824C82F8EE10E9498248111C2608FE1C1
:104B50000E9498248111C46080E20E9498248111EF
:104B6000C86081E20E9498248111C06182E20E94A3
:104B700098248111C06283E20E9498248111C0644C
:104B800084E20E949824882311F0C06802C0CC23DC
:104B900029F08C2F0E940B266C2F03C00E94072641
:104BA000682F70E080E090E0CF910C94FF20CF91CF
:104BB00008956DEE7EEF80E090E00E94CE2F60E0E1
:104BC00082E090E00E94C02F60E083E090E00E94CD
:104BD000C02F60E084E090E00E94C02F60E085E09C
:104BE00090E00C94C02F80E090E00E94BA2F21E06A
:104BF0008D3E9E4F09F020E0822F089582E090E0E4
:104C00000C94B22F682F82E090E00C94C02F83E0C8
:104C100090E00C94B22F682F83E090E00C94C02FAA
:104C200084E090E00C94B22F682F84E090E00C9424
:104C3000C02F8091DF0180FF0BC06091130185E0E0
:104C4000689FB001112475956795759567952AC081
:104C500081FF09C06091130185E0689FB0011124B4
:104C6000759567951FC082FF07C06091130185E0AD
:104C7000689FB001112416C04091E0014423C9F09F
:104C800060911201461788F72091130185E0289F53
:104C900090011124429FC001439F900D112470E0A8
:104CA0000E94842F6038710540F46115710539F058
:104CB00002C065E070E0862F08958FE7089581E0D7
:104CC00008958091DF0180FF08C06091110170E0BC
:104CD000759567957595679521C081FF06C06091B0
:104CE000110170E07595679519C082FF04C060914D
:104CF000110170E010C08091E0018823C1F0609143
:104D000010018617A0F790911101989FC0011124FE
:104D100070E00E94842F6038710528F461157105D8
:104D200021F0862F08958FE7089581E0089561E0CE
:104D300070E0F4CF803F21F40E941926819504C0D1
:104D4000813F29F40E9419268093E3010895823F50
:104D500021F40E941926819504C0833F29F40E9402
:104D600019268093E2010895893F19F40E94612673
:104D700005C08A3F31F40E94612681958093E40149
:104D800008958B3F21F40E946126819504C08C3FD9
:104D900029F40E9461268093E5010895843F21F45F
:104DA0008091E101816017C0853F21F48091E1018C
:104DB000826011C0863F21F48091E10184600BC0C4
:104DC000873F21F48091E101886005C0883F31F47C
:104DD0008091E10180618093E10108958D3F21F48C
:104DE0008091DF0181600BC08E3F21F48091DF0153
:104DF000826005C08F3F29F48091DF018460809339
:104E0000DF010895803F39F48091E30187FF6CC092
:104E10001092E30169C0813F29F48091E3011816E3
:104E2000BCF362C09091E201823F29F497FF5CC01D
:104E30001092E20159C0833F19F41916CCF354C003
:104E4000893F41F48091E40118160CF04DC0109296
:104E5000E4014AC08A3F29F48091E40187FF44C0FD
:104E6000F6CF8B3F39F48091E50187FF3DC010926A
:104E7000E5013AC08C3F29F48091E5011816BCF396
:104E800033C0843F21F48091E1018E7F17C0853FBC
:104E900021F48091E1018D7F11C0863F21F4809142
:104EA000E1018B7F0BC0873F21F48091E101877F77
:104EB00005C0883F31F48091E1018F7E8093E1014C
:104EC00013C08D3F21F48091DF018E7F0BC08E3F98
:104ED00021F48091DF018D7F05C08F3F29F48091FF
:104EE000DF018B7F8093DF018091E20181110EC091
:104EF0008091E30181110AC08091E401811106C013
:104F00008091E501811102C01092E0010895809125
:104F1000D70183FF7EC087ED9AE00E94A6098091A9
:104F2000E1011F928F9382ED9AE09F938F930E94ED
:104F30003F0A80ED9AE00E94A6092091E201822FAB
:104F4000992787FD90959F932F938DEC9AE09F93DF
:104F50008F930E943F0A8BEC9AE00E94A609209151
:104F6000E301822F992787FD90959F932F9388ECDB
:104F70009AE09F938F930E943F0A86EC9AE00E94EA
:104F8000A6092091E401822F992787FD90959F9390
:104F90002F9383EC9AE09F938F930E943F0A81ECBA
:104FA0009AE00E94A6092091E501822F992787FDAA
:104FB00090959F932F938EEB9AE09F938F930E94EF
:104FC0003F0A8BEB9AE00E94A6098091E0011F92B4
:104FD0008F9388EB9AE09F938F930E943F0A86EB12
:104FE0009AE00E94A6098091DF011F928F9383EBC4
:104FF0009AE09F938F930E943F0A80EB9AE00E9471
:10500000A6098DB79EB74C960FB6F8949EBF0FBEFB
:105010008DBF81EE91E00E9493170E94E923909347
:10502000DE018093DD0108951F93CF93DF9380917C
:10503000DD019091DE010E94F5234091E0014423BF
:1050400021F02091140130E006C0209115015AE0B2
:10505000259F900111248217930708F482C0809144
:10506000E2011091E301D091E401C091E5018111C9
:1050700007C0111105C0D11103C0CC2309F471C0C0
:105080004F3F19F04F5F4093E001181624F40E943F
:1050900019268093E2018091E20187FF05C00E94FA
:1050A000192681958093E201111624F40E94192695
:1050B0008093E3018091E30187FF05C00E941926D8
:1050C00081958093E3016091E201662339F11091AB
:1050D000E301112319F1772767FD7095872F972F2B
:1050E0000E94892E23E333E343E35FE30E94ED2E26
:1050F0000E94562E6093E201612F772767FD70951D
:10510000872F972F0E94892E23E333E343E35FE346
:105110000E94ED2E0E94562E6093E3011D1624F48A
:105120000E9461268093E4018091E40187FF05C01D
:105130000E94612681958093E4011C1624F40E944C
:1051400061268093E5018091E50187FF05C00E94FB
:10515000612681958093E501DF91CF911F910C9499
:105160008727DF91CF911F910895E1EEF1E085E06F
:10517000DF011D928A95E9F71092E0011092DF019C
:1051800008958AEF9CE00E94A6091F9281E08F9308
:105190001F9285E08F938CEA9CE09F938F930E94EF
:1051A0003F0A0F900F900F900F900F900F9008955F
:1051B0008330E9F128F4813061F0823009F10895FB
:1051C000853009F462C008F449C0863009F474C01F
:1051D000089520911501862F90E0820F911D8F3F39
:1051E000910520F4620F6093150103C08FEF809347
:1051F0001501809115011F928F9385EE9BE072C07F
:1052000020911401862F90E0820F911D8F3F910510
:1052100020F4620F6093140103C08FEF8093140198
:10522000809114011F928F9383ED9BE05BC02091CE
:105230001301862F90E0820F911D8F3F910520F47E
:10524000620F6093130103C08FEF8093130180916D
:1052500013011F928F9380EC9BE044C020911201B8
:10526000862F90E0820F911D8F3F910520F4620FF1
:105270006093120103C08FEF80931201809112019D
:105280001F928F938BEA9BE02DC020911101862FF6
:1052900090E0820F911D8F3F910520F4620F609383
:1052A000110103C08FEF80931101809111011F92B2
:1052B0008F9382E99BE016C020911001862F90E029
:1052C000820F911D8F3F910520F4620F60931001B2
:1052D00003C08FEF80931001809110011F928F9374
:1052E00087E79BE09F938F930E943F0A0F900F9058
:1052F0000F900F900895833081F128F4813059F098
:105300008230D1F00895853009F449C0B8F1863073
:1053100009F456C0089580911501681720F4861B82
:105320008093150102C010921501809115011F9202
:105330008F9388E69BE054C080911401681720F495
:10534000861B8093140102C01092140180911401F5
:105350001F928F9386E59BE043C0809113016817ED
:1053600020F4861B8093130102C0109213018091D8
:1053700013011F928F9383E49BE032C0809112014E
:10538000681720F4861B8093120102C0109212014C
:10539000809112011F928F938EE29BE021C0809139
:1053A0001101681720F4861B8093110102C010922E
:1053B0001101809111011F928F9385E19BE010C034
:1053C00080911001681720F4861B8093100102C0A1
:1053D00010921001809110011F928F938AEF9AE032
:1053E0009F938F930E943F0A0F900F900F900F9002
:1053F0000895CF93C82F1F928F932FEF3DE03F93D7
:105400002F930E943F0A61E070E080E090E004C0CA
:10541000660F771F881F991FCA95D2F70E94FF2039
:105420000F900F900F900F90CF910C94051DCF937C
:105430008D3109F465C0B0F58E3009F4CBC100F5AB
:10544000873009F49BC1A8F4863009F06AC28091C4
:10545000D701817F8E7F8093D70184E09EE00E94F8
:10546000A60989E492E10E94A60981E08093E70100
:1054700080C1883009F44FC08B3009F47CC151C21F
:10548000863109F4EDC138F4803109F4B6C18131B7
:1054900009F42DC246C2893109F4CBC18B3109F41C
:1054A00086C13FC2853309F434C248F4873209F417
:1054B00030C208F430C2893209F42BC232C28334BC
:1054C00038F48A3308F029C2883309F454C129C258
:1054D000833409F41EC2883409F023C20E94051DDA
:1054E00088E392E10E94A6099FEF23ED80E39150AB
:1054F00020408040E1F700C000000E94432439C1F1
:1055000088E592E10E94A6090E94102E0E9442178F
:105510000E94800F2EC18DE492E10E94A60985E1D0
:1055200090E10E94A6090E9407261F928F9382E1B4
:1055300090E19F938F930E943F0A80E190E10E9447
:10554000A6090E94FE25C82F8DEF9FE00E94A609A4
:105550001F92CF9328EF3FE03F932F930E943F0A83
:1055600086EF9FE00E94A6098CEE9FE00E94A609AC
:105570008C2F81701F928F9329EE3FE03F932F93E2
:105580000E943F0A87EE9FE00E94A6098DED9FE0F2
:105590000E94A609C1FB882780F91F928F932AEDEC
:1055A0003FE03F932F930E943F0A88ED9FE00E94C7
:1055B000A6098CEC9FE00E94A609C2FB882780F90F
:1055C0001F928F9329EC3FE03F932F930E943F0A55
:1055D00087EC9FE00E94A6098EEB9FE00E94A6093F
:1055E000C3FBCC27C0F91F92CF938BEB9FE09F9317
:1055F0008F930E943F0A89EB9FE00E94A6090E94B8
:105600001026C82F85EA9FE00E94A6091F92CF931B
:1056100020EA3FE03F932F930E943F0A8EE99FE0EC
:105620000E94A60985E89FE00E94A6098C2F817040
:105630001F928F9322E83FE03F932F930E943F0AEF
:105640008DB79EB780960FB6F8949EBF0FBE8DBFE4
:1056500080E89FE00E94A60989E69FE00E94A609D3
:10566000C1FB882780F91F928F9326E63FE03F9386
:105670002F930E943F0A84E69FE00E94A60982E5DC
:105680009FE00E94A609C2FB882780F91F928F9392
:105690002FE43FE03F932F930E943F0A8DE49FE069
:1056A0000E94A6098BE39FE00E94A609C3FB8827FE
:1056B00080F91F928F9328E33FE03F932F930E943E
:1056C0003F0A86E39FE00E94A6098CE29FE00E94C9
:1056D000A609C4FB882780F91F928F9329E23FE037
:1056E0003F932F930E943F0A87E29FE00E94A60902
:1056F00085E19FE00E94A609C5FB882780F91F92DB
:105700008F9322E13FE03F932F930E943F0A80E175
:105710009FE00E94A60984EF9EE00E94A609C6FBB6
:10572000882780F91F928F9321EF3EE03F932F93BC
:105730000E943F0A8FEE9EE00E94A60987EE9EE03F
:105740000E94A609C7FBCC27C0F91F92CF9384EE15
:105750009EE09F938F930E943F0A82EE9EE00E94FC
:10576000A6098DB79EB74C960FB6F8949EBF0FBE94
:105770008DBFC1E0DBC08BE29EE058C08091D701B5
:10578000C82FC17080FF09C08BE292E10E94A60978
:105790008091D701817F8E7F44C08FE192E10E948A
:1057A000A6098091D70181608093D701E2CF8091D3
:1057B000D70181FBCC27C0F991E0C927C0FB81F953
:1057C0008093D701CC2319F082E192E125C084E0D7
:1057D00092E12CC08091D70182FBCC27C0F991E0E7
:1057E000C927C0FB82F98093D701CC2319F085EF3C
:1057F00091E112C085EE91E119C08091D70183FB40
:10580000CC27C0F991E0C927C0FB83F98093D70169
:10581000CC2351F089ED91E10E94A6098091D70136
:1058200081608093D70182C08CEC91E10E94A6092F
:10583000A0CF8DEB91E10E94A60981E991E10E9440
:10584000A60984E591E10E94A60987E291E10E9400
:10585000A60983EE90E10E94A60985EB90E1E6CFD0
:1058600087EA90E10E94A6090E9442171F928F9337
:105870008DE890E19F938F930E943F0A80910C01E5
:105880001F928F9386E790E19F938F930E943F0A28
:1058900080916E011F928F9383E690E19F938F9387
:1058A0000E943F0A80910D011F928F9380E590E145
:1058B0009F938F930E943F0A8091D9019091DA01C2
:1058C000A091DB01B091DC01BF93AF939F938F93C5
:1058D0008CE390E19F938F930E943F0A8DB79EB710
:1058E00046960FB6F8949EBF0FBE8DBF42CF0E9462
:1058F000051DC0910D0181E0C827C0930D01CC2387
:1059000029F082E390E10E94A60910C087E290E1AD
:105910008DCF80E003C08D5101C089530E94F929C9
:1059200028CF85E290E10E94A609C0E08C2FCF919C
:10593000089580E0089580E00895CF93C82F809166
:10594000E701813081F020F0823009F44CC042C17F
:10595000A0910E01B0910F018C91813169F08232DA
:1059600009F03AC109C0A0910E01B0910F018C91CC
:10597000813111F0823249F48C2F0E94992C8111CF
:105980002FC08C2F0E94172A2CC08C2F0E949B2C7A
:10599000811126C0C431E1F070F4CB3081F0C03108
:1059A000D1F40E94C12887EF9DE00E94A60982E001
:1059B0008093E70115C0C93259F0C83361F484E01F
:1059C0009EE00E94A6098BEF9DE00E94A60908C0F8
:1059D0001092E70103C185EF9DE00E94A609FEC079
:1059E00081E08170FDC0C43220F5CE3108F0C0C026
:1059F000CB3099F1C8F4C73009F0D2C08AE0809367
:105A0000150194E19093140193E090931301809316
:105A1000120188E08093110188E2809310018BE9E4
:105A20009CE00E94A609BFC0C33149F1C431C1F056
:105A3000B7C0CB3409F4A9C028F4C93289F0C833FF
:105A400061F0AEC0C13509F49EC0C23509F499C0F9
:105A5000CE3409F0A5C06AE09EC00E94C128A3C050
:105A60008091E601882319F01092E6019CC088EA33
:105A70009CE00E94A60981E08093E701B1C082E822
:105A80009CE00E94A60980E79CE00E94A609809104
:105A900015011F928F938DE69CE09F938F930E9438
:105AA0003F0A8BE69CE00E94A60989E59CE00E94E3
:105AB000A609809114011F928F9386E59CE09F9325
:105AC0008F930E943F0A84E59CE00E94A60985E42A
:105AD0009CE00E94A609809113011F928F9382E49B
:105AE0009CE09F938F930E943F0A80E49CE00E9479
:105AF000A6098FE29CE00E94A609809112011F92E4
:105B00008F938CE29CE09F938F930E943F0A8AE2DE
:105B10009CE00E94A60985E19CE00E94A609809174
:105B200011011F928F9382E19CE09F938F930E94BB
:105B30003F0A80E19CE00E94A60989EF9BE00E9459
:105B4000A609809110011F928F9386EF9BE09F938F
:105B50008F930E943F0A84EF9BE00E94A6098DB7B5
:105B60009EB748960FB6F8949EBF0FBE8DBF1BC060
:105B7000CE51EC2FF0E0E15DFE4F80818093E60195
:105B800012C061E003C061E006C06AE08091E601F6
:105B90000E94D82808C08091E6010E947B2903C09A
:105BA00089E99CE013C08091E601882369F01F9287
:105BB0008F9383E99CE09F938F930E943F0A0F90FD
:105BC0000F900F900F9004C080E99CE00E94A609FE
:105BD00081E006C01092E70180E002C080E001CFC2
:105BE000CF910895E1E8F0E0808188608083808132
:105BF000816080838FB7F89493E09093890090ED53
:105C0000909388008FBF0895EFE6F0E08081826076
:105C100080830895EFE6F0E080818D7F8083089592
:105C2000EFE6F0E0808192E08927808308951F925B
:105C30000F920FB60F9211242F933F934F935F93C0
:105C40006F937F938F939F93AF93BF93EF93FF9344
:105C50008091E8019091E90101969093E901809388
:105C6000E801811103C082E00E94800FE091E90108
:105C7000E695E695F0E0E859FD4EE4918091E80163
:105C80008E1303C080E00E94800FFF91EF91BF91BF
:105C9000AF919F918F917F916F915F914F913F91C4
:105CA0002F910F900FBE0F901F90189504D06894FD
:105CB000B1118DC0089570D088F09F5790F0B92F22
:105CC0009927B751A0F0D1F0660F771F881F991F51
:105CD0001AF0BA95C9F712C0B13081F077D0B1E0AF
:105CE000089574C0672F782F8827B85F39F0B93FBF
:105CF000CCF3869577956795B395D9F73EF4909553
:105D00008095709561957F4F8F4F9F4F0895E894D0
:105D100009C097FB3EF490958095709561957F4FF3
:105D20008F4F9F4F9923A9F0F92F96E9BB279395A1
:105D3000F695879577956795B795F111F8CFFAF4B1
:105D4000BB0F11F460FF1BC06F5F7F4F8F4F9F4FE2
:105D500016C0882311F096E911C0772321F09EE840
:105D6000872F762F05C0662371F096E8862F70E0A6
:105D700060E02AF09A95660F771F881FDAF7880F80
:105D80009695879597F9089557FD9058440F551F9C
:105D900059F05F3F71F04795880F97FB991F61F0AD
:105DA0009F3F79F087950895121613061406551F24
:105DB000F2CF4695F1DF08C0161617061806991F90
:105DC000F1CF86957105610508940895E894BB2785
:105DD00066277727CB0197F908950BD078C069D053
:105DE00028F06ED018F0952309F05AC05FC0112436
:105DF000EECFCADFA0F3959FD1F3950F50E0551F6A
:105E0000629FF001729FBB27F00DB11D639FAA270F
:105E1000F00DB11DAA1F649F6627B00DA11D661F5E
:105E2000829F2227B00DA11D621F739FB00DA11D7F
:105E3000621F839FA00D611D221F749F3327A00D39
:105E4000611D231F849F600D211D822F762F6A2FD5
:105E500011249F5750408AF0E1F088234AF0EE0F5A
:105E6000FF1FBB1F661F771F881F91505040A9F767
:105E70009E3F510570F014C0AACF5F3FECF3983EEF
:105E8000DCF3869577956795B795F795E7959F5FCE
:105E9000C1F7FE2B880F911D9695879597F9089568
:105EA00097F99F6780E870E060E008959FEF80ECCD
:105EB000089500240A941616170618060906089570
:105EC00000240A9412161306140605060895092ED6
:105ED0000394000C11F4882352F0BB0F40F4BF2B45
:105EE00011F460FF04C06F5F7F4F8F4F9F4F089585
:105EF000991B79E004C0991F961708F0961B881F1C
:105F00007A95C9F78095089597FB072E16F40094AB
:105F100007D077FD09D00E949E2F07FC05D03EF4E4
:105F2000909581959F4F0895709561957F4F089545
:105F3000EE0FFF1F0590F491E02D0994AA1BBB1BE7
:105F400051E107C0AA1FBB1FA617B70710F0A61B79
:105F5000B70B881F991F5A95A9F780959095BC019A
:105F6000CD010895F999FECF92BD81BDF89A992788
:105F700080B50895A8E1B0E042E050E00C94D52F40
:105F8000262FF999FECF1FBA92BD81BD20BD0FB655
:105F9000F894FA9AF99A0FBE019608950E94C02FBC
:105FA000272F0C94C12FDC01CB01FC01F999FECF06
:105FB00006C0F2BDE1BDF89A319600B40D92415091
:0A5FC0005040B8F70895F894FFCFA1
:105FCA002002810F72104F101B10E80F0101C5014A
:105FDA0028080A03140A3F4D362039E50998096250
:105FEA0009420909097C089508AE08C708E70801AB
:0A5FFA000203040506070809000071
:00000001FF

@ -0,0 +1,1187 @@
:100000000C94B5040C94FC040C94FC040C94FC04B7
:100010000C94FC040C94FC040C94FC040C94FC0460
:100020000C94FC040C94FC040C94240E0C94F60E1A
:100030000C94FC040C94FC040C94FC040C94FC0440
:100040000C94FC040C941A230C94FC040C94FC04F3
:100050000C94FC040C94AC1C0C94FC040C94FC0458
:100060000C94FC040C94FC040C94FC040C94FC0410
:100070000C94FC040C94FC040C94FC040C94FC0400
:100080000C94FC040C94FC040C94FC040C94FC04F0
:100090000C94FC040C94FC040C94FC040C94FC04E0
:1000A0000C94FC040C94FC040C94FC04630F850F6A
:1000B0007810850F7810CA0FED0F78104210551088
:1000C0003F133F136E136E13B113EB13F815F815AE
:1000D0000414F815F914F914CC15F815F815E315EE
:1000E000751901620262016202620035002B00E1B3
:1000F00000E100E00000001E00140004001D0002EA
:10010000304E001F001A0016001B00E300E1002023
:1001100000080007000600AE002C002100150009B1
:1001200000190065744B00220017000A000500004A
:100130000029744C002A0000002800000008544CDC
:10014000002A00000028000000500023001C000BC3
:1001500000110000004F00240018000D001000E600
:1001600000520025000C000E0036002D002C002649
:100170000012000F0037004A00E50027001300338B
:100180000038002E00510030002F00347231724DC3
:1001900071000035002B00E100E100E00000001ECE
:1001A0000034000400330002304E001F00360012FD
:1001B000001400E300E1002000370008000D00AE4D
:1001C000002C002100130018000E0065744B002263
:1001D000001C000C001B00000029744C002A0000C9
:1001E000002800000008544C002A000000280000ED
:1001F000005000230009000700050000004F002404
:10020000000A000B001000E600520025000600174F
:10021000001A002F002C0026001500110019004ABA
:1002200000E50027000F0016001D00300051002ED1
:100230000038002D7231724D710000000000000086
:1002400000000000000000000000000000000000AE
:10025000000000000000000000000000000000009E
:10026000000000000000000000000000000000008E
:10027000000000000000000000000000000000007E
:10028000000000000000000000000000000000006E
:10029000000000000000000000000000000000005E
:1002A000000000000000000000000000000000004E
:1002B000000000000000000000000000000000003E
:1002C000000000000000000000000000000000002E
:1002D000000000000000000000000000000000001E
:1002E000000000000000000000000000000000000E
:1002F00000000000000000000000000000000000FE
:1003000000000000000000000000000000000000ED
:1003100000000000000000000000000000000000DD
:1003200000000000000000000000000000000000CD
:1003300000000000000000000000000000000000BD
:1003400000000000000000000000000000000000AD
:10035000000000000000000000000000000000009D
:10036000000000000000000000000000000000008D
:10037000000000000000000000000000000000007D
:10038000000000000000000000000000000000006D
:10039000000000000000000000000000000000005D
:1003A000000000000000000000000000000000004D
:1003B000000000000000000000000000000000003D
:1003C000000000000000000000000000000000002D
:1003D000000000000000000000000000000000001D
:1003E000000000000000000000000000000000000D
:1003F00000000000000000000000000000000000FD
:1004000000000000000000000000000000000000EC
:1004100000000000000000000000000000000000DC
:1004200000000000000000000000000000000000CC
:1004300000000000000000000000000000000000BC
:1004400000000000000000000000000000000000AC
:10045000000000000000000000000000000000009C
:10046000000000000000000000000000000000008C
:10047000000000000000000000000000000000007C
:10048000000000000000000000000000000000006C
:10049000000000000000000000000000000000005C
:1004A000000000000000000000000000000000004C
:1004B000000000000000000000000000000000003C
:1004C000000000000000000000000000000000002C
:1004D000000000000000000000000000000000001C
:1004E000000000000000000000000000000000000C
:1004F00000000000000000000000000000000000FC
:1005000000000000000000000000000000000000EB
:1005100000000000000000000000000000000000DB
:1005200000000000000000000000000000000000CB
:1005300000000000000000000000000000000000BB
:1005400000000000000000000000000000000000AB
:10055000000000000000000000000000000000009B
:10056000000000000000000000000000000000008B
:10057000000000000000000000000000000000007B
:10058000000000000000000000000000000000006B
:10059000000000000000000000000000000000005B
:1005A000000000000000000000000000000000004B
:1005B000000000000000000000000000000000003B
:1005C000000000000000000000000000000000002B
:1005D000000000000000000000000000000000001B
:1005E000000000000000000000000000000000000B
:1005F00000000000000000000000000000000000FB
:1006000000000000000000000000000000000000EA
:1006100000000000000000000000000000000000DA
:1006200000000000000000000000000100010001C7
:10063000000100010000003A003F004400010001F9
:100640000001003B00400045000100010001003CAA
:1006500000410001000100010001003D00420001D5
:10066000000100010001003E004300010001000004
:100670000001000100010000000100000001000174
:1006800000010000005000000053003F0001005234
:100690000051000000390040004A004D004F0001A9
:1006A0000001002B005F005C005900620001005453
:1006B0000060005D005A0001300100550061005EDD
:1006C000005B0063000100560057005700580058B7
:1006D00071000001000100010001000100000001A3
:1006E0000001000100010001000100010001000102
:1006F000004C020100010001000100B200490101AB
:1007000000A80001000100B1004902010001000140
:10071000000100B500A800000001004900A9000088
:1007200000AA0000000100490001000000010000D3
:10073000000100B00001000100010000000100A55F
:10074000000100010001000100AC00A60001000151
:1007500000010001000100A70001000100010001EB
:1007600000010046000100010001000100AB00474C
:10077000004800010001000100000016034500725E
:100780000067006F0044006F007800200045005AA9
:1007900000000016034500720067006F0044006F00
:1007A000007800200045005A0000000403090409F5
:1007B000026D00040100A0FA090400000103010118
:1007C00000092111010001223F00070581030800F3
:1007D0000A090401000103010200092111010001BD
:1007E000224D000705820308000A090402000103E4
:1007F00000000009211101000122360007058303D2
:1008000008000A0904030001030000000921110186
:1008100000012239000705840310000112011001B4
:1008200000000008EDFE07130100010200010501B0
:100830000906A101050719E029E71500250195081A
:1008400075018102050819012905950575019102B7
:1008500095017503910105071900297715002501F8
:10086000957875018102C005010980A101850216F4
:10087000010026B7001A01002AB700751095018102
:1008800000C0050C0901A1018503160100269C0288
:100890001A01002A9C02751095018100C00501090A
:1008A00002A1010901A10005091901290515002569
:1008B0000195057501810295017503810105010905
:1008C0003009311581257F95027508810609381593
:1008D00081257F950175088106050C0A380215816E
:1008E000257F950175088106C0C005010906A10193
:1008F000050719E029E71500250195087501810212
:1009000095017508810105081901290595057501ED
:1009100091029501750391010507190029FF150042
:1009200025FF950675088100C0000000000000004A
:1009300000000000010204060A0F17202C3A4A5D4D
:1009400071879DB3C7DAE9F5FCFFFCF5E9DAC7B3B7
:100950009D87715D4A3A2C20170F0A060402010098
:100960000000000000000000000011241FBECFEFB7
:10097000DAE0DEBFCDBF04B603FE27C08091ED01F3
:100980009091EE01A091EF01B091F0018730904B72
:10099000A740B04BD1F41092ED011092EE011092ED
:1009A000EF011092F00114BE84B7877F84BF0FB6A9
:1009B000F894A895809160008861809360001092FF
:1009C00060000FBEE0E0FFE3099511E0A0E0B1E0B8
:1009D000E6EDF9E402C005900D92A433B107D9F712
:1009E00021E0A4E3B1E001C01D92AD3EB207E1F702
:1009F0000E946B0B0C94E9240C940000613049F0C8
:100A0000623059F488E00E94941A89E00E94941A96
:100A100004C0FC018281811103C080E090E0089550
:100A200080EE90E00895089556985E9825982D9848
:100A300026982E9827982F988091B1019091B20115
:100A4000A091B301B091B40190FF02C0259A2D9AF4
:100A50008091B5019091B601A091B701B091B80114
:100A60000297A105B10511F4269A2E9A0E94B110A1
:100A700081FF02C0279A2F9A08950C941405569866
:100A80005E9825982D9826982E9827982F988FEF66
:100A900090E0909389008093880090938B008093DE
:100AA0008A0090938D0080938C00259A2D9A2FEFC9
:100AB00080E792E0215080409040E1F700C00000C4
:100AC000269A2E9A2FEF80E792E0215080409040A6
:100AD000E1F700C00000279A2F9A2FEF80E792E0FD
:100AE000215080409040E1F700C0000025982D98EB
:100AF0002FEF80E792E0215080409040E1F700C066
:100B0000000026982E982FEF80E792E02150804039
:100B10009040E1F700C0000027982F9856985E9803
:100B200025982D9826982E9827982F98089589EA29
:100B30008093800089E08093810024982C983F98CE
:100B40008AB18F748AB96E98479A8BB1806B8BB9D2
:100B5000769A0E943F050C94130580E28093000171
:100B60008091340181110EC00E94FC0581E08093C8
:100B700034012FEF83ED90E3215080409040E1F766
:100B800000C0000080E40E940206809300018111F1
:100B90002EC00E942C0680930001811128C00E9463
:100BA0002C0680930001811122C08FE30E942C0645
:100BB0008093000181111BC00E94240680E40E94E2
:100BC000020680930001811112C08CE00E942C0665
:100BD0008093000181110BC00E942C0680930001BC
:100BE000811105C08FE30E942C06809300010E94B2
:100BF00024068091000108951092B9008AE0809344
:100C0000B800089594EA9093BC009091BC0097FFBF
:100C1000FCCF9091B900987F983021F0903111F07D
:100C200081E008958093BB0084E88093BC008091AC
:100C3000BC0087FFFCCF8091B900887F883111F01C
:100C4000803471F780E0089584E98093BC0080913E
:100C5000BC0084FDFCCF08958093BB0084E88093A2
:100C6000BC008091BC0087FFFCCF9091B900987FB9
:100C700081E0983209F480E0089584E88093BC0014
:100C80008091BC0087FFFCCF8091BB0008958091CC
:100C90000001811115C080E40E94020680930001CA
:100CA00081110CC082E10E942C0680930001811109
:100CB00005C08FEF0E942C06809300010E9424063D
:100CC00084B1807F84B985B1807F85B98AB1837F03
:100CD0008AB98BB1837F8BB93E98469808950E945C
:100CE000AD05809300010E94470680B38C7080BBE5
:100CF00081B3836F81BBE4E4F1E0A6E3B1E011923C
:100D00001D9281E0E235F807D1F70C9497059F9288
:100D1000AF92BF92CF92DF92EF92FF920F931F9309
:100D2000CF93DF9380910001882379F08091350182
:100D30008F5F80933501811108C00E94AD058093BB
:100D40000001811102C00E943F0586E3E82E81E088
:100D5000F82E8701C0E0D0E0BB24B39492E0A92E26
:100D6000CC24C394D12CC730D10500F5809100016B
:100D7000811164C080E40E94020680930001811109
:100D800012C082E10E942C068093000181110BC0E9
:100D9000C6010C2E01C0880F0A94EAF780950E94C4
:100DA0002C06809300010E94240648C0CA30A1F09E
:100DB00028F4C83059F0C93061F005C0CC3089F052
:100DC00070F0CD3089F0209A289810C0219A299887
:100DD0000DC0229A2A980AC0239A2B9807C0529ACB
:100DE00001C0539A5B9802C03E9A4698E0EAEA95A1
:100DF000F1F78FB181708B25799902C032E001C083
:100E000030E0832B7C9902C034E001C030E0832BBA
:100E10007D9902C028E001C020E0822B7E9902C0AB
:100E200090E101C090E0892B9FB19095991F99277F
:100E3000991F9295990F907E892B0FC08091000188
:100E400081114AC080E40E94020680930001882339
:100E500081F1912C0E942406892DD8019C9198172C
:100E600019F08C93A09201010E94470621960F5F12
:100E70001F4FCE30D10509F076CF80910101882334
:100E800069F1815080930101882339F0EFE9FFE097
:100E90003197F1F700C0000021C0E4E4F1E0D70190
:100EA0008D917D018193B4E4EB16B1E0FB06B9F7B7
:100EB00015C083E10E942C06809300018111C9CFE7
:100EC00081E40E940206809300018111C2CF0E943A
:100ED0003D06982E9094BECF80E0BFCF0E943D0586
:100EE00081E0DF91CF911F910F91FF90EF90DF9004
:100EF000CF90BF90AF909F900895E82FF0E0EC5B0B
:100F0000FE4F8081089508958B3B910580F4883AC7
:100F1000910548F5853A9105D8F48430910508F09B
:100F2000B2C0019709F06EC081E090E00895803E64
:100F3000910508F467C0883E910508F4A4C09C019F
:100F4000205F31092031310508F05CC090650895BB
:100F5000853A910509F459C0863A910509F058C0BF
:100F600082E890E40895883A910509F454C0893ADA
:100F7000910509F453C08A3A910509F452C08B3A9D
:100F8000910509F451C08C3A910509F450C08D3A8D
:100F9000910509F44FC0803B910509F44EC08E3A8B
:100FA000910509F44DC08F3A910509F44CC0813B7D
:100FB000910509F44BC0823B910509F44AC0833B7B
:100FC000910509F449C0843B910509F448C0853B6B
:100FD000910509F447C0863B910509F446C0873B5B
:100FE000910509F445C0883B910509F444C0893B4B
:100FF000910509F443C08A3B910509F442C080E0A1
:1010000094E4089580E090E0089581E890E40895E4
:1010100083E890E4089582EE94E4089589EE94E4E0
:1010200008958AEE94E4089585EB94E4089586EBA0
:1010300094E4089587EB94E408958CEC94E4089587
:101040008DEC94E4089583E895E408958AE895E4A6
:10105000089582E995E4089584E995E4089581E28C
:1010600096E4089583E296E4089584E296E4089570
:1010700085E296E4089586E296E4089587E296E490
:1010800008958AE296E40895089524E5829FC001B8
:101090001124FC0126E0729FE00DF11D1124E60FE2
:1010A000F11DEE0FFF1FE551FF4F859194910895BB
:1010B000880F991FFC01E559F0408591949108959E
:1010C000880F991FFC01E551FF4F85919491089578
:1010D00024E5829FC0011124FC0146E0749FE00DCD
:1010E000F11D1124E60FF11DEE0FFF1FE551FF4F1B
:1010F000859194919C013A9521154FE1340708F4AC
:1011000025C13F512115304120F49F700E94600895
:1011100008959C0130532115304118F49927906CA3
:101120000895811520E5920769F40E941A164FEF81
:1011300084E39CE0415080409040E1F700C0000013
:101140000C94D11C813020E5920731F48091CC01C0
:1011500081608093CC0108959C0130552115304168
:1011600008F05CC0292F33272F7033272130310539
:10117000E9F4AC0164E0440F551F6A95E1F7442798
:101180005370BC016370772702C0220F331F6A952A
:10119000E2F73C68242B352B73E0880F991F7A9572
:1011A000E1F780769927822B932B08952230310521
:1011B00029F4982F8827816F906A0895233031058C
:1011C000A1F4AC0133E0440F551F3A95E1F7407E9E
:1011D00057708370992721E030E002C0220F331F3F
:1011E0008A95E2F7C9019C6816C02430310531F5B3
:1011F000AC0123E0440F551F2A95E1F7407E57705C
:101200008370992721E030E002C0220F331F8A95B6
:10121000E2F7C9019A68842B952B08959C013057F9
:101220002115304118F49F70906208959C01305848
:101230002115304118F49F70906A0895803E910501
:10124000E0F4803C910558F58133910509F46FC0B5
:1012500048F48932910509F463C08A32910509F492
:101260006DC072C089339105E9F082389105D1F0E3
:101270008533910509F44DC067C0833E910581F126
:1012800038F4803E9105B9F0823E9105D9F05CC0FA
:10129000863E910561F1873E9105A1F155C00E94FE
:1012A000580808952091DE0120FD02C021FF4CC0A6
:1012B00080EE90E049C08091DE0180FFF9CF89E3A4
:1012C00090E042C08091DE0182FF0EC08091DE017D
:1012D00084FF03C080E090E037C083EE90E034C02C
:1012E0008091DE0182FFF2CF82EE90E02DC08091EE
:1012F000DE0183FF0BC08091DE0184FDEBCF87EE22
:1013000090E022C08091DE0183FFF5CF86EE90E071
:101310001BC08091DE0185FF07C089E290E014C008
:101320008091DE0185FFF9CF85E390E00DC08091CB
:10133000DE0186FF07C08AE290E006C08091DE01F0
:1013400086FFF9CF81E390E00E9484070895089515
:10135000809162010895CF93DF9300D01F92CDB7A3
:10136000DEB79C018091E401843019F593E0998304
:101370003B832A839093E9008FEF9091E80081509E
:1013800095FD06C095ED9A95F1F700008111F5CF16
:101390008091E80085FF0DC040E050E063E070E020
:1013A000CE0101960E94180C8091E8008E77809300
:1013B000E8000F900F900F90DF91CF910895CF9399
:1013C000DF9300D01F92CDB7DEB72091E401243027
:1013D00021F522E029839B838A8383E08093E900BF
:1013E0008FEF9091E800815095FD06C095ED9A959C
:1013F000F1F700008111F5CF8091E80085FF0DC065
:1014000040E050E063E070E0CE0101960E94180CCD
:101410008091E8008E778093E8000F900F900F90F6
:10142000DF91CF9108959C018091E4018430F9F41B
:1014300082E08093E9009FEF8091E800915085FD64
:1014400006C085ED8A95F1F700009111F5CF8091E6
:10145000E80085FF0CC040E050E065E070E0C901A5
:101460000E94180C8091E8008E778093E800089520
:10147000CF93DF93EC018091E401843009F046C002
:1014800090910C019923D9F090910D019923B9F015
:101490008093E9008FEF9091E800815095FD06C0A0
:1014A00095E19A95F1F700008111F5CF8091E80060
:1014B00085FF2CC040E050E060E170E017C081E0A3
:1014C0008093E9008FEF9091E800815095FD06C070
:1014D00095ED9A95F1F700008111F5CF8091E80024
:1014E00085FF14C040E050E068E070E0CE010E944B
:1014F000180C8091E8008E778093E80080E1FE016F
:10150000A2E5B1E001900D928A95E1F7DF91CF91CC
:1015100008958091E301811109C00E94A90D0E94E4
:10152000060E8091E20084608093E200089510929C
:10153000E301089508950C9407230E94671C0E94FC
:101540000D230E94B1100C94A70942E061EC81E0E8
:101550000E94220D42E061EC82E00E94220D42E0F6
:1015600061EC83E00E94220D42E161EC84E00C9486
:10157000220D8091E601833009F455C030F48130AA
:1015800071F0823009F48EC008958A3009F47AC06F
:101590008B3009F460C0893009F09CC020C0809174
:1015A000E501813A09F096C08091E800877F809339
:1015B000E8008091E9019091EA01892B21F460E132
:1015C00082E591E003C060E080E090E070E00E947E
:1015D000630C8091E8008B778093E80008958091F8
:1015E000E501813209F076C08091E9019091EA012C
:1015F000009719F0039709F06DC08091E800877F8C
:101600008093E8008091E80082FD05C08091E401AC
:101610008111F8CF5FC08091F100809362018091C9
:10162000E8008B7753C08091E501813A09F052C000
:101630008091E9019091EA01892B09F04BC08091DA
:10164000E800877F8093E8008091E80080FFFCCF6E
:1016500080910C0136C08091E5018132D9F58091ED
:10166000E9019091EA01892BA9F58091E800877F33
:101670008093E8000E94570D8091E70180930C0150
:101680000C941A168091E501813221F58091E800D1
:10169000877F8093E8000E94570D8091E801809336
:1016A000630108958091E501813AA1F48091E800F9
:1016B000877F8093E8008091E80080FFFCCF8091D5
:1016C00063018093F1008091E8008E778093E800B9
:1016D0000C94570D089584B7877F84BF0FB6F89494
:1016E000A8958091600088618093600010926000EE
:1016F0000FBE90E080E80FB6F8948093610090935D
:1017000061000FBE0E9400110E94A90D0E94060EEA
:101710008091E20084608093E20078940E949110AE
:101720000E94021182E091E00E94AC100E94F5221A
:101730008091E401853069F40E94291C8091E201C6
:101740008823B1F30E94531C882391F30E94020C5A
:10175000EFCF0E940811ECCF292F3327233031051A
:10176000C9F060F42130310581F02230310509F0F3
:1017700041C08DE690E02FEA37E040C021323105CC
:10178000E1F02232310531F135C082E190E02CE107
:1017900038E034C099278130910549F028F002974C
:1017A00049F5EBE7F7E005C0EBEAF7E002C0E3E953
:1017B000F7E0849190E09F0121C06430D8F4E62FD7
:1017C000F0E0EE0FFF1FEE5DFE4F2081318189E0DA
:1017D00090E014C0643070F470E0FB01EE0FFF1F66
:1017E000E65EFE4F20813181FB01EA5EFE4F808183
:1017F00090E004C080E090E020E030E0FA01318326
:101800002083089580E189BD82E189BD09B400FE8D
:10181000FDCF8091D8008F7D8093D8008091E0002B
:1018200082608093E0008091E00081FDFCCF08950C
:10183000CF92DF92EF92FF920F931F93CF93DF939C
:10184000EC018B016A010E94760D811133C0C11435
:10185000D10439F0F60180819181081B190BC80F62
:10186000D91FE12CF12C0115110519F18091E80027
:1018700085FD16C08091E8008E778093E800C11442
:10188000D10449F0F60180819181E80EF91EF182C0
:10189000E08285E00FC00E94760D882321F30AC004
:1018A00089918093F10001501109FFEFEF1AFF0AAF
:1018B000DACF80E0DF91CF911F910F91FF90EF90F1
:1018C000DF90CF9008952091EB013091EC01261725
:1018D000370748F06115710539F42091E8002E773B
:1018E0002093E80001C0B901FC0120E061157105F9
:1018F00079F18091E4018823F1F18530F1F1809153
:10190000E80083FD3CC08091E80082FD2EC08091FC
:10191000E80080FFEBCF2091F3008091F20090E08F
:10192000922B6115710551F08830910538F42191A1
:101930002093F100615071090196F3CF21E00897DF
:1019400009F020E08091E8008E778093E800CECF08
:101950002111CFCF0AC08091E401882361F0853046
:1019600061F08091E80083FD0AC08091E80082FF69
:10197000F2CF80E0089582E0089583E0089581E049
:1019800008952091EB013091EC012617370748F0BC
:101990006115710539F42091E8002E772093E80055
:1019A00001C0B901FC0120E06115710591F1809140
:1019B000E401882309F440C0853009F43FC08091D8
:1019C000E80083FD3DC08091E80082FD2FC080913A
:1019D000E80080FFE9CF2091F3008091F20090E0D1
:1019E000922B6115710559F08830910540F42491CE
:1019F0002093F1003196615071090196F2CF21E0F8
:101A0000089709F020E08091E8008E778093E80045
:101A1000CBCF2111CCCF0AC08091E401882361F0A3
:101A2000853061F08091E80083FD0AC08091E80074
:101A300082FFF2CF80E0089582E0089583E0089568
:101A400081E00895982F973068F59093E9009817F2
:101A500039F07091EC002091ED005091F00003C03E
:101A6000242F762F50E021FD02C09F5FECCF3091F4
:101A7000EB003E7F3093EB003091ED003D7F3093E3
:101A8000ED003091EB0031603093EB007093EC008F
:101A90002093ED005093F0002091EE0027FDE5CF5C
:101AA00080E008958F708093E90081E0089580912F
:101AB000E50187FF11C08091E80082FD05C080919B
:101AC000E4018111F8CF11C08091E8008B770BC041
:101AD0008091E401882349F08091E80080FFF8CFED
:101AE0008091E8008E778093E80008952091E400CB
:101AF0003091E50095E64091EC00842F817040FF25
:101B000023C08091E80080FD1DC08091E4018823FE
:101B100099F0853099F08091EB0085FD11C04091DE
:101B2000E4005091E5002417350729F3915011F096
:101B30009A01E1CF84E0089582E0089583E008955A
:101B400081E0089580E008954091E80042FFDDCFF4
:101B500008950E94170E0E941F0EE0EEF0E08081B3
:101B600081608083E8EDF0E080818F77808319BC0D
:101B7000A7EDB0E08C918E7F8C9380818F7E8083E7
:101B80001092E30108950F931F93CF93DF930E9468
:101B9000170E0E941F0EC8EDD0E088818F778883D2
:101BA00088818068888388818F7D888319BC1092A2
:101BB000E4011092E0011092E2011092E10100EEC6
:101BC00010E0F80180818B7F808388818160888329
:101BD00042E060E080E00E94220DE1EEF0E08081D2
:101BE0008E7F8083E2EEF0E080818160808380815F
:101BF00088608083F80180818E7F80838881806106
:101C00008883DF91CF911F910F910895E8EDF0E067
:101C100080818F7E8083E7EDF0E08081816080832A
:101C200084E082BF81E08093E3010C94C30DE8ED72
:101C3000F0E080818E7F80831092E2000895109200
:101C4000DA001092E10008951F920F920FB60F92E2
:101C500011242F933F934F935F936F937F938F93B1
:101C60009F93AF93BF93EF93FF938091E10082FF27
:101C70000BC08091E20082FF07C08091E1008B7F62
:101C80008093E1000E9490108091DA0080FF1FC0D5
:101C90008091D80080FF1BC08091DA008E7F8093F6
:101CA000DA008091D90080FF0DC080E189BD82E11A
:101CB00089BD09B400FEFDCF81E08093E4010E945C
:101CC000890A05C019BC1092E4010E94970A80910C
:101CD000E10080FF19C08091E20080FF15C0809173
:101CE000E2008E7F8093E2008091E2008061809329
:101CF000E2008091D80080628093D80019BC85E012
:101D00008093E4010E949B0A8091E10084FF30C02F
:101D10008091E20084FF2CC080E189BD82E189BD11
:101D200009B400FEFDCF8091D8008F7D8093D8004C
:101D30008091E1008F7E8093E1008091E2008F7EB0
:101D40008093E2008091E20081608093E2008091C4
:101D5000E001882311F084E007C08091E30087FD53
:101D600002C081E001C083E08093E4010E949D0AEB
:101D70008091E10083FF29C08091E20083FF25C0AC
:101D80008091E100877F8093E10082E08093E4010D
:101D90001092E0018091E1008E7F8093E1008091BC
:101DA000E2008E7F8093E2008091E2008061809368
:101DB000E20042E060E080E00E94220D8091F000AD
:101DC00088608093F0000E949A0AFF91EF91BF9182
:101DD000AF919F918F917F916F915F914F913F91C3
:101DE0002F910F900FBE0F901F9018951F920F927A
:101DF0000FB60F9211242F933F934F935F936F93DE
:101E00007F938F939F93AF93BF93CF93DF93EF9382
:101E1000FF93C091E900CF708091EC00D82FD17072
:101E200080FDD0E81092E9008091F000877F8093D8
:101E3000F00078940E943A0F1092E9008091F0002F
:101E400088608093F000CD2BCF70C093E900FF91A4
:101E5000EF91DF91CF91BF91AF919F918F917F9142
:101E60006F915F914F913F912F910F900FBE0F9007
:101E70001F9018951F93CF93DF93CDB7DEB7AA9726
:101E80000FB6F894DEBF0FBECDBFE5EEF1E0809156
:101E9000F100819321E0ED3EF207C9F70E94B90AF3
:101EA0008091E80083FF24C18091E5019091E601D3
:101EB000492F50E04A30510508F01AC1FA01EA5A98
:101EC000FF4F0C949E24803881F0823809F010C1B5
:101ED0008091E9018F708093E9008091EB0085FB90
:101EE000882780F91092E90006C08091E101909165
:101EF000E201911182609091E800977F9093E80051
:101F00008093F1001092F100C8C0282F2D7F09F0B6
:101F1000EFC0882319F0823061F0EAC08091E701B8
:101F2000813009F0E5C0933009F080E08093E20150
:101F30002BC08091E701811127C08091E9018F704A
:101F400009F4D6C08093E9002091EB0020FF1CC06B
:101F5000933021F48091EB00806214C09091EB00EB
:101F600090619093EB0021E030E0A90102C0440FA2
:101F7000551F8A95E2F74093EA001092EA0080919B
:101F8000EB0088608093EB001092E9008091E800FC
:101F9000877F86C08111ACC01091E7011F778091C7
:101FA000E3008078812B8093E3008091E800877FB5
:101FB0008093E8000E94570D8091E80080FFFCCFDD
:101FC0008091E30080688093E300111102C082E0F9
:101FD00001C083E08093E4018BC08058823008F018
:101FE00087C08091E7019091E8018C3D53E095070F
:101FF00079F583E08A838AE289834FB7F894DE011A
:10200000139620E03EE051E2E32FF0E050935700BA
:10201000E49120FF03C0E295EF703F5FEF708E2FD9
:1020200090E0EA3010F0C79601C0C0968D939D9362
:102030002F5F243149F74FBF8091E800877F80935D
:10204000E8006AE270E0CE0101960E94630C14C0C1
:10205000AE014F5F5F4F6091E9010E94AC0BBC0184
:10206000892B09F445C09091E800977F9093E80090
:1020700089819A810E94C10C8091E8008B778093BE
:10208000E80036C08038A1F58091E800877F809312
:10209000E8008091E0018093F1008091E8008E7764
:1020A0008093E8000E94570D23C0811121C08091C8
:1020B000E7019091E80199270297D4F48091E80014
:1020C000877F8093E8008091E7018093E0010E9480
:1020D000570D8091E001811106C08091E30087FDDA
:1020E00002C081E001C084E08093E4010E94A50A5F
:1020F0008091E80083FF0AC08091E800877F809389
:10210000E8008091EB0080628093EB00AA960FB606
:10211000F894DEBF0FBECDBFDF91CF911F91089520
:102120000895CF938091E4018823A1F0C091E90044
:10213000CF709091EC00892F817090FD80E8C82BC2
:102140001092E9008091E80083FD0E943A0FCF7061
:10215000C093E900CF91089590936901809368013D
:102160000895E0916801F0916901309721F00190A4
:10217000F081E02D099480E00895E0916801F091EC
:102180006901309721F00280F381E02D09940895D0
:10219000E0916801F0916901309721F00480F581A8
:1021A000E02D099408952091660130916701281768
:1021B000390771F09093670180936601E09168019F
:1021C000F0916901309721F00680F781E02D0994A4
:1021D000089520916401309165012817390771F045
:1021E0009093650180936401E0916801F091690129
:1021F000309721F00084F185E02D09940895089529
:102200000C94FF100E946D1C0E946F060C94331DED
:10221000CF92DF92EF92FF920F931F93CF93DF93B2
:10222000CDB7DEB72B970FB6F894DEBF0FBECDBF8C
:102230000E9487068BE6C82E81E0D82E00E010E0D1
:10224000E02E802F0E947D07F60141916F01F82E4C
:10225000F426B1F40F5F1F4F0E30110589F78FEF91
:1022600089838A831B820E94761C8160782F9D83DC
:102270008C8349815A816B818D810E94AB1140C052
:102280009091CC0191FF04C08B870E9483078B85BE
:1022900020E030E04F2D50E0922FBA01022E02C014
:1022A000759567950A94E2F760FF24C02E83EF824C
:1022B00021E030E0690102C0CC0CDD1C9A95E2F708
:1022C00090E08C219D21892B09F420E028870E9431
:1022D000761C8160782F9A8789874E815F81688517
:1022E0008A850E94AB11F801E559FE4F8081C8260E
:1022F000C08206C02F5F3F4F2630310569F6AACF56
:102300000E941A200E94B11090916A018917A1F0D1
:102310000E94B11080936A012B960FB6F894DEBF2D
:102320000FBECDBFDF91CF911F910F91FF90EF9026
:10233000DF90CF900C94A7092B960FB6F894DEBFD0
:102340000FBECDBFDF91CF911F910F91FF90EF9006
:10235000DF90CF900895CF93DF93CDB7DEB72B9763
:102360000FB6F894DEBF0FBECDBF4F835887698785
:102370007A878B87DE01119686E0FD0111928A959E
:10238000E9F785E0FE01379601900D928A95E1F715
:1023900049815A816B817C818D819E810E94AE181A
:1023A0002B960FB6F894DEBF0FBECDBFDF91CF9155
:1023B0000895CF93C82F882309F4C1C0823859F4F7
:1023C0000E94B11081FDBBC089E30E944B1B0E949B
:1023D000031C89E30CC0833879F40E94B11080FD9E
:1023E000AEC083E50E944B1B0E94031C83E50E9444
:1023F0008A1BCF910C94031C843859F40E94B110AD
:1024000082FD9DC087E40E944B1B0E94031C87E451
:10241000EECF8CEF8C0F813A48F48C2F0E945A2219
:1024200081118DC08C2F0E944B1BE3CF80E28C0F5B
:10243000883048F4C77081E001C0880FCA95EAF778
:102440000E94CC1BD6CF8BE58C0F833078F4C53A35
:1024500029F0C63A31F083E890E005C081E890E0C9
:1024600002C082E890E0CF910C94D31088E58C0FE5
:10247000833108F064C0C83A39F1C93A41F1CA3A27
:1024800049F1CB3A51F1CC3A59F1CD3A61F1C03B27
:1024900069F1CE3A71F1CF3A79F1C13B81F1C23B9A
:1024A00089F1C33B91F1C43B99F1C53BA1F1C63B16
:1024B000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B76
:1024C000C9F180E090E038C082EE90E035C089EE3E
:1024D00090E032C08AEE90E02FC085EB90E02CC0F7
:1024E00086EB90E029C087EB90E026C08CEC90E072
:1024F00023C08DEC90E020C083E891E01DC08AE805
:1025000091E01AC082E991E017C084E991E014C01B
:1025100081E292E011C083E292E00EC084E292E098
:102520000BC085E292E008C086E292E005C087E237
:1025300092E002C08AE292E0CF910C94E910CF9130
:102540000895882309F44BC0823859F40E94B110D1
:1025500081FF45C089E30E944B1B0E94031C89E355
:102560000CC0833871F40E94B11080FF38C083E53D
:102570000E944B1B0E94031C83E50E948A1B0C9443
:10258000031C843859F40E94B11082FF28C087E4EC
:102590000E944B1B0E94031C87E4EFCF9CEF980F17
:1025A000913A58F390E2980F983050F4877091E088
:1025B00001C0990F8A95EAF7892F0E94D21BDFCFBD
:1025C0009BE5980F933020F480E090E00C94D310BA
:1025D000885A833120F480E090E00C94E91008954B
:1025E000882321F00E94CC1B0C94031C089588239F
:1025F00021F00E94D21B0C94031C0895BF92CF922D
:10260000DF92EF92FF920F931F93CF93DF9300D04F
:1026100000D000D0CDB7DEB77C0185E0F701DE0148
:10262000119601900D928A95E1F7F70183819481CB
:10263000892B09F4DDC2908181818F3F19F49F3F7E
:1026400009F4D6C2F7010281258122952F70998362
:102650008A8389819A812E830E940A1B182FB92EA2
:102660000E94091B0E94D019EB2DE295EF704E2FAE
:1026700050E0FA01E05AFF4F2E810C949E248B2DDE
:10268000807F9B2D9F70F92E882319F0F29480EFA4
:10269000F822002349F0FF2009F457C28F2D0E9431
:1026A000DC1B0E94031C51C2812F0E94A112FF203B
:1026B00009F49EC28F2D0E94E21B26960FB6F89455
:1026C000DEBF0FBECDBFDF91CF911F910F91FF9065
:1026D000EF90DF90CF90BF900C94031C3B2D307F88
:1026E0008B2D8F70303211F08295807F112319F07D
:1026F000113021F12CC00023B9F0222309F490C13C
:10270000213009F08DC126960FB6F894DEBF0FBEBA
:10271000CDBFDF91CF911F910F91FF90EF90DF9090
:10272000CF90BF900C94EC1B222319F0213009F4B8
:102730005FC28E830E94EF1B8E8186C1002321F031
:10274000223008F055C26CC1211152C27DC1002354
:1027500021F0222309F464C1F8C1222309F474C1D1
:1027600009C28B2D86958695837019F08130D1F042
:102770003FC2002321F0812F9B2D937002C080E087
:1027800090E026960FB6F894DEBF0FBECDBFDF9166
:10279000CF911F910F91FF90EF90DF90CF90BF905E
:1027A0000C94D310002321F0812F9B2D937002C035
:1027B00080E090E026960FB6F894DEBF0FBECDBF46
:1027C000DF91CF911F910F91FF90EF90DF90CF900D
:1027D000BF900C94E910812F002319F00E94221F52
:1027E00002C00E948A1F26960FB6F894DEBF0FBE65
:1027F000CDBFDF91CF911F910F91FF90EF90DF90B0
:10280000CF90BF900C940F208B2D837009F075C072
:102810000111EEC1812F829586958770880F880FF0
:10282000912F9F70C92ED12CE12CF12C082E04C0C1
:10283000CC0CDD1CEE1CFF1C0A94D2F714FF12C056
:102840000FE010E020E030E004C0000F111F221F55
:10285000331F8A95D2F7C901B801609570958095AC
:10286000909503C060E070E0CB014B2D46954695F6
:1028700043704230C1F060F56C297D298E299F2973
:10288000413051F126960FB6F894DEBF0FBECDBF92
:10289000DF91CF911F910F91FF90EF90DF90CF903C
:1028A000BF900C94F7196C297D298E299F292696B3
:1028B0000FB6F894DEBF0FBECDBFDF91CF911F9151
:1028C0000F91FF90EF90DF90CF90BF900C94131A70
:1028D0000E94F719C701B60126960FB6F894DEBF1D
:1028E0000FBECDBFDF91CF911F910F91FF90EF9061
:1028F000DF90CF90BF900C94DB19002319F08B2D43
:10290000817001C08695882309F472C1812F829558
:1029100086958770880F880F912F9F70C92ED12CB4
:10292000E12CF12C082E04C0CC0CDD1CEE1CFF1C8D
:102930000A94D2F714FF12C00FE010E020E030E05C
:1029400004C0000F111F221F331F8A95D2F7C9013F
:10295000B801609570958095909503C060E070E037
:10296000CB014B2D4695469543704230C1F060F542
:102970006C297D298E299F29413051F126960FB669
:10298000F894DEBF0FBECDBFDF91CF911F910F91A5
:10299000FF90EF90DF90CF90BF900C94D11A6C29EC
:1029A0007D298E299F2926960FB6F894DEBF0FBE8B
:1029B000CDBFDF91CF911F910F91FF90EF90DF90EE
:1029C000CF90BF900C94ED1A0E94D11AC701B601A6
:1029D00026960FB6F894DEBF0FBECDBFDF91CF9124
:1029E0001F910F91FF90EF90DF90CF90BF900C94CC
:1029F000B51A103FD1F118F4103E50F4A1C0123FA7
:102A000009F463C008F44CC0133F09F473C098C0C4
:102A10001F708B2D8F710023A1F00E944E1A812F01
:102A200026960FB6F894DEBF0FBECDBFDF91CF91D3
:102A30001F910F91FF90EF90DF90CF90BF900C947B
:102A4000F0120E946F1A812F26960FB6F894DEBFFF
:102A50000FBECDBFDF91CF911F910F91FF90EF90EF
:102A6000DF90CF90BF900C94F7120023A9F02111B2
:102A7000BFC08B2D8F7126960FB6F894DEBF0FBEA8
:102A8000CDBFDF91CF911F910F91FF90EF90DF901D
:102A9000CF90BF900C94941A223008F0A9C0E9CFCF
:102AA0000023A9F08B2D8F7126960FB6F894DEBF08
:102AB0000FBECDBFDF91CF911F910F91FF90EF908F
:102AC000DF90CF90BF900C944E1A002359F38B2DBA
:102AD0008F7126960FB6F894DEBF0FBECDBFDF9183
:102AE000CF911F910F91FF90EF90DF90CF90BF900B
:102AF0000C946F1A002399F08B2D8F7126960FB6C8
:102B0000F894DEBF0FBECDBFDF91CF911F910F9123
:102B1000FF90EF90DF90CF90BF900C94391A2696DB
:102B20000FB6F894DEBF0FBECDBFDF91CF911F91DE
:102B30000F91FF90EF90DF90CF90BF900C942F1AE1
:102B40000023A9F0222309F4ADCF812F26960FB6DA
:102B5000F894DEBF0FBECDBFDF91CF911F910F91D3
:102B6000FF90EF90DF90CF90BF900C94D91122236B
:102B700009F4ADCF812F26960FB6F894DEBF0FBEB5
:102B8000CDBFDF91CF911F910F91FF90EF90DF901C
:102B9000CF90BF900C94A1124B2D4F70612FC701A5
:102BA0000E94FE0426960FB6F894DEBF0FBECDBF7E
:102BB000DF91CF911F910F91FF90EF90DF90CF9019
:102BC000BF900C9453194B2D4F70612FC70126965F
:102BD0000FB6F894DEBF0FBECDBFDF91CF911F912E
:102BE0000F91FF90EF90DF90CF90BF900C9444082E
:102BF00026960FB6F894DEBF0FBECDBFDF91CF9102
:102C00001F910F91FF90EF90DF90CF90BF900895AC
:102C10000E94E91B0E94BE1B0E94031C0E94BF2051
:102C20000E940F2080E090E00E94D31080E090E0AE
:102C30000C94E9100E94D91B0C9408160E940A1BE0
:102C4000292F22952F702C3030F42A3048F422504E
:102C5000223078F405C02C3041F02F3031F009C01B
:102C6000803E48F0803F29F406C093FB882780F916
:102C7000089580E0089581E00895CF93DF9300D018
:102C800000D01F92CDB7DEB70F900F900F900F902E
:102C90000F90DF91CF910895CF93DF9300D000D0B4
:102CA00000D0CDB7DEB726960FB6F894DEBF0FBEC4
:102CB000CDBFDF91CF9108951F93CF93DF93C09144
:102CC000790116E080917A01C81799F0D0E01C9F35
:102CD000F0011D9FF00D1124E558FE4F40815181F8
:102CE00062817381848195810E944C162196C77000
:102CF000E9CFDF91CF911F9108954091AB015091A1
:102D0000AC016091AD017091AE018091AF019091E5
:102D1000B0010C944C168091B00182958F7009F02F
:102D200054C08091AD01882309F44FC0809179018E
:102D3000A0917A014091AE015091AF016091AB0139
:102D40007091AC01B6E08A1709F43FC090E04115DC
:102D50005105C1F17F3F11F46F3FA1F1B89FF00120
:102D6000B99FF00D1124E558FE4F218127132AC089
:102D70002081261327C02281211124C02381348180
:102D80002417350710F421503109241B350B283C3A
:102D90003105C0F42091B0012F7020612093B00163
:102DA00026E0289FF001299FF00D1124E058FE4FE6
:102DB00080818F70806180838BEA91E00E94FE1297
:102DC0000C945C1601968770BECF0895CF92DF9267
:102DD000EF92FF920F931F93CF93DF93CDB7DEB7A0
:102DE00062970FB6F894DEBF0FBECDBF8C0185E0B1
:102DF000F801DE011D9601900D928A95E1F7D80148
:102E00004C9111965C91119712966C918091AE0144
:102E10009091AF01009709F475C13091AB017091A9
:102E2000AC017F3F19F43F3F09F46CC1F801C38046
:102E3000D480E090AD01EE2009F4BEC02091B00135
:102E4000C816D90628F0D601A81BB90BCD0104C0BD
:102E5000809590958C0D9D1DFF24F394883C9105E1
:102E600078F0F12C207F09F0C4C07C2DD98AC88A63
:102E700089890E943D168BEA91E00E94FE12AFC044
:102E8000822F807F09F045C0571313C0431311C030
:102E900061110FC02F7020612093B0010E947D1638
:102EA0008BEA91E00E94FE128091B001F8018583C7
:102EB0002EC0CD2819F15F3F11F44F3FF9F0F62EE7
:102EC00061111CC08091790120917A0136E082174E
:102ED00009F45BC090E0389FF001399FF00D112498
:102EE000E558FE4F7181571306C07081471303C028
:102EF0007281711103C001968770E9CFF62E6623A7
:102F000009F41CC18091B00181608093B001F12C63
:102F100015C1571309C0431307C0611105C0809143
:102F2000B001F8018583C8C04D875E878D859E8579
:102F30006A8B0E941E166A898823D1F16623C1F12B
:102F40002091B001822F82958F7090E0029774F0EB
:102F50008091AB019091AC0198878F831986DB86B5
:102F6000CA862C87CE0107960E94FE1286E0F801E1
:102F7000ABEAB1E001900D928A95E1F70E948B16C1
:102F80000E947D16FF24F394D9C04D875E878D85FE
:102F90009E850E940A1B292F22952F70223008F04F
:102FA000C1C09F7009F0BBC0805E883008F4C6C005
:102FB000C8010E94FE12E6CFC816D90608F453C015
:102FC000F601E81BF90BCF01883C910508F450C0CD
:102FD000F12C7C2DD98AC88A89890E943D16EBEA9A
:102FE000F1E086E0DF011D928A95E9F70E947D16E7
:102FF000A5C0571314C0431312C0611110C08091B3
:10300000B001F8018583C8010E94FE1286E0EBEA58
:10301000F1E0DF011D928A95E9F7FE2C8FC04D8704
:103020005E878D859E856A8B0E941E166A8988231D
:1030300009F4BECF662309F4BBCF2091B001822FE3
:1030400082958F7090E002970CF490CF8091AB0145
:103050009091AC019A8389831B82DD82CC822E837E
:10306000CE01019681CF809590958C0D9D1DACCFA2
:10307000F62E662309F49CCF571333C0431331C097
:103080002091B00120FD24C0822F82958F70482F9F
:1030900050E041155105E1F0D80115962C93159794
:1030A0004F30510549F08F5F982F9295907F822F76
:1030B0008F70892B15968C93C8010E94FE1286E0B2
:1030C000F801ABEAB1E001900D928A95E1F78ECF5D
:1030D00086E0F801ABEAB1E001900D928A95E1F744
:1030E0002DC04D875E878D859E850E941E1681119D
:1030F0003DCF8091B00181608093B001C8010E94F2
:10310000FE121CC0662309F453CF4D875E878D8560
:103110009E850E941E16882309F44ACF27CF81116D
:1031200043CF0CC0243008F043CF9F7009F43CCF4C
:10313000D80115969C91907F09F036CF8F2D62961D
:103140000FB6F894DEBF0FBECDBFDF91CF911F91B8
:103150000F91FF90EF90DF90CF9008951F93CF9342
:10316000DF93CDB7DEB72C970FB6F894DEBF0FBE56
:10317000CDBF4F83588769877A878B879C87CE011D
:1031800007960E94E616882371F08A859B85892B15
:1031900009F441C088858F3F09F065C08F818F3F5A
:1031A00009F061C038C086E0FE013796DE01119655
:1031B00001900D928A95E1F76A857B85611571050D
:1031C00051F1FF81E885EF3F11F4FF3F21F120919C
:1031D0007A0130E0C9010196877099274091790101
:1031E00050E08417950709F447C0F983EA837D838B
:1031F0006C8396E0929FD001939FB00D1124A55847
:10320000BE4FFE01319601900D929A95E1F78093A1
:103210007A010E945C1616E08091790190917A0102
:103220008917B9F1189FC001112485589E4F0E943B
:10323000E616882371F1E09179011E9FF0011124B7
:10324000E558FE4F4081518162817381848195816F
:103250000E944C168091790190E001968770992721
:1032600080937901D9CF4F81588569857A858B857F
:103270009C850E944C16CFCF0E941A1610927A019C
:1032800010927901EBEAF1E086E0DF011D928A9568
:10329000E9F72C960FB6F894DEBF0FBECDBFDF91D5
:1032A000CF911F910895EF92FF920F931F93CF93A9
:1032B000DF938C01892B09F46CC0F12CEE24E3948C
:1032C000E8012196F8018491843740F4843008F0B5
:1032D00051C0813081F0823019F15BC0853709F42B
:1032E00044C0A8F19CE7980F903708F052C08F7740
:1032F0000E94A11241C00E5F1F4FFE01849190E217
:10330000980F983050F48770FE2D01C0FF0F8A95FA
:10331000EAF78F2F0E94DC1B14C00E94D9112DC028
:103320000E5F1F4FFE01849190E2980F983060F479
:103330008770FE2D01C0FF0F8A95EAF78F2F0E943C
:10334000E21B0E94031C19C00E94A11216C00E5F4E
:103350001F4FFE01C491CC2381F08FE99FE00197BC
:10336000F1F700C00000C150F6CF0E5F1F4FFE0105
:10337000F49003C00E94D9118E018F2D882309F487
:103380009FCFEFE9FFE03197F1F700C000008150D7
:10339000F5CFDF91CF911F910F91FF90EF9008959E
:1033A00008956093B5017093B6018093B70190932F
:1033B000B8010C9408160F931F930091B50110915A
:1033C000B6012091B7013091B801DC01CB01802B0F
:1033D000912BA22BB32B8093B5019093B601A093B0
:1033E000B701B093B8011F910F910C9408160F9379
:1033F0001F930091B5011091B6012091B701309152
:10340000B801DC01CB0180239123A223B323809355
:10341000B5019093B601A093B701B093B8011F9185
:103420000F910C9408160F931F930091B501109102
:10343000B6012091B7013091B801DC01CB018027A2
:103440009127A227B3278093B5019093B601A0934B
:10345000B701B093B8011F910F910C940816109208
:10346000B1011092B2011092B3011092B4010C9408
:10347000081641E050E060E070E004C0440F551FC2
:10348000661F771F8A95D2F74093B1015093B2011E
:103490006093B3017093B4010C94081641E050E0BE
:1034A00060E070E004C0440F551F661F771F8A95C7
:1034B000D2F78091B1019091B201A091B301B09186
:1034C000B401482B592B6A2B7B2B4093B1015093AD
:1034D000B2016093B3017093B4010C94081641E0FB
:1034E00050E060E070E004C0440F551F661F771F76
:1034F0008A95D2F740955095609570958091B1016D
:103500009091B201A091B301B091B4014823592325
:103510006A237B234093B1015093B2016093B301BE
:103520007093B4010C94081641E050E060E070E044
:1035300004C0440F551F661F771F8A95D2F78091EC
:10354000B1019091B201A091B301B091B4014827AB
:1035500059276A277B274093B1015093B2016093AA
:10356000B3017093B4010C9408160F931F9300914C
:10357000B1011091B2012091B3013091B401DC018D
:10358000CB01802B912BA22BB32B8093B101909375
:10359000B201A093B301B093B4011F910F910C94A9
:1035A00008160F931F930091B1011091B201209161
:1035B000B3013091B401DC01CB0180239123A2231C
:1035C000B3238093B1019093B201A093B301B09360
:1035D000B4011F910F910C9408160F931F93009143
:1035E000B1011091B2012091B3013091B401DC011D
:1035F000CB0180279127A227B3278093B101909315
:10360000B201A093B301B093B4011F910F910C9438
:1036100008160895CF92DF92EF92FF920F931F93B7
:10362000CF93DF938C01C090B101D090B201E090B4
:10363000B301F090B4018091B5019091B601A091D1
:10364000B701B091B801C82AD92AEA2AFB2ACFE1EA
:10365000D0E0D701C6010C2E04C0B695A79597956A
:1036600087950A94D2F780FF07C0B8018C2F0E947B
:1036700068088130910531F4219758F7B80180E04E
:103680000E946808DF91CF911F910F91FF90EF90FA
:10369000DF90CF90089590910C019923F1F09091D3
:1036A0000D019923D1F0982F9695969596959F3078
:1036B00080F5E0910E01F0910F01E90FF11D877087
:1036C00021E030E0A90102C0440F551F8A95E2F7BE
:1036D000CA019181892B8183089520910E01309137
:1036E0000F01F90132969FEF40E05191851789F063
:1036F0009F3F19F4511101C0942F4F5F4E30A9F72D
:103700009F3F39F0F901E90FF11D97FDFA9582838A
:103710000895089590910C019923F9F090910D016D
:103720009923D9F0982F9695969596959F3028F5E0
:10373000E0910E01F0910F01E90FF11D877021E07A
:1037400030E0A90102C0440F551F8A95E2F7CA0173
:103750008095918189238183089520910E01309174
:103760000F01F9013296205F3F4F9081891301C00C
:1037700010823196E217F307C1F7089581E090E0D7
:10378000E0910E01F0910F01E80FF91F10820196F0
:1037900080319105A9F708959091CB01892B8093F1
:1037A000CB01089580959091CB0189238093CB0123
:1037B00008951092CB0108959091CA01892B8093AE
:1037C000CA01089580959091CA0189238093CA0106
:1037D00008951092CA0108958093B9010895109236
:1037E000B901089580910E0190910F01FC0131966D
:1037F0009C01205F3F4F80E0919191118F5FE21714
:10380000F307D1F70895E0910E01F0910F01809137
:10381000CB018083E0910E01F0910F0190818091A6
:10382000CA01892B80838091B901882361F0E091DE
:103830000E01F0910F019081892B80830E94F21B71
:1038400081111092B90180910E0190910F010C9499
:10385000BD108091E401843011F120E488E190E012
:103860000FB6F894A895809360000FBE2093600077
:1038700083B7817F846083BF83B7816083BF78947F
:10388000889583B78E7F83BF0FB6F894A8958091F3
:103890006000886180936000109260000FBE089500
:1038A00008950C94501CCF930E94511C0E948706CF
:1038B0000E94501CC0E08C2F0E947D07811104C023
:1038C000CF5FCE30C1F701C081E0CF9108950E9453
:1038D0001A160E94B1100C94A70982E084BD93E0EF
:1038E00095BD9AEF97BD80936E0008952FB7F89419
:1038F0008091CD019091CE01A091CF01B091D001E6
:103900002FBF0895CF92DF92EF92FF920F931F93F4
:103910002FB7F8944091CD015091CE016091CF0125
:103920007091D0012FBF6A017B01EE24FF248C012E
:1039300020E030E0C016D106E206F30610F4415054
:1039400051099A01281B390BC9011F910F91FF9052
:10395000EF90DF90CF9008951F920F920FB60F92C5
:1039600011248F939F93AF93BF938091CD0190913A
:10397000CE01A091CF01B091D0010196A11DB11D42
:103980008093CD019093CE01A093CF01B093D0014D
:10399000BF91AF919F918F910F900FBE0F901F908D
:1039A00018950E94A90DF8942FEF87EA91E621500F
:1039B00080409040E1F700C0000087E090EBDC0120
:1039C0008093ED019093EE01A093EF01B093F0018D
:1039D0009CE088E10FB6F894A895809360000FBE34
:1039E00090936000FFCFEF92FF920F931F93CF93BE
:1039F000DF93D82FC0E08C2F0E947D0700E010E0FD
:103A0000E82EF12CC701002E02C0959587950A94E7
:103A1000E2F780FD06C00F5F1F4F0630110591F7DA
:103A200009C0602F7C2F80E00E9445088D13F3CFE2
:103A300081E004C0CF5FCE30F1F680E0DF91CF911E
:103A40001F910F91FF90EF900895CF93C82F8CE2B4
:103A50000E94F31C882321F08C2FCF910C94F31C2F
:103A600080E0CF910895CF930E947A1E811102C009
:103A70000E94601EC5E6C15049F00E9487068FE390
:103A80009CE90197F1F700C00000F5CF89E20E94A0
:103A9000251D811113C18AE20E94251D81110E94FA
:103AA000601E85E00E94251D81110E94D11C0E948C
:103AB000851E8093CC0187E00E94251D8823A9F1F3
:103AC0008BE10E94251D882351F08091CC0181FB60
:103AD000222720F991E0922790FB81F90EC08EE019
:103AE0000E94251D882361F08091CC0182FB222752
:103AF00020F991E0922790FB82F98093CC0115C0C8
:103B000080E10E94251D9091CC01882341F093FB18
:103B1000222720F981E0822780FB93F904C0892FB6
:103B2000809580FB90F99093CC018091CC010E940C
:103B3000891E0E94971E8093DE0180EE0E94251D43
:103B4000882341F08091DE01982F909590FB80F9B9
:103B50008093DE0189E30E94251D882359F080911E
:103B6000DE0181FB222720F991E0922790FB81F969
:103B70008093DE0182EE0E94251D882359F08091FA
:103B8000DE0182FB222720F991E0922790FB82F947
:103B90008093DE0186EE0E94251D882359F08091D6
:103BA000DE0183FB222720F991E0922790FB83F925
:103BB0008093DE0183EE0E94251D882359F08091B9
:103BC000DE0184FB222720F991E0922790FB84F903
:103BD0008093DE0185E30E94251D882359F08091A2
:103BE000DE0185FB222720F991E0922790FB85F9E1
:103BF0008093DE0181E30E94251D882359F0809186
:103C0000DE0186FB222720F991E0922790FB86F9BE
:103C10008093DE0181E10E94251D882359F0809167
:103C2000DE0187FB222720F991E0922790FB87F99C
:103C30008093DE018091DE010E949B1E8091DE0157
:103C400087FB882780F980930D0187E20E94251D5C
:103C5000C82F8EE10E94251D8111C2608FE10E9454
:103C6000251D8111C46080E20E94251D8111C8605C
:103C700081E20E94251D8111C06182E20E94251D02
:103C80008111C06283E20E94251D8111C06484E21B
:103C90000E94251D882311F0C06802C0CC2329F0A2
:103CA0008C2F0E94921E6C2F03C00E948E1E682FC4
:103CB00070E080E090E0CF910C94D119CF910895FD
:103CC0006DEE7EEF80E090E00E94D42460E082E020
:103CD00090E00E94C62460E083E090E00E94C62449
:103CE00060E084E090E00E94C62460E085E090E01F
:103CF0000C94C62480E090E00E94C02421E08D3E18
:103D00009E4F09F020E0822F089582E090E00C940D
:103D1000B824682F82E090E00C94C62483E090E001
:103D20000C94B824682F83E090E00C94C62484E0BF
:103D300090E00C94B824682F84E090E00C94C624A2
:103D40008091D30180FF0BC06091130185E0689FD3
:103D5000B001112475956795759567952BC081FF06
:103D600009C06091130185E0689FB0011124759529
:103D7000679520C082FF07C06091130185E0689FAE
:103D8000B001112417C09091D4019923D1F0609112
:103D90001201961788F72091130185E0289F900162
:103DA0001124929FA001939F500D112470E0CA012D
:103DB0000E948A246038710540F46115710519F478
:103DC00006C065E070E0862F08958FE7089581E0D2
:103DD00008958091D30180FF08C06091110170E0C7
:103DE000759567957595679521C081FF06C06091AF
:103DF000110170E07595679519C082FF04C060914C
:103E0000110170E010C09091D401992399F0609154
:103E100010019617A0F780911101899FC00111240C
:103E200070E00E948A246038710540F461157105C4
:103E300019F406C061E070E0862F08958FE70895B9
:103E400081E00895803F21F40E94A01E819504C066
:103E5000813F29F40E94A01E8093D7010895823FDC
:103E600021F40E94A01E819504C0833F29F40E9482
:103E7000A01E8093D6010895893F19F40E94E91E7F
:103E800005C08A3F31F40E94E91E81958093D801D4
:103E900008958B3F21F40E94E91E819504C08C3F58
:103EA00029F40E94E91E8093D9010895843F21F4EA
:103EB0008091D501816017C0853F21F48091D501A3
:103EC000826011C0863F21F48091D50184600BC0CF
:103ED000873F21F48091D501886005C0883F31F487
:103EE0008091D50180618093D50108958D3F21F4A3
:103EF0008091D30181600BC08E3F21F48091D3016A
:103F0000826005C08F3F29F48091D3018460809343
:103F1000D3010895803F39F48091D70187FF6CC0A9
:103F20001092D70169C0813F29F48091D7011816FA
:103F3000BCF362C09091D601823F29F497FF5CC028
:103F40001092D60159C0833F19F41916CCF354C00E
:103F5000893F41F48091D80118160CF04DC01092A1
:103F6000D8014AC08A3F29F48091D80187FF44C014
:103F7000F6CF8B3F39F48091D90187FF3DC0109275
:103F8000D9013AC08C3F29F48091D9011816BCF3AD
:103F900033C0843F21F48091D5018E7F17C0853FC7
:103FA00021F48091D5018D7F11C0863F21F480914D
:103FB000D5018B7F0BC0873F21F48091D501877F8E
:103FC00005C0883F31F48091D5018F7E8093D50163
:103FD00013C08D3F21F48091D3018E7F0BC08E3FA3
:103FE00021F48091D3018D7F05C08F3F29F480910A
:103FF000D3018B7F8093D3018091D60181110EC0B4
:104000008091D70181110AC08091D801811106C029
:104010008091D901811102C01092D401089585EDDB
:1040200091E00E94C8100E94761C9093D201809368
:10403000D10108951F93CF93DF938091D101909187
:10404000D2010E94821CAC019091D401992321F0ED
:104050002091140130E006C0209115018AE0289FCC
:10406000900111244217530708F485C08091D601AE
:10407000C091D701D091D8011091D901811107C009
:10408000C11175C0D11173C0111171C074C09F3FAF
:1040900019F09F5F9093D401181624F40E94A01E7B
:1040A0008093D6018091D60187FF05C00E94A01E93
:1040B00081958093D6011C1624F40E94A01E809343
:1040C000D7018091D70187FF05C00E94A01E81956E
:1040D0008093D7016091D601662331F1C091D70159
:1040E000CC2311F1062E000C770B880B990B0E9444
:1040F000912323E333E343E35FE30E94F5230E942C
:1041000059236093D6016C2FCC0F770B880B990B3A
:104110000E94912323E333E343E35FE30E94F5230B
:104120000E9459236093D7011D1624F40E94E91EB2
:104130008093D8018091D80187FF05C00E94E91EB5
:1041400081958093D801111624F40E94E91E809372
:10415000D9018091D90187FF05C00E94E91E819590
:104160008093D901DF91CF911F910C940F209F3F35
:1041700009F08FCFA0CFDF91CF911F910895E5ED8A
:10418000F1E085E0DF011D928A95E9F71092D401F4
:104190001092D3010895833081F128F4813059F0D1
:1041A0008230D1F00895853009F449C0B8F18630E5
:1041B00009F456C0089580911501262F30E0280F8C
:1041C000311D2F3F310524F4680F609315010895C8
:1041D0008FEF80931501089580911401262F30E010
:1041E000280F311D2F3F310524F4680F609314010F
:1041F00008958FEF80931401089580911301262F65
:1042000030E0280F311D2F3F310524F4680F6093F3
:10421000130108958FEF8093130108958091120187
:10422000262F30E0280F311D2F3F310524F4680F71
:104230006093120108958FEF809312010895809189
:104240001101262F30E0280F311D2F3F310524F4B6
:10425000680F6093110108958FEF80931101089505
:1042600080911001262F30E0280F311D2F3F31059E
:1042700024F4680F6093100108958FEF809310016C
:104280000895833011F128F4813049F0823091F0A3
:104290000895853081F120F18630C1F10895809133
:1042A0001501681720F4861B80931501089510925C
:1042B0001501089580911401681720F4861B8093DE
:1042C0001401089510921401089580911301681744
:1042D00020F4861B80931301089510921301089512
:1042E00080911201681720F4861B809312010895B3
:1042F00010921201089580911101681720F4861B15
:104300008093110108951092110108958091100178
:10431000681720F4861B80931001089510921001F5
:1043200008950F931F938D3109F46BC008F03FC0BF
:104330008E3009F47DC0C0F4873009F46EC068F493
:10434000863009F0AFC08091CC01817F8E7F809351
:10435000CC0181E08093DB01A6C0883009F458C00D
:104360008B3009F49BC09EC0863109F497C078F465
:10437000803109F470C0813109F094C00E941A168E
:1043800090910D0181E0892780930D0187C08931CB
:1043900009F484C08B3109F085C08091CC0181FB88
:1043A000222720F991E0922790FB81F94AC08533BA
:1043B00009F45BC048F4873209F457C008F45AC0C6
:1043C000893209F452C06EC0833438F48A3308F05D
:1043D00067C0883309F462C065C0833409F445C0FE
:1043E000883409F05FC00E941A160FEF13ED20E326
:1043F000015010402040E1F700C000000E94D11C95
:104400004DC00E9413230E94B1100E94A70946C00C
:104410000E94851E0E94971E41C09091CC01892F59
:10442000817090FF12C0917F9E7F9093CC013BC022
:104430008091CC0182FB222720F991E0922790FB0A
:1044400082F98093CC01992349F18091CC0181605C
:104450008093CC0123C08091CC0183FB222720F9DB
:1044600091E0922790FB83F9ECCF61E070E080E06F
:1044700090E010C08D5141E050E060E070E08A01B2
:104480009B0104C0000F111F221F331F8A95D2F712
:10449000C901B8010E94D1190E941A1681E003C017
:1044A0008953E9CF80E01F910F91089580E008952E
:1044B0000C945622CF93C82F8091DB01813079F084
:1044C00018F08230E9F187C0E0910E01F0910F0100
:1044D0008081813169F0823209F07FC009C0E091AA
:1044E0000E01F0910F018081813111F0823261F46F
:1044F0008C2F0E945822811104C08C2F0E94912180
:104500001DC081E090E01AC08C2F0E9456228111BC
:1045100014C0C43179F048F4CB3079F0C03109F0DF
:1045200060C082E08093DB0108C0C93219F0C83353
:1045300021F057C01092DB0154C081E0817053C05C
:10454000C93289F118F5C43171F1A8F4C73009F006
:1045500046C08AE08093150194E19093140193E0A2
:10456000909313018093120188E08093110188E2F7
:104570008093100134C0CE51C63088F5EC2FF0E0A6
:10458000E65DFE4F80818093DA0129C0CE34E9F0E8
:1045900020F4CB3421F56AE013C0C13579F0C2357F
:1045A000F1F461E00DC08091DA01882319F01092D6
:1045B000DA0115C081E08093DB0115C061E006C01F
:1045C0008091DA010E94CB200AC06AE08091DA0172
:1045D0000E94412104C01092DB0180E004C081E010
:1045E00002C080E0ABCFCF910895E1E8F0E0808198
:1045F000886080838081816080838FB7F89493E0A6
:104600009093890090ED909388008FBF0895EFE616
:10461000F0E08081826080830895EFE6F0E08081A1
:104620008D7F80830895EFE6F0E0908182E0892716
:10463000808308951F920F920FB60F9211242F932B
:104640003F934F935F936F937F938F939F93AF931A
:10465000BF93EF93FF938091DC019091DD01019670
:104660009093DD018093DC01811103C082E00E9400
:10467000A709E091DD01E695E695F0E0E75DF64FEC
:10468000E4918091DC018E1303C080E00E94A709B1
:10469000FF91EF91BF91AF919F918F917F916F911A
:1046A0005F914F913F912F910F900FBE0F901F90F0
:1046B00018950E9460236894B1110C94EF2308951B
:1046C0000E94D42388F09F5798F0B92F9927B751AB
:1046D000B0F0E1F0660F771F881F991F1AF0BA95A6
:1046E000C9F714C0B13091F00E94EE23B1E00895F3
:1046F0000C94EE23672F782F8827B85F39F0B93FE5
:10470000CCF3869577956795B395D9F73EF4909558
:104710008095709561957F4F8F4F9F4F0895E894D6
:1047200009C097FB3EF490958095709561957F4FF9
:104730008F4F9F4F9923A9F0F92F96E9BB279395A7
:10474000F695879577956795B795F111F8CFFAF4B7
:10475000BB0F11F460FF1BC06F5F7F4F8F4F9F4FE8
:1047600016C0882311F096E911C0772321F09EE846
:10477000872F762F05C0662371F096E8862F70E0AC
:1047800060E02AF09A95660F771F881FDAF7880F86
:104790009695879597F9089557FD9058440F551FA2
:1047A00059F05F3F71F04795880F97FB991F61F0B3
:1047B0009F3F79F087950895121613061406551F2A
:1047C000F2CF4695F1DF08C0161617061806991F96
:1047D000F1CF86957105610508940895E894BB278B
:1047E00066277727CB0197F908950E9408240C9437
:1047F00079240E946B2438F00E94722420F09523C3
:1048000011F00C9462240C94682411240C94EF236E
:104810000E94CC2370F3959FC1F3950F50E0551F74
:10482000629FF001729FBB27F00DB11D639FAA2705
:10483000F00DB11DAA1F649F6627B00DA11D661F54
:10484000829F2227B00DA11D621F739FB00DA11D75
:10485000621F839FA00D611D221F749F3327A00D2F
:10486000611D231F849F600D211D822F762F6A2FCB
:1048700011249F5750409AF0F1F088234AF0EE0F30
:10488000FF1FBB1F661F771F881F91505040A9F75D
:104890009E3F510580F00C9462240C94EF235F3FFF
:1048A000E4F3983ED4F3869577956795B795F79599
:1048B000E7959F5FC1F7FE2B880F911D9695879511
:1048C00097F9089597F99F6780E870E060E0089590
:1048D0009FEF80EC089500240A9416161706180618
:1048E0000906089500240A941216130614060506F4
:1048F0000895092E0394000C11F4882352F0BB0F85
:1049000040F4BF2B11F460FF04C06F5F7F4F8F4FE7
:104910009F4F089597FB072E16F4009407D077FD5C
:1049200009D00E94A42407FC05D03EF490958195FF
:104930009F4F0895709561957F4F0895EE0FFF1F6B
:104940000590F491E02D0994AA1BBB1B51E107C00F
:10495000AA1FBB1FA617B70710F0A61BB70B881F0F
:10496000991F5A95A9F780959095BC01CD0108959E
:10497000F999FECF92BD81BDF89A992780B5089527
:10498000A8E1B0E042E050E00C94DB24262FF99936
:10499000FECF1FBA92BD81BD20BD0FB6F894FA9A22
:1049A000F99A0FBE019608950E94C624272F0C94F1
:1049B000C724DC01CB01FC01F999FECF06C0F2BD92
:1049C000E1BDF89A319600B40D9241505040B8F7CD
:0649D0000895F894FFCFEA
:1049D6002002A809380A130ADF09AB090101BA0146
:1049E60028080A03140A3F4D3639EA089D08670865
:1049F6002E08C107DA07F3070C08010203040506AF
:044A06000708090094
:00000001FF

@ -155,12 +155,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

File diff suppressed because it is too large Load Diff

@ -337,12 +337,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}; };
// Runs just one time when the keyboard initializes. // Runs just one time when the keyboard initializes.
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
// Runs constantly in the background, in a loop. // Runs constantly in the background, in a loop.
void * matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state); uint8_t layer = biton32(layer_state);

@ -0,0 +1,9 @@
#!/bin/bash
#a quick tool to rebuild all the hex files for the keymaps in the ./keymaps/ directory
make clean
for f in ./keymaps/*
do
MAPNAME=$(echo "$f"|sed -r 's#^./keymaps/##')
make KEYMAP=$MAPNAME
mv ergodox_ez.hex "$f/$MAPNAME.hex"
done

@ -62,12 +62,12 @@ uint32_t matrix_scan_count;
__attribute__ ((weak)) __attribute__ ((weak))
void * matrix_init_kb(void) { void matrix_init_kb(void) {
}; }
__attribute__ ((weak)) __attribute__ ((weak))
void * matrix_scan_kb(void) { void matrix_scan_kb(void) {
}; }
inline inline
uint8_t matrix_rows(void) uint8_t matrix_rows(void)
@ -102,9 +102,7 @@ void matrix_init(void)
matrix_scan_count = 0; matrix_scan_count = 0;
#endif #endif
if (matrix_init_kb) { matrix_init_kb();
(*matrix_init_kb)();
}
} }
@ -163,9 +161,7 @@ uint8_t matrix_scan(void)
} }
if (matrix_scan_kb) { matrix_scan_kb();
(*matrix_scan_kb)();
}
return 1; return 1;
} }

@ -1,16 +1,16 @@
#include "hhkb_qmk.h" #include "hhkb_qmk.h"
__attribute__ ((weak)) __attribute__ ((weak))
void * matrix_init_user(void) { void matrix_init_user(void) {
// leave these blank // leave these blank
}; };
__attribute__ ((weak)) __attribute__ ((weak))
void * matrix_scan_user(void) { void matrix_scan_user(void) {
// leave these blank // leave these blank
}; };
void * matrix_init_kb(void) { void matrix_init_kb(void) {
// put your keyboard start-up code here // put your keyboard start-up code here
// runs once when the firmware starts up // runs once when the firmware starts up
@ -19,7 +19,7 @@ void * matrix_init_kb(void) {
} }
}; };
void * matrix_scan_kb(void) { void matrix_scan_kb(void) {
// put your looping keyboard code here // put your looping keyboard code here
// runs every cycle (a lot) // runs every cycle (a lot)

@ -24,7 +24,7 @@
{ K70, K71, K72, K73, K74, K75, K76, KC_NO } \ { K70, K71, K72, K73, K74, K75, K76, KC_NO } \
} }
void * matrix_init_user(void); void matrix_init_user(void);
void * matrix_scan_user(void); void matrix_scan_user(void);
#endif #endif

@ -1,16 +1,16 @@
#include "jd45.h" #include "jd45.h"
__attribute__ ((weak)) __attribute__ ((weak))
void * matrix_init_user(void) { void matrix_init_user(void) {
}; };
__attribute__ ((weak)) __attribute__ ((weak))
void * matrix_scan_user(void) { void matrix_scan_user(void) {
}; };
void * matrix_init_kb(void) { void matrix_init_kb(void) {
#ifdef BACKLIGHT_ENABLE #ifdef BACKLIGHT_ENABLE
backlight_init_ports(); backlight_init_ports();
#endif #endif
@ -20,7 +20,7 @@ void * matrix_init_kb(void) {
} }
}; };
void * matrix_scan_kb(void) { void matrix_scan_kb(void) {
if (matrix_scan_user) { if (matrix_scan_user) {
(*matrix_scan_user)(); (*matrix_scan_user)();
} }

@ -6,7 +6,7 @@
#include "backlight.h" #include "backlight.h"
#include <stddef.h> #include <stddef.h>
void * matrix_init_user(void); void matrix_init_user(void);
void * matrix_scan_user(void); void matrix_scan_user(void);
#endif #endif

@ -17,31 +17,91 @@
#define _RS 4 #define _RS 4
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QW] = { /* Qwerty */
/* Qwerty
* ,-----------------------------------------------------------------------------------.
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Esc | A | S | D | F | G | H | J | K | L | ; | " |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
[_QW] = {
{KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, 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_BSPC},
{KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, 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_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
{M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
}, },
[_CM] = { /* Colemak */
/* Colemak
* ,-----------------------------------------------------------------------------------.
* | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Esc | A | R | S | T | D | H | N | E | I | O | " |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
[_CM] = {
{KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
{KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
{M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
}, },
[_DV] = { /* Dvorak */
/* Dvorak
* ,-----------------------------------------------------------------------------------.
* | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Esc | A | O | E | U | I | D | H | T | N | S | / |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
[_DV] = {
{KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC},
{KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH},
{KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT },
{M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
}, },
[_RS] = { /* RAISE */
/* Raise
* ,-----------------------------------------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Dvorak| Reset|Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
[_RS] = {
{KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
{KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
{KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS},
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
}, },
[_LW] = { /* LOWER */
/* Lower
* ,-----------------------------------------------------------------------------------.
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Dvorak| Reset|Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
[_LW] = {
{KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
{KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
{KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS},

@ -150,7 +150,7 @@ float start_up[][2] = {
{440.0*pow(2.0,(64)/12.0), 1000}, {440.0*pow(2.0,(64)/12.0), 1000},
}; };
void * matrix_init_user(void) { void matrix_init_user(void) {
init_notes(); init_notes();
play_notes(&start_up, 9, false); play_notes(&start_up, 9, false);
} }

@ -1,16 +1,16 @@
#include "planck.h" #include "planck.h"
__attribute__ ((weak)) __attribute__ ((weak))
void * matrix_init_user(void) { void matrix_init_user(void) {
}; }
__attribute__ ((weak)) __attribute__ ((weak))
void * matrix_scan_user(void) { void matrix_scan_user(void) {
}; }
void * matrix_init_kb(void) { void matrix_init_kb(void) {
#ifdef BACKLIGHT_ENABLE #ifdef BACKLIGHT_ENABLE
backlight_init_ports(); backlight_init_ports();
#endif #endif
@ -24,13 +24,9 @@ void * matrix_init_kb(void) {
DDRE |= (1<<6); DDRE |= (1<<6);
PORTE |= (1<<6); PORTE |= (1<<6);
if (matrix_init_user) { matrix_init_user();
(*matrix_init_user)();
} }
};
void * matrix_scan_kb(void) { void matrix_scan_kb(void) {
if (matrix_scan_user) { matrix_scan_user();
(*matrix_scan_user)();
} }
};

@ -40,7 +40,7 @@
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \
} }
void * matrix_init_user(void); void matrix_init_user(void);
void * matrix_scan_user(void); void matrix_scan_user(void);
#endif #endif

@ -0,0 +1,139 @@
#----------------------------------------------------------------------------
# On command line:
#
# make all = Make software.
#
# make clean = Clean out built project files.
#
# make coff = Convert ELF to AVR COFF.
#
# make extcoff = Convert ELF to AVR Extended COFF.
#
# make program = Download the hex file to the device.
# Please customize your programmer settings(PROGRAM_CMD)
#
# make teensy = Download the hex file to the device, using teensy_loader_cli.
# (must have teensy_loader_cli installed).
#
# make dfu = Download the hex file to the device, using dfu-programmer (must
# have dfu-programmer installed).
#
# make flip = Download the hex file to the device, using Atmel FLIP (must
# have Atmel FLIP installed).
#
# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
# (must have dfu-programmer installed).
#
# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
# (must have Atmel FLIP installed).
#
# make debug = Start either simulavr or avarice as specified for debugging,
# with avr-gdb or avr-insight as the front end for debugging.
#
# make filename.s = Just compile filename.c into the assembler code only.
#
# make filename.i = Create a preprocessed source file for use in submitting
# bug reports to the GCC project.
#
# To rebuild project do "make clean" then "make all".
#----------------------------------------------------------------------------
# Target file name (without extension).
TARGET = retro_refit
# Directory common source filess exist
TOP_DIR = ../..
TMK_DIR = ../../tmk_core
# Directory keyboard dependent files exist
TARGET_DIR = .
# # project specific files
SRC = retro_refit.c
ifdef KEYMAP
SRC := keymaps/$(KEYMAP).c $(SRC)
else
SRC := keymaps/default.c $(SRC)
endif
CONFIG_H = config.h
# MCU name
#MCU = at90usb1287
MCU = atmega32u4
# Processor frequency.
# This will define a symbol, F_CPU, in all source code files equal to the
# processor frequency in Hz. You can then use this symbol in your source code to
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
# automatically to create a 32-bit value in your source code.
#
# This will be an integer division of F_USB below, as it is sourced by
# F_USB after it has run through any CPU prescalers. Note that this value
# does not *change* the processor frequency - it should merely be updated to
# reflect the processor speed set externally so that the code can use accurate
# software delays.
F_CPU = 16000000
#
# LUFA specific
#
# Target architecture (see library "Board Types" documentation).
ARCH = AVR8
# Input clock frequency.
# This will define a symbol, F_USB, in all source code files equal to the
# input clock frequency (before any prescaling is performed) in Hz. This value may
# differ from F_CPU if prescaling is used on the latter, and is required as the
# raw input clock is fed directly to the PLL sections of the AVR for high speed
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
# at the end, this will be done automatically to create a 32-bit value in your
# source code.
#
# If no clock division is performed on the input clock inside the AVR (via the
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
F_USB = $(F_CPU)
# Interrupt driven control endpoint task(+60)
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
# Boot Section Size in *bytes*
# Teensy halfKay 512
# Teensy++ halfKay 1024
# Atmel DFU loader 4096
# LUFA bootloader 4096
# USBaspLoader 2048
OPT_DEFS += -DBOOTLOADER_SIZE=512
# Build Options
# comment out to disable the options.
#
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
# NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
# MIDI_ENABLE = YES # MIDI controls
# UNICODE_ENABLE = YES # Unicode
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
# Search Path
VPATH += $(TARGET_DIR)
VPATH += $(TOP_DIR)
VPATH += $(TMK_DIR)
include $(TOP_DIR)/quantum/quantum.mk

@ -0,0 +1,24 @@
retro_refit keyboard firmware
======================
## Quantum MK Firmware
For the full Quantum feature list, see [the parent README.md](/README.md).
## Building
Download or clone the whole firmware and navigate to the keyboard/retro_refit folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file.
Depending on which keymap you would like to use, you will have to compile slightly differently.
### Default
To build with the default keymap, simply run `make`.
### Other Keymaps
Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like:
```
$ make KEYMAP=[default|jack|<name>]
```
Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.

@ -0,0 +1,79 @@
/*
Copyright 2012 Jun Wako <wakojun@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 2 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/>.
*/
#ifndef CONFIG_H
#define CONFIG_H
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x6060
#define DEVICE_VER 0x0001
#define MANUFACTURER Nobody
#define PRODUCT retro_refit
#define DESCRIPTION Retro Refit
/* key matrix size */
#define MATRIX_ROWS 11
#define MATRIX_COLS 8
// See note in retro_refit.h for an explanation of how this matrix is wired up
#define COLS (int []){ B0, B1, B2, B3, D2, D3, C7, D5 }
#define ROWS (int []){ D4, D7, B4, B5, B6, F7, F6, F5, F4, F1, F0 }
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
/* number of backlight levels */
#define BACKLIGHT_LEVELS 0
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
/* key combination for command */
#define IS_COMMAND() ( \
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/*
* Feature disable options
* These options are also useful to firmware size reduction.
*/
/* disable debug print */
//#define NO_DEBUG
/* disable print */
//#define NO_PRINT
/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
#endif

@ -0,0 +1,33 @@
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
// this is the style you want to emulate.
#include "retro_refit.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] =
KEYMAP( ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, NLCK, SLCK, PSCR, PAUS, \
GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, BSPC, HOME, \
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, PGUP, \
BSLS, A, S, D, F, G, H, J, K, L, SCLN, QUOT, ENT, PGDN, \
LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, RSFT, UP, END, \
LCTL, LGUI, LALT, SPC, INS, DEL, LEFT, DOWN, RGHT),
};
const uint16_t PROGMEM fn_actions[] = {
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
// MACRODOWN only works in this function
switch(id) {
case 0:
if (record->event.pressed) {
register_code(KC_RSFT);
} else {
unregister_code(KC_RSFT);
}
break;
}
return MACRO_NONE;
};

@ -0,0 +1,68 @@
#include "retro_refit.h"
__attribute__ ((weak))
void matrix_init_user(void) {
// leave this function blank - it can be defined in a keymap file
};
__attribute__ ((weak))
void matrix_scan_user(void) {
// leave this function blank - it can be defined in a keymap file
};
__attribute__ ((weak))
void led_set_user(uint8_t usb_led) {
// leave this function blank - it can be defined in a keymap file
};
void matrix_init_kb(void) {
// put your keyboard start-up code here
// runs once when the firmware starts up
// Disable status LED on KB, enable status LED on Teensy (KB_STATUS = !TEENSY_STATUS)
DDRD |= (1<<6);
PORTD |= (1<<6);
matrix_init_user();
};
void amatrix_scan_kb(void) {
// put your looping keyboard code here
// runs every cycle (a lot)
matrix_scan_user();
};
void led_set_kb(uint8_t usb_led) {
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
// output low
DDRD |= (1<<0);
PORTD &= ~(1<<0);
} else {
// Hi-Z
DDRD &= ~(1<<0);
PORTD &= ~(1<<0);
}
if (usb_led & (1<<USB_LED_NUM_LOCK)) {
// output low
DDRD |= (1<<1);
PORTD &= ~(1<<1);
} else {
// Hi-Z
DDRD &= ~(1<<1);
PORTD &= ~(1<<1);
}
if (usb_led & (1<<USB_LED_SCROLL_LOCK)) {
// output low
DDRC |= (1<<6);
PORTC &= ~(1<<6);
} else {
// Hi-Z
DDRC &= ~(1<<6);
PORTC &= ~(1<<6);
}
led_set_user(usb_led);
};

@ -0,0 +1,45 @@
#ifndef RETRO_REFIT_H
#define RETRO_REFIT_H
#include "matrix.h"
#include "keymap_common.h"
#include "led.h"
#include <stddef.h>
// This macro is an example of using a non-standard row-column matrix. The
// keyboard in question had 11 rows and 8 columns, but the rows were not all
// horizontal, and the columns were not all vertical. For example, row 2
// contained "Print Screen", "N", "M", ",", ".", "/", "Right Shift", and
// "Left Alt". Column 0 contained "F6", "7", "O", "'", "Q", "D", "B",
// "Left Alt", "Up Arrow", and "Down Arrow".
//
// The macro makes programming the keys easier and in a more straight-forward
// manner because it realigns the keys into a 6x15 sensible keyboard layout
// instead of the obtuse 11x8 matrix.
#define KEYMAP( \
K77, K05, K04, K03, K02, K01, K00, KA7, KA6, KA5, KA4, KA3, KA2, K11, K94, \
K27, K76, K75, K74, K73, K72, K71, K70, K67, K66, K65, K64, K63, K62, KA1, \
K61, K60, K57, K56, K55, K54, K53, K52, K51, K50, K47, K46, K45, K97, \
K43, K42, K41, K40, K37, K36, K35, K34, K33, K32, K31, K30, K44, K87, \
K26, K24, K23, K22, K21, K20, K17, K16, K15, K14, K13, K12, KA0, K91, \
K10, K06, K25, K07, K86, K85, K95, K90, K93 \
) { \
{ KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, }, \
{ KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, }, \
{ KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, }, \
{ KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, }, \
{ KC_##K40, KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47, }, \
{ KC_##K50, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57, }, \
{ KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67, }, \
{ KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77, }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_##K85, KC_##K86, KC_##K87, }, \
{ KC_##K90, KC_##K91, KC_NO, KC_##K93, KC_##K94, KC_##K95, KC_NO, KC_##K97, }, \
{ KC_##KA0, KC_##KA1, KC_##KA2, KC_##KA3, KC_##KA4, KC_##KA5, KC_##KA6, KC_##KA7, } \
}
void matrix_init_user(void);
void matrix_scan_user(void);
void led_set_user(uint8_t usb_led);
#endif

@ -19,9 +19,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "stdint.h" #include "stdint.h"
#include "led.h" #include "led.h"
__attribute__ ((weak))
void led_set_kb(uint8_t usb_led) {
}
void led_set(uint8_t usb_led) void led_set(uint8_t usb_led)
{ {
// Example LED Code
//
// // Using PE6 Caps Lock LED // // Using PE6 Caps Lock LED
// if (usb_led & (1<<USB_LED_CAPS_LOCK)) // if (usb_led & (1<<USB_LED_CAPS_LOCK))
// { // {
@ -35,4 +42,6 @@ void led_set(uint8_t usb_led)
// DDRE &= ~(1<<6); // DDRE &= ~(1<<6);
// PORTE &= ~(1<<6); // PORTE &= ~(1<<6);
// } // }
led_set_kb(usb_led);
} }

@ -48,14 +48,14 @@ static void unselect_rows(void);
static void select_row(uint8_t row); static void select_row(uint8_t row);
__attribute__ ((weak)) __attribute__ ((weak))
void * matrix_init_kb(void) { void matrix_init_kb(void) {
}; }
__attribute__ ((weak)) __attribute__ ((weak))
void * matrix_scan_kb(void) { void matrix_scan_kb(void) {
}; }
inline inline
uint8_t matrix_rows(void) uint8_t matrix_rows(void)
@ -86,9 +86,7 @@ void matrix_init(void)
matrix_debouncing[i] = 0; matrix_debouncing[i] = 0;
} }
if (matrix_init_kb) { matrix_init_kb();
(*matrix_init_kb)();
}
} }
@ -152,9 +150,7 @@ uint8_t matrix_scan(void)
} }
#endif #endif
if (matrix_scan_kb) { matrix_scan_kb();
(*matrix_scan_kb)();
}
return 1; return 1;
} }

@ -1,29 +1,36 @@
#include "%KEYBOARD%.h" #include "%KEYBOARD%.h"
__attribute__ ((weak)) __attribute__ ((weak))
void * matrix_init_user(void) { void matrix_init_user(void) {
// leave these blank // leave this function blank - it can be defined in a keymap file
}; };
__attribute__ ((weak)) __attribute__ ((weak))
void * matrix_scan_user(void) { void matrix_scan_user(void) {
// leave these blank // leave this function blank - it can be defined in a keymap file
}; }
__attribute__ ((weak))
void led_set_user(uint8_t usb_led) {
// leave this function blank - it can be defined in a keymap file
}
void * matrix_init_kb(void) { void matrix_init_kb(void) {
// put your keyboard start-up code here // put your keyboard start-up code here
// runs once when the firmware starts up // runs once when the firmware starts up
if (matrix_init_user) { matrix_init_user();
(*matrix_init_user)();
} }
};
void * matrix_scan_kb(void) { void matrix_scan_kb(void) {
// put your looping keyboard code here // put your looping keyboard code here
// runs every cycle (a lot) // runs every cycle (a lot)
if (matrix_scan_user) { matrix_scan_user();
(*matrix_scan_user)(); }
void led_set_kb(uint8_t usb_led) {
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
led_set_user(usb_led);
} }
};

@ -19,7 +19,8 @@
{ k10, KC_NO, k11 }, \ { k10, KC_NO, k11 }, \
} }
void * matrix_init_user(void); void matrix_init_user(void);
void * matrix_scan_user(void); void matrix_scan_user(void);
void led_set_user(uint8_t usb_led);
#endif #endif

@ -1 +0,0 @@
Subproject commit 19892c196894e6676fa69c732e05a03a68d5cb07

@ -34,6 +34,9 @@ extern "C" {
void led_set(uint8_t usb_led); void led_set(uint8_t usb_led);
/* keyboard-specific LED functionality */
void led_set_kb(uint8_t usb_led);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

@ -64,8 +64,8 @@ void matrix_power_up(void);
void matrix_power_down(void); void matrix_power_down(void);
/* keyboard-specific setup/loop functionality */ /* keyboard-specific setup/loop functionality */
void * matrix_init_kb(void); void matrix_init_kb(void);
void * matrix_scan_kb(void); void matrix_scan_kb(void);
#ifdef __cplusplus #ifdef __cplusplus
} }

Loading…
Cancel
Save