From 913dabf41bb34ba9fa547c53f86805f48c4aea53 Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Tue, 12 Feb 2019 16:15:17 -0500 Subject: [PATCH 01/35] Initial keymapping --- .../planck/keymaps/dvorak2space/config.h | 84 ++++++++++ .../planck/keymaps/dvorak2space/keymap.c | 122 +++++++++++++++ .../planck/keymaps/dvorak2space/planck.h | 146 ++++++++++++++++++ .../planck/keymaps/dvorak2space/readme.md | 5 + .../planck/keymaps/dvorak2space/rules.mk | 24 +++ 5 files changed, 381 insertions(+) create mode 100644 keyboards/planck/keymaps/dvorak2space/config.h create mode 100644 keyboards/planck/keymaps/dvorak2space/keymap.c create mode 100644 keyboards/planck/keymaps/dvorak2space/planck.h create mode 100644 keyboards/planck/keymaps/dvorak2space/readme.md create mode 100644 keyboards/planck/keymaps/dvorak2space/rules.mk diff --git a/keyboards/planck/keymaps/dvorak2space/config.h b/keyboards/planck/keymaps/dvorak2space/config.h new file mode 100644 index 000000000000..837311c76916 --- /dev/null +++ b/keyboards/planck/keymaps/dvorak2space/config.h @@ -0,0 +1,84 @@ +/* +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 MANUFACTURER OLKB +#define PRODUCT Planck +#define DESCRIPTION A compact ortholinear keyboard + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* Planck PCB default pin-out */ +#define MATRIX_ROW_PINS { D0, D5, B5, B6 } +#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 } +#define UNUSED_PINS + +#define QMK_ESC_OUTPUT F1 +#define QMK_ESC_INPUT D5 +#define QMK_LED E6 +#define QMK_SPEAKER C6 + +#define AUDIO_VOICES +#define C6_AUDIO + +#define BACKLIGHT_PIN B7 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* + * 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/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c new file mode 100644 index 000000000000..f38ba51801be --- /dev/null +++ b/keyboards/planck/keymaps/dvorak2space/keymap.c @@ -0,0 +1,122 @@ +#include QMK_KEYBOARD_H +#define TAPPING_TOGGLE 1 +#define PERMISSIVE_HOLD +#define MOUSEL KC_BTN1 +#define MOUSER KC_BTN2 +#define CTRLL LCTL(KC_LEFT) +#define CTRLR LCTL(KC_RGHT) +#define CAD LCTL(LALT(KC_DEL)) +#define IS_LAYER_ON(layer) (layer_state & (1UL << (layer))) + +enum { + HK_SLEEP = SAFE_RANGE, + HK_IF, + HK_ELSE, + KC_LSFT, + KC_RSFT +}; + +enum { + TD/ = 0 +}; + +qk_tap_dance_action_t tap_dance_actions[] = { + [TD/] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_NUBS) +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Base + * ,-----------------------------------------------------------------------------------. + * | Tab | ' | , | . | p | y | f | g | c | r | l | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Nav | a | o | e | u | i | d | h | t | n | s | Enter| + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shft | ; | q | j | k | x | b | m | w | v | z | Shft | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | RClk | LClk | Ctrl | Space | Modifier | GUI | VolD | VolU |Macros| + * `-----------------------------------------------------------------------------------' + */ + [0] = LAYOUT_planck_2x2u( + KC_TAB, KC_QUOT,KC_COMM,KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, + TT(3), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT, + KC_LSFT,KC_SCLN,KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, + KC_ESC, MOUSER, MOUSEL, KC_LCTL, KC_SPC, MO(2), KC_LGUI,KC_VOLD,KC_VOLU,OSL(4) + ), +/* Custom Shifts + * ,-----------------------------------------------------------------------------------. + * | | | ? | ! | | | | | | | | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ + [1] = LAYOUT_planck_2x2u( + KC_TRNS,KC_TRNS,KC_SLSH,KC_1, 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_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_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS + ), +/* Modifier + * ,-----------------------------------------------------------------------------------. + * | Tab | + | - | / \ | = | if | else | ( | ) | { | } | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Enter| + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | [ | _ | @ | # | $ | % | ^ | & | * | < | > | ] | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | Space | | | | | | + * `-----------------------------------------------------------------------------------' + */ + [2] = LAYOUT_planck_2x2u( + KC_TAB, KC_PLUS,KC_PMNS,TD(TD/),KC_PEQL,HK_IF, HK_ELSE,KC_LPRN,KC_RPRN,KC_LCBR,KC_RCBR,KC_BSPC, + KC_PIPE,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT, + KC_LBRC,KC_UNDS,KC_AT, KC_HASH,KC_DLR, KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LT, KC_GT, KC_RBRC, + KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO + ), + [3] = LAYOUT_planck_2x2u( //Nav + KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME,KC_UP, KC_END, KC_NO, KC_BSPC, + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, CTRLL, KC_LEFT,KC_DOWN,KC_RGHT,CTRLR, KC_ENT, + KC_LSFT,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + [4] = LAYOUT_planck_2x2u( //AHK-Bindable Macros + KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, + LCTL(KC_F13),LCTL(KC_F14),LCTL(KC_F15),LCTL(KC_F16),LCTL(KC_F17),LCTL(KC_F18),LCTL(KC_F19),LCTL(KC_F20),LCTL(KC_F21),LCTL(KC_F22),LCTL(KC_F23),LCTL(KC_F24), + LSFT(KC_F13),LSFT(KC_F14),LSFT(KC_F15),LSFT(KC_F16),LSFT(KC_F17),LSFT(KC_F18),LSFT(KC_F19),LSFT(KC_F20),LSFT(KC_F21),LSFT(KC_F22),LSFT(KC_F23),LSFT(KC_F24), + LALT(KC_F13),LALT(KC_F14),LALT(KC_F15),LALT(KC_F16), CAD, LALT(KC_F19), LALT(KC_F21),LALT(KC_F22),SLEEP, KC_TRNS + ), + [5] = LAYOUT_planck_2x2u( //Locked Screen + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, SLEEP, KC_NO + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch(keycode) { + case KC_LSFT: + case KC_RSFT: + layer_invert(1); //holding both shifts would output base layer shifts, wrong but shouldn't be an issue + break; + case HK_SLEEP: + if(record->event.pressed && IS_LAYER_ON(5)) + SEND_STRING(SS_LALT(SS_TAP(X_F23))); + if(!record->event.pressed) { + if(!IS_LAYER_ON(5)) + SEND_STRING(SS_LALT(SS_TAP(X_F23))); + layer_invert(5); + } + break; + case HK_IF: + if(record->event.pressed) SEND_STRING("if"); + break; + case HK_ELSE: + if(record->event.pressed) SEND_STRING("else"); + break; + } + return true; +}; \ No newline at end of file diff --git a/keyboards/planck/keymaps/dvorak2space/planck.h b/keyboards/planck/keymaps/dvorak2space/planck.h new file mode 100644 index 000000000000..d908d80ec4a3 --- /dev/null +++ b/keyboards/planck/keymaps/dvorak2space/planck.h @@ -0,0 +1,146 @@ +#ifndef PLANCK_H +#define PLANCK_H + +#include "quantum.h" + +#define encoder_update(clockwise) encoder_update_user(uint8_t index, clockwise) + +#ifdef __AVR__ +#define LAYOUT_planck_mit( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ + k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \ + { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b } \ +} + +#define LAYOUT_planck_grid( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \ +} + +// Used to create a keymap using only KC_ prefixed keys +#define KC_KEYMAP( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \ + ) \ + LAYOUT_planck_grid( \ + KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b, \ + KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b, \ + KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b, \ + KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b \ + ) + +#define KEYMAP LAYOUT_planck_grid +#define LAYOUT_ortho_4x12 LAYOUT_planck_grid +#define KC_LAYOUT_ortho_4x12 KC_KEYMAP + +#else + + #define LAYOUT_planck_1x2uC( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ + k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05 }, \ + { k10, k11, k12, k13, k14, k15 }, \ + { k20, k21, k22, k23, k24, k25 }, \ + { k30, k31, k32, k39, k3a, k3b }, \ + { k06, k07, k08, k09, k0a, k0b }, \ + { k16, k17, k18, k19, k1a, k1b }, \ + { k26, k27, k28, k29, k2a, k2b }, \ + { k36, k37, k38, k33, k34, k35 } \ +} + +#define LAYOUT_planck_1x2uR( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ + k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05 }, \ + { k10, k11, k12, k13, k14, k15 }, \ + { k20, k21, k22, k23, k24, k25 }, \ + { k30, k31, k32, k39, k3a, k3b }, \ + { k06, k07, k08, k09, k0a, k0b }, \ + { k16, k17, k18, k19, k1a, k1b }, \ + { k26, k27, k28, k29, k2a, k2b }, \ + { k36, k37, k38, k33, k34, k35 } \ +} + +#define LAYOUT_planck_1x2uL( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ + k30, k31, k32, k33, k34, k36, k37, k38, k39, k3a, k3b \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05 }, \ + { k10, k11, k12, k13, k14, k15 }, \ + { k20, k21, k22, k23, k24, k25 }, \ + { k30, k31, k32, k39, k3a, k3b }, \ + { k06, k07, k08, k09, k0a, k0b }, \ + { k16, k17, k18, k19, k1a, k1b }, \ + { k26, k27, k28, k29, k2a, k2b }, \ + { k36, k37, k38, k33, k34, k35 } \ +} + +#define LAYOUT_planck_2x2u( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ + k30, k31, k32, k33, k34, k36, k38, k39, k3a, k3b \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05 }, \ + { k10, k11, k12, k13, k14, k15 }, \ + { k20, k21, k22, k23, k24, k25 }, \ + { k30, k31, k32, k39, k3a, k3b }, \ + { k06, k07, k08, k09, k0a, k0b }, \ + { k16, k17, k18, k19, k1a, k1b }, \ + { k26, k27, k28, k29, k2a, k2b }, \ + { k36, k37, k38, k33, k34, k35 } \ +} + +#define LAYOUT_planck_grid( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05 }, \ + { k10, k11, k12, k13, k14, k15 }, \ + { k20, k21, k22, k23, k24, k25 }, \ + { k30, k31, k32, k39, k3a, k3b }, \ + { k06, k07, k08, k09, k0a, k0b }, \ + { k16, k17, k18, k19, k1a, k1b }, \ + { k26, k27, k28, k29, k2a, k2b }, \ + { k36, k37, k38, k33, k34, k35 } \ +} + +#define KEYMAP LAYOUT_planck_grid +#define LAYOUT_ortho_4x12 LAYOUT_planck_grid +#define KC_LAYOUT_ortho_4x12 KC_KEYMAP + +#endif + +#endif diff --git a/keyboards/planck/keymaps/dvorak2space/readme.md b/keyboards/planck/keymaps/dvorak2space/readme.md new file mode 100644 index 000000000000..57ead4b45c56 --- /dev/null +++ b/keyboards/planck/keymaps/dvorak2space/readme.md @@ -0,0 +1,5 @@ +IsaacElenbaas's Planck Layout + +Split spacebar, Dvorak +No gaming layer, use .oeu (esdf) and shift instead of right mouse (ctrl) +KLE layout here: https://bit.ly/2WX31nw \ No newline at end of file diff --git a/keyboards/planck/keymaps/dvorak2space/rules.mk b/keyboards/planck/keymaps/dvorak2space/rules.mk new file mode 100644 index 000000000000..c19c7fad43ea --- /dev/null +++ b/keyboards/planck/keymaps/dvorak2space/rules.mk @@ -0,0 +1,24 @@ +MCU = atmega32u4 +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT +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 = no # 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 = no # 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. +API_SYSEX_ENABLE = no +TAP_DANCE_ENABLE = yes + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +LAYOUTS = ortho_4x12 planck_mit planck_grid planck_1x2uC planck_1x2uR planck_1x2uL planck_2x2u +LAYOUTS_HAS_RGB = no + +DEFAULT_FOLDER = planck/rev6 \ No newline at end of file From 5991755e9db78574ae4a4e94096976a8301bcb1a Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Wed, 13 Feb 2019 17:44:12 -0500 Subject: [PATCH 02/35] Removed unneccessary config files --- .../planck/keymaps/dvorak2space/config.h | 84 ---------- .../planck/keymaps/dvorak2space/planck.h | 146 ------------------ 2 files changed, 230 deletions(-) delete mode 100644 keyboards/planck/keymaps/dvorak2space/config.h delete mode 100644 keyboards/planck/keymaps/dvorak2space/planck.h diff --git a/keyboards/planck/keymaps/dvorak2space/config.h b/keyboards/planck/keymaps/dvorak2space/config.h deleted file mode 100644 index 837311c76916..000000000000 --- a/keyboards/planck/keymaps/dvorak2space/config.h +++ /dev/null @@ -1,84 +0,0 @@ -/* -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 MANUFACTURER OLKB -#define PRODUCT Planck -#define DESCRIPTION A compact ortholinear keyboard - -/* key matrix size */ -#define MATRIX_ROWS 4 -#define MATRIX_COLS 12 - -/* Planck PCB default pin-out */ -#define MATRIX_ROW_PINS { D0, D5, B5, B6 } -#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 } -#define UNUSED_PINS - -#define QMK_ESC_OUTPUT F1 -#define QMK_ESC_INPUT D5 -#define QMK_LED E6 -#define QMK_SPEAKER C6 - -#define AUDIO_VOICES -#define C6_AUDIO - -#define BACKLIGHT_PIN B7 - -/* COL2ROW or ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -/* define if matrix has ghost */ -//#define MATRIX_HAS_GHOST - -/* number of backlight levels */ -#define BACKLIGHT_LEVELS 3 - -/* Set 0 if debouncing isn't needed */ -#define DEBOUNCING_DELAY 5 - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* - * 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/planck/keymaps/dvorak2space/planck.h b/keyboards/planck/keymaps/dvorak2space/planck.h deleted file mode 100644 index d908d80ec4a3..000000000000 --- a/keyboards/planck/keymaps/dvorak2space/planck.h +++ /dev/null @@ -1,146 +0,0 @@ -#ifndef PLANCK_H -#define PLANCK_H - -#include "quantum.h" - -#define encoder_update(clockwise) encoder_update_user(uint8_t index, clockwise) - -#ifdef __AVR__ -#define LAYOUT_planck_mit( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ - k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \ -) \ -{ \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \ - { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \ - { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \ - { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b } \ -} - -#define LAYOUT_planck_grid( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ - k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \ -) \ -{ \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \ - { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \ - { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \ - { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \ -} - -// Used to create a keymap using only KC_ prefixed keys -#define KC_KEYMAP( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ - k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \ - ) \ - LAYOUT_planck_grid( \ - KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b, \ - KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b, \ - KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b, \ - KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b \ - ) - -#define KEYMAP LAYOUT_planck_grid -#define LAYOUT_ortho_4x12 LAYOUT_planck_grid -#define KC_LAYOUT_ortho_4x12 KC_KEYMAP - -#else - - #define LAYOUT_planck_1x2uC( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ - k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \ -) \ -{ \ - { k00, k01, k02, k03, k04, k05 }, \ - { k10, k11, k12, k13, k14, k15 }, \ - { k20, k21, k22, k23, k24, k25 }, \ - { k30, k31, k32, k39, k3a, k3b }, \ - { k06, k07, k08, k09, k0a, k0b }, \ - { k16, k17, k18, k19, k1a, k1b }, \ - { k26, k27, k28, k29, k2a, k2b }, \ - { k36, k37, k38, k33, k34, k35 } \ -} - -#define LAYOUT_planck_1x2uR( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ - k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \ -) \ -{ \ - { k00, k01, k02, k03, k04, k05 }, \ - { k10, k11, k12, k13, k14, k15 }, \ - { k20, k21, k22, k23, k24, k25 }, \ - { k30, k31, k32, k39, k3a, k3b }, \ - { k06, k07, k08, k09, k0a, k0b }, \ - { k16, k17, k18, k19, k1a, k1b }, \ - { k26, k27, k28, k29, k2a, k2b }, \ - { k36, k37, k38, k33, k34, k35 } \ -} - -#define LAYOUT_planck_1x2uL( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ - k30, k31, k32, k33, k34, k36, k37, k38, k39, k3a, k3b \ -) \ -{ \ - { k00, k01, k02, k03, k04, k05 }, \ - { k10, k11, k12, k13, k14, k15 }, \ - { k20, k21, k22, k23, k24, k25 }, \ - { k30, k31, k32, k39, k3a, k3b }, \ - { k06, k07, k08, k09, k0a, k0b }, \ - { k16, k17, k18, k19, k1a, k1b }, \ - { k26, k27, k28, k29, k2a, k2b }, \ - { k36, k37, k38, k33, k34, k35 } \ -} - -#define LAYOUT_planck_2x2u( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ - k30, k31, k32, k33, k34, k36, k38, k39, k3a, k3b \ -) \ -{ \ - { k00, k01, k02, k03, k04, k05 }, \ - { k10, k11, k12, k13, k14, k15 }, \ - { k20, k21, k22, k23, k24, k25 }, \ - { k30, k31, k32, k39, k3a, k3b }, \ - { k06, k07, k08, k09, k0a, k0b }, \ - { k16, k17, k18, k19, k1a, k1b }, \ - { k26, k27, k28, k29, k2a, k2b }, \ - { k36, k37, k38, k33, k34, k35 } \ -} - -#define LAYOUT_planck_grid( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ - k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \ -) \ -{ \ - { k00, k01, k02, k03, k04, k05 }, \ - { k10, k11, k12, k13, k14, k15 }, \ - { k20, k21, k22, k23, k24, k25 }, \ - { k30, k31, k32, k39, k3a, k3b }, \ - { k06, k07, k08, k09, k0a, k0b }, \ - { k16, k17, k18, k19, k1a, k1b }, \ - { k26, k27, k28, k29, k2a, k2b }, \ - { k36, k37, k38, k33, k34, k35 } \ -} - -#define KEYMAP LAYOUT_planck_grid -#define LAYOUT_ortho_4x12 LAYOUT_planck_grid -#define KC_LAYOUT_ortho_4x12 KC_KEYMAP - -#endif - -#endif From 700fb06174b2d54385956b99e4ed980cc56f814d Mon Sep 17 00:00:00 2001 From: IsaacElenbaas <34344969+IsaacElenbaas@users.noreply.github.com> Date: Wed, 13 Feb 2019 17:45:05 -0500 Subject: [PATCH 03/35] Update readme.md --- keyboards/planck/keymaps/dvorak2space/readme.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/keyboards/planck/keymaps/dvorak2space/readme.md b/keyboards/planck/keymaps/dvorak2space/readme.md index 57ead4b45c56..87df49c3461f 100644 --- a/keyboards/planck/keymaps/dvorak2space/readme.md +++ b/keyboards/planck/keymaps/dvorak2space/readme.md @@ -2,4 +2,5 @@ IsaacElenbaas's Planck Layout Split spacebar, Dvorak No gaming layer, use .oeu (esdf) and shift instead of right mouse (ctrl) -KLE layout here: https://bit.ly/2WX31nw \ No newline at end of file + +KLE layout here: https://bit.ly/2WX31nw From 60dcc37b6b396057270d35e18f85d15ee0cb2f18 Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Sun, 17 Feb 2019 16:31:41 -0500 Subject: [PATCH 04/35] Updated symbol locations, tap dance on parentheses for brackets. --- .../keymaps/dvorak2space/keyboard-layout.png | Bin 0 -> 81868 bytes .../planck/keymaps/dvorak2space/keymap.c | 20 +++++++++++------- .../planck/keymaps/dvorak2space/readme.md | 3 ++- 3 files changed, 14 insertions(+), 9 deletions(-) create mode 100644 keyboards/planck/keymaps/dvorak2space/keyboard-layout.png diff --git a/keyboards/planck/keymaps/dvorak2space/keyboard-layout.png b/keyboards/planck/keymaps/dvorak2space/keyboard-layout.png new file mode 100644 index 0000000000000000000000000000000000000000..d9a0fd110909ca99f292e40baf4713f793cc7f70 GIT binary patch literal 81868 zcmd43Wn7eB+b*mKiXz?JAt~LA(v2VpNH<7#4;XZJGZG5YA;QoiHFQWf3|%thkoy|{ z_p_gSzrX$L=l!rh>`x$E%v#sE&ODA|8SzS80s9HXlY95>VJj)hYTdhs0lIhZ{u1Ux z;3ui#Wu^D-(cM#$eW~qZyqEKMnp!U9mcyU!lboXL3|dVnHJW@X{`=ni{*mf%aNZ~?`gh_mm@Kgr6$L~NCEv~$$DNB@fqzt^JfCgPk6m|$dt*nTd}~y@`Dm% zr=@xbYkYu-w?KM(7hMeE}JOqoh!XcXc5L|Sp@?b1j zfDT*nzx*ecFre&@Ry!760Z;Ie{&MZ&2U zG?30~{kvGxx)bw?!|1>HWIAktw-2yLxdkel5s?|7pjL8GH#jW`w_(HGyV7#6p70(T ze}^x?UT@#QdlT$qXhFFqLT~W`v;U9#MZJqYMex1A?JsEqrIoFh{uToUbRdnu(+S-; z$aAv~;TmT06!8xW@7uljufANqeE|GnNrt#Lx8Y`*g2d%kfdsg5a7y6yS5@B9@*kOjZ`^!KtHvm;cup&o?@z5*{pYe? zz_NJ%vFsgc*-_N8ye8{8|I4y4k-bw#Xzy^E33!Ied){^9{Ue&^S9`T_F}a3*+h6=! z3N+gw;@%a$2pH>N2&u8H(7cO`dpEhw^r5@ke%+L@H3AL`WSzp|X*SLES$*vO6N5B8 zMrc;iP4J0lR8aKZgvnay9<#ronIb+;$gi)fE z)$Wz+^kf|r&JO(rcW5O|WAICbk3wj2gl>jl37EaHK9w-P`X!N)J3=@J|0` z9C)hp3-Z;7Q9k149$l?cL7)K@Y$fdn?dl^{?wG45g56?F{Z+k zVu<~~oRzB2_(ssF*SJPEMJB2nd$9lSNd&kwY=6yqbM|fM@BaG4TYDc-BC2=mldjNa zN?Y8O4W>2{OK*=Dae@88jIHe2AB9P^+Hxa~iwk1;UKgngiXS!~o1@c1K?-p+juG7~ zMyQ|$(!uk!?ihpUdo7ncrGvokZ9v{Fr<43mdo@w;k{O?xG#5R7^!?osz!SJcPG&I5 z-@Xx2hOv_J@u*bnlxgb;!&em%mX#uxIF45F`|E2_8w{W#wJdAvp=`UjCRUzU(r9Y&$&C^Com%6@V3rL{ z;E5)G&}~31JW&Pb>U$9cJWJ);iGOC}n7Hd4bd@D~{pT06?#JM1?64Z$pcu-Uv^|}P z5dtx%Xj;(XMuR%(dFjrTc*|xNsfhrPSNVF=a?=7Y)8HkOAEeG2Z_eg8u8N&ni>ov< z$oHZGszwKUQd=x5$tdt}>V)Fn7mNr!OmMg5NMnFr+Lv$c{j*<_&)?KM$gdVhbTr=fjR1(zn>rHMd$`H85eT~BCVdF&_ z!h|fUY`fzhW|<$2a@Egk*&3%BzAWK6apCcQ`BvA{^H?qa(NrAkud#8o89lxa6Z9bUB2r$;fg6np9Bf9b|r^Y(@# zs4e{T(`DMFE+=QmcSfowVe}Ufrw+nYmlydApe9-HyZkte@#}rt;E8)#w1P(vJRp27 ziu;!Gfy}a@pmxnFO+BP%!i3;YWm&5$0HR1+LV(y=NrVU|s(^Jd3AGzswJrk+S*plu z)nzNZ`@t9bJxIA75?V!R2oa7TeW*EG_c7|R2MT$Pm|^=r^WuJyN0Od5_YUi2Mo<0S zYRx3h(WP8j>hHGSZRTdr3aM9Ki9G$OQD!3}yh@Dx20W=3JsbN_54%e9zD^Y{@LNvI zoZ`60VI5}LFNhsDf3I*}%y!WbBFR;fj%G*6zVNcsWJcCA0k7LNN_eOQ{6Tcs*HtcT z2An{lRXK3vHRocfa)2A2IOmRbp;N?X_L1){Y>&R)bI1oV0Dm<4Qs?u_1PDfQs-JA2 zexN9o+zJ;au$V|>hXKk!E<_>qbW}ecg)x8#Z(g=L;a15JgyNo58@#&Hx{HkY#;}jt z8vcAI*c#7uYt5y5td;>}VaI1I{xRGanSb<$u#|b_mDG!WKa)MW)sY@j9e5G&-dX-x`3ob`6u`&y=qC@W&-vBhy9_zh!r`gi(Q*q%7Q1digDCeh*t;J`u) z*qSj=9zlf6*uq8g@(<=pd>-&QZs7yU0~}O|?KDsax6E?JZ?*gf$g|IJCH@2hHTPg- z6IJ%Cb37+`ExMy&Tpd6ee@EjB$LIG&Sk|75srXCsAjVbHjGWmYP_CE|FMfcJO;g6^ z{~@HBz0BrX$lha5ihrgUzujv-M?gaCD#H|XLQZKz~Yw^#8m^3qDSO&dJSPH?ufa^6{VFTxuI%c_H z@k0sso6{-E*x{fp8CpJm>w&6ae59!7j`s1c$=&SrNfAhpHPi9~BwXVE-DzT;%KZ&M7oyaW52yfSZfEyKMSVJ@0J8)g5G(PJ_|!+#9wT_7 z$WoJ=K8L!AH`YDW-U2}Bgg}9GzsKw2=93G)+_qk9_B~r#LJoO96_vsTUAr7lTf}8V z@w84i1CAhQa?wFLaL{zw>bWJ=_0}48)G$f1mae{oX1E zqW0pmW;d`;mQFsGlzKHF0SrWC@Ewri+_RH{n z5r^vTZ;eHF6FEvdM3xqZ*Fwi7YhIG@kv5@8`|fM4U#EEPQJd_zL$0z#cgt!Au93%s zc11bX934&9kiVVU8GJYlbiJaA7}xPPvHOxT;MBA~InndPQ^aDsKDu{UU~-&H<2Ki@ zM0R8-M_kyOwz8JTW+lh>VVi)*b&BD{g@fat`{pqZ^!I;<$h3Z0+DLBp3Kx9Cv}91! zGP@P!)nUpxH(^!DFt14yFvU!|lx_^+0dkU;ns)MGNo~+6q5v^nIM> zKM>&{%t`3SCpEd*(RDodb`mmv*Tn-K4cNCg;TLIAC^BVPrk^JJ2K z-?>83MZE`jd#2}e#rLW{cI6vTwcMUo3bW>TBn~1UA0fZ+1i~(@9r(N(QKkGcMh#q3 z#h`TtoMj#o$P4d4$Aiw`+8O`DmN21`h}fGg1<*Ud!-62cFHG9p+q5GKj%5 zYSecvSHjNUlWwE{Ef-I(gy-q{kG_=kTC>mK^ZOrOY#g~5iR|@=cFE-Ya*6d&hqVe0JZ>q+a*{)KOl80kQoK&h*a4JwhW5ssZnli>J*B+AXepkf&3Gx5&)Zc3T znn`0b$9vIE>S|^<)4&PZ|`$aWVxTX-jm|RDwST?VR3MDU0L+E~G;|{w!ay`ueZQ7AD@X&vWpHq2+_PF;; zn(;gE)!fqCrTtJ!r>dYZ&LRKEqNffQTXp48tA9@mIXwfsqRZA*pxj~U>k4qzYs5~2 z8r;SpaP&uPm{M74wNQ!uylL%e)h`_WL!eUczs=s=1l>Wg_kMzQQzDCXX)BbuX+iIR zMOZ7@;H3&t&3W=$Y|g3SK*d#q}DB9lX^pATK#1fSe>GsRRRQ02!b528K7Lckf-z| zb(^r`VZfx%W?OtoBVIy5xKBhu9U--oTpInjRn_e)DVS`H{ww(sb>4C={Z6FCpGP!4 zrj^!>x2@d%ykBK736y#?y}fx4OuQF7h0p{(h5tRQMy@saHZJXL;du8TppJ(9Nr^`L zn0(u(+iHH$u!d8M+{iLe$YhhQ>X9pCn3#u#zhUY~g5cx#MNsDUtbjMgmqcGpEZ!Z( z1x;gK(7o`knSunp0ZFE#JKrE`5qL{{FwqxFZ1wn0SlR7q7Lv)H6k>6o zbYSai3O{G?gE1cat;GmuZbE_<-ON}a0d5DsUzgK^Tm@V^g{Ms)Q04@G)DXZMlA5|& zJeN8?@NS#CrG1mFsN5TCm1Z=F^+@M_`>qAUA`^5~EE``fX-3=V%uN#=m=ya*O#95! zz@63SU~<#in80UarB-cJ088!|Avj#w$#P+qU-`GjBuQQzq{Yo^fkfW*wNC>zI z`>^J(vftKY@|7u}-2V8U3Z9NahXI>~68Fkgfb90`M>M6QN%6+dw8NG>oT5X2zXei$ zM6JPF=F5|2-{Z1h>a?tvglNHrr3Z&9oYk_G!_;S2ET>jd(Z!}4s?`3&LKa46eTbQh z4zgp*oTwYaoGC!$xv4*QKDpgGA&@JYT(g&|I-y(=hIex z8gR{~ZqZ2OiQXO$$$h~*sb*i<;#Dy!^_$dD70#-~N;r$~jy1y{?UKtCM_k}<2fu!C zI;Ih@O1Su>6l)qa|X5nJpb*oQOyUTuR?PGFEAKPO-q>&vf4m z4L2j##b)YopxM8a{Ls7&Ged-X+{q77<8eetv!%3Fw-|i&29I&+=D^$0_?Tr}{Vhr}b*k4q!{)7XJ{j9?G@abGlTe zvf>JuUa{nl@<8Y8NP4D{sHtWo?&N_NZ6wToLj;}3MoC0L*ZapBVJ+MC&KKb&`jCsr>nAc86UhlB^WZ5rc$1^$4y_O)C z-ZX+&?Fp{B7g-Q!!5x9w-S&0#Fi~$+36uCFv zZwFi%K9;Nw3?{LtA;`gEi?27YCp-{@*U9=A-@{j=<0y!IZD!!CSZ3;2%PLwPgK}?Q zHAfFVbqh?4Rf5}i?@mml>5K3|sN8z#f2iLh^&JzPr~!IcT;c?_$d*Pp1v;d>Sglb~ zH?2h$Oj2uYboQ0T7OA zt^_n3GhqM`7BPGpP$bkk&Fbkk34rT^~Rmr#-t?l3q|uE+wiE4iT~5^`C+4-{A3 z(!OVBH}1KGeoZY_sZgI-q^C@jtpp)Lm-N#No$~s=?!0_NEug&|mW%;RXHJZ<6sIL< z$|sEOJaRaQu8960d$vQOD)s% zfrgXD^#wFm>e5!`gf&IT^?;}K!rZ^}Cfj|en$ApDSi`ujG1#b#@)9(G4lQ0*O~Cb< zu`p7Lj|%woR6eg$PK(tOw$5@%HnCRYV3=kIbGA!riO2FyT(c-^l@s@z>tDb0;HzUk zcW}dz`2kLgQd11a5TZ?DLUYsVk~);g?smx$+0&7fENttFFV!U;87)wtOzd_BX10w? z`-*B=>I5|H--VGZ_>J+04m7Wy#wH2KcE60w^m6Gg zx#eN$3akRz>zfXC-Tiidwxb!WV^q>gAF^p$ixnr~_l}-l@|-Qj1P4OCy{`B={H#@M z&%>mwI{&df!#TF&vD}=*5UV4JzoYhMLjuk2mGAA&h62==!Z?mj0iG-B{?!*K%^Cg` zI1AyGf}1v5FS0k0V()V{#g7-~(4pa-U;2cCV?705R_N6T*yZ!cd=(?bw1Tb86628C zr5Ahx24^;d^_Tno0BVaD%pghiAgrY%xUu7*HYRfzch3c#cm#tFz`^WoL@*W^O}O0- zT7T)ch$!gm=KDmW&;}F77{$J?T=GzTk;z>>L@Ybuw|xPBKSPdrphc0FxoN?kGv`<< z0G}A33s*x>aP@RL`&cdtBlxMdXY&w0Op5Xd8*$a_BGM4+QN;c^4s_cPk|}c^l~Ka^)uCw_1mq=#NIUn*n%A zgflkR2Y@92#IAQ(w#^o;YA&6UKSMW~an-)8THXc2bYPOm|A-65?vN+rNCI0W9a1eFIO@5Tbe?h$=}4xT`w}Qi%eW-#^+5 z7?5Zgmb#iQR=*7ZkQC$SYo^Pj7$Mz1k7A0(g~G3&?)Io1Id*)}YsQGt{3tA+f`W8W zI0=yqZ!RfdK{Amijuv>XY=~MjxJ_1~T)|sJNP=$k&LC%Jad;nEpN=ce_II_dDl6?d zrw@koUfU;S@G)7FhZTq)&ww}f<$c|K!|O6#`h-n%7&ZmtJs%XB8<_Xq%-KkOtzPXr z{%pv7TuqpK_Jf8M$lo`<_s6=l~Y6R}QPJN0E-AV2btnbwb!V>yvd~32BR0L0a zuojn!I3U7#gp2ajRscB@igdrbITzk7ug|4FKl^}z^;BWvnRVw^rqNtkH)D@cxgS2X zovhFo^b*hD3PT!WlXxpIei+2WcRfX@Cb{$EfB=9udM45yRq})tuz>&K8nik{10ulK z*ToTcpIoMC0G!W(45_rp6b*UkHzFNAG>o%ubbl*aXsJ+ zWtrx<(>(`EyVco9%Mz^f?Z+V54`1EwEVec3-2bvXO4@cIS9{b=IcKhr<=l#V^}Yb^ zetqre?4Q*o#me7MymP>A(bPA(9XYejcqqXNfLGp_$C`m@LVnPrP-g&XKY4h+ zNy0SgDk%UGA5u+Xrd9nE-}%GS72G?_sIEKT$%!Q6;$f-K@1rnoOt876c(};P(Lcc7vXuP6Ffd+> zQTZ&t|LF*Qm^oth?CH-5A!t6iQWnzJV;^;j+e^ zk}iMS9TM?md++yf@|E(!V;q=SNp0sQ(> zB)jEgQq(!;c%*m#$sKj zxlwD<`zT4x#a#b3BvU+vU+ha`?MY=PR5csaURD7 zlA0D6IW`A?n*IjGUR9TmHnkX^AzVfL+qw>8)#0p5bPgBW&o_(!3M)c2sm1*5&o-_Z zd)K9}nD#@*-cecNprvnHfRIIy)a;ARmKJFvRd~ zMf7om&c~>p0dRV+9I&}3Pm}#Z_B^l5l~E~NkK)xGMcFOJ5wwrJRKUp?4B*~_YjGf_ zTVTE>%1mR{EyMp=32YZBk_~p=4b){tBtf;Nx60eny)R4)2$9eHyS{%iF{sh~fjctk zDr4{72FBmzMoxcRwDA|y^0Z2y~a@*RR3{CAE(;%_E5E|nvUp84j{Q8%TAB?)pwKQ4bf$kLRqTCc*FHI zD`I>wr6V+qfN^2yQrENycGRG8 zhd7ceNPq;06Fv&c^oXGn9s5%>J`r`DY&h}u^;uu82#Q+?efXCZTW0%?y;2p3;`(G< z*K!Z#!S5=fzgV?-0i63(T2sQrjtLkzi@$7t^JC`sy~(1P}3r6 z`wk;cxnaaANfX~0{dEd9^_&x0%OtCGI*P z?Y?y*)-mlGh8YucNc{1v(fy3Z0X94<(OY?6nbd+ttar3FWUL{1s%_=m{g-`j#A;Iv zgjVgm^L=$zBDWu6lKEZtFaQ2rg5Cc)>`Sk4%D0w3QL|1c=OINx0aPf)F~}wCfZU4Ry*9+45#ZIC8g^xXG%%xNWpev#*Ri=Dis}n ziuZmp0b&51uV)=R@0$K)k)s}3=dbEH?|#f!Q}X+rY;{CBcYM^AXkH1W9Jo1Oat7I; z*#9}FCPxl<(mdOtH8}bL5I_^?*iX@LG{pD6 z_i4xQutUoEJW2gV=}e97!=y)wPx4;=H2Z6pv4g}bD?4tvv%c~UWm+k7N zW>)b-O&EzBBznpY3TNz^P-X!x|CG@oPlXn3=s4gU! z?I9i1Eek?xFtC;>$>nKu!+8Gk1-|d)y@d(z3J+f#nIxW zq^(n61{GAG_DmMt`us68&;Zmgw`#9w2b*AP@Vq7imhQ#|IHz|Vy(qp~t;Z~7i4{_= z?0D6p0#-i-a-di>*|7*CkpS;Temjq%Cl>t=1qDVl zrXo2iY~AI`p&OajeaX*+`jS-K1ji$50MeK+9@QXsnE3+f`JKWYJ1%`xJ?Gz*+EfCe z)Pedp{j|qAi{Ea)-0CndinXW!O>I{6FXN@usB0#ZcEGu9j;#)Aho!7Th~GR{;c4-x z^cL7Tci$Wm)R00JLjQDN4FZ$D?U2aY)2l%B3V@02N1+9WaKDuh(mmH(EbfMOhwr2E ziKUvw2GW5d0uujC z<1?`-|8E)}CciIyftmj%@JTE9^WVsOU?l(ds;BnrmuU6_TPSumqMlH;d?!6W zmzv(%u;@2--5)I#oZ;}to_j;}&T+9+q4Va3&JD+LU5iOKsQfhhU#ZgG_?RMTVhhkW zS^NNayzUKH;gd_C>#DD)s>s3B3v!T%}VaKOb0q#9x%gZX_WM1F(vrG_5Y7qrgjw$4YCy}9dK;xU)Z z10s?5-<$b4Y(P6!+&j#j0Lk34_$d%1j*>(C)%KwJ3#k%BJsS|>NKL}Kh*x3!lcdDV zAQ6*vy{a@p~C4BQ0j@ai8S{ImH#QZ&;rcm{#S$X z>umWI+$R4c=Jfu3p+w6s&+zn(I--|n3V}CCW7Sq}Q3D=T!AQ4R14duku<_S{lFl5; z;8jKxL0kWgL<;EnHW|2(Y?c84vt=)JRvnj-^5!kfFyN?5$oU#j*DV}pEnt5P$3{9V z0;N%Y<(0dYmFX^m0cgyLaQesF>CRB?NCE^<`czI~e3uBPeuMStUVHLMu?t&I8I$e$ zJJjL2-~U>ebtQ>72Dn=xpoI@Z_JD59qNEAxU~)s1sDY%cx|_lpkiwoF5>?Q3jLSty zA>m0vK?g8ahy!dGP$1gs!C4*W0jb@OmZ_ElPZ`HAYI&_?t%h3X0~2My@ok`~DhZ>e zH>Ht2;0J%FX4Mxa|7eCbD8@OU`Zp>!r39Z(eIkIzpM)FC8T)-hqDbddJ@d!MfckXl8fcHdGi?GivgMG(vFdUA1KjkWtNI{* zluTvtSy8rmxYW%mX`5~9SzRSLyBuo7-^g0J{)$3g2O4)P>`{zm?c`f~F6*bL+}XFA zcgqFrI1lu;ujw_)oHA)a{T+X2>euk1*s!a(z?AuK_kTz}C{w&pZd9#ED+Y$Ab<~TZ z<{_#fy&Z11y&Ir85nj6J79J>)I(_ylp$OG8Q3YKeS?bI2MV9T;CQ5)%ED<=S#LDIM9gJ6<2jwF{tkp460lhCu&xKN1 zxt?_TYl)x&BS4edf2#W2r$C`IRRFKfhHk8b)x0PCcQPt|nAk7`8BxQt6pjs^9sw>X zz;GaL*J$siQG@LUK%4R{0ZiGzBhbam+8OICPbN?t0MokfRrh4d;D~mrLZlW@k|ZID z6QE*{$%7YB^%EtCcm-z@g+(w(0wRh1K$uFpGw#OvT<6Z{(X1v)4fgN*bVI4ZqEgkt ziQ*CVKnkhV;qx^^xIq)9Q#Q9oQ2i}R;2K9(?S8=R#^su9ixNhG^7~kHYs^`PJxf|e z!|%mgkT~Cqm`HRfe$0!?EGPgG@4D0P&0iY;#&3YBfLAFAe)NVkWv$i`%}=}^|6qy3sBKzxLZXteoe!I z9dJJC?>Zm2pEt~R1KQ)+s?+-MjHa}pqNyX8*L;)Ay4#YnNGS*~;W&f+V7WPlCpQ?UWjCd--0!4M_YtLEA#(6O~AODTKjR;Hrb6=lvF zO-<{9=cC@EzC)5d>7sUHgM5!vjw~D&2SA`~ z0BydY$=&7DAWG_SHs=gFzFN9l6e|RT!DN~3--e(7hM5j%)~6xWr9)lZ%}qW->!xE) zR|2IZI&y~-7$rA>TQ9Wtr!L#n+_=VwEvVMClXy^F9GX-JkTOvKO$f9Z{#Pe(>;Ycq zFyZC=+|auX!}keL5?TVZ2+jteG721{&opbWe^~6!!fu%roKC(y)#?9-VmN^ z{%U1n)vI$ReD&QV)v!!=5nv~?yjzcRQcY?3t)p+K{%lQ3OD&}}he=@yfsP_H(gB2{ zX?M*EmIB_c1fOyoFC2oW;-$?$VhdHZSvy|j90v4UZ)*hAX#Pg&@%M+vUvi;@I)lHz zy>|abugy(z1xJ?xJYWzAee0zbVCtW~ZjXL2qz;v0x0(W4vSCAjt@qmZ2LSLafEO5Q z28d_@+PjOM{id3VS5RBRnQ$!|quZvXo1xZFNWvo|psk6cF0Gkdny;NQ_Mh?h$*mI^ z{SysQr;W~oi_!pMnHZm-%k3gkgC5p7S9n0N;eo#}AT&P?;R*Qpm3Jk-cp-u{*Y@`C z?snL`TsNq9Oq3Np-YSgR>p4e7L%#P?e)%gXVzsp7sx-co@F5^hQt3wqi{8dLD)ByO z>%@4b+-7yVvH3@-RhQU}SE|VO`89UHlZ|a4N#On%?(B3cHq>8=&YgKhNBpYjs3dJM zYRLUS^t!S;5wcfvhm!RuP`Q4JS?%1qm%1ji&G8L0IOtyzMNivy^BPlxrQ5XMZn+%z zR^@$O`vJyCBbWzDVrOjm)`%_nLDKK$fBJ=PLdj0lQyZUh*D*(Zp3 zTunrUcZ+>B_v?on^dRTP?XP*guZ{bGGz{Hh3x9!0ej78mZE?aiYdRi+WsdKLC((dSxcDHW zr%h&km0Fft8nY&0t(&Ell)z$G@>~F=2xJD0?>dLe9+>fOK{s=2vt$EE^%&hUqP{ce z8oGu6wNuyOz{2uiatNTqoFP~#QHNH0a`i4xV=*m$?KU3|)#6{vuE>B{7@s7KHg7Eh z{#3Q}i)`B=GN;P*&5~PNK_K^(u^?*_z&KebjNlEhY zVu;9|K@1B*zWN^WQks4fr4EJBoc#O{vPHDL)^xr!tJdU(<>h< zWkKp)GAIW&=dV&oritps4Oo7VTG$AHkAr}w(Q)=+xc3;xi`68*_ico7C(z-*3VUsJ zeK)I_PJD-WCkMQ2*KTrap!D#G0~(;JxvUr98v6E!kKm7&RF*cb^xbPj(Gt2Sk`LPe z#*|ZYgQ0#)W%_^iQw|zDX`2Ea|Pk!cL* zklq;V!c%sD~yLy-HwQ_=Gkxh9%t!T}d zE}b;s=-@GWH}l)f&|{5Wij>k4Zpm7bhL+@D+i=@s*z@eZx>8lbPxovx#bH{yQZGc( z0)H%db?qaz95nL11>R8jP!ulGx1X#2>AID4hN{-n$pdp6+DCOI5-KfCE=ccBXie8V zoM#VV%mf8wZmUwvK(p+MuTv(70^>uo8#FwBnZ1S$H&9?Ymq)igMLzb$irB?O&7k$E z#lhLkT3Cr`w%8=3FhxDICwdKpGZ_0vZk*g z8zV@>&VQJg)Fm~_9Y2isnaZvwRd)VGWKAy<0dCVvOo5~6rrLz4&n$fuHJHs`gdb(T z05=X2#D*rNwwLP~Swh4U`wyp?=-89x#1$$c<{88Y5YFXwlQpuevU5tTIhG+3tYb@?vm5TdJUXcFK!ypXVIZkBWKE~NslOJ+YCV+G|}&;-(xMfYeNn{ zTpLdCl9J^GK`plO08cfs3f@yBJ~zCK36a1`Gx-kUaNEyD%Ak1Z{R1$T1?HZJ2g ziI!9$HO{hBL_vX}g*yk|%!A9-Gv%BU4H;~9+Kn!A02Kf44LKA|#AOlP*N4nFtBgoB zy}zP}=k}pdQICYCuwWKYGM8z@E)AgpLchY}RBOAur_hc%>P2aNH)eaHDjz24&~Ryn zalJiPhaARSr_pUiQIh28$I_8(^pm=H#nZ(wfF~KwC;RZhGh2KE^8FQIug19~OwoxU zi*6_!ow)|rjX=NZwbmwHs#8p)kzNozp}p4a2?OZymf7+Bj(Z=HZCOb@sUu~k4$r48 zaHD9sFC}+v!zDBok5NoI&=#dJ|g=CGt-o*28Cr)B0yc8+0VSrW9f5IC5gKp28i?~vUZz^+?Tf)>4xqMCt zsY`CLd5>|meet`SrMraHl`TSN{Cw9A&rN49p*DPmOUX08Wmu%Gxbg80Ac+E z?%#q~IU>@FkRb)40tWN4$JND#IqX@dC7oMWt&Mx@4>_yS%Fy0^UwuocRHRqKWK}wD zysey3{X9ItvrkSc_s7cfj474{;YjT=N98;A0tQ#YOVXuR@^VXh$GWy5gM8f`#%uCP zj39BHxR~u)CfA&@jcjfq?e6I;&pk;sc4*gU1CiANRwXrtmhj|`wvB1(QN#INcX$h_ z&_&Czd;sfw5r@jvr2+2&$1mdm-Nb84r!ZBBZbs+SJ&MOXuyi99*c%wx=6*lu zeII~+|7FF?1|)FF!WJ)bIxSoallrftq!q=5t0+dn8 zbhn&P5*^5wbdBYP1VKn0uZ#|=XG3mxOS_~m2Dsf?`x$x+|50ycE)~)B<5sO-nYC73 zo#sQA80{a5!|uu(PS2J)!^sGBG|WV++GB9rw!vG7&nGqZ$!o#wD2Ksq5+A9=aaG)T z{Bom)7hPF*Kk5dlv$*V0MUR?X=(`PgWK{ygQyKMx8C6sFU`)sE2qvUb)14$HN0~>Df^5M^{n5&cYS;G2~P91t1U5 z_4&1xQd|_!-q`kj!x-_vWUpb)sbk=qWY&H2iEnB6#cVl2L1nZjEG0!I#F_i8Yxy&{ zY7s_mrKI12Zc)ov)1mCnbNUl@%Mq2YdRRJ;^TIx~AQR#gKS(FF?mHA76} zu)B7R*+TQ~2{-%(KEXVNFtB8$W3sM{WV_sehM2pX&~yb>yG*42bl z3epSuw<*_c+=%h8Yq;_3nk>sV(u+5(P<2F7jAvvs)Poi;uLAU9>`zQt+cV{`=J>Jc z$bcf>UJXo{25iI>0ro&6O#t4{P0Zz2h+0Y;G_W2Po^PaTEZhTX1yjlLL?fXIsiyXq zxphl;_lx+(T~v$yn7)=g3{$`&)+M3MYQRKl7yZK$+s-4H>bv_2;Eu=mA-(l77t+e4 zM?od=9Q|LTXSi{>EuwZo3sr`!$cS=9vyN|g-7hW)EJ$u5r0$=uq1{ZUf1HNXC?t+e zrS~TZDPQuKreQi@p0_fAwk?_PzCAAl{=T2U9Doa7TEzB|uc; zpNbeVg?DE}xay3W)wU*;yjNv-+Ip}>G(_11fj2)+0fdTvD+0f*Jz*1X#-7>5F%TN_ z_zS^|Pk5*}6)(X1CLce@xTHv=j9}RS+IChPe;uZS)BOdoNt$5``(@*kA97Y$DIA3z z)wUNsg_LI%e3(YF9`m&DAe7a(GS;3l&hpD;S!69|x0udrja7zFLn%1xc~!f@8#HFRTqSCG+O8gJd?jA$ zSXs9ZPZ7t!r8gnjNf%o5hjwjrKYD3r?UTN9LK|Z;ZU~UD{M;D)?)w$+%W*jwLdX7u z2}>uV=V3t)pLKtLXg_q|d!?UaF|izvB+3%2;mSB3Z;859pi|=85escGTw&>D+>~iF zjEugMrC==OLBblIAQkEyUHWT16Cv?cu<9u2U;-rC=7c)7jPSF}U0$1uYNo{%Fs>;6 zuw2ULN#sv%?al@OEa7QP;Xn9{h+0zQ<7Y~E#PFhHT{a=lE@EB1nnX-NhgCB|HPhdS?eZ2stb_fpWOD&FR*(Bn=&otK|Z-gE%mb&f=(am#icaY`1 ziH}K9+ciDLy{cN$%vdy@h{}awqgK%EV1oCiO4EGea{CSEHpF}9QC@n{0_Qwy>9zD0 za%Y~}$m)KIjw^{<$!oz=IP43Vo7Hx-oU>ocYVR|WsIri3F1ixv^mSqQ6HTM}weDxS z6;hB;&@g)P z%9tu1z^1tfEN%(7bZ32PPI`%*@Ui!>`^CAtu1vR0t8$P6vD=p(;&W`fy%)Xb9W`+@ z7SUk`Sw|R&VBWxo=Hr9>FjtQdJhU*D8%*CQEFT5s8S|XhOmSBC>*Af}U!j+t`tKCHVSBgc=zQ%qtHFjq^#G<1rxq7IZ9b@NKI<9b zQ)I(EWd5}-kTQh0>#D4Cj(E0=6m#5%rpQ_IlZ@_V3*H<(O zrMs`O1P#A+?ltb}j!6$>(J=UE%L5@&1@1~M4Tgu&f_>-<4J)zu`dRIKYjP~@u8jB7 zkXK^&gDupY@D)v`14u4EJ*YJx^qZj96$UQ0TD%G~oX&qeGz^cG3m@D`1SE&NrGkUT za9!m$gj_5-feDQ{ZilXAiOJ+Q%3tept~(QkN)+c0&vvv&>kqOgwtd+&Lew1O=#$I( zI`F*gfGe6~9>JtKXI)tPfptD6#%@)L!uoA&a;P>x1=aj%XEx(-do<&s;~1+{6mBkrNZ~! zsH_2`Nlt7yGK)qVwZKizZMaQF$JO`2{P)!OVp0m&W4bf#EJQh5!TsD#4s813ptY?h z;vAklH31&!tv$>GtTw8d?N;vxj(GDS(uw0!6J~RMdpT&9R5r`KVNt6}Z`k&{2_8h_ zbX0rC-oqnaCfSy|AU&q(ML$X@&-A5CjL15*Tub;a*#R*K=Lh@jssDd2`?I?pGcbvuEwK_gd@w zJ|GCLa?YueRf-yK<3 z;y_*Pt|RJksrlz9FqAeNo^#_`Y0EF{zu2x@MZ+CFQwS^eNskamUZrRn^>p){H7mK! zqv~dR^8A;+8VqgI%yx)6)qkWZ7@jt0xYjt)ytQA??JBwt8deEAz^eHzujj|{W0_FH z)?8O4OR8&{Fw?fp!+cNS2%~R3L&oE4aV;#|92UNn!oJ)h2|RjwRGNFE_`13^9FHeDZx0FRO#^LnqLh@3F0s( zLAmSJi@>44)5rNaoUWH1S*TQ66ALGFA?14+GH7&7>DF?b1p~6M&lut4D1uhFFb_(^ zZ8kYg1iqW5;!@0b5xsLuEF9YPsEn9T;4K*Tqy+hJ*vCE<^W8k3UBJ|o%;3FI;mt16 z-DJ;;ZGIk&P%BK(ND$J?O`bF7LdEe4+V5A^DT#?iQkXNWqyfeC5P8OrTJ|AL1yE>B zr1Ptt!(!y{;^fZQ%h3zrkv%}Q9A`KR54EA8Zk|$TF2~@lgXvExUa+5H?+sPA!7UKO zz2?1hiidKU3#q(DWOh zTEGX)kSAZr^Cbwo7jRX3L(g1gZ0~uqO!BY8@T$=xvyERP*+Fa7n>}jteLNmI zd~t~lJqq$tu{cK-X7|2afiotAFkgZcV@woD3|PsG zNUjRc$^fgDnW6!3h?Fy;++;$1p6bz@tc`KgWH*YbO_ILwDFl93AkyA1@fO|GJV^Q3 z(8O+E`ALyCxQH|SqNBp>jCRE?7%%HHHXsUctg=`>NLA3}P|>z&1_jb$liobOFgBEb zY+-Og<+k5ZgFDyqk>EL1`sypXp>m?v5==J@#)ZVc)x9?=ygDgfA$0Z2UK!eRG+#kB zOK?F%uQtT>lIEx1q>IGa+(-1{-#-O$rZ><(w@G`pd38y=Xvtoi&yD|f+&gOXo&-MG z!-giqgI}PBI=r69Ln0m*aT)fxQgVYn>zkeM{$hE&;b-C)*<}-Xsw`N=vrT-ec7KWy~+l(h36er=1_^8TLfxs&1=w1)^uUwoW};RxcxJEamv#S*jTJ%I)@$(fcs{kIqOI zLd`F>;ev5g;w%?~z#C^S^66B7kYH%3_EGC%yoOcyAVICOYVsw3aFXAs1?ZZZ_f)So zYd$yhxwu-ELLz|Ah?D8>UvV~V&$|83y3HG6tm5E$T5ITLSGR`?k#Wssg@maGzH5r{ zYlT5FR)yZ`n}w0NE#k6_GI5&;#in=6i-fll&VJLAVZ0DViA}NH`*Q*{t;Xqvf?btH zMu&<&qx~Bc5ls(P_D<`Os88~nd*|uDKPhporZIJ&FdvlZlJOgrO6z=26iWHVY|q@# zJ6sx@mpb&l#5T#ILh)&jaQN#$?|{PKnqc z`R%1T#Phvju;+a(?(-5y%TLx%DuZDrOrHOQN{}D|hu2W@$&j<%SEi&K9{NaRjJ1B(}{ z8CB%ClNGu9Y)59Av+rB?T{*uziZ5$;NjPdqoJjm$1x)IW6^;_A>^xo;mFYX7!oJ@k zBy@wf<9?DG*qgC5hH=&R#O5n!IkH^s{G5FXT10NFSj26l`LwIzo(U>`C+>||M_S`% zVSXkfV0(ahQ&3Q9A<6<2UOX>JXWoP2>mUBl+u(Lk`|@;1S*`V$ujy-(B~R`O!1BK< z{w38(70FTeBe?dbZq95ty&R_>pInCm{!4)0x)Bzt+zT}6o(Ght7_hhZ@UD2lbnl(p z-Hp29qHigYtM`QIiqYcI%y#1Rg+j!yAgKoA*L6SddXjvoP_c{}BY6y}IOIcfVO+RL zA(B9I-Z}Y0r6$qI|LBwZZ&fMF#nExa9bXf@pYOL%`|8Ws>wGp7O63>sPr7sa%9ozm zUFS~=-tTt$_?jp`^md}cmB5?TP>&x-KPF+$V*!gufx5{%dqVHp=2~quyS%zCL~ZU- z%K2qAgO@r`!numH3N15Uq?cMMAE+?%r3qkezCm}8sOjPpKgVb5-3zqKmQUk#cf@(8 z8Z=@~6=`mIH3t59ApFiFuZU~anC8Ma1-5idI+)8fwv;xK*7nOk_m>+eS-m?aUw08i zP(uEbP9WL3p!^K)p+qMiHR%y^d(QrH^#{zNFlD8EQIWG;h15ee3x3{|eDVF1 z$ufTRr#SE5Y+7!~WteBp>&i?0CNU$0rPb`~wRf$)L2`Z#p_W| ztt|M8wSNt|sQsXEtfCR>h8I7orhY7=qBjiU_(J!wP@6m}#kfW#74q-ytLMIvF zQ;V#OEerukcw-8Nb$ry_u6mb96mEn}hn=||)iuJT-=NaMt};zAK`RM)#FcYX?gjLG z{tViCevgLICJh>w@mRPRK#N$$%Gt6jBz3$nK+<61+J&{7oguZvv`$(RT#k_?yY5^%=|_z4o-xNWKh(eLlzLAjZ7mDloEj~#2=9~ z=55kzu9r}vwOR6W?Zlo_FXS{HNXB(gTd{D*+-`m*SAB$tArDc%zf`%v{BK>a+J)_1 zw4S?_gSF7v05YIX$B7Mpuc@cXu~`V8B(hji-kH5mD{?g_VQ(679j{^;Z#rk0Q>oPW zg!A;s3NgM7cr@8Ym-%(J(ob%fzJEf6&N9Gm}tY&f+MG%|M@`)cWa)#_U~WD=k?A=Yp`B|mzxbLE=?K{nhNP$ z>>YS*vr>wX96Gj`0j#psIZ7HruqQa&B z$cQJ!I+i$F@PO1n&mw}){+2)gG_B8$Bqc)PKm&F&wnrRnSBvr*@bXD*oOSek>nM^Z z1_Zj@In7yx-wyS&v0HX6xFcEK!GkX`U9g0y4kVblSW#|vVqXdT3FuS8np@|PNmo7T zD%@57oBEHeXMxnjW5|eEAY-*xHwZ-vKg8>Iu8KXNZt;ikCGV_NaVl|%-<~0vH2BI-G51FWNoPXj}%SdZlg^IuvZAY78F$d;vVAu#PtJDQi&E`_=) z=SORmEy;n|+5l#&&e#6lqWHNI>nCm!FSnLlt+aSIw5y4&V*Ar^)W0&JfTVES^3G{9 zJ4@u$!hFeN1QRSzu`wj@A|KlomWc~A-;~(SqMN|&^Mp;0ESruE;j3`VAFse3$QbzR zZ)Djnw!NEJylB1YXDWz=*haYhLUl+EKYbb(@hXe@6=6P{p+42VGK5L3uD1Ckn2!8l>`vyYR{s%7tD|<0$tSB8cbezDHV9z8uR6bbvr$|(-%G$*mT82{cUIOo(!iBjtAX?(x^c1X(EgkOd7LScvOR83q6{-3h+?@$B1gj98LI&|;solbfaev~373JZu0|aO1Bt^<6t^ zczK}`T;EA{Zlj2l$E<~~-n{KLf}smsBMBn8*ek>J2U|UY$1_p}R@Yk$t_&X663Spm zD&BU%DE^o&#ZbonzzSH%&+q-44+wdH|B4`gER~69Vd@3|nd?EWGbFr#GFJC>{AE zR3rX1!!8p0k02+QUPaaqvY$x}#cjti?EO(#Zay;nqkXQ3rY!@kL>H_7W-xAACMhtaoTl^_BvZdD44N zjh;Jg&DX4u4zL|$I*p`)uMZ>|YFFM)wMhFh@9+j+B1+btf2~nvwfL08SADa?M-|A7 zEtWpLFo0yn0GLSLsc=%)2+a11rZi4Y$Sk8o8#|Xn|%jF z>yNH-Bdmc?ht6dg67ABw`f=GiEgioy?ks)VYq9}2p{aK&rQLZ9l+S7u-b}Kg}*WxFDl8!@uU1fp-e*)DDbC)6NFA*V`w;dh>Y0wI=_H*z8 zsOxR=o=I75$TNwapF;nJ{G3Dq5td`jPC;{``@>QWWBFk?ZYDBj*;j6gK1h^ra-9lM z27ReXIr3UP*nP45z#rwWabb_?y$K?lfQfOOFKdpI*88Q8{XrS45wi|M(@El=tF=t@ zfecJw67vDWXD^fVv_K0uH?08k6yLuspOqz_U!7J?ZiTVQ{4=O_<%`|K{Ac+pvg?slvpFjuOGRO;|~MIMk(b9`Vf zvXMJ1lpU&=rw7&)OTH~rZty`9lR$@J(Ujlo9*AbIrp9nha~K9`)!g&e`n0vCN}Yc|Kl<;e(7yS05jLHuROD{W>Z#Xl|x z0O7@Ld`;C%?EmeD0bt^!S;GCQY2y*Z5F(BxHPx~H(*_TUJ%Zwd>mO@p^1rN|y>kEO zt(`i^RREN8928om`V4e?to!1cMk=>|BMnuq2->S+6fPYpX^V~O}hr5~))6x>{bY@2oC+A(udE{ zjC)gKcL#Xo9)L4X%X!+tgu#$KsQHvcZ$N04n_|Zwk+xXFUOra@5${GEVdHdS4gc?sWdo&39TF@V#sbYiD@5J0XV3qrV z$Kh*A^p91ptZwD*BbOCrmz~z@sQ@%J8BQrss*&C4HQmSEVh_FgT!4u@g&|6Gl;3+o z&pH`6CUVM_0ogl|bIo(!b5)^K*OaY-db&t@`NMG4rdEK4lD)=%89kL}?ef#z*>@e< zQ~$B$x&T|Q(3f6YUx~v)t@ApQ46Cv~c0R{fnuikPf4s1mIqtipf9o`v6%rD9omS z)qILojSDfZ%+YJSZlWTQ2R;CDA4!}SQJ)uy26E0<{`sT}u7hRweX9d*|9&0Me8@_Z z@M>e93#?c64+*_}4M2U~=Q5b+X#x~-f|`=ft+tV8J{lcHezu+oOl%}eQ6 zn)8V2I1R(cHB^us)B-QYw_nW;*Uh#WbDR%|%1D@f#5F zdP_oa zvJxyzDPd=gfDL6|k$r_w@aty7c5}P3jQoB76!(bRJZ(GHpnBFWwgud;4-ySwAws~7 zur(B82N`C7YncLjL4bwa+VZlhWkLE%k*I$!vY zhns!-n4Z?Yr@M4P^*6p{+2J7DpC{|2J4zHhP@pUu^99;a@G}oPKjy)MzH=~F&vYs)FEbj&F6TO`yZRrn%p7!@l%51!@tiF zYrvA|b^~*4)6y@IsszcJzr&Tr?~sxVPCSo)XEX{LODry}E5Qtr<>Gd6hQNQa(7zZ&%T@P8E-HA)qdoIqJboFfyY>8Je=+WVas@z8 zg_dvSq_?rpuFNB#Vt?zi<~g13ufWC4C)a@JHvR&tO;tw+wgr%za(~o#ZsF84J2mRQ zcW1R+*@R`;CZD~5b3wId84dB#(c2!OssyDN!}ID1mw#THWu60e%G%jOqI==ffYy39 zl_ie-7w|Qt>H#c21?BR~tU5-WIox|WeA9Ndhhr^IhBeRhpxr6NI(q-(C4h!LZwtiT z6=OD6Lf)$fc7D8pzF3YdI?>d1D{lFX!qPvO`2;fZrhE$idh`?oPFA|omg!TYtBYsD z(qT=KcqdxU^g=UBv-16R!%UJC;+U5~3FQAW-TyDs{eLUd z{g0XU(T5DOza0EK(*1oD5kYWW;FCmMhPe9aw*`HGtG*xX^-Wg*qDY%OV8kr=XYnp&Ud#2dsp6 zsM6IBcD31NB?eOBz_&X9!KQr8_J55?eNj#2A2>eF3Oxg05GIL%)7aZr?B_kSom-H1 zi$k*Ul*v4Uz^d~HdlvXF103x?$e@Ge!+k48bqxBIFN3Vox(VR0KrH9~hQ{N)4u^or z1Kq$POow8_H;HG|R2w3J|g zE~M6Qa$oTEIQ{%Dx7i7G@H+a7(*Ra^ zD6HlDC{9hxhCz8!&zkxXIMD0?H19MgFrytVAbLh_1DvCw$}hDwC!Fd;264LCd^NaZ zYLKotAeQw5tDNKB;g^>0qF|*1%(1g`V5zA&%H5S>d|0~#i^+x}cslPLD`BY4P%a*C zq{@HOXM*PV#iStsRRY<-8!pmIO*3U1MixkWYtPoGMHl#H;ilOqw`3pJd+j?O8ff^FN9E17!Y$>wE%%u{VJ` zjJ##;Gqjho`k>cE1zNxmLWBRuSwQYo<-#67(C)qsaGwZG8mtR<9_ToWwQ>DEL9djg`Wp(n?}@w5GK8XpM;2 zO*6cZPG86lGXU)0&y})Z;jdcG55rXbYSc@a_w)A!0uRf;A^WQPEt6$YgrxveF-Nzj_8xH`Ow&Dw8cNggH=~bC zcgpmoZ)~t2n%|!q5fp5) zoY~i61>jp7h2PTuXUxS^I_TM)1s)@RJs5E!l8C(F)*X&MzeZtbiWuNUdjfywEY1kT zIQ9Y0_ZR6;4C2tHVlUF8v0XM;_(@pfO!QNLobX~pT2n6LZ4>Mo;B1+s_Y6UsfO!BK%TJW~ib$Wqk&@?4%V?p<~*QvOiPxQxOrx8nicOG?F!X9Jw1mv-sy z1Is?G9~4B$W6EsnMzsjjIei-9 zM$T{4v8ZJjN*B-Y*Cm<6@H`fCJ@GVNEUZa9ZFU8qz&%~xV&%G&bvZWFx0~ly=Iz_~ zy>&{k5M_?*dT4zz@TB_$v#tKVEvQU;bM=LAAfq}Qs;xt=NY2Y0JQin4K39Aw#werBmJ1Aj z&?U19*6dj_i+k+W!8h!xx$5pc1fBeaB;a4POnMArQ6vmPxZ*#4QYx+D1GEqF*~PDV z+~H{5O0K%mE4r29j|ygmf1xE1W-5?SGJfX+;0fM+DC8_r<#IaYt4q?qQU#Qbin(q?-b&! zM^4OK{5#^8Uky0Fq(Ej@nU2DUGsdzZNUfCmOjXFL$5@bcD#SC5frW0Ix~L}cnV3kw zpgNKhMiKZMAeWq=O2$UF@M!DIc_D{?#D_jWdwhrv!JfINL+&qe_cA?=_`xSN z0|tCraVUYu{!>R*C<#{!S62dm5~S+9W3-{lA02%H-fMvs69G&L*$ zpC64m-TpFE`SQJliZ-LtTL#igo?j={=AUAV7k#fs)&uI~{f3*wDy76+C=nmZ?SFH{*0ufpSIp;Gn)vE zQ+_aTd>b}SM-fS7aYc^q<&=EQpc^pr&kS5+R_KcN1M;Q7Gq6fcs3N%#qPWY+8__X! zHv=+61!WYfg*V?hMBiKu@SL6w`>u~^0y`24W*2IA5ZLh@w45q{fj5aEQjk7)_`b{B zi%MERB6pH@#9KLUp19xw$b218aC0U(RfX!vPykWqSF`-WU&U^^3p>}B;w-wZdX>|u zyq=zH!MODW<+wcL=R=X4FTFizFw{G{Tyt+23>+WUvh$Z_CP%K>R5;|QE9CEk6m0_E8HAXCuQZp6ra+KM#^CyiL}YYO%pF(WqG6YL@l zRBy(TJh>G~nEZ7O?6@8)y=oKK5q%S0d>==f{y{9C2=W|gqD&{>P$j5gOW!KLw1~TS zGf2|=rEM`ArHWs@45=rR=_|BuxO~Trk$~H@&y(gz824l(g88!Qf*(j%u+nCIs~C{R zBStj=N7D@4LuBbL-fQ}|CMS2Y7%$u1sQfh8nT@ZK$1qA4M?p7y36&G4x~?dDG-^$< z*(p$S9~GC4eWOD;S~{z<%{={3kuY>B9QU0eKOM1++adRSx{TkGTeqBpu6&E?Mt_gF z%P)KHIs)B(jXb$gNOtj-)zMvA;qzu&s({Dt)5##A!cm0d3MIbaeJXCRA@6w$gwYDG zB}XWta2a;uhH_TC;%&x)Y|U)vaaK4!?KIX~P~c_q>$m`z0eyq_hb0dYL(He@;P!b* z8u?CdZ-g!|)d9%wf93^|UI~hpF8-uv&Ek6>D+1~TE77PoQPaG`N8w`O`p28{g!Yyv z_vMKmJ>$ftjbFv(p8{}udnDbF2x{!{TiW>q_4}>v;w&^6$<2KTs-s| z?0Fu-Mpcl6uGcHzBMnAngk6;%^=LG3*E@@`PoG36gD{PW8|(WVq8GVlpA}0@vv`|o zWi-EJZZF;McPRZElhwGrM;| zN;K}Y!Wfsj;eMvB&iBIr(tD$k99bYH||_yy!R-*mpt z#q5^$!2RGP;tY98#~;%3^F<%v%2*no&P>iw8~Y8GG7>U2B&|hciSh#`{O{9P;%=gP zL}7%dWl#MV)w*LEev~1pC_4DbH_Q0Pj=a-Rx6o^olB-;vU;yT$Ag!8m-Eg_bT$DND0Z$bCnc$uY8u zkRW*-^NZ))gkaAuy0bHycJx z*M-N$96lUeRjCked`{1?x(YZF)-IXRzZz*>)`d}V3`@%M;pfpp(Sby7!!H1OqS`(@Qsgw@Z7`-RWAn$w-%+9vR1 z|FHRDUzhSr4)mNdUpWtT@5osAD$Tq1cFE3fhq$!>2^&JxE=%`hXf_g*!xsgz3Cv=Yjr$T~3&^q3MN6fHE3%1UK0xQ6 z))iN$2gKdC+|^QWaSEV1Xm)X?v_4tbxnt8C71FGc9NX0@AyY-~% zMe|VosSd1h)u6NyrP%P3>S42p?!+6ZBge$mN7}q@l|=w~5qHiCj!aT8y{R2e zu9(|@cEI3Oz7J7?wIie^B%^K9`jLt{P{PvBQTsDknTYR3QAi$Q`Sg3!Zw@K0Zi^V~ zXe`OJMn)ZGxth3ZzN6jqY#3?%08SJM79S!zW}DAwKi}S@YE5esAZx+$91{7ax+}?X zq~kZMECW_BoGC6f^lWon>jHiHP`G#~l`i%6iwasx66zExQa}gd9uVFrCIR*VuDWPY z{8RfP&D9--Sd_!V#?-EliJh#usu{s@5xmS|*dw3?`Hh+3w>D?L+Y_HKyITFDq*lusow>D!+Bvx_MH6dQwSASFqX{^-iez4S7%G~9ef*$B%0CT zXE{j%b^E&&Y_LGJ6lQVUoO=$`t=7eSIAbZ|{+Q^9B7Kp2I&no)AX6hD2L3vU%Bg&e zs$rQv7I!HCb+Fc}3Y>R!;+Ki(ItvfQs175ka8;fS+YG-%PD4F-!N?7Eeiz2XPVw$S zDSEuV+rd8A62C9UF>YDKs8y8IkPl0$%5UEE+j;x=RE_)lxEXh1Sro&Vbb0;y@6r?R zGU?$a%cUc?o=$HOa6}+OJ&8J)qytXnj?1q*n4AdIm!dzOEBh_Q6YZ*wQARh^OD zcF#kDNEkLo5vH{`ELRGg%JbSpv?A`s%W<`%#AR;13CIfFiyuICv zBpwF13&w;*sSw>kvb5?R`|hw4}^Ek^%3d)dks7lr4L_k zojRCkp-AuW>hP|4S z>O?Df&E{S%{IJYSdiH|Ujs!`s*rt`EJj*Cc%Rv&f=J|!qFFvYWkMv?~Robs>)UwgN zx5KBgtbZXEyjUN}_^ouS6|+EGKYXP$91*}ZEiw7f-=3kY)4^jCK#<|J&bDFkmIGOhFpvJ`@A z^}TB$pDYJY#?ghvBc5Ez;K&@~v8nUkP^HX#`)8Q8qF-0a)zGSE*q2a#*G2AAy}5c; zQOevyru2cCGqf*S2A2HeiH+54t^%VOS*7hjyv`F3NQdTp}nh^ zE6>aH=~&QLCM6F7RK>uSPYQ4Z63xo;bSjRZ<~61W%ZZHSv79z2(Ja46C|IMgx+L<% zAK&o_C`905s|R93qlXn9kP5X+Oo?P(e58b+b~td;RHDCy)&CJNiYR*j`h_`kb ztSrKHROmX8hm;BhzVRFBj_m7cO>@w+o$0enmHz88wB`LyB>5JMz=tnT#JhX}5dUX{ zm8fcVP!&QGJsbQERTlsJ0qPOFx$?L6|6rWAKcI>giLGZNb!4pVHA40?j?-MMzVL1V zg_9l`b@SlwP|FKo>x_`rvL2k-{(McLO+7|4ljY#-QJ7L`wy3qOx8~fSROT_} zae@{Fb8rZ+Q9N ztSX#0*#5rlvLWhbI3pOINdfb!98mroCy>*;c`=&UZ0X_y1A&;5HTty;u?gL@e#d4m zz>-Qpob9=z$4A(Jka7J52@1mG)j<0XBn);#*ktW06OhY^3eG)Y!*v+QcsvUdth2K* z;F{Py@vMF-WVC@#|W*P@lciLC7H|%pRD<%S_e# zCIl{iJqv_0G#4WJ}8VJ=ufijzw#BpXa2bb|8PFVA$Ud}>=SN$EWR}*aT!C622zSK-eKi$ynVjs zPkH5Gh{q*kq)iTwRQ;wt$667Q&bih)jXuR4t(RYS4WV5pJ7TWCVT<;rR0c1!UtV>;4hrUlx zDu>*M+zO(d2{Kf-f}ATD^tf&W@mCbcuduK~QR!OUkt0N{612R;y0Z~(Z9dypD*v!`@xdc1TChAdiax_SINamUDYoZkxj|Xo!+X*<-xcdLYNBG1niWZDn5uM0C8Ed0LwRmx zZGrgmtIWLQz}{S)80E6un@|X7%Y`6%yHF;KJT}So!vT5~&XHCff@qcsB8=%#TVJ-v z^kDre%QKk`Y43ReN?A9+{ER(pGQm< z`9Ju)#jwxo4>6OI(TQJ{zRL4zrpksPM9EsuZlZW(cDINaPGroz7w09EDqeZ%q-ae- zno9P4jLYSvXhB!(nAewZsmv>8ON~U{O!S24w)izY8D4wH{ft}4KTx4^H&Ny59qp*C zZ9ocmUdqUCe}4^=LBMYt1K&?0sH*lJ7Lps3qDf>^$sT=|5+?1Na|dp|Nm{UUa;Ll;4Sc zl%~;`Qg5sua@fRglT!=-oXJW-9QKP_-2Fr0J4|e44z17*_)cu&DGyN33Tfc5U{Cmj zds!F;_9asdcRx|hu3=KfzixIo|LRF!e)aba_R1D;=VRgLCpM&74b#Ka#%l_!56joe z_Fs}!KVN!K*g5J8$0$x>)a~+Hvh+E>ABAmlr@nsHd%`H5%bDDmMsJZ(@d9-mQ}{+O z9{TwGL|PH0@hAQYdZSTk^rwBywou`|K1I;!*K=^v5fBPNm9`-W*4l>N)@^3!&klfs(zEDJ z1*-+W(@LZf@hQyyTdqblMzM3Vf`j0ssKCx;os5!Z9uK>Y^rSC!+CoRu)qlDpE2d|t z+4rW#Y1^F+V~C}<0n61ntjjW=svABX`-PJxa+{>goLe{}U1 zJBR(mqHE_L@>|YkW~=#6`o;tN`Y8Pel6cw;I)i2IeD-|gu?bK_7O7kb0sA`a&!dcN zhD~IQQlFJg?d)hj=*b;6neV4*$jbU>BqC`Z>mRIrlcNTE_(H3`4;2LPcLBA#Q2h8) z&}NHtRNbC$8m9}Q(!goTQ%=r$K9r%-RC%c?n*UPJz78SP0i1c%1iee9ujoHwqE{|) z=jAKFl=XVVXRh95Ki^MXl=aXw!!Ag7ct^j0Q;>6gCe6!piz|ks2&wU_tcQ7D|Kklz zWrz$z3>-u>X;^eeYUQWFLf6NO5^cZbMd;)!Xw^7=7v=*8dN-i7DFV6QwiOTyS{TU1 zTuLTqs_ppJgv{Emt}|WxaCLdu1oy7M<&k|IELoMOjOPg-ok@sP{FzM0uF7bi*zNpi z#hsYY<^AW<>gW%bdzh7~FP$e8q8W6I2mX#z4;ZJ9cN3rZdp`0fw-uIqM z!y+BU?3^5gVfFm^#@gjahZ?t`%W-+9C1bUxlcY`$3`WP`kYB`6)~MmOKBiC&hNw7F z`JCo@6PH1aayk%#uY;nh?O2WI#=Ey=l8VpDlv_)lTZFEcX%%UI^4webwAdcBA>L{Y zRKdb7KA^I%1^8e6LD`sZiYH;1UM$nFP^tBVGQq-(7N0|sE_<;O2OWx2nDYrN7GyT-6y z#;XDy{wCe${-Bp^V7oS&JMF3*pN56IKh>Gu$J=|wh$30N z2HKvA@I+6LyIgR;X6gxu1QUXW#}BL~wygoz)|*d%KLZ=${JVgi>j)p&00Bh&l@3+oC9%C60n>Q8cu%2Gs>`XL%QT_* z1``n`{1q=4QG4JR^evIvOk|^?n`ZU}m89Z*jOCWiL~(K(d?PeL@xnh2wN_$Ty<3y*cpK~IO^(Xc@)APfrfUM)N zpFZ}F!pOoO(u|szKaaZK(`5ph7f$wQb^H|F_^Du9A@mV&#osoV|Lx2qyGvn_TC4qm zgMz6hvjw?HqoV;`Z)l(Ivdvt1Yo-e4-H@{m&sea;t4qDVVe^E@oWri~!+pMyq+Dwt z%)_;J#o_>&@LKEh(wvqvbdIq~ z4W^J{*0RFis=Xdn61_t)Nr>|M#H8M4;<=&`+Doj??eAM)tin$f^XGauC(Gc?Nr>?wLNT~|;9?%-LHKV0Pg7?rA z$OQT}g_3Kpf!ngCBF`jLm&Aw%K zEgxQJ^DU3>jzIMH`7cf;-(Q_@h=^6~>P&Z`fdJ{L+pl3d5mmgZtJXv+>B4*yjmk}D z4ZQs(_ey*pADF9~wCP%=VcP6wW{AMnBM_3GS9r_qQlsVfjvp0Hh0;4W+_&}r^!e|Q3IWAEOP_fyo${eFlEP9+*3tu911m}9^Mq^MQ(rQn4-c2w@|J`-#hz7F-522$DQ42V|m00)0Gox*6cr_dVkdK5)JudIa`|PHr24B6arAdXC#2iNtKGwu*AYDY~v>F^V zBF+ppR#$SD`x1*l$bdYM<*OEgC39kGCpXdUZJ;q{wsHSi)fKfn6_@)S?0qAoZJq~T z)OUKwBs0?C0^jq#~U%<3iulLt_=$CR8=Q$AJ#tOS%a;fBqrx_a)A@<v`^t!>LJ z;^+`&X&}7qFC2!93tqo6gT}zxQv^0p)&$_&>j}vJ>U_8^gZf4&YSn>_P!q8~_9-e5 z+_#Z}yDg8K1k>iJ!An6Ai3YOiI8*{&djXI+$bhxpZykPdmR}G2LF3>BSsXoL65l;; z0_pe0K}1B};hc-w!5;j=&;bNt&G3S)trjHj@&e%aac+OKQZ-N?c=6piU>8`uw6qr^ zN2A^XlmiEMFQ0pN1QXl#MAMyIfZUmiyJ9}I!aHBDkaRME=WDOtUAND+u|>A2_c4*@ zbwdO@v>zy>1XI_<3kcWzze%rxYb%AMdjxSn8eIf7MRFurP#VvmtZp65DtnV479Qap z53b>NH}oia*KHZ~#=>B|!Je`8u;a{}6Y?Ir3;o)cnZjTbJ_g>HrICV5I3-9RD3arI z-_)hHzSmBST)pXkELHt#*L*xvDoFNDM9)iU!vJfL?Kzp_6f_7cYc<{0>0q!kGZZkIIclh}|<`AT1=n_x~KK1=cx$qRo zz!k2b_3#rDZcC91R?6&ZZfuXc$JKRZ%^eOpY>!$r2a8T#*3Kcu#bGNn#!X@;pJzeF*|KMxWOMM+pxH6gX*;5wu}uLrvaKEN+F5OBkwSBrcPr{y3G zYX8}dk7J1~#Uk&A!@yWRedPL{=!?3N-ZNS7w!GO#9Q5!wGyczbo*cDYlyKGmqCWsP z$-sBRV8QmDa%l_3i`u%%ep=&=DEefwrSvlb>=iO)BktxlpNyB;W)W6&r+dtQ5_aD# zP*Cq+xrc4yf9|G2$OVcZAem3Y7fd#tASzg}7r3Z#&;ZJ}s6PV~|Wq{aX30tL&eW=O19FEsnwEulcR zn+~MD%jUs;asbl2v_Mo%A?E0tns^D2oDq)KILyAsMCOF`cJq-lp%qY%su7vSouyao znG-Y=$+XIf!O70(?=cT7KtAj5xEp$izAi294T*EBo^OC)j`rOJXyb5tUQ}j0j&cXXo3nZUbdVyo%ffp97Y|V@+k%4oo=ar-f3l?E_$jNbP5;^sI znRRfB#xJ@k45HO=jDcpV#Q*&s4fJDfw0{`eR`|R4tFJ18gHfFZ;mCAsyayG%$c;Ne zuga;(J8&LK#;Cl%p-M!3PdPyD7YLDrqCeh$?ufA>&>*#B#k>!P4vT$hJQnYnWh4h* z&%G_?rPcAjgW3ZYmtjjH*K0B1o4RRDgsE>DrEAh0z?cmIp{T(u<+Nv#(ttCTpc<*c zCKOz#qCvTIciSHXHj^-khvn&{=oaaG;UIilIU=x|dHMWi_cKi~Nz`XhIOB5;xk>(O zw#T;1LM-qS{NBlke@t}*&y{XbO^{!Tv|cW8>Ux#1>LY(e;nt;52mIb5(H6#HuJvV_ zr1AQ?8?nyl>!W1@o}`lg9YX($y|<34>g)GL>5vozHjOmWAh1OwlukjqHjN;SgmibS zw4#7?x4@>mI}I8nlopVgFNcD!LAv=87{M9{~2>su6Ub0RF|XgEz!E{m4Z{e|!h z+FS>%4ON7o&xhiRqz5wuPUiu)Zo4Cj&6Qa2DTEg{RX^~xRn z;~~fZx9y&Gu`uks_c>H>1E=HmpzeO9@Q=m3PM@FKyifds&H~Hk(g`PU&boz7Uw_8^ zv(RJNSJA2WzOSKk{TYMG!ENd$uLRRZU_kj|1(zRDA+a=vHmA*42lm(6{Qzh5_+j|% zutNB11ehrMB6l_vzj#lw9n^j1jUhD}YjwPoK4Cw=;B!kBHgibWfm`9p@n0V2OW0d* z5+AoAEd7CUOC$;muZ~ipdB-RMY%ET}hWhG)OD+<3@so=BpyD~_ zi-wem!JhYL3-O&pv*n0#1r-cdaKbU0s|QBMI|)xk^R^UJ29;o7OxalYT?3@^STvp8 zTmD6-3V2(x5617>k*ix+OYMJWlGPmTsA_n18=6YR!$~YkW{F_!4pEb_4^r-7NjLcZL-*Lo5YR*OQu!^#@uW5KgLb65fA z7}5X8zQ%?_I+T_Aa5$a*iY^4Jit?Zu)NlJ#GjGCS=v_1;=$Al-FUL3P!6AgjB)i0Y z(E8`=ub0he6NG7rHWFo5oUj~|KN12ziC^EPLsv6%iWbsEHtYgOd+4{iI1IteUL0?x z7Hp1iIN|y-eV5ac)lxpGDqPBZ(I@09Fde7%kwa!X6T(FH=X&B!oT#m7oKJKr9x)&i zaRLWpfhW(e`(IAu1g)L1ct^s8to>HDBJ~^WK)(4zgYtr_2aU!wP+6^nlej*I9z6%t zlJs7$VbyTduUS8G;XMoGKC|RbjU;V;H)NIY8bh-7!uIP^tvy*Gnyr|2e69yrj9Zp1 z;wu5xf+&`Oms~~0`=)clmher&!t*(jfc`s_AMyk{99bhem%@1agw-bCH8xM)cyu_} zVmPB@Fm%(VmJKZt`Yo4V8dYRvD0fz5VCB>pt$b}h=PVo9+Qhkc+i7`_Hc0*K7#L8h zT;X}$d6#=>8SPCfhSl0<<_&j>ccwFFv~!q{PKdlVr~BduyR2aNlv2tqbQEwJc$r($C*tLUPETcnY|uo`DjI-++|+e7&AiD^B8=dAt_Hj z$6&tpS1bE+po3B0$i#7rg7WUnV=LImDR2)bt;M&93`|A89f3c_Z{D-zkIieIICeJ< zU&kNQ{0$kWb^$n0j7E_Wy^=vxholn4WGR6v`Wzl_BC z1q*85#txXeI4SopHD|T(T0s}!$qafotXDe4xd2DRUzP|Ne+aX!G}t#&x5Eq1;;Wnf zbGEWwuDHAEquX`S&^Axojp=1!jHI{Q!?M9X5;Bk0d zFrlbC>1Df+?E1Q8D3gRKPUbx7Da9y|CA(3h_l!}vh1H>A-4Kf();=5k=ya~r)-VZ6 zvO*)EW+C<^%&zEbK^>@9-$%hPY0qxQw=l4)lmVwy_O_)Dg}W;yD{k;340Q&0;zaeQ#6)@ww+bZ?zlA-BCY{eTC>;o1 z(yci^TLmdVA@C>jpGMk@6;*GcfMub{A5 zy7sWS}I?Z4kyVEK%}f6m6mndkmxt*785o3p4rTy>pMKYLO>7W2*pgp?sf~n zcOT0c#iWE?UIMc#$527$N^jJIdlB&Jql)w)TV`3OKf+b=Qd_3Y-Fow>zego*e2}U* zN#u2rByUeuIuXu3hNbv3Ck#SPJZ$fmRMoofR8Wd%2PqfEumo9$LKsGZP1N)wcK&k8 zY#w&GqCMyJh6~Q;6vPs62b}rxh+dOXz=5_UAx$kMOZm8G<;}k$8<=yR7v-0Im9 z?}=q_4}$UgPLxo;SgvvrYdf=>No&70elh3`BeWOq@^0Pl@pi+L^>m_is!AtQcz^UD=Jt3>_;)!HdzT5yp zxB>LcAUL6D0e^iq(`$?_33A=({n&W)EeVEcN#=7Lld2^hT>raDWPze+uVOl_?Akqp z_Wqo01(k|2ygx|1ZSDoytbo{Jdo6>N*gxYoJ$Ra@vlX2o!f$MLJEU?pGcgPk-qM_7 zG$$2Y33DbNz}T#0KN2G^?;|Yqk@s8p&8lNJH@o&*Wt+@ieRuYu$_u4Vga*Gzj~j8k zZkw4QdV557wVvE#1LlELgI0do6?4Lox5c%4wES0~Jn>@SzO=g2AKRzo5z|m&?62EF zMRr8&F8zU~iez;+X1_K}g*sZML?ZTjy)*9b4itUah5bXn{^RNs-_kjPRUCKAy9Wan zy2;K28H+=s1A-F6DcHF-ouAK0!pmvsY>S z^R3OeUrEj2xysQ$%8O%Sv7ssc7O_}~gH;$~a+@E$j)5_{%Pw4S6~Bk{l2Dqq%Ed@P zqWGMmt2R=_u$KV5?FY_`o<2DHQ4%-}oQ?woBi`+&a%r2lvjU$ooKsqdTxG{_3a`v& z+9^O2ky#?r@hN|~ykarP-rRw?gTb7X-aN=)YFLycm-$;e50lTGj?{=(XkE;8_!%cU z`$KAW^uqIz(-vkTsP92s8pBOGxZ(kK==Ry|mGiZ*GNm9G8Du@DjO%AaCd%F%no5AH zWR}bLX}jpdnD!ItQl5f7d>;p&^q5|5SR(}`R1~=dI^%#@ zrrQ_i-XGOlK_YT8dus}445{{kB~c6o{13Fh6@>AINF54#zHmscLsDq*2EVJw7);;} zHt93;)KqX!4!o@STzGr49l$4}R~VAVDH8f4x$|KkDp^P=pY>^U&|AprBxRY35XkQR zF8jsyz@ec|rBSSZRE4~@-8VrDk3=4(6GX2y>_OydoZ$9(iWIk?$Mt+#Tkt;`cq*c$~c3 z4>?&=cmMLO^pKH#v}l}4XCvOC+;Fh{CpZbS=dNxkNIB|}8P)9v>IAv>;)vVlBf}E- z7Mq-> zdCND`7Y|1o+fKOyFxT#W3my+1DX^B*L793@K&;c0_!H=nj2W=sbJTnYDp>c=Bk>vR zI@{*&pD9LmRu9k0ZP~fb(49olJB58U4C8HtSqv!qEr9d6`qr?0dYgcQF_ukC;017B zo$###yKYTWP(dtc()dU~dx` z!n88=ahQZWp9!sHB5Kf4KA(6a}E$d%q~zeguB_BLmnk*N~5l#+(nz z!H`T}ZcmNx%Ke7)E{0rS94<-7zPHm_)W#X#qI+QC`k+FEI;b~uzB!A0^Qj*11zA#0 z0yoZMIwJQ`#uQUz~_G?-($8lNftktksV`2NcS8Nx;~kc9sD1fzda#57D!n2{V#?LqIszrE^!bG70A*<@&a21CrnA?NO1oLC<62W5nxz1 zEJ9T|rhy+1dzSGT4j$a~CqC=XfknK+Sqf4fx{SR9VRU0C3zfo9h6Pk^b(8-zL3x%u zG+L2CWlBwof%%68trIBd7{0!TBl@fL#_y^YmU}yBa49wjGLaPG4-`0YpsG12TzjYx zN1e3yCPC)V^)*?i1ABJ{!+{jJ8Qv{6pG87gh+lAw4;@CyppiE#;2YUXP?`~_p>a?r4F|q5=vxgs%S7L5>WO77d3X02{ zeJTGRL7~K-T|wlWtT0O5m(?NTIU4$`iU9m?nKn*1BqH#5nMi~aH5(rSIR4hq2O3qH zB3^$NDV$~XUNj6@{(E>2A{2VR)beO`%#Xp@h#vA)2%?z71(GYK?;Jgu3zrz$n-g{X znbvl3XO-LicB<0zpck4YmWc&1n+XLplU29b)ZnjwR~Rl?#A%sPdg*zVLn40_yRi8+^SK__U&$%hvKGe7$QQ z-+PJJ=)53WAef-p>rC$v`ZK9>^SC7J>tA)DxT zlB{Hlb8+6nUduVi&j&QVq-vHu#rD1m=fy5x`0Ozvb$5hcIz2J1q~5>fhr8)N({#3| z#oLvwOYs5mfyc?oGhr))NJ5th#Y0yK;}6+4Tq`o2CM4Yp))H#s-t-}j%aR4%+izm8 ztJNEN9e1xD^VU-U*-`NlGD^IpszLz1~ zKDm8yK4^X4)xtcmChTe-m1 zr;(WJNy>o1#7CwJ4uLx7CZ4*B9DMP$z%?0^kZ3mIgcW?%7~DS3c~HGJ)?B)*%{>-q z>44ETJGZ!q@vkbUB8LeI^N{VkI0;#`mz=ed704fCc=rY4(83v{4p2EfU3tjio=>99fzL+azjg9L*oPqgSptYnA_Ip(O&emmYVx%yxg+^s;sfztEns`MtIX_!m zBZ{*-VC(-NqEW9mWm_-zT9tjIT1@pjs6h1>t)`!+R!d`-& z01JpG&&%pOZ3D_@GXy6N<-HDSU3*J7eD5FkKs^aw79n#?p5o5%6&1 z@Bq2q*~G8UXp)VOG!6?W&{a9Ox)Vum>;Buyyl(?=hNHSc43AeQF%6YjP9Gd1Cd z5YgGW$tefM@DrCe7@#ycKNabtAoga^-oH(L5+EsKHV(3i;yP@BAP=zyv+Sfk?9)YC?FivAGAWNJ;d(6JuZ= zS92ETxS;EM>GJ{SJxe?haV;3~Uc$`6_;?w3I;tcGEOzZ25J|Zua8!JvF4Tp75X^hAE|{!g6QIm+Y0Xlq;Xv*O>ka z7OylHR5U>5n*X^5cX7C)yL5s32ZLbcG-h;^9NjDF*YDxwcMMD`_HMP~l2f)Xb{)`> z3(MSOixnE}mGJcG% zBla zCktW>{0Z}sr9b*;(4``eByPW8@GcQp6l{0|Tf?dvs~9F7$m#qoBHt!@m9S6aB2 zcu6(Ub`MoO3a|JOWSMpy{7)G2O-PSYS8wfmSQ;jW52;ZjRmIQO(!ua?DES2iNC%~`GN+=~tS4Zc)tA|)<=GcC1=mSa#Z>2!l9+gC7Vc)_ z0o*3j4hkX$3r@0k$YtQa{??$4J(nf~F__*ib}0BcY}-#zoPzc=G+aFMDPIkk*aE%y z$=^O9Wzo`S7{10lM4L~Fz#9U9l}RE!gU&F5Ndx0x3SlgBlmt3>{B6rh+OLLAXcKoV z?%^mWr1Y&lCfBpvV8eOzrhWcBgBG#c(sSC(ulmuK(slPDl>0hfWj*J-UV6;DrBV8b zLGcJgz|JrM2j_935iucP<_=oSW1DrW?2I(r3H8v>1w`sY1E=P<;=+;H`+|qMSJxyi zzl{n-n$11zqvPrvXQox955N~CsUjQ4H+JoPQ1Xi`*@T-mU84+0yz8C`t`Z19t}bi z;SIrO_bu4TdFFWH@d=Z%ej3D9E$}M%HG0cd@ix`Vs-m4Ro^yn=Dh`mGN5<#CcZj5! zd4#%x2cw)6h~xSSQ_dp|3WG&-%=2+@6uRi=c%r$+#CuV~XfPrX99GD`~rr zDP9xl{d;EqL&Jw#2bd$onCg*uy0*6weUG28GRLi=azxnOwPYl$V~H5ASlp5FGsADgCT2Dc*y>`DYw)C?FfcX5i9_A$ z4aOp1Jf{@aYD8mD_S0|8H^zrgb{JD`b3=%TUjW>qfDAI|!zT<9nOw21bx`R2^;F!m z;?;WW>$lcsGfjya8s%K3jWJ$#+fGjQJD3p3b>;anso`#CcfZjw`3SaPPW(hLU`m-R zW#1NK;10I7U9oZ_j$mNtG!IxBo^E%EAYdRJ1&TYx)e>N5JA;WhWU`7%g*Ag>Ai*zM zP;N{g>kRhT7w>ykLp1-sVVH*ACfHfk(uZ`0ZtHEz;x~fqd#j=ePtPRn-+xfM=SUDA zr1%|PlAjX!?1d@ApqGqI#$Z#~^{sC^fwYJ%*S-Oax**>&@83T!JRl`GaZ$9h3;|2U z9DY-vU#Cwt8D6|xvB3SiKm@M+L98bNz)tcaZ9F%uLlwZbhStJ7s8OymGkn-BnfF%a zL?;QR_6$JS@=kJQjWqq$dE<`8y@P#lt^67n-}t8a&eO{LB#DZ8;xTCP3=JUNTBmHa z{=%O8EkCjW*i-Y~yLzNGYOl&d8>%n@^zfya#|pqv&~`uVjym{zjQxcnbn)>p4EWg7tOakmJ!46hAQ%q|Db>PRYX zndM`hsGfLrw|_3&y+ybp19kVYoEMv*W8Nud1;zpvc~OldfWfLi`qy*lZB>_5vI|P2 zou^^ah}fWG&-oBkq+ujV=78rxowU%9hW_565MA;(0sxw*Nd_Ybbi>lJ+|Tw;wAG!r z2K`!gKDPQ8d?{^#fK>eCZab6$pA`J`7ZPccX=h08MYd>b(y-dr+zFjTa8OCePX7h1 zU6SQIjG%A^Q6^Q_kQ#^5K>sqVn_rPo<&CCIAhZ#B{l&o1Y*vq18=0$H`3W2e;=vsz zum~&8sZ0cM83Sd(W25Eu=SD!6U4J3QmD8GfZX?2+e4DxgAB^Pw@(uvD{XNK^_@CD` z82CaLHsji!5wuXW4!Z=%!4I|oLK~yqq4B>lXk1!}4_|xXKJ0urgtRyf@TxN>o8)nh-aS7ltB!hi&GoYK9&O}(r~A`(KKE>EMAX}>imoO0MMIg9zS<&7o-Qubt@mMWQjk5u$Lsx z3PvAIA;QWheWMqP4;LiuhKj&rc`PzB@oWb9o35V6}GhRk{FXygu7rc71RA5_5%gRd!~> z^6bU+xqg;q#qb}aogcy9n0I9-(n zE1ZE(zs~N*cMg^k=c|j8TfrrR4O0H+=y4&fQKJ5LVUDw9?$lw2qSsk^-5(Jz&x!$>^4MCcRfz0g z*vzymXbfU+fq<=KE za}KR|wFh0z|7O-CkbL2Os!7vmz?wkT$FVp7Y?4CE? zU$o`y-?tU7QsxxA0{|z!`wiIyX$)^WFpa+cQz_F5dVr1nye(&D8$6*AFO)L1;3jP- z+hnr=?*}ojv~sW4=VQJV<+L`Z>E|-Wg)>?mvxZzBTG=K>#k2x8D%0&(!jFlg1+1zo zH5-3b@aDg`DX0~!i?pqL`8~gNqSk+EAvp6%;*8f6=RJ}M-`1^v(MkZAQfsw0epW<{ zVma`TNj7Gz2trBOBzn6%GgZPx@CRU}DAh_rTcbv(*4jYy z&vHsZE9p9gFK7_Irn~litBXvp7=UG0bfu^3Gt9L{)d=$zl|vW51lwuo+!Fyxb7p<7B>6Y4 z=vFKuy4~R~|GHH`qzO6~D4~TdN{9KcU>0=?%jjmXIW)YvSJ3m|PCLLbvq*NA)N%c5 z(kgxf{!u|PFQV*p-kN^8+IsYhrDD*@^-?g=RE^E#vG8voS1i@pw^a+c8pQzTDW38d zzl*>K8AK`285(bY#=lhYzO|y%5pY|EX$c>tjd}~2Li^QM7B^1(BZ}Vh-E#mTuJh3- z7pmRh&7$J7IVZG|nK?FaeNnpUb9&u;vE?VxkUHjR@Zc^F|j z5~=L>cnJWsiUlQ`+;)HudTUz3a4X zP5a%ew*&}aNq)U@DdW##A1JWGXOn@oE(l$}sc|6UJbN{vGM4t#w^?fnG~e89rv8Z| z_I!A9TDMPr>#pVBZZK&_1CY~|`#rDc+{{S61C`C4)$+PiRjOL^2~>h7dFl?(vqN7WA?|Nr_3oX`zO%lhOjME2>w{NjKmYEstvp-An2 z{WV2%@U{Q`YyWe&|9jm2!?ODC74jbjWWX{|cWo2c#gvhA>*qpy>P(qY24{5bi&<5O zJZN9pO%8FZV;5ABRhxkRcg2ZUz)TqVWQFemUWGqdzCTNNQeF~e^?6O5kNLZvBX?&bV979b~zU)H%a#Rn1j3?1B{4$T+&6b?>8 zg!i5hU>!QH^TaIxY_V3kF*3bN-LxS>+OG^8fU$rvh@IX`;~F#aeizU-b!pQst_I$6 zP6NH6p>?Yq2vPu^e5w{ro$d61!K5;msCf_mbd!f;XrqYT+)}AuWYpLOAh)t7)ML}W zBsLeu&0%E^Hs|gAhOunPEs7rwF?V@iM0md9k5T&A+6(~tNnY1z2lIfjbpli>I4u5b z?&$#%x!1|G&NR^S{IJUY4_y`goy!1+?b-hFHb9`;ThL>?*TWaj5PFffpAWb!u?v5| zKNn)t`#k*$(DE0XV>>`B@foNe4b~b1(n|rv4=K>;@p9w_e9UtykuBbf!OgJ_=is9% zXvPPz!Xda-eI6sZ41VLJ>chg)x`iTjB(;dc)QyP0_X|yVnToq~NA<6Kfhe%;NallE zu6X9-C7wHY5?Tfi`LImzmq!O3A{!?v5uGKjw~&+wWl+&=)4KFh509rtUf zg0Kyw>$U&kN&=T-_5VpdT-hB><~9(<-JJ+SK{Ki70P&2?;{a9AVjj+X@J!_PJUSqq z!cG+DO^+#@Qw1=n$wz2J;Bj}AWGL8KaOSZ=S6z7W1{1fnoVA)HEf z0m^$44LPkSI&bNlkV0I!j5QS2!#X4%BHlTN>FaVS4*faGCD{1E>wk??T(}F8AHZo2 zz59Lim%X|A#bCTdhi&Bvh5NV(w&H&O3mO3TH+XkqLmDm1DDmfHCm;AB71uXm)8{VN zJABp8G6-p{K5i=n>DTm+=Do#w$Eo{#-H?3nwO-=!#o227bei>h1*8B*mlr&@^-#!R z3~`)N{;}KbizHuwU>PUx@1yB!{gV=7q&^bh@kO_aGE?lK)N4nI+8+r#e!fwK>b?Za zbB4YynCO~lg)~LqY7dnoT9=ZUpl@Vp^5YZi6QD;r8#^EIs+F#`-3M8V4yefrx@~0P zK$yX^-B_0LL3p+chvgXF;#baoHBz~|JpBvdYhKQGHVkP(L8=CxtjT>(Uu!FgMQI8! zpHt>t1)Mn_jc6_S91Um0nBZg|XbO^_RMGFVe9vvAGI$MtBb|ce0)hxNa!M|ajZ1*l zL!=21Q)djWjvza&gr?+sj_Ea;&EAd_m)BaNoNyuG!-V}NE-U%$N?lD8ak(DX^`oh0 zYSUmgUm>;@G}T}mJEgQ>nJNvS@xa#>3YC%riq`oQlSHA87l^uq=ih@Z z?i2T4?S$Au_+don%F-C?QcQ57ttHfeHz^Q9*DO-ycmU*NK0Xe63|x))1KynE3@*d8 zGWmkO=v=CO2j`NgYYinN=$l3vz4Cz3Rf1?ERynX<3=XMqwoNRhG07MV1Vt z;SRbk94a&de6H>BntEWM-atR{g4f`}jkXDsS|mO1hrRl`%mSz{{qoPOA?4f&|NmYkFJ;it_kgiZ%g-s(5peVZ?@Br%*d;@yHJ^zS)zLE z+07&t^cSj7FqqC~%&0(ZSQWiot;CH?S zs+-Cpu`pfIC6J>#6nx?QK!Ex#QlB`;0v+}EazAs_b`5_Y-$n6Voakuwt4 z*#1;KjQYajqDbuf2 zgz~CV!_QUiu>XY%sAUmiKUX1z1gT3AsA3j@cVBxQl-1G-e=0FcfGR&E3gdd~|8(1a z|M9l>fBD}ui2}N!X0_EY#A>dU0%XKIh-+2bOXn>uI|pPHrh&voNf;4*86gl+E@eM6f{A7kGUC_#?0)bx}2GWQISvS5_Tn}IbzytWDDYe01w3u5!x27dwk!|j}SaSh0GKnqBboU{UBWvTxx*lnf( z#}O<0<zS`WVh?I5LO%i7c-#EB*CVd zSpd12sQ8r`HEDkZ+6>!(e}-fgHURW8ASX{>h>DK&T;nB>@wXj#!*OeI6CxiLgRKB) z3}5a}=EwhKlnIWCvycw3{gDK8)}Fw+veXtL5Z*uvk7OfffW9d>4a{Dq07Lr&@Jjeq2$+|f zwp(K#ZRe{jMLCZFfn6J%gN2dWNm+5UX=~O@=nzHj^}e1T{M2Q47)|`&Z>;4Wcwhfg zq#O(*xjsWHc(m`SLJf*@Ux1)`fZi=OumEhW{lLw%LmW)oa^&em+WUsK=RiPVL62_pSZ>&Ib|NfK*f02wb|RfCsh?MIy5V_d~mPv#IC( zExXXGnE5Q?iN~GKN(>;#gg)6h!S3S4DB)Z-1qt96$#*}{oOYn?7Us^>31xURQkqv# zQqsnnM(+O<<0oj=k=E|jE%s1os0*mjWD`NOQUYK6G|9fxd5{NFkAy}SKTr3<>u&&g+LZ+=s;&3VZ5+IN#lj^U0Ok5nkdTTh6sYIa$W`vQnd3wO>otX}M_T6$TaX9eUyf~~`yLe@ zfhh`u0&K7(l1yRYeuedjUhGJ&_E zkmtV1$=h+6p;{Cy&1JH#R0=aKFb&BwK z8YHv!&SM>Yo{U;@GG~Jg1oyg3WK#WL2NVAwaAKPQ-;?f z2UtbAZ9@^$eAY($It=1710JG_rWO@43yjbPTTk??vA0T=8#d!hK!F+ckuC1eLsuC8 zq(o5*hyy={iW$yv@zd?jmmcH(hDBjDE1s0U*7=#`|#UmCoBFdx?nO7P1CzG+#B;yg}00MR0+g?F9f zcjK=>#>*C>Aa}8C2*!|snJl>0JqGgPS`g`L8)$3Hu5AWl(-rV4b$Et+Mp@5^qlQE; zU_2cd%S@iPgWb3Gn8*pL9W%dMf8_18@zAB*wv>< zg%L)>ZcLN*rh&79vZIG`kWu z6U-`paS(GCQgr{O55q!HK-$h%7DV^*ed#*)UAXS3TZJ|QDsOOfl`H_qh?RozTxESP z)4-UP;Og%|6#4<0=%`T!fkqMOHOE1L!@Y@F*T?x@e>TCnQ`C!P@npKOc5Wt3VH;D! z6^IyK944|TB^Q81^hasopWW(sR?Nin^XjZCW&foHu%Fz&i|V_78)shcFQ>Y}d36f- z(tQe;tsW6ovRU+9_`}1}aTYPWBdcXq~%miyBk&n}zt%n`1h-_68dX z!=CI5T7;PO5)8!CKGc5a)PdW)_qEQv$1^?+Eb-oeSkFYRA&wPA{=2z}3a>uulHgRo z?!WGK{zk~r-$EAlBq@snDBlM~OZotlow0dboP9Y!U=8*a1HOIf7XUy~d?RZ`fJ6O7 zlWNGU82ck13bTwKR&})#Dk|L;#n6&Vpr5|i=bHIEy9KXhPppIkhV1?Nozoxp74S{= z-+TWYxAr!ZqVdU%NWXtYCPt3l7`W6eJOkOLV%fTVSI_{x>pu3LnP(REE3#G=WkGG8 zfZs24j+;%|2=g6+1py-yAkDwUy$T;C!eBpc0p49xz}|+g$Ro)sRJ-hrI7PKSYn948 zSKQHC`^TsJJ#po}doRlF{W!GwgJ+JjAIXm)XD$E8W(V^Tu@Xvr1b6O;&2W&hhWM?4 z!u*usS@%L={-bCAqVMbS7S;x5S{Es0gU~&c*>vK0F?SY-G$)~$buj9m!3r?h7ht}m zUaUws55b-%fDh595#m(kkkHtmE+#bgHQ+dS%USivP#CQ>zZK<14kZLu^H-h_#&=-~ z$~r7~u?WHPKT_0b=Fs0o$GKv|&1NM)#?ZZDk*HK5Tg#)wPMALdh7qcA&j?TsaIIrFeoJFmQ&sj({S3n>bfC#F!!2ph(Y>w(03_V-@k|JDomzofmURKB;rY2_(WEE#E`Qmy@i}iRj~# zZiNo|qNF|lvrhV#S)%K2o|*ApPL37htg&4v@5_2r$DRN}yko;Y&L&O9UK!}oO;YYd z-Yu-viIv1(HV7HX($-DY(ys;Zh+}B`zOkKCZj`?4eMP(jIqNL|!le*y{JGw?0(JNp zI=z0S)+O-mo%ZGQ`H+dGMZ$W7=G~r+fP}Lj75P9zBH1Q|*&uUW zIOF2j1}=I)d?_a&6a9r+<9W^32yQ=|QgT>Hg*#`r1Yj=a6hG?wLM!3dEN<0t3X4>H zU~|D)o|Xl7B(vT%jp=-q)ra3pZ|H>~fR&atw-A@L>?5ApA4SBDN6z&e#_23hKO!qk z!4~+T>TdqTF-1l2kT#8LP<5trSoPHFI%8R)U42PJ(gNfAI%5XOz-O66Hm~*Uc1CMX z9zO&wHm^RXU&VLY_+nfWV221_w`pmnfz%O3CaBPi&<5d| za^PiGot)T)0HuX2V+JV^`BmR_S2lh7BM0doau17w?gzZpU~nquHYF__QNP16Dshu` zAxo#P8KdJA&Qj3?&e|#l-@Pyw1Bh5)^iJPc-d9jZ?;%-Uw`-NRED?;fXJknEF;Wv4 zEJ7YeVa^9Ys$o{*Ntph=nCX;h(>m?1ydS*gM1~)N1(ls03cDUe>y6_bk&AyZ0s?i~ zdJV#!LqV;8Am+Ip?ZJE*8sl?pV?nf9qDA~>L)N29ncJXlYQE^|&u<+dxHo~Z3EbhP zby_d9PJq72w&0|58mTy4{qyn1zjCFL;qv2bGEs{cs`HI@t)3a_bR6^FFLm4+e zJ_<9guNPA@&qXw;99%KUKNzk|7|!4)HI(JK66qFs&Tg!_h+udP$cm<*{ipWs9p?$y zgpS+h+dy)w0ma!fYAXr`ycUw;r*r0_=7+%UGU2I0%;kN0kpQ+#8C!AXv>0WJ=G8E- zOG1Ap&N~)tao882e|SgydD`HV1M)<>)@qpQ%HQXuWHOukWGa!|*@qxJmSvqw8Vq)x zw_PI{OAaUiQAT|CJnc*7%FlOsBolNwNn^MIg`k{xr!KpX1w0tLr^5Eve^TU8R^MAG zk@!^i*$Z1(8S6`ElPzj-e7Zu2fe!3SfWigMT8%S~050<#9HYV`rs}GvLV5$B0PAGR zQ->~f265FzIY~Bc6dxtQrODwuo?YlJwDa%!FuG;jpNq&VS;U$zKEN3S4oK1n)zH#? zI6aK$LJwj$$5Ay0Gle+SHNF~3+v)4T>bH&1v6#dj^#plp9C1=sCMQ%;kaCG}ag5Ex z06QWJR3idABA>X|nj*9#{>|@Qu7>qAbi=`q0L%gPn1bzsJ>b?iGowAbcJ`{EUwN@l z>?nF*@`DuFoI{*C2}x(*Q4uX{awIC6#rJk}|o z4^rqP%Py~R2@-Jk^gA+nJbV$QKl|onwArpRfftubpPGgLO0XlO!ZxJw>J5+{^5{wc z>a{;(v(S&2bH98btVKOe)vDx>ziL5l`LUyx=C4;DjD)pU^V&P zF}XWAl)w$*ThQjaPQ6HY3e{q~)MEuPn;n*qPlPC^iccF*NoY4qKz*Q_ zz`8dm6XR~=u39E))RAbQpkewcB*_D+8LC-CVs6`-zS{ecUeYKQ68zf~)EWS$W*_uUy3(OA1MSRr0jy^5Z#%@on-BdDeiV2j%2t=EnE zpi9tlMvy}J2;M#0K~vHgL(^e7C`z1oc?T;g z2fo6W))up7ecyy6ynl%=onrTU@?py7uf9Dol#MQ#dp09%nEigBcfmr+gi%CRt5 z=ZW>I^#2S}K{Sy1H9{#N>~GDI`TWPX(Jtl?utq}6^2l#X`#WdHqcJCCsh6<0hFR25 zT{RCoGhH{B_Kkw5M9*z+VLG}~9u)sT^~7hW$v~nJBToHT=jBvi3RJK7XBCp;{cHWj zh!e7E2cg?lV(BJLN4mY$4VwH33M)CEx$XUBUX)%fPH|qtSXKzCFd=Wux6)2$(lLE-nh8EG(Q zp#81`9%DXk^)3a@IPvSD#i7fW^_+tLzsr-U$|kahf>dIWofb~8VZ2kvlyQVGVsVdK z_eRC)-*S4RL?2wv5|gB9fC@1vbkjiP5K#D@hsq()oAIou9=8v7r-B(5Glq*j=z2w( z9#a+Eo^CV+9cF3m^KnL@=VKq9V;x_*Q}%*|=+0oi!M3URFqip{Hf1k+(saMsy||Yv z39F|6>IN$KiT)3v?bkgy5zVpGB1ORFz8Iv3LWw~8MB=Ji--7Cd#94~@E>PQcHLX+w zveyZHgP=bN$53|xuIYsU>tP7#SCM?KV8OfAZ}IsI+2T!uRaD5+dg(F^G@h-wtfY9Y zS&DEz826u)1Li5&q3a-b{m@IUMyKV+kP;Lt4=A1G!=hPH4YAW`a-xJl^Kx^Hl7xK# z=rq4YDPfG}5+pp5_v=8Mtbo>@=Gu^&W({cc6vxp%l*M`%kEWXt^rcI?a3G)VTmk9h znQuc2?l*%ND1+x>R*kieh5bA8{Q7cI1yXw&xo0I+4yL|HJxA6?!vkon6#)U;!tK!W z;aQa>buyz$v(R*LU$2r^XoAyTcpKVSR}n(0y?Md zs?$B8UTbUv#7Eg>6(r->Qnq-@XuG7yo|urEjl+fsxgR5=W?PFAvtGsL zfFtJrt?vDiwr>*;M7E#PA9|E^lfxf{yxZBW#x`bP3W2CI=oWmw00A$M zptEo={sy3%z|EyazwxCFbju2{I6%ewFCK21{92p)&=sT{kg_o(tCu!(Z3u+;&`_g< zwZ%_>Bo#`R51fbjdquksupPTjIu3cqbx~|sN$>!>$?xt7`7B}gE&@=sy405rt5U}z zO4NqR+ssSh1Ao=O$3Kt3#7NS3G~SW9KzgFVOSWBXeh5hXTfwVCmHcY@WdIA|UIo)R zIoOjFS2)VJfcUpMd*zjQ8R7K6-3GwGfTX__;-^w9S0NSaqV8JYXeVcIo56bTiP(Nr zzJ6O=)-02R3clo!(p`4LID!p8K0VfH@cs1tLo2LW!TesFSY&Ffp(4#-FXuCNe=YD` zn$Xq^5l6bw3f#9Hji{N%$iKJCB=M0AO^|enCD+5E(#i1AW+)JK=d9{~cWVqWjSgEG z!_`j2BL)3;i!tV>0U#$J4bZYk6oy((Oge@+l8+8aWhDJp)RO5ic27pSiI^lP(a%ou z2sXyEZGU5?CcCJtjana5Y%2OcFE%0t&%1#eUfVY+2DP{f*Z~ANT+Tk2;G9y+iu_x? zu^s?cQE%~j8(1!@TyWwUS2&_ySvnSTH7odAw&R`J2ejIusd`7Ae8*>!__Te%(HnMo zJWp5HIG6H?>xUfS)q3xUM(r3vBl(yKNJpAm7wSj-EcXJeCxZHC7%%^g1@Ik^qWL$@ zu}LjlVOHyy(BRjLrW$VFzMNJcUA;2G3#E}{aprM^cnOyd_7#h@5`7Zb{0-99@|y^J z6_;S^lM6rH#t}b-k2wOb4{hv!H*WEIP+z<;xs*AqR!Vu=l@wA8N3^mI_#%;-O zuCM;=d~X3h$7v6l?v)wCNln`VP^UP{P#>k_w2D!GsT92!91nOOJ&AZv@KcxeYW=z7 zXm{*ikfWmz6FIGbg*+>-P?R}_-FOzXqe{?{jU<^L!a!^IPlixVqhN^1s%S?r@Mnt zMwC}~?qhJY{sVywu6{GYv2d)TnknPI-m89N!|_L_#ZcCNeG<};-Jfyl$_A8}@cN6S zGMwl{uz?6zDJ_gWK71gHOF8j6Rp9Ke*!gX<@6()q`;+jNFO z$Dk6(`4^n$5#m#;xjtd#J|&0ZDR zEOk#?=B?qaE3(0uZ@08AUUWy1LGjY(?=rz(1xxj7Clq4-;tl>Y#N@#SUw_n0sX@Ng zaQdg8Eq@$@T-M~dFMycfQ=sx^TXv$~*&`2Vo?o?%gS-L{~p2!aws zKt+-gB}YL*Nd^@W14*O=BnKr)5Q?0mpyVJyk|-HP$w6|Ij37CwKoO*n0(x$I-|xKN z>2uHRe)|6D?)yg{v1+sS+H0>h=Nw~>fryFDM|XMiAkYlL^8tE9=3jh}Ku`x=m3`0x za7DVyuOD%rZm1NDgKv{(JZL%^2RsJkE>tdk5P{-AJ#9yKNyKqk*EiVX3Du>|YZgw0 zZ)kyi@Wb+@FPJk#Yd`UJfS31o+d1yzRa&Cw*-Ts6(kP30bU)leTqzuW3<)@zlue(n zQ$y|EZAyirH;n^OG)C0T8EU9ggZNEBcdO&UcSI5gU?khzt0HCWPLv2ULJwFNi>upp10@&AaRVh$eRT0Ln~1&CJv z%Y2*k_Py4N+rt&kc9nLS=eF)W?hgGoS`%i+%5C{}axySpuBEJ$L+RoTc%{miI8UYO z4R2i7g=3rW5fGVx_mc?T96>$Rk#fp+TG)&eq}@Kc{45>Jv&L-c|b72{ZhHWfOAQ|`;`3tNA2klcCEmG1(D9M+o+O_qJ3A)%5| zrb5=*jb78QyvYpOqiyDGe#{Of5C-^x5tU0NQg$WA=6N%FnFWnY>^ z>8`xH=hleT`>~DTY3HzX8a}7Hvd6L(x`+t&Ukr1^=QpQ zUmGTKR)Q;Faw}ptcjGN-5fK>(H!e~8#rn9bxl{TdmutT!38$nE0qbN8%M;UeYGHkm z_<$z=+phXg<6?6DT?D;ZG6z2qws%aJy?50HOWE1oK0>Jc6p7pZKN(q!}-tt)-Bk&N1c&IBVj1m5RGa8Ji79An!A6cwbG!qi4qLYbOz4 zjH2cdR%UJ-e4-6I+WOk6mFn??y(5F(S{u*{XnC9dDbu8*c6)@pVPSTSYgov9>wHdD zGRO~~TCeIZ%}M5OAG|MtP_ON^MEq_7#WA;OXl*gOV9V3q;LhC(oVM(9Esg2mk5}#Q!JbBm}HWFO%CA@>RjE?rUqsH|N;dcH0oa(=0SXc@PX-crFSf_zFUExl!4@N zc^?*Y;&Uvlp0SHlF~+`Qt@ltB?C7s6nqB0(8Bi1u#2$)#i&?4cw2jtz_EEGrn-u_OvXFB#hz|=gqY*Vw&{QXyftTG}6>9n&NExQMXBaSO?ujL3!{O~(T*9X+3EE;aDR}RC# z`soKJ-wbFlTh6;5?~;mL{Q|6{$8VcJR#Su6oiM2gPVk=+xHpi|`mV)fboG8_#tVZ* zPO0tewSM3kgf;>(d3FR{TV-_mc`uZrc+ge42cqcaR^S$axM_7(d3lsfvgv8q%P^rE7a<#RGy$5$k3TdEyP*Fe%>s&54J~Ti%J0hO z&TW?FyQzXr$&I7m^=oblMm-s?a5e{LBN7J>;-4Uibxz8qWT_|Jzu4MriSV!?^d%k8 zuY$V~&EzE*fJTypV`r&eCU%wD{?p#?@BMHLXCfNcy59-iK=3>zMS zQZPDWHcj-uj|_Sc9O(nDE$7-Ki)tl5Ll`4UPilK6%D0zms2Z5_FF4)ZfE%-fXtv9K zYOkO&fd05|~nV_4+OH-s!PqfVnI z_opa%18@pb{5SmEWtSdz5JL{;xmM?q#In5|Q;k;`J<-sJh;$PWdd-3NfL-U_jXMVg zn?bbu1A2EnmV|U4(d^@sm(lqoZMI}ILe~2m>g+uko1kUi_BAR6NGrq6P*%#t?EWtQ zn617oyo

