Browse Source

Backlight abstraction and other changes (#439)

* redoes matrix pins, abstracts backlight code for B5,6,7

* slimming down keyboard stuff, backlight breathing implemented

* don't call backlight init when no pin

* cleans up user/kb/quantum calls, keyboard files

* fix pvc atomic

* replaces CHANNEL with correct var in breathing

* removes .hexs, updates readmes, updates template

* cleans-up clueboards, readmes to lowercase

* updates readme
pull/440/head
Jack Humbert 7 years ago
committed by GitHub
parent
commit
13bb6b4b7f
239 changed files with 1146 additions and 139888 deletions
  1. +3
    -5
      .gitignore
  2. +1
    -2
      Makefile
  3. +3
    -4
      doc/BUILD_GUIDE.md
  4. +1
    -1
      doc/HAND_WIRE.md
  5. +1
    -1
      doc/TMK_README.md
  6. +1
    -1
      doc/VAGRANT_GUIDE.md
  7. +1
    -14
      keyboards/alps64/alps64.c
  8. +0
    -1373
      keyboards/alps64/keymaps/default/compiled.hex
  9. +1
    -114
      keyboards/arrow_pad/arrow_pad.c
  10. +1
    -6
      keyboards/arrow_pad/arrow_pad.h
  11. +2
    -0
      keyboards/arrow_pad/config.h
  12. +0
    -1490
      keyboards/arrow_pad/keymaps/default/compiled.hex
  13. +0
    -893
      keyboards/arrow_pad/keymaps/pad_21/compiled.hex
  14. +0
    -935
      keyboards/arrow_pad/keymaps/pad_24/compiled.hex
  15. +2
    -0
      keyboards/arrow_pad/keymaps/pad_24/config.h
  16. +2
    -2
      keyboards/arrow_pad/readme.md
  17. +1
    -311
      keyboards/atomic/atomic.c
  18. +0
    -22
      keyboards/atomic/atomic.h
  19. +2
    -0
      keyboards/atomic/config.h
  20. +0
    -1118
      keyboards/atomic/keymaps/default/compiled.hex
  21. +0
    -1700
      keyboards/atomic/keymaps/pvc/compiled.hex
  22. +3
    -0
      keyboards/atomic/keymaps/pvc/config.h
  23. +2
    -2
      keyboards/atomic/readme.md
  24. +1
    -29
      keyboards/atreus/atreus.c
  25. +1
    -4
      keyboards/atreus/atreus.h
  26. +0
    -1328
      keyboards/atreus/keymaps/default/compiled.hex
  27. +0
    -1339
      keyboards/atreus/keymaps/gerb/compiled.hex
  28. +1
    -1
      keyboards/atreus/readme.md
  29. +1
    -25
      keyboards/bantam44/bantam44.c
  30. +1
    -7
      keyboards/bantam44/bantam44.h
  31. +0
    -1398
      keyboards/bantam44/keymaps/default/compiled.hex
  32. +2
    -2
      keyboards/bantam44/readme.md
  33. +0
    -3
      keyboards/clueboard1/Makefile
  34. +9
    -16
      keyboards/clueboard1/clueboard1.c
  35. +1
    -6
      keyboards/clueboard1/clueboard1.h
  36. +0
    -1192
      keyboards/clueboard1/keymaps/default/compiled.hex
  37. +0
    -32
      keyboards/clueboard1/led.c
  38. +0
    -6
      keyboards/clueboard2/Makefile
  39. +0
    -41
      keyboards/clueboard2/backlight.c
  40. +51
    -28
      keyboards/clueboard2/clueboard2.c
  41. +1
    -6
      keyboards/clueboard2/clueboard2.h
  42. +0
    -1246
      keyboards/clueboard2/keymaps/default/compiled.hex
  43. +0
    -4
      keyboards/clueboard2/keymaps/default/keymap.c
  44. +0
    -1536
      keyboards/clueboard2/keymaps/max/compiled.hex
  45. +0
    -4
      keyboards/clueboard2/keymaps/max/keymap.c
  46. +0
    -1246
      keyboards/clueboard2/keymaps/skully/compiled.hex
  47. +0
    -36
      keyboards/clueboard2/led.c
  48. +1
    -21
      keyboards/cluepad/cluepad.c
  49. +0
    -3
      keyboards/cluepad/cluepad.h
  50. +0
    -1123
      keyboards/cluepad/keymaps/default/compiled.hex
  51. +0
    -15
      keyboards/ergodox_ez/ergodox_ez.c
  52. +0
    -5
      keyboards/ergodox_ez/ergodox_ez.h
  53. +0
    -1147
      keyboards/ergodox_ez/keymaps/ab/compiled.hex
  54. +0
    -1133
      keyboards/ergodox_ez/keymaps/adnw_k_o_y/compiled.hex
  55. +0
    -1172
      keyboards/ergodox_ez/keymaps/alexjj/compiled.hex
  56. +0
    -1
      keyboards/ergodox_ez/keymaps/algernon/.gitignore
  57. +1
    -1
      keyboards/ergodox_ez/keymaps/algernon/keymap.c
  58. +0
    -1158
      keyboards/ergodox_ez/keymaps/andrew_osx/compiled.hex
  59. +0
    -1190
      keyboards/ergodox_ez/keymaps/bepo/compiled.hex
  60. +1
    -1
      keyboards/ergodox_ez/keymaps/bepo/readme.md
  61. +0
    -1195
      keyboards/ergodox_ez/keymaps/coderkun_neo2/compiled.hex
  62. +0
    -1158
      keyboards/ergodox_ez/keymaps/colemak/compiled.hex
  63. +0
    -1179
      keyboards/ergodox_ez/keymaps/colemak_osx_pc_no/compiled.hex
  64. +0
    -1159
      keyboards/ergodox_ez/keymaps/csharp_dev/compiled.hex
  65. +0
    -1169
      keyboards/ergodox_ez/keymaps/dave/compiled.hex
  66. +0
    -1153
      keyboards/ergodox_ez/keymaps/default/compiled.hex
  67. +0
    -1158
      keyboards/ergodox_ez/keymaps/default_osx/compiled.hex
  68. +0
    -1169
      keyboards/ergodox_ez/keymaps/dragon788/compiled.hex
  69. +0
    -1158
      keyboards/ergodox_ez/keymaps/dvorak/compiled.hex
  70. +0
    -1158
      keyboards/ergodox_ez/keymaps/dvorak_intl_squisher/compiled.hex
  71. +0
    -0
      keyboards/ergodox_ez/keymaps/dvorak_intl_squisher/readme.md
  72. +0
    -1149
      keyboards/ergodox_ez/keymaps/dvorak_spanish/compiled.hex
  73. +0
    -0
      keyboards/ergodox_ez/keymaps/dvorak_spanish/readme.md
  74. +0
    -1158
      keyboards/ergodox_ez/keymaps/emacs_osx_dk/compiled.hex
  75. +0
    -1080
      keyboards/ergodox_ez/keymaps/erez_experimental/compiled.hex
  76. +0
    -1158
      keyboards/ergodox_ez/keymaps/german-kinergo/compiled.hex
  77. +0
    -1274
      keyboards/ergodox_ez/keymaps/german-manuneo/compiled.hex
  78. +0
    -1158
      keyboards/ergodox_ez/keymaps/german/compiled.hex
  79. +0
    -1158
      keyboards/ergodox_ez/keymaps/j3rn/compiled.hex
  80. +0
    -1158
      keyboards/ergodox_ez/keymaps/jack/compiled.hex
  81. +0
    -1179
      keyboards/ergodox_ez/keymaps/jacobono/compiled.hex
  82. +0
    -0
      keyboards/ergodox_ez/keymaps/jacobono/readme.md
  83. +0
    -1158
      keyboards/ergodox_ez/keymaps/jgarr/compiled.hex
  84. +0
    -1158
      keyboards/ergodox_ez/keymaps/kastyle/compiled.hex
  85. +0
    -1158
      keyboards/ergodox_ez/keymaps/kines-ish/compiled.hex
  86. +0
    -1181
      keyboards/ergodox_ez/keymaps/mpiechotka/compiled.hex
  87. +0
    -1158
      keyboards/ergodox_ez/keymaps/msc/compiled.hex
  88. +0
    -1158
      keyboards/ergodox_ez/keymaps/naps62/compiled.hex
  89. +0
    -0
      keyboards/ergodox_ez/keymaps/naps62/readme.md
  90. +0
    -1182
      keyboards/ergodox_ez/keymaps/ordinary/compiled.hex
  91. +0
    -1216
      keyboards/ergodox_ez/keymaps/osx_de/compiled.hex
  92. +0
    -1152
      keyboards/ergodox_ez/keymaps/osx_de_adnw_koy/compiled.hex
  93. +0
    -1228
      keyboards/ergodox_ez/keymaps/osx_de_experimental/compiled.hex
  94. +0
    -1158
      keyboards/ergodox_ez/keymaps/osx_fr/compiled.hex
  95. +0
    -1158
      keyboards/ergodox_ez/keymaps/osx_kinesis_pnut/compiled.hex
  96. +0
    -1169
      keyboards/ergodox_ez/keymaps/plover/compiled.hex
  97. +0
    -1165
      keyboards/ergodox_ez/keymaps/plums/compiled.hex
  98. +0
    -1098
      keyboards/ergodox_ez/keymaps/romanzolotarev-norman-osx/compiled.hex
  99. +0
    -1169
      keyboards/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/compiled.hex
  100. +0
    -1169
      keyboards/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/compiled.hex

+ 3
- 5
.gitignore View File

@ -1,12 +1,10 @@
keyboards/planck/dfu-programmer.exe
.dep
*.o
*.eep
*.elf
/*.hex
/keyboards/**/*.hex
/keyboards/**/keymaps/**/*.hex
!/keyboards/**/keymaps/**/compiled.hex
*.hex
!util/bootloader.hex
!quantum/tools/eeprom_reset.hex
*.log
*.lss
*.lst


+ 1
- 2
Makefile View File

@ -81,8 +81,7 @@ SRC += $(KEYBOARD_FILE) \
$(KEYMAP_FILE) \
$(QUANTUM_DIR)/quantum.c \
$(QUANTUM_DIR)/keymap.c \
$(QUANTUM_DIR)/keycode_config.c \
$(QUANTUM_DIR)/led.c
$(QUANTUM_DIR)/keycode_config.c
ifndef CUSTOM_MATRIX
SRC += $(QUANTUM_DIR)/matrix.c


+ 3
- 4
doc/BUILD_GUIDE.md View File

@ -1,4 +1,4 @@
# Build Guide
# This guide has now been included in the main readme - please reference that one instead.
## Build Environment Setup
@ -40,7 +40,7 @@ If you have any problems building the firmware, you can try using a tool called
## Verify Your Installation
1. If you haven't already, obtain this repository ([https://github.com/jackhumbert/qmk_firmware](https://github.com/jackhumbert/qmk_firmware)). You can either download it as a zip file and extract it, or clone it using the command line tool git or the Github Desktop application.
2. Open up a terminal or command prompt and navigate to the `qmk_firmware` folder using the `cd` command. The command prompt will typically open to your home directory. If, for example, you cloned the repository to your Documents folder, then you would type `cd Documents/qmk_firmware`. If you extracted the file from a zip, then it may be named `qmk_firmware-master` instead.
3. To confirm that you're in the correct location, you can display the contents of your current folder using the `dir` command on Windows, or the `ls` command on Linux or Mac. You should see several files, including `README.md` and a `quantum` folder. From here, you need to navigate to the appropriate folder under `keyboards/`. For example, if you're building for a Planck, run `cd keyboards/planck`.
3. To confirm that you're in the correct location, you can display the contents of your current folder using the `dir` command on Windows, or the `ls` command on Linux or Mac. You should see several files, including `readme.md` and a `quantum` folder. From here, you need to navigate to the appropriate folder under `keyboards/`. For example, if you're building for a Planck, run `cd keyboards/planck`.
4. Once you're in the correct keyboard-specific folder, run the `make` command. This should output a lot of information about the build process. More information about the `make` command can be found below.
## Customizing, Building, and Deploying Your Firmware
@ -49,7 +49,7 @@ If you have any problems building the firmware, you can try using a tool called
The `make` command is how you compile the firmware into a .hex file, which can be loaded by a dfu programmer (like dfu-progammer via `make dfu`) or the [Teensy loader](https://www.pjrc.com/teensy/loader.html) (only used with Teensys). You can run `make` from the root (`/`), your keyboard folder (`/keyboards/<keyboard>/`), or your keymap folder (`/keyboards/<keyboard>/keymaps/<keymap>/`) if you have a `Makefile` there (see the example [here](/doc/keymap_makefile_example.mk)).
By default, this will generate a `<keyboard>_<keymap>.hex` file in whichever folder you run `make` from. These files are ignored by git, so don't worry about deleting them when committing/creating pull requests. Your .hex file will also be copied into your keymap folder as `compiled.hex`, which isn't ignored by git - this is included in case first-time users are having trouble compiling, and just want to flash a layout via `make dfu-no-build` or using the Teensy loader.
By default, this will generate a `<keyboard>_<keymap>.hex` file in whichever folder you run `make` from. These files are ignored by git, so don't worry about deleting them when committing/creating pull requests.
* The "root" (`/`) folder is the qmk_firmware folder, in which are `doc`, `keyboard`, `quantum`, etc.
* The "keyboard" folder is any keyboard project's folder, like `/keyboards/planck`.
@ -63,7 +63,6 @@ Below is a list of the useful `make` commands in QMK:
* `make quick` - skips the clean step (cannot be used immediately after modifying config.h or Makefiles)
* `make dfu` - (requires dfu-programmer) builds and flashes the keymap to your keyboard once placed in reset/dfu mode (button or press `KC_RESET`). This does not work for Teensy-based keyboards like the ErgoDox EZ.
* `keyboard=` and `keymap=` are compatible with this
* `make dfu-no-build` - (requires dfu-programmer) same as `make dfu`, but doesn't build and uses the included `compiled.hex` to flash the keyboard
* `make all-keyboards` - builds all keymaps for all keyboards and outputs status of each (use in root)
* `make all-keyboards-default` - builds all default keymaps for all keyboards and outputs status of each (use in root)
* `make all-keymaps [keyboard=<keyboard>]` - builds all of the keymaps for whatever keyboard folder you're in, or specified by `<keyboard>`


+ 1
- 1
doc/HAND_WIRE.md View File

@ -306,7 +306,7 @@ If you've done all of these things, keep in mind that sometimes you might have h
Now that you have a working board, it's time to get things in their permanent positions. I've often used liberal amounts of hot glue to secure and insulate things, so if that's your style, start spreading that stuff like butter. Otherwise, double-sided tape is always an elegant solution, and electrical tape is a distant second. Due to the nature of these builds, a lot of this part is up to you and how you planned (or didn't plan) things out.
There are a lot of possibilities inside the firmware - check out the [README](https://github.com/jackhumbert/qmk_firmware/blob/master/README.md) for a full feature list, and dive into the different project (Planck, Ergodox EZ, etc) to see how people use all of them. You can always stop by [the OLKB subreddit for help!](http://reddit.com/r/olkb)
There are a lot of possibilities inside the firmware - check out the [readme](https://github.com/jackhumbert/qmk_firmware/blob/master/readme.md) for a full feature list, and dive into the different project (Planck, Ergodox EZ, etc) to see how people use all of them. You can always stop by [the OLKB subreddit for help!](http://reddit.com/r/olkb)
## Trouble-shooting compiling


+ 1
- 1
doc/TMK_README.md View File

@ -113,7 +113,7 @@ Third party libraries like LUFA, PJRC and V-USB have their own license respectiv
Build Firmware and Program Controller
-------------------------------------
See [doc/build.md](tmk_core/doc/build.md), or the README in the particular keyboards/* folder.
See [doc/build.md](tmk_core/doc/build.md), or the readme in the particular keyboards/* folder.


+ 1
- 1
doc/VAGRANT_GUIDE.md View File

@ -12,7 +12,7 @@ Other than having Vagrant and Virtualbox installed and possibly a restart of you
Build Firmware and Program Controller
-------------------------------------
See [/doc/BUIDE_GUIDE.md](/doc/BUILD_GUIDE.md), or the README in the particular keyboards/* folder.
See [/doc/BUIDE_GUIDE.md](/doc/BUILD_GUIDE.md), or the readme in the particular keyboards/* folder.
Change your keymap
------------------


+ 1
- 14
keyboards/alps64/alps64.c View File

@ -20,15 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define LED_OFF() do { DDRC &= ~(1<<5); PORTC &= ~(1<<5); } while (0)
#define LED_TGL() do { DDRC |= (1<<5); PINC |= (1<<5); } while (0)
__attribute__ ((weak))
void matrix_init_user(void) {
}
__attribute__ ((weak))
void matrix_scan_user(void) {
}
void matrix_init_kb(void) {
LED_ON();
@ -36,8 +27,4 @@ void matrix_init_kb(void) {
LED_OFF();
matrix_init_user();
}
void matrix_scan_kb(void) {
matrix_scan_user();
}
}

+ 0
- 1373
keyboards/alps64/keymaps/default/compiled.hex
File diff suppressed because it is too large
View File


+ 1
- 114
keyboards/arrow_pad/arrow_pad.c View File

@ -1,114 +1 @@
#include "arrow_pad.h"
__attribute__ ((weak))
void matrix_init_user(void) {
// leave this function blank - it can be defined in a keymap file
};
__attribute__ ((weak))
void matrix_scan_user(void) {
// leave this function blank - it can be defined in a keymap file
}
__attribute__ ((weak))
bool process_action_user(keyrecord_t *record) {
// leave this function blank - it can be defined in a keymap file
return true;
}
__attribute__ ((weak))
void led_set_user(uint8_t usb_led) {
// leave this function blank - it can be defined in a keymap file
}
void matrix_init_kb(void) {
// put your keyboard start-up code here
// runs once when the firmware starts up
#ifdef BACKLIGHT_ENABLE
backlight_init_ports();
#endif
matrix_init_user();
}
void matrix_scan_kb(void) {
// put your looping keyboard code here
// runs every cycle (a lot)
matrix_scan_user();
}
bool process_action_kb(keyrecord_t *record) {
// put your per-action keyboard code here
// runs for every action, just before processing by the firmware
return process_action_user(record);
}
void led_set_kb(uint8_t usb_led) {
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
led_set_user(usb_led);
}
#ifdef BACKLIGHT_ENABLE
#define CHANNEL OCR1C
void backlight_init_ports()
{
// Setup PB7 as output and output low.
DDRB |= (1<<7);
PORTB &= ~(1<<7);
// Use full 16-bit resolution.
ICR1 = 0xFFFF;
// I could write a wall of text here to explain... but TL;DW
// Go read the ATmega32u4 datasheet.
// And this: http://blog.saikoled.com/post/43165849837/secret-konami-cheat-code-to-high-resolution-pwm-on
// Pin PB7 = OCR1C (Timer 1, Channel C)
// Compare Output Mode = Clear on compare match, Channel C = COM1C1=1 COM1C0=0
// (i.e. start high, go low when counter matches.)
// WGM Mode 14 (Fast PWM) = WGM13=1 WGM12=1 WGM11=1 WGM10=0
// Clock Select = clk/1 (no prescaling) = CS12=0 CS11=0 CS10=1
TCCR1A = _BV(COM1C1) | _BV(WGM11); // = 0b00001010;
TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001;
backlight_init();
}
void backlight_set(uint8_t level)
{
if ( level == 0 )
{
// Turn off PWM control on PB7, revert to output low.
TCCR1A &= ~(_BV(COM1C1));
CHANNEL = 0x0;
// Prevent backlight blink on lowest level
PORTB &= ~(_BV(PORTB7));
}
else if ( level == BACKLIGHT_LEVELS )
{
// Prevent backlight blink on lowest level
PORTB &= ~(_BV(PORTB7));
// Turn on PWM control of PB7
TCCR1A |= _BV(COM1C1);
// Set the brightness
CHANNEL = 0xFFFF;
}
else
{
// Prevent backlight blink on lowest level
PORTB &= ~(_BV(PORTB7));
// Turn on PWM control of PB7
TCCR1A |= _BV(COM1C1);
// Set the brightness
CHANNEL = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2));
}
}
#endif
#include "arrow_pad.h"

+ 1
- 6
keyboards/arrow_pad/arrow_pad.h View File

@ -1,6 +1,7 @@
#ifndef ARROW_PAD_H
#define ARROW_PAD_H
#include "quantum.h"
#include "matrix.h"
#include "keymap.h"
#ifdef BACKLIGHT_ENABLE
@ -9,10 +10,4 @@
#include <avr/io.h>
#include <stddef.h>
void matrix_init_user(void);
void matrix_scan_user(void);
bool process_action_user(keyrecord_t *record);
void led_set_user(uint8_t usb_led);
void backlight_init_ports(void);
#endif

+ 2
- 0
keyboards/arrow_pad/config.h View File

@ -46,6 +46,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { B0, B1, B2, B3 }
#define UNUSED_PINS
#define BACKLIGHT_PIN B7
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL


+ 0
- 1490
keyboards/arrow_pad/keymaps/default/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 893
keyboards/arrow_pad/keymaps/pad_21/compiled.hex View File

@ -1,893 +0,0 @@
:100000000C944A010C948E010C948E010C948E0178
:100010000C948E010C948E010C948E010C948E0124
:100020000C948E010C948E010C94B10A0C94830BE9
:100030000C9424180C948E010C948E010C948E0157
:100040000C948E010C948E010C948E010C948E01F4
:100050000C948E010C948C180C948E010C948E01CF
:100060000C948E010C948E010C948E010C948E01D4
:100070000C948E010C948E010C948E010C948E01C4
:100080000C948E010C948E010C948E010C948E01B4
:100090000C948E010C948E010C948E010C948E01A4
:1000A0000C948E010C948E010C948E01F00B120CAA
:1000B000000D120C000D570C7A0C000DCF0CE20C49
:1000C000730F730FA20FA20F06110611061106116E
:1000D000E10F061191109110F71006110611001191
:1000E0009E109E109E109E109E109E109E109E10A0
:1000F0009E109E109E109E109E109E109E109E1090
:10010000AE10BC10C310CA10D410F1A2028A00D2E3
:1001100000D000D100C801C802C829002B0031005E
:10012000C0005F0060006100570059005A005B008A
:1001300053005400550056005C005D005E005800FE
:1001400000006200630029002B002C0001004A001F
:1001500052004B00C7004D0051004E00C100190174
:100160001C011D015000C5004F00C60000002A0000
:100170004C00C200C300C4000100010001000100E6
:100180000100010001000100C100010001000100A7
:1001900001000100010001000000005001001A03ED
:1001A0004100720072006F00770020005000610073
:1001B000640020003200310000000E034E006F008A
:1001C00062006F0064007900000004030904090262
:1001D0003B00020100A0FA09040000010301010034
:1001E000092111010001223F000705810308000ACF
:1001F000090401000103000000092111010001228E
:1002000039000705820310000112011001000000EF
:1002100008EDFE974001000102000105010906A159
:1002200001050719E029E7150025019508750181E9
:1002300002050819012905950575019102950175B9
:100240000391010507190029771500250195787597
:10025000018102C005010906A101050719E029E78E
:100260001500250195087501810295017508810128
:100270000508190129059505750191029501750378
:1002800091010507190029FF150025FF950675083E
:100290008100C00011241FBECFEFDAE0DEBFCDBF6A
:1002A00004B603FE24C08091C3019091C401A091C3
:1002B000C501B091C6018730904BA740B04BB9F44F
:1002C0001092C3011092C4011092C5011092C60190
:1002D00014BE84B7877F84BF88E10FB6F8948093FB
:1002E0006000109260000FBEE0E0FFE3099511E0AE
:1002F000A0E0B1E0E4E9F7E302C005900D92AA3175
:10030000B107D9F711E0AAE1B1E001C01D92A33C09
:10031000B107E1F70E94F8070C94C81B0C94000089
:100320000895089581E008950C9490010C94910132
:100330000C9492010C9400020895CF93DF93EC018A
:100340006130F1F018F06230E9F155C08A818823FC
:1003500009F451C080EE0E94670E8D81807F80314C
:1003600029F486E00E94670E86E006C0803231F4F0
:100370008BE10E94670E8BE10E94060F80EE1FC08A
:100380008A818823C1F08D8182958F7090E00397D8
:100390001CF482E00E942E0F8D81807F803219F440
:1003A00081E00E942E0F8D81807F803321F588E5CA
:1003B0000E94670E20C083E00E94350F88E50E94EE
:1003C000060F19C08A81882399F08D8182958F70DC
:1003D00090E002971CF481E00E942E0F8D8182959F
:1003E0008F7090E002973CF084E00E942E0F03C0D3
:1003F00085E00E94350F80E090E0DF91CF91089575
:1004000081FF03C0569A5E9A02C056985E9880FF9C
:1004100005C03F9A88B18F6788B908953F9847987B
:10042000089581E008950C94110208950F931F938D
:10043000CF93DF938C01FC01C081D181CE010E945A
:100440005E16BE010E94C202EC01B8010E941302B6
:10045000882309F48DC0F8018281882309F44AC0F9
:100460008091250181111FC0C431F0E5DF0709F03B
:1004700051C00E94150281E0809325010E94561808
:10048000909324018093230110921C0110921E016D
:1004900010921D011092200110921F011092220152
:1004A0001092210165C080912301909124010E9446
:1004B0006218883C910570F480911C01E82FF0E0EF
:1004C000EE0FFF1FE35EFE4FD183C0838F5F8093EB
:1004D0001C014EC0C43880E5D80721F0C538D0458E
:1004E00001F13AC0F8018281882341F010921A018B
:1004F00082E01EC0C438E0E5DE0759F580911A019C
:10050000811106C086E20E94670E86E20E94060FF5
:1005100082E01CC0C438F0E5DF0741F3C538D045A0
:10052000D9F4F8018281882331F010921B0180E216
:100530000E942E0F1DC080911B01811106C087E211
:100540000E94670E87E20E94060F80E20E94350F2C
:100550000FC0C538D04529F381E080931A018093FC
:100560001B01C801DF91CF911F910F910C9498014D
:1005700080E0DF91CF911F910F9108950C94940129
:100580000C9496019BE0799FF001112496E1899FDC
:10059000E00DF11D1124E60FF11DEE0FFF1FE65EC9
:1005A000FE4F859194910895880F991FFC01E6579D
:1005B000F040859194910895880F991FFC01E65FA2
:1005C000FE4F8591949108950F931F93CF93DF93DE
:1005D000EC01811520E3920750F5C11580E2D807A0
:1005E00008F0C3C0CB3BD10590F4C83AD10508F060
:1005F0006AC0C53AD10508F05BC0C430D10508F027
:10060000D0C1219709F0CAC101E010E00AC2CF3F72
:10061000D10511F008F0C5C1C03FD10508F0A2C056
:10062000CE01805E9109089708F4BBC1B7C1C13003
:1006300090E5D90709F4A2C020F5C0318FE4D807AE
:1006400070F4C11590E4D90708F094C0C11521E3F6
:10065000D20708F0A3C1DD278E01106CE2C1C115DD
:10066000D04509F09BC10E9465118FEF94E32CE007
:10067000815090402040E1F700C000000E94B11876
:10068000D0C1C11597E5D90758F4C03121E5D2078B
:1006900008F01CC1C43180E5D80708F475C07EC1DC
:1006A000CE0190578115904108F078C1DF7073C179
:1006B000C53AD10509F477C1C63AD10509F076C12A
:1006C00002E810E4AEC1C83AD10509F472C1C93AD2
:1006D000D10509F471C1CA3AD10509F470C1CB3A08
:1006E000D10509F46FC1CC3AD10509F46EC1CD3AF8
:1006F000D10509F46DC1C03BD10509F46CC1CE3AF6
:10070000D10509F46BC1CF3AD10509F46AC1C13BE7
:10071000D10509F469C1C23BD10509F468C1C33BE5
:10072000D10509F467C1C43BD10509F466C1C53BD5
:10073000D10509F465C1C63BD10509F464C1C73BC5
:10074000D10509F463C1C83BD10509F462C1C93BB5
:10075000D10509F461C1CA3BD10509F460C100E0CB
:1007600014E45FC18E0110655CC1CE019F700E94D0
:10077000DC0258C1DF708E01106A53C18091AE0156
:1007800081608093AE014DC10E94611A811102C047
:100790000E94471A0E947E1A90E09093C3018093B2
:1007A000C201C23080E5D80721F48091C201816086
:1007B00086C0C43090E5D90721F48091C2018260DF
:1007C0007EC0C63020E5D20721F48091C20184604A
:1007D00076C0C83080E5D80719F48091C20127C0DF
:1007E000CA3090E5D90721F48091C201806167C0C9
:1007F000CC3020E5D20721F48091C20180625FC035
:10080000CE3080E5D80721F48091C201806457C0C2
:10081000C03190E5D90721F48091C20180684FC0B2
:10082000C23120E5D20729F48091C201846088603A
:1008300046C0C33080E5D80721F48091C2018E7F85
:100840003EC0C53090E5D90721F48091C2018D7F6B
:1008500036C0C73020E5D20721F48091C2018B7FDA
:100860002EC0C93080E5D80719F48091C20126C096
:10087000CB3090E5D90721F48091C2018F7E1FC053
:10088000CD3020E5D20721F48091C2018F7D17C0C1
:10089000CF3080E5D80721F48091C2018F7B0FC053
:1008A000C13190E5D90721F48091C2018F7707C04B
:1008B000C331D04531F48091C2018B7F877F809313
:1008C000C2018091C2010E94821AABC08D2F99276C
:1008D0008F70992781309105D9F49E0123703327B9
:1008E00002C0880F991F2A95E2F79C688E0144E0A8
:1008F000000F111F4A95E1F700271370802B912BF1
:1009000053E0CC0FDD1F5A95E1F7C076DD272FC0ED
:100910008230910531F4DC2FCC278E01016F106AF3
:1009200080C08330910569F4CE018370992701E07E
:1009300010E002C0000F111F8A95E2F7C8019C6801
:100940000FC084309105B9F4CE018370992701E07E
:1009500010E002C0000F111F8A95E2F7C8019A68E3
:1009600023E0CC0FDD1F2A95E1F7C07ED7708C0104
:100970000C2B1D2B56C08530910531F4DC2FCC2774
:100980008E01046F106A4DC0069709F04AC0CF71FE
:10099000DD27DC2FCC278E01106243C000E010E081
:1009A00040C08E013EC001E810E43BC003E810E403
:1009B00038C002EE14E435C009EE14E432C00AEE89
:1009C00014E42FC005EB14E42CC006EB14E429C09A
:1009D00007EB14E426C00CEC14E423C00DEC14E483
:1009E00020C003E815E41DC00AE815E41AC002E9B6
:1009F00015E417C004E915E414C001E216E411C0BF
:100A000003E216E40EC004E216E40BC005E216E4AD
:100A100008C006E216E405C007E216E402C00AE2D6
:100A200016E4C801DF91CF911F910F9108959BE0CB
:100A3000799FF001112496E1899FE00DF11D1124A9
:100A4000E60FF11DEE0FFF1FE65EFE4F85919491BC
:100A5000803E9105E0F4803C910558F58133910585
:100A600009F46FC048F48932910509F463C08A32F1
:100A7000910509F46DC072C089339105E9F082389F
:100A80009105D1F08533910509F44DC067C0833ECF
:100A9000910581F138F4803E9105B9F0823E9105CF
:100AA000D9F05CC0863E910561F1873E9105A1F1C8
:100AB00055C00E94D40208952091C20120FD02C0B9
:100AC00021FF4CC080EE90E049C08091C20180FFC0
:100AD000F9CF89E390E042C08091C20182FF0EC04D
:100AE0008091C20184FF03C080E090E037C083EEB4
:100AF00090E034C08091C20182FFF2CF82EE90E09C
:100B00002DC08091C20183FF0BC08091C20184FD82
:100B1000EBCF87EE90E022C08091C20183FFF5CF3A
:100B200086EE90E01BC08091C20185FF07C089E27C
:100B300090E014C08091C20185FFF9CF85E390E079
:100B40000DC08091C20186FF07C08AE290E006C016
:100B50008091C20186FFF9CF81E390E00E94E40218
:100B600008950C949A01E82FF0E0E15FFE4F808138
:100B7000E82FEF70F0E082958F7021E030E0A9015E
:100B800002C0440F551F8A95E2F740A308950F93C2
:100B90001F93CF93DF9385B7806885BF85B7806843
:100BA00085BFCAE0D0E001E010E0FE01E15FFE4F4A
:100BB0008081E82FEF70F0E021A182958F70A8016D
:100BC00002C0440F551F8A95E2F7CA01822B81A308
:100BD0008C2F0E94B305219740F75D9A5B9ADF91B5
:100BE000CF911F910F910C94BE020F931F93CF933F
:100BF000DF9301E311E0CAE0D5E08C2F0E94B3053A
:100C00004D9902C082E001C080E04B9B8160F801F9
:100C100092918F01981719F08083D09300018C2F47
:100C20000E94B305C15048F78091000187FD1CC0A8
:100C30008150809300018F3F39F08FE99FE0019749
:100C4000F1F700C0000010C080E090E0FC01EF5C14
:100C5000FE4FDC01AA5DBE4F1A962C9122870197A8
:100C6000853FEFEF9E0791F70E94C00281E0DF9180
:100C7000CF911F910F91089591E001C0990F8A952E
:100C8000EAF72AE030E040E050E061E070E0F9018E
:100C9000EF5CFE4F8081892349F0FB01022E02C0E8
:100CA000EE0FFF1F0A94E2F74E2B5F2B2150310904
:100CB00070F7CA0108950895CF9381E00E943C0621
:100CC0000E94D917C82F80E00E943C060E94D917C5
:100CD0008C0FCF91089580914C0108950895CF9382
:100CE000DF9300D01F92CDB7DEB72091B901243039
:100CF00021F523E029839B838A8381E08093E900A7
:100D00008FEF9091E800815095FD06C095ED9A9582
:100D1000F1F700008111F5CF8091E80085FF0DC04B
:100D200040E050E063E070E0CE0101960E94A1082F
:100D30008091E8008E778093E8000F900F900F90DD
:100D4000DF91CF910895CF93DF9300D01F92CDB75D
:100D5000DEB72091B901243021F522E029839B835D
:100D60008A8381E08093E9008FEF9091E8008150C1
:100D700095FD06C095ED9A95F1F700008111F5CF2C
:100D80008091E80085FF0DC040E050E063E070E036
:100D9000CE0101960E94A1088091E8008E77809391
:100DA000E8000F900F900F90DF91CF910895CF93AF
:100DB000DF932091B901243009F048C0EC01809103
:100DC0000B018823E1F080910C018823C1F082E0BF
:100DD0008093E9008FEF9091E800815095FD06C067
:100DE00095E19A95F1F700008111F5CF8091E80027
:100DF00085FF2CC040E050E060E170E017C081E06A
:100E00008093E9008FEF9091E800815095FD06C036
:100E100095ED9A95F1F700008111F5CF8091E800EA
:100E200085FF14C040E050E068E070E0CE010E9411
:100E3000A1088091E8008E778093E80080E1FE01B0
:100E4000ACE3B1E001900D928A95E1F7DF91CF918B
:100E500008958091B801811109C00E94360A0E944C
:100E6000930A8091E20084608093E20008951092DA
:100E7000B8010895089508950C941E1842E061EC9D
:100E800081E00E94B00942E161EC82E00C94B0097B
:100E90008091BB01833009F453C030F4813071F08C
:100EA000823009F48CC008958A3009F478C08B3000
:100EB00009F45EC0893009F09AC020C08091BA015F
:100EC000813A09F094C08091E800877F8093E80020
:100ED0008091BE019091BF01892B21F460E18CE3E8
:100EE00091E003C060E080E090E070E00E94EC08D8
:100EF0008091E8008B778093E80008958091BA0193
:100F0000813209F074C08091BE019091BF010297B7
:100F100008F06DC08091E800877F8093E8008091A1
:100F2000E80082FD05C08091B9018111F8CF5FC052
:100F30008091F10080934C018091E8008B7753C041
:100F40008091BA01813A09F052C08091BE0190911E
:100F5000BF01892B09F04BC08091E800877F809307
:100F6000E8008091E80080FFFCCF80910B0136C043
:100F70008091BA018132D9F58091BE019091BF0173
:100F8000892BA9F58091E800877F8093E8000E9473
:100F9000E5098091BC0180930B010C94651180914F
:100FA000BA01813221F58091E800877F8093E800C3
:100FB0000E94E5098091BD0180934D0108958091C3
:100FC000BA01813AA1F48091E800877F8093E8001C
:100FD0008091E80080FFFCCF80914D018093F1006B
:100FE0008091E8008E778093E8000C94E5090895DD
:100FF00084B7877F84BF88E10FB6F8948093600040
:10100000109260000FBE90E080E80FB6F8948093D5
:101010006100909361000FBE0E947D0D0E94360A10
:101020000E94930A8091E20084608093E2007894A9
:101030000E94190D0E947F0D81E091E00E94340D05
:101040008091B901853069F40E94E5178091B7015C
:101050008823B1F30E941018882391F30E948B0813
:10106000EFCF0E94890DECCF292F33272330310594
:10107000C9F064F42130310581F02230310509F0E6
:1010800042C08BE390E02EEC31E041C021323105CB
:10109000F1F02232310549F136C082E190E029E0D9
:1010A00032E035C099278130910541F082309105B9
:1010B00041F0892B41F5EAECF1E005C0EAEBF1E003
:1010C00002C0EEE9F1E0849190E09F0120C0662328
:1010D00039F06130C1F489E090E029EF31E017C0C8
:1010E00089E090E020EE31E012C0662339F06130F3
:1010F00051F489E390E02BE132E009C08FE390E006
:1011000024E532E004C080E090E020E030E0FA0125
:1011100031832083089580E189BD82E189BD09B4CE
:1011200000FEFDCF8091D8008F7D8093D800809104
:10113000E00082608093E0008091E00081FDFCCFC0
:101140000895CF92DF92EF92FF920F931F93CF9368
:10115000DF93EC018B016A010E94040A811133C004
:10116000C114D10439F0F60180819181081B190B5B
:10117000C80FD91FE12CF12C0115110519F180912F
:10118000E80085FD16C08091E8008E778093E80026
:10119000C114D10449F0F60180819181E80EF91E55
:1011A000F182E08285E00FC00E94040A882321F3C7
:1011B0000AC089918093F10001501109FFEFEF1AE5
:1011C000FF0ADACF80E0DF91CF911F910F91FF905E
:1011D000EF90DF90CF9008952091C0013091C10130
:1011E0002617370748F06115710539F42091E8009A
:1011F0002E772093E80001C0B90140E06115710528
:10120000A9F12091B901222309F443C0253009F442
:1012100042C02091E80023FD40C02091E80022FD5B
:1012200032C02091E80020FFE9CF4091F3002091E7
:10123000F20030E0342BFC01CF016115710559F04B
:101240002830310540F481918093F100615071099B
:101250002F5F3F4FF1CF41E02830310509F040E0EA
:101260002091E8002E772093E800C8CF4111C9CF24
:101270000AC08091B901882361F0853061F08091C6
:10128000E80083FD0AC08091E80082FFF2CF80E091
:10129000089582E0089583E0089581E00895209103
:1012A000C0013091C1012617370748F0611571055B
:1012B00039F42091E8002E772093E80001C0B901AD
:1012C000FC0120E06115710591F18091B90188233D
:1012D00009F440C0853009F43FC08091E80083FDE7
:1012E0003DC08091E80082FD2FC08091E80080FF22
:1012F000E9CF2091F3008091F20090E0922B6115EC
:10130000710559F08830910540F424912093F10043
:101310003196615071090196F2CF21E0089709F0EA
:1013200020E08091E8008E778093E800CBCF2111F8
:10133000CCCF0AC08091B901882361F0853061F07B
:101340008091E80083FD0AC08091E80082FFF2CF1F
:1013500080E0089582E0089583E0089581E0089593
:10136000982F973058F59093E900981739F07091BD
:10137000EC002091ED005091F00003C0242F762F57
:1013800050E021FF19C03091EB003E7F3093EB001D
:101390003091ED003D7F3093ED003091EB003160F6
:1013A0003093EB007093EC002093ED005093F0002D
:1013B0002091EE0027FF07C09F5FD3CF8F708093EF
:1013C000E90081E0089580E008958091BA0187FFE7
:1013D00011C08091E80082FD05C08091B9018111A2
:1013E000F8CF11C08091E8008B770BC08091B901D4
:1013F000882349F08091E80080FFF8CF8091E800D1
:101400008E778093E80008952091E4003091E50004
:1014100095E64091EC00842F817040FF22C08091BE
:10142000E80080FD1CC08091B901882391F08530CF
:1014300091F08091EB0085FD10C04091E400509147
:10144000E5004217530729F39A01915011F784E000
:10145000089582E0089583E0089581E0089580E092
:1014600008954091E80042FFDECF08950E94A40A4B
:101470000E94AC0AE0EEF0E0808181608083E8EDBC
:10148000F0E080818F77808319BCA7EDB0E08C916C
:101490008E7F8C9380818F7E80831092B801089517
:1014A0000F931F93CF93DF930E94A40A0E94AC0A6C
:1014B000C8EDD0E088818F778883888180688883B1
:1014C00088818F7D888319BC1092B9011092B50173
:1014D0001092B7011092B60100EE10E0F801808181
:1014E0008B7F808388818160888342E060E080E038
:1014F0000E94B009E1EEF0E080818E7F8083E2EE11
:10150000F0E0808181608083808188608083F80141
:1015100080818E7F8083888180618883DF91CF91F5
:101520001F910F910895E8EDF0E080818F7E808318
:10153000E7EDF0E080818160808384E082BF81E01C
:101540008093B8010C94500AE8EDF0E080818E7F22
:1015500080831092E20008951092DA001092E10068
:1015600008951F920F920FB60F9211242F933F935D
:101570004F935F936F937F938F939F93AF93BF939B
:10158000EF93FF938091E10082FF0BC08091E20016
:1015900082FF07C08091E1008B7F8093E1000E9471
:1015A000180D8091DA0080FF1FC08091D80080FF65
:1015B0001BC08091DA008E7F8093DA008091D90081
:1015C00080FF0DC080E189BD82E189BD09B400FEC4
:1015D000FDCF81E08093B9010E94290705C019BCA5
:1015E0001092B9010E9437078091E10080FF19C075
:1015F0008091E20080FF15C08091E2008E7F809391
:10160000E2008091E20080618093E2008091D80046
:1016100080628093D80019BC85E08093B9010E9454
:101620003B078091E10084FF30C08091E20084FF9D
:101630002CC080E189BD82E189BD09B400FEFDCFE7
:101640008091D8008F7D8093D8008091E1008F7EBB
:101650008093E1008091E2008F7E8093E200809190
:10166000E20081608093E2008091B501882311F04F
:1016700084E007C08091E30087FD02C081E001C0E3
:1016800083E08093B9010E943C078091E10083FFD1
:1016900029C08091E20083FF25C08091E100877F0F
:1016A0008093E10082E08093B9011092B5018091AE
:1016B000E1008E7F8093E1008091E2008E7F809335
:1016C000E2008091E20080618093E20042E060E00D
:1016D00080E00E94B0098091F00088608093F00063
:1016E0000E943A07FF91EF91BF91AF919F918F9127
:1016F0007F916F915F914F913F912F910F900FBE0E
:101700000F901F9018951F920F920FB60F921124F1
:101710002F933F934F935F936F937F938F939F93F9
:10172000AF93BF93CF93DF93EF93FF93C091E90003
:10173000CF708091EC00D82FD17080FDD0E810924E
:10174000E9008091F000877F8093F00078940E94F8
:10175000C70B1092E9008091F00088608093F00040
:10176000CD2BCF70C093E900FF91EF91DF91CF9126
:10177000BF91AF919F918F917F916F915F914F91A9
:101780003F912F910F900FBE0F901F9018951F93B0
:10179000CF93DF93CDB7DEB7AA970FB6F894DEBF2D
:1017A0000FBECDBFEAEBF1E088E08E0F9091F10023
:1017B00091938E13FBCF0E9448078091E80083FF2E
:1017C0001FC18091BA019091BB01492F50E04A306E
:1017D000510508F015C1FA01EA5AFF4F0C948C1B11
:1017E000803881F0823809F00BC18091BE018F7082
:1017F0008093E9008091EB0085FB882780F91092A7
:10180000E90006C08091B6019091B7019111826004
:101810009091E800977F9093E8008093F1001092F8
:10182000F100C8C0282F2D7F09F0EAC0882319F0E5
:10183000823061F0E5C08091BC01813009F0E0C0E8
:10184000933009F080E08093B7012BC08091BC01F8
:10185000811127C08091BE018F7009F4D1C080939F
:10186000E9002091EB0020FF1CC0933021F480910F
:10187000EB00806214C09091EB0090619093EB00BC
:1018800021E030E0A90102C0440F551F8A95E2F71C
:101890004093EA001092EA008091EB008860809308
:1018A000EB001092E9008091E800877F86C08111EB
:1018B000A7C01091BC011F778091E3008078812B35
:1018C0008093E3008091E800877F8093E8000E9486
:1018D000E5098091E80080FFFCCF8091E3008068FB
:1018E0008093E300111102C082E001C083E0809385
:1018F000B90186C08058823008F082C08091BC0156
:101900009091BD018C3D53E0950779F583E08A8382
:101910008AE289834FB7F894DE01139620E03EE017
:1019200051E2E32FF0E050935700E49120FF03C011
:10193000E295EF703F5FEF708E2F90E0EA3010F08D
:10194000C79601C0C0968D939D932F5F243149F7B0
:101950004FBF8091E800877F8093E8006AE270E0E3
:10196000CE0101960E94EC0814C0AE014F5F5F4F9C
:101970006091BE010E943408BC01009709F440C088
:101980009091E800977F9093E80089819A810E9466
:101990004F098091E8008B778093E80031C0803850
:1019A00079F58091E800877F8093E8008091B50108
:1019B0008093F1008091E8008E778093E8000E9488
:1019C000E5091EC081111CC09091BC019230C0F489
:1019D0008091E800877F8093E8009093B5010E9492
:1019E000E5098091B501811106C08091E30087FD72
:1019F00002C081E001C084E08093B9010E943E07EB
:101A00008091E80083FF0AC08091E800877F80937F
:101A1000E8008091EB0080628093EB00AA960FB6FD
:101A2000F894DEBF0FBECDBFDF91CF911F91089517
:101A30000895CF938091B9018823A1F0C091E90066
:101A4000CF709091EC00892F817090FD80E8C82BB9
:101A50001092E9008091E80083FD0E94C70BCF70CF
:101A6000C093E900CF910895909353018093520160
:101A70000895E0915201F0915301309721F00190C7
:101A8000F081E02D099480E00895E0915201F091F9
:101A90005301309721F00280F381E02D09940895DD
:101AA00020915001309151018217930771F090936A
:101AB000510180935001E0915201F0915301309710
:101AC00021F00680F781E02D0994089520914E01C0
:101AD00030914F018217930771F090934F018093DB
:101AE0004E01E0915201F0915301309721F00084B2
:101AF000F185E02D0994089508950C947C0D0E94C1
:101B00004D180E94C7050E941A1981E080930C01AC
:101B100008955F926F927F928F929F92AF92BF9241
:101B2000CF92DF92EF92FF920F931F93CF93DF93A9
:101B300000D000D01F92CDB7DEB70E94F50599E521
:101B4000C92E91E0D92E01E010E0AA24A394B12C73
:101B5000502E802F0E943C064C01F601729062903C
:101B60006F01682679266114710431F4012B09F4A0
:101B70003BC000E010E0ECCF8091AE0181FD0E94FF
:101B80005B062AE030E07501022E02C0EE0CFF1C5D
:101B90000A94E2F7C70186219721892B09F129834D
:101BA0005A828E209F2091E0892809F490E09B833F
:101BB0000E9456188160782F9D838C8349815A81B9
:101BC0006B818D810E94390E000F111FF801EB5AB5
:101BD000FE4F80819181E826F926F182E08214C0CF
:101BE0002150310980F6C2CF8FEF89838A831B820F
:101BF0000E9456188160782F9D838C8349815A8179
:101C00006B818D810E94390E109154010E94390D13
:101C10001817D1F00E94390D809354010F900F9046
:101C20000F900F900F90DF91CF911F910F91FF9028
:101C3000EF90DF90CF90BF90AF909F908F907F906C
:101C40006F905F900C94B1050F900F900F900F90D4
:101C50000F90DF91CF911F910F91FF90EF90DF9048
:101C6000CF90BF90AF909F908F907F906F905F903C
:101C70000895CF93DF93CDB7DEB72B970FB6F894C7
:101C8000DEBF0FBECDBF4F83588769877A878B87AA
:101C9000DE01119686E0FD0111928A95E9F785E053
:101CA000FE01379601900D928A95E1F749815A819C
:101CB0006B817C818D819E810E9403142B960FB6CF
:101CC000F894DEBF0FBECDBFDF91CF910895CF93C3
:101CD000882309F499C0C82F8CEF8C0F813A48F4FF
:101CE0008C2F0E944A1B81118FC08C2F0E94DD1601
:101CF0000CC080E28C0F883058F4C77081E001C0BE
:101D0000880FCA95EAF70E946317CF910C94AA171F
:101D10008BE58C0F833078F4C53A29F0C63A31F060
:101D200083E890E005C081E890E002C082E890E09E
:101D3000CF910C94500D88E58C0F833108F064C06E
:101D4000C83A39F1C93A41F1CA3A49F1CB3A51F1AD
:101D5000CC3A59F1CD3A61F1C03B69F1CE3A71F11B
:101D6000CF3A79F1C13B81F1C23B89F1C33B91F19B
:101D7000C43B99F1C53BA1F1C63BA9F1C73BB1F109
:101D8000C83BB9F1C93BC1F1CA3BC9F180E090E061
:101D900038C082EE90E035C089EE90E032C08AEE25
:101DA00090E02FC085EB90E02CC086EB90E029C03E
:101DB00087EB90E026C08CEC90E023C08DEC90E0A7
:101DC00020C083E891E01DC08AE891E01AC082E952
:101DD00091E017C084E991E014C081E292E011C063
:101DE00083E292E00EC084E292E00BC085E292E0D2
:101DF00008C086E292E005C087E292E002C08AE273
:101E000092E0CF910C94660DCF910895882329F12B
:101E10009CEF980F913A18F40E941F170DC090E2A2
:101E2000980F983058F4877091E001C0990F8A9507
:101E3000EAF7892F0E9469170C94AA179BE5980F5F
:101E4000933020F480E090E00C94500D885A833158
:101E500020F480E090E00C94660D0895882321F032
:101E60000E9463170C94AA170895882321F00E94FA
:101E700069170C94AA1708957F928F929F92AF9240
:101E8000BF92CF92DF92EF92FF920F931F93CF9367
:101E9000DF931F92CDB7DEB77C01C62E772EFC01F3
:101EA000158112951F70028101110E9480170E94F6
:101EB000D616882379F0002369F080E28C0D8830F3
:101EC00048F082E00E94BF160E94D61691E0D82EFC
:101ED000D92601C0D12CE72DE295EF70F0E0E05A51
:101EE000FF4F0C948C1B872D807F172D1F7088232C
:101EF00011F01295107F002389F0112309F46DC1B0
:101F000080E28C0D883020F4812F0E94631703C07B
:101F1000812F0E9473170E94AA175FC18C2D0E9407
:101F2000060F112309F472C180E28C0D883020F471
:101F3000812F0E94691703C0812F0E9479170E9488
:101F4000AA1764C1872D807F972D9F70803211F46E
:101F5000892F03C0892F8295807FCC2021F0F1E06A
:101F6000CF16A1F01DC0002339F0112319F1113053
:101F700009F50E9493174AC1112319F0113009F491
:101F800045C189830E9496178981E5C0002321F00D
:101F9000163008F03BC10EC0153008F037C1DBC069
:101FA000002359F0112331F0F701958190FF15C1FD
:101FB0009F7095830E942E0F29C1112309F4CBC075
:101FC00012C1872D837009F052C001111FC18C2DE1
:101FD000829586958770880F880F9C2D9F70892E1B
:101FE000912CA12CB12C082E04C0880C991CAA1C81
:101FF000BB1C0A94D2F7C4FE14C00FE010E020E02E
:1020000030E0B901A80104C0440F551F661F771FB7
:102010008A95D2F7CB01BA0160957095809590951D
:1020200003C060E070E0CB01272D26952695237034
:1020300030E02230310569F02330310589F068291C
:1020400079298A299B292130310571F00E944B158D
:10205000DDC0682979298A299B290E946715D6C085
:102060000E944B15C501B4010E942F15CFC000235B
:1020700019F0872D817001C08695882309F4C6C0A8
:102080008C2D829586958770880F880F9C2D9F7068
:10209000892E912CA12CB12C082E04C0880C991CDF
:1020A000AA1CBB1C0A94D2F7C4FE14C00FE010E0B7
:1020B00020E030E0B901A80104C0440F551F661F9D
:1020C000771F8A95D2F7CB01BA01609570958095FC
:1020D000909503C060E070E0CB01272D26952695F2
:1020E0002370422F50E04230510569F043305105D2
:1020F00089F0682979298A299B294130510571F095
:102100000E94251683C0682979298A299B290E9463
:1021100041167CC00E942516C501B4010E94091613
:1021200075C08C2D90E0FC01E05EF109E531F10510
:1021300008F04FC0E059FF4F0C948C1B1C2D1F70F2
:10214000872D8F71002321F00E94A215812F32CF9D
:102150000E94C315812F0E94350F58C0002341F003
:10216000153008F053C0872D8F710E94E8154EC0BE
:10217000163008F04BC0F7CF002339F0872D8F7150
:102180000E94A21543C00023C9F3872D8F710E94BE
:10219000C3153CC0002329F0872D8F710E948D1537
:1021A00035C00E94831532C0002351F0172D1F71D6
:1021B000812F0E94A21563E0812F0E94B61626C0CF
:1021C00081E00E94BF16123008F182E00E94BF1623
:1021D0001DC0002331F0112389F28C2D0E94670E5F
:1021E00015C0112391F28C2D0E94060F0FC0472DB0
:1021F0004F706C2DC7010E949D010E94A71406C05C
:10220000472D4F706C2DC7010E949C01DD20F9F015
:102210000E94B21680FD1BC0F70112820E94AC160C
:102220000E94A215C7010E9436110E94AC160F90A1
:10223000DF91CF911F910F91FF90EF90DF90CF90A2
:10224000BF90AF909F908F907F900C94C3150F908C
:10225000DF91CF911F910F91FF90EF90DF90CF9082
:10226000BF90AF909F908F907F9008950F931F9392
:10227000CF93DF93EC01888199812B813C81232BC3
:10228000B9F09F3F11F48F3F99F0CE010E941602E2
:10229000882371F0688179818A810E94A8168C0157
:1022A0000E945D160E942415B801CE010E943C0FC9
:1022B000DF91CF911F910F9108950E9480170E9486
:1022C00090170E9455170C94AA170E9470170C942F
:1022D0005D110E949D16292F22952F7030E02C3021
:1022E00031054CF42A3031056CF42250310922308A
:1022F0003105A8F407C02C30310569F02F303105C5
:1023000051F00DC0803F69F018F4803E40F409C0E0
:10231000843F29F406C093FB882780F9089580E064
:10232000089581E00895CF93DF9300D000D01F92ED
:10233000CDB7DEB70F900F900F900F900F90DF91F9
:10234000CF910895CF93DF9300D000D000D0CDB7C8
:10235000DEB726960FB6F894DEBF0FBECDBFDF9175
:10236000CF9108951F93CF93DF93C091590116E049
:1023700080915A01C81799F0D0E01C9FF0011D9F71
:10238000F00D1124E55AFE4F408151816281738125
:10239000848195810E94A2112196C770E9CFDF91B7
:1023A000CF911F91089540918B0150918C016091C4
:1023B0008D0170918E0180918F01909190010C940C
:1023C000A2118091900182958F7009F054C0809184
:1023D0008D01882309F44FC080915901A0915A01C1
:1023E00060918B0170918C0140918E0150918F0111
:1023F000B6E08A1709F43FC090E041155105C1F1DC
:102400007F3F11F46F3FA1F1B89FF001B99FF00D2C
:102410001124E55AFE4F218172132AC020816213D4
:1024200027C02281211124C023813481241735073C
:1024300010F421503109241B350B283C3105C0F420
:10244000209190012F7020612093900126E0289F19
:10245000F001299FF00D1124E05AFE4F80818F700A
:10246000806180838BE891E00E9436110C94B21158
:1024700001968770BECF0895CF92DF92EF92FF92C0
:102480000F931F93CF93DF93CDB7DEB762970FB64D
:10249000F894DEBF0FBECDBF8C0185E0F801DE01F0
:1024A0001D9601900D928A95E1F7D8014C911196F5
:1024B0005C91119712966C9112971396CD90DC90C7
:1024C000149730918B0170918C0180918E019091C5
:1024D0008F01009709F46BC17F3F19F43F3F09F466
:1024E00066C1E0908D01EE2009F4C0C020919001FA
:1024F000C816D90628F0F601E81BF90BCF0104C075
:10250000809590958C0D9D1DFF24F394883C91053A
:1025100078F0F12C207F09F0C6C07C2DD98AC88ABA
:1025200089890E9493118BE891E00E943611B1C015
:10253000822F807F09F046C0751314C0341312C077
:10254000611110C02F702061209390010E94D3115F
:102550008BE891E00E94361180919001D801159688
:102560008C932EC0CD2819F15F3F11F44F3FF9F045
:10257000F62E61111CC08091590120915A0136E05C
:10258000821709F45AC090E0389FF001399FF00D8E
:102590001124E55AFE4F7181571306C0708147130D
:1025A00003C07281711103C001968770E9CFF62EC6
:1025B000662309F418C18091900181608093900195
:1025C000F12C11C1751308C0341306C0611104C089
:1025D00080919001D801C3C04D875E878D859E850F
:1025E0006A8B0E9469116A898823E1F16623D1F11F
:1025F00020919001822F82958F7090E0029774F065
:1026000080918B0190918C0198878F831986DB864E
:10261000CA862C87CE0107960E94361186E0F80103
:10262000ABE8B1E001900D928A95E1F70E94E111CB
:102630000E94D311FF24F394D6C04D875E878D8509
:102640009E850E949D16292F22952F7030E0223002
:1026500031050CF0BCC09F7009F0B6C0805E8830B8
:1026600008F4C1C0C8010E943611E4CFC816D906CB
:1026700008F453C0F601E81BF90BCF01883C910523
:1026800008F450C0F12C7C2DD98AC88A89890E940F
:102690009311EBE8F1E086E0DF011D928A95E9F7FE
:1026A0000E94D311A0C0751314C0341312C061115D
:1026B00010C080919001F8018583C8010E943611F5
:1026C00086E0EBE8F1E0DF011D928A95E9F7FE2C48
:1026D0008AC04D875E878D859E856A8B0E946911B1
:1026E0006A89882309F4BECF662309F4BBCF209101
:1026F0009001822F82958F7090E002970CF48ECF1C
:1027000080918B0190918C019A8389831B82DD8259
:10271000CC822E83CE0101967FCF809590958C0D33
:102720009D1DACCFF62E662309F49CCF75132EC0E9
:1027300034132CC02091900120FD1FC0822F829560
:102740008F70D9F0D80115962C9315978F3049F0DA
:102750008F5F982F9295907F822F8F70892B15967F
:102760008C93C8010E94361186E0F801ABE8B1E015
:1027700001900D928A95E1F793CF86E0F801ABE8DE
:10278000B1E001900D928A95E1F72DC04D875E87EB
:102790008D859E850E946911811140CF80919001A5
:1027A000816080939001C8010E9436111CC066238D
:1027B00009F458CF4D875E878D859E850E946911EB
:1027C000882309F44FCF2ACF811148CF0CC0243081
:1027D00031050CF047CF9F7009F440CFF801958187
:1027E000907F09F03BCF8F2D62960FB6F894DEBF35
:1027F0000FBECDBFDF91CF911F910F91FF90EF9052
:10280000DF90CF9008951F93CF93DF93CDB7DEB7BE
:102810002C970FB6F894DEBF0FBECDBF4F835887FD
:1028200069877A878B879C87CE0107960E943C1226
:10283000882369F08F8198852A853B85232BF1F1C8
:102840009F3F09F063C08F3F09F060C037C086E04A
:10285000FE013796DE01119601900D928A95E1F7FF
:102860006F817885EA85FB85309741F17F3F11F4D0
:102870006F3F21F120915A0130E0C9010196877024
:1028800099274091590150E08417950709F447C0F2
:1028900069837A83FD83EC8396E0929FD001939FB6
:1028A000B00D1124A55ABE4FFE01319601900D9234
:1028B0009A95E1F780935A010E94B21116E0809137
:1028C000590190915A018917C1F1189FC001112433
:1028D000855A9E4F0E943C12882379F1E09159015C
:1028E0001E9FF0011124E55AFE4F40815181628103
:1028F0007381848195810E94A2118091590190E099
:1029000001968770992780935901D9CF4F815885B7
:1029100069857A858B859C850E94A211CFCF0E9404
:10292000651110925A0110925901EBE8F1E086E02E
:10293000DF011D928A95E9F7C1CF2C960FB6F89466
:10294000DEBF0FBECDBFDF91CF911F910895EF92F3
:10295000FF920F931F93CF93DF938C01009709F49D
:102960006CC0F12CEE24E394E8012196F8018491E7
:10297000843740F4843008F051C0813081F08230D7
:1029800019F15BC0853709F444C0A8F19CE7980FA2
:10299000903708F052C08F770E94060F41C00E5F3B
:1029A0001F4FFE01C49180E28C0F883048F4C7703D
:1029B0008E2D01C0880FCA95EAF70E94831714C0B4
:1029C0008C2F0E94670E2DC00E5F1F4FFE01C49119
:1029D00080E28C0F883058F4C7708E2D01C0880FAC
:1029E000CA95EAF70E9489170E94AA171AC08C2F6D
:1029F0000E94060F16C00E5F1F4FFE01C491CC232C
:102A000081F08FE99FE00197F1F700C00000C1500D
:102A1000F6CF0E5F1F4FFE01F49003C00E94670EB9
:102A20008E018F2D882309F49FCFEFE9FFE03197C6
:102A3000F1F700C000008150F5CFDF91CF911F91D9
:102A40000F91FF90EF900895089560939501709312
:102A5000960180939701909398010C945D110F93C8
:102A60001F9300919501109196012091970130914B
:102A70009801DC01CB01802B912BA22BB32B8093EF
:102A8000950190939601A0939701B09398011F919F
:102A90000F910C945D110F931F930091950110916C
:102AA00096012091970130919801DC01CB018023A0
:102AB0009123A223B3238093950190939601A09331
:102AC0009701B09398011F910F910C945D110F9392
:102AD0001F930091950110919601209197013091DB
:102AE0009801DC01CB0180279127A227B32780938F
:102AF000950190939601A0939701B09398011F912F
:102B00000F910C945D11109291011092920110920C
:102B10009301109294010C945D1141E050E060E04B
:102B200070E004C0440F551F661F771F8A95D2F7C7
:102B3000409391015093920160939301709394019B
:102B40000C945D1141E050E060E070E004C0440F7F
:102B5000551F661F771F8A95D2F78091910190913A
:102B60009201A0919301B0919401482B592B6A2BAB
:102B70007B2B40939101509392016093930170934A
:102B800094010C945D1141E050E060E070E004C0FD
:102B9000440F551F661F771F8A95D2F740955095B1
:102BA000609570958091910190919201A09193010F
:102BB000B0919401482359236A237B2340939101C8
:102BC0005093920160939301709394010C945D1162
:102BD00041E050E060E070E004C0440F551F661F04
:102BE000771F8A95D2F78091910190919201A091DF
:102BF0009301B0919401482759276A277B27409376
:102C000091015093920160939301709394010C94FD
:102C10005D110F931F9300919101109192012091EA
:102C2000930130919401DC01CB01802B912BA22BDD
:102C3000B32B8093910190939201A0939301B09351
:102C400094011F910F910C945D110F931F930091AC
:102C50009101109192012091930130919401DC0136
:102C6000CB0180239123A223B323809391019093DE
:102C70009201A0939301B09394011F910F910C9432
:102C80005D110F931F93009191011091920120917A
:102C9000930130919401DC01CB0180279127A22779
:102CA000B3278093910190939201A0939301B093E5
:102CB00094011F910F910C945D110895CF92DF92B2
:102CC000EF92FF920F931F93CF93DF938C01C090ED
:102CD0009501D0909601E0909701F0909801809135
:102CE000910190919201A0919301B0919401C82A11
:102CF000D92AEA2AFB2ACFE1D0E0D701C6010C2E5F
:102D000004C0B695A795979587950A94D2F780FF4A
:102D100006C0B8018C2F0E941705019721F4219756
:102D200060F780E001C08C2FDF91CF911F910F9150
:102D3000FF90EF90DF90CF900895CF93DF93EC0159
:102D40000E945E16BE010E941705DF91CF91089583
:102D5000CB010E949D1608958091990185958595D6
:102D600085950895809199018770089598E0899FCD
:102D700090011124262B209399010C94A2152091E7
:102D800099018095822380939901982F977069F417
:102D900030E0482F552747FD50952417350729F077
:102DA0008595859585950C94C31508959091990105
:102DB000977081E009F480E0089590910B019923C8
:102DC00021F090910C01911109C020910D013091D9
:102DD0000E01F90132969FEF40E01FC0982F9695A3
:102DE000969596959F3050F5E0910D01F0910E016A
:102DF000E90FF11D877021E030E0A90102C0440F06
:102E0000551F8A95E2F7CA019181892B8183089524
:102E10009F3F39F04F5F4E3041F051915813F8CF3A
:102E20000DC05111F7CF942FF5CF9F3F39F0F90125
:102E3000E90FF11D97FDFA95828308950895909109
:102E40000B01992321F090910C01911109C020915F
:102E50000D0130910E01F9013296205F3F4F1FC0E6
:102E6000982F9695969596959F30F0F4E0910D01E8
:102E7000F0910E01E90FF11D877021E030E0A9010A
:102E800002C0440F551F8A95E2F7CA0180959181CF
:102E90008923818308953196E217F30729F0908101
:102EA0009813F9CF1082F7CF089581E090E0E09178
:102EB0000D01F0910E01E80FF91F1082019680318B
:102EC0009105A9F708959091AD01892B8093AD01EB
:102ED000089580959091AD0189238093AD01089567
:102EE0001092AD0108959091AC01892B8093AC01B3
:102EF000089580959091AC0189238093AC01089549
:102F00001092AC0108959091AB01892B8093AB0195
:102F1000089580959091AB0189238093AB0108952A
:102F20001092AB01089580939A01089510929A012E
:102F3000089580910D0190910E01FC0131969C0144
:102F4000205F3F4F80E0919191118F5FE217F3076F
:102F5000D1F70895E0910D01F0910E018091AD013E
:102F60008083E0910D01F0910E0190818091AC0180
:102F7000892B8083E0910D01F0910E019081809169
:102F8000AB01892B808380919A01882361F0E091C5
:102F90000D01F0910E019081892B80830E94991779
:102FA000811110929A0180910D0190910E010C9463
:102FB000450D20E0009739F0AC01415051098423C0
:102FC00095232F5FF7CF822F08958091B901843028
:102FD00021F11092AF0120E488E190E00FB6F8945F
:102FE000A895809360000FBE2093600080E00E944F
:102FF000B10583B7817F846083BF83B7816083BF5E
:103000007894889583B78E7F83BF88E10FB6F89454
:1030100080936000109260000FBE08950895089597
:103020000E940E180E94F5050E940F180E945C066F
:1030300091E0811101C090E0892F08950E946511EF
:103040000E94390D0C94B1051F920F920FB60F928A
:1030500011248F939F93AF93BF938091AF01811100
:1030600013C08091B0019091B101A091B201B091D3
:10307000B3014196A11DB11D8093B0019093B101A0
:10308000A093B201B093B301BF91AF919F918F9183
:103090000F900FBE0F901F90189582E084BD93E0B3
:1030A00095BD9AEF97BD80936E0008952FB7F89461
:1030B0008091B0019091B101A091B201B091B301A2
:1030C0002FBF0895CF92DF92EF92FF920F931F933D
:1030D0002FB7F8944091B0015091B1016091B201C5
:1030E0007091B3012FBF6A017B01EE24FF248C0194
:1030F00020E030E0C016D106E206F30610F441509D
:1031000051099A01281B390BC9011F910F91FF909A
:10311000EF90DF90CF9008951F920F920FB60F920D
:1031200011248F939F93AF93BF938091B00190919F
:10313000B101A091B201B091B3010196A11DB11DE1
:103140008093B0019093B101A093B201B093B30109
:10315000BF91AF919F918F910F900FBE0F901F90D5
:1031600018950E94360AF8942FEF87EA91E62150CD
:1031700080409040E1F700C0000087E090EBDC0168
:103180008093C3019093C401A093C501B093C6017D
:103190009CE088E10FB6F894A895809360000FBE7C
:1031A00090936000FFCFBF92CF92DF92EF92FF9299
:1031B0000F931F93CF93DF93B82E11E0EE24E39487
:1031C000F12C012F812F0E943C066C01CAE0D0E057
:1031D00097010C2E02C0220F331F0A94E2F72C2114
:1031E0003D21232B49F06C2F712F80E00E94C202F9
:1031F000B81202C081E006C0219750F710E001111B
:10320000E0CF80E0DF91CF911F910F91FF90EF9081
:10321000DF90CF90BF900895CF93C82F8CE20E948B
:10322000D318882321F08C2FCF910C94D31880E0F1
:10323000CF910895CF930E94611A811102C00E941C
:10324000471AC5E6C15049F00E94F5058FE39CE995
:103250000197F1F700C00000F5CF89E20E940C1938
:10326000811113C18AE20E940C1981110E94471A30
:1032700085E00E940C1981110E94B1180E946C1AFD
:103280008093AE0187E00E940C198823A9F18BE19D
:103290000E940C19882351F08091AE0181FB2227F6
:1032A00020F991E0922790FB81F90EC08EE00E94F8
:1032B0000C19882361F08091AE0182FB222720F94E
:1032C00091E0922790FB82F98093AE0115C080E1D6
:1032D0000E940C199091AE01882341F093FB2227A4
:1032E00020F981E0822780FB93F904C0892F809523
:1032F00080FB90F99093AE018091AE010E94701A0C
:103300000E947E1A8093C20180EE0E940C198823CD
:1033100041F08091C201982F909590FB80F98093A5
:10332000C20189E30E940C19882359F08091C201DF
:1033300081FB222720F991E0922790FB81F980936D
:10334000C20182EE0E940C19882359F08091C201BB
:1033500082FB222720F991E0922790FB82F980934B
:10336000C20186EE0E940C19882359F08091C20197
:1033700083FB222720F991E0922790FB83F9809329
:10338000C20183EE0E940C19882359F08091C2017A
:1033900084FB222720F991E0922790FB84F9809307
:1033A000C20185E30E940C19882359F08091C20163
:1033B00085FB222720F991E0922790FB85F98093E5
:1033C000C20181E30E940C19882359F08091C20147
:1033D00086FB222720F991E0922790FB86F98093C3
:1033E000C20181E10E940C19882359F08091C20129
:1033F00087FB222720F991E0922790FB87F98093A1
:10340000C2018091C2010E94821A8091C20187FB91
:10341000882780F980930C0187E20E940C19C82F3D
:103420008EE10E940C198111C2608FE10E940C197B
:103430008111C46080E20E940C198111C86081E290
:103440000E940C198111C06182E20E940C19811145
:10345000C06283E20E940C198111C06484E20E9460
:103460000C19882311F0C06802C0CC2329F08C2FDE
:103470000E94791A6C2F03C00E94751A682F70E0A1
:1034800080E090E0CF910C942515CF9108956DEEDA
:103490007EEF80E090E00E94B21B60E082E090E06E
:1034A0000E94A01B60E083E090E00E94A01B60E00F
:1034B00084E090E00E94A01B60E085E090E00C9426
:1034C000A01B80E090E00E949A1B21E08D3E9E4F61
:1034D00009F020E0822F089582E090E00C94921B86
:1034E000682F82E090E00C94A01B83E090E00C94A5
:1034F000921B682F83E090E00C94A01B84E090E086
:103500000C94921B682F84E090E00C94A01B0F9306
:103510001F938B3109F475C0A0F58E3009F484C077
:10352000C0F4873009F45BC068F4863009F0AAC0A3
:103530008091AE01817F8E7F8093AE0181E0809388
:10354000B401A1C0883009F496C08B3009F493C04F
:1035500099C0813109F472C068F4803109F092C0D9
:103560008091AE0183FB222720F991E0922790FB06
:1035700083F950C0863109F47EC0893109F47BC0DB
:1035800081C0853309F479C068F4873209F475C0C5
:1035900028F48E3108F476C08D515AC0893209F46E
:1035A0006CC070C0833438F48A3308F050C088335C
:1035B00009F461C067C0833409F45FC0883409F03E
:1035C00061C00E9465110FEF13ED20E30150104020
:1035D0002040E1F700C000000E94B1184CC090915B
:1035E000AE01892F8095817080FB90F929F096605B
:1035F00098609093AE0147C0997F977F9093AE01FA
:103600003AC08091AE0181FB222720F991E09227F8
:1036100090FB81F98093AE01992369F18091AE010D
:1036200081608093AE0127C08091AE0182FB22278A
:1036300020F991E0922790FB82F9ECCF0E9465116E
:1036400090910C0181E0892780930C0114C089536B
:1036500041E050E060E070E08A019B0104C0000F8F
:10366000111F221F331F8A95D2F7C901B8010E948A
:1036700025150E94651181E006C061E070E080E0E0
:1036800090E0F5CF80E01F910F91089580E00895BC
:1036900080E00895CF93C82F8091B401882319F05A
:1036A000813049F031C0E0910D01F0910E0180812F
:1036B000823261F507C0E0910D01F0910E01808129
:1036C000823261F48C2F0E94461B811104C08C2F22
:1036D0000E94871A17C081E090E014C08C2F0E94CE
:1036E000481B81110EC0C43149F018F4CB3049F0A9
:1036F0000FC0C93219F0C83321F00AC01092B401CA
:1037000007C081E0817006C01092B40180E002C061
:1037100080E0F8CFCF910895EE0FFF1F0590F49150
:10372000E02D0994F999FECF92BD81BDF89A9927B1
:1037300080B50895A8E1B0E042E050E00C94BA1BD7
:10374000262FF999FECF92BD81BDF89A019700B45A
:10375000021639F01FBA20BD0FB6F894FA9AF99AFA
:103760000FBE08950196272F0E94A11B0C94A01B49
:10377000DC01CB01FC01F999FECF06C0F2BDE1BD31
:10378000F89A319600B40D9241505040B8F7089520
:04379000F894FFCFDB
:10379400FF6B06D7066E06A3066F0601019B010F99
:0A37A4001F4F5F6F7F6353437949A5
:00000001FF

+ 0
- 935
keyboards/arrow_pad/keymaps/pad_24/compiled.hex View File

@ -1,935 +0,0 @@
:100000000C9450010C9494010C9494010C94940160
:100010000C9494010C9494010C9494010C9494010C
:100020000C9494010C9494010C94580B0C942A0C8D
:100030000C94DC180C9494010C9494010C9494018D
:100040000C9494010C9494010C9494010C949401DC
:100050000C9494010C9444190C9494010C94940104
:100060000C9494010C9494010C9494010C949401BC
:100070000C9494010C9494010C9494010C949401AC
:100080000C9494010C9494010C9494010C9494019C
:100090000C9494010C9494010C9494010C9494018C
:1000A0000C9494010C9494010C949401970CB90C49
:1000B000A70DB90CA70DFE0C210DA70D760D890D0E
:1000C000FA0FFA0F29102910B311B311B311B3119C
:1000D0006810B311181118117F118811B311AD11E7
:1000E0002511251125112511251125112511251160
:1000F0002511251125112511251125112511251150
:10010000351143114A1151115B11F1A2028A00D23B
:1001100000D000D100C801C802C829002B0031005E
:10012000C00053005400550056005F00600061009D
:1001300067005C005D005E00570059005A005B00DC
:100140000000620000006300580029002B002C0012
:100150000100C10019011C011D014A0052004B00A1
:10016000E2005000C5004F00E0004D0051004E007D
:1001700000002A0000004C00C600C200C300C400FA
:100180000100C100010001000100010001000100A7
:100190000100010001000100010001000100010057
:1001A000000000500000010001001A03410072002D
:1001B00072006F0077002000500061006400200092
:1001C0003200340000000E034E006F0062006F002A
:1001D0006400790000000403090409023B000201E5
:1001E00000A0FA0904000001030101000921110126
:1001F0000001223F000705810308000A09040100ED
:100200000103000000092111010001223900070546
:1002100082031000011201100100000008EDFE969B
:100220004001000102000105010906A101050719AD
:10023000E029E715002501950875018102050819D7
:100240000129059505750191029501750391010537
:10025000071900297715002501957875018102C0DD
:1002600005010906A101050719E029E71500250187
:10027000950875018102950175088101050819012C
:1002800029059505750191029501750391010507F1
:10029000190029FF150025FF950675088100C0008B
:1002A00011241FBECFEFDAE0DEBFCDBF04B603FEE0
:1002B00024C08091B8019091B901A091BA01B09188
:1002C000BB018730904BA740B04BB9F41092B801F6
:1002D0001092B9011092BA011092BB0114BE84B7FA
:1002E000877F84BF88E10FB6F894809360001092F6
:1002F00060000FBEE0E0FFE3099511E0A0E0B1E08F
:10030000E8E3FAE302C005900D92AA31B107D9F7EC
:1003100011E0AAE1B1E001C01D92A83BB107E1F7ED
:100320000E949F080C941A1D0C94000008950895D3
:1003300081E008950C9497010C9498010C94450267
:10034000279A2F988FEF9FEF9093870080938600D6
:100350008AE08093800089E1809381000C94471C9F
:100360000E94A0010C949601282F81110BC080914E
:100370008000877F8093800010928D0010928C0007
:100380002F9808952F988091800088608093800036
:10039000233019F48FEF9FEF0FC083E090E0821BB2
:1003A0009109880F991F2FEF3FEFA90102C05695C1
:1003B00047958A95E2F7CA0190938D0080938C004F
:1003C00008950895CF93DF93EC016130F1F018F0B8
:1003D0006230E9F155C08A81882309F451C080EE6A
:1003E0000E94EE0E8D81807F803129F486E00E948C
:1003F000EE0E86E006C0803231F48BE10E94EE0EF4
:100400008BE10E948D0F80EE1FC08A818823C1F08E
:100410008D8182958F7090E003971CF482E00E949A
:10042000B50F8D81807F803219F481E00E94B50F75
:100430008D81807F803321F588E50E94EE0E20C0FB
:1004400083E00E94BC0F88E50E948D0F19C08A814D
:10045000882399F08D8182958F7090E002971CF42B
:1004600081E00E94B50F8D8182958F7090E0029798
:100470003CF084E00E94B50F03C085E00E94BC0FF1
:1004800080E090E0DF91CF91089581FF03C0569AFC
:100490005E9A02C056985E9880FF05C03F9A88B168
:1004A0008F6788B908953F984798089581E0089527
:1004B0000C94560208950F931F93CF93DF938C01F2
:1004C000FC01C081D181CE010E940B17BE010E94A8
:1004D0000703EC01B8010E945802882309F48DC07B
:1004E000F8018281882309F44AC080912501811195
:1004F0001FC0C431F0E5DF0709F051C00E945A0265
:1005000081E0809325010E940E199093240180932D
:10051000230110921C0110921E0110921D011092D5
:10052000200110921F01109222011092210165C03A
:1005300080912301909124010E941A19883C910511
:1005400070F480911C01E82FF0E0EE0FFF1FE35ED6
:10055000FE4FD183C0838F5F80931C014EC0C4388F
:1005600080E5D80721F0C538D04501F13AC0F8013F
:100570008281882341F010921A0182E01EC0C438A3
:10058000E0E5DE0759F580911A01811106C086E287
:100590000E94EE0E86E20E948D0F82E01CC0C438DD
:1005A000F0E5DF0741F3C538D045D9F4F801828181
:1005B000882331F010921B0180E20E94B50F1DC00C
:1005C00080911B01811106C087E20E94EE0E87E236
:1005D0000E948D0F80E20E94BC0F0FC0C538D0452D
:1005E00029F381E080931A0180931B01C801DF91F8
:1005F000CF911F910F910C949C0180E0DF91CF91DE
:100600001F910F9108950C94B0010C949A01E72F5B
:10061000F0E096E0899FE00DF11D1124EE0FFF1F21
:10062000EE0FFF1FE60FF11DEE0FFF1FE65EFE4F00
:10063000859194910895880F991FFC01E657F04029
:10064000859194910895880F991FFC01E65FFE4FF4
:100650008591949108950F931F93CF93DF93EC01AD
:10066000811521E39207A0F5C11580E3D80708F0B2
:10067000D7C0C83ED105D8F4C03ED10508F003C2AA
:10068000C83AD10578F4C53AD10508F06AC0C1303E
:10069000D10509F463C008F4F3C1C430D10508F0F2
:1006A000F2C1EEC1CB3BD10508F466C0E9C1C1156A
:1006B00090E2D90708F0AFC0C11521E0D20708F0D9
:1006C000E2C1C03FD10508F4DBC18E0110651BC239
:1006D000C03880E5D80700F5C03790E5D90708F0A5
:1006E000A3C0C11520E5D20709F4ACC050F4CE0177
:1006F000905480319F4008F0C3C1DF708E01106AB2
:1007000002C2C13080E5D80709F4AAC0C43190E51F
:10071000D90708F4ABC0B4C1C33820E5D20709F447
:100720008EC050F4C13890E5D90709F482C008F0B2
:1007300083C000E011EDE7C1C03181E5D80708F4BE
:100740009FC1C11597E5D90708F432C1CE01905772
:100750008115904108F094C1DF708FC101E010E075
:10076000D2C1C53AD10509F490C1C63AD10509F004
:100770008FC102E810E4C7C1C83AD10509F48BC1A2
:10078000C93AD10509F48AC1CA3AD10509F489C127
:10079000CB3AD10509F488C1CC3AD10509F487C117
:1007A000CD3AD10509F486C1C03BD10509F485C114
:1007B000CE3AD10509F484C1CF3AD10509F483C1F9
:1007C000C13BD10509F482C1C23BD10509F481C105
:1007D000C33BD10509F480C1C43BD10509F47FC1F5
:1007E000C53BD10509F47EC1C63BD10509F47DC1E5
:1007F000C73BD10509F47CC1C83BD10509F47BC1D5
:10080000C93BD10509F47AC1CA3BD10509F479C1C4
:1008100000E014E478C1CE019F700E94230374C1EC
:10082000DD278E01106C6FC1CF70DD278E01146D36
:100830006AC100E010ED67C100E012ED64C100E0A4
:1008400013ED61C10E9412128FEF94E32CE08150EE
:1008500090402040E1F700C000000E94691953C198
:100860008091A20181608093A2014DC10E94131B5F
:10087000811102C00E94F41A0E94301B90E09093F4
:10088000B7018093B601C23080E5D80721F480918A
:10089000B601816086C0C43090E5D90721F480910B
:1008A000B60182607EC0C63020E5D20721F4809177
:1008B000B601846076C0C83080E5D80719F480910D
:1008C000B60127C0CA3090E5D90721F48091B6015E
:1008D000806167C0CC3020E5D20721F48091B60159
:1008E00080625FC0CE3080E5D80721F48091B601E8
:1008F000806457C0C03190E5D90721F48091B601DA
:1009000080684FC0C23120E5D20729F48091B6013A
:100910008460886046C0C33080E5D80721F48091A8
:10092000B6018E7F3EC0C53090E5D90721F4809195
:10093000B6018D7F36C0C73020E5D20721F4809103
:10094000B6018B7F2EC0C93080E5D80719F480919D
:10095000B60126C0CB3090E5D90721F48091B601CD
:100960008F7E1FC0CD3020E5D20721F48091B601E3
:100970008F7D17C0CF3080E5D80721F48091B60174
:100980008F7B0FC0C13190E5D90721F48091B6016A
:100990008F7707C0C331D04531F48091B6018B7F8A
:1009A000877F8093B6018091B6010E94341BABC053
:1009B0008D2F99278F70992781309105D9F49E0149
:1009C0002370332702C0880F991F2A95E2F79C688D
:1009D0008E0144E0000F111F4A95E1F700271370C4
:1009E000802B912B53E0CC0FDD1F5A95E1F7C07699
:1009F000DD272FC08230910531F4DC2FCC278E010A
:100A0000016F106A80C08330910569F4CE01837054
:100A1000992701E010E002C0000F111F8A95E2F74C
:100A2000C8019C680FC084309105B9F4CE01837071
:100A3000992701E010E002C0000F111F8A95E2F72C
:100A4000C8019A6823E0CC0FDD1F2A95E1F7C07E2C
:100A5000D7708C010C2B1D2B56C08530910531F4BD
:100A6000DC2FCC278E01046F106A4DC0069709F069
:100A70004AC0CF71DD27DC2FCC278E01106243C026
:100A800000E010E040C08E013EC001E810E43BC031
:100A900003E810E438C002EE14E435C009EE14E4B3
:100AA00032C00AEE14E42FC005EB14E42CC006EBB0
:100AB00014E429C007EB14E426C00CEC14E423C0B2
:100AC0000DEC14E420C003E815E41DC00AE815E4A9
:100AD0001AC002E915E417C004E915E414C001E2E4
:100AE00016E411C003E216E40EC004E216E40BC0E3
:100AF00005E216E408C006E216E405C007E216E4C3
:100B000002C00AE216E4C801DF91CF911F910F9154
:100B10000895E72FF0E096E0899FE00DF11D112484
:100B2000EE0FFF1FEE0FFF1FE60FF11DEE0FFF1F71
:100B3000E65EFE4F85919491803E9105E0F4803C05
:100B4000910558F58133910509F46FC048F4893255
:100B5000910509F463C08A32910509F46DC072C031
:100B600089339105E9F082389105D1F085339105FB
:100B700009F44DC067C0833E910581F138F4803E91
:100B80009105B9F0823E9105D9F05CC0863E910591
:100B900061F1873E9105A1F155C00E941B030895A4
:100BA0002091B60120FD02C021FF4CC080EE90E0F4
:100BB00049C08091B60180FFF9CF89E390E042C03F
:100BC0008091B60182FF0EC08091B60184FF03C000
:100BD00080E090E037C083EE90E034C08091B601B1
:100BE00082FFF2CF82EE90E02DC08091B60183FFAC
:100BF0000BC08091B60184FDEBCF87EE90E022C060
:100C00008091B60183FFF5CF86EE90E01BC0809106
:100C1000B60185FF07C089E290E014C08091B6015B
:100C200085FFF9CF85E390E00DC08091B60186FF86
:100C300007C08AE290E006C08091B60186FFF9CF36
:100C400081E390E00E942B0308950C949E01E82F0D
:100C5000F0E0E15FFE4F8081E82FEF70F0E08295D9
:100C60008F7021E030E0A90102C0440F551F8A9522
:100C7000E2F740A308950F931F93CF93DF9385B7B7
:100C8000806885BF85B7806885BFC3E0D0E001E09C
:100C900010E0FE01E15FFE4F8081E82FEF70F0E091
:100CA00021A182958F70A80102C0440F551F8A951B
:100CB000E2F7CA01822B81A38C2F0E94270621977D
:100CC00040F785E090E061E070E0FC01ED5EFE4FF2
:100CD0002081E22FEF70F0E042A122952F70DB011E
:100CE00002C0AA0FBB1F2A95E2F79D01242B22A365
:100CF000019758F7DF91CF911F910F910C94030347
:100D0000EF92FF920F931F93CF93DF930AE211E0CC
:100D1000C3E0EE24E394F12CD5E08C2F0E9427064B
:100D200085E090E040E0FC01ED5EFE4F5081E52F54
:100D3000EF70F0E020A130E052955F7002C0359571
:100D400027955A95E2F720FD07C09701082E01C0AC
:100D5000220F0A94EAF7422B019728F7F8018291B3
:100D60008F01841719F04083D09300018C2F0E94CB
:100D70002706C15090F68091000187FD1CC081506C
:100D8000809300018F3F39F08FE99FE00197F1F7E1
:100D900000C0000010C08091290180932D01809136
:100DA000280180932C018091270180932B01809151
:100DB000260180932A010E94050381E0DF91CF91F3
:100DC0001F910F91FF90EF90089591E001C0990F4E
:100DD0008A95EAF723E030E080E061E070E0F90115
:100DE000E65DFE4F4081492339F0AB01022E01C080
:100DF000440F0A94EAF7842B2150310980F70895B3
:100E00000895CF93DF93C5E0D0E08C2F0E94E506D4
:100E100090E00E948618D80FC150B8F78D2FDF914F
:100E2000CF91089580913E0108950895CF93DF9367
:100E300000D01F92CDB7DEB72091AD01243021F54F
:100E400023E029839B838A8381E08093E9008FEFED
:100E50009091E800815095FD06C095ED9A95F1F7C7
:100E600000008111F5CF8091E80085FF0DC040E0C2
:100E700050E063E070E0CE0101960E944809809145
:100E8000E8008E778093E8000F900F900F90DF912D
:100E9000CF910895CF93DF9300D01F92CDB7DEB7E7
:100EA0002091AD01243021F522E029839B838A83A0
:100EB00081E08093E9008FEF9091E800815095FDEB
:100EC00006C095ED9A95F1F700008111F5CF80915C
:100ED000E80085FF0DC040E050E063E070E0CE0127
:100EE00001960E9448098091E8008E778093E8007F
:100EF0000F900F900F90DF91CF910895CF93DF93D4
:100F00002091AD01243009F048C0EC0180910B0123
:100F10008823E1F080910C018823C1F082E0809366
:100F2000E9008FEF9091E800815095FD06C095E1B2
:100F30009A95F1F700008111F5CF8091E80085FFC7
:100F40002CC040E050E060E170E017C081E0809389
:100F5000E9008FEF9091E800815095FD06C095ED76
:100F60009A95F1F700008111F5CF8091E80085FF97
:100F700014C040E050E068E070E0CE010E944809F3
:100F80008091E8008E778093E80080E1FE01AEE278
:100F9000B1E001900D928A95E1F7DF91CF9108952C
:100FA0008091AC01811109C00E94DD0A0E943A0BB8
:100FB0008091E20084608093E20008951092AC0179
:100FC0000895089508950C94D11842E061EC81E0F1
:100FD0000E94570A42E161EC82E00C94570A80912A
:100FE000AF01833009F453C030F4813071F08230A6
:100FF00009F48CC008958A3009F478C08B3009F464
:101000005EC0893009F09AC020C08091AE01813A5B
:1010100009F094C08091E800877F8093E800809178
:10102000B2019091B301892B21F460E18EE291E04D
:1010300003C060E080E090E070E00E94930980913E
:10104000E8008B778093E80008958091AE018132AB
:1010500009F074C08091B2019091B301029708F039
:101060006DC08091E800877F8093E8008091E80060
:1010700082FD05C08091AD018111F8CF5FC08091E4
:10108000F10080933E018091E8008B7753C08091FE
:10109000AE01813A09F052C08091B2019091B30142
:1010A000892B09F04BC08091E800877F8093E8008E
:1010B0008091E80080FFFCCF80910B0136C08091C9
:1010C000AE018132D9F58091B2019091B301892BA3
:1010D000A9F58091E800877F8093E8000E948C0A40
:1010E0008091B00180930B010C9412128091AE019B
:1010F000813221F58091E800877F8093E8000E948B
:101100008C0A8091B10180933F0108958091AE01D6
:10111000813AA1F48091E800877F8093E800809174
:10112000E80080FFFCCF80913F018093F100809127
:10113000E8008E778093E8000C948C0A089584B7B9
:10114000877F84BF88E10FB6F89480936000109287
:1011500060000FBE90E080E80FB6F89480936100C5
:10116000909361000FBE0E94240E0E94DD0A0E942F
:101170003A0B8091E20084608093E20078940E94B0
:10118000C00D0E94260E81E091E00E94DB0D80914F
:10119000AD01853069F40E9492188091AB018823DB
:1011A000B1F30E94C018882391F30E943209EFCF57
:1011B0000E94320EECCF292F332723303105C9F09E
:1011C00064F42130310581F02230310509F042C04C
:1011D0008BE390E02AED31E041C021323105F1F09E
:1011E0002232310549F136C082E190E025E132E05A
:1011F00035C099278130910541F08230910541F049
:10120000892B41F5E6EDF1E005C0E6ECF1E002C026
:10121000EAEAF1E0849190E09F0120C0662339F072
:101220006130C1F489E090E025E032E017C089E048
:1012300090E02CEE31E012C0662339F0613051F4B9
:1012400089E390E027E232E009C08FE390E020E6F6
:1012500032E004C080E090E020E030E0FA01318329
:101260002083089580E189BD82E189BD09B400FE33
:10127000FDCF8091D8008F7D8093D8008091E000D1
:1012800082608093E0008091E00081FDFCCF0895B2
:10129000CF92DF92EF92FF920F931F93CF93DF9342
:1012A000EC018B016A010E94AB0A811133C0C114A9
:1012B000D10439F0F60180819181081B190BC80F08
:1012C000D91FE12CF12C0115110519F18091E800CD
:1012D00085FD16C08091E8008E778093E800C114E8
:1012E000D10449F0F60180819181E80EF91EF18266
:1012F000E08285E00FC00E94AB0A882321F30AC078
:1013000089918093F10001501109FFEFEF1AFF0A54
:10131000DACF80E0DF91CF911F910F91FF90EF9096
:10132000DF90CF9008952091B4013091B501261738
:10133000370748F06115710539F42091E8002E77E0
:101340002093E80001C0B90140E061157105A9F1E1
:101350002091AD01222309F443C0253009F442C095
:101360002091E80023FD40C02091E80022FD32C01A
:101370002091E80020FFE9CF4091F3002091F20096
:1013800030E0342BFC01CF016115710559F0283094
:10139000310540F481918093F100615071092F5F14
:1013A0003F4FF1CF41E02830310509F040E0209176
:1013B000E8002E772093E800C8CF4111C9CF0AC0BA
:1013C0008091AD01882361F0853061F08091E80063
:1013D00083FD0AC08091E80082FFF2CF80E008958B
:1013E00082E0089583E0089581E008952091B4019A
:1013F0003091B5012617370748F06115710539F4AA
:101400002091E8002E772093E80001C0B901FC018B
:1014100020E06115710591F18091AD01882309F4F7
:1014200040C0853009F43FC08091E80083FD3DC095
:101430008091E80082FD2FC08091E80080FFE9CF15
:101440002091F3008091F20090E0922B61157105DC
:1014500059F08830910540F424912093F1003196A1
:10146000615071090196F2CF21E0089709F020E060
:101470008091E8008E778093E800CBCF2111CCCF0C
:101480000AC08091AD01882361F0853061F08091C0
:10149000E80083FD0AC08091E80082FFF2CF80E07F
:1014A000089582E0089583E0089581E00895982FDB
:1014B000973058F59093E900981739F07091EC0047
:1014C0002091ED005091F00003C0242F762F50E0C2
:1014D00021FF19C03091EB003E7F3093EB0030913B
:1014E000ED003D7F3093ED003091EB0031603093A3
:1014F000EB007093EC002093ED005093F0002091EE
:10150000EE0027FF07C09F5FD3CF8F708093E90065
:1015100081E0089580E008958091AE0187FF11C0B9
:101520008091E80082FD05C08091AD018111F8CF66
:1015300011C08091E8008B770BC08091AD018823AA
:1015400049F08091E80080FFF8CF8091E8008E7725
:101550008093E80008952091E4003091E50095E63D
:101560004091EC00842F817040FF22C08091E80000
:1015700080FD1CC08091AD01882391F0853091F0F1
:101580008091EB0085FD10C04091E4005091E50092
:101590004217530729F39A01915011F784E00895F7
:1015A00082E0089583E0089581E0089580E0089541
:1015B0004091E80042FFDECF08950E944B0B0E944D
:1015C000530BE0EEF0E0808181608083E8EDF0E095
:1015D00080818F77808319BCA7EDB0E08C918E7FDE
:1015E0008C9380818F7E80831092AC0108950F933D
:1015F0001F93CF93DF930E944B0B0E94530BC8EDB8
:10160000D0E088818F77888388818068888388810B
:101610008F7D888319BC1092AD011092A9011092A0
:10162000AB011092AA0100EE10E0F80180818B7FDF
:10163000808388818160888342E060E080E00E944E
:10164000570AE1EEF0E080818E7F8083E2EEF0E0E9
:10165000808181608083808188608083F8018081BF
:101660008E7F8083888180618883DF91CF911F91F5
:101670000F910895E8EDF0E080818F7E8083E7EDA3
:10168000F0E080818160808384E082BF81E080938C
:10169000AC010C94F70AE8EDF0E080818E7F808346
:1016A0001092E20008951092DA001092E10008957D
:1016B0001F920F920FB60F9211242F933F934F93C7
:1016C0005F936F937F938F939F93AF93BF93EF93AA
:1016D000FF938091E10082FF0BC08091E20082FFC6
:1016E00007C08091E1008B7F8093E1000E94BF0DD5
:1016F0008091DA0080FF1FC08091D80080FF1BC05E
:101700008091DA008E7F8093DA008091D90080FF8B
:101710000DC080E189BD82E189BD09B400FEFDCF25
:1017200081E08093AD010E94D00705C019BC1092E2
:10173000AD010E94DE078091E10080FF19C0809119
:10174000E20080FF15C08091E2008E7F8093E2006E
:101750008091E20080618093E2008091D8008062F5
:101760008093D80019BC85E08093AD010E94E20708
:101770008091E10084FF30C08091E20084FF2CC0A2
:1017800080E189BD82E189BD09B400FEFDCF809171
:10179000D8008F7D8093D8008091E1008F7E809368
:1017A000E1008091E2008F7E8093E2008091E20070
:1017B00081608093E2008091A901882311F084E088
:1017C00007C08091E30087FD02C081E001C083E093
:1017D0008093AD010E94E3078091E10083FF29C05F
:1017E0008091E20083FF25C08091E100877F809394
:1017F000E10082E08093AD011092A9018091E100A7
:101800008E7F8093E1008091E2008E7F8093E200E2
:101810008091E20080618093E20042E060E080E03D
:101820000E94570A8091F00088608093F0000E9427
:10183000E107FF91EF91BF91AF919F918F917F91C0
:101840006F915F914F913F912F910F900FBE0F902D
:101850001F9018951F920F920FB60F9211242F937D
:101860003F934F935F936F937F938F939F93AF9328
:10187000BF93CF93DF93EF93FF93C091E900CF70B5
:101880008091EC00D82FD17080FDD0E81092E90053
:101890008091F000877F8093F00078940E946E0C16
:1018A0001092E9008091F00088608093F000CD2BC9
:1018B000CF70C093E900FF91EF91DF91CF91BF917D
:1018C000AF919F918F917F916F915F914F913F91D8
:1018D0002F910F900FBE0F901F9018951F93CF93CD
:1018E000DF93CDB7DEB7AA970FB6F894DEBF0FBE71
:1018F000CDBFEEEAF1E088E08E0F9091F100919378
:101900008E13FBCF0E94EF078091E80083FF1FC179
:101910008091AE019091AF01492F50E04A305105BE
:1019200008F015C1FA01EA5AFF4F0C94DE1C80380A
:1019300081F0823809F00BC18091B2018F708093E1
:10194000E9008091EB0085FB882780F91092E9007F
:1019500006C08091AA019091AB0191118260909193
:10196000E800977F9093E8008093F1001092F100D7
:10197000C8C0282F2D7F09F0EAC0882319F08230D3
:1019800061F0E5C08091B001813009F0E0C0933092
:1019900009F080E08093AB012BC08091B0018111F0
:1019A00027C08091B2018F7009F4D1C08093E90003
:1019B0002091EB0020FF1CC0933021F48091EB00BC
:1019C000806214C09091EB0090619093EB0021E055
:1019D00030E0A90102C0440F551F8A95E2F74093F9
:1019E000EA001092EA008091EB0088608093EB009F
:1019F0001092E9008091E800877F86C08111A7C01E
:101A00001091B0011F778091E3008078812B809343
:101A1000E3008091E800877F8093E8000E948C0AB1
:101A20008091E80080FFFCCF8091E3008068809384
:101A3000E300111102C082E001C083E08093AD0198
:101A400086C08058823008F082C08091B0019091A9
:101A5000B1018C3D53E0950779F583E08A838AE2F2
:101A600089834FB7F894DE01139620E03EE051E2FF
:101A7000E32FF0E050935700E49120FF03C0E2957C
:101A8000EF703F5FEF708E2F90E0EA3010F0C79656
:101A900001C0C0968D939D932F5F243149F74FBFAE
:101AA0008091E800877F8093E8006AE270E0CE01D1
:101AB00001960E94930914C0AE014F5F5F4F609181
:101AC000B2010E94DB08BC01009709F440C090916C
:101AD000E800977F9093E80089819A810E94F60937
:101AE0008091E8008B778093E80031C0803879F5E9
:101AF0008091E800877F8093E8008091A90180931E
:101B0000F1008091E8008E778093E8000E948C0AB3
:101B10001EC081111CC09091B0019230C0F4809120
:101B2000E800877F8093E8009093A9010E948C0AC7
:101B30008091A901811106C08091E30087FD02C058
:101B400081E001C084E08093AD010E94E5078091AF
:101B5000E80083FF0AC08091E800877F8093E80057
:101B60008091EB0080628093EB00AA960FB6F89408
:101B7000DEBF0FBECDBFDF91CF911F9108950895B5
:101B8000CF938091AD018823A1F0C091E900CF707F
:101B90009091EC00892F817090FD80E8C82B109205
:101BA000E9008091E80083FD0E946E0CCF70C09325
:101BB000E900CF91089590934501809344010895E1
:101BC000E0914401F0914501309721F00190F081BE
:101BD000E02D099480E00895E0914401F0914501E1
:101BE000309721F00280F381E02D0994089520912F
:101BF0004201309143018217930771F090934301A2
:101C000080934201E0914401F0914501309721F029
:101C10000680F781E02D09940895209140013091CC
:101C200041018217930771F0909341018093400125
:101C3000E0914401F0914501309721F00084F18555
:101C4000E02D0994089508950C94230E0E9405191F
:101C50000E943B060E94C7190E94471C81E08093A6
:101C60000C010895CF92DF92EF92FF920F931F9392
:101C7000CF93DF9300D000D000D0CDB7DEB70E9465
:101C8000800685E0E82EF12C0E2D8E2D0E94E506B3
:101C90009701295B3E4F6901F90110811827A9F4CA
:101CA000F1E0EF1AF10880F78FEF89838A831B82B6
:101CB0000E940E198160782F9D838C8349815A81FF
:101CC0006B818D810E94C00E32C09091A20191FF64
:101CD00004C08E830E9400078E8113FD09C012FD8F
:101CE0000AC011FD0BC010FFDBCF90E011E008C06F
:101CF00093E018E005C092E014E002C091E012E029
:101D000099830A83812391E009F490E09B830E94E8
:101D10000E198160782F9D838C8349815A816B8154
:101D20008D810E94C00EF6018081182710831091CA
:101D300046010E94E00D1817A1F00E94E00D80936B
:101D4000460126960FB6F894DEBF0FBECDBFDF91D9
:101D5000CF911F910F91FF90EF90DF90CF900C9457
:101D6000250626960FB6F894DEBF0FBECDBFDF91D5
:101D7000CF911F910F91FF90EF90DF90CF9008953A
:101D8000CF93DF93CDB7DEB72B970FB6F894DEBFB6
:101D90000FBECDBF4F83588769877A878B87DE0157
:101DA000119686E0FD0111928A95E9F785E0FE0122
:101DB000379601900D928A95E1F749815A816B819E
:101DC0007C818D819E810E94B0142B960FB6F89471
:101DD000DEBF0FBECDBFDF91CF910895CF93882393
:101DE00009F499C0C82F8CEF8C0F813A48F48C2FDE
:101DF0000E94051C81118FC08C2F0E948A170CC075
:101E000080E28C0F883058F4C77081E001C0880FE1
:101E1000CA95EAF70E941018CF910C9457188BE5D9
:101E20008C0F833078F4C53A29F0C63A31F083E854
:101E300090E005C081E890E002C082E890E0CF9198
:101E40000C94F70D88E58C0F833108F064C0C83A14
:101E500039F1C93A41F1CA3A49F1CB3A51F1CC3A98
:101E600059F1CD3A61F1C03B69F1CE3A71F1CF3A07
:101E700079F1C13B81F1C23B89F1C33B91F1C43B94
:101E800099F1C53BA1F1C63BA9F1C73BB1F1C83BF4
:101E9000B9F1C93BC1F1CA3BC9F180E090E038C05B
:101EA00082EE90E035C089EE90E032C08AEE90E09C
:101EB0002FC085EB90E02CC086EB90E029C087EB2B
:101EC00090E026C08CEC90E023C08DEC90E020C028
:101ED00083E891E01DC08AE891E01AC082E991E0B0
:101EE00017C084E991E014C081E292E011C083E25E
:101EF00092E00EC084E292E00BC085E292E008C05E
:101F000086E292E005C087E292E002C08AE292E0B7
:101F1000CF910C940D0ECF910895882329F19CEF59
:101F2000980F913A18F40E94CC170DC090E2980FC8
:101F3000983058F4877091E001C0990F8A95EAF7BC
:101F4000892F0E9416180C9457189BE5980F933010
:101F500020F480E090E00C94F70D885A833120F44F
:101F600080E090E00C940D0E0895882321F00E94EB
:101F700010180C9457180895882321F00E94161801
:101F80000C94571808957F928F929F92AF92BF92B0
:101F9000CF92DF92EF92FF920F931F93CF93DF9335
:101FA0001F92CDB7DEB77C01C62E772EFC010581CE
:101FB00002950F70128111110E942D180E94831733
:101FC000882379F0112369F080E28C0D883048F085
:101FD00082E00E946C170E94831791E0D82ED926C8
:101FE00001C0D12CE72DE295EF70F0E0E05AFF4FF1
:101FF0000C94DE1C872D807F072D0F70882311F035
:102000000295007F112389F0002309F46EC180E25C
:102010008C0D883020F4802F0E94101803C0802F70
:102020000E9420180E94571860C18C2D0E948D0FAD
:10203000002309F498C180E28C0D883020F4802FB1
:102040000E94161803C0802F0E9426180E9457185D
:102050008AC1872D807F972D9F70803211F4892F40
:1020600003C0892F8295807FCC2021F0F1E0CF162C
:10207000A1F01DC0112339F0002319F1013009F539
:102080000E94401870C1002319F0013009F46BC19F
:1020900089830E9443188981E5C0112321F006300D
:1020A00008F061C10EC0053008F05DC1DBC011232E
:1020B00059F0002331F0F701958190FF16C19F7010
:1020C00095830E94B50F4FC1002309F4CBC013C103
:1020D000872D837009F052C0111145C18C2D829556
:1020E00086958770880F880F9C2D9F70892E912C64
:1020F000A12CB12C082E04C0880C991CAA1CBB1C56
:102100000A94D2F7C4FE14C00FE010E020E030E0E3
:10211000B901A80104C0440F551F661F771F8A9597
:10212000D2F7CB01BA01609570958095909503C068
:1021300060E070E0CB01272D26952695237030E0D6
:102140002230310569F02330310589F06829792979
:102150008A299B292130310571F00E94F81503C1AD
:10216000682979298A299B290E941416FCC00E949B
:10217000F815C501B4010E94DC15F5C0112319F052
:10218000872D817001C08695882309F4ECC08C2DC1
:10219000829586958770880F880F9C2D9F70892E59
:1021A000912CA12CB12C082E04C0880C991CAA1CBF
:1021B000BB1C0A94D2F7C4FE14C00FE010E020E06C
:1021C00030E0B901A80104C0440F551F661F771FF6
:1021D0008A95D2F7CB01BA0160957095809590955C
:1021E00003C060E070E0CB01272D26952695237073
:1021F000422F50E04230510569F04330510589F0DB
:10220000682979298A299B294130510571F00E945A
:10221000D216A9C0682979298A299B290E94EE161D
:10222000A2C00E94D216C501B4010E94B6169BC07E
:102230008C2D90E0FC01E05EF109E531F10508F03C
:1022400050C0E059FF4F0C94DE1C0C2D0F70872DF1
:102250008F71112321F00E944F16802F32CF0E94E0
:102260007016802F0E94BC0F7EC0112341F00530F4
:1022700008F079C0872D8F710E94951674C00630C2
:1022800008F071C0F7CF112339F0872D8F710E94AC
:102290004F1669C01123C9F3872D8F710E947016E4
:1022A00062C0112329F0872D8F710E943A165BC0FE
:1022B0000E94301658C0112351F0172D1F71812F25
:1022C0000E944F1663E0812F0E9463174CC081E08B
:1022D0000E946C17023008F446C082E00E946C171E
:1022E00042C0112331F0002381F28C2D0E94EE0EAA
:1022F0003AC0002389F28C2D0E948D0F34C0472DE7
:102300004F706C2DC7010E94E2010E9454152BC032
:10231000111129C0472D4F7050E042305105B9F0DE
:102320004CF44115510581F041305105E1F40E9412
:102330006F1C19C04330510569F04430510599F4C0
:102340008C2D0E94C11C0FC00E94581C0CC00E9402
:102350008B1C09C00E949E1C06C0472D4F706C2D1F
:10236000C7010E94E101DD20F9F00E945F1780FDA6
:102370001BC0F70112820E9459170E944F16C70115
:102380000E94E3110E9459170F90DF91CF911F9186
:102390000F91FF90EF90DF90CF90BF90AF909F9004
:1023A0008F907F900C9470160F90DF91CF911F91BA
:1023B0000F91FF90EF90DF90CF90BF90AF909F90E4
:1023C0008F907F9008950F931F93CF93DF93EC012D
:1023D000888199812B813C81232BB9F09F3F11F497
:1023E0008F3F99F0CE010E945B02882371F06881D3
:1023F00079818A810E9455178C010E940A170E94D8
:10240000D115B801CE010E94C30FDF91CF911F916A
:102410000F9108950E942D180E943D180E940218E5
:102420000C9457180E941D180C940A120E944A1707
:10243000292F22952F7030E02C3031054CF42A30B2
:1024400031056CF42250310922303105A8F407C05F
:102450002C30310569F02F30310551F00DC0803F2F
:1024600069F018F4803E40F409C0843F29F406C0A6
:1024700093FB882780F9089580E0089581E008950E
:10248000CF93DF9300D000D01F92CDB7DEB70F906F
:102490000F900F900F900F90DF91CF910895CF93F1
:1024A000DF9300D000D000D0CDB7DEB726960FB6B0
:1024B000F894DEBF0FBECDBFDF91CF9108951F937B
:1024C000CF93DF93C0914D0116E080914E01C81764
:1024D00099F0D0E01C9FF0011D9FF00D1124E15BED
:1024E000FE4F4081518162817381848195810E9478
:1024F0004F122196C770E9CFDF91CF911F910895B8
:1025000040917F0150918001609181017091820121
:1025100080918301909184010C944F1280918401E9
:1025200082958F7009F054C080918101882309F44D
:102530004FC080914D01A0914E0160917F0170913B
:1025400080014091820150918301B6E08A1709F41D
:102550003FC090E041155105C1F17F3F11F46F3F3D
:10256000A1F1B89FF001B99FF00D1124E15BFE4F7E
:10257000218172132AC02081621327C02281211178
:1025800024C0238134812417350710F421503109E8
:10259000241B350B283C3105C0F4209184012F7099
:1025A00020612093840126E0289FF001299FF00DEF
:1025B0001124EC5AFE4F80818F70806180838FE7F9
:1025C00091E00E94E3110C945F1201968770BECFD8
:1025D0000895CF92DF92EF92FF920F931F93CF93C4
:1025E000DF93CDB7DEB762970FB6F894DEBF0FBEAC
:1025F000CDBF8C0185E0F801DE011D9601900D92A2
:102600008A95E1F7D8014C9111965C911197129639
:102610006C9112971396CD90DC90149730917F01B6
:10262000709180018091820190918301009709F45B
:102630006BC17F3F19F43F3F09F466C1E09081010F
:10264000EE2009F4C0C020918401C816D90628F0F4
:10265000F601E81BF90BCF0104C0809590958C0D15
:102660009D1DFF24F394883C910578F0F12C207F88
:1026700009F0C6C07C2DD98AC88A89890E94401277
:102680008FE791E00E94E311B1C0822F807F09F0B3
:1026900046C0751314C0341312C0611110C02F70DE
:1026A0002061209384010E9480128FE791E00E94B4
:1026B000E31180918401D80115968C932EC0CD280A
:1026C00019F15F3F11F44F3FF9F0F62E61111CC074
:1026D00080914D0120914E0136E0821709F45AC0D5
:1026E00090E0389FF001399FF00D1124E15BFE4F1F
:1026F0007181571306C07081471303C07281711135
:1027000003C001968770E9CFF62E662309F418C13D
:1027100080918401816080938401F12C11C1751333
:1027200008C0341306C0611104C080918401D8012F
:10273000C3C04D875E878D859E856A8B0E94161269
:102740006A898823E1F16623D1F120918401822FE7
:1027500082958F7090E0029774F080917F01909144
:10276000800198878F831986DB86CA862C87CE01E5
:1027700007960E94E31186E0F801AFE7B1E001900F
:102780000D928A95E1F70E948E120E948012FF241A
:10279000F394D6C04D875E878D859E850E944A172B
:1027A000292F22952F7030E0223031050CF0BCC06B
:1027B0009F7009F0B6C0805E883008F4C1C0C801BF
:1027C0000E94E311E4CFC816D90608F453C0F601FD
:1027D000E81BF90BCF01883C910508F450C0F12C9F
:1027E0007C2DD98AC88A89890E944012EFE7F1E0DE
:1027F00086E0DF011D928A95E9F70E948012A0C051
:10280000751314C0341312C0611110C0809184017B
:10281000F8018583C8010E94E31186E0EFE7F1E04B
:10282000DF011D928A95E9F7FE2C8AC04D875E87ED
:102830008D859E856A8B0E9416126A89882309F409
:10284000BECF662309F4BBCF20918401822F8295ED
:102850008F7090E002970CF48ECF80917F01909161
:1028600080019A8389831B82DD82CC822E83CE01F4
:1028700001967FCF809590958C0D9D1DACCFF62E47
:10288000662309F49CCF75132EC034132CC02091FD
:10289000840120FD1FC0822F82958F70D9F0D8014E
:1028A00015962C9315978F3049F08F5F982F92953E
:1028B000907F822F8F70892B15968C93C8010E9470
:1028C000E31186E0F801AFE7B1E001900D928A953F
:1028D000E1F793CF86E0F801AFE7B1E001900D9208
:1028E0008A95E1F72DC04D875E878D859E850E9474
:1028F0001612811140CF8091840181608093840100
:10290000C8010E94E3111CC0662309F458CF4D870B
:102910005E878D859E850E941612882309F44FCF0D
:102920002ACF811148CF0CC0243031050CF047CF9D
:102930009F7009F440CFF8019581907F09F03BCF5B
:102940008F2D62960FB6F894DEBF0FBECDBFDF911C
:10295000CF911F910F91FF90EF90DF90CF9008954E
:102960001F93CF93DF93CDB7DEB72C970FB6F894B4
:10297000DEBF0FBECDBF4F83588769877A878B87AD
:102980009C87CE0107960E94E912882369F08F8107
:1029900098852A853B85232BF1F19F3F09F063C081
:1029A0008F3F09F060C037C086E0FE013796DE0138
:1029B000119601900D928A95E1F76F817885EA85ED
:1029C000FB85309741F17F3F11F46F3F21F120915A
:1029D0004E0130E0C90101968770992740914D0161
:1029E00050E08417950709F447C069837A83FD8313
:1029F000EC8396E0929FD001939FB00D1124A15BD0
:102A0000BE4FFE01319601900D929A95E1F78093A9
:102A10004E010E945F1216E080914D0190914E018F
:102A20008917C1F1189FC0011124815B9E4F0E943C
:102A3000E912882379F1E0914D011E9FF0011124E4
:102A4000E15BFE4F40815181628173818481958178
:102A50000E944F1280914D0190E001968770992756
:102A600080934D01D9CF4F81588569857A858B85B3
:102A70009C850E944F12CFCF0E94121210924E01DD
:102A800010924D01EFE7F1E086E0DF011D928A959B
:102A9000E9F7C1CF2C960FB6F894DEBF0FBECDBFBD
:102AA000DF91CF911F910895EF92FF920F931F93A3
:102AB000CF93DF938C01009709F46CC0F12CEE24C6
:102AC000E394E8012196F8018491843740F484303E
:102AD00008F051C0813081F0823019F15BC0853738
:102AE00009F444C0A8F19CE7980F903708F052C051
:102AF0008F770E948D0F41C00E5F1F4FFE01C49162
:102B000080E28C0F883048F4C7708E2D01C0880F8A
:102B1000CA95EAF70E94301814C08C2F0E94EE0E5E
:102B20002DC00E5F1F4FFE01C49180E28C0F8830D4
:102B300058F4C7708E2D01C0880FCA95EAF70E941D
:102B400036180E9457181AC08C2F0E948D0F16C07D
:102B50000E5F1F4FFE01C491CC2381F08FE99FE0EF
:102B60000197F1F700C00000C150F6CF0E5F1F4F74
:102B7000FE01F49003C00E94EE0E8E018F2D88237B
:102B800009F49FCFEFE9FFE03197F1F700C00000B3
:102B90008150F5CFDF91CF911F910F91FF90EF9072
:102BA000089508956093890170938A0180938B0141
:102BB00090938C010C940A120F931F93009189013A
:102BC00010918A0120918B0130918C01DC01CB01A5
:102BD000802B912BA22BB32B8093890190938A0198
:102BE000A0938B01B0938C011F910F910C940A124A
:102BF0000F931F930091890110918A0120918B01FD
:102C000030918C01DC01CB0180239123A223B323DB
:102C10008093890190938A01A0938B01B0938C01DA
:102C20001F910F910C940A120F931F930091890129
:102C300010918A0120918B0130918C01DC01CB0134
:102C400080279127A227B3278093890190938A0137
:102C5000A0938B01B0938C011F910F910C940A12D9
:102C600010928501109286011092870110928801BE
:102C70000C940A1241E050E060E070E004C0440FA0
:102C8000551F661F771F8A95D2F740938501509391
:102C9000860160938701709388010C940A1241E0C9
:102CA00050E060E070E004C0440F551F661F771FBE
:102CB0008A95D2F78091850190918601A091870134
:102CC000B0918801482B592B6A2B7B2B40938501AF
:102CD0005093860160938701709388010C940A12C7
:102CE00041E050E060E070E004C0440F551F661FF3
:102CF000771F8A95D2F74095509560957095809191
:102D0000850190918601A0918701B09188014823A7
:102D100059236A237B234093850150938601609356
:102D20008701709388010C940A1241E050E060E042
:102D300070E004C0440F551F661F771F8A95D2F7B5
:102D40008091850190918601A0918701B0918801C1
:102D5000482759276A277B2740938501509386018E
:102D600060938701709388010C940A120F931F934C
:102D70000091850110918601209187013091880191
:102D8000DC01CB01802B912BA22BB32B80938501EF
:102D900090938601A0938701B09388011F910F91B2
:102DA0000C940A120F931F930091850110918601D4
:102DB0002091870130918801DC01CB018023912390
:102DC000A223B3238093850190938601A09387016A
:102DD000B09388011F910F910C940A120F931F93C7
:102DE0000091850110918601209187013091880121
:102DF000DC01CB0180279127A227B327809385018F
:102E000090938601A0938701B09388011F910F9141
:102E10000C940A120895CF92DF92EF92FF920F93D3
:102E20001F93CF93DF938C01C0908901D0908A01CA
:102E3000E0908B01F0908C0180918501909186014A
:102E4000A0918701B0918801C82AD92AEA2AFB2AD1
:102E5000CFE1D0E0D701C6010C2E04C0B695A795EE
:102E6000979587950A94D2F780FF06C0B8018C2FFA
:102E70000E948905019721F4219760F780E001C045
:102E80008C2FDF91CF911F910F91FF90EF90DF90EA
:102E9000CF900895CF93DF93EC010E940B17BE01F2
:102EA0000E948905DF91CF910895CB010E944A17B6
:102EB000089580918D0185958595859508958091DA
:102EC0008D018770089598E0899F90011124262B29
:102ED00020938D010C944F1620918D0180958223B3
:102EE00080938D01982F977069F430E0482F552713
:102EF00047FD50952417350729F0859585958595CB
:102F00000C947016089590918D01977081E009F4EA
:102F100080E0089590910B01992321F090910C018C
:102F2000911109C020910D0130910E01F9013296E5
:102F30009FEF40E01FC0982F9695969596959F30ED
:102F400050F5E0910D01F0910E01E90FF11D877030
:102F500021E030E0A90102C0440F551F8A95E2F735
:102F6000CA019181892B818308959F3F39F04F5F7A
:102F70004E3041F051915813F8CF0DC05111F7CF99
:102F8000942FF5CF9F3F39F0F901E90FF11D97FD1F
:102F9000FA9582830895089590910B01992321F069
:102FA00090910C01911109C020910D0130910E01F9
:102FB000F9013296205F3F4F1FC0982F9695969546
:102FC00096959F30F0F4E0910D01F0910E01E90F1C
:102FD000F11D877021E030E0A90102C0440F551FA8
:102FE0008A95E2F7CA0180959181892381830895AA
:102FF0003196E217F30729F090819813F9CF1082E8
:10300000F7CF089581E090E0E0910D01F0910E017D
:10301000E80FF91F1082019680319105A9F70895F4
:103020009091A101892B8093A101089580959091A1
:10303000A10189238093A10108951092A10108950F
:103040009091A001892B8093A00108958095909183
:10305000A00189238093A00108951092A0010895F2
:1030600090919F01892B80939F0108958095909165
:103070009F01892380939F01089510929F010895D5
:1030800080938E01089510928E01089580910D0114
:1030900090910E01FC0131969C01205F3F4F80E032
:1030A000919191118F5FE217F307D1F70895E091A5
:1030B0000D01F0910E018091A1018083E0910D013D
:1030C000F0910E0190818091A001892B8083E09185
:1030D0000D01F0910E01908180919F01892B8083D9
:1030E00080918E01882361F0E0910D01F0910E0135
:1030F0009081892B80830E944618811110928E0145
:1031000080910D0190910E010C94EC0D20E0009740
:1031100039F0AC0141505109842395232F5FF7CF3B
:10312000822F08958091AD01843039F11092A3016E
:1031300020E488E190E00FB6F894A89580936000B1
:103140000FBE2093600080E00E94B40180E00E94E6
:10315000250683B7817F846083BF83B7816083BF87
:103160007894889583B78E7F83BF88E10FB6F894F3
:1031700080936000109260000FBE08950895089536
:1031800080E00E94B4010E94BE180E9480060E9446
:10319000BF180E94010791E0811101C090E0892FC2
:1031A00008950E94121280E00E94B4010E94471C00
:1031B0000E94E00D0C9425061F920F920FB60F92FD
:1031C00011248F939F93AF93BF938091A30181119B
:1031D00013C08091A4019091A501A091A601B09186
:1031E000A7014196A11DB11D8093A4019093A50153
:1031F000A093A601B093A701BF91AF919F918F912A
:103200000F900FBE0F901F90189582E084BD93E041
:1032100095BD9AEF97BD80936E0008952FB7F894EF
:103220008091A4019091A501A091A601B091A70160
:103230002FBF0895CF92DF92EF92FF920F931F93CB
:103240002FB7F8944091A4015091A5016091A60177
:103250007091A7012FBF6A017B01EE24FF248C012E
:1032600020E030E0C016D106E206F30610F441502B
:1032700051099A01281B390BC9011F910F91FF9029
:10328000EF90DF90CF9008951F920F920FB60F929C
:1032900011248F939F93AF93BF938091A40190913A
:1032A000A501A091A601B091A7010196A11DB11D94
:1032B0008093A4019093A501A093A601B093A701C8
:1032C000BF91AF919F918F910F900FBE0F901F9064
:1032D00018950E94DD0AF8942FEF87EA91E62150B5
:1032E00080409040E1F700C0000087E090EBDC01F7
:1032F0008093B8019093B901A093BA01B093BB0138
:103300009CE088E10FB6F894A895809360000FBE0A
:1033100090936000FFCFEF92FF920F931F93CF9394
:10332000DF93D82FC5E08C2F0E94E50603E010E064
:10333000E82EF12CC701002E02C0959587950A94BE
:10334000E2F780FF09C0602F7C2F80E00E94070316
:10335000D81302C081E006C00150110958F7C150CE
:1033600010F780E0DF91CF911F910F91FF90EF90C8
:103370000895CF93C82F8CE20E948B19882321F0E7
:103380008C2FCF910C948B1980E0CF910895CF931F
:103390000E94131B811102C00E94F41AC5E6C1509D
:1033A00049F00E9480068FE39CE90197F1F700C085
:1033B0000000F5CF89E20E94B919811113C18AE298
:1033C0000E94B91981110E94F41A85E00E94B9196E
:1033D00081110E9469190E941E1B8093A20187E03F
:1033E0000E94B9198823A9F18BE10E94B919882399
:1033F00051F08091A20181FB222720F991E09227D0
:1034000090FB81F90EC08EE00E94B919882361F00B
:103410008091A20182FB222720F991E0922790FB64
:1034200082F98093A20115C080E10E94B9199091A0
:10343000A201882341F093FB222720F981E0822713
:1034400080FB93F904C0892F809580FB90F99093BD
:10345000A2018091A2010E94221B0E94301B809336
:10346000B60180EE0E94B919882341F08091B6011F
:10347000982F909590FB80F98093B60189E30E9484
:10348000B919882359F08091B60181FB222720F9D0
:1034900091E0922790FB81F98093B60182EE0E9421
:1034A000B919882359F08091B60182FB222720F9AF
:1034B00091E0922790FB82F98093B60186EE0E94FC
:1034C000B919882359F08091B60183FB222720F98E
:1034D00091E0922790FB83F98093B60183EE0E94DE
:1034E000B919882359F08091B60184FB222720F96D
:1034F00091E0922790FB84F98093B60185E30E94C6
:10350000B919882359F08091B60185FB222720F94B
:1035100091E0922790FB85F98093B60181E30E94A8
:10352000B919882359F08091B60186FB222720F92A
:1035300091E0922790FB86F98093B60181E10E9489
:10354000B919882359F08091B60187FB222720F909
:1035500091E0922790FB87F98093B6018091B601A4
:103560000E94341B8091B60187FB882780F98093E5
:103570000C0187E20E94B919C82F8EE10E94B91987
:103580008111C2608FE10E94B9198111C46080E28B
:103590000E94B9198111C86081E20E94B919811194
:1035A000C06182E20E94B9198111C06283E20E9467
:1035B000B9198111C06484E20E94B919882311F0FD
:1035C000C06802C0CC2329F08C2F0E942B1B6C2FCB
:1035D00003C00E94271B682F70E080E090E0CF912D
:1035E0000C94D215CF9108956DEE7EEF80E090E0BF
:1035F0000E94041D60E082E090E00E94F21C60E006
:1036000083E090E00E94F21C60E084E090E00E9481
:10361000F21C60E085E090E00E94F21C60E086E031
:1036200090E00C94F21C80E090E00E94EC1C21E001
:103630008D3E9E4F09F020E0822F089582E090E0B9
:103640000C94E41C682F82E090E00C94F21C83E060
:1036500090E00C94E41C682F83E090E00C94F21C42
:1036600084E090E00C94E41C682F84E090E00C94DB
:10367000F21C86E090E00C94E41C682F86E090E059
:103680000C94F21C0F931F938B3109F475C0A0F5B5
:103690008E3009F484C0C0F4873009F45BC068F44C
:1036A000863009F0AAC08091A201817F8E7F80932D
:1036B000A20181E08093A801A1C0883009F496C0DE
:1036C0008B3009F493C099C0813109F472C068F459
:1036D000803109F092C08091A20183FB222720F95A
:1036E00091E0922790FB83F950C0863109F47EC0A7
:1036F000893109F47BC081C0853309F479C068F44D
:10370000873209F475C028F48E3108F476C08D51E3
:103710005AC0893209F46CC070C0833438F48A33DB
:1037200008F050C0883309F461C067C0833409F4DD
:103730005FC0883409F061C00E9412120FEF13EDD0
:1037400020E3015010402040E1F700C000000E943B
:1037500069194CC09091A201892F8095817080FBDE
:1037600090F929F0966098609093A20147C0997FE4
:10377000977F9093A2013AC08091A20181FB2227FA
:1037800020F991E0922790FB81F98093A20199237F
:1037900069F18091A20181608093A20127C080918C
:1037A000A20182FB222720F991E0922790FB82F967
:1037B000ECCF0E94121290910C0181E08927809336
:1037C0000C0114C0895341E050E060E070E08A01D0
:1037D0009B0104C0000F111F221F331F8A95D2F7CF
:1037E000C901B8010E94D2150E94121281E006C0E0
:1037F00061E070E080E090E0F5CF80E01F910F91F4
:10380000089580E0089580E00895CF93C82F8091B7
:10381000A801882319F0813049F031C0E0910D01F1
:10382000F0910E018081823261F507C0E0910D01B7
:10383000F0910E018081823261F48C2F0E94011C74
:10384000811104C08C2F0E94421B17C081E090E0C0
:1038500014C08C2F0E94031C81110EC0C43149F08A
:1038600018F4CB3049F00FC0C93219F0C83321F039
:103870000AC01092A80107C081E0817006C01092B2
:10388000A80180E002C080E0F8CFCF9108950E94A7
:10389000131B811102C00E94F41A0E94391B8093ED
:1038A000B70180FF02C0869501C080E00C94B4018E
:1038B0008091B701982F9695292F30E0233031055C
:1038C0004CF49F5F990F8170892B81608093B701C1
:1038D0000E943D1B8091B70186950C94B4018091A4
:1038E000B701982F969591F09158990F8170892B77
:1038F0008093B7018E7F91E009F490E08091B70149
:1039000090FB80F98093B7010E943D1B8091B70125
:1039100086950C94B4018091B701982F909590FBF7
:1039200080F98093B7010E943D1B8091B70180FF11
:1039300002C0869501C080E00C94B4019091B7015B
:10394000892F86958F5F8F779170843028F4880F48
:10395000892B8093B70102C09093B7018091B70182
:103960008E7F91E009F490E08091B70190FB80F99F
:103970008093B7010E943D1B8091B70186950C94FE
:10398000B4012091B701922F96958927982F990F0E
:10399000822F8170892B8093B7018E7F91E009F48B
:1039A00090E08091B70190FB80F98093B7010E946D
:1039B0003D1B8091B70186950C94B401EE0FFF1F5B
:1039C0000590F491E02D0994F999FECF92BD81BD47
:1039D000F89A992780B50895A8E1B0E042E050E058
:1039E0000C940C1D262FF999FECF92BD81BDF89A3B
:1039F000019700B4021639F01FBA20BD0FB6F89433
:103A0000FA9AF99A0FBE08950196272F0E94F31C87
:103A10000C94F21CDC01CB01FC01F999FECF06C02D
:103A2000F2BDE1BDF89A319600B40D92415050407C
:083A3000B8F70895F894FFCFE8
:103A3800FF12077E0715074A07160701018F0103C2
:0A3A48001323330F1F4F5F6F7F0041
:00000001FF

+ 2
- 0
keyboards/arrow_pad/keymaps/pad_24/config.h View File

@ -46,6 +46,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { B0, B1, B2, B3 }
#define UNUSED_PINS
#define BACKLIGHT_PIN B7
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL


keyboards/arrow_pad/README.md → keyboards/arrow_pad/readme.md View File

@ -3,7 +3,7 @@ arrow_pad keyboard firmware
## Quantum MK Firmware
For the full Quantum feature list, see [the parent README.md](/README.md).
For the full Quantum feature list, see [the parent readme.md](/readme.md).
## Building
@ -15,7 +15,7 @@ Depending on which keymap you would like to use, you will have to compile slight
To build with the default keymap, simply run `make`.
### Other Keymaps
Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` in the keymaps folder, and see keymap document (you can find in top README.md) and existent keymap files.
Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` in the keymaps folder, and see keymap document (you can find in top readme.md) and existent keymap files.
To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like:
```

+ 1
- 311
keyboards/atomic/atomic.c View File

@ -1,26 +1,5 @@
#include "atomic.h"
__attribute__ ((weak))
void matrix_init_user(void) {
// leave this function blank - it can be defined in a keymap file
};
__attribute__ ((weak))
void matrix_scan_user(void) {
// leave this function blank - it can be defined in a keymap file
}
__attribute__ ((weak))
bool process_action_user(keyrecord_t *record) {
// leave this function blank - it can be defined in a keymap file
return true;
}
__attribute__ ((weak))
void led_set_user(uint8_t usb_led) {
// leave this function blank - it can be defined in a keymap file
}
void matrix_init_kb(void) {
// put your keyboard start-up code here
// runs once when the firmware starts up
@ -28,298 +7,9 @@ void matrix_init_kb(void) {
MCUCR |= (1<<JTD);
MCUCR |= (1<<JTD);
#ifdef BACKLIGHT_ENABLE
backlight_init_ports();
#endif
// Turn status LED on
DDRE |= (1<<6);
PORTE |= (1<<6);
matrix_init_user();
}
void matrix_scan_kb(void) {
// put your looping keyboard code here
// runs every cycle (a lot)
matrix_scan_user();
}
bool process_action_kb(keyrecord_t *record) {
// put your per-action keyboard code here
// runs for every action, just before processing by the firmware
return process_action_user(record);
}
void led_set_kb(uint8_t usb_led) {
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
led_set_user(usb_led);
}
#ifdef BACKLIGHT_ENABLE
#define CHANNEL OCR1C
#define BREATHING_NO_HALT 0
#define BREATHING_HALT_OFF 1
#define BREATHING_HALT_ON 2
static uint8_t breath_intensity;
static uint8_t breath_speed;
static uint16_t breathing_index;
static uint8_t breathing_halt;
void backlight_init_ports()
{
// Setup PB7 as output and output low.
DDRB |= (1<<7);
PORTB &= ~(1<<7);
// Use full 16-bit resolution.
ICR1 = 0xFFFF;
// I could write a wall of text here to explain... but TL;DW
// Go read the ATmega32u4 datasheet.
// And this: http://blog.saikoled.com/post/43165849837/secret-konami-cheat-code-to-high-resolution-pwm-on
// Pin PB7 = OCR1C (Timer 1, Channel C)
// Compare Output Mode = Clear on compare match, Channel C = COM1C1=1 COM1C0=0
// (i.e. start high, go low when counter matches.)
// WGM Mode 14 (Fast PWM) = WGM13=1 WGM12=1 WGM11=1 WGM10=0
// Clock Select = clk/1 (no prescaling) = CS12=0 CS11=0 CS10=1
TCCR1A = _BV(COM1C1) | _BV(WGM11); // = 0b00001010;
TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001;
backlight_init();
breathing_defaults();
}
void backlight_set(uint8_t level)
{
// Prevent backlight blink on lowest level
PORTB &= ~(_BV(PORTB7));
if ( level == 0 )
{
// Turn off PWM control on PB7, revert to output low.
TCCR1A &= ~(_BV(COM1C1));
// Set the brightness to 0
CHANNEL = 0x0;
}
else if ( level >= BACKLIGHT_LEVELS )
{
// Turn on PWM control of PB7
TCCR1A |= _BV(COM1C1);
// Set the brightness to max
CHANNEL = 0xFFFF;
}
else
{
// Turn on PWM control of PB7
TCCR1A |= _BV(COM1C1);
// Set the brightness
CHANNEL = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2));
}
breathing_intensity_default();
}
void breathing_enable(void)
{
if (get_backlight_level() == 0)
{
breathing_index = 0;
}
else
{
// Set breathing_index to be at the midpoint (brightest point)
breathing_index = 0x20 << breath_speed;
}
breathing_halt = BREATHING_NO_HALT;
// Enable breathing interrupt
TIMSK1 |= _BV(OCIE1A);
}
void breathing_pulse(void)
{
if (get_backlight_level() == 0)
{
breathing_index = 0;
}
else
{
// Set breathing_index to be at the midpoint + 1 (brightest point)
breathing_index = 0x21 << breath_speed;
}
breathing_halt = BREATHING_HALT_ON;
// Enable breathing interrupt
TIMSK1 |= _BV(OCIE1A);
}
void breathing_disable(void)
{
// Disable breathing interrupt
TIMSK1 &= ~_BV(OCIE1A);
backlight_set(get_backlight_level());
}
void breathing_self_disable(void)
{
if (get_backlight_level() == 0)
{
breathing_halt = BREATHING_HALT_OFF;
}
else
{
breathing_halt = BREATHING_HALT_ON;
}
//backlight_set(get_backlight_level());
}
void breathing_toggle(void)
{
if (!is_breathing())
{
if (get_backlight_level() == 0)
{
breathing_index = 0;
}
else
{
// Set breathing_index to be at the midpoint + 1 (brightest point)
breathing_index = 0x21 << breath_speed;
}
breathing_halt = BREATHING_NO_HALT;
}
// Toggle breathing interrupt
TIMSK1 ^= _BV(OCIE1A);
// Restore backlight level
if (!is_breathing())
{
backlight_set(get_backlight_level());
}
}
bool is_breathing(void)
{
return (TIMSK1 && _BV(OCIE1A));
}
void breathing_intensity_default(void)
{
//breath_intensity = (uint8_t)((uint16_t)100 * (uint16_t)get_backlight_level() / (uint16_t)BACKLIGHT_LEVELS);
breath_intensity = ((BACKLIGHT_LEVELS - get_backlight_level()) * ((BACKLIGHT_LEVELS + 1) / 2));
}
void breathing_intensity_set(uint8_t value)
{
breath_intensity = value;
}
void breathing_speed_default(void)
{
breath_speed = 4;
}
void breathing_speed_set(uint8_t value)
{
bool is_breathing_now = is_breathing();
uint8_t old_breath_speed = breath_speed;
if (is_breathing_now)
{
// Disable breathing interrupt
TIMSK1 &= ~_BV(OCIE1A);
}
breath_speed = value;
if (is_breathing_now)
{
// Adjust index to account for new speed
breathing_index = (( (uint8_t)( (breathing_index) >> old_breath_speed ) ) & 0x3F) << breath_speed;
// Enable breathing interrupt
TIMSK1 |= _BV(OCIE1A);
}
}
void breathing_speed_inc(uint8_t value)
{
if ((uint16_t)(breath_speed - value) > 10 )
{
breathing_speed_set(0);
}
else
{
breathing_speed_set(breath_speed - value);
}
}
void breathing_speed_dec(uint8_t value)
{
if ((uint16_t)(breath_speed + value) > 10 )
{
breathing_speed_set(10);
}
else
{
breathing_speed_set(breath_speed + value);
}
}
void breathing_defaults(void)
{
breathing_intensity_default();
breathing_speed_default();
breathing_halt = BREATHING_NO_HALT;
}
/* Breathing Sleep LED brighness(PWM On period) table
* (64[steps] * 4[duration]) / 64[PWM periods/s] = 4 second breath cycle
*
* http://www.wolframalpha.com/input/?i=%28sin%28+x%2F64*pi%29**8+*+255%2C+x%3D0+to+63
* (0..63).each {|x| p ((sin(x/64.0*PI)**8)*255).to_i }
*/
static const uint8_t breathing_table[64] PROGMEM = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 6, 10,
15, 23, 32, 44, 58, 74, 93, 113, 135, 157, 179, 199, 218, 233, 245, 252,
255, 252, 245, 233, 218, 199, 179, 157, 135, 113, 93, 74, 58, 44, 32, 23,
15, 10, 6, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
ISR(TIMER1_COMPA_vect)
{
// CHANNEL = (pgm_read_byte(&breathing_table[ ( (uint8_t)( (breathing_index++) >> breath_speed ) ) & 0x3F ] )) * breath_intensity;
uint8_t local_index = ( (uint8_t)( (breathing_index++) >> breath_speed ) ) & 0x3F;
if (((breathing_halt == BREATHING_HALT_ON) && (local_index == 0x20)) || ((breathing_halt == BREATHING_HALT_OFF) && (local_index == 0x3F)))
{
// Disable breathing interrupt
TIMSK1 &= ~_BV(OCIE1A);
}
CHANNEL = (uint16_t)(((uint16_t)pgm_read_byte(&breathing_table[local_index]) * 257)) >> breath_intensity;
}
#endif
}

+ 0
- 22
keyboards/atomic/atomic.h View File

@ -24,26 +24,4 @@
{ K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E } \
}
void matrix_init_user(void);
void matrix_scan_user(void);
bool process_action_user(keyrecord_t *record);
void led_set_user(uint8_t usb_led);
void backlight_init_ports(void);
void breathing_enable(void);
void breathing_pulse(void);
void breathing_disable(void);
void breathing_self_disable(void);
void breathing_toggle(void);
bool is_breathing(void);
void breathing_defaults(void);
void breathing_intensity_default(void);
void breathing_speed_default(void);
void breathing_speed_set(uint8_t value);
void breathing_speed_inc(uint8_t value);
void breathing_speed_dec(uint8_t value);
#endif

+ 2
- 0
keyboards/atomic/config.h View File

@ -46,6 +46,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7, D3, D2, D1 }
#define UNUSED_PINS
#define BACKLIGHT_PIN B7
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW


