summaryrefslogtreecommitdiffstats
path: root/keyboard/ergodox_ez/keymaps/plover
diff options
context:
space:
mode:
Diffstat (limited to 'keyboard/ergodox_ez/keymaps/plover')
-rw-r--r--keyboard/ergodox_ez/keymaps/plover/keymap.c228
-rw-r--r--keyboard/ergodox_ez/keymaps/plover/plover.hex1483
2 files changed, 1711 insertions, 0 deletions
diff --git a/keyboard/ergodox_ez/keymaps/plover/keymap.c b/keyboard/ergodox_ez/keymaps/plover/keymap.c
new file mode 100644
index 0000000000..bd356c47c5
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/plover/keymap.c
@@ -0,0 +1,228 @@
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+#define PLVR 3 // Plover layer
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | = | 1 | 2 | 3 | 4 | 5 | LGui | | RIGHT| 6 | 7 | 8 | 9 | 0 | - |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | Tab | Q | W | E | R | T | L1 | |Plover| Y | U | I | O | P | \ |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | Esc | A | S | D | F | G |------| |------| H | J | K | L |; / L2| ' |
+ * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | App | Home | | Alt |Ctrl/Esc|
+ * ,------|------|------| |------+--------+------.
+ * | | | End | | PgUp | | |
+ * |Backsp|Delete|------| |------| Enter |Space |
+ * | ace | | LAlt | | PgDn | | |
+ * `--------------------' `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = KEYMAP( // layer 0 : default
+ // left hand
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LGUI,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(1),
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
+ LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
+ ALT_T(KC_APP), KC_HOME,
+ KC_END,
+ KC_BSPC,KC_DELT,KC_LALT,
+ // right hand
+ KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ TG(3), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),KC_QUOT,
+ MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
+ KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1,
+ KC_LALT, CTL_T(KC_ESC),
+ KC_PGUP,
+ KC_PGDN,KC_ENT, KC_SPC
+ ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | | . | 0 | = | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// SYMBOLS
+[SYMB] = KEYMAP(
+ // left hand
+ KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
+ KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+ KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+ KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+ KC_TRNS,KC_TRNS,
+ KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,
+ // right hand
+ KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
+ KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
+ KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
+ KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | | | | | | | | | | | | | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | |------| |------|MsLeft|MsDown| MsUp |MsRght| | Play |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | | | | | | | Prev | Next | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | |Brwser|Brwser|
+ * | Lclk | Rclk |------| |------|Fwd |Back |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// MEDIA AND MOUSE
+KEYMAP(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_BTN1, KC_BTN2, KC_TRNS,
+ // right hand
+ 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_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+ KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_WBAK, KC_WFWD
+),
+
+/* Keymap 4: Steno for Plover from https://github.com/shayneholmes/tmk_keyboard/commit/11290f8489013018f778627db725160c745e75bd
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | q | w | e | r | t |------| |------| y | u | i | o | p | [ |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | a | s | d | f | g | | | | h | j | k | l | ; | ' |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | c | v |------| |------| n | m |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+
+[PLVR] = KEYMAP( // layout: layer 4: Steno for Plover
+ // left hand
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_NO,
+ KC_NO, KC_Q, KC_W, KC_E, KC_R, KC_T,
+ KC_NO, KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_FN4, KC_NO,
+ KC_NO,
+ KC_C, KC_V, KC_NO,
+ // right hand
+ KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
+ KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
+ KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
+ KC_NO, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_NO, KC_N, KC_M
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ break;
+ }
+ return MACRO_NONE;
+};
+
+// Runs just one time when the keyboard initializes.
+void * matrix_init_user(void) {
+
+};
+
+// Runs constantly in the background, in a loop.
+void * matrix_scan_user(void) {
+
+ uint8_t layer = biton32(layer_state);
+
+ ergodox_board_led_off();
+ ergodox_right_led_1_off();
+ ergodox_right_led_2_off();
+ ergodox_right_led_3_off();
+ switch (layer) {
+ // TODO: Make this relevant to the ErgoDox EZ.
+ case 1:
+ ergodox_right_led_1_on();
+ break;
+ case 2:
+ ergodox_right_led_2_on();
+ break;
+ default:
+ // none
+ break;
+ }
+
+};
diff --git a/keyboard/ergodox_ez/keymaps/plover/plover.hex b/keyboard/ergodox_ez/keymaps/plover/plover.hex
new file mode 100644
index 0000000000..53b0747d7e
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/plover/plover.hex
@@ -0,0 +1,1483 @@
+:100000000C9457070C949B070C949B070C949B072C
+:100010000C949B070C949B070C949B070C949B07D8
+:100020000C949B070C949B070C94B2120C948413B1
+:100030000C949B070C949B070C949B070C949B07B8
+:100040000C949B070C945C2C0C949B070C949B07C2
+:100050000C949B070C9463220C949B070C949B07B5
+:100060000C949B070C949B070C949B070C949B0788
+:100070000C949B070C949B070C949B070C949B0778
+:100080000C949B070C949B070C949B070C949B0768
+:100090000C949B070C949B070C949B070C949B0758
+:1000A0000C949B070C949B070C949B07E9130B146F
+:1000B000F6140B14F6144D147014F614C514D81459
+:1000C00026182618541854189718D318D41AD41A66
+:1000D000EB18D41AE219E219AE1AD41AD41AC21AB9
+:1000E0000000F0A12E002B002900E1003581000066
+:1000F0001E00140004001D713400E2001F001A00ED
+:1001000016001B00E1044C00200008000700060058
+:1001100050002A0021001500090019004F004D0071
+:10012000220017000A00050000006574E300015476
+:100130000000007F00004A004F00035400000077D9
+:100140000000E20023001C000B00110000002971D8
+:10015000240018000D00100052004B0025000C0078
+:100160000E00360051002C00260012000F00370050
+:100170002F002800270013003382387130004E0012
+:100180002D0031003400E500C10000000100010035
+:1001900001000100010000003A001E0220022202BC
+:1001A000010001003B001F022102230201000100A7
+:1001B0003C002F0226022F00010001003D0030020A
+:1001C00027023000010001003E00310235003502F7
+:1001D000000001000100010000000100000001001A
+:1001E0000100010000000100000001003F0052007A
+:1001F00051002402000001004000240021001E00E4
+:10020000010001004100250022001F00370001000D
+:1002100042002600230020002700010043002502A1
+:100220002E0231002E0001004400450001000100B3
+:1002300001000000010001000100010001000000B8
+:1002400001000100010001000100010001000100A6
+:10025000F20001000100F5000100F000F1000100D2
+:10026000F400F40001000100F3000100F5000100BA
+:100270000100010001000100000001000100010077
+:100280000000010000000100010001000000010069
+:100290000000010001000100F20001000000010067
+:1002A00001000100F1000100A900010001000100AE
+:1002B000F000AC00AA00B70001000100F300AB00A1
+:1002C000A800B600010001000100010001000100CA
+:1002D00001000100AE00010001000000000000006C
+:1002E000000000000000000000001E0014000400D8
+:1002F0000000000000001F001A0016000000190096
+:100300000000200008000700000006000000210097
+:1003100015000900000000000000220017000A007C
+:100320000000C40000000000000000000000000009
+:100330000100000000000000000001000000230098
+:100340001C000B00000001000000240018000D003C
+:1003500001000100000025000C000E00010010004B
+:100360000000260012000F0000001100000027000E
+:100370001300330000000000010001002F003400D2
+:10038000000000000A002530313662003A200025C6
+:10039000303258000A722F63203031323334353610
+:1003A0003738394142434445460A000A0025303275
+:1003B0005800626F756E6365213A20006C65667443
+:1003C00020736964652061747461636865640A0000
+:1003D0006C6566742073696465206E6F7420726545
+:1003E00073706F6E64696E670A00747279696E6704
+:1003F00020746F207265736574206D6370323330C2
+:1004000031380A000A44454255473A20656E616218
+:100410006C65642E0A005B735D004B6579626F61E9
+:1004200072642073746172742E0A005B575D005B06
+:10043000535D005B525D005B445D005B435D0016F5
+:10044000034500720067006F0044006F00780020D1
+:100450000045005A00000016034500720067006F57
+:100460000044006F007800200045005A000000049E
+:1004700003090409028D00050100A0FA0904000027
+:100480000103010100092111010001223F000705BC
+:10049000810308000A090401000103010200092187
+:1004A00011010001224D000705820308000A09041A
+:1004B00002000103000000092111010001223600A1
+:1004C0000705830308000A09040300020300000073
+:1004D00009211101000122200007058403200001E9
+:1004E00007050403200001090404000103000000C3
+:1004F00009211101000122390007058503100001BF
+:100500001201100100000008EDFE071301000102B6
+:10051000000105010906A101050719E029E71500F9
+:100520002501950875018102050819012905950520
+:10053000750191029501750391010507190029774D
+:1005400015002501957875018102C00631FF0974F7
+:10055000A1010975150025FF95207508810209760E
+:10056000150025FF952075089102C005010980A19D
+:1005700001850216010026B7001A01002AB700758E
+:100580001095018100C0050C0901A1018503160128
+:1005900000269C021A01002A9C0275109501810018
+:1005A000C005010902A1010901A1000509190129DC
+:1005B00005150025019505750181029501750381D9
+:1005C000010501093009311581257F9502750881E2
+:1005D0000609381581257F950175088106050C0AE5
+:1005E00038021581257F950175088106C0C0050177
+:1005F0000906A101050719E029E71500250195085D
+:100600007501810295017508810105081901290507
+:100610009505750191029501750391010507190072
+:1006200029FF150025FF950675088100C00A0025E1
+:1006300030325820006B6579626F6172645F726559
+:10064000706F72743A20000A0025303258006B65D2
+:1006500079626F6172645F7365745F6C65643A2080
+:100660000064656C5F6B65795F6269743A206361F1
+:100670006E27742064656C3A20253032580A006178
+:1006800064645F6B65795F6269743A2063616E27A9
+:1006900074206164643A20253032580A00646F6E19
+:1006A000652E0A00626F6F676D616769632073630F
+:1006B000616E3A202E2E2E2000290A002575002F6B
+:1006C000002575005D2800256400200025640020B9
+:1006D0000025640020002564007C0025303258008D
+:1006E0006D6F7573656B6579205B62746E7C7820C5
+:1006F00079207620685D287265702F61636C293AD5
+:10070000205B006D6B5F776865656C5F74696D6514
+:100710005F746F5F6D6178203D2025640A006D6B0A
+:100720005F776865656C5F6D61785F737065656440
+:10073000203D2025640A006D6B5F74696D655F74F0
+:100740006F5F6D6178203D2025640A006D6B5F6DE1
+:1007500061785F7370656564203D2025640A006DD3
+:100760006B5F696E74657276616C203D2025640A4A
+:10077000006D6B5F64656C6179203D2025640A0023
+:100780006D6B5F776865656C5F74696D655F746FCD
+:100790005F6D6178203D2025640A006D6B5F77688E
+:1007A00065656C5F6D61785F7370656564203D2081
+:1007B00025640A006D6B5F74696D655F746F5F6DB2
+:1007C0006178203D2025640A006D6B5F6D61785F64
+:1007D0007370656564203D2025640A006D6B5F6958
+:1007E0006E74657276616C203D2025640A006D6B25
+:1007F0005F64656C6179203D2025640A000A00254C
+:100800007500363A20776865656C5F74696D655F61
+:10081000746F5F6D61783A20000A00257500353AE3
+:1008200020776865656C5F6D61785F73706565647E
+:100830003A20000A00257500343A2074696D655F1E
+:10084000746F5F6D61783A20000A00257500333AB5
+:10085000206D61785F73706565643A20000A002539
+:100860007500323A20696E74657276616C286D731A
+:10087000293A20000A00257500313A2064656C6130
+:1008800079282A31306D73293A20000A092D205623
+:10089000616C756573202D0A004D3E004D25643E48
+:1008A00020003F007365742064656661756C740A8E
+:1008B00000433E200077686572652064656C746152
+:1008C0003A20637572736F723D25642C20776865DA
+:1008D000656C3D25640A53656520687474703A2F11
+:1008E0002F656E2E77696B6970656469612E6F7212
+:1008F000672F77696B692F4D6F7573655F6B6579CE
+:10090000730A000A092D204D6F7573656B65792098
+:100910002D0A4553432F713A09717569740A313AAA
+:100920000964656C6179282A31306D73290A323A7D
+:1009300009696E74657276616C286D73290A333AA1
+:10094000096D61785F73706565640A343A0974698A
+:100950006D655F746F5F6D61780A353A0977686518
+:10096000656C5F6D61785F73706565640A363A091E
+:10097000776865656C5F74696D655F746F5F6D61E5
+:10098000780A0A703A097072696E742076616C7523
+:1009900065730A643A097365742064656661756CF1
+:1009A00074730A75703A092B310A646F776E3A09CD
+:1009B0002D310A706775703A092B31300A706764FF
+:1009C0006F776E3A092D31300A0A737065656420BD
+:1009D0003D2064656C7461202A206D61785F7370BE
+:1009E000656564202A2028726570656174202F2057
+:1009F00074696D655F746F5F6D6178290A003F00EF
+:100A00004D3E2000433E20004C25640A000A092D7B
+:100A100020436F6E736F6C65202D0A4553432F7111
+:100A20003A09717569740A6D3A096D6F7573656B72
+:100A300065790A000A092D204D61676963202D0A36
+:100A4000643A0964656275670A783A096465627593
+:100A500067206D61747269780A6B3A096465627522
+:100A600067206B6579626F6172640A6D3A0964652B
+:100A7000627567206D6F7573650A763A09766572DF
+:100A800073696F6E0A733A097374617475730A63DC
+:100A90003A09636F6E736F6C65206D6F64650A3021
+:100AA0002D343A096C61796572302D342846313025
+:100AB0002D4634290A506175733A09626F6F746C60
+:100AC0006F616465720A653A09656570726F6D0AD7
+:100AD0006E3A094E4B524F0A7A3A09736C6565704B
+:100AE000204C454420746573740A000A0025750083
+:100AF0002E6E6B726F3A20000A002575002E7377F8
+:100B000061705F6261636B736C6173685F62616384
+:100B10006B73706163653A20000A002575002E73BF
+:100B20007761705F67726176655F6573633A200015
+:100B30000A002575002E6E6F5F6775693A20000AFE
+:100B4000002575002E737761705F72616C745F723F
+:100B50006775693A20000A002575002E7377617069
+:100B60005F6C616C745F6C6775693A20000A0025E0
+:100B700075002E636170736C6F636B5F746F5F637E
+:100B80006F6E74726F6C3A20000A002575002E7328
+:100B90007761705F636F6E74726F6C5F63617073A7
+:100BA0006C6F636B3A20000A0025303258006B6589
+:100BB000796D61705F636F6E6669672E7261773AF7
+:100BC00020000A002575002E6D6F7573653A2000B0
+:100BD0000A002575002E6B6579626F6172643A2098
+:100BE000000A002575002E6D61747269783A200044
+:100BF0000A002575002E656E61626C653A20000A58
+:100C000000253032580064656275675F636F6E66F9
+:100C100069672E7261773A20000A002575006465C5
+:100C20006661756C745F6C617965723A20003F0093
+:100C30004E4B524F3A206F66660A004E4B524F3A67
+:100C4000206F6E0A0074696D65725F636F756E74F4
+:100C50003A202530346C580A006B6579626F6172F6
+:100C6000645F6E6B726F3A2025580A006B6579627B
+:100C70006F6172645F69646C653A2025580A006B85
+:100C80006579626F6172645F70726F746F636F6CAD
+:100C90003A2025580A00686F73745F6B6579626F3C
+:100CA0006172645F6C65647328293A2025580A00D4
+:100CB0000A092D20537461747573202D0A0047436F
+:100CC000433A20342E382E32204156522D4C494280
+:100CD000433A20312E382E30204156525F41524344
+:100CE000483A20617672350A004F5054494F4E53AE
+:100CF0003A204C55464120424F4F544D41474943BD
+:100D0000204D4F5553454B45592045585452414B62
+:100D1000455920434F4E534F4C4520434F4D4D4175
+:100D20004E44204E4B524F203531320A0042554935
+:100D30004C443A20393232353435322D646972747C
+:100D400079202830353A34303A3232204A616E20E8
+:100D500032302032303136290A005649443A2030A8
+:100D60007846454544284572676F446F7820455A58
+:100D700029205049443A20307831333037284572A1
+:100D8000676F446F7820455A29205645523A2030E3
+:100D900078303030310A00444553433A20742E6D88
+:100DA0002E6B2E206B6579626F61726420666972AA
+:100DB0006D7761726520666F72204572676F646F30
+:100DC000780A000A092D2056657273696F6E202D0E
+:100DD0000A000A6D6F7573653A206F66660A000A2D
+:100DE0006D6F7573653A206F6E0A000A6B657962E4
+:100DF0006F6172643A206F66660A000A6B657962F9
+:100E00006F6172643A206F6E0A000A6D61747269D4
+:100E1000783A206F66660A000A6D61747269783AE2
+:100E2000206F6E0A000A64656275673A206F6E0A69
+:100E3000000A64656275673A206F66660A000A0AEE
+:100E4000626F6F746C6F616465722E2E2E2000438A
+:100E50003E20006565636F6E6669673A0A00536CF1
+:100E6000656570204C454420746573740A00000069
+:100E7000000000000000000000010204060A0F1735
+:100E8000202C3A4A5D71879DB3C7DAE9F5FCFFFC77
+:100E9000F5E9DAC7B39D87715D4A3A2C20170F0A2E
+:100EA0000604020100000000000000000000112400
+:100EB0001FBECFEFDAE0DEBFCDBF04B603FE24C015
+:100EC0008091F9019091FA01A091FB01B091FC0190
+:100ED0008730904BA740B04BB9F41092F9011092B3
+:100EE000FA011092FB011092FC0114BE84B7877FB7
+:100EF00084BF88E10FB6F894809360001092600080
+:100F00000FBEE0E0FFE3099511E0A0E0B1E0E4E509
+:100F1000FCE502C005900D92AA33B107D9F711E0A4
+:100F2000AAE3B1E001C01D92A93FB107E1F70E9419
+:100F3000EC0F0C94282E0C940000FF93EF93E0919B
+:100F40003A01F0913B01309709F00995EF91FF913B
+:100F50000895FC018591803011F0EFDFFBCF0895FB
+:100F6000FF27E0E230E247FF0CC0419597FF09C040
+:100F7000EDE26095709580959095611D711D811DC4
+:100F8000911D27FF02C0219530E350E2AA27660F8A
+:100F9000771F881F991FAA1FA41710F0A41B639521
+:100FA0005A95A9F7AA3008F0A95FA05DAF93F39511
+:100FB000611571058105910541F7ED3211F4EF934B
+:100FC000F395F21718F43F93F395FBCF8F91B5DFAC
+:100FD000FA95E1F70895E991F9918591803021F032
+:100FE000853219F0AADFF9CF089520E0E8945591F1
+:100FF0005532C1F3503311F4689455915A3348F483
+:10100000505390F3220F022E220F220F200D250F96
+:10101000F4CF0EF4219589919991533619F35337F2
+:1010200029F1533559F1BC0188279927E8945C369A
+:1010300021F48991999168945591543639F446EF89
+:101040007EF077FF0DC08FEF9FEF0AC055374AE063
+:1010500039F0583540E121F0523642E009F0089568
+:10106000FF93EF937DDFEF91FF91B7CFFF93EF9366
+:10107000FC0181918030B9F360DFFBCFFF93EF93E8
+:1010800068DFF1CFDF93CF93CDB7DEB72596A3DF2F
+:10109000CF91DF91089561110BC0FC0182818823FB
+:1010A00021F085EE0E94BA1603C085EE0E948217D9
+:1010B00080E090E0089508956091BC017091BD01B9
+:1010C0008091BE019091BF010E94672156985E9861
+:1010D00025982D9826982E9827982F98813019F0CA
+:1010E000823021F00895259A2D9A0895269A2E9AF5
+:1010F00008958CE598E0892B11F00E945C0880E04F
+:1011000090E0089556985E9825982D9826982E98E8
+:1011100027982F988FEF90E0909389008093880014
+:1011200090938B0080938A0090938D0080938C0025
+:10113000259A2D9A2FEF80E792E021508040904031
+:10114000E1F700C00000269A2E9A2FEF80E792E088
+:10115000215080409040E1F700C00000279A2F9A6C
+:101160002FEF80E792E0215080409040E1F700C0EF
+:10117000000025982D982FEF80E792E021508040C5
+:101180009040E1F700C0000026982E982FEF80E7EE
+:1011900092E0215080409040E1F700C00000279885
+:1011A0002F9856985E9825982D9826982E982798CF
+:1011B0002F98089589EA8093800089E080938100C8
+:1011C00024982C983F988AB18F748AB96E98479A60
+:1011D0008BB1806B8BB9769A0E9482088BE598E080
+:1011E000892B11F00E945B0880E090E0089580E276
+:1011F0008093000180913C0181110EC00E9446093C
+:1012000081E080933C012FEF83ED90E321508040FB
+:101210009040E1F700C0000080E40E944C098093F8
+:10122000000181112EC00E94760980930001811176
+:1012300028C00E94760980930001811122C08FE3AB
+:101240000E9476098093000181111BC00E946E09E3
+:1012500080E40E944C0980930001811112C08CE04F
+:101260000E9476098093000181110BC00E947609CB
+:1012700080930001811105C08FE30E94760980935D
+:1012800000010E946E098091000108951092B9003A
+:101290008AE08093B800089594EA9093BC009091FE
+:1012A000BC0097FFFCCF9091B900987F983021F057
+:1012B000903111F081E008958093BB0084E8809321
+:1012C000BC008091BC0087FFFCCF8091B900887F73
+:1012D000883111F0803471F780E0089584E98093BB
+:1012E000BC008091BC0084FDFCCF08958093BB00BE
+:1012F00084E88093BC008091BC0087FFFCCF909174
+:10130000B900987F81E0983209F480E0089584E87C
+:101310008093BC008091BC0087FFFCCF8091BB0014
+:10132000089580910001811115C080E40E944C094C
+:101330008093000181110CC082E10E9476098093A4
+:101340000001811105C08FEF0E9476098093000192
+:101350000E946E0984B1807F84B985B1807F85B990
+:101360008AB1837F8AB98BB1837F8BB93E984698C7
+:1013700008950E94F708809300010E94910980B3AC
+:101380008C7080BB81B3836F81BBECE4F1E0AEE392
+:10139000B1E011921D9281E0EA35F807D1F78AEDAC
+:1013A00098E0892B11F00C94DA0808959F92AF927F
+:1013B000BF92CF92DF92EF92FF920F931F93CF9342
+:1013C000DF93809100018823E1F080913D018F5FE0
+:1013D00080933D01811115C08AEE93E00E94A90718
+:1013E0000E94F70880930001882329F080ED93E0A4
+:1013F0000E94A90706C08CEB93E00E94A9070E94F7
+:1014000082080EE311E0C0E0D0E0BB24B39482E098
+:10141000A82ECC24C394D12C2DEAE22E23E0F22E68
+:10142000C73000F580910001811162C080E40E9404
+:101430004C0980930001811112C082E10E9476095B
+:101440008093000181110BC0C6010C2E01C0880FD2
+:101450000A94EAF780950E947609809300010E9421
+:101460006E0946C0CA30A1F028F4C83059F0C9301E
+:1014700061F005C0CC3089F070F0CD3089F0209A51
+:10148000289810C0219A29980DC0229A2A980AC03B
+:10149000239A2B9807C0529A01C0539A5B9802C0B6
+:1014A0003E9A4698E0EAEA95F1F78FB1799985C0BE
+:1014B00092E081708B25892B7C9B02C090E001C05B
+:1014C00094E0892B7D9B02C090E001C098E0892BBD
+:1014D0007E9B02C090E001C090E1892B9FB1909566
+:1014E000991F9927991F9295990F907E892B10C06B
+:1014F00080910001811176C080E40E944C098093A4
+:101500000001882309F45BC0912C0E946E09892D8B
+:10151000F8019081981739F1808380910101882327
+:1015200001F18091D70180FF04C082EB93E00E941B
+:10153000A9078091D70180FF0CC0809101011F9203
+:101540008F93FF92EF920E9442080F900F900F909E
+:101550000F908091D70180FF04C08BEA93E00E9436
+:10156000A907A09201010E94910921960F5F1F4FC8
+:10157000CE30D10509F054CF809101018823B1F01C
+:10158000815080930101882339F08FE99FE0019712
+:10159000F1F700C000000AC0ACE4B1E0EEE3F1E016
+:1015A00081918D9391E0EC34F907D1F789E798E0C8
+:1015B000892BD1F00E94790817C090E07ACF83E19F
+:1015C0000E9476098093000181119ECF81E40E94E0
+:1015D0004C0980930001811197CF0E948709982EB2
+:1015E000909493CF80E094CF81E0DF91CF911F91D1
+:1015F0000F91FF90EF90DF90CF90BF90AF909F90B2
+:101600000895E82FF0E0E45BFE4F80810895CF92CB
+:10161000DF92EF92FF920F931F93CF93DF9384E9B2
+:1016200093E00E94A9073CE4E32E31E0F32EC0E0F2
+:10163000D0E04FE8C42E43E0D42E06E813E0DF9359
+:10164000CF93DF92CF920E9442088CE893E00E94F1
+:10165000A907F70181917F0190E00E94CC219F931F
+:101660008F931F930F930E94420884E893E00E9497
+:10167000A90721968DB79EB708960FB6F8949EBF1E
+:101680000FBE8DBFCE30D105D1F6DF91CF911F9126
+:101690000F91FF90EF90DF90CF9008958B3B9105D5
+:1016A00078F4883A910540F5853A9105D0F4843074
+:1016B000910508F0B1C08130910509F4ADC06BC04F
+:1016C000803E910508F467C0883E910508F4A4C0E7
+:1016D0009C01205F31092031310508F05CC0906524
+:1016E0000895853A910509F459C0863A910509F49F
+:1016F00058C083E890E40895883A910509F454C0ED
+:10170000893A910509F453C08A3A910509F452C007
+:101710008B3A910509F451C08C3A910509F450C0F7
+:101720008D3A910509F44FC0803B910509F44EC0F4
+:101730008E3A910509F44DC08F3A910509F44CC0D9
+:10174000813B910509F44BC0823B910509F44AC0E5
+:10175000833B910509F449C0843B910509F448C0D5
+:10176000853B910509F447C0863B910509F446C0C5
+:10177000873B910509F445C0883B910509F444C0B5
+:10178000893B910509F443C08A3B910509F042C0A9
+:101790008AE296E4089580E090E0089581E890E47C
+:1017A000089582E890E4089582EE94E4089589EE25
+:1017B00094E408958AEE94E4089585EB94E4089502
+:1017C00086EB94E4089587EB94E408958CEC94E41C
+:1017D00008958DEC94E4089583E895E408958AE8EB
+:1017E00095E4089582E995E4089584E995E40895DF
+:1017F00081E296E4089583E296E4089584E296E413
+:10180000089585E296E4089586E296E4089587E2D5
+:1018100096E4089580E094E40895089596E0799F11
+:10182000F001112494E5899FE00DF11D1124E60FCC
+:10183000F11DEE0FFF1FEC51FF4F8591949108951C
+:10184000880F991F805A9040FC01859194910895CA
+:10185000880F991F80529F4FFC01859194910895A4
+:1018600026E0729FF001112444E5849FE00DF11DF4
+:101870001124E60FF11DEE0FFF1FEC51FF4F2591D4
+:101880003491C9019A9581159F4110F4C9010895B9
+:10189000C90190528115904128F4C9019F700E949E
+:1018A000280C0895C90190538115904120F4C90175
+:1018B0009927906C0895211580E5380769F40E94F6
+:1018C000F51A9FEF24E34CE0915020404040E1F7AF
+:1018D00000C000000C948822213080E5380751F4C4
+:1018E00084E094E00E94A9078091D70181608093F1
+:1018F000D7010895C90190558115904108F050C055
+:10190000832F99278F70992781309105D9F4A901E8
+:101910004370552702C0880F991F4A95E2F79C68CB
+:10192000A90164E0440F551F6A95E1F744275370FD
+:10193000842B952B73E0220F331F7A95E1F72076E5
+:1019400033271DC08230910529F4922F8827816F9B
+:10195000906A089583309105A9F4A9014370552731
+:1019600081E090E002C0880F991F4A95E2F79C68D9
+:1019700043E0220F331F4A95E1F7207E3770822B18
+:10198000932B08950497F1F4A9014370552781E042
+:1019900090E002C0880F991F4A95E2F79A68E8CF55
+:1019A000C90190578115904120F4C9019F70906240
+:1019B0000895C90190588115904120F4C9019F7084
+:1019C000906A0895203E3105E0F4203C310558F539
+:1019D0002133310509F470C048F42932310509F486
+:1019E00064C02A32310509F46EC074C02933310550
+:1019F000F1F022383105D9F02533310509F44EC014
+:101A000069C0233E310589F138F4203E3105C1F02B
+:101A1000223E3105E1F05EC0263E310569F1273EE8
+:101A20003105A9F157C0C9010E94200C0895809189
+:101A3000EA0180FD02C081FF4DC080EE90E04BC006
+:101A40008091EA0180FFF9CF89E390E044C0809162
+:101A5000EA0182FF0EC08091EA0184FF03C080E0AA
+:101A600090E039C083EE90E036C08091EA0182FFB9
+:101A7000F2CF82EE90E02FC08091EA0183FF0BC08D
+:101A80008091EA0184FDEBCF87EE90E024C0809145
+:101A9000EA0183FFF5CF86EE90E01DC08091EA0158
+:101AA00085FF07C089E290E016C08091EA0185FFBA
+:101AB000F9CF85E390E00FC08091EA0186FF07C06F
+:101AC0008AE290E008C08091EA0186FFF9CF81E3C5
+:101AD00090E001C0C9010E944E0B089508958091C5
+:101AE0006D0108959FB7F89410925C019FBF90918B
+:101AF000F001943009F058C09091E9009F70209156
+:101B0000EC0020FF02C020E801C020E0292B94E077
+:101B10009093E9009091EB0090FF43C09091EE000C
+:101B200097FF3FC090915A01992321F09091E800CE
+:101B300095FF37C010925A0196E03091E80035FDCC
+:101B400015C03091F001343061F53091EB0035FD76
+:101B500028C0915021F481E080935A0122C0EFE91E
+:101B6000FFE03197F1F700C00000E7CF8093F1006C
+:101B70008091E80085FD0AC08091E80080FFFCCFDD
+:101B80008091E8008E778093E80006C08FB7F894C4
+:101B900091E090935C018FBF2F702093E90080E06B
+:101BA00008952F702093E9008FEF0895CF93DF936E
+:101BB00000D01F92CDB7DEB72091F001243019F587
+:101BC00023E029839B838A832093E9008FEF909100
+:101BD000E800815095FD06C095ED9A95F1F700005B
+:101BE0008111F5CF8091E80085FF0DC040E050E005
+:101BF00063E070E0CE0101960E94A5108091E8009C
+:101C00008E778093E8000F900F900F90DF91CF9127
+:101C10000895CF93DF9300D01F92CDB7DEB7209108
+:101C2000F001243021F522E029839B838A8383E01D
+:101C30008093E9008FEF9091E800815095FD06C0F8
+:101C400095ED9A95F1F700008111F5CF8091E800AC
+:101C500085FF0DC040E050E063E070E0CE010196EA
+:101C60000E94A5108091E8008E778093E8000F9085
+:101C70000F900F90DF91CF9108952091F0012430C3
+:101C8000F1F422E02093E9002FEF3091E800215099
+:101C900035FD06C035ED3A95F1F700002111F5CF7D
+:101CA0002091E80025FF0BC040E050E065E070E0C7
+:101CB0000E94A5108091E8008E778093E800089537
+:101CC000CF93DF93EC018091F001843009F047C09D
+:101CD00080910C018823E1F080910D018823C1F0EF
+:101CE00085E08093E9008FEF9091E800815095FDA9
+:101CF00006C095E19A95F1F700008111F5CF80912A
+:101D0000E80085FF2CC040E050E060E170E017C0C3
+:101D100081E08093E9008FEF9091E800815095FD7C
+:101D200006C095ED9A95F1F700008111F5CF8091ED
+:101D3000E80085FF14C040E050E068E070E0CE01AC
+:101D40000E94A5108091E8008E778093E80080E1E2
+:101D5000FE01ADE5B1E001900D928A95E1F7DF91CA
+:101D6000CF9108958BE394E00E94A9078091EF0141
+:101D7000811109C00E9437120E9494128091E200E2
+:101D800084608093E200089587E394E00E94A907AD
+:101D90001092EF01089583E394E00C94A9078FE279
+:101DA00094E00E94A9070C94492C8BE294E00E94D5
+:101DB000A9070E9423220E944F2C0E9430150C94E8
+:101DC0006E0D80915B018F5F80935B0162E30E94E7
+:101DD000BD2D911135C010925B0180915C0188236B
+:101DE00079F18091F001843049F58091E9008F709C
+:101DF0009091EC0090FF02C090E801C090E0982B19
+:101E000084E08093E9008091EB0080FF14C0809112
+:101E1000EE0087FF10C08091E80085FF03C010929C
+:101E2000F100F9CF8091E80080FF05C08091E800C3
+:101E30008E778093E8009F709093E90010925C0188
+:101E4000089542E061EC81E00E94B11142E061EC52
+:101E500082E00E94B11142E061EC83E00E94B11186
+:101E600042E261EC84E00E94B11142E161EC85E064
+:101E70000C94B1118091F201833009F455C030F413
+:101E8000813071F0823009F48EC008958A3009F4EF
+:101E90007AC08B3009F460C0893009F09CC020C042
+:101EA0008091F101813A09F096C08091E800877F26
+:101EB0008093E8008091F5019091F601892B21F043
+:101EC00060E080E090E003C060E18DE591E070E0CB
+:101ED0000E94EE108091E8008B778093E8000895CF
+:101EE0008091F101813209F076C08091F5019091E5
+:101EF000F601009719F0049709F06DC08091E80091
+:101F0000877F8093E8008091E80082FD05C0809182
+:101F1000F0018111F8CF5FC08091F10080936D01D5
+:101F20008091E8008B7753C08091F101813A09F0EC
+:101F300052C08091F5019091F601892B09F04BC0B8
+:101F40008091E800877F8093E8008091E80080FF1F
+:101F5000FCCF80910C0136C08091F1018132D9F51E
+:101F60008091F5019091F601892BA9F58091E80007
+:101F7000877F8093E8000E94E6118091F3018093AF
+:101F80000C010C94F51A8091F101813221F58091B8
+:101F9000E800877F8093E8000E94E6118091F401B9
+:101FA00080936E0108958091F101813AA1F48091AE
+:101FB000E800877F8093E8008091E80080FFFCCFF5
+:101FC00080916E018093F1008091E8008E7780937C
+:101FD000E8000C94E611089584B7877F84BF88E1F8
+:101FE0000FB6F89480936000109260000FBE90E0EE
+:101FF00080E80FB6F89480936100909361000FBE63
+:102000000E94B9150E9437120E9494128091E2003A
+:1020100084608093E20082E79DE00E9462217894D0
+:102020000E940E150E94BB1582E091E00E942B15C4
+:102030000E94372C8AE194E00E94A9078091F00168
+:10204000853089F486E194E00E94A9070E94E62188
+:102050008091EE01882391F30E940E22882371F370
+:102060000E948F10EBCF0E94E915E8CF292F33276C
+:1020700023303105A9F06CF42130310509F442C058
+:102080002230310509F043C08DE890E023E734E0C9
+:1020900042C021323105C9F02232310519F137C071
+:1020A00099278130910541F08230910541F0892BCB
+:1020B00071F5EFE6F4E005C0E7E5F4E002C0EFE318
+:1020C000F4E0849190E09F0126C0653000F5E62F92
+:1020D000F0E0EE0FFF1FEB5DFE4F2081318189E0C4
+:1020E00090E019C0653098F4E62FF0E0DF01AA0F08
+:1020F000BB1FA55EBE4F2D913C91EA5EFE4F8081D5
+:1021000090E009C082E190E020E035E004C080E08A
+:1021100090E020E030E0FA0131832083089580E1EF
+:1021200089BD82E189BD09B400FEFDCF8091D80050
+:102130008F7D8093D8008091E00082608093E000E2
+:102140008091E00081FDFCCF0895CF92DF92EF9265
+:10215000FF920F931F93CF93DF937C018B01EA01D2
+:102160000E940712811131C0209731F08881998136
+:10217000081B190BE80EF91EC12CD12C01151105F5
+:1021800019F18091E80085FD14C08091E8008E77F8
+:102190008093E800209741F0888199818C0D9D1DE6
+:1021A0009983888385E011C00E940712882331F348
+:1021B0000CC0F70181917F018093F100015011095A
+:1021C000FFEFCF1ADF0ADACF80E0DF91CF911F91C6
+:1021D0000F91FF90EF90DF90CF9008952091F7013D
+:1021E0003091F8012617370748F06115710539F469
+:1021F0002091E8002E772093E80001C0B901FC018E
+:1022000020E061157105B9F18091F001882309F48E
+:1022100040C0853009F43FC08091E80083FD3DC097
+:102220008091E80082FF06C08091E80082FF26C00E
+:1022300080E008958091E80080FFE3CF2091F300D3
+:102240008091F20090E0922B6115710551F0883079
+:10225000910538F421912093F100615071090196A4
+:10226000F3CF21E0089709F020E08091E8008E7715
+:102270008093E800C6CF2111C7CFD6CF8091F0015F
+:10228000882339F0853039F08091E80083FFCCCF86
+:1022900004C082E0089583E0089581E008952091CC
+:1022A000F7013091F8012617370748F061157105DD
+:1022B00039F42091E8002E772093E80001C0B9019D
+:1022C000FC0120E061157105C1F18091F0018823C6
+:1022D00009F441C0853009F440C08091E80083FDD5
+:1022E0003EC08091E80082FF06C08091E80082FF36
+:1022F00027C080E008958091E80080FFE3CF20911F
+:10230000F3008091F20090E0922B6115710559F075
+:102310008830910540F424912093F100319661506A
+:1023200071090196F2CF21E0089709F020E0809131
+:10233000E8008E778093E800C5CF2111C6CFD5CFB6
+:102340008091F001882339F0853039F08091E800E0
+:1023500083FFCBCF04C082E0089583E0089581E03D
+:102360000895982F973058F59093E900981739F011
+:102370007091EC002091ED005091F00003C0242FEB
+:10238000762F50E021FF19C03091EB003E7F309353
+:10239000EB003091ED003D7F3093ED003091EB008C
+:1023A00031603093EB007093EC002093ED0050937C
+:1023B000F0002091EE0027FF07C09F5FD3CF8F7002
+:1023C0008093E90081E0089580E008958091F10113
+:1023D00087FD05C08091E80080FF0EC012C080918B
+:1023E000E80082FD05C08091F0018111F8CF0895C9
+:1023F0008091E8008B7708C08091F0018111EACFCD
+:1024000008958091E8008E778093E8000895809188
+:10241000E4009091E50045E62091EC0020FF21C00A
+:102420002091E80020FD21C02091F001222389F0B5
+:10243000253089F02091EB0025FD0FC02091E400AC
+:102440003091E5002817390739F3415041F0C901AF
+:10245000E3CF82E0089583E0089581E0089584E069
+:1024600008952091E80022FFDFCF80E008950E94C8
+:10247000A5120E94AD12E0EEF0E0808181608083C1
+:10248000E8EDF0E080818F77808319BCA7EDB0E0A4
+:102490008C918E7F8C9380818F7E80831092EF0150
+:1024A00008950F931F93CF93DF930E94A5120E946C
+:1024B000AD12C8EDD0E088818F77888388818068ED
+:1024C000888388818F7D888319BC10