Ikd3GWP^yW7Gn66TFu;c?t{G>gv&!uBP7mT<|iOOFV=nU?Oh=j$N;Q< z<^%uXo>g&&=u#7EuaGSlJK3bD z#ftEJpI+Hl3-<7PW{o z^U2TN{m$S2&8J#*J@o9V0|55!h%EvV+Ewn}Gq-RWafy@m5nzmqd|b7i*?Gp1UI^%9 zqhkUZUjdJe$2W)tBFAwW0u7oeL(Jfwh6kMk7V=B0a_=O*3dselzB-gRAypIj$S%`;&DWB_glbN zmcSC|cJr~u>QEHy8Y>nl80eu}0-9FL@9i%4ck{;@IH3tM?Kc=m^~(^^XJEj8Mf7|q zDC!a~=#v6pdMa&(AgO!^ss8GUoqJ5UZ0;qsPxM7nR9(Hc~l>Q$Aff=zZx3pIm z5cJf~cl=@HT3S7)RL`RcfYX0O;2NLf zR3*v0YVp&|(!BUz@2jmq&S1%atj$Z$58vQV{>W`wCd4OQih@f2eIuaPx$izLUvYD7 z(YSB*I+x)?7kWl@#kN$=+AH`>;_L)2n8HH>hounW_g5v4-*VA}>?gelXsOo{R%w@fMPSMJQ~ z^p7TyCY=avqN!_Bz3IX>0eikxzSA@wa<~&sUWdY)W9^-L`$#dr!MP*RZ0$?pwi$1> zoUuUI%UW;jB%}e4abhP>`ecfV%drB6c`aS}pxx%8>CKGl*q5oh zrGKKoo6wZ@}6tCRJcq#2iVaBWirc$Xs0X6`H4nzQ`ws@ z>t;^>&RFD2Gz@ABTa_U&DVdT~jR?^`b2&F@Tiki=(U@Wg5qfVeW)sWGX7>?dkSkp0 z=N+dE(p#-os&S2c8{3&o&OP(|$?*6U9#;UzyqqHpX*7VxUlcDKt@uCMw<9~%66{Hq zG&0)NxR>)Gibyi^YCO%5(`H5Vam4g{v=-Z5W0_UA&uuIc2RiyP22xG z4-t4D!bn}J9&``VR$?Q4#eC*EvNb>y#g<*~e1GT^_cqfG*->U*?g%Fc4rYALw6h3* zJU#1``^x(E6&3CvR{kSrjYlPDn%-%rXm@ihUs?|h|#db^*oN) z-c4uRRSqA;p~84`8WL(#u`jWV{KtzNfsVceLE}K&Z1bKHz42D)cD4A$-#%0~O=B-E zO;Y&0%_pL@q82b^51b^G`L&rL^=st4@JIqEA>9yeU|AQ1q=?Ns&-8ZNe+fnEHFueg z3E+PgJso0E8GG`k$=w?P`xvEcSrMceiL5C78^MUK<}4#;==DGDCWvY2hEe3I?XK*# zQ%FzZ>1f><3jfBszZyLrD9TS3oqrfCQWKd+v&lEjfXOchaJGp#5B`*=SnKd|*8J&Eob!S-o-$HiFWSwI)(YA_AY zZCLyqMg)jaG$(g?Gc#GRZ#`K13=xt&Zv}|rUO&kQc=oj20NyCHO+Y$pm4+B7HG)+t zNu+z6;oU-{kR7=qq;8J%yajp1WQ_Ct6Ug3(Qj=Eim}`$KE(|{M551g>f<+cba9NH2 zDqo{}(18~dHEc+mS$!@cOf2LiYnB(1v>#yx2)R6_i~hx(^E zsrwt6?Q+bnOMj8k^?q;%zG3W+^pJTTQlR5XafwR_APCrgqN`k`@4XE*zFpSE;}Y5% zn&k#`wq#FtWtVu~(FYA9@OnUc&8(3?Dy4QxEZVb42dU{@lEtLir3yIZy7fdax!TO+ zLBd5;+aI9T{3Zry15;XG-=6q`R*&&hX9>f|Ki7uZpGDB>A)qlVW{S7SJ@K7rG}6n| zyU81Hcjz-(l)xn8+V=`w(2k=lp(d~$kZw4V@03gU1LrKY_630Tiql?opsQ0wv#sLp zJF58`s>A{b!kJUeQ31ovuNw+oD+GbOtPlZ-u)aEmjKu4b`67@-G%(2mOm zejx%qSr;W5(x!epy)!V<3khFy4uLPX2QyjHL+WyV7^&hh)x(5HBuSv9Kx5`Dm*62} z+bBW;&70~+XV~{1Ey~pBt?1(Uk(NyK{L4l}kdk2X z6Rlu;yB&fUgT=M>6Q@4Wp@sTJ4n2ae8UIqR_dBRC?rsmZ%`xYs`SEnmi+_t`c+LGEzv~zdl(Kx>K!|vDK zZm0APzRGST)U9q{r}TkDH17`rK3esG??;>#8+(0OCuT3Sy0{(UtJL~fa1?uo!6+bQ z?aap#kMpyFBWqP2F_M0~JcsyVdZM=oD`o`j%~HK+8`OgHE4RK6hC?B1Voc&t(J4Ph zl{oPBFx%^vBX`~k%g)1KB`Dc$CK6W{9qYD{n3xrts9W}k;r9qjIKtONK>L)a!iT{A zYlYV!q*zIt?WGGdEm4*DZ1rfS)r-HkzS@zSmvPr}y*g=omq3QrUi(;u!B|2)9|4wL zN2$q;ZK+BzqtU12N$5W0yrdcH+%H9t>z0Sqm z?4cR!gfQtkk9C$VEcB!&ZN@k%Rh-qXa1t;tt2pxZ5u^Au&WNz~7X6rtJklm9*w9zfrEea zLIh{xCuz_?j7SEht$qi9;??WxF?IQenwuq$>Jc2;tY$u(|D<5*`C-0^S-GRFHT7UF zDNZUfn5J7{JzgP>V}GuNn;~b$nrZZX<*cfy>tWlV<_1^U9GM z#pysS?uG{N1xUElfs#EITLszu0;mlgAITpW(75Q*nQ)mLV|I#-{eBHsR?XZa8mHOQ zLy7H&^AiszL}^dFyz|gbaFiw=>Uy(%cb*mN26rY)B>-5h($UdTOS7z7u>RTmG81qS zuJSB}$P8bR4Qr)&pQiKj_`wXn$sUgS`k04@(22F_ZMKB@BvOo02mZHL|GHQ-wBM$J z;6*RUPFO8*987mh66gttXGVcYTQ4Mk-V&TGxm!WhTnpeoBS3auZfy1c z7jM;{d#|szR~A$x?>||woZq5Ai0+wWW8f`)tGJv+&9ACeG^UWf_39}i)kvo^-^b5m z#F;dMcq2gYCZ2Le@f7*NP7z8Sq4Jp#AB_|L5e%L2ZnZd@UI8bwD(*AXRDT9WUg za=8?@4gGIa`$!#T5i%%|l?Nn?=fGppxq7}pzkb1OSdfjSr1dn0NjiJTvv8EDhsK85H%L=L3_q^iv z9YN@U(i(xcrsLCL*^juGUjX>`=3_RwTp&?Y)6})`J&S3~Hw+X1T;U`wTn+ZC4;khW z|MrC=jJQMiwZs?ynk~+Q*_vgpwjA%jm!q)#CK+!iy4ArhD*Mr?9sly)_>=SY-7?w3 zl0@X?wB>_DL2Ow5fl6`wny1@J7_$nzPm>dkb@R|q)=tE-{m9vr7S+2C?ULP40@J^v zG~Ab#)1XF1;r?R*ewYE~-qta=CzFeY*cNop49Zow?Dt1#PFnyA#tb0xjpIdj9O{m< zcS8Y&u>=j)lw1g{Z?&y>c$AXdQ&Y?N2&}@G975+K-;1tSIrPPxB;Ou%)TD)tz*zsI5`7?VD{y*!^s|+#k?%%a1c(jsQX_hVMPb^jd0y zkRdbU2Jd@s{|SBGhHGZ0VV&N&%@#9i<>WN`Qgg1?ktba@c&#O>4E3RSqGeNWRHtjW z=G2ub>{AepNIEpq*Y~JOCtRnGHlz6o=`*4qfkDO@JmiLOK;);L#eLhWtrsih!vy)I zTs7lz_0v)UP_<(rLbTNM64nln!wN$y(E5jGn~hDY`Ru7Q+xkLaPA7u!s8kDcUE}dakk)P=n0`yRP)H)eix4 zZ!`)fGzCl#=RcSxWAO5ir>w!(;d^K9XxyLB*Oh!^GuYo)x?m!`9`|$%OQno|EG_NZ z;61BKm_Ltaxjp(FfD?J1rJ$?PyG%-rFVhPKi&?7DNBOJytIw;ywZ3dLHwlvW{cyad z4yePT#?f3oxqgUH)6`3gP#hC$ZO?(51xu~+Gcb&tPSh5={YF)3iaq6_=?>Ygx6-9QDgaiQQ^^sYVmCkZb|LG%_jziy zuq9=D1O6I{uSDnI0yZiJS$UFqn-^^t9A2pMkYI~D0eT9EynDgo{($`5??(llIHn^r zM4STZZqzZpEt_C=%5G#0OmdMd;S^(a(|qrX%b`}0l4w?MR(G*%wLT7Ot+-ezpVf(& zVX2Vw(`yz6S-j=?>nxqr<%L4W0HNVPPOCV1%K)=p;_qcddRi0?XJ2-lgHIb9hFNnV z_acigNuU$kK1)77Ow~8^w8GJWcHne7pQi4cL2~$5e*a~ zwye8gWW)?}v;^(>PIC}IeR4jG6=LX=!mmTD@C zTxiqXu%^z_x1Q*Vmp@z}7JZbzdMXZ0f%-XjyrIiUj2!zVY@K(dF5YWctG7BYloP^1@B*%xn)mnJNV;chb68yP!sRG3Q_D>- zlL%2?I3DWZKam{rr$0yg-2fKh!|(#hlH>^c<2cDLHmJ25A>S>?^zgT(Y2iTz ziCoiYmKnJM-0!wrhpaXgWrLasNzR$WOEQE4 zB@lyrwx2gG8?R;-xx``kAsUsgyAHr*A92 z7KaHt!;CTDZG(sDAwqcYKnP%v$Tc~*{#qZLU5w^5K{w^wV)(MausaY?2-TgR?-?DI zziKzWPun$M*T~nia$OwEPYF`9Y#^%cOUx0xTY{!$Sc?!Y*UCWOFSAUAD76=G#8RQ& zBSd5wZ~!HoqoY&cr&**WcLkCd+vAOuZz%xuT?2X7)LL(%VAo6Lm_j}Ps4jqRN~GV3 zvqfLR0Y~o6z4xa5n{OCxQ}p~9^f|G69=!4X26YY(55asCQJ@NkV~|A^A|90PcjTDu zvZ>A?^5^6t+b{Yx{wxxcPvT!76oaCy)Q}-sg>1hh#7Nj3OTB^oX`-(Kt`W} z7#98vfm3995t5HrUDdaX{yP!yMG6vVet}6O? z{QQPWR%^~H-UlDElVdq;i_wca$mszp6M-0PFuEIh*7fB>Ab7fbuWoT+E<^rBR`&g~ zR1Ip+ID#9#0}Ls#3pipX0yS@d{D?o$81-*XCfWC@{33fqA@D(kL2`!58!*!&yU=!? z-o{s*2xbK3cJ|P3ghIplxPXYczOckI9y`Z=j;?9lv zwbXyzN1GBOu&-4i1)??!`1P(Vh>ya6I&}>MK{FBC^GhgV>Pbxz3Xok-hh^4}r`~xF zT(y8FYx=vlZJ6Z7kuLQ0A1<_`K+{V-6a1^fHlOriP;#5|HgPqR!A#>@;it%kcM`q! zkybJ!*k52kU9^+~3;SABu0?@olc5A4Xx$F3T`MOOpo&w?HM+|NzGBIkJc9ce92v&fTeL0_FBA9VD1tipsCo9hlUf6A|;~N!q`Y|SY zoBo@BREmuiLm_))*Kt)+qxQ=4sMT9h3bywrnAa+htxx4(8!x7B6TXSjxT#zP3b*!< zc*RNcg3vG4_=DgOi@|&)6X5=_omakd3nf0rtS1Ot4i&soD=A{En4DLVbQWsgL!6F7 zW&7SfIX0EG>vekuZy;j@EKN4e)xa(}a;X=fSj6kXU6EZ;i~3dI@tOVD_HME}ewwl4 z_$^G=l)v-_^TlOb263PzEWl)BguDGP{Ka%{Oq)ed@`Us-Vp>m^C-%5NxjBpVwI(G7 z8-5kR#?3(XM{!jWY~4e&TJpUn(a=5{y;ewEeMxKeHwM@e-2f`Lqj%S0sxuH`N}R7_ zK#JJ5nNSz(o_8$kqbgQ71-IrF=^(ypjY5}|!CLB$=5ij7X*k%-?I=-((#$Oc!9V4> zP*tt$eK>Vxny1^()y6kK+`EogByx+=wj%PB`nZ8eI04-G?K{GHi71>>6y&K%zs4NV zSi?z$z!Yw4J^LPoje5qt2*jZt(RJA_^w~vB-9l2Y?al%hQE)icse7lYZc3jTrzjxfZw9nD$ zU&arw%8oaCYnoYk`P*QTL$yn{p=&8r;|4p6p;XUrBIP&Az@=$Si?k!_{ums<;KflK>4)%)q7 zj?y$I&ockK^T2CBisz12@N+rgkwW6L{3dutzDxL-jT zgMD2^1#aH3X2o`nY8rI4wif3S9*dqalB!+0E z%ph?EwL5b6$`vf@>^W9vcfD|N4MF>R5;rlQOPzhh44a;5I=&RxlJ#+Ht*t22GdnE&hINEy^64ahxiLT+)Z|-$dKE`d^G=u0vN+%qsiTEE(i4&=N zvR&b`deG1=49zDl5J%*cmk+x>LHrJD-8e!U?_=B-FIQntu3Ik0 z-!n7WM!+y@!SIQ~@7IShSS^RB0~wx?HHKc64dfO9gtE!%RS zrv8J|pJ1}fvYbCgLxF8*DO{{@wING-<>PnW^;DWb{(8?#z4;`!U;|JaPQ!kLF1!xI zDQ-cxr8_Btx{uWLT*`k1e>>TZS(R-=+s=PUaxFa5Y8Tw7{>utFQv}?*Rt7t4%YVIb z2??P_67}AOW$;VAETvx9BIpir&>q*`@dF-lM+#5M{xPdpd9JFqU(b;Yl@x4;CyATkUlOM?VE;p;*+TyzCpLl@LH9lK7_IBMzKi_5L=cY zKY00f4BCGAeMXVqfcy+>>xs9bk`3M-E8(cfRa-1$9RlISL~Z$X75ohm8}7%vBz%~a zc?b@#r|f*44?yYME{D!YMMQ?&*;Vw-YD-zrTASdHxX0e;A*M%c;Rdj|u0526As|~2 zfd$EbpPiIL6nr&T@My)YnxVBIwW2i%fo=7z){Fh&(p?tQv z^pf_n!qY*33IGOX;f)>D+iXz7v64KS`&?r&*zM^bm&0OC4B6?0!<-_=;5}o#6xhy! z?arJyeezYVjnb5fg~gkkb#Oe%>wlS>1P}s6Q;x;pJE)2F9m?g`qPsrjs$_6(wTP^6 zDYS;v;`OCe!E;B*YwJV$)UAx`>vg6~4(dO-7clS8)#Jn|5X+Am?dgbZA=*(h807JV?W>$i10Vf$$tcF%$XfMLjd#f&D z?SKs3*ViWxJngNujd|c`2N2$3FdTg|-U5TuX)kj(y_8~*1C>AQ5ja0qj0Z5?N~7FGqR_4cEvPLFFife0C;)-Y3Xur7k1QS49U@) zkVE;uNQq$EkiB#ns-LO@5F%SnT*=6O2!4A zyBaM1>#3#Kx97Oy6+fo)9N1UubaJ5DMUT{4R+Zkog(7HPI@IVyuu%kt*r)MMsCs+BUk?P#-@w+2~RH$tR8q{{U8f`UI z_4qSv6!LVed*s7{_>}so-Uz@-5x(G2;aQQ2eDglTQx=S$E>hagoyt0$cVT2SAVneM z`Uo=p-B!;gW<|$)$30?%y{t!%@V&=I|2kHYL1{mlj4k36D^+~Sf-&Em?hOmYE!s-z zxasp+DD;NXPt3A)>Qo-$d#n7h@JPki2JJU7L)ct)jCo`CYx;M{y#=H=RQ*~$#s9O) zAf+H&Y5<#meWcJ{pWLZDph%Cg<~m1Wx54WfgoA ztl_EGNvSKCFgmV3E78@Ml83ckAH$(lL2ZNPyZ18Wg@+>BfLMzoQ@w^_~1;K589^^-{UNLpf>(&TRojyWshzY2x_KnIO`enT8aI8)Vqb9X^7e{?q zOMWgubd}^N_XIWBt$jMqIZdqyf_#3g3lQ6rP9|FPK(vGl?w}*I)H0T}X5uwNukJ~WX^=|K)7{Ax?JVV>&4(s;vON_R z8tH90W!HG>(rh6Tqh(_8OLhw+W?D1{z;M27W~f7!Rq5#oBl?fB)|SD8u;-b=q}8Gn z>eagJm%k35Hz+w6@cMjLmbl$qH`uY5f^2#ppoOwEQBOY_wbAGlJvxpQF6;sCqO;R{ z;6ROttIO>4kBpehcL8;wmXA~Ad$WWRBQh*mq!n@ zmTbGfyMLO{u?HopJ|K{oTU(QrJ(>4Py39~P5GP=G%v{~%MC$;h?cK5u)cv_P{;UCo zj^r7Pg&AiJm$51$!1eV(XlMydWtQ_hx;O}$yMd^q4QN?kw8CrJPnbCW znl@ey>92$p@va`VE+=Y8owTD^o9Nm;*PoXg?i3!he53I;EjpS8>5KGwW+GATzY6?p z0fz;>XFq-8J6N3sH|~{{he)X(ixe}BZ1@8%6O`Y!f1dIBQ2yy!`zIDs6(9VjP_VC( zzYCjUH^DKn?MFyHnW#x}xO-dqPH>9lD)6tKJ*I7Qa&hWv;T2a<`s#+Tv7)V8 z?pH9W8O`fS%`=uE)cHtp5Nb>}Kr<|D`;Hryh#sdYGroW|7Rew5EQ}F%j*EO!Q_EpI zX=wD&Ax3r;d6~O+r7Cngqpo!fz_Gx@=nikUl(}e(59NmMd1{R?Sss##qhB7pHOq@X zf+w-S3{Oy};f9BXOp_CHUc2=tG~_g@(TL)@0OVFhEH0f_ZYv|*Bkem<{wL`aA?@C2 z=Txhjh)LmyKAVqJfj}H$nw_6MBDuvUwclJp=t!fX=aY_z4 z^7Sy2(%owvWzbIH0&;(Et5z3nT~*vpo)ZqhsicEmM}MBeq~`6TV|&lEu~U@{=5+4? zUAUiTaZP)Rtm3K7yZ76&r6_I|y8t7AMOU8edZDFL?@3ogrlnlN&ukGUIt*yfxy3P}Qo4GJ`!H`J44j7Q_S*ioJC^(QZP z6G^WU;AX`+tyY&t-}6<@ORZqPM%kX|Vtagu&;7$gZ`!pAl+*Bx+{El(Rcaa5KU}3$HT#*J`-MD- zNEfHVt74EQu1`u!Ycq^A`fDYF8qx1ne^f==Z^CN4d=a zF{EmY!D@R!Z2Obxh5duDJ{2#IJ6(L>zPmY>Kb%i>Q_K_Uxwu!mAHfI$w5hDU(8;sO zVNP14`4Mw5Ci)t5H{$^!@2g85zICo5VqVB!`>lSwEAhckB2MbLk~9Et#xeK`N|l$f zD%nfH-*y``XWbu!a^^6GF$1Lf_G{M)&x10{vo<_6wD@a5842!u5_+jWH@_Ctx$&8q z)Agk-W6eg>dGvG#e}G~1Tv8WvJ{r`St{~1(_E4*&yF8(ZJ)ieZXk>uSsHQEGM)jX~ z>WUX{a5A3bP3Xu{JdLF2o`NqrU_|54tRn@~*M?36s*#@ux5d>qk*ij}x!@Of!=`ucL~WZ(p;y~zOPW{TYO(#9zj*Z^KAJ2$>^8HV$#5rPZQ&G# zOsEcO$-n%~H7Zjz;aD}kMdog}f4|cMx6S?%Sg%KgswGJZmu@XhZUPkEZI+c}{QHPr zu6~zgI}P8=c003%m1zRGXN>uf5M6QY_rfNIHcOP1+&hJBw>YbB^d0*hb?ojTU)~2_ zF4g5)_w#A&Tna`FAw`DxYA-Z~N%LvNtx;TUy_N+XD(wx5E58owROVf~ z6ZUZLFB_?E^D(IQ9(ole$(bf%C(n6Or^U~@1|7%vW}H=g97dzXyPBHi_9(mlOJKHx z=Rbg1VRyo6-9nD?6v1iV5w9+^ciNRecq7QDjB&H^ zR`gqge?5@wAl&dD3?vp6FnFc~dV)09dzZ^JrLa^OY9h{6m&?DHR|~{4XGZPvB-<~W zH)@Ad^Wms9q`5EZi4taM7%wQ}XQG6yz7gd1XGJH0%yEY#=SxMr4_c>3?QvF~Q~z(z zW2L4pd#0rU4yrvt;g6q2uI6rDq+N5h;fNMNZZbjV^pr_bR0=cqhRSi#zQe~bzNN!_ z)-A2?=e3+;ANK_nGjQpxa^<;dDOOmL+Dd!(XAhNNBh!{x}14Cp97r=sZzGDb{-~&s)owDrj3e; z+n*9HPCAt}d%AhE>;MZcJx28B7qot8334uGG!K2-WLnMLsB;8IZB*IAGD-OS7T>_R z=mJdR`g9V4Gy?#uIDYH>^O7e%IUm6iyLVL%?{`Q}?kq;Dvmm z+E~jXCQR%65$+)crh#)coja?`*Xm#Z=vadXVI~j!aM~j8BTrE_2v?t?TqUt6UZH)q zp-9C=zIkB=?h)&S)}O5xoHDxe#N3E95#JY-kxXyNFg+|;#Gbkw_@5>Mid&63^`{2% zod)<|n%Pk{Yj-X_&K_0P5tHRh(@~DF5eOX2NI)aBx!ke(bL2vkVfU zVzvBv&Qoh%Gf%83h!!uKyrtg>=wte=&mGF`7xeQIc5iLTubo}W^3}39gi7aOymv~k zaPB0Ibv`W9S8#w1c~r-C7OwTyQJU-1yg|pei~u{Vja@jh>D0lKG7;QauRa18-)Ez* zAy@G)))hx(Pm#;LEi9d$39f{TqNmJ0f(` zl+R2?zLxVufvw%d>+{`-9gQ$jsB^CO6$%1Qe(8q8<2ttQW2=_nhj;A6876Y`Fq+mN zTJxUsDlcp8^F*%t-8$OCa-1)~3{$H$Ajx>~FMM=S6Z1NQkdiP9?Loj-y{ddpHP5M* zFCazbt0Q&=pkVdSZ1AA}U?lQ9m%Wm$_AnHFEznn9#aUVrvJ3=J zU({sq!Y!UJMsb&V!!;nkvm4$pe9ZN)9~;P_k3uXFAGCjSx?x9 zcD+0i5AI8QWjE`%6nl<4kE5j7X1CA$jf{8Ms`q*Yczxlk@rXe?v4pZ|R7}t|bg?Xd z!U2}C#t~y9DEKX(v|HrkGx-dCPtHdp@{(Dnn~rRKD$$KMZL z)rk4sX~Wye;m`jT>g ztlGLR@Hg;py%y}ir$U6vRk;Jeb4Mk2Ha17SYGjY@{WFlBZm+&~^PKg! zs<9z$V6pSMKc@bA-kRiOejf7#RSHBR5>os4^^M&X_moc5zNSH;2F zq6{{)aO1O=FAkkn6cS2 zZ;~Tv~^vx&?>tDjOK8l5u3{QK>F1Kb{JRbL@i$-*kXeU4z<5c z-jO5`lk7Zq_DdJU3W`dMZW}iR`Y$yHUH0|U)EK1Y)4PE{TsQ1!B=bK^k*x2dwp-MC zfqYvW?=a5$zw{wmT3Lx0%s^Z34fOBcn5QKAFQejJZ?9UQcjC7%@1dosTMgy`%NEip zG$0&vnhsTzH0s$vNC}|I7q?#pWT-$j=bH(l9g;WqN5AbwXWmS@1{%16;X3QziVyw% z`PeLe>RrSK8Krwf>y@xp-!h#06cZ)Mm>ijl$FOUE%`=1#2% zS}PWCcKTkskgg)R@s@^KoK9w1%ff^BRnDU9DLsLpo6YNch2osZfsNE;nK3TW!SD>x zq&KC{It^%>#F?(Cs7jBuu*;yGXQ}PtqZHbJFn5Zbo`!q7XHmc2@8=rv4j@2kz`GTg zI`_@4l{2dwSj!)%n5}ofe8QIug@1CfNW*6kBEK(9(!UC2BTi7~bJxPY%xZ2u($Ff0 zqYlrufOD^d1~YaoL_tC{T<1hj@tw~d7nQmOb?%Z67jQRz)bR85+BJ<@t@~}nc%9bq z?-1h!YU1l30H1I^Bbc=F7Hva@{L$*jZpWRKnznFN0hCJ>2zWh^cD>_#dQS=U`?+)C zE<0-b_ydrF?W=ZopK|mmQf}QJ`1;jSz6W$hW#l}*7hvT z%!X$L9HlvbW5eCQ@(}DpGA5ZveIp>n_f~uE7cFPvYJBs$1`Ept$zRrVIbkdHaMBE| zMll^Zb|QjEM2Xa>k*iNiJ?t(=pM9Q%QL0Qw;rhWgxjOwI%%|1#W5{>dtS=R@u%_Lj zb-_`0%{`aGhWbM}=kyqOo!EnA^)i0-WN;L>^4g*rCNb&TU`u$pJG@63kPmzDewaAC ze)HCzEe=Q(3$)cZUuSS~bKkxWVz5%+Mo?eD{^A=u($i@d`2uAN)B<$8xE-6@Bq^GI zg>bgoWb%btge^)zx3Ciqwq`no_N+3u&sVBj7h+Uva~j3}L?lUq)Nmjpy^ zTrYgbsh{>-atRJ)3|mw8EWK9s)V6wWCQV~Y7k2vOR4Ok-el(c!8!0VrzJ9bR_(%G7 zpbR1WWa8>HQwqLfrD|uPV!bmRsF(3~64?`<91cAr-~|c{@}O(Rin*JFGTs1X{m#T+ zGx^nEK2j|z3fy)_&!UMI_AA>-2q6L$`l{6`7opnhSBh)v^eH*Y)^o*q(tq=eN{L*U z9TnAJsLOYfcS`WOV-bDzA7PbW1$(by2|C)~0oQI&(YR^kD$vqsElysCd(f^vs4`NZ zMArO1hGzI4NqgtgEFrA5{c&eH9A&*c>G*8znKTiwn7Lzc8$7& z#NN)uaLHbLb4_^JdL!fQ-(dP_~;n6nPjKXz>$IvDRaFGM@szV ziI_x*c$!wN$5-)r2DffsAaO|bM-QF0U~4TYyEHY=8lx-gdXBw}Yhat2?k2Un0qhLS zT|4|HaD1zCOdGQpKj$Clz+^wWuzh0li!4MJDLv8Qmw;uzeheRJr}Rbk?Dvz%u7DM* zHl|T8cv-^ar}1RXtQN8Bm=oAa8*j@wblsoLpq{HsYx|+ZpUo69AXqZ9M;M+BLJ)hf zWM~}Z-Y9Iw{>Xa$AHgBT@mYa^5|7RAW2Sz4%(4*1hF4A(I(7gzkIQV5xRgJ*pHE~$ zO6X{Xig$I3UYvu3EmS8R-{wx8`cz&HpO8K1hSSaGWXR z1rKRGVOdJ7)PLfF*gplMALJmO>~Qu^T7j9>3`j|a@Ha8z@UbbAgNodr=-=ApR6|$A zRH&+kWCAyk^g2!rS<%6jJhYzQJV^YS4gc-lsHd__oLEk>=XiMH;!exF-$&A4$QwrE zj$(!KoeZO>yC97)(JMaslo{jK;h7PC60%3!LH79c5(d%j?(6QJpiS7n9RE*z5CXXA zriAM6$_*aqWoAOXPoFCQ9dw;bedhOJQ9y&?V_@=*9`fq@z9er8Lf*}n)JQx@Z^f{) zwX)*C^AR+LmY@mf)2*-I!7;Zo5kqr*=BX2J40S%mmb`7lZVAQr_$iZ;+4Q1XQfEB| z6CP5dP6(>IGiltwc_>>S`UxZu<%;HuykZtS0bePD1Hh*AT8VnYNkG=pVV64qS&rBIEy$?eJ&eF^H`1ow-)zM4d`&yuX1gjX_H1sRi zag7RNCcvJQBshKVI$oY9J`8ovvFT%`X~SnFx-zH!Q%Mo?!7?T7NCq&{mv(82{mV;Q zh2#zBdTK0q@2w{uX9;S3nX4_TOG$8_%c)28eqP>@UhkHY`?_(4i+oJJ%Z(3tC+b@L zjXt+!PV}{&pbt#3Oc9u98gj)mCpT$c$IVpdv%?+n%nglB?%s&Q=CWeaXiDe92a@2p z*1=*s!g&5n)Rt+q)So)dT~+*}R>8na^0sP|BT}OO1PoaKFzl$xm$YvqbF6G^m2(96 z?hdT~{DL+8xC0okNLC6Pwe#=*Ys5-mzgN+)seO}-TQp`_XkW5zmpnazDwGj066jdeRbNA zQXU2ByX#LW?n^6IMzm<4sKyUHzZ3?XN$5khiu3)*|W}!WYzH`D;&X z{|y-$wycOHfw(We_1x8_pSjo|GmJP{dNK4u7TFJE8oOVdu%&`mJ!m^|o%?C1VJ zHtED2;JSfjmVYL>T#UUv<0E8>4tegdoa5;YVQYKfJqMQ$1Ft_`2|U%<^4qg>Cadp( z_dphj7X|une5A_Nb-cH6`tb)>B%(mY-G>Y993d4yemw5Cmgc*@2soQkb}jy%?8jxm ztLcv}lm0Qae9O~sryIh3s+BAs)kUpX$Cz|$_HW7DpDR|GvfDB40`9`z8OX2m!Tk@g zd6(kGwBLq7C6QwzFk5vm6S4;#Iw@sYqyju8@}O+p#!K}#{#!f!Q@Y*EZ|4C#*L2R$ z_kzl97ZlrNgj(Z)=j$^7H&u(&u{yXtOYEs&75L@j++&)b!sW)$n{-tB+8)OJOfy14 zo!1-#P9a8~V>^#LgLvu3V(yw*Q}us5?QxrFrNte$@lB^uqm0AiZCibHsy{P0&Cl$} z{RmukDVuv|hvARq;y*-co}ZgrE+^Lbi5Q;VkXg0`eG>69)=5O) zLr+px%f-c1lmRb5UOq3;%$vm`|3km()@R}$P6=JCxqaoZ_LHyNm3HyK;T3&u(4^ue zzS#C}JH+PNR-1i&b93^n*|VGPI(%|#F+Z>;aSm`L`A6|O%f*4O`cAckr~0?tQZw}} z$`4q*turxyUiAa6R|}>+D}Zm4478ZC#~pZplO_Acw|`aePiPU`H^<%SI9Pfo4| zp0q2m33xpjY-aJ_*Hqxy$>7z;@mip3MxAG(Pc6m=os(y7h!>l=;6U_@_OBlv9sdRF z(5`<_5s~0g{MJe{pJ9E>;rX{Jgg`SB&a<+cmjLHmig@d@9?L$QdTYW0M$Gxf_3y#+ zjT-B}UIoq~2?;1KUzU2L`+L=j+#;nAx6R;rq|ZGMKkSRN-Ba-vGS8Uz_mS|28iu}l z0V#`u2YRo8TNC@Ir5@JiY`pSFUHXam(ogGsfU9bF--UDgxd3mvlmabhFL~6d{!U2# z$5a>b@Bib{fGadD=KL!;zcb4A7HHk1KRI7rc7+FJig^t-O{w%z=iY8 z)qm!iD+8x>s_sUK)a^_O{=4r~k9d}JJ#dTXtVjMWrS3`1*X63;2+sL&5;(OW|MFF) z<_GWT-a^@_M^?w}G3uNz+N>SE&g5vchq(SD;8i{Aty6wH#bw#d`EyCwm0Frah<>-s-w$L zfvJN*seuDG#qd#B#(_nE(S<<}7u9&lg+blko7q&x6|cfmqKwLQ|9;>9fA1D>$-ZB2 zZ|~Dja`%+*yTDJePxx9~BI2h=K(6m6L>;h_6y)Kt~(bo>c17Ts3f;ZncS-Sy`th!v|KphB~l3>N)W3?d|At;Ngo4SFU^sysu*S hza7B2@c&8v|K*PreOa5}*U8EN1fH&bF6*2UngF+RZ5sdp literal 0 HcmV?d00001 diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c index f38ba51801be..f9eb9e18723f 100644 --- a/keyboards/planck/keymaps/dvorak2space/keymap.c +++ b/keyboards/planck/keymaps/dvorak2space/keymap.c @@ -17,11 +17,15 @@ enum { }; enum { - TD/ = 0 + F/B = 0 + LPN = 0 + RPN = 0 }; qk_tap_dance_action_t tap_dance_actions[] = { - [TD/] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_NUBS) + [F/B] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_NUBS) + [LPN] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, LCBR) + [RPN] = ACTION_TAP_DANCE_DOUBLE(KC_RPRN, RCBR) }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -61,19 +65,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), /* Modifier * ,-----------------------------------------------------------------------------------. - * | Tab | + | - | / \ | = | if | else | ( | ) | { | } | Bksp | + * | Tab | + | - | * | / \ | if | else | ( [ | ) ] | { | } | Bksp | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Enter| + * | = | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Enter| * |------+------+------+------+------+------|------+------+------+------+------+------| - * | [ | _ | @ | # | $ | % | ^ | & | * | < | > | ] | + * | | < | > | & | | | _ | $ | @ | # | % | ^ | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | Space | | | | | | * `-----------------------------------------------------------------------------------' */ [2] = LAYOUT_planck_2x2u( - KC_TAB, KC_PLUS,KC_PMNS,TD(TD/),KC_PEQL,HK_IF, HK_ELSE,KC_LPRN,KC_RPRN,KC_LCBR,KC_RCBR,KC_BSPC, - KC_PIPE,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT, - KC_LBRC,KC_UNDS,KC_AT, KC_HASH,KC_DLR, KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LT, KC_GT, KC_RBRC, + KC_TAB, KC_PLUS,KC_PMNS,KC_ASTR,TD(F/B),HK_IF, HK_ELSE,TD(LPN),TD(RPN),KC_LCBR,KC_RCBR,KC_BSPC, + KC_PEQL,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT, + KC_NO, KC_LT, KC_GT, KC_AMPR,KC_PIPE,KC_UNDS,KC_DLR, KC_AT, KC_HASH,KC_PERC,KC_CIRC,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO ), [3] = LAYOUT_planck_2x2u( //Nav diff --git a/keyboards/planck/keymaps/dvorak2space/readme.md b/keyboards/planck/keymaps/dvorak2space/readme.md index 57ead4b45c56..1f50736f7e5e 100644 --- a/keyboards/planck/keymaps/dvorak2space/readme.md +++ b/keyboards/planck/keymaps/dvorak2space/readme.md @@ -2,4 +2,5 @@ IsaacElenbaas's Planck Layout Split spacebar, Dvorak No gaming layer, use .oeu (esdf) and shift instead of right mouse (ctrl) -KLE layout here: https://bit.ly/2WX31nw \ No newline at end of file + +![Keyboard Layout](https://github.com/IsaacElenbaas/qmk_firmware/blob/master/keyboards/planck/keymaps/dvorak2space/keyboard-layout.png) \ No newline at end of file From 8c7560dc539e872a2df55ef63a07b9b43353c080 Mon Sep 17 00:00:00 2001 From: IsaacElenbaas <34344969+IsaacElenbaas@users.noreply.github.com> Date: Sun, 17 Feb 2019 16:37:10 -0500 Subject: [PATCH 05/35] Update readme.md --- keyboards/planck/keymaps/dvorak2space/readme.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/keyboards/planck/keymaps/dvorak2space/readme.md b/keyboards/planck/keymaps/dvorak2space/readme.md index 8349e671ce1f..2570485ff84e 100644 --- a/keyboards/planck/keymaps/dvorak2space/readme.md +++ b/keyboards/planck/keymaps/dvorak2space/readme.md @@ -3,8 +3,4 @@ IsaacElenbaas's Planck Layout Split spacebar, Dvorak No gaming layer, use .oeu (esdf) and shift instead of right mouse (ctrl) -<<<<<<< HEAD ![Keyboard Layout](https://github.com/IsaacElenbaas/qmk_firmware/blob/master/keyboards/planck/keymaps/dvorak2space/keyboard-layout.png) -======= -KLE layout here: https://bit.ly/2WX31nw ->>>>>>> 700fb06174b2d54385956b99e4ed980cc56f814d From 5d51129b15d901408b2fccba02a1b492bd49f610 Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Sun, 17 Feb 2019 16:58:36 -0500 Subject: [PATCH 06/35] Fixed layout image inconsistencies --- .../keymaps/dvorak2space/keyboard-layout.png | Bin 81868 -> 81779 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/keyboards/planck/keymaps/dvorak2space/keyboard-layout.png b/keyboards/planck/keymaps/dvorak2space/keyboard-layout.png index d9a0fd110909ca99f292e40baf4713f793cc7f70..73b95036e2a57ad2df92c6decf0dd90d5742acf1 100644 GIT binary patch delta 44906 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 From 2ce3d3eef1576e6f20212b0fc6506e5368978875 Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Sun, 17 Feb 2019 19:49:39 -0500 Subject: [PATCH 07/35] More quality shift key layer control, swapped enter + shift enter --- .../planck/keymaps/dvorak2space/keymap.c | 34 ++++++++++++------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c index f9eb9e18723f..9b06847f6a24 100644 --- a/keyboards/planck/keymaps/dvorak2space/keymap.c +++ b/keyboards/planck/keymaps/dvorak2space/keymap.c @@ -13,7 +13,8 @@ enum { HK_IF, HK_ELSE, KC_LSFT, - KC_RSFT + KC_RSFT, + KC_ENT }; enum { @@ -59,9 +60,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [1] = LAYOUT_planck_2x2u( KC_TRNS,KC_TRNS,KC_SLSH,KC_1, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + 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_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_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_NO, KC_TRNS,KC_TRNS,KC_TRNS,KC_NO ), /* Modifier * ,-----------------------------------------------------------------------------------. @@ -104,8 +105,23 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch(keycode) { case KC_LSFT: case KC_RSFT: - layer_invert(1); //holding both shifts would output base layer shifts, wrong but shouldn't be an issue + //if shift pressed and not shift layer or released and other shift not pressed + if((record->event.pressed && !IS_LAYER_ON(3)) || (!record->event.pressed && !(keyboard_report->mods & (MOD_BIT(KC_LSFT)) || keyboard_report->mods & (MOD_BIT(KC_RSFT))))) + layer_invert(1); break; + case KC_ENT: + //make 'enter' shift enter' and 'shift enter' 'enter' + if(IS_LAYER_ON(3)) + SEND_STRING(X_ENT) + else + SEND_STRING(SS_LSFT(X_ENT)) + return false; + case HK_IF: + if(record->event.pressed) SEND_STRING("if"); + return false; + case HK_ELSE: + if(record->event.pressed) SEND_STRING("else"); + return false; case HK_SLEEP: if(record->event.pressed && IS_LAYER_ON(5)) SEND_STRING(SS_LALT(SS_TAP(X_F23))); @@ -114,13 +130,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { SEND_STRING(SS_LALT(SS_TAP(X_F23))); layer_invert(5); } - break; - case HK_IF: - if(record->event.pressed) SEND_STRING("if"); - break; - case HK_ELSE: - if(record->event.pressed) SEND_STRING("else"); - break; + return false; } return true; -}; \ No newline at end of file +}; //returning true still sends key after macro is executed, false doesn't \ No newline at end of file From 60c33fca545eff408910b72b0f4e305a577ab4a4 Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Sat, 23 Feb 2019 11:27:54 -0500 Subject: [PATCH 08/35] Keyap tweaks and config cleanup --- .../planck/keymaps/dvorak2space/config.h | 2 + .../planck/keymaps/dvorak2space/keymap.c | 37 +++++++++++-------- .../planck/keymaps/dvorak2space/rules.mk | 4 +- 3 files changed, 26 insertions(+), 17 deletions(-) create mode 100644 keyboards/planck/keymaps/dvorak2space/config.h diff --git a/keyboards/planck/keymaps/dvorak2space/config.h b/keyboards/planck/keymaps/dvorak2space/config.h new file mode 100644 index 000000000000..aa62e05420db --- /dev/null +++ b/keyboards/planck/keymaps/dvorak2space/config.h @@ -0,0 +1,2 @@ +#define TAPPING_TOGGLE 1 +#define PERMISSIVE_HOLD diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c index 9b06847f6a24..a7fc642a2512 100644 --- a/keyboards/planck/keymaps/dvorak2space/keymap.c +++ b/keyboards/planck/keymaps/dvorak2space/keymap.c @@ -1,6 +1,4 @@ #include QMK_KEYBOARD_H -#define TAPPING_TOGGLE 1 -#define PERMISSIVE_HOLD #define MOUSEL KC_BTN1 #define MOUSER KC_BTN2 #define CTRLL LCTL(KC_LEFT) @@ -18,13 +16,13 @@ enum { }; enum { - F/B = 0 + FB = 0 LPN = 0 RPN = 0 }; qk_tap_dance_action_t tap_dance_actions[] = { - [F/B] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_NUBS) + [FB] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_NUBS) [LPN] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, LCBR) [RPN] = ACTION_TAP_DANCE_DOUBLE(KC_RPRN, RCBR) }; @@ -76,7 +74,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [2] = LAYOUT_planck_2x2u( - KC_TAB, KC_PLUS,KC_PMNS,KC_ASTR,TD(F/B),HK_IF, HK_ELSE,TD(LPN),TD(RPN),KC_LCBR,KC_RCBR,KC_BSPC, + KC_TAB, KC_PLUS,KC_PMNS,KC_ASTR,TD(FB),HK_IF, HK_ELSE,TD(LPN),TD(RPN),KC_LCBR,KC_RCBR,KC_BSPC, KC_PEQL,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT, KC_NO, KC_LT, KC_GT, KC_AMPR,KC_PIPE,KC_UNDS,KC_DLR, KC_AT, KC_HASH,KC_PERC,KC_CIRC,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO @@ -91,7 +89,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, LCTL(KC_F13),LCTL(KC_F14),LCTL(KC_F15),LCTL(KC_F16),LCTL(KC_F17),LCTL(KC_F18),LCTL(KC_F19),LCTL(KC_F20),LCTL(KC_F21),LCTL(KC_F22),LCTL(KC_F23),LCTL(KC_F24), LSFT(KC_F13),LSFT(KC_F14),LSFT(KC_F15),LSFT(KC_F16),LSFT(KC_F17),LSFT(KC_F18),LSFT(KC_F19),LSFT(KC_F20),LSFT(KC_F21),LSFT(KC_F22),LSFT(KC_F23),LSFT(KC_F24), - LALT(KC_F13),LALT(KC_F14),LALT(KC_F15),LALT(KC_F16), CAD, LALT(KC_F19), LALT(KC_F21),LALT(KC_F22),SLEEP, KC_TRNS + RESET, LALT(KC_F14),LALT(KC_F15),LALT(KC_F16), CAD, LALT(KC_F19), LALT(KC_F21),LALT(KC_F22),SLEEP, KC_TRNS ), [5] = LAYOUT_planck_2x2u( //Locked Screen KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, @@ -103,18 +101,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch(keycode) { - case KC_LSFT: + //if shift pressed and not shift layer or released and other shift not pressed + //in separate things because MOD_BIT probably isn't toggled until after this returns true and shift is actually toggled + case KC_LSFT: //if pressed and not shift layer or released and other shift not pressed + if((record->event.pressed && !IS_LAYER_ON(3)) || (!record->event.pressed && !(keyboard_report->mods & (MOD_BIT(KC_RSFT))))) + layer_invert(1); + break; case KC_RSFT: - //if shift pressed and not shift layer or released and other shift not pressed - if((record->event.pressed && !IS_LAYER_ON(3)) || (!record->event.pressed && !(keyboard_report->mods & (MOD_BIT(KC_LSFT)) || keyboard_report->mods & (MOD_BIT(KC_RSFT))))) + if((record->event.pressed && !IS_LAYER_ON(3)) || (!record->event.pressed && !(keyboard_report->mods & (MOD_BIT(KC_LSFT))))) layer_invert(1); break; - case KC_ENT: - //make 'enter' shift enter' and 'shift enter' 'enter' - if(IS_LAYER_ON(3)) - SEND_STRING(X_ENT) - else - SEND_STRING(SS_LSFT(X_ENT)) + case KC_ENT: //won't repeat on hold and I can't find a solution other than hardcoding timers but I kinda prefer it anyway. Swaps enter and shift enter + if(record->event.pressed) { + if(IS_LAYER_ON(3)) { //if shifted release correct shift, send, and press same shift + if(keyboard_report->mods & (MOD_BIT(KC_LSFT))) + SEND_STRING(SS_UP(X_LSFT) SS_TAP(X_ENT) SS_DOWN(X_LSFT)); + else + SEND_STRING(SS_UP(X_RSFT) SS_TAP(X_ENT) SS_DOWN(X_RSFT)); + } + else + SEND_STRING(SS_LSFT(SS_TAP(X_ENT))); + } return false; case HK_IF: if(record->event.pressed) SEND_STRING("if"); diff --git a/keyboards/planck/keymaps/dvorak2space/rules.mk b/keyboards/planck/keymaps/dvorak2space/rules.mk index c19c7fad43ea..0339c5b5d86c 100644 --- a/keyboards/planck/keymaps/dvorak2space/rules.mk +++ b/keyboards/planck/keymaps/dvorak2space/rules.mk @@ -5,7 +5,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) COMMAND_ENABLE = no # 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 +NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work. Can make windows not recognize device. BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = no # Audio output on port C6 @@ -21,4 +21,4 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend LAYOUTS = ortho_4x12 planck_mit planck_grid planck_1x2uC planck_1x2uR planck_1x2uL planck_2x2u LAYOUTS_HAS_RGB = no -DEFAULT_FOLDER = planck/rev6 \ No newline at end of file +DEFAULT_FOLDER = planck/rev6 From 78930d8d78c6d694d240b14c094c55347a03750b Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Sat, 23 Feb 2019 16:55:48 -0500 Subject: [PATCH 09/35] Almost compiling, still has layout reference issues. --- .../planck/keymaps/dvorak2space/keymap.c | 34 +++++++++---------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c index a7fc642a2512..9346f47bb006 100644 --- a/keyboards/planck/keymaps/dvorak2space/keymap.c +++ b/keyboards/planck/keymaps/dvorak2space/keymap.c @@ -7,24 +7,22 @@ #define IS_LAYER_ON(layer) (layer_state & (1UL << (layer))) enum { - HK_SLEEP = SAFE_RANGE, + HK_SLP = SAFE_RANGE, HK_IF, - HK_ELSE, - KC_LSFT, - KC_RSFT, - KC_ENT + HK_ELSE + //only needed if not existing key }; enum { - FB = 0 - LPN = 0 - RPN = 0 + FB = 0, + LPN, + RPN }; qk_tap_dance_action_t tap_dance_actions[] = { - [FB] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_NUBS) - [LPN] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, LCBR) - [RPN] = ACTION_TAP_DANCE_DOUBLE(KC_RPRN, RCBR) + [FB] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_NUBS), + [LPN] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_LCBR), + [RPN] = ACTION_TAP_DANCE_DOUBLE(KC_RPRN, KC_RCBR) }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -89,17 +87,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, LCTL(KC_F13),LCTL(KC_F14),LCTL(KC_F15),LCTL(KC_F16),LCTL(KC_F17),LCTL(KC_F18),LCTL(KC_F19),LCTL(KC_F20),LCTL(KC_F21),LCTL(KC_F22),LCTL(KC_F23),LCTL(KC_F24), LSFT(KC_F13),LSFT(KC_F14),LSFT(KC_F15),LSFT(KC_F16),LSFT(KC_F17),LSFT(KC_F18),LSFT(KC_F19),LSFT(KC_F20),LSFT(KC_F21),LSFT(KC_F22),LSFT(KC_F23),LSFT(KC_F24), - RESET, LALT(KC_F14),LALT(KC_F15),LALT(KC_F16), CAD, LALT(KC_F19), LALT(KC_F21),LALT(KC_F22),SLEEP, KC_TRNS + RESET, LALT(KC_F14),LALT(KC_F15),LALT(KC_F16), CAD, LALT(KC_F19), LALT(KC_F21),LALT(KC_F22),HK_SLP, KC_TRNS ), [5] = LAYOUT_planck_2x2u( //Locked Screen KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, SLEEP, KC_NO + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, HK_SLP, KC_NO ) }; -bool process_record_user(uint16_t keycode, keyrecord_t *record) { +bool process_record_user(uint16_t keycode, keyrecord_t *record) { //X_KEY doesn't support aliases switch(keycode) { //if shift pressed and not shift layer or released and other shift not pressed //in separate things because MOD_BIT probably isn't toggled until after this returns true and shift is actually toggled @@ -115,12 +113,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if(record->event.pressed) { if(IS_LAYER_ON(3)) { //if shifted release correct shift, send, and press same shift if(keyboard_report->mods & (MOD_BIT(KC_LSFT))) - SEND_STRING(SS_UP(X_LSFT) SS_TAP(X_ENT) SS_DOWN(X_LSFT)); + SEND_STRING(SS_UP(X_LSHIFT) SS_TAP(X_ENTER) SS_DOWN(X_LSHIFT)); else - SEND_STRING(SS_UP(X_RSFT) SS_TAP(X_ENT) SS_DOWN(X_RSFT)); + SEND_STRING(SS_UP(X_RSHIFT) SS_TAP(X_ENTER) SS_DOWN(X_RSHIFT)); } else - SEND_STRING(SS_LSFT(SS_TAP(X_ENT))); + SEND_STRING(SS_LSFT(SS_TAP(X_ENTER))); } return false; case HK_IF: @@ -129,7 +127,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case HK_ELSE: if(record->event.pressed) SEND_STRING("else"); return false; - case HK_SLEEP: + case HK_SLP: if(record->event.pressed && IS_LAYER_ON(5)) SEND_STRING(SS_LALT(SS_TAP(X_F23))); if(!record->event.pressed) { From ca487126efd5440eb2e28c4387211b9729d39771 Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Sat, 23 Feb 2019 18:28:08 -0500 Subject: [PATCH 10/35] Finally compiling. 2x2u layout (default, not mine) had nonexistent keys on it --- keyboards/planck/keymaps/dvorak2space/config.h | 1 + keyboards/planck/keymaps/dvorak2space/rules.mk | 1 - keyboards/planck/planck.h | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/planck/keymaps/dvorak2space/config.h b/keyboards/planck/keymaps/dvorak2space/config.h index aa62e05420db..5c5264ee8133 100644 --- a/keyboards/planck/keymaps/dvorak2space/config.h +++ b/keyboards/planck/keymaps/dvorak2space/config.h @@ -1,2 +1,3 @@ #define TAPPING_TOGGLE 1 #define PERMISSIVE_HOLD + diff --git a/keyboards/planck/keymaps/dvorak2space/rules.mk b/keyboards/planck/keymaps/dvorak2space/rules.mk index 0339c5b5d86c..fca5211ff20b 100644 --- a/keyboards/planck/keymaps/dvorak2space/rules.mk +++ b/keyboards/planck/keymaps/dvorak2space/rules.mk @@ -1,4 +1,3 @@ -MCU = atmega32u4 OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE = yes # Mouse keys(+4700) diff --git a/keyboards/planck/planck.h b/keyboards/planck/planck.h index d908d80ec4a3..d270eb3fe83a 100644 --- a/keyboards/planck/planck.h +++ b/keyboards/planck/planck.h @@ -117,7 +117,7 @@ { k06, k07, k08, k09, k0a, k0b }, \ { k16, k17, k18, k19, k1a, k1b }, \ { k26, k27, k28, k29, k2a, k2b }, \ - { k36, k37, k38, k33, k34, k35 } \ + { k36, k36, k38, k33, k34, k34 } \ } #define LAYOUT_planck_grid( \ From c5c5b3f2a08b1661356698983952841e8627ec7d Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Sun, 3 Mar 2019 12:39:39 -0500 Subject: [PATCH 11/35] Super minor changes --- keyboards/planck/keymaps/dvorak2space/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c index 9346f47bb006..a6d3ed0e12c0 100644 --- a/keyboards/planck/keymaps/dvorak2space/keymap.c +++ b/keyboards/planck/keymaps/dvorak2space/keymap.c @@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_QUOT,KC_COMM,KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, TT(3), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT, KC_LSFT,KC_SCLN,KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, - KC_ESC, MOUSER, MOUSEL, KC_LCTL, KC_SPC, MO(2), KC_LGUI,KC_VOLD,KC_VOLU,OSL(4) + KC_ESC, MOUSER, MOUSEL, KC_LCTL, KC_SPC, TT(2), KC_LGUI,KC_VOLD,KC_VOLU,OSL(4) ), /* Custom Shifts * ,-----------------------------------------------------------------------------------. @@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS,KC_TRNS,KC_SLSH,KC_1, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, 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_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_NO, KC_TRNS,KC_TRNS,KC_TRNS,KC_NO + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_NO, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS ), /* Modifier * ,-----------------------------------------------------------------------------------. From 92ceda2d81d37454b9793d3dc42cb77d78ae6954 Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Fri, 8 Mar 2019 17:47:58 -0500 Subject: [PATCH 12/35] Ctrl+Bksp after first tap --- .../planck/keymaps/dvorak2space/keymap.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c index a6d3ed0e12c0..1ebca9430757 100644 --- a/keyboards/planck/keymaps/dvorak2space/keymap.c +++ b/keyboards/planck/keymaps/dvorak2space/keymap.c @@ -16,13 +16,22 @@ enum { enum { FB = 0, LPN, - RPN + RPN, + BCK }; +void backspace(qk_tap_dance_state_t *state, void *user_data) { + if(state->count == 1) + SEND_STRING(SS_TAP(X_BSPACE)); + else + SEND_STRING(SS_LCTRL(SS_TAP(X_BSPACE))); +} + qk_tap_dance_action_t tap_dance_actions[] = { [FB] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_NUBS), [LPN] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_LCBR), - [RPN] = ACTION_TAP_DANCE_DOUBLE(KC_RPRN, KC_RCBR) + [RPN] = ACTION_TAP_DANCE_DOUBLE(KC_RPRN, KC_RCBR), + [BCK] = ACTION_TAP_DANCE_FN(backspace) }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -38,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [0] = LAYOUT_planck_2x2u( - KC_TAB, KC_QUOT,KC_COMM,KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, + KC_TAB, KC_QUOT,KC_COMM,KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, TD(BCK), TT(3), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT, KC_LSFT,KC_SCLN,KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_ESC, MOUSER, MOUSEL, KC_LCTL, KC_SPC, TT(2), KC_LGUI,KC_VOLD,KC_VOLU,OSL(4) @@ -72,13 +81,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [2] = LAYOUT_planck_2x2u( - KC_TAB, KC_PLUS,KC_PMNS,KC_ASTR,TD(FB),HK_IF, HK_ELSE,TD(LPN),TD(RPN),KC_LCBR,KC_RCBR,KC_BSPC, + KC_TAB, KC_PLUS,KC_PMNS,KC_ASTR,TD(FB),HK_IF, HK_ELSE,TD(LPN),TD(RPN),KC_LCBR,KC_RCBR,TD(BCK), KC_PEQL,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT, KC_NO, KC_LT, KC_GT, KC_AMPR,KC_PIPE,KC_UNDS,KC_DLR, KC_AT, KC_HASH,KC_PERC,KC_CIRC,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO ), [3] = LAYOUT_planck_2x2u( //Nav - KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME,KC_UP, KC_END, KC_NO, KC_BSPC, + KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME,KC_UP, KC_END, KC_NO, TD(BCK), KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, CTRLL, KC_LEFT,KC_DOWN,KC_RGHT,CTRLR, KC_ENT, KC_LSFT,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO From 946a4226af08aba926cf7b35b8c4016f37964036 Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Sun, 24 Mar 2019 17:23:35 -0400 Subject: [PATCH 13/35] Changed bind so un/lock is explicit to work with remote un/locking --- .../planck/keymaps/dvorak2space/keymap.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c index 1ebca9430757..10393be4ee1a 100644 --- a/keyboards/planck/keymaps/dvorak2space/keymap.c +++ b/keyboards/planck/keymaps/dvorak2space/keymap.c @@ -21,7 +21,7 @@ enum { }; void backspace(qk_tap_dance_state_t *state, void *user_data) { - if(state->count == 1) + if(state->count == 1 || keyboard_report->mods & (MOD_BIT(KC_LSFT)) || keyboard_report->mods & (MOD_BIT(KC_RSFT))) SEND_STRING(SS_TAP(X_BSPACE)); else SEND_STRING(SS_LCTRL(SS_TAP(X_BSPACE))); @@ -86,23 +86,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_LT, KC_GT, KC_AMPR,KC_PIPE,KC_UNDS,KC_DLR, KC_AT, KC_HASH,KC_PERC,KC_CIRC,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO ), - [3] = LAYOUT_planck_2x2u( //Nav +//Nav + [3] = LAYOUT_planck_2x2u( KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME,KC_UP, KC_END, KC_NO, TD(BCK), KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, CTRLL, KC_LEFT,KC_DOWN,KC_RGHT,CTRLR, KC_ENT, KC_LSFT,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO ), - [4] = LAYOUT_planck_2x2u( //AHK-Bindable Macros +//AHK-Bindable Macros + [4] = LAYOUT_planck_2x2u( KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, LCTL(KC_F13),LCTL(KC_F14),LCTL(KC_F15),LCTL(KC_F16),LCTL(KC_F17),LCTL(KC_F18),LCTL(KC_F19),LCTL(KC_F20),LCTL(KC_F21),LCTL(KC_F22),LCTL(KC_F23),LCTL(KC_F24), LSFT(KC_F13),LSFT(KC_F14),LSFT(KC_F15),LSFT(KC_F16),LSFT(KC_F17),LSFT(KC_F18),LSFT(KC_F19),LSFT(KC_F20),LSFT(KC_F21),LSFT(KC_F22),LSFT(KC_F23),LSFT(KC_F24), - RESET, LALT(KC_F14),LALT(KC_F15),LALT(KC_F16), CAD, LALT(KC_F19), LALT(KC_F21),LALT(KC_F22),HK_SLP, KC_TRNS + RESET, LALT(KC_F14),LALT(KC_F15),LALT(KC_F16), CAD,LALT(KC_F19), LALT(KC_F21),LALT(KC_F22),HK_SLP, KC_TRNS ), - [5] = LAYOUT_planck_2x2u( //Locked Screen +//Locked Screen + [5] = LAYOUT_planck_2x2u( KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, HK_SLP, KC_NO + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, HK_SLP, KC_NO ) }; @@ -141,10 +144,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { //X_KEY doesn' SEND_STRING(SS_LALT(SS_TAP(X_F23))); if(!record->event.pressed) { if(!IS_LAYER_ON(5)) - SEND_STRING(SS_LALT(SS_TAP(X_F23))); + SEND_STRING(SS_LALT(SS_TAP(X_F24))); layer_invert(5); } return false; } return true; -}; //returning true still sends key after macro is executed, false doesn't \ No newline at end of file +}; \ No newline at end of file From 9737fc331ddb043c5e634f739d89a01518258e3d Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Thu, 28 Mar 2019 18:01:43 -0400 Subject: [PATCH 14/35] Added keyboard passwords please don't hate me --- .../planck/keymaps/dvorak2space/config.h | 1 - .../planck/keymaps/dvorak2space/keymap.c | 40 +++++++++++++------ 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/keyboards/planck/keymaps/dvorak2space/config.h b/keyboards/planck/keymaps/dvorak2space/config.h index 5c5264ee8133..aa62e05420db 100644 --- a/keyboards/planck/keymaps/dvorak2space/config.h +++ b/keyboards/planck/keymaps/dvorak2space/config.h @@ -1,3 +1,2 @@ #define TAPPING_TOGGLE 1 #define PERMISSIVE_HOLD - diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c index 10393be4ee1a..c3ba76487f06 100644 --- a/keyboards/planck/keymaps/dvorak2space/keymap.c +++ b/keyboards/planck/keymaps/dvorak2space/keymap.c @@ -1,4 +1,5 @@ #include QMK_KEYBOARD_H +#include "passwords.c" //Instead of extern just to cut down on compile time. #define MOUSEL KC_BTN1 #define MOUSER KC_BTN2 #define CTRLL LCTL(KC_LEFT) @@ -47,10 +48,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [0] = LAYOUT_planck_2x2u( - KC_TAB, KC_QUOT,KC_COMM,KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, TD(BCK), - TT(3), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT, - KC_LSFT,KC_SCLN,KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, - KC_ESC, MOUSER, MOUSEL, KC_LCTL, KC_SPC, TT(2), KC_LGUI,KC_VOLD,KC_VOLU,OSL(4) + KC_TAB, KC_QUOT,KC_COMM,KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, TD(BCK), + TT(3), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT, + KC_LSFT,KC_SCLN,KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, + KC_ESC, MOUSER, MOUSEL, KC_LCTL, KC_SPC, TT(2), KC_LGUI,KC_VOLD,KC_VOLU,OSL(4) ), /* Custom Shifts * ,-----------------------------------------------------------------------------------. @@ -64,10 +65,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [1] = LAYOUT_planck_2x2u( - KC_TRNS,KC_TRNS,KC_SLSH,KC_1, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_SLSH,KC_1, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, 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_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_NO, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_NO, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS ), /* Modifier * ,-----------------------------------------------------------------------------------. @@ -81,24 +82,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [2] = LAYOUT_planck_2x2u( - KC_TAB, KC_PLUS,KC_PMNS,KC_ASTR,TD(FB),HK_IF, HK_ELSE,TD(LPN),TD(RPN),KC_LCBR,KC_RCBR,TD(BCK), - KC_PEQL,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT, + KC_TAB, KC_PLUS,KC_PMNS,KC_ASTR,TD(FB), HK_IF, HK_ELSE,TD(LPN),TD(RPN),KC_LCBR,KC_RCBR,TD(BCK), + KC_PEQL,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT, KC_NO, KC_LT, KC_GT, KC_AMPR,KC_PIPE,KC_UNDS,KC_DLR, KC_AT, KC_HASH,KC_PERC,KC_CIRC,KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO + KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO ), //Nav [3] = LAYOUT_planck_2x2u( KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME,KC_UP, KC_END, KC_NO, TD(BCK), KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, CTRLL, KC_LEFT,KC_DOWN,KC_RGHT,CTRLR, KC_ENT, KC_LSFT,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO ), //AHK-Bindable Macros [4] = LAYOUT_planck_2x2u( - 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_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, LCTL(KC_F13),LCTL(KC_F14),LCTL(KC_F15),LCTL(KC_F16),LCTL(KC_F17),LCTL(KC_F18),LCTL(KC_F19),LCTL(KC_F20),LCTL(KC_F21),LCTL(KC_F22),LCTL(KC_F23),LCTL(KC_F24), LSFT(KC_F13),LSFT(KC_F14),LSFT(KC_F15),LSFT(KC_F16),LSFT(KC_F17),LSFT(KC_F18),LSFT(KC_F19),LSFT(KC_F20),LSFT(KC_F21),LSFT(KC_F22),LSFT(KC_F23),LSFT(KC_F24), - RESET, LALT(KC_F14),LALT(KC_F15),LALT(KC_F16), CAD,LALT(KC_F19), LALT(KC_F21),LALT(KC_F22),HK_SLP, KC_TRNS + RESET, LALT(KC_F14),LALT(KC_F15),TG(6), CAD,LALT(KC_F19), LALT(KC_F21),LALT(KC_F22),HK_SLP, KC_TRNS ), //Locked Screen [5] = LAYOUT_planck_2x2u( @@ -106,6 +107,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, HK_SLP, KC_NO + ), +//Passwords (by first letter of service name, at least better than just 1) + [6] = LAYOUT_planck_2x2u( + KC_NO, KC_NO, KC_NO, KC_NO, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_NO, + KC_NO, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_NO, + KC_NO, KC_NO, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TG(6) ) }; @@ -148,6 +156,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { //X_KEY doesn' layer_invert(5); } return false; + default: + if(IS_LAYER_ON(6) && keycode <= KC_Z) { + SEND_STRING(passwords[keycode - KC_A]); + layer_invert(6); + return false; + } } return true; -}; \ No newline at end of file +}; From 7436c8dc84d6c61ca282edd1f6b345ec5a832b74 Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Fri, 29 Mar 2019 09:32:45 -0400 Subject: [PATCH 15/35] Changed backspace functionality and added em dash --- .../planck/keymaps/dvorak2space/keymap.c | 79 +++++++++++++++---- 1 file changed, 65 insertions(+), 14 deletions(-) diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c index c3ba76487f06..340ca3a1a5fe 100644 --- a/keyboards/planck/keymaps/dvorak2space/keymap.c +++ b/keyboards/planck/keymaps/dvorak2space/keymap.c @@ -11,28 +11,24 @@ enum { HK_SLP = SAFE_RANGE, HK_IF, HK_ELSE - //only needed if not existing key }; enum { FB = 0, LPN, RPN, - BCK + BCK, + DSH }; -void backspace(qk_tap_dance_state_t *state, void *user_data) { - if(state->count == 1 || keyboard_report->mods & (MOD_BIT(KC_LSFT)) || keyboard_report->mods & (MOD_BIT(KC_RSFT))) - SEND_STRING(SS_TAP(X_BSPACE)); - else - SEND_STRING(SS_LCTRL(SS_TAP(X_BSPACE))); -} - -qk_tap_dance_action_t tap_dance_actions[] = { - [FB] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_NUBS), - [LPN] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_LCBR), - [RPN] = ACTION_TAP_DANCE_DOUBLE(KC_RPRN, KC_RCBR), - [BCK] = ACTION_TAP_DANCE_FN(backspace) +enum { + SINGLE_TAP = 1, + SINGLE_HOLD = 2, + DOUBLE_TAP = 3, + DOUBLE_HOLD = 4, + DOUBLE_SINGLE_TAP = 5, //Distinguishes between double tapping and typing, "tapping", for example + TRIPLE_TAP = 6, + TRIPLE_HOLD = 7 }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -165,3 +161,58 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { //X_KEY doesn' } return true; }; + +//tapdance state evaluation +int cur_dance(qk_tap_dance_state_t *state) { + if(state->count == 1) { + if(state->interrupted || !state->pressed) { return SINGLE_TAP; } + else { return SINGLE_HOLD; } + } + else if(state->count == 2) { return DOUBLE_TAP; } + else if(state->count == 3) { return TRIPLE_TAP; } + else { return false; } +} + +void back_tap(qk_tap_dance_state_t *state, void *user_data) { tap_code(KC_BSPACE); } + +void back_finished(qk_tap_dance_state_t *state, void *user_data) { + int td_state = cur_dance(state); + switch(td_state) { + case SINGLE_HOLD: + tap_code16(LCTL(KC_BSPACE)); + break; + } +} + +void dash_finished(qk_tap_dance_state_t *state, void *user_data) { + int td_state = cur_dance(state); + switch(td_state) { + case SINGLE_TAP: + tap_code(KC_PMNS); + break; + case SINGLE_HOLD: + register_mods(MOD_BIT(KC_LALT)); + tap_code(KC_KP_0); + tap_code(KC_KP_1); + tap_code(KC_KP_5); + tap_code(KC_KP_1); + unregister_mods(MOD_BIT(KC_LALT)); + break; + case DOUBLE_TAP: + tap_code(KC_PMNS); + tap_code(KC_PMNS); + break; + case TRIPLE_TAP: + tap_code(KC_PMNS); + tap_code(KC_PMNS); + tap_code(KC_PMNS); + } +} + +qk_tap_dance_action_t tap_dance_actions[] = { + [FB] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_NUBS), + [LPN] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_LCBR), + [RPN] = ACTION_TAP_DANCE_DOUBLE(KC_RPRN, KC_RCBR), + [BCK] = ACTION_TAP_DANCE_FN_ADVANCED(back_tap, back_finished, NULL), //each tap, on finished, and reset. Normally register_code on press unregister on reset so keys + [DSH] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dash_finished, NULL) //can be held down, but in both cases a trigger I'm using is holding them down so no point. +}; From 3b8b95328b0ea7b2938d20ef0dee9a804951f3f2 Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Fri, 29 Mar 2019 10:15:06 -0400 Subject: [PATCH 16/35] Changed to send_string because it's preferred for macros --- .../planck/keymaps/dvorak2space/keymap.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c index 340ca3a1a5fe..2dc3e6277b54 100644 --- a/keyboards/planck/keymaps/dvorak2space/keymap.c +++ b/keyboards/planck/keymaps/dvorak2space/keymap.c @@ -191,21 +191,18 @@ void dash_finished(qk_tap_dance_state_t *state, void *user_data) { tap_code(KC_PMNS); break; case SINGLE_HOLD: - register_mods(MOD_BIT(KC_LALT)); - tap_code(KC_KP_0); - tap_code(KC_KP_1); - tap_code(KC_KP_5); - tap_code(KC_KP_1); - unregister_mods(MOD_BIT(KC_LALT)); + SEND_STRING( + SS_DOWN(X_LALT) + SS_TAP(X_KP_0) + SS_TAP(X_KP_1) + SS_TAP(X_KP_5) + SS_TAP(X_KP_1) + SS_UP(X_LALT) + ); break; case DOUBLE_TAP: tap_code(KC_PMNS); tap_code(KC_PMNS); - break; - case TRIPLE_TAP: - tap_code(KC_PMNS); - tap_code(KC_PMNS); - tap_code(KC_PMNS); } } From 95ea4c0c276e63d85abc0b825efcef1081219d80 Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Fri, 29 Mar 2019 12:23:26 -0400 Subject: [PATCH 17/35] Minor fixes --- keyboards/planck/keymaps/dvorak2space/keymap.c | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c index 340ca3a1a5fe..4c9abd1fd973 100644 --- a/keyboards/planck/keymaps/dvorak2space/keymap.c +++ b/keyboards/planck/keymaps/dvorak2space/keymap.c @@ -118,16 +118,16 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { //X_KEY doesn' //if shift pressed and not shift layer or released and other shift not pressed //in separate things because MOD_BIT probably isn't toggled until after this returns true and shift is actually toggled case KC_LSFT: //if pressed and not shift layer or released and other shift not pressed - if((record->event.pressed && !IS_LAYER_ON(3)) || (!record->event.pressed && !(keyboard_report->mods & (MOD_BIT(KC_RSFT))))) + if((record->event.pressed && !IS_LAYER_ON(1)) || (!record->event.pressed && !(keyboard_report->mods & (MOD_BIT(KC_RSFT))))) layer_invert(1); break; case KC_RSFT: - if((record->event.pressed && !IS_LAYER_ON(3)) || (!record->event.pressed && !(keyboard_report->mods & (MOD_BIT(KC_LSFT))))) + if((record->event.pressed && !IS_LAYER_ON(1)) || (!record->event.pressed && !(keyboard_report->mods & (MOD_BIT(KC_LSFT))))) layer_invert(1); break; case KC_ENT: //won't repeat on hold and I can't find a solution other than hardcoding timers but I kinda prefer it anyway. Swaps enter and shift enter if(record->event.pressed) { - if(IS_LAYER_ON(3)) { //if shifted release correct shift, send, and press same shift + if(IS_LAYER_ON(1)) { //if shifted release correct shift, send, and press same shift if(keyboard_report->mods & (MOD_BIT(KC_LSFT))) SEND_STRING(SS_UP(X_LSHIFT) SS_TAP(X_ENTER) SS_DOWN(X_LSHIFT)); else @@ -176,12 +176,8 @@ int cur_dance(qk_tap_dance_state_t *state) { void back_tap(qk_tap_dance_state_t *state, void *user_data) { tap_code(KC_BSPACE); } void back_finished(qk_tap_dance_state_t *state, void *user_data) { - int td_state = cur_dance(state); - switch(td_state) { - case SINGLE_HOLD: + if(!(state->interrupted || !state->pressed)) tap_code16(LCTL(KC_BSPACE)); - break; - } } void dash_finished(qk_tap_dance_state_t *state, void *user_data) { @@ -201,11 +197,6 @@ void dash_finished(qk_tap_dance_state_t *state, void *user_data) { case DOUBLE_TAP: tap_code(KC_PMNS); tap_code(KC_PMNS); - break; - case TRIPLE_TAP: - tap_code(KC_PMNS); - tap_code(KC_PMNS); - tap_code(KC_PMNS); } } From 0346323e861791cf474ffd3bd8f804475bed681b Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Fri, 29 Mar 2019 12:41:51 -0400 Subject: [PATCH 18/35] Removed global redefinition and fixed possible issue between 6KRO and NKRO --- .../planck/keymaps/dvorak2space/keymap.c | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c index d16e56b1034a..bfdfa89417e8 100644 --- a/keyboards/planck/keymaps/dvorak2space/keymap.c +++ b/keyboards/planck/keymaps/dvorak2space/keymap.c @@ -5,7 +5,6 @@ #define CTRLL LCTL(KC_LEFT) #define CTRLR LCTL(KC_RGHT) #define CAD LCTL(LALT(KC_DEL)) -#define IS_LAYER_ON(layer) (layer_state & (1UL << (layer))) enum { HK_SLP = SAFE_RANGE, @@ -118,17 +117,17 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { //X_KEY doesn' //if shift pressed and not shift layer or released and other shift not pressed //in separate things because MOD_BIT probably isn't toggled until after this returns true and shift is actually toggled case KC_LSFT: //if pressed and not shift layer or released and other shift not pressed - if((record->event.pressed && !IS_LAYER_ON(1)) || (!record->event.pressed && !(keyboard_report->mods & (MOD_BIT(KC_RSFT))))) + if((record->event.pressed && IS_LAYER_OFF(1)) || (!record->event.pressed && !(get_mods() & (MOD_BIT(KC_RSFT))))) layer_invert(1); break; case KC_RSFT: - if((record->event.pressed && !IS_LAYER_ON(1)) || (!record->event.pressed && !(keyboard_report->mods & (MOD_BIT(KC_LSFT))))) + if((record->event.pressed && IS_LAYER_OFF(1)) || (!record->event.pressed && !(get_mods() & (MOD_BIT(KC_LSFT))))) layer_invert(1); break; case KC_ENT: //won't repeat on hold and I can't find a solution other than hardcoding timers but I kinda prefer it anyway. Swaps enter and shift enter if(record->event.pressed) { if(IS_LAYER_ON(1)) { //if shifted release correct shift, send, and press same shift - if(keyboard_report->mods & (MOD_BIT(KC_LSFT))) + if(get_mods() & (MOD_BIT(KC_LSFT))) SEND_STRING(SS_UP(X_LSHIFT) SS_TAP(X_ENTER) SS_DOWN(X_LSHIFT)); else SEND_STRING(SS_UP(X_RSHIFT) SS_TAP(X_ENTER) SS_DOWN(X_RSHIFT)); @@ -147,7 +146,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { //X_KEY doesn' if(record->event.pressed && IS_LAYER_ON(5)) SEND_STRING(SS_LALT(SS_TAP(X_F23))); if(!record->event.pressed) { - if(!IS_LAYER_ON(5)) + if(IS_LAYER_OFF(5)) SEND_STRING(SS_LALT(SS_TAP(X_F24))); layer_invert(5); } @@ -187,14 +186,12 @@ void dash_finished(qk_tap_dance_state_t *state, void *user_data) { tap_code(KC_PMNS); break; case SINGLE_HOLD: - SEND_STRING( - SS_DOWN(X_LALT) - SS_TAP(X_KP_0) - SS_TAP(X_KP_1) - SS_TAP(X_KP_5) - SS_TAP(X_KP_1) - SS_UP(X_LALT) - ); + register_mods(MOD_BIT(KC_LALT)); + tap_code(KC_KP_0); + tap_code(KC_KP_1); + tap_code(KC_KP_5); + tap_code(KC_KP_1); + unregister_mods(MOD_BIT(KC_LALT)); break; case DOUBLE_TAP: tap_code(KC_PMNS); From 44c27517cfbcd5bc134e724d458199cf7def8cd0 Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Fri, 29 Mar 2019 20:00:38 -0400 Subject: [PATCH 19/35] Cleanup --- .../planck/keymaps/dvorak2space/keymap.c | 42 ++++++++++--------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c index bfdfa89417e8..b733fd5e5c04 100644 --- a/keyboards/planck/keymaps/dvorak2space/keymap.c +++ b/keyboards/planck/keymaps/dvorak2space/keymap.c @@ -1,5 +1,5 @@ #include QMK_KEYBOARD_H -#include "passwords.c" //Instead of extern just to cut down on compile time. +#include "passwords.c" //Instead of extern just to cut down on compile time. Holds a single array. #define MOUSEL KC_BTN1 #define MOUSER KC_BTN2 #define CTRLL LCTL(KC_LEFT) @@ -25,7 +25,7 @@ enum { SINGLE_HOLD = 2, DOUBLE_TAP = 3, DOUBLE_HOLD = 4, - DOUBLE_SINGLE_TAP = 5, //Distinguishes between double tapping and typing, "tapping", for example + DOUBLE_SINGLE_TAP = 5, //Distinguishes between double tapping and typing, "tapping", for example. Not sure how accurate it is, and I have no need, so avoiding it at the moment. TRIPLE_TAP = 6, TRIPLE_HOLD = 7 }; @@ -117,23 +117,20 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { //X_KEY doesn' //if shift pressed and not shift layer or released and other shift not pressed //in separate things because MOD_BIT probably isn't toggled until after this returns true and shift is actually toggled case KC_LSFT: //if pressed and not shift layer or released and other shift not pressed - if((record->event.pressed && IS_LAYER_OFF(1)) || (!record->event.pressed && !(get_mods() & (MOD_BIT(KC_RSFT))))) + if((record->event.pressed && IS_LAYER_OFF(1)) || (!record->event.pressed && !(get_mods() & MOD_BIT(KC_RSFT)))) layer_invert(1); break; case KC_RSFT: - if((record->event.pressed && IS_LAYER_OFF(1)) || (!record->event.pressed && !(get_mods() & (MOD_BIT(KC_LSFT))))) + if((record->event.pressed && IS_LAYER_OFF(1)) || (!record->event.pressed && !(get_mods() & MOD_BIT(KC_LSFT)))) layer_invert(1); break; case KC_ENT: //won't repeat on hold and I can't find a solution other than hardcoding timers but I kinda prefer it anyway. Swaps enter and shift enter if(record->event.pressed) { - if(IS_LAYER_ON(1)) { //if shifted release correct shift, send, and press same shift - if(get_mods() & (MOD_BIT(KC_LSFT))) - SEND_STRING(SS_UP(X_LSHIFT) SS_TAP(X_ENTER) SS_DOWN(X_LSHIFT)); - else - SEND_STRING(SS_UP(X_RSHIFT) SS_TAP(X_ENTER) SS_DOWN(X_RSHIFT)); - } - else - SEND_STRING(SS_LSFT(SS_TAP(X_ENTER))); + (IS_LAYER_ON(1)) //if shifted release correct shift, send, and press same shift, else send shift enter + ? (get_mods() & MOD_BIT(KC_LSFT)) + ? SEND_STRING(SS_UP(X_LSHIFT) SS_TAP(X_ENTER) SS_DOWN(X_LSHIFT)) + : SEND_STRING(SS_UP(X_RSHIFT) SS_TAP(X_ENTER) SS_DOWN(X_RSHIFT)) + : SEND_STRING(SS_LSFT(SS_TAP(X_ENTER))); } return false; case HK_IF: @@ -163,13 +160,20 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { //X_KEY doesn' //tapdance state evaluation int cur_dance(qk_tap_dance_state_t *state) { - if(state->count == 1) { - if(state->interrupted || !state->pressed) { return SINGLE_TAP; } - else { return SINGLE_HOLD; } - } - else if(state->count == 2) { return DOUBLE_TAP; } - else if(state->count == 3) { return TRIPLE_TAP; } - else { return false; } + int press = 0; + switch(state->count) { + case 1: + press = (state->interrupted || !state->pressed) + ? SINGLE_TAP + : SINGLE_HOLD; + break; + case 2: + press = DOUBLE_TAP; + break; + case 3: + press = TRIPLE_TAP; + } + return press; } void back_tap(qk_tap_dance_state_t *state, void *user_data) { tap_code(KC_BSPACE); } From c11db3904efe3b50af1094d0cc7cb322de632747 Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Sat, 30 Mar 2019 12:59:28 -0400 Subject: [PATCH 20/35] Layer names, password layer is OSL over toggle --- .../planck/keymaps/dvorak2space/keymap.c | 38 +++++++++++-------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c index b733fd5e5c04..aa2005219c72 100644 --- a/keyboards/planck/keymaps/dvorak2space/keymap.c +++ b/keyboards/planck/keymaps/dvorak2space/keymap.c @@ -6,6 +6,14 @@ #define CTRLR LCTL(KC_RGHT) #define CAD LCTL(LALT(KC_DEL)) +#define BASE_L 0 +#define SHFT_L 1 +#define MOD_L 2 +#define NAV_L 3 +#define AHK_L 4 +#define LOCK_L 5 +#define PASS_L 6 + enum { HK_SLP = SAFE_RANGE, HK_IF, @@ -44,9 +52,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [0] = LAYOUT_planck_2x2u( KC_TAB, KC_QUOT,KC_COMM,KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, TD(BCK), - TT(3), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT, + TT(NAV_L),KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT, KC_LSFT,KC_SCLN,KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, - KC_ESC, MOUSER, MOUSEL, KC_LCTL, KC_SPC, TT(2), KC_LGUI,KC_VOLD,KC_VOLU,OSL(4) + KC_ESC, MOUSER, MOUSEL, KC_LCTL, KC_SPC, TT(MOD_L), KC_LGUI,KC_VOLD,KC_VOLU,OSL(AHK_L) ), /* Custom Shifts * ,-----------------------------------------------------------------------------------. @@ -94,7 +102,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, LCTL(KC_F13),LCTL(KC_F14),LCTL(KC_F15),LCTL(KC_F16),LCTL(KC_F17),LCTL(KC_F18),LCTL(KC_F19),LCTL(KC_F20),LCTL(KC_F21),LCTL(KC_F22),LCTL(KC_F23),LCTL(KC_F24), LSFT(KC_F13),LSFT(KC_F14),LSFT(KC_F15),LSFT(KC_F16),LSFT(KC_F17),LSFT(KC_F18),LSFT(KC_F19),LSFT(KC_F20),LSFT(KC_F21),LSFT(KC_F22),LSFT(KC_F23),LSFT(KC_F24), - RESET, LALT(KC_F14),LALT(KC_F15),TG(6), CAD,LALT(KC_F19), LALT(KC_F21),LALT(KC_F22),HK_SLP, KC_TRNS + RESET, LALT(KC_F14),LALT(KC_F15),OSL(PASS_L), CAD, LALT(KC_F19), LALT(KC_F21),LALT(KC_F22),HK_SLP, KC_TRNS ), //Locked Screen [5] = LAYOUT_planck_2x2u( @@ -103,12 +111,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, HK_SLP, KC_NO ), -//Passwords (by first letter of service name, at least better than just 1) +//Passwords (by first letter of service name, at least better than just one) [6] = LAYOUT_planck_2x2u( KC_NO, KC_NO, KC_NO, KC_NO, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_NO, KC_NO, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_NO, KC_NO, KC_NO, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TG(6) + KC_NO, KC_NO, KC_NO, OSL(PASS_L), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO ) }; @@ -117,16 +125,16 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { //X_KEY doesn' //if shift pressed and not shift layer or released and other shift not pressed //in separate things because MOD_BIT probably isn't toggled until after this returns true and shift is actually toggled case KC_LSFT: //if pressed and not shift layer or released and other shift not pressed - if((record->event.pressed && IS_LAYER_OFF(1)) || (!record->event.pressed && !(get_mods() & MOD_BIT(KC_RSFT)))) - layer_invert(1); + if((record->event.pressed && IS_LAYER_OFF(SHFT_L)) || (!record->event.pressed && !(get_mods() & MOD_BIT(KC_RSFT)))) + layer_invert(SHFT_L); break; case KC_RSFT: - if((record->event.pressed && IS_LAYER_OFF(1)) || (!record->event.pressed && !(get_mods() & MOD_BIT(KC_LSFT)))) - layer_invert(1); + if((record->event.pressed && IS_LAYER_OFF(SHFT_L)) || (!record->event.pressed && !(get_mods() & MOD_BIT(KC_LSFT)))) + layer_invert(SHFT_L); break; case KC_ENT: //won't repeat on hold and I can't find a solution other than hardcoding timers but I kinda prefer it anyway. Swaps enter and shift enter if(record->event.pressed) { - (IS_LAYER_ON(1)) //if shifted release correct shift, send, and press same shift, else send shift enter + (IS_LAYER_ON(SHFT_L)) //if shifted release correct shift, send, and press same shift, else send shift enter ? (get_mods() & MOD_BIT(KC_LSFT)) ? SEND_STRING(SS_UP(X_LSHIFT) SS_TAP(X_ENTER) SS_DOWN(X_LSHIFT)) : SEND_STRING(SS_UP(X_RSHIFT) SS_TAP(X_ENTER) SS_DOWN(X_RSHIFT)) @@ -140,18 +148,18 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { //X_KEY doesn' if(record->event.pressed) SEND_STRING("else"); return false; case HK_SLP: - if(record->event.pressed && IS_LAYER_ON(5)) + if(record->event.pressed && IS_LAYER_ON(LOCK_L)) SEND_STRING(SS_LALT(SS_TAP(X_F23))); if(!record->event.pressed) { - if(IS_LAYER_OFF(5)) + if(IS_LAYER_OFF(LOCK_L)) SEND_STRING(SS_LALT(SS_TAP(X_F24))); - layer_invert(5); + layer_invert(LOCK_L); } return false; default: - if(IS_LAYER_ON(6) && keycode <= KC_Z) { + if(IS_LAYER_ON(PASS_L) && keycode <= KC_Z) { SEND_STRING(passwords[keycode - KC_A]); - layer_invert(6); + layer_invert(PASS_L); return false; } } From cc206aa934a0681fd0b122d68785f6e3e1c0613f Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Sun, 31 Mar 2019 12:50:28 -0400 Subject: [PATCH 21/35] Hopefully now in QMK preferred format. --- .../planck/keymaps/dvorak2space/config.h | 1 + .../planck/keymaps/dvorak2space/keymap.c | 251 +++++++++--------- .../planck/keymaps/dvorak2space/readme.md | 7 +- 3 files changed, 126 insertions(+), 133 deletions(-) diff --git a/keyboards/planck/keymaps/dvorak2space/config.h b/keyboards/planck/keymaps/dvorak2space/config.h index aa62e05420db..0927fa016e19 100644 --- a/keyboards/planck/keymaps/dvorak2space/config.h +++ b/keyboards/planck/keymaps/dvorak2space/config.h @@ -1,2 +1,3 @@ +#pragma once #define TAPPING_TOGGLE 1 #define PERMISSIVE_HOLD diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c index aa2005219c72..8e25cbc70606 100644 --- a/keyboards/planck/keymaps/dvorak2space/keymap.c +++ b/keyboards/planck/keymaps/dvorak2space/keymap.c @@ -6,26 +6,26 @@ #define CTRLR LCTL(KC_RGHT) #define CAD LCTL(LALT(KC_DEL)) -#define BASE_L 0 -#define SHFT_L 1 -#define MOD_L 2 -#define NAV_L 3 -#define AHK_L 4 -#define LOCK_L 5 -#define PASS_L 6 +#define BASE_L 0 +#define SHFT_L 1 +#define MOD_L 2 +#define NAV_L 3 +#define AHK_L 4 +#define LOCK_L 5 +#define PASS_L 6 enum { - HK_SLP = SAFE_RANGE, - HK_IF, - HK_ELSE + HK_SLP = SAFE_RANGE, + HK_IF, + HK_ELSE }; enum { - FB = 0, - LPN, - RPN, - BCK, - DSH + FB = 0, + LPN, + RPN, + BCK, + DSH }; enum { @@ -50,12 +50,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Esc | RClk | LClk | Ctrl | Space | Modifier | GUI | VolD | VolU |Macros| * `-----------------------------------------------------------------------------------' */ - [0] = LAYOUT_planck_2x2u( - KC_TAB, KC_QUOT,KC_COMM,KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, TD(BCK), - TT(NAV_L),KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT, - KC_LSFT,KC_SCLN,KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, - KC_ESC, MOUSER, MOUSEL, KC_LCTL, KC_SPC, TT(MOD_L), KC_LGUI,KC_VOLD,KC_VOLU,OSL(AHK_L) - ), + [0] = LAYOUT_planck_2x2u( + KC_TAB, KC_QUOT,KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, TD(BCK), + TT(NAV_L),KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT, + KC_LSFT, KC_SCLN,KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, + KC_ESC, MOUSER, MOUSEL, KC_LCTL, KC_SPC, TT(MOD_L), KC_LGUI, KC_VOLD, KC_VOLU, OSL(AHK_L) + ), /* Custom Shifts * ,-----------------------------------------------------------------------------------. * | | | ? | ! | | | | | | | | | @@ -67,12 +67,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | * `-----------------------------------------------------------------------------------' */ - [1] = LAYOUT_planck_2x2u( - KC_TRNS,KC_TRNS,KC_SLSH,KC_1, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - 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_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_NO, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS - ), + [1] = LAYOUT_planck_2x2u( + KC_TRNS,KC_TRNS,KC_SLSH,KC_1, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + 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_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_NO, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS + ), /* Modifier * ,-----------------------------------------------------------------------------------. * | Tab | + | - | * | / \ | if | else | ( [ | ) ] | { | } | Bksp | @@ -84,112 +84,105 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | Space | | | | | | * `-----------------------------------------------------------------------------------' */ - [2] = LAYOUT_planck_2x2u( - KC_TAB, KC_PLUS,KC_PMNS,KC_ASTR,TD(FB), HK_IF, HK_ELSE,TD(LPN),TD(RPN),KC_LCBR,KC_RCBR,TD(BCK), - KC_PEQL,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT, - KC_NO, KC_LT, KC_GT, KC_AMPR,KC_PIPE,KC_UNDS,KC_DLR, KC_AT, KC_HASH,KC_PERC,KC_CIRC,KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO - ), + [2] = LAYOUT_planck_2x2u( + KC_TRNS,KC_PLUS,KC_PMNS,KC_ASTR,TD(FB), HK_IF, HK_ELSE,TD(LPN),TD(RPN),KC_LCBR,KC_RCBR,KC_TRNS, + KC_PEQL,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + KC_NO, KC_LT, KC_GT, KC_AMPR,KC_PIPE,KC_UNDS,KC_DLR, KC_AT, KC_HASH,KC_PERC,KC_CIRC,KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO + ), //Nav - [3] = LAYOUT_planck_2x2u( - KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME,KC_UP, KC_END, KC_NO, TD(BCK), - KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, CTRLL, KC_LEFT,KC_DOWN,KC_RGHT,CTRLR, KC_ENT, - KC_LSFT,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO - ), + [3] = LAYOUT_planck_2x2u( + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME,KC_UP, KC_END, KC_NO, KC_TRNS, + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, CTRLL, KC_LEFT,KC_DOWN,KC_RGHT, CTRLR, KC_TRNS, + KC_LSFT,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), //AHK-Bindable Macros - [4] = LAYOUT_planck_2x2u( - KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, - LCTL(KC_F13),LCTL(KC_F14),LCTL(KC_F15),LCTL(KC_F16),LCTL(KC_F17),LCTL(KC_F18),LCTL(KC_F19),LCTL(KC_F20),LCTL(KC_F21),LCTL(KC_F22),LCTL(KC_F23),LCTL(KC_F24), - LSFT(KC_F13),LSFT(KC_F14),LSFT(KC_F15),LSFT(KC_F16),LSFT(KC_F17),LSFT(KC_F18),LSFT(KC_F19),LSFT(KC_F20),LSFT(KC_F21),LSFT(KC_F22),LSFT(KC_F23),LSFT(KC_F24), - RESET, LALT(KC_F14),LALT(KC_F15),OSL(PASS_L), CAD, LALT(KC_F19), LALT(KC_F21),LALT(KC_F22),HK_SLP, KC_TRNS - ), + [4] = LAYOUT_planck_2x2u( + KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, + LCTL(KC_F13),LCTL(KC_F14),LCTL(KC_F15),LCTL(KC_F16),LCTL(KC_F17),LCTL(KC_F18),LCTL(KC_F19),LCTL(KC_F20),LCTL(KC_F21),LCTL(KC_F22),LCTL(KC_F23),LCTL(KC_F24), + LSFT(KC_F13),LSFT(KC_F14),LSFT(KC_F15),LSFT(KC_F16),LSFT(KC_F17),LSFT(KC_F18),LSFT(KC_F19),LSFT(KC_F20),LSFT(KC_F21),LSFT(KC_F22),LSFT(KC_F23),LSFT(KC_F24), + RESET, LALT(KC_F14),LALT(KC_F15),OSL(PASS_L), CAD, LALT(KC_F19), LALT(KC_F21),LALT(KC_F22),HK_SLP, KC_TRNS + ), //Locked Screen - [5] = LAYOUT_planck_2x2u( - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, HK_SLP, KC_NO - ), + [5] = LAYOUT_planck_2x2u( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, HK_SLP, KC_NO + ), //Passwords (by first letter of service name, at least better than just one) - [6] = LAYOUT_planck_2x2u( - KC_NO, KC_NO, KC_NO, KC_NO, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_NO, - KC_NO, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_NO, - KC_NO, KC_NO, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_NO, - KC_NO, KC_NO, KC_NO, OSL(PASS_L), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO - ) + [6] = LAYOUT_planck_2x2u( + KC_NO, KC_NO, KC_NO, KC_NO, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_NO, + KC_NO, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_NO, + KC_NO, KC_NO, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_NO, + KC_NO, KC_NO, KC_NO, OSL(PASS_L), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ) }; bool process_record_user(uint16_t keycode, keyrecord_t *record) { //X_KEY doesn't support aliases - switch(keycode) { - //if shift pressed and not shift layer or released and other shift not pressed - //in separate things because MOD_BIT probably isn't toggled until after this returns true and shift is actually toggled - case KC_LSFT: //if pressed and not shift layer or released and other shift not pressed - if((record->event.pressed && IS_LAYER_OFF(SHFT_L)) || (!record->event.pressed && !(get_mods() & MOD_BIT(KC_RSFT)))) - layer_invert(SHFT_L); - break; - case KC_RSFT: - if((record->event.pressed && IS_LAYER_OFF(SHFT_L)) || (!record->event.pressed && !(get_mods() & MOD_BIT(KC_LSFT)))) - layer_invert(SHFT_L); - break; - case KC_ENT: //won't repeat on hold and I can't find a solution other than hardcoding timers but I kinda prefer it anyway. Swaps enter and shift enter - if(record->event.pressed) { - (IS_LAYER_ON(SHFT_L)) //if shifted release correct shift, send, and press same shift, else send shift enter - ? (get_mods() & MOD_BIT(KC_LSFT)) - ? SEND_STRING(SS_UP(X_LSHIFT) SS_TAP(X_ENTER) SS_DOWN(X_LSHIFT)) - : SEND_STRING(SS_UP(X_RSHIFT) SS_TAP(X_ENTER) SS_DOWN(X_RSHIFT)) - : SEND_STRING(SS_LSFT(SS_TAP(X_ENTER))); - } - return false; - case HK_IF: - if(record->event.pressed) SEND_STRING("if"); - return false; - case HK_ELSE: - if(record->event.pressed) SEND_STRING("else"); - return false; - case HK_SLP: - if(record->event.pressed && IS_LAYER_ON(LOCK_L)) - SEND_STRING(SS_LALT(SS_TAP(X_F23))); - if(!record->event.pressed) { - if(IS_LAYER_OFF(LOCK_L)) - SEND_STRING(SS_LALT(SS_TAP(X_F24))); - layer_invert(LOCK_L); - } - return false; - default: - if(IS_LAYER_ON(PASS_L) && keycode <= KC_Z) { - SEND_STRING(passwords[keycode - KC_A]); - layer_invert(PASS_L); - return false; - } - } - return true; + switch(keycode) { + //if shift pressed and not shift layer or released and other shift not pressed + //in separate things because MOD_BIT (probably?) isn't toggled until after this returns true and shift is actually toggled + case KC_LSFT: //if pressed and not shift layer or released and other shift not pressed + if((record->event.pressed && IS_LAYER_OFF(SHFT_L)) || (!record->event.pressed && !(get_mods() & MOD_BIT(KC_RSFT)))) { layer_invert(SHFT_L); } + break; + case KC_RSFT: + if((record->event.pressed && IS_LAYER_OFF(SHFT_L)) || (!record->event.pressed && !(get_mods() & MOD_BIT(KC_LSFT)))) { layer_invert(SHFT_L); } + break; + case KC_ENT: //won't repeat on hold and I can't find a solution other than hardcoding timers but I kinda prefer it anyway. Swaps enter and shift enter + if(record->event.pressed) { + (IS_LAYER_ON(SHFT_L)) //if shifted release correct shift, send, and press same shift, else send shift enter + ? (get_mods() & MOD_BIT(KC_LSFT)) + ? SEND_STRING(SS_UP(X_LSHIFT) SS_TAP(X_ENTER) SS_DOWN(X_LSHIFT)) + : SEND_STRING(SS_UP(X_RSHIFT) SS_TAP(X_ENTER) SS_DOWN(X_RSHIFT)) + : SEND_STRING(SS_LSFT(SS_TAP(X_ENTER))); + } + return false; + case HK_IF: + if(record->event.pressed) { SEND_STRING("if"); } + return false; + case HK_ELSE: + if(record->event.pressed) { SEND_STRING("else"); } + return false; + case HK_SLP: + if(record->event.pressed && IS_LAYER_ON(LOCK_L)) { SEND_STRING(SS_LALT(SS_TAP(X_F23))); } + if(!record->event.pressed) { + if(IS_LAYER_OFF(LOCK_L)) { SEND_STRING(SS_LALT(SS_TAP(X_F24))); } + layer_invert(LOCK_L); + } + return false; + default: + if(IS_LAYER_ON(PASS_L) && keycode <= KC_Z) { + SEND_STRING(passwords[keycode - KC_A]); + layer_invert(PASS_L); + return false; + } + } + return true; }; //tapdance state evaluation int cur_dance(qk_tap_dance_state_t *state) { - int press = 0; - switch(state->count) { - case 1: - press = (state->interrupted || !state->pressed) - ? SINGLE_TAP - : SINGLE_HOLD; - break; - case 2: - press = DOUBLE_TAP; - break; - case 3: - press = TRIPLE_TAP; - } - return press; + int press = 0; + switch(state->count) { + case 1: + press = (state->interrupted || !state->pressed) + ? SINGLE_TAP + : SINGLE_HOLD; + break; + case 2: + press = DOUBLE_TAP; + break; + case 3: + press = TRIPLE_TAP; + } + return press; } void back_tap(qk_tap_dance_state_t *state, void *user_data) { tap_code(KC_BSPACE); } -void back_finished(qk_tap_dance_state_t *state, void *user_data) { - if(!(state->interrupted || !state->pressed)) - tap_code16(LCTL(KC_BSPACE)); -} +void back_finished(qk_tap_dance_state_t *state, void *user_data) { if(!(state->interrupted || !state->pressed)) { tap_code16(LCTL(KC_BSPACE)); } } void dash_finished(qk_tap_dance_state_t *state, void *user_data) { int td_state = cur_dance(state); @@ -198,12 +191,12 @@ void dash_finished(qk_tap_dance_state_t *state, void *user_data) { tap_code(KC_PMNS); break; case SINGLE_HOLD: - register_mods(MOD_BIT(KC_LALT)); - tap_code(KC_KP_0); - tap_code(KC_KP_1); - tap_code(KC_KP_5); - tap_code(KC_KP_1); - unregister_mods(MOD_BIT(KC_LALT)); + register_mods(MOD_BIT(KC_LALT)); + tap_code(KC_KP_0); + tap_code(KC_KP_1); + tap_code(KC_KP_5); + tap_code(KC_KP_1); + unregister_mods(MOD_BIT(KC_LALT)); break; case DOUBLE_TAP: tap_code(KC_PMNS); @@ -212,9 +205,9 @@ void dash_finished(qk_tap_dance_state_t *state, void *user_data) { } qk_tap_dance_action_t tap_dance_actions[] = { - [FB] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_NUBS), - [LPN] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_LCBR), - [RPN] = ACTION_TAP_DANCE_DOUBLE(KC_RPRN, KC_RCBR), - [BCK] = ACTION_TAP_DANCE_FN_ADVANCED(back_tap, back_finished, NULL), //each tap, on finished, and reset. Normally register_code on press unregister on reset so keys - [DSH] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dash_finished, NULL) //can be held down, but in both cases a trigger I'm using is holding them down so no point. + [FB] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_NUBS), + [LPN] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_LCBR), + [RPN] = ACTION_TAP_DANCE_DOUBLE(KC_RPRN, KC_RCBR), + [BCK] = ACTION_TAP_DANCE_FN_ADVANCED(back_tap, back_finished, NULL), //each tap, on finished, and reset. Normally register_code on press unregister on reset so keys + [DSH] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dash_finished, NULL) //can be held down, but in both cases a trigger I'm using is holding them down so no point. }; diff --git a/keyboards/planck/keymaps/dvorak2space/readme.md b/keyboards/planck/keymaps/dvorak2space/readme.md index 2570485ff84e..a5a3a76fdf01 100644 --- a/keyboards/planck/keymaps/dvorak2space/readme.md +++ b/keyboards/planck/keymaps/dvorak2space/readme.md @@ -1,6 +1,5 @@ -IsaacElenbaas's Planck Layout +![Keyboard Layout](https://github.com/IsaacElenbaas/qmk_firmware/blob/master/keyboards/planck/keymaps/dvorak2space/keyboard-layout.png) -Split spacebar, Dvorak -No gaming layer, use .oeu (esdf) and shift instead of right mouse (ctrl) +# IsaacElenbaas's Planck Layout -![Keyboard Layout](https://github.com/IsaacElenbaas/qmk_firmware/blob/master/keyboards/planck/keymaps/dvorak2space/keyboard-layout.png) +Split spacebar, Dvorak. Bottom right button leads to layer with lots of things to be mapped in AutoHotkey. The ones I use (of which the best are sleep, which turns off the monitors and locks all inputs, rebinding keyboard-only mouse inputs, and redirecting media keys to a specific player) can be found [here.](https://github.com/IsaacElenbaas/personal_scripts/blob/master/Keyboard.ahk) Capslock goes to a right-hand navigation layer, there is a custom layer when holding shift, holding dash gives an em dash and holding backspace deletes a word, and I have a obfuscation-based pasword system you probably shouldn't use, but the rest is pretty standard. From 9af0d0475677c15718ad09ffb572f3a851ae4f22 Mon Sep 17 00:00:00 2001 From: Isaac Elenbaas <34344969+IsaacElenbaas@users.noreply.github.com> Date: Sun, 31 Mar 2019 14:17:42 -0400 Subject: [PATCH 22/35] Blank passwords.c I realized with me excluding this it wouldn't compile - so adding a blank one. --- .../planck/keymaps/dvorak2space/passwords.c | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 keyboards/planck/keymaps/dvorak2space/passwords.c diff --git a/keyboards/planck/keymaps/dvorak2space/passwords.c b/keyboards/planck/keymaps/dvorak2space/passwords.c new file mode 100644 index 000000000000..c46f7cf09ce2 --- /dev/null +++ b/keyboards/planck/keymaps/dvorak2space/passwords.c @@ -0,0 +1,28 @@ +char *passwords[26] = { + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" +}; From 8df5178c3ca7cab42fcb2be4148c1e860bbabc0e Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Tue, 2 Apr 2019 08:29:14 -0400 Subject: [PATCH 23/35] Fixed OSLs not cancelling after tapping term --- keyboards/planck/keymaps/dvorak2space/keymap.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c index 8e25cbc70606..8e8783fc4ca7 100644 --- a/keyboards/planck/keymaps/dvorak2space/keymap.c +++ b/keyboards/planck/keymaps/dvorak2space/keymap.c @@ -17,7 +17,8 @@ enum { HK_SLP = SAFE_RANGE, HK_IF, - HK_ELSE + HK_ELSE, + HK_COSL }; enum { @@ -102,7 +103,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, LCTL(KC_F13),LCTL(KC_F14),LCTL(KC_F15),LCTL(KC_F16),LCTL(KC_F17),LCTL(KC_F18),LCTL(KC_F19),LCTL(KC_F20),LCTL(KC_F21),LCTL(KC_F22),LCTL(KC_F23),LCTL(KC_F24), LSFT(KC_F13),LSFT(KC_F14),LSFT(KC_F15),LSFT(KC_F16),LSFT(KC_F17),LSFT(KC_F18),LSFT(KC_F19),LSFT(KC_F20),LSFT(KC_F21),LSFT(KC_F22),LSFT(KC_F23),LSFT(KC_F24), - RESET, LALT(KC_F14),LALT(KC_F15),OSL(PASS_L), CAD, LALT(KC_F19), LALT(KC_F21),LALT(KC_F22),HK_SLP, KC_TRNS + RESET, LALT(KC_F14),LALT(KC_F15),OSL(PASS_L), CAD, LALT(KC_F19), LALT(KC_F21),LALT(KC_F22),HK_SLP, HK_COSL ), //Locked Screen [5] = LAYOUT_planck_2x2u( @@ -116,7 +117,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_NO, KC_NO, KC_NO, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_NO, KC_NO, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_NO, KC_NO, KC_NO, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_NO, - KC_NO, KC_NO, KC_NO, OSL(PASS_L), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + KC_NO, KC_NO, KC_NO, HK_COSL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO ) }; @@ -145,6 +146,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { //X_KEY doesn' case HK_ELSE: if(record->event.pressed) { SEND_STRING("else"); } return false; + case HK_COSL: + reset_oneshot_layer(); + if(IS_LAYER_ON(AHK_L)) { layer_invert(AHK_L); } + if(IS_LAYER_ON(PASS_L)) { layer_invert(PASS_L); } + return false; case HK_SLP: if(record->event.pressed && IS_LAYER_ON(LOCK_L)) { SEND_STRING(SS_LALT(SS_TAP(X_F23))); } if(!record->event.pressed) { From 05ef94b3ba69a2a250099da27430887f3133c180 Mon Sep 17 00:00:00 2001 From: Isaac Elenbaas <34344969+IsaacElenbaas@users.noreply.github.com> Date: Tue, 2 Apr 2019 16:14:28 -0400 Subject: [PATCH 24/35] Matrix change. KC_NO instead of repeating. --- keyboards/planck/planck.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/planck/planck.h b/keyboards/planck/planck.h index d270eb3fe83a..c6fb040a6659 100644 --- a/keyboards/planck/planck.h +++ b/keyboards/planck/planck.h @@ -117,7 +117,7 @@ { k06, k07, k08, k09, k0a, k0b }, \ { k16, k17, k18, k19, k1a, k1b }, \ { k26, k27, k28, k29, k2a, k2b }, \ - { k36, k36, k38, k33, k34, k34 } \ + { KC_NO, k36, k38, k33, KC_NO, k34 } \ } #define LAYOUT_planck_grid( \ From c056f6726f4d6d5ea7255859c83ce7bf4d8ddf19 Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Tue, 2 Apr 2019 16:19:35 -0400 Subject: [PATCH 25/35] Unneeded line. Co-Authored-By: IsaacElenbaas <34344969+IsaacElenbaas@users.noreply.github.com> --- keyboards/planck/keymaps/dvorak2space/keymap.c | 1 - 1 file changed, 1 deletion(-) diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c index 8e8783fc4ca7..a1a96deb97b7 100644 --- a/keyboards/planck/keymaps/dvorak2space/keymap.c +++ b/keyboards/planck/keymaps/dvorak2space/keymap.c @@ -147,7 +147,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { //X_KEY doesn' if(record->event.pressed) { SEND_STRING("else"); } return false; case HK_COSL: - reset_oneshot_layer(); if(IS_LAYER_ON(AHK_L)) { layer_invert(AHK_L); } if(IS_LAYER_ON(PASS_L)) { layer_invert(PASS_L); } return false; From 9fa4dc25ddb44692bf49bcace4bae44b370e87cd Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Tue, 2 Apr 2019 16:30:35 -0400 Subject: [PATCH 26/35] Fixed return statements to work with after-press functions --- keyboards/planck/keymaps/dvorak2space/keymap.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c index a1a96deb97b7..81a1422e5433 100644 --- a/keyboards/planck/keymaps/dvorak2space/keymap.c +++ b/keyboards/planck/keymaps/dvorak2space/keymap.c @@ -142,21 +142,19 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { //X_KEY doesn' return false; case HK_IF: if(record->event.pressed) { SEND_STRING("if"); } - return false; + break; case HK_ELSE: if(record->event.pressed) { SEND_STRING("else"); } - return false; + break; case HK_COSL: - if(IS_LAYER_ON(AHK_L)) { layer_invert(AHK_L); } - if(IS_LAYER_ON(PASS_L)) { layer_invert(PASS_L); } - return false; + break; case HK_SLP: if(record->event.pressed && IS_LAYER_ON(LOCK_L)) { SEND_STRING(SS_LALT(SS_TAP(X_F23))); } if(!record->event.pressed) { if(IS_LAYER_OFF(LOCK_L)) { SEND_STRING(SS_LALT(SS_TAP(X_F24))); } layer_invert(LOCK_L); } - return false; + break; default: if(IS_LAYER_ON(PASS_L) && keycode <= KC_Z) { SEND_STRING(passwords[keycode - KC_A]); From 5ef1d938cf6c901ba6a28e764781bafe93cf83ca Mon Sep 17 00:00:00 2001 From: Isaac Elenbaas <34344969+IsaacElenbaas@users.noreply.github.com> Date: Tue, 2 Apr 2019 20:30:53 -0400 Subject: [PATCH 27/35] External image host --- keyboards/planck/keymaps/dvorak2space/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/planck/keymaps/dvorak2space/readme.md b/keyboards/planck/keymaps/dvorak2space/readme.md index a5a3a76fdf01..145ac09958a9 100644 --- a/keyboards/planck/keymaps/dvorak2space/readme.md +++ b/keyboards/planck/keymaps/dvorak2space/readme.md @@ -1,4 +1,4 @@ -![Keyboard Layout](https://github.com/IsaacElenbaas/qmk_firmware/blob/master/keyboards/planck/keymaps/dvorak2space/keyboard-layout.png) +![Keyboard Layout](https://i.imgur.com/9jYjllM.png) # IsaacElenbaas's Planck Layout From e773a91769019b73a846ed43937ad78e248c29e9 Mon Sep 17 00:00:00 2001 From: Isaac Elenbaas <34344969+IsaacElenbaas@users.noreply.github.com> Date: Tue, 2 Apr 2019 20:31:35 -0400 Subject: [PATCH 28/35] Removed image from github --- .../keymaps/dvorak2space/keyboard-layout.png | Bin 81779 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 keyboards/planck/keymaps/dvorak2space/keyboard-layout.png diff --git a/keyboards/planck/keymaps/dvorak2space/keyboard-layout.png b/keyboards/planck/keymaps/dvorak2space/keyboard-layout.png deleted file mode 100644 index 73b95036e2a57ad2df92c6decf0dd90d5742acf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81779 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 VcQsK=4?@AV8z10vf5*Wy{{VWL`zQba From 4ccfeab3ea7e9383a97ffb409bc8bc6d81e7120d Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Tue, 2 Apr 2019 20:35:52 -0400 Subject: [PATCH 29/35] Removed unneccessary rules.mk lines and fixed tabbing --- keyboards/planck/keymaps/dvorak2space/keymap.c | 2 +- keyboards/planck/keymaps/dvorak2space/rules.mk | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c index 81a1422e5433..ccb6a4a1b13c 100644 --- a/keyboards/planck/keymaps/dvorak2space/keymap.c +++ b/keyboards/planck/keymaps/dvorak2space/keymap.c @@ -117,7 +117,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_NO, KC_NO, KC_NO, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_NO, KC_NO, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_NO, KC_NO, KC_NO, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_NO, - KC_NO, KC_NO, KC_NO, HK_COSL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + KC_NO, KC_NO, KC_NO, HK_COSL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO ) }; diff --git a/keyboards/planck/keymaps/dvorak2space/rules.mk b/keyboards/planck/keymaps/dvorak2space/rules.mk index fca5211ff20b..59f9f1dff211 100644 --- a/keyboards/planck/keymaps/dvorak2space/rules.mk +++ b/keyboards/planck/keymaps/dvorak2space/rules.mk @@ -17,7 +17,4 @@ TAP_DANCE_ENABLE = yes # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -LAYOUTS = ortho_4x12 planck_mit planck_grid planck_1x2uC planck_1x2uR planck_1x2uL planck_2x2u LAYOUTS_HAS_RGB = no - -DEFAULT_FOLDER = planck/rev6 From 2b1531a0a1f2ef15c8378c45cf4009a1c74b6e97 Mon Sep 17 00:00:00 2001 From: Isaac Elenbaas <34344969+IsaacElenbaas@users.noreply.github.com> Date: Tue, 2 Apr 2019 20:38:26 -0400 Subject: [PATCH 30/35] Typos --- keyboards/planck/keymaps/dvorak2space/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/planck/keymaps/dvorak2space/readme.md b/keyboards/planck/keymaps/dvorak2space/readme.md index 145ac09958a9..1844a57f3731 100644 --- a/keyboards/planck/keymaps/dvorak2space/readme.md +++ b/keyboards/planck/keymaps/dvorak2space/readme.md @@ -2,4 +2,4 @@ # IsaacElenbaas's Planck Layout -Split spacebar, Dvorak. Bottom right button leads to layer with lots of things to be mapped in AutoHotkey. The ones I use (of which the best are sleep, which turns off the monitors and locks all inputs, rebinding keyboard-only mouse inputs, and redirecting media keys to a specific player) can be found [here.](https://github.com/IsaacElenbaas/personal_scripts/blob/master/Keyboard.ahk) Capslock goes to a right-hand navigation layer, there is a custom layer when holding shift, holding dash gives an em dash and holding backspace deletes a word, and I have a obfuscation-based pasword system you probably shouldn't use, but the rest is pretty standard. +Split spacebar, Dvorak. Bottom right button leads to layer with lots of things to be mapped in AutoHotkey. The ones I use (of which the best are sleep, which turns off the monitors and locks all inputs, rebinding keyboard-only mouse inputs, and redirecting media keys to a specific player) can be found [here.](https://github.com/IsaacElenbaas/personal_scripts/blob/master/Keyboard.ahk) Capslock goes to a right-hand navigation layer, there is a custom layer when holding shift, holding dash gives an em dash, holding backspace deletes a word, and I have a obfuscation-based password system you probably shouldn't use, but the rest is pretty standard. From 55c929f703f58c01aad3145f926f92702aa37521 Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Sat, 13 Apr 2019 07:42:32 -0400 Subject: [PATCH 31/35] Fixes upon part arrival. --- .../planck/keymaps/dvorak2space/keymap.c | 31 +++++++++---------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c index ccb6a4a1b13c..fad4187a9bc7 100644 --- a/keyboards/planck/keymaps/dvorak2space/keymap.c +++ b/keyboards/planck/keymaps/dvorak2space/keymap.c @@ -70,7 +70,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [1] = LAYOUT_planck_2x2u( KC_TRNS,KC_TRNS,KC_SLSH,KC_1, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - 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_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_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_NO, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS ), @@ -80,15 +80,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+-------------+------+------+------+------+------| * | = | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Enter| * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | < | > | & | | | _ | $ | @ | # | % | ^ | | + * | ` | < | > | & | | | _ | $ | @ | # | % | ^ | ~ | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | Space | | | | | | * `-----------------------------------------------------------------------------------' */ [2] = LAYOUT_planck_2x2u( - KC_TRNS,KC_PLUS,KC_PMNS,KC_ASTR,TD(FB), HK_IF, HK_ELSE,TD(LPN),TD(RPN),KC_LCBR,KC_RCBR,KC_TRNS, - KC_PEQL,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, - KC_NO, KC_LT, KC_GT, KC_AMPR,KC_PIPE,KC_UNDS,KC_DLR, KC_AT, KC_HASH,KC_PERC,KC_CIRC,KC_NO, + KC_TRNS,KC_PLUS,TD(DSH),KC_ASTR,TD(FB), HK_IF, HK_ELSE,TD(LPN),TD(RPN),KC_LCBR,KC_RCBR,KC_TRNS, + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + KC_GRV, KC_LT, KC_GT, KC_AMPR,KC_PIPE,KC_UNDS,KC_DLR, KC_AT, KC_HASH,KC_PERC,KC_CIRC,LSFT(KC_GRV), KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO ), //Nav @@ -149,18 +149,15 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { //X_KEY doesn' case HK_COSL: break; case HK_SLP: - if(record->event.pressed && IS_LAYER_ON(LOCK_L)) { SEND_STRING(SS_LALT(SS_TAP(X_F23))); } - if(!record->event.pressed) { - if(IS_LAYER_OFF(LOCK_L)) { SEND_STRING(SS_LALT(SS_TAP(X_F24))); } - layer_invert(LOCK_L); + if(record->event.pressed) { + if(IS_LAYER_OFF(LOCK_L)) { SEND_STRING(SS_LALT(SS_TAP(X_F23))); } + else { SEND_STRING(SS_LALT(SS_TAP(X_F24))); } + return false; } + else layer_invert(LOCK_L); break; default: - if(IS_LAYER_ON(PASS_L) && keycode <= KC_Z) { - SEND_STRING(passwords[keycode - KC_A]); - layer_invert(PASS_L); - return false; - } + if(IS_LAYER_ON(PASS_L) && keycode <= KC_Z) { SEND_STRING(passwords[keycode - KC_A]); } } return true; }; @@ -208,9 +205,9 @@ void dash_finished(qk_tap_dance_state_t *state, void *user_data) { } qk_tap_dance_action_t tap_dance_actions[] = { - [FB] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_NUBS), - [LPN] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_LCBR), - [RPN] = ACTION_TAP_DANCE_DOUBLE(KC_RPRN, KC_RCBR), + [FB] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_NUBS), + [LPN] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_LBRC), + [RPN] = ACTION_TAP_DANCE_DOUBLE(KC_RPRN, KC_RBRC), [BCK] = ACTION_TAP_DANCE_FN_ADVANCED(back_tap, back_finished, NULL), //each tap, on finished, and reset. Normally register_code on press unregister on reset so keys [DSH] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dash_finished, NULL) //can be held down, but in both cases a trigger I'm using is holding them down so no point. }; From f2abb4c2b2e32543628752cc2f67872ebb62585c Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Sat, 13 Apr 2019 09:05:17 -0400 Subject: [PATCH 32/35] Final changes and bug fixes --- keyboards/planck/keymaps/dvorak2space/keymap.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c index fad4187a9bc7..88fe84931c7b 100644 --- a/keyboards/planck/keymaps/dvorak2space/keymap.c +++ b/keyboards/planck/keymaps/dvorak2space/keymap.c @@ -53,9 +53,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [0] = LAYOUT_planck_2x2u( KC_TAB, KC_QUOT,KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, TD(BCK), - TT(NAV_L),KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT, + MO(NAV_L),KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT, KC_LSFT, KC_SCLN,KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, - KC_ESC, MOUSER, MOUSEL, KC_LCTL, KC_SPC, TT(MOD_L), KC_LGUI, KC_VOLD, KC_VOLU, OSL(AHK_L) + KC_ESC, MOUSER, MOUSEL, KC_LCTL, KC_SPC, MO(MOD_L), KC_LGUI, KC_VOLD, KC_VOLU, OSL(AHK_L) ), /* Custom Shifts * ,-----------------------------------------------------------------------------------. @@ -154,7 +154,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { //X_KEY doesn' else { SEND_STRING(SS_LALT(SS_TAP(X_F24))); } return false; } - else layer_invert(LOCK_L); + layer_invert(LOCK_L); + if(IS_LAYER_ON(AHK_L)) + layer_invert(AHK_L); break; default: if(IS_LAYER_ON(PASS_L) && keycode <= KC_Z) { SEND_STRING(passwords[keycode - KC_A]); } From 820505a0457c25b5b5b5c16cd8f8c6635377e2cf Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Sun, 14 Apr 2019 15:35:30 -0400 Subject: [PATCH 33/35] Preventing KC_NO from waking monitors. --- keyboards/planck/keymaps/dvorak2space/keymap.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c index 88fe84931c7b..59c11ab727f4 100644 --- a/keyboards/planck/keymaps/dvorak2space/keymap.c +++ b/keyboards/planck/keymaps/dvorak2space/keymap.c @@ -14,6 +14,8 @@ #define LOCK_L 5 #define PASS_L 6 +static host_driver_t *host_driver = 0; + enum { HK_SLP = SAFE_RANGE, HK_IF, @@ -150,8 +152,15 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { //X_KEY doesn' break; case HK_SLP: if(record->event.pressed) { - if(IS_LAYER_OFF(LOCK_L)) { SEND_STRING(SS_LALT(SS_TAP(X_F23))); } - else { SEND_STRING(SS_LALT(SS_TAP(X_F24))); } + if(IS_LAYER_OFF(LOCK_L)) { + host_driver = host_get_driver(); + SEND_STRING(SS_LALT(SS_TAP(X_F23))); + host_set_driver(0); + } + else { + host_set_driver(host_driver); + SEND_STRING(SS_LALT(SS_TAP(X_F24))); + } return false; } layer_invert(LOCK_L); From 9ba75a4623b02c53fb6e344dae079356d6c0a3f9 Mon Sep 17 00:00:00 2001 From: Isaac Elenbaas <34344969+IsaacElenbaas@users.noreply.github.com> Date: Sat, 11 May 2019 18:31:55 -0400 Subject: [PATCH 34/35] Fix to rest of matrices MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In response to https://github.com/evillemez/qmk_firmware/issues/1—the rest have the same problem. The switch of k37 for k36 is just for consistency between that and the 2x2u. --- keyboards/planck/planck.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboards/planck/planck.h b/keyboards/planck/planck.h index c6fb040a6659..fe80d5c003d3 100644 --- a/keyboards/planck/planck.h +++ b/keyboards/planck/planck.h @@ -66,14 +66,14 @@ { k06, k07, k08, k09, k0a, k0b }, \ { k16, k17, k18, k19, k1a, k1b }, \ { k26, k27, k28, k29, k2a, k2b }, \ - { k36, k37, k38, k33, k34, k35 } \ + { KC_NO, k37, k38, k33, k34, k35 } \ } #define LAYOUT_planck_1x2uR( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ - k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \ + k30, k31, k32, k33, k34, k35, k36, k38, k39, k3a, k3b \ ) \ { \ { k00, k01, k02, k03, k04, k05 }, \ @@ -83,7 +83,7 @@ { k06, k07, k08, k09, k0a, k0b }, \ { k16, k17, k18, k19, k1a, k1b }, \ { k26, k27, k28, k29, k2a, k2b }, \ - { k36, k37, k38, k33, k34, k35 } \ + { KC_NO, k36, k38, k33, k34, k35 } \ } #define LAYOUT_planck_1x2uL( \ @@ -100,7 +100,7 @@ { k06, k07, k08, k09, k0a, k0b }, \ { k16, k17, k18, k19, k1a, k1b }, \ { k26, k27, k28, k29, k2a, k2b }, \ - { k36, k37, k38, k33, k34, k35 } \ + { k36, k37, k38, k33, KC_NO, k34 } \ } #define LAYOUT_planck_2x2u( \ From b59de68ff83b76597fd10ac9a819d325413f8569 Mon Sep 17 00:00:00 2001 From: IsaacElenbaas Date: Sat, 29 Jun 2019 11:30:54 -0400 Subject: [PATCH 35/35] Workaround for #6214, minor changes, CRLF change in passwords because it won't leave my modified no matter what I do. --- .../planck/keymaps/dvorak2space/keymap.c | 28 ++++++++-- .../planck/keymaps/dvorak2space/passwords.c | 56 +++++++++---------- 2 files changed, 51 insertions(+), 33 deletions(-) diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c index 59c11ab727f4..4b07759452ba 100644 --- a/keyboards/planck/keymaps/dvorak2space/keymap.c +++ b/keyboards/planck/keymaps/dvorak2space/keymap.c @@ -149,6 +149,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { //X_KEY doesn' if(record->event.pressed) { SEND_STRING("else"); } break; case HK_COSL: + clear_keyboard(); break; case HK_SLP: if(record->event.pressed) { @@ -168,7 +169,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { //X_KEY doesn' layer_invert(AHK_L); break; default: - if(IS_LAYER_ON(PASS_L) && keycode <= KC_Z) { SEND_STRING(passwords[keycode - KC_A]); } + if(IS_LAYER_ON(PASS_L) && keycode <= KC_Z) { + SEND_STRING(passwords[keycode - KC_A]); + layer_invert(PASS_L); + return false; + } } return true; }; @@ -193,7 +198,20 @@ int cur_dance(qk_tap_dance_state_t *state) { void back_tap(qk_tap_dance_state_t *state, void *user_data) { tap_code(KC_BSPACE); } -void back_finished(qk_tap_dance_state_t *state, void *user_data) { if(!(state->interrupted || !state->pressed)) { tap_code16(LCTL(KC_BSPACE)); } } +void back_finished(qk_tap_dance_state_t *state, void *user_data) { if(!(state->interrupted || !state->pressed)) tap_code16(LCTL(KC_BSPACE)); } + +void slash_finished(qk_tap_dance_state_t *state, void *user_data) { + int td_state = cur_dance(state); + switch(td_state) { + case SINGLE_TAP: + clear_mods(); + clear_weak_mods(); + tap_code(KC_SLSH); + break; + case DOUBLE_TAP: + tap_code(KC_NUBS); + } +} void dash_finished(qk_tap_dance_state_t *state, void *user_data) { int td_state = cur_dance(state); @@ -216,9 +234,9 @@ void dash_finished(qk_tap_dance_state_t *state, void *user_data) { } qk_tap_dance_action_t tap_dance_actions[] = { - [FB] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_NUBS), [LPN] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_LBRC), [RPN] = ACTION_TAP_DANCE_DOUBLE(KC_RPRN, KC_RBRC), - [BCK] = ACTION_TAP_DANCE_FN_ADVANCED(back_tap, back_finished, NULL), //each tap, on finished, and reset. Normally register_code on press unregister on reset so keys - [DSH] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dash_finished, NULL) //can be held down, but in both cases a trigger I'm using is holding them down so no point. + [FB] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, slash_finished, NULL), + [BCK] = ACTION_TAP_DANCE_FN_ADVANCED(back_tap, back_finished, NULL), //each tap, on finished, and reset. Normally register_code on press unregister on reset so keys can be held down. + [DSH] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dash_finished, NULL) }; diff --git a/keyboards/planck/keymaps/dvorak2space/passwords.c b/keyboards/planck/keymaps/dvorak2space/passwords.c index c46f7cf09ce2..161c564dd5c3 100644 --- a/keyboards/planck/keymaps/dvorak2space/passwords.c +++ b/keyboards/planck/keymaps/dvorak2space/passwords.c @@ -1,28 +1,28 @@ -char *passwords[26] = { - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" -}; +char *passwords[26] = { + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" +};