diff options
author | Jack Humbert <jack.humb@gmail.com> | 2016-06-21 22:39:54 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-06-21 22:39:54 -0400 |
commit | 649b33d7783cf3021928534b7ae127e0a89e8807 (patch) | |
tree | c2b5e0cf8ff4aa2918e3b88ab75dbdb071cc0a1d /keyboards/cluepad | |
parent | 464c8e274f993d3571fe5ea5e836fe55a3912ffe (diff) |
Renames keyboard folder to keyboards, adds couple of tmk's fixes (#432)
* fixes from tmk's repo
* rename keyboard to keyboards
Diffstat (limited to 'keyboards/cluepad')
-rw-r--r-- | keyboards/cluepad/Makefile | 74 | ||||
-rw-r--r-- | keyboards/cluepad/backlight.c | 54 | ||||
-rw-r--r-- | keyboards/cluepad/cluepad.c | 35 | ||||
-rw-r--r-- | keyboards/cluepad/cluepad.h | 41 | ||||
-rw-r--r-- | keyboards/cluepad/config.h | 101 | ||||
-rw-r--r-- | keyboards/cluepad/keymaps/default/compiled.hex | 1123 | ||||
-rw-r--r-- | keyboards/cluepad/keymaps/default/keymap.c | 122 |
7 files changed, 1550 insertions, 0 deletions
diff --git a/keyboards/cluepad/Makefile b/keyboards/cluepad/Makefile new file mode 100644 index 0000000000..eb7a58025e --- /dev/null +++ b/keyboards/cluepad/Makefile @@ -0,0 +1,74 @@ + + +# # project specific files +SRC = backlight.c + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# 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 ?= yes # Virtual DIP switch configuration(+1000) +# MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +# EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +# CONSOLE_ENABLE ?= yes # Console for debug(+400) +# COMMAND_ENABLE ?= yes # Commands for debug and configuration +NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE ?= yes # Enable numpad's backlight functionality +RGBLIGHT_ENABLE ?= yes +# MIDI_ENABLE ?= YES # MIDI controls +# UNICODE_ENABLE ?= YES # Unicode +# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID + + +ifndef QUANTUM_DIR + include ../../Makefile +endif diff --git a/keyboards/cluepad/backlight.c b/keyboards/cluepad/backlight.c new file mode 100644 index 0000000000..a9caed1df8 --- /dev/null +++ b/keyboards/cluepad/backlight.c @@ -0,0 +1,54 @@ +#include <avr/io.h> +#include "backlight.h" +#include "led.h" + +#include "print.h" + +int pwm_level; + +void led_set_kb(uint8_t usb_led) +{ + print("led_set\n"); +} + +void init_backlight_pin(void) +{ + // Set C7 to output + DDRC |= (1<<7); + + // Initialize the timer + TC4H = 0x03; + OCR4C = 0xFF; + TCCR4A = 0b10000010; + TCCR4B = 0b00000001; +} + +void backlight_set(uint8_t level) +{ + // Determine the PWM level + switch (level) + { + case 0: + // 33% + pwm_level = 0x54; + break; + case 1: + // 66% + pwm_level = 0xA8; + break; + case 2: + // 100% + pwm_level = 0xFF; + break; + case 3: + // 0% + pwm_level = 0x00; + break; + default: + xprintf("Unknown level: %d\n", level); + } + + // Write the PWM level to the timer + TC4H = pwm_level >> 8; + OCR4A = 0xFF & pwm_level; +} diff --git a/keyboards/cluepad/cluepad.c b/keyboards/cluepad/cluepad.c new file mode 100644 index 0000000000..a4dbd6fdc2 --- /dev/null +++ b/keyboards/cluepad/cluepad.c @@ -0,0 +1,35 @@ +#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)(); + } + + #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)(); + } +}; diff --git a/keyboards/cluepad/cluepad.h b/keyboards/cluepad/cluepad.h new file mode 100644 index 0000000000..8635ee583a --- /dev/null +++ b/keyboards/cluepad/cluepad.h @@ -0,0 +1,41 @@ +#ifndef CLUEPAD_H +#define CLUEPAD_H + +#include "matrix.h" +#include "keymap.h" +#include <stddef.h> + + +/* Cluepad matrix layout + * .-------------------. + * |NLCK| /| *| -| + * |-------------------| + * | 7| 8| 9| | + * |--------------| | + * | 4| 5| 6| +| + * |-------------------| + * | 1| 2| 3| | + * |--------------| | + * | 0| .| Ent| + * '-------------------' + */ +// The first section contains all of the arguments +// The second converts the arguments into a two-dimensional array +#define KEYMAP( \ + k00, k01, k02, k03, \ + k10, k11, k12, k13, \ + k20, k21, k22, \ + k30, k31, k32, k33, \ + k40, k42 \ +) { \ + { k00, k01, k02, k03, }, \ + { k10, k11, k12, k13, }, \ + { k20, k21, k22, KC_NO, }, \ + { k30, k31, k32, k33, }, \ + { k40, KC_NO, k42, KC_NO } \ +} + +void matrix_init_user(void); +void matrix_scan_user(void); + +#endif diff --git a/keyboards/cluepad/config.h b/keyboards/cluepad/config.h new file mode 100644 index 0000000000..0955e0f702 --- /dev/null +++ b/keyboards/cluepad/config.h @@ -0,0 +1,101 @@ +/* +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/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xC1ED +#define PRODUCT_ID 0x2312 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Clueboard +#define PRODUCT Cluepad with RGB Underlighting +#define DESCRIPTION QMK keyboard firmware for Cluepad + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 4 + +// ROWS: Top to bottom, COLS: Left to right +/* Row pin configuration +* row: 0 1 2 3 4 +* pin: +*/ +#define MATRIX_ROW_PINS { B0, D3, D5, D4, D6 } +/* Column pin configuration + * col: 0 1 2 3 + * pin: F4 E6 B1 D2 + */ +#define MATRIX_COL_PINS { F4, E6, B1, D2 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Number of backlighting levels */ +#define BACKLIGHT_LEVELS 3 + +/* 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 + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* Underlight configuration + */ + #define ws2812_PORTREG PORTF + #define ws2812_DDRREG DDRF + #define ws2812_pin 6 + #define RGBLED_NUM 4 // Number of LEDs + #define RGBLIGHT_HUE_STEP 10 + #define RGBLIGHT_SAT_STEP 17 + #define RGBLIGHT_VAL_STEP 17 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* Debug forcibly enabled */ +#define ALWAYS_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboards/cluepad/keymaps/default/compiled.hex b/keyboards/cluepad/keymaps/default/compiled.hex new file mode 100644 index 0000000000..7a045783a1 --- /dev/null +++ b/keyboards/cluepad/keymaps/default/compiled.hex @@ -0,0 +1,1123 @@ +:100000000C9453020C9497020C9497020C94970250
+:100010000C9497020C9497020C9497020C949702FC
+:100020000C9497020C9497020C94C6110C9498129D
+:100030000C948B1F0C9497020C9497020C949702CB
+:100040000C9497020C9497020C9497020C949702CC
+:100050000C9497020C94F31F0C9497020C94970243
+:100060000C9497020C9497020C9497020C949702AC
+:100070000C9497020C9497020C9497020C9497029C
+:100080000C942E0D0C9497020C9497020C949702EA
+:100090000C9497020C9497020C9497020C9497027C
+:1000A0000C9497020C9497020C949702F1020D03A2
+:1000B000F502F902FD0201030503090305132713E5
+:1000C0001514271315146C138F131514E413F71359
+:1000D000A916A916D816D8166218621862186218DE
+:1000E00017176218C717C7172E18371862185C1829
+:1000F000D417D417D417D417D417D417D417D417A8
+:10010000D417D417D417D417D417D417D417D41797
+:10011000E417F217F91700180A1800F001F002F0BE
+:1001200003F004F005F006F007F0534154005500C9
+:1001300056005F006000610057005C005D005E00DB
+:10014000000059005A005B00580062000000630084
+:1001500000005341010001000020010004200100C3
+:10016000062003208350022000000100052001002A
+:1001700007200120000001000000643214643214E2
+:10018000783C1E1E140A0500000000010101020255
+:10019000030405050607090A0B0C0E0F11121415AE
+:1001A00017191B1D1F212325282A2C2F31343639DE
+:1001B0003B3E414346494C4F5255585A5D61646736
+:1001C0006A6D707376797C7F8386898C8F9295981F
+:1001D0009B9EA2A5A7AAADB0B3B6B9BCBEC1C4C60A
+:1001E000C9CBCED0D3D5D7DADCDEE0E2E4E6E8EA6C
+:1001F000EBEDEEF0F1F3F4F5F6F8F9FAFAFBFCFDAD
+:10020000FDFEFEFEFFFFFFFFFFFFFFFEFEFEFDFD0A
+:10021000FCFBFAFAF9F8F6F5F4F3F1F0EEEDEBEA9F
+:10022000E8E6E4E2E0DEDCDAD7D5D3D0CECBC9C64F
+:10023000C4C1BEBCB9B6B3B0ADAAA7A5A29E9B98D7
+:1002400095928F8C898683807C797673706D6A67CE
+:1002500064615D5A5855524F4C494643413E3B39C3
+:100260003634312F2C2A282523211F1D1B19171541
+:100270001412110F0E0C0B0A0907060505040302E0
+:10028000020101010000000001010202020202025B
+:10029000030303030303030303030303030304042C
+:1002A0000404040404040404040405050505050508
+:1002B00005050505060606060606060607070707DE
+:1002C0000707070808080808080909090909090AA9
+:1002D0000A0A0A0A0B0B0B0B0B0C0C0C0C0C0D0D69
+:1002E0000D0D0E0E0E0E0F0F0F101010101111111C
+:1002F00012121213131314141415151616161717B9
+:1003000018181919191A1A1B1B1C1C1D1D1E1E1F3B
+:10031000202021212223232424252626272828299A
+:100320002A2B2B2C2D2E2F303031323334353637CB
+:1003300038393A3B3C3D3E3F4041424445464749BF
+:100340004A4B4C4E4F5152535556585A5B5D5E6066
+:1003500062636567696B6D6E70727476797B7D7FA1
+:10036000818486888B8D909295979A9D9FA2A5A84F
+:10037000ABAEB1B4B7BABEC1C4C8CBCFD3D6DADE48
+:10038000E2E6EAEEF2F8FF3E0343006C007500651A
+:10039000007000610064002000770069007400684C
+:1003A000002000520047004200200055006E00640B
+:1003B00000650072006C00690067006800740069E5
+:1003C000006E0067000000140343006C00750065B8
+:1003D0000062006F00610072006400000004030905
+:1003E0000409023B00020100A0FA09040000010315
+:1003F000010100092111010001223F0007058103CD
+:1004000008000A090401000103000000092111018C
+:1004100000012239000705820310000112011001BA
+:1004200000000008EDC112230100010200010501D6
+:100430000906A101050719E029E71500250195081E
+:1004400075018102050819012905950575019102BB
+:1004500095017503910105071900297715002501FC
+:10046000957875018102C005010906A101050719EA
+:10047000E029E715002501950875018102950175B0
+:100480000881010508190129059505750191029555
+:1004900001750391010507190029FF150025FF9536
+:1004A0000675088100C011241FBECFEFDAE0DEBF61
+:1004B000CDBF04B603FE24C08091E1019091E2011A
+:1004C000A091E301B091E4018730904BA740B04B7D
+:1004D000B9F41092E1011092E2011092E30110923E
+:1004E000E40114BE84B7877F84BF88E10FB6F89417
+:1004F00080936000109260000FBEE0E0F8E3099581
+:1005000011E0A0E0B1E0E0E0F6E402C005900D9259
+:10051000AA31B107D9F711E0AAE1B1E001C01D92FB
+:10052000A13EB107E1F70E940D0F0C94FE220C943E
+:10053000000008953F9A83E08093BF008FEF80937F
+:10054000D10082E88093C00081E08093C1000895CB
+:10055000813069F048F0823089F0833091F4109254
+:10056000BD011092BC010DC084E590E002C088EA94
+:1005700090E09093BD018093BC0103C08FEF90E0A9
+:10058000F8CF8091BD018093BF008091BC01809322
+:10059000CF000895089508958AEC92E0892B11F018
+:1005A0000E94CA020E949A020E94A50A85B780682A
+:1005B00085BF85B7806885BF08958BEC92E0892B55
+:1005C00011F00C94CB020895462F50E048305105AD
+:1005D00038F5FA01EA5AFF4FDC0112968C910C941F
+:1005E000B0228823E9F00C94E20A8823C9F00C9425
+:1005F000A4098823A9F00C94BC09882389F00C94E1
+:10060000DB09882369F00C94F609882349F00C94DF
+:10061000100A882329F00C942B0A81110C94D80A13
+:10062000089581E0089581E008950C9413030895DE
+:100630000F931F93CF93DF938C01FC01C081D18175
+:10064000CE010E94BA1DBE010E94C703EC01B80191
+:100650000E941503882309F48DC0F8018281882344
+:1006600009F44AC08091250181111FC0C431F0E511
+:10067000DF0709F051C00E94170381E08093250134
+:100680000E94BD1F909324018093230110921C01AE
+:1006900010921E0110921D011092200110921F0154
+:1006A000109222011092210165C080912301909146
+:1006B00024010E94C91F883C910570F480911C019F
+:1006C000E82FF0E0EE0FFF1FE35EFE4FD183C08303
+:1006D0008F5F80931C014EC0C43880E5D80721F09D
+:1006E000C538D04501F13AC0F8018281882341F034
+:1006F00010921A0182E01EC0C438E0E5DE0759F509
+:1007000080911A01811106C086E20E94581586E286
+:100710000E94151682E01CC0C438F0E5DF0741F3E3
+:10072000C538D045D9F4F8018281882331F0109280
+:100730001B0180E20E9464161DC080911B01811183
+:1007400006C087E20E94581587E20E94151680E2D3
+:100750000E946B160FC0C538D04529F381E0809305
+:100760001A0180931B01C801DF91CF911F910F9156
+:100770000C94110380E0DF91CF911F910F910895A8
+:100780000C94CC020C94DD0280E090E00895E72FF9
+:10079000F0E095E0899FE00DF11D1124EE0FFF1FA1
+:1007A000EE0FFF1FE60FF11DEE0FFF1FE65DFE4F80
+:1007B000859194910895880F991FFC01E656F040A9
+:1007C000859194910895880F991FFC01E65EFE4F74
+:1007D0008591949108950F931F93CF93DF93EC012C
+:1007E000811521E39207A0F5C11580E3D80708F031
+:1007F000D7C0C83ED105D8F4C03ED10508F003C229
+:10080000C83AD10578F4C53AD10508F06AC0C130BC
+:10081000D10509F463C008F4F3C1C430D10508F070
+:10082000F2C1EEC1CB3BD10508F466C0E9C1C115E8
+:1008300090E2D90708F0AFC0C11521E0D20708F057
+:10084000E2C1C03FD10508F4DBC18E0110651BC2B7
+:10085000C03880E5D80700F5C03790E5D90708F023
+:10086000A3C0C11520E5D20709F4ACC050F4CE01F5
+:10087000905480319F4008F0C3C1DF708E01106A30
+:1008800002C2C13080E5D80709F4AAC0C43190E59E
+:10089000D90708F4ABC0B4C1C33820E5D20709F4C6
+:1008A0008EC050F4C13890E5D90709F482C008F031
+:1008B00083C000E011EDE7C1C03181E5D80708F43D
+:1008C0009FC1C11597E5D90708F432C1CE019057F1
+:1008D0008115904108F094C1DF708FC101E010E0F4
+:1008E000D2C1C53AD10509F490C1C63AD10509F083
+:1008F0008FC102E810E4C7C1C83AD10509F48BC121
+:10090000C93AD10509F48AC1CA3AD10509F489C1A5
+:10091000CB3AD10509F488C1CC3AD10509F487C195
+:10092000CD3AD10509F486C1C03BD10509F485C192
+:10093000CE3AD10509F484C1CF3AD10509F483C177
+:10094000C13BD10509F482C1C23BD10509F481C183
+:10095000C33BD10509F480C1C43BD10509F47FC173
+:10096000C53BD10509F47EC1C63BD10509F47DC163
+:10097000C73BD10509F47CC1C83BD10509F47BC153
+:10098000C93BD10509F47AC1CA3BD10509F479C143
+:1009900000E014E478C1CE019F700E94E30374C1AB
+:1009A000DD278E01106C6FC1CF70DD278E01146DB5
+:1009B0006AC100E010ED67C100E012ED64C100E023
+:1009C00013ED61C10E94C1188FEF94E32CE08150B8
+:1009D00090402040E1F700C000000E94182053C161
+:1009E0008091B60181608093B6014DC10E94C22101
+:1009F000811102C00E94A3210E94DF2190E0909308
+:100A0000E0018093DF01C23080E5D80721F48091B6
+:100A1000DF01816086C0C43090E5D90721F4809160
+:100A2000DF0182607EC0C63020E5D20721F48091CC
+:100A3000DF01846076C0C83080E5D80719F4809162
+:100A4000DF0127C0CA3090E5D90721F48091DF018A
+:100A5000806167C0CC3020E5D20721F48091DF01AE
+:100A600080625FC0CE3080E5D80721F48091DF013D
+:100A7000806457C0C03190E5D90721F48091DF012F
+:100A800080684FC0C23120E5D20729F48091DF0190
+:100A90008460886046C0C33080E5D80721F4809127
+:100AA000DF018E7F3EC0C53090E5D90721F48091EB
+:100AB000DF018D7F36C0C73020E5D20721F4809159
+:100AC000DF018B7F2EC0C93080E5D80719F48091F3
+:100AD000DF0126C0CB3090E5D90721F48091DF01FA
+:100AE0008F7E1FC0CD3020E5D20721F48091DF0139
+:100AF0008F7D17C0CF3080E5D80721F48091DF01CA
+:100B00008F7B0FC0C13190E5D90721F48091DF01BF
+:100B10008F7707C0C331D04531F48091DF018B7FDF
+:100B2000877F8093DF018091DF010E94E321ABC0CA
+:100B30008D2F99278F70992781309105D9F49E01C7
+:100B40002370332702C0880F991F2A95E2F79C680B
+:100B50008E0144E0000F111F4A95E1F70027137042
+:100B6000802B912B53E0CC0FDD1F5A95E1F7C07617
+:100B7000DD272FC08230910531F4DC2FCC278E0188
+:100B8000016F106A80C08330910569F4CE018370D3
+:100B9000992701E010E002C0000F111F8A95E2F7CB
+:100BA000C8019C680FC084309105B9F4CE018370F0
+:100BB000992701E010E002C0000F111F8A95E2F7AB
+:100BC000C8019A6823E0CC0FDD1F2A95E1F7C07EAB
+:100BD000D7708C010C2B1D2B56C08530910531F43C
+:100BE000DC2FCC278E01046F106A4DC0069709F0E8
+:100BF0004AC0CF71DD27DC2FCC278E01106243C0A5
+:100C000000E010E040C08E013EC001E810E43BC0AF
+:100C100003E810E438C002EE14E435C009EE14E431
+:100C200032C00AEE14E42FC005EB14E42CC006EB2E
+:100C300014E429C007EB14E426C00CEC14E423C030
+:100C40000DEC14E420C003E815E41DC00AE815E427
+:100C50001AC002E915E417C004E915E414C001E262
+:100C600016E411C003E216E40EC004E216E40BC061
+:100C700005E216E408C006E216E405C007E216E441
+:100C800002C00AE216E4C801DF91CF911F910F91D3
+:100C90000895E72FF0E095E0899FE00DF11D112404
+:100CA000EE0FFF1FEE0FFF1FE60FF11DEE0FFF1FF0
+:100CB000E65DFE4F85919491803E9105E0F4803C85
+:100CC000910558F58133910509F46FC048F48932D4
+:100CD000910509F463C08A32910509F46DC072C0B0
+:100CE00089339105E9F082389105D1F0853391057A
+:100CF00009F44DC067C0833E910581F138F4803E10
+:100D00009105B9F0823E9105D9F05CC0863E91050F
+:100D100061F1873E9105A1F155C00E94DB03089562
+:100D20002091DF0120FD02C021FF4CC080EE90E049
+:100D300049C08091DF0180FFF9CF89E390E042C094
+:100D40008091DF0182FF0EC08091DF0184FF03C02C
+:100D500080E090E037C083EE90E034C08091DF0106
+:100D600082FFF2CF82EE90E02DC08091DF0183FF01
+:100D70000BC08091DF0184FDEBCF87EE90E022C0B5
+:100D80008091DF0183FFF5CF86EE90E01BC080915C
+:100D9000DF0185FF07C089E290E014C08091DF0188
+:100DA00085FFF9CF85E390E00DC08091DF0186FFDC
+:100DB00007C08AE290E006C08091DF0186FFF9CF8C
+:100DC00081E390E00E94EB0308950C949902E82FD0
+:100DD000F0E0EC5EFE4F8081E82FEF70F0E082954E
+:100DE0008F7021E030E0A90102C0440F551F8A95A1
+:100DF000E2F740A308950F931F93CF93DF9385B736
+:100E0000806885BF85B7806885BFC4E0D0E001E019
+:100E100010E0FE01EC5EFE4F8081E82FEF70F0E005
+:100E200021A182958F70A80102C0440F551F8A9599
+:100E3000E2F7CA01822B81A38C2F0E94E70621973B
+:100E400040F783E090E061E070E0FC01E05FFE4F7E
+:100E50002081E22FEF70F0E042A122952F70DB019C
+:100E600002C0AA0FBB1F2A95E2F79D01242B22A3E3
+:100E7000019758F7DF91CF911F910F910C94C00308
+:100E8000EF92FF920F931F93CF93DF930BE211E04A
+:100E9000C4E0EE24E394F12CD5E08C2F0E94E70609
+:100EA00083E090E040E0FC01E05FFE4F5081E52FE1
+:100EB000EF70F0E020A130E052955F7002C03595F0
+:100EC00027955A95E2F720FD07C09701082E01C02B
+:100ED000220F0A94EAF7422B019728F7F801829132
+:100EE0008F01841719F04083D09300018C2F0E944A
+:100EF000E706C15090F68091000187FD1CC081502B
+:100F0000809300018F3F39F08FE99FE00197F1F75F
+:100F100000C0000010C080E090E0FC01E55DFE4FE5
+:100F2000DC01AA5DBE4F14962C91248301978B3F60
+:100F3000EFEF9E0791F70E94C20381E0DF91CF910E
+:100F40001F910F91FF90EF900895E82FF0E0E55D7D
+:100F5000FE4F8081089508950F931F93CF9300E370
+:100F600011E0C0E0F80182918F0190E00E94351FEE
+:100F7000C80FF1E00B321F07A9F78C2FCF911F91FB
+:100F80000F91089521B3342F3095232331B3432B90
+:100F90003FB7F894FC01680F791FE617F70789F04F
+:100FA000819198E041BB000000C087FF21BB880F02
+:100FB000000000C000C000C021BB00C09A9591F79E
+:100FC000ECCF3FBF089520B3242B20BB9B01220F01
+:100FD000331F620F731F0E94C20787EC90E00197D6
+:100FE000F1F700C00000089540E40C94E307AF92CD
+:100FF000BF92CF92DF92EF92FF920F931F93CF9306
+:10100000DF936C01790150E0FA01E957FD4F4491FB
+:101010008FEF90E0FC01E61BF109E957FD4FE491E9
+:10102000E09509F495C0C42FD0E08E1B91098C9FE8
+:1010300090018D9F300D9C9F300D1124E32F8CE388
+:10104000A82EB12CC601B5010E948822DC016230B5
+:10105000710509F446C0D0F46115710599F161304C
+:10106000710509F079C0C31BD109B501681B790B63
+:10107000C69FC001C79F900DD69F900D1124B5014A
+:101080000E948822032F060F142F67C06430710559
+:1010900009F44BC0B8F16530710509F05DC0C31BA0
+:1010A000D109B501681B790BC69FC001C79F900D80
+:1010B000D69F900D1124B5010E948822132FE32F93
+:1010C000E60F44C0C31BD109CC9DC001CD9D900D3E
+:1010D000DC9D900D1124B5010E948822132F160F5C
+:1010E00035C0C31BD109CA9FC001CB9F900DDA9FA9
+:1010F000900D1124B5010E948822142F032FE32F95
+:10110000E60F2BC0C31BD109B501681B790BC69F25
+:10111000C001C79F900DD69F900D1124B5010E946C
+:101120008822132F160F032F0FC0C31BD109CA9F8C
+:10113000C001CB9F900DDA9F900D1124B5010E9444
+:101140008822032F060F132FE42F07C0042F05C09A
+:10115000E42F142F042F01C0E0E0D70111960C9367
+:1011600011971C931296EC93DF91CF911F910F91E1
+:10117000FF90EF90DF90CF90BF90AF90089587E001
+:1011800090E00C94BE22AB01BC0187E090E00C948F
+:10119000DC22EEEBF1E083E08083AFEBB1E08C91F9
+:1011A000807884668F778C938CEC828383836091C4
+:1011B000BE017091BF018091C0019091C1010C945A
+:1011C000C3088091BE0180FF06C064E070E086EC39
+:1011D00091E00C94F40780E090E0FC01EA53FE4FAC
+:1011E00011821082128203968C309105B1F7EDCFF7
+:1011F00020E030E0F901EA53FE4F818360834283AF
+:101200002D5F3F4F2C303105A9F70C94E108EF9288
+:10121000FF920F931F93CF93DF9300D01F92CDB710
+:10122000DEB70091BE011091BF012091C001309145
+:10123000C1010093C2011093C3012093C4013093F4
+:10124000C5012091BE0120FF21C0042FF62EE92EFA
+:10125000182F9E012F5F3F4F0E94F7078091C20118
+:1012600010FB87F98093C20116958091C3018078A5
+:10127000182BE0FA17F91093C301F092C401009300
+:10128000C5014B8169818A810E94F8080F900F90F7
+:101290000F90DF91CF911F910F91FF90EF900895E4
+:1012A0000F931F93CF93DF93EC01062F142F909190
+:1012B000BE0190FF44C0892F8E77823021F4CE0189
+:1012C0000E9407091BC0892F86958F732EE3280F74
+:1012D0002F73243018F41091C10110C0865C8F73F5
+:1012E000893060F4C92FCC1FCC27CC1FD091BF010F
+:1012F0008D2F880FC82BD7FBDD27D0F98091BE0139
+:10130000C0FB87F98093BE01C6958091BF018078AC
+:10131000C82BD0FBC7F9C093BF010093C001109345
+:10132000C1016091BE017091BF018091C001909197
+:10133000C101DF91CF911F910F910C94C308DF91F0
+:10134000CF911F910F910895EEEBF1E02081221FC4
+:101350002227221F3091BF01432F440F842F822B5D
+:1013600037FB992790F90A9668E671E00E949C2263
+:10137000438162810C9450092091BE01221F2227D3
+:10138000221F3091BF01432F440F842F822B37FB44
+:10139000992790F98A3091051CF4825A9E4F01C01A
+:1013A0000A9768E671E00E949C224091C101609119
+:1013B000C0010C9450096091C001862F90E08F3ECF
+:1013C000910514F46F5E01C06FEF8091BE01881F1C
+:1013D0008827881F9091BF01292F220F97FB9927FB
+:1013E00090F94091C101822B0C9450096091C00189
+:1013F000862F90E0419714F0615101C060E0809128
+:10140000BE01881F8827881F9091BF01292F220FB6
+:1014100097FB992790F94091C101822B0C945009B8
+:101420004091C101842F90E08F3E910514F44F5EEE
+:1014300001C04FEF8091BE01881F8827881F9091BF
+:10144000BF01292F220F97FB992790F96091C001C6
+:10145000822B0C9450094091C101842F90E0419758
+:1014600014F0415101C040E08091BE01881F8827DF
+:10147000881F9091BF01292F220F97FB992790F980
+:101480006091C001822B0C9450098091410181111F
+:101490000FC081E08093410189E0809391008FB774
+:1014A000F89493E09093990090ED909398008FBFFB
+:1014B0000895E1E7F0E08081826080830895E1E7AC
+:1014C000F0E080818D7F808308959091BE0190FF30
+:1014D0003BC09178811102C0926007C0883110F042
+:1014E0009E6203C08F73880F982B9093BE0160910A
+:1014F000BE017091BF018091C0019091C1010E9415
+:10150000C3088091BE01982F9E77923019F40E94F3
+:101510005F0A07C08695825C8F73863110F40E9443
+:10152000590A8091BE01881F8827881F9091BF01AA
+:10153000292F220F97FB992790F94091C1016091C3
+:10154000C001822B0C94500908958091B6018160EE
+:101550008093B60181E0809342010E94C2218111F3
+:1015600004C00E94A3210E94C9080E94BF08609382
+:10157000BE017093BF018093C0019093C1016E774B
+:1015800061F40E94C9080E94BF086093BE01709375
+:10159000BF018093C0019093C1010E94450A8091D0
+:1015A000BE0180FF04C086958F730C94650A089570
+:1015B0008091BE0186958F738F5F883108F081E03E
+:1015C0000C94650A8091BE01982F909590FB80F94C
+:1015D0008093BE016091BE017091BF018091C001F6
+:1015E0009091C1010E94C3088091BE0180FF04C098
+:1015F00086958F730C94650A0E945F0A2FEF80E72F
+:1016000092E0215080409040E1F700C000000C942F
+:10161000E108CF93C82F80913F01909140010E9433
+:10162000C91FEC2FF0E0ED57FE4FE491F0E08E176C
+:101630009F0718F10E94BD1F9093400180933F01C6
+:10164000E0913E01F0E0E957FE4F44918091BE01E8
+:10165000881F8827881F9091BF01292F220F97FB91
+:10166000992790F96091C001822B0E94070980910F
+:101670003E0190E0019680933E01CF910895CF9373
+:10168000C82F80913C0190913D010E94C91FEC2F11
+:10169000F0E0E058FE4FE491F0E08E179F07E8F08D
+:1016A0000E94BD1F90933D0180933C014091C10178
+:1016B0006091C00180913A0190913B010E9407091D
+:1016C00080913A0190913B01019668E671E00E9499
+:1016D000882290933B0180933A01CF910895CF9255
+:1016E000DF92FF920F931F93CF93DF93F82E809199
+:1016F0003801909139010E94C91FEF2DE695F0E065
+:10170000E058FE4FE491F0E08E179F07F0F10E9441
+:10171000BD1F909339018093380106EC11E0C0E0C1
+:10172000D0E088E6C82EDD24D394809136019091D4
+:1017300037018C0F9D1FB6010E94882298014091AD
+:10174000C1016091C0010E94F707C65ADF4F0D5FCB
+:101750001F4FC83681E0D80741F70E94E108209169
+:10176000360130913701F0FE0AC0C9010196BE0171
+:101770000E948822909337018093360106C0215041
+:1017800031093093370120933601DF91CF911F91BA
+:101790000F91FF90DF90CF9008958F929F92AF921C
+:1017A000BF92CF92DF92EF92FF920F931F93CF934E
+:1017B000DF93C82F80FF03C0DD24DA9402C0DD244C
+:1017C000D39480913401909135010E94C91FC69530
+:1017D000EC2FF0E0E358FE4FE491F0E08E179F0706
+:1017E00008F466C00E94BD1F9093350180933401B8
+:1017F00096ECE92E91E0F92E08EC11E0C0E0D0E083
+:1018000027E0822E912CF80131971082F701108287
+:10181000F801108287E0A82EB12CC12C80913301F1
+:101820008C0D87FD8C5F992787FD9095C817D90788
+:10183000E9F42091C1012A9DC0012B9D900D112436
+:10184000B4010E949C22462F8091BE01881F8827E8
+:10185000881F9091BF01592F550F97FB992790F939
+:1018600097016091C001852B0E94F707CD0CF1E034
+:10187000AF1AB10899F6219683E0E80EF11C0D5FCE
+:101880001F4FC430D10509F0BECF0E94E1088091FE
+:10189000330191E0D91206C0811102C083E006C075
+:1018A000815004C090E001968370992780933301A2
+:1018B000DF91CF911F910F91FF90EF90DF90CF902C
+:1018C000BF90AF909F908F9008959F92AF92BF92DC
+:1018D000CF92DF92EF92FF920F931F93CF93DF93FC
+:1018E000CDB7DEB72C970FB6F894DEBF0FBECDBFD5
+:1018F000182F80913101909132010E94C91FE12F70
+:10190000F0E0E658FE4FE491F0E08E179F0708F4F0
+:1019100093C00E94BD1F9093320180933101CE018C
+:1019200001967C015E0193E0A90EB11CC12CD12C63
+:101930008701F50131971082F7011082F5011082BD
+:10194000912C9091010180913001999E800D11247C
+:1019500087FD04C084301CF083E001C080E099273B
+:1019600087FD9095C816D906A1F48091BE01881F05
+:101970008827881F9091BF01592F550F97FB9927F2
+:1019800090F997014091C1016091C001852B0E949F
+:10199000F7079394F7E09F12D4CF8FEFC81AD80AB5
+:1019A00093E0E90EF11CE3E0AE0EB11CF4E0CF16BB
+:1019B000D10409F0BECFA8ECB1E089E090E0FC01D1
+:1019C000E370FF279D0121503109AF01440F551FDE
+:1019D000E40FF51FBF01600F711FFB014181F90189
+:1019E000408321503109FB014081F9014083FB0113
+:1019F00022812C93019613968D30910501F70E9458
+:101A0000E1089091010180913001913049F48A3FC1
+:101A10002CF489EF809330018FEF08C081500AC009
+:101A20008B303CF08AE08093300181E080930101AB
+:101A300003C08F5F809330012C960FB6F894DEBF01
+:101A40000FBECDBFDF91CF911F910F91FF90EF900F
+:101A5000DF90CF90BF90AF909F9008951F920F920C
+:101A60000FB60F9211242F933F934F935F936F9371
+:101A70007F938F939F93AF93BF93EF93FF93809147
+:101A8000BE0186958F739EE3980F9F73943020F468
+:101A900082500E94090B23C09AE3980F9F739330E2
+:101AA00020F486500E943F0B1AC097E3980F9F7353
+:101AB000963020F489500E946F0B11C091E3980F6B
+:101AC0009F73963020F48F500E94CD0B08C09BE28C
+:101AD000980F9F73933018F485510E94650CFF9105
+:101AE000EF91BF91AF919F918F917F916F915F9196
+:101AF0004F913F912F910F900FBE0F901F9018950F
+:101B00008091530108950895CF93DF9300D01F92E1
+:101B1000CDB7DEB72091D601243021F523E029830B
+:101B20009B838A8381E08093E9008FEF9091E800A6
+:101B3000815095FD06C095ED9A95F1F70000811151
+:101B4000F5CF8091E80085FF0DC040E050E063E0F4
+:101B500070E0CE0101960E94B60F8091E8008E776A
+:101B60008093E8000F900F900F90DF91CF91089530
+:101B7000CF93DF9300D01F92CDB7DEB72091D6016F
+:101B8000243021F522E029839B838A8381E080939E
+:101B9000E9008FEF9091E800815095FD06C095ED2A
+:101BA0009A95F1F700008111F5CF8091E80085FF4B
+:101BB0000DC040E050E063E070E0CE0101960E946D
+:101BC000B60F8091E8008E778093E8000F900F9019
+:101BD0000F90DF91CF910895CF93DF932091D6019D
+:101BE000243009F048C0EC0180910C018823E1F019
+:101BF00080910D018823C1F082E08093E9008FEF8E
+:101C00009091E800815095FD06C095E19A95F1F715
+:101C100000008111F5CF8091E80085FF2CC040E0E5
+:101C200050E060E170E017C081E08093E9008FEF41
+:101C30009091E800815095FD06C095ED9A95F1F7D9
+:101C400000008111F5CF8091E80085FF14C040E0CD
+:101C500050E068E070E0CE010E94B60F8091E8008D
+:101C60008E778093E80080E1FE01A3E4B1E001906B
+:101C70000D928A95E1F7DF91CF9108958091D5017A
+:101C8000811109C00E944B110E94A8118091E200AD
+:101C900084608093E20008951092D501089508951C
+:101CA00008950C94801F42E061EC81E00E94C51011
+:101CB00042E161EC82E00C94C5108091D801833040
+:101CC00009F453C030F4813071F0823009F48CC0D3
+:101CD00008958A3009F478C08B3009F45EC08930E9
+:101CE00009F09AC020C08091D701813A09F094C0D0
+:101CF0008091E800877F8093E8008091DB019091DC
+:101D0000DC01892B21F460E183E491E003C060E011
+:101D100080E090E070E00E9401108091E8008B77F5
+:101D20008093E80008958091D701813209F074C052
+:101D30008091DB019091DC01029708F06DC08091E9
+:101D4000E800877F8093E8008091E80082FD05C06D
+:101D50008091D6018111F8CF5FC08091F10080930E
+:101D600053018091E8008B7753C08091D701813A6D
+:101D700009F052C08091DB019091DC01892B09F0C0
+:101D80004BC08091E800877F8093E8008091E80055
+:101D900080FFFCCF80910C0136C08091D701813249
+:101DA000D9F58091DB019091DC01892BA9F5809117
+:101DB000E800877F8093E8000E94FA108091D901A3
+:101DC00080930C010C94C1188091D701813221F5C8
+:101DD0008091E800877F8093E8000E94FA1080914C
+:101DE000DA018093540108958091D701813AA1F4DA
+:101DF0008091E800877F8093E8008091E80080FF71
+:101E0000FCCF809154018093F1008091E8008E779F
+:101E10008093E8000C94FA10089584B7877F84BFFC
+:101E200088E10FB6F89480936000109260000FBEB6
+:101E300090E080E80FB6F894809361009093610081
+:101E40000FBE0E9492140E944B110E94A811809113
+:101E5000E20084608093E20078940E942E140E9435
+:101E6000941482E091E00E9449148091D60185305B
+:101E700069F40E94411F8091D4018823B1F30E942C
+:101E80006F1F882391F30E94A00FEFCF0E949C1434
+:101E9000ECCF292F332723303105C9F064F42130EA
+:101EA000310581F02230310509F042C08BE390E02A
+:101EB00021EE33E041C021323105F1F0223231050B
+:101EC00049F136C082E190E02CE134E035C0992739
+:101ED0008130910541F08230910541F0892B41F527
+:101EE000EDEDF3E005C0E7ECF3E002C0E7E8F3E076
+:101EF000849190E09F0120C0662339F06130C1F4E5
+:101F000089E090E02CE034E017C089E090E023EF16
+:101F100033E012C0662339F0613051F489E390E078
+:101F20002EE234E009C08FE390E027E634E004C0FD
+:101F300080E090E020E030E0FA01318320830895D2
+:101F400080E189BD82E189BD09B400FEFDCF8091A9
+:101F5000D8008F7D8093D8008091E00082608093CC
+:101F6000E0008091E00081FDFCCF0895CF92DF92E8
+:101F7000EF92FF920F931F93CF93DF93EC018B01AE
+:101F80006A010E941911811133C0C114D10439F0C2
+:101F9000F60180819181081B190BC80FD91FE12C14
+:101FA000F12C0115110519F18091E80085FD16C08D
+:101FB0008091E8008E778093E800C114D10449F045
+:101FC000F60180819181E80EF91EF182E08285E0C0
+:101FD0000FC00E941911882321F30AC089918093B0
+:101FE000F10001501109FFEFEF1AFF0ADACF80E08C
+:101FF000DF91CF911F910F91FF90EF90DF90CF90E5
+:1020000008952091DD013091DE012617370748F051
+:102010006115710539F42091E8002E772093E800CE
+:1020200001C0B90140E061157105A9F12091D60107
+:10203000222309F443C0253009F442C02091E8006E
+:1020400023FD40C02091E80022FD32C02091E8002D
+:1020500020FFE9CF4091F3002091F20030E0342BD3
+:10206000FC01CF016115710559F02830310540F4AC
+:1020700081918093F100615071092F5F3F4FF1CF43
+:1020800041E02830310509F040E02091E8002E774A
+:102090002093E800C8CF4111C9CF0AC08091D60172
+:1020A000882361F0853061F08091E80083FD0AC0EB
+:1020B0008091E80082FFF2CF80E0089582E00895E9
+:1020C00083E0089581E008952091DD013091DE01E3
+:1020D0002617370748F06115710539F42091E8009B
+:1020E0002E772093E80001C0B901FC0120E06115C2
+:1020F000710591F18091D601882309F440C08530A3
+:1021000009F43FC08091E80083FD3DC08091E80064
+:1021100082FD2FC08091E80080FFE9CF2091F3007D
+:102120008091F20090E0922B6115710559F0883092
+:10213000910540F424912093F1003196615071098A
+:102140000196F2CF21E0089709F020E08091E800A5
+:102150008E778093E800CBCF2111CCCF0AC080913D
+:10216000D601882361F0853061F08091E80083FD1D
+:102170000AC08091E80082FFF2CF80E0089582E0FB
+:10218000089583E0089581E00895982F973058F5D9
+:102190009093E900981739F07091EC002091ED00D0
+:1021A0005091F00003C0242F762F50E021FF19C07A
+:1021B0003091EB003E7F3093EB003091ED003D7F9E
+:1021C0003093ED003091EB0031603093EB00709371
+:1021D000EC002093ED005093F0002091EE0027FFDB
+:1021E00007C09F5FD3CF8F708093E90081E008958F
+:1021F00080E008958091D70187FF11C08091E800A9
+:1022000082FD05C08091D6018111F8CF11C0809167
+:10221000E8008B770BC08091D601882349F080912C
+:10222000E80080FFF8CF8091E8008E778093E80087
+:1022300008952091E4003091E50095E64091EC008E
+:10224000842F817040FF22C08091E80080FD1CC077
+:102250008091D601882391F0853091F08091EB0038
+:1022600085FD10C04091E4005091E50042175307EE
+:1022700029F39A01915011F784E0089582E00895BE
+:1022800083E0089581E0089580E008954091E8009A
+:1022900042FFDECF08950E94B9110E94C111E0EE05
+:1022A000F0E0808181608083E8EDF0E080818F77CD
+:1022B000808319BCA7EDB0E08C918E7F8C938081D8
+:1022C0008F7E80831092D50108950F931F93CF9333
+:1022D000DF930E94B9110E94C111C8EDD0E088813E
+:1022E0008F77888388818068888388818F7D8883C1
+:1022F00019BC1092D6011092D2011092D401109202
+:10230000D30100EE10E0F80180818B7F808388810B
+:102310008160888342E060E080E00E94C510E1EEC9
+:10232000F0E080818E7F8083E2EEF0E0808181604A
+:102330008083808188608083F80180818E7F8083A4
+:10234000888180618883DF91CF911F910F910895DB
+:10235000E8EDF0E080818F7E8083E7EDF0E0808122
+:102360008160808384E082BF81E08093D5010C94FA
+:102370006511E8EDF0E080818E7F80831092E200AD
+:1023800008951092DA001092E10008951F920F92C2
+:102390000FB60F9211242F933F934F935F936F9338
+:1023A0007F938F939F93AF93BF93EF93FF9380910E
+:1023B000E10082FF0BC08091E20082FF07C08091A4
+:1023C000E1008B7F8093E1000E942D148091DA0060
+:1023D00080FF1FC08091D80080FF1BC08091DA0071
+:1023E0008E7F8093DA008091D90080FF0DC080E15C
+:1023F00089BD82E189BD09B400FEFDCF81E08093F3
+:10240000D6010E943E0E05C019BC1092D6010E9452
+:102410004C0E8091E10080FF19C08091E20080FFA6
+:1024200015C08091E2008E7F8093E2008091E200EF
+:1024300080618093E2008091D80080628093D80010
+:1024400019BC85E08093D6010E94500E8091E10076
+:1024500084FF30C08091E20084FF2CC080E189BD00
+:1024600082E189BD09B400FEFDCF8091D8008F7D47
+:102470008093D8008091E1008F7E8093E10080916D
+:10248000E2008F7E8093E2008091E2008160809381
+:10249000E2008091D201882311F084E007C080918E
+:1024A000E30087FD02C081E001C083E08093D60194
+:1024B0000E94510E8091E10083FF29C08091E200CB
+:1024C00083FF25C08091E100877F8093E10082E057
+:1024D0008093D6011092D2018091E1008E7F80938B
+:1024E000E1008091E2008E7F8093E2008091E20023
+:1024F00080618093E20042E060E080E00E94C510CD
+:102500008091F00088608093F0000E944F0EFF9150
+:10251000EF91BF91AF919F918F917F916F915F915B
+:102520004F913F912F910F900FBE0F901F901895D4
+:102530001F920F920FB60F9211242F933F934F9338
+:102540005F936F937F938F939F93AF93BF93CF933B
+:10255000DF93EF93FF93C091E900CF708091EC007F
+:10256000D82FD17080FDD0E81092E9008091F00062
+:10257000877F8093F00078940E94DC121092E9002B
+:102580008091F00088608093F000CD2BCF70C093D5
+:10259000E900FF91EF91DF91CF91BF91AF919F91B2
+:1025A0008F917F916F915F914F913F912F910F90FC
+:1025B0000FBE0F901F9018951F93CF93DF93CDB749
+:1025C000DEB7AA970FB6F894DEBF0FBECDBFE7ED1A
+:1025D000F1E088E08E0F9091F10091938E13FBCF84
+:1025E0000E945D0E8091E80083FF1FC18091D7019A
+:1025F0009091D801492F50E04A30510508F015C19B
+:10260000FA01E25AFF4F0C94B022803881F08238F0
+:1026100009F00BC18091DB018F708093E9008091FC
+:10262000EB0085FB882780F91092E90006C08091B5
+:10263000D3019091D401911182609091E800977F2D
+:102640009093E8008093F1001092F100C8C0282F09
+:102650002D7F09F0EAC0882319F0823061F0E5C0CF
+:102660008091D901813009F0E0C0933009F080E019
+:102670008093D4012BC08091D901811127C0809112
+:10268000DB018F7009F4D1C08093E9002091EB0049
+:1026900020FF1CC0933021F48091EB00806214C0B5
+:1026A0009091EB0090619093EB0021E030E0A90164
+:1026B00002C0440F551F8A95E2F74093EA0010923A
+:1026C000EA008091EB0088608093EB001092E900B3
+:1026D0008091E800877F86C08111A7C01091D90141
+:1026E0001F778091E3008078812B8093E3008091B5
+:1026F000E800877F8093E8000E94FA108091E8004C
+:1027000080FFFCCF8091E30080688093E30011118B
+:1027100002C082E001C083E08093D60186C0805869
+:10272000823008F082C08091D9019091DA018C3D0D
+:1027300053E0950779F583E08A838AE289834FB76E
+:10274000F894DE01139620E03EE051E2E32FF0E042
+:1027500050935700E49120FF03C0E295EF703F5F74
+:10276000EF708E2F90E0EA3010F0C79601C0C0964F
+:102770008D939D932F5F243149F74FBF8091E800DF
+:10278000877F8093E8006AE270E0CE0101960E94A4
+:10279000011014C0AE014F5F5F4F6091DB010E94DA
+:1027A000490FBC01009709F440C09091E800977F61
+:1027B0009093E80089819A810E9464108091E800DA
+:1027C0008B778093E80031C0803879F58091E800FC
+:1027D000877F8093E8008091D2018093F1008091FF
+:1027E000E8008E778093E8000E94FA101EC08111E5
+:1027F0001CC09091D9019230C0F48091E800877F8D
+:102800008093E8009093D2010E94FA108091D20147
+:10281000811106C08091E30087FD02C081E001C004
+:1028200084E08093D6010E94530E8091E80083FFDC
+:102830000AC08091E800877F8093E8008091EB00D8
+:1028400080628093EB00AA960FB6F894DEBF0FBEAD
+:10285000CDBFDF91CF911F9108950895CF938091BF
+:10286000D6018823A1F0C091E900CF709091EC00CF
+:10287000892F817090FD80E8C82B1092E90080912B
+:10288000E80083FD0E94DC12CF70C093E900CF9175
+:10289000089590935A01809359010895E091590148
+:1028A000F0915A01309721F00190F081E02D0994C8
+:1028B00080E00895E0915901F0915A01309721F09C
+:1028C0000280F381E02D0994089520915701309101
+:1028D00058018217930771F0909358018093570124
+:1028E000E0915901F0915A01309721F00680F7816B
+:1028F000E02D0994089520915501309156018217D9
+:10290000930771F09093560180935501E09159011E
+:10291000F0915A01309721F00084F185E02D09945F
+:10292000089508950C9491140E94B41F0E94FB0610
+:102930000E9476200C94F121CF92DF92EF92FF92C9
+:102940000F931F93CF93DF9300D000D000D0CDB76B
+:10295000DEB70E94400784E0E82EF12C0E2D8E2D6C
+:102960000E94A5079701245A3E4F6901F901108181
+:102970001827A9F4F1E0EF1AF10880F78FEF8983A7
+:102980008A831B820E94BD1F8160782F9D838C8368
+:1029900049815A816B818D810E942A1532C09091A4
+:1029A000B60191FF04C08E830E94AB078E8113FD98
+:1029B00009C012FD0AC011FD0BC010FFDBCF90E073
+:1029C00011E008C093E018E005C092E014E002C0F6
+:1029D00091E012E099830A83812391E009F490E069
+:1029E0009B830E94BD1F8160782F9D838C834981CA
+:1029F0005A816B818D810E942A15F60180811827EA
+:102A0000108310915B010E944E141817A1F00E94D0
+:102A10004E1480935B0126960FB6F894DEBF0FBE6E
+:102A2000CDBFDF91CF911F910F91FF90EF90DF907D
+:102A3000CF900C94E50626960FB6F894DEBF0FBE35
+:102A4000CDBFDF91CF911F910F91FF90EF90DF905D
+:102A5000CF900895CF93DF93CDB7DEB72B970FB606
+:102A6000F894DEBF0FBECDBF4F83588769877A8742
+:102A70008B87DE01119686E0FD0111928A95E9F7B8
+:102A800085E0FE01379601900D928A95E1F7498124
+:102A90005A816B817C818D819E810E945F1B2B9668
+:102AA0000FB6F894DEBF0FBECDBFDF91CF91089572
+:102AB000882309F4B9C0823859F40E944E1481FD6C
+:102AC000B3C089E30E94391E0E94061F89E30CC02F
+:102AD000833871F40E944E1480FDA6C083E50E94E5
+:102AE000391E0E94061F83E50E947B1E0C94061F60
+:102AF000843859F40E944E1482FD96C087E40E94E7
+:102B0000391E0E94061F87E4EFCF9CEF980F913A81
+:102B100018F40E94391EEACF90E2980F983050F4D2
+:102B2000877091E001C0990F8A95EAF7892F0E947A
+:102B3000BF1EDCCF9BE5980F933070F4853A29F0E7
+:102B4000863A31F083E890E005C081E890E002C069
+:102B500082E890E00C94651498E5980F933108F0A2
+:102B600063C0883A39F1893A41F18A3A49F18B3A9E
+:102B700051F18C3A59F18D3A61F1803B69F18E3A0D
+:102B800071F18F3A79F1813B81F1823B89F1833B8D
+:102B900091F1843B99F1853BA1F1863BA9F1873BFB
+:102BA000B1F1883BB9F1893BC1F18A3BC9F180E0C1
+:102BB00090E038C082EE90E035C089EE90E032C0FF
+:102BC0008AEE90E02FC085EB90E02CC086EB90E081
+:102BD00029C087EB90E026C08CEC90E023C08DEC00
+:102BE00090E020C083E891E01DC08AE891E01AC01F
+:102BF00082E991E017C084E991E014C081E292E09B
+:102C000011C083E292E00EC084E292E00BC085E244
+:102C100092E008C086E292E005C087E292E002C03E
+:102C20008AE292E00C947B140895882309F44BC047
+:102C3000823859F40E944E1481FF45C089E30E94F6
+:102C4000391E0E94061F89E30CC0833871F40E946C
+:102C50004E1480FF38C083E50E94391E0E94061F73
+:102C600083E50E947B1E0C94061F843859F40E9451
+:102C70004E1482FF28C087E40E94391E0E94061F5E
+:102C800087E4EFCF9CEF980F913A58F390E2980FBA
+:102C9000983050F4877091E001C0990F8A95EAF757
+:102CA000892F0E94C51EDFCF9BE5980F933020F43B
+:102CB00080E090E00C946514885A833120F480E021
+:102CC00090E00C947B140895882321F00E94BF1E8D
+:102CD0000C94061F0895882321F00E94C51E0C94B1
+:102CE000061F08957F928F929F92AF92BF92CF92CC
+:102CF000DF92EF92FF920F931F93CF93DF931F9278
+:102D0000CDB7DEB77C01C62E772EFC01058102957A
+:102D10000F70128111110E94DC1E0E94321E882346
+:102D200079F0112369F080E28C0D883048F082E060
+:102D30000E941B1E0E94321E91E0D82ED92601C08F
+:102D4000D12CE72DE295EF70F0E0E859FF4F0C949D
+:102D5000B022872D807F072D0F70882311F00295F8
+:102D6000007F112389F0002309F46EC180E28C0DED
+:102D7000883020F4802F0E94BF1E03C0802F0E9445
+:102D8000CF1E0E94061F60C18C2D0E9415160023C5
+:102D900009F498C180E28C0D883020F4802F0E94C5
+:102DA000C51E03C0802F0E94D51E0E94061F8AC127
+:102DB000872D807F972D9F70803211F4892F03C05B
+:102DC000892F8295807FCC2021F0F1E0CF16A1F0F1
+:102DD0001DC0112339F0002319F1013009F50E94BB
+:102DE000EF1E70C1002319F0013009F46BC1898313
+:102DF0000E94F21E8981E5C0112321F0063008F0FF
+:102E000061C10EC0053008F05DC1DBC0112359F06F
+:102E1000002331F0F701958190FF16C19F709583D3
+:102E20000E9464164FC1002309F4CBC013C1872D43
+:102E3000837009F052C0111145C18C2D8295869581
+:102E40008770880F880F9C2D9F70892E912CA12C44
+:102E5000B12C082E04C0880C991CAA1CBB1C0A9417
+:102E6000D2F7C4FE14C00FE010E020E030E0B9015A
+:102E7000A80104C0440F551F661F771F8A95D2F71B
+:102E8000CB01BA01609570958095909503C060E084
+:102E900070E0CB01272D26952695237030E0223057
+:102EA000310569F02330310589F0682979298A29AB
+:102EB0009B292130310571F00E94A71C03C16829AC
+:102EC00079298A299B290E94C31CFCC00E94A71C47
+:102ED000C501B4010E948B1CF5C0112319F0872D88
+:102EE000817001C08695882309F4ECC08C2D8295F1
+:102EF00086958770880F880F9C2D9F70892E912C46
+:102F0000A12CB12C082E04C0880C991CAA1CBB1C37
+:102F10000A94D2F7C4FE14C00FE010E020E030E0C5
+:102F2000B901A80104C0440F551F661F771F8A9579
+:102F3000D2F7CB01BA01609570958095909503C04A
+:102F400060E070E0CB01272D269526952370422F57
+:102F500050E04230510569F04330510589F068294D
+:102F600079298A299B294130510571F00E94811DE0
+:102F7000A9C0682979298A299B290E949D1DA2C080
+:102F80000E94811DC501B4010E94651D9BC08C2D4E
+:102F900090E0FC01E05EF109E531F10508F050C078
+:102FA000E858FF4F0C94B0220C2D0F70872D8F71B5
+:102FB000112321F00E94FE1C802F32CF0E941F1D82
+:102FC000802F0E946B167EC0112341F0053008F05F
+:102FD00079C0872D8F710E94441D74C0063008F09F
+:102FE00071C0F7CF112339F0872D8F710E94FE1C1D
+:102FF00069C01123C9F3872D8F710E941F1D62C004
+:10300000112329F0872D8F710E94E91C5BC00E945B
+:10301000DF1C58C0112351F0172D1F71812F0E9402
+:10302000FE1C63E0812F0E94121E4CC081E00E94B2
+:103030001B1E023008F446C082E00E941B1E42C0E4
+:10304000112331F0002381F28C2D0E9458153AC0D3
+:10305000002389F28C2D0E94151634C0472D4F7025
+:103060006C2DC7010E94C4030E94031C2BC01111C8
+:1030700029C0472D4F7050E042305105B9F04CF453
+:103080004115510581F041305105E1F40E941922AA
+:1030900019C04330510569F04430510599F48C2D25
+:1030A0000E946B220FC00E9402220CC00E94352297
+:1030B00009C00E94482206C0472D4F706C2DC701E1
+:1030C0000E94E402DD20F9F00E940E1E80FD1BC06C
+:1030D000F70112820E94081E0E94FE1CC7010E9476
+:1030E00092180E94081E0F90DF91CF911F910F91AF
+:1030F000FF90EF90DF90CF90BF90AF909F908F9018
+:103100007F900C941F1D0F90DF91CF911F910F9115
+:10311000FF90EF90DF90CF90BF90AF909F908F90F7
+:103120007F9008950F931F93CF93DF93EC018881D5
+:1031300099812B813C81232BB9F09F3F11F48F3F64
+:1031400099F0CE010E941803882371F0688179817B
+:103150008A810E94041E8C010E94B91D0E94801C5D
+:10316000B801CE010E947216DF91CF911F910F918D
+:1031700008950E94DC1E0E94EC1E0E94B11E0C9459
+:10318000061F0E94CC1E0C94B9180E94F91D292F0D
+:1031900022952F7030E02C3031054CF42A30310567
+:1031A0006CF42250310922303105A8F407C02C30CC
+:1031B000310569F02F30310551F00DC0803F69F0C5
+:1031C00018F4803E40F409C0843F29F406C093FB04
+:1031D000882780F9089580E0089581E00895CF93CD
+:1031E000DF9300D000D01F92CDB7DEB70F900F90C5
+:1031F0000F900F900F90DF91CF910895CF93DF93B1
+:1032000000D000D000D0CDB7DEB726960FB6F89428
+:10321000DEBF0FBECDBFDF91CF9108951F93CF9337
+:10322000DF93C091610116E080916201C81799F0A7
+:10323000D0E01C9FF0011D9FF00D1124ED59FE4FB1
+:103240004081518162817381848195810E94FE1841
+:103250002196C770E9CFDF91CF911F9108954091DA
+:103260009301509194016091950170919601809124
+:103270009701909198010C94FE1880919801829585
+:103280008F7009F054C080919501882309F44FC0D4
+:1032900080916101A091620160919301709194010C
+:1032A0004091960150919701B6E08A1709F43FC00A
+:1032B00090E041155105C1F17F3F11F46F3FA1F13D
+:1032C000B89FF001B99FF00D1124ED59FE4F2181F7
+:1032D00072132AC02081621327C02281211124C0C9
+:1032E000238134812417350710F421503109241B20
+:1032F000350B283C3105C0F4209198012F702061D6
+:103300002093980126E0289FF001299FF00D1124B9
+:10331000E859FE4F80818F708061808383E991E05E
+:103320000E9492180C940E1901968770BECF0895D2
+:10333000CF92DF92EF92FF920F931F93CF93DF9381
+:10334000CDB7DEB762970FB6F894DEBF0FBECDBF24
+:103350008C0185E0F801DE011D9601900D928A95A1
+:10336000E1F7D8014C9111965C91119712966C91EE
+:1033700012971396CD90DC90149730919301709131
+:1033800094018091960190919701009709F46BC187
+:103390007F3F19F43F3F09F466C1E0909501EE20AC
+:1033A00009F4C0C020919801C816D90628F0F6018A
+:1033B000E81BF90BCF0104C0809590958C0D9D1DE5
+:1033C000FF24F394883C910578F0F12C207F09F0DC
+:1033D000C6C07C2DD98AC88A89890E94EF1883E9E2
+:1033E00091E00E949218B1C0822F807F09F046C000
+:1033F000751314C0341312C0611110C02F702061F6
+:10340000209398010E942F1983E991E00E9492185D
+:1034100080919801D80115968C932EC0CD2819F172
+:103420005F3F11F44F3FF9F0F62E61111CC08091FF
+:1034300061012091620136E0821709F45AC090E0E0
+:10344000389FF001399FF00D1124ED59FE4F718125
+:10345000571306C07081471303C07281711103C0F6
+:1034600001968770E9CFF62E662309F418C1809182
+:103470009801816080939801F12C11C1751308C0E7
+:10348000341306C0611104C080919801D801C3C0F3
+:103490004D875E878D859E856A8B0E94C5186A89D7
+:1034A0008823E1F16623D1F120919801822F829542
+:1034B0008F7090E0029774F0809193019091940145
+:1034C00098878F831986DB86CA862C87CE0107965C
+:1034D0000E94921886E0F801A3E9B1E001900D92F4
+:1034E0008A95E1F70E943D190E942F19FF24F39459
+:1034F000D6C04D875E878D859E850E94F91D292F38
+:1035000022952F7030E0223031050CF0BCC09F7046
+:1035100009F0B6C0805E883008F4C1C0C8010E94BE
+:103520009218E4CFC816D90608F453C0F601E81B78
+:10353000F90BCF01883C910508F450C0F12C7C2D8B
+:10354000D98AC88A89890E94EF18E3E9F1E086E008
+:10355000DF011D928A95E9F70E942F19A0C075130B
+:1035600014C0341312C0611110C080919801F80189
+:103570008583C8010E94921886E0E3E9F1E0DF014B
+:103580001D928A95E9F7FE2C8AC04D875E878D854E
+:103590009E856A8B0E94C5186A89882309F4BECF6C
+:1035A000662309F4BBCF20919801822F82958F70FA
+:1035B00090E002970CF48ECF80919301909194014A
+:1035C0009A8389831B82DD82CC822E83CE01019671
+:1035D0007FCF809590958C0D9D1DACCFF62E6623E8
+:1035E00009F49CCF75132EC034132CC02091980180
+:1035F00020FD1FC0822F82958F70D9F0D8011596BB
+:103600002C9315978F3049F08F5F982F9295907F6C
+:10361000822F8F70892B15968C93C8010E94921867
+:1036200086E0F801A3E9B1E001900D928A95E1F7F7
+:1036300093CF86E0F801A3E9B1E001900D928A955D
+:10364000E1F72DC04D875E878D859E850E94C51848
+:10365000811140CF80919801816080939801C801C9
+:103660000E9492181CC0662309F458CF4D875E87CC
+:103670008D859E850E94C518882309F44FCF2ACFD7
+:10368000811148CF0CC0243031050CF047CF9F701A
+:1036900009F440CFF8019581907F09F03BCF8F2D41
+:1036A00062960FB6F894DEBF0FBECDBFDF91CF910B
+:1036B0001F910F91FF90EF90DF90CF9008951F938F
+:1036C000CF93DF93CDB7DEB72C970FB6F894DEBF5C
+:1036D0000FBECDBF4F83588769877A878B879C87BA
+:1036E000CE0107960E949819882369F08F819885EA
+:1036F0002A853B85232BF1F19F3F09F063C08F3F63
+:1037000009F060C037C086E0FE013796DE011196F1
+:1037100001900D928A95E1F76F817885EA85FB85A6
+:10372000309741F17F3F11F46F3F21F12091620109
+:1037300030E0C9010196877099274091610150E0FE
+:103740008417950709F447C069837A83FD83EC8366
+:1037500096E0929FD001939FB00D1124AD59BE4FBA
+:10376000FE01319601900D929A95E1F780936201E6
+:103770000E940E1916E080916101909162018917F3
+:10378000C1F1189FC00111248D599E4F0E949819B4
+:10379000882379F1E09161011E9FF0011124ED5918
+:1037A000FE4F4081518162817381848195810E94A5
+:1037B000FE188091610190E00196877099278093AF
+:1037C0006101D9CF4F81588569857A858B859C8524
+:1037D0000E94FE18CFCF0E94C11810926201109271
+:1037E0006101E3E9F1E086E0DF011D928A95E9F7E6
+:1037F000C1CF2C960FB6F894DEBF0FBECDBFDF91C0
+:10380000CF911F910895EF92FF920F931F93CF9343
+:10381000DF938C01009709F46CC0F12CEE24E39443
+:10382000E8012196F8018491843740F4843008F04F
+:1038300051C0813081F0823019F15BC0853709F4C5
+:1038400044C0A8F19CE7980F903708F052C08F77DA
+:103850000E94151641C00E5F1F4FFE01C49180E209
+:103860008C0F883048F4C7708E2D01C0880FCA9520
+:10387000EAF70E94DF1E14C08C2F0E9458152DC03D
+:103880000E5F1F4FFE01C49180E28C0F883058F408
+:10389000C7708E2D01C0880FCA95EAF70E94E51EF9
+:1038A0000E94061F1AC08C2F0E94151616C00E5FAC
+:1038B0001F4FFE01C491CC2381F08FE99FE0019757
+:1038C000F1F700C00000C150F6CF0E5F1F4FFE01A0
+:1038D000F49003C00E9458158E018F2D882309F49F
+:1038E0009FCFEFE9FFE03197F1F700C00000815072
+:1038F000F5CFDF91CF911F910F91FF90EF90089539
+:10390000089560939D0170939E0180939F01909311
+:10391000A0010C94B9180F931F9300919D01109171
+:103920009E0120919F013091A001DC01CB01802BF1
+:10393000912BA22BB32B80939D0190939E01A0937A
+:103940009F01B093A0011F910F910C94B9180F9390
+:103950001F9300919D0110919E0120919F01309134
+:10396000A001DC01CB0180239123A223B323809308
+:103970009D0190939E01A0939F01B093A0011F9180
+:103980000F910C94B9180F931F9300919D01109102
+:103990009E0120919F013091A001DC01CB01802785
+:1039A0009127A227B32780939D0190939E01A09316
+:1039B0009F01B093A0011F910F910C94B918109220
+:1039C000990110929A0110929B0110929C010C9403
+:1039D000B91841E050E060E070E004C0440F551FAA
+:1039E000661F771F8A95D2F74093990150939A01E9
+:1039F00060939B0170939C010C94B91841E050E0D6
+:103A000060E070E004C0440F551F661F771F8A9561
+:103A1000D2F78091990190919A01A0919B01B09168
+:103A20009C01482B592B6A2B7B2B40939901509377
+:103A30009A0160939B0170939C010C94B91841E02A
+:103A400050E060E070E004C0440F551F661F771F10
+:103A50008A95D2F74095509560957095809199011F
+:103A600090919A01A0919B01B0919C014823592308
+:103A70006A237B234093990150939A0160939B01A1
+:103A800070939C010C94B91841E050E060E070E044
+:103A900004C0440F551F661F771F8A95D2F7809187
+:103AA000990190919A01A0919B01B0919C014827A6
+:103AB00059276A277B274093990150939A01609375
+:103AC0009B0170939C010C94B9180F931F93009164
+:103AD000990110919A0120919B0130919C01DC0188
+:103AE000CB01802B912BA22BB32B80939901909328
+:103AF0009A01A0939B01B0939C011F910F910C948C
+:103B0000B9180F931F930091990110919A01209178
+:103B10009B0130919C01DC01CB0180239123A223E6
+:103B2000B3238093990190939A01A0939B01B09342
+:103B30009C011F910F910C94B9180F931F93009142
+:103B4000990110919A0120919B0130919C01DC0117
+:103B5000CB0180279127A227B327809399019093C7
+:103B60009A01A0939B01B0939C011F910F910C941B
+:103B7000B9180895CF92DF92EF92FF920F931F939F
+:103B8000CF93DF938C01C0909D01D0909E01E09077
+:103B90009F01F090A0018091990190919A01A091CC
+:103BA0009B01B0919C01C82AD92AEA2AFB2ACFE1BD
+:103BB000D0E0D701C6010C2E04C0B695A795979505
+:103BC00087950A94D2F780FF06C0B8018C2F0E9417
+:103BD0004906019721F4219760F780E001C08C2FFE
+:103BE000DF91CF911F910F91FF90EF90DF90CF90D9
+:103BF0000895CF93DF93EC010E94BA1DBE010E948D
+:103C00004906DF91CF910895CB010E94F91D0895D7
+:103C10008091A10185958595859508958091A10153
+:103C20008770089598E0899F90011124262B209396
+:103C3000A1010C94FE1C2091A10180958223809308
+:103C4000A101982F977069F430E0482F552747FD60
+:103C500050952417350729F08595859585950C9401
+:103C60001F1D08959091A101977081E009F480E0F3
+:103C7000089590910C01992321F090910D019111DB
+:103C800009C020910E0130910F01F90132969FEF8A
+:103C900040E01FC0982F9695969596959F3050F5C9
+:103CA000E0910E01F0910F01E90FF11D877021E005
+:103CB00030E0A90102C0440F551F8A95E2F7CA01FE
+:103CC0009181892B818308959F3F39F04F5F4E305A
+:103CD00041F051915813F8CF0DC05111F7CF942FE7
+:103CE000F5CF9F3F39F0F901E90FF11D97FDFA95E6
+:103CF00082830895089590910C01992321F0909169
+:103D00000D01911109C020910E0130910F01F901AF
+:103D10003296205F3F4F1FC0982F969596959695A7
+:103D20009F30F0F4E0910E01F0910F01E90FF11DC9
+:103D3000877021E030E0A90102C0440F551F8A9529
+:103D4000E2F7CA0180959181892381830895319694
+:103D5000E217F30729F090819813F9CF1082F7CF7B
+:103D6000089581E090E0E0910E01F0910F01E80FDD
+:103D7000F91F1082019680319105A9F7089590915D
+:103D8000B501892B8093B501089580959091B50177
+:103D900089238093B50108951092B50108959091FB
+:103DA000B401892B8093B401089580959091B4015A
+:103DB00089238093B40108951092B40108959091DD
+:103DC000B301892B8093B301089580959091B3013D
+:103DD00089238093B30108951092B30108958093CD
+:103DE000A20108951092A201089580910E01909170
+:103DF0000F01FC0131969C01205F3F4F80E09191C3
+:103E000091118F5FE217F307D1F70895E0910E014A
+:103E1000F0910F018091B5018083E0910E01F09146
+:103E20000F0190818091B401892B8083E0910E0174
+:103E3000F0910F0190818091B301892B8083809153
+:103E4000A201882361F0E0910E01F0910F019081B1
+:103E5000892B80830E94F51E81111092A20180910E
+:103E60000E0190910F010C945A1420E0009739F044
+:103E7000AC0141505109842395232F5FF7CF822F46
+:103E800008958091D601843039F11092B70120E471
+:103E900088E190E00FB6F894A895809360000FBE7B
+:103EA0002093600080E00E94A80280E00E94E50666
+:103EB00083B7817F846083BF83B7816083BF789439
+:103EC000889583B78E7F83BF88E10FB6F89480937F
+:103ED0006000109260000FBE08950895089580E07C
+:103EE0000E94A8020E946D1F0E9440070E946E1F40
+:103EF0000E94AC0791E0811101C090E0892F0895E4
+:103F00000E94C11880E00E94A8020E94F1210E9434
+:103F10004E140C94E5061F920F920FB60F921124C7
+:103F20008F939F93AF93BF938091B701811113C07B
+:103F30008091B8019091B901A091BA01B091BB01F3
+:103F40004196A11DB11D8093B8019093B901A09332
+:103F5000BA01B093BB01BF91AF919F918F910F9028
+:103F60000FBE0F901F90189582E084BD93E095BD21
+:103F70009AEF97BD80936E0008952FB7F8948091C3
+:103F8000B8019091B901A091BA01B091BB012FBFC6
+:103F90000895CF92DF92EF92FF920F931F932FB766
+:103FA000F8944091B8015091B9016091BA017091B3
+:103FB000BB012FBF6A017B01EE24FF248C0120E0AE
+:103FC00030E0C016D106E206F30610F44150510964
+:103FD0009A01281B390BC9011F910F91FF90EF9097
+:103FE000DF90CF9008951F920F920FB60F92112479
+:103FF0008F939F93AF93BF938091B8019091B90134
+:10400000A091BA01B091BB010196A11DB11D809391
+:10401000B8019093B901A093BA01B093BB01BF91CD
+:10402000AF919F918F910F900FBE0F901F90189599
+:104030000E944B11F8942FEF87EA91E621508040BF
+:104040009040E1F700C0000087E090EBDC01809336
+:10405000E1019093E201A093E301B093E4019CE0BD
+:1040600088E10FB6F894A895809360000FBE9093F6
+:104070006000FFCFEF92FF920F931F93CF93DF93D8
+:10408000D82FC4E08C2F0E94A50703E010E0E82E93
+:10409000F12CC701002E02C0959587950A94E2F78E
+:1040A00080FF09C0602F7C2F80E00E94C703D813D7
+:1040B00002C081E006C00150110958F7C15010F745
+:1040C00080E0DF91CF911F910F91FF90EF900895C5
+:1040D000CF93C82F8CE20E943A20882321F08C2FA6
+:1040E000CF910C943A2080E0CF910895CF930E9415
+:1040F000C221811102C00E94A321C5E6C15049F02E
+:104100000E9440078FE39CE90197F1F700C000008F
+:10411000F5CF89E20E946820811113C18AE20E94D2
+:10412000682081110E94A32185E00E9468208111EE
+:104130000E9418200E94CD218093B60187E00E9442
+:1041400068208823A9F18BE10E946820882351F020
+:104150008091B60181FB222720F991E0922790FB04
+:1041600081F90EC08EE00E946820882361F0809162
+:10417000B60182FB222720F991E0922790FB82F979
+:104180008093B60115C080E10E9468209091B6012D
+:10419000882341F093FB222720F981E0822780FBCE
+:1041A00093F904C0892F809580FB90F99093B60114
+:1041B0008091B6010E94D1210E94DF218093DF010E
+:1041C00080EE0E946820882341F08091DF01982FC3
+:1041D000909590FB80F98093DF0189E30E9468202D
+:1041E000882359F08091DF0181FB222720F991E09B
+:1041F000922790FB81F98093DF0182EE0E94682074
+:10420000882359F08091DF0182FB222720F991E079
+:10421000922790FB82F98093DF0186EE0E9468204E
+:10422000882359F08091DF0183FB222720F991E058
+:10423000922790FB83F98093DF0183EE0E94682030
+:10424000882359F08091DF0184FB222720F991E037
+:10425000922790FB84F98093DF0185E30E94682018
+:10426000882359F08091DF0185FB222720F991E016
+:10427000922790FB85F98093DF0181E30E946820FB
+:10428000882359F08091DF0186FB222720F991E0F5
+:10429000922790FB86F98093DF0181E10E946820DC
+:1042A000882359F08091DF0187FB222720F991E0D4
+:1042B000922790FB87F98093DF018091DF010E94B4
+:1042C000E3218091DF0187FB882780F980930D012E
+:1042D00087E20E946820C82F8EE10E946820811129
+:1042E000C2608FE10E9468208111C46080E20E9458
+:1042F00068208111C86081E20E9468208111C0613C
+:1043000082E20E9468208111C06283E20E946820DC
+:104310008111C06484E20E946820882311F0C06883
+:1043200002C0CC2329F08C2F0E94DA216C2F03C00D
+:104330000E94D621682F70E080E090E0CF910C942D
+:10434000811CCF9108956DEE7EEF80E090E00E9499
+:10435000E82260E082E090E00E94CA2260E083E010
+:1043600090E00E94CA2260E084E090E00E94CA22AD
+:1043700060E085E090E00E94CA2260E086E090E084
+:104380000C94CA2280E090E00E94C42221E08D3E7D
+:104390009E4F09F020E0822F089582E090E00C9477
+:1043A000B622682F82E090E00C94CA2283E090E06D
+:1043B0000C94B622682F83E090E00C94CA2284E02B
+:1043C00090E00C94B622682F84E090E00C94CA220E
+:1043D00086E090E00C94B622682F86E090E00C9482
+:1043E000CA220E94C221811102C00E94A3210E9400
+:1043F000E8218093E00180FF02C0869501C080E043
+:104400000C94A8028091E001982F9695292F30E016
+:10441000233031054CF49F5F990F8170892B8160A7
+:104420008093E0010E94EC218091E00186950C943C
+:10443000A8028091E001982F969591F09158990FDC
+:104440008170892B8093E0018E7F91E009F490E0E8
+:104450008091E00190FB80F98093E0010E94EC21C3
+:104460008091E00186950C94A8028091E001982F3C
+:10447000909590FB80F98093E0010E94EC2180915F
+:10448000E00180FF02C0869501C080E00C94A80284
+:104490009091E001892F86958F5F8F77917084309E
+:1044A00028F4880F892B8093E00102C09093E001EB
+:1044B0008091E0018E7F91E009F490E08091E0012D
+:1044C00090FB80F98093E0010E94EC218091E00153
+:1044D00086950C94A8022091E001922F9695892749
+:1044E000982F990F822F8170892B8093E0018E7F06
+:1044F00091E009F490E08091E00190FB80F98093D5
+:10450000E0010E94EC218091E00186950C94A802C4
+:10451000AA1BBB1B51E107C0AA1FBB1FA617B707E9
+:1045200010F0A61BB70B881F991F5A95A9F7809505
+:104530009095BC01CD01089597FB072E16F40094C9
+:1045400007D077FD09D00E94882207FC05D03EF4F1
+:10455000909581959F4F0895709561957F4F08952F
+:10456000EE0FFF1F0590F491E02D0994F999FECF0D
+:1045700092BD81BDF89A992780B50895A6E1B0E073
+:1045800044E050E00C94F022A8E1B0E042E050E0BA
+:104590000C94F022262FF999FECF92BD81BDF89A96
+:1045A000019700B4021639F01FBA20BD0FB6F89477
+:1045B000FA9AF99A0FBE08950396272F0E94CB22EC
+:1045C0000E94CA22252F0E94CB22242F0C94CB229A
+:1045D0000196272F0E94CB220C94CA22DC01CB012A
+:1045E000FC01F999FECF06C0F2BDE1BDF89A319603
+:1045F00000B40D9241505040B8F70895F894FFCFA1
+:10460000FFFF800DEC0D830DB80D840D0101A3019A
+:0A4610004F6C132903395949690062
+:00000001FF
diff --git a/keyboards/cluepad/keymaps/default/keymap.c b/keyboards/cluepad/keymaps/default/keymap.c new file mode 100644 index 0000000000..8ba49952f6 --- /dev/null +++ b/keyboards/cluepad/keymaps/default/keymap.c @@ -0,0 +1,122 @@ +#include "cluepad.h" + +#include "backlight.h" +#include "rgblight.h" + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _BL 0 +#define _FL 1 +#define _RS 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: (Base Layer) Default Layer + * .-------------------. + * |NL F| /| *| -| + * |-------------------| + * | 7| 8| 9| | + * |--------------| | + * | 4| 5| 6| +| + * |-------------------| + * | 1| 2| 3| | + * |--------------| | + * | 0| .| Ent| + * '-------------------' + */ +[_BL] = KEYMAP( + LT(_FL, KC_NLCK), KC_PSLS, KC_PAST, KC_PMNS, \ + KC_P7, KC_P8, KC_P9, KC_PPLS, \ + KC_P4, KC_P5, KC_P6, \ + KC_P1, KC_P2, KC_P3, KC_PENT, \ + KC_P0, KC_PDOT), + + /* Keymap _FL: Function Layer + * .-------------------. + * |NL F| | | Fn0| + * |-------------------| + * | | Fn4| | | + * |--------------| | + * | Fn3|BL_S| Fn2| Fn6| + * |-------------------| + * | | Fn5| | | + * |--------------| | + * | Fn1| | Fn7| + * '-------------------' + */ +[_FL] = KEYMAP( + LT(_FL, KC_NLCK), KC_TRNS, KC_TRNS, F(0), \ + KC_TRNS, F(4), KC_TRNS, F(6), \ + F(3), BL_STEP, F(2), \ + KC_TRNS, F(5), KC_TRNS, F(7), \ + F(1), KC_TRNS) +}; + +enum function_id { + RGBLED_TOGGLE, + RGBLED_STEP_MODE, + RGBLED_INCREASE_HUE, + RGBLED_DECREASE_HUE, + RGBLED_INCREASE_SAT, + RGBLED_DECREASE_SAT, + RGBLED_INCREASE_VAL, + RGBLED_DECREASE_VAL, +}; + +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_FUNCTION(RGBLED_TOGGLE), + [1] = ACTION_FUNCTION(RGBLED_STEP_MODE), + [2] = ACTION_FUNCTION(RGBLED_INCREASE_HUE), + [3] = ACTION_FUNCTION(RGBLED_DECREASE_HUE), + [4] = ACTION_FUNCTION(RGBLED_INCREASE_SAT), + [5] = ACTION_FUNCTION(RGBLED_DECREASE_SAT), + [6] = ACTION_FUNCTION(RGBLED_INCREASE_VAL), + [7] = ACTION_FUNCTION(RGBLED_DECREASE_VAL), +}; + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { + switch (id) { + case RGBLED_TOGGLE: + if (record->event.pressed) { + rgblight_toggle(); + } + break; + case RGBLED_INCREASE_HUE: + if (record->event.pressed) { + rgblight_increase_hue(); + } + break; + case RGBLED_DECREASE_HUE: + if (record->event.pressed) { + rgblight_decrease_hue(); + } + break; + case RGBLED_INCREASE_SAT: + if (record->event.pressed) { + rgblight_increase_sat(); + } + break; + case RGBLED_DECREASE_SAT: + if (record->event.pressed) { + rgblight_decrease_sat(); + } + break; + case RGBLED_INCREASE_VAL: + if (record->event.pressed) { + rgblight_increase_val(); + } + break; + case RGBLED_DECREASE_VAL: + if (record->event.pressed) { + rgblight_decrease_val(); + } + break; + case RGBLED_STEP_MODE: + if (record->event.pressed) { + rgblight_step(); + } + break; + } +} + |