From 649b33d7783cf3021928534b7ae127e0a89e8807 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Tue, 21 Jun 2016 22:39:54 -0400 Subject: Renames keyboard folder to keyboards, adds couple of tmk's fixes (#432) * fixes from tmk's repo * rename keyboard to keyboards --- keyboards/hhkb/Makefile | 86 ++ keyboards/hhkb/README.md | 180 ++++ keyboards/hhkb/config.h | 71 ++ keyboards/hhkb/hhkb.c | 29 + keyboards/hhkb/hhkb.h | 30 + keyboards/hhkb/hhkb_avr.h | 167 ++++ keyboards/hhkb/keymaps/default/compiled.hex | 1381 ++++++++++++++++++++++++++ keyboards/hhkb/keymaps/default/keymap.c | 78 ++ keyboards/hhkb/keymaps/lxol/compiled.hex | 1421 +++++++++++++++++++++++++++ keyboards/hhkb/keymaps/lxol/keymap.c | 208 ++++ keyboards/hhkb/matrix.c | 204 ++++ 11 files changed, 3855 insertions(+) create mode 100644 keyboards/hhkb/Makefile create mode 100644 keyboards/hhkb/README.md create mode 100644 keyboards/hhkb/config.h create mode 100644 keyboards/hhkb/hhkb.c create mode 100644 keyboards/hhkb/hhkb.h create mode 100644 keyboards/hhkb/hhkb_avr.h create mode 100644 keyboards/hhkb/keymaps/default/compiled.hex create mode 100644 keyboards/hhkb/keymaps/default/keymap.c create mode 100644 keyboards/hhkb/keymaps/lxol/compiled.hex create mode 100644 keyboards/hhkb/keymaps/lxol/keymap.c create mode 100644 keyboards/hhkb/matrix.c (limited to 'keyboards/hhkb') diff --git a/keyboards/hhkb/Makefile b/keyboards/hhkb/Makefile new file mode 100644 index 0000000000..53eece3969 --- /dev/null +++ b/keyboards/hhkb/Makefile @@ -0,0 +1,86 @@ + + +# project specific files +SRC = matrix.c + +# 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=4096 + +# as per original hasu settings +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 +CUSTOM_MATRIX ?= yes # Custom matrix file for the HHKB +# 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 + + + +ifndef QUANTUM_DIR + include ../../Makefile +endif + +debug-on: EXTRAFLAGS += -DDEBUG -DDEBUG_ACTION +debug-on: all + +debug-off: EXTRAFLAGS += -DNO_DEBUG -DNO_PRINT +debug-off: OPT_DEFS := $(filter-out -DCONSOLE_ENABLE,$(OPT_DEFS)) +debug-off: all diff --git a/keyboards/hhkb/README.md b/keyboards/hhkb/README.md new file mode 100644 index 0000000000..2bfec7aa54 --- /dev/null +++ b/keyboards/hhkb/README.md @@ -0,0 +1,180 @@ +hhkb_qmk keyboard firmware +====================== + +## Quantum MK Firmware + +You have access to a bunch of goodies! Check out the Makefile to enable/disable some of the features. Uncomment the `#` to enable them. Setting them to `no` does nothing and will only confuse future you. + + BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality + MIDI_ENABLE = yes # MIDI controls + # UNICODE_ENABLE = yes # Unicode support - this is commented out, just as an example. You have to use #, not // + BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID + +## Quick aliases to common actions + +Your keymap can include shortcuts to common operations (called "function actions" in tmk). + +### Switching and toggling layers + +`MO(layer)` - momentary switch to *layer*. As soon as you let go of the key, the layer is deactivated and you pop back out to the previous layer. When you apply this to a key, that same key must be set as `KC_TRNS` on the destination layer. Otherwise, you won't make it back to the original layer when you release the key (and you'll get a keycode sent). You can only switch to layers *above* your current layer. If you're on layer 0 and you use `MO(1)`, that will switch to layer 1 just fine. But if you include `MO(3)` on layer 5, that won't do anything for you -- because layer 3 is lower than layer 5 on the stack. + +`LT(layer, kc)` - momentary switch to *layer* when held, and *kc* when tapped. Like `MO()`, this only works upwards in the layer stack (`layer` must be higher than the current layer). + +`TG(layer)` - toggles a layer on or off. As with `MO()`, you should set this key as `KC_TRNS` in the destination layer so that tapping it again actually toggles back to the original layer. Only works upwards in the layer stack. + +### Fun with modifier keys + +* `LSFT(kc)` - applies left Shift to *kc* (keycode) - `S(kc)` is an alias +* `RSFT(kc)` - applies right Shift to *kc* +* `LCTL(kc)` - applies left Control to *kc* +* `RCTL(kc)` - applies right Control to *kc* +* `LALT(kc)` - applies left Alt to *kc* +* `RALT(kc)` - applies right Alt to *kc* +* `LGUI(kc)` - applies left GUI (command/win) to *kc* +* `RGUI(kc)` - applies right GUI (command/win) to *kc* + +You can also chain these, like this: + + LALT(LCTL(KC_DEL)) -- this makes a key that sends Alt, Control, and Delete in a single keypress. + +The following shortcuts automatically add `LSFT()` to keycodes to get commonly used symbols. Their long names are also available and documented in `/quantum/keymap_common.h`. + + KC_TILD ~ + KC_EXLM ! + KC_AT @ + KC_HASH # + KC_DLR $ + KC_PERC % + KC_CIRC ^ + KC_AMPR & + KC_ASTR * + KC_LPRN ( + KC_RPRN ) + KC_UNDS _ + KC_PLUS + + KC_LCBR { + KC_RCBR } + KC_PIPE | + KC_COLN : + +`MT(mod, kc)` - is *mod* (modifier key - MOD_LCTL, MOD_LSFT) when held, and *kc* when tapped. In other words, you can have a key that sends Esc (or the letter O or whatever) when you tap it, but works as a Control key or a Shift key when you hold it down. + +These are the values you can use for the `mod` in `MT()` (right-hand modifiers are not available): + + * MOD_LCTL + * MOD_LSFT + * MOD_LALT + * MOD_LGUI + +These can also be combined like `MOD_LCTL | MOD_LSFT` e.g. `MT(MOD_LCTL | MOD_LSFT, KC_ESC)` which would activate Control and Shift when held, and send Escape when tapped. + +We've added shortcuts to make common modifier/tap (mod-tap) mappings more compact: + + * `CTL_T(kc)` - is LCTL when held and *kc* when tapped + * `SFT_T(kc)` - is LSFT when held and *kc* when tapped + * `ALT_T(kc)` - is LALT when held and *kc* when tapped + * `GUI_T(kc)` - is LGUI when held and *kc* when tapped + * `ALL_T(kc)` - is Hyper (all mods) when held and *kc* when tapped. To read more about what you can do with a Hyper key, see [this blog post by Brett Terpstra](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/) + +### Temporarily setting the default layer + +`DF(layer)` - sets default layer to *layer*. The default layer is the one at the "bottom" of the layer stack - the ultimate fallback layer. This currently does not persist over power loss. When you plug the keyboard back in, layer 0 will always be the default. It is theoretically possible to work around that, but that's not what `DF` does. + +### Remember: These are just aliases + +These functions work the same way that their `ACTION_*` functions do - they're just quick aliases. To dig into all of the tmk ACTION_* functions, please see the [TMK documentation](https://github.com/jackhumbert/qmk_firmware/blob/master/tmk_core/doc/keymap.md#2-action). + +Instead of using `FNx` when defining `ACTION_*` functions, you can use `F(x)` - the benefit here is being able to use more than 32 function actions (up to 4096), if you happen to need them. + +## Macro shortcuts: Send a whole string when pressing just one key + +Instead of using the `ACTION_MACRO` function, you can simply use `M(n)` to access macro *n* - *n* will get passed into the `action_get_macro` as the `id`, and you can use a switch statement to trigger it. This gets called on the keydown and keyup, so you'll need to use an if statement testing `record->event.pressed` (see keymap_default.c). + +```c +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // this is the function signature -- just copy/paste it into your keymap file as it is. +{ + switch(id) { + case 0: // this would trigger when you hit a key mapped as M(0) + if (record->event.pressed) { + return MACRO( I(255), T(H), T(E), T(L), T(L), W(255), T(O), END ); // this sends the string 'hello' when the macro executes + } + break; + } + return MACRO_NONE; +}; +``` +A macro can include the following commands: + +* I() change interval of stroke in milliseconds. +* D() press key. +* U() release key. +* T() type key(press and release). +* W() wait (milliseconds). +* END end mark. + +So above you can see the stroke interval changed to 255ms between each keystroke, then a bunch of keys being typed, waits a while, then the macro ends. + +Note: Using macros to have your keyboard send passwords for you is a bad idea. + +### Additional keycode aliases for software-implemented layouts (Colemak, Dvorak, etc) + +Everything is assuming you're in Qwerty (in software) by default, but there is built-in support for using a Colemak or Dvorak layout by including this at the top of your keymap: + + #include "keymap_.h" + +Where is "colemak" or "dvorak". After including this line, you will get access to: + + * `CM_*` for all of the Colemak-equivalent characters + * `DV_*` for all of the Dvorak-equivalent characters + +These implementations assume you're using Colemak or Dvorak on your OS, not on your keyboard - this is referred to as a software-implemented layout. If your computer is in Qwerty and your keymap is in Colemak or Dvorak, this is referred to as a firmware-implemented layout, and you won't need these features. + +To give an example, if you're using software-implemented Colemak, and want to get an `F`, you would use `CM_F` - `KC_F` under these same circumstances would result in `T`. + +## Additional language support + +In `quantum/keymap_extras/`, you'll see various language files - these work the same way as the alternative layout ones do. Most are defined by their two letter country/language code followed by an underscore and a 4-letter abbreviation of its name. `FR_UGRV` which will result in a `ù` when using a software-implemented AZERTY layout. It's currently difficult to send such characters in just the firmware (but it's being worked on - see Unicode support). + +## Unicode support + +You can currently send 4 hex digits with your OS-specific modifier key (RALT for OSX with the "Unicode Hex Input" layout) - this is currently limited to supporting one OS at a time, and requires a recompile for switching. 8 digit hex codes are being worked on. The keycode function is `UC(n)`, where *n* is a 4 digit hexidecimal. Enable from the Makefile. + +## Other firmware shortcut keycodes + +* `RESET` - puts the MCU in DFU mode for flashing new firmware (with `make dfu`) +* `DEBUG` - the firmware into debug mode - you'll need hid_listen to see things +* `BL_ON` - turns the backlight on +* `BL_OFF` - turns the backlight off +* `BL_` - sets the backlight to level *n* +* `BL_INC` - increments the backlight level by one +* `BL_DEC` - decrements the backlight level by one +* `BL_TOGG` - toggles the backlight +* `BL_STEP` - steps through the backlight levels + +Enable the backlight from the Makefile. + +## MIDI functionalty + +This is still a WIP, but check out `quantum/keymap_midi.c` to see what's happening. Enable from the Makefile. + +## Bluetooth functionality + +This requires [some hardware changes](https://www.reddit.com/r/MechanicalKeyboards/comments/3psx0q/the_planck_keyboard_with_bluetooth_guide_and/?ref=search_posts), but can be enabled via the Makefile. The firmware will still output characters via USB, so be aware of this when charging via a computer. It would make sense to have a switch on the Bluefruit to turn it off at will. + +## Building + +Download or clone the whole firmware and navigate to the keyboards/planck folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use `make dfu` to program your PCB once you hit the reset button. + +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 a file in the keymaps folder named `.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|] +``` +Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboards/hhkb/config.h b/keyboards/hhkb/config.h new file mode 100644 index 0000000000..ee66e44571 --- /dev/null +++ b/keyboards/hhkb/config.h @@ -0,0 +1,71 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0xCAFE +#define DEVICE_VER 0x0104 +#define MANUFACTURER q.m.k +#define PRODUCT HHKB mod +#define DESCRIPTION q.m.k keyboard firmware for HHKB + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 8 + +#define TAPPING_TERM 200 + +/* 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 diff --git a/keyboards/hhkb/hhkb.c b/keyboards/hhkb/hhkb.c new file mode 100644 index 0000000000..6897026c6c --- /dev/null +++ b/keyboards/hhkb/hhkb.c @@ -0,0 +1,29 @@ +#include "hhkb.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 + + if (matrix_init_user) { + (*matrix_init_user)(); + } +}; + +void matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + + if (matrix_scan_user) { + (*matrix_scan_user)(); + } +}; diff --git a/keyboards/hhkb/hhkb.h b/keyboards/hhkb/hhkb.h new file mode 100644 index 0000000000..093d7aeabc --- /dev/null +++ b/keyboards/hhkb/hhkb.h @@ -0,0 +1,30 @@ +#ifndef HHKB_H +#define HHKB_H + +#include "matrix.h" +#include "keymap.h" +//#include "backlight.h" +#include + +#define KEYMAP( \ + K31, K30, K00, K10, K11, K20, K21, K40, K41, K60, K61, K70, K71, K50, K51, \ + K32, K01, K02, K13, K12, K23, K22, K42, K43, K62, K63, K73, K72, K52, \ + K33, K04, K03, K14, K15, K24, K25, K45, K44, K65, K64, K74, K53, \ + K34, K05, K06, K07, K16, K17, K26, K46, K66, K76, K75, K55, K54, \ + K35, K36, K37, K57, K56) \ + \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, K07 }, \ + { K10, K11, K12, K13, K14, K15, K16, K17 }, \ + { K20, K21, K22, K23, K24, K25, K26, KC_NO }, \ + { K30, K31, K32, K33, K34, K35, K36, K37 }, \ + { K40, K41, K42, K43, K44, K45, K46, KC_NO }, \ + { K50, K51, K52, K53, K54, K55, K56, K57 }, \ + { K60, K61, K62, K63, K64, K65, K66, KC_NO }, \ + { K70, K71, K72, K73, K74, K75, K76, KC_NO } \ +} + +void matrix_init_user(void); +void matrix_scan_user(void); + +#endif diff --git a/keyboards/hhkb/hhkb_avr.h b/keyboards/hhkb/hhkb_avr.h new file mode 100644 index 0000000000..7ea6322c73 --- /dev/null +++ b/keyboards/hhkb/hhkb_avr.h @@ -0,0 +1,167 @@ +#ifndef HHKB_AVR_H +#define HHKB_AVR_H + +#include +#include +#include +#include +#include + + +// Timer resolution check +#if (1000000/TIMER_RAW_FREQ > 20) +# error "Timer resolution(>20us) is not enough for HHKB matrix scan tweak on V-USB." +#endif + + +/* + * HHKB Matrix I/O + * + * row: HC4051[A,B,C] selects scan row0-7 + * row-ext: [En0,En1] row extention for JP + * col: LS145[A,B,C,D] selects scan col0-7 and enable(D) + * key: on: 0/off: 1 + * prev: hysteresis control: assert(1) when previous key state is on + */ + + +#if defined(__AVR_ATmega32U4__) +/* + * For TMK HHKB alt controller(ATMega32U4) + * + * row: PB0-2 + * col: PB3-5,6 + * key: PD7(pull-uped) + * prev: PB7 + * power: PD4(L:off/H:on) + * row-ext: PC6,7 for HHKB JP(active low) + */ +static inline void KEY_ENABLE(void) { (PORTB &= ~(1<<6)); } +static inline void KEY_UNABLE(void) { (PORTB |= (1<<6)); } +static inline bool KEY_STATE(void) { return (PIND & (1<<7)); } +static inline void KEY_PREV_ON(void) { (PORTB |= (1<<7)); } +static inline void KEY_PREV_OFF(void) { (PORTB &= ~(1<<7)); } +#ifdef HHKB_POWER_SAVING +static inline void KEY_POWER_ON(void) { + DDRB = 0xFF; PORTB = 0x40; // change pins output + DDRD |= (1<<4); PORTD |= (1<<4); // MOS FET switch on + /* Without this wait you will miss or get false key events. */ + _delay_ms(5); // wait for powering up +} +static inline void KEY_POWER_OFF(void) { + /* input with pull-up consumes less than without it when pin is open. */ + DDRB = 0x00; PORTB = 0xFF; // change pins input with pull-up + DDRD |= (1<<4); PORTD &= ~(1<<4); // MOS FET switch off +} +static inline bool KEY_POWER_STATE(void) { return PORTD & (1<<4); } +#else +static inline void KEY_POWER_ON(void) {} +static inline void KEY_POWER_OFF(void) {} +static inline bool KEY_POWER_STATE(void) { return true; } +#endif +static inline void KEY_INIT(void) +{ + /* row,col,prev: output */ + DDRB = 0xFF; + PORTB = 0x40; // unable + /* key: input with pull-up */ + DDRD &= ~0x80; + PORTD |= 0x80; +#ifdef HHKB_JP + /* row extention for HHKB JP */ + DDRC |= (1<<6|1<<7); + PORTC |= (1<<6|1<<7); +#endif + KEY_UNABLE(); + KEY_PREV_OFF(); + + KEY_POWER_OFF(); +} +static inline void KEY_SELECT(uint8_t ROW, uint8_t COL) +{ + PORTB = (PORTB & 0xC0) | (((COL) & 0x07)<<3) | ((ROW) & 0x07); +#ifdef HHKB_JP + if ((ROW) & 0x08) PORTC = (PORTC & ~(1<<6|1<<7)) | (1<<6); + else PORTC = (PORTC & ~(1<<6|1<<7)) | (1<<7); +#endif +} + + +#elif defined(__AVR_AT90USB1286__) +/* + * For Teensy++(AT90USB1286) + * + * HHKB pro HHKB pro2 + * row: PB0-2 (6-8) (5-7) + * col: PB3-5,6 (9-12) (8-11) + * key: PE6(pull-uped) (4) (3) + * prev: PE7 (5) (4) + * + * TODO: convert into 'staitc inline' function + */ +#define KEY_INIT() do { \ + DDRB |= 0x7F; \ + DDRE |= (1<<7); \ + DDRE &= ~(1<<6); \ + PORTE |= (1<<6); \ +} while (0) +#define KEY_SELECT(ROW, COL) (PORTB = (PORTB & 0xC0) | \ + (((COL) & 0x07)<<3) | \ + ((ROW) & 0x07)) +#define KEY_ENABLE() (PORTB &= ~(1<<6)) +#define KEY_UNABLE() (PORTB |= (1<<6)) +#define KEY_STATE() (PINE & (1<<6)) +#define KEY_PREV_ON() (PORTE |= (1<<7)) +#define KEY_PREV_OFF() (PORTE &= ~(1<<7)) +#define KEY_POWER_ON() +#define KEY_POWER_OFF() +#define KEY_POWER_STATE() true + + +#else +# error "define code for matrix scan" +#endif + + +#if 0 +// For ATMega328P with V-USB +// +// #elif defined(__AVR_ATmega328P__) +// Ports for V-USB +// key: PB0(pull-uped) +// prev: PB1 +// row: PB2-4 +// col: PC0-2,3 +// power: PB5(Low:on/Hi-z:off) +#define KEY_INIT() do { \ + DDRB |= 0x3E; \ + DDRB &= ~(1<<0); \ + PORTB |= 1<<0; \ + DDRC |= 0x0F; \ + KEY_UNABLE(); \ + KEY_PREV_OFF(); \ +} while (0) +#define KEY_SELECT(ROW, COL) do { \ + PORTB = (PORTB & 0xE3) | ((ROW) & 0x07)<<2; \ + PORTC = (PORTC & 0xF8) | ((COL) & 0x07); \ +} while (0) +#define KEY_ENABLE() (PORTC &= ~(1<<3)) +#define KEY_UNABLE() (PORTC |= (1<<3)) +#define KEY_STATE() (PINB & (1<<0)) +#define KEY_PREV_ON() (PORTB |= (1<<1)) +#define KEY_PREV_OFF() (PORTB &= ~(1<<1)) +// Power supply switching +#define KEY_POWER_ON() do { \ + KEY_INIT(); \ + PORTB &= ~(1<<5); \ + _delay_ms(1); \ +} while (0) +#define KEY_POWER_OFF() do { \ + DDRB &= ~0x3F; \ + PORTB &= ~0x3F; \ + DDRC &= ~0x0F; \ + PORTC &= ~0x0F; \ +} while (0) +#endif + +#endif diff --git a/keyboards/hhkb/keymaps/default/compiled.hex b/keyboards/hhkb/keymaps/default/compiled.hex new file mode 100644 index 0000000000..b3af695270 --- /dev/null +++ b/keyboards/hhkb/keymaps/default/compiled.hex @@ -0,0 +1,1381 @@ +:100000000C9452060C9496060C9496060C94960644 +:100010000C9496060C9496060C9496060C949606F0 +:100020000C9496060C9496060C945A110C942C126F +:100030000C941C1F0C9496060C9496060C94960631 +:100040000C9496060C9496060C9496060C949606C0 +:100050000C9496060C94BC1F0C9496060C94960671 +:100060000C9496060C9496060C9496060C949606A0 +:100070000C9496060C9496060C9496060C94960690 +:100080000C9496060C9496060C9496060C94960680 +:100090000C9496060C9496060C9496060C94960670 +:1000A0000C9496060C9496060C9496069912BB1224 +:1000B000A913BB12A91300132313A91378138B13CD +:1000C0006516651694169416D316F316231823187E +:1000D000FE162318AE17AE171418231823181D1870 +:1000E000BB17BB17BB17BB17BB17BB17BB17BB1780 +:1000F000BB17BB17BB17BB17BB17BB17BB17BB1770 +:10010000CB17D917E017E717F117253032583A20E7 +:10011000253038620A000A722F63203031323334BE +:100120003536370A001F0014001A00160004001D9F +:10013000001B000600200021001500080007000930 +:100140000019000500220023001C0017000A000B04 +:1001500000110000001E0029002B00E000E100E279 +:1001600000E3002C002400250018000C000E000DF8 +:100170000010000000310035002A0028000152E57F +:1001800000E600E700260027001200130033000FEE +:1001900000360000002D002E0030002F0034003803 +:1001A00000370000003B0001000100A900AA000187 +:1001B00000010001003C003D0001000100A8000119 +:1001C00000010001003E003F000100010001005558 +:1001D00000570000003A00A50039000100010001AD +:1001E000000100010040004100010046004A0054A7 +:1001F000005600000049004C002A00580001000190 +:100200000001000100420043004700480050004B3D +:10021000004D00000044004500010052004F005115 +:10022000004E0000000A44454255473A20656E6181 +:10023000626C65642E0A005B735D004B6579626FCA +:100240006172642073746172742E0A005B575D00E2 +:100250005B535D005B525D005B445D005B435D0092 +:100260001203480048004B00420020006D006F0060 +:10027000640000000C0371002E006D002E006B0066 +:1002800000000403090409027400040100A0FA0933 +:100290000400000103010100092111010001223FB6 +:1002A000000705810308000A090401000103010297 +:1002B00000092111010001224D00070582030800F9 +:1002C0000A090402000103000000092111010001D4 +:1002D0002236000705830308000A0904030002030D +:1002E00000000009211101000122200007058403FC +:1002F0002000010705040320000112011001000085 +:100300000008EDFEFECA0401010200010631FF09EA +:1003100074A1010975150025FF9520750881020952 +:1003200076150025FF952075089102C0050109800A +:10033000A101850216010026B7001A01002AB700A4 +:10034000751095018100C0050C0901A101850316F6 +:100350000100269C021A01002A9C02751095018159 +:1003600000C005010902A1010901A1000509190147 +:100370002905150025019505750181029501750373 +:1003800081010501093009311581257F9502750824 +:10039000810609381581257F950175088106050CB0 +:1003A0000A38021581257F950175088106C0C005B0 +:1003B000010906A101050719E029E71500250195A6 +:1003C0000875018102950175088101050819012947 +:1003D00005950575019102950175039101050719B0 +:1003E0000029FF150025FF950675088100C00A0049 +:1003F0002530325820006B6579626F6172645F72DC +:1004000065706F72743A20004B6579626F61726437 +:10041000204C4544732073746174653A2025780A32 +:1004200000646F6E652E0A00626F6F676D616769A9 +:1004300063207363616E3A202E2E2E2000290A005D +:100440002575002F002575005D280025640020001B +:10045000256400200025640020002564007C002520 +:10046000303258006D6F7573656B6579205B62740F +:100470006E7C782079207620685D287265702F6107 +:10048000636C293A205B006D6B5F776865656C5F14 +:1004900074696D655F746F5F6D6178203D202564C0 +:1004A0000A006D6B5F776865656C5F6D61785F737F +:1004B00070656564203D2025640A006D6B5F74697A +:1004C0006D655F746F5F6D6178203D2025640A0063 +:1004D0006D6B5F6D61785F7370656564203D20258D +:1004E000640A006D6B5F696E74657276616C203DA5 +:1004F0002025640A006D6B5F64656C6179203D2086 +:1005000025640A006D6B5F776865656C5F74696D63 +:10051000655F746F5F6D6178203D2025640A006D12 +:100520006B5F776865656C5F6D61785F737065653B +:1005300064203D2025640A006D6B5F74696D655F02 +:10054000746F5F6D6178203D2025640A006D6B5FDC +:100550006D61785F7370656564203D2025640A00D5 +:100560006D6B5F696E74657276616C203D202564E9 +:100570000A006D6B5F64656C6179203D2025640A1B +:10058000000A00257500363A20776865656C5F744F +:10059000696D655F746F5F6D61783A20000A0025B0 +:1005A0007500353A20776865656C5F6D61785F73BB +:1005B000706565643A20000A00257500343A20749D +:1005C000696D655F746F5F6D61783A20000A002580 +:1005D0007500333A206D61785F73706565643A2009 +:1005E000000A00257500323A20696E7465727661E2 +:1005F0006C286D73293A20000A00257500313A20D5 +:1006000064656C6179282A31306D73293A20000ABB +:10061000092D2056616C756573202D0A004D3E0032 +:100620004D25643E20003F0073657420646566615B +:10063000756C740A00433E2000776865726520641B +:10064000656C74613A20637572736F723D25642C1A +:1006500020776865656C3D25640A5365652068747C +:1006600074703A2F2F656E2E77696B6970656469B7 +:10067000612E6F72672F77696B692F4D6F75736588 +:100680005F6B6579730A000A092D204D6F757365DC +:100690006B6579202D0A4553432F713A09717569AD +:1006A000740A313A0964656C6179282A31306D73B6 +:1006B000290A323A09696E74657276616C286D7325 +:1006C000290A333A096D61785F73706565640A348D +:1006D0003A0974696D655F746F5F6D61780A353AC8 +:1006E00009776865656C5F6D61785F7370656564D7 +:1006F0000A363A09776865656C5F74696D655F7481 +:100700006F5F6D61780A0A703A097072696E7420C1 +:1007100076616C7565730A643A0973657420646563 +:100720006661756C74730A75703A092B310A646FCF +:10073000776E3A092D310A706775703A092B31309E +:100740000A7067646F776E3A092D31300A0A737048 +:10075000656564203D2064656C7461202A206D61AC +:10076000785F7370656564202A2028726570656102 +:1007700074202F2074696D655F746F5F6D617829D7 +:100780000A003F004D3E2000433E20004C25640AF5 +:100790000074696D65725F636F756E743A20253001 +:1007A000346C580A006B6579626F6172645F6964CA +:1007B0006C653A2025580A006B6579626F61726436 +:1007C0005F70726F746F636F6C3A2025580A00680F +:1007D0006F73745F6B6579626F6172645F6C65647F +:1007E0007328293A2025580A000A092D20537461DC +:1007F000747573202D0A004743433A20342E392E56 +:1008000032204156522D4C4942433A20312E382E47 +:1008100031204156525F415243483A206176723549 +:100820000A004F5054494F4E533A204C55464120F0 +:10083000424F4F544D41474943204D4F5553454B2F +:1008400045592045585452414B455920434F4E532A +:100850004F4C4520434F4D4D414E44203531320AD7 +:10086000004255494C443A20313637313865662DBF +:100870006469727479202832333A33393A32382035 +:100880004A756E2020392032303136290A00564907 +:10089000443A2030784645454428712E6D2E6B2908 +:1008A000205049443A203078434146452848484B37 +:1008B00042206D6F6429205645523A2030783031FD +:1008C00030340A00444553433A20712E6D2E6B207C +:1008D0006B6579626F617264206669726D776172AF +:1008E0006520666F722048484B420A000A092D2095 +:1008F00056657273696F6E202D0A000A092D204318 +:100900006F6E736F6C65202D0A4553432F713A0942 +:10091000717569740A6D3A096D6F7573656B6579E8 +:100920000A000A092D204D61676963202D0A443AA7 +:10093000094465627567204D65737361676520546E +:100940006F67676C650A583A094D6174726978205F +:100950004465627567204D6F646520546F67676CEE +:1009600065202D2053686F77206B657970726573F1 +:1009700073657320696E206D617472697820677287 +:1009800069640A4B3A094B6579626F61726420446D +:100990006562756720546F67676C65202D2053680A +:1009A0006F77206B65797072657373207265706FF5 +:1009B00072740A4D3A094465627567204D6F75730C +:1009C0006520546F67676C650A563A0956657273FD +:1009D000696F6E0A533A095374617475730A433A26 +:1009E00009416374697661746520436F6E736F6C3F +:1009F00065204D6F64650A46312D4631303A095302 +:100A0000776974636820746F204C61796572203057 +:100A10002D392028463130203D204C30290A302DF8 +:100A2000393A0953776974636820746F204C61798F +:100A3000657220302D390A4553433A09537769745A +:100A4000636820746F204C617965722030202861C2 +:100A50006C7465726E617465206B65792031290A4A +:100A600047524156453A0953776974636820746F59 +:100A7000204C6179657220302028616C7465726E3B +:100A8000617465206B65792032290A5041555345C0 +:100A90003A094A756D7020746F20426F6F746C6FE5 +:100AA0006164657220285265736574290A453A09A4 +:100AB0005072696E7420454550524F4D20536574F5 +:100AC00074696E67730A000A002575002E6E6B72DA +:100AD0006F3A20000A002575002E737761705F62FF +:100AE00061636B736C6173685F6261636B73706188 +:100AF00063653A20000A002575002E737761705FE8 +:100B000067726176655F6573633A20000A00257538 +:100B1000002E6E6F5F6775693A20000A0025750028 +:100B20002E737761705F72616C745F726775693A7A +:100B300020000A002575002E737761705F6C616C70 +:100B4000745F6C6775693A20000A002575002E6392 +:100B50006170736C6F636B5F746F5F636F6E7472E1 +:100B60006F6C3A20000A002575002E737761705F64 +:100B7000636F6E74726F6C5F636170736C6F636BC5 +:100B80003A20000A0025303258006B65796D61709B +:100B90005F636F6E6669672E7261773A20000A00A4 +:100BA0002575002E6D6F7573653A20000A00257556 +:100BB000002E6B6579626F6172643A20000A00252D +:100BC00075002E6D61747269783A20000A002575EF +:100BD000002E656E61626C653A20000A0025303295 +:100BE000580064656275675F636F6E6669672E7231 +:100BF00061773A20000A0025750064656661756CAE +:100C0000745F6C617965723A20003F000A6D6F7500 +:100C100073653A206F66660A000A6D6F7573653AF0 +:100C2000206F6E0A000A6B6579626F6172643A2008 +:100C30006F66660A000A6B6579626F6172643A20BA +:100C40006F6E0A000A6D61747269783A206F666689 +:100C50000A000A6D61747269783A206F6E0A000AA0 +:100C600064656275673A206F66660A000A646562A9 +:100C700075673A206F6E0A000A0A4A756D70696ED0 +:100C80006720746F20626F6F746C6F616465722E81 +:100C90002E2E2000433E20006565636F6E666967F7 +:100CA0003A0A000011241FBECFEFDAE0DEBFCDBF4D +:100CB00004B603FE24C08091E0019091E101A0916F +:100CC000E201B091E3018730904BA740B04BB9F4FB +:100CD0001092E0011092E1011092E2011092E30102 +:100CE00014BE84B7877F84BF88E10FB6F8948093E1 +:100CF0006000109260000FBEE0E0FFE3099511E094 +:100D0000A0E0B1E0ECEFF5E502C005900D92A23352 +:100D1000B107D9F711E0A2E3B1E001C01D92A03EF6 +:100D2000B107E1F70E94940E0C94FC2A0C94000089 +:100D3000FF93EF93E0913201F0913301309709F086 +:100D40000995EF91FF910895FC018591803011F094 +:100D5000EFDFFBCF0895FF27E0E230E247FF0CC052 +:100D6000419597FF09C0EDE260957095809590954B +:100D7000611D711D811D911D27FF02C0219530E36A +:100D800050E2AA27660F771F881F991FAA1FA41772 +:100D900010F0A41B63955A95A9F7AA3008F0A95F33 +:100DA000A05DAF93F395611571058105910541F73C +:100DB000ED3211F4EF93F395F21718F43F93F39596 +:100DC000FBCF8F91B5DFFA95E1F70895E991F9919D +:100DD0008591803021F0853219F0AADFF9CF08958E +:100DE00020E0E89455915532C1F3503311F46894E2 +:100DF00055915A3348F4505390F3220F022E220F8C +:100E0000220F200D250FF4CF0EF421958991999191 +:100E1000533619F3533729F1533559F1BC0188275B +:100E20009927E8945C3621F48991999168945591B9 +:100E3000543639F446EF7EF077FF0DC08FEF9FEF09 +:100E40000AC055374AE039F0583540E121F05236B2 +:100E500042E009F00895FF93EF937DDFEF91FF915A +:100E6000B7CFFF93EF93FC0181918030B9F360DF3E +:100E7000FBCFFF93EF9368DFF1CFDF93CF93CDB735 +:100E8000DEB72596A3DFCF91DF9108958FEF84B968 +:100E900080E485B957985F9A2E9A2F98ECE3F1E099 +:100EA00088E08E0F11928E13FDCFE4E3F1E088E02D +:100EB0008E0F11928E13FDCF8CE391E0909347013A +:100EC0008093460184E391E090934501809344012F +:100ED0000895EF92FF920F931F93CF93DF9380912A +:100EE0004401909145012091460130914701309392 +:100EF0004501209344019093470180934601C0E04F +:100F0000D0E0EE24E394F12C0FEF10E020E030E08D +:100F100085B1807C8C2BA90193E0440F551F9A95D5 +:100F2000E1F7842B85B98AE18A95F1F700C0E09159 +:100F30004401F0914501EC0FFD1F808190E0022EED +:100F400002C0959587950A94E2F780FD2F9A95E364 +:100F50009A95F1F70000E6B52E988AE18A95F1F7A7 +:100F600000C04091460150914701DA01AC0FBD1F0E +:100F70004F9B0AC0C701022E01C0880F0A94EAF7EE +:100F800080959C91892308C06C91C701022E01C0F5 +:100F9000880F0A94EAF7862B8C9386B56E2F70E043 +:100FA0008E1728F086B590E0861B970B06C0E6B535 +:100FB000C801861B970B8E0F911D069758F0E09184 +:100FC0004401F0914501EC0FFD1F8081FA01EC0F07 +:100FD000FD1F80839AE19A95F1F700C02F982E9A11 +:100FE0008BE291E00197F1F700C000002F5F3F4FC7 +:100FF0002830310509F08CCFA0914601B09147010E +:10100000AC0FBD1FE0914401F0914501EC0FFD1FB5 +:101010009C918081981751F00E945A1F609348015B +:101020007093490180934A0190934B012196C830F7 +:10103000D10509F06BCF8091D601853021F08091E8 +:10104000D601811111C060914801709149018091D0 +:101050004A0190914B010E94901F613177428105B6 +:10106000910510F00E94DF1E81E0DF91CF911F916A +:101070000F91FF90EF900895209146013091470124 +:10108000F901E80FF11D808108950F931F93CF930D +:10109000DF9386E191E00E94A406C0E0D0E00AE080 +:1010A00011E0E0914601F0914701EC0FFD1F8081B6 +:1010B0000E94C91E1F928F93DF93CF931F930F93AC +:1010C0000E943D0721960F900F900F900F900F9068 +:1010D0000F90C830D10529F7DF91CF911F910F9163 +:1010E00008951F93CF93DF93C7E0D0E010E0E09125 +:1010F0004601F0914701EC0FFD1F808190E00E94B6 +:10110000BD1E180F219798F7812FDF91CF911F9166 +:1011100008950895089561110BC0FC018281882310 +:1011200021F085EE0E94591503C085EE0E94F81546 +:1011300080E090E0089581E0089581E008950C94A6 +:101140009D0808950F931F93CF93DF938C01FC01AB +:10115000C081D181CE010E94871DBE010E944B0932 +:10116000EC01B8010E949F08882309F48DC0F801A2 +:101170008281882309F44AC08091570181111FC0E0 +:10118000C431F0E5DF0709F051C00E94A10881E0F9 +:10119000809357010E944E1F9093560180935501F2 +:1011A00010924E011092500110924F011092520174 +:1011B00010925101109254011092530165C0809118 +:1011C0005501909156010E94661F883C910570F46C +:1011D00080914E01E82FF0E0EE0FFF1FE15BFE4F24 +:1011E000D183C0838F5F80934E014EC0C43880E5A9 +:1011F000D80721F0C538D04501F13AC0F801828105 +:10120000882341F010924C0182E01EC0C438E0E512 +:10121000DE0759F580914C01811106C086E20E94DB +:10122000591586E20E94F81582E01CC0C438F0E52A +:10123000DF0741F3C538D045D9F4F801828188230E +:1012400031F010924D0180E20E9420161DC0809165 +:101250004D01811106C087E20E94591587E20E9464 +:10126000F81580E20E9427160FC0C538D04529F333 +:1012700081E080934C0180934D01C801DF91CF91B3 +:101280001F910F910C949B0880E0DF91CF911F91EB +:101290000F9108950895E72FF0E098E0899FE00D01 +:1012A000F11D112483E0EE0FFF1F8A95E1F7E60F91 +:1012B000F11DEE0FFF1FEB5DFE4F85919491089598 +:1012C000880F991FFC01EB55F0408591949108958A +:1012D000880F991FFC01EB5DFE4F85919491089555 +:1012E0000F931F93CF93DF93EC01811520E39207B7 +:1012F00050F5C11580E2D80708F0C3C0CB3BD1053B +:1013000090F4C83AD10508F06AC0C53AD10508F092 +:101310005BC0C430D10508F0D4C1219709F0CEC11B +:1013200001E010E00EC2CF3FD10511F008F0C9C1B5 +:10133000C03FD10508F0A2C0CE01805E9109089798 +:1013400008F4BFC1BBC1C13090E5D90709F4A2C000 +:1013500020F5C0318FE4D80770F4C11590E4D907A7 +:1013600008F094C0C11521E3D20708F0A7C1DD271A +:101370008E01106CE6C1C115D04509F09FC10E94D5 +:101380008E188FEF94E32CE0815090402040E1F7DD +:1013900000C000000E94E11FD4C1C11597E5D90724 +:1013A00058F4C03121E5D20708F020C1C43180E5EE +:1013B000D80708F479C082C1CE01905781159041B9 +:1013C00008F07CC1DF7077C1C53AD10509F47BC153 +:1013D000C63AD10509F07AC102E810E4B2C1C83AB0 +:1013E000D10509F476C1C93AD10509F475C1CA3AE3 +:1013F000D10509F474C1CB3AD10509F473C1CC3AD3 +:10140000D10509F472C1CD3AD10509F471C1C03BCF +:10141000D10509F470C1CE3AD10509F46FC1CF3AB4 +:10142000D10509F46EC1C13BD10509F46DC1C23BC0 +:10143000D10509F46CC1C33BD10509F46BC1C43BB0 +:10144000D10509F46AC1C53BD10509F469C1C63BA0 +:10145000D10509F468C1C73BD10509F467C1C83B90 +:10146000D10509F466C1C93BD10509F465C1CA3B80 +:10147000D10509F464C100E014E463C18E01106574 +:1014800060C1CE019F700E9468095CC1DF708E014F +:10149000106A57C185E292E00E94A4068091C101C2 +:1014A00081608093C1014DC10E948721811102C0DA +:1014B0000E946D210E94A42190E09093E00180930E +:1014C000DF01C23080E5D80721F48091DF0181601F +:1014D00086C0C43090E5D90721F48091DF01826095 +:1014E0007EC0C63020E5D20721F48091DF01846000 +:1014F00076C0C83080E5D80719F48091DF0127C095 +:10150000CA3090E5D90721F48091DF01806167C07E +:10151000CC3020E5D20721F48091DF0180625FC0EA +:10152000CE3080E5D80721F48091DF01806457C078 +:10153000C03190E5D90721F48091DF0180684FC068 +:10154000C23120E5D20729F48091DF0184608860F0 +:1015500046C0C33080E5D80721F48091DF018E7F3B +:101560003EC0C53090E5D90721F48091DF018D7F21 +:1015700036C0C73020E5D20721F48091DF018B7F90 +:101580002EC0C93080E5D80719F48091DF0126C04C +:10159000CB3090E5D90721F48091DF018F7E1FC009 +:1015A000CD3020E5D20721F48091DF018F7D17C077 +:1015B000CF3080E5D80721F48091DF018F7B0FC009 +:1015C000C13190E5D90721F48091DF018F7707C001 +:1015D000C331D04531F48091DF018B7F877F8093C9 +:1015E000DF018091DF010E94A821ABC08D2F9927D8 +:1015F0008F70992781309105D9F49E01237033278C +:1016000002C0880F991F2A95E2F79C688E0144E07A +:10161000000F111F4A95E1F700271370802B912BC3 +:1016200053E0CC0FDD1F5A95E1F7C076DD272FC0C0 +:101630008230910531F4DC2FCC278E01016F106AC6 +:1016400080C08330910569F4CE018370992701E051 +:1016500010E002C0000F111F8A95E2F7C8019C68D4 +:101660000FC084309105B9F4CE018370992701E051 +:1016700010E002C0000F111F8A95E2F7C8019A68B6 +:1016800023E0CC0FDD1F2A95E1F7C07ED7708C01D7 +:101690000C2B1D2B56C08530910531F4DC2FCC2747 +:1016A0008E01046F106A4DC0069709F04AC0CF71D1 +:1016B000DD27DC2FCC278E01106243C000E010E054 +:1016C00040C08E013EC001E810E43BC003E810E4D6 +:1016D00038C002EE14E435C009EE14E432C00AEE5C +:1016E00014E42FC005EB14E42CC006EB14E429C06D +:1016F00007EB14E426C00CEC14E423C00DEC14E456 +:1017000020C003E815E41DC00AE815E41AC002E988 +:1017100015E417C004E915E414C001E216E411C091 +:1017200003E216E40EC004E216E40BC005E216E480 +:1017300008C006E216E405C007E216E402C00AE2A9 +:1017400016E4C801DF91CF911F910F910895E72F03 +:10175000F0E098E0899FE00DF11D112483E0EE0F89 +:10176000FF1F8A95E1F7E60FF11DEE0FFF1FEB5DFE +:10177000FE4F85919491803E9105E0F4803C910567 +:1017800058F58133910509F46FC048F48932910509 +:1017900009F463C08A32910509F46DC072C08933BF +:1017A0009105E9F082389105D1F08533910509F46E +:1017B0004DC067C0833E910581F138F4803E9105AC +:1017C000B9F0823E9105D9F05CC0863E910561F189 +:1017D000873E9105A1F155C00E94600908952091AE +:1017E000DF0120FD02C021FF4CC080EE90E049C027 +:1017F0008091DF0180FFF9CF89E390E042C08091C2 +:10180000DF0182FF0EC08091DF0184FF03C080E012 +:1018100090E037C083EE90E034C08091DF0182FF1A +:10182000F2CF82EE90E02DC08091DF0183FF0BC0EC +:101830008091DF0184FDEBCF87EE90E022C08091A4 +:10184000DF0183FFF5CF86EE90E01BC08091DF01C2 +:1018500085FF07C089E290E014C08091DF0185FF19 +:10186000F9CF85E390E00DC08091DF0186FF07C0CE +:101870008AE290E006C08091DF0186FFF9CF81E324 +:1018800090E00E947009089508950C94440C809192 +:10189000630108959FB7F89410925A019FBF9091E9 +:1018A000D601943009F057C09091E9009F703091B3 +:1018B000EC00232F217030FD20E8922B24E02093B0 +:1018C000E9002091EB0020FF43C02091EE0027FFAC +:1018D0003FC020915801222321F02091E80025FFEC +:1018E00037C01092580126E03091E80035FD15C050 +:1018F0003091D601343061F53091EB0035FD28C0D0 +:10190000215021F481E08093580122C0EFE9FFE0EB +:101910003197F1F700C00000E7CF8093F10080918C +:10192000E80085FD0AC08091E80080FFFCCF80912F +:10193000E8008E778093E80006C08FB7F89421E026 +:1019400020935A018FBF9F709093E90080E0089523 +:101950009F709093E9008FEF0895CF93DF9300D0AD +:101960001F92CDB7DEB79C018091D601843019F566 +:1019700093E099833B832A839093E9008FEF9091C2 +:10198000E800815095FD06C095ED9A95F1F70000AD +:101990008111F5CF8091E80085FF0DC040E050E057 +:1019A00063E070E0CE0101960E944A0F8091E8004A +:1019B0008E778093E8000F900F900F90DF91CF917A +:1019C0000895CF93DF9300D01F92CDB7DEB720915B +:1019D000D601243021F522E029839B838A8383E08A +:1019E0008093E9008FEF9091E800815095FD06C04B +:1019F00095ED9A95F1F700008111F5CF8091E800FF +:101A000085FF0DC040E050E063E070E0CE0101963C +:101A10000E944A0F8091E8008E778093E8000F9033 +:101A20000F900F90DF91CF9108952091D60124302F +:101A3000F1F422E02093E9002FEF3091E8002150EB +:101A400035FD06C035ED3A95F1F700002111F5CFCF +:101A50002091E80025FF0BC040E050E065E070E019 +:101A60000E944A0F8091E8008E778093E8000895E5 +:101A7000CF93DF932091D601243039F521E02093D4 +:101A8000E9002FEF3091E800215035FD06C035ED1B +:101A90003A95F1F700002111F5CF2091E80025FFDC +:101AA00014C0EC0140E050E068E070E00E944A0F92 +:101AB0008091E8008E778093E80088E0FE01ABE536 +:101AC000B1E001900D928A95E1F7DF91CF910895F1 +:101AD0008CE592E00E94A4068091D501811109C095 +:101AE0000E94DF100E943C118091E200846080938C +:101AF000E200089588E592E00E94A4061092D501C4 +:101B0000089584E592E00C94A40680E592E00C949C +:101B1000A4068CE492E00E94A4060C94161F209167 +:101B200059012F5F822F62E30E948C2A992319F0BA +:101B30002093590108951092590180915A018823E8 +:101B400071F18091D601843041F58091E9008F7068 +:101B50002091EC00922F917020FD90E8892B94E069 +:101B60009093E9009091EB0090FF14C09091EE00EB +:101B700097FF10C09091E80095FF03C01092F1000C +:101B8000F9CF9091E80090FF05C09091E8009E7712 +:101B90009093E8008F708093E90010925A010895A5 +:101BA00042E061EC81E00E94591042E061EC82E089 +:101BB0000E94591042E061EC83E00E94591042E219 +:101BC00061EC84E00C9459108091D801833009F4C1 +:101BD00053C030F4813071F0823009F48CC0089524 +:101BE0008A3009F478C08B3009F45EC0893009F07E +:101BF0009AC020C08091D701813A09F094C08091A9 +:101C0000E800877F8093E8008091DB019091DC0100 +:101C1000892B21F468E08BE591E003C060E080E06F +:101C200090E070E00E94950F8091E8008B778093A0 +:101C3000E80008958091D701813209F074C0809145 +:101C4000DB019091DC01892B09F06DC08091E800E7 +:101C5000877F8093E8008091E80082FD05C0809135 +:101C6000D6018111F8CF5FC08091F10080936301AC +:101C70008091E8008B7753C08091D701813A09F0B9 +:101C800052C08091DB019091DC01892B09F04BC09F +:101C90008091E800877F8093E8008091E80080FFD2 +:101CA000FCCF80910A0136C08091D7018132D9F5ED +:101CB0008091DB019091DC01892BA9F58091E800EE +:101CC000877F8093E8000E948E108091D9018093D5 +:101CD0000A010C948E188091D701813221F58091F0 +:101CE000E800877F8093E8000E948E108091DA01DF +:101CF0008093640108958091D701813AA1F4809185 +:101D0000E800877F8093E8008091E80080FFFCCFA7 +:101D1000809164018093F1008091E8008E77809338 +:101D2000E8000C948E10089584B7877F84BF88E103 +:101D30000FB6F89480936000109260000FBE90E0A0 +:101D400080E80FB6F89480936100909361000FBE15 +:101D50000E946E140E94DF100E943C118091E200EC +:101D600084608093E2008AE49CE00E94B81E78942C +:101D70000E94C1130E94701480E091E00E94DC1365 +:101D80008BE392E00E94A4068091D601853089F40D +:101D900087E392E00E94A4060E94DF1E8091D40196 +:101DA000882391F30E94081F882371F30E94340F47 +:101DB000EBCF0E949414E8CF292F3327233031052D +:101DC000C9F064F42130310581F02230310509F089 +:101DD00043C084E790E026E832E042C0213231057A +:101DE000F1F02232310541F137C082E190E02AEF73 +:101DF00032E036C099278130910541F0823091055B +:101E000041F0892B49F5E2E8F2E005C0E4E7F2E0B1 +:101E100002C0E0E6F2E0849190E09F0121C06430CE +:101E2000D8F4E62FF0E0EE0FFF1FE15EFE4F2081B9 +:101E3000318189E090E014C0643070F470E0FB01FF +:101E4000EE0FFF1FE95EFE4F20813181FB01ED5E49 +:101E5000FE4F808190E004C080E090E020E030E020 +:101E6000FA0131832083089580E189BD82E189BD33 +:101E700009B400FEFDCF8091D8008F7D8093D800FB +:101E80008091E00082608093E0008091E00081FD1D +:101E9000FCCF0895CF92DF92EF92FF920F931F93A2 +:101EA000CF93DF93EC018B016A010E94AD10811189 +:101EB00033C0C114D10439F0F60180819181081B2F +:101EC000190BC80FD91FE12CF12C0115110519F1BF +:101ED0008091E80085FD16C08091E8008E778093A0 +:101EE000E800C114D10449F0F60180819181E80E27 +:101EF000F91EF182E08285E00FC00E94AD108823B8 +:101F000021F30AC089918093F10001501109FFEF7C +:101F1000EF1AFF0ADACF80E0DF91CF911F910F9186 +:101F2000FF90EF90DF90CF9008952091DD013091E8 +:101F3000DE012617370748F06115710539F4209145 +:101F4000E8002E772093E80001C0B90140E0611558 +:101F50007105A9F12091D601222309F443C025304F +:101F600009F442C02091E80023FD40C02091E80020 +:101F700022FD32C02091E80020FFE9CF4091F3001C +:101F80002091F20030E0342BFC01CF016115710586 +:101F900059F02830310540F481918093F10061506F +:101FA00071092F5F3F4FF1CF41E02830310509F033 +:101FB00040E02091E8002E772093E800C8CF41113F +:101FC000C9CF0AC08091D601882361F0853061F0C5 +:101FD0008091E80083FD0AC08091E80082FFF2CF83 +:101FE00080E0089582E0089583E0089581E00895F7 +:101FF0002091DD013091DE012617370748F0611589 +:10200000710539F42091E8002E772093E80001C093 +:10201000B901FC0120E06115710591F18091D601B3 +:10202000882309F440C0853009F43FC08091E8005E +:1020300083FD3DC08091E80082FD2FC08091E800C3 +:1020400080FFE9CF2091F3008091F20090E0922B85 +:102050006115710559F08830910540F42491209361 +:10206000F1003196615071090196F2CF21E0089795 +:1020700009F020E08091E8008E778093E800CBCFD4 +:102080002111CCCF0AC08091D601882361F0853020 +:1020900061F08091E80083FD0AC08091E80082FF32 +:1020A000F2CF80E0089582E0089583E0089581E012 +:1020B0000895982F973058F59093E900981739F0C4 +:1020C0007091EC002091ED005091F00003C0242F9E +:1020D000762F50E021FF19C03091EB003E7F309306 +:1020E000EB003091ED003D7F3093ED003091EB003F +:1020F00031603093EB007093EC002093ED0050932F +:10210000F0002091EE0027FF07C09F5FD3CF8F70B4 +:102110008093E90081E0089580E008958091D701DF +:1021200087FF11C08091E80082FD05C08091D60133 +:102130008111F8CF11C08091E8008B770BC080919E +:10214000D601882349F08091E80080FFF8CF809184 +:10215000E8008E778093E80008952091E4003091A4 +:10216000E50095E64091EC00842F817040FF22C08D +:102170008091E80080FD1CC08091D601882391F0F9 +:10218000853091F08091EB0085FD10C04091E40016 +:102190005091E5004217530729F39A01915011F726 +:1021A00084E0089582E0089583E0089581E0089531 +:1021B00080E008954091E80042FFDECF08950E943C +:1021C0004D110E945511E0EEF0E080818160808326 +:1021D000E8EDF0E080818F77808319BCA7EDB0E057 +:1021E0008C918E7F8C9380818F7E80831092D5011D +:1021F00008950F931F93CF93DF930E944D110E9478 +:102200005511C8EDD0E088818F77888388818068F8 +:10221000888388818F7D888319BC1092D6011092A3 +:10222000D2011092D4011092D30100EE10E0F80117 +:1022300080818B7F808388818160888342E060E039 +:1022400080E00E945910E1EEF0E080818E7F808373 +:10225000E2EEF0E08081816080838081886080830D +:10226000F80180818E7F8083888180618883DF91FF +:10227000CF911F910F910895E8EDF0E080818F7E5E +:102280008083E7EDF0E080818160808384E082BF1D +:1022900081E08093D5010C94F910E8EDF0E08081A5 +:1022A0008E7F80831092E20008951092DA001092DF +:1022B000E10008951F920F920FB60F9211242F93F1 +:1022C0003F934F935F936F937F938F939F93AF93BE +:1022D000BF93EF93FF938091E10082FF0BC0809149 +:1022E000E20082FF07C08091E1008B7F8093E100D4 +:1022F0000E948F0D8091DA0080FF1FC08091D8006E +:1023000080FF1BC08091DA008E7F8093DA0080917D +:10231000D90080FF0DC080E189BD82E189BD09B48B +:1023200000FEFDCF81E08093D6010E94680D05C0BC +:1023300019BC1092D6010E947A0D8091E10080FFB5 +:1023400019C08091E20080FF15C08091E2008E7F6D +:102350008093E2008091E20080618093E2008091AE +:10236000D80080628093D80019BC85E08093D601A4 +:102370000E94850D8091E10084FF30C08091E200D1 +:1023800084FF2CC080E189BD82E189BD09B400FED3 +:10239000FDCF8091D8008F7D8093D8008091E1009F +:1023A0008F7E8093E1008091E2008F7E8093E20037 +:1023B0008091E20081608093E2008091D2018823C5 +:1023C00011F084E007C08091E30087FD02C081E046 +:1023D00001C083E08093D6010E94890D8091E100C5 +:1023E00083FF29C08091E20083FF25C08091E10036 +:1023F000877F8093E10082E08093D6011092D20122 +:102400008091E1008E7F8093E1008091E2008E7FD9 +:102410008093E2008091E20080618093E20042E0DC +:1024200060E080E00E9459108091F0008860809305 +:10243000F0000E94810DFF91EF91BF91AF919F91AC +:102440008F917F916F915F914F913F912F910F905D +:102450000FBE0F901F9018951F920F920FB60F92FC +:1024600011242F933F934F935F936F937F938F9399 +:102470009F93AF93BF93CF93DF93EF93FF93C0915D +:10248000E900CF708091EC00D82FD17080FDD0E8AA +:102490001092E9008091F000877F8093F00078949B +:1024A0000E9470121092E9008091F0008860809381 +:1024B000F000CD2BCF70C093E900FF91EF91DF9139 +:1024C000CF91BF91AF919F918F917F916F915F91CC +:1024D0004F913F912F910F900FBE0F901F90189525 +:1024E0001F93CF93DF93CDB7DEB7AA970FB6F894BB +:1024F000DEBF0FBECDBFE7EDF1E088E08E0F90911B +:10250000F10091938E13FBCF0E94E40D8091E800BF +:1025100083FF1FC18091D7019091D801492F50E0CE +:102520004A30510508F015C1FA01EA5AFF4F0C94E0 +:10253000AC2A803881F0823809F00BC18091DB0130 +:102540008F708093E9008091EB0085FB882780F9EC +:102550001092E90006C08091D3019091D4019111AD +:1025600082609091E800977F9093E8008093F1005B +:102570001092F100C8C0282F2D7F09F0EAC08823EF +:1025800019F0823061F0E5C08091D901813009F005 +:10259000E0C0933009F080E08093D4012BC080919B +:1025A000D901811127C08091DB018F7009F4D1C05E +:1025B0008093E9002091EB0020FF1CC0933021F4B0 +:1025C0008091EB00806214C09091EB009061909339 +:1025D000EB0021E030E0A90102C0440F551F8A95AD +:1025E000E2F74093EA001092EA008091EB008860E5 +:1025F0008093EB001092E9008091E800877F86C00D +:102600008111A7C01091D9011F778091E3008078D4 +:10261000812B8093E3008091E800877F8093E8001E +:102620000E948E108091E80080FFFCCF8091E30033 +:1026300080688093E300111102C082E001C083E052 +:102640008093D60186C08058823008F082C0809185 +:10265000D9019091DA018C3D53E0950779F583E03B +:102660008A838AE289834FB7F894DE01139620E0CB +:102670003EE051E2E32FF0E050935700E49120FF59 +:1026800003C0E295EF703F5FEF708E2F90E0EA306D +:1026900010F0C79601C0C0968D939D932F5F243193 +:1026A00049F74FBF8091E800877F8093E8006AE296 +:1026B00070E0CE0101960E94950F14C0AE014F5FED +:1026C0005F4F6091DB010E94DC0EBC01009709F4B2 +:1026D00040C09091E800977F9093E80089819A81AB +:1026E0000E94F80F8091E8008B778093E80031C05A +:1026F000803879F58091E800877F8093E8008091A9 +:10270000D2018093F1008091E8008E778093E800F9 +:102710000E948E101EC081111CC09091D901923070 +:10272000C0F48091E800877F8093E8009093D20105 +:102730000E948E108091D201811106C08091E30029 +:1027400087FD02C081E001C084E08093D6010E9431 +:10275000D00D8091E80083FF0AC08091E800877F58 +:102760008093E8008091EB0080628093EB00AA9652 +:102770000FB6F894DEBF0FBECDBFDF91CF911F9192 +:102780000895CF938091D6018823A1F0C091E900EC +:10279000CF709091EC00892F817090FD80E8C82B5C +:1027A0001092E9008091E80083FD0E947012CF70C2 +:1027B000C093E900CF91089590936A0180936901D5 +:1027C0000895E0916901F0916A01309721F001903C +:1027D000F081E02D099480E00895EF92FF920F932D +:1027E0001F93CF93DF93E0916901F0916A013097D5 +:1027F000B1F18C010280F381E02D09958091C10136 +:1028000082FF2DC080FF04C086EF93E00E94A406E3 +:10281000E80118E080EFE82E83E0F82E8091C101F6 +:1028200080FF0BC088811F928F93FF92EF920E94CE +:102830003D070F900F900F900F901150219611119E +:10284000EDCF8091C10180FF0AC08EEE93E0DF9151 +:10285000CF911F910F91FF90EF900C94A406DF9100 +:10286000CF911F910F91FF90EF900895E091690132 +:10287000F0916A01309721F00480F581E02D0994F0 +:10288000089520916701309168018217930771F0D4 +:102890009093680180936701E0916901F0916A016A +:1028A000309721F00680F781E02D0994089520915A +:1028B0006501309166018217930771F0909366016C +:1028C00080936501E0916901F0916A01309721F0F0 +:1028D0000084F185E02D0994089508950C946D14F9 +:1028E0000E94451F0E9446070C943F20CF93DF9320 +:1028F0001F92CDB7DEB79091C10192FF10C090FF3B +:102900000EC01F928F9328E034E03F932F9389836A +:102910000E943D070F900F900F900F9089810F90AC +:10292000DF91CF910C94450C9F92AF92BF92CF92C2 +:10293000DF92EF92FF920F931F93CF93DF9300D01C +:1029400000D000D0CDB7DEB70E94690707E010E0E5 +:10295000AA24A394B12C902E802F0E943C089801A9 +:1029600024593E4F6901F901F080F826A1F4015085 +:10297000110988F78FEF89838A831B820E944E1F7B +:102980008160782F9D838C8349815A816B818D81F1 +:102990000E942B152FC09091C10191FF04C08E831E +:1029A0000E9445088E8127E030E0A501022E01C07B +:1029B000440F0A94EAF7E42E4F21C1F029839A824A +:1029C0008E2191E009F490E09B830E944E1F81606C +:1029D000782F9D838C8349815A816B818D810E94E0 +:1029E0002B15F6018081E826E08204C021503109D0 +:1029F000E0F6BDCF0E94A92310916B010E94E11364 +:102A00001817B9F00E94E11380936B0126960FB658 +:102A1000F894DEBF0FBECDBFDF91CF911F910F9114 +:102A2000FF90EF90DF90CF90BF90AF909F900C946D +:102A3000761426960FB6F894DEBF0FBECDBFDF9199 +:102A4000CF911F910F91FF90EF90DF90CF90BF90AB +:102A5000AF909F900895CF93DF93CDB7DEB72B97BC +:102A60000FB6F894DEBF0FBECDBF4F83588769877E +:102A70007A878B87DE01119686E0FD0111928A9597 +:102A8000E9F785E0FE01379601900D928A95E1F70E +:102A900049815A816B817C818D819E810E942C1B92 +:102AA0002B960FB6F894DEBF0FBECDBFDF91CF914E +:102AB0000895CF93882309F499C0C82F8CEF8C0F09 +:102AC000813A48F48C2F0E94152881118FC08C2FD9 +:102AD0000E94061E0CC080E28C0F883058F4C7702C +:102AE00081E001C0880FCA95EAF70E94421ECF918B +:102AF0000C94891E8BE58C0F833078F4C53A29F04D +:102B0000C63A31F083E890E005C081E890E002C069 +:102B100082E890E0CF910C94411488E58C0F8331CA +:102B200008F064C0C83A39F1C93A41F1CA3A49F1EA +:102B3000CB3A51F1CC3A59F1CD3A61F1C03B69F150 +:102B4000CE3A71F1CF3A79F1C13B81F1C23B89F1C3 +:102B5000C33B91F1C43B99F1C53BA1F1C63BA9F13F +:102B6000C73BB1F1C83BB9F1C93BC1F1CA3BC9F19F +:102B700080E090E038C082EE90E035C089EE90E0D1 +:102B800032C08AEE90E02FC085EB90E02CC086EB3F +:102B900090E029C087EB90E026C08CEC90E023C049 +:102BA0008DEC90E020C083E891E01DC08AE891E0C0 +:102BB0001AC082E991E017C084E991E014C081E273 +:102BC00092E011C083E292E00EC084E292E00BC07A +:102BD00085E292E008C086E292E005C087E292E0DA +:102BE00002C08AE292E0CF910C945714CF910895DD +:102BF000882329F19CEF980F913A18F40E94231E24 +:102C00000DC090E2980F983058F4877091E001C0A1 +:102C1000990F8A95EAF7892F0E94481E0C94891E05 +:102C20009BE5980F933020F480E090E00C944114E1 +:102C3000885A833120F480E090E00C945714089572 +:102C4000882321F00E94421E0C94891E0895882337 +:102C500021F00E94481E0C94891E08957F928F9245 +:102C60009F92AF92BF92CF92DF92EF92FF920F931B +:102C70001F93CF93DF931F92CDB7DEB77C01C62E93 +:102C8000772EFC01058102950F70128111110E94AF +:102C90005F1E0E94FF1D882379F0112369F080E2F6 +:102CA0008C0D883048F082E00E94E81D0E94FF1DD4 +:102CB00091E0D82ED92601C0D12CE72DE295EF70F6 +:102CC000F0E0E05AFF4F0C94AC2A872D807F072D4F +:102CD0000F70882311F00295007F112389F00023E3 +:102CE00009F498C180E28C0D883020F4802F0E9476 +:102CF000421E03C0802F0E94521E0E94891E8AC15C +:102D00008C2D0E94F815002309F49DC180E28C0DE2 +:102D1000883020F4802F0E94481E03C0802F0E941C +:102D2000581E0E94891E8FC1872D807F972D9F700E +:102D3000803211F4892F03C0892F8295807FCC20A7 +:102D400021F0F1E0CF16A1F01DC0112339F00023CE +:102D500019F1013009F50E94721E75C1002319F0A6 +:102D6000013009F470C189830E94751E898110C1E8 +:102D7000112321F0063008F066C10EC0053008F0BE +:102D800062C106C1112359F0002331F0F70195818A +:102D900090FF40C19F7095830E94201654C100236C +:102DA00009F4F6C03DC1872D86958695837090E025 +:102DB000009719F0019761F046C1112321F08C2D85 +:102DC000972D937002C080E090E00E9441143BC1B7 +:102DD000112321F08C2D972D937002C080E090E09C +:102DE0000E94571430C18C2D112319F00E942F22FC +:102DF00002C00E9497220E941C2325C1872D837048 +:102E000009F052C011111FC18C2D829586958770D3 +:102E1000880F880F9C2D9F70892E912CA12CB12C8E +:102E2000082E04C0880C991CAA1CBB1C0A94D2F75B +:102E3000C4FE14C00FE010E020E030E0B901A801AA +:102E400004C0440F551F661F771F8A95D2F7CB0128 +:102E5000BA01609570958095909503C060E070E030 +:102E6000CB01272D26952695237030E022303105A1 +:102E700069F02330310589F0682979298A299B294D +:102E80002130310571F00E94741CDDC06829792958 +:102E90008A299B290E94901CD6C00E94741CC501DF +:102EA000B4010E94581CCFC0112319F0872D8170E6 +:102EB00001C08695882309F4C6C08C2D829586951D +:102EC0008770880F880F9C2D9F70892E912CA12CC4 +:102ED000B12C082E04C0880C991CAA1CBB1C0A9497 +:102EE000D2F7C4FE14C00FE010E020E030E0B901DA +:102EF000A80104C0440F551F661F771F8A95D2F79B +:102F0000CB01BA01609570958095909503C060E003 +:102F100070E0CB01272D269526952370422F50E097 +:102F20004230510569F04330510589F0682979290B +:102F30008A299B294130510571F00E944E1D83C0A2 +:102F4000682979298A299B290E946A1D7CC00E94D0 +:102F50004E1DC501B4010E94321D75C08C2D90E03C +:102F6000FC01E05EF109E531F10508F04FC0E059E0 +:102F7000FF4F0C94AC2A0C2D0F70872D8F711123ED +:102F800021F00E94CB1C802F07CF0E94EC1C802FC9 +:102F90000E94271658C0112341F0053008F053C095 +:102FA000872D8F710E94111D4EC0063008F04BC056 +:102FB000F7CF112339F0872D8F710E94CB1C43C0AE +:102FC0001123C9F3872D8F710E94EC1C3CC0112383 +:102FD00029F0872D8F710E94B61C35C00E94AC1C51 +:102FE00032C0112351F0172D1F71812F0E94CB1C6D +:102FF00063E0812F0E94DF1D26C081E00E94E81D52 +:10300000023008F182E00E94E81D1DC0112331F05A +:10301000002389F28C2D0E94591515C0002391F2CE +:103020008C2D0E94F8150FC0472D4F706C2DC701D5 +:103030000E948B080E94D01B06C0472D4F706C2D3C +:10304000C7010E944A09DD20F9F00E94DB1D80FDC6 +:103050001BC0F70112820E94D51D0E94CB1CC70124 +:103060000E9453180E94D51D0F90DF91CF911F91A0 +:103070000F91FF90EF90DF90CF90BF90AF909F9017 +:103080008F907F900C94EC1C0F90DF91CF911F914B +:103090000F91FF90EF90DF90CF90BF90AF909F90F7 +:1030A0008F907F9008950F931F93CF93DF93EC0140 +:1030B000888199812B813C81232BB9F09F3F11F4AA +:1030C0008F3F99F0CE010E94A208882371F0688199 +:1030D00079818A810E94D11D8C010E94861D0E94E7 +:1030E0004D1CB801CE010E942E16DF91CF911F9189 +:1030F0000F9108950E945F1E0E946F1E0E94341E51 +:103100000E94891E0E944F240E941C2380E090E0B0 +:103110000E94411480E090E00C9457140E944F1ECE +:103120000C947A180E94C61D292F22952F7030E02A +:103130002C3031054CF42A3031056CF42250310921 +:1031400022303105A8F407C02C30310569F02F304A +:10315000310551F00DC0803F69F018F4803E40F415 +:1031600009C0843F29F406C093FB882780F908959D +:1031700080E0089581E00895CF93DF9300D000D0E0 +:103180001F92CDB7DEB70F900F900F900F900F905A +:10319000DF91CF910895CF93DF9300D000D000D07E +:1031A000CDB7DEB726960FB6F894DEBF0FBECDBF03 +:1031B000DF91CF9108951F93CF93DF93C091740156 +:1031C00016E080917501C81799F0D0E01C9FF001BE +:1031D0001D9FF00D1124EA58FE4F408151816281FC +:1031E0007381848195810E94CB182196C770E9CFA5 +:1031F000DF91CF911F9108954091A6015091A701B1 +:103200006091A8017091A9018091AA019091AB01F0 +:103210000C94CB188091AB0182958F7009F054C04B +:103220008091A801882309F44FC080917401A09176 +:1032300075016091A6017091A7014091A90150917B +:10324000AA01B6E08A1709F43FC090E04115510584 +:10325000C1F17F3F11F46F3FA1F1B89FF001B99F19 +:10326000F00D1124EA58FE4F218172132AC02081EB +:10327000621327C02281211124C0238134812417A5 +:10328000350710F421503109241B350B283C31053A +:10329000C0F42091AB012F7020612093AB0126E098 +:1032A000289FF001299FF00D1124E558FE4F8081E1 +:1032B0008F708061808386EA91E00E9453180C949D +:1032C000DB1801968770BECF0895CF92DF92EF9200 +:1032D000FF920F931F93CF93DF93CDB7DEB7629723 +:1032E0000FB6F894DEBF0FBECDBF8C0185E0F801AC +:1032F000DE011D9601900D928A95E1F7D8014C915F +:1033000011965C91119712966C9112971396CD902D +:10331000DC9014973091A6017091A7018091A901CA +:103320009091AA01009709F46BC17F3F19F43F3FC8 +:1033300009F466C1E090A801EE2009F4C0C0209114 +:10334000AB01C816D90628F0F601E81BF90BCF012E +:1033500004C0809590958C0D9D1DFF24F394883CAE +:10336000910578F0F12C207F09F0C6C07C2DD98A18 +:10337000C88A89890E94BC1886EA91E00E94531885 +:10338000B1C0822F807F09F046C0751314C034137A +:1033900012C0611110C02F7020612093AB010E94F8 +:1033A000FC1886EA91E00E9453188091AB01D80185 +:1033B00015968C932EC0CD2819F15F3F11F44F3F25 +:1033C000F9F0F62E61111CC08091740120917501F5 +:1033D00036E0821709F45AC090E0389FF001399F17 +:1033E000F00D1124EA58FE4F7181571306C0708109 +:1033F000471303C07281711103C001968770E9CF32 +:10340000F62E662309F418C18091AB018160809388 +:10341000AB01F12C11C1751308C0341306C0611142 +:1034200004C08091AB01D801C3C04D875E878D85F4 +:103430009E856A8B0E9492186A898823E1F166232F +:10344000D1F12091AB01822F82958F7090E002978D +:1034500074F08091A6019091A70198878F831986B7 +:10346000DB86CA862C87CE0107960E94531886E019 +:10347000F801A6EAB1E001900D928A95E1F70E9469 +:103480000A190E94FC18FF24F394D6C04D875E876A +:103490008D859E850E94C61D292F22952F7030E0B4 +:1034A000223031050CF0BCC09F7009F0B6C0805EC0 +:1034B000883008F4C1C0C8010E945318E4CFC81670 +:1034C000D90608F453C0F601E81BF90BCF01883C7C +:1034D000910508F450C0F12C7C2DD98AC88A8989BD +:1034E0000E94BC18E6EAF1E086E0DF011D928A95B1 +:1034F000E9F70E94FC18A0C0751314C0341312C061 +:10350000611110C08091AB01F8018583C8010E9450 +:10351000531886E0E6EAF1E0DF011D928A95E9F7AB +:10352000FE2C8AC04D875E878D859E856A8B0E94A2 +:1035300092186A89882309F4BECF662309F4BBCFA9 +:103540002091AB01822F82958F7090E002970CF44E +:103550008ECF8091A6019091A7019A8389831B82C7 +:10356000DD82CC822E83CE0101967FCF809590950F +:103570008C0D9D1DACCFF62E662309F49CCF7513E0 +:103580002EC034132CC02091AB0120FD1FC0822F10 +:1035900082958F70D9F0D80115962C9315978F309E +:1035A00049F08F5F982F9295907F822F8F70892B93 +:1035B00015968C93C8010E94531886E0F801A6EA7C +:1035C000B1E001900D928A95E1F793CF86E0F80182 +:1035D000A6EAB1E001900D928A95E1F72DC04D87E2 +:1035E0005E878D859E850E949218811140CF8091C3 +:1035F000AB0181608093AB01C8010E9453181CC0CD +:10360000662309F458CF4D875E878D859E850E947D +:103610009218882309F44FCF2ACF811148CF0CC0CC +:10362000243031050CF047CF9F7009F440CFF801EA +:103630009581907F09F03BCF8F2D62960FB6F8945D +:10364000DEBF0FBECDBFDF91CF911F910F91FF90D5 +:10365000EF90DF90CF9008951F93CF93DF93CDB776 +:10366000DEB72C970FB6F894DEBF0FBECDBF4F83E9 +:10367000588769877A878B879C87CE0107960E9437 +:103680006519882369F08F8198852A853B85232BCE +:10369000F1F19F3F09F063C08F3F09F060C037C070 +:1036A00086E0FE013796DE01119601900D928A9513 +:1036B000E1F76F817885EA85FB85309741F17F3F9F +:1036C00011F46F3F21F12091750130E0C90101969D +:1036D000877099274091740150E08417950709F489 +:1036E00047C069837A83FD83EC8396E0929FD00183 +:1036F000939FB00D1124AA58BE4FFE013196019040 +:103700000D929A95E1F7809375010E94DB1816E0FF +:1037100080917401909175018917C1F1189FC001C2 +:1037200011248A589E4F0E946519882379F1E091EF +:1037300074011E9FF0011124EA58FE4F408151810F +:1037400062817381848195810E94CB18809174017C +:1037500090E001968770992780937401D9CF4F81AB +:10376000588569857A858B859C850E94CB18CFCF3B +:103770000E948E181092750110927401E6EAF1E031 +:1037800086E0DF011D928A95E9F7C1CF2C960FB62E +:10379000F894DEBF0FBECDBFDF91CF911F9108958A +:1037A000EF92FF920F931F93CF93DF938C010097BB +:1037B00009F46CC0F12CEE24E394E8012196F801A1 +:1037C0008491843740F4843008F051C0813081F016 +:1037D000823019F15BC0853709F444C0A8F19CE739 +:1037E000980F903708F052C08F770E94F81541C0AB +:1037F0000E5F1F4FFE01C49180E28C0F883048F4A9 +:10380000C7708E2D01C0880FCA95EAF70E94621E0C +:1038100014C08C2F0E9459152DC00E5F1F4FFE0142 +:10382000C49180E28C0F883058F4C7708E2D01C08F +:10383000880FCA95EAF70E94681E0E94891E1AC066 +:103840008C2F0E94F81516C00E5F1F4FFE01C49109 +:10385000CC2381F08FE99FE00197F1F700C00000D1 +:10386000C150F6CF0E5F1F4FFE01F49003C00E94BF +:1038700059158E018F2D882309F49FCFEFE9FFE0C2 +:103880003197F1F700C000008150F5CFDF91CF9163 +:103890001F910F91FF90EF90089508956093B001EC +:1038A0007093B1018093B2019093B3010C947A1894 +:1038B0000F931F930091B0011091B1012091B201BB +:1038C0003091B301DC01CB01802B912BA22BB32BC8 +:1038D0008093B0019093B101A093B201B093B30172 +:1038E0001F910F910C947A180F931F930091B001C0 +:1038F0001091B1012091B2013091B301DC01CB01F3 +:1039000080239123A223B3238093B0019093B1012C +:10391000A093B201B093B3011F910F910C947A1848 +:103920000F931F930091B0011091B1012091B2014A +:103930003091B301DC01CB0180279127A227B32767 +:103940008093B0019093B101A093B201B093B30101 +:103950001F910F910C947A181092AC011092AD0146 +:103960001092AE011092AF010C947A1841E050E031 +:1039700060E070E004C0440F551F661F771F8A95F2 +:10398000D2F74093AC015093AD016093AE017093B8 +:10399000AF010C947A1841E050E060E070E004C0A0 +:1039A000440F551F661F771F8A95D2F78091AC018F +:1039B0009091AD01A091AE01B091AF01482B592B70 +:1039C0006A2B7B2B4093AC015093AD016093AE0109 +:1039D0007093AF010C947A1841E050E060E070E021 +:1039E00004C0440F551F661F771F8A95D2F7409574 +:1039F0005095609570958091AC019091AD01A0912A +:103A0000AE01B091AF01482359236A237B23409331 +:103A1000AC015093AD016093AE017093AF010C9473 +:103A20007A1841E050E060E070E004C0440F551F98 +:103A3000661F771F8A95D2F78091AC019091AD01F6 +:103A4000A091AE01B091AF01482759276A277B2783 +:103A50004093AC015093AD016093AE017093AF0100 +:103A60000C947A180F931F930091AC011091AD0143 +:103A70002091AE013091AF01DC01CB01802B912B65 +:103A8000A22BB32B8093AC019093AD01A093AE0118 +:103A9000B093AF011F910F910C947A180F931F935D +:103AA0000091AC011091AD012091AE013091AF01B8 +:103AB000DC01CB0180239123A223B3238093AC01AB +:103AC0009093AD01A093AE01B093AF011F910F9100 +:103AD0000C947A180F931F930091AC011091AD01D3 +:103AE0002091AE013091AF01DC01CB0180279127FD +:103AF000A227B3278093AC019093AD01A093AE01B0 +:103B0000B093AF011F910F910C947A180895CF9242 +:103B1000DF92EF92FF920F931F93CF93DF938C016D +:103B2000C090B001D090B101E090B201F090B3012B +:103B30008091AC019091AD01A091AE01B091AF0127 +:103B4000C82AD92AEA2AFB2ACFE1D0E0D701C60148 +:103B50000C2E04C0B695A795979587950A94D2F731 +:103B600080FF06C0B8018C2F0E94A70B019721F49B +:103B7000219760F780E001C08C2FDF91CF911F91DA +:103B80000F91FF90EF90DF90CF900895CF93DF9348 +:103B9000EC010E94871DBE010E94A70BDF91CF910F +:103BA0000895CB010E94C61D08958091B4018595AA +:103BB0008595859508958091B4018770089598E062 +:103BC000899F90011124262B2093B4010C94CB1CC7 +:103BD0002091B401809582238093B401982F97702F +:103BE00069F430E0482F552747FD509524173507D5 +:103BF00029F08595859585950C94EC1C08959091F8 +:103C0000B401977081E009F480E0089520910B01E0 +:103C100030910C01F90132969FEF40E05191581715 +:103C200089F09F3F19F4511101C0942F4F5F463026 +:103C3000A9F79F3F39F0F901E90FF11D97FDFA95BA +:103C400082830895089520910B0130910C01F901B0 +:103C50003296285F3F4F9081981301C010823196B1 +:103C6000E217F307C1F7089581E090E0E0910B01BE +:103C7000F0910C01E80FF91F108201968830910530 +:103C8000A9F708959091C001892B8093C0010895F0 +:103C900080959091C00189238093C001089510926E +:103CA000C00108959091BF01892B8093BF010895B1 +:103CB00080959091BF0189238093BF010895109250 +:103CC000BF0108959091BE01892B8093BE01089594 +:103CD00080959091BE0189238093BE010895109232 +:103CE000BE0108958093B50108951092B50108951D +:103CF00080910B0190910C01FC0131969C01285F91 +:103D00003F4F80E0919191118F5FE217F307D1F758 +:103D10000895E0910B01F0910C018091C001808326 +:103D2000E0910B01F0910C0190818091BF01892BF2 +:103D30008083E0910B01F0910C0190818091BE0194 +:103D4000892B80838091B501882361F0E0910B017C +:103D5000F0910C019081892B80830E94781E811143 +:103D60001092B50180910B0190910C010C94ED1310 +:103D70009093330180933201089520E0009739F049 +:103D8000AC0141505109842395232F5FF7CF822F37 +:103D900008958295982F9C7C392F36953695282F3B +:103DA000237344E0249FC0011124932F982B292FC3 +:103DB0002A7A2695892F8575880F822B0895809100 +:103DC000D601843021F11092C20120E488E190E014 +:103DD0000FB6F894A895809360000FBE2093600002 +:103DE00080E00E94450C83B7817F846083BF83B7E6 +:103DF000816083BF7894889583B78E7F83BF88E185 +:103E00000FB6F89480936000109260000FBE089582 +:103E10000E9489080E9469070E948A080E9471080E +:103E200091E0811101C090E0892F08950E948E18C1 +:103E30000E94E1130C94450C1F920F920FB60F9243 +:103E400011248F939F93AF93BF938091C2018111EF +:103E500013C08091C3019091C401A091C501B0919C +:103E6000C6014196A11DB11D8093C3019093C40169 +:103E7000A093C501B093C601BF91AF919F918F915F +:103E80000F900FBE0F901F90189582E084BD93E0B5 +:103E900095BD9AEF97BD80936E0008952FB7F89463 +:103EA0008091C3019091C401A091C501B091C60158 +:103EB0002FBF08952FB7F8946091C3017091C4018A +:103EC0008091C5019091C6012FBF0895CF92DF92D6 +:103ED000EF92FF920F931F932FB7F8944091C30175 +:103EE0005091C4016091C5017091C6012FBF6A0154 +:103EF0007B01EE24FF248C0120E030E0C016D106C7 +:103F0000E206F30610F4415051099A01281B390BBF +:103F1000C9011F910F91FF90EF90DF90CF9008950E +:103F2000CF92DF92EF92FF920F931F932FB7F894E7 +:103F3000C090C301D090C401E090C501F090C601CB +:103F40002FBF97018601061B170B280B390BC616CE +:103F5000D706E806F90618F0C901B80106C0C9017C +:103F6000B80161507109810991091F910F91FF906A +:103F7000EF90DF90CF9008951F920F920FB60F929F +:103F800011248F939F93AF93BF938091C30190911E +:103F9000C401A091C501B091C6010196A11DB11D3A +:103FA0008093C3019093C401A093C501B093C6014F +:103FB000BF91AF919F918F910F900FBE0F901F9067 +:103FC00018950E94DF10F8942FEF87EA91E62150B0 +:103FD00080409040E1F700C0000087E090EBDC01FA +:103FE0008093E0019093E101A093E201B093E3019B +:103FF0009CE088E10FB6F894A895809360000FBE0E +:1040000090936000FFCFEF92FF920F931F93CF9397 +:10401000DF93D82FC7E08C2F0E943C0807E010E008 +:10402000E82EF12CC701002E02C0959587950A94C1 +:10403000E2F780FF09C0602F7C2F80E00E944B09CF +:10404000D81302C081E006C00150110958F7C150D1 +:1040500010F780E0DF91CF911F910F91FF90EF90CB +:104060000895CF93C82F8CE20E940320882321F06B +:104070008C2FCF910C94032080E0CF910895CF93A3 +:104080000E948721811102C00E946D2188E294E084 +:104090000E94A406C5E6C15049F00E9469078FE35B +:1040A0009CE90197F1F700C00000F5CF81E294E0B0 +:1040B0000E94A40689E20E94312081110CC18AE28B +:1040C0000E94312081110E946D2185E00E943120E3 +:1040D00081110E94E11F0E9492218093C10187E01B +:1040E0000E9431208823A9F18BE10E94312088238E +:1040F00051F08091C10181FB222720F991E09227A4 +:1041000090FB81F90EC08EE00E943120882361F07F +:104110008091C10182FB222720F991E0922790FB38 +:1041200082F98093C10115C080E10E9431209091F5 +:10413000C101882341F093FB222720F981E08227E7 +:1041400080FB93F904C0892F809580FB90F99093B0 +:10415000C1018091C1010E9496210E94A4218093F7 +:10416000DF0180EE0E943120882341F08091DF0141 +:10417000982F909590FB80F98093DF0189E30E944E +:104180003120882359F08091DF0181FB222720F91B +:1041900091E0922790FB81F98093DF0182EE0E94EB +:1041A0003120882359F08091DF0182FB222720F9FA +:1041B00091E0922790FB82F98093DF0186EE0E94C6 +:1041C0003120882359F08091DF0183FB222720F9D9 +:1041D00091E0922790FB83F98093DF0183EE0E94A8 +:1041E0003120882359F08091DF0184FB222720F9B8 +:1041F00091E0922790FB84F98093DF0185E30E9490 +:104200003120882359F08091DF0185FB222720F996 +:1042100091E0922790FB85F98093DF0181E30E9472 +:104220003120882359F08091DF0186FB222720F975 +:1042300091E0922790FB86F98093DF0181E10E9453 +:104240003120882359F08091DF0187FB222720F954 +:1042500091E0922790FB87F98093DF018091DF0145 +:104260000E94A82187E20E943120C82F8EE10E947F +:1042700031208111C2608FE10E9431208111C46020 +:1042800080E20E9431208111C86081E20E943120C9 +:104290008111C06182E20E9431208111C06283E2FB +:1042A0000E9431208111C06484E20E943120882361 +:1042B00011F0C06802C0CC2329F08C2F0E949F21EE +:1042C0006C2F03C00E949B21682F70E080E090E07B +:1042D000CF910C944E1CCF9108956DEE7EEF80E04F +:1042E00090E00E94E62A60E082E090E00E94D42AFA +:1042F00060E083E090E00E94D42A60E084E090E0F7 +:104300000E94D42A60E085E090E00C94D42A80E0FA +:1043100090E00E94CE2A21E08D3E9E4F09F020E0E1 +:10432000822F089582E090E00C94C62A682F82E0E4 +:1043300090E00C94D42A83E090E00C94C62A682F75 +:1043400083E090E00C94D42A84E090E00C94C62A98 +:10435000682F84E090E00C94D42A8091C90180FFFA +:104360000BC06091100185E0689FB0011124759524 +:104370006795759567952BC081FF09C06091100105 +:1043800085E0689FB00111247595679520C082FF74 +:1043900007C06091100185E0689FB001112417C02B +:1043A0009091CA019923D1F060910F01961788F777 +:1043B0002091100185E0289F90011124929FA00177 +:1043C000939F500D112470E0CA010E94982A603812 +:1043D000710540F46115710539F002C065E070E0C7 +:1043E000862F08958FE7089581E008958091C9018F +:1043F00080FF08C060910E0170E075956795759516 +:10440000679521C081FF06C060910E0170E075952F +:10441000679519C082FF04C060910E0170E010C062 +:104420009091CA019923C1F060910D019617A0F7F0 +:1044300080910E01899FC001112470E00E94982A8A +:104440006038710528F46115710521F0862F0895F3 +:104450008FE7089581E0089561E070E0F4CF803F38 +:1044600021F40E94AD21819504C0813F29F40E946E +:10447000AD218093CD010895823F21F40E94AD21AA +:10448000819504C0833F29F40E94AD218093CC0123 +:104490000895893F19F40E94F62105C08A3F31F43E +:1044A0000E94F62181958093CE0108958B3F21F4DF +:1044B0000E94F621819504C08C3F29F40E94F621C8 +:1044C0008093CF010895843F21F48091CB018160D6 +:1044D00017C0853F21F48091CB01826011C0863FD7 +:1044E00021F48091CB0184600BC0873F21F480913F +:1044F000CB01886005C0883F31F48091CB01806199 +:104500008093CB0108958D3F21F48091C901816092 +:104510000BC08E3F21F48091C901826005C08F3F9E +:1045200029F48091C90184608093C9010895803F76 +:1045300039F48091CD0187FF6CC01092CD0169C024 +:10454000813F29F48091CD011816BCF362C090918F +:10455000CC01823F29F497FF5CC01092CC0159C076 +:10456000833F19F41916CCF354C0893F41F480916C +:10457000CE0118160CF04DC01092CE014AC08A3FF1 +:1045800029F48091CE0187FF44C0F6CF8B3F39F4E8 +:104590008091CF0187FF3DC01092CF013AC08C3F80 +:1045A00029F48091CF011816BCF333C0843F21F465 +:1045B0008091CB018E7F17C0853F21F48091CB0184 +:1045C0008D7F11C0863F21F48091CB018B7F0BC082 +:1045D000873F21F48091CB01877F05C0883F31F46C +:1045E0008091CB018F7E8093CB0113C08D3F21F44E +:1045F0008091C9018E7F0BC08E3F21F48091C9014B +:104600008D7F05C08F3F29F48091C9018B7F8093F6 +:10461000C9018091CC0181110EC08091CD01811121 +:104620000AC08091CE01811106C08091CF01811115 +:1046300002C01092CA0108958091C10183FF7EC01B +:1046400084E694E00E94A4068091CB011F928F9390 +:104650008FE594E09F938F930E943D078DE594E052 +:104660000E94A4068091CC01282F332727FD309586 +:104670003F938F938AE594E09F938F930E943D0729 +:1046800088E594E00E94A4068091CD01282F33276D +:1046900027FD30953F938F9385E594E09F938F930B +:1046A0000E943D0783E594E00E94A4068091CE011C +:1046B000282F332727FD30953F938F9380E594E093 +:1046C0009F938F930E943D078EE494E00E94A4067E +:1046D0008091CF01282F332727FD30953F938F936B +:1046E0008BE494E09F938F930E943D0788E494E0CD +:1046F0000E94A4068091CA011F928F9385E494E0E2 +:104700009F938F930E943D0783E494E00E94A40648 +:104710008091C9011F928F9380E494E09F938F93BF +:104720000E943D078DE394E00E94A4068DB79EB7DA +:104730004C960FB6F8949EBF0FBE8DBF8BEC91E0E8 +:104740000E9436140E944E1F9093C8018093C701A7 +:1047500008951F93CF93DF938091C7019091C80173 +:104760000E94661FAC019091CA01992321F020910B +:10477000110130E006C0209112018AE0289F9001CB +:1047800011244217530708F486C08091CC01C091D0 +:10479000CD01D091CE011091CF01811107C0C1117F +:1047A00076C0D11174C0111172C075C09F3F19F04D +:1047B0009F5F9093CA01181624F40E94AD21809344 +:1047C000CC018091CC0187FF05C00E94AD2181956D +:1047D0008093CC011C1624F40E94AD218093CD015E +:1047E0008091CD0187FF05C00E94AD218195809306 +:1047F000CD016091CC01662339F1C091CD01CC236C +:1048000019F1772767FD7095872F972F0E949D29B3 +:1048100023E333E343E35FE30E94012A0E946A2912 +:104820006093CC016C2F772767FD7095872F972FAA +:104830000E949D2923E333E343E35FE30E94012ABF +:104840000E946A296093CD011D1624F40E94F6216E +:104850008093CE018091CE0187FF05C00E94F62192 +:1048600081958093CE01111624F40E94F621809345 +:10487000CF018091CF0187FF05C00E94F62181956D +:104880008093CF01DF91CF911F910C941C239F3F08 +:1048900009F08ECF96CFDF91CF911F910895EBEC69 +:1048A000F1E085E0DF011D928A95E9F71092CA01D7 +:1048B0001092C901089587E896E00E94A4061F920D +:1048C00081E08F931F9285E08F9389E396E09F9319 +:1048D0008F930E943D070F900F900F900F900F90B5 +:1048E0000F9008958330E9F128F4813061F082302F +:1048F00009F10895853009F462C008F449C0863092 +:1049000009F474C0089580911201262F30E0280F19 +:10491000311D2F3F310524F4680F6093120103C04D +:104920008FEF80931201809112011F928F9382E783 +:1049300095E072C080911101262F30E0280F311DC3 +:104940002F3F310524F4680F6093110103C08FEFEE +:1049500080931101809111011F928F9380E695E061 +:104960005BC080911001262F30E0280F311D2F3FB2 +:10497000310524F4680F6093100103C08FEF80931A +:104980001001809110011F928F938DE495E044C037 +:1049900080910F01262F30E0280F311D2F3F310568 +:1049A00024F4680F60930F0103C08FEF80930F0111 +:1049B00080910F011F928F9388E395E02DC0809125 +:1049C0000E01262F30E0280F311D2F3F310524F432 +:1049D000680F60930E0103C08FEF80930E018091EA +:1049E0000E011F928F938FE195E016C080910D010B +:1049F000262F30E0280F311D2F3F310524F4680F9A +:104A000060930D0103C08FEF80930D0180910D0124 +:104A10001F928F9384E095E09F938F930E943D07B0 +:104A20000F900F900F900F900895833081F128F42C +:104A3000813059F08230D1F00895853009F449C0B1 +:104A4000B8F1863009F456C00895809112016817B4 +:104A500020F4861B8093120102C0109212018091F3 +:104A600012011F928F9385EF94E054C08091110141 +:104A7000681720F4861B8093110102C01092110167 +:104A8000809111011F928F9383EE94E043C0809137 +:104A90001001681720F4861B8093100102C0109249 +:104AA0001001809110011F928F9380ED94E032C02D +:104AB00080910F01681720F4861B80930F0102C0BC +:104AC00010920F0180910F011F928F938BEB94E056 +:104AD00021C080910E01681720F4861B80930E017F +:104AE00002C010920E0180910E011F928F9382EAF4 +:104AF00094E010C080910D01681720F4861B80930C +:104B00000D0102C010920D0180910D011F928F9333 +:104B100087E894E09F938F930E943D070F900F903A +:104B20000F900F900895CF93C82F1F928F938CE80A +:104B300097E09F938F930E943D0781E090E0A0E073 +:104B4000B0E0BC01CD0104C0660F771F881F991F1C +:104B5000CA95D2F70E944E1C0F900F900F900F90A5 +:104B6000CF910C948E18CF938732B0F58E3108F028 +:104B70004AC28E3009F4C4C100F5873009F48DC1F2 +:104B8000A8F4863009F045C28091C101817F8E7FF3 +:104B90008093C1018BEF98E00E94A40684E99CE019 +:104BA0000E94A40681E08093D10175C1883009F488 +:104BB0003FC08B3009F46BC12CC2863109F4E6C1C9 +:104BC00020F4803109F4B0C124C2893109F4C7C18D +:104BD0008B3109F481C11DC2883309F458C150F4E6 +:104BE000893209F412C2853309F40FC2873209F4FD +:104BF0000CC20FC2833409F408C228F48A3308F4C3 +:104C000008C2895303C2883409F003C20E948E1877 +:104C100088E79CE00E94A4069FEF23ED80E391507B +:104C200020408040E1F700C000000E94E11F33C136 +:104C300088E99CE00E94A4068AEF9BE00E94A406FB +:104C40000E949B211F928F9387EF9BE09F938F93EE +:104C50000E943D0785EF9BE00E94A4060E949221DE +:104C6000C82F82EE9BE00E94A4061F92CF938DED89 +:104C70009BE09F938F930E943D078BED9BE00E94EA +:104C8000A40681ED9BE00E94A4068C2F81701F92E8 +:104C90008F938EEC9BE09F938F930E943D078CEC4B +:104CA0009BE00E94A40682EC9BE00E94A406C1FB4C +:104CB000882780F91F928F938FEB9BE09F938F93B0 +:104CC0000E943D078DEB9BE00E94A40681EB9BE0D8 +:104CD0000E94A406C2FB882780F91F928F938EEA58 +:104CE0009BE09F938F930E943D078CEA9BE00E947C +:104CF000A40683EA9BE00E94A406C3FBCC27C0F96C +:104D00001F92CF9380EA9BE09F938F930E943D0771 +:104D10008EE99BE00E94A4060E94A421C82F8AE885 +:104D20009BE00E94A4061F92CF9385E89BE09F938F +:104D30008F930E943D0783E89BE00E94A4068AE6C9 +:104D40009BE00E94A4068C2F81701F928F9387E6B0 +:104D50009BE09F938F930E943D078DB79EB78096EF +:104D60000FB6F8949EBF0FBE8DBF85E69BE00E94F4 +:104D7000A4068EE49BE00E94A406C1FB882780F96C +:104D80001F928F938BE49BE09F938F930E943D072C +:104D900089E49BE00E94A40687E39BE00E94A406AE +:104DA000C2FB882780F91F928F9384E39BE09F9337 +:104DB0008F930E943D0782E39BE00E94A40680E25D +:104DC0009BE00E94A406C3FB882780F91F928F9363 +:104DD0008DE19BE09F938F930E943D078BE19BE0C9 +:104DE0000E94A40681E19BE00E94A406C4FB8827E0 +:104DF00080F91F928F938EE09BE09F938F930E9488 +:104E00003D078CE09BE00E94A4068AEF9AE00E9496 +:104E1000A406C5FB882780F91F928F9387EF9AE03D +:104E20009F938F930E943D0785EF9AE00E94A4060E +:104E300089ED9AE00E94A406C6FB882780F91F929C +:104E40008F9386ED9AE09F938F930E943D0784EDA8 +:104E50009AE00E94A4068CEC9AE00E94A406C7FB8C +:104E6000CC27C0F91F92CF9389EC9AE09F938F9340 +:104E70000E943D0787EC9AE00E94A4068DB79EB77A +:104E80004C960FB6F8949EBF0FBE8DBF04C082E251 +:104E900099E00E94A406C1E0C1C08091C101C82F61 +:104EA000C095C170C0FB80F98093C101CC2349F04B +:104EB0008CE69CE00E94A4068091C1018660886017 +:104EC00048C08FE59CE00E94A4068091C101897FC3 +:104ED000877F8093C101DFCF9091C10191FBCC27E7 +:104EE000C0F981E0C827892FC0FB81F98093C101F7 +:104EF000CC2319F082E59CE027C084E49CE0C9CF74 +:104F00009091C10192FBCC27C0F981E0C827892F7D +:104F1000C0FB82F98093C101CC2319F085E39CE0AA +:104F200013C085E29CE0B5CF9091C10193FBCC27E3 +:104F3000C0F981E0C827892FC0FB83F98093C101A4 +:104F4000CC2351F089E19CE00E94A4068091C1012C +:104F500081608093C10162C08CE09CE09ACF8CEEAE +:104F600098E00E94A40684EC98E00E94A4068EE8D3 +:104F700098E00E94A40681E698E00E94A40682E2DE +:104F800098E00E94A40687EF97E083CF89EE97E030 +:104F90000E94A4060E94E1131F928F938FEC97E06A +:104FA0009F938F930E943D0780910A011F928F93D8 +:104FB00088EB97E09F938F930E943D078091640157 +:104FC0001F928F9385EA97E09F938F930E943D07EE +:104FD0008091C3019091C401A091C501B091C60117 +:104FE000BF93AF939F938F9381E997E09F938F93A4 +:104FF0000E943D078DB79EB742960FB6F8949EBFAC +:105000000FBE8DBF48CF8D5101C080E00E94932517 +:1050100042CF8AE09CE00E94A406C0E08C2FCF9192 +:10502000089580E0089580E00895CF93C82F80917F +:10503000D101813071F020F0823009F44BC042C1BF +:10504000E0910B01F0910C018081823209F03CC1AA +:1050500007C0E0910B01F0910C018081823261F474 +:105060008C2F0E941128811104C08C2F0E94B3251F +:105070002FC081E090E02CC08C2F0E94132881115A +:1050800026C0C431E1F070F4CB3081F0C031D1F4EE +:105090000E945B2484E897E00E94A40682E080934B +:1050A000D10115C0C93259F0C83361F48BEF98E0D3 +:1050B0000E94A40688E897E00E94A40608C0109207 +:1050C000D10104C182E897E00E94A406FFC081E0FC +:1050D0008170FEC0C43228F5CE3108F0C1C0CB309B +:1050E000A1F1D0F4C73009F0D3C08EE18093120152 +:1050F00082E3809311018AE08093100184E1809320 +:105100000F0188E080930E0188E280930D0188E210 +:1051100096E00E94A406BFC0C33149F1C431C1F07A +:10512000B7C0CB3409F4A9C028F4C93289F0C83318 +:1051300061F0AEC0C13509F49EC0C23509F499C012 +:10514000CE3409F0A5C06AE09EC00E945B24A3C0D3 +:105150008091D001882319F01092D0019CC085E382 +:1051600096E00E94A40681E08093D101B1C08FE057 +:1051700096E00E94A4068DEF95E00E94A40680911F +:1051800012011F928F938AEF95E09F938F930E9455 +:105190003D0788EF95E00E94A40686EE95E00E9408 +:1051A000A406809111011F928F9383EE95E09F9347 +:1051B0008F930E943D0781EE95E00E94A40682ED48 +:1051C00095E00E94A406809110011F928F938FECAE +:1051D00095E09F938F930E943D078DEC95E00E9490 +:1051E000A4068CEB95E00E94A40680910F011F920B +:1051F0008F9389EB95E09F938F930E943D0787EBF8 +:1052000095E00E94A40682EA95E00E94A40680919F +:105210000E011F928F938FE995E09F938F930E94C9 +:105220003D078DE995E00E94A40686E895E00E947E +:10523000A40680910D011F928F9383E895E09F93C0 +:105240008F930E943D0781E895E00E94A4068DB7E8 +:105250009EB748960FB6F8949EBF0FBE8DBF1BC079 +:10526000CE51EC2FF0E0E95DFE4F80818093D001BC +:1052700012C061E003C061E006C06AE08091D00125 +:105280000E94722408C08091D0010E94152503C09D +:1052900086E296E013C08091D001882369F01F92C6 +:1052A0008F9380E296E09F938F930E943D070F902B +:1052B0000F900F900F9004C08DE196E00E94A4061D +:1052C00081E006C01092D10180E002C080E000CFF2 +:1052D000CF91089504D06894B1118DC0089570D015 +:1052E00088F09F5790F0B92F9927B751A0F0D1F0CF +:1052F000660F771F881F991F1AF0BA95C9F712C059 +:10530000B13081F077D0B1E0089574C0672F782F65 +:105310008827B85F39F0B93FCCF3869577956795C4 +:10532000B395D9F73EF490958095709561957F4F30 +:105330008F4F9F4F0895E89409C097FB3EF49095D6 +:105340008095709561957F4F8F4F9F4F9923A9F05E +:10535000F92F96E9BB279395F695879577956795ED +:10536000B795F111F8CFFAF4BB0F11F460FF1BC031 +:105370006F5F7F4F8F4F9F4F16C0882311F096E9C4 +:1053800011C0772321F09EE8872F762F05C0662372 +:1053900071F096E8862F70E060E02AF09A95660F2B +:1053A000771F881FDAF7880F9695879597F90895E4 +:1053B00057FD9058440F551F59F05F3F71F04795C6 +:1053C000880F97FB991F61F09F3F79F087950895AB +:1053D000121613061406551FF2CF4695F1DF08C0CA +:1053E000161617061806991FF1CF869571056105E7 +:1053F00008940895E894BB2766277727CB0197F98F +:1054000008950BD078C069D028F06ED018F095239D +:1054100009F05AC05FC01124EECFCADFA0F3959FF8 +:10542000D1F3950F50E0551F629FF001729FBB278B +:10543000F00DB11D639FAA27F00DB11DAA1F649F37 +:105440006627B00DA11D661F829F2227B00DA11DEA +:10545000621F739FB00DA11D621F839FA00D611D70 +:10546000221F749F3327A00D611D231F849F600D91 +:10547000211D822F762F6A2F11249F5750408AF0CA +:10548000E1F088234AF0EE0FFF1FBB1F661F771F56 +:10549000881F91505040A9F79E3F510570F014C0ED +:1054A000AACF5F3FECF3983EDCF38695779567953E +:1054B000B795F795E7959F5FC1F7FE2B880F911D74 +:1054C0009695879597F9089597F99F6780E870E01A +:1054D00060E008959FEF80EC089500240A9416166A +:1054E000170618060906089500240A9412161306D2 +:1054F000140605060895092E0394000C11F4882360 +:1055000052F0BB0F40F4BF2B11F460FF04C06F5F7B +:105510007F4F8F4F9F4F0895991B79E004C0991FCB +:10552000961708F0961B881F7A95C9F780950895FD +:1055300097FB072E16F4009407D077FD09D00E9440 +:10554000B22A07FC05D03EF4909581959F4F0895AF +:10555000709561957F4F0895EE0FFF1F0590F491B0 +:10556000E02D0994AA1BBB1B51E107C0AA1FBB1F5A +:10557000A617B70710F0A61BB70B881F991F5A95DF +:10558000A9F780959095BC01CD010895F999FECFBA +:1055900092BD81BDF89A992780B50895A8E1B0E041 +:1055A00042E050E00C94EE2A262FF999FECF92BDEE +:1055B00081BDF89A019700B4021639F01FBA20BDD8 +:1055C0000FB6F894FA9AF99A0FBE08950196272F0C +:1055D0000E94D52A0C94D42ADC01CB01FC01F99954 +:1055E000FECF06C0F2BDE1BDF89A319600B40D922F +:0C55F00041505040B8F70895F894FFCFE8 +:1055FC00470C380D150DE10CAD0C01B60128081443 +:10560C000A321E3F4D3620AF0362032C030C039865 +:10561C0002B102CA02E302010203040506070809EB +:02562C0000007C +:00000001FF diff --git a/keyboards/hhkb/keymaps/default/keymap.c b/keyboards/hhkb/keymaps/default/keymap.c new file mode 100644 index 0000000000..bd5dd8372d --- /dev/null +++ b/keyboards/hhkb/keymaps/default/keymap.c @@ -0,0 +1,78 @@ +/* -*- eval: (turn-on-orgtbl); -*- + * default HHKB Layout + */ +#include "hhkb.h" + +#define BASE 0 +#define HHKB 1 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* BASE Level: Default Layer + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | | + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + | Cont | A | S | D | F | G | H | J | K | L | ; | ' | Ent | | | + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0 | | | + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + + |------+------+-----------------------+------+------| + | LAlt | LGUI | ******* Space ******* | RGUI | RAlt | + |------+------+-----------------------+------+------| + */ + + [BASE] = KEYMAP( // default layer + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \ + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, 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_RSFT, MO(HHKB), \ + KC_LALT, KC_LGUI, /* */ KC_SPC, KC_RGUI, KC_RALT), + + + + /* Layer HHKB: HHKB mode (HHKB Fn) + |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| + | Pwr | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del | + |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| + | Caps | | | | | | | | Psc | Slk | Pus | Up | | Backs | | + |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| + | | VoD | VoU | Mut | | | * | / | Hom | PgU | Lef | Rig | Enter | | | + |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| + | | | | | | | + | - | End | PgD | Dow | | | | | + |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| + + |------+------+----------------------+------+------+ + | **** | **** | ******************** | **** | **** | + |------+------+----------------------+------+------+ + + */ + + [HHKB] = KEYMAP( + KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, \ + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_BSPC, \ + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)}; + + +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; +}; diff --git a/keyboards/hhkb/keymaps/lxol/compiled.hex b/keyboards/hhkb/keymaps/lxol/compiled.hex new file mode 100644 index 0000000000..63d3691c4d --- /dev/null +++ b/keyboards/hhkb/keymaps/lxol/compiled.hex @@ -0,0 +1,1421 @@ +:100000000C9493070C94D7070C94D7070C94D7073C +:100010000C94D7070C94D7070C94D7070C94D707E8 +:100020000C94D7070C94D7070C949B120C946D1367 +:100030000C945D200C94D7070C94D7070C94D70729 +:100040000C94D7070C94D7070C94D7070C94D707B8 +:100050000C94D7070C94FD200C94D7070C94D70769 +:100060000C94D7070C94D7070C94D7070C94D70798 +:100070000C94D7070C94D7070C94D7070C94D70788 +:100080000C94D7070C94D7070C94D7070C94D70778 +:100090000C94D7070C94D7070C94D7070C94D70768 +:1000A0000C94D7070C94D7070C94D707DA13FC13DA +:1000B000EA14FC13EA1441146414EA14B914CC14BD +:1000C000A617A617D517D51714183418641964196C +:1000D0003F186419EF18EF185519641964195E195F +:1000E000FC18FC18FC18FC18FC18FC18FC18FC1870 +:1000F000FC18FC18FC18FC18FC18FC18FC18FC1860 +:100100000C191A19211928193219253032583A2098 +:10011000253038620A000A722F63203031323334BE +:100120003536370A0028311F0014001A001644041F +:10013000461D001B000600200021001500080007D6 +:1001400000090019000500220023001C0017000A06 +:10015000000B00110000001E0029002B00E000E150 +:1001600000E200E3002C002400250018000C000E23 +:10017000000D0010000000310035002A00C0000210 +:1001800052E500E600E700260027001200130033C6 +:10019000450F43360000002D002E0030002F0034A4 +:1001A000003800370000001F0014001A0016460433 +:1001B000441D001B00060020002100150008000758 +:1001C00000090019000500220023001C0017000A86 +:1001D000000B00110000001E0029002B00E000E1D0 +:1001E00000E700E6002C002400250018000C000E9B +:1001F000000D0010000000310035002A00C0000290 +:1002000052E500E700E60026002700120013003345 +:10021000430F45360000002D002E0030002F003423 +:10022000003800370000003B0001000100A900AACF +:10023000000100010001003C003D0001000100A898 +:10024000000100010001003E003F0001000100012B +:10025000005500570000003A00A5003900010001D8 +:100260000001000100010040004100010046004A79 +:100270000054005600000049004C002A00580001BC +:100280000001000100010042004300470048005007 +:10029000004B004D00000044004500010052004F9B +:1002A0000051004E0000001F1814181A18161804E8 +:1002B000181D181B180618201821181518081807DB +:1002C00018091819180518221823181C1817180AC5 +:1002D000180B18111800001E1829182B18E018E127 +:1002E00018E200E3002C182418251818180C180E12 +:1002F000180D1810180000311835182A18C0000100 +:1003000000E518E600E70026182718121813180150 +:10031000000100361800002D182E1830182F183440 +:10032000183818371800001F0814081A08010001AF +:10033000001D081B080608200821081508080807E2 +:1003400008090819080508220823081C0817080AC4 +:10035000080B08110800001E0829082B08E008E116 +:1003600000E200E3002C082408250818080C080EF9 +:10037000080D0810080000310835082A08C00001DF +:1003800000E500E600E300260827081208130833FA +:10039000080F08360800002D082E0830082F0834F2 +:1003A000083808370800001F1414141A141614040F +:1003B000141D141B140614201421141514081407FA +:1003C00014091419140514221423141C1417140AE4 +:1003D000140B14111400001E1429142B14E014E142 +:1003E00014E200E3002C142414251418140C140E29 +:1003F000140D1410140000311435142A14C0000117 +:1004000000E514E600E70026142714121413140163 +:10041000000100361400002D142E1430142F143453 +:10042000143814371400001F0414041A04010001C6 +:10043000001D041B040604200421041504080407FD +:1004400004090419040504220423041C0417040AE3 +:10045000040B04110400001E0429042B04E004E131 +:1004600000E200E3002C042404250418040C040E0C +:10047000040D0410040000310435042A04C00001F6 +:1004800000E500E600E30026042704120413043309 +:10049000040F04360400002D042E0430042F04340D +:1004A000043804370400000A44454255473A2065A1 +:1004B0006E61626C65642E0A005B735D004B65794A +:1004C000626F6172642073746172742E0A005B57EC +:1004D0005D005B535D005B525D005B445D005B4310 +:1004E0005D001203480048004B00420020006D00F0 +:1004F0006F00640000000C0371002E006D002E00E0 +:100500006B0000000403090409027400040100A048 +:10051000FA09040000010301010009211101000191 +:10052000223F000705810308000A090401000103B6 +:10053000010200092111010001224D00070582037B +:1005400008000A090402000103000000092111014A +:1005500000012236000705830308000A090403008E +:1005600002030000000921110100012220000705FB +:10057000840320000107050403200001120110017B +:1005800000000008EDFEFECA040101020001063170 +:10059000FF0974A1010975150025FF9520750881D3 +:1005A000020976150025FF952075089102C0050106 +:1005B0000980A101850216010026B7001A01002A50 +:1005C000B700751095018100C0050C0901A10185D6 +:1005D00003160100269C021A01002A9C0275109540 +:1005E000018100C005010902A1010901A10005095D +:1005F000190129051500250195057501810295014F +:10060000750381010501093009311581257F9502A6 +:100610007508810609381581257F950175088106C1 +:10062000050C0A38021581257F950175088106C0E1 +:10063000C005010906A101050719E029E7150025F4 +:100640000195087501810295017508810105081958 +:100650000129059505750191029501750391010523 +:1006600007190029FF150025FF950675088100C0B0 +:100670000A002530325820006B6579626F61726420 +:100680005F7265706F72743A20004B6579626F61BA +:100690007264204C4544732073746174653A20255C +:1006A000780A00646F6E652E0A00626F6F676D6175 +:1006B000676963207363616E3A202E2E2E20002915 +:1006C0000A002575002F002575005D2800256400AF +:1006D0002000256400200025640020002564007CA3 +:1006E0000025303258006D6F7573656B6579205B3E +:1006F00062746E7C782079207620685D287265703F +:100700002F61636C293A205B006D6B5F77686565CC +:100710006C5F74696D655F746F5F6D6178203D20FB +:1007200025640A006D6B5F776865656C5F6D617845 +:100730005F7370656564203D2025640A006D6B5F02 +:1007400074696D655F746F5F6D6178203D2025640D +:100750000A006D6B5F6D61785F7370656564203D45 +:100760002025640A006D6B5F696E74657276616C3A +:10077000203D2025640A006D6B5F64656C61792003 +:100780003D2025640A006D6B5F776865656C5F745A +:10079000696D655F746F5F6D6178203D2025640A27 +:1007A000006D6B5F776865656C5F6D61785F737016 +:1007B000656564203D2025640A006D6B5F74696D7A +:1007C000655F746F5F6D6178203D2025640A006D60 +:1007D0006B5F6D61785F7370656564203D20256493 +:1007E0000A006D6B5F696E74657276616C203D20E6 +:1007F00025640A006D6B5F64656C6179203D20257E +:10080000640A000A00257500363A20776865656C31 +:100810005F74696D655F746F5F6D61783A20000A7F +:1008200000257500353A20776865656C5F6D6178E5 +:100830005F73706565643A20000A00257500343ADC +:100840002074696D655F746F5F6D61783A20000A8E +:1008500000257500333A206D61785F7370656564BB +:100860003A20000A00257500323A20696E746572DC +:1008700076616C286D73293A20000A0025750031D5 +:100880003A2064656C6179282A31306D73293A20E9 +:10089000000A092D2056616C756573202D0A004DE4 +:1008A0003E004D25643E20003F0073657420646562 +:1008B0006661756C740A00433E2000776865726556 +:1008C0002064656C74613A20637572736F723D25A4 +:1008D000642C20776865656C3D25640A5365652046 +:1008E000687474703A2F2F656E2E77696B69706526 +:1008F0006469612E6F72672F77696B692F4D6F7511 +:1009000073655F6B6579730A000A092D204D6F7559 +:1009100073656B6579202D0A4553432F713A097130 +:100920007569740A313A0964656C6179282A313035 +:100930006D73290A323A09696E74657276616C28A2 +:100940006D73290A333A096D61785F737065656468 +:100950000A343A0974696D655F746F5F6D61780A76 +:10096000353A09776865656C5F6D61785F737065AE +:1009700065640A363A09776865656C5F74696D6508 +:100980005F746F5F6D61780A0A703A097072696E00 +:10099000742076616C7565730A643A097365742016 +:1009A00064656661756C74730A75703A092B310A57 +:1009B000646F776E3A092D310A706775703A092BAA +:1009C00031300A7067646F776E3A092D31300A0A48 +:1009D0007370656564203D2064656C7461202A2015 +:1009E0006D61785F7370656564202A202872657078 +:1009F000656174202F2074696D655F746F5F6D6130 +:100A000078290A003F004D3E2000433E20004C253F +:100A1000640A0074696D65725F636F756E743A2065 +:100A20002530346C580A006B6579626F6172645FBF +:100A300069646C653A2025580A006B6579626F61BC +:100A400072645F70726F746F636F6C3A2025580A1E +:100A500000686F73745F6B6579626F6172645F6C5D +:100A600065647328293A2025580A000A092D205365 +:100A70007461747573202D0A004743433A20342E65 +:100A8000392E32204156522D4C4942433A20312EC4 +:100A9000382E31204156525F415243483A20617608 +:100AA00072350A004F5054494F4E533A204C554628 +:100AB0004120424F4F544D41474943204D4F5553DC +:100AC000454B45592045585452414B455920434FB9 +:100AD0004E534F4C4520434F4D4D414E44203531F0 +:100AE000320A004255494C443A2031363731386594 +:100AF000662D6469727479202832333A33393A3476 +:100B000039204A756E2020392032303136290A00CA +:100B10005649443A2030784645454428712E6D2E7A +:100B20006B29205049443A203078434146452848B3 +:100B3000484B42206D6F6429205645523A20307848 +:100B4000303130340A00444553433A20712E6D2E23 +:100B50006B206B6579626F617264206669726D7774 +:100B600061726520666F722048484B420A000A098C +:100B70002D2056657273696F6E202D0A000A092DAB +:100B800020436F6E736F6C65202D0A4553432F71A0 +:100B90003A09717569740A6D3A096D6F7573656B01 +:100BA00065790A000A092D204D61676963202D0AC5 +:100BB000443A094465627567204D657373616765E2 +:100BC00020546F67676C650A583A094D6174726901 +:100BD00078204465627567204D6F646520546F67A7 +:100BE000676C65202D2053686F77206B6579707274 +:100BF000657373657320696E206D61747269782006 +:100C0000677269640A4B3A094B6579626F61726475 +:100C100020446562756720546F67676C65202D20DE +:100C200053686F77206B6579707265737320726596 +:100C3000706F72740A4D3A094465627567204D6F92 +:100C400075736520546F67676C650A563A09566577 +:100C50007273696F6E0A533A095374617475730A3B +:100C6000433A09416374697661746520436F6E731A +:100C70006F6C65204D6F64650A46312D4631303A00 +:100C80000953776974636820746F204C61796572C9 +:100C900020302D392028463130203D204C30290A83 +:100CA000302D393A0953776974636820746F204C8A +:100CB0006179657220302D390A4553433A095377DB +:100CC0006974636820746F204C61796572203020EC +:100CD00028616C7465726E617465206B6579203172 +:100CE000290A47524156453A095377697463682087 +:100CF000746F204C6179657220302028616C7465B6 +:100D0000726E617465206B65792032290A504155F5 +:100D100053453A094A756D7020746F20426F6F74A5 +:100D20006C6F6164657220285265736574290A4589 +:100D30003A095072696E7420454550524F4D205308 +:100D4000657474696E67730A000A002575002E6E5B +:100D50006B726F3A20000A002575002E7377617060 +:100D60005F6261636B736C6173685F6261636B7315 +:100D7000706163653A20000A002575002E73776163 +:100D8000705F67726176655F6573633A20000A0081 +:100D90002575002E6E6F5F6775693A20000A002581 +:100DA00075002E737761705F72616C745F72677526 +:100DB000693A20000A002575002E737761705F6C18 +:100DC000616C745F6C6775693A20000A00257500D4 +:100DD0002E636170736C6F636B5F746F5F636F6EB4 +:100DE00074726F6C3A20000A002575002E737761CB +:100DF000705F636F6E74726F6C5F636170736C6F42 +:100E0000636B3A20000A0025303258006B65796D1B +:100E100061705F636F6E6669672E7261773A20005A +:100E20000A002575002E6D6F7573653A20000A0063 +:100E30002575002E6B6579626F6172643A20000A35 +:100E4000002575002E6D61747269783A20000A00E1 +:100E50002575002E656E61626C653A20000A0025DA +:100E60003032580064656275675F636F6E666967EC +:100E70002E7261773A20000A00257500646566616C +:100E8000756C745F6C617965723A20003F000A6D81 +:100E90006F7573653A206F66660A000A6D6F757329 +:100EA000653A206F6E0A000A6B6579626F61726441 +:100EB0003A206F66660A000A6B6579626F61726438 +:100EC0003A206F6E0A000A6D61747269783A206F79 +:100ED00066660A000A6D61747269783A206F6E0A5C +:100EE000000A64656275673A206F66660A000A64E4 +:100EF000656275673A206F6E0A000A0A4A756D705E +:100F0000696E6720746F20626F6F746C6F616465C7 +:100F1000722E2E2E2000433E20006565636F6E66A4 +:100F200069673A0A000011241FBECFEFDAE0DEBF86 +:100F3000CDBF04B603FE24C08091E0019091E10191 +:100F4000A091E201B091E3018730904BA740B04BF4 +:100F5000B9F41092E0011092E1011092E2011092B6 +:100F6000E30114BE84B7877F84BF88E10FB6F8948D +:100F700080936000109260000FBEE0E0FFE30995EF +:100F800011E0A0E0B1E0EEE7F8E502C005900D92B7 +:100F9000A233B107D9F711E0A2E3B1E001C01D927D +:100FA000A03EB107E1F70E94D50F0C943D2C0C94A4 +:100FB0000000FF93EF93E0913201F09133013097FD +:100FC00009F00995EF91FF910895FC01859180301A +:100FD00011F0EFDFFBCF0895FF27E0E230E247FF9B +:100FE0000CC0419597FF09C0EDE260957095809522 +:100FF0009095611D711D811D911D27FF02C02195D6 +:1010000030E350E2AA27660F771F881F991FAA1F97 +:10101000A41710F0A41B63955A95A9F7AA3008F0FD +:10102000A95FA05DAF93F3956115710581059105E9 +:1010300041F7ED3211F4EF93F395F21718F43F9363 +:10104000F395FBCF8F91B5DFFA95E1F70895E9911C +:10105000F9918591803021F0853219F0AADFF9CF1E +:10106000089520E0E89455915532C1F3503311F4BE +:10107000689455915A3348F4505390F3220F022E3E +:10108000220F220F200D250FF4CF0EF42195899108 +:101090009991533619F3533729F1533559F1BC015E +:1010A00088279927E8945C3621F48991999168946E +:1010B0005591543639F446EF7EF077FF0DC08FEF2F +:1010C0009FEF0AC055374AE039F0583540E121F02A +:1010D000523642E009F00895FF93EF937DDFEF91E0 +:1010E000FF91B7CFFF93EF93FC0181918030B9F36B +:1010F00060DFFBCFFF93EF9368DFF1CFDF93CF93F8 +:10110000CDB7DEB72596A3DFCF91DF9108958FEF9E +:1011100084B980E485B957985F9A2E9A2F98ECE3AA +:10112000F1E088E08E0F11928E13FDCFE4E3F1E041 +:1011300088E08E0F11928E13FDCF8CE391E0909397 +:1011400047018093460184E391E0909345018093A9 +:1011500044010895EF92FF920F931F93CF93DF9373 +:1011600080914401909145012091460130914701C1 +:1011700030934501209344019093470180934601A9 +:10118000C0E0D0E0EE24E394F12C0FEF10E020E07B +:1011900030E085B1807C8C2BA90193E0440F551F72 +:1011A0009A95E1F7842B85B98AE18A95F1F700C019 +:1011B000E0914401F0914501EC0FFD1F808190E02A +:1011C000022E02C0959587950A94E2F780FD2F9A2A +:1011D00095E39A95F1F70000E6B52E988AE18A9595 +:1011E000F1F700C04091460150914701DA01AC0F80 +:1011F000BD1F4F9B0AC0C701022E01C0880F0A9471 +:10120000EAF780959C91892308C06C91C701022E52 +:1012100001C0880F0A94EAF7862B8C9386B56E2F4F +:1012200070E08E1728F086B590E0861B970B06C0FD +:10123000E6B5C801861B970B8E0F911D069758F0D7 +:10124000E0914401F0914501EC0FFD1F8081FA010E +:10125000EC0FFD1F80839AE19A95F1F700C02F985B +:101260002E9A8BE291E00197F1F700C000002F5F0A +:101270003F4F2830310509F08CCFA0914601B09145 +:101280004701AC0FBD1FE0914401F0914501EC0F07 +:10129000FD1F9C918081981751F00E949B206093C4 +:1012A00048017093490180934A0190934B01219624 +:1012B000C830D10509F06BCF8091D601853021F07F +:1012C0008091D601811111C060914801709149014E +:1012D00080914A0190914B010E94D1206131774267 +:1012E0008105910510F00E94202081E0DF91CF91CF +:1012F0001F910F91FF90EF9008952091460130913A +:101300004701F901E80FF11D808108950F931F93A4 +:10131000CF93DF9386E191E00E94E507C0E0D0E043 +:101320000AE011E0E0914601F0914701EC0FFD1F4A +:1013300080810E940A201F928F93DF93CF931F9387 +:101340000F930E947E0821960F900F900F900F90A0 +:101350000F900F90C830D10529F7DF91CF911F91E1 +:101360000F9108951F93CF93DF93C7E0D0E010E073 +:10137000E0914601F0914701EC0FFD1F808190E064 +:101380000E94FE1F180F219798F7812FDF91CF91B0 +:101390001F9108950895089561110BC0FC01828189 +:1013A000882321F085EE0E949A1603C085EE0E94E4 +:1013B000391780E090E0089581E0089581E0089574 +:1013C0000C94DE0908950F931F93CF93DF938C0144 +:1013D000FC01C081D181CE010E94C81EBE010E94C5 +:1013E0008C0AEC01B8010E94E009882309F48DC041 +:1013F000F8018281882309F44AC080915701811144 +:101400001FC0C431F0E5DF0709F051C00E94E209B6 +:1014100081E0809357010E948F2090935601809322 +:10142000550110924E011092500110924F011092EE +:10143000520110925101109254011092530165C053 +:1014400080915501909156010E94A720883C9105FA +:1014500070F480914E01E82FF0E0EE0FFF1FE15B8A +:10146000FE4FD183C0838F5F80934E014EC0C4383E +:1014700080E5D80721F0C538D04501F13AC0F80120 +:101480008281882341F010924C0182E01EC0C43852 +:10149000E0E5DE0759F580914C01811106C086E236 +:1014A0000E949A1686E20E94391782E01CC0C43856 +:1014B000F0E5DF0741F3C538D045D9F4F801828162 +:1014C000882331F010924D0180E20E9461171DC007 +:1014D00080914D01811106C087E20E949A1687E231 +:1014E0000E94391780E20E9468170FC0C538D045A6 +:1014F00029F381E080934C0180934D01C801DF9175 +:10150000CF911F910F910C94DC0980E0DF91CF9176 +:101510001F910F9108950895E72FF0E098E0899FBB +:10152000E00DF11D112483E0EE0FFF1F8A95E1F716 +:10153000E60FF11DEE0FFF1FE95DFE4F85919491BF +:101540000895880F991FFC01EB55F0408591949107 +:101550000895880F991FFC01EB5DFE4F85919491D2 +:1015600008950F931F93CF93DF93EC01811520E330 +:10157000920750F5C11580E2D80708F0C3C0CB3BF5 +:10158000D10590F4C83AD10508F06AC0C53AD10532 +:1015900008F05BC0C430D10508F0D4C1219709F030 +:1015A000CEC101E010E00EC2CF3FD10511F008F02E +:1015B000C9C1C03FD10508F0A2C0CE01805E91092B +:1015C000089708F4BFC1BBC1C13090E5D90709F441 +:1015D000A2C020F5C0318FE4D80770F4C11590E4A3 +:1015E000D90708F094C0C11521E3D20708F0A7C1BC +:1015F000DD278E01106CE6C1C115D04509F09FC1F1 +:101600000E94CF198FEF94E32CE08150904020404E +:10161000E1F700C000000E942221D4C1C11597E566 +:10162000D90758F4C03121E5D20708F020C1C431F0 +:1016300080E5D80708F479C082C1CE0190578115A2 +:10164000904108F07CC1DF7077C1C53AD10509F43B +:101650007BC1C63AD10509F07AC102E810E4B2C1F3 +:10166000C83AD10509F476C1C93AD10509F475C162 +:10167000CA3AD10509F474C1CB3AD10509F473C152 +:10168000CC3AD10509F472C1CD3AD10509F471C142 +:10169000C03BD10509F470C1CE3AD10509F46FC140 +:1016A000CF3AD10509F46EC1C13BD10509F46DC132 +:1016B000C23BD10509F46CC1C33BD10509F46BC130 +:1016C000C43BD10509F46AC1C53BD10509F469C120 +:1016D000C63BD10509F468C1C73BD10509F467C110 +:1016E000C83BD10509F466C1C93BD10509F465C100 +:1016F000CA3BD10509F464C100E014E463C18E0162 +:10170000106560C1CE019F700E94A90A5CC1DF70A4 +:101710008E01106A57C187EA94E00E94E507809124 +:10172000C10181608093C1014DC10E94C822811115 +:1017300002C00E94AE220E94E52290E09093E00158 +:101740008093DF01C23080E5D80721F48091DF016A +:10175000816086C0C43090E5D90721F48091DF0113 +:1017600082607EC0C63020E5D20721F48091DF017F +:10177000846076C0C83080E5D80719F48091DF0115 +:1017800027C0CA3090E5D90721F48091DF0180613C +:1017900067C0CC3020E5D20721F48091DF01806260 +:1017A0005FC0CE3080E5D80721F48091DF018064EE +:1017B00057C0C03190E5D90721F48091DF018068DE +:1017C0004FC0C23120E5D20729F48091DF01846047 +:1017D000886046C0C33080E5D80721F48091DF01DE +:1017E0008E7F3EC0C53090E5D90721F48091DF019E +:1017F0008D7F36C0C73020E5D20721F48091DF010C +:101800008B7F2EC0C93080E5D80719F48091DF01A5 +:1018100026C0CB3090E5D90721F48091DF018F7E7F +:101820001FC0CD3020E5D20721F48091DF018F7DEC +:1018300017C0CF3080E5D80721F48091DF018F7B7E +:101840000FC0C13190E5D90721F48091DF018F7776 +:1018500007C0C331D04531F48091DF018B7F877F92 +:101860008093DF018091DF010E94E922ABC08D2FC0 +:1018700099278F70992781309105D9F49E012370A3 +:10188000332702C0880F991F2A95E2F79C688E01C2 +:1018900044E0000F111F4A95E1F700271370802BD9 +:1018A000912B53E0CC0FDD1F5A95E1F7C076DD2771 +:1018B0002FC08230910531F4DC2FCC278E01016FCF +:1018C000106A80C08330910569F4CE018370992736 +:1018D00001E010E002C0000F111F8A95E2F7C80175 +:1018E0009C680FC084309105B9F4CE0183709927AC +:1018F00001E010E002C0000F111F8A95E2F7C80155 +:101900009A6823E0CC0FDD1F2A95E1F7C07ED770DF +:101910008C010C2B1D2B56C08530910531F4DC2F2A +:10192000CC278E01046F106A4DC0069709F04AC09B +:10193000CF71DD27DC2FCC278E01106243C000E081 +:1019400010E040C08E013EC001E810E43BC003E857 +:1019500010E438C002EE14E435C009EE14E432C0DD +:101960000AEE14E42FC005EB14E42CC006EB14E4DB +:1019700029C007EB14E426C00CEC14E423C00DECE2 +:1019800014E420C003E815E41DC00AE815E41AC0F9 +:1019900002E915E417C004E915E414C001E216E4F5 +:1019A00011C003E216E40EC004E216E40BC005E227 +:1019B00016E408C006E216E405C007E216E402C019 +:1019C0000AE216E4C801DF91CF911F910F910895AB +:1019D000E72FF0E098E0899FE00DF11D112483E0EE +:1019E000EE0FFF1F8A95E1F7E60FF11DEE0FFF1FC7 +:1019F000E95DFE4F85919491803E9105E0F4803C35 +:101A0000910558F58133910509F46FC048F4893286 +:101A1000910509F463C08A32910509F46DC072C062 +:101A200089339105E9F082389105D1F0853391052C +:101A300009F44DC067C0833E910581F138F4803EC2 +:101A40009105B9F0823E9105D9F05CC0863E9105C2 +:101A500061F1873E9105A1F155C00E94A10A089548 +:101A60002091DF0120FD02C021FF4CC080EE90E0FC +:101A700049C08091DF0180FFF9CF89E390E042C047 +:101A80008091DF0182FF0EC08091DF0184FF03C0DF +:101A900080E090E037C083EE90E034C08091DF01B9 +:101AA00082FFF2CF82EE90E02DC08091DF0183FFB4 +:101AB0000BC08091DF0184FDEBCF87EE90E022C068 +:101AC0008091DF0183FFF5CF86EE90E01BC080910F +:101AD000DF0185FF07C089E290E014C08091DF013B +:101AE00085FFF9CF85E390E00DC08091DF0186FF8F +:101AF00007C08AE290E006C08091DF0186FFF9CF3F +:101B000081E390E00E94B10A089508950C94850D38 +:101B10008091630108959FB7F89410925A019FBF76 +:101B20009091D601943009F057C09091E9009F70D0 +:101B30003091EC00232F217030FD20E8922B24E01F +:101B40002093E9002091EB0020FF43C02091EE009C +:101B500027FF3FC020915801222321F02091E80067 +:101B600025FF37C01092580126E03091E80035FD7E +:101B700015C03091D601343061F53091EB0035FD60 +:101B800028C0215021F481E08093580122C0EFE960 +:101B9000FFE03197F1F700C00000E7CF8093F1003C +:101BA0008091E80085FD0AC08091E80080FFFCCFAD +:101BB0008091E8008E778093E80006C08FB7F89494 +:101BC00021E020935A018FBF9F709093E90080E03D +:101BD00008959F709093E9008FEF0895CF93DF935E +:101BE00000D01F92CDB7DEB79C018091D601843022 +:101BF00019F593E099833B832A839093E9008FEF53 +:101C00009091E800815095FD06C095ED9A95F1F709 +:101C100000008111F5CF8091E80085FF0DC040E004 +:101C200050E063E070E0CE0101960E948B1080913D +:101C3000E8008E778093E8000F900F900F90DF916F +:101C4000CF910895CF93DF9300D01F92CDB7DEB729 +:101C50002091D601243021F522E029839B838A83B9 +:101C600083E08093E9008FEF9091E800815095FD2B +:101C700006C095ED9A95F1F700008111F5CF80919E +:101C8000E80085FF0DC040E050E063E070E0CE0169 +:101C900001960E948B108091E8008E778093E80077 +:101CA0000F900F900F90DF91CF9108952091D60162 +:101CB0002430F1F422E02093E9002FEF3091E80086 +:101CC000215035FD06C035ED3A95F1F700002111A0 +:101CD000F5CF2091E80025FF0BC040E050E065E023 +:101CE00070E00E948B108091E8008E778093E8006E +:101CF0000895CF93DF932091D601243039F521E068 +:101D00002093E9002FEF3091E800215035FD06C007 +:101D100035ED3A95F1F700002111F5CF2091E8005B +:101D200025FF14C0EC0140E050E068E070E00E9444 +:101D30008B108091E8008E778093E80088E0FE01A8 +:101D4000ABE5B1E001900D928A95E1F7DF91CF917B +:101D500008958EED94E00E94E5078091D5018111F0 +:101D600009C00E9420120E947D128091E2008460CE +:101D70008093E20008958AED94E00E94E5071092B6 +:101D8000D501089586ED94E00C94E50782ED94E08A +:101D90000C94E5078EEC94E00E94E5070C94572024 +:101DA000209159012F5F822F62E30E94CD2B99234E +:101DB00019F02093590108951092590180915A0108 +:101DC000882371F18091D601843041F58091E9003A +:101DD0008F702091EC00922F917020FD90E8892B5C +:101DE00094E09093E9009091EB0090FF14C09091E3 +:101DF000EE0097FF10C09091E80095FF03C010928D +:101E0000F100F9CF9091E80090FF05C09091E800B3 +:101E10009E779093E8008F708093E90010925A01AA +:101E2000089542E061EC81E00E949A1142E061EC89 +:101E300082E00E949A1142E061EC83E00E949A11D4 +:101E400042E261EC84E00C949A118091D8018330D5 +:101E500009F453C030F4813071F0823009F48CC041 +:101E600008958A3009F478C08B3009F45EC0893057 +:101E700009F09AC020C08091D701813A09F094C03E +:101E80008091E800877F8093E8008091DB0190914A +:101E9000DC01892B21F468E08BE591E003C060E070 +:101EA00080E090E070E00E94D6108091E8008B778F +:101EB0008093E80008958091D701813209F074C0C1 +:101EC0008091DB019091DC01892B09F06DC080913C +:101ED000E800877F8093E8008091E80082FD05C0DC +:101EE0008091D6018111F8CF5FC08091F10080937D +:101EF00063018091E8008B7753C08091D701813ACC +:101F000009F052C08091DB019091DC01892B09F02E +:101F10004BC08091E800877F8093E8008091E800C3 +:101F200080FFFCCF80910A0136C08091D7018132B9 +:101F3000D9F58091DB019091DC01892BA9F5809185 +:101F4000E800877F8093E8000E94CF118091D9013B +:101F500080930A010C94CF198091D701813221F529 +:101F60008091E800877F8093E8000E94CF118091E4 +:101F7000DA018093640108958091D701813AA1F438 +:101F80008091E800877F8093E8008091E80080FFDF +:101F9000FCCF809164018093F1008091E8008E77FE +:101FA0008093E8000C94CF11089584B7877F84BF95 +:101FB00088E10FB6F89480936000109260000FBE25 +:101FC00090E080E80FB6F8948093610090936100F0 +:101FD0000FBE0E94AF150E9420120E947D128091B8 +:101FE000E20084608093E2008BE89DE00E94F91F8C +:101FF00078940E9402150E94B11580E091E00E9441 +:102000001D158DEB94E00E94E5078091D601853087 +:1020100089F489EB94E00E94E5070E9420208091DA +:10202000D401882391F30E944920882371F30E94F0 +:102030007510EBCF0E94D515E8CF292F3327233019 +:102040003105C9F064F42130310581F022303105C9 +:1020500009F043C084E790E028E035E042C0213237 +:102060003105F1F02232310541F137C082E190E0D3 +:102070002CE735E036C099278130910541F0823058 +:10208000910541F0892B49F5E4E0F5E005C0E6EF64 +:10209000F4E002C0E2EEF4E0849190E09F0121C000 +:1020A0006430D8F4E62FF0E0EE0FFF1FE15EFE4F44 +:1020B0002081318189E090E014C0643070F470E0D8 +:1020C000FB01EE0FFF1FE95EFE4F20813181FB0116 +:1020D000ED5EFE4F808190E004C080E090E020E063 +:1020E00030E0FA0131832083089580E189BD82E1E7 +:1020F00089BD09B400FEFDCF8091D8008F7D80930B +:10210000D8008091E00082608093E0008091E00040 +:1021100081FDFCCF0895CF92DF92EF92FF920F9353 +:102120001F93CF93DF93EC018B016A010E94EE11A4 +:10213000811133C0C114D10439F0F601808191813D +:10214000081B190BC80FD91FE12CF12C0115110523 +:1021500019F18091E80085FD16C08091E8008E7726 +:102160008093E800C114D10449F0F6018081918187 +:10217000E80EF91EF182E08285E00FC00E94EE11A8 +:10218000882321F30AC089918093F100015011093D +:10219000FFEFEF1AFF0ADACF80E0DF91CF911F91B6 +:1021A0000F91FF90EF90DF90CF9008952091DD0187 +:1021B0003091DE012617370748F06115710539F4B3 +:1021C0002091E8002E772093E80001C0B90140E09B +:1021D00061157105A9F12091D601222309F443C0AC +:1021E000253009F442C02091E80023FD40C0209131 +:1021F000E80022FD32C02091E80020FFE9CF4091A5 +:10220000F3002091F20030E0342BFC01CF01611586 +:10221000710559F02830310540F481918093F10027 +:10222000615071092F5F3F4FF1CF41E028303105F8 +:1022300009F040E02091E8002E772093E800C8CF15 +:102240004111C9CF0AC08091D601882361F0853041 +:1022500061F08091E80083FD0AC08091E80082FF70 +:10226000F2CF80E0089582E0089583E0089581E050 +:1022700008952091DD013091DE012617370748F0DF +:102280006115710539F42091E8002E772093E8005C +:1022900001C0B901FC0120E06115710591F1809147 +:1022A000D601882309F440C0853009F43FC08091ED +:1022B000E80083FD3DC08091E80082FD2FC0809141 +:1022C000E80080FFE9CF2091F3008091F20090E0D8 +:1022D000922B6115710559F08830910540F42491D5 +:1022E0002093F1003196615071090196F2CF21E0FF +:1022F000089709F020E08091E8008E778093E8004D +:10230000CBCF2111CCCF0AC08091D601882361F0B8 +:10231000853061F08091E80083FD0AC08091E8007B +:1023200082FFF2CF80E0089582E0089583E008956F +:1023300081E00895982F973058F59093E900981709 +:1023400039F07091EC002091ED005091F00003C045 +:10235000242F762F50E021FF19C03091EB003E7FF3 +:102360003093EB003091ED003D7F3093ED003091E4 +:10237000EB0031603093EB007093EC002093ED00A4 +:102380005093F0002091EE0027FF07C09F5FD3CF4E +:102390008F708093E90081E0089580E00895809136 +:1023A000D70187FF11C08091E80082FD05C08091B0 +:1023B000D6018111F8CF11C08091E8008B770BC056 +:1023C0008091D601882349F08091E80080FFF8CF02 +:1023D0008091E8008E778093E80008952091E400D2 +:1023E0003091E50095E64091EC00842F817040FF2C +:1023F00022C08091E80080FD1CC08091D601882316 +:1024000091F0853091F08091EB0085FD10C04091F6 +:10241000E4005091E5004217530729F39A019150C7 +:1024200011F784E0089582E0089583E0089581E043 +:10243000089580E008954091E80042FFDECF0895BE +:102440000E948E120E949612E0EEF0E08081816080 +:102450008083E8EDF0E080818F77808319BCA7ED61 +:10246000B0E08C918E7F8C9380818F7E80831092E0 +:10247000D50108950F931F93CF93DF930E948E127F +:102480000E949612C8EDD0E088818F77888388817A +:102490008068888388818F7D888319BC1092D601DB +:1024A0001092D2011092D4011092D30100EE10E0EC +:1024B000F80180818B7F808388818160888342E0FE +:1024C00060E080E00E949A11E1EEF0E080818E7F72 +:1024D0008083E2EEF0E0808181608083808188608B +:1024E0008083F80180818E7F8083888180618883EA +:1024F000DF91CF911F910F910895E8EDF0E0808179 +:102500008F7E8083E7EDF0E080818160808384E0CE +:1025100082BF81E08093D5010C943A12E8EDF0E09F +:1025200080818E7F80831092E20008951092DA00FD +:102530001092E10008951F920F920FB60F9211248E +:102540002F933F934F935F936F937F938F939F93BB +:10255000AF93BF93EF93FF938091E10082FF0BC095 +:102560008091E20082FF07C08091E1008B7F809321 +:10257000E1000E94D00E8091DA0080FF1FC08091A0 +:10258000D80080FF1BC08091DA008E7F8093DA0034 +:102590008091D90080FF0DC080E189BD82E189BDB5 +:1025A00009B400FEFDCF81E08093D6010E94A90E00 +:1025B00005C019BC1092D6010E94BB0E8091E100AB +:1025C00080FF19C08091E20080FF15C08091E20079 +:1025D0008E7F8093E2008091E20080618093E20030 +:1025E0008091D80080628093D80019BC85E08093E8 +:1025F000D6010E94C60E8091E10084FF30C0809118 +:10260000E20084FF2CC080E189BD82E189BD09B46C +:1026100000FEFDCF8091D8008F7D8093D8008091FF +:10262000E1008F7E8093E1008091E2008F7E8093B5 +:10263000E2008091E20081608093E2008091D2010B +:10264000882311F084E007C08091E30087FD02C079 +:1026500081E001C083E08093D6010E94CA0E809180 +:10266000E10083FF29C08091E20083FF25C08091B3 +:10267000E100877F8093E10082E08093D601109291 +:10268000D2018091E1008E7F8093E1008091E20091 +:102690008E7F8093E2008091E20080618093E2006F +:1026A00042E060E080E00E949A118091F000886032 +:1026B0008093F0000E94C20EFF91EF91BF91AF9105 +:1026C0009F918F917F916F915F914F913F912F914A +:1026D0000F900FBE0F901F9018951F920F920FB67C +:1026E0000F9211242F933F934F935F936F937F9398 +:1026F0008F939F93AF93BF93CF93DF93EF93FF930A +:10270000C091E900CF708091EC00D82FD17080FD8E +:10271000D0E81092E9008091F000877F8093F0006C +:1027200078940E94B1131092E9008091F0008860C3 +:102730008093F000CD2BCF70C093E900FF91EF9113 +:10274000DF91CF91BF91AF919F918F917F916F91C9 +:102750005F914F913F912F910F900FBE0F901F905F +:1027600018951F93CF93DF93CDB7DEB7AA970FB617 +:10277000F894DEBF0FBECDBFE7EDF1E088E08E0F2D +:102780009091F10091938E13FBCF0E94250F8091C1 +:10279000E80083FF1FC18091D7019091D801492F94 +:1027A00050E04A30510508F015C1FA01EA5AFF4FCE +:1027B0000C94ED2B803881F0823809F00BC18091A8 +:1027C000DB018F708093E9008091EB0085FB882707 +:1027D00080F91092E90006C08091D3019091D40154 +:1027E000911182609091E800977F9093E800809328 +:1027F000F1001092F100C8C0282F2D7F09F0EAC027 +:10280000882319F0823061F0E5C08091D9018130D0 +:1028100009F0E0C0933009F080E08093D4012BC030 +:102820008091D901811127C08091DB018F7009F45B +:10283000D1C08093E9002091EB0020FF1CC09330B1 +:1028400021F48091EB00806214C09091EB009061C4 +:102850009093EB0021E030E0A90102C0440F551F26 +:102860008A95E2F74093EA001092EA008091EB002B +:1028700088608093EB001092E9008091E800877FE8 +:1028800086C08111A7C01091D9011F778091E30004 +:102890008078812B8093E3008091E800877F80938C +:1028A000E8000E94CF118091E80080FFFCCF80916A +:1028B000E30080688093E300111102C082E001C050 +:1028C00083E08093D60186C08058823008F082C0B1 +:1028D0008091D9019091DA018C3D53E0950779F50B +:1028E00083E08A838AE289834FB7F894DE011396E6 +:1028F00020E03EE051E2E32FF0E050935700E491F6 +:1029000020FF03C0E295EF703F5FEF708E2F90E0E5 +:10291000EA3010F0C79601C0C0968D939D932F5F4B +:10292000243149F74FBF8091E800877F8093E8000A +:102930006AE270E0CE0101960E94D61014C0AE018A +:102940004F5F5F4F6091DB010E941D10BC0100973B +:1029500009F440C09091E800977F9093E800898146 +:102960009A810E9439118091E8008B778093E8006A +:1029700031C0803879F58091E800877F8093E80046 +:102980008091D2018093F1008091E8008E7780934E +:10299000E8000E94CF111EC081111CC09091D90186 +:1029A0009230C0F48091E800877F8093E800909394 +:1029B000D2010E94CF118091D201811106C0809175 +:1029C000E30087FD02C081E001C084E08093D6016E +:1029D0000E94110F8091E80083FF0AC08091E800F7 +:1029E000877F8093E8008091EB0080628093EB000A +:1029F000AA960FB6F894DEBF0FBECDBFDF91CF9180 +:102A00001F910895CF938091D6018823A1F0C091A2 +:102A1000E900CF709091EC00892F817090FD80E8E3 +:102A2000C82B1092E9008091E80083FD0E94B11349 +:102A3000CF70C093E900CF91089590936A0180937D +:102A400069010895E0916901F0916A01309721F0E0 +:102A50000190F081E02D099480E00895EF92FF92BB +:102A60000F931F93CF93DF93E0916901F0916A0177 +:102A70003097B1F18C010280F381E02D09958091AE +:102A8000C10182FF2DC080FF04C088E796E00E944C +:102A9000E507E80118E082E7E82E86E0F82E80914D +:102AA000C10180FF0BC088811F928F93FF92EF922C +:102AB0000E947E080F900F900F900F90115021965A +:102AC0001111EDCF8091C10180FF0AC080E796E02F +:102AD000DF91CF911F910F91FF90EF900C94E5073C +:102AE000DF91CF911F910F91FF90EF900895E091AA +:102AF0006901F0916A01309721F00480F581E02DA1 +:102B00000994089520916701309168018217930715 +:102B100071F09093680180936701E0916901F091F1 +:102B20006A01309721F00680F781E02D099408951D +:102B300020916501309166018217930771F090939F +:102B4000660180936501E0916901F0916A01309717 +:102B500021F00084F185E02D0994089508950C94E6 +:102B6000AE150E9486200E9487080C948021CF9386 +:102B7000DF931F92CDB7DEB79091C10192FF10C0D5 +:102B800090FF0EC01F928F932AE836E03F932F9359 +:102B900089830E947E080F900F900F900F9089817B +:102BA0000F90DF91CF910C94860D9F92AF92BF92C0 +:102BB000CF92DF92EF92FF920F931F93CF93DF9309 +:102BC00000D000D000D0CDB7DEB70E94AA0807E041 +:102BD00010E0AA24A394B12C902E802F0E947D098E +:102BE000980124593E4F6901F901F080F826A1F4BB +:102BF0000150110988F78FEF89838A831B820E9415 +:102C00008F208160782F9D838C8349815A816B81CD +:102C10008D810E946C162FC09091C10191FF04C05C +:102C20008E830E9486098E8127E030E0A501022E66 +:102C300001C0440F0A94EAF7E42E4F21C1F0298322 +:102C40009A828E2191E009F490E09B830E948F206C +:102C50008160782F9D838C8349815A816B818D811E +:102C60000E946C16F6018081E826E08204C02150A3 +:102C70003109E0F6BDCF0E94EA2410916B010E9459 +:102C800022151817B9F00E94221580936B01269621 +:102C90000FB6F894DEBF0FBECDBFDF91CF911F916D +:102CA0000F91FF90EF90DF90CF90BF90AF909F90EB +:102CB0000C94B71526960FB6F894DEBF0FBECDBFA5 +:102CC000DF91CF911F910F91FF90EF90DF90CF9008 +:102CD000BF90AF909F900895CF93DF93CDB7DEB7AD +:102CE0002B970FB6F894DEBF0FBECDBF4F8358872A +:102CF00069877A878B87DE01119686E0FD01119244 +:102D00008A95E9F785E0FE01379601900D928A9544 +:102D1000E1F749815A816B817C818D819E810E947E +:102D20006D1C2B960FB6F894DEBF0FBECDBFDF91A2 +:102D3000CF910895CF93882309F499C0C82F8CEFC1 +:102D40008C0F813A48F48C2F0E94562981118FC034 +:102D50008C2F0E94471F0CC080E28C0F883058F4E3 +:102D6000C77081E001C0880FCA95EAF70E94831FEF +:102D7000CF910C94CA1F8BE58C0F833078F4C53A41 +:102D800029F0C63A31F083E890E005C081E890E090 +:102D900002C082E890E0CF910C94821588E58C0FF8 +:102DA000833108F064C0C83A39F1C93A41F1CA3AEE +:102DB00049F1CB3A51F1CC3A59F1CD3A61F1C03BEE +:102DC00069F1CE3A71F1CF3A79F1C13B81F1C23B61 +:102DD00089F1C33B91F1C43B99F1C53BA1F1C63BDD +:102DE000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B3D +:102DF000C9F180E090E038C082EE90E035C089EE05 +:102E000090E032C08AEE90E02FC085EB90E02CC0BD +:102E100086EB90E029C087EB90E026C08CEC90E038 +:102E200023C08DEC90E020C083E891E01DC08AE8CB +:102E300091E01AC082E991E017C084E991E014C0E2 +:102E400081E292E011C083E292E00EC084E292E05F +:102E50000BC085E292E008C086E292E005C087E2FE +:102E600092E002C08AE292E0CF910C949815CF9143 +:102E70000895882329F19CEF980F913A18F40E9445 +:102E8000641F0DC090E2980F983058F4877091E05D +:102E900001C0990F8A95EAF7892F0E94891F0C9427 +:102EA000CA1F9BE5980F933020F480E090E00C94CB +:102EB0008215885A833120F480E090E00C949815B4 +:102EC0000895882321F00E94831F0C94CA1F08953F +:102ED000882321F00E94891F0C94CA1F08957F92B5 +:102EE0008F929F92AF92BF92CF92DF92EF92FF921A +:102EF0000F931F93CF93DF931F92CDB7DEB77C0163 +:102F0000C62E772EFC01058102950F7012811111DA +:102F10000E94A01F0E94401F882379F0112369F0AE +:102F200080E28C0D883048F082E00E94291F0E94C8 +:102F3000401F91E0D82ED92601C0D12CE72DE29573 +:102F4000EF70F0E0E05AFF4F0C94ED2B872D807F5F +:102F5000072D0F70882311F00295007F112389F04F +:102F6000002309F498C180E28C0D883020F4802F72 +:102F70000E94831F03C0802F0E94931F0E94CA1FBC +:102F80008AC18C2D0E943917002309F49DC180E26B +:102F90008C0D883020F4802F0E94891F03C0802F61 +:102FA0000E94991F0E94CA1F8FC1872D807F972D75 +:102FB0009F70803211F4892F03C0892F8295807F02 +:102FC000CC2021F0F1E0CF16A1F01DC0112339F083 +:102FD000002319F1013009F50E94B31F75C10023C8 +:102FE00019F0013009F470C189830E94B61F8981EC +:102FF00010C1112321F0063008F066C10EC0053063 +:1030000008F062C106C1112359F0002331F0F70125 +:10301000958190FF40C19F7095830E94611754C1B4 +:10302000002309F4F6C03DC1872D869586958370EF +:1030300090E0009719F0019761F046C1112321F04B +:103040008C2D972D937002C080E090E00E94821535 +:103050003BC1112321F08C2D972D937002C080E08D +:1030600090E00E94981530C18C2D112319F00E9418 +:10307000702302C00E94D8230E945D2425C1872DA1 +:10308000837009F052C011111FC18C2D8295869555 +:103090008770880F880F9C2D9F70892E912CA12CF2 +:1030A000B12C082E04C0880C991CAA1CBB1C0A94C5 +:1030B000D2F7C4FE14C00FE010E020E030E0B90108 +:1030C000A80104C0440F551F661F771F8A95D2F7C9 +:1030D000CB01BA01609570958095909503C060E032 +:1030E00070E0CB01272D26952695237030E0223005 +:1030F000310569F02330310589F0682979298A2959 +:103100009B292130310571F00E94B51DDDC0682971 +:1031100079298A299B290E94D11DD6C00E94B51DFC +:10312000C501B4010E94991DCFC0112319F0872D4C +:10313000817001C08695882309F4C6C08C2D8295C4 +:1031400086958770880F880F9C2D9F70892E912CF3 +:10315000A12CB12C082E04C0880C991CAA1CBB1CE5 +:103160000A94D2F7C4FE14C00FE010E020E030E073 +:10317000B901A80104C0440F551F661F771F8A9527 +:10318000D2F7CB01BA01609570958095909503C0F8 +:1031900060E070E0CB01272D269526952370422F05 +:1031A00050E04230510569F04330510589F06829FB +:1031B00079298A299B294130510571F00E948F1E7F +:1031C00083C0682979298A299B290E94AB1E7CC06B +:1031D0000E948F1EC501B4010E94731E75C08C2D04 +:1031E00090E0FC01E05EF109E531F10508F04FC027 +:1031F000E059FF4F0C94ED2B0C2D0F70872D8F7124 +:10320000112321F00E940C1E802F07CF0E942D1E3B +:10321000802F0E94681758C0112341F0053008F034 +:1032200053C0872D8F710E94521E4EC0063008F089 +:103230004BC0F7CF112339F0872D8F710E940C1EE0 +:1032400043C01123C9F3872D8F710E942D1E3CC0EE +:10325000112329F0872D8F710E94F71D35C00E9420 +:10326000ED1D32C0112351F0172D1F71812F0E94C7 +:103270000C1E63E0812F0E94201F26C081E00E9467 +:10328000291F023008F182E00E94291F1DC011236E +:1032900031F0002389F28C2D0E949A1615C000236C +:1032A00091F28C2D0E9439170FC0472D4F706C2D55 +:1032B000C7010E94CC090E94111D06C0472D4F7006 +:1032C0006C2DC7010E948B0ADD20F9F00E941C1FA3 +:1032D00080FD1BC0F70112820E94161F0E940C1E67 +:1032E000C7010E9494190E94161F0F90DF91CF9181 +:1032F0001F910F91FF90EF90DF90CF90BF90AF9014 +:103300009F908F907F900C942D1E0F90DF91CF9106 +:103310001F910F91FF90EF90DF90CF90BF90AF90F3 +:103320009F908F907F9008950F931F93CF93DF937B +:10333000EC01888199812B813C81232BB9F09F3F3F +:1033400011F48F3F99F0CE010E94E309882371F0B8 +:10335000688179818A810E94121F8C010E94C71E98 +:103360000E948E1DB801CE010E946F17DF91CF9190 +:103370001F910F9108950E94A01F0E94B01F0E94EC +:10338000751F0E94CA1F0E9490250E945D2480E044 +:1033900090E00E94821580E090E00C9498150E94C5 +:1033A000901F0C94BB190E94071F292F22952F7084 +:1033B00030E02C3031054CF42A3031056CF42250C9 +:1033C000310922303105A8F407C02C30310569F0ED +:1033D0002F30310551F00DC0803F69F018F4803E68 +:1033E00040F409C0843F29F406C093FB882780F984 +:1033F000089580E0089581E00895CF93DF9300D091 +:1034000000D01F92CDB7DEB70F900F900F900F90A6 +:103410000F90DF91CF910895CF93DF9300D000D02C +:1034200000D0CDB7DEB726960FB6F894DEBF0FBE3C +:10343000CDBFDF91CF9108951F93CF93DF93C091BC +:10344000740116E080917501C81799F0D0E01C9FB7 +:10345000F0011D9FF00D1124EA58FE4F408151816B +:1034600062817381848195810E940C1A2196C770B4 +:10347000E9CFDF91CF911F9108954091A60150911E +:10348000A7016091A8017091A9018091AA01909172 +:10349000AB010C940C1A8091AB0182958F7009F0EE +:1034A00054C08091A801882309F44FC08091740111 +:1034B000A09175016091A6017091A7014091A901A9 +:1034C0005091AA01B6E08A1709F43FC090E0411577 +:1034D0005105C1F17F3F11F46F3FA1F1B89FF00199 +:1034E000B99FF00D1124EA58FE4F218172132AC0B2 +:1034F0002081621327C02281211124C023813481BD +:103500002417350710F421503109241B350B283CB2 +:103510003105C0F42091AB012F7020612093AB01E5 +:1035200026E0289FF001299FF00D1124E558FE4F59 +:1035300080818F708061808386EA91E00E94941977 +:103540000C941C1A01968770BECF0895CF92DF921B +:10355000EF92FF920F931F93CF93DF93CDB7DEB718 +:1035600062970FB6F894DEBF0FBECDBF8C0185E029 +:10357000F801DE011D9601900D928A95E1F7D801C0 +:103580004C9111965C91119712966C91129713962B +:10359000CD90DC9014973091A6017091A701809195 +:1035A000A9019091AA01009709F46BC17F3F19F41A +:1035B0003F3F09F466C1E090A801EE2009F4C0C0C5 +:1035C0002091AB01C816D90628F0F601E81BF90BCB +:1035D000CF0104C0809590958C0D9D1DFF24F39420 +:1035E000883C910578F0F12C207F09F0C6C07C2D35 +:1035F000D98AC88A89890E94FD1986EA91E00E94C9 +:103600009419B1C0822F807F09F046C0751314C091 +:10361000341312C0611110C02F7020612093AB01D0 +:103620000E943D1A86EA91E00E9494198091AB01B4 +:10363000D80115968C932EC0CD2819F15F3F11F457 +:103640004F3FF9F0F62E61111CC08091740120915A +:10365000750136E0821709F45AC090E0389FF001F6 +:10366000399FF00D1124EA58FE4F7181571306C09F +:103670007081471303C07281711103C00196877076 +:10368000E9CFF62E662309F418C18091AB01816061 +:103690008093AB01F12C11C1751308C0341306C01F +:1036A000611104C08091AB01D801C3C04D875E8712 +:1036B0008D859E856A8B0E94D3196A898823E1F1E2 +:1036C0006623D1F12091AB01822F82958F7090E01B +:1036D000029774F08091A6019091A70198878F833B +:1036E0001986DB86CA862C87CE0107960E9494191C +:1036F00086E0F801A6EAB1E001900D928A95E1F723 +:103700000E944B1A0E943D1AFF24F394D6C04D87A5 +:103710005E878D859E850E94071F292F22952F7019 +:1037200030E0223031050CF0BCC09F7009F0B6C00B +:10373000805E883008F4C1C0C8010E949419E4CFAB +:10374000C816D90608F453C0F601E81BF90BCF01DF +:10375000883C910508F450C0F12C7C2DD98AC88A88 +:1037600089890E94FD19E6EAF1E086E0DF011D92F9 +:103770008A95E9F70E943D1AA0C0751314C034134E +:1037800012C0611110C08091AB01F8018583C8019E +:103790000E94941986E0E6EAF1E0DF011D928A9525 +:1037A000E9F7FE2C8AC04D875E878D859E856A8BE2 +:1037B0000E94D3196A89882309F4BECF662309F4CD +:1037C000BBCF2091AB01822F82958F7090E0029742 +:1037D0000CF48ECF8091A6019091A7019A838983E2 +:1037E0001B82DD82CC822E83CE0101967FCF809515 +:1037F00090958C0D9D1DACCFF62E662309F49CCFC1 +:1038000075132EC034132CC02091AB0120FD1FC0B6 +:10381000822F82958F70D9F0D80115962C93159729 +:103820008F3049F08F5F982F9295907F822F8F7005 +:10383000892B15968C93C8010E94941986E0F80193 +:10384000A6EAB1E001900D928A95E1F793CF86E068 +:10385000F801A6EAB1E001900D928A95E1F72DC03A +:103860004D875E878D859E850E94D319811140CF3B +:103870008091AB0181608093AB01C8010E949419D3 +:103880001CC0662309F458CF4D875E878D859E85C1 +:103890000E94D319882309F44FCF2ACF811148CF32 +:1038A0000CC0243031050CF047CF9F7009F440CF95 +:1038B000F8019581907F09F03BCF8F2D62960FB66E +:1038C000F894DEBF0FBECDBFDF91CF911F910F9156 +:1038D000FF90EF90DF90CF9008951F93CF93DF93E9 +:1038E000CDB7DEB72C970FB6F894DEBF0FBECDBFB5 +:1038F0004F83588769877A878B879C87CE01079685 +:103900000E94A61A882369F08F8198852A853B85B5 +:10391000232BF1F19F3F09F063C08F3F09F060C096 +:1039200037C086E0FE013796DE01119601900D92B8 +:103930008A95E1F76F817885EA85FB85309741F1BB +:103940007F3F11F46F3F21F12091750130E0C901F3 +:103950000196877099274091740150E0841795076C +:1039600009F447C069837A83FD83EC8396E0929FD4 +:10397000D001939FB00D1124AA58BE4FFE0131967D +:1039800001900D929A95E1F7809375010E941C1A9F +:1039900016E080917401909175018917C1F1189F0B +:1039A000C00111248A589E4F0E94A61A882379F1DB +:1039B000E09174011E9FF0011124EA58FE4F4081EE +:1039C000518162817381848195810E940C1A80915A +:1039D000740190E001968770992780937401D9CF84 +:1039E0004F81588569857A858B859C850E940C1A44 +:1039F000CFCF0E94CF191092750110927401E6EAA0 +:103A0000F1E086E0DF011D928A95E9F7C1CF2C969F +:103A10000FB6F894DEBF0FBECDBFDF91CF911F91DF +:103A20000895EF92FF920F931F93CF93DF938C0132 +:103A3000009709F46CC0F12CEE24E394E801219680 +:103A4000F8018491843740F4843008F051C081300B +:103A500081F0823019F15BC0853709F444C0A8F1C8 +:103A60009CE7980F903708F052C08F770E94391763 +:103A700041C00E5F1F4FFE01C49180E28C0F883061 +:103A800048F4C7708E2D01C0880FCA95EAF70E94CE +:103A9000A31F14C08C2F0E949A162DC00E5F1F4FBB +:103AA000FE01C49180E28C0F883058F4C7708E2DCF +:103AB00001C0880FCA95EAF70E94A91F0E94CA1F79 +:103AC0001AC08C2F0E94391716C00E5F1F4FFE01BF +:103AD000C491CC2381F08FE99FE00197F1F700C0FA +:103AE0000000C150F6CF0E5F1F4FFE01F49003C0DF +:103AF0000E949A168E018F2D882309F49FCFEFE93B +:103B0000FFE03197F1F700C000008150F5CFDF9161 +:103B1000CF911F910F91FF90EF90089508956093BA +:103B2000B0017093B1018093B2019093B3010C94F2 +:103B3000BB190F931F930091B0011091B101209117 +:103B4000B2013091B301DC01CB01802B912BA22B70 +:103B5000B32B8093B0019093B101A093B201B093C5 +:103B6000B3011F910F910C94BB190F931F930091F8 +:103B7000B0011091B1012091B2013091B301DC018B +:103B8000CB0180239123A223B3238093B001909390 +:103B9000B101A093B201B093B3011F910F910C94A6 +:103BA000BB190F931F930091B0011091B1012091A7 +:103BB000B2013091B301DC01CB0180279127A2270C +:103BC000B3278093B0019093B101A093B201B09359 +:103BD000B3011F910F910C94BB191092AC0110927C +:103BE000AD011092AE011092AF010C94BB1941E0EF +:103BF00050E060E070E004C0440F551F661F771F5F +:103C00008A95D2F74093AC015093AD016093AE0119 +:103C10007093AF010C94BB1941E050E060E070E09C +:103C200004C0440F551F661F771F8A95D2F78091F5 +:103C3000AC019091AD01A091AE01B091AF01482BC4 +:103C4000592B6A2B7B2B4093AC015093AD016093B1 +:103C5000AE017093AF010C94BB1941E050E060E0FD +:103C600070E004C0440F551F661F771F8A95D2F776 +:103C700040955095609570958091AC019091AD0103 +:103C8000A091AE01B091AF01482359236A237B2351 +:103C90004093AC015093AD016093AE017093AF01BE +:103CA0000C94BB1941E050E060E070E004C0440FA8 +:103CB000551F661F771F8A95D2F78091AC019091AE +:103CC000AD01A091AE01B091AF01482759276A27F5 +:103CD0007B274093AC015093AD016093AE0170938C +:103CE000AF010C94BB190F931F930091AC0110917D +:103CF000AD012091AE013091AF01DC01CB01802BF1 +:103D0000912BA22BB32B8093AC019093AD01A09388 +:103D1000AE01B093AF011F910F910C94BB190F939B +:103D20001F930091AC011091AD012091AE01309133 +:103D3000AF01DC01CB0180239123A223B323809325 +:103D4000AC019093AD01A093AE01B093AF011F9170 +:103D50000F910C94BB190F931F930091AC0110911C +:103D6000AD012091AE013091AF01DC01CB01802784 +:103D70009127A227B3278093AC019093AD01A09324 +:103D8000AE01B093AF011F910F910C94BB19089530 +:103D9000CF92DF92EF92FF920F931F93CF93DF9317 +:103DA0008C01C090B001D090B101E090B201F090D0 +:103DB000B3018091AC019091AD01A091AE01B091A1 +:103DC000AF01C82AD92AEA2AFB2ACFE1D0E0D701DD +:103DD000C6010C2E04C0B695A795979587950A94B1 +:103DE000D2F780FF06C0B8018C2F0E94E80C019723 +:103DF00021F4219760F780E001C08C2FDF91CF91F3 +:103E00001F910F91FF90EF90DF90CF900895CF9387 +:103E1000DF93EC010E94C81EBE010E94E80CDF91F6 +:103E2000CF910895CB010E94071F08958091B4019E +:103E300085958595859508958091B401877008953D +:103E400098E0899F90011124262B2093B4010C94B3 +:103E50000C1E2091B401809582238093B401982F89 +:103E6000977069F430E0482F552747FD5095241787 +:103E7000350729F08595859585950C942D1E089517 +:103E80009091B401977081E009F480E00895209149 +:103E90000B0130910C01F90132969FEF40E05191F6 +:103EA000581789F09F3F19F4511101C0942F4F5FAB +:103EB0004630A9F79F3F39F0F901E90FF11D97FD51 +:103EC000FA9582830895089520910B0130910C0199 +:103ED000F9013296285F3F4F9081981301C01082FC +:103EE0003196E217F307C1F7089581E090E0E09181 +:103EF0000B01F0910C01E80FF91F10820196883038 +:103F00009105A9F708959091C001892B8093C00174 +:103F1000089580959091C00189238093C0010895F0 +:103F20001092C00108959091BF01892B8093BF0129 +:103F3000089580959091BF0189238093BF010895D2 +:103F40001092BF0108959091BE01892B8093BE010C +:103F5000089580959091BE0189238093BE010895B4 +:103F60001092BE0108958093B50108951092B50195 +:103F7000089580910B0190910C01FC0131969C01F8 +:103F8000285F3F4F80E0919191118F5FE217F30717 +:103F9000D1F70895E0910B01F0910C018091C001DF +:103FA0008083E0910B01F0910C0190818091BF0121 +:103FB000892B8083E0910B01F0910C01908180911D +:103FC000BE01892B80838091B501882361F0E09147 +:103FD0000B01F0910C019081892B80830E94B91F05 +:103FE00081111092B50180910B0190910C010C94FC +:103FF0002E159093330180933201089520E00097AD +:1040000039F0AC0141505109842395232F5FF7CF3C +:10401000822F08958295982F9C7C392F369536955E +:10402000282F237344E0249FC0011124932F982B41 +:10403000292F2A7A2695892F8575880F822B089536 +:104040008091D601843021F11092C20120E488E1F0 +:1040500090E00FB6F894A895809360000FBE20936F +:10406000600080E00E94860D83B7817F846083BFFB +:1040700083B7816083BF7894889583B78E7F83BF31 +:1040800088E10FB6F89480936000109260000FBE34 +:1040900008950E94CA090E94AA080E94CB090E94A2 +:1040A000B20991E0811101C090E0892F08950E942A +:1040B000CF190E9422150C94860D1F920F920FB6F5 +:1040C0000F9211248F939F93AF93BF938091C2015E +:1040D000811113C08091C3019091C401A091C501C9 +:1040E000B091C6014196A11DB11D8093C30190936B +:1040F000C401A093C501B093C601BF91AF919F9138 +:104100008F910F900FBE0F901F90189582E084BD85 +:1041100093E095BD9AEF97BD80936E0008952FB7F9 +:10412000F8948091C3019091C401A091C501B09110 +:10413000C6012FBF08952FB7F8946091C301709105 +:10414000C4018091C5019091C6012FBF0895CF92FF +:10415000DF92EF92FF920F931F932FB7F894409145 +:10416000C3015091C4016091C5017091C6012FBF78 +:104170006A017B01EE24FF248C0120E030E0C016B0 +:10418000D106E206F30610F4415051099A01281BAA +:10419000390BC9011F910F91FF90EF90DF90CF90E5 +:1041A0000895CF92DF92EF92FF920F931F932FB754 +:1041B000F894C090C301D090C401E090C501F09084 +:1041C000C6012FBF97018601061B170B280B390B61 +:1041D000C616D706E806F90618F0C901B80106C0E8 +:1041E000C901B80161507109810991091F910F91AD +:1041F000FF90EF90DF90CF9008951F920F920FB62F +:104200000F9211248F939F93AF93BF938091C3011B +:104210009091C401A091C501B091C6010196A11D64 +:10422000B11D8093C3019093C401A093C501B093C5 +:10423000C601BF91AF919F918F910F900FBE0F90CC +:104240001F9018950E942012F8942FEF87EA91E6AC +:10425000215080409040E1F700C0000087E090EBE3 +:10426000DC018093E0019093E101A093E201B0931F +:10427000E3019CE088E10FB6F894A8958093600074 +:104280000FBE90936000FFCFEF92FF920F931F93AA +:10429000CF93DF93D82FC7E08C2F0E947D0907E0D2 +:1042A00010E0E82EF12CC701002E02C095958795ED +:1042B0000A94E2F780FF09C0602F7C2F80E00E9403 +:1042C0008C0AD81302C081E006C00150110958F7CA +:1042D000C15010F780E0DF91CF911F910F91FF90B7 +:1042E000EF900895CF93C82F8CE20E944421882339 +:1042F00021F08C2FCF910C94442180E0CF91089530 +:10430000CF930E94C822811102C00E94AE228AEA85 +:1043100096E00E94E507C5E6C15049F00E94AA0850 +:104320008FE39CE90197F1F700C00000F5CF83EA25 +:1043300096E00E94E50789E20E94722181110CC17A +:104340008AE20E94722181110E94AE2285E00E94C1 +:10435000722181110E9422210E94D3228093C101E7 +:1043600087E00E9472218823A9F18BE10E947221CB +:10437000882351F08091C10181FB222720F991E02F +:10438000922790FB81F90EC08EE00E947221882353 +:1043900061F08091C10182FB222720F991E09227F0 +:1043A00090FB82F98093C10115C080E10E947221C7 +:1043B0009091C101882341F093FB222720F981E0ED +:1043C000822780FB93F904C0892F809580FB90F9A8 +:1043D0009093C1018091C1010E94D7220E94E522E1 +:1043E0008093DF0180EE0E947221882341F080914A +:1043F000DF01982F909590FB80F98093DF0189E38E +:104400000E947221882359F08091DF0181FB2227CD +:1044100020F991E0922790FB81F98093DF0182EEF1 +:104420000E947221882359F08091DF0182FB2227AC +:1044300020F991E0922790FB82F98093DF0186EECC +:104440000E947221882359F08091DF0183FB22278B +:1044500020F991E0922790FB83F98093DF0183EEAE +:104460000E947221882359F08091DF0184FB22276A +:1044700020F991E0922790FB84F98093DF0185E396 +:104480000E947221882359F08091DF0185FB222749 +:1044900020F991E0922790FB85F98093DF0181E379 +:1044A0000E947221882359F08091DF0186FB222728 +:1044B00020F991E0922790FB86F98093DF0181E15A +:1044C0000E947221882359F08091DF0187FB222707 +:1044D00020F991E0922790FB87F98093DF0180918A +:1044E000DF010E94E92287E20E947221C82F8EE13B +:1044F0000E9472218111C2608FE10E94722181119C +:10450000C46080E20E9472218111C86081E20E9431 +:1045100072218111C06182E20E9472218111C06208 +:1045200083E20E9472218111C06484E20E947221A0 +:10453000882311F0C06802C0CC2329F08C2F0E9480 +:10454000E0226C2F03C00E94DC22682F70E080E024 +:1045500090E0CF910C948F1DCF9108956DEE7EEF7A +:1045600080E090E00E94272C60E082E090E00E94D2 +:10457000152C60E083E090E00E94152C60E084E060 +:1045800090E00E94152C60E085E090E00C94152CE2 +:1045900080E090E00E940F2C21E08D3E9E4F09F0BC +:1045A00020E0822F089582E090E00C94072C682F81 +:1045B00082E090E00C94152C83E090E00C94072CA2 +:1045C000682F83E090E00C94152C84E090E00C942C +:1045D000072C682F84E090E00C94152C8091C90181 +:1045E00080FF0BC06091100185E0689FB00111242D +:1045F00075956795759567952BC081FF09C060918A +:10460000100185E0689FB00111247595679520C061 +:1046100082FF07C06091100185E0689FB0011124FE +:1046200017C09091CA019923D1F060910F0196179C +:1046300088F72091100185E0289F90011124929F16 +:10464000A001939F500D112470E0CA010E94D92B44 +:104650006038710540F46115710539F002C065E0FC +:1046600070E0862F08958FE7089581E00895809186 +:10467000C90180FF08C060910E0170E075956795D3 +:104680007595679521C081FF06C060910E0170E0AD +:104690007595679519C082FF04C060910E0170E0A6 +:1046A00010C09091CA019923C1F060910D01961735 +:1046B000A0F780910E01899FC001112470E00E9433 +:1046C000D92B6038710528F46115710521F0862F0A +:1046D00008958FE7089581E0089561E070E0F4CFD8 +:1046E000803F21F40E94EE22819504C0813F29F48D +:1046F0000E94EE228093CD010895823F21F40E9412 +:10470000EE22819504C0833F29F40E94EE2280931B +:10471000CC010895893F19F40E94372305C08A3FD0 +:1047200031F40E94372381958093CE0108958B3F09 +:1047300021F40E943723819504C08C3F29F40E9404 +:1047400037238093CF010895843F21F48091CB01DA +:10475000816017C0853F21F48091CB01826011C038 +:10476000863F21F48091CB0184600BC0873F21F408 +:104770008091CB01886005C0883F31F48091CB01E6 +:1047800080618093CB0108958D3F21F48091C90110 +:1047900081600BC08E3F21F48091C901826005C009 +:1047A0008F3F29F48091C90184608093C9010895E5 +:1047B000803F39F48091CD0187FF6CC01092CD010C +:1047C00069C0813F29F48091CD011816BCF362C005 +:1047D0009091CC01823F29F497FF5CC01092CC01EC +:1047E00059C0833F19F41916CCF354C0893F41F4E2 +:1047F0008091CE0118160CF04DC01092CE014AC027 +:104800008A3F29F48091CE0187FF44C0F6CF8B3FC9 +:1048100039F48091CF0187FF3DC01092CF013AC09B +:104820008C3F29F48091CF011816BCF333C0843F2C +:1048300021F48091CB018E7F17C0853F21F48091B8 +:10484000CB018D7F11C0863F21F48091CB018B7FFE +:104850000BC0873F21F48091CB01877F05C0883F43 +:1048600031F48091CB018F7E8093CB0113C08D3FBB +:1048700021F48091C9018E7F0BC08E3F21F480917D +:10488000C9018D7F05C08F3F29F48091C9018B7FBD +:104890008093C9018091CC0181110EC08091CD011E +:1048A00081110AC08091CE01811106C08091CF0193 +:1048B000811102C01092CA0108958091C10183FF45 +:1048C0007EC086EE96E00E94E5078091CB011F92A4 +:1048D0008F9381EE96E09F938F930E947E088FEDD9 +:1048E00096E00E94E5078091CC01282F332727FD11 +:1048F00030953F938F938CED96E09F938F930E941A +:104900007E088AED96E00E94E5078091CD01282F70 +:10491000332727FD30953F938F9387ED96E09F9344 +:104920008F930E947E0885ED96E00E94E5078091B6 +:10493000CE01282F332727FD30953F938F9382EDAB +:1049400096E09F938F930E947E0880ED96E00E94F0 +:10495000E5078091CF01282F332727FD30953F931E +:104960008F938DEC96E09F938F930E947E088AEC44 +:1049700096E00E94E5078091CA011F928F9387EC11 +:1049800096E09F938F930E947E0885EC96E00E94AC +:10499000E5078091C9011F928F9382EC96E09F9367 +:1049A0008F930E947E088FEB96E00E94E5078DB7FB +:1049B0009EB74C960FB6F8949EBF0FBE8DBF8BEC82 +:1049C00091E00E9477150E948F209093C8018093F8 +:1049D000C70108951F93CF93DF938091C7019091F2 +:1049E000C8010E94A720AC019091CA01992321F02F +:1049F0002091110130E006C0209112018AE0289F29 +:104A0000900111244217530708F486C08091CC010D +:104A1000C091CD01D091CE011091CF01811107C07D +:104A2000C11176C0D11174C0111172C075C09F3F01 +:104A300019F09F5F9093CA01181624F40E94EE2289 +:104A40008093CC018091CC0187FF05C00E94EE22AB +:104A500081958093CC011C1624F40E94EE22809351 +:104A6000CD018091CD0187FF05C00E94EE22819586 +:104A70008093CD016091CC01662339F1C091CD01C5 +:104A8000CC2319F1772767FD7095872F972F0E9408 +:104A9000DE2A23E333E343E35FE30E94422B0E94D9 +:104AA000AB2A6093CC016C2F772767FD7095872F19 +:104AB000972F0E94DE2A23E333E343E35FE30E9460 +:104AC000422B0E94AB2A6093CD011D1624F40E9454 +:104AD00037238093CE018091CE0187FF05C00E94CD +:104AE000372381958093CE01111624F40E94372339 +:104AF0008093CF018091CF0187FF05C00E943723AB +:104B000081958093CF01DF91CF911F910C945D240B +:104B10009F3F09F08ECF96CFDF91CF911F910895DF +:104B2000EBECF1E085E0DF011D928A95E9F7109248 +:104B3000CA011092C901089589E099E00E94E50731 +:104B40001F9281E08F931F9285E08F938BEB98E00B +:104B50009F938F930E947E080F900F900F900F905D +:104B60000F900F9008958330E9F128F4813061F0BF +:104B7000823009F10895853009F462C008F449C013 +:104B8000863009F474C0089580911201262F30E018 +:104B9000280F311D2F3F310524F4680F6093120157 +:104BA00003C08FEF80931201809112011F928F93A7 +:104BB00084EF97E072C080911101262F30E0280F1A +:104BC000311D2F3F310524F4680F6093110103C09C +:104BD0008FEF80931101809111011F928F9382EECC +:104BE00097E05BC080911001262F30E0280F311D27 +:104BF0002F3F310524F4680F6093100103C08FEF3D +:104C000080931001809110011F928F938FEC97E099 +:104C100044C080910F01262F30E0280F311D2F3F17 +:104C2000310524F4680F60930F0103C08FEF809368 +:104C30000F0180910F011F928F938AEB97E02DC097 +:104C400080910E01262F30E0280F311D2F3F3105B6 +:104C500024F4680F60930E0103C08FEF80930E0160 +:104C600080910E011F928F9381EA97E016C0809188 +:104C70000D01262F30E0280F311D2F3F310524F480 +:104C8000680F60930D0103C08FEF80930D01809139 +:104C90000D011F928F9386E897E09F938F930E9458 +:104CA0007E080F900F900F900F900895833081F140 +:104CB00028F4813059F08230D1F00895853009F41C +:104CC00049C0B8F1863009F456C0089580911201A8 +:104CD000681720F4861B8093120102C01092120103 +:104CE000809112011F928F9387E797E054C08091C3 +:104CF0001101681720F4861B8093110102C01092E5 +:104D00001101809111011F928F9385E697E043C0B6 +:104D100080911001681720F4861B8093100102C057 +:104D200010921001809110011F928F9382E597E0FD +:104D300032C080910F01681720F4861B80930F0109 +:104D400002C010920F0180910F011F928F938DE38B +:104D500097E021C080910E01681720F4861B809394 +:104D60000E0102C010920E0180910E011F928F93CE +:104D700084E297E010C080910D01681720F4861B33 +:104D800080930D0102C010920D0180910D011F92C0 +:104D90008F9389E097E09F938F930E947E080F90F6 +:104DA0000F900F900F900895CF93C82F1F928F935D +:104DB0008EE09AE09F938F930E947E0881E090E0BE +:104DC000A0E0B0E0BC01CD0104C0660F771F881FD2 +:104DD000991FCA95D2F70E948F1D0F900F900F90C8 +:104DE0000F90CF910C94CF19CF938732B0F58E31BD +:104DF00008F04AC28E3009F4C4C100F5873009F4C6 +:104E00008DC1A8F4863009F045C28091C101817F2F +:104E10008E7F8093C1018DE79BE00E94E50786E1CC +:104E20009FE00E94E50781E08093D10175C1883041 +:104E300009F43FC08B3009F46BC12CC2863109F4F0 +:104E4000E6C120F4803109F4B0C124C2893109F4EB +:104E5000C7C18B3109F481C11DC2883309F458C11F +:104E600050F4893209F412C2853309F40FC2873233 +:104E700009F40CC20FC2833409F408C228F48A333F +:104E800008F408C2895303C2883409F003C20E949F +:104E9000CF198AEF9EE00E94E5079FEF23ED80E3A4 +:104EA000915020408040E1F700C000000E94222184 +:104EB00033C18AE19FE00E94E5078CE79EE00E94F3 +:104EC000E5070E94DC221F928F9389E79EE09F9363 +:104ED0008F930E947E0887E79EE00E94E5070E946C +:104EE000D322C82F84E69EE00E94E5071F92CF934D +:104EF0008FE59EE09F938F930E947E088DE59EE054 +:104F00000E94E50783E59EE00E94E5078C2F8170F3 +:104F10001F928F9380E59EE09F938F930E947E085F +:104F20008EE49EE00E94E50784E49EE00E94E5078F +:104F3000C1FB882780F91F928F9381E49EE09F93A5 +:104F40008F930E947E088FE39EE00E94E50783E333 +:104F50009EE00E94E507C2FB882780F91F928F938D +:104F600080E39EE09F938F930E947E088EE29EE0F6 +:104F70000E94E50785E29EE00E94E507C3FBCC277F +:104F8000C0F91F92CF9382E29EE09F938F930E947D +:104F90007E0880E29EE00E94E5070E94E522C82F7D +:104FA0008CE09EE00E94E5071F92CF9387E09EE091 +:104FB0009F938F930E947E0885E09EE00E94E50704 +:104FC0008CEE9DE00E94E5078C2F81701F928F93DD +:104FD00089EE9DE09F938F930E947E088DB79EB7C8 +:104FE00080960FB6F8949EBF0FBE8DBF87EE9DE0F2 +:104FF0000E94E50780ED9DE00E94E507C1FB882740 +:1050000080F91F928F938DEC9DE09F938F930E9468 +:105010007E088BEC9DE00E94E50789EB9DE00E94F5 +:10502000E507C2FB882780F91F928F9386EB9DE0EE +:105030009F938F930E947E0884EB9DE00E94E5077A +:1050400082EA9DE00E94E507C3FB882780F91F9252 +:105050008F938FE99DE09F938F930E947E088DE947 +:105060009DE00E94E50783E99DE00E94E507C4FBFF +:10507000882780F91F928F9380E99DE09F938F93FB +:105080000E947E088EE89DE00E94E5078CE79DE087 +:105090000E94E507C5FB882780F91F928F9389E757 +:1050A0009DE09F938F930E947E0887E79DE00E947A +:1050B000E5078BE59DE00E94E507C6FB882780F9A0 +:1050C0001F928F9388E59DE09F938F930E947E08A7 +:1050D00086E59DE00E94E5078EE49DE00E94E507DD +:1050E000C7FBCC27C0F91F92CF938BE49DE09F9321 +:1050F0008F930E947E0889E49DE00E94E5078DB7AA +:105100009EB74C960FB6F8949EBF0FBE8DBF04C0DD +:1051100084EA9BE00E94E507C1E0C1C08091C10123 +:10512000C82FC095C170C0FB80F98093C101CC230A +:1051300049F08EEE9EE00E94E5078091C1018660F5 +:10514000886048C081EE9EE00E94E5078091C10121 +:10515000897F877F8093C101DFCF9091C10191FB4F +:10516000CC27C0F981E0C827892FC0FB81F9809343 +:10517000C101CC2319F084ED9EE027C086EC9EE0AF +:10518000C9CF9091C10192FBCC27C0F981E0C8271B +:10519000892FC0FB82F98093C101CC2319F087EBE2 +:1051A0009EE013C087EA9EE0B5CF9091C10193FBCA +:1051B000CC27C0F981E0C827892FC0FB83F98093F1 +:1051C000C101CC2351F08BE99EE00E94E50780915C +:1051D000C10181608093C10162C08EE89EE09ACFD8 +:1051E0008EE69BE00E94E50786E49BE00E94E507CF +:1051F00080E19BE00E94E50783EE9AE00E94E507CC +:1052000084EA9AE00E94E50789E79AE083CF8BE67B +:105210009AE00E94E5070E9422151F928F9381E574 +:105220009AE09F938F930E947E0880910A011F92BB +:105230008F938AE39AE09F938F930E947E088091D8 +:1052400064011F928F9387E29AE09F938F930E944D +:105250007E088091C3019091C401A091C501B091D5 +:10526000C601BF93AF939F938F9383E19AE09F937F +:105270008F930E947E088DB79EB742960FB6F89422 +:105280009EBF0FBE8DBF48CF8D5101C080E00E94F0 +:10529000D42642CF8CE89EE00E94E507C0E08C2F28 +:1052A000CF91089580E0089580E00895CF93C82FAE +:1052B0008091D101813071F020F0823009F44BC02F +:1052C00042C1E0910B01F0910C018081823209F022 +:1052D0003CC107C0E0910B01F0910C01808182324A +:1052E00061F48C2F0E945229811104C08C2F0E94DE +:1052F000F4262FC081E090E02CC08C2F0E9454290E +:10530000811126C0C431E1F070F4CB3081F0C0319E +:10531000D1F40E949C2586E09AE00E94E50782E095 +:105320008093D10115C0C93259F0C83361F48DE7BB +:105330009BE00E94E5078AE09AE00E94E50708C02A +:105340001092D10104C184E09AE00E94E507FFC0F9 +:1053500081E08170FEC0C43228F5CE3108F0C1C0B2 +:10536000CB30A1F1D0F4C73009F0D3C08EE18093E7 +:10537000120182E3809311018AE08093100184E19D +:1053800080930F0188E080930E0188E280930D01E5 +:105390008AEA98E00E94E507BFC0C33149F1C431F1 +:1053A000C1F0B7C0CB3409F4A9C028F4C93289F0E0 +:1053B000C83361F0AEC0C13509F49EC0C23509F4EE +:1053C00099C0CE3409F0A5C06AE09EC00E949C2519 +:1053D000A3C08091D001882319F01092D0019CC005 +:1053E00087EB98E00E94E50781E08093D101B1C08E +:1053F00081E998E00E94E5078FE798E00E94E507C1 +:10540000809112011F928F938CE798E09F938F9366 +:105410000E947E088AE798E00E94E50788E698E007 +:105420000E94E507809111011F928F9385E698E015 +:105430009F938F930E947E0883E698E00E94E50781 +:1054400084E598E00E94E507809110011F928F93F8 +:1054500081E598E09F938F930E947E088FE498E007 +:105460000E94E5078EE398E00E94E50780910F0116 +:105470001F928F938BE398E09F938F930E947E08F7 +:1054800089E398E00E94E50784E298E00E94E5073E +:1054900080910E011F928F9381E298E09F938F93EA +:1054A0000E947E088FE198E00E94E50788E098E07E +:1054B0000E94E50780910D011F928F9385E098E08F +:1054C0009F938F930E947E0883E098E00E94E507F7 +:1054D0008DB79EB748960FB6F8949EBF0FBE8DBF8E +:1054E0001BC0CE51EC2FF0E0E95DFE4F8081809330 +:1054F000D00112C061E003C061E006C06AE08091A3 +:10550000D0010E94B32508C08091D0010E94562688 +:1055100003C088EA98E013C08091D001882369F025 +:105520001F928F9382EA98E09F938F930E947E0848 +:105530000F900F900F900F9004C08FE998E00E9499 +:10554000E50781E006C01092D10180E002C080E052 +:1055500000CFCF91089504D06894B1118DC0089503 +:1055600070D088F09F5790F0B92F9927B751A0F0CD +:10557000D1F0660F771F881F991F1AF0BA95C9F7E7 +:1055800012C0B13081F077D0B1E0089574C0672FB8 +:10559000782F8827B85F39F0B93FCCF38695779597 +:1055A0006795B395D9F73EF4909580957095619580 +:1055B0007F4F8F4F9F4F0895E89409C097FB3EF4AB +:1055C00090958095709561957F4F8F4F9F4F992350 +:1055D000A9F0F92F96E9BB279395F69587957795CE +:1055E0006795B795F111F8CFFAF4BB0F11F460FF8E +:1055F0001BC06F5F7F4F8F4F9F4F16C0882311F0E6 +:1056000096E911C0772321F09EE8872F762F05C0F9 +:10561000662371F096E8862F70E060E02AF09A9594 +:10562000660F771F881FDAF7880F9695879597F989 +:10563000089557FD9058440F551F59F05F3F71F082 +:105640004795880F97FB991F61F09F3F79F08795E9 +:105650000895121613061406551FF2CF4695F1DF72 +:1056600008C0161617061806991FF1CF8695710502 +:10567000610508940895E894BB2766277727CB0136 +:1056800097F908950BD078C069D028F06ED018F043 +:10569000952309F05AC05FC01124EECFCADFA0F3F2 +:1056A000959FD1F3950F50E0551F629FF001729FB7 +:1056B000BB27F00DB11D639FAA27F00DB11DAA1FD6 +:1056C000649F6627B00DA11D661F829F2227B00D23 +:1056D000A11D621F739FB00DA11D621F839FA00DAE +:1056E000611D221F749F3327A00D611D231F849FFE +:1056F000600D211D822F762F6A2F11249F57504055 +:105700008AF0E1F088234AF0EE0FFF1FBB1F661FEF +:10571000771F881F91505040A9F79E3F510570F0A8 +:1057200014C0AACF5F3FECF3983EDCF386957795E3 +:105730006795B795F795E7959F5FC1F7FE2B880FA3 +:10574000911D9695879597F9089597F99F6780E839 +:1057500070E060E008959FEF80EC089500240A94C3 +:105760001616170618060906089500240A9412163C +:105770001306140605060895092E0394000C11F46F +:10578000882352F0BB0F40F4BF2B11F460FF04C01C +:105790006F5F7F4F8F4F9F4F0895991B79E004C033 +:1057A000991F961708F0961B881F7A95C9F7809560 +:1057B000089597FB072E16F4009407D077FD09D0C3 +:1057C0000E94F32B07FC05D03EF4909581959F4FE6 +:1057D0000895709561957F4F0895EE0FFF1F059016 +:1057E000F491E02D0994AA1BBB1B51E107C0AA1F2D +:1057F000BB1FA617B70710F0A61BB70B881F991F72 +:105800005A95A9F780959095BC01CD010895F99915 +:10581000FECF92BD81BDF89A992780B50895A8E181 +:10582000B0E042E050E00C942F2C262FF999FECFE7 +:1058300092BD81BDF89A019700B4021639F01FBAE3 +:1058400020BD0FB6F894FA9AF99A0FBE0895019602 +:10585000272F0E94162C0C94152CDC01CB01FC0187 +:10586000F999FECF06C0F2BDE1BDF89A319600B4B9 +:0E5870000D9241505040B8F70895F894FFCFC4 +:10587E00880D790E560E220EEE0D01B60128081473 +:10588E000A321E3F4D36203106E405AE058E051A4E +:10589E000533054C056505010203040506070809D5 +:0258AE000000F8 +:00000001FF diff --git a/keyboards/hhkb/keymaps/lxol/keymap.c b/keyboards/hhkb/keymaps/lxol/keymap.c new file mode 100644 index 0000000000..ccf1e07042 --- /dev/null +++ b/keyboards/hhkb/keymaps/lxol/keymap.c @@ -0,0 +1,208 @@ +/* -*- eval: (turn-on-orgtbl); -*- + * lxol HHKB Layout + */ +#include "hhkb.h" + +#define BASE 0 +#define WIN 1 +#define HHKB 2 +#define RGUILEV 3 +#define LGUILEV 4 +#define RALTLEV 5 +#define LALTLEV 6 + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Layer 0: Default Layer + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Contro | A | S | D | F | G | H | J | K | L | ; | ' | RCtl/Ent | | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + + |------+------+-------+------+------| + | LAlt | LGUI | Space | RGUI | RAlt | + |------+------+-------+------+------| + */ + + [BASE] = KEYMAP( // layer 0 : default + + + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \ + KC_LCTL, LT(LALTLEV,KC_A), LT(LGUILEV,KC_S), KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, LT(RGUILEV,KC_L), LT(RALTLEV,KC_SCLN), KC_QUOT, KC_FN0, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(HHKB), \ + KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT), + + + + /* Layer 1: HHKB mode (HHKB Fn) + |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| + | Pwr | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del | + |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| + | Caps | | | | | | | | Psc | Slk | Pus | Up | | Backs | | + |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| + | | VoD | VoU | Mut | | | * | / | Hom | PgU | Lef | Rig | Enter | | | + |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| + | | | | | | | + | - | End | PgD | Dow | | | | | + |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| + + |---+---+---+---+---| + | | | | | | + |---+---+---+---+---| + */ + + [HHKB] = KEYMAP( + KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, \ + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_BSPC, \ + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + + /* Layer LGUI: All keys with RGUI modifier + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Contro | A | S | D | F | G | H | J | K | | ; | ' | RCtl/Ent | | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + + |------+------+-------+------+------| + | LAlt | LGUI | Space | RGUI | RAlt | + |------+------+-------+------+------| + */ + + [RGUILEV] = KEYMAP( // Right GUI layer by KC_L + + RGUI(KC_ESC), RGUI(KC_1), RGUI(KC_2), RGUI(KC_3), RGUI(KC_4), RGUI(KC_5), RGUI(KC_6), RGUI(KC_7), RGUI(KC_8), RGUI(KC_9), RGUI(KC_0), RGUI(KC_MINS), RGUI(KC_EQL), RGUI(KC_BSLS), RGUI(KC_GRV), \ + RGUI(KC_TAB), RGUI(KC_Q), RGUI(KC_W), RGUI(KC_E), RGUI(KC_R), RGUI(KC_T), RGUI(KC_Y), RGUI(KC_U), RGUI(KC_I), RGUI(KC_O), RGUI(KC_P), RGUI(KC_LBRC), RGUI(KC_RBRC), RGUI(KC_BSPC), \ + RGUI(KC_LCTL), RGUI(KC_A), RGUI(KC_S), RGUI(KC_D), RGUI(KC_F), RGUI(KC_G), RGUI(KC_H), RGUI(KC_J), RGUI(KC_K), KC_TRNS, KC_TRNS, RGUI(KC_QUOT), KC_FN0, \ + RGUI(KC_LSFT), RGUI(KC_Z), RGUI(KC_X), RGUI(KC_C), RGUI(KC_V), RGUI(KC_B), RGUI(KC_N), RGUI(KC_M), RGUI(KC_COMM), RGUI(KC_DOT), RGUI(KC_SLSH), RGUI(KC_RSFT), KC_TRNS, \ + KC_LALT, KC_LGUI, RGUI(KC_SPC), KC_RGUI, KC_RALT), + + /* Layer LGUI: All keys with LGUI modifier + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Contro | A | S | D | F | G | H | J | K | | ; | ' | RCtl/Ent | | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + + |------+------+-------+------+------| + | LAlt | LGUI | Space | LGUI | RAlt | + |------+------+-------+------+------| + */ + + [LGUILEV] = KEYMAP( // Right GUI layer by KC_L + + LGUI(KC_ESC), LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), LGUI(KC_4), LGUI(KC_5), LGUI(KC_6), LGUI(KC_7), LGUI(KC_8), LGUI(KC_9), LGUI(KC_0), LGUI(KC_MINS), LGUI(KC_EQL), LGUI(KC_BSLS), LGUI(KC_GRV), \ + LGUI(KC_TAB), LGUI(KC_Q), LGUI(KC_W), LGUI(KC_E), LGUI(KC_R), LGUI(KC_T), LGUI(KC_Y), LGUI(KC_U), LGUI(KC_I), LGUI(KC_O), LGUI(KC_P), LGUI(KC_LBRC), LGUI(KC_RBRC), LGUI(KC_BSPC), \ + LGUI(KC_LCTL), KC_TRNS, KC_TRNS, LGUI(KC_D), LGUI(KC_F), LGUI(KC_G), LGUI(KC_H), LGUI(KC_J), LGUI(KC_K), LGUI(KC_L), LGUI(KC_SCLN), LGUI(KC_QUOT), KC_FN0, \ + KC_LSFT, LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), LGUI(KC_B), LGUI(KC_N), LGUI(KC_M), LGUI(KC_COMM), LGUI(KC_DOT), LGUI(KC_SLSH), KC_RSFT, KC_TRNS, \ + KC_LALT, KC_LGUI, LGUI(KC_SPC), KC_LGUI, KC_RALT), + + /* Layer LALT: All keys with RALT modifier + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Contro | A | S | D | F | G | H | J | K | | ; | ' | RCtl/Ent | | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + + |------+------+-------+------+------| + | LAlt | LGUI | Space | RGUI | RAlt | + |------+------+-------+------+------| + */ + + [RALTLEV] = KEYMAP( // Right ALT layer by KC_L + + RALT(KC_ESC), RALT(KC_1), RALT(KC_2), RALT(KC_3), RALT(KC_4), RALT(KC_5), RALT(KC_6), RALT(KC_7), RALT(KC_8), RALT(KC_9), RALT(KC_0), RALT(KC_MINS), RALT(KC_EQL), RALT(KC_BSLS), RALT(KC_GRV), \ + RALT(KC_TAB), RALT(KC_Q), RALT(KC_W), RALT(KC_E), RALT(KC_R), RALT(KC_T), RALT(KC_Y), RALT(KC_U), RALT(KC_I), RALT(KC_O), RALT(KC_P), RALT(KC_LBRC), RALT(KC_RBRC), RALT(KC_BSPC), \ + RALT(KC_LCTL), RALT(KC_A), RALT(KC_S), RALT(KC_D), RALT(KC_F), RALT(KC_G), RALT(KC_H), RALT(KC_J), RALT(KC_K), KC_TRNS, KC_TRNS, RALT(KC_QUOT), KC_FN0, \ + RALT(KC_LSFT), RALT(KC_Z), RALT(KC_X), RALT(KC_C), RALT(KC_V), RALT(KC_B), RALT(KC_N), RALT(KC_M), RALT(KC_COMM), RALT(KC_DOT), RALT(KC_SLSH), RALT(KC_RSFT), KC_TRNS, \ + KC_LALT, KC_LGUI, RALT(KC_SPC), KC_RGUI, KC_RALT), + + /* Layer LALT: All keys with LALT modifier + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Contro | A | S | D | F | G | H | J | K | | ; | ' | RCtl/Ent | | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + + |------+------+-------+------+------| + | LAlt | LGUI | Space | LGUI | RAlt | + |------+------+-------+------+------| + */ + + [LALTLEV] = KEYMAP( // Right ALT layer by KC_L + + LALT(KC_ESC), LALT(KC_1), LALT(KC_2), LALT(KC_3), LALT(KC_4), LALT(KC_5), LALT(KC_6), LALT(KC_7), LALT(KC_8), LALT(KC_9), LALT(KC_0), LALT(KC_MINS), LALT(KC_EQL), LALT(KC_BSLS), LALT(KC_GRV), \ + LALT(KC_TAB), LALT(KC_Q), LALT(KC_W), LALT(KC_E), LALT(KC_R), LALT(KC_T), LALT(KC_Y), LALT(KC_U), LALT(KC_I), LALT(KC_O), LALT(KC_P), LALT(KC_LBRC), LALT(KC_RBRC), LALT(KC_BSPC), \ + LALT(KC_LCTL), KC_TRNS, KC_TRNS, LALT(KC_D), LALT(KC_F), LALT(KC_G), LALT(KC_H), LALT(KC_J), LALT(KC_K), LALT(KC_L), LALT(KC_SCLN), LALT(KC_QUOT), KC_FN0, \ + KC_LSFT, LALT(KC_Z), LALT(KC_X), LALT(KC_C), LALT(KC_V), LALT(KC_B), LALT(KC_N), LALT(KC_M), LALT(KC_COMM), LALT(KC_DOT), LALT(KC_SLSH), KC_RSFT, KC_TRNS, \ + KC_LALT, KC_LGUI, LALT(KC_SPC), KC_LGUI, KC_RALT), + + + /* Layer WIN: Win layer + |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---| + | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | + |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---| + | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | | + |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---| + | Contro | A | S | D | F | G | H | J | K | L | ; | ' | RCtl/Ent | | | + |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---| + | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0 | | | + |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---| + + |------+------+-------+------+------| + | LGui | LAlt | Space | RGui | Ralt | + |------+------+-------+------+------| + */ + + [WIN] = KEYMAP( // BASE level with swapped GUI/ALT + + + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \ + KC_LCTL, LT(LGUILEV,KC_A), LT(LALTLEV,KC_S), KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, LT(RALTLEV,KC_L), LT(RGUILEV,KC_SCLN), KC_QUOT, KC_FN0, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(HHKB), \ + KC_RGUI, KC_RALT, KC_SPC, KC_RALT, KC_RGUI)}; + + +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENT) // RControl with tap Enter* +}; + +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; +}; diff --git a/keyboards/hhkb/matrix.c b/keyboards/hhkb/matrix.c new file mode 100644 index 0000000000..2dfb2f5e1f --- /dev/null +++ b/keyboards/hhkb/matrix.c @@ -0,0 +1,204 @@ +/* +Copyright 2011 Jun Wako + +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 . +*/ + +/* + * scan matrix + */ +#include +#include +#include +#include "print.h" +#include "debug.h" +#include "util.h" +#include "timer.h" +#include "matrix.h" +#include "hhkb_avr.h" +#include +#include "suspend.h" +#include "lufa.h" + + +// matrix power saving +#define MATRIX_POWER_SAVE 10000 +static uint32_t matrix_last_modified = 0; + +// matrix state buffer(1:on, 0:off) +static matrix_row_t *matrix; +static matrix_row_t *matrix_prev; +static matrix_row_t _matrix0[MATRIX_ROWS]; +static matrix_row_t _matrix1[MATRIX_ROWS]; + + +inline +uint8_t matrix_rows(void) +{ + return MATRIX_ROWS; +} + +inline +uint8_t matrix_cols(void) +{ + return MATRIX_COLS; +} + +void matrix_init(void) +{ +#ifdef DEBUG + debug_enable = true; + debug_keyboard = true; +#endif + + KEY_INIT(); + + // initialize matrix state: all keys off + for (uint8_t i=0; i < MATRIX_ROWS; i++) _matrix0[i] = 0x00; + for (uint8_t i=0; i < MATRIX_ROWS; i++) _matrix1[i] = 0x00; + matrix = _matrix0; + matrix_prev = _matrix1; +} + +uint8_t matrix_scan(void) +{ + uint8_t *tmp; + + tmp = matrix_prev; + matrix_prev = matrix; + matrix = tmp; + + // power on + if (!KEY_POWER_STATE()) KEY_POWER_ON(); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + KEY_SELECT(row, col); + _delay_us(5); + + // Not sure this is needed. This just emulates HHKB controller's behaviour. + if (matrix_prev[row] & (1< 20/(1000000/TIMER_RAW_FREQ)) { + matrix[row] = matrix_prev[row]; + } + + _delay_us(5); + KEY_PREV_OFF(); + KEY_UNABLE(); + + // NOTE: KEY_STATE keep its state in 20us after KEY_ENABLE. + // This takes 25us or more to make sure KEY_STATE returns to idle state. +#ifdef HHKB_JP + // Looks like JP needs faster scan due to its twice larger matrix + // or it can drop keys in fast key typing + _delay_us(30); +#else + _delay_us(75); +#endif + } + if (matrix[row] ^ matrix_prev[row]) matrix_last_modified = timer_read32(); + } + // power off + if (KEY_POWER_STATE() && + (USB_DeviceState == DEVICE_STATE_Suspended || + USB_DeviceState == DEVICE_STATE_Unattached ) && + timer_elapsed32(matrix_last_modified) > MATRIX_POWER_SAVE) { + KEY_POWER_OFF(); + suspend_power_down(); + } + return 1; +} + +bool matrix_is_modified(void) +{ + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + if (matrix[i] != matrix_prev[i]) + return true; + } + return false; +} + +inline +bool matrix_has_ghost(void) +{ + return false; +} + +inline +bool matrix_is_on(uint8_t row, uint8_t col) +{ + return (matrix[row] & (1<= 0; --r) { + count += bitpop16(matrix_get_row(r)); + } + return count; +} + +void matrix_power_up(void) { + KEY_POWER_ON(); +} +void matrix_power_down(void) { + KEY_POWER_OFF(); +} -- cgit v1.2.3 From 13bb6b4b7fdd2b3e419d0f89c93fb980b00eeb9b Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Thu, 23 Jun 2016 22:18:20 -0400 Subject: Backlight abstraction and other changes (#439) * redoes matrix pins, abstracts backlight code for B5,6,7 * slimming down keyboard stuff, backlight breathing implemented * don't call backlight init when no pin * cleans up user/kb/quantum calls, keyboard files * fix pvc atomic * replaces CHANNEL with correct var in breathing * removes .hexs, updates readmes, updates template * cleans-up clueboards, readmes to lowercase * updates readme --- keyboards/hhkb/README.md | 180 ---- keyboards/hhkb/hhkb.c | 30 +- keyboards/hhkb/hhkb.h | 8 +- keyboards/hhkb/keymaps/default/compiled.hex | 1381 -------------------------- keyboards/hhkb/keymaps/lxol/compiled.hex | 1421 --------------------------- keyboards/hhkb/readme.md | 180 ++++ 6 files changed, 182 insertions(+), 3018 deletions(-) delete mode 100644 keyboards/hhkb/README.md delete mode 100644 keyboards/hhkb/keymaps/default/compiled.hex delete mode 100644 keyboards/hhkb/keymaps/lxol/compiled.hex create mode 100644 keyboards/hhkb/readme.md (limited to 'keyboards/hhkb') diff --git a/keyboards/hhkb/README.md b/keyboards/hhkb/README.md deleted file mode 100644 index 2bfec7aa54..0000000000 --- a/keyboards/hhkb/README.md +++ /dev/null @@ -1,180 +0,0 @@ -hhkb_qmk keyboard firmware -====================== - -## Quantum MK Firmware - -You have access to a bunch of goodies! Check out the Makefile to enable/disable some of the features. Uncomment the `#` to enable them. Setting them to `no` does nothing and will only confuse future you. - - BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality - MIDI_ENABLE = yes # MIDI controls - # UNICODE_ENABLE = yes # Unicode support - this is commented out, just as an example. You have to use #, not // - BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID - -## Quick aliases to common actions - -Your keymap can include shortcuts to common operations (called "function actions" in tmk). - -### Switching and toggling layers - -`MO(layer)` - momentary switch to *layer*. As soon as you let go of the key, the layer is deactivated and you pop back out to the previous layer. When you apply this to a key, that same key must be set as `KC_TRNS` on the destination layer. Otherwise, you won't make it back to the original layer when you release the key (and you'll get a keycode sent). You can only switch to layers *above* your current layer. If you're on layer 0 and you use `MO(1)`, that will switch to layer 1 just fine. But if you include `MO(3)` on layer 5, that won't do anything for you -- because layer 3 is lower than layer 5 on the stack. - -`LT(layer, kc)` - momentary switch to *layer* when held, and *kc* when tapped. Like `MO()`, this only works upwards in the layer stack (`layer` must be higher than the current layer). - -`TG(layer)` - toggles a layer on or off. As with `MO()`, you should set this key as `KC_TRNS` in the destination layer so that tapping it again actually toggles back to the original layer. Only works upwards in the layer stack. - -### Fun with modifier keys - -* `LSFT(kc)` - applies left Shift to *kc* (keycode) - `S(kc)` is an alias -* `RSFT(kc)` - applies right Shift to *kc* -* `LCTL(kc)` - applies left Control to *kc* -* `RCTL(kc)` - applies right Control to *kc* -* `LALT(kc)` - applies left Alt to *kc* -* `RALT(kc)` - applies right Alt to *kc* -* `LGUI(kc)` - applies left GUI (command/win) to *kc* -* `RGUI(kc)` - applies right GUI (command/win) to *kc* - -You can also chain these, like this: - - LALT(LCTL(KC_DEL)) -- this makes a key that sends Alt, Control, and Delete in a single keypress. - -The following shortcuts automatically add `LSFT()` to keycodes to get commonly used symbols. Their long names are also available and documented in `/quantum/keymap_common.h`. - - KC_TILD ~ - KC_EXLM ! - KC_AT @ - KC_HASH # - KC_DLR $ - KC_PERC % - KC_CIRC ^ - KC_AMPR & - KC_ASTR * - KC_LPRN ( - KC_RPRN ) - KC_UNDS _ - KC_PLUS + - KC_LCBR { - KC_RCBR } - KC_PIPE | - KC_COLN : - -`MT(mod, kc)` - is *mod* (modifier key - MOD_LCTL, MOD_LSFT) when held, and *kc* when tapped. In other words, you can have a key that sends Esc (or the letter O or whatever) when you tap it, but works as a Control key or a Shift key when you hold it down. - -These are the values you can use for the `mod` in `MT()` (right-hand modifiers are not available): - - * MOD_LCTL - * MOD_LSFT - * MOD_LALT - * MOD_LGUI - -These can also be combined like `MOD_LCTL | MOD_LSFT` e.g. `MT(MOD_LCTL | MOD_LSFT, KC_ESC)` which would activate Control and Shift when held, and send Escape when tapped. - -We've added shortcuts to make common modifier/tap (mod-tap) mappings more compact: - - * `CTL_T(kc)` - is LCTL when held and *kc* when tapped - * `SFT_T(kc)` - is LSFT when held and *kc* when tapped - * `ALT_T(kc)` - is LALT when held and *kc* when tapped - * `GUI_T(kc)` - is LGUI when held and *kc* when tapped - * `ALL_T(kc)` - is Hyper (all mods) when held and *kc* when tapped. To read more about what you can do with a Hyper key, see [this blog post by Brett Terpstra](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/) - -### Temporarily setting the default layer - -`DF(layer)` - sets default layer to *layer*. The default layer is the one at the "bottom" of the layer stack - the ultimate fallback layer. This currently does not persist over power loss. When you plug the keyboard back in, layer 0 will always be the default. It is theoretically possible to work around that, but that's not what `DF` does. - -### Remember: These are just aliases - -These functions work the same way that their `ACTION_*` functions do - they're just quick aliases. To dig into all of the tmk ACTION_* functions, please see the [TMK documentation](https://github.com/jackhumbert/qmk_firmware/blob/master/tmk_core/doc/keymap.md#2-action). - -Instead of using `FNx` when defining `ACTION_*` functions, you can use `F(x)` - the benefit here is being able to use more than 32 function actions (up to 4096), if you happen to need them. - -## Macro shortcuts: Send a whole string when pressing just one key - -Instead of using the `ACTION_MACRO` function, you can simply use `M(n)` to access macro *n* - *n* will get passed into the `action_get_macro` as the `id`, and you can use a switch statement to trigger it. This gets called on the keydown and keyup, so you'll need to use an if statement testing `record->event.pressed` (see keymap_default.c). - -```c -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // this is the function signature -- just copy/paste it into your keymap file as it is. -{ - switch(id) { - case 0: // this would trigger when you hit a key mapped as M(0) - if (record->event.pressed) { - return MACRO( I(255), T(H), T(E), T(L), T(L), W(255), T(O), END ); // this sends the string 'hello' when the macro executes - } - break; - } - return MACRO_NONE; -}; -``` -A macro can include the following commands: - -* I() change interval of stroke in milliseconds. -* D() press key. -* U() release key. -* T() type key(press and release). -* W() wait (milliseconds). -* END end mark. - -So above you can see the stroke interval changed to 255ms between each keystroke, then a bunch of keys being typed, waits a while, then the macro ends. - -Note: Using macros to have your keyboard send passwords for you is a bad idea. - -### Additional keycode aliases for software-implemented layouts (Colemak, Dvorak, etc) - -Everything is assuming you're in Qwerty (in software) by default, but there is built-in support for using a Colemak or Dvorak layout by including this at the top of your keymap: - - #include "keymap_.h" - -Where is "colemak" or "dvorak". After including this line, you will get access to: - - * `CM_*` for all of the Colemak-equivalent characters - * `DV_*` for all of the Dvorak-equivalent characters - -These implementations assume you're using Colemak or Dvorak on your OS, not on your keyboard - this is referred to as a software-implemented layout. If your computer is in Qwerty and your keymap is in Colemak or Dvorak, this is referred to as a firmware-implemented layout, and you won't need these features. - -To give an example, if you're using software-implemented Colemak, and want to get an `F`, you would use `CM_F` - `KC_F` under these same circumstances would result in `T`. - -## Additional language support - -In `quantum/keymap_extras/`, you'll see various language files - these work the same way as the alternative layout ones do. Most are defined by their two letter country/language code followed by an underscore and a 4-letter abbreviation of its name. `FR_UGRV` which will result in a `ù` when using a software-implemented AZERTY layout. It's currently difficult to send such characters in just the firmware (but it's being worked on - see Unicode support). - -## Unicode support - -You can currently send 4 hex digits with your OS-specific modifier key (RALT for OSX with the "Unicode Hex Input" layout) - this is currently limited to supporting one OS at a time, and requires a recompile for switching. 8 digit hex codes are being worked on. The keycode function is `UC(n)`, where *n* is a 4 digit hexidecimal. Enable from the Makefile. - -## Other firmware shortcut keycodes - -* `RESET` - puts the MCU in DFU mode for flashing new firmware (with `make dfu`) -* `DEBUG` - the firmware into debug mode - you'll need hid_listen to see things -* `BL_ON` - turns the backlight on -* `BL_OFF` - turns the backlight off -* `BL_` - sets the backlight to level *n* -* `BL_INC` - increments the backlight level by one -* `BL_DEC` - decrements the backlight level by one -* `BL_TOGG` - toggles the backlight -* `BL_STEP` - steps through the backlight levels - -Enable the backlight from the Makefile. - -## MIDI functionalty - -This is still a WIP, but check out `quantum/keymap_midi.c` to see what's happening. Enable from the Makefile. - -## Bluetooth functionality - -This requires [some hardware changes](https://www.reddit.com/r/MechanicalKeyboards/comments/3psx0q/the_planck_keyboard_with_bluetooth_guide_and/?ref=search_posts), but can be enabled via the Makefile. The firmware will still output characters via USB, so be aware of this when charging via a computer. It would make sense to have a switch on the Bluefruit to turn it off at will. - -## Building - -Download or clone the whole firmware and navigate to the keyboards/planck folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use `make dfu` to program your PCB once you hit the reset button. - -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 a file in the keymaps folder named `.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|] -``` -Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboards/hhkb/hhkb.c b/keyboards/hhkb/hhkb.c index 6897026c6c..a9d35123ff 100644 --- a/keyboards/hhkb/hhkb.c +++ b/keyboards/hhkb/hhkb.c @@ -1,29 +1 @@ -#include "hhkb.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 - - if (matrix_init_user) { - (*matrix_init_user)(); - } -}; - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - if (matrix_scan_user) { - (*matrix_scan_user)(); - } -}; +#include "hhkb.h" \ No newline at end of file diff --git a/keyboards/hhkb/hhkb.h b/keyboards/hhkb/hhkb.h index 093d7aeabc..cc756c4565 100644 --- a/keyboards/hhkb/hhkb.h +++ b/keyboards/hhkb/hhkb.h @@ -1,10 +1,7 @@ #ifndef HHKB_H #define HHKB_H -#include "matrix.h" -#include "keymap.h" -//#include "backlight.h" -#include +#include "quantum.h" #define KEYMAP( \ K31, K30, K00, K10, K11, K20, K21, K40, K41, K60, K61, K70, K71, K50, K51, \ @@ -24,7 +21,4 @@ { K70, K71, K72, K73, K74, K75, K76, KC_NO } \ } -void matrix_init_user(void); -void matrix_scan_user(void); - #endif diff --git a/keyboards/hhkb/keymaps/default/compiled.hex b/keyboards/hhkb/keymaps/default/compiled.hex deleted file mode 100644 index b3af695270..0000000000 --- a/keyboards/hhkb/keymaps/default/compiled.hex +++ /dev/null @@ -1,1381 +0,0 @@ -:100000000C9452060C9496060C9496060C94960644 -:100010000C9496060C9496060C9496060C949606F0 -:100020000C9496060C9496060C945A110C942C126F -:100030000C941C1F0C9496060C9496060C94960631 -:100040000C9496060C9496060C9496060C949606C0 -:100050000C9496060C94BC1F0C9496060C94960671 -:100060000C9496060C9496060C9496060C949606A0 -:100070000C9496060C9496060C9496060C94960690 -:100080000C9496060C9496060C9496060C94960680 -:100090000C9496060C9496060C9496060C94960670 -:1000A0000C9496060C9496060C9496069912BB1224 -:1000B000A913BB12A91300132313A91378138B13CD -:1000C0006516651694169416D316F316231823187E -:1000D000FE162318AE17AE171418231823181D1870 -:1000E000BB17BB17BB17BB17BB17BB17BB17BB1780 -:1000F000BB17BB17BB17BB17BB17BB17BB17BB1770 -:10010000CB17D917E017E717F117253032583A20E7 -:10011000253038620A000A722F63203031323334BE -:100120003536370A001F0014001A00160004001D9F -:10013000001B000600200021001500080007000930 -:100140000019000500220023001C0017000A000B04 -:1001500000110000001E0029002B00E000E100E279 -:1001600000E3002C002400250018000C000E000DF8 -:100170000010000000310035002A0028000152E57F -:1001800000E600E700260027001200130033000FEE -:1001900000360000002D002E0030002F0034003803 -:1001A00000370000003B0001000100A900AA000187 -:1001B00000010001003C003D0001000100A8000119 -:1001C00000010001003E003F000100010001005558 -:1001D00000570000003A00A50039000100010001AD -:1001E000000100010040004100010046004A0054A7 -:1001F000005600000049004C002A00580001000190 -:100200000001000100420043004700480050004B3D -:10021000004D00000044004500010052004F005115 -:10022000004E0000000A44454255473A20656E6181 -:10023000626C65642E0A005B735D004B6579626FCA -:100240006172642073746172742E0A005B575D00E2 -:100250005B535D005B525D005B445D005B435D0092 -:100260001203480048004B00420020006D006F0060 -:10027000640000000C0371002E006D002E006B0066 -:1002800000000403090409027400040100A0FA0933 -:100290000400000103010100092111010001223FB6 -:1002A000000705810308000A090401000103010297 -:1002B00000092111010001224D00070582030800F9 -:1002C0000A090402000103000000092111010001D4 -:1002D0002236000705830308000A0904030002030D -:1002E00000000009211101000122200007058403FC -:1002F0002000010705040320000112011001000085 -:100300000008EDFEFECA0401010200010631FF09EA -:1003100074A1010975150025FF9520750881020952 -:1003200076150025FF952075089102C0050109800A -:10033000A101850216010026B7001A01002AB700A4 -:10034000751095018100C0050C0901A101850316F6 -:100350000100269C021A01002A9C02751095018159 -:1003600000C005010902A1010901A1000509190147 -:100370002905150025019505750181029501750373 -:1003800081010501093009311581257F9502750824 -:10039000810609381581257F950175088106050CB0 -:1003A0000A38021581257F950175088106C0C005B0 -:1003B000010906A101050719E029E71500250195A6 -:1003C0000875018102950175088101050819012947 -:1003D00005950575019102950175039101050719B0 -:1003E0000029FF150025FF950675088100C00A0049 -:1003F0002530325820006B6579626F6172645F72DC -:1004000065706F72743A20004B6579626F61726437 -:10041000204C4544732073746174653A2025780A32 -:1004200000646F6E652E0A00626F6F676D616769A9 -:1004300063207363616E3A202E2E2E2000290A005D -:100440002575002F002575005D280025640020001B -:10045000256400200025640020002564007C002520 -:10046000303258006D6F7573656B6579205B62740F -:100470006E7C782079207620685D287265702F6107 -:10048000636C293A205B006D6B5F776865656C5F14 -:1004900074696D655F746F5F6D6178203D202564C0 -:1004A0000A006D6B5F776865656C5F6D61785F737F -:1004B00070656564203D2025640A006D6B5F74697A -:1004C0006D655F746F5F6D6178203D2025640A0063 -:1004D0006D6B5F6D61785F7370656564203D20258D -:1004E000640A006D6B5F696E74657276616C203DA5 -:1004F0002025640A006D6B5F64656C6179203D2086 -:1005000025640A006D6B5F776865656C5F74696D63 -:10051000655F746F5F6D6178203D2025640A006D12 -:100520006B5F776865656C5F6D61785F737065653B -:1005300064203D2025640A006D6B5F74696D655F02 -:10054000746F5F6D6178203D2025640A006D6B5FDC -:100550006D61785F7370656564203D2025640A00D5 -:100560006D6B5F696E74657276616C203D202564E9 -:100570000A006D6B5F64656C6179203D2025640A1B -:10058000000A00257500363A20776865656C5F744F -:10059000696D655F746F5F6D61783A20000A0025B0 -:1005A0007500353A20776865656C5F6D61785F73BB -:1005B000706565643A20000A00257500343A20749D -:1005C000696D655F746F5F6D61783A20000A002580 -:1005D0007500333A206D61785F73706565643A2009 -:1005E000000A00257500323A20696E7465727661E2 -:1005F0006C286D73293A20000A00257500313A20D5 -:1006000064656C6179282A31306D73293A20000ABB -:10061000092D2056616C756573202D0A004D3E0032 -:100620004D25643E20003F0073657420646566615B -:10063000756C740A00433E2000776865726520641B -:10064000656C74613A20637572736F723D25642C1A -:1006500020776865656C3D25640A5365652068747C -:1006600074703A2F2F656E2E77696B6970656469B7 -:10067000612E6F72672F77696B692F4D6F75736588 -:100680005F6B6579730A000A092D204D6F757365DC -:100690006B6579202D0A4553432F713A09717569AD -:1006A000740A313A0964656C6179282A31306D73B6 -:1006B000290A323A09696E74657276616C286D7325 -:1006C000290A333A096D61785F73706565640A348D -:1006D0003A0974696D655F746F5F6D61780A353AC8 -:1006E00009776865656C5F6D61785F7370656564D7 -:1006F0000A363A09776865656C5F74696D655F7481 -:100700006F5F6D61780A0A703A097072696E7420C1 -:1007100076616C7565730A643A0973657420646563 -:100720006661756C74730A75703A092B310A646FCF -:10073000776E3A092D310A706775703A092B31309E -:100740000A7067646F776E3A092D31300A0A737048 -:10075000656564203D2064656C7461202A206D61AC -:10076000785F7370656564202A2028726570656102 -:1007700074202F2074696D655F746F5F6D617829D7 -:100780000A003F004D3E2000433E20004C25640AF5 -:100790000074696D65725F636F756E743A20253001 -:1007A000346C580A006B6579626F6172645F6964CA -:1007B0006C653A2025580A006B6579626F61726436 -:1007C0005F70726F746F636F6C3A2025580A00680F -:1007D0006F73745F6B6579626F6172645F6C65647F -:1007E0007328293A2025580A000A092D20537461DC -:1007F000747573202D0A004743433A20342E392E56 -:1008000032204156522D4C4942433A20312E382E47 -:1008100031204156525F415243483A206176723549 -:100820000A004F5054494F4E533A204C55464120F0 -:10083000424F4F544D41474943204D4F5553454B2F -:1008400045592045585452414B455920434F4E532A -:100850004F4C4520434F4D4D414E44203531320AD7 -:10086000004255494C443A20313637313865662DBF -:100870006469727479202832333A33393A32382035 -:100880004A756E2020392032303136290A00564907 -:10089000443A2030784645454428712E6D2E6B2908 -:1008A000205049443A203078434146452848484B37 -:1008B00042206D6F6429205645523A2030783031FD -:1008C00030340A00444553433A20712E6D2E6B207C -:1008D0006B6579626F617264206669726D776172AF -:1008E0006520666F722048484B420A000A092D2095 -:1008F00056657273696F6E202D0A000A092D204318 -:100900006F6E736F6C65202D0A4553432F713A0942 -:10091000717569740A6D3A096D6F7573656B6579E8 -:100920000A000A092D204D61676963202D0A443AA7 -:10093000094465627567204D65737361676520546E -:100940006F67676C650A583A094D6174726978205F -:100950004465627567204D6F646520546F67676CEE -:1009600065202D2053686F77206B657970726573F1 -:1009700073657320696E206D617472697820677287 -:1009800069640A4B3A094B6579626F61726420446D -:100990006562756720546F67676C65202D2053680A -:1009A0006F77206B65797072657373207265706FF5 -:1009B00072740A4D3A094465627567204D6F75730C -:1009C0006520546F67676C650A563A0956657273FD -:1009D000696F6E0A533A095374617475730A433A26 -:1009E00009416374697661746520436F6E736F6C3F -:1009F00065204D6F64650A46312D4631303A095302 -:100A0000776974636820746F204C61796572203057 -:100A10002D392028463130203D204C30290A302DF8 -:100A2000393A0953776974636820746F204C61798F -:100A3000657220302D390A4553433A09537769745A -:100A4000636820746F204C617965722030202861C2 -:100A50006C7465726E617465206B65792031290A4A -:100A600047524156453A0953776974636820746F59 -:100A7000204C6179657220302028616C7465726E3B -:100A8000617465206B65792032290A5041555345C0 -:100A90003A094A756D7020746F20426F6F746C6FE5 -:100AA0006164657220285265736574290A453A09A4 -:100AB0005072696E7420454550524F4D20536574F5 -:100AC00074696E67730A000A002575002E6E6B72DA -:100AD0006F3A20000A002575002E737761705F62FF -:100AE00061636B736C6173685F6261636B73706188 -:100AF00063653A20000A002575002E737761705FE8 -:100B000067726176655F6573633A20000A00257538 -:100B1000002E6E6F5F6775693A20000A0025750028 -:100B20002E737761705F72616C745F726775693A7A -:100B300020000A002575002E737761705F6C616C70 -:100B4000745F6C6775693A20000A002575002E6392 -:100B50006170736C6F636B5F746F5F636F6E7472E1 -:100B60006F6C3A20000A002575002E737761705F64 -:100B7000636F6E74726F6C5F636170736C6F636BC5 -:100B80003A20000A0025303258006B65796D61709B -:100B90005F636F6E6669672E7261773A20000A00A4 -:100BA0002575002E6D6F7573653A20000A00257556 -:100BB000002E6B6579626F6172643A20000A00252D -:100BC00075002E6D61747269783A20000A002575EF -:100BD000002E656E61626C653A20000A0025303295 -:100BE000580064656275675F636F6E6669672E7231 -:100BF00061773A20000A0025750064656661756CAE -:100C0000745F6C617965723A20003F000A6D6F7500 -:100C100073653A206F66660A000A6D6F7573653AF0 -:100C2000206F6E0A000A6B6579626F6172643A2008 -:100C30006F66660A000A6B6579626F6172643A20BA -:100C40006F6E0A000A6D61747269783A206F666689 -:100C50000A000A6D61747269783A206F6E0A000AA0 -:100C600064656275673A206F66660A000A646562A9 -:100C700075673A206F6E0A000A0A4A756D70696ED0 -:100C80006720746F20626F6F746C6F616465722E81 -:100C90002E2E2000433E20006565636F6E666967F7 -:100CA0003A0A000011241FBECFEFDAE0DEBFCDBF4D -:100CB00004B603FE24C08091E0019091E101A0916F -:100CC000E201B091E3018730904BA740B04BB9F4FB -:100CD0001092E0011092E1011092E2011092E30102 -:100CE00014BE84B7877F84BF88E10FB6F8948093E1 -:100CF0006000109260000FBEE0E0FFE3099511E094 -:100D0000A0E0B1E0ECEFF5E502C005900D92A23352 -:100D1000B107D9F711E0A2E3B1E001C01D92A03EF6 -:100D2000B107E1F70E94940E0C94FC2A0C94000089 -:100D3000FF93EF93E0913201F0913301309709F086 -:100D40000995EF91FF910895FC018591803011F094 -:100D5000EFDFFBCF0895FF27E0E230E247FF0CC052 -:100D6000419597FF09C0EDE260957095809590954B -:100D7000611D711D811D911D27FF02C0219530E36A -:100D800050E2AA27660F771F881F991FAA1FA41772 -:100D900010F0A41B63955A95A9F7AA3008F0A95F33 -:100DA000A05DAF93F395611571058105910541F73C -:100DB000ED3211F4EF93F395F21718F43F93F39596 -:100DC000FBCF8F91B5DFFA95E1F70895E991F9919D -:100DD0008591803021F0853219F0AADFF9CF08958E -:100DE00020E0E89455915532C1F3503311F46894E2 -:100DF00055915A3348F4505390F3220F022E220F8C -:100E0000220F200D250FF4CF0EF421958991999191 -:100E1000533619F3533729F1533559F1BC0188275B -:100E20009927E8945C3621F48991999168945591B9 -:100E3000543639F446EF7EF077FF0DC08FEF9FEF09 -:100E40000AC055374AE039F0583540E121F05236B2 -:100E500042E009F00895FF93EF937DDFEF91FF915A -:100E6000B7CFFF93EF93FC0181918030B9F360DF3E -:100E7000FBCFFF93EF9368DFF1CFDF93CF93CDB735 -:100E8000DEB72596A3DFCF91DF9108958FEF84B968 -:100E900080E485B957985F9A2E9A2F98ECE3F1E099 -:100EA00088E08E0F11928E13FDCFE4E3F1E088E02D -:100EB0008E0F11928E13FDCF8CE391E0909347013A -:100EC0008093460184E391E090934501809344012F -:100ED0000895EF92FF920F931F93CF93DF9380912A -:100EE0004401909145012091460130914701309392 -:100EF0004501209344019093470180934601C0E04F -:100F0000D0E0EE24E394F12C0FEF10E020E030E08D -:100F100085B1807C8C2BA90193E0440F551F9A95D5 -:100F2000E1F7842B85B98AE18A95F1F700C0E09159 -:100F30004401F0914501EC0FFD1F808190E0022EED -:100F400002C0959587950A94E2F780FD2F9A95E364 -:100F50009A95F1F70000E6B52E988AE18A95F1F7A7 -:100F600000C04091460150914701DA01AC0FBD1F0E -:100F70004F9B0AC0C701022E01C0880F0A94EAF7EE -:100F800080959C91892308C06C91C701022E01C0F5 -:100F9000880F0A94EAF7862B8C9386B56E2F70E043 -:100FA0008E1728F086B590E0861B970B06C0E6B535 -:100FB000C801861B970B8E0F911D069758F0E09184 -:100FC0004401F0914501EC0FFD1F8081FA01EC0F07 -:100FD000FD1F80839AE19A95F1F700C02F982E9A11 -:100FE0008BE291E00197F1F700C000002F5F3F4FC7 -:100FF0002830310509F08CCFA0914601B09147010E -:10100000AC0FBD1FE0914401F0914501EC0FFD1FB5 -:101010009C918081981751F00E945A1F609348015B -:101020007093490180934A0190934B012196C830F7 -:10103000D10509F06BCF8091D601853021F08091E8 -:10104000D601811111C060914801709149018091D0 -:101050004A0190914B010E94901F613177428105B6 -:10106000910510F00E94DF1E81E0DF91CF911F916A -:101070000F91FF90EF900895209146013091470124 -:10108000F901E80FF11D808108950F931F93CF930D -:10109000DF9386E191E00E94A406C0E0D0E00AE080 -:1010A00011E0E0914601F0914701EC0FFD1F8081B6 -:1010B0000E94C91E1F928F93DF93CF931F930F93AC -:1010C0000E943D0721960F900F900F900F900F9068 -:1010D0000F90C830D10529F7DF91CF911F910F9163 -:1010E00008951F93CF93DF93C7E0D0E010E0E09125 -:1010F0004601F0914701EC0FFD1F808190E00E94B6 -:10110000BD1E180F219798F7812FDF91CF911F9166 -:1011100008950895089561110BC0FC018281882310 -:1011200021F085EE0E94591503C085EE0E94F81546 -:1011300080E090E0089581E0089581E008950C94A6 -:101140009D0808950F931F93CF93DF938C01FC01AB -:10115000C081D181CE010E94871DBE010E944B0932 -:10116000EC01B8010E949F08882309F48DC0F801A2 -:101170008281882309F44AC08091570181111FC0E0 -:10118000C431F0E5DF0709F051C00E94A10881E0F9 -:10119000809357010E944E1F9093560180935501F2 -:1011A00010924E011092500110924F011092520174 -:1011B00010925101109254011092530165C0809118 -:1011C0005501909156010E94661F883C910570F46C -:1011D00080914E01E82FF0E0EE0FFF1FE15BFE4F24 -:1011E000D183C0838F5F80934E014EC0C43880E5A9 -:1011F000D80721F0C538D04501F13AC0F801828105 -:10120000882341F010924C0182E01EC0C438E0E512 -:10121000DE0759F580914C01811106C086E20E94DB -:10122000591586E20E94F81582E01CC0C438F0E52A -:10123000DF0741F3C538D045D9F4F801828188230E -:1012400031F010924D0180E20E9420161DC0809165 -:101250004D01811106C087E20E94591587E20E9464 -:10126000F81580E20E9427160FC0C538D04529F333 -:1012700081E080934C0180934D01C801DF91CF91B3 -:101280001F910F910C949B0880E0DF91CF911F91EB -:101290000F9108950895E72FF0E098E0899FE00D01 -:1012A000F11D112483E0EE0FFF1F8A95E1F7E60F91 -:1012B000F11DEE0FFF1FEB5DFE4F85919491089598 -:1012C000880F991FFC01EB55F0408591949108958A -:1012D000880F991FFC01EB5DFE4F85919491089555 -:1012E0000F931F93CF93DF93EC01811520E39207B7 -:1012F00050F5C11580E2D80708F0C3C0CB3BD1053B -:1013000090F4C83AD10508F06AC0C53AD10508F092 -:101310005BC0C430D10508F0D4C1219709F0CEC11B -:1013200001E010E00EC2CF3FD10511F008F0C9C1B5 -:10133000C03FD10508F0A2C0CE01805E9109089798 -:1013400008F4BFC1BBC1C13090E5D90709F4A2C000 -:1013500020F5C0318FE4D80770F4C11590E4D907A7 -:1013600008F094C0C11521E3D20708F0A7C1DD271A -:101370008E01106CE6C1C115D04509F09FC10E94D5 -:101380008E188FEF94E32CE0815090402040E1F7DD -:1013900000C000000E94E11FD4C1C11597E5D90724 -:1013A00058F4C03121E5D20708F020C1C43180E5EE -:1013B000D80708F479C082C1CE01905781159041B9 -:1013C00008F07CC1DF7077C1C53AD10509F47BC153 -:1013D000C63AD10509F07AC102E810E4B2C1C83AB0 -:1013E000D10509F476C1C93AD10509F475C1CA3AE3 -:1013F000D10509F474C1CB3AD10509F473C1CC3AD3 -:10140000D10509F472C1CD3AD10509F471C1C03BCF -:10141000D10509F470C1CE3AD10509F46FC1CF3AB4 -:10142000D10509F46EC1C13BD10509F46DC1C23BC0 -:10143000D10509F46CC1C33BD10509F46BC1C43BB0 -:10144000D10509F46AC1C53BD10509F469C1C63BA0 -:10145000D10509F468C1C73BD10509F467C1C83B90 -:10146000D10509F466C1C93BD10509F465C1CA3B80 -:10147000D10509F464C100E014E463C18E01106574 -:1014800060C1CE019F700E9468095CC1DF708E014F -:10149000106A57C185E292E00E94A4068091C101C2 -:1014A00081608093C1014DC10E948721811102C0DA -:1014B0000E946D210E94A42190E09093E00180930E -:1014C000DF01C23080E5D80721F48091DF0181601F -:1014D00086C0C43090E5D90721F48091DF01826095 -:1014E0007EC0C63020E5D20721F48091DF01846000 -:1014F00076C0C83080E5D80719F48091DF0127C095 -:10150000CA3090E5D90721F48091DF01806167C07E -:10151000CC3020E5D20721F48091DF0180625FC0EA -:10152000CE3080E5D80721F48091DF01806457C078 -:10153000C03190E5D90721F48091DF0180684FC068 -:10154000C23120E5D20729F48091DF0184608860F0 -:1015500046C0C33080E5D80721F48091DF018E7F3B -:101560003EC0C53090E5D90721F48091DF018D7F21 -:1015700036C0C73020E5D20721F48091DF018B7F90 -:101580002EC0C93080E5D80719F48091DF0126C04C -:10159000CB3090E5D90721F48091DF018F7E1FC009 -:1015A000CD3020E5D20721F48091DF018F7D17C077 -:1015B000CF3080E5D80721F48091DF018F7B0FC009 -:1015C000C13190E5D90721F48091DF018F7707C001 -:1015D000C331D04531F48091DF018B7F877F8093C9 -:1015E000DF018091DF010E94A821ABC08D2F9927D8 -:1015F0008F70992781309105D9F49E01237033278C -:1016000002C0880F991F2A95E2F79C688E0144E07A -:10161000000F111F4A95E1F700271370802B912BC3 -:1016200053E0CC0FDD1F5A95E1F7C076DD272FC0C0 -:101630008230910531F4DC2FCC278E01016F106AC6 -:1016400080C08330910569F4CE018370992701E051 -:1016500010E002C0000F111F8A95E2F7C8019C68D4 -:101660000FC084309105B9F4CE018370992701E051 -:1016700010E002C0000F111F8A95E2F7C8019A68B6 -:1016800023E0CC0FDD1F2A95E1F7C07ED7708C01D7 -:101690000C2B1D2B56C08530910531F4DC2FCC2747 -:1016A0008E01046F106A4DC0069709F04AC0CF71D1 -:1016B000DD27DC2FCC278E01106243C000E010E054 -:1016C00040C08E013EC001E810E43BC003E810E4D6 -:1016D00038C002EE14E435C009EE14E432C00AEE5C -:1016E00014E42FC005EB14E42CC006EB14E429C06D -:1016F00007EB14E426C00CEC14E423C00DEC14E456 -:1017000020C003E815E41DC00AE815E41AC002E988 -:1017100015E417C004E915E414C001E216E411C091 -:1017200003E216E40EC004E216E40BC005E216E480 -:1017300008C006E216E405C007E216E402C00AE2A9 -:1017400016E4C801DF91CF911F910F910895E72F03 -:10175000F0E098E0899FE00DF11D112483E0EE0F89 -:10176000FF1F8A95E1F7E60FF11DEE0FFF1FEB5DFE -:10177000FE4F85919491803E9105E0F4803C910567 -:1017800058F58133910509F46FC048F48932910509 -:1017900009F463C08A32910509F46DC072C08933BF -:1017A0009105E9F082389105D1F08533910509F46E -:1017B0004DC067C0833E910581F138F4803E9105AC -:1017C000B9F0823E9105D9F05CC0863E910561F189 -:1017D000873E9105A1F155C00E94600908952091AE -:1017E000DF0120FD02C021FF4CC080EE90E049C027 -:1017F0008091DF0180FFF9CF89E390E042C08091C2 -:10180000DF0182FF0EC08091DF0184FF03C080E012 -:1018100090E037C083EE90E034C08091DF0182FF1A -:10182000F2CF82EE90E02DC08091DF0183FF0BC0EC -:101830008091DF0184FDEBCF87EE90E022C08091A4 -:10184000DF0183FFF5CF86EE90E01BC08091DF01C2 -:1018500085FF07C089E290E014C08091DF0185FF19 -:10186000F9CF85E390E00DC08091DF0186FF07C0CE -:101870008AE290E006C08091DF0186FFF9CF81E324 -:1018800090E00E947009089508950C94440C809192 -:10189000630108959FB7F89410925A019FBF9091E9 -:1018A000D601943009F057C09091E9009F703091B3 -:1018B000EC00232F217030FD20E8922B24E02093B0 -:1018C000E9002091EB0020FF43C02091EE0027FFAC -:1018D0003FC020915801222321F02091E80025FFEC -:1018E00037C01092580126E03091E80035FD15C050 -:1018F0003091D601343061F53091EB0035FD28C0D0 -:10190000215021F481E08093580122C0EFE9FFE0EB -:101910003197F1F700C00000E7CF8093F10080918C -:10192000E80085FD0AC08091E80080FFFCCF80912F -:10193000E8008E778093E80006C08FB7F89421E026 -:1019400020935A018FBF9F709093E90080E0089523 -:101950009F709093E9008FEF0895CF93DF9300D0AD -:101960001F92CDB7DEB79C018091D601843019F566 -:1019700093E099833B832A839093E9008FEF9091C2 -:10198000E800815095FD06C095ED9A95F1F70000AD -:101990008111F5CF8091E80085FF0DC040E050E057 -:1019A00063E070E0CE0101960E944A0F8091E8004A -:1019B0008E778093E8000F900F900F90DF91CF917A -:1019C0000895CF93DF9300D01F92CDB7DEB720915B -:1019D000D601243021F522E029839B838A8383E08A -:1019E0008093E9008FEF9091E800815095FD06C04B -:1019F00095ED9A95F1F700008111F5CF8091E800FF -:101A000085FF0DC040E050E063E070E0CE0101963C -:101A10000E944A0F8091E8008E778093E8000F9033 -:101A20000F900F90DF91CF9108952091D60124302F -:101A3000F1F422E02093E9002FEF3091E8002150EB -:101A400035FD06C035ED3A95F1F700002111F5CFCF -:101A50002091E80025FF0BC040E050E065E070E019 -:101A60000E944A0F8091E8008E778093E8000895E5 -:101A7000CF93DF932091D601243039F521E02093D4 -:101A8000E9002FEF3091E800215035FD06C035ED1B -:101A90003A95F1F700002111F5CF2091E80025FFDC -:101AA00014C0EC0140E050E068E070E00E944A0F92 -:101AB0008091E8008E778093E80088E0FE01ABE536 -:101AC000B1E001900D928A95E1F7DF91CF910895F1 -:101AD0008CE592E00E94A4068091D501811109C095 -:101AE0000E94DF100E943C118091E200846080938C -:101AF000E200089588E592E00E94A4061092D501C4 -:101B0000089584E592E00C94A40680E592E00C949C -:101B1000A4068CE492E00E94A4060C94161F209167 -:101B200059012F5F822F62E30E948C2A992319F0BA -:101B30002093590108951092590180915A018823E8 -:101B400071F18091D601843041F58091E9008F7068 -:101B50002091EC00922F917020FD90E8892B94E069 -:101B60009093E9009091EB0090FF14C09091EE00EB -:101B700097FF10C09091E80095FF03C01092F1000C -:101B8000F9CF9091E80090FF05C09091E8009E7712 -:101B90009093E8008F708093E90010925A010895A5 -:101BA00042E061EC81E00E94591042E061EC82E089 -:101BB0000E94591042E061EC83E00E94591042E219 -:101BC00061EC84E00C9459108091D801833009F4C1 -:101BD00053C030F4813071F0823009F48CC0089524 -:101BE0008A3009F478C08B3009F45EC0893009F07E -:101BF0009AC020C08091D701813A09F094C08091A9 -:101C0000E800877F8093E8008091DB019091DC0100 -:101C1000892B21F468E08BE591E003C060E080E06F -:101C200090E070E00E94950F8091E8008B778093A0 -:101C3000E80008958091D701813209F074C0809145 -:101C4000DB019091DC01892B09F06DC08091E800E7 -:101C5000877F8093E8008091E80082FD05C0809135 -:101C6000D6018111F8CF5FC08091F10080936301AC -:101C70008091E8008B7753C08091D701813A09F0B9 -:101C800052C08091DB019091DC01892B09F04BC09F -:101C90008091E800877F8093E8008091E80080FFD2 -:101CA000FCCF80910A0136C08091D7018132D9F5ED -:101CB0008091DB019091DC01892BA9F58091E800EE -:101CC000877F8093E8000E948E108091D9018093D5 -:101CD0000A010C948E188091D701813221F58091F0 -:101CE000E800877F8093E8000E948E108091DA01DF -:101CF0008093640108958091D701813AA1F4809185 -:101D0000E800877F8093E8008091E80080FFFCCFA7 -:101D1000809164018093F1008091E8008E77809338 -:101D2000E8000C948E10089584B7877F84BF88E103 -:101D30000FB6F89480936000109260000FBE90E0A0 -:101D400080E80FB6F89480936100909361000FBE15 -:101D50000E946E140E94DF100E943C118091E200EC -:101D600084608093E2008AE49CE00E94B81E78942C -:101D70000E94C1130E94701480E091E00E94DC1365 -:101D80008BE392E00E94A4068091D601853089F40D -:101D900087E392E00E94A4060E94DF1E8091D40196 -:101DA000882391F30E94081F882371F30E94340F47 -:101DB000EBCF0E949414E8CF292F3327233031052D -:101DC000C9F064F42130310581F02230310509F089 -:101DD00043C084E790E026E832E042C0213231057A -:101DE000F1F02232310541F137C082E190E02AEF73 -:101DF00032E036C099278130910541F0823091055B -:101E000041F0892B49F5E2E8F2E005C0E4E7F2E0B1 -:101E100002C0E0E6F2E0849190E09F0121C06430CE -:101E2000D8F4E62FF0E0EE0FFF1FE15EFE4F2081B9 -:101E3000318189E090E014C0643070F470E0FB01FF -:101E4000EE0FFF1FE95EFE4F20813181FB01ED5E49 -:101E5000FE4F808190E004C080E090E020E030E020 -:101E6000FA0131832083089580E189BD82E189BD33 -:101E700009B400FEFDCF8091D8008F7D8093D800FB -:101E80008091E00082608093E0008091E00081FD1D -:101E9000FCCF0895CF92DF92EF92FF920F931F93A2 -:101EA000CF93DF93EC018B016A010E94AD10811189 -:101EB00033C0C114D10439F0F60180819181081B2F -:101EC000190BC80FD91FE12CF12C0115110519F1BF -:101ED0008091E80085FD16C08091E8008E778093A0 -:101EE000E800C114D10449F0F60180819181E80E27 -:101EF000F91EF182E08285E00FC00E94AD108823B8 -:101F000021F30AC089918093F10001501109FFEF7C -:101F1000EF1AFF0ADACF80E0DF91CF911F910F9186 -:101F2000FF90EF90DF90CF9008952091DD013091E8 -:101F3000DE012617370748F06115710539F4209145 -:101F4000E8002E772093E80001C0B90140E0611558 -:101F50007105A9F12091D601222309F443C025304F -:101F600009F442C02091E80023FD40C02091E80020 -:101F700022FD32C02091E80020FFE9CF4091F3001C -:101F80002091F20030E0342BFC01CF016115710586 -:101F900059F02830310540F481918093F10061506F -:101FA00071092F5F3F4FF1CF41E02830310509F033 -:101FB00040E02091E8002E772093E800C8CF41113F -:101FC000C9CF0AC08091D601882361F0853061F0C5 -:101FD0008091E80083FD0AC08091E80082FFF2CF83 -:101FE00080E0089582E0089583E0089581E00895F7 -:101FF0002091DD013091DE012617370748F0611589 -:10200000710539F42091E8002E772093E80001C093 -:10201000B901FC0120E06115710591F18091D601B3 -:10202000882309F440C0853009F43FC08091E8005E -:1020300083FD3DC08091E80082FD2FC08091E800C3 -:1020400080FFE9CF2091F3008091F20090E0922B85 -:102050006115710559F08830910540F42491209361 -:10206000F1003196615071090196F2CF21E0089795 -:1020700009F020E08091E8008E778093E800CBCFD4 -:102080002111CCCF0AC08091D601882361F0853020 -:1020900061F08091E80083FD0AC08091E80082FF32 -:1020A000F2CF80E0089582E0089583E0089581E012 -:1020B0000895982F973058F59093E900981739F0C4 -:1020C0007091EC002091ED005091F00003C0242F9E -:1020D000762F50E021FF19C03091EB003E7F309306 -:1020E000EB003091ED003D7F3093ED003091EB003F -:1020F00031603093EB007093EC002093ED0050932F -:10210000F0002091EE0027FF07C09F5FD3CF8F70B4 -:102110008093E90081E0089580E008958091D701DF -:1021200087FF11C08091E80082FD05C08091D60133 -:102130008111F8CF11C08091E8008B770BC080919E -:10214000D601882349F08091E80080FFF8CF809184 -:10215000E8008E778093E80008952091E4003091A4 -:10216000E50095E64091EC00842F817040FF22C08D -:102170008091E80080FD1CC08091D601882391F0F9 -:10218000853091F08091EB0085FD10C04091E40016 -:102190005091E5004217530729F39A01915011F726 -:1021A00084E0089582E0089583E0089581E0089531 -:1021B00080E008954091E80042FFDECF08950E943C -:1021C0004D110E945511E0EEF0E080818160808326 -:1021D000E8EDF0E080818F77808319BCA7EDB0E057 -:1021E0008C918E7F8C9380818F7E80831092D5011D -:1021F00008950F931F93CF93DF930E944D110E9478 -:102200005511C8EDD0E088818F77888388818068F8 -:10221000888388818F7D888319BC1092D6011092A3 -:10222000D2011092D4011092D30100EE10E0F80117 -:1022300080818B7F808388818160888342E060E039 -:1022400080E00E945910E1EEF0E080818E7F808373 -:10225000E2EEF0E08081816080838081886080830D -:10226000F80180818E7F8083888180618883DF91FF -:10227000CF911F910F910895E8EDF0E080818F7E5E -:102280008083E7EDF0E080818160808384E082BF1D -:1022900081E08093D5010C94F910E8EDF0E08081A5 -:1022A0008E7F80831092E20008951092DA001092DF -:1022B000E10008951F920F920FB60F9211242F93F1 -:1022C0003F934F935F936F937F938F939F93AF93BE -:1022D000BF93EF93FF938091E10082FF0BC0809149 -:1022E000E20082FF07C08091E1008B7F8093E100D4 -:1022F0000E948F0D8091DA0080FF1FC08091D8006E -:1023000080FF1BC08091DA008E7F8093DA0080917D -:10231000D90080FF0DC080E189BD82E189BD09B48B -:1023200000FEFDCF81E08093D6010E94680D05C0BC -:1023300019BC1092D6010E947A0D8091E10080FFB5 -:1023400019C08091E20080FF15C08091E2008E7F6D -:102350008093E2008091E20080618093E2008091AE -:10236000D80080628093D80019BC85E08093D601A4 -:102370000E94850D8091E10084FF30C08091E200D1 -:1023800084FF2CC080E189BD82E189BD09B400FED3 -:10239000FDCF8091D8008F7D8093D8008091E1009F -:1023A0008F7E8093E1008091E2008F7E8093E20037 -:1023B0008091E20081608093E2008091D2018823C5 -:1023C00011F084E007C08091E30087FD02C081E046 -:1023D00001C083E08093D6010E94890D8091E100C5 -:1023E00083FF29C08091E20083FF25C08091E10036 -:1023F000877F8093E10082E08093D6011092D20122 -:102400008091E1008E7F8093E1008091E2008E7FD9 -:102410008093E2008091E20080618093E20042E0DC -:1024200060E080E00E9459108091F0008860809305 -:10243000F0000E94810DFF91EF91BF91AF919F91AC -:102440008F917F916F915F914F913F912F910F905D -:102450000FBE0F901F9018951F920F920FB60F92FC -:1024600011242F933F934F935F936F937F938F9399 -:102470009F93AF93BF93CF93DF93EF93FF93C0915D -:10248000E900CF708091EC00D82FD17080FDD0E8AA -:102490001092E9008091F000877F8093F00078949B -:1024A0000E9470121092E9008091F0008860809381 -:1024B000F000CD2BCF70C093E900FF91EF91DF9139 -:1024C000CF91BF91AF919F918F917F916F915F91CC -:1024D0004F913F912F910F900FBE0F901F90189525 -:1024E0001F93CF93DF93CDB7DEB7AA970FB6F894BB -:1024F000DEBF0FBECDBFE7EDF1E088E08E0F90911B -:10250000F10091938E13FBCF0E94E40D8091E800BF -:1025100083FF1FC18091D7019091D801492F50E0CE -:102520004A30510508F015C1FA01EA5AFF4F0C94E0 -:10253000AC2A803881F0823809F00BC18091DB0130 -:102540008F708093E9008091EB0085FB882780F9EC -:102550001092E90006C08091D3019091D4019111AD -:1025600082609091E800977F9093E8008093F1005B -:102570001092F100C8C0282F2D7F09F0EAC08823EF -:1025800019F0823061F0E5C08091D901813009F005 -:10259000E0C0933009F080E08093D4012BC080919B -:1025A000D901811127C08091DB018F7009F4D1C05E -:1025B0008093E9002091EB0020FF1CC0933021F4B0 -:1025C0008091EB00806214C09091EB009061909339 -:1025D000EB0021E030E0A90102C0440F551F8A95AD -:1025E000E2F74093EA001092EA008091EB008860E5 -:1025F0008093EB001092E9008091E800877F86C00D -:102600008111A7C01091D9011F778091E3008078D4 -:10261000812B8093E3008091E800877F8093E8001E -:102620000E948E108091E80080FFFCCF8091E30033 -:1026300080688093E300111102C082E001C083E052 -:102640008093D60186C08058823008F082C0809185 -:10265000D9019091DA018C3D53E0950779F583E03B -:102660008A838AE289834FB7F894DE01139620E0CB -:102670003EE051E2E32FF0E050935700E49120FF59 -:1026800003C0E295EF703F5FEF708E2F90E0EA306D -:1026900010F0C79601C0C0968D939D932F5F243193 -:1026A00049F74FBF8091E800877F8093E8006AE296 -:1026B00070E0CE0101960E94950F14C0AE014F5FED -:1026C0005F4F6091DB010E94DC0EBC01009709F4B2 -:1026D00040C09091E800977F9093E80089819A81AB -:1026E0000E94F80F8091E8008B778093E80031C05A -:1026F000803879F58091E800877F8093E8008091A9 -:10270000D2018093F1008091E8008E778093E800F9 -:102710000E948E101EC081111CC09091D901923070 -:10272000C0F48091E800877F8093E8009093D20105 -:102730000E948E108091D201811106C08091E30029 -:1027400087FD02C081E001C084E08093D6010E9431 -:10275000D00D8091E80083FF0AC08091E800877F58 -:102760008093E8008091EB0080628093EB00AA9652 -:102770000FB6F894DEBF0FBECDBFDF91CF911F9192 -:102780000895CF938091D6018823A1F0C091E900EC -:10279000CF709091EC00892F817090FD80E8C82B5C -:1027A0001092E9008091E80083FD0E947012CF70C2 -:1027B000C093E900CF91089590936A0180936901D5 -:1027C0000895E0916901F0916A01309721F001903C -:1027D000F081E02D099480E00895EF92FF920F932D -:1027E0001F93CF93DF93E0916901F0916A013097D5 -:1027F000B1F18C010280F381E02D09958091C10136 -:1028000082FF2DC080FF04C086EF93E00E94A406E3 -:10281000E80118E080EFE82E83E0F82E8091C101F6 -:1028200080FF0BC088811F928F93FF92EF920E94CE -:102830003D070F900F900F900F901150219611119E -:10284000EDCF8091C10180FF0AC08EEE93E0DF9151 -:10285000CF911F910F91FF90EF900C94A406DF9100 -:10286000CF911F910F91FF90EF900895E091690132 -:10287000F0916A01309721F00480F581E02D0994F0 -:10288000089520916701309168018217930771F0D4 -:102890009093680180936701E0916901F0916A016A -:1028A000309721F00680F781E02D0994089520915A -:1028B0006501309166018217930771F0909366016C -:1028C00080936501E0916901F0916A01309721F0F0 -:1028D0000084F185E02D0994089508950C946D14F9 -:1028E0000E94451F0E9446070C943F20CF93DF9320 -:1028F0001F92CDB7DEB79091C10192FF10C090FF3B -:102900000EC01F928F9328E034E03F932F9389836A -:102910000E943D070F900F900F900F9089810F90AC -:10292000DF91CF910C94450C9F92AF92BF92CF92C2 -:10293000DF92EF92FF920F931F93CF93DF9300D01C -:1029400000D000D0CDB7DEB70E94690707E010E0E5 -:10295000AA24A394B12C902E802F0E943C089801A9 -:1029600024593E4F6901F901F080F826A1F4015085 -:10297000110988F78FEF89838A831B820E944E1F7B -:102980008160782F9D838C8349815A816B818D81F1 -:102990000E942B152FC09091C10191FF04C08E831E -:1029A0000E9445088E8127E030E0A501022E01C07B -:1029B000440F0A94EAF7E42E4F21C1F029839A824A -:1029C0008E2191E009F490E09B830E944E1F81606C -:1029D000782F9D838C8349815A816B818D810E94E0 -:1029E0002B15F6018081E826E08204C021503109D0 -:1029F000E0F6BDCF0E94A92310916B010E94E11364 -:102A00001817B9F00E94E11380936B0126960FB658 -:102A1000F894DEBF0FBECDBFDF91CF911F910F9114 -:102A2000FF90EF90DF90CF90BF90AF909F900C946D -:102A3000761426960FB6F894DEBF0FBECDBFDF9199 -:102A4000CF911F910F91FF90EF90DF90CF90BF90AB -:102A5000AF909F900895CF93DF93CDB7DEB72B97BC -:102A60000FB6F894DEBF0FBECDBF4F83588769877E -:102A70007A878B87DE01119686E0FD0111928A9597 -:102A8000E9F785E0FE01379601900D928A95E1F70E -:102A900049815A816B817C818D819E810E942C1B92 -:102AA0002B960FB6F894DEBF0FBECDBFDF91CF914E -:102AB0000895CF93882309F499C0C82F8CEF8C0F09 -:102AC000813A48F48C2F0E94152881118FC08C2FD9 -:102AD0000E94061E0CC080E28C0F883058F4C7702C -:102AE00081E001C0880FCA95EAF70E94421ECF918B -:102AF0000C94891E8BE58C0F833078F4C53A29F04D -:102B0000C63A31F083E890E005C081E890E002C069 -:102B100082E890E0CF910C94411488E58C0F8331CA -:102B200008F064C0C83A39F1C93A41F1CA3A49F1EA -:102B3000CB3A51F1CC3A59F1CD3A61F1C03B69F150 -:102B4000CE3A71F1CF3A79F1C13B81F1C23B89F1C3 -:102B5000C33B91F1C43B99F1C53BA1F1C63BA9F13F -:102B6000C73BB1F1C83BB9F1C93BC1F1CA3BC9F19F -:102B700080E090E038C082EE90E035C089EE90E0D1 -:102B800032C08AEE90E02FC085EB90E02CC086EB3F -:102B900090E029C087EB90E026C08CEC90E023C049 -:102BA0008DEC90E020C083E891E01DC08AE891E0C0 -:102BB0001AC082E991E017C084E991E014C081E273 -:102BC00092E011C083E292E00EC084E292E00BC07A -:102BD00085E292E008C086E292E005C087E292E0DA -:102BE00002C08AE292E0CF910C945714CF910895DD -:102BF000882329F19CEF980F913A18F40E94231E24 -:102C00000DC090E2980F983058F4877091E001C0A1 -:102C1000990F8A95EAF7892F0E94481E0C94891E05 -:102C20009BE5980F933020F480E090E00C944114E1 -:102C3000885A833120F480E090E00C945714089572 -:102C4000882321F00E94421E0C94891E0895882337 -:102C500021F00E94481E0C94891E08957F928F9245 -:102C60009F92AF92BF92CF92DF92EF92FF920F931B -:102C70001F93CF93DF931F92CDB7DEB77C01C62E93 -:102C8000772EFC01058102950F70128111110E94AF -:102C90005F1E0E94FF1D882379F0112369F080E2F6 -:102CA0008C0D883048F082E00E94E81D0E94FF1DD4 -:102CB00091E0D82ED92601C0D12CE72DE295EF70F6 -:102CC000F0E0E05AFF4F0C94AC2A872D807F072D4F -:102CD0000F70882311F00295007F112389F00023E3 -:102CE00009F498C180E28C0D883020F4802F0E9476 -:102CF000421E03C0802F0E94521E0E94891E8AC15C -:102D00008C2D0E94F815002309F49DC180E28C0DE2 -:102D1000883020F4802F0E94481E03C0802F0E941C -:102D2000581E0E94891E8FC1872D807F972D9F700E -:102D3000803211F4892F03C0892F8295807FCC20A7 -:102D400021F0F1E0CF16A1F01DC0112339F00023CE -:102D500019F1013009F50E94721E75C1002319F0A6 -:102D6000013009F470C189830E94751E898110C1E8 -:102D7000112321F0063008F066C10EC0053008F0BE -:102D800062C106C1112359F0002331F0F70195818A -:102D900090FF40C19F7095830E94201654C100236C -:102DA00009F4F6C03DC1872D86958695837090E025 -:102DB000009719F0019761F046C1112321F08C2D85 -:102DC000972D937002C080E090E00E9441143BC1B7 -:102DD000112321F08C2D972D937002C080E090E09C -:102DE0000E94571430C18C2D112319F00E942F22FC -:102DF00002C00E9497220E941C2325C1872D837048 -:102E000009F052C011111FC18C2D829586958770D3 -:102E1000880F880F9C2D9F70892E912CA12CB12C8E -:102E2000082E04C0880C991CAA1CBB1C0A94D2F75B -:102E3000C4FE14C00FE010E020E030E0B901A801AA -:102E400004C0440F551F661F771F8A95D2F7CB0128 -:102E5000BA01609570958095909503C060E070E030 -:102E6000CB01272D26952695237030E022303105A1 -:102E700069F02330310589F0682979298A299B294D -:102E80002130310571F00E94741CDDC06829792958 -:102E90008A299B290E94901CD6C00E94741CC501DF -:102EA000B4010E94581CCFC0112319F0872D8170E6 -:102EB00001C08695882309F4C6C08C2D829586951D -:102EC0008770880F880F9C2D9F70892E912CA12CC4 -:102ED000B12C082E04C0880C991CAA1CBB1C0A9497 -:102EE000D2F7C4FE14C00FE010E020E030E0B901DA -:102EF000A80104C0440F551F661F771F8A95D2F79B -:102F0000CB01BA01609570958095909503C060E003 -:102F100070E0CB01272D269526952370422F50E097 -:102F20004230510569F04330510589F0682979290B -:102F30008A299B294130510571F00E944E1D83C0A2 -:102F4000682979298A299B290E946A1D7CC00E94D0 -:102F50004E1DC501B4010E94321D75C08C2D90E03C -:102F6000FC01E05EF109E531F10508F04FC0E059E0 -:102F7000FF4F0C94AC2A0C2D0F70872D8F711123ED -:102F800021F00E94CB1C802F07CF0E94EC1C802FC9 -:102F90000E94271658C0112341F0053008F053C095 -:102FA000872D8F710E94111D4EC0063008F04BC056 -:102FB000F7CF112339F0872D8F710E94CB1C43C0AE -:102FC0001123C9F3872D8F710E94EC1C3CC0112383 -:102FD00029F0872D8F710E94B61C35C00E94AC1C51 -:102FE00032C0112351F0172D1F71812F0E94CB1C6D -:102FF00063E0812F0E94DF1D26C081E00E94E81D52 -:10300000023008F182E00E94E81D1DC0112331F05A -:10301000002389F28C2D0E94591515C0002391F2CE -:103020008C2D0E94F8150FC0472D4F706C2DC701D5 -:103030000E948B080E94D01B06C0472D4F706C2D3C -:10304000C7010E944A09DD20F9F00E94DB1D80FDC6 -:103050001BC0F70112820E94D51D0E94CB1CC70124 -:103060000E9453180E94D51D0F90DF91CF911F91A0 -:103070000F91FF90EF90DF90CF90BF90AF909F9017 -:103080008F907F900C94EC1C0F90DF91CF911F914B -:103090000F91FF90EF90DF90CF90BF90AF909F90F7 -:1030A0008F907F9008950F931F93CF93DF93EC0140 -:1030B000888199812B813C81232BB9F09F3F11F4AA -:1030C0008F3F99F0CE010E94A208882371F0688199 -:1030D00079818A810E94D11D8C010E94861D0E94E7 -:1030E0004D1CB801CE010E942E16DF91CF911F9189 -:1030F0000F9108950E945F1E0E946F1E0E94341E51 -:103100000E94891E0E944F240E941C2380E090E0B0 -:103110000E94411480E090E00C9457140E944F1ECE -:103120000C947A180E94C61D292F22952F7030E02A -:103130002C3031054CF42A3031056CF42250310921 -:1031400022303105A8F407C02C30310569F02F304A -:10315000310551F00DC0803F69F018F4803E40F415 -:1031600009C0843F29F406C093FB882780F908959D -:1031700080E0089581E00895CF93DF9300D000D0E0 -:103180001F92CDB7DEB70F900F900F900F900F905A -:10319000DF91CF910895CF93DF9300D000D000D07E -:1031A000CDB7DEB726960FB6F894DEBF0FBECDBF03 -:1031B000DF91CF9108951F93CF93DF93C091740156 -:1031C00016E080917501C81799F0D0E01C9FF001BE -:1031D0001D9FF00D1124EA58FE4F408151816281FC -:1031E0007381848195810E94CB182196C770E9CFA5 -:1031F000DF91CF911F9108954091A6015091A701B1 -:103200006091A8017091A9018091AA019091AB01F0 -:103210000C94CB188091AB0182958F7009F054C04B -:103220008091A801882309F44FC080917401A09176 -:1032300075016091A6017091A7014091A90150917B -:10324000AA01B6E08A1709F43FC090E04115510584 -:10325000C1F17F3F11F46F3FA1F1B89FF001B99F19 -:10326000F00D1124EA58FE4F218172132AC02081EB -:10327000621327C02281211124C0238134812417A5 -:10328000350710F421503109241B350B283C31053A -:10329000C0F42091AB012F7020612093AB0126E098 -:1032A000289FF001299FF00D1124E558FE4F8081E1 -:1032B0008F708061808386EA91E00E9453180C949D -:1032C000DB1801968770BECF0895CF92DF92EF9200 -:1032D000FF920F931F93CF93DF93CDB7DEB7629723 -:1032E0000FB6F894DEBF0FBECDBF8C0185E0F801AC -:1032F000DE011D9601900D928A95E1F7D8014C915F -:1033000011965C91119712966C9112971396CD902D -:10331000DC9014973091A6017091A7018091A901CA -:103320009091AA01009709F46BC17F3F19F43F3FC8 -:1033300009F466C1E090A801EE2009F4C0C0209114 -:10334000AB01C816D90628F0F601E81BF90BCF012E -:1033500004C0809590958C0D9D1DFF24F394883CAE -:10336000910578F0F12C207F09F0C6C07C2DD98A18 -:10337000C88A89890E94BC1886EA91E00E94531885 -:10338000B1C0822F807F09F046C0751314C034137A -:1033900012C0611110C02F7020612093AB010E94F8 -:1033A000FC1886EA91E00E9453188091AB01D80185 -:1033B00015968C932EC0CD2819F15F3F11F44F3F25 -:1033C000F9F0F62E61111CC08091740120917501F5 -:1033D00036E0821709F45AC090E0389FF001399F17 -:1033E000F00D1124EA58FE4F7181571306C0708109 -:1033F000471303C07281711103C001968770E9CF32 -:10340000F62E662309F418C18091AB018160809388 -:10341000AB01F12C11C1751308C0341306C0611142 -:1034200004C08091AB01D801C3C04D875E878D85F4 -:103430009E856A8B0E9492186A898823E1F166232F -:10344000D1F12091AB01822F82958F7090E002978D -:1034500074F08091A6019091A70198878F831986B7 -:10346000DB86CA862C87CE0107960E94531886E019 -:10347000F801A6EAB1E001900D928A95E1F70E9469 -:103480000A190E94FC18FF24F394D6C04D875E876A -:103490008D859E850E94C61D292F22952F7030E0B4 -:1034A000223031050CF0BCC09F7009F0B6C0805EC0 -:1034B000883008F4C1C0C8010E945318E4CFC81670 -:1034C000D90608F453C0F601E81BF90BCF01883C7C -:1034D000910508F450C0F12C7C2DD98AC88A8989BD -:1034E0000E94BC18E6EAF1E086E0DF011D928A95B1 -:1034F000E9F70E94FC18A0C0751314C0341312C061 -:10350000611110C08091AB01F8018583C8010E9450 -:10351000531886E0E6EAF1E0DF011D928A95E9F7AB -:10352000FE2C8AC04D875E878D859E856A8B0E94A2 -:1035300092186A89882309F4BECF662309F4BBCFA9 -:103540002091AB01822F82958F7090E002970CF44E -:103550008ECF8091A6019091A7019A8389831B82C7 -:10356000DD82CC822E83CE0101967FCF809590950F -:103570008C0D9D1DACCFF62E662309F49CCF7513E0 -:103580002EC034132CC02091AB0120FD1FC0822F10 -:1035900082958F70D9F0D80115962C9315978F309E -:1035A00049F08F5F982F9295907F822F8F70892B93 -:1035B00015968C93C8010E94531886E0F801A6EA7C -:1035C000B1E001900D928A95E1F793CF86E0F80182 -:1035D000A6EAB1E001900D928A95E1F72DC04D87E2 -:1035E0005E878D859E850E949218811140CF8091C3 -:1035F000AB0181608093AB01C8010E9453181CC0CD -:10360000662309F458CF4D875E878D859E850E947D -:103610009218882309F44FCF2ACF811148CF0CC0CC -:10362000243031050CF047CF9F7009F440CFF801EA -:103630009581907F09F03BCF8F2D62960FB6F8945D -:10364000DEBF0FBECDBFDF91CF911F910F91FF90D5 -:10365000EF90DF90CF9008951F93CF93DF93CDB776 -:10366000DEB72C970FB6F894DEBF0FBECDBF4F83E9 -:10367000588769877A878B879C87CE0107960E9437 -:103680006519882369F08F8198852A853B85232BCE -:10369000F1F19F3F09F063C08F3F09F060C037C070 -:1036A00086E0FE013796DE01119601900D928A9513 -:1036B000E1F76F817885EA85FB85309741F17F3F9F -:1036C00011F46F3F21F12091750130E0C90101969D -:1036D000877099274091740150E08417950709F489 -:1036E00047C069837A83FD83EC8396E0929FD00183 -:1036F000939FB00D1124AA58BE4FFE013196019040 -:103700000D929A95E1F7809375010E94DB1816E0FF -:1037100080917401909175018917C1F1189FC001C2 -:1037200011248A589E4F0E946519882379F1E091EF -:1037300074011E9FF0011124EA58FE4F408151810F -:1037400062817381848195810E94CB18809174017C -:1037500090E001968770992780937401D9CF4F81AB -:10376000588569857A858B859C850E94CB18CFCF3B -:103770000E948E181092750110927401E6EAF1E031 -:1037800086E0DF011D928A95E9F7C1CF2C960FB62E -:10379000F894DEBF0FBECDBFDF91CF911F9108958A -:1037A000EF92FF920F931F93CF93DF938C010097BB -:1037B00009F46CC0F12CEE24E394E8012196F801A1 -:1037C0008491843740F4843008F051C0813081F016 -:1037D000823019F15BC0853709F444C0A8F19CE739 -:1037E000980F903708F052C08F770E94F81541C0AB -:1037F0000E5F1F4FFE01C49180E28C0F883048F4A9 -:10380000C7708E2D01C0880FCA95EAF70E94621E0C -:1038100014C08C2F0E9459152DC00E5F1F4FFE0142 -:10382000C49180E28C0F883058F4C7708E2D01C08F -:10383000880FCA95EAF70E94681E0E94891E1AC066 -:103840008C2F0E94F81516C00E5F1F4FFE01C49109 -:10385000CC2381F08FE99FE00197F1F700C00000D1 -:10386000C150F6CF0E5F1F4FFE01F49003C00E94BF -:1038700059158E018F2D882309F49FCFEFE9FFE0C2 -:103880003197F1F700C000008150F5CFDF91CF9163 -:103890001F910F91FF90EF90089508956093B001EC -:1038A0007093B1018093B2019093B3010C947A1894 -:1038B0000F931F930091B0011091B1012091B201BB -:1038C0003091B301DC01CB01802B912BA22BB32BC8 -:1038D0008093B0019093B101A093B201B093B30172 -:1038E0001F910F910C947A180F931F930091B001C0 -:1038F0001091B1012091B2013091B301DC01CB01F3 -:1039000080239123A223B3238093B0019093B1012C -:10391000A093B201B093B3011F910F910C947A1848 -:103920000F931F930091B0011091B1012091B2014A -:103930003091B301DC01CB0180279127A227B32767 -:103940008093B0019093B101A093B201B093B30101 -:103950001F910F910C947A181092AC011092AD0146 -:103960001092AE011092AF010C947A1841E050E031 -:1039700060E070E004C0440F551F661F771F8A95F2 -:10398000D2F74093AC015093AD016093AE017093B8 -:10399000AF010C947A1841E050E060E070E004C0A0 -:1039A000440F551F661F771F8A95D2F78091AC018F -:1039B0009091AD01A091AE01B091AF01482B592B70 -:1039C0006A2B7B2B4093AC015093AD016093AE0109 -:1039D0007093AF010C947A1841E050E060E070E021 -:1039E00004C0440F551F661F771F8A95D2F7409574 -:1039F0005095609570958091AC019091AD01A0912A -:103A0000AE01B091AF01482359236A237B23409331 -:103A1000AC015093AD016093AE017093AF010C9473 -:103A20007A1841E050E060E070E004C0440F551F98 -:103A3000661F771F8A95D2F78091AC019091AD01F6 -:103A4000A091AE01B091AF01482759276A277B2783 -:103A50004093AC015093AD016093AE017093AF0100 -:103A60000C947A180F931F930091AC011091AD0143 -:103A70002091AE013091AF01DC01CB01802B912B65 -:103A8000A22BB32B8093AC019093AD01A093AE0118 -:103A9000B093AF011F910F910C947A180F931F935D -:103AA0000091AC011091AD012091AE013091AF01B8 -:103AB000DC01CB0180239123A223B3238093AC01AB -:103AC0009093AD01A093AE01B093AF011F910F9100 -:103AD0000C947A180F931F930091AC011091AD01D3 -:103AE0002091AE013091AF01DC01CB0180279127FD -:103AF000A227B3278093AC019093AD01A093AE01B0 -:103B0000B093AF011F910F910C947A180895CF9242 -:103B1000DF92EF92FF920F931F93CF93DF938C016D -:103B2000C090B001D090B101E090B201F090B3012B -:103B30008091AC019091AD01A091AE01B091AF0127 -:103B4000C82AD92AEA2AFB2ACFE1D0E0D701C60148 -:103B50000C2E04C0B695A795979587950A94D2F731 -:103B600080FF06C0B8018C2F0E94A70B019721F49B -:103B7000219760F780E001C08C2FDF91CF911F91DA -:103B80000F91FF90EF90DF90CF900895CF93DF9348 -:103B9000EC010E94871DBE010E94A70BDF91CF910F -:103BA0000895CB010E94C61D08958091B4018595AA -:103BB0008595859508958091B4018770089598E062 -:103BC000899F90011124262B2093B4010C94CB1CC7 -:103BD0002091B401809582238093B401982F97702F -:103BE00069F430E0482F552747FD509524173507D5 -:103BF00029F08595859585950C94EC1C08959091F8 -:103C0000B401977081E009F480E0089520910B01E0 -:103C100030910C01F90132969FEF40E05191581715 -:103C200089F09F3F19F4511101C0942F4F5F463026 -:103C3000A9F79F3F39F0F901E90FF11D97FDFA95BA -:103C400082830895089520910B0130910C01F901B0 -:103C50003296285F3F4F9081981301C010823196B1 -:103C6000E217F307C1F7089581E090E0E0910B01BE -:103C7000F0910C01E80FF91F108201968830910530 -:103C8000A9F708959091C001892B8093C0010895F0 -:103C900080959091C00189238093C001089510926E -:103CA000C00108959091BF01892B8093BF010895B1 -:103CB00080959091BF0189238093BF010895109250 -:103CC000BF0108959091BE01892B8093BE01089594 -:103CD00080959091BE0189238093BE010895109232 -:103CE000BE0108958093B50108951092B50108951D -:103CF00080910B0190910C01FC0131969C01285F91 -:103D00003F4F80E0919191118F5FE217F307D1F758 -:103D10000895E0910B01F0910C018091C001808326 -:103D2000E0910B01F0910C0190818091BF01892BF2 -:103D30008083E0910B01F0910C0190818091BE0194 -:103D4000892B80838091B501882361F0E0910B017C -:103D5000F0910C019081892B80830E94781E811143 -:103D60001092B50180910B0190910C010C94ED1310 -:103D70009093330180933201089520E0009739F049 -:103D8000AC0141505109842395232F5FF7CF822F37 -:103D900008958295982F9C7C392F36953695282F3B -:103DA000237344E0249FC0011124932F982B292FC3 -:103DB0002A7A2695892F8575880F822B0895809100 -:103DC000D601843021F11092C20120E488E190E014 -:103DD0000FB6F894A895809360000FBE2093600002 -:103DE00080E00E94450C83B7817F846083BF83B7E6 -:103DF000816083BF7894889583B78E7F83BF88E185 -:103E00000FB6F89480936000109260000FBE089582 -:103E10000E9489080E9469070E948A080E9471080E -:103E200091E0811101C090E0892F08950E948E18C1 -:103E30000E94E1130C94450C1F920F920FB60F9243 -:103E400011248F939F93AF93BF938091C2018111EF -:103E500013C08091C3019091C401A091C501B0919C -:103E6000C6014196A11DB11D8093C3019093C40169 -:103E7000A093C501B093C601BF91AF919F918F915F -:103E80000F900FBE0F901F90189582E084BD93E0B5 -:103E900095BD9AEF97BD80936E0008952FB7F89463 -:103EA0008091C3019091C401A091C501B091C60158 -:103EB0002FBF08952FB7F8946091C3017091C4018A -:103EC0008091C5019091C6012FBF0895CF92DF92D6 -:103ED000EF92FF920F931F932FB7F8944091C30175 -:103EE0005091C4016091C5017091C6012FBF6A0154 -:103EF0007B01EE24FF248C0120E030E0C016D106C7 -:103F0000E206F30610F4415051099A01281B390BBF -:103F1000C9011F910F91FF90EF90DF90CF9008950E -:103F2000CF92DF92EF92FF920F931F932FB7F894E7 -:103F3000C090C301D090C401E090C501F090C601CB -:103F40002FBF97018601061B170B280B390BC616CE -:103F5000D706E806F90618F0C901B80106C0C9017C -:103F6000B80161507109810991091F910F91FF906A -:103F7000EF90DF90CF9008951F920F920FB60F929F -:103F800011248F939F93AF93BF938091C30190911E -:103F9000C401A091C501B091C6010196A11DB11D3A -:103FA0008093C3019093C401A093C501B093C6014F -:103FB000BF91AF919F918F910F900FBE0F901F9067 -:103FC00018950E94DF10F8942FEF87EA91E62150B0 -:103FD00080409040E1F700C0000087E090EBDC01FA -:103FE0008093E0019093E101A093E201B093E3019B -:103FF0009CE088E10FB6F894A895809360000FBE0E -:1040000090936000FFCFEF92FF920F931F93CF9397 -:10401000DF93D82FC7E08C2F0E943C0807E010E008 -:10402000E82EF12CC701002E02C0959587950A94C1 -:10403000E2F780FF09C0602F7C2F80E00E944B09CF -:10404000D81302C081E006C00150110958F7C150D1 -:1040500010F780E0DF91CF911F910F91FF90EF90CB -:104060000895CF93C82F8CE20E940320882321F06B -:104070008C2FCF910C94032080E0CF910895CF93A3 -:104080000E948721811102C00E946D2188E294E084 -:104090000E94A406C5E6C15049F00E9469078FE35B -:1040A0009CE90197F1F700C00000F5CF81E294E0B0 -:1040B0000E94A40689E20E94312081110CC18AE28B -:1040C0000E94312081110E946D2185E00E943120E3 -:1040D00081110E94E11F0E9492218093C10187E01B -:1040E0000E9431208823A9F18BE10E94312088238E -:1040F00051F08091C10181FB222720F991E09227A4 -:1041000090FB81F90EC08EE00E943120882361F07F -:104110008091C10182FB222720F991E0922790FB38 -:1041200082F98093C10115C080E10E9431209091F5 -:10413000C101882341F093FB222720F981E08227E7 -:1041400080FB93F904C0892F809580FB90F99093B0 -:10415000C1018091C1010E9496210E94A4218093F7 -:10416000DF0180EE0E943120882341F08091DF0141 -:10417000982F909590FB80F98093DF0189E30E944E -:104180003120882359F08091DF0181FB222720F91B -:1041900091E0922790FB81F98093DF0182EE0E94EB -:1041A0003120882359F08091DF0182FB222720F9FA -:1041B00091E0922790FB82F98093DF0186EE0E94C6 -:1041C0003120882359F08091DF0183FB222720F9D9 -:1041D00091E0922790FB83F98093DF0183EE0E94A8 -:1041E0003120882359F08091DF0184FB222720F9B8 -:1041F00091E0922790FB84F98093DF0185E30E9490 -:104200003120882359F08091DF0185FB222720F996 -:1042100091E0922790FB85F98093DF0181E30E9472 -:104220003120882359F08091DF0186FB222720F975 -:1042300091E0922790FB86F98093DF0181E10E9453 -:104240003120882359F08091DF0187FB222720F954 -:1042500091E0922790FB87F98093DF018091DF0145 -:104260000E94A82187E20E943120C82F8EE10E947F -:1042700031208111C2608FE10E9431208111C46020 -:1042800080E20E9431208111C86081E20E943120C9 -:104290008111C06182E20E9431208111C06283E2FB -:1042A0000E9431208111C06484E20E943120882361 -:1042B00011F0C06802C0CC2329F08C2F0E949F21EE -:1042C0006C2F03C00E949B21682F70E080E090E07B -:1042D000CF910C944E1CCF9108956DEE7EEF80E04F -:1042E00090E00E94E62A60E082E090E00E94D42AFA -:1042F00060E083E090E00E94D42A60E084E090E0F7 -:104300000E94D42A60E085E090E00C94D42A80E0FA -:1043100090E00E94CE2A21E08D3E9E4F09F020E0E1 -:10432000822F089582E090E00C94C62A682F82E0E4 -:1043300090E00C94D42A83E090E00C94C62A682F75 -:1043400083E090E00C94D42A84E090E00C94C62A98 -:10435000682F84E090E00C94D42A8091C90180FFFA -:104360000BC06091100185E0689FB0011124759524 -:104370006795759567952BC081FF09C06091100105 -:1043800085E0689FB00111247595679520C082FF74 -:1043900007C06091100185E0689FB001112417C02B -:1043A0009091CA019923D1F060910F01961788F777 -:1043B0002091100185E0289F90011124929FA00177 -:1043C000939F500D112470E0CA010E94982A603812 -:1043D000710540F46115710539F002C065E070E0C7 -:1043E000862F08958FE7089581E008958091C9018F -:1043F00080FF08C060910E0170E075956795759516 -:10440000679521C081FF06C060910E0170E075952F -:10441000679519C082FF04C060910E0170E010C062 -:104420009091CA019923C1F060910D019617A0F7F0 -:1044300080910E01899FC001112470E00E94982A8A -:104440006038710528F46115710521F0862F0895F3 -:104450008FE7089581E0089561E070E0F4CF803F38 -:1044600021F40E94AD21819504C0813F29F40E946E -:10447000AD218093CD010895823F21F40E94AD21AA -:10448000819504C0833F29F40E94AD218093CC0123 -:104490000895893F19F40E94F62105C08A3F31F43E -:1044A0000E94F62181958093CE0108958B3F21F4DF -:1044B0000E94F621819504C08C3F29F40E94F621C8 -:1044C0008093CF010895843F21F48091CB018160D6 -:1044D00017C0853F21F48091CB01826011C0863FD7 -:1044E00021F48091CB0184600BC0873F21F480913F -:1044F000CB01886005C0883F31F48091CB01806199 -:104500008093CB0108958D3F21F48091C901816092 -:104510000BC08E3F21F48091C901826005C08F3F9E -:1045200029F48091C90184608093C9010895803F76 -:1045300039F48091CD0187FF6CC01092CD0169C024 -:10454000813F29F48091CD011816BCF362C090918F -:10455000CC01823F29F497FF5CC01092CC0159C076 -:10456000833F19F41916CCF354C0893F41F480916C -:10457000CE0118160CF04DC01092CE014AC08A3FF1 -:1045800029F48091CE0187FF44C0F6CF8B3F39F4E8 -:104590008091CF0187FF3DC01092CF013AC08C3F80 -:1045A00029F48091CF011816BCF333C0843F21F465 -:1045B0008091CB018E7F17C0853F21F48091CB0184 -:1045C0008D7F11C0863F21F48091CB018B7F0BC082 -:1045D000873F21F48091CB01877F05C0883F31F46C -:1045E0008091CB018F7E8093CB0113C08D3F21F44E -:1045F0008091C9018E7F0BC08E3F21F48091C9014B -:104600008D7F05C08F3F29F48091C9018B7F8093F6 -:10461000C9018091CC0181110EC08091CD01811121 -:104620000AC08091CE01811106C08091CF01811115 -:1046300002C01092CA0108958091C10183FF7EC01B -:1046400084E694E00E94A4068091CB011F928F9390 -:104650008FE594E09F938F930E943D078DE594E052 -:104660000E94A4068091CC01282F332727FD309586 -:104670003F938F938AE594E09F938F930E943D0729 -:1046800088E594E00E94A4068091CD01282F33276D -:1046900027FD30953F938F9385E594E09F938F930B -:1046A0000E943D0783E594E00E94A4068091CE011C -:1046B000282F332727FD30953F938F9380E594E093 -:1046C0009F938F930E943D078EE494E00E94A4067E -:1046D0008091CF01282F332727FD30953F938F936B -:1046E0008BE494E09F938F930E943D0788E494E0CD -:1046F0000E94A4068091CA011F928F9385E494E0E2 -:104700009F938F930E943D0783E494E00E94A40648 -:104710008091C9011F928F9380E494E09F938F93BF -:104720000E943D078DE394E00E94A4068DB79EB7DA -:104730004C960FB6F8949EBF0FBE8DBF8BEC91E0E8 -:104740000E9436140E944E1F9093C8018093C701A7 -:1047500008951F93CF93DF938091C7019091C80173 -:104760000E94661FAC019091CA01992321F020910B -:10477000110130E006C0209112018AE0289F9001CB -:1047800011244217530708F486C08091CC01C091D0 -:10479000CD01D091CE011091CF01811107C0C1117F -:1047A00076C0D11174C0111172C075C09F3F19F04D -:1047B0009F5F9093CA01181624F40E94AD21809344 -:1047C000CC018091CC0187FF05C00E94AD2181956D -:1047D0008093CC011C1624F40E94AD218093CD015E -:1047E0008091CD0187FF05C00E94AD218195809306 -:1047F000CD016091CC01662339F1C091CD01CC236C -:1048000019F1772767FD7095872F972F0E949D29B3 -:1048100023E333E343E35FE30E94012A0E946A2912 -:104820006093CC016C2F772767FD7095872F972FAA -:104830000E949D2923E333E343E35FE30E94012ABF -:104840000E946A296093CD011D1624F40E94F6216E -:104850008093CE018091CE0187FF05C00E94F62192 -:1048600081958093CE01111624F40E94F621809345 -:10487000CF018091CF0187FF05C00E94F62181956D -:104880008093CF01DF91CF911F910C941C239F3F08 -:1048900009F08ECF96CFDF91CF911F910895EBEC69 -:1048A000F1E085E0DF011D928A95E9F71092CA01D7 -:1048B0001092C901089587E896E00E94A4061F920D -:1048C00081E08F931F9285E08F9389E396E09F9319 -:1048D0008F930E943D070F900F900F900F900F90B5 -:1048E0000F9008958330E9F128F4813061F082302F -:1048F00009F10895853009F462C008F449C0863092 -:1049000009F474C0089580911201262F30E0280F19 -:10491000311D2F3F310524F4680F6093120103C04D -:104920008FEF80931201809112011F928F9382E783 -:1049300095E072C080911101262F30E0280F311DC3 -:104940002F3F310524F4680F6093110103C08FEFEE -:1049500080931101809111011F928F9380E695E061 -:104960005BC080911001262F30E0280F311D2F3FB2 -:10497000310524F4680F6093100103C08FEF80931A -:104980001001809110011F928F938DE495E044C037 -:1049900080910F01262F30E0280F311D2F3F310568 -:1049A00024F4680F60930F0103C08FEF80930F0111 -:1049B00080910F011F928F9388E395E02DC0809125 -:1049C0000E01262F30E0280F311D2F3F310524F432 -:1049D000680F60930E0103C08FEF80930E018091EA -:1049E0000E011F928F938FE195E016C080910D010B -:1049F000262F30E0280F311D2F3F310524F4680F9A -:104A000060930D0103C08FEF80930D0180910D0124 -:104A10001F928F9384E095E09F938F930E943D07B0 -:104A20000F900F900F900F900895833081F128F42C -:104A3000813059F08230D1F00895853009F449C0B1 -:104A4000B8F1863009F456C00895809112016817B4 -:104A500020F4861B8093120102C0109212018091F3 -:104A600012011F928F9385EF94E054C08091110141 -:104A7000681720F4861B8093110102C01092110167 -:104A8000809111011F928F9383EE94E043C0809137 -:104A90001001681720F4861B8093100102C0109249 -:104AA0001001809110011F928F9380ED94E032C02D -:104AB00080910F01681720F4861B80930F0102C0BC -:104AC00010920F0180910F011F928F938BEB94E056 -:104AD00021C080910E01681720F4861B80930E017F -:104AE00002C010920E0180910E011F928F9382EAF4 -:104AF00094E010C080910D01681720F4861B80930C -:104B00000D0102C010920D0180910D011F928F9333 -:104B100087E894E09F938F930E943D070F900F903A -:104B20000F900F900895CF93C82F1F928F938CE80A -:104B300097E09F938F930E943D0781E090E0A0E073 -:104B4000B0E0BC01CD0104C0660F771F881F991F1C -:104B5000CA95D2F70E944E1C0F900F900F900F90A5 -:104B6000CF910C948E18CF938732B0F58E3108F028 -:104B70004AC28E3009F4C4C100F5873009F48DC1F2 -:104B8000A8F4863009F045C28091C101817F8E7FF3 -:104B90008093C1018BEF98E00E94A40684E99CE019 -:104BA0000E94A40681E08093D10175C1883009F488 -:104BB0003FC08B3009F46BC12CC2863109F4E6C1C9 -:104BC00020F4803109F4B0C124C2893109F4C7C18D -:104BD0008B3109F481C11DC2883309F458C150F4E6 -:104BE000893209F412C2853309F40FC2873209F4FD -:104BF0000CC20FC2833409F408C228F48A3308F4C3 -:104C000008C2895303C2883409F003C20E948E1877 -:104C100088E79CE00E94A4069FEF23ED80E391507B -:104C200020408040E1F700C000000E94E11F33C136 -:104C300088E99CE00E94A4068AEF9BE00E94A406FB -:104C40000E949B211F928F9387EF9BE09F938F93EE -:104C50000E943D0785EF9BE00E94A4060E949221DE -:104C6000C82F82EE9BE00E94A4061F92CF938DED89 -:104C70009BE09F938F930E943D078BED9BE00E94EA -:104C8000A40681ED9BE00E94A4068C2F81701F92E8 -:104C90008F938EEC9BE09F938F930E943D078CEC4B -:104CA0009BE00E94A40682EC9BE00E94A406C1FB4C -:104CB000882780F91F928F938FEB9BE09F938F93B0 -:104CC0000E943D078DEB9BE00E94A40681EB9BE0D8 -:104CD0000E94A406C2FB882780F91F928F938EEA58 -:104CE0009BE09F938F930E943D078CEA9BE00E947C -:104CF000A40683EA9BE00E94A406C3FBCC27C0F96C -:104D00001F92CF9380EA9BE09F938F930E943D0771 -:104D10008EE99BE00E94A4060E94A421C82F8AE885 -:104D20009BE00E94A4061F92CF9385E89BE09F938F -:104D30008F930E943D0783E89BE00E94A4068AE6C9 -:104D40009BE00E94A4068C2F81701F928F9387E6B0 -:104D50009BE09F938F930E943D078DB79EB78096EF -:104D60000FB6F8949EBF0FBE8DBF85E69BE00E94F4 -:104D7000A4068EE49BE00E94A406C1FB882780F96C -:104D80001F928F938BE49BE09F938F930E943D072C -:104D900089E49BE00E94A40687E39BE00E94A406AE -:104DA000C2FB882780F91F928F9384E39BE09F9337 -:104DB0008F930E943D0782E39BE00E94A40680E25D -:104DC0009BE00E94A406C3FB882780F91F928F9363 -:104DD0008DE19BE09F938F930E943D078BE19BE0C9 -:104DE0000E94A40681E19BE00E94A406C4FB8827E0 -:104DF00080F91F928F938EE09BE09F938F930E9488 -:104E00003D078CE09BE00E94A4068AEF9AE00E9496 -:104E1000A406C5FB882780F91F928F9387EF9AE03D -:104E20009F938F930E943D0785EF9AE00E94A4060E -:104E300089ED9AE00E94A406C6FB882780F91F929C -:104E40008F9386ED9AE09F938F930E943D0784EDA8 -:104E50009AE00E94A4068CEC9AE00E94A406C7FB8C -:104E6000CC27C0F91F92CF9389EC9AE09F938F9340 -:104E70000E943D0787EC9AE00E94A4068DB79EB77A -:104E80004C960FB6F8949EBF0FBE8DBF04C082E251 -:104E900099E00E94A406C1E0C1C08091C101C82F61 -:104EA000C095C170C0FB80F98093C101CC2349F04B -:104EB0008CE69CE00E94A4068091C1018660886017 -:104EC00048C08FE59CE00E94A4068091C101897FC3 -:104ED000877F8093C101DFCF9091C10191FBCC27E7 -:104EE000C0F981E0C827892FC0FB81F98093C101F7 -:104EF000CC2319F082E59CE027C084E49CE0C9CF74 -:104F00009091C10192FBCC27C0F981E0C827892F7D -:104F1000C0FB82F98093C101CC2319F085E39CE0AA -:104F200013C085E29CE0B5CF9091C10193FBCC27E3 -:104F3000C0F981E0C827892FC0FB83F98093C101A4 -:104F4000CC2351F089E19CE00E94A4068091C1012C -:104F500081608093C10162C08CE09CE09ACF8CEEAE -:104F600098E00E94A40684EC98E00E94A4068EE8D3 -:104F700098E00E94A40681E698E00E94A40682E2DE -:104F800098E00E94A40687EF97E083CF89EE97E030 -:104F90000E94A4060E94E1131F928F938FEC97E06A -:104FA0009F938F930E943D0780910A011F928F93D8 -:104FB00088EB97E09F938F930E943D078091640157 -:104FC0001F928F9385EA97E09F938F930E943D07EE -:104FD0008091C3019091C401A091C501B091C60117 -:104FE000BF93AF939F938F9381E997E09F938F93A4 -:104FF0000E943D078DB79EB742960FB6F8949EBFAC -:105000000FBE8DBF48CF8D5101C080E00E94932517 -:1050100042CF8AE09CE00E94A406C0E08C2FCF9192 -:10502000089580E0089580E00895CF93C82F80917F -:10503000D101813071F020F0823009F44BC042C1BF -:10504000E0910B01F0910C018081823209F03CC1AA -:1050500007C0E0910B01F0910C018081823261F474 -:105060008C2F0E941128811104C08C2F0E94B3251F -:105070002FC081E090E02CC08C2F0E94132881115A -:1050800026C0C431E1F070F4CB3081F0C031D1F4EE -:105090000E945B2484E897E00E94A40682E080934B -:1050A000D10115C0C93259F0C83361F48BEF98E0D3 -:1050B0000E94A40688E897E00E94A40608C0109207 -:1050C000D10104C182E897E00E94A406FFC081E0FC -:1050D0008170FEC0C43228F5CE3108F0C1C0CB309B -:1050E000A1F1D0F4C73009F0D3C08EE18093120152 -:1050F00082E3809311018AE08093100184E1809320 -:105100000F0188E080930E0188E280930D0188E210 -:1051100096E00E94A406BFC0C33149F1C431C1F07A -:10512000B7C0CB3409F4A9C028F4C93289F0C83318 -:1051300061F0AEC0C13509F49EC0C23509F499C012 -:10514000CE3409F0A5C06AE09EC00E945B24A3C0D3 -:105150008091D001882319F01092D0019CC085E382 -:1051600096E00E94A40681E08093D101B1C08FE057 -:1051700096E00E94A4068DEF95E00E94A40680911F -:1051800012011F928F938AEF95E09F938F930E9455 -:105190003D0788EF95E00E94A40686EE95E00E9408 -:1051A000A406809111011F928F9383EE95E09F9347 -:1051B0008F930E943D0781EE95E00E94A40682ED48 -:1051C00095E00E94A406809110011F928F938FECAE -:1051D00095E09F938F930E943D078DEC95E00E9490 -:1051E000A4068CEB95E00E94A40680910F011F920B -:1051F0008F9389EB95E09F938F930E943D0787EBF8 -:1052000095E00E94A40682EA95E00E94A40680919F -:105210000E011F928F938FE995E09F938F930E94C9 -:105220003D078DE995E00E94A40686E895E00E947E -:10523000A40680910D011F928F9383E895E09F93C0 -:105240008F930E943D0781E895E00E94A4068DB7E8 -:105250009EB748960FB6F8949EBF0FBE8DBF1BC079 -:10526000CE51EC2FF0E0E95DFE4F80818093D001BC -:1052700012C061E003C061E006C06AE08091D00125 -:105280000E94722408C08091D0010E94152503C09D -:1052900086E296E013C08091D001882369F01F92C6 -:1052A0008F9380E296E09F938F930E943D070F902B -:1052B0000F900F900F9004C08DE196E00E94A4061D -:1052C00081E006C01092D10180E002C080E000CFF2 -:1052D000CF91089504D06894B1118DC0089570D015 -:1052E00088F09F5790F0B92F9927B751A0F0D1F0CF -:1052F000660F771F881F991F1AF0BA95C9F712C059 -:10530000B13081F077D0B1E0089574C0672F782F65 -:105310008827B85F39F0B93FCCF3869577956795C4 -:10532000B395D9F73EF490958095709561957F4F30 -:105330008F4F9F4F0895E89409C097FB3EF49095D6 -:105340008095709561957F4F8F4F9F4F9923A9F05E -:10535000F92F96E9BB279395F695879577956795ED -:10536000B795F111F8CFFAF4BB0F11F460FF1BC031 -:105370006F5F7F4F8F4F9F4F16C0882311F096E9C4 -:1053800011C0772321F09EE8872F762F05C0662372 -:1053900071F096E8862F70E060E02AF09A95660F2B -:1053A000771F881FDAF7880F9695879597F90895E4 -:1053B00057FD9058440F551F59F05F3F71F04795C6 -:1053C000880F97FB991F61F09F3F79F087950895AB -:1053D000121613061406551FF2CF4695F1DF08C0CA -:1053E000161617061806991FF1CF869571056105E7 -:1053F00008940895E894BB2766277727CB0197F98F -:1054000008950BD078C069D028F06ED018F095239D -:1054100009F05AC05FC01124EECFCADFA0F3959FF8 -:10542000D1F3950F50E0551F629FF001729FBB278B -:10543000F00DB11D639FAA27F00DB11DAA1F649F37 -:105440006627B00DA11D661F829F2227B00DA11DEA -:10545000621F739FB00DA11D621F839FA00D611D70 -:10546000221F749F3327A00D611D231F849F600D91 -:10547000211D822F762F6A2F11249F5750408AF0CA -:10548000E1F088234AF0EE0FFF1FBB1F661F771F56 -:10549000881F91505040A9F79E3F510570F014C0ED -:1054A000AACF5F3FECF3983EDCF38695779567953E -:1054B000B795F795E7959F5FC1F7FE2B880F911D74 -:1054C0009695879597F9089597F99F6780E870E01A -:1054D00060E008959FEF80EC089500240A9416166A -:1054E000170618060906089500240A9412161306D2 -:1054F000140605060895092E0394000C11F4882360 -:1055000052F0BB0F40F4BF2B11F460FF04C06F5F7B -:105510007F4F8F4F9F4F0895991B79E004C0991FCB -:10552000961708F0961B881F7A95C9F780950895FD -:1055300097FB072E16F4009407D077FD09D00E9440 -:10554000B22A07FC05D03EF4909581959F4F0895AF -:10555000709561957F4F0895EE0FFF1F0590F491B0 -:10556000E02D0994AA1BBB1B51E107C0AA1FBB1F5A -:10557000A617B70710F0A61BB70B881F991F5A95DF -:10558000A9F780959095BC01CD010895F999FECFBA -:1055900092BD81BDF89A992780B50895A8E1B0E041 -:1055A00042E050E00C94EE2A262FF999FECF92BDEE -:1055B00081BDF89A019700B4021639F01FBA20BDD8 -:1055C0000FB6F894FA9AF99A0FBE08950196272F0C -:1055D0000E94D52A0C94D42ADC01CB01FC01F99954 -:1055E000FECF06C0F2BDE1BDF89A319600B40D922F -:0C55F00041505040B8F70895F894FFCFE8 -:1055FC00470C380D150DE10CAD0C01B60128081443 -:10560C000A321E3F4D3620AF0362032C030C039865 -:10561C0002B102CA02E302010203040506070809EB -:02562C0000007C -:00000001FF diff --git a/keyboards/hhkb/keymaps/lxol/compiled.hex b/keyboards/hhkb/keymaps/lxol/compiled.hex deleted file mode 100644 index 63d3691c4d..0000000000 --- a/keyboards/hhkb/keymaps/lxol/compiled.hex +++ /dev/null @@ -1,1421 +0,0 @@ -:100000000C9493070C94D7070C94D7070C94D7073C -:100010000C94D7070C94D7070C94D7070C94D707E8 -:100020000C94D7070C94D7070C949B120C946D1367 -:100030000C945D200C94D7070C94D7070C94D70729 -:100040000C94D7070C94D7070C94D7070C94D707B8 -:100050000C94D7070C94FD200C94D7070C94D70769 -:100060000C94D7070C94D7070C94D7070C94D70798 -:100070000C94D7070C94D7070C94D7070C94D70788 -:100080000C94D7070C94D7070C94D7070C94D70778 -:100090000C94D7070C94D7070C94D7070C94D70768 -:1000A0000C94D7070C94D7070C94D707DA13FC13DA -:1000B000EA14FC13EA1441146414EA14B914CC14BD -:1000C000A617A617D517D51714183418641964196C -:1000D0003F186419EF18EF185519641964195E195F -:1000E000FC18FC18FC18FC18FC18FC18FC18FC1870 -:1000F000FC18FC18FC18FC18FC18FC18FC18FC1860 -:100100000C191A19211928193219253032583A2098 -:10011000253038620A000A722F63203031323334BE -:100120003536370A0028311F0014001A001644041F -:10013000461D001B000600200021001500080007D6 -:1001400000090019000500220023001C0017000A06 -:10015000000B00110000001E0029002B00E000E150 -:1001600000E200E3002C002400250018000C000E23 -:10017000000D0010000000310035002A00C0000210 -:1001800052E500E600E700260027001200130033C6 -:10019000450F43360000002D002E0030002F0034A4 -:1001A000003800370000001F0014001A0016460433 -:1001B000441D001B00060020002100150008000758 -:1001C00000090019000500220023001C0017000A86 -:1001D000000B00110000001E0029002B00E000E1D0 -:1001E00000E700E6002C002400250018000C000E9B -:1001F000000D0010000000310035002A00C0000290 -:1002000052E500E700E60026002700120013003345 -:10021000430F45360000002D002E0030002F003423 -:10022000003800370000003B0001000100A900AACF -:10023000000100010001003C003D0001000100A898 -:10024000000100010001003E003F0001000100012B -:10025000005500570000003A00A5003900010001D8 -:100260000001000100010040004100010046004A79 -:100270000054005600000049004C002A00580001BC -:100280000001000100010042004300470048005007 -:10029000004B004D00000044004500010052004F9B -:1002A0000051004E0000001F1814181A18161804E8 -:1002B000181D181B180618201821181518081807DB -:1002C00018091819180518221823181C1817180AC5 -:1002D000180B18111800001E1829182B18E018E127 -:1002E00018E200E3002C182418251818180C180E12 -:1002F000180D1810180000311835182A18C0000100 -:1003000000E518E600E70026182718121813180150 -:10031000000100361800002D182E1830182F183440 -:10032000183818371800001F0814081A08010001AF -:10033000001D081B080608200821081508080807E2 -:1003400008090819080508220823081C0817080AC4 -:10035000080B08110800001E0829082B08E008E116 -:1003600000E200E3002C082408250818080C080EF9 -:10037000080D0810080000310835082A08C00001DF -:1003800000E500E600E300260827081208130833FA -:10039000080F08360800002D082E0830082F0834F2 -:1003A000083808370800001F1414141A141614040F -:1003B000141D141B140614201421141514081407FA -:1003C00014091419140514221423141C1417140AE4 -:1003D000140B14111400001E1429142B14E014E142 -:1003E00014E200E3002C142414251418140C140E29 -:1003F000140D1410140000311435142A14C0000117 -:1004000000E514E600E70026142714121413140163 -:10041000000100361400002D142E1430142F143453 -:10042000143814371400001F0414041A04010001C6 -:10043000001D041B040604200421041504080407FD -:1004400004090419040504220423041C0417040AE3 -:10045000040B04110400001E0429042B04E004E131 -:1004600000E200E3002C042404250418040C040E0C -:10047000040D0410040000310435042A04C00001F6 -:1004800000E500E600E30026042704120413043309 -:10049000040F04360400002D042E0430042F04340D -:1004A000043804370400000A44454255473A2065A1 -:1004B0006E61626C65642E0A005B735D004B65794A -:1004C000626F6172642073746172742E0A005B57EC -:1004D0005D005B535D005B525D005B445D005B4310 -:1004E0005D001203480048004B00420020006D00F0 -:1004F0006F00640000000C0371002E006D002E00E0 -:100500006B0000000403090409027400040100A048 -:10051000FA09040000010301010009211101000191 -:10052000223F000705810308000A090401000103B6 -:10053000010200092111010001224D00070582037B -:1005400008000A090402000103000000092111014A -:1005500000012236000705830308000A090403008E -:1005600002030000000921110100012220000705FB -:10057000840320000107050403200001120110017B -:1005800000000008EDFEFECA040101020001063170 -:10059000FF0974A1010975150025FF9520750881D3 -:1005A000020976150025FF952075089102C0050106 -:1005B0000980A101850216010026B7001A01002A50 -:1005C000B700751095018100C0050C0901A10185D6 -:1005D00003160100269C021A01002A9C0275109540 -:1005E000018100C005010902A1010901A10005095D -:1005F000190129051500250195057501810295014F -:10060000750381010501093009311581257F9502A6 -:100610007508810609381581257F950175088106C1 -:10062000050C0A38021581257F950175088106C0E1 -:10063000C005010906A101050719E029E7150025F4 -:100640000195087501810295017508810105081958 -:100650000129059505750191029501750391010523 -:1006600007190029FF150025FF950675088100C0B0 -:100670000A002530325820006B6579626F61726420 -:100680005F7265706F72743A20004B6579626F61BA -:100690007264204C4544732073746174653A20255C -:1006A000780A00646F6E652E0A00626F6F676D6175 -:1006B000676963207363616E3A202E2E2E20002915 -:1006C0000A002575002F002575005D2800256400AF -:1006D0002000256400200025640020002564007CA3 -:1006E0000025303258006D6F7573656B6579205B3E -:1006F00062746E7C782079207620685D287265703F -:100700002F61636C293A205B006D6B5F77686565CC -:100710006C5F74696D655F746F5F6D6178203D20FB -:1007200025640A006D6B5F776865656C5F6D617845 -:100730005F7370656564203D2025640A006D6B5F02 -:1007400074696D655F746F5F6D6178203D2025640D -:100750000A006D6B5F6D61785F7370656564203D45 -:100760002025640A006D6B5F696E74657276616C3A -:10077000203D2025640A006D6B5F64656C61792003 -:100780003D2025640A006D6B5F776865656C5F745A -:10079000696D655F746F5F6D6178203D2025640A27 -:1007A000006D6B5F776865656C5F6D61785F737016 -:1007B000656564203D2025640A006D6B5F74696D7A -:1007C000655F746F5F6D6178203D2025640A006D60 -:1007D0006B5F6D61785F7370656564203D20256493 -:1007E0000A006D6B5F696E74657276616C203D20E6 -:1007F00025640A006D6B5F64656C6179203D20257E -:10080000640A000A00257500363A20776865656C31 -:100810005F74696D655F746F5F6D61783A20000A7F -:1008200000257500353A20776865656C5F6D6178E5 -:100830005F73706565643A20000A00257500343ADC -:100840002074696D655F746F5F6D61783A20000A8E -:1008500000257500333A206D61785F7370656564BB -:100860003A20000A00257500323A20696E746572DC -:1008700076616C286D73293A20000A0025750031D5 -:100880003A2064656C6179282A31306D73293A20E9 -:10089000000A092D2056616C756573202D0A004DE4 -:1008A0003E004D25643E20003F0073657420646562 -:1008B0006661756C740A00433E2000776865726556 -:1008C0002064656C74613A20637572736F723D25A4 -:1008D000642C20776865656C3D25640A5365652046 -:1008E000687474703A2F2F656E2E77696B69706526 -:1008F0006469612E6F72672F77696B692F4D6F7511 -:1009000073655F6B6579730A000A092D204D6F7559 -:1009100073656B6579202D0A4553432F713A097130 -:100920007569740A313A0964656C6179282A313035 -:100930006D73290A323A09696E74657276616C28A2 -:100940006D73290A333A096D61785F737065656468 -:100950000A343A0974696D655F746F5F6D61780A76 -:10096000353A09776865656C5F6D61785F737065AE -:1009700065640A363A09776865656C5F74696D6508 -:100980005F746F5F6D61780A0A703A097072696E00 -:10099000742076616C7565730A643A097365742016 -:1009A00064656661756C74730A75703A092B310A57 -:1009B000646F776E3A092D310A706775703A092BAA -:1009C00031300A7067646F776E3A092D31300A0A48 -:1009D0007370656564203D2064656C7461202A2015 -:1009E0006D61785F7370656564202A202872657078 -:1009F000656174202F2074696D655F746F5F6D6130 -:100A000078290A003F004D3E2000433E20004C253F -:100A1000640A0074696D65725F636F756E743A2065 -:100A20002530346C580A006B6579626F6172645FBF -:100A300069646C653A2025580A006B6579626F61BC -:100A400072645F70726F746F636F6C3A2025580A1E -:100A500000686F73745F6B6579626F6172645F6C5D -:100A600065647328293A2025580A000A092D205365 -:100A70007461747573202D0A004743433A20342E65 -:100A8000392E32204156522D4C4942433A20312EC4 -:100A9000382E31204156525F415243483A20617608 -:100AA00072350A004F5054494F4E533A204C554628 -:100AB0004120424F4F544D41474943204D4F5553DC -:100AC000454B45592045585452414B455920434FB9 -:100AD0004E534F4C4520434F4D4D414E44203531F0 -:100AE000320A004255494C443A2031363731386594 -:100AF000662D6469727479202832333A33393A3476 -:100B000039204A756E2020392032303136290A00CA -:100B10005649443A2030784645454428712E6D2E7A -:100B20006B29205049443A203078434146452848B3 -:100B3000484B42206D6F6429205645523A20307848 -:100B4000303130340A00444553433A20712E6D2E23 -:100B50006B206B6579626F617264206669726D7774 -:100B600061726520666F722048484B420A000A098C -:100B70002D2056657273696F6E202D0A000A092DAB -:100B800020436F6E736F6C65202D0A4553432F71A0 -:100B90003A09717569740A6D3A096D6F7573656B01 -:100BA00065790A000A092D204D61676963202D0AC5 -:100BB000443A094465627567204D657373616765E2 -:100BC00020546F67676C650A583A094D6174726901 -:100BD00078204465627567204D6F646520546F67A7 -:100BE000676C65202D2053686F77206B6579707274 -:100BF000657373657320696E206D61747269782006 -:100C0000677269640A4B3A094B6579626F61726475 -:100C100020446562756720546F67676C65202D20DE -:100C200053686F77206B6579707265737320726596 -:100C3000706F72740A4D3A094465627567204D6F92 -:100C400075736520546F67676C650A563A09566577 -:100C50007273696F6E0A533A095374617475730A3B -:100C6000433A09416374697661746520436F6E731A -:100C70006F6C65204D6F64650A46312D4631303A00 -:100C80000953776974636820746F204C61796572C9 -:100C900020302D392028463130203D204C30290A83 -:100CA000302D393A0953776974636820746F204C8A -:100CB0006179657220302D390A4553433A095377DB -:100CC0006974636820746F204C61796572203020EC -:100CD00028616C7465726E617465206B6579203172 -:100CE000290A47524156453A095377697463682087 -:100CF000746F204C6179657220302028616C7465B6 -:100D0000726E617465206B65792032290A504155F5 -:100D100053453A094A756D7020746F20426F6F74A5 -:100D20006C6F6164657220285265736574290A4589 -:100D30003A095072696E7420454550524F4D205308 -:100D4000657474696E67730A000A002575002E6E5B -:100D50006B726F3A20000A002575002E7377617060 -:100D60005F6261636B736C6173685F6261636B7315 -:100D7000706163653A20000A002575002E73776163 -:100D8000705F67726176655F6573633A20000A0081 -:100D90002575002E6E6F5F6775693A20000A002581 -:100DA00075002E737761705F72616C745F72677526 -:100DB000693A20000A002575002E737761705F6C18 -:100DC000616C745F6C6775693A20000A00257500D4 -:100DD0002E636170736C6F636B5F746F5F636F6EB4 -:100DE00074726F6C3A20000A002575002E737761CB -:100DF000705F636F6E74726F6C5F636170736C6F42 -:100E0000636B3A20000A0025303258006B65796D1B -:100E100061705F636F6E6669672E7261773A20005A -:100E20000A002575002E6D6F7573653A20000A0063 -:100E30002575002E6B6579626F6172643A20000A35 -:100E4000002575002E6D61747269783A20000A00E1 -:100E50002575002E656E61626C653A20000A0025DA -:100E60003032580064656275675F636F6E666967EC -:100E70002E7261773A20000A00257500646566616C -:100E8000756C745F6C617965723A20003F000A6D81 -:100E90006F7573653A206F66660A000A6D6F757329 -:100EA000653A206F6E0A000A6B6579626F61726441 -:100EB0003A206F66660A000A6B6579626F61726438 -:100EC0003A206F6E0A000A6D61747269783A206F79 -:100ED00066660A000A6D61747269783A206F6E0A5C -:100EE000000A64656275673A206F66660A000A64E4 -:100EF000656275673A206F6E0A000A0A4A756D705E -:100F0000696E6720746F20626F6F746C6F616465C7 -:100F1000722E2E2E2000433E20006565636F6E66A4 -:100F200069673A0A000011241FBECFEFDAE0DEBF86 -:100F3000CDBF04B603FE24C08091E0019091E10191 -:100F4000A091E201B091E3018730904BA740B04BF4 -:100F5000B9F41092E0011092E1011092E2011092B6 -:100F6000E30114BE84B7877F84BF88E10FB6F8948D -:100F700080936000109260000FBEE0E0FFE30995EF -:100F800011E0A0E0B1E0EEE7F8E502C005900D92B7 -:100F9000A233B107D9F711E0A2E3B1E001C01D927D -:100FA000A03EB107E1F70E94D50F0C943D2C0C94A4 -:100FB0000000FF93EF93E0913201F09133013097FD -:100FC00009F00995EF91FF910895FC01859180301A -:100FD00011F0EFDFFBCF0895FF27E0E230E247FF9B -:100FE0000CC0419597FF09C0EDE260957095809522 -:100FF0009095611D711D811D911D27FF02C02195D6 -:1010000030E350E2AA27660F771F881F991FAA1F97 -:10101000A41710F0A41B63955A95A9F7AA3008F0FD -:10102000A95FA05DAF93F3956115710581059105E9 -:1010300041F7ED3211F4EF93F395F21718F43F9363 -:10104000F395FBCF8F91B5DFFA95E1F70895E9911C -:10105000F9918591803021F0853219F0AADFF9CF1E -:10106000089520E0E89455915532C1F3503311F4BE -:10107000689455915A3348F4505390F3220F022E3E -:10108000220F220F200D250FF4CF0EF42195899108 -:101090009991533619F3533729F1533559F1BC015E -:1010A00088279927E8945C3621F48991999168946E -:1010B0005591543639F446EF7EF077FF0DC08FEF2F -:1010C0009FEF0AC055374AE039F0583540E121F02A -:1010D000523642E009F00895FF93EF937DDFEF91E0 -:1010E000FF91B7CFFF93EF93FC0181918030B9F36B -:1010F00060DFFBCFFF93EF9368DFF1CFDF93CF93F8 -:10110000CDB7DEB72596A3DFCF91DF9108958FEF9E -:1011100084B980E485B957985F9A2E9A2F98ECE3AA -:10112000F1E088E08E0F11928E13FDCFE4E3F1E041 -:1011300088E08E0F11928E13FDCF8CE391E0909397 -:1011400047018093460184E391E0909345018093A9 -:1011500044010895EF92FF920F931F93CF93DF9373 -:1011600080914401909145012091460130914701C1 -:1011700030934501209344019093470180934601A9 -:10118000C0E0D0E0EE24E394F12C0FEF10E020E07B -:1011900030E085B1807C8C2BA90193E0440F551F72 -:1011A0009A95E1F7842B85B98AE18A95F1F700C019 -:1011B000E0914401F0914501EC0FFD1F808190E02A -:1011C000022E02C0959587950A94E2F780FD2F9A2A -:1011D00095E39A95F1F70000E6B52E988AE18A9595 -:1011E000F1F700C04091460150914701DA01AC0F80 -:1011F000BD1F4F9B0AC0C701022E01C0880F0A9471 -:10120000EAF780959C91892308C06C91C701022E52 -:1012100001C0880F0A94EAF7862B8C9386B56E2F4F -:1012200070E08E1728F086B590E0861B970B06C0FD -:10123000E6B5C801861B970B8E0F911D069758F0D7 -:10124000E0914401F0914501EC0FFD1F8081FA010E -:10125000EC0FFD1F80839AE19A95F1F700C02F985B -:101260002E9A8BE291E00197F1F700C000002F5F0A -:101270003F4F2830310509F08CCFA0914601B09145 -:101280004701AC0FBD1FE0914401F0914501EC0F07 -:10129000FD1F9C918081981751F00E949B206093C4 -:1012A00048017093490180934A0190934B01219624 -:1012B000C830D10509F06BCF8091D601853021F07F -:1012C0008091D601811111C060914801709149014E -:1012D00080914A0190914B010E94D1206131774267 -:1012E0008105910510F00E94202081E0DF91CF91CF -:1012F0001F910F91FF90EF9008952091460130913A -:101300004701F901E80FF11D808108950F931F93A4 -:10131000CF93DF9386E191E00E94E507C0E0D0E043 -:101320000AE011E0E0914601F0914701EC0FFD1F4A -:1013300080810E940A201F928F93DF93CF931F9387 -:101340000F930E947E0821960F900F900F900F90A0 -:101350000F900F90C830D10529F7DF91CF911F91E1 -:101360000F9108951F93CF93DF93C7E0D0E010E073 -:10137000E0914601F0914701EC0FFD1F808190E064 -:101380000E94FE1F180F219798F7812FDF91CF91B0 -:101390001F9108950895089561110BC0FC01828189 -:1013A000882321F085EE0E949A1603C085EE0E94E4 -:1013B000391780E090E0089581E0089581E0089574 -:1013C0000C94DE0908950F931F93CF93DF938C0144 -:1013D000FC01C081D181CE010E94C81EBE010E94C5 -:1013E0008C0AEC01B8010E94E009882309F48DC041 -:1013F000F8018281882309F44AC080915701811144 -:101400001FC0C431F0E5DF0709F051C00E94E209B6 -:1014100081E0809357010E948F2090935601809322 -:10142000550110924E011092500110924F011092EE -:10143000520110925101109254011092530165C053 -:1014400080915501909156010E94A720883C9105FA -:1014500070F480914E01E82FF0E0EE0FFF1FE15B8A -:10146000FE4FD183C0838F5F80934E014EC0C4383E -:1014700080E5D80721F0C538D04501F13AC0F80120 -:101480008281882341F010924C0182E01EC0C43852 -:10149000E0E5DE0759F580914C01811106C086E236 -:1014A0000E949A1686E20E94391782E01CC0C43856 -:1014B000F0E5DF0741F3C538D045D9F4F801828162 -:1014C000882331F010924D0180E20E9461171DC007 -:1014D00080914D01811106C087E20E949A1687E231 -:1014E0000E94391780E20E9468170FC0C538D045A6 -:1014F00029F381E080934C0180934D01C801DF9175 -:10150000CF911F910F910C94DC0980E0DF91CF9176 -:101510001F910F9108950895E72FF0E098E0899FBB -:10152000E00DF11D112483E0EE0FFF1F8A95E1F716 -:10153000E60FF11DEE0FFF1FE95DFE4F85919491BF -:101540000895880F991FFC01EB55F0408591949107 -:101550000895880F991FFC01EB5DFE4F85919491D2 -:1015600008950F931F93CF93DF93EC01811520E330 -:10157000920750F5C11580E2D80708F0C3C0CB3BF5 -:10158000D10590F4C83AD10508F06AC0C53AD10532 -:1015900008F05BC0C430D10508F0D4C1219709F030 -:1015A000CEC101E010E00EC2CF3FD10511F008F02E -:1015B000C9C1C03FD10508F0A2C0CE01805E91092B -:1015C000089708F4BFC1BBC1C13090E5D90709F441 -:1015D000A2C020F5C0318FE4D80770F4C11590E4A3 -:1015E000D90708F094C0C11521E3D20708F0A7C1BC -:1015F000DD278E01106CE6C1C115D04509F09FC1F1 -:101600000E94CF198FEF94E32CE08150904020404E -:10161000E1F700C000000E942221D4C1C11597E566 -:10162000D90758F4C03121E5D20708F020C1C431F0 -:1016300080E5D80708F479C082C1CE0190578115A2 -:10164000904108F07CC1DF7077C1C53AD10509F43B -:101650007BC1C63AD10509F07AC102E810E4B2C1F3 -:10166000C83AD10509F476C1C93AD10509F475C162 -:10167000CA3AD10509F474C1CB3AD10509F473C152 -:10168000CC3AD10509F472C1CD3AD10509F471C142 -:10169000C03BD10509F470C1CE3AD10509F46FC140 -:1016A000CF3AD10509F46EC1C13BD10509F46DC132 -:1016B000C23BD10509F46CC1C33BD10509F46BC130 -:1016C000C43BD10509F46AC1C53BD10509F469C120 -:1016D000C63BD10509F468C1C73BD10509F467C110 -:1016E000C83BD10509F466C1C93BD10509F465C100 -:1016F000CA3BD10509F464C100E014E463C18E0162 -:10170000106560C1CE019F700E94A90A5CC1DF70A4 -:101710008E01106A57C187EA94E00E94E507809124 -:10172000C10181608093C1014DC10E94C822811115 -:1017300002C00E94AE220E94E52290E09093E00158 -:101740008093DF01C23080E5D80721F48091DF016A -:10175000816086C0C43090E5D90721F48091DF0113 -:1017600082607EC0C63020E5D20721F48091DF017F -:10177000846076C0C83080E5D80719F48091DF0115 -:1017800027C0CA3090E5D90721F48091DF0180613C -:1017900067C0CC3020E5D20721F48091DF01806260 -:1017A0005FC0CE3080E5D80721F48091DF018064EE -:1017B00057C0C03190E5D90721F48091DF018068DE -:1017C0004FC0C23120E5D20729F48091DF01846047 -:1017D000886046C0C33080E5D80721F48091DF01DE -:1017E0008E7F3EC0C53090E5D90721F48091DF019E -:1017F0008D7F36C0C73020E5D20721F48091DF010C -:101800008B7F2EC0C93080E5D80719F48091DF01A5 -:1018100026C0CB3090E5D90721F48091DF018F7E7F -:101820001FC0CD3020E5D20721F48091DF018F7DEC -:1018300017C0CF3080E5D80721F48091DF018F7B7E -:101840000FC0C13190E5D90721F48091DF018F7776 -:1018500007C0C331D04531F48091DF018B7F877F92 -:101860008093DF018091DF010E94E922ABC08D2FC0 -:1018700099278F70992781309105D9F49E012370A3 -:10188000332702C0880F991F2A95E2F79C688E01C2 -:1018900044E0000F111F4A95E1F700271370802BD9 -:1018A000912B53E0CC0FDD1F5A95E1F7C076DD2771 -:1018B0002FC08230910531F4DC2FCC278E01016FCF -:1018C000106A80C08330910569F4CE018370992736 -:1018D00001E010E002C0000F111F8A95E2F7C80175 -:1018E0009C680FC084309105B9F4CE0183709927AC -:1018F00001E010E002C0000F111F8A95E2F7C80155 -:101900009A6823E0CC0FDD1F2A95E1F7C07ED770DF -:101910008C010C2B1D2B56C08530910531F4DC2F2A -:10192000CC278E01046F106A4DC0069709F04AC09B -:10193000CF71DD27DC2FCC278E01106243C000E081 -:1019400010E040C08E013EC001E810E43BC003E857 -:1019500010E438C002EE14E435C009EE14E432C0DD -:101960000AEE14E42FC005EB14E42CC006EB14E4DB -:1019700029C007EB14E426C00CEC14E423C00DECE2 -:1019800014E420C003E815E41DC00AE815E41AC0F9 -:1019900002E915E417C004E915E414C001E216E4F5 -:1019A00011C003E216E40EC004E216E40BC005E227 -:1019B00016E408C006E216E405C007E216E402C019 -:1019C0000AE216E4C801DF91CF911F910F910895AB -:1019D000E72FF0E098E0899FE00DF11D112483E0EE -:1019E000EE0FFF1F8A95E1F7E60FF11DEE0FFF1FC7 -:1019F000E95DFE4F85919491803E9105E0F4803C35 -:101A0000910558F58133910509F46FC048F4893286 -:101A1000910509F463C08A32910509F46DC072C062 -:101A200089339105E9F082389105D1F0853391052C -:101A300009F44DC067C0833E910581F138F4803EC2 -:101A40009105B9F0823E9105D9F05CC0863E9105C2 -:101A500061F1873E9105A1F155C00E94A10A089548 -:101A60002091DF0120FD02C021FF4CC080EE90E0FC -:101A700049C08091DF0180FFF9CF89E390E042C047 -:101A80008091DF0182FF0EC08091DF0184FF03C0DF -:101A900080E090E037C083EE90E034C08091DF01B9 -:101AA00082FFF2CF82EE90E02DC08091DF0183FFB4 -:101AB0000BC08091DF0184FDEBCF87EE90E022C068 -:101AC0008091DF0183FFF5CF86EE90E01BC080910F -:101AD000DF0185FF07C089E290E014C08091DF013B -:101AE00085FFF9CF85E390E00DC08091DF0186FF8F -:101AF00007C08AE290E006C08091DF0186FFF9CF3F -:101B000081E390E00E94B10A089508950C94850D38 -:101B10008091630108959FB7F89410925A019FBF76 -:101B20009091D601943009F057C09091E9009F70D0 -:101B30003091EC00232F217030FD20E8922B24E01F -:101B40002093E9002091EB0020FF43C02091EE009C -:101B500027FF3FC020915801222321F02091E80067 -:101B600025FF37C01092580126E03091E80035FD7E -:101B700015C03091D601343061F53091EB0035FD60 -:101B800028C0215021F481E08093580122C0EFE960 -:101B9000FFE03197F1F700C00000E7CF8093F1003C -:101BA0008091E80085FD0AC08091E80080FFFCCFAD -:101BB0008091E8008E778093E80006C08FB7F89494 -:101BC00021E020935A018FBF9F709093E90080E03D -:101BD00008959F709093E9008FEF0895CF93DF935E -:101BE00000D01F92CDB7DEB79C018091D601843022 -:101BF00019F593E099833B832A839093E9008FEF53 -:101C00009091E800815095FD06C095ED9A95F1F709 -:101C100000008111F5CF8091E80085FF0DC040E004 -:101C200050E063E070E0CE0101960E948B1080913D -:101C3000E8008E778093E8000F900F900F90DF916F -:101C4000CF910895CF93DF9300D01F92CDB7DEB729 -:101C50002091D601243021F522E029839B838A83B9 -:101C600083E08093E9008FEF9091E800815095FD2B -:101C700006C095ED9A95F1F700008111F5CF80919E -:101C8000E80085FF0DC040E050E063E070E0CE0169 -:101C900001960E948B108091E8008E778093E80077 -:101CA0000F900F900F90DF91CF9108952091D60162 -:101CB0002430F1F422E02093E9002FEF3091E80086 -:101CC000215035FD06C035ED3A95F1F700002111A0 -:101CD000F5CF2091E80025FF0BC040E050E065E023 -:101CE00070E00E948B108091E8008E778093E8006E -:101CF0000895CF93DF932091D601243039F521E068 -:101D00002093E9002FEF3091E800215035FD06C007 -:101D100035ED3A95F1F700002111F5CF2091E8005B -:101D200025FF14C0EC0140E050E068E070E00E9444 -:101D30008B108091E8008E778093E80088E0FE01A8 -:101D4000ABE5B1E001900D928A95E1F7DF91CF917B -:101D500008958EED94E00E94E5078091D5018111F0 -:101D600009C00E9420120E947D128091E2008460CE -:101D70008093E20008958AED94E00E94E5071092B6 -:101D8000D501089586ED94E00C94E50782ED94E08A -:101D90000C94E5078EEC94E00E94E5070C94572024 -:101DA000209159012F5F822F62E30E94CD2B99234E -:101DB00019F02093590108951092590180915A0108 -:101DC000882371F18091D601843041F58091E9003A -:101DD0008F702091EC00922F917020FD90E8892B5C -:101DE00094E09093E9009091EB0090FF14C09091E3 -:101DF000EE0097FF10C09091E80095FF03C010928D -:101E0000F100F9CF9091E80090FF05C09091E800B3 -:101E10009E779093E8008F708093E90010925A01AA -:101E2000089542E061EC81E00E949A1142E061EC89 -:101E300082E00E949A1142E061EC83E00E949A11D4 -:101E400042E261EC84E00C949A118091D8018330D5 -:101E500009F453C030F4813071F0823009F48CC041 -:101E600008958A3009F478C08B3009F45EC0893057 -:101E700009F09AC020C08091D701813A09F094C03E -:101E80008091E800877F8093E8008091DB0190914A -:101E9000DC01892B21F468E08BE591E003C060E070 -:101EA00080E090E070E00E94D6108091E8008B778F -:101EB0008093E80008958091D701813209F074C0C1 -:101EC0008091DB019091DC01892B09F06DC080913C -:101ED000E800877F8093E8008091E80082FD05C0DC -:101EE0008091D6018111F8CF5FC08091F10080937D -:101EF00063018091E8008B7753C08091D701813ACC -:101F000009F052C08091DB019091DC01892B09F02E -:101F10004BC08091E800877F8093E8008091E800C3 -:101F200080FFFCCF80910A0136C08091D7018132B9 -:101F3000D9F58091DB019091DC01892BA9F5809185 -:101F4000E800877F8093E8000E94CF118091D9013B -:101F500080930A010C94CF198091D701813221F529 -:101F60008091E800877F8093E8000E94CF118091E4 -:101F7000DA018093640108958091D701813AA1F438 -:101F80008091E800877F8093E8008091E80080FFDF -:101F9000FCCF809164018093F1008091E8008E77FE -:101FA0008093E8000C94CF11089584B7877F84BF95 -:101FB00088E10FB6F89480936000109260000FBE25 -:101FC00090E080E80FB6F8948093610090936100F0 -:101FD0000FBE0E94AF150E9420120E947D128091B8 -:101FE000E20084608093E2008BE89DE00E94F91F8C -:101FF00078940E9402150E94B11580E091E00E9441 -:102000001D158DEB94E00E94E5078091D601853087 -:1020100089F489EB94E00E94E5070E9420208091DA -:10202000D401882391F30E944920882371F30E94F0 -:102030007510EBCF0E94D515E8CF292F3327233019 -:102040003105C9F064F42130310581F022303105C9 -:1020500009F043C084E790E028E035E042C0213237 -:102060003105F1F02232310541F137C082E190E0D3 -:102070002CE735E036C099278130910541F0823058 -:10208000910541F0892B49F5E4E0F5E005C0E6EF64 -:10209000F4E002C0E2EEF4E0849190E09F0121C000 -:1020A0006430D8F4E62FF0E0EE0FFF1FE15EFE4F44 -:1020B0002081318189E090E014C0643070F470E0D8 -:1020C000FB01EE0FFF1FE95EFE4F20813181FB0116 -:1020D000ED5EFE4F808190E004C080E090E020E063 -:1020E00030E0FA0131832083089580E189BD82E1E7 -:1020F00089BD09B400FEFDCF8091D8008F7D80930B -:10210000D8008091E00082608093E0008091E00040 -:1021100081FDFCCF0895CF92DF92EF92FF920F9353 -:102120001F93CF93DF93EC018B016A010E94EE11A4 -:10213000811133C0C114D10439F0F601808191813D -:10214000081B190BC80FD91FE12CF12C0115110523 -:1021500019F18091E80085FD16C08091E8008E7726 -:102160008093E800C114D10449F0F6018081918187 -:10217000E80EF91EF182E08285E00FC00E94EE11A8 -:10218000882321F30AC089918093F100015011093D -:10219000FFEFEF1AFF0ADACF80E0DF91CF911F91B6 -:1021A0000F91FF90EF90DF90CF9008952091DD0187 -:1021B0003091DE012617370748F06115710539F4B3 -:1021C0002091E8002E772093E80001C0B90140E09B -:1021D00061157105A9F12091D601222309F443C0AC -:1021E000253009F442C02091E80023FD40C0209131 -:1021F000E80022FD32C02091E80020FFE9CF4091A5 -:10220000F3002091F20030E0342BFC01CF01611586 -:10221000710559F02830310540F481918093F10027 -:10222000615071092F5F3F4FF1CF41E028303105F8 -:1022300009F040E02091E8002E772093E800C8CF15 -:102240004111C9CF0AC08091D601882361F0853041 -:1022500061F08091E80083FD0AC08091E80082FF70 -:10226000F2CF80E0089582E0089583E0089581E050 -:1022700008952091DD013091DE012617370748F0DF -:102280006115710539F42091E8002E772093E8005C -:1022900001C0B901FC0120E06115710591F1809147 -:1022A000D601882309F440C0853009F43FC08091ED -:1022B000E80083FD3DC08091E80082FD2FC0809141 -:1022C000E80080FFE9CF2091F3008091F20090E0D8 -:1022D000922B6115710559F08830910540F42491D5 -:1022E0002093F1003196615071090196F2CF21E0FF -:1022F000089709F020E08091E8008E778093E8004D -:10230000CBCF2111CCCF0AC08091D601882361F0B8 -:10231000853061F08091E80083FD0AC08091E8007B -:1023200082FFF2CF80E0089582E0089583E008956F -:1023300081E00895982F973058F59093E900981709 -:1023400039F07091EC002091ED005091F00003C045 -:10235000242F762F50E021FF19C03091EB003E7FF3 -:102360003093EB003091ED003D7F3093ED003091E4 -:10237000EB0031603093EB007093EC002093ED00A4 -:102380005093F0002091EE0027FF07C09F5FD3CF4E -:102390008F708093E90081E0089580E00895809136 -:1023A000D70187FF11C08091E80082FD05C08091B0 -:1023B000D6018111F8CF11C08091E8008B770BC056 -:1023C0008091D601882349F08091E80080FFF8CF02 -:1023D0008091E8008E778093E80008952091E400D2 -:1023E0003091E50095E64091EC00842F817040FF2C -:1023F00022C08091E80080FD1CC08091D601882316 -:1024000091F0853091F08091EB0085FD10C04091F6 -:10241000E4005091E5004217530729F39A019150C7 -:1024200011F784E0089582E0089583E0089581E043 -:10243000089580E008954091E80042FFDECF0895BE -:102440000E948E120E949612E0EEF0E08081816080 -:102450008083E8EDF0E080818F77808319BCA7ED61 -:10246000B0E08C918E7F8C9380818F7E80831092E0 -:10247000D50108950F931F93CF93DF930E948E127F -:102480000E949612C8EDD0E088818F77888388817A -:102490008068888388818F7D888319BC1092D601DB -:1024A0001092D2011092D4011092D30100EE10E0EC -:1024B000F80180818B7F808388818160888342E0FE -:1024C00060E080E00E949A11E1EEF0E080818E7F72 -:1024D0008083E2EEF0E0808181608083808188608B -:1024E0008083F80180818E7F8083888180618883EA -:1024F000DF91CF911F910F910895E8EDF0E0808179 -:102500008F7E8083E7EDF0E080818160808384E0CE -:1025100082BF81E08093D5010C943A12E8EDF0E09F -:1025200080818E7F80831092E20008951092DA00FD -:102530001092E10008951F920F920FB60F9211248E -:102540002F933F934F935F936F937F938F939F93BB -:10255000AF93BF93EF93FF938091E10082FF0BC095 -:102560008091E20082FF07C08091E1008B7F809321 -:10257000E1000E94D00E8091DA0080FF1FC08091A0 -:10258000D80080FF1BC08091DA008E7F8093DA0034 -:102590008091D90080FF0DC080E189BD82E189BDB5 -:1025A00009B400FEFDCF81E08093D6010E94A90E00 -:1025B00005C019BC1092D6010E94BB0E8091E100AB -:1025C00080FF19C08091E20080FF15C08091E20079 -:1025D0008E7F8093E2008091E20080618093E20030 -:1025E0008091D80080628093D80019BC85E08093E8 -:1025F000D6010E94C60E8091E10084FF30C0809118 -:10260000E20084FF2CC080E189BD82E189BD09B46C -:1026100000FEFDCF8091D8008F7D8093D8008091FF -:10262000E1008F7E8093E1008091E2008F7E8093B5 -:10263000E2008091E20081608093E2008091D2010B -:10264000882311F084E007C08091E30087FD02C079 -:1026500081E001C083E08093D6010E94CA0E809180 -:10266000E10083FF29C08091E20083FF25C08091B3 -:10267000E100877F8093E10082E08093D601109291 -:10268000D2018091E1008E7F8093E1008091E20091 -:102690008E7F8093E2008091E20080618093E2006F -:1026A00042E060E080E00E949A118091F000886032 -:1026B0008093F0000E94C20EFF91EF91BF91AF9105 -:1026C0009F918F917F916F915F914F913F912F914A -:1026D0000F900FBE0F901F9018951F920F920FB67C -:1026E0000F9211242F933F934F935F936F937F9398 -:1026F0008F939F93AF93BF93CF93DF93EF93FF930A -:10270000C091E900CF708091EC00D82FD17080FD8E -:10271000D0E81092E9008091F000877F8093F0006C -:1027200078940E94B1131092E9008091F0008860C3 -:102730008093F000CD2BCF70C093E900FF91EF9113 -:10274000DF91CF91BF91AF919F918F917F916F91C9 -:102750005F914F913F912F910F900FBE0F901F905F -:1027600018951F93CF93DF93CDB7DEB7AA970FB617 -:10277000F894DEBF0FBECDBFE7EDF1E088E08E0F2D -:102780009091F10091938E13FBCF0E94250F8091C1 -:10279000E80083FF1FC18091D7019091D801492F94 -:1027A00050E04A30510508F015C1FA01EA5AFF4FCE -:1027B0000C94ED2B803881F0823809F00BC18091A8 -:1027C000DB018F708093E9008091EB0085FB882707 -:1027D00080F91092E90006C08091D3019091D40154 -:1027E000911182609091E800977F9093E800809328 -:1027F000F1001092F100C8C0282F2D7F09F0EAC027 -:10280000882319F0823061F0E5C08091D9018130D0 -:1028100009F0E0C0933009F080E08093D4012BC030 -:102820008091D901811127C08091DB018F7009F45B -:10283000D1C08093E9002091EB0020FF1CC09330B1 -:1028400021F48091EB00806214C09091EB009061C4 -:102850009093EB0021E030E0A90102C0440F551F26 -:102860008A95E2F74093EA001092EA008091EB002B -:1028700088608093EB001092E9008091E800877FE8 -:1028800086C08111A7C01091D9011F778091E30004 -:102890008078812B8093E3008091E800877F80938C -:1028A000E8000E94CF118091E80080FFFCCF80916A -:1028B000E30080688093E300111102C082E001C050 -:1028C00083E08093D60186C08058823008F082C0B1 -:1028D0008091D9019091DA018C3D53E0950779F50B -:1028E00083E08A838AE289834FB7F894DE011396E6 -:1028F00020E03EE051E2E32FF0E050935700E491F6 -:1029000020FF03C0E295EF703F5FEF708E2F90E0E5 -:10291000EA3010F0C79601C0C0968D939D932F5F4B -:10292000243149F74FBF8091E800877F8093E8000A -:102930006AE270E0CE0101960E94D61014C0AE018A -:102940004F5F5F4F6091DB010E941D10BC0100973B -:1029500009F440C09091E800977F9093E800898146 -:102960009A810E9439118091E8008B778093E8006A -:1029700031C0803879F58091E800877F8093E80046 -:102980008091D2018093F1008091E8008E7780934E -:10299000E8000E94CF111EC081111CC09091D90186 -:1029A0009230C0F48091E800877F8093E800909394 -:1029B000D2010E94CF118091D201811106C0809175 -:1029C000E30087FD02C081E001C084E08093D6016E -:1029D0000E94110F8091E80083FF0AC08091E800F7 -:1029E000877F8093E8008091EB0080628093EB000A -:1029F000AA960FB6F894DEBF0FBECDBFDF91CF9180 -:102A00001F910895CF938091D6018823A1F0C091A2 -:102A1000E900CF709091EC00892F817090FD80E8E3 -:102A2000C82B1092E9008091E80083FD0E94B11349 -:102A3000CF70C093E900CF91089590936A0180937D -:102A400069010895E0916901F0916A01309721F0E0 -:102A50000190F081E02D099480E00895EF92FF92BB -:102A60000F931F93CF93DF93E0916901F0916A0177 -:102A70003097B1F18C010280F381E02D09958091AE -:102A8000C10182FF2DC080FF04C088E796E00E944C -:102A9000E507E80118E082E7E82E86E0F82E80914D -:102AA000C10180FF0BC088811F928F93FF92EF922C -:102AB0000E947E080F900F900F900F90115021965A -:102AC0001111EDCF8091C10180FF0AC080E796E02F -:102AD000DF91CF911F910F91FF90EF900C94E5073C -:102AE000DF91CF911F910F91FF90EF900895E091AA -:102AF0006901F0916A01309721F00480F581E02DA1 -:102B00000994089520916701309168018217930715 -:102B100071F09093680180936701E0916901F091F1 -:102B20006A01309721F00680F781E02D099408951D -:102B300020916501309166018217930771F090939F -:102B4000660180936501E0916901F0916A01309717 -:102B500021F00084F185E02D0994089508950C94E6 -:102B6000AE150E9486200E9487080C948021CF9386 -:102B7000DF931F92CDB7DEB79091C10192FF10C0D5 -:102B800090FF0EC01F928F932AE836E03F932F9359 -:102B900089830E947E080F900F900F900F9089817B -:102BA0000F90DF91CF910C94860D9F92AF92BF92C0 -:102BB000CF92DF92EF92FF920F931F93CF93DF9309 -:102BC00000D000D000D0CDB7DEB70E94AA0807E041 -:102BD00010E0AA24A394B12C902E802F0E947D098E -:102BE000980124593E4F6901F901F080F826A1F4BB -:102BF0000150110988F78FEF89838A831B820E9415 -:102C00008F208160782F9D838C8349815A816B81CD -:102C10008D810E946C162FC09091C10191FF04C05C -:102C20008E830E9486098E8127E030E0A501022E66 -:102C300001C0440F0A94EAF7E42E4F21C1F0298322 -:102C40009A828E2191E009F490E09B830E948F206C -:102C50008160782F9D838C8349815A816B818D811E -:102C60000E946C16F6018081E826E08204C02150A3 -:102C70003109E0F6BDCF0E94EA2410916B010E9459 -:102C800022151817B9F00E94221580936B01269621 -:102C90000FB6F894DEBF0FBECDBFDF91CF911F916D -:102CA0000F91FF90EF90DF90CF90BF90AF909F90EB -:102CB0000C94B71526960FB6F894DEBF0FBECDBFA5 -:102CC000DF91CF911F910F91FF90EF90DF90CF9008 -:102CD000BF90AF909F900895CF93DF93CDB7DEB7AD -:102CE0002B970FB6F894DEBF0FBECDBF4F8358872A -:102CF00069877A878B87DE01119686E0FD01119244 -:102D00008A95E9F785E0FE01379601900D928A9544 -:102D1000E1F749815A816B817C818D819E810E947E -:102D20006D1C2B960FB6F894DEBF0FBECDBFDF91A2 -:102D3000CF910895CF93882309F499C0C82F8CEFC1 -:102D40008C0F813A48F48C2F0E94562981118FC034 -:102D50008C2F0E94471F0CC080E28C0F883058F4E3 -:102D6000C77081E001C0880FCA95EAF70E94831FEF -:102D7000CF910C94CA1F8BE58C0F833078F4C53A41 -:102D800029F0C63A31F083E890E005C081E890E090 -:102D900002C082E890E0CF910C94821588E58C0FF8 -:102DA000833108F064C0C83A39F1C93A41F1CA3AEE -:102DB00049F1CB3A51F1CC3A59F1CD3A61F1C03BEE -:102DC00069F1CE3A71F1CF3A79F1C13B81F1C23B61 -:102DD00089F1C33B91F1C43B99F1C53BA1F1C63BDD -:102DE000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B3D -:102DF000C9F180E090E038C082EE90E035C089EE05 -:102E000090E032C08AEE90E02FC085EB90E02CC0BD -:102E100086EB90E029C087EB90E026C08CEC90E038 -:102E200023C08DEC90E020C083E891E01DC08AE8CB -:102E300091E01AC082E991E017C084E991E014C0E2 -:102E400081E292E011C083E292E00EC084E292E05F -:102E50000BC085E292E008C086E292E005C087E2FE -:102E600092E002C08AE292E0CF910C949815CF9143 -:102E70000895882329F19CEF980F913A18F40E9445 -:102E8000641F0DC090E2980F983058F4877091E05D -:102E900001C0990F8A95EAF7892F0E94891F0C9427 -:102EA000CA1F9BE5980F933020F480E090E00C94CB -:102EB0008215885A833120F480E090E00C949815B4 -:102EC0000895882321F00E94831F0C94CA1F08953F -:102ED000882321F00E94891F0C94CA1F08957F92B5 -:102EE0008F929F92AF92BF92CF92DF92EF92FF921A -:102EF0000F931F93CF93DF931F92CDB7DEB77C0163 -:102F0000C62E772EFC01058102950F7012811111DA -:102F10000E94A01F0E94401F882379F0112369F0AE -:102F200080E28C0D883048F082E00E94291F0E94C8 -:102F3000401F91E0D82ED92601C0D12CE72DE29573 -:102F4000EF70F0E0E05AFF4F0C94ED2B872D807F5F -:102F5000072D0F70882311F00295007F112389F04F -:102F6000002309F498C180E28C0D883020F4802F72 -:102F70000E94831F03C0802F0E94931F0E94CA1FBC -:102F80008AC18C2D0E943917002309F49DC180E26B -:102F90008C0D883020F4802F0E94891F03C0802F61 -:102FA0000E94991F0E94CA1F8FC1872D807F972D75 -:102FB0009F70803211F4892F03C0892F8295807F02 -:102FC000CC2021F0F1E0CF16A1F01DC0112339F083 -:102FD000002319F1013009F50E94B31F75C10023C8 -:102FE00019F0013009F470C189830E94B61F8981EC -:102FF00010C1112321F0063008F066C10EC0053063 -:1030000008F062C106C1112359F0002331F0F70125 -:10301000958190FF40C19F7095830E94611754C1B4 -:10302000002309F4F6C03DC1872D869586958370EF -:1030300090E0009719F0019761F046C1112321F04B -:103040008C2D972D937002C080E090E00E94821535 -:103050003BC1112321F08C2D972D937002C080E08D -:1030600090E00E94981530C18C2D112319F00E9418 -:10307000702302C00E94D8230E945D2425C1872DA1 -:10308000837009F052C011111FC18C2D8295869555 -:103090008770880F880F9C2D9F70892E912CA12CF2 -:1030A000B12C082E04C0880C991CAA1CBB1C0A94C5 -:1030B000D2F7C4FE14C00FE010E020E030E0B90108 -:1030C000A80104C0440F551F661F771F8A95D2F7C9 -:1030D000CB01BA01609570958095909503C060E032 -:1030E00070E0CB01272D26952695237030E0223005 -:1030F000310569F02330310589F0682979298A2959 -:103100009B292130310571F00E94B51DDDC0682971 -:1031100079298A299B290E94D11DD6C00E94B51DFC -:10312000C501B4010E94991DCFC0112319F0872D4C -:10313000817001C08695882309F4C6C08C2D8295C4 -:1031400086958770880F880F9C2D9F70892E912CF3 -:10315000A12CB12C082E04C0880C991CAA1CBB1CE5 -:103160000A94D2F7C4FE14C00FE010E020E030E073 -:10317000B901A80104C0440F551F661F771F8A9527 -:10318000D2F7CB01BA01609570958095909503C0F8 -:1031900060E070E0CB01272D269526952370422F05 -:1031A00050E04230510569F04330510589F06829FB -:1031B00079298A299B294130510571F00E948F1E7F -:1031C00083C0682979298A299B290E94AB1E7CC06B -:1031D0000E948F1EC501B4010E94731E75C08C2D04 -:1031E00090E0FC01E05EF109E531F10508F04FC027 -:1031F000E059FF4F0C94ED2B0C2D0F70872D8F7124 -:10320000112321F00E940C1E802F07CF0E942D1E3B -:10321000802F0E94681758C0112341F0053008F034 -:1032200053C0872D8F710E94521E4EC0063008F089 -:103230004BC0F7CF112339F0872D8F710E940C1EE0 -:1032400043C01123C9F3872D8F710E942D1E3CC0EE -:10325000112329F0872D8F710E94F71D35C00E9420 -:10326000ED1D32C0112351F0172D1F71812F0E94C7 -:103270000C1E63E0812F0E94201F26C081E00E9467 -:10328000291F023008F182E00E94291F1DC011236E -:1032900031F0002389F28C2D0E949A1615C000236C -:1032A00091F28C2D0E9439170FC0472D4F706C2D55 -:1032B000C7010E94CC090E94111D06C0472D4F7006 -:1032C0006C2DC7010E948B0ADD20F9F00E941C1FA3 -:1032D00080FD1BC0F70112820E94161F0E940C1E67 -:1032E000C7010E9494190E94161F0F90DF91CF9181 -:1032F0001F910F91FF90EF90DF90CF90BF90AF9014 -:103300009F908F907F900C942D1E0F90DF91CF9106 -:103310001F910F91FF90EF90DF90CF90BF90AF90F3 -:103320009F908F907F9008950F931F93CF93DF937B -:10333000EC01888199812B813C81232BB9F09F3F3F -:1033400011F48F3F99F0CE010E94E309882371F0B8 -:10335000688179818A810E94121F8C010E94C71E98 -:103360000E948E1DB801CE010E946F17DF91CF9190 -:103370001F910F9108950E94A01F0E94B01F0E94EC -:10338000751F0E94CA1F0E9490250E945D2480E044 -:1033900090E00E94821580E090E00C9498150E94C5 -:1033A000901F0C94BB190E94071F292F22952F7084 -:1033B00030E02C3031054CF42A3031056CF42250C9 -:1033C000310922303105A8F407C02C30310569F0ED -:1033D0002F30310551F00DC0803F69F018F4803E68 -:1033E00040F409C0843F29F406C093FB882780F984 -:1033F000089580E0089581E00895CF93DF9300D091 -:1034000000D01F92CDB7DEB70F900F900F900F90A6 -:103410000F90DF91CF910895CF93DF9300D000D02C -:1034200000D0CDB7DEB726960FB6F894DEBF0FBE3C -:10343000CDBFDF91CF9108951F93CF93DF93C091BC -:10344000740116E080917501C81799F0D0E01C9FB7 -:10345000F0011D9FF00D1124EA58FE4F408151816B -:1034600062817381848195810E940C1A2196C770B4 -:10347000E9CFDF91CF911F9108954091A60150911E -:10348000A7016091A8017091A9018091AA01909172 -:10349000AB010C940C1A8091AB0182958F7009F0EE -:1034A00054C08091A801882309F44FC08091740111 -:1034B000A09175016091A6017091A7014091A901A9 -:1034C0005091AA01B6E08A1709F43FC090E0411577 -:1034D0005105C1F17F3F11F46F3FA1F1B89FF00199 -:1034E000B99FF00D1124EA58FE4F218172132AC0B2 -:1034F0002081621327C02281211124C023813481BD -:103500002417350710F421503109241B350B283CB2 -:103510003105C0F42091AB012F7020612093AB01E5 -:1035200026E0289FF001299FF00D1124E558FE4F59 -:1035300080818F708061808386EA91E00E94941977 -:103540000C941C1A01968770BECF0895CF92DF921B -:10355000EF92FF920F931F93CF93DF93CDB7DEB718 -:1035600062970FB6F894DEBF0FBECDBF8C0185E029 -:10357000F801DE011D9601900D928A95E1F7D801C0 -:103580004C9111965C91119712966C91129713962B -:10359000CD90DC9014973091A6017091A701809195 -:1035A000A9019091AA01009709F46BC17F3F19F41A -:1035B0003F3F09F466C1E090A801EE2009F4C0C0C5 -:1035C0002091AB01C816D90628F0F601E81BF90BCB -:1035D000CF0104C0809590958C0D9D1DFF24F39420 -:1035E000883C910578F0F12C207F09F0C6C07C2D35 -:1035F000D98AC88A89890E94FD1986EA91E00E94C9 -:103600009419B1C0822F807F09F046C0751314C091 -:10361000341312C0611110C02F7020612093AB01D0 -:103620000E943D1A86EA91E00E9494198091AB01B4 -:10363000D80115968C932EC0CD2819F15F3F11F457 -:103640004F3FF9F0F62E61111CC08091740120915A -:10365000750136E0821709F45AC090E0389FF001F6 -:10366000399FF00D1124EA58FE4F7181571306C09F -:103670007081471303C07281711103C00196877076 -:10368000E9CFF62E662309F418C18091AB01816061 -:103690008093AB01F12C11C1751308C0341306C01F -:1036A000611104C08091AB01D801C3C04D875E8712 -:1036B0008D859E856A8B0E94D3196A898823E1F1E2 -:1036C0006623D1F12091AB01822F82958F7090E01B -:1036D000029774F08091A6019091A70198878F833B -:1036E0001986DB86CA862C87CE0107960E9494191C -:1036F00086E0F801A6EAB1E001900D928A95E1F723 -:103700000E944B1A0E943D1AFF24F394D6C04D87A5 -:103710005E878D859E850E94071F292F22952F7019 -:1037200030E0223031050CF0BCC09F7009F0B6C00B -:10373000805E883008F4C1C0C8010E949419E4CFAB -:10374000C816D90608F453C0F601E81BF90BCF01DF -:10375000883C910508F450C0F12C7C2DD98AC88A88 -:1037600089890E94FD19E6EAF1E086E0DF011D92F9 -:103770008A95E9F70E943D1AA0C0751314C034134E -:1037800012C0611110C08091AB01F8018583C8019E -:103790000E94941986E0E6EAF1E0DF011D928A9525 -:1037A000E9F7FE2C8AC04D875E878D859E856A8BE2 -:1037B0000E94D3196A89882309F4BECF662309F4CD -:1037C000BBCF2091AB01822F82958F7090E0029742 -:1037D0000CF48ECF8091A6019091A7019A838983E2 -:1037E0001B82DD82CC822E83CE0101967FCF809515 -:1037F00090958C0D9D1DACCFF62E662309F49CCFC1 -:1038000075132EC034132CC02091AB0120FD1FC0B6 -:10381000822F82958F70D9F0D80115962C93159729 -:103820008F3049F08F5F982F9295907F822F8F7005 -:10383000892B15968C93C8010E94941986E0F80193 -:10384000A6EAB1E001900D928A95E1F793CF86E068 -:10385000F801A6EAB1E001900D928A95E1F72DC03A -:103860004D875E878D859E850E94D319811140CF3B -:103870008091AB0181608093AB01C8010E949419D3 -:103880001CC0662309F458CF4D875E878D859E85C1 -:103890000E94D319882309F44FCF2ACF811148CF32 -:1038A0000CC0243031050CF047CF9F7009F440CF95 -:1038B000F8019581907F09F03BCF8F2D62960FB66E -:1038C000F894DEBF0FBECDBFDF91CF911F910F9156 -:1038D000FF90EF90DF90CF9008951F93CF93DF93E9 -:1038E000CDB7DEB72C970FB6F894DEBF0FBECDBFB5 -:1038F0004F83588769877A878B879C87CE01079685 -:103900000E94A61A882369F08F8198852A853B85B5 -:10391000232BF1F19F3F09F063C08F3F09F060C096 -:1039200037C086E0FE013796DE01119601900D92B8 -:103930008A95E1F76F817885EA85FB85309741F1BB -:103940007F3F11F46F3F21F12091750130E0C901F3 -:103950000196877099274091740150E0841795076C -:1039600009F447C069837A83FD83EC8396E0929FD4 -:10397000D001939FB00D1124AA58BE4FFE0131967D -:1039800001900D929A95E1F7809375010E941C1A9F -:1039900016E080917401909175018917C1F1189F0B -:1039A000C00111248A589E4F0E94A61A882379F1DB -:1039B000E09174011E9FF0011124EA58FE4F4081EE -:1039C000518162817381848195810E940C1A80915A -:1039D000740190E001968770992780937401D9CF84 -:1039E0004F81588569857A858B859C850E940C1A44 -:1039F000CFCF0E94CF191092750110927401E6EAA0 -:103A0000F1E086E0DF011D928A95E9F7C1CF2C969F -:103A10000FB6F894DEBF0FBECDBFDF91CF911F91DF -:103A20000895EF92FF920F931F93CF93DF938C0132 -:103A3000009709F46CC0F12CEE24E394E801219680 -:103A4000F8018491843740F4843008F051C081300B -:103A500081F0823019F15BC0853709F444C0A8F1C8 -:103A60009CE7980F903708F052C08F770E94391763 -:103A700041C00E5F1F4FFE01C49180E28C0F883061 -:103A800048F4C7708E2D01C0880FCA95EAF70E94CE -:103A9000A31F14C08C2F0E949A162DC00E5F1F4FBB -:103AA000FE01C49180E28C0F883058F4C7708E2DCF -:103AB00001C0880FCA95EAF70E94A91F0E94CA1F79 -:103AC0001AC08C2F0E94391716C00E5F1F4FFE01BF -:103AD000C491CC2381F08FE99FE00197F1F700C0FA -:103AE0000000C150F6CF0E5F1F4FFE01F49003C0DF -:103AF0000E949A168E018F2D882309F49FCFEFE93B -:103B0000FFE03197F1F700C000008150F5CFDF9161 -:103B1000CF911F910F91FF90EF90089508956093BA -:103B2000B0017093B1018093B2019093B3010C94F2 -:103B3000BB190F931F930091B0011091B101209117 -:103B4000B2013091B301DC01CB01802B912BA22B70 -:103B5000B32B8093B0019093B101A093B201B093C5 -:103B6000B3011F910F910C94BB190F931F930091F8 -:103B7000B0011091B1012091B2013091B301DC018B -:103B8000CB0180239123A223B3238093B001909390 -:103B9000B101A093B201B093B3011F910F910C94A6 -:103BA000BB190F931F930091B0011091B1012091A7 -:103BB000B2013091B301DC01CB0180279127A2270C -:103BC000B3278093B0019093B101A093B201B09359 -:103BD000B3011F910F910C94BB191092AC0110927C -:103BE000AD011092AE011092AF010C94BB1941E0EF -:103BF00050E060E070E004C0440F551F661F771F5F -:103C00008A95D2F74093AC015093AD016093AE0119 -:103C10007093AF010C94BB1941E050E060E070E09C -:103C200004C0440F551F661F771F8A95D2F78091F5 -:103C3000AC019091AD01A091AE01B091AF01482BC4 -:103C4000592B6A2B7B2B4093AC015093AD016093B1 -:103C5000AE017093AF010C94BB1941E050E060E0FD -:103C600070E004C0440F551F661F771F8A95D2F776 -:103C700040955095609570958091AC019091AD0103 -:103C8000A091AE01B091AF01482359236A237B2351 -:103C90004093AC015093AD016093AE017093AF01BE -:103CA0000C94BB1941E050E060E070E004C0440FA8 -:103CB000551F661F771F8A95D2F78091AC019091AE -:103CC000AD01A091AE01B091AF01482759276A27F5 -:103CD0007B274093AC015093AD016093AE0170938C -:103CE000AF010C94BB190F931F930091AC0110917D -:103CF000AD012091AE013091AF01DC01CB01802BF1 -:103D0000912BA22BB32B8093AC019093AD01A09388 -:103D1000AE01B093AF011F910F910C94BB190F939B -:103D20001F930091AC011091AD012091AE01309133 -:103D3000AF01DC01CB0180239123A223B323809325 -:103D4000AC019093AD01A093AE01B093AF011F9170 -:103D50000F910C94BB190F931F930091AC0110911C -:103D6000AD012091AE013091AF01DC01CB01802784 -:103D70009127A227B3278093AC019093AD01A09324 -:103D8000AE01B093AF011F910F910C94BB19089530 -:103D9000CF92DF92EF92FF920F931F93CF93DF9317 -:103DA0008C01C090B001D090B101E090B201F090D0 -:103DB000B3018091AC019091AD01A091AE01B091A1 -:103DC000AF01C82AD92AEA2AFB2ACFE1D0E0D701DD -:103DD000C6010C2E04C0B695A795979587950A94B1 -:103DE000D2F780FF06C0B8018C2F0E94E80C019723 -:103DF00021F4219760F780E001C08C2FDF91CF91F3 -:103E00001F910F91FF90EF90DF90CF900895CF9387 -:103E1000DF93EC010E94C81EBE010E94E80CDF91F6 -:103E2000CF910895CB010E94071F08958091B4019E -:103E300085958595859508958091B401877008953D -:103E400098E0899F90011124262B2093B4010C94B3 -:103E50000C1E2091B401809582238093B401982F89 -:103E6000977069F430E0482F552747FD5095241787 -:103E7000350729F08595859585950C942D1E089517 -:103E80009091B401977081E009F480E00895209149 -:103E90000B0130910C01F90132969FEF40E05191F6 -:103EA000581789F09F3F19F4511101C0942F4F5FAB -:103EB0004630A9F79F3F39F0F901E90FF11D97FD51 -:103EC000FA9582830895089520910B0130910C0199 -:103ED000F9013296285F3F4F9081981301C01082FC -:103EE0003196E217F307C1F7089581E090E0E09181 -:103EF0000B01F0910C01E80FF91F10820196883038 -:103F00009105A9F708959091C001892B8093C00174 -:103F1000089580959091C00189238093C0010895F0 -:103F20001092C00108959091BF01892B8093BF0129 -:103F3000089580959091BF0189238093BF010895D2 -:103F40001092BF0108959091BE01892B8093BE010C -:103F5000089580959091BE0189238093BE010895B4 -:103F60001092BE0108958093B50108951092B50195 -:103F7000089580910B0190910C01FC0131969C01F8 -:103F8000285F3F4F80E0919191118F5FE217F30717 -:103F9000D1F70895E0910B01F0910C018091C001DF -:103FA0008083E0910B01F0910C0190818091BF0121 -:103FB000892B8083E0910B01F0910C01908180911D -:103FC000BE01892B80838091B501882361F0E09147 -:103FD0000B01F0910C019081892B80830E94B91F05 -:103FE00081111092B50180910B0190910C010C94FC -:103FF0002E159093330180933201089520E00097AD -:1040000039F0AC0141505109842395232F5FF7CF3C -:10401000822F08958295982F9C7C392F369536955E -:10402000282F237344E0249FC0011124932F982B41 -:10403000292F2A7A2695892F8575880F822B089536 -:104040008091D601843021F11092C20120E488E1F0 -:1040500090E00FB6F894A895809360000FBE20936F -:10406000600080E00E94860D83B7817F846083BFFB -:1040700083B7816083BF7894889583B78E7F83BF31 -:1040800088E10FB6F89480936000109260000FBE34 -:1040900008950E94CA090E94AA080E94CB090E94A2 -:1040A000B20991E0811101C090E0892F08950E942A -:1040B000CF190E9422150C94860D1F920F920FB6F5 -:1040C0000F9211248F939F93AF93BF938091C2015E -:1040D000811113C08091C3019091C401A091C501C9 -:1040E000B091C6014196A11DB11D8093C30190936B -:1040F000C401A093C501B093C601BF91AF919F9138 -:104100008F910F900FBE0F901F90189582E084BD85 -:1041100093E095BD9AEF97BD80936E0008952FB7F9 -:10412000F8948091C3019091C401A091C501B09110 -:10413000C6012FBF08952FB7F8946091C301709105 -:10414000C4018091C5019091C6012FBF0895CF92FF -:10415000DF92EF92FF920F931F932FB7F894409145 -:10416000C3015091C4016091C5017091C6012FBF78 -:104170006A017B01EE24FF248C0120E030E0C016B0 -:10418000D106E206F30610F4415051099A01281BAA -:10419000390BC9011F910F91FF90EF90DF90CF90E5 -:1041A0000895CF92DF92EF92FF920F931F932FB754 -:1041B000F894C090C301D090C401E090C501F09084 -:1041C000C6012FBF97018601061B170B280B390B61 -:1041D000C616D706E806F90618F0C901B80106C0E8 -:1041E000C901B80161507109810991091F910F91AD -:1041F000FF90EF90DF90CF9008951F920F920FB62F -:104200000F9211248F939F93AF93BF938091C3011B -:104210009091C401A091C501B091C6010196A11D64 -:10422000B11D8093C3019093C401A093C501B093C5 -:10423000C601BF91AF919F918F910F900FBE0F90CC -:104240001F9018950E942012F8942FEF87EA91E6AC -:10425000215080409040E1F700C0000087E090EBE3 -:10426000DC018093E0019093E101A093E201B0931F -:10427000E3019CE088E10FB6F894A8958093600074 -:104280000FBE90936000FFCFEF92FF920F931F93AA -:10429000CF93DF93D82FC7E08C2F0E947D0907E0D2 -:1042A00010E0E82EF12CC701002E02C095958795ED -:1042B0000A94E2F780FF09C0602F7C2F80E00E9403 -:1042C0008C0AD81302C081E006C00150110958F7CA -:1042D000C15010F780E0DF91CF911F910F91FF90B7 -:1042E000EF900895CF93C82F8CE20E944421882339 -:1042F00021F08C2FCF910C94442180E0CF91089530 -:10430000CF930E94C822811102C00E94AE228AEA85 -:1043100096E00E94E507C5E6C15049F00E94AA0850 -:104320008FE39CE90197F1F700C00000F5CF83EA25 -:1043300096E00E94E50789E20E94722181110CC17A -:104340008AE20E94722181110E94AE2285E00E94C1 -:10435000722181110E9422210E94D3228093C101E7 -:1043600087E00E9472218823A9F18BE10E947221CB -:10437000882351F08091C10181FB222720F991E02F -:10438000922790FB81F90EC08EE00E947221882353 -:1043900061F08091C10182FB222720F991E09227F0 -:1043A00090FB82F98093C10115C080E10E947221C7 -:1043B0009091C101882341F093FB222720F981E0ED -:1043C000822780FB93F904C0892F809580FB90F9A8 -:1043D0009093C1018091C1010E94D7220E94E522E1 -:1043E0008093DF0180EE0E947221882341F080914A -:1043F000DF01982F909590FB80F98093DF0189E38E -:104400000E947221882359F08091DF0181FB2227CD -:1044100020F991E0922790FB81F98093DF0182EEF1 -:104420000E947221882359F08091DF0182FB2227AC -:1044300020F991E0922790FB82F98093DF0186EECC -:104440000E947221882359F08091DF0183FB22278B -:1044500020F991E0922790FB83F98093DF0183EEAE -:104460000E947221882359F08091DF0184FB22276A -:1044700020F991E0922790FB84F98093DF0185E396 -:104480000E947221882359F08091DF0185FB222749 -:1044900020F991E0922790FB85F98093DF0181E379 -:1044A0000E947221882359F08091DF0186FB222728 -:1044B00020F991E0922790FB86F98093DF0181E15A -:1044C0000E947221882359F08091DF0187FB222707 -:1044D00020F991E0922790FB87F98093DF0180918A -:1044E000DF010E94E92287E20E947221C82F8EE13B -:1044F0000E9472218111C2608FE10E94722181119C -:10450000C46080E20E9472218111C86081E20E9431 -:1045100072218111C06182E20E9472218111C06208 -:1045200083E20E9472218111C06484E20E947221A0 -:10453000882311F0C06802C0CC2329F08C2F0E9480 -:10454000E0226C2F03C00E94DC22682F70E080E024 -:1045500090E0CF910C948F1DCF9108956DEE7EEF7A -:1045600080E090E00E94272C60E082E090E00E94D2 -:10457000152C60E083E090E00E94152C60E084E060 -:1045800090E00E94152C60E085E090E00C94152CE2 -:1045900080E090E00E940F2C21E08D3E9E4F09F0BC -:1045A00020E0822F089582E090E00C94072C682F81 -:1045B00082E090E00C94152C83E090E00C94072CA2 -:1045C000682F83E090E00C94152C84E090E00C942C -:1045D000072C682F84E090E00C94152C8091C90181 -:1045E00080FF0BC06091100185E0689FB00111242D -:1045F00075956795759567952BC081FF09C060918A -:10460000100185E0689FB00111247595679520C061 -:1046100082FF07C06091100185E0689FB0011124FE -:1046200017C09091CA019923D1F060910F0196179C -:1046300088F72091100185E0289F90011124929F16 -:10464000A001939F500D112470E0CA010E94D92B44 -:104650006038710540F46115710539F002C065E0FC -:1046600070E0862F08958FE7089581E00895809186 -:10467000C90180FF08C060910E0170E075956795D3 -:104680007595679521C081FF06C060910E0170E0AD -:104690007595679519C082FF04C060910E0170E0A6 -:1046A00010C09091CA019923C1F060910D01961735 -:1046B000A0F780910E01899FC001112470E00E9433 -:1046C000D92B6038710528F46115710521F0862F0A -:1046D00008958FE7089581E0089561E070E0F4CFD8 -:1046E000803F21F40E94EE22819504C0813F29F48D -:1046F0000E94EE228093CD010895823F21F40E9412 -:10470000EE22819504C0833F29F40E94EE2280931B -:10471000CC010895893F19F40E94372305C08A3FD0 -:1047200031F40E94372381958093CE0108958B3F09 -:1047300021F40E943723819504C08C3F29F40E9404 -:1047400037238093CF010895843F21F48091CB01DA -:10475000816017C0853F21F48091CB01826011C038 -:10476000863F21F48091CB0184600BC0873F21F408 -:104770008091CB01886005C0883F31F48091CB01E6 -:1047800080618093CB0108958D3F21F48091C90110 -:1047900081600BC08E3F21F48091C901826005C009 -:1047A0008F3F29F48091C90184608093C9010895E5 -:1047B000803F39F48091CD0187FF6CC01092CD010C -:1047C00069C0813F29F48091CD011816BCF362C005 -:1047D0009091CC01823F29F497FF5CC01092CC01EC -:1047E00059C0833F19F41916CCF354C0893F41F4E2 -:1047F0008091CE0118160CF04DC01092CE014AC027 -:104800008A3F29F48091CE0187FF44C0F6CF8B3FC9 -:1048100039F48091CF0187FF3DC01092CF013AC09B -:104820008C3F29F48091CF011816BCF333C0843F2C -:1048300021F48091CB018E7F17C0853F21F48091B8 -:10484000CB018D7F11C0863F21F48091CB018B7FFE -:104850000BC0873F21F48091CB01877F05C0883F43 -:1048600031F48091CB018F7E8093CB0113C08D3FBB -:1048700021F48091C9018E7F0BC08E3F21F480917D -:10488000C9018D7F05C08F3F29F48091C9018B7FBD -:104890008093C9018091CC0181110EC08091CD011E -:1048A00081110AC08091CE01811106C08091CF0193 -:1048B000811102C01092CA0108958091C10183FF45 -:1048C0007EC086EE96E00E94E5078091CB011F92A4 -:1048D0008F9381EE96E09F938F930E947E088FEDD9 -:1048E00096E00E94E5078091CC01282F332727FD11 -:1048F00030953F938F938CED96E09F938F930E941A -:104900007E088AED96E00E94E5078091CD01282F70 -:10491000332727FD30953F938F9387ED96E09F9344 -:104920008F930E947E0885ED96E00E94E5078091B6 -:10493000CE01282F332727FD30953F938F9382EDAB -:1049400096E09F938F930E947E0880ED96E00E94F0 -:10495000E5078091CF01282F332727FD30953F931E -:104960008F938DEC96E09F938F930E947E088AEC44 -:1049700096E00E94E5078091CA011F928F9387EC11 -:1049800096E09F938F930E947E0885EC96E00E94AC -:10499000E5078091C9011F928F9382EC96E09F9367 -:1049A0008F930E947E088FEB96E00E94E5078DB7FB -:1049B0009EB74C960FB6F8949EBF0FBE8DBF8BEC82 -:1049C00091E00E9477150E948F209093C8018093F8 -:1049D000C70108951F93CF93DF938091C7019091F2 -:1049E000C8010E94A720AC019091CA01992321F02F -:1049F0002091110130E006C0209112018AE0289F29 -:104A0000900111244217530708F486C08091CC010D -:104A1000C091CD01D091CE011091CF01811107C07D -:104A2000C11176C0D11174C0111172C075C09F3F01 -:104A300019F09F5F9093CA01181624F40E94EE2289 -:104A40008093CC018091CC0187FF05C00E94EE22AB -:104A500081958093CC011C1624F40E94EE22809351 -:104A6000CD018091CD0187FF05C00E94EE22819586 -:104A70008093CD016091CC01662339F1C091CD01C5 -:104A8000CC2319F1772767FD7095872F972F0E9408 -:104A9000DE2A23E333E343E35FE30E94422B0E94D9 -:104AA000AB2A6093CC016C2F772767FD7095872F19 -:104AB000972F0E94DE2A23E333E343E35FE30E9460 -:104AC000422B0E94AB2A6093CD011D1624F40E9454 -:104AD00037238093CE018091CE0187FF05C00E94CD -:104AE000372381958093CE01111624F40E94372339 -:104AF0008093CF018091CF0187FF05C00E943723AB -:104B000081958093CF01DF91CF911F910C945D240B -:104B10009F3F09F08ECF96CFDF91CF911F910895DF -:104B2000EBECF1E085E0DF011D928A95E9F7109248 -:104B3000CA011092C901089589E099E00E94E50731 -:104B40001F9281E08F931F9285E08F938BEB98E00B -:104B50009F938F930E947E080F900F900F900F905D -:104B60000F900F9008958330E9F128F4813061F0BF -:104B7000823009F10895853009F462C008F449C013 -:104B8000863009F474C0089580911201262F30E018 -:104B9000280F311D2F3F310524F4680F6093120157 -:104BA00003C08FEF80931201809112011F928F93A7 -:104BB00084EF97E072C080911101262F30E0280F1A -:104BC000311D2F3F310524F4680F6093110103C09C -:104BD0008FEF80931101809111011F928F9382EECC -:104BE00097E05BC080911001262F30E0280F311D27 -:104BF0002F3F310524F4680F6093100103C08FEF3D -:104C000080931001809110011F928F938FEC97E099 -:104C100044C080910F01262F30E0280F311D2F3F17 -:104C2000310524F4680F60930F0103C08FEF809368 -:104C30000F0180910F011F928F938AEB97E02DC097 -:104C400080910E01262F30E0280F311D2F3F3105B6 -:104C500024F4680F60930E0103C08FEF80930E0160 -:104C600080910E011F928F9381EA97E016C0809188 -:104C70000D01262F30E0280F311D2F3F310524F480 -:104C8000680F60930D0103C08FEF80930D01809139 -:104C90000D011F928F9386E897E09F938F930E9458 -:104CA0007E080F900F900F900F900895833081F140 -:104CB00028F4813059F08230D1F00895853009F41C -:104CC00049C0B8F1863009F456C0089580911201A8 -:104CD000681720F4861B8093120102C01092120103 -:104CE000809112011F928F9387E797E054C08091C3 -:104CF0001101681720F4861B8093110102C01092E5 -:104D00001101809111011F928F9385E697E043C0B6 -:104D100080911001681720F4861B8093100102C057 -:104D200010921001809110011F928F9382E597E0FD -:104D300032C080910F01681720F4861B80930F0109 -:104D400002C010920F0180910F011F928F938DE38B -:104D500097E021C080910E01681720F4861B809394 -:104D60000E0102C010920E0180910E011F928F93CE -:104D700084E297E010C080910D01681720F4861B33 -:104D800080930D0102C010920D0180910D011F92C0 -:104D90008F9389E097E09F938F930E947E080F90F6 -:104DA0000F900F900F900895CF93C82F1F928F935D -:104DB0008EE09AE09F938F930E947E0881E090E0BE -:104DC000A0E0B0E0BC01CD0104C0660F771F881FD2 -:104DD000991FCA95D2F70E948F1D0F900F900F90C8 -:104DE0000F90CF910C94CF19CF938732B0F58E31BD -:104DF00008F04AC28E3009F4C4C100F5873009F4C6 -:104E00008DC1A8F4863009F045C28091C101817F2F -:104E10008E7F8093C1018DE79BE00E94E50786E1CC -:104E20009FE00E94E50781E08093D10175C1883041 -:104E300009F43FC08B3009F46BC12CC2863109F4F0 -:104E4000E6C120F4803109F4B0C124C2893109F4EB -:104E5000C7C18B3109F481C11DC2883309F458C11F -:104E600050F4893209F412C2853309F40FC2873233 -:104E700009F40CC20FC2833409F408C228F48A333F -:104E800008F408C2895303C2883409F003C20E949F -:104E9000CF198AEF9EE00E94E5079FEF23ED80E3A4 -:104EA000915020408040E1F700C000000E94222184 -:104EB00033C18AE19FE00E94E5078CE79EE00E94F3 -:104EC000E5070E94DC221F928F9389E79EE09F9363 -:104ED0008F930E947E0887E79EE00E94E5070E946C -:104EE000D322C82F84E69EE00E94E5071F92CF934D -:104EF0008FE59EE09F938F930E947E088DE59EE054 -:104F00000E94E50783E59EE00E94E5078C2F8170F3 -:104F10001F928F9380E59EE09F938F930E947E085F -:104F20008EE49EE00E94E50784E49EE00E94E5078F -:104F3000C1FB882780F91F928F9381E49EE09F93A5 -:104F40008F930E947E088FE39EE00E94E50783E333 -:104F50009EE00E94E507C2FB882780F91F928F938D -:104F600080E39EE09F938F930E947E088EE29EE0F6 -:104F70000E94E50785E29EE00E94E507C3FBCC277F -:104F8000C0F91F92CF9382E29EE09F938F930E947D -:104F90007E0880E29EE00E94E5070E94E522C82F7D -:104FA0008CE09EE00E94E5071F92CF9387E09EE091 -:104FB0009F938F930E947E0885E09EE00E94E50704 -:104FC0008CEE9DE00E94E5078C2F81701F928F93DD -:104FD00089EE9DE09F938F930E947E088DB79EB7C8 -:104FE00080960FB6F8949EBF0FBE8DBF87EE9DE0F2 -:104FF0000E94E50780ED9DE00E94E507C1FB882740 -:1050000080F91F928F938DEC9DE09F938F930E9468 -:105010007E088BEC9DE00E94E50789EB9DE00E94F5 -:10502000E507C2FB882780F91F928F9386EB9DE0EE -:105030009F938F930E947E0884EB9DE00E94E5077A -:1050400082EA9DE00E94E507C3FB882780F91F9252 -:105050008F938FE99DE09F938F930E947E088DE947 -:105060009DE00E94E50783E99DE00E94E507C4FBFF -:10507000882780F91F928F9380E99DE09F938F93FB -:105080000E947E088EE89DE00E94E5078CE79DE087 -:105090000E94E507C5FB882780F91F928F9389E757 -:1050A0009DE09F938F930E947E0887E79DE00E947A -:1050B000E5078BE59DE00E94E507C6FB882780F9A0 -:1050C0001F928F9388E59DE09F938F930E947E08A7 -:1050D00086E59DE00E94E5078EE49DE00E94E507DD -:1050E000C7FBCC27C0F91F92CF938BE49DE09F9321 -:1050F0008F930E947E0889E49DE00E94E5078DB7AA -:105100009EB74C960FB6F8949EBF0FBE8DBF04C0DD -:1051100084EA9BE00E94E507C1E0C1C08091C10123 -:10512000C82FC095C170C0FB80F98093C101CC230A -:1051300049F08EEE9EE00E94E5078091C1018660F5 -:10514000886048C081EE9EE00E94E5078091C10121 -:10515000897F877F8093C101DFCF9091C10191FB4F -:10516000CC27C0F981E0C827892FC0FB81F9809343 -:10517000C101CC2319F084ED9EE027C086EC9EE0AF -:10518000C9CF9091C10192FBCC27C0F981E0C8271B -:10519000892FC0FB82F98093C101CC2319F087EBE2 -:1051A0009EE013C087EA9EE0B5CF9091C10193FBCA -:1051B000CC27C0F981E0C827892FC0FB83F98093F1 -:1051C000C101CC2351F08BE99EE00E94E50780915C -:1051D000C10181608093C10162C08EE89EE09ACFD8 -:1051E0008EE69BE00E94E50786E49BE00E94E507CF -:1051F00080E19BE00E94E50783EE9AE00E94E507CC -:1052000084EA9AE00E94E50789E79AE083CF8BE67B -:105210009AE00E94E5070E9422151F928F9381E574 -:105220009AE09F938F930E947E0880910A011F92BB -:105230008F938AE39AE09F938F930E947E088091D8 -:1052400064011F928F9387E29AE09F938F930E944D -:105250007E088091C3019091C401A091C501B091D5 -:10526000C601BF93AF939F938F9383E19AE09F937F -:105270008F930E947E088DB79EB742960FB6F89422 -:105280009EBF0FBE8DBF48CF8D5101C080E00E94F0 -:10529000D42642CF8CE89EE00E94E507C0E08C2F28 -:1052A000CF91089580E0089580E00895CF93C82FAE -:1052B0008091D101813071F020F0823009F44BC02F -:1052C00042C1E0910B01F0910C018081823209F022 -:1052D0003CC107C0E0910B01F0910C01808182324A -:1052E00061F48C2F0E945229811104C08C2F0E94DE -:1052F000F4262FC081E090E02CC08C2F0E9454290E -:10530000811126C0C431E1F070F4CB3081F0C0319E -:10531000D1F40E949C2586E09AE00E94E50782E095 -:105320008093D10115C0C93259F0C83361F48DE7BB -:105330009BE00E94E5078AE09AE00E94E50708C02A -:105340001092D10104C184E09AE00E94E507FFC0F9 -:1053500081E08170FEC0C43228F5CE3108F0C1C0B2 -:10536000CB30A1F1D0F4C73009F0D3C08EE18093E7 -:10537000120182E3809311018AE08093100184E19D -:1053800080930F0188E080930E0188E280930D01E5 -:105390008AEA98E00E94E507BFC0C33149F1C431F1 -:1053A000C1F0B7C0CB3409F4A9C028F4C93289F0E0 -:1053B000C83361F0AEC0C13509F49EC0C23509F4EE -:1053C00099C0CE3409F0A5C06AE09EC00E949C2519 -:1053D000A3C08091D001882319F01092D0019CC005 -:1053E00087EB98E00E94E50781E08093D101B1C08E -:1053F00081E998E00E94E5078FE798E00E94E507C1 -:10540000809112011F928F938CE798E09F938F9366 -:105410000E947E088AE798E00E94E50788E698E007 -:105420000E94E507809111011F928F9385E698E015 -:105430009F938F930E947E0883E698E00E94E50781 -:1054400084E598E00E94E507809110011F928F93F8 -:1054500081E598E09F938F930E947E088FE498E007 -:105460000E94E5078EE398E00E94E50780910F0116 -:105470001F928F938BE398E09F938F930E947E08F7 -:1054800089E398E00E94E50784E298E00E94E5073E -:1054900080910E011F928F9381E298E09F938F93EA -:1054A0000E947E088FE198E00E94E50788E098E07E -:1054B0000E94E50780910D011F928F9385E098E08F -:1054C0009F938F930E947E0883E098E00E94E507F7 -:1054D0008DB79EB748960FB6F8949EBF0FBE8DBF8E -:1054E0001BC0CE51EC2FF0E0E95DFE4F8081809330 -:1054F000D00112C061E003C061E006C06AE08091A3 -:10550000D0010E94B32508C08091D0010E94562688 -:1055100003C088EA98E013C08091D001882369F025 -:105520001F928F9382EA98E09F938F930E947E0848 -:105530000F900F900F900F9004C08FE998E00E9499 -:10554000E50781E006C01092D10180E002C080E052 -:1055500000CFCF91089504D06894B1118DC0089503 -:1055600070D088F09F5790F0B92F9927B751A0F0CD -:10557000D1F0660F771F881F991F1AF0BA95C9F7E7 -:1055800012C0B13081F077D0B1E0089574C0672FB8 -:10559000782F8827B85F39F0B93FCCF38695779597 -:1055A0006795B395D9F73EF4909580957095619580 -:1055B0007F4F8F4F9F4F0895E89409C097FB3EF4AB -:1055C00090958095709561957F4F8F4F9F4F992350 -:1055D000A9F0F92F96E9BB279395F69587957795CE -:1055E0006795B795F111F8CFFAF4BB0F11F460FF8E -:1055F0001BC06F5F7F4F8F4F9F4F16C0882311F0E6 -:1056000096E911C0772321F09EE8872F762F05C0F9 -:10561000662371F096E8862F70E060E02AF09A9594 -:10562000660F771F881FDAF7880F9695879597F989 -:10563000089557FD9058440F551F59F05F3F71F082 -:105640004795880F97FB991F61F09F3F79F08795E9 -:105650000895121613061406551FF2CF4695F1DF72 -:1056600008C0161617061806991FF1CF8695710502 -:10567000610508940895E894BB2766277727CB0136 -:1056800097F908950BD078C069D028F06ED018F043 -:10569000952309F05AC05FC01124EECFCADFA0F3F2 -:1056A000959FD1F3950F50E0551F629FF001729FB7 -:1056B000BB27F00DB11D639FAA27F00DB11DAA1FD6 -:1056C000649F6627B00DA11D661F829F2227B00D23 -:1056D000A11D621F739FB00DA11D621F839FA00DAE -:1056E000611D221F749F3327A00D611D231F849FFE -:1056F000600D211D822F762F6A2F11249F57504055 -:105700008AF0E1F088234AF0EE0FFF1FBB1F661FEF -:10571000771F881F91505040A9F79E3F510570F0A8 -:1057200014C0AACF5F3FECF3983EDCF386957795E3 -:105730006795B795F795E7959F5FC1F7FE2B880FA3 -:10574000911D9695879597F9089597F99F6780E839 -:1057500070E060E008959FEF80EC089500240A94C3 -:105760001616170618060906089500240A9412163C -:105770001306140605060895092E0394000C11F46F -:10578000882352F0BB0F40F4BF2B11F460FF04C01C -:105790006F5F7F4F8F4F9F4F0895991B79E004C033 -:1057A000991F961708F0961B881F7A95C9F7809560 -:1057B000089597FB072E16F4009407D077FD09D0C3 -:1057C0000E94F32B07FC05D03EF4909581959F4FE6 -:1057D0000895709561957F4F0895EE0FFF1F059016 -:1057E000F491E02D0994AA1BBB1B51E107C0AA1F2D -:1057F000BB1FA617B70710F0A61BB70B881F991F72 -:105800005A95A9F780959095BC01CD010895F99915 -:10581000FECF92BD81BDF89A992780B50895A8E181 -:10582000B0E042E050E00C942F2C262FF999FECFE7 -:1058300092BD81BDF89A019700B4021639F01FBAE3 -:1058400020BD0FB6F894FA9AF99A0FBE0895019602 -:10585000272F0E94162C0C94152CDC01CB01FC0187 -:10586000F999FECF06C0F2BDE1BDF89A319600B4B9 -:0E5870000D9241505040B8F70895F894FFCFC4 -:10587E00880D790E560E220EEE0D01B60128081473 -:10588E000A321E3F4D36203106E405AE058E051A4E -:10589E000533054C056505010203040506070809D5 -:0258AE000000F8 -:00000001FF diff --git a/keyboards/hhkb/readme.md b/keyboards/hhkb/readme.md new file mode 100644 index 0000000000..39d49b32a1 --- /dev/null +++ b/keyboards/hhkb/readme.md @@ -0,0 +1,180 @@ +hhkb_qmk keyboard firmware +====================== + +## Quantum MK Firmware + +You have access to a bunch of goodies! Check out the Makefile to enable/disable some of the features. Uncomment the `#` to enable them. Setting them to `no` does nothing and will only confuse future you. + + BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality + MIDI_ENABLE = yes # MIDI controls + # UNICODE_ENABLE = yes # Unicode support - this is commented out, just as an example. You have to use #, not // + BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID + +## Quick aliases to common actions + +Your keymap can include shortcuts to common operations (called "function actions" in tmk). + +### Switching and toggling layers + +`MO(layer)` - momentary switch to *layer*. As soon as you let go of the key, the layer is deactivated and you pop back out to the previous layer. When you apply this to a key, that same key must be set as `KC_TRNS` on the destination layer. Otherwise, you won't make it back to the original layer when you release the key (and you'll get a keycode sent). You can only switch to layers *above* your current layer. If you're on layer 0 and you use `MO(1)`, that will switch to layer 1 just fine. But if you include `MO(3)` on layer 5, that won't do anything for you -- because layer 3 is lower than layer 5 on the stack. + +`LT(layer, kc)` - momentary switch to *layer* when held, and *kc* when tapped. Like `MO()`, this only works upwards in the layer stack (`layer` must be higher than the current layer). + +`TG(layer)` - toggles a layer on or off. As with `MO()`, you should set this key as `KC_TRNS` in the destination layer so that tapping it again actually toggles back to the original layer. Only works upwards in the layer stack. + +### Fun with modifier keys + +* `LSFT(kc)` - applies left Shift to *kc* (keycode) - `S(kc)` is an alias +* `RSFT(kc)` - applies right Shift to *kc* +* `LCTL(kc)` - applies left Control to *kc* +* `RCTL(kc)` - applies right Control to *kc* +* `LALT(kc)` - applies left Alt to *kc* +* `RALT(kc)` - applies right Alt to *kc* +* `LGUI(kc)` - applies left GUI (command/win) to *kc* +* `RGUI(kc)` - applies right GUI (command/win) to *kc* + +You can also chain these, like this: + + LALT(LCTL(KC_DEL)) -- this makes a key that sends Alt, Control, and Delete in a single keypress. + +The following shortcuts automatically add `LSFT()` to keycodes to get commonly used symbols. Their long names are also available and documented in `/quantum/keymap_common.h`. + + KC_TILD ~ + KC_EXLM ! + KC_AT @ + KC_HASH # + KC_DLR $ + KC_PERC % + KC_CIRC ^ + KC_AMPR & + KC_ASTR * + KC_LPRN ( + KC_RPRN ) + KC_UNDS _ + KC_PLUS + + KC_LCBR { + KC_RCBR } + KC_PIPE | + KC_COLN : + +`MT(mod, kc)` - is *mod* (modifier key - MOD_LCTL, MOD_LSFT) when held, and *kc* when tapped. In other words, you can have a key that sends Esc (or the letter O or whatever) when you tap it, but works as a Control key or a Shift key when you hold it down. + +These are the values you can use for the `mod` in `MT()` (right-hand modifiers are not available): + + * MOD_LCTL + * MOD_LSFT + * MOD_LALT + * MOD_LGUI + +These can also be combined like `MOD_LCTL | MOD_LSFT` e.g. `MT(MOD_LCTL | MOD_LSFT, KC_ESC)` which would activate Control and Shift when held, and send Escape when tapped. + +We've added shortcuts to make common modifier/tap (mod-tap) mappings more compact: + + * `CTL_T(kc)` - is LCTL when held and *kc* when tapped + * `SFT_T(kc)` - is LSFT when held and *kc* when tapped + * `ALT_T(kc)` - is LALT when held and *kc* when tapped + * `GUI_T(kc)` - is LGUI when held and *kc* when tapped + * `ALL_T(kc)` - is Hyper (all mods) when held and *kc* when tapped. To read more about what you can do with a Hyper key, see [this blog post by Brett Terpstra](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/) + +### Temporarily setting the default layer + +`DF(layer)` - sets default layer to *layer*. The default layer is the one at the "bottom" of the layer stack - the ultimate fallback layer. This currently does not persist over power loss. When you plug the keyboard back in, layer 0 will always be the default. It is theoretically possible to work around that, but that's not what `DF` does. + +### Remember: These are just aliases + +These functions work the same way that their `ACTION_*` functions do - they're just quick aliases. To dig into all of the tmk ACTION_* functions, please see the [TMK documentation](https://github.com/jackhumbert/qmk_firmware/blob/master/tmk_core/doc/keymap.md#2-action). + +Instead of using `FNx` when defining `ACTION_*` functions, you can use `F(x)` - the benefit here is being able to use more than 32 function actions (up to 4096), if you happen to need them. + +## Macro shortcuts: Send a whole string when pressing just one key + +Instead of using the `ACTION_MACRO` function, you can simply use `M(n)` to access macro *n* - *n* will get passed into the `action_get_macro` as the `id`, and you can use a switch statement to trigger it. This gets called on the keydown and keyup, so you'll need to use an if statement testing `record->event.pressed` (see keymap_default.c). + +```c +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // this is the function signature -- just copy/paste it into your keymap file as it is. +{ + switch(id) { + case 0: // this would trigger when you hit a key mapped as M(0) + if (record->event.pressed) { + return MACRO( I(255), T(H), T(E), T(L), T(L), W(255), T(O), END ); // this sends the string 'hello' when the macro executes + } + break; + } + return MACRO_NONE; +}; +``` +A macro can include the following commands: + +* I() change interval of stroke in milliseconds. +* D() press key. +* U() release key. +* T() type key(press and release). +* W() wait (milliseconds). +* END end mark. + +So above you can see the stroke interval changed to 255ms between each keystroke, then a bunch of keys being typed, waits a while, then the macro ends. + +Note: Using macros to have your keyboard send passwords for you is a bad idea. + +### Additional keycode aliases for software-implemented layouts (Colemak, Dvorak, etc) + +Everything is assuming you're in Qwerty (in software) by default, but there is built-in support for using a Colemak or Dvorak layout by including this at the top of your keymap: + + #include "keymap_.h" + +Where is "colemak" or "dvorak". After including this line, you will get access to: + + * `CM_*` for all of the Colemak-equivalent characters + * `DV_*` for all of the Dvorak-equivalent characters + +These implementations assume you're using Colemak or Dvorak on your OS, not on your keyboard - this is referred to as a software-implemented layout. If your computer is in Qwerty and your keymap is in Colemak or Dvorak, this is referred to as a firmware-implemented layout, and you won't need these features. + +To give an example, if you're using software-implemented Colemak, and want to get an `F`, you would use `CM_F` - `KC_F` under these same circumstances would result in `T`. + +## Additional language support + +In `quantum/keymap_extras/`, you'll see various language files - these work the same way as the alternative layout ones do. Most are defined by their two letter country/language code followed by an underscore and a 4-letter abbreviation of its name. `FR_UGRV` which will result in a `ù` when using a software-implemented AZERTY layout. It's currently difficult to send such characters in just the firmware (but it's being worked on - see Unicode support). + +## Unicode support + +You can currently send 4 hex digits with your OS-specific modifier key (RALT for OSX with the "Unicode Hex Input" layout) - this is currently limited to supporting one OS at a time, and requires a recompile for switching. 8 digit hex codes are being worked on. The keycode function is `UC(n)`, where *n* is a 4 digit hexidecimal. Enable from the Makefile. + +## Other firmware shortcut keycodes + +* `RESET` - puts the MCU in DFU mode for flashing new firmware (with `make dfu`) +* `DEBUG` - the firmware into debug mode - you'll need hid_listen to see things +* `BL_ON` - turns the backlight on +* `BL_OFF` - turns the backlight off +* `BL_` - sets the backlight to level *n* +* `BL_INC` - increments the backlight level by one +* `BL_DEC` - decrements the backlight level by one +* `BL_TOGG` - toggles the backlight +* `BL_STEP` - steps through the backlight levels + +Enable the backlight from the Makefile. + +## MIDI functionalty + +This is still a WIP, but check out `quantum/keymap_midi.c` to see what's happening. Enable from the Makefile. + +## Bluetooth functionality + +This requires [some hardware changes](https://www.reddit.com/r/MechanicalKeyboards/comments/3psx0q/the_planck_keyboard_with_bluetooth_guide_and/?ref=search_posts), but can be enabled via the Makefile. The firmware will still output characters via USB, so be aware of this when charging via a computer. It would make sense to have a switch on the Bluefruit to turn it off at will. + +## Building + +Download or clone the whole firmware and navigate to the keyboards/planck folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use `make dfu` to program your PCB once you hit the reset button. + +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 a file in the keymaps folder named `.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|] +``` +Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. -- cgit v1.2.3 From 65faab3b89245f81c50b029ca178aed175d5f330 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Wed, 29 Jun 2016 17:49:41 -0400 Subject: Moves features to their own files (process_*), adds tap dance feature (#460) * non-working commit * working * subprojects implemented for planck * pass a subproject variable through to c * consolidates clueboard revisions * thanks for letting me know about conflicts.. * turn off audio for yang's * corrects starting paths for subprojects * messing around with travis * semicolon * travis script * travis script * script for travis * correct directory (probably), amend files to commit * remove origin before adding * git pull, correct syntax * git checkout * git pull origin branch * where are we? * where are we? * merging * force things to happen * adds commit message, adds add * rebase, no commit message * rebase branch * idk! * try just pull * fetch - merge * specify repo branch * checkout * goddammit * merge? idk * pls * after all * don't split up keyboards * syntax * adds quick for all-keyboards * trying out new script * script update * lowercase * all keyboards * stop replacing compiled.hex automatically * adds if statement * skip automated build branches * forces push to automated build branch * throw an add in there * upstream? * adds AUTOGEN * ignore all .hex files again * testing out new repo * global ident * generate script, keyboard_keymap.hex * skip generation for now, print pandoc info, submodule update * try trusty * and sudo * try generate * updates subprojects to keyboards * no idea * updates to keyboards * cleans up clueboard stuff * setup to use local readme * updates cluepad, planck experimental * remove extra led.c [ci skip] * audio and midi moved over to separate files * chording, leader, unicode separated * consolidate each [skip ci] * correct include * quantum: Add a tap dance feature (#451) * quantum: Add a tap dance feature With this feature one can specify keys that behave differently, based on the amount of times they have been tapped, and when interrupted, they get handled before the interrupter. To make it clear how this is different from `ACTION_FUNCTION_TAP`, lets explore a certain setup! We want one key to send `Space` on single tap, but `Enter` on double-tap. With `ACTION_FUNCTION_TAP`, it is quite a rain-dance to set this up, and has the problem that when the sequence is interrupted, the interrupting key will be send first. Thus, `SPC a` will result in `a SPC` being sent, if they are typed within `TAPPING_TERM`. With the tap dance feature, that'll come out as `SPC a`, correctly. The implementation hooks into two parts of the system, to achieve this: into `process_record_quantum()`, and the matrix scan. We need the latter to be able to time out a tap sequence even when a key is not being pressed, so `SPC` alone will time out and register after `TAPPING_TERM` time. But lets start with how to use it, first! First, you will need `TAP_DANCE_ENABLE=yes` in your `Makefile`, because the feature is disabled by default. This adds a little less than 1k to the firmware size. Next, you will want to define some tap-dance keys, which is easiest to do with the `TD()` macro, that - similar to `F()`, takes a number, which will later be used as an index into the `tap_dance_actions` array. This array specifies what actions shall be taken when a tap-dance key is in action. Currently, there are two possible options: * `ACTION_TAP_DANCE_DOUBLE(kc1, kc2)`: Sends the `kc1` keycode when tapped once, `kc2` otherwise. * `ACTION_TAP_DANCE_FN(fn)`: Calls the specified function - defined in the user keymap - with the current state of the tap-dance action. The first option is enough for a lot of cases, that just want dual roles. For example, `ACTION_TAP_DANCE(KC_SPC, KC_ENT)` will result in `Space` being sent on single-tap, `Enter` otherwise. And that's the bulk of it! Do note, however, that this implementation does have some consequences: keys do not register until either they reach the tapping ceiling, or they time out. This means that if you hold the key, nothing happens, no repeat, no nothing. It is possible to detect held state, and register an action then too, but that's not implemented yet. Keys also unregister immediately after being registered, so you can't even hold the second tap. This is intentional, to be consistent. And now, on to the explanation of how it works! The main entry point is `process_tap_dance()`, called from `process_record_quantum()`, which is run for every keypress, and our handler gets to run early. This function checks whether the key pressed is a tap-dance key. If it is not, and a tap-dance was in action, we handle that first, and enqueue the newly pressed key. If it is a tap-dance key, then we check if it is the same as the already active one (if there's one active, that is). If it is not, we fire off the old one first, then register the new one. If it was the same, we increment the counter and the timer. This means that you have `TAPPING_TERM` time to tap the key again, you do not have to input all the taps within that timeframe. This allows for longer tap counts, with minimal impact on responsiveness. Our next stop is `matrix_scan_tap_dance()`. This handles the timeout of tap-dance keys. For the sake of flexibility, tap-dance actions can be either a pair of keycodes, or a user function. The latter allows one to handle higher tap counts, or do extra things, like blink the LEDs, fiddle with the backlighting, and so on. This is accomplished by using an union, and some clever macros. In the end, lets see a full example! ```c enum { CT_SE = 0, CT_CLN, CT_EGG }; /* Have the above three on the keymap, TD(CT_SE), etc... */ void dance_cln (qk_tap_dance_state_t *state) { if (state->count == 1) { register_code (KC_RSFT); register_code (KC_SCLN); unregister_code (KC_SCLN); unregister_code (KC_RSFT); } else { register_code (KC_SCLN); unregister_code (KC_SCLN); reset_tap_dance (state); } } void dance_egg (qk_tap_dance_state_t *state) { if (state->count >= 100) { SEND_STRING ("Safety dance!"); reset_tap_dance (state); } } const qk_tap_dance_action_t tap_dance_actions[] = { [CT_SE] = ACTION_TAP_DANCE_DOUBLE (KC_SPC, KC_ENT) ,[CT_CLN] = ACTION_TAP_DANCE_FN (dance_cln) ,[CT_EGG] = ACTION_TAP_DANCE_FN (dance_egg) }; ``` This addresses #426. Signed-off-by: Gergely Nagy * hhkb: Fix the build with the new tap-dance feature Signed-off-by: Gergely Nagy * tap_dance: Move process_tap_dance further down Process the tap dance stuff after midi and audio, because those don't process keycodes, but row/col positions. Signed-off-by: Gergely Nagy * tap_dance: Use conditionals instead of dummy functions To be consistent with how the rest of the quantum features are implemented, use ifdefs instead of dummy functions. Signed-off-by: Gergely Nagy * Merge branch 'master' into quantum-keypress-process # Conflicts: # Makefile # keyboards/planck/rev3/config.h # keyboards/planck/rev4/config.h * update build script --- keyboards/hhkb/matrix.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'keyboards/hhkb') diff --git a/keyboards/hhkb/matrix.c b/keyboards/hhkb/matrix.c index 2dfb2f5e1f..666b6f595f 100644 --- a/keyboards/hhkb/matrix.c +++ b/keyboards/hhkb/matrix.c @@ -71,6 +71,14 @@ void matrix_init(void) matrix_prev = _matrix1; } +__attribute__ ((weak)) +void matrix_scan_user(void) { +} + +void matrix_scan_kb(void) { + matrix_scan_user(); +} + uint8_t matrix_scan(void) { uint8_t *tmp; @@ -150,6 +158,9 @@ uint8_t matrix_scan(void) KEY_POWER_OFF(); suspend_power_down(); } + + matrix_scan_quantum(); + return 1; } -- cgit v1.2.3 From 66ffb1cb3a21c670719263f187e3470fd888f42a Mon Sep 17 00:00:00 2001 From: Robbie Gill Date: Thu, 7 Jul 2016 21:03:20 -0700 Subject: port missing support for hhkb-jp from tmk --- keyboards/hhkb/Makefile | 4 +++ keyboards/hhkb/config.h | 6 +++- keyboards/hhkb/hhkb.h | 27 ++++++++++++++ keyboards/hhkb/keymaps/jp/Makefile | 1 + keyboards/hhkb/keymaps/jp/keymap.c | 58 ++++++++++++++++++++++++++++++ keyboards/hhkb/keymaps/rdg_jp/Makefile | 1 + keyboards/hhkb/keymaps/rdg_jp/keymap.c | 65 ++++++++++++++++++++++++++++++++++ 7 files changed, 161 insertions(+), 1 deletion(-) create mode 100644 keyboards/hhkb/keymaps/jp/Makefile create mode 100644 keyboards/hhkb/keymaps/jp/keymap.c create mode 100644 keyboards/hhkb/keymaps/rdg_jp/Makefile create mode 100644 keyboards/hhkb/keymaps/rdg_jp/keymap.c (limited to 'keyboards/hhkb') diff --git a/keyboards/hhkb/Makefile b/keyboards/hhkb/Makefile index 53eece3969..6fe973e1eb 100644 --- a/keyboards/hhkb/Makefile +++ b/keyboards/hhkb/Makefile @@ -78,6 +78,10 @@ ifndef QUANTUM_DIR include ../../Makefile endif +ifneq (, $(findstring yes, $(HHKB_JP))) + OPT_DEFS += -DHHKB_JP +endif + debug-on: EXTRAFLAGS += -DDEBUG -DDEBUG_ACTION debug-on: all diff --git a/keyboards/hhkb/config.h b/keyboards/hhkb/config.h index ee66e44571..3f0528b4b9 100644 --- a/keyboards/hhkb/config.h +++ b/keyboards/hhkb/config.h @@ -29,7 +29,11 @@ along with this program. If not, see . #define DESCRIPTION q.m.k keyboard firmware for HHKB /* key matrix size */ -#define MATRIX_ROWS 8 +#ifdef HHKB_JP +# define MATRIX_ROWS 16 +#else +# define MATRIX_ROWS 8 +#endif #define MATRIX_COLS 8 #define TAPPING_TERM 200 diff --git a/keyboards/hhkb/hhkb.h b/keyboards/hhkb/hhkb.h index cc756c4565..e95125efcb 100644 --- a/keyboards/hhkb/hhkb.h +++ b/keyboards/hhkb/hhkb.h @@ -21,4 +21,31 @@ { K70, K71, K72, K73, K74, K75, K76, KC_NO } \ } + +#define KEYMAP_JP( \ + K02, K32, K62, K22, K12, K52, K72, KA2, K92, K82, KB2, KE2, KF2, KD2, KC2, \ + K03, K63, K23, K13, K53, K73, KA3, K93, K83, KB3, KE3, KF3, KD3, \ + K06, K66, K26, K16, K56, K76, KA6, K96, K86, KB6, KE6, KF6, KD6, KC6, \ + K05, K65, K25, K15, K55, K75, KA5, K95, K85, KB5, KE5, KF5, KD5, KC5, \ + K04, K34, K64, K24, K14, K74, K94, K84, KB4, KE4, KF4, KD4, KC4) \ +{ \ + { KC_NO, KC_NO, K02, K03, K04, K05, K06, KC_NO }, \ + { KC_NO, KC_NO, K12, K13, K14, K15, K16, KC_NO }, \ + { KC_NO, KC_NO, K22, K23, K24, K25, K26, KC_NO }, \ + { KC_NO, KC_NO, K32, KC_NO, K34, KC_NO, KC_NO, KC_NO }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { KC_NO, KC_NO, K52, K53, KC_NO, K55, K56, KC_NO }, \ + { KC_NO, KC_NO, K62, K63, K64, K65, K66, KC_NO }, \ + { KC_NO, KC_NO, K72, K73, K74, K75, K76, KC_NO }, \ + { KC_NO, KC_NO, K82, K83, K84, K85, K86, KC_NO }, \ + { KC_NO, KC_NO, K92, K93, K94, K95, K96, KC_NO }, \ + { KC_NO, KC_NO, KA2, KA3, KC_NO, KA5, KA6, KC_NO }, \ + { KC_NO, KC_NO, KB2, KB3, KB4, KB5, KB6, KC_NO }, \ + { KC_NO, KC_NO, KC2, KC_NO, KC4, KC5, KC6, KC_NO }, \ + { KC_NO, KC_NO, KD2, KD3, KD4, KD5, KD6, KC_NO }, \ + { KC_NO, KC_NO, KE2, KE3, KE4, KE5, KE6, KC_NO }, \ + { KC_NO, KC_NO, KF2, KF3, KF4, KF5, KF6, KC_NO } \ +} + + #endif diff --git a/keyboards/hhkb/keymaps/jp/Makefile b/keyboards/hhkb/keymaps/jp/Makefile new file mode 100644 index 0000000000..92986292a2 --- /dev/null +++ b/keyboards/hhkb/keymaps/jp/Makefile @@ -0,0 +1 @@ +HHKB_JP=yes diff --git a/keyboards/hhkb/keymaps/jp/keymap.c b/keyboards/hhkb/keymaps/jp/keymap.c new file mode 100644 index 0000000000..8525adce59 --- /dev/null +++ b/keyboards/hhkb/keymaps/jp/keymap.c @@ -0,0 +1,58 @@ +#include "hhkb.h" + +#define _______ KC_TRNS + + +/* Layer 0: HHKB JP + * ,-----------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| -| =|Yen|Bsp| + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | + * |------------------------------------------------------` Ent| + * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| `| | + * |-----------------------------------------------------------| + * |Shft | Z| X| C| V| B| N| M| ,| .| /| \| Up|Sft| + * |-----------------------------------------------------------| + * | ||Ctl|Alt|Cmd| | Spc |Bsp| | | ||Lft|Dwn|Rgh| + * `-----------------------------------------------------------' + */ + +/* Layer 1: HHKB mode (HHKB Fn) + * ,-----------------------------------------------------------. + * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| + * |-----------------------------------------------------------| + * |Caps | | | | | | | |Psc|Slk|Pus|Up | | | + * |------------------------------------------------------` | + * | |VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig| | | + * |-----------------------------------------------------------| + * | | | | | | | +| -|End|PgD|Dow| | | | + * |-----------------------------------------------------------| + * | || | | | | | | | | || | | | + * `-----------------------------------------------------------' + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = KEYMAP_JP( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_JYEN, 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_LBRC, KC_RBRC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, 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_RO, KC_UP, KC_RSFT, + MO(1), KC_ZKHK, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC, KC_HENK, KC_KANA, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = KEYMAP_JP( + KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_PWR, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, KC_PENT, + _______, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______, + _______, _______, _______, _______, _______, _______ , _______, _______, _______, _______, _______, _______, _______ + ) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t macro_id, uint8_t opt) { + return MACRO_NONE; +} + +const uint16_t PROGMEM fn_actions[] = { + +}; diff --git a/keyboards/hhkb/keymaps/rdg_jp/Makefile b/keyboards/hhkb/keymaps/rdg_jp/Makefile new file mode 100644 index 0000000000..92986292a2 --- /dev/null +++ b/keyboards/hhkb/keymaps/rdg_jp/Makefile @@ -0,0 +1 @@ +HHKB_JP=yes diff --git a/keyboards/hhkb/keymaps/rdg_jp/keymap.c b/keyboards/hhkb/keymaps/rdg_jp/keymap.c new file mode 100644 index 0000000000..700ba3a0b7 --- /dev/null +++ b/keyboards/hhkb/keymaps/rdg_jp/keymap.c @@ -0,0 +1,65 @@ +#include "hhkb.h" + +#define _______ KC_TRNS + +enum { + ZER, + HDN, + OSY +}; + + +#define CTL_ESC CTL_T(KC_ESC) +#define SFT_BSP SFT_T(KC_BSPC) + +#define SCRNS3 LGUI(LCTL(LSFT(KC_3))) +#define SCRNS4 LGUI(LCTL(LSFT(KC_4))) + + +/* hhkb jp ~ layout + * ,-----------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| -| =|Yen|Bsp| + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | + * |------------------------------------------------------` Ent| + * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| `| | + * |-----------------------------------------------------------| + * |Shft | Z| X| C| V| B| N| M| ,| .| /| \| Up|Sft| + * |-----------------------------------------------------------| + * | ||Ctl|Alt|Cmd| | Spc |Bsp| | | ||Lft|Dwn|Rgh| + * `-----------------------------------------------------------' + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [ZER] = KEYMAP_JP( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INS, 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_LBRC, KC_RBRC, + CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_GRV, 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_BSLS, KC_UP, KC_RSFT, + MO(HDN), KC_LCTL, KC_LALT, KC_LGUI, MO(HDN), KC_SPC, SFT_BSP, MO(HDN), MO(OSY), KC_NO, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [HDN] = KEYMAP_JP( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, _______, + _______, KC_TILD, KC_GRV, KC_BSLS, KC_PIPE, KC_MINS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TILD, KC_GRV, _______, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_PWR, _______, _______, KC_ENT, _______, _______, _______, _______, KC_PGUP, _______, + _______, _______, _______, _______, _______, KC_UNDS , KC_DEL, _______, _______, _______, KC_HOME, KC_PGDN, KC_END + ), + + [OSY] = KEYMAP_JP( + _______, _______, _______, SCRNS3, SCRNS4, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ , _______, _______, _______, _______, _______, _______, _______ + ) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t macro_id, uint8_t opt) { + return MACRO_NONE; +} + +const uint16_t PROGMEM fn_actions[] = { + +}; -- cgit v1.2.3 From 1c8d64d3b3664ef7d62ea12f8fd510231a7ec54e Mon Sep 17 00:00:00 2001 From: shela Date: Fri, 12 Aug 2016 21:24:43 +0900 Subject: add my keymap --- keyboards/hhkb/keymaps/shela/Makefile | 1 + keyboards/hhkb/keymaps/shela/action_pseudo_lut.c | 142 ++++++++++++++++++ keyboards/hhkb/keymaps/shela/action_pseudo_lut.h | 15 ++ keyboards/hhkb/keymaps/shela/config.h | 12 ++ keyboards/hhkb/keymaps/shela/keymap.c | 179 +++++++++++++++++++++++ keyboards/hhkb/keymaps/shela/keymap_jis2us.h | 32 ++++ keyboards/hhkb/keymaps/shela/readme.md | 14 ++ 7 files changed, 395 insertions(+) create mode 100644 keyboards/hhkb/keymaps/shela/Makefile create mode 100644 keyboards/hhkb/keymaps/shela/action_pseudo_lut.c create mode 100644 keyboards/hhkb/keymaps/shela/action_pseudo_lut.h create mode 100644 keyboards/hhkb/keymaps/shela/config.h create mode 100644 keyboards/hhkb/keymaps/shela/keymap.c create mode 100644 keyboards/hhkb/keymaps/shela/keymap_jis2us.h create mode 100644 keyboards/hhkb/keymaps/shela/readme.md (limited to 'keyboards/hhkb') diff --git a/keyboards/hhkb/keymaps/shela/Makefile b/keyboards/hhkb/keymaps/shela/Makefile new file mode 100644 index 0000000000..d0586bda68 --- /dev/null +++ b/keyboards/hhkb/keymaps/shela/Makefile @@ -0,0 +1 @@ +SRC += action_pseudo_lut.c diff --git a/keyboards/hhkb/keymaps/shela/action_pseudo_lut.c b/keyboards/hhkb/keymaps/shela/action_pseudo_lut.c new file mode 100644 index 0000000000..b205968c7b --- /dev/null +++ b/keyboards/hhkb/keymaps/shela/action_pseudo_lut.c @@ -0,0 +1,142 @@ +#include "quantum.h" +#include "action_pseudo_lut.h" + +static uint8_t send_key_shift_bit[SHIFT_BIT_SIZE]; + +/* + * Pseudo layout action. + * This action converts a keycode in order to output the character according to the keymap you specified + * still your keyboard layout recognized wrongly on your OS. + * Memo: Using other layer keymap to get keycode + */ +void action_pseudo_lut(keyrecord_t *record, uint8_t base_keymap_id, const uint16_t (*keymap)[2]) { + static uint8_t prev_shift; + uint16_t keycode; + uint16_t pseudo_keycode; + + /* get keycode from keymap you specified */ + keycode = keymap_key_to_keycode(base_keymap_id, record->event.key); + + prev_shift = keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)); + + if (record->event.pressed) { + /* when magic commands entered, keycode does not converted */ + if (IS_COMMAND()) { + if (prev_shift) { + add_shift_bit(keycode); + } + register_code(keycode); + return; + } + + if (prev_shift) { + pseudo_keycode = convert_keycode(keymap, keycode, true); + dprintf("pressed: %02X, converted: %04X\n", keycode, pseudo_keycode); + add_shift_bit(keycode); + + if (IS_LSFT(pseudo_keycode)) { + register_code(QK_LSFT ^ pseudo_keycode); + } else { + /* delete shift mod temporarily */ + del_mods(prev_shift); + send_keyboard_report(); + register_code(pseudo_keycode); + add_mods(prev_shift); + send_keyboard_report(); + } + } else { + pseudo_keycode = convert_keycode(keymap, keycode, false); + dprintf("pressed: %02X, converted: %04X\n", keycode, pseudo_keycode); + + if (IS_LSFT(pseudo_keycode)) { + add_weak_mods(MOD_BIT(KC_LSFT)); + send_keyboard_report(); + register_code(QK_LSFT ^ pseudo_keycode); + /* on Windows, prevent key repeat to avoid unintended output */ + unregister_code(QK_LSFT ^ pseudo_keycode); + del_weak_mods(MOD_BIT(KC_LSFT)); + send_keyboard_report(); + } else { + register_code(pseudo_keycode); + } + } + } else { + if (get_shift_bit(keycode)) { + del_shift_bit(keycode); + pseudo_keycode = convert_keycode(keymap, keycode, true); + } else { + pseudo_keycode = convert_keycode(keymap, keycode, false); + } + dprintf("released: %02X, converted: %04X\n", keycode, pseudo_keycode); + + if (IS_LSFT(pseudo_keycode)) { + unregister_code(QK_LSFT ^ pseudo_keycode); + } else { + unregister_code(pseudo_keycode); + } + } +} + +uint16_t convert_keycode(const uint16_t (*keymap)[2], uint16_t keycode, bool shift_modded) +{ + uint16_t pseudo_keycode; + + switch (keycode) { + case KC_A ... KC_CAPSLOCK: +#if defined(__AVR__) + if (shift_modded) { + pseudo_keycode = pgm_read_word(&keymap[keycode][1]); + } else { + pseudo_keycode = pgm_read_word(&keymap[keycode][0]); + } +#else + if (shift_modded) { + pseudo_keycode = keymap[keycode][1]; + } else { + pseudo_keycode = keymap[keycode][0]; + } +#endif + /* if undefined, use got keycode as it is */ + if (pseudo_keycode == 0x00) { + if (shift_modded) { + pseudo_keycode = S(keycode); + } else { + pseudo_keycode = keycode; + } + } + break; + default: + if (shift_modded) { + pseudo_keycode = S(keycode); + } else { + pseudo_keycode = keycode; + } + break; + } + return pseudo_keycode; +} + +uint8_t get_shift_bit(uint16_t keycode) { + if ((keycode >> 3) < SHIFT_BIT_SIZE) { + return send_key_shift_bit[keycode >> 3] & (1 << (keycode & 7)); + } else { + dprintf("get_shift_bit: Can't get shift bit. keycode: %02X\n", keycode); + return 0; + } +} + +void add_shift_bit(uint16_t keycode) { + if ((keycode >> 3) < SHIFT_BIT_SIZE) { + send_key_shift_bit[keycode >> 3] |= (1 << (keycode & 7)); + } else { + dprintf("add_shift_bit: Can't add shift bit. keycode: %02X\n", keycode); + } +} + +void del_shift_bit(uint16_t keycode) { + if ((keycode >> 3) < SHIFT_BIT_SIZE) { + send_key_shift_bit[keycode >> 3] &= ~(1 << (keycode & 7)); + } else { + dprintf("del_shift_bit: Can't delete shift bit. keycode: %02X\n", keycode); + } +} diff --git a/keyboards/hhkb/keymaps/shela/action_pseudo_lut.h b/keyboards/hhkb/keymaps/shela/action_pseudo_lut.h new file mode 100644 index 0000000000..681252440f --- /dev/null +++ b/keyboards/hhkb/keymaps/shela/action_pseudo_lut.h @@ -0,0 +1,15 @@ +#ifndef ACTION_PSEUDO_LUT_H +#define ACTION_PSEUDO_LUT_H + +#define SHIFT_BIT_SIZE (0xE7 / 8 + 1) // 1bit per 1key + +#define IS_LSFT(kc) ((QK_LSFT & (kc)) == QK_LSFT) + +void action_pseudo_lut(keyrecord_t *, uint8_t, const uint16_t (*)[2]); +uint16_t convert_keycode(const uint16_t (*)[2], uint16_t, bool); + +uint8_t get_shift_bit(uint16_t); +void add_shift_bit(uint16_t); +void del_shift_bit(uint16_t); + +#endif diff --git a/keyboards/hhkb/keymaps/shela/config.h b/keyboards/hhkb/keymaps/shela/config.h new file mode 100644 index 0000000000..08cc1fb46e --- /dev/null +++ b/keyboards/hhkb/keymaps/shela/config.h @@ -0,0 +1,12 @@ +#ifndef CONFIG_SHELA_H +#define CONFIG_SHELA_H + +#include "../../config.h" + +#undef TAPPING_TERM +#define TAPPING_TERM 230 + +#define ONESHOT_TAP_TOGGLE 2 +#define ONESHOT_TIMEOUT 2000 + +#endif diff --git a/keyboards/hhkb/keymaps/shela/keymap.c b/keyboards/hhkb/keymaps/shela/keymap.c new file mode 100644 index 0000000000..c286b99de8 --- /dev/null +++ b/keyboards/hhkb/keymaps/shela/keymap.c @@ -0,0 +1,179 @@ +/* + * HHKB Pro 2 US Layout for shela + */ +#include "hhkb.h" +#include "keymap_jis2us.h" +#include "action_pseudo_lut.h" + +enum keymap_layout { + BASE = 0, + PSEUDO_US, + DVORAK, + MOUSE, + TENKEY, + HHKB, + SPACE_FN, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Layer 0: Default Layer + * ,-----------------------------------------------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | ` | BSp | + * |-----------------------------------------------------------------------------------------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | + * |-----------------------------------------------------------------------------------------| + * | Control | A | S | D | F | G | H | J | K | L | ; | ' | Enter | + * |-----------------------------------------------------------------------------------------| + * | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0 | + * `-----------------------------------------------------------------------------------------' + * |LAlt | LGui | SpaceFN | RGui |RAlt | + * `-----------------------------------------------------------------' + */ + [BASE] = + KEYMAP(KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_GRV, 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_LBRC,KC_RBRC,KC_BSLS, \ + KC_LCTL,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,KC_ENT, \ + OSM(MOD_LSFT),KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,KC_FN0, \ + KC_LALT,KC_LGUI, KC_FN2, KC_RGUI,KC_RALT), + + /* Layer 1: Pseudo US Layout Layer */ + [PSEUDO_US] = + KEYMAP(KC_ESC, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_BSPC, \ + KC_TAB, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, \ + KC_LCTL,KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_ENT, \ + OSM(MOD_LSFT),KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_RSFT,KC_FN0, \ + KC_LGUI,KC_FN3, KC_FN2, KC_FN4 ,KC_RGUI), + + /* Layer 2: Dvorak Layer + * ,-----------------------------------------------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | [ | ] | ` | BSp | + * |-----------------------------------------------------------------------------------------| + * | Tab | ' | , | . | P | Y | F | G | C | R | L | / | = | \ | + * |-----------------------------------------------------------------------------------------| + * | Control | A | O | E | U | I | D | H | T | N | S | - | Enter | + * |-----------------------------------------------------------------------------------------| + * | Shift | ; | Q | J | K | X | B | M | W | V | Z | Shift | Fn0 | + * `-----------------------------------------------------------------------------------------' + * |LAlt | LGui | SpaceFN | RGui |RAlt | + * `-----------------------------------------------------------------' + */ + [DVORAK] = + KEYMAP(KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC,KC_RBRC,KC_GRV, 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_SLSH,KC_EQL, KC_BSLS, \ + KC_LCTL,KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS,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_RSFT,KC_FN0, \ + KC_LALT,KC_LGUI, KC_FN2, KC_RGUI,KC_RALT), + + /* Layer 3: Mouse layer + * ,-----------------------------------------------------------------------------------------. + * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | | + * |-----------------------------------------------------------------------------------------| + * | | | | | | | MwL | MwD | MwU | MwR | | | | | + * |-----------------------------------------------------------------------------------------| + * | | | | | | | McL | McD | McU | McR | | | | + * |-----------------------------------------------------------------------------------------| + * | | | | | | | Mb1 | Mb2 | Mb3 | | | | Fn0 | + * `-----------------------------------------------------------------------------------------' + * | | | Mb1 | | | + * `-----------------------------------------------------------------' + */ + [MOUSE] = + KEYMAP(KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_TRNS, \ + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_L,KC_WH_D,KC_WH_U,KC_WH_R,KC_NO, KC_NO, KC_NO, KC_NO, \ + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MS_L,KC_MS_D,KC_MS_U,KC_MS_R,KC_NO, KC_NO, KC_TRNS, \ + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BTN1,KC_BTN2,KC_BTN3,KC_NO, KC_NO, KC_TRNS,KC_FN0, \ + KC_TRNS,KC_TRNS, KC_BTN1, KC_TRNS,KC_TRNS), + + /* Layer 4: Tenkey layer + * ,-----------------------------------------------------------------------------------------. + * | Esc | | | | | | | | | | / | * | - | | BSp | + * |-----------------------------------------------------------------------------------------| + * | | | | | | | | | | 7 | 8 | 9 | + | | + * |-----------------------------------------------------------------------------------------| + * | | | | | | | | | | 4 | 5 | 6 | Enter | + * |-----------------------------------------------------------------------------------------| + * | | | | | | | | | 1 | 2 | 3 | + | Fn0 | + * `-----------------------------------------------------------------------------------------' + * | | | SpaceFN | 0 | . | + * `-----------------------------------------------------------------' + */ + [TENKEY] = + KEYMAP(KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PSLS,KC_PAST,KC_PMNS,KC_NO, KC_BSPC, \ + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_KP_7,KC_KP_8,KC_KP_9,KC_PPLS,KC_NO, \ + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_KP_4,KC_KP_5,KC_KP_6,KC_PENT, \ + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_KP_1,KC_KP_2,KC_KP_3,KC_PPLS,KC_FN0, \ + KC_TRNS,KC_TRNS, KC_FN2, KC_KP_0,KC_PDOT), + + /* Layer 5: HHKB mode (HHKB Fn) + * ,-----------------------------------------------------------------------------------------. + * | Pwr | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del | + * |-----------------------------------------------------------------------------------------| + * | Caps | Fn5 | Fn6 | Fn7 | Fn8 | Fn9 | | | Psc | Slk | Pus | Up | | BSp | + * |-----------------------------------------------------------------------------------------| + * | | VoD | VoU | Mut | | | * | / | Hom | PgU | Lef | Rig | Enter | + * |-----------------------------------------------------------------------------------------| + * | | | | | | | + | - | End | PgD | Dow | | | + * `-----------------------------------------------------------------------------------------' + * | | | | | | + * `-----------------------------------------------------------------' + */ + [HHKB] = + KEYMAP(KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, \ + KC_CAPS,KC_FN5, KC_FN6, KC_FN7, KC_FN8, KC_FN9, KC_TRNS,KC_TRNS,KC_PSCR,KC_SLCK,KC_PAUS,KC_UP, KC_TRNS,KC_BSPC, \ + KC_TRNS,KC_VOLD,KC_VOLU,KC_MUTE,KC_TRNS,KC_TRNS,KC_PAST,KC_PSLS,KC_HOME,KC_PGUP,KC_LEFT,KC_RGHT,KC_PENT, \ + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PPLS,KC_PMNS,KC_END, KC_PGDN,KC_DOWN,KC_TRNS,KC_TRNS, \ + KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS), + + /* Layer 6: SpaceFN + * ,-----------------------------------------------------------------------------------------. + * | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | Del | + * |-----------------------------------------------------------------------------------------| + * | | End | Up | Hom | | | | Hom | Up | End | Psc | Slk | Pau | Ins | + * |-----------------------------------------------------------------------------------------| + * | | Lef | Dow | Rig | PgU | | PgU | Lef | Dow | Rig | | | | + * |-----------------------------------------------------------------------------------------| + * | | | | PgD | | Spc | PgD | ` | ~ | | | | | + * `-----------------------------------------------------------------------------------------' + * | | | | | | + * `-----------------------------------------------------------------' + */ + [SPACE_FN] = + KEYMAP(KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_DEL, \ + KC_TRNS,KC_END, KC_UP, KC_HOME,KC_NO, KC_NO, KC_NO, KC_HOME,KC_UP, KC_END, KC_PSCR,KC_SLCK,KC_PAUS,KC_INS, \ + KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT,KC_PGUP,KC_NO, KC_PGUP,KC_LEFT,KC_DOWN,KC_RGHT,KC_NO, KC_NO, KC_TRNS, \ + KC_TRNS,KC_NO, KC_NO, KC_PGDN,KC_NO, KC_SPC, KC_PGDN,KC_GRV, KC_TILD,KC_NO, KC_NO, KC_TRNS,KC_NO, \ + KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS), +}; + +/* + * user defined action function + */ +enum function_id { + PSEUDO_US_FUNCTION, +}; + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { + + switch (id) { + case PSEUDO_US_FUNCTION: + action_pseudo_lut(record, BASE, keymap_jis2us); + break; + } +} + +/* + * Fn action definition + */ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_MOMENTARY(HHKB), + [1] = ACTION_FUNCTION(PSEUDO_US_FUNCTION), + [2] = ACTION_LAYER_TAP_KEY(SPACE_FN, KC_SPACE), + [3] = ACTION_MODS_TAP_KEY(MOD_LALT, KC_MHEN), + [4] = ACTION_MODS_TAP_KEY(MOD_RALT, KC_KANA), + [5] = ACTION_DEFAULT_LAYER_SET(BASE), + [6] = ACTION_DEFAULT_LAYER_SET(PSEUDO_US), + [7] = ACTION_DEFAULT_LAYER_SET(MOUSE), + [8] = ACTION_DEFAULT_LAYER_SET(TENKEY), + [9] = ACTION_DEFAULT_LAYER_SET(DVORAK), +}; diff --git a/keyboards/hhkb/keymaps/shela/keymap_jis2us.h b/keyboards/hhkb/keymaps/shela/keymap_jis2us.h new file mode 100644 index 0000000000..cf2bd4f0e8 --- /dev/null +++ b/keyboards/hhkb/keymaps/shela/keymap_jis2us.h @@ -0,0 +1,32 @@ +#ifndef KEYMAP_JIS2US_H +#define KEYMAP_JIS2US_H + +/* keymap for convert from JIS to US */ +const uint16_t PROGMEM keymap_jis2us[][2] = { + [KC_A ... KC_CAPS] = { 0x00, 0x00 }, /* default value */ + + [KC_1] = { KC_1, KC_EXLM }, /* 1 and ! -> 1 and ! */ + [KC_2] = { KC_2, KC_LBRC }, /* 2 and " -> 2 and @ */ + [KC_3] = { KC_3, KC_HASH }, /* 3 and # -> 3 and # */ + [KC_4] = { KC_4, KC_DLR }, /* 4 and $ -> 4 and $ */ + [KC_5] = { KC_5, KC_PERC }, /* 5 and % -> 5 and % */ + [KC_6] = { KC_6, KC_EQL }, /* 6 and & -> 6 and ^ */ + [KC_7] = { KC_7, KC_CIRC }, /* 7 and ' -> 7 and & */ + [KC_8] = { KC_8, KC_DQT }, /* 8 and ( -> 8 and * */ + [KC_9] = { KC_9, KC_ASTR }, /* 9 and ) -> 9 and ( */ + [KC_0] = { KC_0, KC_LPRN }, /* 0 and (no assign) -> 0 and ) */ + [KC_MINS] = { KC_MINS, S(KC_RO) }, /* - and = -> - and _ */ + [KC_EQL] = { KC_UNDS, KC_COLN }, /* ^ and ~ -> = and + */ + [KC_LBRC] = { KC_RBRC, KC_RCBR }, /* @ and ` -> [ and { */ + [KC_RBRC] = { KC_BSLS, KC_PIPE }, /* [ and { -> ] and } */ + [KC_BSLS] = { KC_JYEN, S(KC_JYEN) }, /* ] and } -> / and | */ + [KC_NUHS] = { KC_NUHS, S(KC_NUHS) }, /* (no assign) */ + [KC_SCLN] = { KC_SCLN, KC_QUOT }, /* ; and + -> ; and : */ + [KC_QUOT] = { KC_AMPR, KC_AT }, /* : and * -> ' and " */ + [KC_GRV] = { KC_LCBR, KC_PLUS }, /* (no assign) -> ` and ~ */ + [KC_COMM] = { KC_COMM, KC_LT }, /* , and < -> , and < */ + [KC_DOT] = { KC_DOT, KC_GT }, /* . and > -> . and > */ + [KC_SLSH] = { KC_SLSH, KC_QUES }, /* / and ? -> / and ? */ +}; + +#endif diff --git a/keyboards/hhkb/keymaps/shela/readme.md b/keyboards/hhkb/keymaps/shela/readme.md new file mode 100644 index 0000000000..cf5f291697 --- /dev/null +++ b/keyboards/hhkb/keymaps/shela/readme.md @@ -0,0 +1,14 @@ +# Shela's HHKB Layout + +Layer 0: US Layout +Layer 1: Pseudo US Layout +Layer 2: Dvorak Layout +Layer 3: Mouse +Layer 4: Tenkey +Layer 5: HHKB Fn Key +Layer 6: SpaceFN + +## Pseudo US Layout + +On japanese Windows, HHKB Professional 2 US layout model recognized wrongly as JIS layout without changing OS settings. +But, you can use HHKB like a US layout keyboard as it is. -- cgit v1.2.3 From c9272fee083d274c11bab0d8ec5520b54961f7fa Mon Sep 17 00:00:00 2001 From: shela Date: Fri, 12 Aug 2016 21:33:32 +0900 Subject: add new line --- keyboards/hhkb/keymaps/shela/readme.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'keyboards/hhkb') diff --git a/keyboards/hhkb/keymaps/shela/readme.md b/keyboards/hhkb/keymaps/shela/readme.md index cf5f291697..2317e880f2 100644 --- a/keyboards/hhkb/keymaps/shela/readme.md +++ b/keyboards/hhkb/keymaps/shela/readme.md @@ -1,12 +1,12 @@ # Shela's HHKB Layout -Layer 0: US Layout -Layer 1: Pseudo US Layout -Layer 2: Dvorak Layout -Layer 3: Mouse -Layer 4: Tenkey -Layer 5: HHKB Fn Key -Layer 6: SpaceFN +Layer 0: US Layout +Layer 1: Pseudo US Layout +Layer 2: Dvorak Layout +Layer 3: Mouse +Layer 4: Tenkey +Layer 5: HHKB Fn Key +Layer 6: SpaceFN ## Pseudo US Layout -- cgit v1.2.3 From 11e23fd3fdbe86ff85b2be7783c46d4360b07360 Mon Sep 17 00:00:00 2001 From: shela Date: Fri, 12 Aug 2016 21:45:36 +0900 Subject: add new line --- keyboards/hhkb/keymaps/shela/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'keyboards/hhkb') diff --git a/keyboards/hhkb/keymaps/shela/readme.md b/keyboards/hhkb/keymaps/shela/readme.md index 2317e880f2..5a06a83632 100644 --- a/keyboards/hhkb/keymaps/shela/readme.md +++ b/keyboards/hhkb/keymaps/shela/readme.md @@ -10,5 +10,5 @@ Layer 6: SpaceFN ## Pseudo US Layout -On japanese Windows, HHKB Professional 2 US layout model recognized wrongly as JIS layout without changing OS settings. +On japanese Windows, HHKB Professional 2 US layout model recognized wrongly as JIS layout without changing OS settings. But, you can use HHKB like a US layout keyboard as it is. -- cgit v1.2.3 From 44441de8cad7255fd0637459ed39b89e34751b78 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 7 Aug 2016 17:04:39 +0300 Subject: Split keyboard makefiles into rules and Makefile --- keyboards/hhkb/Makefile | 91 ++----------------------------------------------- keyboards/hhkb/rules.mk | 84 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+), 89 deletions(-) create mode 100644 keyboards/hhkb/rules.mk (limited to 'keyboards/hhkb') diff --git a/keyboards/hhkb/Makefile b/keyboards/hhkb/Makefile index 6fe973e1eb..4e2a6f00fd 100644 --- a/keyboards/hhkb/Makefile +++ b/keyboards/hhkb/Makefile @@ -1,90 +1,3 @@ - - -# project specific files -SRC = matrix.c - -# 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=4096 - -# as per original hasu settings -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 -CUSTOM_MATRIX ?= yes # Custom matrix file for the HHKB -# 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 - - - -ifndef QUANTUM_DIR +ifndef MAKEFILE_INCLUDED include ../../Makefile -endif - -ifneq (, $(findstring yes, $(HHKB_JP))) - OPT_DEFS += -DHHKB_JP -endif - -debug-on: EXTRAFLAGS += -DDEBUG -DDEBUG_ACTION -debug-on: all - -debug-off: EXTRAFLAGS += -DNO_DEBUG -DNO_PRINT -debug-off: OPT_DEFS := $(filter-out -DCONSOLE_ENABLE,$(OPT_DEFS)) -debug-off: all +endif \ No newline at end of file diff --git a/keyboards/hhkb/rules.mk b/keyboards/hhkb/rules.mk new file mode 100644 index 0000000000..b43b5e23f1 --- /dev/null +++ b/keyboards/hhkb/rules.mk @@ -0,0 +1,84 @@ + + +# project specific files +SRC = matrix.c + +# 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=4096 + +# as per original hasu settings +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 +CUSTOM_MATRIX ?= yes # Custom matrix file for the HHKB +# 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 + +ifneq (, $(findstring yes, $(HHKB_JP))) + OPT_DEFS += -DHHKB_JP +endif + +debug-on: EXTRAFLAGS += -DDEBUG -DDEBUG_ACTION +debug-on: all + +debug-off: EXTRAFLAGS += -DNO_DEBUG -DNO_PRINT +debug-off: OPT_DEFS := $(filter-out -DCONSOLE_ENABLE,$(OPT_DEFS)) +debug-off: all -- cgit v1.2.3 From da226e61261e0c11e678d2086c00b2a45726083e Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 20 Aug 2016 03:22:16 +0300 Subject: Update keyboard readme files with new makefile instructions --- keyboards/hhkb/readme.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'keyboards/hhkb') diff --git a/keyboards/hhkb/readme.md b/keyboards/hhkb/readme.md index 39d49b32a1..367c0a08f7 100644 --- a/keyboards/hhkb/readme.md +++ b/keyboards/hhkb/readme.md @@ -168,13 +168,15 @@ Download or clone the whole firmware and navigate to the keyboards/planck folder 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`. +To build with the default keymap, simply run `make default`. ### 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 a file in the keymaps folder named `.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: +To build the firmware binary hex file with a keymap just do `make` with a keymap like this: + ``` -$ make KEYMAP=[default|jack|] +$ make [default|jack|] ``` + Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. -- cgit v1.2.3 From 70b4fc808db716ab2b6c659a1e43702c435bfbef Mon Sep 17 00:00:00 2001 From: shela Date: Sun, 11 Sep 2016 02:29:32 +0900 Subject: fix variable value of rules.mk --- keyboards/hhkb/rules.mk | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'keyboards/hhkb') diff --git a/keyboards/hhkb/rules.mk b/keyboards/hhkb/rules.mk index b43b5e23f1..e6fc7260ee 100644 --- a/keyboards/hhkb/rules.mk +++ b/keyboards/hhkb/rules.mk @@ -58,19 +58,19 @@ 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 -CUSTOM_MATRIX ?= yes # Custom matrix file for the HHKB +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 +CUSTOM_MATRIX ?= yes # Custom matrix file for the HHKB # 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 +# 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 +# MIDI_ENABLE ?= yes # MIDI controls +# UNICODE_ENABLE ?= yes # Unicode +# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID ifneq (, $(findstring yes, $(HHKB_JP))) OPT_DEFS += -DHHKB_JP -- cgit v1.2.3 From 2a8536f00fb7e3a547fb5b626279e2e391e556d5 Mon Sep 17 00:00:00 2001 From: shela Date: Sun, 11 Sep 2016 02:46:06 +0900 Subject: Variables in Makefile are ignored in rules.mk --- keyboards/hhkb/keymaps/jp/Makefile | 2 +- keyboards/hhkb/keymaps/rdg_jp/Makefile | 2 +- keyboards/hhkb/rules.mk | 4 ---- 3 files changed, 2 insertions(+), 6 deletions(-) (limited to 'keyboards/hhkb') diff --git a/keyboards/hhkb/keymaps/jp/Makefile b/keyboards/hhkb/keymaps/jp/Makefile index 92986292a2..a7f700f019 100644 --- a/keyboards/hhkb/keymaps/jp/Makefile +++ b/keyboards/hhkb/keymaps/jp/Makefile @@ -1 +1 @@ -HHKB_JP=yes +OPT_DEFS += -DHHKB_JP diff --git a/keyboards/hhkb/keymaps/rdg_jp/Makefile b/keyboards/hhkb/keymaps/rdg_jp/Makefile index 92986292a2..a7f700f019 100644 --- a/keyboards/hhkb/keymaps/rdg_jp/Makefile +++ b/keyboards/hhkb/keymaps/rdg_jp/Makefile @@ -1 +1 @@ -HHKB_JP=yes +OPT_DEFS += -DHHKB_JP diff --git a/keyboards/hhkb/rules.mk b/keyboards/hhkb/rules.mk index e6fc7260ee..a46271f023 100644 --- a/keyboards/hhkb/rules.mk +++ b/keyboards/hhkb/rules.mk @@ -72,10 +72,6 @@ CUSTOM_MATRIX ?= yes # Custom matrix file for the HHKB # UNICODE_ENABLE ?= yes # Unicode # BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID -ifneq (, $(findstring yes, $(HHKB_JP))) - OPT_DEFS += -DHHKB_JP -endif - debug-on: EXTRAFLAGS += -DDEBUG -DDEBUG_ACTION debug-on: all -- cgit v1.2.3 From f0441f08b87986f49479f1503b11a3d3f899d58e Mon Sep 17 00:00:00 2001 From: dbroqua Date: Sun, 25 Sep 2016 16:32:06 +0200 Subject: - Added dbroqua layout for HHKB keyboard --- keyboards/hhkb/keymaps/dbroqua/keymap.c | 70 ++++++++++++++++++++++++++++++++ keyboards/hhkb/keymaps/dbroqua/readme.md | 9 ++++ 2 files changed, 79 insertions(+) create mode 100644 keyboards/hhkb/keymaps/dbroqua/keymap.c create mode 100644 keyboards/hhkb/keymaps/dbroqua/readme.md (limited to 'keyboards/hhkb') diff --git a/keyboards/hhkb/keymaps/dbroqua/keymap.c b/keyboards/hhkb/keymaps/dbroqua/keymap.c new file mode 100644 index 0000000000..ef43aae281 --- /dev/null +++ b/keyboards/hhkb/keymaps/dbroqua/keymap.c @@ -0,0 +1,70 @@ +/* + * dbroqua HHKB Layout + */ +#include "hhkb.h" + +#define BASE 0 +#define FN 1 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* BASE Level: Default Layer + * ,-----------------------------------------------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | + * |-----------------------------------------------------------------------------------------+ + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bksp | + * |-----------------------------------------------------------------------------------------+ + * | Ctrl | A | S | D | F | G | H | J | K | L | ; | ' | Enter | + * |-----------------------------------------------------------------------------------------+ + * | Shift | Z | X | C | V | B | N | M | , | . | / | Left |Right| + * +-----------------------------------------------------------------------------------------+ + * | Gui | Alt | Space | AltGr | fn | + * `----------------------------------------------------------------´ + */ + [BASE] = KEYMAP( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \ + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, 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_LEFT, KC_RGHT, \ + KC_LGUI, KC_LALT, /* */ KC_SPC, KC_RALT, MO(FN) + ), + + /* BASE Level: Default Layer + * ,-----------------------------------------------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F0 | F11 | F12 | Ins | Del| + * |-----------------------------------------------------------------------------------------+ + * | Caps | | | | | | | | | | | Up | | | + * |-----------------------------------------------------------------------------------------+ + * | | Vol-| Vol+| Mute| | | |PrtSc| Home| PgUp| Left |Right| | + * |-----------------------------------------------------------------------------------------+ + * | | Prev| Play| Next| | | | | End |PgDwn| Down| Up | Down| + * +-----------------------------------------------------------------------------------------+ + * | | | | | | + * `----------------------------------------------------------------´ + */ + [FN] = KEYMAP( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, \ + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, \ + KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_UP, KC_DOWN, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + +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; +}; diff --git a/keyboards/hhkb/keymaps/dbroqua/readme.md b/keyboards/hhkb/keymaps/dbroqua/readme.md new file mode 100644 index 0000000000..0afebc84c8 --- /dev/null +++ b/keyboards/hhkb/keymaps/dbroqua/readme.md @@ -0,0 +1,9 @@ +# Dbroqua Layout + +* Online keyboard layout editor: http://www.keyboard-layout-editor.com/#/gists/78eaf35e80bb714eea80cb4049dedb01 + +# Programming Instructions: +Enter into programming mode and run the following command. +``` +$ sudo KEYMAP=dbroqua make dfu +``` \ No newline at end of file -- cgit v1.2.3 From 8747c0786e7b583529d4033ea90aa91e49ae3a51 Mon Sep 17 00:00:00 2001 From: dbroqua Date: Sat, 1 Oct 2016 18:28:33 +0200 Subject: - Updated dbroqua layout for HHKB keyboard --- keyboards/hhkb/keymaps/dbroqua/keymap.c | 48 ++++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 13 deletions(-) (limited to 'keyboards/hhkb') diff --git a/keyboards/hhkb/keymaps/dbroqua/keymap.c b/keyboards/hhkb/keymaps/dbroqua/keymap.c index ef43aae281..869e16d496 100644 --- a/keyboards/hhkb/keymaps/dbroqua/keymap.c +++ b/keyboards/hhkb/keymaps/dbroqua/keymap.c @@ -5,6 +5,7 @@ #define BASE 0 #define FN 1 +#define MOUSE 2 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* BASE Level: Default Layer @@ -15,37 +16,58 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------------------------------------------------------------------------------------+ * | Ctrl | A | S | D | F | G | H | J | K | L | ; | ' | Enter | * |-----------------------------------------------------------------------------------------+ - * | Shift | Z | X | C | V | B | N | M | , | . | / | Left |Right| + * | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | fn | * +-----------------------------------------------------------------------------------------+ - * | Gui | Alt | Space | AltGr | fn | + * | Gui | Alt | Space | AltGr | Menu| * `----------------------------------------------------------------´ */ [BASE] = KEYMAP( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, 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_LEFT, KC_RGHT, \ - KC_LGUI, KC_LALT, /* */ KC_SPC, KC_RALT, MO(FN) + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(FN), \ + KC_LGUI, KC_LALT, /* */ KC_SPC, KC_RALT, MO(MOUSE) ), - /* BASE Level: Default Layer + /* FN Layer * ,-----------------------------------------------------------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F0 | F11 | F12 | Ins | Del| + * | Pwr | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F0 | F11 | F12 | Ins | Del| * |-----------------------------------------------------------------------------------------+ - * | Caps | | | | | | | | | | | Up | | | + * | Caps | | | | | | | |PrtSc| Slck| Paus| Up | | | * |-----------------------------------------------------------------------------------------+ - * | | Vol-| Vol+| Mute| | | |PrtSc| Home| PgUp| Left |Right| | + * | | Vol-| Vol+| Mute| | | | | Home| PgUp| Left |Right| | * |-----------------------------------------------------------------------------------------+ - * | | Prev| Play| Next| | | | | End |PgDwn| Down| Up | Down| + * | | Prev| Play| Next| | | | | End |PgDwn| Down| | | * +-----------------------------------------------------------------------------------------+ * | | | | | | * `----------------------------------------------------------------´ */ [FN] = KEYMAP( - KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, \ - KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, \ - KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_UP, KC_DOWN, \ + KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, \ + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, \ + KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + /* MOUSE Layer + * ,-----------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |-----------------------------------------------------------------------------------------+ + * | | | WUp | | | | | | | | Btn1| Up | Btn2| | + * |-----------------------------------------------------------------------------------------+ + * | | WLt | WDn | WRt | | | | | | | Left |Right| | + * |-----------------------------------------------------------------------------------------+ + * | | | | | | | | | | Btn3| Down| | | + * +-----------------------------------------------------------------------------------------+ + * | | | | | | + * `----------------------------------------------------------------´ + */ + [MOUSE] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, \ + KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_R, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN3, KC_MS_D, KC_TRNS, KC_TRNS, \ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) }; -- cgit v1.2.3 From 6a090c5df7e52df084de975f070841af1138b5a4 Mon Sep 17 00:00:00 2001 From: dbroqua Date: Sat, 1 Oct 2016 19:04:11 +0200 Subject: - Fixed key name in default layer definition --- keyboards/hhkb/keymaps/dbroqua/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'keyboards/hhkb') diff --git a/keyboards/hhkb/keymaps/dbroqua/keymap.c b/keyboards/hhkb/keymaps/dbroqua/keymap.c index 869e16d496..4e907acd87 100644 --- a/keyboards/hhkb/keymaps/dbroqua/keymap.c +++ b/keyboards/hhkb/keymaps/dbroqua/keymap.c @@ -18,7 +18,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------------------------------------------------------------------------------------+ * | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | fn | * +-----------------------------------------------------------------------------------------+ - * | Gui | Alt | Space | AltGr | Menu| + * | Gui | Alt | Space | AltGr |Mouse| * `----------------------------------------------------------------´ */ [BASE] = KEYMAP( -- cgit v1.2.3