diff options
author | TerryMathews <terry@terrymathews.net> | 2016-06-13 21:59:22 -0400 |
---|---|---|
committer | Jack Humbert <jack.humb@gmail.com> | 2016-06-13 21:59:22 -0400 |
commit | 1c5a6733ff4276b0f4144c4ff768b1ffd4b4ee27 (patch) | |
tree | 13a6e684abf9a4cf11fb3701236874ee6403d2ae | |
parent | 498455403e6b891f7ecbce98163ba2b3def25dbb (diff) | |
download | qmk_firmware-1c5a6733ff4276b0f4144c4ff768b1ffd4b4ee27.tar.gz |
adds support for GH60 Satan keyboard (#407)
* adds support for GH60 Satan keyboard
ANSI 125 layout, capslock and backlight implemented, support for
WS2812LED strip included
* added Phantom and GH60 Satan to travis
-rw-r--r-- | .travis.yml | 2 | ||||
-rw-r--r-- | keyboard/satan/Makefile | 115 | ||||
-rw-r--r-- | keyboard/satan/backlight.c | 24 | ||||
-rw-r--r-- | keyboard/satan/config.h | 92 | ||||
-rw-r--r-- | keyboard/satan/controller.jpg | bin | 0 -> 140199 bytes | |||
-rw-r--r-- | keyboard/satan/keymaps/default/compiled.hex | 1530 | ||||
-rw-r--r-- | keyboard/satan/keymaps/default/keymap.c | 162 | ||||
-rw-r--r-- | keyboard/satan/led.c | 36 | ||||
-rw-r--r-- | keyboard/satan/pinout.txt | 1 | ||||
-rw-r--r-- | keyboard/satan/power.jpg | bin | 0 -> 433947 bytes | |||
-rw-r--r-- | keyboard/satan/satan.c | 36 | ||||
-rw-r--r-- | keyboard/satan/satan.h | 42 |
12 files changed, 2040 insertions, 0 deletions
diff --git a/.travis.yml b/.travis.yml index 2e0714d71..436c17338 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,9 +21,11 @@ env: - KEYBOARD=hhkb - KEYBOARD=jd45 - KEYBOARD=kc60 + - KEYBOARD=phantom - KEYBOARD=planck - KEYBOARD=preonic - KEYBOARD=retro_refit + - KEYBOARD=satan - KEYBOARD=sixkeyboard script: diff --git a/keyboard/satan/Makefile b/keyboard/satan/Makefile new file mode 100644 index 000000000..9df0e4fd0 --- /dev/null +++ b/keyboard/satan/Makefile @@ -0,0 +1,115 @@ +#---------------------------------------------------------------------------- +# 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 = led.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 ?= no # 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 +RGBLIGHT_ENABLE ?= yes # Enable keyboard underlight functionality (+4870) +BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality (+1150) +MIDI_ENABLE ?= no # MIDI controls +AUDIO_ENABLE ?= no +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID + +#ifdef BACKLIGHT_ENABLE + SRC := backlight.c $(SRC) +#endif + +ifndef QUANTUM_DIR + include ../../Makefile +endif diff --git a/keyboard/satan/backlight.c b/keyboard/satan/backlight.c new file mode 100644 index 000000000..4240b0916 --- /dev/null +++ b/keyboard/satan/backlight.c @@ -0,0 +1,24 @@ + +#include <avr/io.h> +#include "backlight.h" +#include "print.h" + +void init_backlight_pin(void) { + print("init_backlight_pin()\n"); + // Set our LED pins as output + DDRB |= (1<<6); + + // Set our LED pins low + PORTB &= ~(1<<6); +} + +void backlight_set(uint8_t level) { + if ( level == 0 ) { + // Turn off light + PORTB |= (1<<6); + } else { + // Turn on light + PORTB &= ~(1<<6); + } +} + diff --git a/keyboard/satan/config.h b/keyboard/satan/config.h new file mode 100644 index 000000000..aea9254e8 --- /dev/null +++ b/keyboard/satan/config.h @@ -0,0 +1,92 @@ +/* +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 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0003 +#define MANUFACTURER SATAN +#define PRODUCT GH60 +#define DESCRIPTION QMK keyboard firmware for Satan GH60 with WS2812 support + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +// ROWS: Top to bottom, COLS: Left to right + +#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 } +#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3 } +#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 + +/* 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)) \ +) + +/* Backlight configuration + */ +#define BACKLIGHT_LEVELS 1 + +/* Underlight configuration + */ + #define ws2812_PORTREG PORTE + #define ws2812_DDRREG DDRE + #define ws2812_pin 2 + #define RGBLED_NUM 8 // 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 + +/* 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/satan/controller.jpg b/keyboard/satan/controller.jpg Binary files differnew file mode 100644 index 000000000..76ffa4500 --- /dev/null +++ b/keyboard/satan/controller.jpg diff --git a/keyboard/satan/keymaps/default/compiled.hex b/keyboard/satan/keymaps/default/compiled.hex new file mode 100644 index 000000000..8f4957d1c --- /dev/null +++ b/keyboard/satan/keymaps/default/compiled.hex @@ -0,0 +1,1530 @@ +:100000000C9465070C94A9070C94A9070C94A907F4 +:100010000C94A9070C94A9070C94A9070C94A907A0 +:100020000C94A9070C94A9070C94B0190C94821A8B +:100030000C94A3280C94A9070C94A9070C94A90765 +:100040000C94A9070C94A9070C94A9070C94A90770 +:100050000C94A9070C940A290C94A9070C94A907DD +:100060000C94A9070C94A9070C94A9070C94A90750 +:100070000C94A9070C94A9070C94A9070C94A90740 +:100080000C9451140C94A9070C94A9070C94A9077B +:100090000C94A9070C94A9070C94A9070C94A90720 +:1000A0000C94A9070C94A9070C94A9078F08AE0813 +:1000B000DF08B508BC08C308CA08D108D808E71A81 +:1000C000091BF41B091BF41B4B1B6E1BF41BC31BEE +:1000D000D61B141F141F431F431F831FE920E92051 +:1000E000E920A51FE9204C204C20B620BE20E920A5 +:1000F000E4205920592059205920592059205920AD +:100100005920592059205920592059205920592027 +:10011000592069207920802087209120696E697498 +:100120005F6261636B6C696768745F70696E2829D0 +:100130000A0000F001F002F003F004F005F006F010 +:1001400007F008F000201E001F0020002100220000 +:10015000230024002500260027002D002E002A0061 +:100160002B0014001A000800150017001C001800CE +:100170000C00120013002F00300031003900040081 +:100180001600070009000A000B000D000E000F000A +:100190003300340000002800E10000001D001B00B7 +:1001A0000600190005001100100036003700380065 +:1001B0000000E500E000E300E200000000002C0089 +:1001C0000000000000000000E600E7000152E4002B +:1001D00035000100010001000100010001000100E3 +:1001E00001000100010001000100005001000100B8 +:1001F00001000100010001000100010001000100F7 +:100200000100805081508250010001000100010076 +:1002100001000100010001000100010001000100D6 +:100220000000010001000000012002200320042042 +:100230000520062007200820010001000000010021 +:1002400001000100010000000000010000000000AA +:100250000000000001000100010001000A444542C5 +:1002600055473A20656E61626C65642E0A005374CE +:10027000617465206F6620726F772025583A2025BB +:10028000303136620A0048756D616E2D72656164A9 +:1002900061626C65206D6174726978207374617439 +:1002A000653A0D0A004465626F756E63696E67207A +:1002B00064656C61792072656D61696E696E673A1B +:1002C0002025580A0054494D455233206469736112 +:1002D000626C65642E0A0054494D45523320656EA8 +:1002E00061626C65642E0A007267626C696768748B +:1002F0002073657420687376205B454550524F4DDE +:100300005D3A2025752C25752C25750A00726762CB +:100310006C6967687420746F67676C653A207267F0 +:10032000626C696768745F636F6E6669672E656E7D +:1003300061626C65203D2025750A007267626C69F8 +:10034000676874206D6F64653A2025750A007267CE +:10035000626C696768745F696E6974207267626C49 +:10036000696768745F636F6E6669672E6D6F646539 +:10037000203D20302E2057726974652064656661C7 +:10038000756C742076616C75657320746F204545BB +:1003900050524F4D2E0A007267626C696768745F35 +:1003A000696E6974206565636F6E6669672069733D +:1003B000206E6F7420656E61626C65642E0A007237 +:1003C00067626C696768745F696E697420737461D1 +:1003D0007274210A007267626C696768745F696E83 +:1003E00069742063616C6C65642E0A007267626CCC +:1003F000696768745F636F6E6669672E76616C20EB +:100400003D2025640A007267626C696768745F63E7 +:100410006F6E6669672E736174203D2025640A0043 +:100420007267626C696768745F636F6E6669672E76 +:10043000687565203D2025640A007267686C6967ED +:1004400068745F636F6E6669672E6D6F6465203DCB +:100450002025640A007267626C696768745F636F65 +:100460006E6669672E656E61626C65203D2025644D +:100470000A007267626C696768745F636F6E6669B1 +:1004800067206570726F6D0A006565636F6E6669DF +:10049000675F7570646174655F7267626C696768D5 +:1004A000745F64656661756C740A0064321464324A +:1004B00014783C1E1E140A05000000000101010210 +:1004C00002030405050607090A0B0C0E0F1112148E +:1004D0001517191B1D1F212325282A2C2F313436CF +:1004E000393B3E414346494C4F5255585A5D616431 +:1004F000676A6D707376797C7F8386898C8F92951D +:10050000989B9EA2A5A7AAADB0B3B6B9BCBEC1C404 +:10051000C6C9CBCED0D3D5D7DADCDEE0E2E4E6E85C +:10052000EAEBEDEEF0F1F3F4F5F6F8F9FAFAFBFC8C +:10053000FDFDFEFEFEFFFFFFFFFFFFFFFEFEFEFDD7 +:10054000FDFCFBFAFAF9F8F6F5F4F3F1F0EEEDEB59 +:10055000EAE8E6E4E2E0DEDCDAD7D5D3D0CECBC9F8 +:10056000C6C4C1BEBCB9B6B3B0ADAAA7A5A29E9B76 +:100570009895928F8C898683807C797673706D6A6A +:100580006764615D5A5855524F4C494643413E3B62 +:10059000393634312F2C2A282523211F1D1B1917EA +:1005A000151412110F0E0C0B0A090706050504039A +:1005B0000202010101000000000101020202020228 +:1005C00002030303030303030303030303030304FB +:1005D00004040404040404040404040505050505D6 +:1005E00005050505050606060606060606070707AD +:1005F0000707070708080808080809090909090979 +:100600000A0A0A0A0A0B0B0B0B0B0C0C0C0C0C0D38 +:100610000D0D0D0E0E0E0E0F0F0F101010101111EC +:10062000111212121313131414141515161616178B +:100630001718181919191A1A1B1B1C1C1D1D1E1E10 +:100640001F20202121222323242425262627282871 +:10065000292A2B2B2C2D2E2F3030313233343536A6 +:100660003738393A3B3C3D3E3F404142444546479E +:10067000494A4B4C4E4F5152535556585A5B5D5E4A +:100680006062636567696B6D6E70727476797B7D8D +:100690007F818486888B8D909295979A9D9FA2A545 +:1006A000A8ABAEB1B4B7BABEC1C4C8CBCFD3D6DA4B +:1006B000DEE2E6EAEEF2F8FF5B735D004B6579621D +:1006C0006F6172642073746172742E0A005B575DEF +:1006D000005B535D005B525D005B445D005B435D0E +:1006E000000A03470048003600300000000C0353A6 +:1006F000004100540041004E0000000403090409B9 +:10070000027400040100A0FA0904000001030101C1 +:1007100000092111010001224000070581030800A2 +:100720000A09040100010300000009211101000170 +:100730002236000705820308000A090402000203AA +:100740000000000921110100012220000705830398 +:100750002000010705030320000109040300010331 +:10076000000000092111010001223900070584035E +:100770001000011201100100000008EDFE6060038E +:10078000000102000105010906A101050719E02980 +:10079000E715002501950875018102050819012951 +:1007A00005950575019102950175039101050719DC +:1007B00000297715002501957875018102C0063161 +:1007C000FF0974A1010975150025FF9520750881A1 +:1007D000020976150025FF952075089102C00501D4 +:1007E0000980A101850216010026B7001A01002A1E +:1007F000B700751095018100C0050C0901A10185A4 +:1008000003160100269C021A01002A9C027510950D +:10081000018100C005010906A101050719E029E7CA +:100820001500250195087501810295017508810162 +:1008300005081901290595057501910295017503B2 +:1008400091010507190029FF150026FF009506757F +:10085000088100C00A002530325820006B6579629B +:100860006F6172645F7265706F72743A20004B65DD +:1008700079626F617264204C4544732073746174B3 +:10088000653A2025780A0064656C5F6B65795F6264 +:1008900069743A2063616E27742064656C3A202580 +:1008A0003032580A006164645F6B65795F62697415 +:1008B0003A2063616E2774206164643A20253032E7 +:1008C000580A00646F6E652E0A00626F6F676D6173 +:1008D000676963207363616E3A202E2E2E20003FDD +:1008E00000433E20004C25640A0074696D65725F08 +:1008F000636F756E743A202530346C580A006B654E +:1009000079626F6172645F6E6B726F3A2025580A6C +:10091000006B6579626F6172645F69646C653A202F +:1009200025580A006B6579626F6172645F70726F3F +:10093000746F636F6C3A2025580A00686F73745F98 +:100940006B6579626F6172645F6C65647328293AC4 +:100950002025580A000A092D2053746174757320EC +:100960002D0A004743433A20342E382E3220415678 +:10097000522D4C4942433A20312E382E3073766E38 +:10098000204156525F415243483A20617672350AFF +:10099000004F5054494F4E533A204C554641204247 +:1009A0004F4F544D414749432045585452414B45C0 +:1009B0005920434F4E534F4C4520434F4D4D414ED0 +:1009C00044204E4B524F20343039360A00425549AC +:1009D0004C443A20756E6B6E6F776E202832313A38 +:1009E00032353A3338204A756E2031332032303177 +:1009F00036290A005649443A20307846454544286D +:100A0000534154414E29205049443A2030783630E1 +:100A10003630284748363029205645523A2030781B +:100A2000303030330A00444553433A20514D4B2077 +:100A30006B6579626F617264206669726D7761724D +:100A40006520666F7220536174616E2047483630AE +:100A500020776974682057533238313220737570AB +:100A6000706F72740A000A092D2056657273696FDF +:100A70006E202D0A000A092D20436F6E736F6C657E +:100A8000202D0A4553432F713A09717569740A0084 +:100A90000A092D204D61676963202D0A443A0944F3 +:100AA00065627567204D65737361676520546F6774 +:100AB000676C650A583A094D61747269782044651B +:100AC000627567204D6F646520546F67676C6520A1 +:100AD0002D2053686F77206B65797072657373652D +:100AE0007320696E206D6174726978206772696421 +:100AF0000A4B3A094B6579626F6172642044656202 +:100B0000756720546F67676C65202D2053686F7779 +:100B1000206B65797072657373207265706F727483 +:100B20000A4D3A094465627567204D6F75736520FB +:100B3000546F67676C650A563A0956657273696F38 +:100B40006E0A533A095374617475730A433A094142 +:100B50006374697661746520436F6E736F6C652092 +:100B60004D6F64650A46312D4631303A0953776935 +:100B700074636820746F204C6179657220302D3960 +:100B80002028463130203D204C30290A302D393A7A +:100B90000953776974636820746F204C61796572BA +:100BA00020302D390A4553433A09537769746368F5 +:100BB00020746F204C6179657220302028616C743C +:100BC00065726E617465206B65792031290A475220 +:100BD0004156453A0953776974636820746F204C15 +:100BE0006179657220302028616C7465726E617461 +:100BF00065206B65792032290A50415553453A09E1 +:100C00004A756D7020746F20426F6F746C6F6164F1 +:100C1000657220285265736574290A453A09507235 +:100C2000696E7420454550524F4D20536574746968 +:100C30006E67730A4E3A094E4B524F20546F6767E6 +:100C40006C650A000A002575002E6C6576656C3AA5 +:100C500020000A002575002E656E61626C653A20E1 +:100C6000000A0025303258006261636B6C69676866 +:100C7000745F636F6E6669672E7261773A20000A4F +:100C8000002575002E6E6B726F3A20000A002575E4 +:100C9000002E737761705F6261636B736C61736860 +:100CA0005F6261636B73706163653A20000A0025BF +:100CB00075002E737761705F67726176655F65732B +:100CC000633A20000A002575002E6E6F5F67756914 +:100CD0003A20000A002575002E737761705F7261FB +:100CE0006C745F726775693A20000A002575002EE2 +:100CF000737761705F6C616C745F6C6775693A20C3 +:100D0000000A002575002E636170736C6F636B5F62 +:100D1000746F5F636F6E74726F6C3A20000A002507 +:100D200075002E737761705F636F6E74726F6C5FA6 +:100D3000636170736C6F636B3A20000A0025303278 +:100D400058006B65796D61705F636F6E6669672EC1 +:100D50007261773A20000A002575002E6D6F757359 +:100D6000653A20000A002575002E6B6579626F6177 +:100D700072643A20000A002575002E6D6174726954 +:100D8000783A20000A002575002E656E61626C6558 +:100D90003A20000A00253032580064656275675FAA +:100DA000636F6E6669672E7261773A20000A0025CC +:100DB000750064656661756C745F6C617965723A23 +:100DC00020003F004E4B524F3A206F66660A004E9D +:100DD0004B524F3A206F6E0A000A6D6F7573653A79 +:100DE000206F66660A000A6D6F7573653A206F6E34 +:100DF0000A000A6B6579626F6172643A206F6666F9 +:100E00000A000A6B6579626F6172643A206F6E0A3C +:100E1000000A6D61747269783A206F66660A000A8A +:100E20006D61747269783A206F6E0A000A646562B7 +:100E300075673A206F66660A000A64656275673AEC +:100E4000206F6E0A000A0A4A756D70696E67207419 +:100E50006F20626F6F746C6F616465722E2E2E202E +:100E600000433E20006565636F6E6669673A0A005D +:100E70006261636B6C6967687420737465703A2093 +:100E800025750A006261636B6C6967687420746F12 +:100E900067676C653A2025750A006261636B6C694F +:100EA0006768742064656372656173653A202575AF +:100EB0000A006261636B6C6967687420696E6372B3 +:100EC000656173653A2025750A0011241FBECFEFB6 +:100ED000DAE0DEBFCDBF04B603FE24C080911F025E +:100EE00090912002A0912102B09122028730904B74 +:100EF000A740B04BB9F410921F021092200210923A +:100F000021021092220214BE84B7877F84BF88E139 +:100F10000FB6F89480936000109260000FBEE0E07E +:100F2000F8E3099511E0A0E0B1E0E4E4FFE502C0D8 +:100F300005900D92A833B107D9F712E0A8E3B1E00C +:100F400001C01D92AF31B107E1F70E94F0160C9479 +:100F5000A02F0C940000FF93EF93E0913801F091E3 +:100F60003901309709F00995EF91FF910895FC013F +:100F70008591803011F0EFDFFBCF0895FF27E0E28D +:100F800030E247FF0CC0419597FF09C0EDE2609544 +:100F9000709580959095611D711D811D911D27FF94 +:100FA00002C0219530E350E2AA27660F771F881F01 +:100FB000991FAA1FA41710F0A41B63955A95A9F7AF +:100FC000AA3008F0A95FA05DAF93F3956115710594 +:100FD0008105910541F7ED3211F4EF93F395F21786 +:100FE00018F43F93F395FBCF8F91B5DFFA95E1F7B6 +:100FF0000895E991F9918591803021F0853219F0B9 +:10100000AADFF9CF089520E0E89455915532C1F355 +:10101000503311F4689455915A3348F4505390F377 +:10102000220F022E220F220F200D250FF4CF0EF4D7 +:10103000219589919991533619F3533729F15335F5 +:1010400059F1BC0188279927E8945C3621F48991ED +:10105000999168945591543639F446EF7EF077FFB4 +:101060000DC08FEF9FEF0AC055374AE039F0583571 +:1010700040E121F0523642E009F00895FF93EF93EA +:101080007DDFEF91FF91B7CFFF93EF93FC0181914B +:101090008030B9F360DFFBCFFF93EF9368DFF1CFD0 +:1010A000DF93CF93CDB7DEB72596A3DFCF91DF9146 +:1010B00008958CE191E00E94B707269A2E98089532 +:1010C000811102C02E9A08952E980895229A0895AB +:1010D00081FF02C02A9A08952A98089508950895D4 +:1010E0008EE698E0892B11F00E946E080E94660837 +:1010F0000C9459088FE698E0892B11F00C946F0836 +:101100000895CF93DF93EC01462F50E0493051050D +:1011100008F05CC0FA01EA5AFF4F0C94522F0E946B +:10112000A127827280933A019A81992369F08823DA +:1011300019F085E390E002C089E290E00E94FE266B +:10114000DF91CF910C94ED27882319F085E390E08F +:1011500002C089E290E00E944F27F2CF8A81882363 +:10116000A9F1DF91CF910C94F8118A81882371F154 +:10117000DF91CF910C9461108A81882339F1DF913E +:10118000CF910C947A108A81882301F1DF91CF915D +:101190000C9499108A818823C9F0DF91CF910C9427 +:1011A000B4108A81882391F0DF91CF910C94CE10F6 +:1011B0008A81882359F0DF91CF910C94E9108A81BC +:1011C000882321F0DF91CF910C94EE11DF91CF9124 +:1011D000089581E0089581E008950C94EB08089546 +:1011E0000F931F93CF93DF93EC0108811981C801FE +:1011F0000E947E26B8010E948B098C01BE010E94CC +:10120000ED08882309F47AC08A818823C9F1809186 +:10121000460181111EC0043180E5180789F50E943E +:10122000EF0881E0809346010E94D5289093450104 +:101230008093440110923D0110923F0110923E01B3 +:10124000109241011092400110924301109242010C +:1012500055C080914401909145010E94E128883C4D +:10126000910570F480913D01E82FF0E0EE0FFF1F33 +:10127000E25CFE4F118300838F5F80933D013EC08F +:10128000043880E5180721F005381045A1F02AC080 +:101290008A81882321F010923B0182E012C0809164 +:1012A0003B01811106C086E20E94B21D86E20E94C7 +:1012B0007A1E82E014C08A81882331F010923C01AA +:1012C00080E20E94C91E1AC080913C01811106C0B3 +:1012D00087E20E94B21D87E20E947A1E80E20E948D +:1012E000D01E0CC081E080933B0180933C01CE0175 +:1012F000DF91CF911F910F910C94E90880E0DF916D +:10130000CF911F910F9108950C9470080C947A0856 +:1013100080E090E008959EE0799FF001112496E42A +:10132000899FE00DF11D1124E60FF11DEE0FFF1F47 +:10133000EC5BFE4F859194910895880F991F8E5410 +:101340009040FC01859194910895880F991F8E5CBF +:101350009E4FFC018591949108950F931F93CF9315 +:10136000DF93EC01811521E39207A0F5811530E3AD +:10137000930708F0D7C0883E9105D8F4803E9105C8 +:1013800008F06FC0883A910578F4853A910508F025 +:101390006AC08130910509F4F8C108F4F3C18430C2 +:1013A000910508F05EC0EEC18B3B910508F466C064 +:1013B000E9C1C11580E2D80708F0AFC0C11591E0BE +:1013C000D90708F04EC0C03FD10508F4DBC18E013B +:1013D00010651CC2803820E5920700F5803730E5A3 +:1013E000930708F0A3C0C11580E5D80709F4ACC085 +:1013F00050F4CE01905480319F4008F0C3C18E015B +:101400001F70106A03C2C13030E5D30709F4AAC0C7 +:10141000C43180E5D80708F4AFC0B4C1C33890E543 +:10142000D90709F48EC050F4C13830E5D30709F468 +:1014300082C008F083C000E011EDE8C1C03191E541 +:10144000D90708F49FC1C11527E5D20708F436C1B2 +:10145000CE0190578115904108F094C18E011F7004 +:101460008FC18E01D3C1853A910509F491C1863AA5 +:10147000910509F490C103E810E4C8C1883A9105C8 +:1014800009F48CC1893A910509F48BC18A3A910516 +:1014900009F48AC18B3A910509F489C18C3A910506 +:1014A00009F488C18D3A910509F487C1803B910503 +:1014B00009F486C18E3A910509F485C18F3A9105E8 +:1014C00009F484C1813B910509F483C1823B9105F4 +:1014D00009F482C1833B910509F481C1843B9105E4 +:1014E00009F480C1853B910509F47FC1863B9105D4 +:1014F00009F47EC1873B910509F47DC1883B9105C4 +:1015000009F47CC1893B910509F47BC18A3B9105B3 +:1015100009F07AC10AE216E479C1CE019F700E94F7 +:10152000A50975C18C011127106C70C18C010F7059 +:101530001127146D6BC100E010ED68C100E012EDE1 +:1015400065C100E013ED62C10E9453218FEF94E367 +:101550002CE0815090402040E1F700C000000E9444 +:101560002F2954C18CE592E00E94B7078091E901D0 +:1015700081608093E9014AC10E94E92A811102C079 +:101580000E94CA2A0E94062B90E090931E0280932C +:101590001D02C23030E5D30721F480911D02816025 +:1015A00086C0C43080E5D80721F480911D02826096 +:1015B0007EC0C63090E5D90721F480911D02846079 +:1015C00076C0C83020E5D20719F480911D0227C0EB +:1015D000CA3030E5D30721F480911D02806167C0D5 +:1015E000CC3080E5D80721F480911D0280625FC075 +:1015F000CE3090E5D90721F480911D02806457C058 +:10160000C03120E5D20721F480911D0280684FC0CF +:10161000C23130E5D30729F480911D0284608860CF +:1016200046C0C33080E5D80721F480911D028E7F2B +:101630003EC0C53090E5D90721F480911D028D7F11 +:1016400036C0C73020E5D20721F480911D028B7F80 +:101650002EC0C93030E5D30719F480911D0226C091 +:10166000CB3080E5D80721F480911D028F7E1FC00A +:10167000CD3090E5D90721F480911D028F7D17C0F0 +:10168000CF3020E5D20721F480911D028F7B0FC05F +:10169000C13130E5D30721F480911D028F7707C057 +:1016A000C331D04531F480911D028B7F877F8093B9 +:1016B0001D0280911D020E940A2BA8C08D2F992720 +:1016C0008F70992781309105E9F48E0103701127FD +:1016D0009C0102C0220F331F0A95E2F789011C68A2 +:1016E000CE01E4E0880F991FEA95E1F7882793700F +:1016F000082B192BF3E0CC0FDD1FFA95E1F7C0762C +:10170000DD272CC08230910529F41C2F0027016FA2 +:10171000106A7CC08330910561F4CE0183709927F3 +:1017200001E010E002C0000F111F8A95E2F71C686B +:101730000EC084309105A9F4CE018370992701E091 +:1017400010E002C0000F111F8A95E2F71A6863E0EB +:10175000CC0FDD1F6A95E1F7C07ED7700C2B1D2BD7 +:1017600055C08530910529F41C2F0027046F106A9D +:101770004DC0069709F04AC0CF71DD271C2F002706 +:10178000106244C000E010E041C001E010E03EC043 +:1017900001E810E43BC002E810E438C002EE14E4B3 +:1017A00035C009EE14E432C00AEE14E42FC005EB94 +:1017B00014E42CC006EB14E429C007EB14E426C0A3 +:1017C0000CEC14E423C00DEC14E420C003E815E491 +:1017D0001DC00AE815E41AC002E915E417C004E9BF +:1017E00015E414C001E216E411C003E216E40EC0D1 +:1017F00004E216E40BC005E216E408C006E216E4B3 +:1018000005C007E216E402C000E014E4C801DF915D +:10181000CF911F910F9108959EE0799FF0011124BF +:1018200096E4899FE00DF11D1124E60FF11DEE0FE6 +:10183000FF1FEC5BFE4F85919491803E9105E0F493 +:10184000803C910558F58133910509F46FC048F447 +:101850008932910509F463C08A32910509F46DC09B +:1018600072C089339105E9F082389105D1F0853352 +:10187000910509F44DC067C0833E910581F138F4AC +:10188000803E9105B9F0823E9105D9F05CC0863E5C +:10189000910561F1873E9105A1F155C00E949D0916 +:1018A000089520911D0220FD02C021FF4CC080EE52 +:1018B00090E049C080911D0280FFF9CF89E390E05C +:1018C00042C080911D0282FF0EC080911D0284FFE4 +:1018D00003C080E090E037C083EE90E034C0809198 +:1018E0001D0282FFF2CF82EE90E02DC080911D029A +:1018F00083FF0BC080911D0284FDEBCF87EE90E04B +:1019000022C080911D0283FFF5CF86EE90E01BC0C0 +:1019100080911D0285FF07C089E290E014C080918C +:101920001D0285FFF9CF85E390E00DC080911D0277 +:1019300086FF07C08AE290E006C080911D0286FF04 +:10194000F9CF81E390E00E94AD0908950C946808F6 +:10195000E82FF0E0E25EFE4F8081E82FEF70F0E0CC +:10196000282F22952F7081E090E0022E01C0880F71 +:101970000A94EAF780A308950F931F93CF93DF9300 +:1019800085B7806885BF85B7806885BFC4E0D0E033 +:1019900001E010E0FE01E25EFE4F8081E82FEF7073 +:1019A000F0E021A182958F70A80102C0440F551F5D +:1019B0008A95E2F7242B21A38C2F0E94A80C219753 +:1019C00048F78DE090E041E050E0FC01E05FFE4F21 +:1019D0002081E22FEF70F0E062A122952F70DA01F2 +:1019E00002C0AA0FBB1F2A95E2F76A2B62A30197D8 +:1019F00060F7DF91CF911F910F910C948409EF92C2 +:101A0000FF920F931F93CF93DF93C1E5D1E084E062 +:101A1000E82E01E010E095E0F92E8E2D0E94A80C32 +:101A20002DE030E040E050E0F901E05FFE4F8081C2 +:101A3000E82FEF70F0E060A170E082958F7002C037 +:101A4000759567958A95E2F760FD09C0B801022E89 +:101A500002C0660F771F0A94E2F7462B572B2150DE +:101A6000310910F73A912A912417350721F059834B +:101A70004883F09200018E2D0E94A80CEA949FEFFB +:101A8000E912CBCF2091000127FD2EC08091E90102 +:101A900080FF10C0822F992787FD90959F932F93E9 +:101AA00085EA92E09F938F930E9450080F900F90C9 +:101AB0000F900F908091000181508093000187FD6D +:101AC00007C08FE99FE00197F1F700C000000CC04C +:101AD000ABE5B1E0E1E5F1E0929182919E938E93C6 +:101AE00091E0E734F907C1F70E94860981E0DF91B0 +:101AF000CF911F910F91FF90EF900895E82FF0E0A4 +:101B0000EE0FFF1FEF5AFE4F808191810895EF92F3 +:101B1000FF920F931F93CF93DF938091E90180FF92 +:101B200004C086E892E00E94B70701E511E0C0E03A +:101B3000D0E04EE6E42E42E0F42E8091E90180FFF1 +:101B400013C0F801808191810E943F289F938F9359 +:101B5000DF93CF93FF92EF920E9450080F900F9067 +:101B60000F900F900F900F9021960E5F1F4FC53072 +:101B7000D10519F7DF91CF911F910F91FF90EF9051 +:101B800008951F93CF93DF93CBE5D1E010E09A91B6 +:101B90008A910E942128180F81E0C135D807B9F732 +:101BA000812FDF91CF911F9108953EB1242F209571 +:101BB00023233EB1342B4FB7F894FC01680F791FF3 +:101BC000E617F70789F0819198E03EB9000000C060 +:101BD00087FF2EB9880F000000C000C000C02EB9DA +:101BE00000C09A9591F7ECCF4FBF08952DB1242BEB +:101BF0002DB99B01220F331F260F371FB9010E94F9 +:101C0000D50D87EC90E00197F1F700C00000089532 +:101C100044E00C94F60DCF92DF92EF92FF920F9377 +:101C20001F93CF93DF937C01E42FF0E0E854FA4F49 +:101C30004491EFEFF0E0E61BF109E854FA4FE4912C +:101C4000E09509F498C0042F10E08FEF90E08E1B10 +:101C50009109809FB001819F700D909F700D11249C +:101C6000E72FF72FCCE3D0E0C701BE010E942A2F57 +:101C7000DC016230710509F447C0D8F461157105C3 +:101C8000A1F16130710509F07AC00E1B1109CE0176 +:101C90008A1B9B0BDC010A9FC0010B9F900D1A9FB2 +:101CA000900D1124BE010E942A2FCE2EC60ED42ED6 +:101CB00067C06430710509F44BC0B8F16530710537 +:101CC00009F05DC00E1B1109BE01681B790B069F50 +:101CD000C001079F900D169F900D1124BE010E9418 +:101CE0002A2FDE2EFE2FF60F44C00E1B11090E9D6B +:101CF000C0010F9D900D1E9D900D1124BE010E94EC +:101D00002A2FDE2ED60E35C00E1B11090A9FC001E8 +:101D10000B9F900D1A9F900D1124BE010E942A2F37 +:101D2000D42ECE2EFE2FF60F2BC00E1B1109BE0196 +:101D3000681B790B069FC001079F900D169F900DA1 +:101D40001124BE010E942A2FDE2ED60ECE2E0FC0E9 +:101D50000E1B11090A9FC0010B9F900D1A9F900D39 +:101D60001124BE010E942A2FCE2EC60EDE2EF42F85 +:101D700007C0C42E05C0F42FD42EC42E01C0F0E03D +:101D8000D9011196CC921197DC921296FC93DF91B7 +:101D9000CF911F910F91FF90EF90DF90CF9008951A +:101DA00087E090E00C94602FAB01BC0187E090E0ED +:101DB0000C947E2F8091E90180FF08C089E894E0AF +:101DC0009F938F930E9450080F900F9083E0809311 +:101DD000F0018091F101807884668F778093F10122 +:101DE0008CEC8093F2018093F3016091F00170918B +:101DF000F1018091F2019091F3010C94D40E809145 +:101E0000E90180FF08C082E794E09F938F930E94CE +:101E100050080F900F908091E90180FF0FC08091D2 +:101E2000F00181701F928F9385E594E09F938F93CB +:101E30000E9450080F900F900F900F908091E90131 +:101E400080FF10C08091F00186958F731F928F9351 +:101E50008AE394E09F938F930E9450080F900F9015 +:101E60000F900F908091E90180FF19C09091F001CF +:101E7000991F9927991F2091F101822F880F892B93 +:101E800027FB222720F92F938F9380E294E09F93E2 +:101E90008F930E9450080F900F900F900F90809199 +:101EA000E90180FF0EC08091F2011F928F9386E0BE +:101EB00094E09F938F930E9450080F900F900F9083 +:101EC0000F908091E90180FF0EC08091F3011F9275 +:101ED0008F938CEE93E09F938F930E9450080F9006 +:101EE0000F900F900F9008958091F00180FF06C031 +:101EF00068E070E088EF91E00C94080EEAEFF1E002 +:101F0000DF0111971C92DF0112971C921082339609 +:101F100082E0E231F807A1F7EBCFEAEFF1E0DF0171 +:101F200011978C93DF0112976C934083339692E064 +:101F3000E231F907A1F70C94740FCF92DF92EF9280 +:101F4000FF920F931F93CF93DF9300D01F92CDB7D3 +:101F5000DEB7F82EC92ED62EE42E0091F001109196 +:101F6000F1012091F2013091F3010093F4011093FB +:101F7000F5012093F6013093F7018091F00180FF85 +:101F80001EC09E012F5F3F4F8F2D0E940B0E809130 +:101F9000F401F0FA87F98093F401F6942091F501A9 +:101FA00020782F29C0FA27F92093F501D092F60165 +:101FB000E092F7014B8169818A810E948D0F0F9019 +:101FC0000F900F90DF91CF911F910F91FF90EF90A5 +:101FD000DF90CF9008950F931F93CF93DF93C82F77 +:101FE000192F062FD42F8091F00180FF65C0982F04 +:101FF0009E77923029F48C2F912F0E949D0F1AC04A +:10200000282F26952F739EE3920F9F73943018F418 +:10201000D091F3010FC0265C2F73293058F4881F2C +:102020008827881F1091F101C12FCC0FC82B17FBF7 +:10203000112710F98091F001C0FB87F98093F0011E +:10204000C6958091F10180788C2B10FB87F98093E5 +:10205000F1010093F201D093F3016091F0017091CE +:10206000F1018091F2019091F3010E94D40E8091D0 +:10207000F3011F928F938091F2011F928F939091A1 +:10208000F001991F9927991F2091F101822F880F44 +:10209000892B27FB222720F92F938F9388EE92E03C +:1020A0009F938F930E9450088DB79EB708960FB6E6 +:1020B000F8949EBF0FBE8DBFDF91CF911F910F91FE +:1020C00008952091F001221F2227221F3091F10153 +:1020D000432F440F842F822B37FB992790F90A96C0 +:1020E00068E671E00E943E2F4091F3016091F20199 +:1020F0000C94EB0F2091F001221F2227221F309118 +:10210000F101432F440F842F822B37FB992790F93D +:102110008A3091051CF4825A9E4F01C00A9768E6E6 +:1021200071E00E943E2F4091F3016091F2010C9406 +:10213000EB0F6091F201862F90E08F3E910514F431 +:102140006F5E01C06FEF8091F001881F8827881FA4 +:102150009091F101292F220F97FB992790F9409137 +:10216000F301822B0C94EB0F6091F201862F90E02B +:10217000419714F0615101C060E08091F001881F27 +:102180008827881F9091F101292F220F97FB99270B +:1021900090F94091F301822B0C94EB0F4091F301E5 +:1021A000842F90E08F3E910514F44F5E01C04FEFF5 +:1021B0008091F001881F8827881F9091F101292FB5 +:1021C000220F97FB992790F96091F201822B0C94D2 +:1021D000EB0F4091F301842F90E0419714F04151AF +:1021E00001C040E08091F001881F8827881F9091EE +:1021F000F101292F220F97FB992790F96091F201A5 +:10220000822B0C94EB0F80916C0181110FC081E047 +:1022100080936C0189E0809391008FB7F89493E0EC +:102220009093990090ED909398008FBF08958091BE +:1022300071008260809371008091E90180FF08C085 +:1022400087ED92E09F938F930E9450080F900F901C +:102250000895809171008D7F809371008091E901D4 +:1022600080FF08C085EC92E09F938F930E945008F6 +:102270000F900F9008959091F00190FF4DC09178CC +:10228000811102C0926003C0883120F09E62909359 +:10229000F00105C08F73880F892B8093F001609146 +:1022A000F0017091F1018091F2019091F3010E948F +:1022B000D40E8091F00186958F731F928F938BE3DC +:1022C00093E09F938F930E9450088091F001982F84 +:1022D0009E770F900F900F900F90923019F40E94FC +:1022E000291107C08695825C8F73863110F40E9495 +:1022F00017118091F001881F8827881F9091F101A4 +:10230000292F220F97FB992790F94091F3016091B3 +:10231000F201822B0C94EB0F08958091E90181600A +:102320008093E90185ED93E09F938F930E9450087D +:1023300081E080936D018091E9010F900F9080FF03 +:1023400008C08FEB93E09F938F930E9450080F90EB +:102350000F900E94E92A811110C08091E90180FF4D +:1023600008C087E993E09F938F930E9450080F90D5 +:102370000F900E94CA2A0E94DA0E0E94D00E60932B +:10238000F0017093F1018093F2019093F3016E7765 +:10239000C1F48091E90180FF08C08EE493E09F932F +:1023A0008F930E9450080F900F900E94DA0E0E94A7 +:1023B000D00E6093F0017093F1018093F20190933D +:1023C000F3010E94FF0E0E9403118091F00180FF33 +:1023D00004C086958F730C943B1108958091F00191 +:1023E00086958F738F5F883108F081E00C943B11E4 +:1023F0008091F001982F909590FB80F98093F001E7 +:102400006091F0017091F1018091F2019091F301DE +:102410000E94D40E8091F00181701F928F938DE005 +:1024200093E09F938F930E9450088091F0010F904A +:102430000F900F900F9080FF04C086958F730C94BF +:102440003B110E9429112FEF80E792E0215080403C +:102450009040E1F700C000000C94740FCF93C82F98 +:1024600080916A0190916B010E94E128EC2FF0E0CD +:10247000EC54FB4FE491F0E08E179F0710F10E949F +:10248000D52890936B0180936A01E0916901F0E097 +:10249000E854FB4F44918091F001881F8827881FE2 +:1024A0009091F101292F220F97FB992790F96091C4 +:1024B000F201822B0E949D0F809169018F5F8093B2 +:1024C0006901CF910895CF93C82F809167019091B2 +:1024D00068010E94E128EC2FF0E0EF54FB4FE491FB +:1024E000F0E08E179F07E8F00E94D52890936801CE +:1024F000809367014091F3016091F2018091650141 +:10250000909166010E949D0F8091650190916601F6 +:10251000019668E671E00E942A2F909366018093ED +:102520006501CF910895DF92EF92FF920F931F9371 +:10253000CF93DF93D82E80916301909164010E9424 +:10254000E128ED2DE695F0E0EF54FB4FE491F0E04B +:102550008E179F07E8F10E94D5289093640180931D +:10256000630108EF11E0C0E0D0E088E6E82EFF2428 +:10257000F39480916101909162018C0F9D1FB701CE +:102580000E942A2F98014091F3016091F2010E946C +:102590000B0EAD960D5F1F4FC83681E0D80749F787 +:1025A0000E94740F2091610130916201D0FE0AC037 +:1025B000C9010196BE010E942A2F90936201809367 +:1025C000610106C0215031093093620120936101FD +:1025D000DF91CF911F910F91FF90EF90DF900895C1 +:1025E0008F929F92AF92BF92CF92DF92EF92FF9223 +:1025F0000F931F93CF93DF93C82F80FD03C09924BF +:10260000939402C099249A9480915F019091600103 +:102610000E94E128C695EC2FF0E0E255FB4FE491D3 +:10262000F0E08E179F0708F468C00E94D5289093A9 +:10263000600180935F0128EFE22E21E0F22E0AEF85 +:1026400011E0C0E0D0E037E0A32EB12CF8013197C3 +:102650001082F7011082F801108297E0C92ED12C68 +:10266000812C80915E01880D87FD885F992787FD09 +:102670009095C817D907E9F42091F3012C9DC0016A +:102680002D9D900D1124B5010E943E2F462F809163 +:10269000F001881F8827881F9091F101592F550F4D +:1026A00097FB992790F997016091F201852B0E9481 +:1026B0000B0E890CF1E0CF1AD108C114D10489F6B0 +:1026C000219683E0E80EF11C0D5F1F4FC830D10545 +:1026D00009F0BCCF0E94740F80915E0191E09912C5 +:1026E00006C0811102C087E006C0815004C090E09E +:1026F00001968770992780935E01DF91CF911F919A +:102700000F91FF90EF90DF90CF90BF90AF909F9090 +:102710008F9008959F92AF92BF92CF92DF92EF92E7 +:10272000FF920F931F93CF93DF93CDB7DEB76897D8 +:102730000FB6F894DEBF0FBECDBF182F80915C019D +:1027400090915D010E94E128E12FF0E0E555FB4FFB +:10275000E491F0E08E179F0708F491C00E94D528FD +:1027600090935D0180935C018E010F5F1F4F6E019E +:1027700083E0C80ED11CE12CF12C5801F6013197F1 +:102780001082D8011C92F6011082912C90910101C7 +:1027900080915B01999E800D112487FD04C08830D3 +:1027A0001CF087E001C080E0992787FD9095E8162E +:1027B000F906A1F48091F001881F8827881F909165 +:1027C000F101592F550F97FB992790F998014091E6 +:1027D000F3016091F201852B0E940B0E9394F7E0B8 +:1027E0009F12D4CF8FEFE81AF80A0D5F1F4FA3E0B6 +:1027F000CA0ED11CB8E0EB16F10409F0BFCF6AEFA6 +:1028000071E089E090E09C0127703327AB014150D3 +:102810005109F901EE0FFF1FE20FF31FEA0DFB1D37 +:102820002181DA012C939B01225031094081D90189 +:102830004C932281FB01208301966D5F7F4F813194 +:10284000910509F70E94740F9091010180915B013D +:10285000913049F48A3F2CF489EF80935B018FEF2C +:1028600008C081500AC08F303CF08EE080935B013D +:1028700081E08093010103C08F5F80935B016896C4 +:102880000FB6F894DEBF0FBECDBFDF91CF911F9181 +:102890000F91FF90EF90DF90CF90BF90AF909F90FF +:1028A00008951F920F920FB60F9211242F933F930A +:1028B0004F935F936F937F938F939F93AF93BF9348 +:1028C000EF93FF938091F00186958F739EE3980FAD +:1028D0009F73943020F482500E942E1223C09AE3FA +:1028E000980F9F73933020F486500E9463121AC091 +:1028F00097E3980F9F73963020F489500E949312AB +:1029000011C091E3980F9F73963020F48F500E946E +:10291000F01208C09BE2980F9F73933018F4855112 +:102920000E948A13FF91EF91BF91AF919F918F9178 +:102930007F916F915F914F913F912F910F900FBEBB +:102940000F901F90189580918101089508959FB769 +:10295000F894109270019FBF90911402943009F086 +:1029600058C09091E9009F702091EC0020FF02C0B8 +:1029700020E801C020E0292B93E09093E90090919A +:10298000EB0090FF43C09091EE0097FF3FC0909105 +:102990006E01992321F09091E80095FF37C01092C5 +:1029A0006E0196E03091E80035FD15C030911402BB +:1029B000343061F53091EB0035FD28C0915021F4A1 +:1029C00081E080936E0122C0EFE9FFE03197F1F7DB +:1029D00000C00000E7CF8093F1008091E80085FD02 +:1029E0000AC08091E80080FFFCCF8091E8008E77DC +:1029F0008093E80006C08FB7F89491E0909370013F +:102A00008FBF2F702093E90080E008952F702093EE +:102A1000E9008FEF0895CF93DF9300D01F92CDB7D9 +:102A2000DEB720911402243021F523E029839B8313 +:102A30008A8382E08093E9008FEF9091E8008150D3 +:102A400095FD06C095ED9A95F1F700008111F5CF3F +:102A50008091E80085FF0DC040E050E063E070E049 +:102A6000CE0101960E94A3178091E8008E77809393 +:102A7000E8000F900F900F90DF91CF910895CF93C2 +:102A8000DF9300D01F92CDB7DEB72091140224301F +:102A900019F522E029839B838A832093E9008FEF35 +:102AA0009091E800815095FD06C095ED9A95F1F75B +:102AB00000008111F5CF8091E80085FF0DC040E056 +:102AC00050E063E070E0CE0101960E94A317809170 +:102AD000E8008E778093E8000F900F900F90DF91C1 +:102AE000CF910895CF93DF93EC018091140284304D +:102AF00009F046C090910C019923D9F090910D01F5 +:102B00009923B9F08093E9008FEF9091E80081500C +:102B100095FD06C095E19A95F1F700008111F5CF7A +:102B20008091E80085FF2CC040E050E060E170E05B +:102B300017C081E08093E9008FEF9091E800815009 +:102B400095FD06C095ED9A95F1F700008111F5CF3E +:102B50008091E80085FF14C040E050E068E070E03C +:102B6000CE010E94A3178091E8008E778093E80041 +:102B700080E1FE01A1E7B1E001900D928A95E1F7B5 +:102B8000DF91CF9108958DED96E00E94B707809177 +:102B90001302811109C00E9435190E949219809177 +:102BA000E20084608093E200089589ED96E00E943F +:102BB000B70710921302089585ED96E00C94B707BD +:102BC00081ED96E00C94B7078DEC96E00E94B70774 +:102BD0000C94982880916F018F5F80936F0162E35E +:102BE0000E941E2F911135C010926F0180917001CB +:102BF000882379F180911402843049F58091E900AD +:102C00008F709091EC0090FF02C090E801C090E0BE +:102C1000982B83E08093E9008091EB0080FF14C043 +:102C20008091EE0087FF10C08091E80085FF03C00F +:102C30001092F100F9CF8091E80080FF05C08091EB +:102C4000E8008E778093E8009F709093E9001092DF +:102C50007001089542E061EC81E00E94AF1842E00B +:102C600061EC82E00E94AF1842E261EC83E00E94D6 +:102C7000AF1842E161EC84E00C94AF188091160229 +:102C8000833009F455C030F4813071F0823009F49A +:102C90008EC008958A3009F47AC08B3009F460C080 +:102CA000893009F09CC020C080911502813A09F05A +:102CB00096C08091E800877F8093E8008091190298 +:102CC00090911A02892B21F060E080E090E003C02F +:102CD00060E181E791E070E00E94EC178091E800EC +:102CE0008B778093E800089580911502813209F076 +:102CF00076C08091190290911A02009719F00397FB +:102D000009F06DC08091E800877F8093E800809192 +:102D1000E80082FD05C0809114028111F8CF5FC0E8 +:102D20008091F100809381018091E8008B7753C0FE +:102D300080911502813A09F052C080911902909158 +:102D40001A02892B09F04BC08091E800877F80939D +:102D5000E8008091E80080FFFCCF80910C0136C034 +:102D6000809115028132D9F58091190290911A0251 +:102D7000892BA9F58091E800877F8093E8000E9465 +:102D8000E4188091170280930C010C9453218091D8 +:102D90001502813221F58091E800877F8093E80059 +:102DA0000E94E41880911802809382010895809116 +:102DB0001502813AA1F48091E800877F8093E800B2 +:102DC0008091E80080FFFCCF809182018093F10028 +:102DD0008091E8008E778093E8000C94E4180895C1 +:102DE00084B7877F84BF88E10FB6F8948093600032 +:102DF000109260000FBE80E8809361001092610025 +:102E00000E94AC1C0E9435190E9492198091E20028 +:102E100084608093E20087EA94E10E941C28789401 +:102E20000E940C1C0E94AE1C82E091E00E94291CB2 +:102E30008CEB96E00E94B70780911402853089F4EC +:102E400088EB96E00E94B7070E94592880911202F1 +:102E5000882391F30E948728882371F30E948D179D +:102E6000EBCF0E94D61CE8CF292F33272330310522 +:102E7000A9F06CF42130310509F442C0223031054B +:102E800009F043C084E790E02FEF36E042C02132E2 +:102E90003105C9F02232310519F137C09927813047 +:102EA000910541F08230910541F0892B71F5EBEFEE +:102EB000F6E005C0EDEEF6E002C0E1EEF6E084914A +:102EC00090E09F0126C0643000F5E62FF0E0EE0FA1 +:102ED000FF1FE15DFE4F2081318189E090E019C044 +:102EE000643098F4E62FF0E0DF01AA0FBB1FA95D64 +:102EF000BE4F2D913C91ED5DFE4F808190E009C069 +:102F000082E190E023E737E004C080E090E020E039 +:102F100030E0FA0131832083089580E189BD82E1A8 +:102F200089BD09B400FEFDCF8091D8008F7D8093CC +:102F3000D8008091E00082608093E0008091E00002 +:102F400081FDFCCF0895CF92DF92EF92FF920F9315 +:102F50001F93CF93DF937C018B01EA010E94051937 +:102F6000811131C0209731F088819981081B190B9C +:102F7000E80EF91EC12CD12C0115110519F1809113 +:102F8000E80085FD14C08091E8008E778093E8000A +:102F9000209741F0888199818C0D9D1D99838883AC +:102FA00085E011C00E940519882331F30CC0F70198 +:102FB00081917F018093F10001501109FFEFCF1A39 +:102FC000DF0ADACF80E0DF91CF911F910F91FF9060 +:102FD000EF90DF90CF90089520911B0230911C025A +:102FE0002617370748F06115710539F42091E8007C +:102FF0002E772093E80001C0B901FC0120E06115A3 +:103000007105B9F180911402882309F440C085301C +:1030100009F43FC08091E80083FD3DC08091E80045 +:1030200082FF06C08091E80082FF26C080E00895FC +:103030008091E80080FFE3CF2091F3008091F200BF +:1030400090E0922B6115710551F08830910538F4AC +:1030500021912093F100615071090196F3CF21E095 +:10306000089709F020E08091E8008E778093E800CF +:10307000C6CF2111C7CFD6CF80911402882339F053 +:10308000853039F08091E80083FFCCCF04C082E026 +:10309000089583E0089581E0089520911B02309106 +:1030A0001C022617370748F06115710539F4209185 +:1030B000E8002E772093E80001C0B901FC0120E070 +:1030C00061157105C1F180911402882309F441C092 +:1030D000853009F440C08091E80083FD3EC08091B6 +:1030E000E80082FF06C08091E80082FF27C080E0F0 +:1030F00008958091E80080FFE3CF2091F300809154 +:10310000F20090E0922B6115710559F0883091051D +:1031100040F424912093F100319661507109019699 +:10312000F2CF21E0089709F020E08091E8008E7747 +:103130008093E800C5CF2111C6CFD5CF809114026E +:10314000882339F0853039F08091E80083FFCBCFB8 +:1031500004C082E0089583E0089581E00895982FE7 +:10316000973058F59093E900981739F07091EC007A +:103170002091ED005091F00003C0242F762F50E0F5 +:1031800021FF19C03091EB003E7F3093EB0030916E +:10319000ED003D7F3093ED003091EB0031603093D6 +:1031A000EB007093EC002093ED005093F000209121 +:1031B000EE0027FF07C09F5FD3CF8F708093E90099 +:1031C00081E0089580E008958091150287FD05C093 +:1031D0008091E80080FF0EC012C08091E80082FD5F +:1031E00005C0809114028111F8CF08958091E80004 +:1031F0008B7708C0809114028111EACF08958091E5 +:10320000E8008E778093E80008958091E400909123 +:10321000E50045E62091EC0020FF21C02091E80068 +:1032200020FD21C020911402222389F0253089F04D +:103230002091EB0025FD0FC02091E4003091E500C6 +:103240002817390739F3415041F0C901E3CF82E033 +:10325000089583E0089581E0089584E00895209121 +:10326000E80022FFDFCF80E008950E94A3190E94AA +:10327000AB19E0EEF0E0808181608083E8EDF0E062 +:1032800080818F77808319BCA7EDB0E08C918E7F11 +:103290008C9380818F7E80831092130208950F9308 +:1032A0001F93CF93DF930E94A3190E94AB19C8ED1F +:1032B000D0E088818F77888388818068888388813F +:1032C0008F7D888319BC1092140210921002109204 +:1032D00012021092110200EE10E0F80180818B7F43 +:1032E000808388818160888342E060E080E00E9482 +:1032F000AF18E1EEF0E080818E7F8083E2EEF0E0B7 +:10330000808181608083808188608083F8018081F2 +:103310008E7F8083888180618883DF91CF911F9128 +:103320000F910895E8EDF0E080818F7E8083E7EDD6 +:10333000F0E080818160808384E082BF81E08093BF +:1033400013020C944F19E8EDF0E080818E7F8083AA +:103350001092E20008951092DA001092E1000895B0 +:103360001F920F920FB60F9211242F933F934F93FA +:103370005F936F937F938F939F93AF93BF93EF93DD +:10338000FF938091E10082FF0BC08091E20082FFF9 +:1033900007C08091E1008B7F8093E1000E94EA15D5 +:1033A0008091DA0080FF1FC08091D80080FF1BC091 +:1033B0008091DA008E7F8093DA008091D90080FFBF +:1033C0000DC080E189BD82E189BD09B400FEFDCF59 +:1033D00081E0809314020E94C31505C019BC1092AD +:1033E00014020E94D5158091E10080FF19C08091E0 +:1033F000E20080FF15C08091E2008E7F8093E200A2 +:103400008091E20080618093E2008091D800806228 +:103410008093D80019BC85E0809314020E94E015C7 +:103420008091E10084FF30C08091E20084FF2CC0D5 +:1034300080E189BD82E189BD09B400FEFDCF8091A4 +:10344000D8008F7D8093D8008091E1008F7E80939B +:10345000E1008091E2008F7E8093E2008091E200A3 +:1034600081608093E20080911002882311F084E053 +:1034700007C08091E30087FF02C083E001C081E0C4 +:10348000809314020E94E4158091E10083FF29C01B +:103490008091E20083FF25C08091E100877F8093C7 +:1034A000E10082E080931402109210028091E1000A +:1034B0008E7F8093E1008091E2008E7F8093E20016 +:1034C0008091E20080618093E20042E060E080E071 +:1034D0000E94AF188091F00088608093F0000E94F5 +:1034E000DC15FF91EF91BF91AF919F918F917F91EB +:1034F0006F915F914F913F912F910F900FBE0F9061 +:103500001F9018951F920F920FB60F9211242F93B0 +:103510003F934F935F936F937F938F939F93AF935B +:10352000BF93CF93EF93FF93C091E900CF70809149 +:10353000EC001092E9008091F000877F8093F0000A +:1035400078940E94BE1A1092E9008091F000886081 +:103550008093F000C093E900FF91EF91CF91BF916C +:10356000AF919F918F917F916F915F914F913F911B +:103570002F910F900FBE0F901F9018951F93CF9310 +:10358000DF93CDB7DEB7AA970FB6F894DEBF0FBEB4 +:10359000CDBFE5E1F2E08091F100819322E0ED31D1 +:1035A000F207C9F70E943E168091E80083FF1CC114 +:1035B0002091150230911602832F90E08A309105F8 +:1035C00008F012C1FC01E15AFF4F0C94522F203831 +:1035D00081F0223809F008C1809119028F70809320 +:1035E000E9008091EB0085FB882780F91092E900C3 +:1035F00006C0809111029091120291118260909107 +:10360000E800977F9093E8008093F1001092F1001A +:10361000C5C0822F8D7F09F0E7C0222319F0223028 +:1036200061F0E2C080911702813009F0DDC03330D3 +:1036300009F080E08093120228C080911702811166 +:1036400024C0209119022F7009F4CEC02093E90004 +:103650008091EB0080FF19C08091EB00333011F4B2 +:10366000806211C080618093EB0081E090E0022EC7 +:1036700001C0880F0A94EAF78093EA001092EA00EA +:103680008091EB0088608093EB001092E9008091BC +:10369000E800877F86C02111A7C0109117021F770D +:1036A0008091E3008078812B8093E3008091E80093 +:1036B000877F8093E8000E94E4188091E80080FFF3 +:1036C000FCCF8091E30080688093E300112311F028 +:1036D00083E001C082E08093140286C0205822302B +:1036E00008F082C080911702909118028C3D23E06F +:1036F000920779F583E08A838AE289834FB7F89449 +:10370000DE01139620E03EE051E2E32FF0E050931B +:103710005700E49120FF03C0E295EF703F5FEF7028 +:103720008E2F90E0EA3010F0C79601C0C0968D93BE +:103730009D932F5F243149F74FBF8091E800877F29 +:103740008093E8006AE270E0CE0101960E94EC17D7 +:1037500014C0AE014F5F5F4F609119020E94341791 +:10376000009709F441C02091E800277F2093E800EA +:10377000BC0189819A810E944D188091E8008B7765 +:103780008093E80031C0203879F58091E800877F88 +:103790008093E800809110028093F1008091E8000E +:1037A0008E778093E8000E94E4181EC021111CC08F +:1037B000909117029230C0F48091E800877F809347 +:1037C000E800909310020E94E41880911002811189 +:1037D00004C08091E30087FF02C084E001C081E063 +:1037E000809314020E942A168091E80083FF0AC089 +:1037F0008091E800877F8093E8008091EB008062F1 +:103800008093EB00AA960FB6F894DEBF0FBECDBF33 +:10381000DF91CF911F910895CF9380911402882357 +:10382000B1F08091E9008F709091EC0090FF02C0A0 +:1038300090E801C090E0C92FC82B1092E900809158 +:10384000E80083FD0E94BE1ACF70C093E900CF91BB +:10385000089590938801809387010895E0918701EE +:10386000F0918801309721F00190F081E02D0994CA +:1038700080E00895FF920F931F93CF93DF938C0105 +:10388000E0918701F0918801309799F10280F381EE +:10389000E02D09958091E90182FF2BC080FF04C0D3 +:1038A0008CE598E00E94B707E80180E1F82E06E574 +:1038B00018E08091E90180FF0BC088811F928F93EF +:1038C0001F930F930E9450080F900F900F900F902E +:1038D000FA942196F110EDCF8091E90180FF09C0A3 +:1038E00084E598E0DF91CF911F910F91FF900C94A8 +:1038F000B707DF91CF911F910F91FF90089520910D +:103900008501309186018217930771F090938601AB +:1039100080938501E0918701F0918801309721F033 +:103920000680F781E02D099408952091830130915C +:1039300084018217930771F090938401809383012F +:10394000E0918701F0918801309721F00084F185A2 +:10395000E02D0994089508950C94AB1C0E94CC2886 +:103960000E94BC0C0E9497290E94402E0C948D113D +:10397000CF93DF931F92CDB7DEB79091E90192FF0D +:1039800010C090FF0EC01F928F932EE638E03F9339 +:103990002F9389830E9450080F900F900F900F90E3 +:1039A00089810F90DF91CF910C94A60C5F926F925A +:1039B0007F928F929F92AF92BF92CF92DF92EF92BF +:1039C000FF920F931F93CF93DF9300D000D01F92ED +:1039D000CDB7DEB70E94FF0C94E9C92E91E0D92E35 +:1039E00004E010E0AA24A394B12C502E802F0E9452 +:1039F0007E0D3C01F601F290E2906F01E826F92677 +:103A0000E114F104A1F40150110978F78FEF8983D3 +:103A10008A831B820E94D5288160782F9D838C83A6 +:103A200049815A816B818D810E94841D38C08091AB +:103A3000E90181FD0E94870D2DE030E04501022E55 +:103A400002C0880C991C0A94E2F7C4018E219F21C0 +:103A5000892B09F129835A826820792081E067281F +:103A600009F480E08B830E94D5288160782F9D83A4 +:103A70008C8349815A816B818D810E94841DF8015C +:103A8000EE0FFF1FE657FE4F808191818825992513 +:103A90009183808304C02150310980F6B4CF109106 +:103AA00089010E942E1C1817D1F00E942E1C8093B1 +:103AB00089010F900F900F900F900F90DF91CF9191 +:103AC0001F910F91FF90EF90DF90CF90BF90AF903C +:103AD0009F908F907F906F905F900C94B81C0F9088 +:103AE0000F900F900F900F90DF91CF911F910F913A +:103AF000FF90EF90DF90CF90BF90AF909F908F900E +:103B00007F906F905F900895CF93DF93CDB7DEB72E +:103B10002B970FB6F894DEBF0FBECDBF4F835887EB +:103B200069877A878B87DE01119686E0FD01119205 +:103B30008A95E9F785E0FE01379601900D928A9506 +:103B4000E1F749815A816B817C818D819E810E9440 +:103B500023242B960FB6F894DEBF0FBECDBFDF91A6 +:103B6000CF910895CF93C82F882309F4C1C082381C +:103B700059F40E942E1C81FDBBC089E30E94FE26E1 +:103B80000E94ED2789E30CC0833879F40E942E1C33 +:103B900080FDAEC083E50E94FE260E94ED2783E5EE +:103BA0000E944F27CF910C94ED27843859F40E943E +:103BB0002E1C82FD9DC087E40E94FE260E94ED27F8 +:103BC00087E4EECF8CEF8C0F813A48F48C2F0E9463 +:103BD000F42D81118DC08C2F0E94FE26E3CF80E250 +:103BE0008C0F883048F4C77081E001C0880FCA95F7 +:103BF000EAF70E94A427D6CF8BE58C0F833078F4A8 +:103C0000C53A29F0C63A31F482E890E005C081E86F +:103C100090E002C083E890E0CF910C947F1C88E58F +:103C20008C0F833108F064C0C83A39F1C93A41F1C8 +:103C3000CA3A49F1CB3A51F1CC3A59F1CD3A61F156 +:103C4000C03B69F1CE3A71F1CF3A79F1C13B81F1D4 +:103C5000C23B89F1C33B91F1C43B99F1C53BA1F152 +:103C6000C63BA9F1C73BB1F1C83BB9F1C93BC1F1B2 +:103C7000CA3BC9F58AE292E038C082EE90E035C0D6 +:103C800089EE90E032C08AEE90E02FC085EB90E0A4 +:103C90002CC086EB90E029C087EB90E026C08CEC2E +:103CA00090E023C08DEC90E020C083E891E01DC03F +:103CB0008AE891E01AC082E991E017C084E991E0B6 +:103CC00014C081E292E011C083E292E00EC084E26F +:103CD00092E00BC085E292E008C086E292E005C067 +:103CE00087E292E002C080E090E0CF910C94951CB6 +:103CF000CF910895882309F44BC0823859F40E946B +:103D00002E1C81FF45C089E30E94FE260E94ED27FC +:103D100089E30CC0833871F40E942E1C80FF38C0E8 +:103D200083E50E94FE260E94ED2783E50E944F272F +:103D30000C94ED27843859F40E942E1C82FF28C071 +:103D400087E40E94FE260E94ED2787E4EFCF9CEFD8 +:103D5000980F913A58F390E2980F983050F487708A +:103D600091E001C0990F8A95EAF7892F0E94AA274E +:103D7000DFCF9BE5980F933020F480E090E00C9427 +:103D80007F1C885A833120F480E090E00C94951CCD +:103D90000895882321F00E94A4270C94ED2708950C +:103DA000882321F00E94AA270C94ED2708958F9272 +:103DB0009F92AF92BF92CF92DF92EF92FF920F93BA +:103DC0001F93CF93DF931F92CDB7DEB74C01A62E82 +:103DD000472FFC01E580E2948FE0E822F280FF208B +:103DE00021F079830E94C127498149830E94F726E7 +:103DF0004981882381F0FF2071F080E28A0D8830AC +:103E000050F082E00E94E0260E94F726BB24B39483 +:103E1000B826498101C0B12CE42FE295EF70F0E0A3 +:103E2000E759FF4F0C94522F842F807F142F1F705F +:103E3000882311F01295107FFF2089F0112309F4D7 +:103E40008BC180E28A0D883020F4812F0E94A42744 +:103E500003C0812F0E94B4270E94ED277DC18A2DC7 +:103E60000E947A1E112309F4B4C180E28A0D8830C1 +:103E700020F4812F0E94AA2703C0812F0E94BA2715 +:103E80000E94ED27A6C1242F207F842F8F7020321F +:103E900011F08295807FAA2021F0F1E0AF16B1F0F9 +:103EA00021C0FF2041F0EE2039F191E0E91224C059 +:103EB0000E94D4278EC1EE2021F0E1E0EE1609F435 +:103EC00088C189830E94D727898100C1FF2029F0FA +:103ED000F5E0FE1508F47DC10FC094E09E1508F4CE +:103EE00078C1F4C0FF2059F0EE2031F0F401958143 +:103EF00090FF32C19F7095830E94C91E6AC1EE2057 +:103F000009F4E4C02FC1242F26952695237030E0B4 +:103F10002115310521F02130310561F05AC1FF2012 +:103F200021F08A2D942F937002C080E090E00E94CF +:103F30007F1C4FC1FF2021F08A2D942F937002C067 +:103F400080E090E00E94951C44C1842F837009F0AA +:103F50004EC0F1103EC12A2D229526952770220FC2 +:103F6000220F8A2D8F70C82ED12CE12CF12C022E1D +:103F700004C0CC0CDD1CEE1CFF1C0A94D2F7A4FE7E +:103F800010C06FE070E080E090E004C0660F771F23 +:103F9000881F991F2A95D2F7609570958095909506 +:103FA00003C060E070E0CB01242F26952695237096 +:103FB00030E02230310569F02330310589F06C2979 +:103FC0007D298E299F292130310571F00E947525A8 +:103FD00000C16C297D298E299F290E948F25F9C057 +:103FE0000E947525C701B6010E945B25F2C0FF2023 +:103FF00019F0842F817001C08695882309F4E9C0E7 +:104000002A2D229526952770220F220F8A2D8F7038 +:10401000C82ED12CE12CF12C022E04C0CC0CDD1CBE +:10402000EE1CFF1C0A94D2F7A4FE10C06FE070E0F3 +:1040300080E090E004C0660F771F881F991F2A95C3 +:10404000D2F7609570958095909503C060E070E020 +:10405000CB01242F26952695237030E022303105A0 +:1040600069F02330310589F06C297D298E299F293B +:104070002130310571F00E944926ABC06C297D29A1 +:104080008E299F290E946326A4C00E944926C70149 +:10409000B6010E942F269DC00A2D10E0F801E05EB7 +:1040A000F109E531F10508F053C0E758FF4F0C94D2 +:1040B000522F1A2D1F70842F8F71FF2021F00E9424 +:1040C000C825812F19CF0E94E925812F0E94D01E7B +:1040D00080C0FF2049F0F4E0FE1508F47AC0842F78 +:1040E0008F710E940E2675C085E08E1508F471C090 +:1040F000F6CFFF2039F0842F8F710E94C82569C048 +:10410000FF20C9F3842F8F710E94E92562C0FF2030 +:1041100029F0842F8F710E94B3255BC00E94A925CE +:1041200058C0FF2051F0142F1F71812F0E94C82505 +:1041300063E0812F0E94D7264CC081E00E94E026D8 +:1041400091E09E1508F045C082E00E94E02641C043 +:10415000FF2031F0EE2079F28A2D0E94B21D39C085 +:10416000EE2081F28A2D0E947A1E33C04F706A2D94 +:10417000C4010E9488090E94D0242BC0F11029C0DC +:10418000942F9F70492F50E042305105B9F04CF404 +:104190004115510581F041305105D9F40E94752E29 +:1041A00018C04330510569F04430510591F48A2D0F +:1041B0000E94022F0EC00E94512E0BC00E94A42EFE +:1041C00008C00E94CA2E05C04F706A2DC4010E940B +:1041D0008108BB20F1F00E94D32680FD1AC0F401B3 +:1041E00012820E94CD260E94C825C4010E94172178 +:1041F0000E94CD260F90DF91CF911F910F91FF90DC +:10420000EF90DF90CF90BF90AF909F908F900C94E5 +:10421000E9250F90DF91CF911F910F91FF90EF90C3 +:10422000DF90CF90BF90AF909F908F9008950F93A5 +:104230001F93CF93DF93EC01288139818B819C817F +:10424000892B31F03F3F11F080E003C02F3FE1F7B1 +:1042500081E0811113C0CE010E94F008882371F023 +:10426000688179818A810E94C9268C010E947D26FD +:104270000E945025B801CE010E94D71EDF91CF9138 +:104280001F910F9108950E94C1270E94D1270E947B +:1042900093270E94ED2780E090E00E947F1C80E041 +:1042A00090E00C94951C0E94B1270C9443210E942D +:1042B000BE26292F22952F7030E02C3031054CF48A +:1042C0002A3031056CF42250310922303105B0F426 +:1042D00007C02C30310571F02F30310559F00EC078 +:1042E000803F31F018F4803E48F402C0843F31F43E +:1042F00081E0089593FB882780F9089580E0089570 +:10430000CF93DF9300D000D01F92CDB7DEB70F90D0 +:104310000F900F900F900F90DF91CF910895CF9352 +:10432000DF9300D000D000D0CDB7DEB726960FB611 +:10433000F894DEBF0FBECDBFDF91CF9108951F93DC +:10434000CF93DF93C091940116E080919501C81737 +:1043500099F0D0E01C9FF0011D9FF00D1124EA564A +:10436000FE4F4081518162817381848195810E94D9 +:104370008F212196C770E9CFDF91CF911F910895CA +:104380004091C6015091C7016091C8017091C90167 +:104390008091CA019091CB010C948F21CF93809191 +:1043A000CB0182958F7009F05FC08091C80188238E +:1043B00009F45AC020919401A09195016091C60121 +:1043C0007091C7018091C9019091CA0131E06F3F9E +:1043D00009F030E0B32FC6E02A1709F445C0009772 +:1043E00021F07F3F21F44B2F03C041E001C040E0AA +:1043F00030E040FD35C0C29FF001C39FF00D112495 +:10440000EA56FE4F418174132BC04081641328C0CB +:104410004281411125C0438154814817590710F446 +:1044200041505109481B590B483C5105C8F4809133 +:10443000CB018F7080618093CB0186E0829FF00179 +:10444000839FF00D1124E556FE4F80818F708061AF +:10445000808386EC91E00E941721CF910C949F21DC +:104460002F5F3F4F2770B8CFCF910895CF92DF9243 +:10447000EF92FF920F931F93CF93DF93CDB7DEB7E9 +:1044800062970FB6F894DEBF0FBECDBF8C0185E0FA +:10449000F801DE011D9601900D928A95E1F7D80191 +:1044A0004C9111965C91119712966C9112971396FC +:1044B000ED90FC9014977091C601E091C701209196 +:1044C000C9013091CA012115310531F0EF3F31F4B6 +:1044D00081E07F3F19F403C081E001C080E0B82F84 +:1044E000B170CB2E80FD6CC1D090C801DD2009F4E5 +:1044F000F5C0F091CB01E216F30638F0C701821B3C +:10450000930B883C910548F09BC0209530952E0D6B +:104510003F1D283C310508F093C08F2F807F09F0A4 +:1045200052C0E51314C0741312C0D62E61110FC00F +:10453000FF70F061F093CB010E94C02186EC91E006 +:104540000E9417218091CB01F80185836CC1EF286F +:1045500031F05F3F31F481E04F3F19F403C081E057 +:1045600001C080E080FD03C081E0862701C080E0BB +:10457000F82FF170FF2E80FF1CC0809194012091D4 +:10458000950136E0821709F428C190E0389FF001C8 +:10459000399FF00D1124EA56FE4F7181571306C062 +:1045A0007081471303C07281671303C0019687703F +:1045B000E9CFD62E662309F436C18091CB01816004 +:1045C0008093CB0153C0E51308C0741306C061117A +:1045D00004C0D8011596FC93AEC04D875E878D85CB +:1045E0009E856A8B0E9457216A89882329F1D62EDD +:1045F000662311F12091CB01822F82958F7090E07C +:1046000002970CF460C08091C6019091C701988711 +:104610008F831986FB86EA862C87CE01079651C0C8 +:10462000E51731F14D875E878D859E856A8B0E94E7 +:1046300057216A8981112EC0C8010E941721A4C088 +:104640008F2F807F69F77E2DF98AE88A89890E94F9 +:10465000802186EC91E00E941721E6ECF1E086E0F3 +:10466000DF011D928A95E9F70E94C021D12CDBC0A1 +:104670007413D8CF6111D6CFD8011596FC93C80119 +:104680000E941721E6ECF1E086E0DF011D928A9599 +:10469000E9F7C9C0D62E662379F22091CB01822F8B +:1046A00082958F7090E0029774F08091C60190918E +:1046B000C7019A8389831B82FD82EC822E83CE01FF +:1046C00001960E94172186E0F801A6ECB1E0019066 +:1046D0000D928A95E1F70E94CE216FC0E216F30693 +:1046E00028F0C701821B930B9C0104C020953095D4 +:1046F0002E0D3F1D283C310508F052C0D62E6623F2 +:1047000009F49ACFE5132CC074132AC08091CB0111 +:1047100080FD1DC0982F92959F70C9F0D801159605 +:104720008C9315979F3039F09F5F9295907F8F7093 +:10473000892B15968C93C8010E94172186E0F801F9 +:10474000A6ECB1E001900D928A95E1F736C086E0C3 +:10475000F801A6ECB1E001900D928A95E1F763C0F3 +:104760004D875E878D859E850E945721882379F02D +:1047700086E0F801A6ECB1E001900D928A95E1F790 +:104780000E94CE210E94C021DD24D3944CC0809190 +:10479000CB0181608093CB01C8010E94172143C0E7 +:1047A0007E2DF98AE88A89890E948021E6ECF1E071 +:1047B00086E0DF011D928A95E9F70E94C02133C08F +:1047C000662309F439CF4D875E878D859E850E94CB +:1047D0005721882309F430CFCBCF4D875E878D8555 +:1047E0009E850E94BE26292F22952F7030E0223010 +:1047F00031052CF49F7041F0811106C00CC02430AB +:1048000031052CF49F7049F4805E883020F0C80197 +:104810000E941721CF2CDC2C06C0D80115969C9144 +:10482000907F91F7F8CF8D2D62960FB6F894DEBF8A +:104830000FBECDBFDF91CF911F910F91FF90EF90F1 +:10484000DF90CF9008951F93CF93DF93CDB7DEB75E +:104850002C970FB6F894DEBF0FBECDBF4F8358879D +:1048600069877A878B879C87CE0107960E943622BC +:104870008823C1F02F8138858A859B85892B31F06B +:104880003F3F11F080E003C02F3FE1F781E081114D +:1048900047C04F81588569857A858B859C850E94A4 +:1048A0008F213EC086E0FE013796DE011196019011 +:1048B0000D928A95E1F7FF81E8854A855B85411570 +:1048C000510531F0EF3F31F481E0FF3F19F403C0AF +:1048D00081E001C080E080FD23C02091950130E09F +:1048E000C9010196877099276091940170E086173D +:1048F0009707F1F1F983EA835D834C8396E0929FF9 +:10490000D001939FB00D1124AA56BE4FFE013196DF +:1049100001900D929A95E1F7809395010E949F2155 +:1049200016E08091940190919501891779F1189F73 +:10493000C00111248A569E4F0E943622882331F1ED +:10494000E09194011E9FF0011124EA56FE4F408130 +:10495000518162817381848195810E948F21809130 +:10496000940190E001968770992780939401D9CFA4 +:104970000E9453211092950110929401E6ECF1E00F +:1049800086E0DF011D928A95E9F7CACF2C960FB613 +:10499000F894DEBF0FBECDBFDF91CF911F91089578 +:1049A000EF92FF920F931F93CF93DF93FC01009739 +:1049B00009F46FC0F12CEE24E394EF012196849169 +:1049C000843740F4843008F055C0813081F0823063 +:1049D00021F15FC0853709F447C0C0F19CE7980F0B +:1049E000903708F056C08F770E947A1E45C08F011D +:1049F0000E5F1F4FFE01849190E2980F983050F4A3 +:104A00008770FE2D01C0FF0F8A95EAF78F2F0E9455 +:104A1000C42715C00E94B21D14C08F010E5F1F4F26 +:104A2000FE01849190E2980F983068F48770FE2D13 +:104A300001C0FF0F8A95EAF78F2F0E94CA270E94B4 +:104A4000ED27E80119C00E947A1EFBCFCF01029624 +:104A5000FE01C491CC2361F0EFE9FFE03197F1F75B +:104A600000C00000C150F6CFCF010296FE01F490C5 +:104A7000EC0102C00E94B21D8F2D882341F0EFE9A6 +:104A8000FFE03197F1F700C000008150F6CFFE0142 +:104A900094CFDF91CF911F910F91FF90EF900895E8 +:104AA00008956093D0017093D1018093D2019093C7 +:104AB000D3010C9443210F931F930091D0011091C7 +:104AC000D1012091D2013091D301062B172B282B35 +:104AD000392B0093D0011093D1012093D201309350 +:104AE000D3011F910F910C9443210F931F930091B9 +:104AF000D0011091D1012091D2013091D301062330 +:104B00001723282339230093D0011093D101209338 +:104B1000D2013093D3011F910F910C9443210F9335 +:104B20001F930091D0011091D1012091D2013091B9 +:104B3000D30106271727282739270093D001109380 +:104B4000D1012093D2013093D3011F910F910C9486 +:104B500043211092CC011092CD011092CE011092FF +:104B6000CF010C94432141E050E060E070E004C0CC +:104B7000440F551F661F771F8A95D2F74093CC01CB +:104B80005093CD016093CE017093CF010C944321DB +:104B900041E050E060E070E004C0440F551F661F24 +:104BA000771F8A95D2F78091CC019091CD01A09189 +:104BB000CE01B091CF01842B952BA62BB72B8093E0 +:104BC000CC019093CD01A093CE01B093CF010C9472 +:104BD000432141E050E060E070E004C0440F551F05 +:104BE000661F771F8A95D2F740955095609570950E +:104BF0008091CC019091CD01A091CE01B091CF01D7 +:104C000084239523A623B7238093CC019093CD01D1 +:104C1000A093CE01B093CF010C94432141E050E02A +:104C200060E070E004C0440F551F661F771F8A952F +:104C3000D2F78091CC019091CD01A091CE01B0919D +:104C4000CF0184279527A627B7278093CC0190937F +:104C5000CD01A093CE01B093CF010C9443210F93CB +:104C60001F930091CC011091CD012091CE01309184 +:104C7000CF01062B172B282B392B0093CC01109337 +:104C8000CD012093CE013093CF011F910F910C9451 +:104C900043210F931F930091CC011091CD012091DE +:104CA000CE013091CF010623172328233923009307 +:104CB000CC011093CD012093CE013093CF011F91F1 +:104CC0000F910C9443210F931F930091CC011091ED +:104CD000CD012091CE013091CF010627172728273B +:104CE00039270093CC011093CD012093CE0130934E +:104CF000CF011F910F910C9443210895CF92DF9221 +:104D0000EF92FF920F931F93CF93DF93EC01C0902C +:104D1000D001D090D101E090D201F090D3018091E8 +:104D2000CC019091CD01A091CE01B091CF01C82AC4 +:104D3000D92AEA2AFB2A0FE110E0B701A601002ECA +:104D400004C076956795579547950A94D2F740FD2C +:104D500005C00150110988F780E007C0BE01802F0F +:104D60000E940C0C0197A9F3802FDF91CF911F9126 +:104D70000F91FF90EF90DF90CF900895CF93DF9346 +:104D8000EC010E947E26BE010E940C0CDF91CF91A7 +:104D90000895CB010E94BE2608958091D401859587 +:104DA0008595859508958091D4018770089598E040 +:104DB000899F90011124622B6093D4010C94C82523 +:104DC0004091D401809584238093D401982F9770CB +:104DD00069F450E0282F332727FD309542175307F9 +:104DE00029F08595859585950C94E92508959091F0 +:104DF000D401977081E009F480E0089590910C014E +:104E0000992361F190910D01992341F1982F969585 +:104E1000969596959F3088F4E0910E01F0910F01E0 +:104E2000E90FF11D877021E030E001C0220F8A9563 +:104E3000EAF78181822B818308959091E90190FFA7 +:104E40002DC01F928F9385EA98E09F938F930E94C5 +:104E500050080F900F900F900F90089540910E0101 +:104E600050910F0120E030E09FEFFA01E20FF31FB5 +:104E70006281681799F09F3F19F4611101C0922F68 +:104E80002F5F3F4F2E30310581F79F3F39F0FA01F8 +:104E9000E90FF11D97FDFA95828308950895909189 +:104EA0000C01992369F190910D01992349F1982FF3 +:104EB0009695969596959F3090F4E0910E01F0911D +:104EC0000F01E90FF11D877021E030E001C0220FD2 +:104ED0008A95EAF72095818128232183089590916E +:104EE000E90190FF1FC01F928F9387E898E09F937E +:104EF0008F930E9450080F900F900F900F9008957D +:104F000040910E0150910F0120E030E0FA01E20FD4 +:104F1000F31F9281981301C012822F5F3F4F2E30F2 +:104F20003105A1F7089581E090E0E0910E01F09144 +:104F30000F01E80FF91F1082019680319105A9F742 +:104F400008958091E80108959091E801982B90933D +:104F5000E801089580959091E80198239093E801E5 +:104F600008951092E80108959091E701982B90938D +:104F7000E701089580959091E70198239093E701C8 +:104F800008951092E70108959091E601982B90936F +:104F9000E601089580959091E60198239093E601AB +:104FA00008951092E60108958093D5010895109216 +:104FB000D501089540910E0150910F0120E030E09D +:104FC00080E0FA01E20FF31F918191118F5F2F5F53 +:104FD0003F4F2F303105A9F70895E0910E01F09170 +:104FE0000F018091E8018083E0910E01F0910F01A3 +:104FF00080819091E701892B8083E0910E01F091EF +:105000000F0180819091E601892B80839091D501D9 +:10501000992361F0E0910E01F0910F018081892BBD +:1050200080830E94DA2781111092D50180910E01B0 +:1050300090910F010C943A1C9093390180933801A0 +:10504000089540E0009739F09C01215031098223F6 +:1050500093234F5FF7CF842F08958295982F9C7CE0 +:1050600096959695837344E0849F90011124922B2A +:10507000892F8A7A86959575990F892B08951F93A4 +:10508000CF93DF931F92CDB7DEB799830E942D286F +:10509000182F9981892F0E942D28212F30E0322F3F +:1050A0002227A901482BCA010F90DF91CF911F91B0 +:1050B000089580911402843039F11092EA0120E4BD +:1050C00088E190E00FB6F894A895809360000FBE39 +:1050D0002093600080E00E94600880E00E94A60C9F +:1050E00083B7817F846083BF83B7816083BF7894F7 +:1050F000889583B78E7F83BF88E10FB6F89480933D +:105100006000109260000FBE08950895089580E039 +:105110000E9460080E9485280E94FF0C0E94862839 +:105120000E94C10D91E0811101C090E0892F089586 +:105130000E94532180E00E9460080E94402E0E943D +:105140002E1C0C94A60C1F920F920FB60F921124D6 +:105150008F939F93AF93BF938091EA01811113C006 +:105160008091EB019091EC01A091ED01B091EE01E5 +:105170004196A11DB11D8093EB019093EC01A0938A +:10518000ED01B093EE01BF91AF919F918F910F9080 +:105190000FBE0F901F90189582E084BD93E095BDDF +:1051A0009AEF97BD80936E0008952FB7F894809181 +:1051B000EB019091EC01A091ED01B091EE012FBFB8 +:1051C0000895CF92DF92EF92FF920F931F932FB724 +:1051D000F8944091EB015091EC016091ED017091D8 +:1051E000EE012FBF6A017B01EE24FF248C0120E039 +:1051F00030E0C016D106E206F30610F44150510922 +:10520000481B590BCA011F910F91FF90EF90DF903F +:10521000CF9008951F920F920FB60F9211248F9383 +:105220009F93AF93BF938091EB019091EC01A0917C +:10523000ED01B091EE010196A11DB11D8093EB012E +:105240009093EC01A093ED01B093EE01BF91AF916B +:105250009F918F910F900FBE0F901F9018950E94F5 +:105260003519F8942FEF87EA91E62150804090405D +:10527000E1F700C0000087E090EBDC0180931F02A3 +:1052800090932002A0932102B09322022CE088E1A7 +:1052900090E00FB6F894A895809360000FBE20931D +:1052A0006000FFCFCF92DF92EF92FF920F931F9398 +:1052B000CF93DF93C82E84E0D82E01E010E08D2D2F +:1052C0000E947E0D7C01CDE0D0E098010C2E02C042 +:1052D000220F331F0A94E2F72E213F21232B49F09E +:1052E0006C2F7D2D80E00E948B09C81202C081E0E6 +:1052F00007C0219750F7DA948FEFD812E0CF80E003 +:10530000DF91CF911F910F91FF90EF90DF90CF90A1 +:105310000895CF93C82F8CE20E945229882321F050 +:105320008C2FCF910C94522980E0CF910895CF9388 +:105330000E94E92A811102C00E94CA2A8AEC98E0E0 +:105340000E94B707C5E6C15049F00E94FF0C8FE3E9 +:105350009CE90197F1F700C00000F5CF83EC98E0DD +:105360000E94B70789E20E948929811111C18AE24E +:105370000E94892981110E94CA2A85E00E948929F8 +:1053800081110E942F290E94F42A8093E90187E06D +:105390000E948929882399F18BE10E948929882319 +:1053A00051F09091E90191FB882780F921E0822753 +:1053B00080FB91F922C08EE00E948929882351F058 +:1053C0009091E90192FB882780F921E0822780FBF8 +:1053D00092F913C080E10E9489299091E901882304 +:1053E00041F093FB882780F921E0822780FB93F925 +:1053F00004C0892F809580FB90F99093E9018091FA +:10540000E9010E94F82A0E94062B80931D0280EE7B +:105410000E948929882341F080911D02982F909540 +:1054200090FB80F980931D0289E30E9489298823DB +:1054300059F090911D0291FB882780F921E0822785 +:1054400080FB91F990931D0282EE0E9489298823A6 +:1054500059F090911D0292FB882780F921E0822764 +:1054600080FB92F990931D0286EE0E948929882381 +:1054700059F090911D0293FB882780F921E0822743 +:1054800080FB93F990931D0283EE0E948929882363 +:1054900059F090911D0294FB882780F921E0822722 +:1054A00080FB94F990931D0285E30E94892988234B +:1054B00059F090911D0295FB882780F921E0822701 +:1054C00080FB95F990931D0281E30E94892988232E +:1054D00059F090911D0296FB882780F921E08227E0 +:1054E00080FB96F990931D0281E10E94892988230F +:1054F00059F090911D0297FB882780F921E08227BF +:1055000080FB97F990931D0280911D020E940A2B47 +:1055100080911D0287FB882780F980930D0187E227 +:105520000E948929C82F8EE10E9489298111C260B9 +:105530008FE10E9489298111C46080E20E9489293B +:105540008111C86081E20E9489298111C06182E2D3 +:105550000E9489298111C06283E20E9489298111F8 +:10556000C06484E20E948929882311F0C06802C0C7 +:10557000CC2329F08C2F0E94012B6C2F03C00E949A +:10558000FD2A682F70E080E090E0CF910C945125C7 +:10559000CF9108956DEE7EEF80E090E00E948A2F1B +:1055A00060E082E090E00E946C2F60E083E090E099 +:1055B0000E946C2F60E084E090E00E946C2F60E01D +:1055C00085E090E00E946C2F60E086E090E00C9413 +:1055D0006C2F80E090E00E94662F21E08D3E9E4F70 +:1055E00009F020E0822F089582E090E00C94582F7B +:1055F000682F82E090E00C946C2F83E090E00C9494 +:10560000582F682F83E090E00C946C2F84E090E09A +:105610000C94582F682F84E090E00C946C2F86E057 +:1056200090E00C94582F682F86E090E00C946C2F3B +:10563000CF93C82F1F928F9325EE38E03F932F937F +:105640000E94500861E070E080E090E004C0660FC6 +:10565000771F881F991FCA95D2F70E9451250F9076 +:105660000F900F900F90CF910C945321CF938B31CB +:1056700009F40FC208F049C08E3009F41DC200F5CC +:10568000873009F4E7C1A8F4863009F0A1C28091FF +:10569000E901817F8E7F8093E90185E79AE00E948E +:1056A000B70781E69EE00E94B70781E08093EF0193 +:1056B000CFC1883009F45BC08B3009F4C5C188C202 +:1056C000813109F46DC220F4803109F408C280C22E +:1056D000863109F41EC2893109F07AC286E69AE061 +:1056E0000E94B70786E29AE00E94B70784EF99E02C +:1056F0000E94B7078DEC99E00E94B70781E999E015 +:105700000E94B70783E699E0A1C1853309F45CC222 +:1057100068F4873209F458C228F48E3108F458C26C +:105720008D5153C2893209F44FC252C2833438F4C6 +:105730008A3308F047C2883309F486C149C28334EA +:1057400009F442C2883409F043C20E94532185E41F +:105750009EE00E94B7079FEF23ED80E39150204029 +:105760008040E1F700C000000E942F2971C185E64A +:105770009EE00E94B70782EB9DE00E94B7070E945F +:10578000FD2A1F928F938FEA9DE09F938F930E9433 +:1057900050088DEA9DE00E94B7070E94F42AC82FA6 +:1057A0008AE99DE00E94B7071F92CF9325E93DE06B +:1057B0003F932F930E94500883E99DE00E94B70712 +:1057C00089E89DE00E94B7078C2F81701F928F930C +:1057D00026E83DE03F932F930E94500884E89DE027 +:1057E0000E94B7078AE79DE00E94B707C1FB8827A0 +:1057F00080F91F928F9327E73DE03F932F930E94FC +:10580000500885E79DE00E94B70789E69DE00E9469 +:10581000B707C2FB882780F91F928F9326E63DE0E9 +:105820003F932F930E94500884E69DE00E94B707A3 +:105830008BE59DE00E94B707C3FBCC27C0F91F9200 +:10584000CF9388E59DE09F938F930E94500886E553 +:105850009DE00E94B7070E94062BC82F82E49DE0BE +:105860000E94B7071F92CF932DE33DE03F932F9304 +:105870000E9450088BE39DE00E94B70782E29DE002 +:105880000E94B7078C2F81701F928F932FE13DE00C +:105890003F932F930E9450088DB79EB780960FB606 +:1058A000F8949EBF0FBE8DBF8DE19DE00E94B707AB +:1058B00086E09DE00E94B707C1FB882780F91F9210 +:1058C0008F9323E03DE03F932F930E94500881E0A7 +:1058D0009DE00E94B7078FEE9CE00E94B707C2FBD5 +:1058E000882780F91F928F932CEE3CE03F932F93F3 +:1058F0000E9450088AEE9CE00E94B70788ED9CE069 +:105900000E94B707C3FB882780F91F928F9325ED6C +:105910003CE03F932F930E94500883ED9CE00E944F +:10592000B70789EC9CE00E94B707C4FB882780F981 +:105930001F928F9326EC3CE03F932F930E945008D8 +:1059400084EC9CE00E94B70782EB9CE00E94B707C2 +:10595000C5FB882780F91F928F932FEA3CE03F9385 +:105960002F930E9450088DEA9CE00E94B70781E9BE +:105970009CE00E94B707C6FB882780F91F928F938F +:105980002EE83CE03F932F930E9450088CE89CE067 +:105990000E94B70784E89CE00E94B707C7FBCC27AA +:1059A000C0F91F92CF9381E89CE09F938F930E9450 +:1059B00050088FE79CE00E94B7070E940F2BC82F6A +:1059C00088E69CE00E94B7071F92CF9323E63CE055 +:1059D0003F932F930E9450088DB79EB780960FB6C5 +:1059E000F8949EBF0FBE8DBF81E69CE00E94B70772 +:1059F00087E59CE00E94B7078C2F81701F928F93E0 +:105A000024E53CE03F932F930E94500882E59CE000 +:105A10000E94B70789E49CE00E94B707C6951F92D1 +:105A2000CF9386E49CE09F938F930E94500884E478 +:105A30009CE00E94B7078DB79EB708960FB6F89402 +:105A40009EBF0FBE8DBF04C080E99AE00E94B707D9 +:105A5000C1E0C3C08091E901C82FC095C170C0FBEF +:105A600080F98093E901CC2349F089E39EE00E940C +:105A7000B7078091E9018660886045C08CE29EE0AE +:105A80000E94B7078091E901897F877F8093E901B0 +:105A9000DFCF8091E90181FBCC27C0F991E0C927D4 +:105AA000C0FB81F98093E901CC2319F08FE19EE0DE +:105AB00025C081E19EE0CACF8091E90182FBCC271D +:105AC000C0F991E0C927C0FB82F98093E901CC239A +:105AD00019F082E09EE012C082EF9DE0B7CF809186 +:105AE000E90183FBCC27C0F991E0C927C0FB83F90A +:105AF0008093E901CC2351F086EE9DE00E94B70728 +:105B00008091E90181608093E90167C089ED9DE0A2 +:105B10009DCF85E599E00E94B7070E942E1C1F9239 +:105B20008F938BE399E09F938F930E94500880910D +:105B30000C011F928F9384E299E09F938F930E94B0 +:105B40005008809182011F928F9381E199E09F9389 +:105B50008F930E94500880910D011F928F938EEFBA +:105B600098E09F938F930E9450088091EB01909151 +:105B7000EC01A091ED01B091EE01BF93AF939F9323 +:105B80008F938AEE98E09F938F930E9450088DB771 +:105B90009EB746960FB6F8949EBF0FBE8DBF58CFE6 +:105BA0000E945321C0910D0181E0C827C0930D01CF +:105BB000CC2329F08FEC9DE00E94B7070EC084EC47 +:105BC0009DE044CF895301C080E00E94182B40CF54 +:105BD00082EC9DE00E94B707C0E08C2FCF91089522 +:105BE00080E0089580E00895CF93C82F8091EF0161 +:105BF000882319F0813049F03BC0E0910E01F0910B +:105C00000F0180818232B1F507C0E0910E01F09161 +:105C10000F018081823249F48C2F0E94F02D811176 +:105C200024C08C2F0E94362B21C08C2F0E94F22D75 +:105C300081111BC0C43189F018F4CB3029F010C099 +:105C4000C93259F0C83361F485E79AE00E94B7077A +:105C500081EE98E00E94B70708C01092EF010CC0D7 +:105C60008FED98E00E94B70707C081E0817006C001 +:105C70001092EF0180E002C080E0F8CFCF9108954C +:105C80000E94E92A811102C00E94CA2A0E940F2B99 +:105C900080931E0280FF02C0869501C080E00C94B4 +:105CA000600880911E02982F969539F48170826069 +:105CB000816080931E020E94132B8091E90180FF76 +:105CC0000FC080911E0286951F928F9382EB9EE0FB +:105CD0009F938F930E9450080F900F900F900F90FA +:105CE00080911E0286950C94600880911E02982F68 +:105CF000969591F09158990F8170892B80931E028F +:105D00008E7F91E009F490E080911E0290FB80F973 +:105D100080931E020E94132B8091E90180FF0FC027 +:105D200080911E0286951F928F938AE99EE09F9331 +:105D30008F930E9450080F900F900F900F908091BA +:105D40001E0286950C94600880911E02982F9095F3 +:105D500090FB80F980931E020E94132B8091E90131 +:105D600080FF0FC080911E0281701F928F9384E884 +:105D70009EE09F938F930E9450080F900F900F907A +:105D80000F9080911E0280FF02C0869501C080E0C6 +:105D90000C94600830911E02232F26952F5F2F77D9 +:105DA000822F90E0317002972CF4220F232B209346 +:105DB0001E0202C030931E0280911E028E7F91E06F +:105DC00009F490E080911E0290FB80F980931E02FE +:105DD0000E94132B8091E90180FF0FC080911E0269 +:105DE00086951F928F9380E79EE09F938F930E94EA +:105DF00050080F900F900F900F9080911E02869583 +:105E00000C94600820911E02922F96959827990F66 +:105E1000822F8170892B80931E028E7F91E009F47E +:105E200090E080911E0290FB80F980931E020E94F8 +:105E3000132B80911E0286950C946008991B79E0C3 +:105E400004C0991F961708F0961B881F7A95C9F70A +:105E500080950895AA1BBB1B51E107C0AA1FBB1F59 +:105E6000A617B70710F0A61BB70B881F991F5A95E6 +:105E7000A9F780959095BC01CD01089597FB072E59 +:105E800016F4009407D077FD09D00E942A2F07FC52 +:105E900005D03EF4909581959F4F0895709561953A +:105EA0007F4F0895EE0FFF1F0590F491E02D0994A8 +:105EB000F999FECF92BD81BDF89A992780B50895D2 +:105EC000A6E1B0E044E050E00C94922FA8E1B0E0ED +:105ED00042E050E00C94922F262FF999FECF92BD0C +:105EE00081BDF89A019700B4021639F01FBA20BD9F +:105EF0000FB6F894FA9AF99A0FBE08950396272FD1 +:105F00000E946D2F0E946C2F252F0E946D2F242F31 +:105F10000C946D2F0196272F0E946D2F0C946C2FDF +:105F2000DC01CB01FC01F999FECF06C0F2BDE1BD59 +:105F3000F89A319600B40D9241505040B8F7089548 +:045F4000F894FFCF03 +:105F4400FFFFA3147215A6143F150B150101D6010A +:105F54000F1F6C7666734913035343796933091928 +:105F6400293959403620391408DE07BE0785071140 +:085F7400072A07430763070039 +:00000001FF diff --git a/keyboard/satan/keymaps/default/keymap.c b/keyboard/satan/keymaps/default/keymap.c new file mode 100644 index 000000000..b19404afc --- /dev/null +++ b/keyboard/satan/keymaps/default/keymap.c @@ -0,0 +1,162 @@ +#include "satan.h" + +#ifdef RGBLIGHT_ENABLE +#include "rgblight.h" +#endif + +// Used for SHIFT_ESC +#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) + +// 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 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: (Base Layer) Default Layer + * ,-----------------------------------------------------------. + * |Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | + * |-----------------------------------------------------------| + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return | + * |-----------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | + * |-----------------------------------------------------------| + * |Ctrl|Gui |Alt | Space |Alt |Gui |FN |Ctrl | + * `-----------------------------------------------------------' + */ +[_BL] = KEYMAP( + F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \ + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, \ + KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FL), KC_RCTL), + + /* Keymap _FL: Function Layer + * ,-----------------------------------------------------------. + * | | | | | | | | | | | | | | RESET| + * |-----------------------------------------------------------| + * | | | | | | | | | | | |BL-|BL+|BL | + * |-----------------------------------------------------------| + * | | | | | | | | | | | | | + * |-----------------------------------------------------------| + * | | F1|F2 | F3|F4 | F5| F6| F7| F8| | | | + * |-----------------------------------------------------------| + * | | | | | | | | | + * `-----------------------------------------------------------' + */ +[_FL] = KEYMAP( + #ifdef RGBLIGHT_ENABLE + KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, \ + KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, BL_TOGG, \ + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, F(1), F(2), F(3), F(4), F(5), F(6), F(7), F(8), KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + #else + KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, \ + KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, BL_TOGG, \ + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + #endif +}; + +enum function_id { + SHIFT_ESC, + #ifdef RGBLIGHT_ENABLE + RGBLED_TOGGLE, + RGBLED_STEP_MODE, + RGBLED_INCREASE_HUE, + RGBLED_DECREASE_HUE, + RGBLED_INCREASE_SAT, + RGBLED_DECREASE_SAT, + RGBLED_INCREASE_VAL, + RGBLED_DECREASE_VAL + #endif +}; + +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_FUNCTION(SHIFT_ESC), + #ifdef RGBLIGHT_ENABLE + [1] = ACTION_FUNCTION(RGBLED_TOGGLE), + [2] = ACTION_FUNCTION(RGBLED_STEP_MODE), + [3] = ACTION_FUNCTION(RGBLED_INCREASE_HUE), + [4] = ACTION_FUNCTION(RGBLED_DECREASE_HUE), + [5] = ACTION_FUNCTION(RGBLED_INCREASE_SAT), + [6] = ACTION_FUNCTION(RGBLED_DECREASE_SAT), + [7] = ACTION_FUNCTION(RGBLED_INCREASE_VAL), + [8] = ACTION_FUNCTION(RGBLED_DECREASE_VAL), + #endif +}; + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { + static uint8_t shift_esc_shift_mask; + switch (id) { + case SHIFT_ESC: + shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; + if (record->event.pressed) { + if (shift_esc_shift_mask) { + add_key(KC_GRV); + send_keyboard_report(); + } else { + add_key(KC_ESC); + send_keyboard_report(); + } + } else { + if (shift_esc_shift_mask) { + del_key(KC_GRV); + send_keyboard_report(); + } else { + del_key(KC_ESC); + send_keyboard_report(); + } + } + break; + //led operations + #ifdef RGBLIGHT_ENABLE + 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; + #endif + } +} diff --git a/keyboard/satan/led.c b/keyboard/satan/led.c new file mode 100644 index 000000000..5a9f2af67 --- /dev/null +++ b/keyboard/satan/led.c @@ -0,0 +1,36 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include <avr/io.h> +#include "stdint.h" +#include "led.h" + + +void led_init_ports() { + // * Set our LED pins as output + DDRB |= (1<<2); +} + +void led_set_kb(uint8_t usb_led) { + if (usb_led & (1<<USB_LED_CAPS_LOCK)) { + // Turn capslock on + PORTB |= (1<<2); + } else { + // Turn capslock off + PORTB &= ~(1<<2); + } +} diff --git a/keyboard/satan/pinout.txt b/keyboard/satan/pinout.txt new file mode 100644 index 000000000..d1ad4ac88 --- /dev/null +++ b/keyboard/satan/pinout.txt @@ -0,0 +1 @@ +For WS2812B LED strip support, connect DIN from strip to PE2 on ATmega32u4 controller (see reference image controller.jpg)
\ No newline at end of file diff --git a/keyboard/satan/power.jpg b/keyboard/satan/power.jpg Binary files differnew file mode 100644 index 000000000..0514eef5c --- /dev/null +++ b/keyboard/satan/power.jpg diff --git a/keyboard/satan/satan.c b/keyboard/satan/satan.c new file mode 100644 index 000000000..40bd9dcde --- /dev/null +++ b/keyboard/satan/satan.c @@ -0,0 +1,36 @@ +#include "satan.h" + +#ifdef BACKLIGHT_ENABLE +#include "backlight.h" +#endif + +__attribute__ ((weak)) +void matrix_init_user(void) { + // leave these blank +}; + +__attribute__ ((weak)) +void matrix_scan_user(void) { + // leave these blank +}; + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + if (matrix_init_user) { + (*matrix_init_user)(); + } + led_init_ports(); + + #ifdef BACKLIGHT_ENABLE + init_backlight_pin(); + #endif +}; + +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/keyboard/satan/satan.h b/keyboard/satan/satan.h new file mode 100644 index 000000000..5a2bc46ce --- /dev/null +++ b/keyboard/satan/satan.h @@ -0,0 +1,42 @@ +#ifndef SATAN_H +#define SATAN_H + +#include "matrix.h" +#include "keymap_common.h" +#include <stddef.h> + + +/* Clueboard matrix layout + * ,-----------------------------------------------------------. + * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d | + * |-----------------------------------------------------------| + * | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c| 1d | + * |-----------------------------------------------------------| + * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2d | + * |-----------------------------------------------------------| + * | 30 | 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d | + * |-----------------------------------------------------------| + * | 40 | 41 | 42 | 45 | 4a | 4b | 4c | 4d | + * `-----------------------------------------------------------' + */ +// The first section contains all of the arguments +// The second converts the arguments into a two-dimensional array +#define KEYMAP( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \ + k40, k41, k42, k45, k4a, k4b, k4c, k4d \ +) \ +{ \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \ + {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, KC_NO, k2d}, \ + {k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, KC_NO, k3d}, \ + {k40, k41, k42, KC_NO, KC_NO, k45, KC_NO, KC_NO, KC_NO, KC_NO, k4a, k4b, k4c, k4d} \ +} + +void matrix_init_user(void); +void matrix_scan_user(void); + +#endif |