summaryrefslogtreecommitdiffstats
path: root/keyboard/ergodox_ez/keymaps/techtomas
diff options
context:
space:
mode:
Diffstat (limited to 'keyboard/ergodox_ez/keymaps/techtomas')
-rw-r--r--keyboard/ergodox_ez/keymaps/techtomas/keymap.c231
-rw-r--r--keyboard/ergodox_ez/keymaps/techtomas/readme.md36
-rw-r--r--keyboard/ergodox_ez/keymaps/techtomas/techtomas.hex1166
3 files changed, 1433 insertions, 0 deletions
diff --git a/keyboard/ergodox_ez/keymaps/techtomas/keymap.c b/keyboard/ergodox_ez/keymaps/techtomas/keymap.c
new file mode 100644
index 0000000000..b7d3b9a116
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/techtomas/keymap.c
@@ -0,0 +1,231 @@
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media
+#define CNTL 3 // control layer
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | L1/` | 1 | 2 | 3 | 4 | 5 |CmdSpc| | - | 6 | 7 | 8 | 9 | 0 | = |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * |Meh/Tab | Q | W | E | R | T | STab | | L3 | Y | U | I | O | P | Meh/\ |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * |Hyp/Esc | L3/A | S | D | F | G |------| |------| H | J | K | L | L2/; | Hyp/' |
+ * |--------+------+------+------+------+------| Tab | |AltGui|------+------+------+------+------+--------|
+ * | LShift | L3/Z | X | C | V | B | | | | N | M | , | . | L2// | RShift |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * |LCtrl | LAlt | LGui |Left |Right | | UP | Down | [ | ] | L1 |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | LCtl | LGui | | LAlt |ShfGui|
+ * ,-------|------|------| |------+--------+------.
+ * | | | Home | | PgUp | | |
+ * | Backsp|Delete|------| |------| Enter | Space |
+ * | | | End | | 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
+ LT(SYMB,KC_GRV), KC_1, KC_2, KC_3, KC_4, KC_5, LGUI(KC_SPC),
+ MEH_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, S(KC_TAB),
+ ALL_T(KC_ESC), LT(CNTL,KC_A), KC_S, KC_D, KC_F, KC_G,
+ KC_LSFT, LT(CNTL,KC_Z), KC_X, KC_C, KC_V, KC_B, KC_TAB,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_LEFT, KC_RIGHT,
+ KC_LCTL, KC_LGUI,
+ KC_HOME,
+ KC_BSPC, KC_DELETE, KC_END,
+ // right hand
+ KC_MINS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL,
+ KC_FN3, KC_Y, KC_U, KC_I, KC_O, KC_P, MEH_T(KC_BSLS),
+ KC_H, KC_J, KC_K, KC_L, LT(MDIA,KC_SCLN), ALL_T(KC_QUOT),
+ LALT(KC_LGUI), KC_N, KC_M, KC_COMM, KC_DOT, LT(MDIA,KC_SLSH), KC_RSFT,
+ KC_UP, KC_DOWN, KC_LBRC, KC_RBRC, KC_FN1,
+ KC_LALT, S(KC_LGUI),
+ KC_PGUP,
+ KC_PGDN,KC_ENT, KC_SPC
+ ),
+/* Keymap 1: Symbol Layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | ! | @ | { | } | | | < | | > | : | 7 | 8 | 9 | / | F12 |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | # | $ | ( | ) | ` |------| |------| ; | 4 | 5 | 6 | * | Prnt |
+ * |--------+------+------+------+------+------| F14 | | F15 |------+------+------+------+------+--------|
+ * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | - | Entr |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | 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,S(KC_COMM),
+ 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_F14,
+ 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,
+ S(KC_DOT), KC_COLN, KC_7, KC_8, KC_9, KC_BSLS, KC_F12,
+ KC_SCLN, KC_4, KC_5, KC_6, KC_ASTR, KC_PSCR,
+ KC_F15, KC_AMPR, KC_1, KC_2, KC_3, KC_MINS, KC_ENT,
+ KC_0, KC_DOT, KC_EQL, KC_PLUS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+),
+/* Keymap 2: Media Layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | | | | | | | | | | | | | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | |------| |------| | | | | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | | | | | | | | | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | Prev | Next | | Prev | Next |
+ * ,------|------|------| |------+------+------.
+ * | | | VolUp| | VolUp| | |
+ * | Play | Mute |------| |------| Mute | Play |
+ * | | | VolDn| | VolDn| | |
+ * `--------------------' `--------------------'
+ */
+// Control
+[MDIA] = KEYMAP(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_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_MPRV, KC_MNXT,
+ KC_VOLU,
+ KC_MPLY, KC_MUTE, KC_VOLD,
+ // 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_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_MPRV, KC_MNXT,
+ KC_VOLU,
+ KC_VOLD, KC_MUTE, KC_MPLY
+),
+/* Keymap 3: Control Layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | Sleep | | | | | | Pwr | | | | | | | | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | | | MsUp | | | | | | | | | | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | |MsLeft|MsDown|MsRght| Lclk |------| |------| Lft | Down | Up | Right| | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | Rclk | | | | | | | | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// Control
+[CNTL] = KEYMAP(
+ KC_SLEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PWR,
+ 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_BTN1,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN2, 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_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_LEFT, KC_DOWN, KC_UP, KC_RIGHT, 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
+),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_TAP_TOGGLE(SYMB),
+ [2] = ACTION_LAYER_TAP_TOGGLE(MDIA),
+ [3] = ACTION_LAYER_TAP_TOGGLE(CNTL) // 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;
+ case 3:
+ ergodox_right_led_3_on();
+ break;
+ default:
+ // none
+ break;
+ }
+
+};
diff --git a/keyboard/ergodox_ez/keymaps/techtomas/readme.md b/keyboard/ergodox_ez/keymaps/techtomas/readme.md
new file mode 100644
index 0000000000..1ed80fc20c
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/techtomas/readme.md
@@ -0,0 +1,36 @@
+# Techtomas Configuration
+
+## Base Layer
+
+The base layer is a merge of what I liked with the default layout and the ordinary layout. The thumb cluster is more like the Kinesis advantage and the top row of the cluster is convient for use on the mac.
+
+* The Caps Lock postion handles [Hyper/Esc](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)
+* The Tab key toggles MEH.
+* The two vertical mods on the left board are Shift+Tab and Tab.
+* The two vertical mods on the right board are Control Layer tap/toggle and Alt+Cmd.
+* The HYPER and MEH key are made in the same location on the right side of the board as well. Using Keyboard Maestro for OS X makes one-handed shortcuts very easy.
+
+## Symbol Layer
+The symbol layer can be tap/toggled through the bottom right key and also toggled holding the tilde/grave key in the upper left corner. I haven't used the symbol layer enough to tell if this was a good place or not but it made sense in my head
+
+The bottom two vertical mods are set to F14 and F15 which is the default for changing screen brightness on the mac
+
+## Media Layer
+/ & ; will toggle the media layer which has play and volume controls assigned to the thumb cluster. I found this an easy way to quickly play/pause
+
+## Control Layer
+The a and z keys toggle the control layer.
+
+On the left board you have mouse control with left & right click in the location of the G and B keys.
+On the right board you have vim-style arrow keys using hjkl
+
+The thumb cluster and mods all pass down to this layer.
+
+## Changelog
+
+* Apr 29, 2016 (V1.1):
+ * Added F14 and F15 to symbol layer
+ * Added control layer toggle to A key.
+
+* Apr 28, 2016 (V1.0):
+ * Modified config based on the default layout plus inspiration from the ordinary layout
diff --git a/keyboard/ergodox_ez/keymaps/techtomas/techtomas.hex b/keyboard/ergodox_ez/keymaps/techtomas/techtomas.hex
new file mode 100644
index 0000000000..8aa849208f
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/techtomas/techtomas.hex
@@ -0,0 +1,1166 @@
+:100000000C94BB020C9402030C9402030C940203A4
+:100010000C9402030C9402030C9402030C9402034C
+:100020000C9402030C9402030C94D20C0C94A40DB7
+:100030000C9402030C9402030C9402030C9402032C
+:100040000C9402030C9470220C9402030C9402038F
+:100050000C9402030C94001C0C9402030C940203F5
+:100060000C9402030C9402030C9402030C940203FC
+:100070000C9402030C9402030C9402030C940203EC
+:100080000C9402030C9402030C9402030C940203DC
+:100090000C9402030C9402030C9402030C940203CC
+:1000A0000C9402030C9402030C940203110E330E01
+:1000B000210F330E210F780E9B0E210FF00E030F30
+:1000C000EF11EF112C122C126F12AD12C614C614C0
+:1000D000C612C614C713C7139A14C614C614B11493
+:1000E0000000F0A1F0A2F0A335812B77297FE10079
+:1000F000E00000001E00140004831D83E2004D0098
+:100100001F001A0016001B00E3004C00200008002E
+:100110000700060050002A00210015000900190000
+:100120004F004A00220017000A0005000000E0000E
+:100130002C082B0200002B000000E3002D00C30060
+:100140000000E3040000E20023001C000B0011008B
+:100150000000E302240018000D00100052004B00C4
+:1001600025000C000E00360051002C002600120065
+:100170000F0037002F002800270013003382388239
+:1001800030004E002E003177347FE500C1000000C2
+:100190000100010001000100010000003A001E0200
+:1001A00020022202010001003B001F022102230263
+:1001B000010001003C002F0226022F000100010077
+:1001C0003D00300227023000010001003E003102F4
+:1001D0003500350200000100010036020000690010
+:1001E000000001000100370200006A000000010069
+:1001F0003F003302330024020000010040002400CD
+:1002000021001E00270001004100250022001F00E0
+:100210003700010042002600230020002E000100CC
+:100220004300310025022D002E020100440045004C
+:10023000460028000100000001000100010001004B
+:100240000100000001000100010001000100AA00FE
+:1002500001000100010001000100A80001000100EF
+:10026000010001000100AE000100010001000100D9
+:100270000100A90001000100010001000000AC0024
+:1002800001000100000001000000AB0001000100BE
+:10029000000001000000AC000100010001000100AD
+:1002A0000000AB0001000100010001000100A900F5
+:1002B00001000100010001000100AE000100010089
+:1002C000010001000100A80001000100010001007F
+:1002D0000100AA000100010001000100010000006E
+:1002E000A600010001000100010000000100010062
+:1002F000010001000100010001000100F200010005
+:10030000010001000100F000F10001000100010006
+:1003100001000100F30001000100010001000100E3
+:10032000F400F50000000100A5000100000001003C
+:1003300000000100010001000000010000000100B8
+:100340000100010050000100000001000100010057
+:1003500051000100010001000100010052000100F4
+:1003600001000100010001004F0001000100010037
+:100370000100010001000100010001000100010075
+:100380000100010001000000160345007200670033
+:100390006F0044006F007800200045005A00000004
+:1003A00016034500720067006F0044006F0078007C
+:1003B000200045005A0000000403090409026D00F2
+:1003C000040100A0FA090400000103010100092151
+:1003D00011010001223F000705810308000A0904FA
+:1003E00001000103010200092111010001224D0059
+:1003F0000705820308000A09040200010300000047
+:100400000921110100012236000705830308000AB3
+:100410000904030001030000000921110100012269
+:1004200039000705840310000112011001000000CB
+:1004300008EDFE071301000102000105010906A1F4
+:1004400001050719E029E7150025019508750181C7
+:100450000205081901290595057501910295017597
+:100460000391010507190029771500250195787575
+:10047000018102C005010980A10185021601002643
+:10048000B7001A01002AB700751095018100C00558
+:100490000C0901A1018503160100269C021A010026
+:1004A0002A9C02751095018100C005010902A10175
+:1004B0000901A10005091901290515002501950566
+:1004C000750181029501750381010501093009312A
+:1004D0001581257F95027508810609381581257FCC
+:1004E000950175088106050C0A38021581257F954E
+:1004F0000175088106C0C005010906A1010507199B
+:10050000E029E7150025019508750181029501751F
+:1005100008810105081901290595057501910295C4
+:1005200001750391010507190029FF150025FF95A5
+:100530000675088100C000000000000000000000F7
+:1005400000010204060A0F17202C3A4A5D71879DAC
+:10055000B3C7DAE9F5FCFFFCF5E9DAC7B39D8771AB
+:100560005D4A3A2C20170F0A060402010000000021
+:1005700000000000000011241FBECFEFDAE0DEBF54
+:10058000CDBF04B603FE27C08091EE019091EF012C
+:10059000A091F001B091F1018730904BA740B04B92
+:1005A000D1F41092EE011092EF011092F00110922E
+:1005B000F10114BE84B7877F84BF0FB6F894A89565
+:1005C00080916000886180936000109260000FBE8F
+:1005D000E0E0FFE3099511E0A0E0B1E0ECE8F8E429
+:1005E00002C005900D92A433B107D9F721E0A4E32E
+:1005F000B1E001C01D92AE3EB207E1F70E94130ABE
+:100600000C9444240C94000061110BC0FC01828105
+:10061000882321F085EE0E94831003C085EE0E949E
+:100620004B1180E090E0089508956091B1017091C0
+:10063000B2018091B3019091B4010E94291B569898
+:100640005E9825982D9826982E9827982F98823076
+:1006500039F0833041F0813041F4259A2D9A089584
+:10066000269A2E9A0895279A2F9A08950C94150386
+:1006700056985E9825982D9826982E9827982F980A
+:100680008FEF90E0909389008093880090938B0087
+:1006900080938A0090938D0080938C00259A2D9AE8
+:1006A0002FEF80E792E0215080409040E1F700C0BA
+:1006B0000000269A2E9A2FEF80E792E0215080408A
+:1006C0009040E1F700C00000279A2F9A2FEF80E7B3
+:1006D00092E0215080409040E1F700C00000259852
+:1006E0002D982FEF80E792E0215080409040E1F775
+:1006F00000C0000026982E982FEF80E792E021504E
+:1007000080409040E1F700C0000027982F9856984D
+:100710005E9825982D9826982E9827982F980895BA
+:1007200089EA8093800089E08093810024982C9846
+:100730003F988AB18F748AB96E98479A8BB1806B53
+:100740008BB9769A0E9438030C94140380E280934C
+:1007500000018091340181110EC00E94F50381E0F7
+:10076000809334012FEF83ED90E32150804090403F
+:10077000E1F700C0000080E40E94FB0380930001C9
+:1007800081112EC00E94250480930001811128C090
+:100790000E94250480930001811122C08FE30E94F2
+:1007A00025048093000181111BC00E941D0480E478
+:1007B0000E94FB0380930001811112C08CE00E9413
+:1007C00025048093000181110BC00E9425048093B1
+:1007D0000001811105C08FE30E9425048093000170
+:1007E0000E941D048091000108951092B9008AE0D2
+:1007F0008093B800089594EA9093BC009091BC0057
+:1008000097FFFCCF9091B900987F983021F09031FC
+:1008100011F081E008958093BB0084E88093BC00D0
+:100820008091BC0087FFFCCF8091B900887F883120
+:1008300011F0803471F780E0089584E98093BC0062
+:100840008091BC0084FDFCCF08958093BB0084E8B8
+:100850008093BC008091BC0087FFFCCF9091B900D1
+:10086000987F81E0983209F480E0089584E88093CD
+:10087000BC008091BC0087FFFCCF8091BB00089535
+:1008800080910001811115C080E40E94FB038093D8
+:10089000000181110CC082E10E94250480930001B7
+:1008A000811105C08FEF0E942504809300010E94F2
+:1008B0001D0484B1807F84B985B1807F85B98AB1F8
+:1008C000837F8AB98BB1837F8BB93E984698089510
+:1008D0000E94A603809300010E94400480B38C70A4
+:1008E00080BB81B3836F81BBA6E3B1E0E4E4F1E0B8
+:1008F0008EE08E0F11921D928E13FCCF0C949003FC
+:10090000BF92CF92DF92EF92FF920F931F93CF93FC
+:10091000DF9380910001882379F0809135018F5F0A
+:1009200080933501811108C00E94A60380930001C5
+:10093000811102C00E94380306E311E0C0E0D0E05C
+:10094000DD24D39482E0C82EEE24E394F12CC7304A
+:10095000D10500F580910001811164C080E40E94FE
+:10096000FB0380930001811112C082E10E942504E3
+:100970008093000181110BC0C7010C2E01C0880FAC
+:100980000A94EAF780950E942504809300010E9452
+:100990001D0448C0CA30A1F028F4C83059F0C9304D
+:1009A00061F005C0CC3089F070F0CD3089F0209A2C
+:1009B000289810C0219A29980DC0229A2A980AC016
+:1009C000239A2B9807C0529A01C0539A5B9802C091
+:1009D0003E9A469890EA9A95F1F79FB1799902C0AC
+:1009E00082E001C080E091709D25982B7C9902C027
+:1009F00084E001C080E0892B7D9902C038E001C00D
+:100A000030E0832B7E9902C020E101C020E0822BE0
+:100A10009FB19095991F9927991F9295990F907E54
+:100A2000892B0FC080910001811149C080E40E9490
+:100A3000FB0380930001882379F1B12C0E941D04EF
+:100A40008B2DF8019081981719F08083C0920101D5
+:100A50000E94400421960F5F1F4FCE30D10509F050
+:100A600076CF80910101882361F18150809301014B
+:100A7000882339F08FE99FE00197F1F700C000006B
+:100A800020C0A4E4B1E0E6E3F1E0CF01825F919100
+:100A90009D938E13FCCF15C083E10E9425048093A3
+:100AA00000018111CACF81E40E94FB038093000101
+:100AB0008111C3CF0E943604B82EB094BFCF80E01E
+:100AC000C0CF0E94360381E0DF91CF911F910F913B
+:100AD000FF90EF90DF90CF90BF900895E82FF0E067
+:100AE000EC5BFE4F808108950895089596E0799F0C
+:100AF000F001112494E5899FE00DF11D1124E60F0A
+:100B0000F11DEE0FFF1FE851FF4F8591949108955D
+:100B1000880F991FFC01E05AF04085919491089547
+:100B2000880F991FFC01E052FF4F85919491089521
+:100B30000F931F93CF93DF93EC018115904350F5F2
+:100B4000C11580E2D80708F0B3C0CB3BD10590F4C3
+:100B5000C83AD10508F05AC0C53AD10508F04BC0D3
+:100B6000C430D10508F0BBC1219709F0B5C101E03F
+:100B700010E0F5C1CF3FD10511F008F0B0C1C03F82
+:100B8000D10508F092C0CE01805E9109089708F463
+:100B9000A6C1A2C1C11591E5D907A8F4C23020E5CC
+:100BA000D20708F09EC0C11580E5D80709F485C0BA
+:100BB00008F091C0C11520E4D20708F08DC1DD27EF
+:100BC0008E01106CCCC1C11580E8D80758F4C1154E
+:100BD00090E7D90708F07CC1C11520E6D20708F4D8
+:100BE00022C17AC1C11580E9D80708F075C1DF704C
+:100BF0008E01106AB4C1C53AD10509F472C1C63A72
+:100C0000D10509F071C102E810E4A9C1C83AD105C3
+:100C100009F46DC1C93AD10509F46CC1CA3AD105CC
+:100C200009F46BC1CB3AD10509F46AC1CC3AD105BC
+:100C300009F469C1CD3AD10509F468C1C03BD105B9
+:100C400009F467C1CE3AD10509F466C1CF3AD1059E
+:100C500009F465C1C13BD10509F464C1C23BD105AA
+:100C600009F463C1C33BD10509F462C1C43BD1059A
+:100C700009F461C1C53BD10509F460C1C63BD1058A
+:100C800009F45FC1C73BD10509F45EC1C83BD1057A
+:100C900009F45DC1C93BD10509F45CC1CA3BD1056A
+:100CA00009F45BC100E014E45AC18E01106557C11C
+:100CB000CE019F700E94900553C10E94EA149FEFDD
+:100CC00024E38CE0915020408040E1F700C0000018
+:100CD0000E94251C44C18091CD0181608093CD018B
+:100CE0003EC10E94CE1D811102C00E94B41D0E940F
+:100CF000EB1D90E09093EE018093ED01C23090E502
+:100D0000D90721F48091ED01816086C0C43020E5CF
+:100D1000D20721F48091ED0182607EC0C63080E56B
+:100D2000D80721F48091ED01846076C0C83090E549
+:100D3000D90719F48091ED0127C0CA3020E5D20708
+:100D400021F48091ED01806167C0CC3080E5D80747
+:100D500021F48091ED0180625FC0CE3090E5D9072B
+:100D600021F48091ED01806457C0C03120E5D207A5
+:100D700021F48091ED0180684FC0C23180E5D80731
+:100D800029F48091ED018460886046C0C33090E50D
+:100D9000D90721F48091ED018E7F3EC0C53020E55A
+:100DA000D20721F48091ED018D7F36C0C73080E5F8
+:100DB000D80721F48091ED018B7F2EC0C93090E5DA
+:100DC000D90719F48091ED0126C0CB3020E5D20778
+:100DD00021F48091ED018F7E1FC0CD3080E5D807D2
+:100DE00021F48091ED018F7D17C0CF3090E5D907B8
+:100DF00021F48091ED018F7B0FC0C13120E5D20736
+:100E000021F48091ED018F7707C0C331D04531F4D3
+:100E10008091ED018B7F877F8093ED018091ED01C3
+:100E20000E94EF1D9CC08D2F99278F7099278130CC
+:100E30009105D9F49E012370332702C0880F991FB2
+:100E40002A95E2F79C688E0144E0000F111F4A9535
+:100E5000E1F700271370802B912B53E0CC0FDD1F9F
+:100E60005A95E1F7C076DD272FC08230910531F425
+:100E7000DC2FCC278E01016F106A71C08330910581
+:100E800069F4CE018370992701E010E002C0000FE1
+:100E9000111F8A95E2F7C8019C680FC0049709F0FA
+:100EA0005EC0CE018370992701E010E002C0000F00
+:100EB000111F8A95E2F7C8019A6823E0CC0FDD1F65
+:100EC0002A95E1F7C07ED7708C010C2B1D2B47C0F3
+:100ED000DF708E01106243C000E010E040C08E0160
+:100EE0003EC001E810E43BC003E810E438C002EE65
+:100EF00014E435C009EE14E432C00AEE14E42FC045
+:100F000005EB14E42CC006EB14E429C007EB14E451
+:100F100026C00CEC14E423C00DEC14E420C003E85C
+:100F200015E41DC00AE815E41AC002E915E417C06B
+:100F300004E915E414C001E216E411C003E216E46A
+:100F40000EC004E216E40BC005E216E408C006E297
+:100F500016E405C007E216E402C00AE216E4C8017E
+:100F6000DF91CF911F910F91089596E0799FF00145
+:100F7000112494E5899FE00DF11D1124E60FF11D68
+:100F8000EE0FFF1FE851FF4F85919491803E910530
+:100F9000E0F4803C910558F58133910509F46FC068
+:100FA00048F48932910509F463C08A32910509F445
+:100FB0006DC072C089339105E9F082389105D1F096
+:100FC0008533910509F44DC067C0833E910581F1D9
+:100FD00038F4803E9105B9F0823E9105D9F05CC0AD
+:100FE000863E910561F1873E9105A1F155C00E94B1
+:100FF000880508952091ED0120FD02C021FF4CC01D
+:1010000080EE90E049C08091ED0180FFF9CF89E347
+:1010100090E042C08091ED0182FF0EC08091ED0111
+:1010200084FF03C080E090E037C083EE90E034C0DE
+:101030008091ED0182FFF2CF82EE90E02DC0809191
+:10104000ED0183FF0BC08091ED0184FDEBCF87EEB6
+:1010500090E022C08091ED0183FFF5CF86EE90E015
+:101060001BC08091ED0185FF07C089E290E014C0AC
+:101070008091ED0185FFF9CF85E390E00DC080916F
+:10108000ED0186FF07C08AE290E006C08091ED0185
+:1010900086FFF9CF81E390E00E94980508950895B6
+:1010A0000C944F08809162010895CF93DF9300D094
+:1010B0001F92CDB7DEB79C018091E401843019F511
+:1010C00093E099833B832A839093E9008FEF90917B
+:1010D000E800815095FD06C095ED9A95F1F7000066
+:1010E0008111F5CF8091E80085FF0DC040E050E010
+:1010F00063E070E0CE0101960E94C20A8091E80090
+:101100008E778093E8000F900F900F90DF91CF9132
+:101110000895CF93DF9300D01F92CDB7DEB7209113
+:10112000E401243021F522E029839B838A8383E034
+:101130008093E9008FEF9091E800815095FD06C003
+:1011400095ED9A95F1F700008111F5CF8091E800B7
+:1011500085FF0DC040E050E063E070E0CE010196F5
+:101160000E94C20A8091E8008E778093E8000F9079
+:101170000F900F90DF91CF9108952091E4012430DA
+:10118000F1F422E02093E9002FEF3091E8002150A4
+:1011900035FD06C035ED3A95F1F700002111F5CF88
+:1011A0002091E80025FF0BC040E050E065E070E0D2
+:1011B0000E94C20A8091E8008E778093E80008952B
+:1011C000CF93DF93EC019091E401943009F046C095
+:1011D00080910C018823D9F080910D018823B9F00A
+:1011E0009093E9008FEF9091E800815095FD06C043
+:1011F00095E19A95F1F700008111F5CF8091E80013
+:1012000085FF2CC040E050E060E170E017C081E055
+:101210008093E9008FEF9091E800815095FD06C022
+:1012200095ED9A95F1F700008111F5CF8091E800D6
+:1012300085FF14C040E050E068E070E0CE010E94FD
+:10124000C20A8091E8008E778093E80080E1FE0179
+:10125000A2E5B1E001900D928A95E1F7DF91CF917F
+:1012600008958091E301811109C00E94570C0E94EA
+:10127000B40C8091E20084608093E20008951092A3
+:10128000E301089508950C945D220E94BB1B0E9407
+:1012900063220E945A0F0C94500842E061EC81E0F6
+:1012A0000E94D10B42E061EC82E00E94D10B42E04F
+:1012B00061EC83E00E94D10B42E161EC84E00C948C
+:1012C000D10B8091E601833009F455C030F48130B0
+:1012D00071F0823009F48EC008958A3009F47AC022
+:1012E0008B3009F460C0893009F09CC020C0809127
+:1012F000E501813A09F096C08091E800877F8093EC
+:10130000E8008091E9019091EA01892B21F460E1E4
+:1013100082E591E003C060E080E090E070E00E9430
+:101320000D0B8091E8008B778093E8000895809101
+:10133000E501813209F076C08091E9019091EA01DE
+:10134000009719F0039709F06DC08091E800877F3E
+:101350008093E8008091E80082FD05C08091E4015F
+:101360008111F8CF5FC08091F1008093620180917C
+:10137000E8008B7753C08091E501813A09F052C0B3
+:101380008091E9019091EA01892B09F04BC080918D
+:10139000E800877F8093E8008091E80080FFFCCF21
+:1013A00080910C0136C08091E5018132D9F58091A0
+:1013B000E9019091EA01892BA9F58091E800877FE6
+:1013C0008093E8000E94060C8091E70180930C0155
+:1013D0000C94EA148091E501813221F58091E800B6
+:1013E000877F8093E8000E94060C8091E80180933B
+:1013F000630108958091E501813AA1F48091E800AC
+:10140000877F8093E8008091E80080FFFCCF809187
+:1014100063018093F1008091E8008E778093E8006B
+:101420000C94060C089584B7877F84BF0FB6F89498
+:10143000A8958091600088618093600010926000A0
+:101440000FBE90E080E80FB6F8948093610090930F
+:1014500061000FBE0E94A90F0E94570C0E94B40C9D
+:101460008091E20084608093E20078940E943A0FB9
+:101470000E94AB0F82E091E00E94550F0E944B2228
+:101480008091E401853069F40E94791B8091E2012A
+:101490008823B1F30E94A71B882391F30E94AC0A12
+:1014A000EFCF0E94B10FECCF292F33272330310526
+:1014B000C9F064F42130310581F02230310509F0A2
+:1014C00043C08DE690E02CEB33E042C02132310581
+:1014D000F1F02232310541F137C082E190E029E29A
+:1014E00034E036C099278130910541F08230910572
+:1014F00041F0892B49F5E8EBF3E005C0E0EAF3E0C1
+:1015000002C0E8E8F3E0849190E09F0121C06430DC
+:10151000D8F4E62FF0E0EE0FFF1FEE5DFE4F2081C6
+:10152000318189E090E014C0643070F470E0FB0118
+:10153000EE0FFF1FE65EFE4F20813181FB01EA5E68
+:10154000FE4F808190E004C080E090E020E030E039
+:10155000FA0131832083089580E189BD82E189BD4C
+:1015600009B400FEFDCF8091D8008F7D8093D80014
+:101570008091E00082608093E0008091E00081FD36
+:10158000FCCF0895CF92DF92EF92FF920F931F93BB
+:10159000CF93DF93EC018B016A010E94250C81112E
+:1015A00033C0C114D10439F0F60180819181081B48
+:1015B000190BC80FD91FE12CF12C0115110519F1D8
+:1015C0008091E80085FD16C08091E8008E778093B9
+:1015D000E800C114D10449F0F60180819181E80E40
+:1015E000F91EF182E08285E00FC00E94250C88235D
+:1015F00021F30AC089918093F10001501109FFEF96
+:10160000EF1AFF0ADACF80E0DF91CF911F910F919F
+:10161000FF90EF90DF90CF9008952091EB013091F3
+:10162000EC012617370748F06115710539F4209150
+:10163000E8002E772093E80001C0B90140E0611571
+:101640007105A9F12091E401222309F443C025305A
+:1016500009F442C02091E80023FD40C02091E80039
+:1016600022FD32C02091E80020FFE9CF4091F30035
+:101670002091F20030E0342BFC01CF01611571059F
+:1016800059F02830310540F481918093F100615088
+:1016900071092F5F3F4FF1CF41E02830310509F04C
+:1016A00040E02091E8002E772093E800C8CF411158
+:1016B000C9CF0AC08091E401882361F0853061F0D0
+:1016C0008091E80083FD0AC08091E80082FFF2CF9C
+:1016D00080E0089582E0089583E0089581E0089510
+:1016E0002091EB013091EC012617370748F0611586
+:1016F000710539F42091E8002E772093E80001C0AD
+:10170000B901FC0120E06115710591F18091E401BE
+:10171000882309F440C0853009F43FC08091E80077
+:1017200083FD3DC08091E80082FD2FC08091E800DC
+:1017300080FFE9CF2091F3008091F20090E0922B9E
+:101740006115710559F08830910540F4249120937A
+:10175000F1003196615071090196F2CF21E00897AE
+:1017600009F020E08091E8008E778093E800CBCFED
+:101770002111CCCF0AC08091E401882361F085302B
+:1017800061F08091E80083FD0AC08091E80082FF4B
+:10179000F2CF80E0089582E0089583E0089581E02B
+:1017A0000895982F973058F59093E900981739F0DD
+:1017B0007091EC002091ED005091F00003C0242FB7
+:1017C000762F50E021FF19C03091EB003E7F30931F
+:1017D000EB003091ED003D7F3093ED003091EB0058
+:1017E00031603093EB007093EC002093ED00509348
+:1017F000F0002091EE0027FF07C09F5FD3CF8F70CE
+:101800008093E90081E0089580E008958091E501EA
+:1018100087FF11C08091E80082FD05C08091E4013E
+:101820008111F8CF11C08091E8008B770BC08091B7
+:10183000E401882349F08091E80080FFF8CF80918F
+:10184000E8008E778093E80008952091E4003091BD
+:10185000E50095E64091EC00842F817040FF22C0A6
+:101860008091E80080FD1CC08091E401882391F004
+:10187000853091F08091EB0085FD10C04091E4002F
+:101880005091E5004217530729F39A01915011F73F
+:1018900084E0089582E0089583E0089581E008954A
+:1018A00080E008954091E80042FFDECF08950E9455
+:1018B000C50C0E94CD0CE0EEF0E080818160808359
+:1018C000E8EDF0E080818F77808319BCA7EDB0E070
+:1018D0008C918E7F8C9380818F7E80831092E30128
+:1018E00008950F931F93CF93DF930E94C50C0E941E
+:1018F000CD0CC8EDD0E088818F778883888180689F
+:10190000888388818F7D888319BC1092E4011092AE
+:10191000E0011092E2011092E10100EE10E0F80106
+:1019200080818B7F808388818160888342E060E052
+:1019300080E00E94D10BE1EEF0E080818E7F808319
+:10194000E2EEF0E080818160808380818860808326
+:10195000F80180818E7F8083888180618883DF9118
+:10196000CF911F910F910895E8EDF0E080818F7E77
+:101970008083E7EDF0E080818160808384E082BF36
+:1019800081E08093E3010C94710CE8EDF0E080813C
+:101990008E7F80831092E20008951092DA001092F8
+:1019A000E10008951F920F920FB60F9211242F930A
+:1019B0003F934F935F936F937F938F939F93AF93D7
+:1019C000BF93EF93FF938091E10082FF0BC0809162
+:1019D000E20082FF07C08091E1008B7F8093E100ED
+:1019E0000E94390F8091DA0080FF1FC08091D800DB
+:1019F00080FF1BC08091DA008E7F8093DA00809197
+:101A0000D90080FF0DC080E189BD82E189BD09B4A4
+:101A100000FEFDCF81E08093E4010E94310905C002
+:101A200019BC1092E4010E943F098091E10080FFFF
+:101A300019C08091E20080FF15C08091E2008E7F86
+:101A40008093E2008091E20080618093E2008091C7
+:101A5000D80080628093D80019BC85E08093E401AF
+:101A60000E9443098091E10084FF30C08091E20030
+:101A700084FF2CC080E189BD82E189BD09B400FEEC
+:101A8000FDCF8091D8008F7D8093D8008091E100B8
+:101A90008F7E8093E1008091E2008F7E8093E20050
+:101AA0008091E20081608093E2008091E0018823D0
+:101AB00011F084E007C08091E30087FD02C081E05F
+:101AC00001C083E08093E4010E9445098091E10018
+:101AD00083FF29C08091E20083FF25C08091E1004F
+:101AE000877F8093E10082E08093E4011092E0011F
+:101AF0008091E1008E7F8093E1008091E2008E7FF3
+:101B00008093E2008091E20080618093E20042E0F5
+:101B100060E080E00E94D10B8091F00088608093AB
+:101B2000F0000E944209FF91EF91BF91AF919F9108
+:101B30008F917F916F915F914F913F912F910F9076
+:101B40000FBE0F901F9018951F920F920FB60F9215
+:101B500011242F933F934F935F936F937F938F93B2
+:101B60009F93AF93BF93CF93DF93EF93FF93C09176
+:101B7000E900CF708091EC00D82FD17080FDD0E8C3
+:101B80001092E9008091F000877F8093F0007894B4
+:101B90000E94E80D1092E9008091F0008860809327
+:101BA000F000CD2BCF70C093E900FF91EF91DF9152
+:101BB000CF91BF91AF919F918F917F916F915F91E5
+:101BC0004F913F912F910F900FBE0F901F9018953E
+:101BD0001F93CF93DF93CDB7DEB7AA970FB6F894D4
+:101BE000DEBF0FBECDBFE5EEF1E088E08E0F909135
+:101BF000F10091938E13FBCF0E9461098091E80060
+:101C000083FF1FC18091E5019091E601492F50E0CB
+:101C10004A30510508F015C1FA01EA5AFF4F0C94F9
+:101C2000F423803881F0823809F00BC18091E901FA
+:101C30008F708093E9008091EB0085FB882780F905
+:101C40001092E90006C08091E1019091E2019111AA
+:101C500082609091E800977F9093E8008093F10074
+:101C60001092F100C8C0282F2D7F09F0EAC0882308
+:101C700019F0823061F0E5C08091E701813009F010
+:101C8000E0C0933009F080E08093E2012BC08091A6
+:101C9000E701811127C08091E9018F7009F4D1C05B
+:101CA0008093E9002091EB0020FF1CC0933021F4C9
+:101CB0008091EB00806214C09091EB009061909352
+:101CC000EB0021E030E0A90102C0440F551F8A95C6
+:101CD000E2F74093EA001092EA008091EB008860FE
+:101CE0008093EB001092E9008091E800877F86C026
+:101CF0008111A7C01091E7011F778091E3008078E0
+:101D0000812B8093E3008091E800877F8093E80037
+:101D10000E94060C8091E80080FFFCCF8091E300D8
+:101D200080688093E300111102C082E001C083E06B
+:101D30008093E40186C08058823008F082C0809190
+:101D4000E7019091E8018C3D53E0950779F583E038
+:101D50008A838AE289834FB7F894DE01139620E0E4
+:101D60003EE051E2E32FF0E050935700E49120FF72
+:101D700003C0E295EF703F5FEF708E2F90E0EA3086
+:101D800010F0C79601C0C0968D939D932F5F2431AC
+:101D900049F74FBF8091E800877F8093E8006AE2AF
+:101DA00070E0CE0101960E940D0B14C0AE014F5F92
+:101DB0005F4F6091E9010E94540ABC01892B09F42C
+:101DC00040C09091E800977F9093E80089819A81C4
+:101DD0000E94700B8091E8008B778093E80031C0FF
+:101DE000803879F58091E800877F8093E8008091C2
+:101DF000E0018093F1008091E8008E778093E80005
+:101E00000E94060C1EC081111CC09091E701923007
+:101E1000C0F48091E800877F8093E8009093E00110
+:101E20000E94060C8091E001811106C08091E300C0
+:101E300087FD02C081E001C084E08093E4010E943C
+:101E40004D098091E80083FF0AC08091E800877FF8
+:101E50008093E8008091EB0080628093EB00AA966B
+:101E60000FB6F894DEBF0FBECDBFDF91CF911F91AB
+:101E700008950895CF938091E4018823A1F0C09143
+:101E8000E900CF709091EC00892F817090FD80E87F
+:101E9000C82B1092E9008091E80083FD0E94E80DB4
+:101EA000CF70C093E900CF9108959093690180931A
+:101EB00068010895E0916801F0916901309721F07F
+:101EC0000190F081E02D099480E00895E09168018F
+:101ED000F0916901309721F00280F381E02D09949F
+:101EE0000895E0916801F0916901309721F0048034
+:101EF000F581E02D099408952091660130916701E4
+:101F00008217930771F09093670180936601E091C7
+:101F10006801F0916901309721F00680F781E02D8A
+:101F20000994089520916401309165018217930707
+:101F300071F09093650180936401E0916801F091E4
+:101F40006901309721F00084F185E02D099408950E
+:101F500008950C94A80F0E94C11B0E9468040C9461
+:101F6000871CCF92DF92EF92FF920F931F93CF9334
+:101F7000DF93CDB7DEB72B970FB6F894DEBF0FBE59
+:101F8000CDBF0E9480048BE6C82E81E0D82E00E0F1
+:101F900010E0E02E802F0E946E05F60141916F0146
+:101FA000F42EF826B1F40F5F1F4F0E30110589F79C
+:101FB0008FEF89838A831B820E94CA1B8160782FDE
+:101FC0009D838C8349815A816B818D810E9454103D
+:101FD00040C09091CD0191FF04C08B870E94740591
+:101FE0008B8520E030E04F2D50E0922FBA01022E79
+:101FF00002C0759567950A94E2F760FF24C02E83AE
+:10200000EF8221E030E0690102C0CC0CDD1C9A9522
+:10201000E2F790E08C219D21892B09F420E02887AC
+:102020000E94CA1B8160782F9A8789874E815F81C1
+:1020300068858A850E945410F801E559FE4F808119
+:10204000C826C08206C02F5F3F4F2630310569F693
+:10205000AACF0E946E1F10916A010E945A0F181792
+:10206000A1F00E945A0F80936A012B960FB6F89444
+:10207000DEBF0FBECDBFDF91CF911F910F91FF90BB
+:10208000EF90DF90CF900C9450082B960FB6F894F9
+:10209000DEBF0FBECDBFDF91CF911F910F91FF909B
+:1020A000EF90DF90CF900895CF93DF93CDB7DEB759
+:1020B0002B970FB6F894DEBF0FBECDBF4F83588766
+:1020C00069877A878B87DE01119686E0FD01119280
+:1020D0008A95E9F785E0FE01379601900D928A9581
+:1020E000E1F749815A816B817C818D819E810E94BB
+:1020F00084172B960FB6F894DEBF0FBECDBFDF91CD
+:10210000CF9108950895CF93882309F4C2C0C82FB2