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/atomic/Makefile | 73 ++ keyboards/atomic/README.md | 25 + keyboards/atomic/atomic.c | 325 +++++ keyboards/atomic/atomic.h | 49 + keyboards/atomic/config.h | 158 +++ keyboards/atomic/keymaps/abienz.c | 36 + keyboards/atomic/keymaps/default/compiled.hex | 1118 ++++++++++++++++ keyboards/atomic/keymaps/default/keymap.c | 234 ++++ keyboards/atomic/keymaps/michelle.c | 183 +++ keyboards/atomic/keymaps/pvc/Makefile | 15 + keyboards/atomic/keymaps/pvc/compiled.hex | 1700 +++++++++++++++++++++++++ keyboards/atomic/keymaps/pvc/config.h | 166 +++ keyboards/atomic/keymaps/pvc/keymap.c | 578 +++++++++ 13 files changed, 4660 insertions(+) create mode 100644 keyboards/atomic/Makefile create mode 100644 keyboards/atomic/README.md create mode 100644 keyboards/atomic/atomic.c create mode 100644 keyboards/atomic/atomic.h create mode 100644 keyboards/atomic/config.h create mode 100644 keyboards/atomic/keymaps/abienz.c create mode 100644 keyboards/atomic/keymaps/default/compiled.hex create mode 100644 keyboards/atomic/keymaps/default/keymap.c create mode 100644 keyboards/atomic/keymaps/michelle.c create mode 100644 keyboards/atomic/keymaps/pvc/Makefile create mode 100644 keyboards/atomic/keymaps/pvc/compiled.hex create mode 100644 keyboards/atomic/keymaps/pvc/config.h create mode 100644 keyboards/atomic/keymaps/pvc/keymap.c (limited to 'keyboards/atomic') diff --git a/keyboards/atomic/Makefile b/keyboards/atomic/Makefile new file mode 100644 index 000000000..08e9205cb --- /dev/null +++ b/keyboards/atomic/Makefile @@ -0,0 +1,73 @@ + + +# 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 + +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= no # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +NKRO_ENABLE ?= no # 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 ?= no # MIDI controls +AUDIO_ENABLE ?= no # Audio output on port C6 +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../Makefile +endif \ No newline at end of file diff --git a/keyboards/atomic/README.md b/keyboards/atomic/README.md new file mode 100644 index 000000000..9fe75f572 --- /dev/null +++ b/keyboards/atomic/README.md @@ -0,0 +1,25 @@ +Atomic keyboard firmware +====================== +DIY/Assembled ortholinear 60% keyboard by [Ortholinear Keyboards](http://ortholinearkeyboards.com). + +## Quantum MK Firmware + +For the full Quantum feature list, see [the parent README.md](/README.md). + +## Building + +Download or clone the whole firmware and navigate to the keyboards/atomic 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/atomic/atomic.c b/keyboards/atomic/atomic.c new file mode 100644 index 000000000..fa218a48f --- /dev/null +++ b/keyboards/atomic/atomic.c @@ -0,0 +1,325 @@ +#include "atomic.h" + +__attribute__ ((weak)) +void matrix_init_user(void) { + // leave this function blank - it can be defined in a keymap file +}; + +__attribute__ ((weak)) +void matrix_scan_user(void) { + // leave this function blank - it can be defined in a keymap file +} + +__attribute__ ((weak)) +bool process_action_user(keyrecord_t *record) { + // leave this function blank - it can be defined in a keymap file + return true; +} + +__attribute__ ((weak)) +void led_set_user(uint8_t usb_led) { + // leave this function blank - it can be defined in a keymap file +} + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + MCUCR |= (1<= BACKLIGHT_LEVELS ) + { + // Turn on PWM control of PB7 + TCCR1A |= _BV(COM1C1); + + // Set the brightness to max + CHANNEL = 0xFFFF; + } + else + { + // Turn on PWM control of PB7 + TCCR1A |= _BV(COM1C1); + + // Set the brightness + CHANNEL = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2)); + } + breathing_intensity_default(); +} + + +void breathing_enable(void) +{ + if (get_backlight_level() == 0) + { + breathing_index = 0; + } + else + { + // Set breathing_index to be at the midpoint (brightest point) + breathing_index = 0x20 << breath_speed; + } + + breathing_halt = BREATHING_NO_HALT; + + // Enable breathing interrupt + TIMSK1 |= _BV(OCIE1A); +} + +void breathing_pulse(void) +{ + if (get_backlight_level() == 0) + { + breathing_index = 0; + } + else + { + // Set breathing_index to be at the midpoint + 1 (brightest point) + breathing_index = 0x21 << breath_speed; + } + + breathing_halt = BREATHING_HALT_ON; + + // Enable breathing interrupt + TIMSK1 |= _BV(OCIE1A); +} + +void breathing_disable(void) +{ + // Disable breathing interrupt + TIMSK1 &= ~_BV(OCIE1A); + backlight_set(get_backlight_level()); +} + +void breathing_self_disable(void) +{ + if (get_backlight_level() == 0) + { + breathing_halt = BREATHING_HALT_OFF; + } + else + { + breathing_halt = BREATHING_HALT_ON; + } + + //backlight_set(get_backlight_level()); +} + +void breathing_toggle(void) +{ + if (!is_breathing()) + { + if (get_backlight_level() == 0) + { + breathing_index = 0; + } + else + { + // Set breathing_index to be at the midpoint + 1 (brightest point) + breathing_index = 0x21 << breath_speed; + } + + breathing_halt = BREATHING_NO_HALT; + } + + // Toggle breathing interrupt + TIMSK1 ^= _BV(OCIE1A); + + // Restore backlight level + if (!is_breathing()) + { + backlight_set(get_backlight_level()); + } +} + +bool is_breathing(void) +{ + return (TIMSK1 && _BV(OCIE1A)); +} + +void breathing_intensity_default(void) +{ + //breath_intensity = (uint8_t)((uint16_t)100 * (uint16_t)get_backlight_level() / (uint16_t)BACKLIGHT_LEVELS); + breath_intensity = ((BACKLIGHT_LEVELS - get_backlight_level()) * ((BACKLIGHT_LEVELS + 1) / 2)); +} + +void breathing_intensity_set(uint8_t value) +{ + breath_intensity = value; +} + +void breathing_speed_default(void) +{ + breath_speed = 4; +} + +void breathing_speed_set(uint8_t value) +{ + bool is_breathing_now = is_breathing(); + uint8_t old_breath_speed = breath_speed; + + if (is_breathing_now) + { + // Disable breathing interrupt + TIMSK1 &= ~_BV(OCIE1A); + } + + breath_speed = value; + + if (is_breathing_now) + { + // Adjust index to account for new speed + breathing_index = (( (uint8_t)( (breathing_index) >> old_breath_speed ) ) & 0x3F) << breath_speed; + + // Enable breathing interrupt + TIMSK1 |= _BV(OCIE1A); + } + +} + +void breathing_speed_inc(uint8_t value) +{ + if ((uint16_t)(breath_speed - value) > 10 ) + { + breathing_speed_set(0); + } + else + { + breathing_speed_set(breath_speed - value); + } +} + +void breathing_speed_dec(uint8_t value) +{ + if ((uint16_t)(breath_speed + value) > 10 ) + { + breathing_speed_set(10); + } + else + { + breathing_speed_set(breath_speed + value); + } +} + +void breathing_defaults(void) +{ + breathing_intensity_default(); + breathing_speed_default(); + breathing_halt = BREATHING_NO_HALT; +} + +/* Breathing Sleep LED brighness(PWM On period) table + * (64[steps] * 4[duration]) / 64[PWM periods/s] = 4 second breath cycle + * + * http://www.wolframalpha.com/input/?i=%28sin%28+x%2F64*pi%29**8+*+255%2C+x%3D0+to+63 + * (0..63).each {|x| p ((sin(x/64.0*PI)**8)*255).to_i } + */ +static const uint8_t breathing_table[64] PROGMEM = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 6, 10, + 15, 23, 32, 44, 58, 74, 93, 113, 135, 157, 179, 199, 218, 233, 245, 252, +255, 252, 245, 233, 218, 199, 179, 157, 135, 113, 93, 74, 58, 44, 32, 23, + 15, 10, 6, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + +ISR(TIMER1_COMPA_vect) +{ + // CHANNEL = (pgm_read_byte(&breathing_table[ ( (uint8_t)( (breathing_index++) >> breath_speed ) ) & 0x3F ] )) * breath_intensity; + + + uint8_t local_index = ( (uint8_t)( (breathing_index++) >> breath_speed ) ) & 0x3F; + + if (((breathing_halt == BREATHING_HALT_ON) && (local_index == 0x20)) || ((breathing_halt == BREATHING_HALT_OFF) && (local_index == 0x3F))) + { + // Disable breathing interrupt + TIMSK1 &= ~_BV(OCIE1A); + } + + CHANNEL = (uint16_t)(((uint16_t)pgm_read_byte(&breathing_table[local_index]) * 257)) >> breath_intensity; + +} + + + +#endif \ No newline at end of file diff --git a/keyboards/atomic/atomic.h b/keyboards/atomic/atomic.h new file mode 100644 index 000000000..901761f51 --- /dev/null +++ b/keyboards/atomic/atomic.h @@ -0,0 +1,49 @@ +#ifndef ATOMIC_H +#define ATOMIC_H + +#include "quantum.h" +#include +#include +#include + +// This a shortcut to help you visually see your layout. +// The following is an example using the Planck MIT layout +// The first section contains all of the arguements +// The second converts the arguments into a two-dimensional array +#define KEYMAP_SEMI_STANDARD( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3D, K3E, \ + K40, K41, K43, K46, K4A, K4B, K4C, K4D, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_NO, K3C, K3D, K3E }, \ + { K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E } \ +} + +void matrix_init_user(void); +void matrix_scan_user(void); +bool process_action_user(keyrecord_t *record); +void led_set_user(uint8_t usb_led); +void backlight_init_ports(void); + +void breathing_enable(void); +void breathing_pulse(void); +void breathing_disable(void); +void breathing_self_disable(void); +void breathing_toggle(void); +bool is_breathing(void); + + +void breathing_defaults(void); +void breathing_intensity_default(void); +void breathing_speed_default(void); +void breathing_speed_set(uint8_t value); +void breathing_speed_inc(uint8_t value); +void breathing_speed_dec(uint8_t value); + + +#endif \ No newline at end of file diff --git a/keyboards/atomic/config.h b/keyboards/atomic/config.h new file mode 100644 index 000000000..bf9550e94 --- /dev/null +++ b/keyboards/atomic/config.h @@ -0,0 +1,158 @@ +/* +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 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Ortholinear Keyboards +#define PRODUCT The Atomic Keyboard +#define DESCRIPTION A compact ortholinear keyboard + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { D0, D5, B5, B6, C6 } +#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7, D3, D2, D1 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +/* 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 + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +#define MAGIC_KEY_BOOTLOADER B +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * 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/atomic/keymaps/abienz.c b/keyboards/atomic/keymaps/abienz.c new file mode 100644 index 000000000..589a64dc4 --- /dev/null +++ b/keyboards/atomic/keymaps/abienz.c @@ -0,0 +1,36 @@ +#include "atomic.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = { /* Colemak */ + { 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_BSPC, KC_NO }, + { KC_TAB, CM_Q, CM_W, CM_F, CM_P, CM_G, CM_J, CM_L, CM_U, CM_Y, CM_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, + { KC_BSPC, CM_A, CM_R, CM_S, CM_T, CM_D, CM_H, CM_N, CM_E, CM_I, CM_O, KC_QUOT, KC_ENT, KC_NO, KC_PGUP }, + { KC_LSFT, CM_Z, CM_X, CM_C, CM_V, CM_B, CM_K, CM_M, CM_COMM, CM_DOT, CM_SLSH, KC_RSFT, KC_NO, KC_UP, KC_PGDN }, + { KC_LCTL, KC_LGUI, KC_NO, KC_LALT, FUNC(1), KC_SPC, KC_NO, KC_RALT, FUNC(2), KC_RGUI, KC_NO, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, + }, + [1] = { /* function */ + { 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_BSPC, KC_NO }, + { 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_TRNS, KC_SLEP, 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_CALC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MPLY }, + { KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, FUNC(1), KC_TRNS, KC_NO, KC_TRNS, FUNC(2), KC_TRNS, KC_NO, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT }, + } +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_MOMENTARY(1), + [2] = ACTION_LAYER_MOMENTARY(1), + +}; + +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: + return MACRODOWN(TYPE(KC_T), END); + break; + } + return MACRO_NONE; +}; + diff --git a/keyboards/atomic/keymaps/default/compiled.hex b/keyboards/atomic/keymaps/default/compiled.hex new file mode 100644 index 000000000..b9bb143ea --- /dev/null +++ b/keyboards/atomic/keymaps/default/compiled.hex @@ -0,0 +1,1118 @@ +:100000000C942A030C946E030C946E030C946E03F0 +:100010000C946E030C946E030C946E030C946E039C +:100020000C946E030C946E030C946A0D0C943C0EAD +:100030000C94531B0C946E030C946E030C946E037F +:100040000C946E030C94D6030C946E030C946E0304 +:100050000C946E030C94BB1B0C946E030C946E03F7 +:100060000C946E030C946E030C946E030C946E034C +:100070000C946E030C946E030C946E030C946E033C +:100080000C946E030C946E030C946E030C946E032C +:100090000C946E030C946E030C946E030C946E031C +:1000A0000C946E030C946E030C946E03A90ECB0E8D +:1000B000B90FCB0EB90F100F330FB90F880F9B0F6D +:1000C00085128512B412B412F31213136914691451 +:1000D0001E136914CE13CE1335143E146914631421 +:1000E000DB13DB13DB13DB13DB13DB13DB13DB13A0 +:1000F000DB13DB13DB13DB13DB13DB13DB13DB1390 +:10010000EB13F91300140714111400000000000091 +:100110000000000000010204060A0F17202C3A4AD2 +:100120005D71879DB3C7DAE9F5FCFFFCF5E9DAC735 +:10013000B39D87715D4A3A2C20170F0A060402010D +:100140000000000000000000000035001E001F003D +:100150002000210022002300240025002600270083 +:100160002D002E002A002A002B0014001A0008007F +:10017000150017001C0018000C00120013002F00BF +:10018000300031004C00290004001600070009006F +:100190000A000B000D000E000F0033003400280091 +:1001A00028004B00E1001D001B000600190005009F +:1001B00011001000360037003800E500E50052005D +:1001C0004E000030E000E200E30004512C002C005F +:1001D0000351E700E600E4000551500051004F00D4 +:1001E00035001E001F0020002100220023002400F3 +:1001F0002500260027002D002E002A002A002B00B3 +:1002000014001A00090013000A000D000F00180066 +:100210001C0033002F00300031004C002900040086 +:1002200015001600170007000B00110008000C0055 +:1002300012003400280028004B00E1001D001B00C4 +:100240000600190005000E001000360037003800C7 +:10025000E500E50052004E000030E000E200E3005F +:1002600004512C002C000351E700E600E400055186 +:10027000500051004F0035001E001F0020002100DB +:100280002200230024002500260027002D002E0038 +:100290002A002A002B0034003600370013001C000F +:1002A00009000A00060015000F002F003000310081 +:1002B0004C00290004001200080018000C00070080 +:1002C0000B001700110016003800280028004B0012 +:1002D000E100330014000D000E001B0005001000AB +:1002E0001A0019001D00E500E50052004E00003024 +:1002F000E000E200E30004512C002C000351E70071 +:10030000E600E4000551500051004F0001003A00A2 +:100310003B003C003D003E003F00400041004200E9 +:100320004300440045000100010001001E021F02BD +:100330002002210222022302240225022602270291 +:10034000010001000100490001003A003B003C00AF +:100350003D003E003F002D022E022F0230023102EE +:100360000100010001000100400041004200430083 +:1003700044004500010001000100010001000100EE +:100380000100010001000100010001000100010065 +:100390000100010001000100010001000100010055 +:1003A000010001003A003B003C003D003E003F00E0 +:1003B00040004100420043004400450001000100AC +:1003C00001001E001F002000210022002300240045 +:1003D000250026002700010001000100490001005E +:1003E0003A003B003C003D003E003F002D002E0047 +:1003F0002F00300031000100010001000100400029 +:10040000410042004300440045000100010001009A +:1004100001000100010001000100010001000100D4 +:1004200001000100010001000100010001000100C4 +:10043000010001000100010053003A003B003C00B4 +:100440003D003E003F0040004100420043004400A8 +:100450004500010001004700680069006A006B0068 +:100460006C006D006E006F00700071007200730010 +:10047000480046003900F800F700F600F500FD00DE +:10048000FF00AB00AA00A900AE00010001000100BE +:10049000F900010001000052015202520100010066 +:1004A000010001000100010001000100F000FA005C +:1004B00001000100010001000100F400F40001004E +:1004C0000100010001000100F200F100F300280327 +:1004D0005400680065002000410074006F006D004A +:1004E0006900630020004B006500790062006F0026 +:1004F00061007200640000002C034F007200740061 +:1005000068006F006C0069006E0065006100720099 +:1005100020004B006500790062006F0061007200EE +:10052000640073000000040309040902540003017D +:1005300000A0FA09040000010301010009211101D2 +:1005400000012240000705810308000A0904010098 +:100550000103010200092111010001224D000705DC +:10056000820308000A0904020001030000000921B7 +:10057000110100012236000705830308000A120159 +:10058000100100000008EDFE6060010001020001A2 +:1005900005010980A101850216010026B7001A0194 +:1005A000002AB700751095018100C0050C0901A152 +:1005B000018503160100269C021A01002A9C02757F +:1005C0001095018100C005010902A1010901A100E6 +:1005D00005091901290515002501950575018102F7 +:1005E0009501750381010501093009311581257FC8 +:1005F00095027508810609381581257F95017508D2 +:100600008106050C0A38021581257F950175088140 +:1006100006C0C005010906A101050719E029E71573 +:100620000025019508750181029501750881010574 +:100630000819012905950575019102950175039128 +:10064000010507190029FF150026FF00950675080A +:100650008100C00011241FBECFEFDAE0DEBFCDBFA6 +:1006600004B603FE24C08091F0019091F101A091A5 +:10067000F201B091F3018730904BA740B04BB9F431 +:100680001092F0011092F1011092F2011092F30118 +:1006900014BE84B7877F84BF88E10FB6F894809337 +:1006A0006000109260000FBEE0E0F8E3099511E0F1 +:1006B000A0E0B1E0EEE7F5E402C005900D92A234AF +:1006C000B107D9F711E0A2E4B1E001C01D92A03F4B +:1006D000B107E1F70E94B40A0C94BD220C9400000B +:1006E0000895089581E0089508950C9471030C9481 +:1006F00072030C9474030E94332123E030E0281B22 +:100700003109220F209346010895282F2F988091B8 +:100710008000211108C0877F8093800010928D0097 +:1007200010928C001BC0886080938000233018F0EA +:100730008FEF9FEF0FC083E090E0821B9109880F3D +:10074000991F2FEF3FEFA90102C0569547958A9553 +:10075000E2F7CA0190938D0080938C000C947B0388 +:100760000E947B0384E0809345011092420108952A +:10077000279A2F988FEF9FEF9093870080938600A2 +:100780008AE08093800089E1809381000E949C2010 +:100790000C94B00385B7806885BF85B7806885BF36 +:1007A0000E94B8036E9A769A0C9470031F920F926F +:1007B0000FB60F9211242F933F938F939F93EF9334 +:1007C000FF93E0914301F0914401CF010196909392 +:1007D0004401809343010090450102C0F695E795DE +:1007E0000A94E2F7EF7380914201823019F4E0320B +:1007F00051F404C0813039F4EF3329F480916F0053 +:100800008D7F80936F00F0E0E65FFE4FE49121E082 +:1008100031E0E29FC001E39F900D1124009046015A +:1008200002C0969587950A94E2F790938D00809385 +:100830008C00FF91EF919F918F913F912F910F909D +:100840000FBE0F901F90189561110DC0FC018281A1 +:10085000882331F085EE0E9429110E94F32003C005 +:1008600085EE0E94F11180E090E0089581E0089506 +:100870000C94360408950F931F93CF93DF938C014C +:10088000FC01C081D181CE010E94CD19BE010E9420 +:100890006C07EC01B8010E943804882309F470C188 +:1008A000F8018281882309F45BC080915201811193 +:1008B0001FC0C431F0E7DF0709F00AC10E943A0403 +:1008C00081E0809352010E94851B90935101809397 +:1008D00050011092490110924B0110924A0110925E +:1008E0004D0110924C0110924F0110924E0148C1DF +:1008F00080915001909151010E94911B883C91057B +:1009000070F480914901E82FF0E0EE0FFF1FE65BE5 +:10091000FE4FD183C0838F5F8093490131C1C431C1 +:1009200020E7D20708F024C1C23080E7D80710F5CD +:10093000C11590E7D90709F0DAC0F8018281882350 +:1009400009F4BFC00E94D414FFEF24E38CE0F150FF +:1009500020408040E1F700C000000E94E01B10C171 +:10096000C431F0E7DF0708F0CFC0C23020E7D2077C +:1009700008F49BC0F8018281882309F4A2C00E9478 +:100980003A1C811102C00E941B1C0E944D1C90E069 +:100990009093E1018093E001C230F0E7DF0721F49A +:1009A0008091E00181607AC0C33020E7D20721F452 +:1009B0008091E001826072C0C43080E7D80721F4E2 +:1009C0008091E00184606AC0C53090E7D90719F4CE +:1009D0008091E00127C0C630E0E7DE0721F4809176 +:1009E000E00180615BC0C730F0E7DF0721F4809150 +:1009F000E001806253C0C83020E7D20721F4809123 +:100A0000E00180644BC0C93080E7D80721F48091B1 +:100A1000E001806843C0CA3090E7D90729F480918B +:100A2000E001846088603AC0CB30E0E7DE0721F463 +:100A30008091E0018E7F32C0CC30F0E7DF0721F4F7 +:100A40008091E0018D7F2AC0CD3020E7D20721F4CC +:100A50008091E0018B7F22C0CE3080E7D80719F467 +:100A60008091E0011AC08091E001CF3090E7D90772 +:100A700011F48F7E13C0C031E0E7DE0711F48F7DE3 +:100A80000DC0C131F0E7DF0711F48F7B07C0C23121 +:100A9000D04711F48F7702C08B7F877F8093E0016E +:100AA0008091E0010E94511C6BC0C11580E7D807FE +:100AB00041F0C130D047F1F081E08093470180934D +:100AC0004801C801DF91CF911F910F910C947703DA +:100AD000C43120E7D20708F04BC0C23080E7D80706 +:100AE00008F048CFC11590E7D90709F42BCFC130E2 +:100AF000D04711F7F8018281882319F38091CF0143 +:100B000081608093CF013CC0C333E0E7DE07A1F4EE +:100B1000F8018281882321F01092470182E017C0FA +:100B200080914701811106C086E20E94291186E268 +:100B30000E94F11182E019C0C433D04709F0BCCF44 +:100B4000F8018281882331F01092480180E20E94EE +:100B5000401216C080914801811106C087E20E94B0 +:100B6000291187E20E94F11180E20E94471208C019 +:100B7000C333F0E7DF0761F2C433D04709F39CCFFA +:100B800080E0DF91CF911F910F9108950C94CA03DB +:100B90000C9475032FE0729FF00111243BE4839FB6 +:100BA000E00DF11D1124E60FF11DEE0FFF1FE65BB6 +:100BB000FE4F859194910E947E07811540E5940730 +:100BC00008F047C0811520E4920708F013C1883E61 +:100BD000910520F5803E910508F07CC1883A910589 +:100BE00078F4853A910508F0A5C08130910509F4A3 +:100BF00071C108F42EC18430910508F06BC129C180 +:100C00008B3B910508F4A1C0803C910508F421C1FB +:100C1000FC01EE0FFF1FE653F040E6C0811530E205 +:100C2000930758F4811541E0940708F053C1803FC1 +:100C3000910508F40EC190650895811520E392078F +:100C400008F0D5C0FC01FF70EE0FFF1FE65BFE4F02 +:100C5000CBC0811535E5930708F043C0811544E505 +:100C6000940708F0DEC0811522E5920708F581158A +:100C700031E5930708F0C1C0482F437021E030E010 +:100C800002C0220F331F4A95E2F73C68AC0164E0D2 +:100C9000569547956A95E1F74370342B8F7086958A +:100CA000869540E2849FC0011124822B932B0895E6 +:100CB000282F26952695AC0143705527811593451D +:100CC00008F0A0C080E2289F9001112481E090E00C +:100CD00002C0880F991F4A95E2F7822B932B9C68DC +:100CE00008958F3240E7940790F48F3120E7920700 +:100CF00008F0A2C0811536E5930708F497C09C015F +:100D000030562115304108F0A4C09F7093C0803345 +:100D100020E7920709F497C008F492C0813340E7B6 +:100D2000940709F493C08233904709F092C080E0A1 +:100D300093ED0895853A910509F48EC0863A9105A0 +:100D400009F08DC082E890E40895883A910509F48D +:100D500089C0893A910509F488C08A3A910509F455 +:100D600087C08B3A910509F486C08C3A910509F445 +:100D700085C08D3A910509F484C0803B910509F442 +:100D800083C08E3A910509F482C08F3A910509F427 +:100D900081C0813B910509F480C0823B910509F433 +:100DA0007FC0833B910509F47EC0843B910509F423 +:100DB0007DC0853B910509F47CC0863B910509F413 +:100DC0007BC0873B910509F47AC0883B910509F403 +:100DD00079C0893B910509F478C08A3B910509F4F3 +:100DE00077C080E094E408958591949108959927BF +:100DF000906C08959F70906A0895982F8827816F4E +:100E0000906A089590E2299F9001112481E090E07A +:100E100002C0880F991F4A95E2F7822B932B9A689C +:100E20000895982F8827846F906A08958F71992765 +:100E3000982F8827906208958F519047946D089558 +:100E400080E091ED089580E090ED089580E092EDCE +:100E5000089580E090E0089581E890E4089583E8A3 +:100E600090E4089582EE94E4089589EE94E4089560 +:100E70008AEE94E4089585EB94E4089586EB94E477 +:100E8000089587EB94E408958CEC94E408958DEC38 +:100E900094E4089583E895E408958AE895E4089534 +:100EA00082E995E4089584E995E4089581E296E461 +:100EB000089583E296E4089584E296E4089585E235 +:100EC00096E4089586E296E4089587E296E408950C +:100ED0008AE296E4089508959FE0799FF001112435 +:100EE0009BE4899FE00DF11D1124E60FF11DEE0F2B +:100EF000FF1FE65BFE4F859194910895823891051E +:100F000049F1B0F48133910509F458C048F48932AD +:100F1000910509F44EC08A32910509F454C0089530 +:100F20008533910509F440C08933910599F00895FE +:100F3000833E910529F138F4803E910591F0823E7F +:100F40009105A1F00895863E9105F9F0873E91053F +:100F500031F108952091E00120FD3AC021FD38C013 +:100F600008958091E00180FD35C032C08091E0019C +:100F700082FF32C08091E00184FD30C083EE39C031 +:100F80008091E00182FD28C0F5CF8091E00183FFD0 +:100F900027C08091E00184FD21C087EE2AC08091A6 +:100FA000E00183FD1DC0F5CF8091E00185FD1AC0F1 +:100FB0001BC08091E00185FD17C014C08091E00145 +:100FC00086FD14C015C08091E00186FD11C00EC0E1 +:100FD00080EE0FC089E30DC082EE0BC080E009C037 +:100FE00086EE07C089E205C085E303C08AE201C03E +:100FF00081E390E008950C947903E82FF0E0ED5D33 +:10100000FE4F8081E82FEF70F0E082958F7021E035 +:1010100030E0A90102C0440F551F8A95E2F740A3B2 +:1010200008950F931F93CF93DF93C4E0D0E001E0C6 +:1010300010E0FE01ED5DFE4F8081E82FEF70F0E0E3 +:1010400021A182958F70A80102C0440F551F8A9577 +:10105000E2F7CA01822B81A38C2F0E94FD07219702 +:1010600040F78EE090E061E070E0FC01EC5EFE4F46 +:101070002081E22FEF70F0E042A122952F70DB017A +:1010800002C0AA0FBB1F2A95E2F79D01242B22A3C1 +:10109000019758F7DF91CF911F910F9108950F930A +:1010A0001F93CF93DF9385B7806885BF85B780682E +:1010B00085BFC4E0D0E001E010E0FE01ED5DFE4F31 +:1010C0008081E82FEF70F0E021A182958F70A80158 +:1010D00002C0440F551F8A95E2F7CA01822B81A3F3 +:1010E0008C2F0E94FD07219740F78EE090E061E091 +:1010F00070E0FC01EC5EFE4F2081E22FEF70F0E02B +:1011000042A122952F70DB0102C0AA0FBB1F2A95B6 +:10111000E2F79D01242B22A3019758F7DF91CF918D +:101120001F910F910C94C605EF92FF920F931F939E +:10113000CF93DF930DE511E0C4E0EE24E394F12CAE +:10114000D5E08C2F0E94FD078EE090E040E050E05B +:10115000FC01EC5EFE4F6081E62FEF70F0E020A115 +:1011600030E062956F7002C0359527956A95E2F779 +:1011700020FD09C09701082E02C0220F331F0A94D8 +:10118000E2F7422B532B019718F7F80192918291C5 +:101190008F018417950721F051834083D09300017C +:1011A0008C2F0E94FD07C15060F68091000187FDE1 +:1011B0001FC08150809300018F3F39F08FE99FE07D +:1011C0000197F1F700C0000013C080E090E0FC013F +:1011D000E35AFE4FDC01AD5ABE4F18962D913C915B +:1011E0001997318720870297863FEFEF9E0779F79F +:1011F0000E94C80581E0DF91CF911F910F91FF9070 +:10120000EF900895E82FF0E0EE0FFF1FE35AFE4F36 +:1012100080819181089508950F931F93CF9307E6DE +:1012200011E0C0E0F801929182918F010E94FE1AB4 +:10123000C80FF1E00D351F07A9F78C2FCF911F9133 +:101240000F91089580916F010895CF93DF9300D09F +:101250001F92CDB7DEB79C018091E601843019F56D +:1012600093E099833B832A839093E9008FEF9091D9 +:10127000E800815095FD06C095ED9A95F1F70000C4 +:101280008111F5CF8091E80085FF0DC040E050E06E +:1012900063E070E0CE0101960E945A0B8091E80055 +:1012A0008E778093E8000F900F900F90DF91CF9191 +:1012B0000895CF93DF9300D01F92CDB7DEB7209172 +:1012C000E601243021F522E029839B838A8383E091 +:1012D0008093E9008FEF9091E800815095FD06C062 +:1012E00095ED9A95F1F700008111F5CF8091E80016 +:1012F00085FF0DC040E050E063E070E0CE01019654 +:101300000E945A0B8091E8008E778093E8000F903E +:101310000F900F90DF91CF9108952091E601243036 +:10132000F1F422E02093E9002FEF3091E800215002 +:1013300035FD06C035ED3A95F1F700002111F5CFE6 +:101340002091E80025FF0BC040E050E065E070E030 +:101350000E945A0B8091E8008E778093E8000895F0 +:10136000CF93DF932091E601243039F521E02093DB +:10137000E9002FEF3091E800215035FD06C035ED32 +:101380003A95F1F700002111F5CF2091E80025FFF3 +:1013900014C0EC0140E050E068E070E00E945A0B9D +:1013A0008091E8008E778093E80088E0FE01A7E650 +:1013B000B1E001900D928A95E1F7DF91CF91089508 +:1013C0008091E501811109C00E94EF0C0E944C0D33 +:1013D0008091E20084608093E20008951092E5011C +:1013E0000895089508950C94481B42E061EC81E053 +:1013F0000E94690C42E061EC82E00E94690C42E0CC +:1014000061EC83E00C94690C8091E801833009F46D +:1014100053C030F4813071F0823009F48CC00895EB +:101420008A3009F478C08B3009F45EC0893009F045 +:101430009AC020C08091E701813A09F094C0809160 +:10144000E800877F8093E8008091EB019091EC01A8 +:10145000892B21F468E087E691E003C060E080E03A +:1014600090E070E00E94A50B8091E8008B7780935C +:10147000E80008958091E701813209F074C08091FD +:10148000EB019091EC01892B09F06DC08091E8008F +:10149000877F8093E8008091E80082FD05C08091FD +:1014A000E6018111F8CF5FC08091F10080936F0158 +:1014B0008091E8008B7753C08091E701813A09F071 +:1014C00052C08091EB019091EC01892B09F04BC047 +:1014D0008091E800877F8093E8008091E80080FF9A +:1014E000FCCF80910B0136C08091E7018132D9F5A4 +:1014F0008091EB019091EC01892BA9F58091E80096 +:10150000877F8093E8000E949E0C8091E901809380 +:101510000B010C94D4148091E701813221F5809164 +:10152000E800877F8093E8000E949E0C8091EA018A +:101530008093700108958091E701813AA1F4809130 +:10154000E800877F8093E8008091E80080FFFCCF6F +:10155000809170018093F1008091E8008E778093F4 +:10156000E8000C949E0C089584B7877F84BF88E1BF +:101570000FB6F89480936000109260000FBE80E870 +:1015800080936100109261000E9441100E94EF0C54 +:101590000E944C0D8091E20084608093E200789478 +:1015A0000E94D20F0E94431081E091E00E94ED0F53 +:1015B0008091E601853069F40E940A1B8091E40164 +:1015C0008823B1F30E94371B882391F30E94440BB8 +:1015D000EFCF0E944B10ECCF292F3327233031055A +:1015E000C9F064F42130310581F02230310509F071 +:1015F00043C084E590E02AE235E042C02132310563 +:10160000F1F02232310541F137C082E190E02EE75E +:1016100035E036C099278130910541F0823091053F +:1016200041F0892B49F5E6E2F5E005C0E8EFF4E08A +:1016300002C0EEECF4E0849190E09F0121C06330A1 +:10164000D8F4E62FF0E0EE0FFF1FEF5CFE4F208195 +:10165000318189E090E014C0633070F470E0FB01E8 +:10166000EE0FFF1FE55DFE4F20813181FB01E85D3C +:10167000FE4F808190E004C080E090E020E030E008 +:10168000FA0131832083089580E189BD82E189BD1B +:1016900009B400FEFDCF8091D8008F7D8093D800E3 +:1016A0008091E00082608093E0008091E00081FD05 +:1016B000FCCF0895CF92DF92EF92FF920F931F938A +:1016C000CF93DF93EC018B016A010E94BD0C811165 +:1016D00033C0C114D10439F0F60180819181081B17 +:1016E000190BC80FD91FE12CF12C0115110519F1A7 +:1016F0008091E80085FD16C08091E8008E77809388 +:10170000E800C114D10449F0F60180819181E80E0E +:10171000F91EF182E08285E00FC00E94BD0C882393 +:1017200021F30AC089918093F10001501109FFEF64 +:10173000EF1AFF0ADACF80E0DF91CF911F910F916E +:10174000FF90EF90DF90CF9008952091ED013091C0 +:10175000EE012617370748F06115710539F420911D +:10176000E8002E772093E80001C0B90140E0611540 +:101770007105A9F12091E601222309F443C0253027 +:1017800009F442C02091E80023FD40C02091E80008 +:1017900022FD32C02091E80020FFE9CF4091F30004 +:1017A0002091F20030E0342BFC01CF01611571056E +:1017B00059F02830310540F481918093F100615057 +:1017C00071092F5F3F4FF1CF41E02830310509F01B +:1017D00040E02091E8002E772093E800C8CF411127 +:1017E000C9CF0AC08091E601882361F0853061F09D +:1017F0008091E80083FD0AC08091E80082FFF2CF6B +:1018000080E0089582E0089583E0089581E00895DE +:101810002091ED013091EE012617370748F0611550 +:10182000710539F42091E8002E772093E80001C07B +:10183000B901FC0120E06115710591F18091E6018B +:10184000882309F440C0853009F43FC08091E80046 +:1018500083FD3DC08091E80082FD2FC08091E800AB +:1018600080FFE9CF2091F3008091F20090E0922B6D +:101870006115710559F08830910540F42491209349 +:10188000F1003196615071090196F2CF21E008977D +:1018900009F020E08091E8008E778093E800CBCFBC +:1018A0002111CCCF0AC08091E601882361F08530F8 +:1018B00061F08091E80083FD0AC08091E80082FF1A +:1018C000F2CF80E0089582E0089583E0089581E0FA +:1018D0000895982F973058F59093E900981739F0AC +:1018E0007091EC002091ED005091F00003C0242F86 +:1018F000762F50E021FF19C03091EB003E7F3093EE +:10190000EB003091ED003D7F3093ED003091EB0026 +:1019100031603093EB007093EC002093ED00509316 +:10192000F0002091EE0027FF07C09F5FD3CF8F709C +:101930008093E90081E0089580E008958091E701B7 +:1019400087FF11C08091E80082FD05C08091E6010B +:101950008111F8CF11C08091E8008B770BC0809186 +:10196000E601882349F08091E80080FFF8CF80915C +:10197000E8008E778093E80008952091E40030918C +:10198000E50095E64091EC00842F817040FF22C075 +:101990008091E80080FD1CC08091E601882391F0D1 +:1019A000853091F08091EB0085FD10C04091E400FE +:1019B0005091E5004217530729F39A01915011F70E +:1019C00084E0089582E0089583E0089581E0089519 +:1019D00080E008954091E80042FFDECF08950E9424 +:1019E0005D0D0E94650DE0EEF0E0808181608083F6 +:1019F000E8EDF0E080818F77808319BCA7EDB0E03F +:101A00008C918E7F8C9380818F7E80831092E501F4 +:101A100008950F931F93CF93DF930E945D0D0E9453 +:101A2000650DC8EDD0E088818F77888388818068D4 +:101A3000888388818F7D888319BC1092E60110927B +:101A4000E2011092E4011092E30100EE10E0F801CF +:101A500080818B7F808388818160888342E060E021 +:101A600080E00E94690CE1EEF0E080818E7F80834F +:101A7000E2EEF0E0808181608083808188608083F5 +:101A8000F80180818E7F8083888180618883DF91E7 +:101A9000CF911F910F910895E8EDF0E080818F7E46 +:101AA0008083E7EDF0E080818160808384E082BF05 +:101AB00081E08093E5010C94090DE8EDF0E0808170 +:101AC0008E7F80831092E20008951092DA001092C7 +:101AD000E10008951F920F920FB60F9211242F93D9 +:101AE0003F934F935F936F937F938F939F93AF93A6 +:101AF000BF93EF93FF938091E10082FF0BC0809131 +:101B0000E20082FF07C08091E1008B7F8093E100BB +:101B10000E94D10F8091DA0080FF1FC08091D80011 +:101B200080FF1BC08091DA008E7F8093DA00809165 +:101B3000D90080FF0DC080E189BD82E189BD09B473 +:101B400000FEFDCF81E08093E6010E94E00905C020 +:101B500019BC1092E6010E94EE098091E10080FF1D +:101B600019C08091E20080FF15C08091E2008E7F55 +:101B70008093E2008091E20080618093E200809196 +:101B8000D80080628093D80019BC85E08093E6017C +:101B90000E94F2098091E10084FF30C08091E20050 +:101BA00084FF2CC080E189BD82E189BD09B400FEBB +:101BB000FDCF8091D8008F7D8093D8008091E10087 +:101BC0008F7E8093E1008091E2008F7E8093E2001F +:101BD0008091E20081608093E2008091E20188239D +:101BE00011F084E007C08091E30087FD02C081E02E +:101BF00001C083E08093E6010E94F3098091E10037 +:101C000083FF29C08091E20083FF25C08091E1001D +:101C1000877F8093E10082E08093E6011092E201E9 +:101C20008091E1008E7F8093E1008091E2008E7FC1 +:101C30008093E2008091E20080618093E20042E0C4 +:101C400060E080E00E94690C8091F00088608093E1 +:101C5000F0000E94F109FF91EF91BF91AF919F9128 +:101C60008F917F916F915F914F913F912F910F9045 +:101C70000FBE0F901F9018951F920F920FB60F92E4 +:101C800011242F933F934F935F936F937F938F9381 +:101C90009F93AF93BF93CF93DF93EF93FF93C09145 +:101CA000E900CF708091EC00D82FD17080FDD0E892 +:101CB0001092E9008091F000877F8093F000789483 +:101CC0000E94800E1092E9008091F000886080935D +:101CD000F000CD2BCF70C093E900FF91EF91DF9121 +:101CE000CF91BF91AF919F918F917F916F915F91B4 +:101CF0004F913F912F910F900FBE0F901F9018950D +:101D00001F93CF93DF93CDB7DEB7AA970FB6F894A2 +:101D1000DEBF0FBECDBFE7EEF1E088E08E0F909101 +:101D2000F10091938E13FBCF0E94040A8091E8008A +:101D300083FF1FC18091E7019091E801492F50E096 +:101D40004A30510508F015C1FA01EA5AFF4F0C94C8 +:101D50006D22803881F0823809F00BC18091EB014F +:101D60008F708093E9008091EB0085FB882780F9D4 +:101D70001092E90006C08091E3019091E401911175 +:101D800082609091E800977F9093E8008093F10043 +:101D90001092F100C8C0282F2D7F09F0EAC08823D7 +:101DA00019F0823061F0E5C08091E901813009F0DD +:101DB000E0C0933009F080E08093E4012BC0809173 +:101DC000E901811127C08091EB018F7009F4D1C026 +:101DD0008093E9002091EB0020FF1CC0933021F498 +:101DE0008091EB00806214C09091EB009061909321 +:101DF000EB0021E030E0A90102C0440F551F8A9595 +:101E0000E2F74093EA001092EA008091EB008860CC +:101E10008093EB001092E9008091E800877F86C0F4 +:101E20008111A7C01091E9011F778091E3008078AC +:101E3000812B8093E3008091E800877F8093E80006 +:101E40000E949E0C8091E80080FFFCCF8091E3000F +:101E500080688093E300111102C082E001C083E03A +:101E60008093E60186C08058823008F082C080915D +:101E7000E9019091EA018C3D53E0950779F583E003 +:101E80008A838AE289834FB7F894DE01139620E0B3 +:101E90003EE051E2E32FF0E050935700E49120FF41 +:101EA00003C0E295EF703F5FEF708E2F90E0EA3055 +:101EB00010F0C79601C0C0968D939D932F5F24317B +:101EC00049F74FBF8091E800877F8093E8006AE27E +:101ED00070E0CE0101960E94A50B14C0AE014F5FC9 +:101EE0005F4F6091EB010E94EC0ABC01009709F47E +:101EF00040C09091E800977F9093E80089819A8193 +:101F00000E94080C8091E8008B778093E80031C034 +:101F1000803879F58091E800877F8093E800809190 +:101F2000E2018093F1008091E8008E778093E800D1 +:101F30000E949E0C1EC081111CC09091E90192303C +:101F4000C0F48091E800877F8093E8009093E201DD +:101F50000E949E0C8091E201811106C08091E300F5 +:101F600087FD02C081E001C084E08093E6010E9409 +:101F7000F5098091E80083FF0AC08091E800877F1F +:101F80008093E8008091EB0080628093EB00AA963A +:101F90000FB6F894DEBF0FBECDBFDF91CF911F917A +:101FA00008950895CF938091E6018823A1F0C09110 +:101FB000E900CF709091EC00892F817090FD80E84E +:101FC000C82B1092E9008091E80083FD0E94800EEA +:101FD000CF70C093E900CF910895909376018093DC +:101FE00075010895E0917501F0917601309721F027 +:101FF0000190F081E02D099480E00895E091750151 +:10200000F0917601309721F00280F381E02D099460 +:102010000895E0917501F0917601309721F00480E8 +:10202000F581E02D09940895209173013091740198 +:102030008217930771F09093740180937301E0917C +:102040007501F0917601309721F00680F781E02D3F +:1020500009940895209171013091720182179307BC +:1020600071F09093720180937101E0917501F0918C +:102070007601309721F00084F185E02D09940895D0 +:1020800008950C9440100E947C1B0E944F080E94EF +:10209000021C0C949C205F926F927F928F929F9271 +:1020A000AF92BF92CF92DF92EF92FF920F931F9366 +:1020B000CF93DF9300D000D01F92CDB7DEB70E9440 +:1020C000940892E8C92E91E0D92E04E010E0AA24E9 +:1020D000A394B12C502E802F0E9402094C01F601CE +:1020E000729062906F016826792661147104A1F4E0 +:1020F0000150110978F78FEF89838A831B820E9430 +:10210000851B8160782F9D838C8349815A816B81E7 +:102110008D810E94FB1038C08091CF0181FD0E940B +:102120000B092EE030E07501022E02C0EE0CFF1C00 +:102130000A94E2F7C70186219721892B09F12983A7 +:102140005A828E209F2091E0892809F490E09B8399 +:102150000E94851B8160782F9D838C8349815A81E1 +:102160006B818D810E94FB10000F111FF801E85850 +:10217000FE4F80819181E826F926F182E08204C039 +:102180002150310980F6B4CF0E94D91D10917701FA +:102190000E94F20F1817D1F00E94F20F809377017E +:1021A0000F900F900F900F900F90DF91CF911F9194 +:1021B0000F91FF90EF90DF90CF90BF90AF909F90E6 +:1021C0008F907F906F905F900C94FB070F900F9013 +:1021D0000F900F900F90DF91CF911F910F91FF9073 +:1021E000EF90DF90CF90BF90AF909F908F907F90B7 +:1021F0006F905F900895CF93DF93CDB7DEB72B97A5 +:102200000FB6F894DEBF0FBECDBF4F8358876987E6 +:102210007A878B87DE01119686E0FD0111928A95FF +:10222000E9F785E0FE01379601900D928A95E1F776 +:1022300049815A816B817C818D819E810E947217B8 +:102240002B960FB6F894DEBF0FBECDBFDF91CF91B6 +:102250000895CF93882309F4C2C0C82F823859F457 +:102260000E94F20F81FDBBC089E30E944C1A0E94BC +:10227000CF1A89E30CC0833879F40E94F20F80FDF5 +:10228000AEC083E50E944C1A0E94CF1A83E50E94DB +:10229000691ACF910C94CF1A843859F40E94F20F26 +:1022A00082FD9DC087E40E944C1A0E94CF1A87E4E9 +:1022B000EECF8CEF8C0F813A48F48C2F0E940420D3 +:1022C00081118DC08C2F0E944C1AE3CF80E28C0FBD +:1022D000883048F4C77081E001C0880FCA95EAF7DA +:1022E0000E94881AD6CF8BE58C0F833078F4C53ADC +:1022F00029F0C63A31F083E890E005C081E890E02B +:1023000002C082E890E0CF910C94141088E58C0F05 +:10231000833108F064C0C83A39F1C93A41F1CA3A88 +:1023200049F1CB3A51F1CC3A59F1CD3A61F1C03B88 +:1023300069F1CE3A71F1CF3A79F1C13B81F1C23BFB +:1023400089F1C33B91F1C43B99F1C53BA1F1C63B77 +:10235000A9F1C73BB1F1C83BB9F1C93BC1F1CA3BD7 +:10236000C9F180E090E038C082EE90E035C089EE9F +:1023700090E032C08AEE90E02FC085EB90E02CC058 +:1023800086EB90E029C087EB90E026C08CEC90E0D3 +:1023900023C08DEC90E020C083E891E01DC08AE866 +:1023A00091E01AC082E991E017C084E991E014C07D +:1023B00081E292E011C083E292E00EC084E292E0FA +:1023C0000BC085E292E008C086E292E005C087E299 +:1023D00092E002C08AE292E0CF910C942A10CF9151 +:1023E0000895882309F44BC0823859F40E94F20FF3 +:1023F00081FF45C089E30E944C1A0E94CF1A89E3ED +:102400000CC0833871F40E94F20F80FF38C083E55E +:102410000E944C1A0E94CF1A83E50E94691A0C94FC +:10242000CF1A843859F40E94F20F82FF28C087E443 +:102430000E944C1A0E94CF1A87E4EFCF9CEF980FAE +:10244000913A58F390E2980F983050F4877091E0E9 +:1024500001C0990F8A95EAF7892F0E948E1ADFCF63 +:102460009BE5980F933020F480E090E00C941410DA +:10247000885A833120F480E090E00C942A1008956B +:10248000882321F00E94881A0C94CF1A089588237B +:1024900021F00E948E1A0C94CF1A08957F928F9289 +:1024A0009F92AF92BF92CF92DF92EF92FF920F93E3 +:1024B0001F93CF93DF931F92CDB7DEB77C01C62E5B +:1024C000772EFC01058102950F70128111110E9477 +:1024D000A51A0E94451A882379F0112369F080E239 +:1024E0008C0D883048F082E00E942E1A0E94451A16 +:1024F00091E0D82ED92601C0D12CE72DE295EF70BE +:10250000F0E0E05AFF4F0C946D22872D807F072D5D +:102510000F70882311F00295007F112389F00023AA +:1025200009F499C180E28C0D883020F4802F0E943C +:10253000881A03C0802F0E94981A0E94CF1A8BC15C +:102540008C2D0E94F111002309F4C3C180E28C0D8F +:10255000883020F4802F0E948E1A03C0802F0E94A2 +:102560009E1A0E94CF1AB5C1872D807F972D9F702C +:10257000803211F4892F03C0892F8295807FCC206F +:1025800021F0F1E0CF16A1F01DC0112339F0002396 +:1025900019F1013009F50E94B81A9BC1002319F006 +:1025A000013009F496C189830E94BB1A898110C148 +:1025B000112321F0063008F08CC10EC0053008F060 +:1025C00088C106C1112359F0002331F0F70195812C +:1025D00090FF41C19F7095830E9440127AC10023F1 +:1025E00009F4F6C03EC1872D86958695837090E0EC +:1025F000009719F0019761F06CC1112321F08C2D27 +:10260000972D937002C080E090E00E94141061C189 +:10261000112321F08C2D972D937002C080E090E063 +:102620000E942A1056C18C2D112319F00E94E11C22 +:1026300002C00E94491D0E94CE1D4BC1872D837090 +:1026400009F052C0111145C18C2D82958695877075 +:10265000880F880F9C2D9F70892E912CA12CB12C56 +:10266000082E04C0880C991CAA1CBB1C0A94D2F723 +:10267000C4FE14C00FE010E020E030E0B901A80172 +:1026800004C0440F551F661F771F8A95D2F7CB01F0 +:10269000BA01609570958095909503C060E070E0F8 +:1026A000CB01272D26952695237030E02230310569 +:1026B00069F02330310589F0682979298A299B2915 +:1026C0002130310571F00E94BA1803C168297929B7 +:1026D0008A299B290E94D618FCC00E94BA18C501FD +:1026E000B4010E949E18F5C0112319F0872D817046 +:1026F00001C08695882309F4ECC08C2D82958695BF +:102700008770880F880F9C2D9F70892E912CA12C8B +:10271000B12C082E04C0880C991CAA1CBB1C0A945E +:10272000D2F7C4FE14C00FE010E020E030E0B901A1 +:10273000A80104C0440F551F661F771F8A95D2F762 +:10274000CB01BA01609570958095909503C060E0CB +:1027500070E0CB01272D269526952370422F50E05F +:102760004230510569F04330510589F068297929D3 +:102770008A299B294130510571F00E949419A9C002 +:10278000682979298A299B290E94B019A2C00E9430 +:102790009419C501B4010E9478199BC08C2D90E05A +:1027A000FC01E05EF109E531F10508F050C0E059A7 +:1027B000FF4F0C946D220C2D0F70872D8F711123FC +:1027C00021F00E941119802F07CF0E943219802F0B +:1027D0000E9447127EC0112341F0053008F079C0F5 +:1027E000872D8F710E94571974C0063008F071C090 +:1027F000F7CF112339F0872D8F710E94111969C00D +:102800001123C9F3872D8F710E94321962C01123E1 +:1028100029F0872D8F710E94FC185BC00E94F2186E +:1028200058C0112351F0172D1F71812F0E941119CB +:1028300063E0812F0E94251A4CC081E00E942E1A6D +:10284000023008F446C082E00E942E1A42C01123D2 +:1028500031F0002381F28C2D0E9429113AC000230F +:1028600089F28C2D0E94F11134C0472D4F706C2DD0 +:10287000C7010E9424040E9416182BC0111129C000 +:10288000472D4F7050E042305105B9F04CF44115DE +:10289000510581F041305105E1F40E94C42019C076 +:1028A0004330510569F04430510599F48C2D0E9454 +:1028B00016210FC00E94AD200CC00E94E02009C06C +:1028C0000E94F32006C0472D4F706C2DC7010E9457 +:1028D0006B07DD20F9F00E94211A80FD1BC0F70173 +:1028E00012820E941B1A0E941119C7010E9499149A +:1028F0000E941B1A0F90DF91CF911F910F91FF90B3 +:10290000EF90DF90CF90BF90AF909F908F907F908F +:102910000C9432190F90DF91CF911F910F91FF907E +:10292000EF90DF90CF90BF90AF909F908F907F906F +:1029300008950F931F93CF93DF93EC0188819981C2 +:102940002B813C81232BB9F09F3F11F48F3F99F0ED +:10295000CE010E943B04882371F0688179818A81CD +:102960000E94171A8C010E94CC190E949318B8017A +:10297000CE010E944E12DF91CF911F910F910895C9 +:102980000E94A51A0E94B51A0E947A1A0E94CF1AB4 +:102990000E947F1E0E94CE1D80E090E00E941410D5 +:1029A00080E090E00C942A100E94951A0C94C014B8 +:1029B0000E940C1A292F22952F7030E02C303105FF +:1029C0004CF42A3031056CF42250310922303105A3 +:1029D000A8F407C02C30310569F02F30310551F0D3 +:1029E0000DC0803F69F018F4803E40F409C0843F78 +:1029F00029F406C093FB882780F9089580E00895A4 +:102A000081E00895CF93DF9300D000D01F92CDB71F +:102A1000DEB70F900F900F900F900F90DF91CF9136 +:102A20000895CF93DF9300D000D000D0CDB7DEB7AC +:102A300026960FB6F894DEBF0FBECDBFDF91CF91C3 +:102A400008951F93CF93DF93C091820116E0809188 +:102A50008301C81799F0D0E01C9FF0011D9FF00D75 +:102A60001124EC57FE4F4081518162817381848132 +:102A700095810E9411152196C770E9CFDF91CF9102 +:102A80001F9108954091B4015091B5016091B60134 +:102A90007091B7018091B8019091B9010C94111512 +:102AA0008091B90182958F7009F054C08091B60170 +:102AB000882309F44FC080918201A0918301609125 +:102AC000B4017091B5014091B7015091B801B6E0E1 +:102AD0008A1709F43FC090E041155105C1F17F3FCD +:102AE00011F46F3FA1F1B89FF001B99FF00D1124CF +:102AF000EC57FE4F218172132AC02081621327C038 +:102B00002281211124C0238134812417350710F438 +:102B100021503109241B350B283C3105C0F420918C +:102B2000B9012F7020612093B90126E0289FF001A0 +:102B3000299FF00D1124E757FE4F80818F7080612F +:102B4000808384EB91E00E9499140C9421150196E6 +:102B50008770BECF0895CF92DF92EF92FF920F93CE +:102B60001F93CF93DF93CDB7DEB762970FB6F8947C +:102B7000DEBF0FBECDBF8C0185E0F801DE011D96E2 +:102B800001900D928A95E1F7D8014C9111965C91D4 +:102B9000119712966C9112971396CD90DC90149722 +:102BA0003091B4017091B5018091B7019091B80155 +:102BB000009709F46BC17F3F19F43F3F09F466C1E8 +:102BC000E090B601EE2009F4C0C02091B901C8160A +:102BD000D90628F0F601E81BF90BCF0104C0809557 +:102BE00090958C0D9D1DFF24F394883C910578F001 +:102BF000F12C207F09F0C6C07C2DD98AC88A89892A +:102C00000E94021584EB91E00E949914B1C0822FBA +:102C1000807F09F046C0751314C0341312C06111CF +:102C200010C02F7020612093B9010E94421584EBDF +:102C300091E00E9499148091B901D80115968C9366 +:102C40002EC0CD2819F15F3F11F44F3FF9F0F62E59 +:102C500061111CC0809182012091830136E08217AE +:102C600009F45AC090E0389FF001399FF00D11240B +:102C7000EC57FE4F7181571306C07081471303C094 +:102C80007281711103C001968770E9CFF62E662319 +:102C900009F418C18091B90181608093B901F12CC8 +:102CA00011C1751308C0341306C0611104C08091AE +:102CB000B901D801C3C04D875E878D859E856A8B1B +:102CC0000E94D8146A898823E1F16623D1F120910A +:102CD000B901822F82958F7090E0029774F08091F5 +:102CE000B4019091B50198878F831986DB86CA86D7 +:102CF0002C87CE0107960E94991486E0F801A4EB78 +:102D0000B1E001900D928A95E1F70E9450150E9462 +:102D10004215FF24F394D6C04D875E878D859E852E +:102D20000E940C1A292F22952F7030E02230310595 +:102D30000CF0BCC09F7009F0B6C0805E883008F40B +:102D4000C1C0C8010E949914E4CFC816D90608F47E +:102D500053C0F601E81BF90BCF01883C910508F43C +:102D600050C0F12C7C2DD98AC88A89890E9402150D +:102D7000E4EBF1E086E0DF011D928A95E9F70E941D +:102D80004215A0C0751314C0341312C0611110C0D5 +:102D90008091B901F8018583C8010E94991486E0E9 +:102DA000E4EBF1E0DF011D928A95E9F7FE2C8AC081 +:102DB0004D875E878D859E856A8B0E94D8146A89AF +:102DC000882309F4BECF662309F4BBCF2091B90153 +:102DD000822F82958F7090E002970CF48ECF8091B5 +:102DE000B4019091B5019A8389831B82DD82CC82E4 +:102DF0002E83CE0101967FCF809590958C0D9D1DE1 +:102E0000ACCFF62E662309F49CCF75132EC0341375 +:102E10002CC02091B90120FD1FC0822F82958F7098 +:102E2000D9F0D80115962C9315978F3049F08F5F04 +:102E3000982F9295907F822F8F70892B15968C9367 +:102E4000C8010E94991486E0F801A4EBB1E001905A +:102E50000D928A95E1F793CF86E0F801A4EBB1E0FB +:102E600001900D928A95E1F72DC04D875E878D8583 +:102E70009E850E94D814811140CF8091B901816054 +:102E80008093B901C8010E9499141CC0662309F4FB +:102E900058CF4D875E878D859E850E94D8148823E4 +:102EA00009F44FCF2ACF811148CF0CC0243031050F +:102EB0000CF047CF9F7009F440CFF8019581907FC7 +:102EC00009F03BCF8F2D62960FB6F894DEBF0FBE90 +:102ED000CDBFDF91CF911F910F91FF90EF90DF90C9 +:102EE000CF9008951F93CF93DF93CDB7DEB72C9784 +:102EF0000FB6F894DEBF0FBECDBF4F8358876987EA +:102F00007A878B879C87CE0107960E94AB15882312 +:102F100069F08F8198852A853B85232BF1F19F3FAE +:102F200009F063C08F3F09F060C037C086E0FE0142 +:102F30003796DE01119601900D928A95E1F76F8127 +:102F40007885EA85FB85309741F17F3F11F46F3F2B +:102F500021F12091830130E0C90101968770992702 +:102F60004091820150E08417950709F447C06983B6 +:102F70007A83FD83EC8396E0929FD001939FB00DFE +:102F80001124AC57BE4FFE01319601900D929A95D7 +:102F9000E1F7809383010E94211516E08091820160 +:102FA000909183018917C1F1189FC00111248C579A +:102FB0009E4F0E94AB15882379F1E09182011E9FFC +:102FC000F0011124EC57FE4F4081518162817381E1 +:102FD000848195810E9411158091820190E0019673 +:102FE0008770992780938201D9CF4F815885698551 +:102FF0007A858B859C850E941115CFCF0E94D414B1 +:103000001092830110928201E4EBF1E086E0DF018F +:103010001D928A95E9F7C1CF2C960FB6F894DEBFC2 +:103020000FBECDBFDF91CF911F910895EF92FF9218 +:103030000F931F93CF93DF938C01009709F46CC01B +:10304000F12CEE24E394E8012196F8018491843771 +:1030500040F4843008F051C0813081F0823019F1A1 +:103060005BC0853709F444C0A8F19CE7980F9037FE +:1030700008F052C08F770E94F11141C00E5F1F4FC0 +:10308000FE01C49180E28C0F883048F4C7708E2D09 +:1030900001C0880FCA95EAF70E94A81A14C08C2FA5 +:1030A0000E9429112DC00E5F1F4FFE01C49180E2C6 +:1030B0008C0F883058F4C7708E2D01C0880FCA95C8 +:1030C000EAF70E94AE1A0E94CF1A1AC08C2F0E94F3 +:1030D000F11116C00E5F1F4FFE01C491CC2381F089 +:1030E0008FE99FE00197F1F700C00000C150F6CFD3 +:1030F0000E5F1F4FFE01F49003C00E9429118E0144 +:103100008F2D882309F49FCFEFE9FFE03197F1F786 +:1031100000C000008150F5CFDF91CF911F910F913A +:10312000FF90EF90089508956093BE017093BF01E2 +:103130008093C0019093C1010C94C0140F931F930E +:103140000091BE011091BF012091C0013091C101D9 +:10315000DC01CB01802B912BA22BB32B8093BE01E2 +:103160009093BF01A093C001B093C1011F910F9133 +:103170000C94C0140F931F930091BE011091BF01D6 +:103180002091C0013091C101DC01CB01802391234A +:10319000A223B3238093BE019093BF01A093C001EB +:1031A000B093C1011F910F910C94C0140F931F9302 +:1031B0000091BE011091BF012091C0013091C10169 +:1031C000DC01CB0180279127A227B3278093BE0182 +:1031D0009093BF01A093C001B093C1011F910F91C3 +:1031E0000C94C0141092BA011092BB011092BC0151 +:1031F0001092BD010C94C01441E050E060E070E01A +:1032000004C0440F551F661F771F8A95D2F740935D +:10321000BA015093BB016093BC017093BD010C9443 +:10322000C01441E050E060E070E004C0440F551F5E +:10323000661F771F8A95D2F78091BA019091BB01E2 +:10324000A091BC01B091BD01482B592B6A2B7B2B5F +:103250004093BA015093BB016093BC017093BD01D0 +:103260000C94C01441E050E060E070E004C0440FF2 +:10327000551F661F771F8A95D2F740955095609528 +:1032800070958091BA019091BB01A091BC01B09161 +:10329000BD01482359236A237B234093BA015093ED +:1032A000BB016093BC017093BD010C94C01441E05C +:1032B00050E060E070E004C0440F551F661F771FA8 +:1032C0008A95D2F78091BA019091BB01A091BC017F +:1032D000B091BD01482759276A277B274093BA013F +:1032E0005093BB016093BC017093BD010C94C0145A +:1032F0000F931F930091BA011091BB012091BC0163 +:103300003091BD01DC01CB01802B912BA22BB32B83 +:103310008093BA019093BB01A093BC01B093BD010F +:103320001F910F910C94C0140F931F930091BA0139 +:103330001091BB012091BC013091BD01DC01CB019A +:1033400080239123A223B3238093BA019093BB01DE +:10335000A093BC01B093BD011F910F910C94C014B8 +:103360000F931F930091BA011091BB012091BC01F2 +:103370003091BD01DC01CB0180279127A227B32723 +:103380008093BA019093BB01A093BC01B093BD019F +:103390001F910F910C94C0140895CF92DF92EF9279 +:1033A000FF920F931F93CF93DF938C01C090BE01C8 +:1033B000D090BF01E090C001F090C1018091BA01AE +:1033C0009091BB01A091BC01B091BD01C82AD92A3E +:1033D000EA2AFB2ACFE1D0E0D701C6010C2E04C0B7 +:1033E000B695A795979587950A94D2F780FF06C062 +:1033F000B8018C2F0E94CA05019721F4219760F72C +:1034000080E001C08C2FDF91CF911F910F91FF9031 +:10341000EF90DF90CF900895CF93DF93EC010E945F +:10342000CD19BE010E94CA05DF91CF910895CB014D +:103430000E940C1A08958091C20185958595859505 +:1034400008958091C2018770089598E0899F900146 +:103450001124262B2093C2010C9411192091C20132 +:10346000809582238093C201982F977069F430E091 +:10347000482F552747FD50952417350729F0859586 +:10348000859585950C94321908959091C201977095 +:1034900081E009F480E0089520910C0130910D0144 +:1034A000F90132969FEF40E05191581789F09F3F04 +:1034B00019F4511101C0942F4F5F4630A9F79F3F77 +:1034C00039F0F901E90FF11D97FDFA95828308950E +:1034D000089520910C0130910D01F9013296285F79 +:1034E0003F4F9081981301C010823196E217F30785 +:1034F000C1F7089581E090E0E0910C01F0910D0199 +:10350000E80FF91F1082019688309105A9F70895F8 +:103510009091CE01892B8093CE0108958095909152 +:10352000CE0189238093CE0108951092CE01089593 +:103530009091CD01892B8093CD0108958095909134 +:10354000CD0189238093CD0108951092CD01089576 +:103550009091CC01892B8093CC0108958095909116 +:10356000CC0189238093CC0108951092CC01089559 +:103570008093C30108951092C301089580910C01B6 +:1035800090910D01FC0131969C01285F3F4F80E036 +:10359000919191118F5FE217F307D1F70895E091B0 +:1035A0000C01F0910D018091CE018083E0910C011E +:1035B000F0910D0190818091CD01892B8083E09164 +:1035C0000C01F0910D0190818091CC01892B8083B9 +:1035D0008091C301882361F0E0910C01F0910D010D +:1035E0009081892B80830E94BE1A81111092C301A1 +:1035F00080910C0190910D010C94FE0F20E000973A +:1036000039F0AC0141505109842395232F5FF7CF46 +:10361000822F08958091E601843039F11092D00113 +:1036200020E488E190E00FB6F894A89580936000BC +:103630000FBE2093600080E00E94850380E00E941E +:10364000FB0783B7817F846083BF83B7816083BFBB +:103650007894889583B78E7F83BF88E10FB6F894FE +:1036600080936000109260000FBE0895089580E07E +:103670000E9485030E9411080E9494080E94361B34 +:103680000E940C0991E0811101C090E0892F0895FA +:103690000E94D41480E00E9485030E949C200E9416 +:1036A000F20F0C94FB071F920F920FB60F9211248A +:1036B0008F939F93AF93BF938091D001811113C0DB +:1036C0008091D1019091D201A091D301B091D40108 +:1036D0004196A11DB11D8093D1019093D201A09379 +:1036E000D301B093D401BF91AF919F918F910F906F +:1036F0000FBE0F901F90189582E084BD93E095BD9A +:103700009AEF97BD80936E0008952FB7F89480913B +:10371000D1019091D201A091D301B091D4012FBFDA +:103720000895CF92DF92EF92FF920F931F932FB7DE +:10373000F8944091D1015091D2016091D3017091E0 +:10374000D4012FBF6A017B01EE24FF248C0120E00D +:1037500030E0C016D106E206F30610F441505109DC +:103760009A01281B390BC9011F910F91FF90EF900F +:10377000DF90CF9008951F920F920FB60F921124F1 +:103780008F939F93AF93BF938091D1019091D2017A +:10379000A091D301B091D4010196A11DB11D8093D8 +:1037A000D1019093D201A093D301B093D401BF91E2 +:1037B000AF919F918F910F900FBE0F901F90189512 +:1037C0000E94EF0CF8942FEF87EA91E62150804099 +:1037D0009040E1F700C0000087E090EBDC018093AF +:1037E000F0019093F101A093F201B093F3019CE0FA +:1037F00088E10FB6F894A895809360000FBE90936F +:103800006000FFCF0E943A1C811102C00E941B1C65 +:103810000E94451C8093CF010E944D1C90E0909324 +:10382000E1018093E0010E94491C682F70E080E074 +:1038300090E00C9494186DEE7EEF80E090E00E9492 +:10384000A72260E082E090E00E94952260E083E0A1 +:1038500090E00E94952260E084E090E00E94952232 +:1038600060E085E090E00E94952260E086E090E0D4 +:103870000C94952280E090E00E948F2221E08D3E02 +:103880009E4F09F020E0822F089582E090E00C9492 +:10389000872283E090E00C94872284E090E00C94EF +:1038A0008722682F84E090E00C94952286E090E0D7 +:1038B0000C948722682F86E090E00C9495228091EA +:1038C000D70180FF0BC06091110185E0689FB001B6 +:1038D000112475956795759567952BC081FF09C073 +:1038E0006091110185E0689FB0011124759567957D +:1038F00020C082FF07C06091110185E0689FB00180 +:10390000112417C09091D8019923D1F06091100132 +:10391000961788F72091110185E0289F90011124C6 +:10392000929FA001939F500D112470E0CA010E9444 +:1039300059226038710540F46115710539F002C0F3 +:1039400065E070E0862F08958FE7089581E008957F +:103950008091D70180FF08C060910F0170E07595DC +:1039600067957595679521C081FF06C060910F012D +:1039700070E07595679519C082FF04C060910F01D2 +:1039800070E010C09091D8019923C1F060910E01B0 +:103990009617A0F780910F01899FC001112470E054 +:1039A0000E9459226038710528F46115710521F0D3 +:1039B000862F08958FE7089581E0089561E070E013 +:1039C000F4CF803F21F40E945F1C819504C0813FA9 +:1039D00029F40E945F1C8093DB010895823F21F44B +:1039E0000E945F1C819504C0833F29F40E945F1CE4 +:1039F0008093DA010895893F19F40E94A81C05C03C +:103A00008A3F31F40E94A81C81958093DC010895BF +:103A10008B3F21F40E94A81C819504C08C3F29F49F +:103A20000E94A81C8093DD010895843F21F48091B9 +:103A3000D901816017C0853F21F48091D90182604E +:103A400011C0863F21F48091D90184600BC0873F6B +:103A500021F48091D901886005C0883F31F48091BC +:103A6000D90180618093D90108958D3F21F480911F +:103A7000D70181600BC08E3F21F48091D701826015 +:103A800005C08F3F29F48091D70184608093D701CE +:103A90000895803F39F48091DB0187FF6CC010925C +:103AA000DB0169C0813F29F48091DB011816BCF36A +:103AB00062C09091DA01823F29F497FF5CC01092B6 +:103AC000DA0159C0833F19F41916CCF354C0893F69 +:103AD00041F48091DC0118160CF04DC01092DC010D +:103AE0004AC08A3F29F48091DC0187FF44C0F6CFA9 +:103AF0008B3F39F48091DD0187FF3DC01092DD01DD +:103B00003AC08C3F29F48091DD011816BCF333C014 +:103B1000843F21F48091D9018E7F17C0853F21F425 +:103B20008091D9018D7F11C0863F21F48091D90108 +:103B30008B7F0BC0873F21F48091D901877F05C01F +:103B4000883F31F48091D9018F7E8093D90113C0D1 +:103B50008D3F21F48091D7018E7F0BC08E3F21F4E1 +:103B60008091D7018D7F05C08F3F29F48091D701C7 +:103B70008B7F8093D7018091DA0181110EC08091F3 +:103B8000DB0181110AC08091DC01811106C08091A6 +:103B9000DD01811102C01092D801089589ED91E0F4 +:103BA0000E9409100E94851B9093D6018093D50135 +:103BB00008951F93CF93DF938091D5019091D60103 +:103BC0000E94911BAC019091D801992321F0209182 +:103BD000120130E006C0209113018AE0289F900175 +:103BE00011244217530708F486C08091DA01C0916E +:103BF000DB01D091DC011091DD01811107C0C11101 +:103C000076C0D11174C0111172C075C09F3F19F0F8 +:103C10009F5F9093D801181624F40E945F1C809334 +:103C2000DA018091DA0187FF05C00E945F1C81954F +:103C30008093DA011C1624F40E945F1C8093DB0140 +:103C40008091DB0187FF05C00E945F1C81958093F6 +:103C5000DB016091DA01662339F1C091DB01CC23ED +:103C600019F1772767FD7095872F972F0E946A219A +:103C700023E333E343E35FE30E94CE210E94372135 +:103C80006093DA016C2F772767FD7095872F972F48 +:103C90000E946A2123E333E343E35FE30E94CE21E2 +:103CA0000E9437216093DB011D1624F40E94A81C9A +:103CB0008093DC018091DC0187FF05C00E94A81C75 +:103CC00081958093DC01111624F40E94A81C809336 +:103CD000DD018091DD0187FF05C00E94A81C819550 +:103CE0008093DD01DF91CF911F910C94CE1D9F3FFA +:103CF00009F08ECF96CFDF91CF911F910895E9ED16 +:103D0000F1E085E0DF011D928A95E9F71092D80174 +:103D10001092D7010895833081F128F4813059F051 +:103D20008230D1F00895853009F449C0B8F1863069 +:103D300009F456C0089580911301262F30E0280F12 +:103D4000311D2F3F310524F4680F6093130108954E +:103D50008FEF80931301089580911201262F30E098 +:103D6000280F311D2F3F310524F4680F6093120195 +:103D700008958FEF80931201089580911101262FED +:103D800030E0280F311D2F3F310524F4680F609378 +:103D9000110108958FEF8093110108958091100112 +:103DA000262F30E0280F311D2F3F310524F4680FF6 +:103DB0006093100108958FEF809310010895809112 +:103DC0000F01262F30E0280F311D2F3F310524F43D +:103DD000680F60930F0108958FEF80930F0108958E +:103DE00080910E01262F30E0280F311D2F3F310525 +:103DF00024F4680F60930E0108958FEF80930E01F5 +:103E00000895833011F128F4813049F0823091F027 +:103E10000895853081F120F18630C1F108958091B7 +:103E20001301681720F4861B8093130108951092E4 +:103E30001301089580911201681720F4861B809366 +:103E400012010895109212010895809111016817CE +:103E500020F4861B8093110108951092110108959A +:103E600080911001681720F4861B8093100108953B +:103E700010921001089580910F01681720F4861B9D +:103E800080930F01089510920F01089580910E0103 +:103E9000681720F4861B80930E01089510920E017E +:103EA00008950F931F938B3109F46EC098F58B30F2 +:103EB00009F49BC0B8F4863009F44AC0873009F48D +:103EC00051C0853009F098C00E94D4140FEF13ED53 +:103ED00020E3015010402040E1F700C000000E94A4 +:103EE000E01B83C0803109F462C068F48E3009F0B1 +:103EF00083C08091CF0182FB222720F991E0922795 +:103F000090FB82F94AC0863109F46FC0893109F407 +:103F10006CC072C0853309F46AC068F4873209F452 +:103F200066C028F48E3108F467C08D514BC08932C9 +:103F300009F45DC061C0833438F48A3308F041C0AD +:103F4000883309F452C058C0833409F450C054C0B7 +:103F50008091CF01817F8E7F8093CF0181E080931C +:103F6000DF014BC09091CF01892F8095817080FB3C +:103F700090F929F0966098609093CF013EC0997FA8 +:103F8000977F9093CF0131C08091CF0181FB222791 +:103F900020F991E0922790FB81F98093CF0199233A +:103FA00021F18091CF0181608093CF011EC080916B +:103FB000CF0183FB222720F991E0922790FB83F920 +:103FC000ECCF895341E050E060E070E08A019B0152 +:103FD00004C0000F111F221F331F8A95D2F7C90199 +:103FE000B8010E9494180E94D41481E006C061E0D8 +:103FF00070E080E090E0F5CF80E01F910F91089590 +:1040000080E0089580E00895CF93C82F8091DF016C +:10401000813069F018F08230C9F184C0E0910C0160 +:10402000F0910D018081823209F07EC007C0E091DD +:104030000C01F0910D018081823261F48C2F0E947D +:104040000020811104C08C2F0E94511F1DC081E0EF +:1040500090E01AC08C2F0E940220811114C0C4313C +:1040600079F048F4CB3079F0C03109F061C082E0DA +:104070008093DF0108C0C93219F0C83321F058C05D +:104080001092DF0155C081E0817054C0C93291F1B6 +:1040900020F5C43179F1B0F4C73009F047C08EE1A2 +:1040A0008093130182E3809312018AE080931101CF +:1040B00084E18093100188E080930F0188E280936F +:1040C0000E0134C0CE51C63088F5EC2FF0E0E95C2B +:1040D000FE4F80818093DE0129C0CE34E9F020F4C8 +:1040E000CB3421F56AE013C0C13579F0C235F1F463 +:1040F00061E00DC08091DE01882319F01092DE018D +:1041000015C081E08093DF0115C061E006C0809199 +:10411000DE010E948B1E0AC06AE08091DE010E94CF +:10412000011F04C01092DF0180E004C081E002C0E2 +:1041300080E0AACFCF9108950E943A1C811102C05D +:104140000E941B1C0E94561C8093EF0180FF02C03E +:10415000869501C080E00C9485038091EF01982F33 +:104160009695292F30E0233031054CF49F5F990F4D +:104170008170892B81608093EF010E945A1C80918D +:10418000EF0186950C9485038091EF01982F969509 +:1041900091F09158990F8170892B8093EF018E7F58 +:1041A00091E009F490E08091EF0190FB80F9809319 +:1041B000EF010E945A1C8091EF0186950C948503B3 +:1041C0008091EF01982F909590FB80F98093EF01FB +:1041D0000E945A1C8091EF0180FF02C0869501C0A9 +:1041E00080E00C9485039091EF01892F86958F5F75 +:1041F0008F779170843028F4880F892B8093EF019A +:1042000002C09093EF018091EF018E7F91E009F45D +:1042100090E08091EF0190FB80F98093EF010E9484 +:104220005A1C8091EF0186950C9485032091EF0133 +:10423000922F96958927982F990F822F8170892B1D +:104240008093EF018E7F91E009F490E08091EF017F +:1042500090FB80F98093EF010E945A1C8091EF013E +:1042600086950C9485038091EF018695089504D07E +:104270006894B1118DC0089570D088F09F5790F068 +:10428000B92F9927B751A0F0D1F0660F771F881F7B +:10429000991F1AF0BA95C9F712C0B13081F077D0E2 +:1042A000B1E0089574C0672F782F8827B85F39F080 +:1042B000B93FCCF3869577956795B395D9F73EF4DA +:1042C00090958095709561957F4F8F4F9F4F089582 +:1042D000E89409C097FB3EF49095809570956195A0 +:1042E0007F4F8F4F9F4F9923A9F0F92F96E9BB2756 +:1042F0009395F695879577956795B795F111F8CFD2 +:10430000FAF4BB0F11F460FF1BC06F5F7F4F8F4F3C +:104310009F4F16C0882311F096E911C0772321F032 +:104320009EE8872F762F05C0662371F096E8862FCA +:1043300070E060E02AF09A95660F771F881FDAF721 +:10434000880F9695879597F9089557FD9058440FD3 +:10435000551F59F05F3F71F04795880F97FB991FE4 +:1043600061F09F3F79F087950895121613061406A1 +:10437000551FF2CF4695F1DF08C01616170618062E +:10438000991FF1CF86957105610508940895E89409 +:10439000BB2766277727CB0197F908950BD078C004 +:1043A00069D028F06ED018F0952309F05AC05FC08C +:1043B0001124EECFCADFA0F3959FD1F3950F50E003 +:1043C000551F629FF001729FBB27F00DB11D639FC7 +:1043D000AA27F00DB11DAA1F649F6627B00DA11D6D +:1043E000661F829F2227B00DA11D621F739FB00D13 +:1043F000A11D621F839FA00D611D221F749F332783 +:10440000A00D611D231F849F600D211D822F762F1B +:104410006A2F11249F5750408AF0E1F088234AF018 +:10442000EE0FFF1FBB1F661F771F881F9150504064 +:10443000A9F79E3F510570F014C0AACF5F3FECF37F +:10444000983EDCF3869577956795B795F795E79550 +:104450009F5FC1F7FE2B880F911D9695879597F961 +:10446000089597F99F6780E870E060E008959FEFF6 +:1044700080EC089500240A941616170618060906FB +:10448000089500240A9412161306140605060895CA +:10449000092E0394000C11F4882352F0BB0F40F452 +:1044A000BF2B11F460FF04C06F5F7F4F8F4F9F4F92 +:1044B000089597FB072E16F4009407D077FD09D0D6 +:1044C0000E94732207FC05D03EF4909581959F4F82 +:1044D0000895709561957F4F0895EE0FFF1F059029 +:1044E000F491E02D0994AA1BBB1B51E107C0AA1F40 +:1044F000BB1FA617B70710F0A61BB70B881F991F85 +:104500005A95A9F780959095BC01CD010895F99928 +:10451000FECF92BD81BDF89A992780B50895A8E194 +:10452000B0E042E050E00C94AF22262FF999FECF84 +:1045300092BD81BDF89A019700B4021639F01FBAF6 +:1045400020BD0FB6F894FA9AF99A0FBE0895019615 +:10455000272F0E9496220C949522DC01CB01FC01AE +:10456000F999FECF06C0F2BDE1BDF89A319600B4CC +:0E4570000D9241505040B8F70895F894FFCFD7 +:10457E00FF2209B0098D095909250901C40128082E +:10458E00140A321E1F0F03764F5F6F7F49694379FE +:10459E003929190959536366404D361306C60590DD +:1045AE00053C0555056E05010203040506070809BD +:0245BE000000FB +:00000001FF diff --git a/keyboards/atomic/keymaps/default/keymap.c b/keyboards/atomic/keymaps/default/keymap.c new file mode 100644 index 000000000..0ede363a1 --- /dev/null +++ b/keyboards/atomic/keymaps/default/keymap.c @@ -0,0 +1,234 @@ +#include "atomic.h" + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define ___T___ KC_TRNS +#define XXXXXXX KC_NO + +// Layer shorthand +#define _QW 0 +#define _CM 1 +#define _DV 2 +#define _LW 3 +#define _RS 4 +#define _FN 5 + +/* ROW 1 OPTIONS + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + * .- 2u ------------. + * | KEY . XXXXXX | + * '-----------------' + */ + +/* ROW 2 OPTIONS + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + * .- 2u ------------. .- 2u ------------. + * | KEY . XXXXXX | | KEY . XXXXXX | + * '-----------------' '-----------------' + */ + +/* ROW 3 OPTIONS + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + * .- 2u ------------. .- 2u ------------. + * | KEY . XXXXXX | | X | + * '-----------------' '-----------------' + * .- 2u ------------. + * | X | + * '-----------------' + */ + +/* ROW 4 OPTIONS + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + * .- 2u ------------. + * | KEY . XXXXXX | + * '-----------------' + * .- 2u ------------. .- 2u ------------. + * | KEY . XXXXXX | | KEY . XXXXXX | + * '-----------------' '-----------------' + * .- 2u ------------. + * | KEY . XXXXXX | + * '-----------------' + */ + +/* ROW 5 OPTIONS + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + * .- 1.25u --+ 1.25u ------- 1.25u +--- 1.25u --- 2u -------------- 1.25u ---- 1.25u ------ 1.25u +---- 1.25u . + * | X | X | X | X | X | X | X | X | X | + * '-----------------------------------------------------------------------------------------------------------' + * .- 2u ------------. + * | X | + * '-----------------' + * .--------------------- 6.25u ----------------------------. + * | X | + * '--------------------------------------------------------' + * .----------------------- 6.25u ---------------------------- 1.25u ---- 1.25u ---- 1.25u ------ 1.25u +-- 1.25u --. + * | X | X | X | X | X | X | + * '----------------------------------------------------------------------------------------------------------------' + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* QWERTY - MIT ENHANCED / GRID COMPATIBLE + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | ESC | A | S | D | F | G | H | J | K | L | ; | ' | XXXXXX . ENTER | PG UP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | BRITE | LCTRL | LALT | LGUI | RAISE | XXXXXX . SPACE | LOWER | RGUI | RALT | RCTRL | FN | LEFT | DOWN | RIGHT | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_QW] = { /* QWERTY */ + { KC_GRV, 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_BSPC, 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_DEL }, + { KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP }, + { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, + { M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_RS), KC_SPC, KC_SPC, MO(_LW), KC_RGUI, KC_RALT, KC_RCTL, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT }, + }, + +/* COLEMAK - MIT ENHANCED / GRID COMPATIBLE + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | Q | W | F | P | G | J | L | U | Y | ; | [ | ] | \ | DEL | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | ESC | A | R | S | T | D | H | N | E | I | O | ' | XXXXXX . ENTER | PG UP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | LSHIFT | Z | X | C | V | B | K | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | BRITE | LCTRL | LALT | LGUI | RAISE | XXXXXX . SPACE | LOWER | RGUI | RALT | RCTRL | FN | LEFT | DOWN | RIGHT | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_CM] = { /* COLEMAK */ + { KC_GRV, 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_BSPC, KC_BSPC }, + { KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, + { KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP }, + { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, + { M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_RS), KC_SPC, KC_SPC, MO(_LW), KC_RGUI, KC_RALT, KC_RCTL, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT }, + }, + +/* DVORAK - MIT ENHANCED / GRID COMPATIBLE + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | ' | , | . | P | Y | F | G | C | R | L | [ | ] | \ | DEL | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | ESC | A | O | E | U | I | D | H | T | N | S | / | XXXXXX . ENTER | PG UP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | LSHIFT | ; | Q | J | K | X | B | M | W | V | Z | XXXXXX . RSHIFT | UP | PG DN | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | BRITE | LCTRL | LALT | LGUI | RAISE | XXXXXX . SPACE | LOWER | RGUI | RALT | RCTRL | FN | LEFT | DOWN | RIGHT | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_DV] = { /* DVORAK */ + { KC_GRV, 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_BSPC, 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_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, + { KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, KC_ENT, KC_ENT, KC_PGUP }, + { 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_RSFT, KC_UP, KC_PGDN }, + { M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_RS), KC_SPC, KC_SPC, MO(_LW), KC_RGUI, KC_RALT, KC_RCTL, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT }, + }, + +/* LOWERED + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | | ! | @ | # | $ | % | ^ | & | * | ( | ) | | | | INS | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | XXXXXX . | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | XXXXXX . | | | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | XXXXXX . | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_LW] = { /* LOWERED */ + { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ }, + { _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, _______, _______, KC_INS }, + { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, ___T___, ___T___, _______ }, + { _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, ___T___, ___T___, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + }, + +/* RAISED + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | | | INS | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | XXXXXX . | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | XXXXXX . | | | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | XXXXXX . | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_RS] = { /* RAISED */ + { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ }, + { _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, KC_INS }, + { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, ___T___, ___T___, _______ }, + { _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, ___T___, ___T___, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + }, + +/* FUNCTION + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | NUM LK | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | SCR LK | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | F22 | F23 | F24 | PAUSE | PR SCR | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | CAP LK | MS BT5 | MS BT4 | MS BT3 | MS BT2 | SLOW M | FAST M | NEXT | VOL+ | VOL- | PLAY | | XXXXXX . | WHEEL+ | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | | | QWERTY | COLEMK | DVORAK | | | | | | | XXXXXX . | MOUS U | WHEEL- | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | XXXXXX . MS BT1 | | | | | | MOUS L | MOUS D | MOUS R | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_FN] = { /* FUNCTION */ + { KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ }, + { KC_SLCK, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_PAUS, KC_PSCR }, + { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U }, + { _______, _______, DF(_QW), DF(_CM), DF(_DV), _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, + { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, + }, +}; + +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); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboards/atomic/keymaps/michelle.c b/keyboards/atomic/keymaps/michelle.c new file mode 100644 index 000000000..2364c46a1 --- /dev/null +++ b/keyboards/atomic/keymaps/michelle.c @@ -0,0 +1,183 @@ +#include "atomic.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = { /* Dvorak */ + { 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_BSPC, KC_NO }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ + { 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_INS, KC_DEL }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ +// │ X │ │ X │ +// └─────────────────┘ └─────────────────┘ + { KC_CAPS, 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_NO, KC_PGUP }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ +// │ X │ │ X │ +// └─────────────────┘ └─────────────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ + { 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_NO, KC_UP, KC_PGDN }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ +// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ +// │ X │ │ X │ +// └─────────────────┘ └─────────────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ + { KC_LCTL, MO(1), KC_NO, KC_LALT, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_LGUI, MO(2), KC_LEFT, KC_DOWN, KC_RGHT }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐ +// │ X │ X │ X │ X │ X │ X │ X │ X │ X │ +// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ +// ┌───────────────────── 6.25u ────────────────────────────┐ +// │ X │ +// └────────────────────────────────────────────────────────┘ +// ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐ +// │ X │ X │ X │ X │ X │ X │ +// └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘ + }, + [1] = { /* Qwerty + F keys */ + { 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_BSPC, KC_NO }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ + { 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_INS, KC_DEL }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ +// │ X │ │ X │ +// └─────────────────┘ └─────────────────┘ + { KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_NO, KC_PGUP }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ +// │ X │ │ X │ +// └─────────────────┘ └─────────────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ + { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO, KC_UP, KC_PGDN }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ +// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ +// │ X │ │ X │ +// └─────────────────┘ └─────────────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ + { KC_LCTL, KC_TRNS, KC_NO, KC_LALT, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_LGUI, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐ +// │ X │ X │ X │ X │ X │ X │ X │ X │ X │ +// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ +// ┌───────────────────── 6.25u ────────────────────────────┐ +// │ X │ +// └────────────────────────────────────────────────────────┘ +// ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐ +// │ X │ X │ X │ X │ X │ X │ +// └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘ + }, + [2] = { /* Numpad + qwerty shortcut keys */ + { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_P7, KC_P8, KC_P9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_NO }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ + { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_P4, KC_P5, KC_P6, KC_L, KC_SLSH, KC_EQL, KC_INS, KC_DEL }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ +// │ X │ │ X │ +// └─────────────────┘ └─────────────────┘ + { KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_P1, KC_P2, KC_P3, KC_S, KC_MINS, KC_ENT, KC_NO, KC_PGUP }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ +// │ X │ │ X │ +// └─────────────────┘ └─────────────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ + { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_X, KC_B, KC_P0, KC_P0, KC_PENT, KC_Z, KC_RSFT, KC_NO, KC_UP, KC_PGDN }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ +// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ +// │ X │ │ X │ +// └─────────────────┘ └─────────────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ + { KC_LCTL, KC_TRNS, KC_NO, KC_LALT, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_LGUI, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐ +// │ X │ X │ X │ X │ X │ X │ X │ X │ X │ +// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ +// ┌───────────────────── 6.25u ────────────────────────────┐ +// │ X │ +// └────────────────────────────────────────────────────────┘ +// ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐ +// │ X │ X │ X │ X │ X │ X │ +// └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘ + }, +}; + +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: + return MACRODOWN(TYPE(KC_T), END); + break; + } + return MACRO_NONE; +}; diff --git a/keyboards/atomic/keymaps/pvc/Makefile b/keyboards/atomic/keymaps/pvc/Makefile new file mode 100644 index 000000000..278407e6c --- /dev/null +++ b/keyboards/atomic/keymaps/pvc/Makefile @@ -0,0 +1,15 @@ +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 = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # 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 = no # MIDI controls +AUDIO_ENABLE = yes # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend \ No newline at end of file diff --git a/keyboards/atomic/keymaps/pvc/compiled.hex b/keyboards/atomic/keymaps/pvc/compiled.hex new file mode 100644 index 000000000..c8cc6d8c0 --- /dev/null +++ b/keyboards/atomic/keymaps/pvc/compiled.hex @@ -0,0 +1,1700 @@ +:100000000C9483040C94C7040C94C7040C94C70488 +:100010000C94C7040C94C7040C94C7040C94C70434 +:100020000C94C7040C94C7040C94DB190C94AD1AFF +:100030000C9414280C94C7040C94C7040C94C704A3 +:100040000C94C7040C94F0050C94C7040C94C704DA +:100050000C94C7040C947C280C94C7040C94C7041B +:100060000C94C7040C94C7040C94C7040C94C704E4 +:100070000C94C7040C94C7040C94C7040C94C704D4 +:100080000C94940F0C94C7040C94C7040C94C704EC +:100090000C94C7040C94C7040C94C7040C94C704B4 +:1000A0000C94C7040C94C7040C94C7047A068D06FC +:1000B000A206B506BD06D306E906F206FC0607074A +:1000C00010071907210729073C073C073C073C0795 +:1000D0003C073C07370758063C076006690672066E +:1000E0001A1B3C1B2A1C3C1B2A1C811BA41B2A1C00 +:1000F000F91B0C1CFB1EFB1E2A1F2A1F691F891FD0 +:10010000DF20DF20941FDF2044204420AB20B420D8 +:10011000DF20D92051205120512051205120512041 +:100120005120512051205120512051205120512047 +:100130005120512061206F2076207D208720B02D16 +:10014000A62DB92D112E182E182E112E182E182E60 +:10015000DE2D182EE82DF22D182E182E182E182E02 +:10016000112E182E182E112E182ECB2D182E182EBB +:10017000FD2DFD2DFD2DFD2DFD2DFD2DFD2DFD2D2F +:10018000FD2D132E182E132E182E182E182E182E65 +:10019000182E182E182E182E182E182E182E132E34 +:1001A000182E182E112E902DFB2DFB2DFB2DFB2D27 +:1001B000FB2DFB2DFB2DFB2DFB2D132E0763423654 +:1001C000B79BD8A71A39685618AEBAAB558C1D3CE8 +:1001D000B7CC5763BD6DEDFD753EF6177231BF00AC +:1001E0000000803F08000000BE922449123EABAAE6 +:1001F000AA2ABECDCCCC4C3E00000080BEABAAAA41 +:10020000AA3E00000000BF000000803F0000000088 +:1002100000084178D3BB4387D1133D190E3CC3BDC1 +:100220004282AD2B3E68EC8276BED98FE1A93E4C6E +:1002300080EFFFBE01C4FF7F3F0000000000000010 +:10024000000000000000000000010204060A0F1771 +:10025000202C3A4A5D71879DB3C7DAE9F5FCFFFCB3 +:10026000F5E9DAC7B39D87715D4A3A2C20170F0A6A +:10027000060402010000000000000000000000224F +:1002800029001E001F00200021002200230024005E +:100290002500260027002D002E002A002A002B0012 +:1002A00014001A000800150017001C0018000C00AC +:1002B000120013002F00300031004C003900040000 +:1002C0001600070009000A000B000D000E000F00C9 +:1002D00033003400280028004B00E1001D001B0003 +:1002E0000600190005001100100036003700380024 +:1002F000E500E50052004E00E000E3000530E200BA +:1003000003302C002C000430C000E6006500E4003F +:10031000500051004F0029001E001F002000210046 +:100320002200230024002500260027002D002E0097 +:100330002A002A002B0014001A00090013000A00EA +:100340000D000F0018001C0033002F00300031009A +:100350004C002A00040015001600170007000B00CF +:10036000110008000C0012003400280028004B0087 +:10037000E1001D001B000600190005000E00100022 +:10038000360037003800E500E50052004E00E0007E +:10039000E3000530E20003302C002C000430C000E4 +:1003A000E6006500E400500051004F0029001E00E7 +:1003B0001F00200021002200230024002500260029 +:1003C00027002F0030002A002A002B0034003600BE +:1003D000370013001C0009000A00060015000F007A +:1003E00038002E0031004C003900040012000800D3 +:1003F00018000C0007000B001700110016002D005C +:10040000280028004B00E100330014000D000E000E +:100410001B00050010001A0019001D00E500E50092 +:1004200052004E00E000E3000530E20003302C00F3 +:100430002C000430C000E6006500E40050005100CC +:100440004F004600153017301830193000000000FA +:1004500053005400550000000000470048004800C9 +:1004600001003A003B003C003D00000000005F003E +:1004700060006100560001000100010049003900E0 +:100480003E003F0040004100000000005C005D00B5 +:100490005E0057000100010001004A000100420017 +:1004A0004300440045000000000059005A005B0072 +:1004B00058000100010001004D0001000100010091 +:1004C00001000100620062000100E60063005800C4 +:1004D000010001000100010001003A003B003C0066 +:1004E0003D003E003F004000410042004300440008 +:1004F000450001000100010021022F022F00260209 +:10050000220220022702300030021F0201000100F7 +:100510000100490001002302250257005600330064 +:1005200033022D02340034023500010001000100C5 +:100530004A000100310224021E0235023800310057 +:100540002E003602370238020100010001004D0082 +:100550000100010001000100010001000100010093 +:100560000100010001000100010001000100530031 +:100570003A003B003C003D003E003F00400041008F +:1005800042004300440045000100010047006800AC +:1005900069006A006B006C006D006E006F007000F7 +:1005A0007100720073000100480039000100010071 +:1005B0000100010001000100010001000100010033 +:1005C00001000100010046000100010001000100DE +:1005D0000100010001000100010001000100010013 +:1005E0000100A900A80001000100010001000100B4 +:1005F000AE00AE0001000100010001000100AC00EE +:10060000AA00AB000100FD00FE00FF00000000009A +:1006100000000000000000000000000000000000DA +:1006200000000000000000000000000000000000CA +:1006300000000000000000000000000000000000BA +:100640000000F800F700F600F500000000000000D0 +:10065000000000000000000000000000F9000100A0 +:10066000000000000000000000000000000000008A +:100670000000000001000100F000FA00010001008C +:10068000010001000100F400F4000100010001007C +:1006900001000100F200F100F30001000730083012 +:1006A00009300A300B300C300D3001000100010020 +:1006B00025502250010001000100003001300230BD +:1006C0000100010001000100010001000100010022 +:1006D0000100010001000100010001000100010012 +:1006E0000100010001000100010001000100010002 +:1006F0000100010001000100010001001430005060 +:100700000100063001000100010001000100265037 +:1007100001000100010001000100010001000100D1 +:10072000010001000100010001000100275001004B +:1007300028035400680065002000410074006F0029 +:100740006D006900630020004B00650079006200C5 +:100750006F0061007200640000002C034F00720003 +:10076000740068006F006C0069006E006500610035 +:10077000720020004B006500790062006F0061008C +:1007800072006400730000000403090409026D0094 +:10079000040100A0FA09040000010301010009217D +:1007A00011010001223F000705810308000A090426 +:1007B00001000103010200092111010001224D0085 +:1007C0000705820308000A09040200010300000073 +:1007D0000921110100012236000705830308000AE0 +:1007E0000904030001030000000921110100012296 +:1007F00039000705840310000112011001000000F8 +:1008000008EDFE190401000102000105010906A11D +:1008100001050719E029E7150025019508750181F3 +:1008200002050819012905950575019102950175C3 +:1008300003910105071900297715002501957875A1 +:10084000018102C005010980A1018502160100266F +:10085000B7001A01002AB700751095018100C00584 +:100860000C0901A1018503160100269C021A010052 +:100870002A9C02751095018100C005010902A101A1 +:100880000901A10005091901290515002501950592 +:100890007501810295017503810105010930093156 +:1008A0001581257F95027508810609381581257FF8 +:1008B000950175088106050C0A38021581257F957A +:1008C0000175088106C0C005010906A101050719C7 +:1008D000E029E7150025019508750181029501754C +:1008E00008810105081901290595057501910295F1 +:1008F00001750391010507190029FF150025FF95D2 +:100900000675088100C011241FBECFEFDAE0DEBFFC +:10091000CDBF04B603FE24C080917B0590917C0579 +:10092000A0917D05B0917E058730904BA740B04BDC +:10093000B9F410927B0510927C0510927D051092FF +:100940007E0514BE84B7877F84BF88E10FB6F89414 +:1009500080936000109260000FBEE0E0F8E309951C +:1009600014E0A0E0B1E0EEE0F7E602C005900D92E1 +:10097000A431B107D9F715E0A4E1B4E001C01D929C +:10098000AB37B107E1F70E9421170C9485330C9423 +:100990000000089581E008950C94C9040C94CA04E1 +:1009A0000C9441070E944F2F811105C0109216042C +:1009B000109215040DC080E290E00090170402C070 +:1009C000880F991F0A94E2F79093160480931504F8 +:1009D0001092140480916F00826080936F000895DC +:1009E0000E944F2F811105C0109216041092150419 +:1009F0000DC081E290E00090170402C0880F991F9B +:100A00000A94E2F7909316048093150482E0809391 +:100A1000140480916F00826080936F0008950E949B +:100A20004F2F811102C081E001C082E08093140445 +:100A3000089590916F0081E0911101C080E00895C8 +:100A40000E944F2F23E030E0281B3109220F209312 +:100A500018040895282F2F9880918000211108C034 +:100A6000877F8093800010928D0010928C001BC0B5 +:100A7000886080938000233018F08FEF9FEF0FC0C5 +:100A800083E090E0821B9109880F991F2FEF3FEFC1 +:100A9000A90102C0569547958A95E2F7CA0190933D +:100AA0008D0080938C000C9420050E941905811103 +:100AB00018C00E944F2F811105C010921604109289 +:100AC00015040DC081E290E00090170402C0880F69 +:100AD000991F0A94E2F790931604809315041092DC +:100AE000140490916F0082E0892780936F000E9428 +:100AF0001905811104C00E944F2F0C942A050895F6 +:100B0000CF93C82F0E94190540911704882329F01C +:100B100090916F009D7F90936F00C093170488237E +:100B2000D1F0209115043091160402C03695279516 +:100B30004A95E2F72F733327C90102C0880F991F26 +:100B4000CA95E2F7909316048093150480916F0084 +:100B5000826080936F00CF91089590911704292FA0 +:100B600030E0281B31092B30310510F080E002C045 +:100B7000981B892F0C94800590911704282F30E042 +:100B8000290F311D2B30310514F08AE001C0890F87 +:100B90000C9480050E94200584E080931704109235 +:100BA00014040895279A2F988FEF9FEF9093870052 +:100BB000809386008AE08093800089E180938100A1 +:100BC0000E94B82E0C94CA0585B7806885BF85B78A +:100BD000806885BF0E94D2056E9A769A0C94B607FB +:100BE0001F920F920FB60F9211242F933F938F9362 +:100BF0009F93EF93FF93E0911504F0911604CF01BA +:100C0000019690931604809315040090170402C077 +:100C1000F695E7950A94E2F7EF7380911404823019 +:100C200019F4E03251F404C0813039F4EF3329F47F +:100C300080916F008D7F80936F00F0E0E25CFD4F4C +:100C4000E49121E031E0E29FC001E39F900D112487 +:100C50000090180402C0969587950A94E2F7909345 +:100C60008D0080938C00FF91EF919F918F913F9128 +:100C70002F910F900FBE0F901F901895CF93DF9379 +:100C8000EC010E94702ABE0180E090E0DF91CF91DC +:100C90000C940A250F931F93462F50E04A315105BB +:100CA00008F0EAC0DC01FA01EA5AFF4F0C9449331C +:100CB00012968C91882309F4DFC00E945505DCC090 +:100CC00012968C91882309F4D7C081E00E94AD056B +:100CD000D3C012968C91882309F4CEC081E00E9483 +:100CE000BC05CAC012968C91882309F4C5C00E9425 +:100CF000CA05C2C012968C91882309F4BDC081E058 +:100D000090E00E943E060AE017ED23E23CE340E05B +:100D100064E070E080E792E012C012968C91882324 +:100D200009F4AAC082E090E00E943E060AE017EDB6 +:100D300023E23CE340E066E070E080E092E00E9465 +:100D400012139AC012968C91882309F495C084E0FE +:100D500090E00E943E060AE017ED23E23CE340E00B +:100D600068E070E080E392E0EACF12968C918823ED +:100D700011F083E007C083E013C012968C918823A2 +:100D800071F084E00E94872582E00E9480050E9425 +:100D9000F00447E063E084E00E94840D6DC084E0CD +:100DA0000E94A825F6CF12968C91882349F083E003 +:100DB0000E9480050E94D20485E00E9487255CC0C5 +:100DC00081E00E9480050E940F0585E00E94A82511 +:100DD00053C012968C91882309F44EC086E00E947D +:100DE000CD254AC012968C91882309F445C060E055 +:100DF00070E080E09EE308C012968C918823E1F1B8 +:100E000060E070E080E89EE30E94BC1335C012965B +:100E10008C91882389F160E070E080E09FE3F4CF5B +:100E200012968C91882341F160E070E080E49FE3AA +:100E3000EBCF12968C918823F9F08AE00E94CE13B2 +:100E40001BC012968C918823B9F08AE00E94C813C7 +:100E500013C012968C91882379F060E070E080E0F6 +:100E60009FE30E94BC1384E60E94C51305C012963E +:100E70008C9181110E940F2F80E090E01F910F91C3 +:100E800008950F931F93CF93C82F8FE39CE9019789 +:100E9000F1F700C000000E94A51381114BC0909192 +:100EA0001904C1FF0BC091FD14C000E010E09801CF +:100EB00040E062E070E080E591E03AC091FF09C057 +:100EC00000E010E0980140E062E070E080E491E032 +:100ED0002FC0C0FF0BC090FD14C000E010E09801CF +:100EE00040E062E070E080E391E022C090FF09C042 +:100EF00000E010E0980140E062E070E080E291E004 +:100F000017C0C2FF0BC092FD15C000E010E09801B1 +:100F100040E062E070E080E191E00AC092FF0AC028 +:100F200000E010E0980140E062E070E080E091E0D5 +:100F30000E941213C0931904CF911F910F9108952D +:100F40000F931F938FE39CE90197F1F700C0000016 +:100F50000AE017ED23E23CE340E06FE070E088ED4B +:100F600092E00E9412131F910F91089580E00E9459 +:100F7000DF130C94A0070F931F930AE017ED23E2F1 +:100F80003CE340E069E070E080E992E00E941213E7 +:100F90002FEF87EA91E6215080409040E1F700C0B2 +:100FA00000001F910F910C94C70E0F931F930AE03E +:100FB00017ED23E23CE340E065E070E088ED91E06E +:100FC0000E9412131F910F9108950F931F930AE02F +:100FD00017ED23E23CE340E067E070E080EA91E057 +:100FE0000E9412131F910F9108950F931F930AE00F +:100FF00017ED23E23CE340E068E070E080E691E03A +:101000000E9412131F910F91089581E008950C948E +:10101000050808950C94E40580916A04882309F476 +:1010200048C08091260490912704009779F40E948B +:10103000462890932704809326048091280490E00A +:10104000009771F48091290490E00AC00E94522810 +:1010500020915003309151032817390740F329C0DC +:101060000197880F991F880F991FFC01E65DFB4FC0 +:1010700060817181828193810E94FA0EE09128043F +:1010800084E0E89FF0011124E65DFB4F60817181EF +:10109000828193814FE050E00E94B2128091280437 +:1010A00090E001966091290470E00E9435338093AE +:1010B00028040C94CC0410926C040C94C70E81E0AC +:1010C00080936C040C94E5078F929F92AF92BF922D +:1010D000EF92FF920F931F93CF93DF93CDB7DEB7BD +:1010E000A3970FB6F894DEBF0FBECDBF7C01FC0105 +:1010F00000811181C8010E944326B8010E94660A3E +:101100008C01B7010E940708882309F4CCC1003282 +:10111000F0E51F0741F4F7018281882309F458C0E4 +:101120000E94AC13C0C10132F0E51F0741F4F70182 +:101130008281882309F44CC00E94B513B4C10232E5 +:10114000F0E51F0751F4F7018281882309F440C0BC +:101150000E94A8138111F0CFE3CF0332F0E51F07FF +:1011600039F4F7018281882399F10E945F089BC1BD +:101170000432F0E51F0739F4F7018281882341F139 +:101180000E945B0890C10532F0E51F0749F4F701A2 +:1011900082818823E9F080916C048111F1CFE5CF41 +:1011A0000632F0E51F0739F4F7018281882381F0C8 +:1011B0000E94E2130AC00732F0E51F0749F4F70165 +:1011C0008281882329F00E94ED130E94F5076BC1EC +:1011D00080916C04811105C0F70182818111CFC01B +:1011E00018C1003E110579F4F7018281882309F4C2 +:1011F0004DC00E94C70E81E080936B0410926A0478 +:101200001092290450C1023E110559F4F701828160 +:101210008823E1F10E94C70E10926B0410926A04B9 +:1012200042C1033E110591F4F7018281882371F1D7 +:101230000E94C70E10926B0481E080936A041092A2 +:10124000280410922704109226042DC1023511059E +:1012500059F4F7018281882309F425C18091500354 +:10126000909151030A970DC00135110579F4F701EA +:101270008281882309F417C1809150039091510312 +:101280000A9690935103809350030DC140915403EB +:1012900083E2EFE6F3E0DE01119601900D928A956C +:1012A000E1F7F701808121E030E02C0F3D1F280F8E +:1012B000311DC9012091520330915303FC01E20F0B +:1012C000F31F6081772767FD7095640F711D882774 +:1012D00077FD8095982F0E94573020E030E040E461 +:1012E00051E40E94BC2F4B015C01F701218185E094 +:1012F00090E0821B9109BC01882777FD8095982F8B +:101300000E9457309B01AC01C501B4010E94542FCB +:101310009B01AC0160E070E080E090E40E94CA3183 +:1013200020E030E04CED50E40E9467314B015C015D +:10133000F70182818823D1F04FE050E0C501B4016C +:101340000E94B21280916B048823A1F0809129043D +:1013500024E0829FF0011124E65DFB4F80829182A0 +:10136000A282B3828F5F8093290404C0C501B401B7 +:101370000E94FA0E0F3F110508F02ECF94C0809105 +:10138000250481111FC0043130E5130709F051C055 +:101390000E94090881E0809325040E9446289093CA +:1013A00024048093230410921C0410921E041092B3 +:1013B0001D041092200410921F0410922204109217 +:1013C000210471C080912304909124040E9452282A +:1013D000883C910570F480911C04E82FF0E0EE0F3A +:1013E000FF1FE35EFB4F118300838F5F80931C041C +:1013F0005AC0043880E5180721F00538104501F17E +:101400003AC0F7018281882341F010921A0482E0E9 +:101410001EC0043830E5130759F580911A04811174 +:1014200006C086E20E949F1D86E20E94671E82E03F +:101430001CC00438F0E51F0741F305381045D9F406 +:10144000F7018281882331F010921B0480E20E9410 +:10145000B61E29C080911B04811106C087E20E943C +:101460009F1D87E20E94671E80E20E94BD1E1BC076 +:101470000538104529F381E080931A0480931B04FA +:10148000C701A3960FB6F894DEBF0FBECDBFDF91A4 +:10149000CF911F910F91FF90EF90BF90AF909F90D1 +:1014A0008F900C94CE0480E0A3960FB6F894DEBF24 +:1014B0000FBECDBFDF91CF911F910F91FF90EF90A5 +:1014C000BF90AF909F908F90089508959FE0799F6F +:1014D000F00111249BE4899FE00DF11D1124E60F1A +:1014E000F11DEE0FFF1FE058FD4F85919491089577 +:1014F000880F991FFC01E250FF4F85919491089548 +:10150000880F991FFC01E258FD4F85919491089531 +:101510000F931F93CF93DF93EC01811521E3920783 +:10152000A0F5C11580E3D80708F0D7C0C83ED105A3 +:10153000D8F4C03ED10508F007C2C83AD10578F406 +:10154000C53AD10508F06AC0C130D10509F463C0BD +:1015500008F4F7C1C430D10508F0F6C1F2C1CB3BA5 +:10156000D10508F466C0EDC1C11590E2D90708F0B5 +:10157000AFC0C11521E0D20708F0E6C1C03FD105D8 +:1015800008F4DFC18E0110651FC2C03880E5D8079E +:1015900000F5C03790E5D90708F0A3C0C11520E5D4 +:1015A000D20709F4ACC050F4CE01905480319F4072 +:1015B00008F0C7C1DF708E01106A06C2C13080E535 +:1015C000D80709F4AEC0C43190E5D90708F4AFC01C +:1015D000B8C1C33820E5D20709F48EC050F4C13831 +:1015E00090E5D90709F482C008F083C000E011ED4E +:1015F000EBC1C03181E5D80708F4A3C1C11597E557 +:10160000D90708F436C1CE0190578115904108F0F2 +:1016100098C1DF7093C101E010E0D6C1C53AD10591 +:1016200009F494C1C63AD10509F093C102E810E467 +:10163000CBC1C83AD10509F48FC1C93AD10509F423 +:101640008EC1CA3AD10509F48DC1CB3AD10509F44E +:101650008CC1CC3AD10509F48BC1CD3AD10509F43E +:101660008AC1C03BD10509F489C1CE3AD10509F43C +:1016700088C1CF3AD10509F487C1C13BD10509F42E +:1016800086C1C23BD10509F485C1C33BD10509F42C +:1016900084C1C43BD10509F483C1C53BD10509F41C +:1016A00082C1C63BD10509F481C1C73BD10509F40C +:1016B00080C1C83BD10509F47FC1C93BD10509F4FC +:1016C0007EC1CA3BD10509F47DC100E014E47CC1B0 +:1016D000CE019F700E94800A78C1DD278E01106CB8 +:1016E00073C1CF70DD278E01146D6EC100E010ED67 +:1016F0006BC100E012ED68C100E013ED65C10E940E +:101700004A210E94C70E0E94BB078FEF94E32CE092 +:10171000815090402040E1F700C000000E94A128C5 +:1017200053C180914D05816080934D054DC10E944C +:10173000582A811102C00E94342A0E94752A90E022 +:1017400090937A0580937905C23080E5D80721F41B +:1017500080917905816086C0C43090E5D90721F475 +:101760008091790582607EC0C63020E5D20721F4E1 +:1017700080917905846076C0C83080E5D80719F477 +:101780008091790527C0CA3090E5D90721F480916E +:101790007905806167C0CC3020E5D20721F48091C3 +:1017A000790580625FC0CE3080E5D80721F4809152 +:1017B0007905806457C0C03190E5D90721F4809144 +:1017C000790580684FC0C23120E5D20729F48091A5 +:1017D00079058460886046C0C33080E5D80721F46D +:1017E000809179058E7F3EC0C53090E5D90721F400 +:1017F000809179058D7F36C0C73020E5D20721F46E +:10180000809179058B7F2EC0C93080E5D80719F407 +:101810008091790526C0CB3090E5D90721F48091DD +:1018200079058F7E1FC0CD3020E5D20721F480914D +:1018300079058F7D17C0CF3080E5D80721F48091DE +:1018400079058F7B0FC0C13190E5D90721F48091D4 +:1018500079058F7707C0C331D04531F48091790580 +:101860008B7F877F80937905809179050E94792A03 +:10187000ABC08D2F99278F70992781309105D9F4AE +:101880009E012370332702C0880F991F2A95E2F723 +:101890009C688E0144E0000F111F4A95E1F7002774 +:1018A0001370802B912B53E0CC0FDD1F5A95E1F77D +:1018B000C076DD272FC08230910531F4DC2FCC2794 +:1018C0008E01016F106A80C08330910569F4CE01EA +:1018D0008370992701E010E002C0000F111F8A9564 +:1018E000E2F7C8019C680FC084309105B9F4CE01BD +:1018F0008370992701E010E002C0000F111F8A9544 +:10190000E2F7C8019A6823E0CC0FDD1F2A95E1F7C2 +:10191000C07ED7708C010C2B1D2B56C085309105D5 +:1019200031F4DC2FCC278E01046F106A4DC006976E +:1019300009F04AC0CF71DD27DC2FCC278E01106261 +:1019400043C000E010E040C08E013EC001E810E45A +:101950003BC003E810E438C002EE14E435C009EEE1 +:1019600014E432C00AEE14E42FC005EB14E42CC0DA +:1019700006EB14E429C007EB14E426C00CEC14E4D5 +:1019800023C00DEC14E420C003E815E41DC00AE8F0 +:1019900015E41AC002E915E417C004E915E414C0FF +:1019A00001E216E411C003E216E40EC004E216E4FC +:1019B0000BC005E216E408C006E216E405C007E223 +:1019C00016E402C00AE216E4C801DF91CF911F912C +:1019D0000F9108959FE0799FF00111249BE4899F66 +:1019E000E00DF11D1124E60FF11DEE0FFF1FE05871 +:1019F000FD4F85919491803E9105E0F4803C9105E6 +:101A000058F58133910509F46FC048F48932910586 +:101A100009F463C08A32910509F46DC072C089333C +:101A20009105E9F082389105D1F08533910509F4EB +:101A30004DC067C0833E910581F138F4803E910529 +:101A4000B9F0823E9105D9F05CC0863E910561F106 +:101A5000873E9105A1F155C00E94780A0895209112 +:101A6000790520FD02C021FF4CC080EE90E049C006 +:101A70008091790580FFF9CF89E390E042C08091A1 +:101A8000790582FF0EC08091790584FF03C080E054 +:101A900090E037C083EE90E034C08091790582FFFA +:101AA000F2CF82EE90E02DC08091790583FF0BC0CC +:101AB0008091790584FDEBCF87EE90E022C0809184 +:101AC000790583FFF5CF86EE90E01BC08091790504 +:101AD00085FF07C089E290E014C08091790585FFF9 +:101AE000F9CF85E390E00DC08091790586FF07C0AE +:101AF0008AE290E006C08091790586FFF9CF81E304 +:101B000090E00E94880A0895CF92DF92EF92FF92B0 +:101B10000F931F9301E010E020E030E068017901AD +:101B200004C0CC0CDD1CEE1CFF1C8A95D2F704C04F +:101B3000000F111F221F331F6A95D2F70C291D2990 +:101B40002E293F29C0903005D0903105E090320514 +:101B5000F0903305C022D122E222F322842FC01656 +:101B6000D106E206F30641F41F910F91FF90EF902A +:101B7000DF90CF900C9487251F910F91FF90EF90ED +:101B8000DF90CF900C94A8250C94D004E82FF0E0BF +:101B9000EF55FC4F8081E82FEF70F0E082958F7059 +:101BA00021E030E0A90102C0440F551F8A95E2F7F9 +:101BB00040A308950F931F93CF93DF9385B7806859 +:101BC00085BF85B7806885BFC4E0D0E001E010E044 +:101BD000FE01EF55FC4F8081E82FEF70F0E021A16E +:101BE00082958F70A80102C0440F551F8A95E2F7B5 +:101BF000CA01822B81A38C2F0E94C60D219740F72A +:101C00008EE090E061E070E0FC01EE56FC4F208138 +:101C1000E22FEF70F0E042A122952F70DB0102C0AD +:101C2000AA0FBB1F2A95E2F79D01242B22A301973F +:101C300058F7DF91CF911F910F910C940A08EF9202 +:101C4000FF920F931F93CF93DF9307E714E0C4E055 +:101C5000EE24E394F12CD5E08C2F0E94C60D8EE08B +:101C600090E040E050E0FC01EE56FC4F6081E62F32 +:101C7000EF70F0E020A130E062956F7002C0359502 +:101C800027956A95E2F720FD09C09701082E02C04A +:101C9000220F331F0A94E2F7422B532B019718F7B8 +:101CA000F801929182918F018417950721F0518359 +:101CB0004083D09355038C2F0E94C60DC15060F60F +:101CC0008091550387FD1FC08150809355038F3F3E +:101CD00039F08FE99FE00197F1F700C0000013C0D1 +:101CE00080E090E0FC01E958FB4FDC01A359BB4FB9 +:101CF00018962D913C911997318720870297863F3E +:101D0000EFEF9E0779F70E940C0881E0DF91CF91F9 +:101D10001F910F91FF90EF900895E82FF0E0EE0FE4 +:101D2000FF1FE958FB4F80819181089508950F931B +:101D30001F93CF9301E814E0C0E0F80192918291E3 +:101D40008F010E94BE27C80FF4E007371F07A9F7CD +:101D50008C2FCF911F910F9108950E94582A8111C5 +:101D600002C00E94342A0E94872A809364053E9A0A +:101D7000809171008D7F8093710082E0809390004C +:101D80008AE18093910081E080938304089580919B +:101D90008304811102C00E94AD0E1092D3041092F0 +:101DA000D204809171008D7F8093710080919000AA +:101DB0008F73809390001092950410929404109267 +:101DC000CC041092CD041092CE041092CF04109245 +:101DD000CB041092CA04EAEAF4E0AAE9B4E0119252 +:101DE0001192119211921D921D9284E0EA3CF80723 +:101DF000B1F70895CF92DF92EF92FF920F931F9366 +:101E0000CF93DF9320919404222309F484C06B01C3 +:101E10007C0180918304811102C00E94AD0E0AEC06 +:101E200014E0C7E0D0E0A7019601F80192918291F9 +:101E3000729162918F010E94B82F811131C0FE0111 +:101E4000EE0FFF1FEE0FFF1FE655FB4F10821182B2 +:101E500012821382DE01AA0FBB1FA656BB4F11963A +:101E60001C921E92C730D105E9F02196448155811C +:101E700066817781408351836283738314821582E4 +:101E80001682178212968D919C91139711969C93AE +:101E90008E9313961C921E92129734961296E2CF4E +:101EA000219708F68091D2049091D304019797FD71 +:101EB00005C09093D3048093D20404C01092D3043D +:101EC0001092D2048091D2049091D3042091D00436 +:101ED0003091D1042817390724F01092D1041092C0 +:101EE000D004892BC1F4809171008D7F80937100A3 +:101EF000809190008F73809390001092CC04109288 +:101F0000CD041092CE041092CF041092CB04109204 +:101F1000CA0410929404DF91CF911F910F91FF900A +:101F2000EF90DF90CF9008951F920F920FB60F920F +:101F300011244F925F926F927F928F929F92AF92F5 +:101F4000BF92CF92DF92EF92FF922F933F934F93E6 +:101F50005F936F937F938F939F93AF93BF93CF9331 +:101F6000DF93EF93FF9380919404882309F49BC13E +:101F7000C091D204D091D3041C161D060CF093C15D +:101F8000409084045090850460908604709087048B +:101F900020E030E0A901C301B2010E9463311816AC +:101FA0000CF065C0C130D10509F452C08091D00455 +:101FB0009091D104BE010E9435337C019093D104ED +:101FC0008093D0048090960490909704A0909804F9 +:101FD000B090990420E030E040E85FE3C501B4012F +:101FE0000E94542F609396047093970480939804F2 +:101FF00090939904F701EE0FFF1FEE0FFF1FE655B8 +:10200000FB4FA301920160817181828193810E94C3 +:10201000BC2F20E030E040E05EE30E9467319B018E +:10202000AC01C501B4010E94633118168CF4C701DC +:102030000196BE010E9435339093D1048093D00461 +:10204000109296041092970410929804109299049A +:10205000E091D004F091D104EE0FFF1FEE0FFF1FAF +:10206000E655FB4F6081718182819381D0C0C09021 +:10207000CC04D090CD04E090CE04F090CF0420E0CA +:1020800030E0A901C701B6010E94B82F219788232B +:1020900009F4A2C0FE01EE0FFF1FEE0FFF1FE65571 +:1020A000FB4F80809180A280B380A5019401C7017D +:1020B000B6010E94B82F87FF31C0A501940160E0EE +:1020C00070E08CED93EC0E94BC2F20E030E040E407 +:1020D00051E40E94BC2F20E030E040E05FE30E942A +:1020E00067319B01AC0160E070E080E090E40E9409 +:1020F000CA319B01AC01C501B4010E9467319B014B +:10210000AC01C701B6010E94B82F87FF07C0A70125 +:10211000960160E070E08CED93E439C0A501940174 +:10212000C701B6010E94633118160CF055C0A50115 +:10213000940160E070E08CED93E40E94BC2F20E0FD +:1021400030E040E451E40E94BC2F20E030E040E069 +:102150005FE30E9467319B01AC0160E070E080E0CA +:1021600090E40E94CA319B01AC01C501B4010E94F8 +:1021700067319B01AC01C701B6010E94633118169B +:102180005CF5A701960160E070E08CED93EC0E9495 +:10219000BC2F20E030E040E451E40E94BC2F20E05E +:1021A00030E040E05FE30E9467319B01AC0160E0FA +:1021B00070E080E090E40E94CA319B01AC01C7014D +:1021C000B6010E9467316093CC047093CD04809374 +:1021D000CE049093CF0413C0FE01EE0FFF1FEE0F4D +:1021E000FF1FE655FB4F80819181A281B3818093CF +:1021F000CC049093CD04A093CE04B093CF0460910F +:10220000CC047091CD048091CE049091CF042091A4 +:102210008104309182042F3F4FEF340731F02F5F5C +:102220003F4F30938204209381040E94F8136B0186 +:102230007C0120E034E244EF51E40E94B82F87FF94 +:1022400008C086EFC82E88E2D82E84EFE82E81E4FD +:10225000F82E20E030E040E051E4C701B6010E94D2 +:1022600067319B01AC0160E074E284E79BE40E946B +:10227000BC2F6B017C010E94293070939700609302 +:102280009600209156033091570340915803509186 +:102290005903C701B6010E9467310E94293070932B +:1022A00099006093980080919504882309F433C1C4 +:1022B000C0909004D0909104E0909204F090930428 +:1022C00020E030E0A901C701B6010E946331181671 +:1022D000D4F580918104909182048F3F2FEF920773 +:1022E00029F001969093820480938104C701B6017E +:1022F0000E94F81320E030E040E051E40E94673192 +:102300009B01AC0160E074E284E79BE40E94BC2F77 +:102310006B017C010E9429307093970060939600B6 +:10232000209156033091570340915803509159031F +:10233000C701B6010E9467310E942930709399004D +:102340006093980008C01092970010929600109227 +:1023500099001092980060918A0470918B046F5FCD +:102360007F4F70938B0460938A0420919600309184 +:10237000970080E090E0232BF1F0C0919600D0917F +:1023800097000E9455306B017C01BE0180E090E017 +:102390000E9455309B01AC0160918C0470918D04BA +:1023A00080918E0490918F040E94BC2F20E03FEF1B +:1023B0004FE757E410C00E9455306B017C0120E0CC +:1023C00030EE4FEF54E460918C0470918D04809155 +:1023D0008E0490918F040E9467319B01AC01C7016C +:1023E000B6010E94633187FD96C0809188048F5F9B +:1023F0008093880490E020916005309161058217F8 +:102400009307A0F080916B05882319F0109288043F +:102410000DC0809171008D7F80937100809190003C +:102420008F7380939000109295047DC080918904F1 +:10243000C0918804811128C0C0906505D0906605C0 +:10244000E0906705F090680520E030E0A901C70141 +:10245000B6010E9463311816BCF481E080938904B0 +:10246000109290041092910410929204109293048E +:10247000C0928C04D0928D04E0928E04F0928F046E +:10248000C150C093880443C0109289041092820402 +:1024900010928104E0916205F091630548E0C49FC9 +:1024A000E00DF11D112480819181A281B38180937F +:1024B000900490939104A0939204B093930420E02D +:1024C00030E040E85EE364817581868197810E94F7 +:1024D00067316B017C0180915A03682F70E080E0C6 +:1024E00090E00E94553020E030E048EC52E40E9439 +:1024F000BC2F9B01AC01C701B6010E9467316093FC +:102500008C0470938D0480938E0490938F041092AA +:102510008B0410928A048091640580FD04C010929F +:10252000950410929404FF91EF91DF91CF91BF91A8 +:10253000AF919F918F917F916F915F914F913F915B +:102540002F91FF90EF90DF90CF90BF90AF909F9032 +:102550008F907F906F905F904F900F900FBE0F9075 +:102560001F901895CF92DF92EF92FF92CF93DF9357 +:102570006B017C01EA0180918304811102C00E94F9 +:10258000AD0E8091640580FF46C08091D204909189 +:10259000D30408970CF03FC0809171008D7F809329 +:1025A00071008091950481110E94C70E81E0809393 +:1025B0009404109282041092810420E030E0A9017A +:1025C000C701B6010E9463311816DCF48091D20471 +:1025D0009091D304FC01EE0FFF1FEE0FFF1FE65595 +:1025E000FB4FC082D182E282F382FC01EE0FFF1F1B +:1025F000E656FB4FD183C08301969093D30480931A +:10260000D20480917100826080937100809190006B +:10261000806880939000DF91CF91FF90EF90DF90E2 +:10262000CF9008958F929F92AF92BF92CF92DF92F8 +:10263000EF92FF920F931F93CF93DF93EC017B01F7 +:10264000D42E4801590180918304811102C00E9457 +:10265000AD0E8091640580FF6BC0809171008D7F0D +:10266000809371008091940481110E94C70E81E0D3 +:1026700080939504D0936305C0936205F092610541 +:10268000E0926005D0926B05809265059092660598 +:10269000A0926705B0926805109296041092970474 +:1026A000109298041092990410928804888199815C +:1026B000AA81BB818093900490939104A09392048B +:1026C000B093930420E030E040E85EE36C817D81CC +:1026D0008E819F810E9467316B017C0180915A033A +:1026E000682F70E080E090E00E94553020E030E0FC +:1026F00048EC52E40E94BC2F9B01AC01C701B6011B +:102700000E94673160938C0470938D0480938E04D3 +:1027100090938F0410928B0410928A048091710020 +:102720008260809371008091900080688093900017 +:10273000DF91CF911F910F91FF90EF90DF90CF909D +:10274000BF90AF909F908F900895809195040895C9 +:102750008091640581700895809164058160809303 +:1027600064050E948B2A0C94D507809164058E7FA6 +:10277000809364050C948B2A6093560370935703DF +:102780008093580390935903089580935A030895B2 +:1027900090915A03890F80935A03089590915A0398 +:1027A000292F30E0281B31092A30310524F48AE032 +:1027B00080935A030895981B90935A030895809329 +:1027C000D40408958091D40490E0019666E070E00E +:1027D0000E9435338093D40408958091D40490E00E +:1027E000019766E070E00E9435338093D404089529 +:1027F0008F929F92AF92BF92CF92DF92EF92FF9211 +:102800000F931F93CF93DF936B017C01C0918104E1 +:10281000D0918204BE0180E090E00E9455304B01CF +:102820005C01A701960160E070E08CE594E40E94F1 +:10283000BC2F9B01AC01C501B4010E9467310E940D +:1028400029302091D404233009F473C028F42223C2 +:1028500051F02130E9F02CC1243009F4A0C025301A +:1028600009F4E0C025C180E090E0A0E0BFE38093E0 +:10287000560390935703A0935803B09359031092B3 +:10288000840410928504109286041092870410C16B +:10289000109284041092850410928604109287048A +:1028A0006431710540F46A30710560F520E030E074 +:1028B00040E85EE32BC0693C710508F0AAC080E0E7 +:1028C00090E00E94553020E030E040EA51E40E9460 +:1028D000532F20E030E044E353E40E94BC2F9B01DF +:1028E000AC010E94673120E030E040E05EE30E94EE +:1028F00067319B01AC0160E070E080E09EE30E94E4 +:10290000532F44C020E030E040E05FE3C701B60150 +:102910000E9467316B017C0180E090E0A0E0BEE3A3 +:102920008093560390935703A0935803B093590391 +:10293000BFC01092840410928504109286041092F5 +:1029400087044AE0469F9001479F300D1124C9013A +:1029500068EB7BE00E942133BC016C5D754077FF22 +:1029600003C0719561957109882777FD8095982F2F +:102970000E9457302EE333EC4EE259E30E94673158 +:1029800020E030E040EC5EE30E94542F6093560359 +:1029900070935703809358039093590389C0109202 +:1029A0008404109285041092860410928704CE014C +:1029B00083709927892BE1F0BE016170772780E051 +:1029C00090E00E94553020E030E040E05EE30E945D +:1029D000673120E030E040E45FE30E94542F6093D1 +:1029E00056037093570380935803909359030CC078 +:1029F00080E090E0A0E0BFE38093560390935703FC +:102A0000A0935803B0935903C770DD27CD2B09F06D +:102A10004FC0109256031092570310925803109211 +:102A2000590346C0109284041092850410928604C3 +:102A30001092870400E010E020E03FE3009356038B +:102A40001093570320935803309359036739710546 +:102A500078F180E090E00E94553020E030E047E1DE +:102A600053E40E94532F20E030E04AE754E40E94F0 +:102A7000BC2F20E030E048E452E40E94673120E0BF +:102A800030E040EA51E40E9499300E942430660F01 +:102A9000771F660F771FFB01EA55FC4F20813181BC +:102AA00042815381C701B6010E9467316B017C01ED +:102AB000C701B601DF91CF911F910F91FF90EF9069 +:102AC000DF90CF90BF90AF909F908F9008958091AE +:102AD000E5040895CF93DF9300D01F92CDB7DEB702 +:102AE0009C0180917005843019F593E099833B83B4 +:102AF0002A839093E9008FEF9091E800815095FD33 +:102B000006C095ED9A95F1F700008111F5CF8091FF +:102B1000E80085FF0DC040E050E063E070E0CE01CA +:102B200001960E94CB178091E8008E778093E80091 +:102B30000F900F900F90DF91CF910895CF93DF9377 +:102B400000D01F92CDB7DEB720917005243021F55B +:102B500022E029839B838A8383E08093E9008FEFBF +:102B60009091E800815095FD06C095ED9A95F1F79A +:102B700000008111F5CF8091E80085FF0DC040E095 +:102B800050E063E070E0CE0101960E94CB17809187 +:102B9000E8008E778093E8000F900F900F90DF9100 +:102BA000CF910895209170052430F1F422E0209314 +:102BB000E9002FEF3091E800215035FD06C035EDDA +:102BC0003A95F1F700002111F5CF2091E80025FF9B +:102BD0000BC040E050E065E070E00E94CB178091B0 +:102BE000E8008E778093E8000895CF93DF93EC019F +:102BF00090917005943009F046C080916503882358 +:102C0000D9F0809166038823B9F09093E9008FEFA3 +:102C10009091E800815095FD06C095E19A95F1F7F5 +:102C200000008111F5CF8091E80085FF2CC040E0C5 +:102C300050E060E170E017C081E08093E9008FEF21 +:102C40009091E800815095FD06C095ED9A95F1F7B9 +:102C500000008111F5CF8091E80085FF14C040E0AD +:102C600050E068E070E0CE010E94CB178091E80050 +:102C70008E778093E80080E1FE01A5EDB4E001903D +:102C80000D928A95E1F7DF91CF91089580916F05BC +:102C9000811109C00E9460190E94BD198091E20053 +:102CA00084608093E200089510926F05089508955E +:102CB00008950C94092842E061EC81E00E94DA1842 +:102CC00042E061EC82E00E94DA1842E061EC83E0CD +:102CD0000E94DA1842E161EC84E00C94DA188091E9 +:102CE0007205833009F455C030F4813071F08230C0 +:102CF00009F48EC008958A3009F47AC08B3009F443 +:102D000060C0893009F09CC020C080917105813A73 +:102D100009F096C08091E800877F8093E800809159 +:102D2000750590917605892B21F460E185ED94E09D +:102D300003C060E080E090E070E00E94161880918F +:102D4000E8008B778093E8000895809171058132C7 +:102D500009F076C08091750590917605009719F07D +:102D6000039709F06DC08091E800877F8093E800A9 +:102D70008091E80082FD05C0809170058111F8CF37 +:102D80005FC08091F1008093E5048091E8008B772B +:102D900053C080917105813A09F052C08091750548 +:102DA00090917605892B09F04BC08091E800877FD0 +:102DB0008093E8008091E80080FFFCCF809165035C +:102DC00036C0809171058132D9F580917505909159 +:102DD0007605892BA9F58091E800877F8093E8002C +:102DE0000E940F1980917305809365030C944A210A +:102DF00080917105813221F58091E800877F809371 +:102E0000E8000E940F19809174058093E6040895EC +:102E100080917105813AA1F48091E800877F8093C9 +:102E2000E8008091E80080FFFCCF8091E604809369 +:102E3000F1008091E8008E778093E8000C940F19E0 +:102E4000089584B7877F84BF88E10FB6F894809394 +:102E50006000109260000FBE90E080E80FB6F8941A +:102E600080936100909361000FBE0E94B71C0E9486 +:102E700060190E94BD198091E20084608093E20095 +:102E800078940E94431C0E94B91C8BE593E00E9439 +:102E90005E1C80917005853069F40E94CA2780917C +:102EA0006E058823B1F30E94F827882391F30E94CE +:102EB000B517EFCF0E94C11CECCF292F3327233049 +:102EC0003105C9F064F42130310581F0223031053B +:102ED00009F043C08DE690E02CE837E042C0213293 +:102EE0003105F1F02232310541F137C082E190E045 +:102EF00029EF37E036C099278130910541F08230C3 +:102F0000910541F0892B49F5E8E8F7E005C0EAE5CD +:102F1000F7E002C0E0E3F7E0849190E09F0121C078 +:102F20006430D8F4E62FF0E0EE0FFF1FEE5FFB4FAA +:102F30002081318189E090E014C0643070F470E049 +:102F4000FB01EE0FFF1FE650FC4F20813181FB019A +:102F5000EA50FC4F808190E004C080E090E020E0E7 +:102F600030E0FA0131832083089580E189BD82E158 +:102F700089BD09B400FEFDCF8091D8008F7D80937C +:102F8000D8008091E00082608093E0008091E000B2 +:102F900081FDFCCF0895CF92DF92EF92FF920F93C5 +:102FA0001F93CF93DF93EC018B016A010E942E19CE +:102FB000811133C0C114D10439F0F60180819181AF +:102FC000081B190BC80FD91FE12CF12C0115110595 +:102FD00019F18091E80085FD16C08091E8008E7798 +:102FE0008093E800C114D10449F0F60180819181F9 +:102FF000E80EF91EF182E08285E00FC00E942E19D2 +:10300000882321F30AC089918093F10001501109AE +:10301000FFEFEF1AFF0ADACF80E0DF91CF911F9127 +:103020000F91FF90EF90DF90CF900895209177055A +:10303000309178052617370748F06115710539F486 +:103040002091E8002E772093E80001C0B90140E00C +:1030500061157105A9F120917005222309F443C07F +:10306000253009F442C02091E80023FD40C02091A2 +:10307000E80022FD32C02091E80020FFE9CF409116 +:10308000F3002091F20030E0342BFC01CF016115F8 +:10309000710559F02830310540F481918093F10099 +:1030A000615071092F5F3F4FF1CF41E0283031056A +:1030B00009F040E02091E8002E772093E800C8CF87 +:1030C0004111C9CF0AC080917005882361F0853015 +:1030D00061F08091E80083FD0AC08091E80082FFE2 +:1030E000F2CF80E0089582E0089583E0089581E0C2 +:1030F000089520917705309178052617370748F015 +:103100006115710539F42091E8002E772093E800CD +:1031100001C0B901FC0120E06115710591F18091B8 +:103120007005882309F440C0853009F43FC08091C0 +:10313000E80083FD3DC08091E80082FD2FC08091B2 +:10314000E80080FFE9CF2091F3008091F20090E049 +:10315000922B6115710559F08830910540F4249146 +:103160002093F1003196615071090196F2CF21E070 +:10317000089709F020E08091E8008E778093E800BE +:10318000CBCF2111CCCF0AC080917005882361F08C +:10319000853061F08091E80083FD0AC08091E800ED +:1031A00082FFF2CF80E0089582E0089583E00895E1 +:1031B00081E00895982F973058F59093E90098177B +:1031C00039F07091EC002091ED005091F00003C0B7 +:1031D000242F762F50E021FF19C03091EB003E7F65 +:1031E0003093EB003091ED003D7F3093ED00309156 +:1031F000EB0031603093EB007093EC002093ED0016 +:103200005093F0002091EE0027FF07C09F5FD3CFBF +:103210008F708093E90081E0089580E008958091A7 +:10322000710587FF11C08091E80082FD05C0809183 +:1032300070058111F8CF11C08091E8008B770BC029 +:1032400080917005882349F08091E80080FFF8CFD5 +:103250008091E8008E778093E80008952091E40043 +:103260003091E50095E64091EC00842F817040FF9D +:1032700022C08091E80080FD1CC0809170058823E9 +:1032800091F0853091F08091EB0085FD10C0409168 +:10329000E4005091E5004217530729F39A01915039 +:1032A00011F784E0089582E0089583E0089581E0B5 +:1032B000089580E008954091E80042FFDECF089530 +:1032C0000E94CE190E94D619E0EEF0E08081816064 +:1032D0008083E8EDF0E080818F77808319BCA7EDD3 +:1032E000B0E08C918E7F8C9380818F7E8083109252 +:1032F0006F0508950F931F93CF93DF930E94CE190C +:103300000E94D619C8EDD0E088818F7788838881A4 +:103310008068888388818F7D888319BC10927005AE +:1033200010926C0510926E0510926D0500EE10E083 +:10333000F80180818B7F808388818160888342E06F +:1033400060E080E00E94DA18E1EEF0E080818E7F9C +:103350008083E2EEF0E080818160808380818860FC +:103360008083F80180818E7F80838881806188835B +:10337000DF91CF911F910F910895E8EDF0E08081EA +:103380008F7E8083E7EDF0E080818160808384E040 +:1033900082BF81E080936F050C947A19E8EDF0E02C +:1033A00080818E7F80831092E20008951092DA006F +:1033B0001092E10008951F920F920FB60F92112400 +:1033C0002F933F934F935F936F937F938F939F932D +:1033D000AF93BF93EF93FF938091E10082FF0BC007 +:1033E0008091E20082FF07C08091E1008B7F809393 +:1033F000E1000E94421C8091DA0080FF1FC0809192 +:10340000D80080FF1BC08091DA008E7F8093DA00A5 +:103410008091D90080FF0DC080E189BD82E189BD26 +:1034200009B400FEFDCF81E0809370050E9446162E +:1034300005C019BC109270050E9454168091E100DD +:1034400080FF19C08091E20080FF15C08091E200EA +:103450008E7F8093E2008091E20080618093E200A1 +:103460008091D80080628093D80019BC85E0809359 +:1034700070050E9458168091E10084FF30C0809151 +:10348000E20084FF2CC080E189BD82E189BD09B4DE +:1034900000FEFDCF8091D8008F7D8093D800809171 +:1034A000E1008F7E8093E1008091E2008F7E809327 +:1034B000E2008091E20081608093E20080916C05DF +:1034C000882311F084E007C08091E30087FD02C0EB +:1034D00081E001C083E0809370050E9459168091BD +:1034E000E10083FF29C08091E20083FF25C0809125 +:1034F000E100877F8093E10082E080937005109265 +:103500006C058091E1008E7F8093E1008091E20064 +:103510008E7F8093E2008091E20080618093E200E0 +:1035200042E060E080E00E94DA188091F00088605C +:103530008093F0000E945716FF91EF91BF91AF91D9 +:103540009F918F917F916F915F914F913F912F91BB +:103550000F900FBE0F901F9018951F920F920FB6ED +:103560000F9211242F933F934F935F936F937F9309 +:103570008F939F93AF93BF93CF93DF93EF93FF937B +:10358000C091E900CF708091EC00D82FD17080FD00 +:10359000D0E81092E9008091F000877F8093F000DE +:1035A00078940E94F11A1092E9008091F0008860EE +:1035B0008093F000CD2BCF70C093E900FF91EF9185 +:1035C000DF91CF91BF91AF919F918F917F916F913B +:1035D0005F914F913F912F910F900FBE0F901F90D1 +:1035E00018951F93CF93DF93CDB7DEB7AA970FB689 +:1035F000F894DEBF0FBECDBFE1E7F5E088E08E0FA7 +:103600009091F10091938E13FBCF0E946F168091E1 +:10361000E80083FF1FC18091710590917205492FC9 +:1036200050E04A30510508F015C1FA01E059FF4F4A +:103630000C944933803881F0823809F00BC18091B5 +:1036400075058F708093E9008091EB0085FB8827DA +:1036500080F91092E90006C080916D0590916E0589 +:10366000911182609091E800977F9093E800809399 +:10367000F1001092F100C8C0282F2D7F09F0EAC098 +:10368000882319F0823061F0E5C0809173058130A4 +:1036900009F0E0C0933009F080E080936E052BC004 +:1036A00080917305811127C0809175058F7009F491 +:1036B000D1C08093E9002091EB0020FF1CC0933023 +:1036C00021F48091EB00806214C09091EB00906136 +:1036D0009093EB0021E030E0A90102C0440F551F98 +:1036E0008A95E2F74093EA001092EA008091EB009D +:1036F00088608093EB001092E9008091E800877F5A +:1037000086C08111A7C0109173051F778091E300D7 +:103710008078812B8093E3008091E800877F8093FD +:10372000E8000E940F198091E80080FFFCCF809193 +:10373000E30080688093E300111102C082E001C0C1 +:1037400083E08093700586C08058823008F082C084 +:1037500080917305909174058C3D53E0950779F540 +:1037600083E08A838AE289834FB7F894DE01139657 +:1037700020E03EE051E2E32FF0E050935700E49167 +:1037800020FF03C0E295EF703F5FEF708E2F90E057 +:10379000EA3010F0C79601C0C0968D939D932F5FBD +:1037A000243149F74FBF8091E800877F8093E8007C +:1037B0006AE270E0CE0101960E94161814C0AE01B4 +:1037C0004F5F5F4F609175050E945D17BC010097C8 +:1037D00009F440C09091E800977F9093E8008981B8 +:1037E0009A810E9479188091E8008B778093E80095 +:1037F00031C0803879F58091E800877F8093E800B8 +:1038000080916C058093F1008091E8008E77809321 +:10381000E8000E940F191EC081111CC09091730511 +:103820009230C0F48091E800877F8093E800909305 +:103830006C050E940F1980916C05811106C0809162 +:10384000E30087FD02C081E001C084E08093700541 +:103850000E945B168091E80083FF0AC08091E80017 +:10386000877F8093E8008091EB0080628093EB007B +:10387000AA960FB6F894DEBF0FBECDBFDF91CF91F1 +:103880001F9108950895CF93809170058823A1F02A +:10389000C091E900CF709091EC00892F817090FD6C +:1038A00080E8C82B1092E9008091E80083FD0E9417 +:1038B000F11ACF70C093E900CF9108959093EC0472 +:1038C0008093EB0408958091EB049091EC040895AB +:1038D000E091EB04F091EC04309721F00190F0813D +:1038E000E02D099480E00895E091EB04F091EC0460 +:1038F000309721F00280F381E02D09940895E09142 +:10390000EB04F091EC04309721F00480F581E02D78 +:10391000099408952091E9043091EA0482179307ED +:1039200071F09093EA048093E904E091EB04F09144 +:10393000EC04309721F00680F781E02D099408957A +:103940002091E7043091E8048217930771F0909377 +:10395000E8048093E704E091EB04F091EC043097E5 +:1039600021F00084F185E02D0994089508950C94C8 +:10397000B61C0E943D280E94DA0D0E9407290C9473 +:10398000B82E5F926F927F928F929F92AF92BF926A +:10399000CF92DF92EF92FF920F931F93CF93DF931B +:1039A00000D000D01F92CDB7DEB70E941F0E98EF57 +:1039B000C92E94E0D92E04E010E0AA24A394B12CDF +:1039C000502E802F0E948D0E4C01F6017290629055 +:1039D0006F016826792661147104A1F40150110960 +:1039E00078F78FEF89838A831B820E944628816043 +:1039F000782F9D838C8349815A816B818D810E94B0 +:103A0000711D38C080914D0581FD0E94960E2EE0FB +:103A100030E07501022E02C0EE0CFF1C0A94E2F7A2 +:103A2000C70186219721892B09F129835A828E208B +:103A30009F2091E0892809F490E09B830E9446280A +:103A40008160782F9D838C8349815A816B818D8120 +:103A50000E94711D000F111FF801E251FB4F808180 +:103A60009181E826F926F182E08204C021503109D3 +:103A700080F6B4CF0E940A2C1091ED040E94681CBD +:103A80001817D1F00E94681C8093ED040F900F90DE +:103A90000F900F900F90DF91CF911F910F91FF909A +:103AA000EF90DF90CF90BF90AF909F908F907F90DE +:103AB0006F905F900C94C40D0F900F900F900F902B +:103AC0000F90DF91CF911F910F91FF90EF90DF90BA +:103AD000CF90BF90AF909F908F907F906F905F90AE +:103AE0000895CF93DF93CDB7DEB72B970FB6F89439 +:103AF000DEBF0FBECDBF4F83588769877A878B871C +:103B0000DE01119686E0FD0111928A95E9F785E0C4 +:103B1000FE01379601900D928A95E1F749815A810D +:103B20006B817C818D819E810E94E8232B960FB64C +:103B3000F894DEBF0FBECDBFDF91CF910895CF9334 +:103B4000882309F4C2C0C82F823859F40E94681C27 +:103B500081FDBBC089E30E94C2260E948F2789E3B2 +:103B60000CC0833879F40E94681C80FDAEC083E5E8 +:103B70000E94C2260E948F2783E50E940427CF91CE +:103B80000C948F27843859F40E94681C82FD9DC0D4 +:103B900087E40E94C2260E948F2787E4EECF8CEF35 +:103BA0008C0F813A48F48C2F0E94202E81118DC0F9 +:103BB0008C2F0E94C226E3CF80E28C0F883048F41D +:103BC000C77081E001C0880FCA95EAF70E944827B4 +:103BD000D6CF8BE58C0F833078F4C53A29F0C63AFE +:103BE00031F083E890E005C081E890E002C082E80F +:103BF00090E0CF910C948A1C88E58C0F833108F0FB +:103C000064C0C83A39F1C93A41F1CA3A49F1CB3AEC +:103C100051F1CC3A59F1CD3A61F1C03B69F1CE3A5C +:103C200071F1CF3A79F1C13B81F1C23B89F1C33BDC +:103C300091F1C43B99F1C53BA1F1C63BA9F1C73B4A +:103C4000B1F1C83BB9F1C93BC1F1CA3BC9F180E050 +:103C500090E038C082EE90E035C089EE90E032C04E +:103C60008AEE90E02FC085EB90E02CC086EB90E0D0 +:103C700029C087EB90E026C08CEC90E023C08DEC4F +:103C800090E020C083E891E01DC08AE891E01AC06E +:103C900082E991E017C084E991E014C081E292E0EA +:103CA00011C083E292E00EC084E292E00BC085E294 +:103CB00092E008C086E292E005C087E292E002C08E +:103CC0008AE292E0CF910C94A01CCF9108958823B2 +:103CD00009F44BC0823859F40E94681C81FF45C02A +:103CE00089E30E94C2260E948F2789E30CC0833893 +:103CF00071F40E94681C80FF38C083E50E94C226D0 +:103D00000E948F2783E50E9404270C948F27843814 +:103D100059F40E94681C82FF28C087E40E94C226D2 +:103D20000E948F2787E4EFCF9CEF980F913A58F3CA +:103D300090E2980F983050F4877091E001C0990F8D +:103D40008A95EAF7892F0E944E27DFCF9BE5980FCF +:103D5000933020F480E090E00C948A1C885A8331E0 +:103D600020F480E090E00C94A01C0895882321F0BA +:103D70000E9448270C948F270895882321F00E94E1 +:103D80004E270C948F2708957F928F929F92AF9227 +:103D9000BF92CF92DF92EF92FF920F931F93CF9338 +:103DA000DF931F92CDB7DEB77C01C62E772EFC01C4 +:103DB000058102950F70128111110E9465270E94E2 +:103DC000BB26882379F0112369F080E28C0D8830BE +:103DD00048F082E00E94A4260E94BB2691E0D82EE3 +:103DE000D92601C0D12CE72DE295EF70F0E0E6581E +:103DF000FF4F0C944933872D807F072D0F70882348 +:103E000011F00295007F112389F0002309F499C174 +:103E100080E28C0D883020F4802F0E94482703C058 +:103E2000802F0E9458270E948F278BC18C2D0E94C3 +:103E3000671E002309F4C3C180E28C0D883020F492 +:103E4000802F0E944E2703C0802F0E945E270E9471 +:103E50008F27B5C1872D807F972D9F70803211F4F9 +:103E6000892F03C0892F8295807FCC2021F0F1E03B +:103E7000CF16A1F01DC0112339F0002319F1013034 +:103E800009F50E9478279BC1002319F0013009F43D +:103E900096C189830E947B27898110C1112321F05B +:103EA000063008F08CC10EC0053008F088C106C18C +:103EB000112359F0002331F0F701958190FF41C1A2 +:103EC0009F7095830E94B61E7AC1002309F4F6C044 +:103ED0003EC1872D86958695837090E0009719F0F6 +:103EE000019761F06CC1112321F08C2D972D9370F7 +:103EF00002C080E090E00E948A1C61C1112321F081 +:103F00008C2D972D937002C080E090E00E94A01C41 +:103F100056C18C2D112319F00E94122B02C00E9451 +:103F20007A2B0E94FF2B4BC1872D837009F052C062 +:103F3000111145C18C2D829586958770880F880F49 +:103F40009C2D9F70892E912CA12CB12C082E04C081 +:103F5000880C991CAA1CBB1C0A94D2F7C4FE14C07E +:103F60000FE010E020E030E0B901A80104C0440FE8 +:103F7000551F661F771F8A95D2F7CB01BA0160954E +:103F800070958095909503C060E070E0CB01272D7F +:103F900026952695237030E02230310569F02330D4 +:103FA000310589F0682979298A299B292130310531 +:103FB00071F00E94302503C1682979298A299B293B +:103FC0000E944C25FCC00E943025C501B4010E940E +:103FD0001425F5C0112319F0872D817001C0869535 +:103FE000882309F4ECC08C2D829586958770880F04 +:103FF000880F9C2D9F70892E912CA12CB12C082EFE +:1040000004C0880C991CAA1CBB1C0A94D2F7C4FEDD +:1040100014C00FE010E020E030E0B901A80104C0B6 +:10402000440F551F661F771F8A95D2F7CB01BA013F +:10403000609570958095909503C060E070E0CB012D +:10404000272D269526952370422F50E042305105AA +:1040500069F04330510589F0682979298A299B291B +:104060004130510571F00E940A26A9C068297929BA +:104070008A299B290E942626A2C00E940A26C501E1 +:10408000B4010E94EE259BC08C2D90E0FC01E05E07 +:10409000F109E531F10508F050C0E657FF4F0C94E7 +:1040A00049330C2D0F70872D8F71112321F00E9441 +:1040B0008725802F07CF0E94A825802F0E94BD1E34 +:1040C0007EC0112341F0053008F079C0872D8F7133 +:1040D0000E94CD2574C0063008F071C0F7CF1123BF +:1040E00039F0872D8F710E94872569C01123C9F38C +:1040F000872D8F710E94A82562C0112329F0872D7A +:104100008F710E9472255BC00E94682558C01123E0 +:1041100051F0172D1F71812F0E94872563E0812F99 +:104120000E949B264CC081E00E94A426023008F425 +:1041300046C082E00E94A42642C0112331F0002331 +:1041400081F28C2D0E949F1D3AC0002389F28C2D94 +:104150000E94671E34C0472D4F706C2DC7010E940E +:104160004A060E948C242BC0111129C0472D4F7084 +:1041700050E042305105B9F04CF44115510581F041 +:1041800041305105E1F40E94E02E19C04330510541 +:1041900069F04430510599F48C2D0E94322F0FC0E4 +:1041A0000E94C92E0CC00E94FC2E09C00E940F2F35 +:1041B00006C0472D4F706C2DC7010E94650ADD2097 +:1041C000F9F00E94972680FD1BC0F70112820E9421 +:1041D00091260E948725C7010E940F210E949126E7 +:1041E0000F90DF91CF911F910F91FF90EF90DF9093 +:1041F000CF90BF90AF909F908F907F900C94A82508 +:104200000F90DF91CF911F910F91FF90EF90DF9072 +:10421000CF90BF90AF909F908F907F9008950F9315 +:104220001F93CF93DF93EC01888199812B813C818F +:10423000232BB9F09F3F11F48F3F99F0CE010E94DC +:104240006408882371F0688179818A810E948D26B3 +:104250008C010E9442260E940925B801CE010E94CD +:10426000C41EDF91CF911F910F9108950E94652781 +:104270000E9475270E943A270E948F270E94B02C27 +:104280000E94FF2B80E090E00E948A1C80E090E07A +:104290000C94A01C0E9455270C9436210E94822663 +:1042A000292F22952F7030E02C3031054CF42A3024 +:1042B00031056CF42250310922303105A8F407C0D1 +:1042C0002C30310569F02F30310551F00DC0803FA1 +:1042D00069F018F4803E40F409C0843F29F406C018 +:1042E00093FB882780F9089580E0089581E0089580 +:1042F000CF93DF9300D000D01F92CDB7DEB70F90E1 +:104300000F900F900F900F90DF91CF910895CF9362 +:10431000DF9300D000D000D0CDB7DEB726960FB621 +:10432000F894DEBF0FBECDBFDF91CF9108951F93EC +:10433000CF93DF93C091F80416E08091F904C81779 +:1043400099F0D0E01C9FF0011D9FF00D1124E65064 +:10435000FB4F4081518162817381848195810E94EC +:1043600087212196C770E9CFDF91CF911F910895E2 +:1043700040912A0550912B0560912C0570912D05D7 +:1043800080912E0590912F050C94872180912F0507 +:1043900082958F7009F054C080912C05882309F410 +:1043A0004FC08091F804A091F90460912A057091A2 +:1043B0002B0540912D0550912E05B6E08A1709F482 +:1043C0003FC090E041155105C1F17F3F11F46F3FAF +:1043D000A1F1B89FF001B99FF00D1124E650FB4FF9 +:1043E000218172132AC02081621327C022812111EA +:1043F00024C0238134812417350710F4215031095A +:10440000241B350B283C3105C0F420912F052F705B +:10441000206120932F0526E0289FF001299FF00DB1 +:104420001124E150FB4F80818F70806180838AE28C +:1044300095E00E940F210C94972101968770BECFC2 +:104440000895CF92DF92EF92FF920F931F93CF9335 +:10445000DF93CDB7DEB762970FB6F894DEBF0FBE1D +:10446000CDBF8C0185E0F801DE011D9601900D9213 +:104470008A95E1F7D8014C9111965C9111971296AB +:104480006C9112971396CD90DC90149730912A0579 +:1044900070912B0580912D0590912E05009709F4C0 +:1044A0006BC17F3F19F43F3F09F466C1E0902C05D2 +:1044B000EE2009F4C0C020912F05C816D90628F0B7 +:1044C000F601E81BF90BCF0104C0809590958C0D87 +:1044D0009D1DFF24F394883C910578F0F12C207FFA +:1044E00009F0C6C07C2DD98AC88A89890E947821A2 +:1044F0008AE295E00E940F21B1C0822F807F09F0EF +:1045000046C0751314C0341312C0611110C02F704F +:10451000206120932F050E94B8218AE295E00E9435 +:104520000F2180912F05D80115968C932EC0CD2890 +:1045300019F15F3F11F44F3FF9F0F62E61111CC0E5 +:104540008091F8042091F90436E0821709F45AC0EA +:1045500090E0389FF001399FF00D1124E650FB4F99 +:104560007181571306C07081471303C072817111A6 +:1045700003C001968770E9CFF62E662309F418C1AF +:1045800080912F05816080932F05F12C11C1751347 +:1045900008C0341306C0611104C080912F05D801F2 +:1045A000C3C04D875E878D859E856A8B0E944E2194 +:1045B0006A898823E1F16623D1F120912F05822FAA +:1045C00082958F7090E0029774F080912A05909107 +:1045D0002B0598878F831986DB86CA862C87CE01A8 +:1045E00007960E940F2186E0F801AAE2B5E001904B +:1045F0000D928A95E1F70E94C6210E94B821FF24FE +:10460000F394D6C04D875E878D859E850E94822655 +:10461000292F22952F7030E0223031050CF0BCC0DC +:104620009F7009F0B6C0805E883008F4C1C0C80130 +:104630000E940F21E4CFC816D90608F453C0F60132 +:10464000E81BF90BCF01883C910508F450C0F12C10 +:104650007C2DD98AC88A89890E947821EAE2F5E00E +:1046600086E0DF011D928A95E9F70E94B821A0C07B +:10467000751314C0341312C0611110C080912F053E +:10468000F8018583C8010E940F2186E0EAE2F5E087 +:10469000DF011D928A95E9F7FE2C8AC04D875E875F +:1046A0008D859E856A8B0E944E216A89882309F434 +:1046B000BECF662309F4BBCF20912F05822F8295B0 +:1046C0008F7090E002970CF48ECF80912A05909124 +:1046D0002B059A8389831B82DD82CC822E83CE01B7 +:1046E00001967FCF809590958C0D9D1DACCFF62EB9 +:1046F000662309F49CCF75132EC034132CC020916F +:104700002F0520FD1FC0822F82958F70D9F0D80110 +:1047100015962C9315978F3049F08F5F982F9295AF +:10472000907F822F8F70892B15968C93C8010E94E1 +:104730000F2186E0F801AAE2B5E001900D928A957A +:10474000E1F793CF86E0F801AAE2B5E001900D927F +:104750008A95E1F72DC04D875E878D859E850E94E5 +:104760004E21811140CF80912F05816080932F05CC +:10477000C8010E940F211CC0662309F458CF4D8741 +:104780005E878D859E850E944E21882309F44FCF38 +:104790002ACF811148CF0CC0243031050CF047CF0F +:1047A0009F7009F440CFF8019581907F09F03BCFCD +:1047B0008F2D62960FB6F894DEBF0FBECDBFDF918E +:1047C000CF911F910F91FF90EF90DF90CF900895C0 +:1047D0001F93CF93DF93CDB7DEB72C970FB6F89426 +:1047E000DEBF0FBECDBF4F83588769877A878B871F +:1047F0009C87CE0107960E942122882369F08F8131 +:1048000098852A853B85232BF1F19F3F09F063C0F2 +:104810008F3F09F060C037C086E0FE013796DE01A9 +:10482000119601900D928A95E1F76F817885EA855E +:10483000FB85309741F17F3F11F46F3F21F12091CB +:10484000F90430E0C9010196877099274091F80476 +:1048500050E08417950709F447C069837A83FD8384 +:10486000EC8396E0929FD001939FB00D1124A65047 +:10487000BB4FFE01319601900D929A95E1F780931E +:10488000F9040E94972116E08091F8049091F904B0 +:104890008917C1F1189FC001112486509B4F0E94B7 +:1048A0002122882379F1E091F8041E9FF001112460 +:1048B000E650FB4F408151816281738184819581F3 +:1048C0000E9487218091F80490E0019687709927D3 +:1048D0008093F804D9CF4F81588569857A858B8577 +:1048E0009C850E948721CFCF0E944A211092F90413 +:1048F0001092F804EAE2F5E086E0DF011D928A9565 +:10490000E9F7C1CF2C960FB6F894DEBF0FBECDBF2E +:10491000DF91CF911F910895EF92FF920F931F9314 +:10492000CF93DF938C01009709F46CC0F12CEE2437 +:10493000E394E8012196F8018491843740F48430AF +:1049400008F051C0813081F0823019F15BC08537A9 +:1049500009F444C0A8F19CE7980F903708F052C0C2 +:104960008F770E94671E41C00E5F1F4FFE01C491EA +:1049700080E28C0F883048F4C7708E2D01C0880FFC +:10498000CA95EAF70E94682714C08C2F0E949F1DC9 +:104990002DC00E5F1F4FFE01C49180E28C0F883046 +:1049A00058F4C7708E2D01C0880FCA95EAF70E948F +:1049B0006E270E948F271AC08C2F0E94671E16C078 +:1049C0000E5F1F4FFE01C491CC2381F08FE99FE061 +:1049D0000197F1F700C00000C150F6CF0E5F1F4FE6 +:1049E000FE01F49003C00E949F1D8E018F2D88232D +:1049F00009F49FCFEFE9FFE03197F1F700C0000025 +:104A00008150F5CFDF91CF911F910F91FF90EF90E3 +:104A100008950895609334057093350580933605A5 +:104A2000909337050C9436210F931F930091340512 +:104A3000109135052091360530913705DC01CB0109 +:104A4000802B912BA22BB32B8093340590933505AB +:104A5000A0933605B09337051F910F910C94362122 +:104A60000F931F9300913405109135052091360561 +:104A700030913705DC01CB0180239123A223B3239E +:104A80008093340590933505A0933605B093370590 +:104A90001F910F910C9436210F931F9300913405B1 +:104AA000109135052091360530913705DC01CB0199 +:104AB00080279127A227B32780933405909335054B +:104AC000A0933605B09337051F910F910C943621B2 +:104AD0001092300510923105109232051092330574 +:104AE0000C94362141E050E060E070E004C0440FD7 +:104AF000551F661F771F8A95D2F740933005509354 +:104B0000310560933205709333050C94362141E0F2 +:104B100050E060E070E004C0440F551F661F771F2F +:104B20008A95D2F78091300590913105A091320598 +:104B3000B0913305482B592B6A2B7B2B40933005C2 +:104B40005093310560933205709333050C943621F0 +:104B500041E050E060E070E004C0440F551F661F64 +:104B6000771F8A95D2F74095509560957095809102 +:104B7000300590913105A0913205B091330548235D +:104B800059236A237B23409330055093310560936A +:104B90003205709333050C94362141E050E060E01B +:104BA00070E004C0440F551F661F771F8A95D2F727 +:104BB0008091300590913105A0913205B091330577 +:104BC000482759276A277B274093300550933105A2 +:104BD00060933205709333050C9436210F931F9325 +:104BE0000091300510913105209132053091330547 +:104BF000DC01CB01802B912BA22BB32B80933005B2 +:104C000090933105A0933205B09333051F910F9116 +:104C10000C9436210F931F930091300510913105AC +:104C20002091320530913305DC01CB0180239123A3 +:104C3000A223B3238093300590933105A0933205CE +:104C4000B09333051F910F910C9436210F931F934E +:104C500000913005109131052091320530913305D6 +:104C6000DC01CB0180279127A227B3278093300551 +:104C700090933105A0933205B09333051F910F91A6 +:104C80000C9436210895CF92DF92EF92FF920F930A +:104C90001F93CF93DF938C01C0903405D0903505DE +:104CA000E0903605F0903705809130059091310500 +:104CB000A0913205B0913305C82AD92AEA2AFB2AE5 +:104CC000CFE1D0E0D701C6010C2E04C0B695A79560 +:104CD000979587950A94D2F780FF06C0B8018C2F6C +:104CE0000E94EA0C019721F4219760F780E001C04F +:104CF0008C2FDF91CF911F910F91FF90EF90DF905C +:104D0000CF900895CF93DF93EC010E944326BE011C +:104D10000E94EA0CDF91CF910895CB010E94822678 +:104D2000089580913805859585958595089580919C +:104D300038058770089598E0899F90011124262BEB +:104D4000209338050C94872520913805809582237F +:104D500080933805982F977069F430E0482F5527D5 +:104D600047FD50952417350729F08595859585953C +:104D70000C94A825089590913805977081E009F466 +:104D800080E0089590916503992321F09091660346 +:104D9000911109C02091670330916803F90132969F +:104DA0009FEF40E01FC0982F9695969596959F305F +:104DB00050F5E0916703F0916803E90FF11D8770EA +:104DC00021E030E0A90102C0440F551F8A95E2F7A7 +:104DD000CA019181892B818308959F3F39F04F5FEC +:104DE0004E3041F051915813F8CF0DC05111F7CF0B +:104DF000942FF5CF9F3F39F0F901E90FF11D97FD91 +:104E0000FA9582830895089590916503992321F07E +:104E100090916603911109C0209167033091680356 +:104E2000F9013296205F3F4F1FC0982F96959695B7 +:104E300096959F30F0F4E0916703F0916803E90FD5 +:104E4000F11D877021E030E0A90102C0440F551F19 +:104E50008A95E2F7CA01809591818923818308951B +:104E60003196E217F30729F090819813F9CF108259 +:104E7000F7CF089581E090E0E0916703F091680337 +:104E8000E80FF91F1082019680319105A9F7089566 +:104E900090914C05892B80934C05089580959091B5 +:104EA0004C05892380934C05089510924C05089574 +:104EB00090914B05892B80934B0508958095909197 +:104EC0004B05892380934B05089510924B05089557 +:104ED00090914A05892B80934A0508958095909179 +:104EE0004A05892380934A05089510924A0508953A +:104EF00080933905089510923905089580916703CC +:104F000090916803FC0131969C01205F3F4F80E047 +:104F1000919191118F5FE217F307D1F70895E09116 +:104F20006703F091680380914C058083E0916703EB +:104F3000F0916803908180914B05892B8083E091EB +:104F40006703F0916803908180914A05892B8083E3 +:104F500080913905882361F0E0916703F09168033F +:104F60009081892B80830E947E27811110923905C0 +:104F700080916703909168030C94741C20E0009763 +:104F800039F0AC0141505109842395232F5FF7CFAD +:104F9000822F089580917005843039F110924E056A +:104FA00020E488E190E00FB6F894A8958093600023 +:104FB0000FBE2093600080E00E942A0580E00E94DE +:104FC000C40D83B7817F846083BF83B7816083BF53 +:104FD0007894889583B78E7F83BF88E10FB6F89465 +:104FE00080936000109260000FBE089508950895A8 +:104FF00080E00E942A050E94F6270E941F0E0E9450 +:10500000F7270E94970E91E0811101C090E0892F4F +:1050100008950E944A2180E00E942A050E94B82E2D +:105020000E94681C0C94C40D1F920F920FB60F9231 +:1050300011248F939F93AF93BF9380914E0581115D +:1050400013C080914F0590915005A0915105B091EA +:1050500052054196A11DB11D80934F0590935005B7 +:10506000A0935105B0935205BF91AF919F918F913D +:105070000F900FBE0F901F90189582E084BD93E0B3 +:1050800095BD9AEF97BD80936E0008952FB7F89461 +:1050900080914F0590915005A0915105B091520516 +:1050A0002FBF0895CF92DF92EF92FF920F931F933D +:1050B0002FB7F89440914F055091500560915105DC +:1050C000709152052FBF6A017B01EE24FF248C01F1 +:1050D00020E030E0C016D106E206F30610F441509D +:1050E00051099A01281B390BC9011F910F91FF909B +:1050F000EF90DF90CF9008951F920F920FB60F920E +:1051000011248F939F93AF93BF9380914F059091FC +:105110005005A0915105B09152050196A11DB11DF8 +:1051200080934F0590935005A0935105B09352057D +:10513000BF91AF919F918F910F900FBE0F901F90D5 +:1051400018950E946019F8942FEF87EA91E6215094 +:1051500080409040E1F700C0000087E090EBDC0168 +:1051600080937B0590937C05A0937D05B0937E058D +:105170009CE088E10FB6F894A895809360000FBE7C +:1051800090936000FFCFCF92DF92EF92FF920F9348 +:105190001F93CF93DF93D82FC4E0EE24E394F12C38 +:1051A0008C2F0E948D0E6C010EE010E09701002EF6 +:1051B00002C0220F331F0A94E2F72C213D21232B3A +:1051C00049F0602F7C2F80E00E94660AD81302C04D +:1051D00081E006C00150110948F7C15008F780E08E +:1051E000DF91CF911F910F91FF90EF90DF90CF90C3 +:1051F0000895CF93C82F8CE20E94C328882321F002 +:105200008C2FCF910C94C32880E0CF910895CF9339 +:105210000E94582A811102C00E94342AC5E6C1505A +:1052200049F00E941F0E8FE39CE90197F1F700C03F +:105230000000F5CF89E20E94F928811113C18AE2AA +:105240000E94F92881110E94342A85E00E94F928E1 +:1052500081110E94A1280E94632A80934D0587E056 +:105260000E94F9288823A9F18BE10E94F92888235C +:1052700051F080914D0581FB222720F991E0922782 +:1052800090FB81F90EC08EE00E94F928882361F01E +:1052900080914D0582FB222720F991E0922790FB17 +:1052A00082F980934D0515C080E10E94F928909104 +:1052B0004D05882341F093FB222720F981E08227C6 +:1052C00080FB93F904C0892F809580FB90F990931F +:1052D0004D0580914D050E94672A0E94752A809392 +:1052E000790580EE0E94F928882341F080917905A4 +:1052F000982F909590FB80F98093790589E30E941F +:10530000F928882359F08091790581FB222720F91B +:1053100091E0922790FB81F98093790582EE0E94BB +:10532000F928882359F08091790582FB222720F9FA +:1053300091E0922790FB82F98093790586EE0E9496 +:10534000F928882359F08091790583FB222720F9D9 +:1053500091E0922790FB83F98093790583EE0E9478 +:10536000F928882359F08091790584FB222720F9B8 +:1053700091E0922790FB84F98093790585E30E9460 +:10538000F928882359F08091790585FB222720F997 +:1053900091E0922790FB85F98093790581E30E9443 +:1053A000F928882359F08091790586FB222720F976 +:1053B00091E0922790FB86F98093790581E10E9424 +:1053C000F928882359F08091790587FB222720F955 +:1053D00091E0922790FB87F9809379058091790578 +:1053E0000E94792A8091790587FB882780F980932C +:1053F000660387E20E94F928C82F8EE10E94F928EF +:105400008111C2608FE10E94F9288111C46080E29D +:105410000E94F9288111C86081E20E94F928811157 +:10542000C06182E20E94F9288111C06283E20E9479 +:10543000F9288111C06484E20E94F928882311F0C0 +:10544000C06802C0CC2329F08C2F0E94702A6C2FD8 +:1054500003C00E946C2A682F70E080E090E0CF913A +:105460000C940A25CF9108956DEE7EEF80E090E0D8 +:105470000E946F3360E082E090E00E945D3360E064 +:1054800083E090E00E945D3360E084E090E00E9461 +:105490005D3360E085E090E00E945D3360E086E08F +:1054A00090E00E945D336FEF87E090E00C945D33F5 +:1054B00080E090E00E94573321E08D3E9E4F09F03E +:1054C00020E0822F089582E090E00C944F33682F03 +:1054D00082E090E00C945D3383E090E00C944F33D5 +:1054E000682F83E090E00C945D3384E090E00C94AE +:1054F0004F33682F84E090E00C945D3386E090E0B9 +:105500000C944F33682F86E090E00C945D3387E075 +:1055100090E00C944F33682F87E090E00C945D335B +:105520008091550580FF0BC060916C0385E0689FFA +:10553000B001112475956795759567952BC081FF0E +:1055400009C060916C0385E0689FB00111247595D6 +:10555000679520C082FF07C060916C0385E0689F5B +:10556000B001112417C0909156059923D1F0609194 +:105570006B03961788F720916C0385E0289F9001B4 +:105580001124929FA001939F500D112470E0CA0135 +:105590000E9435336038710540F46115710539F0AA +:1055A00002C065E070E0862F08958FE7089581E0DE +:1055B00008958091550580FF08C060916A0370E0EE +:1055C000759567957595679521C081FF06C06091B7 +:1055D0006A0370E07595679519C082FF04C06091F9 +:1055E0006A0370E010C0909156059923C1F0609154 +:1055F00069039617A0F780916A03899FC00111245F +:1056000070E00E9435336038710528F4611571052A +:1056100021F0862F08958FE7089581E0089561E0D5 +:1056200070E0F4CF803F21F40E94902A819504C05D +:10563000813F29F40E94902A809359050895823F62 +:1056400021F40E94902A819504C0833F29F40E948E +:10565000902A809358050895893F19F40E94D92A09 +:1056600005C08A3F31F40E94D92A819580935A055A +:1056700008958B3F21F40E94D92A819504C08C3F64 +:1056800029F40E94D92A80935B050895843F21F470 +:1056900080915705816017C0853F21F4809157059F +:1056A000826011C0863F21F48091570584600BC051 +:1056B000873F21F480915705886005C0883F31F409 +:1056C0008091570580618093570508958D3F21F49F +:1056D0008091550581600BC08E3F21F48091550566 +:1056E000826005C08F3F29F48091550584608093C6 +:1056F00055050895803F39F48091590587FF6CC0A6 +:105700001092590569C0813F29F4809159051816F6 +:10571000BCF362C090915805823F29F497FF5CC0AA +:105720001092580559C0833F19F41916CCF354C090 +:10573000893F41F480915A0518160CF04DC0109223 +:105740005A054AC08A3F29F480915A0587FF44C010 +:10575000F6CF8B3F39F480915B0587FF3DC01092F7 +:105760005B053AC08C3F29F480915B051816BCF3A9 +:1057700033C0843F21F4809157058E7F17C0853F49 +:1057800021F4809157058D7F11C0863F21F48091CF +:1057900057058B7F0BC0873F21F480915705877F8A +:1057A00005C0883F31F4809157058F7E809357055F +:1057B00013C08D3F21F4809155058E7F0BC08E3F25 +:1057C00021F4809155058D7F05C08F3F29F480918C +:1057D00055058B7F809355058091580581110EC02A +:1057E0008091590581110AC080915A05811106C026 +:1057F00080915B05811102C010925605089587E5DE +:1058000095E00E947F1C0E94462890935405809347 +:10581000530508951F93CF93DF9380915305909183 +:1058200054050E945228AC0190915605992321F00D +:1058300020916D0330E006C020916E038AE0289F1E +:10584000900111244217530708F486C0809158052F +:10585000C0915905D0915A0510915B05811107C07F +:10586000C11176C0D11174C0111172C075C09F3FB3 +:1058700019F09F5F90935605181624F40E94902A01 +:10588000809358058091580587FF05C00E94902A93 +:105890008195809358051C1624F40E94902A8093C9 +:1058A00059058091590587FF05C00E94902A81956E +:1058B0008093590560915805662339F1C0915905C7 +:1058C000CC2319F1772767FD7095872F972F0E94BA +:1058D000573023E333E343E35FE30E9467310E94E1 +:1058E0002430609358056C2F772767FD7095872FBC +:1058F000972F0E94573023E333E343E35FE30E9493 +:1059000067310E942430609359051D1624F40E94CB +:10591000D92A80935A0580915A0587FF05C00E94B5 +:10592000D92A819580935A05111624F40E94D92A08 +:1059300080935B0580915B0587FF05C00E94D92A93 +:10594000819580935B05DF91CF911F910C94FF2B84 +:105950009F3F09F08ECF96CFDF91CF911F91089591 +:10596000E7E5F5E085E0DF011D928A95E9F7109201 +:105970005605109255050895833081F128F4813041 +:1059800059F08230D1F00895853009F449C0B8F15A +:10599000863009F456C0089580916E03262F30E0BA +:1059A000280F311D2F3F310524F4680F60936E03DB +:1059B00008958FEF80936E03089580916D03262FD5 +:1059C00030E0280F311D2F3F310524F4680F60931C +:1059D0006D0308958FEF80936D03089580916C039C +:1059E000262F30E0280F311D2F3F310524F4680F9A +:1059F00060936C0308958FEF80936C0308958091FA +:105A00006B03262F30E0280F311D2F3F310524F482 +:105A1000680F60936B0308958FEF80936B03089575 +:105A200080916A03262F30E0280F311D2F3F31056A +:105A300024F4680F60936A0308958FEF80936A03DC +:105A4000089580916903262F30E0280F311D2F3FE4 +:105A5000310524F4680F6093690308958FEF8093F4 +:105A600069030895833011F128F4813049F08230C0 +:105A700091F00895853081F120F18630C1F10895CB +:105A800080916E03681720F4861B80936E0308953F +:105A900010926E03089580916D03681720F4861BA1 +:105AA00080936D03089510926D03089580916C03A7 +:105AB000681720F4861B80936C03089510926C0382 +:105AC000089580916B03681720F4861B80936B0305 +:105AD000089510926B03089580916A03681720F46B +:105AE000861B80936A03089510926A03089580913B +:105AF0006903681720F4861B809369030895109248 +:105B0000690308950F931F93482F50E0FA013597CA +:105B1000EF33F10508F08CC0E156FF4F0C94493388 +:105B20000E94631C892B59F00E94631C90935D05B1 +:105B300080935C050E944A2180E090E004C080913F +:105B40005C0590915D050E945E1C6BC080914D05C7 +:105B5000817F8E7F80934D0581E080935F0569C0D2 +:105B60000E944A210E94C70E0E94BB070E94A128E2 +:105B700058C090914D05892F8095817080FB90F9D8 +:105B800029F09660986090934D0553C0997F977F58 +:105B900090934D0546C080914D0581FB222720F949 +:105BA00091E0922790FB81F980934D059923C9F1EB +:105BB00080914D05816080934D0533C080914D05E6 +:105BC00082FB222720F991E0922790FB82F9ECCF0B +:105BD00080914D0583FB222720F991E0922790FBCD +:105BE00083F9E2CF0E944A219091660381E08927E0 +:105BF0008093660316C0895301C08D5141E050E087 +:105C000060E070E08A019B0104C0000F111F221F99 +:105C1000331F8A95D2F7C901B8010E940A250E9454 +:105C20004A2181E006C061E070E080E090E0F5CFBD +:105C300080E01F910F91089580E0089580E008951D +:105C4000CF93C82F80915F05813069F018F08230C2 +:105C5000C9F184C0E0916703F091680380818232CA +:105C600009F07EC007C0E0916703F091680380816E +:105C7000823261F48C2F0E941C2E811104C08C2F63 +:105C80000E94822D1DC081E090E01AC08C2F0E94DE +:105C90001E2E811114C0C43179F048F4CB3079F054 +:105CA000C03109F061C082E080935F0508C0C9324D +:105CB00019F0C83321F058C010925F0555C081E03B +:105CC000817054C0C93291F120F5C43179F1B0F43A +:105CD000C73009F047C08EE180936E0382E3809362 +:105CE0006D038AE080936C0384E180936B0388E00A +:105CF00080936A0388E28093690334C0CE51C63032 +:105D000088F5EC2FF0E0E65FFB4F808180935E0525 +:105D100029C0CE34E9F020F4CB3421F56AE013C079 +:105D2000C13579F0C235F1F461E00DC080915E05B6 +:105D3000882319F010925E0515C081E080935F05FD +:105D400015C061E006C080915E050E94BC2C0AC0AF +:105D50006AE080915E050E94322D04C010925F05BA +:105D600080E004C081E002C080E0AACFCF91089516 +:105D70000E94582A811102C00E94342A0E947E2A61 +:105D800080937A0580FF02C0869501C080E00C9464 +:105D90002A0580917A05982F9695292F30E0233097 +:105DA00031054CF49F5F990F8170892B816080933E +:105DB0007A050E94822A80917A0586950C942A059C +:105DC00080917A05982F969591F09158990F81704E +:105DD000892B80937A058E7F91E009F490E0809181 +:105DE0007A0590FB80F980937A050E94822A80913F +:105DF0007A0586950C942A0580917A05982F9095BE +:105E000090FB80F980937A050E94822A80917A051E +:105E100080FF02C0869501C080E00C942A05909115 +:105E20007A05892F86958F5F8F779170843028F45B +:105E3000880F892B80937A0502C090937A05809110 +:105E40007A058E7F91E009F490E080917A0590FBCD +:105E500080F980937A050E94822A80917A0586953E +:105E60000C942A0520917A05922F96958927982FD0 +:105E7000990F822F8170892B80937A058E7F91E014 +:105E800009F490E080917A0590FB80F980937A057F +:105E90000E94822A80917A0586950C942A05809129 +:105EA0007A05869508955058BB27AA270ED0D1C1F0 +:105EB000C2D130F0C7D120F031F49F3F11F41EF46D +:105EC000B7C10EF4E095E7FB9FC1E92FD3D180F372 +:105ED000BA17620773078407950718F071F49EF5E7 +:105EE000EBC10EF4E0950B2EBA2FA02D0B01B901DA +:105EF00090010C01CA01A0011124FF27591B99F040 +:105F0000593F50F4503E68F11A16F040A22F232F4B +:105F1000342F4427585FF3CF469537952795A7959B +:105F2000F0405395C9F77EF41F16BA0B620B730B42 +:105F3000840BBAF09150A1F0FF0FBB1F661F771FB3 +:105F4000881FC2F70EC0BA0F621F731F841F48F468 +:105F5000879577956795B795F7959E3F08F0B3CFEE +:105F60009395880F08F09927EE0F979587950895D8 +:105F700027D108F481E008950CD06BC163D140F0C3 +:105F80005AD130F021F45F3F19F03EC1511195C153 +:105F90004FC170D198F39923C9F35523B1F3951BE1 +:105FA000550BBB27AA2762177307840738F09F5F3A +:105FB0005F4F220F331F441FAA1FA9F333D00E2EA9 +:105FC0003AF0E0E830D091505040E695001CCAF716 +:105FD00029D0FE2F27D0660F771F881FBB1F2617DB +:105FE00037074807AB07B0E809F0BB0B802DBF01AE +:105FF000FF2793585F4F2AF09E3F510568F004C178 +:106000005CC15F3FECF3983EDCF38695779567952E +:10601000B795F7959F5FC9F7880F911D969587955E +:1060200097F90895E1E0660F771F881FBB1F62177D +:1060300073078407BA0720F0621B730B840BBA0B3B +:10604000EE1F88F7E095089504D06894B11135C12A +:10605000089518D188F09F5790F0B92F9927B7511C +:10606000A0F0D1F0660F771F881F991F1AF0BA951C +:10607000C9F712C0B13081F01FD1B1E008951CC141 +:10608000672F782F8827B85F39F0B93FCCF3869512 +:1060900077956795B395D9F73EF49095809570956F +:1060A00061957F4F8F4F9F4F0895E89409C097FBEC +:1060B0003EF490958095709561957F4F8F4F9F4FDF +:1060C0009923A9F0F92F96E9BB279395F695879523 +:1060D00077956795B795F111F8CFFAF4BB0F11F4E6 +:1060E00060FF1BC06F5F7F4F8F4F9F4F16C088238D +:1060F00011F096E911C0772321F09EE8872F762FC3 +:1061000005C0662371F096E8862F70E060E02AF003 +:106110009A95660F771F881FDAF7880F96958795EF +:1061200097F9089588D018F011F08CD038F480C019 +:10613000C4C0E92F9FD0B0F35523C9F3E7FB621722 +:10614000730784079507A8F199F3E92FFF278823A0 +:106150002AF03197660F771F881FDAF7952F55279A +:10616000442332F091505040220F331F441FD2F786 +:10617000BB27E91BF50B621B730B840BB109C1F242 +:1061800022F4620F731F841FB11D31972AF0660F2E +:10619000771F881FBB1FEFCF915050405AF041F03E +:1061A000882332F0660F771F881F91505040C1F747 +:1061B000939530C08695779567959F5FD9F7F8CF0F +:1061C000990F0008550FAA0BE0E8FEEF1616170608 +:1061D000E807F907C0F012161306E407F50798F070 +:1061E000621B730B840B950B39F40A2661F0232B89 +:1061F000242B252B21F408950A2609F4A140A69505 +:106200008FEF811D811D089597F99F6780E870E0E9 +:1062100060E008959F3F31F0915020F48795779585 +:106220006795B795880F911D9695879597F908956D +:106230009FEF80EC089500240A941616170618069E +:106240000906089500240A9412161306140605067A +:106250000895092E0394000C11F4882352F0BB0F0B +:1062600040F4BF2B11F460FF04C06F5F7F4F8F4F6E +:106270009F4F089557FD9058440F551F59F05F3FA9 +:1062800071F04795880F97FB991F61F09F3F79F058 +:1062900087950895121613061406551FF2CF4695DA +:1062A000F1DF08C0161617061806991FF1CF86955C +:1062B0007105610508940895E894BB276627772740 +:1062C000CB0197F908957CDF08F48FEF08950BD088 +:1062D000C0CFB1DF28F0B6DF18F0952309F094CFD6 +:1062E000A7CF1124EACFC6DFA0F3959FD1F3950F76 +:1062F00050E0551F629FF001729FBB27F00DB11D4A +:10630000639FAA27F00DB11DAA1F649F6627B00DD9 +:10631000A11D661F829F2227B00DA11D621F739FC2 +:10632000B00DA11D621F839FA00D611D221F749FD0 +:106330003327A00D611D231F849F600D211D822F17 +:10634000762F6A2F11249F5750408AF0E1F088235E +:106350004AF0EE0FFF1FBB1F661F771F881F91506B +:106360005040A9F79E3F510570F04ECFA6CF5F3F3A +:10637000ECF3983EDCF3869577956795B795F7959E +:10638000E7959F5FC1F7FE2B880F911D9695879526 +:1063900097F90895FA01EE0FFF1F30962105310598 +:1063A00099F16115710561F48038BFE39B0749F1EC +:1063B00068949038810561F08038BFEF9B0741F009 +:1063C000992342F5FF3FE1053105210511F1E894DC +:1063D0000894E795D901AA2329F4AB2FBE2FF85FC3 +:1063E000D0F310C0FF5F70F4A695E0F7F73950F0D6 +:1063F00019F0FF3A38F49F779F930CD00F9007FC69 +:10640000905808953EF014CF60E070E080E89FE37C +:1064100008954FE79F775F934F933F932F939ED0BD +:106420002F913F914F915F9152DF05C019F40EF00B +:10643000EBCE42CFFDCE26DFC8F39638C0F707F883 +:106440000F92E8942BE33AEA48EB5FE74EDF0F92B6 +:106450000F920F924DB75EB70F92C0D0ECEBF1E008 +:1064600016D04F915F91EF91FF91E595EE1FFF1FC1 +:1064700049F0FE57E0684427EE0F441FFA95E1F714 +:106480004195550B32D00F9007FE26C00895DF933B +:10649000CF931F930F93FF92EF92DF927B018C01BA +:1064A000689405C0DA2EEF011EDFFE01E894A59185 +:1064B0002591359145915591AEF3EF0106DDFE0131 +:1064C0009701A801DA9479F7DF90EF90FF900F9190 +:1064D0001F91CF91DF9108959B01AC0160E070E0C6 +:1064E00080E89FE349CD90CE95CECCDEE8F39923AA +:1064F000D9F3940F511DBBF39150504094F059F0D3 +:10650000882332F0660F771F881F91505040C1F7E3 +:106510009E3F510544F7880F911D9695879597F9F1 +:1065200008955F3FACF0983E9CF0BB278695779529 +:106530006795B79508F4B1609395C1F7BB0F58F70D +:1065400011F460FFE8CF6F5F7F4F8F4F9F4FE3CF16 +:10655000B4CE0EF05FCE6CCE689456CE93DEC8F308 +:106560009923D1F3C6F3DF93CF931F930F93FF9239 +:10657000C92FDD2788232AF02197660F771F881FF0 +:10658000DAF720E030E040E85FEB9FE3883920F065 +:10659000803E30F021968F7787DCE4EEF1E003C097 +:1065A00083DCE1E1F2E073DF8B01BE01EC01FB2E45 +:1065B0006F5771097595771F880B990B78DD28E166 +:1065C00032E741E35FE38FDEAF2D9801AE01FF902C +:1065D0000F911F91CF91DF9178DC3BCEFA01DC0166 +:1065E000AA0FBB1F9B01AC01BF5728F422273327FA +:1065F000442750781FC0B75188F4AB2F002446952C +:1066000037952795011CA395D2F3002069F0220F3E +:10661000331F441FB395DAF30DD045CC61307105BB +:10662000A0E88A07B94630F49B01AC0166277727BA +:1066300088279078309621F02083318342835383DA +:106640000895AA1BBB1B51E107C0AA1FBB1FA617B9 +:10665000B70710F0A61BB70B881F991F5A95A9F70B +:1066600080959095BC01CD01089597FB072E16F4F7 +:10667000009407D077FD09D00E94213307FC05D094 +:106680003EF4909581959F4F0895709561957F4F49 +:106690000895EE0FFF1F0590F491E02D0994F999EC +:1066A000FECF92BD81BDF89A992780B50895A8E1E3 +:1066B000B0E042E050E00C947733262FF999FECFFA +:1066C00092BD81BDF89A019700B4021639F01FBA45 +:1066D00020BD0FB6F894FA9AF99A0FBE0895019664 +:1066E000272F0E945E330C945D33DC01CB01FC014B +:1066F000F999FECF06C0F2BDE1BDF89A319600B41B +:0E6700000D9241505040B8F70895F894FFCF25 +:10670E00A4D0A443000000417BD49243000000417A +:10671E007BD4924300000041A4D0A443000000416A +:10672E00A4D02444000000411FD5124400000041B3 +:10673E001FD5124400000041A4D0244400000041A3 +:10674E00A4F076430000004100005C4300000041CD +:10675E0000005C4300000041A4F0764300000041BD +:10676E0000005C440000004148F176440000004106 +:10677E005C978A44000000411FD5924400000041FE +:10678E0052D0A444000000415CFFB8440000004118 +:10679E000AA7CF44000000410000DC440000004185 +:1067AE00A4D082430000C0417BD49243000000413C +:1067BE00A4D0A4430000C041A4D0824300000041F5 +:1067CE00A4D0A44300008041A4D0824300008041A5 +:1067DE00A4D0A443000080411FD512440000804184 +:1067EE00A4D024440000804100D002440000804127 +:1067FE00A4D08243000080410000C44300008041C9 +:10680E000AA7CF44000000410000DC440000004114 +:10681E00000000000000804052D02445000040419E +:10682E0000000000000080400AA74F4500004041D4 +:10683E000AA7CF44000000410000DC4400000041E4 +:10684E00000000000000804052D0244500000041AE +:10685E0000000000000080405CFF38450000004151 +:10686E00000000000000804052D02445000000418E +:10687E000AA7CF44000000410000DC4400000041A4 +:10688E00000000000000804052D0244500008041EE +:10689E00A4F0F6430000C0417BD4924300000041B7 +:1068AE0048F176440000804100005C440000004244 +:1068BE005CFF434400008041A4F0F6430000C04159 +:1068CE001FD51244000000415CFF4344000080418C +:1068DE005CFF384400000042A4D0A4430000804175 +:1068EE00A4D0A44300008041719DAE4300008041BE +:1068FE000000C443000080410000C44300008041FA +:10690E00719DAE4300008041A4D0A443000080419D +:10691E007BD4924300008041A4D08243000080418A +:10692E00A4D08243000080417BD49243000080417A +:10693E00A4D0A44300008041A4D0A4430000C041D1 +:10694E007BD49243000000417BD49243000000426E +:10695E00640007000CFF0000003F646715F515D2B8 +:10696E00159E156A1501013A052808140A321E00F3 +:10697E0002040507090B0C0E1011131517181A1C1B +:10698E001D1F2123242628292B2D2F303234353755 +:10699E00393B1F0F03764F5F6F7F49694379392962 +:1069AE001909595363333149803F5D8B803FF8BFDE +:1069BE00803FCAE1803F73ED803FCAE1803FF8BF60 +:1069CE00803F5D8B803F3149803F0000803FF16DFD +:1069DE007F3F75EA7E3F4C827E3F833F7E3F842819 +:1069EE007E3F833F7E3F4C827E3F75EA7E3FF16D58 +:1069FE007F3F0000803F3F4D3639C7087A08440874 +:106A0E000B089E07B707D007E90701020304050626 +:046A1E00070809005C +:00000001FF diff --git a/keyboards/atomic/keymaps/pvc/config.h b/keyboards/atomic/keymaps/pvc/config.h new file mode 100644 index 000000000..1473aac34 --- /dev/null +++ b/keyboards/atomic/keymaps/pvc/config.h @@ -0,0 +1,166 @@ +/* +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 0x0419 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Ortholinear Keyboards +#define PRODUCT The Atomic Keyboard +#define DESCRIPTION A compact ortholinear keyboard + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { D0, D5, B5, B6, B3 } +#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7, D3, D2, D1 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +/* 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 + +// Enable Keyboard Locking via magic key +#define KEYBOARD_LOCK_ENABLE + + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +#define MAGIC_KEY_BOOTLOADER B +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * 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 + + +//#define VIBRATO_ENABLE +//#define VIBRATO_STRENGTH_ENABLE + +#endif diff --git a/keyboards/atomic/keymaps/pvc/keymap.c b/keyboards/atomic/keymaps/pvc/keymap.c new file mode 100644 index 000000000..f16ec8a6e --- /dev/null +++ b/keyboards/atomic/keymaps/pvc/keymap.c @@ -0,0 +1,578 @@ +#include "atomic.h" +#include "action_layer.h" +#include "eeconfig.h" +#include "led.h" + +#ifdef AUDIO_ENABLE + #include "audio.h" + #include "song_list.h" +#endif + +#define LAYER_QWERTY 0 +#define LAYER_COLEMAK 1 +#define LAYER_DVORAK 2 +#define LAYER_UPPER 3 +#define LAYER_LOWER 4 +#define LAYER_FUNCTION 5 +#define LAYER_MOUSE 6 +#define LAYER_ADJUST 7 + +#define MACRO_QWERTY 0 +#define MACRO_COLEMAK 1 +#define MACRO_DVORAK 2 +#define MACRO_UPPER 3 +#define MACRO_LOWER 4 +#define MACRO_FUNCTION 5 +#define MACRO_MOUSE 6 +#define MACRO_TIMBRE_1 7 +#define MACRO_TIMBRE_2 8 +#define MACRO_TIMBRE_3 9 +#define MACRO_TIMBRE_4 10 +#define MACRO_TEMPO_U 11 +#define MACRO_TEMPO_D 12 +#define MACRO_TONE_DEFAULT 13 +#define MACRO_MUSIC_TOGGLE 14 +#define MACRO_AUDIO_TOGGLE 16 +#define MACRO_INC_VOICE 18 +#define MACRO_DEC_VOICE 19 +#define MACRO_BACKLIGHT 20 +#define MACRO_BREATH_TOGGLE 21 +#define MACRO_BREATH_SPEED_INC 23 +#define MACRO_BREATH_SPEED_DEC 24 +#define MACRO_BREATH_DEFAULT 25 + +#define M_QWRTY M(MACRO_QWERTY) +#define M_COLMK M(MACRO_COLEMAK) +#define M_DVORK M(MACRO_DVORAK) +#define M_UPPER M(MACRO_UPPER) +#define M_LOWER M(MACRO_LOWER) +#define M_FUNCT M(MACRO_FUNCTION) +#define M_MOUSE M(MACRO_MOUSE) +#define TIMBR_1 M(MACRO_TIMBRE_1) +#define TIMBR_2 M(MACRO_TIMBRE_2) +#define TIMBR_3 M(MACRO_TIMBRE_3) +#define TIMBR_4 M(MACRO_TIMBRE_4) +#define TMPO_UP M(MACRO_TEMPO_U) +#define TMPO_DN M(MACRO_TEMPO_D) +#define TMPO_DF M(MACRO_TONE_DEFAULT) +#define M_BACKL M(MACRO_BACKLIGHT) +#define M_BRTOG M(MACRO_BREATH_TOGGLE) +#define M_BSPDU M(MACRO_BREATH_SPEED_INC) +#define M_BSPDD M(MACRO_BREATH_SPEED_DEC) +#define M_BDFLT M(MACRO_BREATH_DEFAULT) + + +#define VC_UP M(MACRO_INC_VOICE) +#define VC_DOWN M(MACRO_DEC_VOICE) + + +#define SC_UNDO LCTL(KC_Z) +#define SC_REDO LCTL(KC_Y) +#define SC_CUT LCTL(KC_X) +#define SC_COPY LCTL(KC_C) +#define SC_PSTE LCTL(KC_V) +#define SC_SELA LCTL(KC_A) +#define SC_SAVE LCTL(KC_S) +#define SC_OPEN LCTL(KC_O) +#define SC_ACLS LALT(KC_F4) +#define SC_CCLS LCTL(KC_F4) + +#define OS_SHFT KC_FN0 + +#define _______ KC_TRNS +#define XXXXXXX KC_NO +#define ________________ _______, _______ +#define XXXXXXXXXXXXXXXX XXXXXXX, XXXXXXX + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* QWERTY + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | XXXXXX . ENTER | PG UP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [LAYER_QWERTY] = { // QWERTY + { 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_BSPC, 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_DEL }, + { KC_CAPS, 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_ENT, KC_PGUP }, + { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, + { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, + }, + + /* COLEMAK + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | Q | W | F | P | G | J | L | U | Y | ; | [ | ] | \ | DEL | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | BACKSP | A | R | S | T | D | H | N | E | I | O | ' | XXXXXX . ENTER | PG UP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | LSHIFT | Z | X | C | V | B | K | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [LAYER_COLEMAK] = { // COLEMAK + { 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_BSPC, KC_BSPC }, + { KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, + { KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP }, + { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, + { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, +}, + +/* DVORAK + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | [ | ] | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | ' | , | . | P | Y | F | G | C | R | L | / | = | \ | DEL | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | CAPS | A | O | E | U | I | D | H | T | N | S | - | XXXXXX . ENTER | PG UP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | LSHIFT | ; | Q | J | K | X | B | M | W | V | Z | XXXXXX . RSHIFT | UP | PG DN | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [LAYER_DVORAK] = { // DVORAK + { 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_BSPC, 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_DEL }, + { KC_CAPS, 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_ENT, KC_PGUP }, + { 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_RSFT, KC_UP, KC_PGDN }, + { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, + }, + +/* UPPER + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | PRINT | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | NUM LK | / | * | | NUM LK | SCR LK | XXXXXX . PAUSE | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | | F1 | F2 | F3 | F4 | | | 7 | 8 | 9 | - | | | | INS | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | CAP LK | F5 | F6 | F7 | F8 | | | 4 | 5 | 6 | + | | XXXXXX . | HOME | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | | F9 | F10 | F11 | F12 | | | 1 | 2 | 3 | ENTER | XXXXXX . | | END | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | 0 | | RALT | . | ENTER | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [LAYER_UPPER] = { // UPPER + { KC_PSCR, M_BRTOG, M_BSPDU, M_BSPDD, M_BDFLT, XXXXXXX, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, XXXXXXX, XXXXXXX, KC_SLCK, KC_PAUS, KC_PAUS }, + { _______, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, _______, _______, _______, KC_INS }, + { KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, XXXXXXX, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______, ________________, KC_HOME }, + { _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, ________________, _______, KC_END }, + { _______, _______, _______, _______, _______, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, _______, _______, _______, _______ }, + }, + +/* LOWER + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | | $ | { | [ | ( | % | # | ) | ] | } | @ | | | | INS | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | | ^ | * | + | - | ; | : | _ | ' | " | ` | | XXXXXX . | HOME | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | | | | & | ! | ~ | / | \ | = | < | > | ? | XXXXXX . | | END | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [LAYER_LOWER] = { // LOWER + { _______, 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_DLR, KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT, _______, _______, _______, KC_INS }, + { _______, KC_CIRC, KC_ASTR, KC_PPLS, KC_PMNS, KC_SCLN, KC_COLN, KC_UNDS, KC_QUOT, KC_DQT, KC_GRV, _______, ________________, KC_HOME }, + { _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SLSH, KC_BSLS, KC_EQL, KC_LT, KC_GT, KC_QUES, ________________, _______, KC_END }, + { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, _______, _______ }, + }, + + [LAYER_FUNCTION] = { // FUNCTION + { KC_NLCK, 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_SLCK, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, _______, KC_PAUS }, + { KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, KC_PSCR }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, KC_VOLU, KC_MUTE }, + { _______, _______, _______, _______, _______, KC_MPLY, KC_MPLY, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT }, + }, + +#ifdef MOUSEKEY_ENABLE + + [LAYER_MOUSE] = { // MOUSE + { _______, KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX }, + { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, + { XXXXXXX, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX, KC_WH_U }, + { _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ________________, KC_MS_U, KC_WH_D }, + { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, + }, + +#endif + + [LAYER_ADJUST] = { // ADJUST + { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, _______, _______, _______, MU_TOG, AU_TOG, ________________ }, + { _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______ }, + { _______, _______, _______, _______, M_BACKL, RESET, _______, M_MOUSE, _______, _______, _______, ________________, MUV_IN, _______ }, + { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, MUV_DE, _______ }, + }, + + +/* + [LAYER_EMPTY] = { // LAYER + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______, _______ }, + { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, _______, _______ }, + }, +*/ + +}; + +#ifdef AUDIO_ENABLE + +float tone_my_startup[][2] = SONG(ODE_TO_JOY); +float tone_my_goodbye[][2] = SONG(ROCK_A_BYE_BABY); + +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_dvorak[][2] = SONG(DVORAK_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); + +float tone_audio_on[][2] = SONG(CLOSE_ENCOUNTERS_5_NOTE); +float tone_music_on[][2] = SONG(DOE_A_DEER); +float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); + +float tone_caps_on[][2] = SONG(CAPS_LOCK_ON_SOUND); +float tone_caps_off[][2] = SONG(CAPS_LOCK_OFF_SOUND); +float tone_numlk_on[][2] = SONG(NUM_LOCK_ON_SOUND); +float tone_numlk_off[][2] = SONG(NUM_LOCK_OFF_SOUND); +float tone_scroll_on[][2] = SONG(SCROLL_LOCK_ON_SOUND); +float tone_scroll_off[][2] = SONG(SCROLL_LOCK_OFF_SOUND); + +#endif /* AUDIO_ENABLE */ + +void persistant_default_layer_set(uint16_t default_layer) +{ + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_MODS_ONESHOT(MOD_LSFT), +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + + // MACRODOWN only works in this function + switch(id) + { + + case MACRO_BREATH_TOGGLE: + if (record->event.pressed) + { + breathing_toggle(); + } + break; + + case MACRO_BREATH_SPEED_INC: + if (record->event.pressed) + { + breathing_speed_inc(1); + } + break; + + case MACRO_BREATH_SPEED_DEC: + if (record->event.pressed) + { + breathing_speed_dec(1); + } + break; + + case MACRO_BREATH_DEFAULT: + if (record->event.pressed) + { + breathing_defaults(); + } + break; + + case MACRO_QWERTY: + if (record->event.pressed) + { + persistant_default_layer_set(1UL<event.pressed) + { + persistant_default_layer_set(1UL<event.pressed) + { + persistant_default_layer_set(1UL<event.pressed) + { + layer_on(LAYER_UPPER); + breathing_speed_set(2); + breathing_pulse(); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); + } + else + { + layer_off(LAYER_UPPER); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); + } + break; + + case MACRO_LOWER: + if (record->event.pressed) + { + layer_on(LAYER_LOWER); + breathing_speed_set(2); + breathing_pulse(); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); + } + else + { + layer_off(LAYER_LOWER); + update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); + } + break; + + case MACRO_FUNCTION: + if (record->event.pressed) + { + breathing_speed_set(3); + breathing_enable(); + layer_on(LAYER_FUNCTION); + } + else + { + breathing_speed_set(1); + breathing_self_disable(); + layer_off(LAYER_FUNCTION); + } + break; + +#ifdef MOUSEKEY_ENABLE + + case MACRO_MOUSE: + if (record->event.pressed) + { + layer_invert(LAYER_MOUSE); + } + break; + +#endif /* MOUSEKEY_ENABLE */ + +#ifdef AUDIO_ENABLE + + case MACRO_TIMBRE_1: + if (record->event.pressed) set_timbre(TIMBRE_12); + break; + + case MACRO_TIMBRE_2: + if (record->event.pressed) set_timbre(TIMBRE_25); + break; + + case MACRO_TIMBRE_3: + if (record->event.pressed) set_timbre(TIMBRE_50); + break; + + case MACRO_TIMBRE_4: + if (record->event.pressed) set_timbre(TIMBRE_75); + break; + + case MACRO_TEMPO_U: + if (record->event.pressed) increase_tempo(10); + break; + + case MACRO_TEMPO_D: + if (record->event.pressed) decrease_tempo(10); + break; + + case MACRO_TONE_DEFAULT: + if (record->event.pressed) + { + set_timbre(TIMBRE_DEFAULT); + set_tempo(TEMPO_DEFAULT); + } + break; + +/* + case MACRO_AUDIO_TOGGLE: + if (record->event.pressed) + { + if (is_audio_on()) + { + audio_off(); + } + else + { + audio_on(); + PLAY_NOTE_ARRAY(tone_audio_on, false, STACCATO); + } + } + break; + + case MACRO_MUSIC_TOGGLE: + if (record->event.pressed) + { + if (IS_LAYER_ON(LAYER_MUSIC)) + { + layer_off(LAYER_MUSIC); + stop_all_notes(); + } + else + { + PLAY_NOTE_ARRAY(tone_music_on, false, STACCATO); + layer_on(LAYER_MUSIC); + } + } + break; + case MACRO_INC_VOICE: + if (record->event.pressed) + { + #ifdef AUDIO_ENABLE + voice_iterate(); + PLAY_NOTE_ARRAY(music_scale, false, STACCATO); + #endif + } + break; + + case MACRO_DEC_VOICE: + if (record->event.pressed) + { + #ifdef AUDIO_ENABLE + voice_deiterate(); + PLAY_NOTE_ARRAY(music_scale, false, STACCATO); + #endif + } + break; +*/ + +#endif /* AUDIO_ENABLE */ + +#ifdef BACKLIGHT_ENABLE + case MACRO_BACKLIGHT: + if (record->event.pressed) + { + backlight_step(); + } +#endif + + default: + break; + + } + return MACRO_NONE; +}; + + +#ifdef AUDIO_ENABLE + +void matrix_init_user(void) +{ + set_voice(default_voice); + startup_user(); + println("Matrix Init"); +} + +void led_set_user(uint8_t usb_led) +{ + static uint8_t old_usb_led = 0; + + _delay_ms(10); // gets rid of tick + + if (!is_playing_notes()) + { + if ((usb_led & (1<