+ 0
- 1118
keyboards/atomic/keymaps/default/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1700
keyboards/atomic/keymaps/pvc/compiled.hex
File diff suppressed because it is too large
View File


+ 3
- 0
keyboards/atomic/keymaps/pvc/config.h View File

@ -46,6 +46,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7, D3, D2, D1 }
#define UNUSED_PINS
#define BACKLIGHT_PIN B7
#define BACKLIGHT_BREATHING
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW


keyboards/atomic/README.md → keyboards/atomic/readme.md View File

@ -4,7 +4,7 @@ DIY/Assembled ortholinear 60% keyboard by [Ortholinear Keyboards](http://ortholi
## Quantum MK Firmware
For the full Quantum feature list, see [the parent README.md](/README.md).
For the full Quantum feature list, see [the parent readme.md](/readme.md).
## Building
@ -16,7 +16,7 @@ Depending on which keymap you would like to use, you will have to compile slight
To build with the default keymap, simply run `make`.
### Other Keymaps
Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a file in the keymaps folder named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a file in the keymaps folder named `<name>.c` and see keymap document (you can find in top readme.md) and existent keymap files.
To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like:
```

+ 1
- 29
keyboards/atreus/atreus.c View File

@ -1,29 +1 @@
#include "atreus.h"
__attribute__ ((weak))
void matrix_init_user(void) {
// leave these blank
};
__attribute__ ((weak))
void matrix_scan_user(void) {
// leave these blank
};
void matrix_init_kb(void) {
// put your keyboard start-up code here
// runs once when the firmware starts up
if (matrix_init_user) {
(*matrix_init_user)();
}
};
void matrix_scan_kb(void) {
// put your looping keyboard code here
// runs every cycle (a lot)
if (matrix_scan_user) {
(*matrix_scan_user)();
}
};
#include "atreus.h"

+ 1
- 4
keyboards/atreus/atreus.h View File

@ -1,8 +1,8 @@
#ifndef ATREUS_H
#define ATREUS_H
#include "quantum.h"
#include "matrix.h"
#include "keymap.h"
#include "backlight.h"
#include <stddef.h>
@ -22,7 +22,4 @@
{ k2a, k30, k31, k32, k33, k34, k36, k37, k38, k39, k3a } \
}
void matrix_init_user(void);
void matrix_scan_user(void);
#endif

+ 0
- 1328
keyboards/atreus/keymaps/default/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1339
keyboards/atreus/keymaps/gerb/compiled.hex
File diff suppressed because it is too large
View File


keyboards/atreus/README.md → keyboards/atreus/readme.md View File

@ -177,7 +177,7 @@ Depending on which keymap you would like to use, you will have to compile slight
To build with the default keymap, simply run `make`.
### Other Keymaps
Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` and see keymap document (you can find in top readme.md) and existent keymap files.
To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like:
```

+ 1
- 25
keyboards/bantam44/bantam44.c View File

@ -1,25 +1 @@
#include "bantam44.h"
__attribute__ ((weak))
void matrix_init_user(void) {
// leave these blank
}
__attribute__ ((weak))
void matrix_scan_user(void) {
// leave these blank
}
void matrix_init_kb(void) {
// put your keyboard start-up code here
// runs once when the firmware starts up
matrix_init_user();
}
void matrix_scan_kb(void) {
// put your looping keyboard code here
// runs every cycle (a lot)
matrix_scan_user();
}
#include "bantam44.h"

+ 1
- 7
keyboards/bantam44/bantam44.h View File

@ -1,10 +1,7 @@
#ifndef BANTAM44_H
#define BANTAM44_H
#include "matrix.h"
#include "keymap.h"
#include "backlight.h"
#include <stddef.h>
#include "quantum.h"
// This a shortcut to help you visually see your layout.
// The following is an example using the Planck MIT layout
@ -23,7 +20,4 @@
{ K30, K31, K32, KC_NO, K33, KC_NO, K34, KC_NO, K35, K36, K37, K38 }, \
}
void matrix_init_user(void);
void matrix_scan_user(void);
#endif

+ 0
- 1398
keyboards/bantam44/keymaps/default/compiled.hex
File diff suppressed because it is too large
View File


keyboards/bantam44/README.md → keyboards/bantam44/readme.md View File

@ -3,7 +3,7 @@ Bantam44 keyboard firmware
## Quantum MK Firmware
For the full Quantum feature list, see [the parent README.md](/README.md).
For the full Quantum feature list, see [the parent readme.md](/readme.md).
## Building
@ -15,7 +15,7 @@ Depending on which keymap you would like to use, you will have to compile slight
To build with the default keymap, simply run `make`.
### Other Keymaps
Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` and see keymap document (you can find in top readme.md) and existent keymap files.
To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like:
```

+ 0
- 3
keyboards/clueboard1/Makefile View File

@ -1,8 +1,5 @@
# # project specific files
SRC = led.c
# MCU name
MCU = atmega32u4


+ 9
- 16
keyboards/clueboard1/clueboard1.c View File

@ -1,19 +1,12 @@
#include "clueboard1.h"
__attribute__ ((weak))
void matrix_init_user(void) {
// leave these blank
}
__attribute__ ((weak))
void matrix_scan_user(void) {
// leave these blank
}
void matrix_init_kb(void) {
matrix_init_user();
}
void matrix_scan_kb(void) {
matrix_scan_user();
void led_set_kb(uint8_t usb_led) {
DDRF |= (1<<0);
if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
// Turn capslock on
PORTF |= (1<<0);
} else {
// Turn capslock off
PORTF &= ~(1<<0);
}
}

+ 1
- 6
keyboards/clueboard1/clueboard1.h View File

@ -1,9 +1,7 @@
#ifndef CLUEBOARD1_H
#define CLUEBOARD1_H
#include "matrix.h"
#include "keymap.h"
#include <stddef.h>
#include "quantum.h"
/* Clueboard matrix layout
@ -46,7 +44,4 @@
{ k40, k41, k42, k43, KC_NO, k45, k46, KC_NO, KC_NO, k49, k4A, k4B, k4C, k4D, k4E, k4F } \
}
void matrix_init_user(void);
void matrix_scan_user(void);
#endif

+ 0
- 1192
keyboards/clueboard1/keymaps/default/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 32
keyboards/clueboard1/led.c View File

@ -1,32 +0,0 @@
/*
Copyright 2012 Jun Wako <wakojun@gmail.com>
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 <http://www.gnu.org/licenses/>.
*/
#include <avr/io.h>
#include "stdint.h"
#include "led.h"
void led_set_kb(uint8_t usb_led) {
DDRF |= (1<<0);
if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
// Turn capslock on
PORTF |= (1<<0);
} else {
// Turn capslock off
PORTF &= ~(1<<0);
}
}

+ 0
- 6
keyboards/clueboard2/Makefile View File

@ -1,7 +1,5 @@
SRC = led.c
# MCU name
#MCU = at90usb1287
MCU = atmega32u4
@ -68,10 +66,6 @@ AUDIO_ENABLE ?= no
UNICODE_ENABLE ?= no # Unicode
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
#ifdef BACKLIGHT_ENABLE
SRC := backlight.c $(SRC)
#endif
ifndef QUANTUM_DIR
include ../../Makefile
endif

+ 0
- 41
keyboards/clueboard2/backlight.c View File

@ -1,41 +0,0 @@
#include <avr/io.h>
#include "backlight.h"
#include "print.h"
/* Clueboard 2.0 LED locations:
*
* Capslock: B4, pull high to turn on
* LCtrl: Shared with Capslock, DO NOT INSTALL LED'S IN BOTH
* Page Up: B7, pull high to turn on
* Escape: D6, pull high to turn on
* Arrows: D4, pull high to turn on
*/
void init_backlight_pin(void) {
print("init_backlight_pin()\n");
// Set our LED pins as output
DDRD |= (1<<6); // Esc
DDRB |= (1<<7); // Page Up
DDRD |= (1<<4); // Arrows
// Set our LED pins low
PORTD &= ~(1<<6); // Esc
PORTB &= ~(1<<7); // Page Up
PORTD &= ~(1<<4); // Arrows
}
void backlight_set(uint8_t level) {
if ( level == 0 ) {
// Turn off light
PORTD |= (1<<6); // Esc
PORTB |= (1<<7); // Page Up
PORTD |= (1<<4); // Arrows
} else {
// Turn on light
PORTD &= ~(1<<6); // Esc
PORTB &= ~(1<<7); // Page Up
PORTD &= ~(1<<4); // Arrows
}
}

+ 51
- 28
keyboards/clueboard2/clueboard2.c View File

@ -1,40 +1,63 @@
#include "clueboard2.h"
#ifdef BACKLIGHT_ENABLE
#include "backlight.h"
#endif
__attribute__ ((weak))
void matrix_init_user(void) {
// leave these blank
};
__attribute__ ((weak))
void matrix_scan_user(void) {
// leave these blank
};
void matrix_init_kb(void) {
// put your keyboard start-up code here
// runs once when the firmware starts up
if (matrix_init_user) {
(*matrix_init_user)();
}
matrix_init_user();
led_init_ports();
#ifdef BACKLIGHT_ENABLE
init_backlight_pin();
#endif
// JTAG disable for PORT F. write JTD bit twice within four cycles.
MCUCR |= (1<<JTD);
MCUCR |= (1<<JTD);
};
void matrix_scan_kb(void) {
// put your looping keyboard code here
// runs every cycle (a lot)
if (matrix_scan_user) {
(*matrix_scan_user)();
}
};
void led_init_ports() {
// * Set our LED pins as output
DDRB |= (1<<4);
}
void led_set_kb(uint8_t usb_led) {
if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
// Turn capslock on
PORTB |= (1<<4);
} else {
// Turn capslock off
PORTB &= ~(1<<4);
}
}
/* Clueboard 2.0 LED locations:
*
* Capslock: B4, pull high to turn on
* LCtrl: Shared with Capslock, DO NOT INSTALL LED'S IN BOTH
* Page Up: B7, pull high to turn on
* Escape: D6, pull high to turn on
* Arrows: D4, pull high to turn on
*/
void backlight_init_ports(void) {
print("init_backlight_pin()\n");
// Set our LED pins as output
DDRD |= (1<<6); // Esc
DDRB |= (1<<7); // Page Up
DDRD |= (1<<4); // Arrows
// Set our LED pins low
PORTD &= ~(1<<6); // Esc
PORTB &= ~(1<<7); // Page Up
PORTD &= ~(1<<4); // Arrows
}
void backlight_set(uint8_t level) {
if ( level == 0 ) {
// Turn off light
PORTD |= (1<<6); // Esc
PORTB |= (1<<7); // Page Up
PORTD |= (1<<4); // Arrows
} else {
// Turn on light
PORTD &= ~(1<<6); // Esc
PORTB &= ~(1<<7); // Page Up
PORTD &= ~(1<<4); // Arrows
}
}

+ 1
- 6
keyboards/clueboard2/clueboard2.h View File

@ -1,9 +1,7 @@
#ifndef CLUEBOARD2_H
#define CLUEBOARD2_H
#include "matrix.h"
#include "keymap.h"
#include <stddef.h>
#include "quantum.h"
/* Clueboard matrix layout
@ -51,7 +49,4 @@
{ k90, KC_NO, k92, k93, k94, k95, k96, k97 } \
}
void matrix_init_user(void);
void matrix_scan_user(void);
#endif

+ 0
- 1246
keyboards/clueboard2/keymaps/default/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 4
keyboards/clueboard2/keymaps/default/keymap.c View File

@ -1,9 +1,5 @@
#include "clueboard2.h"
#ifdef RGBLIGHT_ENABLE
#include "rgblight.h"
#endif
// Used for SHIFT_ESC
#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))


+ 0
- 1536
keyboards/clueboard2/keymaps/max/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 4
keyboards/clueboard2/keymaps/max/keymap.c View File

@ -1,9 +1,5 @@
#include "clueboard2.h"
#ifdef ENABLE_RGBLIGHT
#include "rgblight.h"
#endif
// Used for SHIFT_ESC
#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))


+ 0
- 1246
keyboards/clueboard2/keymaps/skully/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 36
keyboards/clueboard2/led.c View File

@ -1,36 +0,0 @@
/*
Copyright 2012 Jun Wako <wakojun@gmail.com>
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 <http://www.gnu.org/licenses/>.
*/
#include <avr/io.h>
#include "stdint.h"
#include "led.h"
void led_init_ports() {
// * Set our LED pins as output
DDRB |= (1<<4);
}
void led_set_kb(uint8_t usb_led) {
if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
// Turn capslock on
PORTB |= (1<<4);
} else {
// Turn capslock off
PORTB &= ~(1<<4);
}
}

+ 1
- 21
keyboards/cluepad/cluepad.c View File

@ -1,21 +1,9 @@
#include "cluepad.h"
__attribute__ ((weak))
void matrix_init_user(void) {
// leave these blank
};
__attribute__ ((weak))
void matrix_scan_user(void) {
// leave these blank
};
void matrix_init_kb(void) {
// put your keyboard start-up code here
// runs once when the firmware starts up
if (matrix_init_user) {
(*matrix_init_user)();
}
matrix_init_user();
#ifdef BACKLIGHT_ENABLE
init_backlight_pin();
@ -25,11 +13,3 @@ void matrix_init_kb(void) {
MCUCR |= (1<<JTD);
MCUCR |= (1<<JTD);
};
void matrix_scan_kb(void) {
// put your looping keyboard code here
// runs every cycle (a lot)
if (matrix_scan_user) {
(*matrix_scan_user)();
}
};

+ 0
- 3
keyboards/cluepad/cluepad.h View File

@ -35,7 +35,4 @@
{ k40, KC_NO, k42, KC_NO } \
}
void matrix_init_user(void);
void matrix_scan_user(void);
#endif

+ 0
- 1123
keyboards/cluepad/keymaps/default/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 15
keyboards/ergodox_ez/ergodox_ez.c View File

@ -4,16 +4,6 @@
bool i2c_initialized = 0;
uint8_t mcp23018_status = 0x20;
__attribute__ ((weak))
void matrix_init_user(void) {
}
__attribute__ ((weak))
void matrix_scan_user(void) {
}
void matrix_init_kb(void) {
// keyboard LEDs (see "PWM on ports OC1(A|B|C)" in "teensy-2-0.md")
TCCR1A = 0b10101001; // set and configure fast PWM
@ -37,11 +27,6 @@ void matrix_init_kb(void) {
matrix_init_user();
}
void matrix_scan_kb(void) {
matrix_scan_user();
}
void ergodox_blink_all_leds(void)
{
ergodox_led_all_off();


+ 0
- 5
keyboards/ergodox_ez/ergodox_ez.h View File

@ -119,9 +119,4 @@ inline void ergodox_led_all_set(uint8_t n)
{ k0D, k1D, k2D, k3D, k4D, KC_NO } \
}
void matrix_init_user(void);
void matrix_scan_user(void);
#endif

+ 0
- 1147
keyboards/ergodox_ez/keymaps/ab/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1133
keyboards/ergodox_ez/keymaps/adnw_k_o_y/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1172
keyboards/ergodox_ez/keymaps/alexjj/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1
keyboards/ergodox_ez/keymaps/algernon/.gitignore View File

@ -1 +0,0 @@
/compiled.hex

+ 1
- 1
keyboards/ergodox_ez/keymaps/algernon/keymap.c View File

@ -1,5 +1,5 @@
/*
* algernon's ErgoDox EZ layout, please see the README.md file!
* algernon's ErgoDox EZ layout, please see the readme.md file!
*/
#include "ergodox_ez.h"


+ 0
- 1158
keyboards/ergodox_ez/keymaps/andrew_osx/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1190
keyboards/ergodox_ez/keymaps/bepo/compiled.hex
File diff suppressed because it is too large
View File


keyboards/ergodox_ez/keymaps/bepo/README.md → keyboards/ergodox_ez/keymaps/bepo/readme.md View File

@ -1,6 +1,6 @@
# BEPO keymap for the ErgoDox
This keymap has been made for the BEPO layout (http://bepo.fr), which is an ergonomic french keyboard layout based on Dvorak rules. As it's made for french people, the following of this README will be in french.
This keymap has been made for the BEPO layout (http://bepo.fr), which is an ergonomic french keyboard layout based on Dvorak rules. As it's made for french people, the following of this readme will be in french.
# Disposition BÉPO pour l'ErgoDox

+ 0
- 1195
keyboards/ergodox_ez/keymaps/coderkun_neo2/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1158
keyboards/ergodox_ez/keymaps/colemak/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1179
keyboards/ergodox_ez/keymaps/colemak_osx_pc_no/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1159
keyboards/ergodox_ez/keymaps/csharp_dev/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1169
keyboards/ergodox_ez/keymaps/dave/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1153
keyboards/ergodox_ez/keymaps/default/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1158
keyboards/ergodox_ez/keymaps/default_osx/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1169
keyboards/ergodox_ez/keymaps/dragon788/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1158
keyboards/ergodox_ez/keymaps/dvorak/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1158
keyboards/ergodox_ez/keymaps/dvorak_intl_squisher/compiled.hex
File diff suppressed because it is too large
View File


keyboards/ergodox_ez/keymaps/dvorak_intl_squisher/README.md → keyboards/ergodox_ez/keymaps/dvorak_intl_squisher/readme.md View File


+ 0
- 1149
keyboards/ergodox_ez/keymaps/dvorak_spanish/compiled.hex
File diff suppressed because it is too large
View File


keyboards/ergodox_ez/keymaps/dvorak_spanish/README.md → keyboards/ergodox_ez/keymaps/dvorak_spanish/readme.md View File


+ 0
- 1158
keyboards/ergodox_ez/keymaps/emacs_osx_dk/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1080
keyboards/ergodox_ez/keymaps/erez_experimental/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1158
keyboards/ergodox_ez/keymaps/german-kinergo/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1274
keyboards/ergodox_ez/keymaps/german-manuneo/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1158
keyboards/ergodox_ez/keymaps/german/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1158
keyboards/ergodox_ez/keymaps/j3rn/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1158
keyboards/ergodox_ez/keymaps/jack/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1179
keyboards/ergodox_ez/keymaps/jacobono/compiled.hex
File diff suppressed because it is too large
View File


keyboards/ergodox_ez/keymaps/jacobono/README.md → keyboards/ergodox_ez/keymaps/jacobono/readme.md View File


+ 0
- 1158
keyboards/ergodox_ez/keymaps/jgarr/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1158
keyboards/ergodox_ez/keymaps/kastyle/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1158
keyboards/ergodox_ez/keymaps/kines-ish/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1181
keyboards/ergodox_ez/keymaps/mpiechotka/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1158
keyboards/ergodox_ez/keymaps/msc/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1158
keyboards/ergodox_ez/keymaps/naps62/compiled.hex
File diff suppressed because it is too large
View File


keyboards/ergodox_ez/keymaps/naps62/README.md → keyboards/ergodox_ez/keymaps/naps62/readme.md View File


+ 0
- 1182
keyboards/ergodox_ez/keymaps/ordinary/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1216
keyboards/ergodox_ez/keymaps/osx_de/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1152
keyboards/ergodox_ez/keymaps/osx_de_adnw_koy/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1228
keyboards/ergodox_ez/keymaps/osx_de_experimental/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1158
keyboards/ergodox_ez/keymaps/osx_fr/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1158
keyboards/ergodox_ez/keymaps/osx_kinesis_pnut/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1169
keyboards/ergodox_ez/keymaps/plover/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1165
keyboards/ergodox_ez/keymaps/plums/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1098
keyboards/ergodox_ez/keymaps/romanzolotarev-norman-osx/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1169
keyboards/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx-hjkl/compiled.hex
File diff suppressed because it is too large
View File


+ 0
- 1169
keyboards/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/compiled.hex
File diff suppressed because it is too large
View File


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save