From d9e4dad0a828a8a904f44dda090a4d6d08fe2948 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sat, 11 Jun 2016 13:31:31 -0400 Subject: Makefile redo & other features (#395) * .build containment implemented * no destructive variable setting - builds in either folder * make from 3 places * cleans before each build * make from root with keyboard=keyboard, keymap=keymap * make from keyboard/keyboard with keymap=keymap * make from keymaps/keymap * only implemented on planck * adds color diag to avr-gcc * makefiles for all plancks, clean-up * quick build-all makefile for plancks * reformatting of make output (colors) * color toggle, tmk path corrections * correct if statement for color * move config.h to main makefile, updates preonic, atomic * format update, all keyboards targets * makefile optional for build all target, alps and arrow_pad updated * alps updated * make planck default, trying out travis recipe for all-keyboards * all-keymaps target, different travis recipe * updates alps64 * updates keyboards to new format * updates clue* projects * all projects updated, specialise EZ .hex, let .hex through * updates travis * automatically find root, keyboard, keymap * silent echo, cleaned-up mass make output * updates all keyboards' .hex files except EZ * Rename Bantam44.c to bantam44.c * Rename Bantam44.h to bantam44.h * nananana * adds six key keyboard * does same to ez as rest * updates send_string example * brings ergodox_ez up to date * updates template/new project script * adds sixkeyboard * adds readme for sixkeyboard * adds sixkeyboard to travis * filenames, gitignore mess * define clock prescaler stuff manually * make quick, size test example * documentation and dfu-no-build --- keyboard/sixkeyboard/Makefile | 113 ++++ keyboard/sixkeyboard/README.md | 18 + keyboard/sixkeyboard/config.h | 115 ++++ keyboard/sixkeyboard/keymaps/default/compiled.hex | 760 ++++++++++++++++++++++ keyboard/sixkeyboard/keymaps/default/keymap.c | 39 ++ keyboard/sixkeyboard/matrix.c | 120 ++++ keyboard/sixkeyboard/sixkeyboard.c | 52 ++ keyboard/sixkeyboard/sixkeyboard.h | 22 + 8 files changed, 1239 insertions(+) create mode 100644 keyboard/sixkeyboard/Makefile create mode 100644 keyboard/sixkeyboard/README.md create mode 100644 keyboard/sixkeyboard/config.h create mode 100644 keyboard/sixkeyboard/keymaps/default/compiled.hex create mode 100644 keyboard/sixkeyboard/keymaps/default/keymap.c create mode 100644 keyboard/sixkeyboard/matrix.c create mode 100644 keyboard/sixkeyboard/sixkeyboard.c create mode 100644 keyboard/sixkeyboard/sixkeyboard.h (limited to 'keyboard/sixkeyboard') diff --git a/keyboard/sixkeyboard/Makefile b/keyboard/sixkeyboard/Makefile new file mode 100644 index 000000000..ac32b2eb4 --- /dev/null +++ b/keyboard/sixkeyboard/Makefile @@ -0,0 +1,113 @@ +#---------------------------------------------------------------------------- +# On command line: +# +# make all = Make software. +# +# make clean = Clean out built project files. +# +# make coff = Convert ELF to AVR COFF. +# +# make extcoff = Convert ELF to AVR Extended COFF. +# +# make program = Download the hex file to the device. +# Please customize your programmer settings(PROGRAM_CMD) +# +# make teensy = Download the hex file to the device, using teensy_loader_cli. +# (must have teensy_loader_cli installed). +# +# make dfu = Download the hex file to the device, using dfu-programmer (must +# have dfu-programmer installed). +# +# make flip = Download the hex file to the device, using Atmel FLIP (must +# have Atmel FLIP installed). +# +# make dfu-ee = Download the eeprom file to the device, using dfu-programmer +# (must have dfu-programmer installed). +# +# make flip-ee = Download the eeprom file to the device, using Atmel FLIP +# (must have Atmel FLIP installed). +# +# make debug = Start either simulavr or avarice as specified for debugging, +# with avr-gdb or avr-insight as the front end for debugging. +# +# make filename.s = Just compile filename.c into the assembler code only. +# +# make filename.i = Create a preprocessed source file for use in submitting +# bug reports to the GCC project. +# +# To rebuild project do "make clean" then "make all". +#---------------------------------------------------------------------------- + +SRC = matrix.c + +# MCU name +#MCU = at90usb1287 +MCU = atmega16u2 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=4096 + + +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= no # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= no # Audio control and System control(+450) +CONSOLE_ENABLE ?= no # Console for debug(+400) +COMMAND_ENABLE ?= no # Commands for debug and configuration +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend +NKRO_ENABLE ?= no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality +MIDI_ENABLE ?= no # MIDI controls +AUDIO_ENABLE ?= no +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +CUSTOM_MATRIX = yes + +ifndef QUANTUM_DIR + include ../../Makefile +endif + diff --git a/keyboard/sixkeyboard/README.md b/keyboard/sixkeyboard/README.md new file mode 100644 index 000000000..7d78a0cae --- /dev/null +++ b/keyboard/sixkeyboard/README.md @@ -0,0 +1,18 @@ +# Techkeys SixKeyBoard + +[Get one here!](http://techkeys.us/collections/accessories/products/sixkeyboard) + +The schematic is like this: + +``` + switches leds +,--+--+--. ,--+--+--. +|C7|B7|B5| |C6|B6|B4| ++--+--+--+ +--+--+--+ +|D6|D1|D4| |D5|D2|D3| +`--+--+--' `--+--+--' +``` + +The LED on the bottom is `C4`. All 7 of the leds are turned on when the keyboard boots-up in the `sixkeyboard.c` file - backlight_enable is not required. The MCU is an Atmega16u2, so the flash memory is limited to 0x3000 bytes - the current setup uses just about all of that! I'm sure things can be opitimised a bit. + +There is a jumper on the bottom of the board (next to the USB port) that serves as a reset button - I drilled a hole in my case to allow for quick access via a screwdriver/metal object. \ No newline at end of file diff --git a/keyboard/sixkeyboard/config.h b/keyboard/sixkeyboard/config.h new file mode 100644 index 000000000..bf58bb2b7 --- /dev/null +++ b/keyboard/sixkeyboard/config.h @@ -0,0 +1,115 @@ +/* +Copyright 2012 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6062 +#define DEVICE_VER 0x0001 +#define MANUFACTURER techkeys.us +#define PRODUCT sixkeykeyboard +#define DESCRIPTION A little 6-key macro pad + +/* key matrix size */ +#define MATRIX_ROWS 2 +#define MATRIX_COLS 3 + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 0 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + + +/* Force NKRO Mode - If forced on, must be disabled via magic key (default = LShift+RShift+N) */ +#define FORCE_NKRO + +/* + * Magic key options + * These options allow the magic key functionality to be changed. This is useful + * if your keyboard/keypad is missing keys and you want magic key support. + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* remap magic keys */ +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER PAUSE +//#define MAGIC_KEY_LOCK BSLS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboard/sixkeyboard/keymaps/default/compiled.hex b/keyboard/sixkeyboard/keymaps/default/compiled.hex new file mode 100644 index 000000000..588aca108 --- /dev/null +++ b/keyboard/sixkeyboard/keymaps/default/compiled.hex @@ -0,0 +1,760 @@ +:100000000C94C8000C940C010C940C010C940C0181 +:100010000C940C010C940C010C940C010C940C012C +:100020000C940C010C940C010C940C010C943209EE +:100030000C94E0090C945F160C940C010C940C01C8 +:100040000C940C010C940C010C940C010C94C7162C +:100050000C940C010C940C010C940C010C940C01EC +:100060000C940C010C940C010C940C010C940C01DC +:100070000C940C014D0A6F0A5D0B6F0A5D0BB40AFC +:10008000D70A5D0B2C0B3F0BEB0DEB0D1A0E1A0E66 +:100090007E0F7E0F7E0F7E0F590E7E0F090F090F08 +:1000A0006F0F7E0F7E0F780F160F160F160F160F9D +:1000B000160F160F160F160F160F160F160F160F18 +:1000C000160F160F160F160F260F340F3B0F420F89 +:1000D0004C0F0400050006000700080009001E037D +:1000E0007300690078006B00650079006B006500A3 +:1000F000790062006F006100720064000000180364 +:1001000074006500630068006B006500790073008F +:100110002E00750073000000040309040902220088 +:10012000010100A0FA0904000001030101000921F6 +:10013000110100012240000705810308000A120195 +:10014000100100000008EDFE6260010001020001E4 +:1001500005010906A101050719E029E71500250198 +:10016000950875018102950175088101050819013D +:100170002905950575019102950175039101050702 +:10018000190029FF150026FF00950675088100C09B +:1001900011241FBECFEFD2E0DEBFCDBF04B603FEF9 +:1001A00024C08091900190919101A0919201B09111 +:1001B00093018730904BA740B04BB9F41092900157 +:1001C00010929101109292011092930114BE84B783 +:1001D000877F84BF88E10FB6F89480936000109207 +:1001E00060000FBEE0E0F8E1099511E0A0E0B1E0A9 +:1001F000E2E5FFE202C005900D92AE30B107D9F7FB +:1002000011E0AEE0B1E001C01D92A039B107E1F705 +:100210000E94AA060C94A7170C9400003F98479AD6 +:1002200084B18F7584B985B1806A85B98AB18D7AB8 +:100230008AB98BB182658BB90C94660186B18095C1 +:10024000982F991F9927991F83B18095881F882718 +:10025000881F880F892B1D9902C094E001C090E08F +:10026000892B80930E0189B186FB882780F991E064 +:100270008927499902C092E001C090E0892B4C99EE +:1002800002C094E001C090E0892B80930F010E948E +:10029000760181E00895E82FF0E0E25FFE4F808173 +:1002A000089508951F93CF93DF93CEE0D1E0888126 +:1002B00090E00E941A16182F898190E00E941A1669 +:1002C000810FDF91CF911F91089508953C9A449832 +:1002D0003E9A4698269A2E98249A2C98559A5D987C +:1002E000529A5A98539A5B980C9465010C94880121 +:1002F00061110BC0FC018281882321F085EE0E94F0 +:100300009A0C03C085EE0E94570D80E090E008959E +:1003100080E00E944B01873049F481E00E944B014C +:10032000873021F40E94DD0F0C94EC16089581E0D3 +:10033000089581E008950C94990108950F931F93F7 +:10034000CF93DF938C01FC01C081D181CE010E944B +:10035000E914BE010E944702EC01B8010E949B0112 +:10036000882309F48DC0F8018281882309F44AC0EA +:1003700080911B0181111FC0C431F0E5DF0709F036 +:1003800051C00E949D0181E080931B010E94911643 +:1003900090931A0180931901109212011092140186 +:1003A000109213011092160110921501109218016B +:1003B0001092170165C08091190190911A010E9455 +:1003C0009D16883C910570F480911201E82FF0E0B1 +:1003D000EE0FFF1FED5EFE4FD183C0838F5F8093D2 +:1003E00012014EC0C43880E5D80721F0C538D04589 +:1003F00001F13AC0F8018281882341F01092100186 +:1004000082E01EC0C438E0E5DE0759F58091100196 +:10041000811106C086E20E949A0C86E20E94570D66 +:1004200082E01CC0C438F0E5DF0741F3C538D04591 +:10043000D9F4F8018281882331F01092110180E211 +:100440000E94A60D1DC080911101811106C087E296 +:100450000E949A0C87E20E94570D80E20E94AD0D27 +:100460000FC0C538D04529F381E0809310018093F7 +:100470001101C801DF91CF911F910F910C94970149 +:1004800080E0DF91CF911F910F91089508959B0116 +:1004900090E066E070E00E945A17FC01832F90E024 +:1004A00063E070E00E945A178E0F9F1FFC01E20F5D +:1004B000F11DEE0FFF1FEE52FF4F859194910895AD +:1004C000880F991FFC01EE5AF04085919491089590 +:1004D000880F991FFC01EE52FF4F8591949108956A +:1004E0000F931F93CF93DF93EC01811520E39207C5 +:1004F00050F5C11580E2D80708F0C3C0CB3BD10549 +:1005000090F4C83AD10508F06AC0C53AD10508F0A0 +:100510005BC0C430D10508F0D0C1219709F0CAC131 +:1005200001E010E00AC2CF3FD10511F008F0C5C1CB +:10053000C03FD10508F0A2C0CE01805E91090897A6 +:1005400008F4BBC1B7C1C13090E5D90709F4A2C016 +:1005500020F5C0318FE4D80770F4C11590E4D907B5 +:1005600008F094C0C11521E3D20708F0A3C1DD272C +:100570008E01106CE2C1C115D04509F09BC10E94EB +:10058000DD0F8FEF94E32CE0815090402040E1F7A5 +:1005900000C000000E94EC16D0C1C11597E5D90734 +:1005A00058F4C03121E5D20708F01CC1C43180E500 +:1005B000D80708F475C07EC1CE01905781159041CF +:1005C00008F078C1DF7073C1C53AD10509F477C16D +:1005D000C63AD10509F076C102E810E4AEC1C83AC6 +:1005E000D10509F472C1C93AD10509F471C1CA3AF9 +:1005F000D10509F470C1CB3AD10509F46FC1CC3AE9 +:10060000D10509F46EC1CD3AD10509F46DC1C03BE5 +:10061000D10509F46CC1CE3AD10509F46BC1CF3ACA +:10062000D10509F46AC1C13BD10509F469C1C23BD6 +:10063000D10509F468C1C33BD10509F467C1C43BC6 +:10064000D10509F466C1C53BD10509F465C1C63BB6 +:10065000D10509F464C1C73BD10509F463C1C83BA6 +:10066000D10509F462C1C93BD10509F461C1CA3B96 +:10067000D10509F460C100E014E45FC18E0110658A +:100680005CC1CE019F700E94680258C1DF708E016C +:10069000106A53C180917C01816080937C014DC1BF +:1006A0000E943E17811102C00E9424170E94511718 +:1006B00090E09093900180938F01C23080E5D8073D +:1006C00021F480918F01816086C0C43090E5D90704 +:1006D00021F480918F0182607EC0C63020E5D20770 +:1006E00021F480918F01846076C0C83080E5D807FE +:1006F00019F480918F0127C0CA3090E5D90721F401 +:1007000080918F01806167C0CC3020E5D20721F451 +:1007100080918F0180625FC0CE3080E5D80721F4E0 +:1007200080918F01806457C0C03190E5D90721F4D2 +:1007300080918F0180684FC0C23120E5D20729F433 +:1007400080918F018460886046C0C33080E5D807FF +:1007500021F480918F018E7F3EC0C53090E5D9078E +:1007600021F480918F018D7F36C0C73020E5D207FC +:1007700021F480918F018B7F2EC0C93080E5D8078E +:1007800019F480918F0126C0CB3090E5D90721F470 +:1007900080918F018F7E1FC0CD3020E5D20721F4DC +:1007A00080918F018F7D17C0CF3080E5D80721F46D +:1007B00080918F018F7B0FC0C13190E5D90721F463 +:1007C00080918F018F7707C0C331D04531F480917C +:1007D0008F018B7F877F80938F0180918F010E9493 +:1007E0005517ABC08D2F99278F70992781309105B0 +:1007F000D9F49E012370332702C0880F991F2A95D0 +:10080000E2F79C688E0144E0000F111F4A95E1F762 +:1008100000271370802B912B53E0CC0FDD1F5A95CE +:10082000E1F7C076DD272FC08230910531F4DC2F4F +:10083000CC278E01016F106A80C08330910569F466 +:10084000CE018370992701E010E002C0000F111F54 +:100850008A95E2F7C8019C680FC084309105B9F40D +:10086000CE018370992701E010E002C0000F111F34 +:100870008A95E2F7C8019A6823E0CC0FDD1F2A951C +:10088000E1F7C07ED7708C010C2B1D2B56C0853034 +:10089000910531F4DC2FCC278E01046F106A4DC016 +:1008A000069709F04AC0CF71DD27DC2FCC278E01D7 +:1008B000106243C000E010E040C08E013EC001E87D +:1008C00010E43BC003E810E438C002EE14E435C085 +:1008D00009EE14E432C00AEE14E42FC005EB14E470 +:1008E0002CC006EB14E429C007EB14E426C00CEC82 +:1008F00014E423C00DEC14E420C003E815E41DC08B +:100900000AE815E41AC002E915E417C004E915E481 +:1009100014C001E216E411C003E216E40EC004E2C2 +:1009200016E40BC005E216E408C006E216E405C0B2 +:1009300007E216E402C00AE216E4C801DF91CF9193 +:100940001F910F9108959B0190E066E070E00E9476 +:100950005A17FC01832F90E063E070E00E945A1761 +:100960008E0F9F1FFC01E20FF11DEE0FFF1FEE52D5 +:10097000FF4F85919491803E9105E0F4803C910574 +:1009800058F58133910509F46FC048F48932910517 +:1009900009F463C08A32910509F46DC072C08933CD +:1009A0009105E9F082389105D1F08533910509F47C +:1009B0004DC067C0833E910581F138F4803E9105BA +:1009C000B9F0823E9105D9F05CC0863E910561F197 +:1009D000873E9105A1F155C00E94600208952091C3 +:1009E0008F0120FD02C021FF4CC080EE90E049C085 +:1009F00080918F0180FFF9CF89E390E042C0809120 +:100A00008F0182FF0EC080918F0184FF03C080E0C0 +:100A100090E037C083EE90E034C080918F0182FF78 +:100A2000F2CF82EE90E02DC080918F0183FF0BC04A +:100A300080918F0184FDEBCF87EE90E022C0809102 +:100A40008F0183FFF5CF86EE90E01BC080918F0170 +:100A500085FF07C089E290E014C080918F0185FF77 +:100A6000F9CF85E390E00DC080918F0186FF07C02C +:100A70008AE290E006C080918F0186FFF9CF81E382 +:100A800090E00E947002089508950C9444058091AE +:100A9000240108950895CF93DF9300D01F92CDB71E +:100AA000DEB720918601243021F523E029839B8342 +:100AB0008A8381E08093E9008FEF9091E800815074 +:100AC00095FD06C095ED9A95F1F700008111F5CFDF +:100AD0008091E80085FF0DC040E050E063E070E0E9 +:100AE000CE0101960E9440078091E8008E778093A6 +:100AF000E8000F900F900F90DF91CF910895CF9362 +:100B0000DF9300D01F92CDB7DEB72091860124304D +:100B100021F522E029839B838A8381E08093E90089 +:100B20008FEF9091E800815095FD06C095ED9A9564 +:100B3000F1F700008111F5CF8091E80085FF0DC02D +:100B400040E050E063E070E0CE0101960E94400773 +:100B50008091E8008E778093E8000F900F900F90BF +:100B6000DF91CF910895CF93DF93209186012430B8 +:100B700039F521E02093E9002FEF3091E800215072 +:100B800035FD06C035ED3A95F1F700002111F5CF9E +:100B90002091E80025FF14C0EC0140E050E068E03F +:100BA00070E00E9440078091E8008E778093E80013 +:100BB00088E0FE01ACE1B1E001900D928A95E1F789 +:100BC000DF91CF91089580918501811109C00E9424 +:100BD000CF080E9422098091E20084608093E200A5 +:100BE0000895109285010895089542E061EC81E036 +:100BF0000C94490880918801833009F453C030F483 +:100C0000813071F0823009F48CC008958A3009F483 +:100C100078C08B3009F45EC0893009F09AC020C0DA +:100C200080918701813A09F094C08091E800877F24 +:100C30008093E80080918B0190918C01892B21F4A5 +:100C400068E08CE191E003C060E080E090E070E05B +:100C50000E948B078091E8008B778093E8000895CD +:100C600080918701813209F074C080918B0190914D +:100C70008C01892B09F06DC08091E800877F8093FB +:100C8000E8008091E80082FD05C080918601811115 +:100C9000F8CF5FC08091F100809324018091E8003B +:100CA0008B7753C080918701813A09F052C08091BF +:100CB0008B0190918C01892B09F04BC08091E80049 +:100CC000877F8093E8008091E80080FFFCCF8091CF +:100CD0000A0136C0809187018132D9F580918B015C +:100CE00090918C01892BA9F58091E800877F8093F2 +:100CF000E8000E947E088091890180930A010C948B +:100D0000DD0F80918701813221F58091E800877F96 +:100D10008093E8000E947E0880918A0180932501DB +:100D2000089580918701813AA1F48091E800877F3E +:100D30008093E8008091E80080FFFCCF809125013E +:100D40008093F1008091E8008E778093E8000C9406 +:100D50007E08089584B7877F84BF88E10FB6F89432 +:100D600080936000109260000FBE80E88093610065 +:100D7000109261000E94DA0B0E94CF080E942209A3 +:100D80008091E20084608093E20078940E94760B68 +:100D90000E94DC0B80E091E00E94910B8091860123 +:100DA000853069F40E942616809184018823B1F36E +:100DB0000E945116882391F30E942A07EFCF0E94C8 +:100DC000E20BECCF292F332723303105C1F05CF43F +:100DD0002130310579F022303105A1F582E290E031 +:100DE0002CE131E033C021323105F1F022323105FE +:100DF00011F128C082E190E02EE331E027C099276D +:100E00008130910541F08230910541F0892BD1F478 +:100E1000E8E1F1E005C0EEEFF0E002C0EEEDF0E059 +:100E2000849190E09F0112C061110CC089E090E0B4 +:100E30002EE231E00BC0611105C080E490E020E5B6 +:100E400031E004C080E090E020E030E0FA0131833E +:100E50002083089584E089BD86E089BD09B400FE41 +:100E6000FDCF8091D8008F7D8093D8008091E000E5 +:100E700082608093E0008091E00081FDFCCF0895C6 +:100E8000CF92DF92EF92FF920F931F93CF93DF9356 +:100E9000EC018B016A010E949D08811133C0C114CD +:100EA000D10439F0F60180819181081B190BC80F1C +:100EB000D91FE12CF12C0115110519F18091E800E1 +:100EC00085FD16C08091E8008E778093E800C114FC +:100ED000D10449F0F60180819181E80EF91EF1827A +:100EE000E08285E00FC00E949D08882321F30AC09C +:100EF00089918093F10001501109FFEFEF1AFF0A69 +:100F0000DACF80E0DF91CF911F910F91FF90EF90AA +:100F1000DF90CF90089520918D0130918E0126179A +:100F2000370748F06115710539F42091E8002E77F4 +:100F30002093E80001C0B90140E06115710591F10D +:100F400020918601222309F440C0253009F43FC0D6 +:100F50002091E80023FD3DC02091E80022FD2FC034 +:100F60002091E80020FFE9CF2091F20030E0FC0161 +:100F7000CF016115710559F02830310540F4819198 +:100F80008093F100615071092F5F3F4FF1CF41E035 +:100F90002830310509F040E02091E8002E772093B9 +:100FA000E800CBCF4111CCCF0AC0809186018823C5 +:100FB00061F0853061F08091E80083FD0AC0809186 +:100FC000E80082FFF2CF80E0089582E0089583E098 +:100FD000089581E0089520918D0130918E012617AA +:100FE000370748F06115710539F42091E8002E7734 +:100FF0002093E80001C0B901FC0120E061157105F2 +:1010000079F180918601882309F43DC0853009F487 +:101010003CC08091E80083FD3AC08091E80082FDE9 +:101020002CC08091E80080FFE9CF8091F20090E031 +:101030006115710559F08830910540F42491209391 +:10104000F1003196615071090196F2CF21E00897C5 +:1010500009F020E08091E8008E778093E800CECF01 +:101060002111CFCF0AC080918601882361F085309D +:1010700061F08091E80083FD0AC08091E80082FF62 +:10108000F2CF80E0089582E0089583E0089581E042 +:101090000895982F953058F59093E900981739F0F6 +:1010A0007091EC002091ED005091F00003C0242FCE +:1010B000762F50E021FF19C03091EB003E7F309336 +:1010C000EB003091ED003D7F3093ED003091EB006F +:1010D00031603093EB007093EC002093ED0050935F +:1010E000F0002091EE0027FF07C09F5FD3CF8F70E5 +:1010F0008093E90081E0089580E008958091870160 +:1011000087FF11C08091E80082FD05C080918601B3 +:101110008111F8CF11C08091E8008B770BC08091CE +:101120008601882349F08091E80080FFF8CF809104 +:10113000E8008E778093E80008952091E4003091D4 +:10114000E50095E64091EC00842F817040FF22C0BD +:101150008091E80080FD1CC080918601882391F079 +:10116000853091F08091EB0085FD10C04091E40046 +:101170005091E5004217530729F39A01915011F756 +:1011800084E0089582E0089583E0089581E0089561 +:1011900080E008954091E80042FFDECF08950E946C +:1011A0002C090E942F09E0EEF0E0808181608083AD +:1011B000E8EDF0E080818F77808319BCE3E6F0E012 +:1011C0008081816080831092850108950E942C099E +:1011D0000E942F098091D8008F778093D80080914A +:1011E000D80080688093D8008091D8008F7D80934C +:1011F000D80084E089BD86E089BD09B400FEFDCF3A +:101200001092860110928201109284011092830143 +:1012100042E060E080E00E9449088091E1008E7F1A +:101220008093E1008091E20081608093E2008091F0 +:10123000E20088608093E2008091E0008E7F8093DE +:10124000E0000895E3E6F0E080818E7F808381E016 +:10125000809385010C94E6081092E20008951092A4 +:10126000E10008951F920F920FB60F9211242F9351 +:101270003F934F935F936F937F938F939F93AF931E +:10128000BF93EF93FF938091E10082FF0BC08091A9 +:10129000E20082FF07C08091E1008B7F8093E10034 +:1012A0000E94750B8091E10080FF18C08091E200E0 +:1012B00080FF14C08091E2008E7F8093E2008091D5 +:1012C000E20080618093E2008091D8008062809388 +:1012D000D80019BC109286010E94F1058091E100AE +:1012E00084FF30C08091E20084FF2CC084E089BD7F +:1012F00086E089BD09B400FEFDCF8091D8008F7DC6 +:101300008093D8008091E1008F7E8093E1008091EE +:10131000E2008F7E8093E2008091E2008160809302 +:10132000E20080918201882311F084E007C080915F +:10133000E30087FD02C081E001C083E08093860165 +:101340000E94E3058091E10083FF29C08091E200C3 +:1013500083FF25C08091E100877F8093E10082E0D8 +:1013600080938601109282018091E1008E7F8093AC +:10137000E1008091E2008E7F8093E2008091E200A4 +:1013800080618093E20042E060E080E00E944908D2 +:101390008091F00088608093F0000E94F405FF9136 +:1013A000EF91BF91AF919F918F917F916F915F91DD +:1013B0004F913F912F910F900FBE0F901F90189556 +:1013C0001F920F920FB60F9211242F933F934F93BA +:1013D0005F936F937F938F939F93AF93BF93CF93BD +:1013E000DF93EF93FF93C091E900CF708091EC0001 +:1013F000D82FD17080FDD0E81092E9008091F000E4 +:10140000877F8093F00078940E94240A1092E9006C +:101410008091F00088608093F000CD2BCF70C09356 +:10142000E900FF91EF91DF91CF91BF91AF919F9133 +:101430008F917F916F915F914F913F912F910F907D +:101440000FBE0F901F9018951F93CF93DF93CDB7CA +:10145000DEB7AA970FB6F894DEBF0FBECDBFE7E8A0 +:10146000F1E088E08E0F9091F10091938E13FBCF05 +:101470000E94FA058091E80083FF1FC180918701D7 +:1014800090918801492F50E04A30510508F015C16C +:10149000FA01E65CFF4F0C946B17803881F08238BC +:1014A00009F00BC180918B018F708093E9008091CE +:1014B000EB0085FB882780F91092E90006C0809137 +:1014C000830190918401911182609091E800977F4F +:1014D0009093E8008093F1001092F100C8C0282F8B +:1014E0002D7F09F0EAC0882319F0823061F0E5C051 +:1014F00080918901813009F0E0C0933009F080E0EB +:10150000809384012BC080918901811127C0809133 +:101510008B018F7009F4D1C08093E9002091EB001A +:1015200020FF1CC0933021F48091EB00806214C036 +:101530009091EB0090619093EB0021E030E0A901E5 +:1015400002C0440F551F8A95E2F74093EA001092BB +:10155000EA008091EB0088608093EB001092E90034 +:101560008091E800877F86C08111A7C01091890112 +:101570001F778091E3008078812B8093E300809136 +:10158000E800877F8093E8000E947E088091E80051 +:1015900080FFFCCF8091E30080688093E30011110D +:1015A00002C082E001C083E08093860186C080583B +:1015B000823008F082C08091890190918A018C3D2F +:1015C00053E0950779F583E08A838AE289834FB7F0 +:1015D000F894DE01139620E03EE051E2E32FF0E0C4 +:1015E00050935700E49120FF03C0E295EF703F5FF6 +:1015F000EF708E2F90E0EA3010F0C79601C0C096D1 +:101600008D939D932F5F243149F74FBF8091E80060 +:10161000877F8093E8006AE270E0CE0101960E9425 +:101620008B0714C0AE014F5F5F4F60918B010E942A +:10163000E206BC01009709F440C09091E800977F52 +:101640009093E80089819A810E94EB078091E800DD +:101650008B778093E80031C0803879F58091E8007D +:10166000877F8093E800809182018093F1008091D0 +:10167000E8008E778093E8000E947E081EC08111EA +:101680001CC0909189019230C0F48091E800877F5E +:101690008093E800909382010E947E0880918201ED +:1016A000811106C08091E30087FD02C081E001C086 +:1016B00084E0809386010E94F5058091E80083FF15 +:1016C0000AC08091E800877F8093E8008091EB005A +:1016D00080628093EB00AA960FB6F894DEBF0FBE2F +:1016E000CDBFDF91CF911F9108950895CF93809141 +:1016F00086018823A1F0C091E900CF709091EC00A1 +:10170000892F817090FD80E8C82B1092E9008091AC +:10171000E80083FD0E94240ACF70C093E900CF91B6 +:10172000089590932B0180932A010895E0912A0156 +:10173000F0912B01309721F00190F081E02D099478 +:1017400080E00895E0912A01F0912B01309721F07B +:101750000280F381E02D09940895209128013091B1 +:1017600029018217930771F0909329018093280132 +:10177000E0912A01F0912B01309721F00680F7814A +:10178000E02D0994089520912601309127018217B8 +:10179000930771F09093270180932601E0912A012D +:1017A000F0912B01309721F00084F185E02D099410 +:1017B000089508950C94D90B0E9488160E940E017A +:1017C0000C940E17CF92DF92EF92FF920F931F931C +:1017D000CF93DF9300D000D000D0CDB7DEB70E940A +:1017E0001E01EE24E394F12C0E2D8E2D0E944B0150 +:1017F0009701235D3E4F6901F9011081182771F1AE +:1018000090917C0191FF04C08E830E9451018E81D2 +:1018100012FD07C011FD08C010FF20C011E090E0CC +:1018200005C014E092E002C012E091E099830A83BF +:10183000812391E009F490E09B830E9491168160DE +:10184000782F9D838C8349815A816B818D810E9481 +:101850006C0CF60180811827108315C0EF2819F051 +:10186000E12CF12CC1CF8FEF89838A831B820E94E8 +:1018700091168160782F9D838C8349815A816B8179 +:101880008D810E946C0C10912C010E94960B1817F0 +:10189000A1F00E94960B80932C0126960FB6F89427 +:1018A000DEBF0FBECDBFDF91CF911F910F91FF9093 +:1018B000EF90DF90CF900C94450526960FB6F894E4 +:1018C000DEBF0FBECDBFDF91CF911F910F91FF9073 +:1018D000EF90DF90CF900895CF93DF93CDB7DEB731 +:1018E0002B970FB6F894DEBF0FBECDBF4F8358873E +:1018F00069877A878B87DE01119686E0FD01119258 +:101900008A95E9F785E0FE01379601900D928A9558 +:10191000E1F749815A816B817C818D819E810E9492 +:101920008A122B960FB6F894DEBF0FBECDBFDF91A3 +:10193000CF910895882309F4B9C0823859F40E94E0 +:10194000960B81FDB3C089E30E9468150E94EB15D8 +:1019500089E30CC0833871F40E94960B80FDA6C009 +:1019600083E50E9468150E94EB1583E50E948515AA +:101970000C94EB15843859F40E94960B82FD96C0A6 +:1019800087E40E9468150E94EB1587E4EFCF9CEF77 +:10199000980F913A18F40E946815EACF90E2980FD8 +:1019A000983050F4877091E001C0990F8A95EAF75A +:1019B000892F0E94A415DCCF9BE5980F933070F41B +:1019C000853A29F0863A31F083E890E005C081E855 +:1019D00090E002C082E890E00C94AD0B98E5980F7F +:1019E000933108F063C0883A39F1893A41F18A3A73 +:1019F00049F18B3A51F18C3A59F18D3A61F1803BC2 +:101A000069F18E3A71F18F3A79F1813B81F1823B34 +:101A100089F1833B91F1843B99F1853BA1F1863BB0 +:101A2000A9F1873BB1F1883BB9F1893BC1F18A3B10 +:101A3000C9F180E090E038C082EE90E035C089EED8 +:101A400090E032C08AEE90E02FC085EB90E02CC091 +:101A500086EB90E029C087EB90E026C08CEC90E00C +:101A600023C08DEC90E020C083E891E01DC08AE89F +:101A700091E01AC082E991E017C084E991E014C0B6 +:101A800081E292E011C083E292E00EC084E292E033 +:101A90000BC085E292E008C086E292E005C087E2D2 +:101AA00092E002C08AE292E00C94C30B089588236E +:101AB00009F44BC0823859F40E94960B81FF45C04F +:101AC00089E30E9468150E94EB1589E30CC08338F6 +:101AD00071F40E94960B80FF38C083E50E94681560 +:101AE0000E94EB1583E50E9485150C94EB15843854 +:101AF00059F40E94960B82FF28C087E40E94681563 +:101B00000E94EB1587E4EFCF9CEF980F913A58F3C2 +:101B100090E2980F983050F4877091E001C0990FCF +:101B20008A95EAF7892F0E94AA15DFCF9BE5980FC7 +:101B3000933020F480E090E00C94AD0B885A833110 +:101B400020F480E090E00C94C30B0895882321F0EA +:101B50000E94A4150C94EB150895882321F00E948F +:101B6000AA150C94EB1508957F928F929F92AF92D5 +:101B7000BF92CF92DF92EF92FF920F931F93CF937A +:101B8000DF931F92CDB7DEB77C01C62E772EFC0106 +:101B9000158112951F70028101110E94C1150E94CA +:101BA0006115882379F0002369F080E28C0D88307C +:101BB00048F082E00E944A150E94611591E0D82EFB +:101BC000D92601C0D12CE72DE295EF70F0E0EC5B57 +:101BD000FF4F0C946B17872D807F172D1F70882364 +:101BE00011F01295107F002389F0112309F46DC1C3 +:101BF00080E28C0D883020F4812F0E94A41503C050 +:101C0000812F0E94B4150E94EB155FC18C2D0E949C +:101C1000570D112309F472C180E28C0D883020F435 +:101C2000812F0E94AA1503C0812F0E94BA150E941D +:101C3000EB1564C1872D807F972D9F70803211F442 +:101C4000892F03C0892F8295807FCC2021F0F1E07D +:101C5000CF16A1F01DC0002339F0112319F1113066 +:101C600009F50E94D4154AC1112319F0113009F465 +:101C700045C189830E94D7158981E5C0002321F0E1 +:101C8000163008F03BC10EC0153008F037C1DBC07C +:101C9000002359F0112331F0F701958190FF15C110 +:101CA0009F7095830E94A60D29C1112309F4CBC012 +:101CB00012C1872D837009F052C001111FC18C2DF4 +:101CC000829586958770880F880F9C2D9F70892E2E +:101CD000912CA12CB12C082E04C0880C991CAA1C94 +:101CE000BB1C0A94D2F7C4FE14C00FE010E020E041 +:101CF00030E0B901A80104C0440F551F661F771FCB +:101D00008A95D2F7CB01BA01609570958095909530 +:101D100003C060E070E0CB01272D26952695237047 +:101D200030E02230310569F02330310589F068292F +:101D300079298A299B292130310571F00E94D61317 +:101D4000DDC0682979298A299B290E94F213D6C00F +:101D50000E94D613C501B4010E94BA13CFC000235C +:101D600019F0872D817001C08695882309F4C6C0BB +:101D70008C2D829586958770880F880F9C2D9F707B +:101D8000892E912CA12CB12C082E04C0880C991CF2 +:101D9000AA1CBB1C0A94D2F7C4FE14C00FE010E0CA +:101DA00020E030E0B901A80104C0440F551F661FB0 +:101DB000771F8A95D2F7CB01BA016095709580950F +:101DC000909503C060E070E0CB01272D2695269505 +:101DD0002370422F50E04230510569F043305105E5 +:101DE00089F0682979298A299B294130510571F0A8 +:101DF0000E94B01483C0682979298A299B290E94EE +:101E0000CC147CC00E94B014C501B4010E9494148B +:101E100075C08C2D90E0FC01E05EF109E531F10523 +:101E200008F04FC0EC5AFF4F0C946B171C2D1F701D +:101E3000872D8F71002321F00E942D14812F32CF26 +:101E40000E944E14812F0E94AD0D58C0002341F016 +:101E5000153008F053C0872D8F710E9473144EC047 +:101E6000163008F04BC0F7CF002339F0872D8F7163 +:101E70000E942D1443C00023C9F3872D8F710E9447 +:101E80004E143CC0002329F0872D8F710E94181436 +:101E900035C00E940E1432C0002351F0172D1F715F +:101EA000812F0E942D1463E0812F0E94411526C0CE +:101EB00081E00E944A15123008F182E00E944A1522 +:101EC0001DC0002331F0112389F28C2D0E949A0C41 +:101ED00015C0112391F28C2D0E94570D0FC0472D74 +:101EE0004F706C2DC7010E9478010E94321306C00A +:101EF000472D4F706C2DC7010E944602DD20F9F07E +:101F00000E943D1580FD1BC0F70112820E9437150B +:101F10000E942D14C7010E94AE0F0E9437150F902A +:101F2000DF91CF911F910F91FF90EF90DF90CF90B5 +:101F3000BF90AF909F908F907F900C944E140F9015 +:101F4000DF91CF911F910F91FF90EF90DF90CF9095 +:101F5000BF90AF909F908F907F9008950F931F93A5 +:101F6000CF93DF93EC01888199812B813C81232BD6 +:101F7000B9F09F3F11F48F3F99F0CE010E949E016E +:101F8000882371F0688179818A810E9433158C01E0 +:101F90000E94E8140E94AF13B801CE010E94B40D54 +:101FA000DF91CF911F910F9108950E94C1150E945A +:101FB000D1150E9496150C94EB150E94B1150C9446 +:101FC000D50F0E942815292F22952F7030E02C3034 +:101FD00031054CF42A3031056CF42250310922309D +:101FE0003105A8F407C02C30310569F02F303105D8 +:101FF00051F00DC0803F69F018F4803E40F409C0F4 +:10200000843F29F406C093FB882780F9089580E077 +:10201000089581E00895CF93DF9300D000D01F9200 +:10202000CDB7DEB70F900F900F900F900F90DF910C +:10203000CF910895CF93DF9300D000D000D0CDB7DB +:10204000DEB726960FB6F894DEBF0FBECDBFDF9188 +:10205000CF910895CF93DF93C0912F0180913001EC +:10206000C817A1F0D0E0CE0166E070E00E945A17D8 +:10207000FC01EF5CFE4F408151816281738184815C +:1020800095810E941A102196C770E8CFDF91CF91F9 +:1020900008954091610150916201609163017091D6 +:1020A000640180916501909166010C941A10CF93A0 +:1020B000DF938091660182958F7009F05CC08091FA +:1020C0006301882309F457C020912F01D09130017A +:1020D00040916101C0916201E0916401F09165015C +:1020E0002D1709F448C030E0309709F440C0CF3FC5 +:1020F00011F44F3FE1F1C90166E070E00E945A1708 +:10210000DC01AF5CBE4F11968C911197C8132FC0A4 +:102110008C9148132CC012968C911297811127C074 +:1021200013968D919C9114978E179F0708F4019731 +:102130008E1B9F0B883C9105D0F4809166018F70B7 +:10214000806180936601C90166E070E00E945A17C1 +:10215000FC01EA5CFE4F90819F709061908381E664 +:1021600091E00E94AE0FDF91CF910C942A102F5F67 +:102170003F4F2770B5CFDF91CF910895BF92CF9297 +:10218000DF92EF92FF920F931F93CF93DF93CDB720 +:10219000DEB761970FB6F894DEBF0FBECDBF8C01DE +:1021A00085E0F801DE011D9601900D928A95E1F718 +:1021B000D8014C9111962C9111971296EC90129790 +:1021C0001396CD90DC90149750916101609162015B +:1021D0008091640190916501009709F46EC16F3F91 +:1021E00019F45F3F09F469C1B0906301BB2009F4A1 +:1021F000C3C030916601C816D90628F0F601E81B65 +:10220000F90BCF0104C0809590958C0D9D1DFF2486 +:10221000F394883C910588F0F12C307F09F0CBC015 +:102220007C2DD98AC88A522F6E2D89890E940B1065 +:1022300081E691E00E94AE0FB4C0832F807F09F049 +:1022400049C0621314C0541312C0E11010C03F7093 +:102250003061309366010E94491081E691E00E944E +:10226000AE0F80916601D80115968C9331C0CD28B0 +:1022700031F12F3F11F44F3F11F1FE2CE1101FC03F +:10228000E0912F0130913001E31709F45CC0F0E0D8 +:10229000CF0166E070E00E945A17DC01AF5CBE4FD0 +:1022A00011968C911197281307C08C91481304C084 +:1022B00012968C91811103C03196E770E5CFFE2C08 +:1022C000EE2009F416C18091660181608093660159 +:1022D000F12C0FC1621308C0541306C0E11004C0F2 +:1022E00080916601D801C1C04D872E878D859E855E +:1022F0000E94E10F8823E1F1EE20D1F120916601E7 +:10230000822F82958F7090E0029774F08091610126 +:102310009091620198878F831986DB86CA862C8705 +:10232000CE0107960E94AE0F86E0F801A1E6B1E06B +:1023300001900D928A95E1F70E9457100E94491072 +:10234000FF24F394D6C04D872E878D859E850E94ED +:102350002815292F22952F7030E0223031050CF0FE +:10236000BCC09F7009F0B6C0805E883008F4C1C060 +:10237000C8010E94AE0FE4CFC816D90608F453C0B6 +:10238000F601E81BF90BCF01883C910508F450C019 +:10239000F12C7C2DD98AC88A522F6E2D89890E94F2 +:1023A0000B10E1E6F1E086E0DF011D928A95E9F786 +:1023B0000E9449109EC0621314C0541312C0E11051 +:1023C00010C080916601F8018583C8010E94AE0F9C +:1023D00086E0E1E6F1E0DF011D928A95E9F7FB2C4A +:1023E00088C04D872E878D859E850E94E10F8823AA +:1023F00009F4BECFEE2009F4BBCF20916601822FF5 +:1024000082958F7090E002970CF48ECF80916101DD +:10241000909162019A8389831B82DD82CC822E8314 +:10242000CE0101967FCF809590958C0D9D1DACCFF0 +:10243000FE2CEE2009F49CCF62132EC054132CC046 +:102440002091660120FD1FC0822F82958F70D9F0E8 +:10245000D80115962C9315978F3049F08F5F982FE0 +:102460009295907F822F8F70892B15968C93C8013F +:102470000E94AE0F86E0F801A1E6B1E001900D9256 +:102480008A95E1F795CF86E0F801A1E6B1E00190E9 +:102490000D928A95E1F72DC04D872E878D859E85FB +:1024A0000E94E10F811140CF80916601816080938D +:1024B0006601C8010E94AE0F1CC0EE2009F458CF7F +:1024C0004D872E878D859E850E94E10F882309F414 +:1024D0004FCF2ACF811148CF0CC0243031050CF0EA +:1024E00047CF9F7009F440CFF8019581907F09F0A4 +:1024F0003BCF8F2D61960FB6F894DEBF0FBECDBFD8 +:10250000DF91CF911F910F91FF90EF90DF90CF90CF +:10251000BF900895CF93DF93CDB7DEB72C970FB65A +:10252000F894DEBF0FBECDBF4F83588769877A8787 +:102530008B879C87CE0107960E94BE10882371F07E +:102540008F8198852A853B85232B09F43FC09F3FC7 +:1025500009F068C08F3F09F065C038C086E0FE0111 +:102560003796DE01119601900D928A95E1F76F8101 +:102570007885EA85FB85309749F17F3F11F46F3FFD +:1025800029F18091300190E09C012F5F3F4F27702F +:10259000332740912F0150E02417350709F44BC031 +:1025A00069837A83FD83EC8366E070E00E945A17AA +:1025B000DC01AF5CBE4F96E0FE01319601900D92BA +:1025C0009A95E1F7209330010E942A1080912F0103 +:1025D000909130018917E9F190E066E070E00E9487 +:1025E0005A178F5C9E4F0E94BE10882391F18091F4 +:1025F0002F0190E066E070E00E945A17FC01EF5C4A +:10260000FE4F4081518162817381848195810E9456 +:102610001A1080912F0190E001968770992780937E +:102620002F01D4CF4F81588569857A858B859C850C +:102630000E941A10CBCF0E94DD0F10923001109231 +:102640002F01E1E6F1E086E0DF011D928A95E9F7CE +:10265000BDCF2C960FB6F894DEBF0FBECDBFDF9175 +:10266000CF910895EF92FF920F931F93CF93DF9333 +:102670008C01009709F46CC0F12CEE24E394E8017E +:102680002196F8018491843740F4843008F051C0D9 +:10269000813081F0823019F15BC0853709F444C084 +:1026A000A8F19CE7980F903708F052C08F770E94EE +:1026B000570D41C00E5F1F4FFE01C49180E28C0F89 +:1026C000883048F4C7708E2D01C0880FCA95EAF78C +:1026D0000E94C41514C08C2F0E949A0C2DC00E5F4E +:1026E0001F4FFE01C49180E28C0F883058F4C770F0 +:1026F0008E2D01C0880FCA95EAF70E94CA150E9464 +:10270000EB151AC08C2F0E94570D16C00E5F1F4F7D +:10271000FE01C491CC2381F08FE99FE00197F1F78E +:1027200000C00000C150F6CF0E5F1F4FFE01F490B5 +:1027300003C00E949A0C8E018F2D882309F49FCF2D +:10274000EFE9FFE03197F1F700C000008150F5CFCD +:10275000DF91CF911F910F91FF90EF900895089511 +:1027600060936B0170936C0180936D0190936E0187 +:102770000C94D50F0F931F9300916B0110916C0176 +:1027800020916D0130916E01DC01CB01802B912BEA +:10279000A22BB32B80936B0190936C01A0936D01DE +:1027A000B0936E011F910F910C94D50F0F931F934F +:1027B00000916B0110916C0120916D0130916E01BF +:1027C000DC01CB0180239123A223B32380936B01EF +:1027D00090936C01A0936D01B0936E011F910F91C6 +:1027E0000C94D50F0F931F9300916B0110916C0106 +:1027F00020916D0130916E01DC01CB018027912782 +:10280000A227B32780936B0190936C01A0936D0175 +:10281000B0936E011F910F910C94D50F1092670128 +:10282000109268011092690110926A010C94D50F00 +:1028300041E050E060E070E004C0440F551F661FA7 +:10284000771F8A95D2F74093670150936801609390 +:10285000690170936A010C94D50F41E050E060E08B +:1028600070E004C0440F551F661F771F8A95D2F78A +:102870008091670190916801A0916901B0916A010E +:10288000482B592B6A2B7B2B40936701509368018F +:102890006093690170936A010C94D50F41E050E098 +:1028A00060E070E004C0440F551F661F771F8A95D3 +:1028B000D2F7409550956095709580916701909101 +:1028C0006801A0916901B0916A01482359236A23E4 +:1028D0007B23409367015093680160936901709373 +:1028E0006A010C94D50F41E050E060E070E004C054 +:1028F000440F551F661F771F8A95D2F78091670195 +:1029000090916801A0916901B0916A014827592707 +:102910006A277B27409367015093680160936901A0 +:1029200070936A010C94D50F0F931F930091670168 +:10293000109168012091690130916A01DC01CB019D +:10294000802B912BA22BB32B80936701909368016E +:10295000A0936901B0936A011F910F910C94D50F58 +:102960000F931F93009167011091680120916901F5 +:1029700030916A01DC01CB0180239123A223B32390 +:102980008093670190936801A0936901B0936A01F5 +:102990001F910F910C94D50F0F931F930091670116 +:1029A000109168012091690130916A01DC01CB012D +:1029B00080279127A227B32780936701909368010E +:1029C000A0936901B0936A011F910F910C94D50FE8 +:1029D0000895CF92DF92EF92FF920F931F93CF93C0 +:1029E000DF938C01C0906B01D0906C01E0906D0181 +:1029F000F0906E018091670190916801A09169014A +:102A0000B0916A01C82AD92AEA2AFB2ACFE1D0E08C +:102A1000D701C6010C2E04C0B695A795979587954A +:102A20000A94D2F780FF06C0B8018C2F0E94A3043D +:102A3000019721F4219760F780E001C08C2FDF918E +:102A4000CF911F910F91FF90EF90DF90CF9008955D +:102A5000CF93DF93EC010E94E914BE010E94A3040E +:102A6000DF91CF910895CB010E94281508958091A0 +:102A70006F01859585958595089580916F01877083 +:102A80000895982F990F990F990F692B60936F01F3 +:102A90000C942D1420916F018095822380936F01F7 +:102AA000982F977069F430E0482F552747FD5095CF +:102AB0002417350729F08595859585950C944E1436 +:102AC000089590916F01977081E009F480E0089576 +:102AD00020910B0130910C01F90132969FEF40E0FB +:102AE0005191581789F09F3F19F4511101C0942F4B +:102AF0004F5F4630A9F79F3F39F0F901E90FF11D0B +:102B000097FDFA9582830895089520910B013091E5 +:102B10000C01F9013296285F3F4F9081981301C054 +:102B200010823196E217F307C1F7089581E090E033 +:102B3000E0910B01F0910C01E80FF91F1082019652 +:102B400088309105A9F7089590917B01892B809396 +:102B50007B010895809590917B01892380937B016F +:102B6000089510927B01089590917A01892B8093AA +:102B70007A010895809590917A01892380937A0152 +:102B8000089510927A01089590917901892B80938C +:102B90007901089580959091790189238093790135 +:102BA000089510927901089580937001089510920C +:102BB0007001089580910B0190910C01FC013196F8 +:102BC0009C01285F3F4F80E0919191118F5FE21748 +:102BD000F307D1F70895E0910B01F0910C0180917A +:102BE0007B018083E0910B01F0910C019081809139 +:102BF0007A01892B8083E0910B01F0910C01908187 +:102C000080917901892B808380917001882361F004 +:102C1000E0910B01F0910C019081892B80830E943F +:102C2000DA1581111092700180910B0190910C01C5 +:102C30000C94A20B20E0009739F0AC0141505109EF +:102C4000842395232F5FF7CF822F089580918601EB +:102C5000843021F110927D0120E488E190E00FB6EC +:102C6000F894A895809360000FBE2093600080E0E8 +:102C70000E94450583B7817F846083BF83B78160ED +:102C800083BF7894889583B78E7F83BF88E10FB622 +:102C9000F89480936000109260000FBE089508952C +:102CA00008950E944F160E941E010E9450160E9415 +:102CB000520191E0811101C090E0892F08951F9287 +:102CC0000F920FB60F9211248F939F93AF93BF93E0 +:102CD00080917D01811113C080917E0190917F01CF +:102CE000A0918001B09181014196A11DB11D8093F9 +:102CF0007E0190937F01A0938001B0938101BF91E9 +:102D0000AF919F918F910F900FBE0F901F901895CC +:102D100082E084BD93E095BD9AEF97BD80936E00ED +:102D200008952FB7F89480917E0190917F01A09132 +:102D30008001B09181012FBF0895CF92DF92EF9271 +:102D4000FF920F931F932FB7F89440917E015091FB +:102D50007F0160918001709181012FBF6A017B0129 +:102D6000EE24FF248C0120E030E0C016D106E206FC +:102D7000F30610F4415051099A01281B390BC9017F +:102D80001F910F91FF90EF90DF90CF9008951F92C9 +:102D90000F920FB60F9211248F939F93AF93BF930F +:102DA00080917E0190917F01A0918001B09181017D +:102DB0000196A11DB11D80937E0190937F01A09388 +:102DC0008001B0938101BF91AF919F918F910F903E +:102DD0000FBE0F901F9018950E94CF08F8942FEF08 +:102DE00087EA91E6215080409040E1F700C0000062 +:102DF00087E090EBDC018093900190939101A09388 +:102E00009201B09393019CE088E10FB6F894A895E5 +:102E1000809360000FBE90936000FFCF0E943E172A +:102E2000811102C00E9424170E94491780937C01DF +:102E30000E94511780938F010E944D17682F70E0F8 +:102E400080E090E00C94B0136DEE7EEF80E090E0B7 +:102E50000E94911760E082E090E00E947F1760E09E +:102E600083E090E00E947F1760E084E090E00E94A1 +:102E70007F1760E085E090E00C947F1780E090E0A1 +:102E80000E94791721E08D3E9E4F09F020E0822FAD +:102E9000089582E090E00C94711783E090E00C9428 +:102EA000711784E090E00C947117682F84E090E033 +:102EB0000C947F170024552704C0080E591F880F53 +:102EC000991F009729F076956795B8F37105B9F7C2 +:102ED000802D952F0895EE0FFF1F0590F491E02DA2 +:102EE0000994F999FECF92BD81BDF89A992780B5D2 +:102EF0000895A8E1B0E042E050E00C949917262F25 +:102F0000F999FECF92BD81BDF89A019700B40216DF +:102F100039F01FBA20BD0FB6F894FA9AF99A0FBE8D +:102F200008950196272F0E9480170C947F17DC01CB +:102F3000CB01FC01F999FECF06C0F2BDE1BDF89AC4 +:102F4000319600B40D9241505040B8F70895F8946E +:022F5000FFCFB1 +:0E2F52004705B3054A057F054B0501710100D7 +:00000001FF diff --git a/keyboard/sixkeyboard/keymaps/default/keymap.c b/keyboard/sixkeyboard/keymaps/default/keymap.c new file mode 100644 index 000000000..641ed790e --- /dev/null +++ b/keyboard/sixkeyboard/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "sixkeyboard.h" +#include "matrix.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = { + {KC_A, KC_B, KC_C}, + {KC_D, KC_E, KC_F} + } +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + +void matrix_scan_user(void) { + // jump to bootloaer when all keys are pressed + if (matrix_get_row(0) == 0b111 && matrix_get_row(1) == 0b111) { + clear_keyboard(); + bootloader_jump(); + } +}; \ No newline at end of file diff --git a/keyboard/sixkeyboard/matrix.c b/keyboard/sixkeyboard/matrix.c new file mode 100644 index 000000000..6dc93cda1 --- /dev/null +++ b/keyboard/sixkeyboard/matrix.c @@ -0,0 +1,120 @@ +/* + +Note for ErgoDox EZ customizers: Here be dragons! +This is not a file you want to be messing with. +All of the interesting stuff for you is under keymaps/ :) +Love, Erez + +Copyright 2013 Oleg Kostyuk + +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 . +*/ + +/* + * scan matrix + */ +#include +#include +#include +#include +#include "action_layer.h" +#include "print.h" +#include "debug.h" +#include "util.h" +#include "matrix.h" +#include "sixkeyboard.h" + +/* matrix state(1:on, 0:off) */ +static matrix_row_t matrix[MATRIX_ROWS]; + +__attribute__ ((weak)) +void matrix_init_kb(void) { +} + +__attribute__ ((weak)) +void matrix_scan_kb(void) { +} + +inline +uint8_t matrix_rows(void) +{ + return MATRIX_ROWS; +} + +inline +uint8_t matrix_cols(void) +{ + return MATRIX_COLS; +} + +void matrix_init(void) +{ + + DDRC &= ~(1<<7); + PORTC |= (1<<7); + DDRB &= ~(1<<7 | 1<<5); + PORTB |= (1<<7 | 1<<5); + DDRD &= ~(1<<6 | 1<<4 | 1<<1); + PORTD |= (1<<6 | 1<<4 | 1<<1); + + matrix_init_kb(); + +} + +uint8_t matrix_scan(void) +{ + matrix[0] = (PINC&(1<<7) ? 0 : (1<<0)) | (PINB&(1<<7) ? 0 : (1<<1)) | (PINB&(1<<5) ? 0 : (1<<2)); + matrix[1] = (PIND&(1<<6) ? 0 : (1<<0)) | (PIND&(1<<1) ? 0 : (1<<1)) | (PIND&(1<<4) ? 0 : (1<<2)); + + matrix_scan_kb(); + + return 1; +} + +bool matrix_is_modified(void) +{ + return true; +} + +inline +bool matrix_is_on(uint8_t row, uint8_t col) +{ + return (matrix[row] & ((matrix_row_t)1<