From 6b34906bbab1fe58ab186cfba9cab3db6ab9488b Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 12 Oct 2016 16:59:12 +0900 Subject: [PATCH] alps64: Add unimap support --- keyboard/alps64/Makefile | 94 +- keyboard/alps64/Makefile.actionmap | 3 + keyboard/alps64/Makefile.keymap_editor | 3 +- keyboard/alps64/Makefile.unimap | 4 + keyboard/alps64/binary/alps64_unimap.hex | 1287 ++++++++++++++++++++++ keyboard/alps64/unimap_plain.c | 64 ++ keyboard/alps64/unimap_trans.h | 63 ++ 7 files changed, 1453 insertions(+), 65 deletions(-) create mode 100644 keyboard/alps64/Makefile.actionmap create mode 100644 keyboard/alps64/Makefile.unimap create mode 100644 keyboard/alps64/binary/alps64_unimap.hex create mode 100644 keyboard/alps64/unimap_plain.c create mode 100644 keyboard/alps64/unimap_trans.h diff --git a/keyboard/alps64/Makefile b/keyboard/alps64/Makefile index 330a8a1e..d9968f7c 100644 --- a/keyboard/alps64/Makefile +++ b/keyboard/alps64/Makefile @@ -1,61 +1,21 @@ -#---------------------------------------------------------------------------- -# 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". -#---------------------------------------------------------------------------- - # Target file name (without extension). -TARGET = alps64 +TARGET ?= alps64 # Directory common source filess exist -TMK_DIR = ../../tmk_core +TMK_DIR ?= ../../tmk_core # Directory keyboard dependent files exist -TARGET_DIR = . +TARGET_DIR ?= . # project specific files -SRC = matrix.c \ +SRC ?= matrix.c \ led.c -CONFIG_H = config.h +CONFIG_H ?= config.h # MCU name -MCU = atmega32u2 +MCU ?= atmega32u2 # Processor frequency. # This will define a symbol, F_CPU, in all source code files equal to the @@ -68,14 +28,14 @@ MCU = atmega32u2 # 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 +F_CPU ?= 16000000 # # LUFA specific # # Target architecture (see library "Board Types" documentation). -ARCH = AVR8 +ARCH ?= AVR8 # Input clock frequency. # This will define a symbol, F_USB, in all source code files equal to the @@ -88,7 +48,7 @@ ARCH = AVR8 # # 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) +F_USB ?= $(F_CPU) # Interrupt driven control endpoint task(+60) OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT @@ -100,26 +60,34 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT # Atmel DFU loader 4096 # LUFA bootloader 4096 # USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=4096 +BOOTLOADER_SIZE ?= 4096 +OPT_DEFS += -DBOOTLOADER_SIZE=$(BOOTLOADER_SIZE) # 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 -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -#NKRO_ENABLE = yes # USB Nkey Rollover -#ACTIONMAP_ENABLE = yes # Use 16bit action codes in keymap instead of 8bit keycodes - - -ifdef ACTIONMAP_ENABLE - KEYMAP_FILE = actionmap +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 +#SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend +#NKRO_ENABLE ?= yes # USB Nkey Rollover +#ACTIONMAP_ENABLE ?= yes # Use 16bit action codes in keymap instead of 8bit keycodes + + +# +# Keymap file +# +ifeq (yes,$(strip $(UNIMAP_ENABLE))) + KEYMAP_FILE = unimap else - KEYMAP_FILE = keymap + ifeq (yes,$(strip $(ACTIONMAP_ENABLE))) + KEYMAP_FILE = actionmap + else + KEYMAP_FILE = keymap + endif endif ifdef KEYMAP SRC := $(KEYMAP_FILE)_$(KEYMAP).c $(SRC) diff --git a/keyboard/alps64/Makefile.actionmap b/keyboard/alps64/Makefile.actionmap new file mode 100644 index 00000000..1de47077 --- /dev/null +++ b/keyboard/alps64/Makefile.actionmap @@ -0,0 +1,3 @@ +TARGET = alps64_actionmap +ACTIONMAP_ENABLE = yes # Use 16bit action codes in keymap instead of 8bit keycodes +include Makefile diff --git a/keyboard/alps64/Makefile.keymap_editor b/keyboard/alps64/Makefile.keymap_editor index 08293d5d..8d337b18 100644 --- a/keyboard/alps64/Makefile.keymap_editor +++ b/keyboard/alps64/Makefile.keymap_editor @@ -1,5 +1,4 @@ -# build firmware for keymap editor -# +TARGET = alps64_editor KEYMAP_SECTION_ENABLE = yes # fixed address keymap for keymap editor KEYMAP = editor include Makefile diff --git a/keyboard/alps64/Makefile.unimap b/keyboard/alps64/Makefile.unimap new file mode 100644 index 00000000..5d5694f7 --- /dev/null +++ b/keyboard/alps64/Makefile.unimap @@ -0,0 +1,4 @@ +TARGET = alps64_unimap +UNIMAP_ENABLE = yes +KEYMAP_SECTION_ENABLE = yes +include Makefile diff --git a/keyboard/alps64/binary/alps64_unimap.hex b/keyboard/alps64/binary/alps64_unimap.hex new file mode 100644 index 00000000..62d854e3 --- /dev/null +++ b/keyboard/alps64/binary/alps64_unimap.hex @@ -0,0 +1,1287 @@ +:100000000C943F050C9486050C9486050C9486058B +:100010000C9486050C9486050C9486050C94860534 +:100020000C9486050C9486050C9486050C94F00BB4 +:100030000C949F0C0C94C81A0C9486050C9486059D +:100040000C9486050C9486050C9486050C943C1B38 +:100050000C9486050C9486050C9486050C948605F4 +:100060000C9486050C9486050C9486050C948605E4 +:100070000C9486057E068106840687068A068D0610 +:1000800090060C0D2E0D1C0E2E0D1C0E730D960DD4 +:100090001C0EEB0DFE0DA711A711D411D4112F12B8 +:1000A0006B1263146314831263147E137E1339146A +:1000B000631463144F147E10360E0F12272D7F37F2 +:1000C000383334132F2E7C7D29283130742A7879E7 +:1000D00039042B14351E7B641D161A081F207A1B49 +:1000E0000709151721222C06190A1C182324650557 +:1000F000110B0D0C25260A002530325800626F7551 +:100100006E6365213A20004B6579626F61726420ED +:1001100073746172742E0A0055534220636F6E66C9 +:100120006967757265642E0A000D0A696E69740A42 +:10013000000E0341006C00700073003600340000B4 +:1001400000080354004D004B00000004030904099B +:10015000027400040100A03209040000010301013F +:100160000009211101000122400007058103080058 +:100170000A09040100010301020009211101000123 +:10018000224D000705820308000A0904020001034A +:100190000000000921110100012236000705830338 +:1001A00008000A09040300020300000009211101EC +:1001B0000001222200070584032000010705040333 +:1001C0002000011201100100000008EDFE6464012E +:1001D00000010200010631FF0974A1010975150033 +:1001E00026FF009520750881020976150026FF007C +:1001F000952075089102C005010980A101850216AC +:10020000810026B7001A81002AB700751095018178 +:1002100000C0050C0901A1018503160100269C02FE +:100220001A01002A9C02751095018100C005010980 +:1002300002A1010901A100050919012905150025DF +:10024000019505750181029501750381010501097B +:100250003009311581257F95027508810609381509 +:1002600081257F950175088106050C0A38021581E4 +:10027000257F950175088106C0C005010906A10109 +:10028000050719E029E71500250195087501810288 +:100290009501750881010508190129059505750164 +:1002A00091029501750391010507190029FF1500B9 +:1002B00026FF00950675088100C00A0025303258D7 +:1002C00020006B6579626F6172645F7265706F7236 +:1002D000743A20004C45443A20253032580A002513 +:1002E0003032583A202530386225730A00722F6365 +:1002F0002030313233343536370A00646F6E652E64 +:100300000A00626F6F746D61676963207363616E69 +:100310003A202E2E2E2000290A002575002F0025B8 +:1003200075005D280025640020002564002000255C +:10033000640020002564007C0025303258006D6F79 +:100340007573656B6579205B62746E7C78207920AB +:100350007620685D287265702F61636C293A205B96 +:10036000006D6B5F776865656C5F74696D655F7460 +:100370006F5F6D6178203D2025640A006D6B5F77AB +:100380006865656C5F6D61785F7370656564203D5D +:100390002025640A006D6B5F74696D655F746F5F23 +:1003A0006D6178203D2025640A006D6B5F6D61787A +:1003B0005F7370656564203D2025640A006D6B5F86 +:1003C000696E74657276616C203D2025640A006D4B +:1003D0006B5F64656C6179203D2025640A006D6B5C +:1003E0005F776865656C5F74696D655F746F5F6D7D +:1003F0006178203D2025640A006D6B5F7768656534 +:100400006C5F6D61785F7370656564203D20256465 +:100410000A006D6B5F74696D655F746F5F6D617805 +:10042000203D2025640A006D6B5F6D61785F7370FD +:10043000656564203D2025640A006D6B5F696E74FC +:10044000657276616C203D2025640A006D6B5F64E7 +:10045000656C6179203D2025640A000A002575003D +:10046000363A20776865656C5F74696D655F746F97 +:100470005F6D61783A20000A00257500353A2077D3 +:100480006865656C5F6D61785F73706565643A205F +:10049000000A00257500343A2074696D655F746F39 +:1004A0005F6D61783A20000A00257500333A206DAF +:1004B00061785F73706565643A20000A00257500F5 +:1004C000323A20696E74657276616C286D73293AD0 +:1004D00020000A00257500313A2064656C61792896 +:1004E0002A31306D73293A20000A092D2056616C9B +:1004F000756573202D0A004D3E004D25643E200099 +:100500003F007365742064656661756C740A00430E +:100510003E200077686572652064656C74613A20DE +:10052000637572736F723D25642C20776865656C06 +:100530003D25640A53656520687474703A2F2F65F1 +:100540006E2E77696B6970656469612E6F72672FB3 +:1005500077696B692F4D6F7573655F6B6579730A8A +:10056000000A092D204D6F7573656B6579202D0A82 +:100570004553432F713A09717569740A313A096418 +:10058000656C6179282A31306D73290A323A09691C +:100590006E74657276616C286D73290A333A096D41 +:1005A00061785F73706565640A343A0974696D65D2 +:1005B0005F746F5F6D61780A353A09776865656CBD +:1005C0005F6D61785F73706565640A363A097768B4 +:1005D00065656C5F74696D655F746F5F6D61780AE6 +:1005E0000A703A097072696E742076616C75657371 +:1005F0000A643A097365742064656661756C747386 +:100600000A75703A092B310A646F776E3A092D31F9 +:100610000A706775703A092B31300A7067646F771A +:100620006E3A092D31300A0A7370656564203D20E9 +:1006300064656C7461202A206D61785F73706565F4 +:1006400064202A2028726570656174202F207469E7 +:100650006D655F746F5F6D6178290A003F004D3EE4 +:100660002000433E20004C25640A000A092D204347 +:100670006F6E736F6C65202D0A4553432F713A09D5 +:10068000717569740A6D3A096D6F7573656B65797B +:100690000A000A092D204D61676963202D0A643A1A +:1006A0000964656275670A783A096465627567204E +:1006B0006D61747269780A6B3A09646562756720C6 +:1006C0006B6579626F6172640A6D3A09646562757F +:1006D00067206D6F7573650A763A0976657273697E +:1006E0006F6E0A733A097374617475730A633A0919 +:1006F000636F6E736F6C65206D6F64650A302D34A7 +:100700003A096C61796572302D34284631302D46B6 +:1007100034290A506175733A09626F6F746C6F61A6 +:100720006465720A653A09656570726F6D0A000A40 +:10073000002575002E6E6B726F3A20000A00257539 +:10074000002E737761705F6261636B736C617368B5 +:100750005F6261636B73706163653A20000A002514 +:1007600075002E737761705F67726176655F657380 +:10077000633A20000A002575002E6E6F5F67756969 +:100780003A20000A002575002E737761705F726150 +:100790006C745F726775693A20000A002575002E37 +:1007A000737761705F6C616C745F6C6775693A2018 +:1007B000000A002575002E636170736C6F636B5FB8 +:1007C000746F5F636F6E74726F6C3A20000A00255D +:1007D00075002E737761705F636F6E74726F6C5FFC +:1007E000636170736C6F636B3A20000A00253032CE +:1007F00058006B65796D61705F636F6E6669672E17 +:100800007261773A20000A002575002E6D6F7573AE +:10081000653A20000A002575002E6B6579626F61CC +:1008200072643A20000A002575002E6D61747269A9 +:10083000783A20000A002575002E656E61626C65AD +:100840003A20000A00253032580064656275675FFF +:10085000636F6E6669672E7261773A20000A002521 +:10086000750064656661756C745F6C617965723A78 +:1008700020003F0074696D65725F72656164333298 +:1008800028293A202530346C580A006B6579626F4C +:100890006172645F69646C653A2025580A006B6573 +:1008A00079626F6172645F70726F746F636F6C3ABC +:1008B0002025580A00686F73745F6B6579626F61F9 +:1008C00072645F6C65647328293A2025580A000A0F +:1008D000092D20537461747573202D0A004743431A +:1008E0003A20342E392E32204156522D4C49424363 +:1008F0003A20312E382E3073766E204156525F41A9 +:100900005243483A2061767233350A004F505449B9 +:100910004F4E533A204C55464120424F4F544D4183 +:10092000474943204D4F5553454B45592045585451 +:1009300052414B455920434F4E534F4C4520434F56 +:100940004D4D414E44204B45594D41505F53454319 +:1009500054494F4E20343039360A004255494C44F0 +:100960003A20336562376361642D6469727479205B +:100970002832303A32323A3431204F6374203132E7 +:100980002032303136290A005649443A2030784620 +:1009900045454428544D4B29205049443A2030784D +:1009A0003634363428416C7073363429205645521B +:1009B0003A203078303030310A00444553433A20F1 +:1009C000544D4B206B6579626F6172642066697269 +:1009D0006D7761726520666F7220416C707336347A +:1009E0000A000A092D2056657273696F6E202D0A60 +:1009F000000A6D6F7573653A206F66660A000A6DAE +:100A00006F7573653A206F6E0A000A6B6579626FC5 +:100A10006172643A206F66660A000A6B6579626FDC +:100A20006172643A206F6E0A000A6D6174726978AF +:100A30003A206F66660A000A6D61747269783A201E +:100A40006F6E0A000A64656275673A206F6E0A006D +:100A50000A64656275673A206F66660A000A0A6270 +:100A60006F6F746C6F616465722E2E2E2000433E92 +:100A700020006565636F6E6669673A0A000011249D +:100A80001FBECFEFD4E0DEBFCDBF04B603FE27C04C +:100A90008091CD019091CE01A091CF01B091D00174 +:100AA0008730904BA740B04BD1F41092CD011092FB +:100AB000CE011092CF011092D00114BE84B7877F6F +:100AC00084BF0FB6F894A8958091600088618093E8 +:100AD0006000109260000FBEE0E0F8E3099511E0BD +:100AE000A0E0B1E0EAE1FEE402C005900D92A4337B +:100AF000B107D9F721E0A4E3B1E001C01D92AD3CFC +:100B0000B207E1F70E943C090C940B270C940000FB +:100B1000FF93EF93E0913401F0913501309709F0A4 +:100B20000995EF91FF910895FC018591803011F0B6 +:100B3000EFDFFBCF0895FF27E0E230E247FF0CC074 +:100B4000419597FF09C0EDE260957095809590956D +:100B5000611D711D811D911D27FF02C0219530E38C +:100B600050E2AA27660F771F881F991FAA1FA41794 +:100B700010F0A41B63955A95A9F7AA3008F0A95F55 +:100B8000A05DAF93F395611571058105910541F75E +:100B9000ED3211F4EF93F395F21718F43F93F395B8 +:100BA000FBCF8F91B5DFFA95E1F70895E991F991BF +:100BB0008591803021F0853219F0AADFF9CF0895B0 +:100BC00020E0E89455915532C1F3503311F4689404 +:100BD00055915A3348F4505390F3220F022E220FAE +:100BE000220F200D250FF4CF0EF4219589919991B4 +:100BF000533619F3533729F1533559F1BC0188277E +:100C00009927E8945C3621F48991999168945591DB +:100C1000543639F446EF7EF077FF0DC08FEF9FEF2B +:100C20000AC055374AE039F0583540E121F05236D4 +:100C300042E009F00895FF93EF937DDFEF91FF917C +:100C4000B7CFFF93EF93FC0181918030B9F360DF60 +:100C5000FBCFFF93EF9368DFF1CFDF93CF93CDB757 +:100C6000DEB72596A3DFCF91DF9108958AB1807812 +:100C70008AB98BB180788BB93A98429808950E94CE +:100C8000360684B114B885B18FEF85B9A6E3B1E01B +:100C9000EEE3F1E088E08E0F11921D928E13FCCFEF +:100CA0008091AE0182608093AE013D9A459A2FEF0C +:100CB00089E698E1215080409040E1F700C00000B3 +:100CC0003D9845980895EF92FF920F931F93CF930D +:100CD000DF93C6E3D1E0F12C85E0E82E08EF10E0C9 +:100CE0008F2D90E0FC013197E730F10520F4E65CB0 +:100CF000FF4F0C94C026509A589814C0519A599896 +:100D000011C0529A5A980EC0539A5B980BC0549ACD +:100D10005C9808C0559A5D9805C0569A5E9802C0C6 +:100D20003A9A429880EA8A95F1F783B18095988142 +:100D3000981739F1888380910001882301F180910F +:100D4000AE0180FF04C08DEF90E00E949405809179 +:100D5000AE0180FF0CC0809100011F928F931F9302 +:100D60000F930E942D060F900F900F900F9080917F +:100D7000AE0180FF04C086EF90E00E949405E092EF +:100D800000010E943606F394219698E0F912A8CF4C +:100D9000809100018823B1F0815080930001882365 +:100DA00039F08FE99FE00197F1F700C000000AC019 +:100DB000AEE3B1E0E6E3F1E0CF01885F91919D936E +:100DC0008E13FCCF81E0DF91CF911F910F91FF90A7 +:100DD000EF900895E82FF0E0E25CFE4F80810895E7 +:100DE00081FF03C03D9A459A08953D98459808951E +:100DF0008091520108959FB7F894109249019FBFC6 +:100E00009091C301943009F057C09091E9009F7010 +:100E10003091EC00232F217030FD20E8922B24E04C +:100E20002093E9002091EB0020FF43C02091EE00C9 +:100E300027FF3FC020914601222321F02091E800A6 +:100E400025FF37C01092460126E03091E80035FDBD +:100E500015C03091C301343061F53091EB0035FDA0 +:100E600028C0215021F481E08093460122C0EFE99F +:100E7000FFE03197F1F700C00000E7CF8093F10069 +:100E80008091E80085FD0AC08091E80080FFFCCFDA +:100E90008091E8008E778093E80006C08FB7F894C1 +:100EA00021E0209349018FBF9F709093E90080E07B +:100EB00008959F709093E9008FEF0895CF93DF938B +:100EC00000D01F92CDB7DEB79C018091C301843062 +:100ED00019F593E099833B832A839093E9008FEF80 +:100EE0009091E800815095FD06C095ED9A95F1F737 +:100EF00000008111F5CF8091E80085FF0DC040E032 +:100F000050E063E070E0CE0101960E94FE098091FE +:100F1000E8008E778093E8000F900F900F90DF919C +:100F2000CF910895CF93DF9300D01F92CDB7DEB756 +:100F30002091C301243021F522E029839B838A83F9 +:100F400083E08093E9008FEF9091E800815095FD58 +:100F500006C095ED9A95F1F700008111F5CF8091CB +:100F6000E80085FF0DC040E050E063E070E0CE0196 +:100F700001960E94FE098091E8008E778093E80038 +:100F80000F900F900F90DF91CF9108952091C301A2 +:100F90002430F1F422E02093E9002FEF3091E800B3 +:100FA000215035FD06C035ED3A95F1F700002111CD +:100FB000F5CF2091E80025FF0BC040E050E065E050 +:100FC00070E00E94FE098091E8008E778093E8002F +:100FD0000895CF93DF932091C301243039F521E0A8 +:100FE0002093E9002FEF3091E800215035FD06C035 +:100FF00035ED3A95F1F700002111F5CF2091E80089 +:1010000025FF14C0EC0140E050E068E070E00E9471 +:10101000FE098091E8008E778093E80088E0FE0169 +:10102000AAE4B1E001900D928A95E1F7DF91CF91AA +:1010300008950895209147012F5F822F62E30E9457 +:10104000A026992319F02093470108951092470193 +:1010500080914901882371F18091C301843041F569 +:101060008091E9008F702091EC00922F917020FD0B +:1010700090E8892B94E09093E9009091EB0090FF29 +:1010800014C09091EE0097FF10C09091E80095FF7A +:1010900003C01092F100F9CF9091E80090FF05C0D5 +:1010A0009091E8009E779093E8008F708093E9001C +:1010B00010924901089542E061EC81E00E94070B23 +:1010C00042E061EC82E00E94070B42E061EC83E0C9 +:1010D0000E94070B42E261EC84E00C94070B8091C4 +:1010E000C501833009F453C030F4813071F082308F +:1010F00009F48CC008958A3009F478C08B3009F463 +:101100005EC0893009F09AC020C08091C401813A44 +:1011100009F094C08091E800877F8093E800809177 +:10112000C8019091C901892B21F468E08AE491E01B +:1011300003C060E080E090E070E00E94490A809186 +:10114000E8008B778093E80008958091C401813294 +:1011500009F074C08091C8019091C901892B09F0F0 +:101160006DC08091E800877F8093E8008091E8005F +:1011700082FD05C08091C3018111F8CF5FC08091CD +:10118000F100809352018091E8008B7753C08091E9 +:10119000C401813A09F052C08091C8019091C901FF +:1011A000892B09F04BC08091E800877F8093E8008D +:1011B0008091E80080FFFCCF80910B0136C08091C8 +:1011C000C4018132D9F58091C8019091C901892B60 +:1011D000A9F58091E800877F8093E8000E943C0B8E +:1011E0008091C60180930B010C9484148091C401FA +:1011F000813221F58091E800877F8093E8000E948A +:101200003C0B8091C7018093530108958091C401E4 +:10121000813AA1F48091E800877F8093E800809173 +:10122000E80080FFFCCF809153018093F100809112 +:10123000E8008E778093E8000C943C0B08950895A5 +:10124000089580915201809348011092520180E0EC +:101250000E94F0060E948C0F0C9484140C942109B7 +:101260000E94871A8091C101882329F00E94B01A38 +:1012700081110C94E809089584B7877F84BF0FB665 +:10128000F894A89580916000886180936000109226 +:1012900060000FBE90E080E80FB6F8948093610084 +:1012A000909361000FBE8BEF96E00E945B1A89E27B +:1012B00091E00E9494050E941F090E94C50E0E94A1 +:1012C0008D0B0E94E00B8091E20084608093E2002D +:1012D00078948091C3018430E1F788E191E00E9425 +:1012E00094050E94C70E81E091E00E94340E87E0D1 +:1012F00091E00E9494050E9420098091C3018530ED +:1013000019F40E943009F9CF0E94CD0EF6CF0E9449 +:10131000C41A809148018093520108950C94870962 +:10132000292F332723303105C9F064F421303105EA +:1013300081F02230310509F043C084E790E02FE4CA +:1013400031E042C021323105F1F02232310541F164 +:1013500037C082E190E023EC31E036C0992781303C +:10136000910541F08230910541F0892B49F5EBE47C +:10137000F1E005C0E1E4F1E002C0E1E3F1E08491D5 +:1013800090E09F0121C06430D8F4E62FF0E0EE0F2A +:10139000FF1FE05EFE4F2081318189E090E014C0A4 +:1013A000643070F470E0FB01EE0FFF1FE85EFE4F4B +:1013B00020813181FB01EC5EFE4F808190E004C012 +:1013C00080E090E020E030E0FA013183208308954E +:1013D00084E089BD86E089BD09B400FEFDCF80911F +:1013E000D8008F7D8093D8008091E0008260809348 +:1013F000E0008091E00081FDFCCF0895CF92DF9264 +:10140000EF92FF920F931F93CF93DF93EC018B0129 +:101410006A010E945B0B811133C0C114D10439F001 +:10142000F60180819181081B190BC80FD91FE12C8F +:10143000F12C0115110519F18091E80085FD16C008 +:101440008091E8008E778093E800C114D10449F0C0 +:10145000F60180819181E80EF91EF182E08285E03B +:101460000FC00E945B0B882321F30AC089918093EF +:10147000F10001501109FFEFEF1AFF0ADACF80E007 +:10148000DF91CF911F910F91FF90EF90DF90CF9060 +:1014900008952091CA013091CB012617370748F0F3 +:1014A0006115710539F42091E8002E772093E8004A +:1014B00001C0B90140E06115710591F12091C301AE +:1014C000222309F440C0253009F43FC02091E800F0 +:1014D00023FD3DC02091E80022FD2FC02091E800AF +:1014E00020FFE9CF2091F20030E0FC01CF0161152F +:1014F000710559F02830310540F481918093F10055 +:10150000615071092F5F3F4FF1CF41E02830310525 +:1015100009F040E02091E8002E772093E800CBCF3F +:101520004111CCCF0AC08091C301882361F085307E +:1015300061F08091E80083FD0AC08091E80082FF9D +:10154000F2CF80E0089582E0089583E0089581E07D +:1015500008952091CA013091CB012617370748F032 +:101560006115710539F42091E8002E772093E80089 +:1015700001C0B901FC0120E06115710579F180918C +:10158000C301882309F43DC0853009F43CC0809133 +:10159000E80083FD3AC08091E80082FD2CC0809174 +:1015A000E80080FFE9CF8091F20090E061157105BD +:1015B00059F08830910540F424912093F100319640 +:1015C000615071090196F2CF21E0089709F020E0FF +:1015D0008091E8008E778093E800CECF2111CFCFA5 +:1015E0000AC08091C301882361F0853061F0809149 +:1015F000E80083FD0AC08091E80082FFF2CF80E01E +:10160000089582E0089583E0089581E00895982F79 +:10161000953058F59093E900981739F07091EC00E7 +:101620002091ED005091F00003C0242F762F50E060 +:1016300021FF19C03091EB003E7F3093EB003091D9 +:10164000ED003D7F3093ED003091EB003160309341 +:10165000EB007093EC002093ED005093F00020918C +:10166000EE0027FF07C09F5FD3CF8F708093E90004 +:1016700081E0089580E008958091C40187FF11C042 +:101680008091E80082FD05C08091C3018111F8CFEF +:1016900011C08091E8008B770BC08091C301882333 +:1016A00049F08091E80080FFF8CF8091E8008E77C4 +:1016B0008093E80008952091E4003091E50095E6DC +:1016C0004091EC00842F817040FF22C08091E8009F +:1016D00080FD1CC08091C301882391F0853091F07A +:1016E0008091EB0085FD10C04091E4005091E50031 +:1016F0004217530729F39A01915011F784E0089596 +:1017000082E0089583E0089581E0089580E00895DF +:101710004091E80042FFDECF08950E94EA0B0E944C +:10172000ED0BE0EEF0E0808181608083E8EDF0E099 +:1017300080818F77808319BCE3E6F0E0808181604F +:1017400080831092C20108950E94EA0B0E94ED0B63 +:101750008091D8008F778093D8008091D8008068DE +:101760008093D8008091D8008F7D8093D80084E04A +:1017700089BD86E089BD09B400FEFDCF1092C3018A +:101780001092BF011092C1011092C00142E060E0CE +:1017900080E00E94070B8091E1008E7F8093E10042 +:1017A0008091E20081608093E2008091E200886095 +:1017B0008093E2008091E0008E7F8093E0000895A6 +:1017C000E3E6F0E080818E7F808381E08093C20138 +:1017D0000C94A40B1092E20008951092E100089579 +:1017E0001F920F920FB60F9211242F933F934F9396 +:1017F0005F936F937F938F939F93AF93BF93EF9379 +:10180000FF938091E10082FF0BC08091E20082FF94 +:1018100007C08091E1008B7F8093E1000E941A084D +:101820008091E10080FF19C08091E20080FF15C027 +:101830008091E2008E7F8093E2008091E2008061DF +:101840008093E2008091D80080628093D80019BC18 +:1018500085E08093C3010E942E098091E10084FFFE +:1018600030C08091E20084FF2CC084E089BD86E016 +:1018700089BD09B400FEFDCF8091D8008F7D809393 +:10188000D8008091E1008F7E8093E1008091E2009A +:101890008F7E8093E2008091E20081608093E2007D +:1018A0008091BF01882311F084E007C08091E3009C +:1018B00087FD02C081E001C083E08093C3010E94E4 +:1018C0008E098091E10083FF29C08091E20083FFAF +:1018D00025C08091E100877F8093E10082E08093C2 +:1018E000C3011092BF018091E1008E7F8093E100DF +:1018F0008091E2008E7F8093E2008091E20080611F +:101900008093E20042E060E080E00E94070B80915B +:10191000F00088608093F0000E941908FF91EF9119 +:10192000BF91AF919F918F917F916F915F914F91F7 +:101930003F912F910F900FBE0F901F9018951F92FF +:101940000F920FB60F9211242F933F934F935F93F3 +:101950006F937F938F939F93AF93BF93CF93DF93B7 +:10196000EF93FF93C091E900CF708091EC00D82FE6 +:10197000D17080FDD0E81092E9008091F000877F5F +:101980008093F00078940E94E30C1092E90080911B +:10199000F00088608093F000CD2BCF70C093E900F9 +:1019A000FF91EF91DF91CF91BF91AF919F918F9177 +:1019B0007F916F915F914F913F912F910F900FBE4B +:1019C0000F901F9018951F93CF93DF93CDB7DEB77D +:1019D000AA970FB6F894DEBF0FBECDBFE4ECF1E0DE +:1019E00088E08E0F9091F10091938E13FBCF0E94AF +:1019F0006F088091E80083FF1FC18091C40190911E +:101A0000C501492F50E04A30510508F015C1FA01CF +:101A1000EF5BFF4F0C94C026803881F0823809F0CC +:101A20000BC18091C8018F708093E9008091EB0019 +:101A300085FB882780F91092E90006C08091C001DB +:101A40009091C101911182609091E800977F9093ED +:101A5000E8008093F1001092F100C8C0282F2D7F7C +:101A600009F0EAC0882319F0823061F0E5C0809166 +:101A7000C601813009F0E0C0933009F080E0809326 +:101A8000C1012BC08091C601811127C08091C8017E +:101A90008F7009F4D1C08093E9002091EB0020FF02 +:101AA0001CC0933021F48091EB00806214C09091AF +:101AB000EB0090619093EB0021E030E0A90102C0BF +:101AC000440F551F8A95E2F74093EA001092EA000E +:101AD0008091EB0088608093EB001092E900809188 +:101AE000E800877F86C08111A7C01091C6011F77CB +:101AF0008091E3008078812B8093E3008091E8005F +:101B0000877F8093E8000E943C0B8091E80080FF73 +:101B1000FCCF8091E30080688093E300111102C044 +:101B200082E001C083E08093C30186C08058823088 +:101B300008F082C08091C6019091C7018C3D53E0AE +:101B4000950779F583E08A838AE289834FB7F89411 +:101B5000DE01139620E03EE051E2E32FF0E05093E7 +:101B60005700E49120FF03C0E295EF703F5FEF70F4 +:101B70008E2F90E0EA3010F0C79601C0C0968D938A +:101B80009D932F5F243149F74FBF8091E800877FF5 +:101B90008093E8006AE270E0CE0101960E94490A53 +:101BA00014C0AE014F5F5F4F6091C8010E94900961 +:101BB000BC01892B09F440C09091E800977F909375 +:101BC000E80089819A810E94A90A8091E8008B77B8 +:101BD0008093E80031C0803879F58091E800877FF4 +:101BE0008093E8008091BF018093F1008091E8002C +:101BF0008E778093E8000E943C0B1EC081111CC0B0 +:101C00009091C6019230C0F48091E800877F809364 +:101C1000E8009093BF010E943C0B8091BF018111AD +:101C200006C08091E30087FD02C081E001C084E02E +:101C30008093C3010E945B088091E80083FF0AC083 +:101C40008091E800877F8093E8008091EB008062BC +:101C50008093EB00AA960FB6F894DEBF0FBECDBFFF +:101C6000DF91CF911F91089590935901809358016E +:101C70000895E0915801F0915901309721F00190B9 +:101C8000F081E02D099480E00895EF92FF920F9388 +:101C90001F93CF93DF93E0915801F0915901309752 +:101CA000B1F18C010280F381E02D09958091AE01A4 +:101CB00082FF2DC080FF04C082EC92E00E94940558 +:101CC000E80118E08CEBE82E82E0F82E8091AE015E +:101CD00080FF0BC088811F928F93FF92EF920E942A +:101CE0002D060F900F900F900F901150219611110B +:101CF000EDCF8091AE0180FF0AC08AEB92E0DF91C8 +:101D0000CF911F910F91FF90EF900C949405DF916C +:101D1000CF911F910F91FF90EF900895E09158019E +:101D2000F0915901309721F00480F581E02D09945C +:101D3000089520915601309157018217930771F051 +:101D40009093570180935601E0915801F091590109 +:101D5000309721F00680F781E02D099408952091B5 +:101D60005401309155018217930771F090935501FA +:101D700080935401E0915801F0915901309721F07E +:101D80000084F185E02D099408950C948D0F0E9434 +:101D9000F11A0E943F060C94191CCF92DF92EF9229 +:101DA000FF920F931F93CF93DF9300D000D000D00A +:101DB000CDB7DEB70E9463068BE5C82E81E0D82E32 +:101DC00000E010E0E02E802F0E94EA06F60141912B +:101DD0006F01F42EF826B1F40F5F1F4F0830110584 +:101DE00089F78FEF89838A831B820E94FA1A8160A8 +:101DF000782F9D838C8349815A816B818D810E94CC +:101E0000C40F47C09091AE0191FF04C08E830E9421 +:101E10008E0F8E8120E030E04F2D50E0922FBA01DE +:101E2000022E02C0759567950A94E2F760FF2BC0F9 +:101E30002983EA8221E030E0690102C0CC0CDD1C7C +:101E40009A95E2F790E08C219D21892B09F420E0FE +:101E50002B830E94FA1A8160782F9D838C8349819D +:101E60005A816B818D810E94C40F49815A816B8197 +:101E70007C818D810E94731AF801E55AFE4F8081A2 +:101E8000C826C08206C02F5F3F4F2830310531F68B +:101E9000A3CF0E94721A0E94A01F10915A010E94A3 +:101EA000390E181741F10E94390E80935A01909112 +:101EB000AE0192FF0EC090FF0CC01F928F9384ED75 +:101EC00092E09F938F930E942D060F900F900F909A +:101ED0000F9080915A0126960FB6F894DEBF0FBE80 +:101EE000CDBFDF91CF911F910F91FF90EF90DF90C9 +:101EF000CF900C94841A26960FB6F894DEBF0FBECE +:101F0000CDBFDF91CF911F910F91FF90EF90DF90A8 +:101F1000CF9008950C94F00608950895EF92FF92E3 +:101F20000F931F93CF93DF938DEE92E00E94940561 +:101F3000C0E0D0E088E2E82E81E0F82E0FED12E05C +:101F40008C2F0E94EA060E94601AFF92EF921F9265 +:101F50008F93DF93CF931F930F930E942D062196AB +:101F60008DB79EB708960FB6F8949EBF0FBE8DBF73 +:101F7000C830D10529F7DF91CF911F910F91FF90C4 +:101F8000EF90089508950895CF93DF93CDB7DEB70E +:101F90002B970FB6F894DEBF0FBECDBF942F4F83A3 +:101FA000252F588769877A878B874A855B85452BDC +:101FB00021F02F3F09F59F3FF9F4DE01119686E0ED +:101FC000FD0111928A95E9F785E0FE0137960190AF +:101FD0000D928A95E1F749815A816B817C818D81CF +:101FE0009E810E942D172B960FB6F894DEBF0FBE70 +:101FF000CDBFDF91CF9108954F81588569857A854E +:102000008B850E94731AD9CFCF93882309F4E8C037 +:10201000C82F8238A1F40E94390E81FDE1C089E306 +:102020000E94BC190E94351A2FEF81EE94E02150D6 +:1020300080409040E1F700C0000089E315C083387C +:10204000C1F40E94390E80FDCBC083E50E94BC190B +:102050000E94351A2FEF81EE94E02150804090408D +:10206000E1F700C0000083E50E94D919CF910C94DC +:10207000351A8438A1F40E94390E82FDB1C087E47C +:102080000E94BC190E94351A2FEF81EE94E0215076 +:1020900080409040E1F700C0000087E4E5CF8CEF7E +:1020A0008C0F813A48F48C2F0E940124811198C032 +:1020B0008C2F0E94BC19DACF80E28C0F883048F454 +:1020C000C77081E001C0880FCA95EAF70E94FB192A +:1020D000CDCF8BE58C0F833078F4C53A29F0C63A22 +:1020E00031F083E890E005C081E890E002C082E82A +:1020F00090E0CF910C94990E88E58C0F853108F013 +:102100006FC0C83A61F1C93A69F1CA3A71F1CB3A84 +:1021100079F1CC3A81F1CD3A89F1CE3A91F1CF3AC9 +:1021200099F1C13BA1F1C03BA9F1C23BB1F1C33B65 +:10213000B9F1C43BC1F1C53BC9F1C63BD1F1C73BC5 +:10214000D9F1C83BE1F1C93BE9F1CA3BF1F1CB3B25 +:10215000F9F1CC3B09F43FC080E090E03EC082EE54 +:1021600090E03BC089EE90E038C08AEE90E035C048 +:1021700085EB90E032C086EB90E02FC083EB90E0DF +:102180002CC084EB90E029C087EB90E026C08CEC5B +:1021900090E023C08DEC90E020C083E891E01DC06A +:1021A0008AE891E01AC082E991E017C084E991E0E1 +:1021B00014C081E292E011C083E292E00EC084E29A +:1021C00092E00BC085E292E008C086E292E005C092 +:1021D00087E292E002C08AE292E0CF910C94AF0EC7 +:1021E000CF910895882309F466C08238A1F40E9433 +:1021F000390E81FF60C089E30E94BC190E94351A24 +:102200002FEF81EE94E0215080409040E1F700C034 +:10221000000089E315C08338B9F40E94390E80FFAD +:102220004AC083E50E94BC190E94351A2FEF81EE47 +:1022300094E0215080409040E1F700C0000083E529 +:102240000E94D9190C94351A8438A1F40E94390ED1 +:1022500082FF31C087E40E94BC190E94351A2FEF1B +:1022600081EE94E0215080409040E1F700C00000F2 +:1022700087E4E6CF9CEF980F913A10F390E2980F25 +:10228000983050F4877091E001C0990F8A95EAF771 +:10229000892F0E94011AD6CF9BE5980F933020F426 +:1022A00080E090E00C94990E885A853120F480E00B +:1022B00090E00C94AF0E0895882321F00E94FB1942 +:1022C0000C94351A0895882321F00E94011A0C9469 +:1022D000351A0895CF92DF92EF92FF920F931F93DA +:1022E000CF93DF9300D000D000D0CDB7DEB725E08C +:1022F000FC01DE01119601900D922A95E1F7FC0197 +:1023000040813181F280258122952F706381748113 +:10231000672B09F4D8C23F3F19F44F3F09F4D3C2E9 +:102320006C0149833A8389819A812E830E947B19AB +:10233000182F092F0E947A190E948A18E02FE2951F +:10234000EF70F0E0E55BFF4F2E810C94C026802FEC +:10235000807F902F9F70092F882311F00295007FB6 +:10236000FF2049F0002309F45FC2802F0E940E1A5B +:102370000E94351A59C2812F0E94F210002309F4DD +:10238000A2C2802F0E94141A26960FB6F894DEBFC0 +:102390000FBECDBFDF91CF911F910F91FF90EF90B6 +:1023A000DF90CF900C94351A802F807F902F9F70F4 +:1023B000092F803211F00295007F112319F011309E +:1023C00001F129C0FF20A9F0802F222349F12130FB +:1023D00039F526960FB6F894DEBF0FBECDBFDF915C +:1023E000CF911F910F91FF90EF90DF90CF900C94C1 +:1023F0001E1A222319F0213009F465C20E94211A05 +:102400002CC0FF20E9F0263008F05DC20E94F819C8 +:10241000802329F022C0FF20F1F0211115C0802F68 +:1024200026960FB6F894DEBF0FBECDBFDF91CF91D9 +:102430001F910F91FF90EF90DF90CF900C945C1163 +:10244000253008F040C209C0F601858180FFECC14B +:102450008F708583E4CF2111FBC1802F69C1202FAC +:1024600026952695237030E02115310521F0213085 +:102470003105C9F028C2FF2021F0812F902F9370E1 +:1024800002C080E090E026960FB6F894DEBF0FBE43 +:10249000CDBFDF91CF911F910F91FF90EF90DF9013 +:1024A000CF900C94990EFF2021F0812F902F9370E4 +:1024B00002C080E090E026960FB6F894DEBF0FBE13 +:1024C000CDBFDF91CF911F910F91FF90EF90DF90E3 +:1024D000CF900C94AF0E812FFF2019F00E94261E82 +:1024E00002C00E948E1E26960FB6F894DEBF0FBE65 +:1024F000CDBFDF91CF911F910F91FF90EF90DF90B3 +:10250000CF900C94131F802F837009F078C0F110C6 +:10251000DAC1812F829586958770880F880F912F59 +:102520009F70C92ED12CE12CF12C082E04C0CC0CAC +:10253000DD1CEE1CFF1C0A94D2F714FF12C04FE002 +:1025400050E060E070E004C0440F551F661F771F25 +:102550008A95D2F7CB01BA016095709580959095D8 +:1025600003C060E070E0CB01202F269526952370F4 +:10257000422F50E042305105D1F04330510559F11E +:102580006C297D298E299F294130510541F12696DC +:102590000FB6F894DEBF0FBECDBFDF91CF911F9174 +:1025A0000F91FF90EF90DF90CF900C949F186C29C3 +:1025B0007D298E299F2926960FB6F894DEBF0FBE7F +:1025C000CDBFDF91CF911F910F91FF90EF90DF90E2 +:1025D000CF900C94B1180E949F18C701B60126969F +:1025E0000FB6F894DEBF0FBECDBFDF91CF911F9124 +:1025F0000F91FF90EF90DF90CF900C948D18FF20FB +:1026000019F0802F817001C08695882309F45BC181 +:10261000812F829586958770880F880F912F9F70E4 +:10262000C92ED12CE12CF12C082E04C0CC0CDD1CC1 +:10263000EE1CFF1C0A94D2F714FF12C04FE050E0CA +:1026400060E070E004C0440F551F661F771F8A9535 +:10265000D2F7CB01BA01609570958095909503C033 +:1026600060E070E0CB01202F269526952370422F45 +:1026700050E042305105D1F04330510559F16C29F9 +:102680007D298E299F294130510541F126960FB6AB +:10269000F894DEBF0FBECDBFDF91CF911F910F9198 +:1026A000FF90EF90DF90CF900C9456196C297D2904 +:1026B0008E299F2926960FB6F894DEBF0FBECDBF98 +:1026C000DF91CF911F910F91FF90EF90DF90CF900E +:1026D0000C9468190E945619C701B60126960FB6C8 +:1026E000F894DEBF0FBECDBFDF91CF911F910F9148 +:1026F000FF90EF90DF90CF900C944419103F41F180 +:1027000018F4103E48F48BC0123F09F450C0D8F1C1 +:10271000133F09F460C083C01F70802F8F71FF20AA +:1027200021F00E94DD18812F7BCE0E94FE18812FA0 +:1027300026960FB6F894DEBF0FBECDBFDF91CF91C6 +:102740001F910F91FF90EF90DF90CF900C94631149 +:10275000FF20A9F0253008F0B6C0802F8F71269693 +:102760000FB6F894DEBF0FBECDBFDF91CF911F91A2 +:102770000F91FF90EF90DF90CF900C9423192630AB +:1027800008F0A1C0EACFFF20A1F0802F8F7126961C +:102790000FB6F894DEBF0FBECDBFDF91CF911F9172 +:1027A0000F91FF90EF90DF90CF900C94DD18FF20F9 +:1027B00061F3802F8F7126960FB6F894DEBF0FBE9F +:1027C000CDBFDF91CF911F910F91FF90EF90DF90E0 +:1027D000CF900C94FE18FF2091F0802F8F712696D9 +:1027E0000FB6F894DEBF0FBECDBFDF91CF911F9122 +:1027F0000F91FF90EF90DF90CF900C94C818269621 +:102800000FB6F894DEBF0FBECDBFDF91CF911F9101 +:102810000F91FF90EF90DF90CF900C94C318FF20A2 +:10282000A1F0222309F4B1CF812F26960FB6F89498 +:10283000DEBF0FBECDBFDF91CF911F910F91FF90F3 +:10284000EF90DF90CF900C940410222309F4B1CFC5 +:10285000812F26960FB6F894DEBF0FBECDBFDF9155 +:10286000CF911F910F91FF90EF90DF90CF900C943C +:10287000F210402F4F70612FC6010E94C31B269695 +:102880000FB6F894DEBF0FBECDBFDF91CF911F9181 +:102890000F91FF90EF90DF90CF900C94D517402FC1 +:1028A0004F70612FC60126960FB6F894DEBF0FBE9B +:1028B000CDBFDF91CF911F910F91FF90EF90DF90EF +:1028C000CF900C94C61B26960FB6F894DEBF0FBEB1 +:1028D000CDBFDF91CF911F910F91FF90EF90DF90CF +:1028E000CF9008950E941B1A0E94EA190E94351A7F +:1028F0000E9447200E94131F80E090E00E94990EE2 +:1029000080E090E00C94AF0E0E940B1A0C947214AD +:102910000E947B19292F22952F7030E02C30310531 +:102920004CF42A3031056CF4225031092230310543 +:1029300088F407C02C30310549F02F30310531F0D3 +:1029400009C0803E48F0803F29F406C093FB8827E9 +:1029500080F9089580E0089581E00895CF93DF9392 +:1029600000D000D01F92CDB7DEB70F900F900F9020 +:102970000F900F90DF91CF910895CF93DF9300D008 +:1029800000D000D0CDB7DEB726960FB6F894DEBFE4 +:102990000FBECDBFDF91CF910895CF93DF93C0914C +:1029A000630180916401C817A1F0D0E0CE0166E018 +:1029B00070E00E948F26FC01EB59FE4F408151814F +:1029C00062817381848195810E94BD142196C770B4 +:1029D000E8CFDF91CF9108954091950150919601F4 +:1029E00060919701709198018091990190919A015D +:1029F0000C94BD14CF93DF9380919A0182958F70D0 +:102A000009F05CC080919701882309F457C0209198 +:102A10006301D091640140919501C0919601E091CC +:102A20009801F09199012D1709F448C030E03097D2 +:102A300009F440C0CF3F11F44F3FE1F1C90166E016 +:102A400070E00E948F26DC01AB59BE4F11968C912D +:102A50001197C8132FC08C9148132CC012968C91DB +:102A60001297811127C013968D919C9114978E1700 +:102A70009F0708F401978E1B9F0B883C9105D0F4AB +:102A800080919A018F70806180939A01C90166E0FC +:102A900070E00E948F26FC01E659FE4F90819F70E6 +:102AA0009061908385E991E00E946A11DF91CF9156 +:102AB0000C94CD142F5F3F4F2770B5CFDF91CF918E +:102AC0000895BF92CF92DF92EF92FF920F931F93E0 +:102AD000CF93DF93CDB7DEB761970FB6F894DEBF23 +:102AE0000FBECDBF8C0185E0F801DE011D9601907F +:102AF0000D928A95E1F7D8014C9111962C9111977E +:102B00001296EC9012971396CD90DC9014975091FA +:102B1000950160919601809198019091990100979B +:102B200009F46EC16F3F19F45F3F09F469C1B090B9 +:102B30009701BB2009F4C3C030919A01C816D90689 +:102B400028F0F601E81BF90BCF0104C080959095A1 +:102B50008C0D9D1DFF24F394883C910588F0F12C89 +:102B6000307F09F0CBC07C2DD98AC88A522F6E2DB8 +:102B700089890E94AE1485E991E00E946A11B4C06F +:102B8000832F807F09F049C0621314C0541312C010 +:102B9000E11010C03F70306130939A010E94EC1434 +:102BA00085E991E00E946A1180919A01D8011596F9 +:102BB0008C9331C0CD2831F12F3F11F44F3F11F1EB +:102BC000FE2CE1101FC0E091630130916401E31716 +:102BD00009F45CC0F0E0CF0166E070E00E948F264F +:102BE000DC01AB59BE4F11968C911197281307C089 +:102BF0008C91481304C012968C91811103C03196B8 +:102C0000E770E5CFFE2CEE2009F416C180919A0101 +:102C1000816080939A01F12C0FC1621308C0541394 +:102C200006C0E11004C080919A01D801C1C04D874F +:102C30002E878D859E850E9488148823E1F1EE20E1 +:102C4000D1F120919A01822F82958F7090E00297A6 +:102C500074F0809195019091960198878F831986E1 +:102C6000DB86CA862C87CE0107960E946A1186E011 +:102C7000F801A5E9B1E001900D928A95E1F70E9473 +:102C8000FA140E94EC14FF24F394D6C04D872E87CB +:102C90008D859E850E947B19292F22952F7030E00B +:102CA000223031050CF0BCC09F7009F0B6C0805EC8 +:102CB000883008F4C1C0C8010E946A11E4CFC81668 +:102CC000D90608F453C0F601E81BF90BCF01883C84 +:102CD000910508F450C0F12C7C2DD98AC88A522F56 +:102CE0006E2D89890E94AE14E5E9F1E086E0DF01EE +:102CF0001D928A95E9F70E94EC149EC0621314C0DD +:102D0000541312C0E11010C080919A01F80185831C +:102D1000C8010E946A1186E0E5E9F1E0DF011D9239 +:102D20008A95E9F7FB2C88C04D872E878D859E8577 +:102D30000E948814882309F4BECFEE2009F4BBCF8B +:102D400020919A01822F82958F7090E002970CF467 +:102D50008ECF80919501909196019A8389831B82F1 +:102D6000DD82CC822E83CE0101967FCF8095909517 +:102D70008C0D9D1DACCFFE2CEE2009F49CCF621370 +:102D80002EC054132CC020919A0120FD1FC0822F09 +:102D900082958F70D9F0D80115962C9315978F30A6 +:102DA00049F08F5F982F9295907F822F8F70892B9B +:102DB00015968C93C8010E946A1186E0F801A5E976 +:102DC000B1E001900D928A95E1F795CF86E0F80188 +:102DD000A5E9B1E001900D928A95E1F72DC04D87EC +:102DE0002E878D859E850E948814811140CF809109 +:102DF0009A01816080939A01C8010E946A111CC0E7 +:102E0000EE2009F458CF4D872E878D859E850E9430 +:102E10008814882309F44FCF2ACF811148CF0CC0E2 +:102E2000243031050CF047CF9F7009F440CFF801F2 +:102E30009581907F09F03BCF8F2D61960FB6F89466 +:102E4000DEBF0FBECDBFDF91CF911F910F91FF90DD +:102E5000EF90DF90CF90BF900895CF93DF93CDB7E1 +:102E6000DEB72C970FB6F894DEBF0FBECDBF4F83F1 +:102E7000588769877A878B879C87CE0107960E943F +:102E80006115882371F08F8198852A853B85232BD6 +:102E900009F43FC09F3F09F068C08F3F09F065C04B +:102EA00038C086E0FE013796DE01119601900D9242 +:102EB0008A95E1F76F817885EA85FB85309749F13E +:102EC0007F3F11F46F3F29F18091640190E09C01F4 +:102ED0002F5F3F4F277033274091630150E0241745 +:102EE000350709F44BC069837A83FD83EC8366E080 +:102EF00070E00E948F26DC01AB59BE4F96E0FE01C8 +:102F0000319601900D929A95E1F7209364010E9409 +:102F1000CD1480916301909164018917E9F190E0EB +:102F200066E070E00E948F268B599E4F0E946115CB +:102F3000882391F18091630190E066E070E00E9447 +:102F40008F26FC01EB59FE4F4081518162817381D4 +:102F5000848195810E94BD148091630190E0019667 +:102F60008770992780936301D4CF4F8158856985F5 +:102F70007A858B859C850E94BD14CBCF0E948414DA +:102F80001092640110926301E5E9F1E086E0DF014F +:102F90001D928A95E9F7BDCF2C960FB6F894DEBF47 +:102FA0000FBECDBFDF91CF910895DF92EF92FF92D8 +:102FB0000F931F93CF93DF93FC01892B09F48AC0F1 +:102FC000E12CF12CDD24D394EF01219684918537F7 +:102FD00009F461C058F4843708F04EC0843008F01A +:102FE0006AC08130D1F0823071F174C0883709F441 +:102FF0005DC050F4863709F455C0873709F06AC0C0 +:103000008E2D0E94081A54C09CE7980F903708F044 +:1030100061C08F770E94F21050C08F010E5F1F4F6A +:10302000FE01849190E2980F983050F48770FD2D46 +:1030300001C0FF0F8A95EAF78F2F0E940E1A14C065 +:103040000E94041013C08F010E5F1F4FFE01C49138 +:1030500080E28C0F883060F4C7708D2D01C0880F1E +:10306000CA95EAF70E94141A0E94351AE80125C091 +:103070008C2F0E94F210FACF9F012E5F3F4FFE016E +:10308000C491CC2369F08FE99FE00197F1F700C06C +:103090000000C150F6CF9F012E5F3F4FFE01F4901C +:1030A000E9010BC00E94F819E82E07C00E940B1A14 +:1030B0000E94351A02C00E9404108F2D882341F00F +:1030C000EFE9FFE03197F1F700C000008150F6CF43 +:1030D000FE017ACFDF91CF911F910F91FF90EF907A +:1030E000DF90089560939F017093A0018093A101E8 +:1030F0009093A2010E94821A0C94721460939B0117 +:1031000070939C0180939D0190939E010E94831A6D +:103110000C94721408950C9472180F931F930091DD +:103120009F011091A0012091A1013091A201602B7B +:10313000712B822B932B1F910F910C9472180F936C +:103140001F9300919F011091A0012091A101309146 +:10315000A20160237123822393231F910F910C946A +:1031600072180F931F9300919F011091A00120915D +:10317000A1013091A20160277127822793271F9117 +:103180000F910C94721860E070E0CB010C947E18E3 +:103190000F931F9341E050E060E070E08A019B01D3 +:1031A00004C0000F111F221F331F8A95D2F7C901D7 +:1031B000B8011F910F910C947E180F931F9341E05B +:1031C00050E060E070E004C0440F551F661F771F99 +:1031D0008A95D2F780919B0190919C01A0919D01CD +:1031E000B0919E018A019B01082B192B2A2B3B2BA6 +:1031F000C901B8011F910F910C947E180F931F9372 +:1032000041E050E060E070E004C0440F551F661FCD +:10321000771F8A95D2F7409550956095709580916B +:103220009B0190919C01A0919D01B0919E018A010A +:103230009B01082319232A233B23C901B8011F91AD +:103240000F910C947E180F931F9341E050E060E0C3 +:1032500070E004C0440F551F661F771F8A95D2F790 +:1032600080919B0190919C01A0919D01B0919E0144 +:103270008A019B01082719272A273B27C901B80182 +:103280001F910F910C947E180F931F9300919B0137 +:1032900010919C0120919D0130919E01602B712B1A +:1032A000822B932B1F910F910C947E180F931F93D9 +:1032B00000919B0110919C0120919D0130919E01F4 +:1032C00060237123822393231F910F910C947E1806 +:1032D0000F931F9300919B0110919C0120919D01E0 +:1032E00030919E0160277127822793271F910F91AC +:1032F0000C947E180895CF92DF92EF92FF920F9375 +:103300001F93CF93DF938C01C0909F01D090A001B9 +:10331000E090A101F090A20140919B0150919C018D +:1033200060919D0170919E01C42AD52AE62AF72A50 +:10333000CFE1D0E0D701C6010C2E04C0B695A79509 +:10334000979587950A94D2F780FF07C0B8018C2F14 +:103350000E94941B8130910531F4219758F7B801F0 +:1033600080E00E94941BDF91CF911F910F91FF90FD +:10337000EF90DF90CF90089520910C0130910D01D6 +:10338000F90132969FEF40E05191581789F09F3F25 +:1033900019F4511101C0942F4F5F4630A9F79F3F98 +:1033A00039F0F901E90FF11D97FDFA95828308952F +:1033B000089520910C0130910D01F9013296285F9A +:1033C0003F4F9081981301C010823196E217F307A6 +:1033D000C1F7089581E090E0E0910C01F0910D01BA +:1033E000E80FF91F1082019688309105A9F708951A +:1033F0008091AD0108959091AD01892B8093AD012D +:10340000089580959091AD0189238093AD01089531 +:103410008093AD0108951092AD0108959091AC0193 +:10342000892B8093AC01089580959091AC018923FC +:103430008093AC0108951092AC0108958093A3018C +:1034400008951092A301089580910C0190910D01AF +:10345000FC0131969C01285F3F4F80E091919111D2 +:103460008F5FE217F307D1F70895E0910C01F09117 +:103470000D018091AD018083E0910C01F0910D016F +:1034800090818091AC01892B80838091A301882356 +:1034900061F0E0910C01F0910D019081892B808306 +:1034A0000E94241A81111092A30180910C01909125 +:1034B0000D010C94450E90933501809334010895CD +:1034C0008295982F9C7C292F26952695982F93736B +:1034D000990F990F922B892F8A7A86959575990F56 +:1034E000892B08950895CF93DF9300D000D01F92C9 +:1034F000CDB7DEB70F900F900F900F900F90DF9128 +:10350000CF910895089508950C948A0F089580919D +:10351000C301843021F11092AF0120E488E190E0F2 +:103520000FB6F894A895809360000FBE20936000BA +:1035300083B7817F846083BF83B7816083BF7894C2 +:10354000889583B78E7F83BF0FB6F894A895809136 +:103550006000886180936000109260000FBE089543 +:10356000CF930E94C20F0E9463060E94C30FC0E067 +:103570008C2F0E94EA06811104C0CF5FC830C1F7CA +:1035800001C081E0CF9108950E948C0F0C948414A7 +:103590001F920F920FB60F9211248F939F93AF93A8 +:1035A000BF938091AF01811113C08091B0019091C0 +:1035B000B101A091B201B091B3014196A11DB11D1D +:1035C0008093B0019093B101A093B201B093B30185 +:1035D000BF91AF919F918F910F900FBE0F901F9051 +:1035E000189582E084BD93E095BD9AEF97BD8093D6 +:1035F0006E0008952FB7F8948091B0019091B101B9 +:10360000A091B201B091B3012FBF08952FB7F894E4 +:103610006091B0017091B1018091B2019091B301BC +:103620002FBF0895CF92DF92EF92FF920F931F93D7 +:103630002FB7F8944091B0015091B1016091B2015F +:103640007091B3012FBF6A017B01EE24FF248C012E +:1036500020E030E0C016D106E206F30610F4415037 +:1036600051099A01281B390BC9011F910F91FF9035 +:10367000EF90DF90CF9008951F920F920FB60F92A8 +:1036800011248F939F93AF93BF938091B00190913A +:10369000B101A091B201B091B3010196A11DB11D7C +:1036A0008093B0019093B101A093B201B093B301A4 +:1036B000BF91AF919F918F910F900FBE0F901F9070 +:1036C00018950E948D0BF8942FEF87EA91E6215010 +:1036D00080409040E1F700C0000087E090EBDC0103 +:1036E0008093CD019093CE01A093CF01B093D001F0 +:1036F0009CE088E10FB6F894A895809360000FBE17 +:1037000090936000FFCFE92FF0E093E0EE0FFF1FF2 +:103710009A95E1F7E80FF11DEA54FF4F9491892F34 +:103720008F7092959F700895CF93C82FCB010E9400 +:10373000831B492F90E0242F30E054E0220F331FE9 +:103740005A95E1F7282B392B2038310519F480E000 +:1037500090E017C0EC2FF0E023E0EE0FFF1F2A955A +:10376000E1F74770E40FF11D34E0EE0FFF1F3A95CB +:10377000E1F7E80FF91FEE0FFF1FE050F8498591C0 +:103780009491CF91089580E090E008950895CF92AC +:10379000DF92EF92FF920F931F93CF936C01C0E0E3 +:1037A0008C2F0E94EA0600E010E0E82EF12CC70101 +:1037B000002E02C0959587950A94E2F780FF16C007 +:1037C000602F7C2F80E00E94941B9C018C159D052E +:1037D00059F0832F807E932F907C11F0803A31F442 +:1037E00030E02C153D0511F481E009C00F5F1F4F3B +:1037F00008301105E1F6CF5FC83091F680E0CF9137 +:103800001F910F91FF90EF90DF90CF900895CF938D +:10381000DF93EC018CE290E00E94C71B882329F023 +:10382000CE01DF91CF910C94C71B80E0DF91CF9147 +:103830000895CF930E947A1D811102C00E94601DDD +:1038400082E093E00E949405C5E6C15049F00E94D1 +:1038500063068FE39CE90197F1F700C00000F5CF04 +:103860008BEF92E00E94940589E290E00E94071C91 +:10387000811124C18AE290E00E94071C81110E94FC +:10388000601D85E090E00E94071C81110E94611B71 +:103890000E94861A0E94851D8093AE0187E090E009 +:1038A0000E94071C8823C1F18BE190E00E94071C55 +:1038B000882351F08091AE0181FB222720F991E00D +:1038C000922790FB81F90FC08EE090E00E94071CC8 +:1038D000882361F08091AE0182FB222720F991E0DC +:1038E000922790FB82F98093AE0116C080E190E0B0 +:1038F0000E94071C9091AE01882341F093FB222780 +:1039000020F981E0822780FB93F904C0892F8095FC +:1039100080FB90F99093AE018091AE010E94891DC9 +:103920000E94971D8093CC0180EE90E00E94071CBE +:10393000882341F08091CC01982F909590FB80F9DD +:103940008093CC0189E390E00E94071C882359F002 +:103950008091CC0181FB222720F991E0922790FBF6 +:1039600081F98093CC0182EE90E00E94071C8823AD +:1039700059F08091CC0182FB222720F991E0922717 +:1039800090FB82F98093CC0186EE90E00E94071CA8 +:10399000882359F08091CC0183FB222720F991E004 +:1039A000922790FB83F98093CC0183EE90E00E94F4 +:1039B000071C882359F08091CC0184FB222720F931 +:1039C00091E0922790FB84F98093CC0185E390E00D +:1039D0000E94071C882359F08091CC0185FB222787 +:1039E00020F991E0922790FB85F98093CC0181E347 +:1039F00090E00E94071C882359F08091CC0186FB3F +:103A0000222720F991E0922790FB86F98093CC0140 +:103A100081E190E00E94071C882359F08091CC013D +:103A200087FB222720F991E0922790FB87F980936A +:103A3000CC018091CC010E949B1D87E290E00E9406 +:103A4000071CC82F8EE190E00E94071C8111C26004 +:103A50008FE190E00E94071C8111C46080E290E039 +:103A60000E94071C8111C86081E290E00E94071C3F +:103A70008111C06182E290E00E94071C8111C06246 +:103A800083E290E00E94071C8111C06484E290E010 +:103A90000E94071C882311F0C06802C0CC2329F0C3 +:103AA0008C2F0E94921D6C2F03C00E948E1D682FC8 +:103AB00070E080E090E0CF910C948B18CF91089546 +:103AC0006DEE7EEF80E090E00E94F62660E082E0FE +:103AD00090E00E94E82660E083E090E00E94E82603 +:103AE00060E084E090E00E94E82660E085E090E0FD +:103AF0000C94E82680E090E00E94E22621E08D3ED2 +:103B00009E4F09F020E0822F089582E090E00C940F +:103B1000DA26682F82E090E00C94E82683E090E0BB +:103B20000C94DA26682F83E090E00C94E82684E079 +:103B300090E00C94DA26682F84E090E00C94E8265C +:103B40008091B60180FF0CC08091110190E065E08A +:103B500070E00E948F2695958795959587952EC044 +:103B600081FF0AC08091110190E065E070E00E9441 +:103B70008F269595879522C082FF08C080911101FC +:103B800090E065E070E00E948F2618C02091B70198 +:103B90002223D1F030911001231780F78091110179 +:103BA00090E065E070E00E948F26622F70E00E9436 +:103BB0008F26632F70E00E94AC26CB0180389105E0 +:103BC00030F4009731F0089585E090E008958FE794 +:103BD000089581E008958091B60180FF08C060914A +:103BE0000F0170E0759567957595679523C081FF06 +:103BF00006C060910F0170E0759567951BC082FF4C +:103C000004C060910F0170E012C06091B70166239B +:103C1000D1F020910E016217A0F780910F0170E0A2 +:103C200090E00E948F26622F70E00E94AC266038E0 +:103C3000710528F46115710521F0862F08958FE72D +:103C4000089581E0089561E070E0F4CF803F21F4B1 +:103C50000E94A01D819504C0813F29F40E94A01DEF +:103C60008093BA010895823F21F40E94A01D81959E +:103C700004C0833F29F40E94A01D8093B9010895D8 +:103C8000893F19F40E94EB1D05C08A3F31F40E9460 +:103C9000EB1D81958093BB0108958B3F21F40E9419 +:103CA000EB1D819504C08C3F29F40E94EB1D80938D +:103CB000BC010895843F21F48091B801816017C050 +:103CC000853F21F48091B801826011C0863F21F4C4 +:103CD0008091B80184600BC0873F21F48091B801C6 +:103CE000886005C0883F31F48091B801806180937D +:103CF000B80108958D3F21F48091B60181600BC019 +:103D00008E3F21F48091B601826005C08F3F29F477 +:103D10008091B60184608093B6010895803F39F4A4 +:103D20008091BA0187FF6CC01092BA0169C0813FCF +:103D300029F48091BA011816BCF362C09091B901C0 +:103D4000823F29F497FF5CC01092B90159C0833FAC +:103D500019F41916CCF354C0893F41F48091BB018A +:103D600018160CF04DC01092BB014AC08A3F29F4CE +:103D70008091BB0187FF44C0F6CF8B3F39F480911F +:103D8000BC0187FF3DC01092BC013AC08C3F29F4B2 +:103D90008091BC011816BCF333C0843F21F480919C +:103DA000B8018E7F17C0853F21F48091B8018D7FC7 +:103DB00011C0863F21F48091B8018B7F0BC0873FF3 +:103DC00021F48091B801877F05C0883F31F480914C +:103DD000B8018F7E8093B80113C08D3F21F480918C +:103DE000B6018E7F0BC08E3F21F48091B6018D7F8E +:103DF00005C08F3F29F48091B6018B7F8093B60177 +:103E00008091B90181110EC08091BA0181110AC05F +:103E10008091BB01811106C08091BC01811102C05B +:103E20001092B70108958091AE0183FF7EC08EE3AA +:103E300093E00E9494058091B8011F928F9389E3CB +:103E400093E09F938F930E942D0687E393E00E9457 +:103E500094058091B901282F082E000C330B3F9355 +:103E60008F9384E393E09F938F930E942D0682E3C8 +:103E700093E00E9494058091BA01282F082E000C2F +:103E8000330B3F938F938FE293E09F938F930E9426 +:103E90002D068DE293E00E9494058091BB01282FAE +:103EA000082E000C330B3F938F938AE293E09F938D +:103EB0008F930E942D0688E293E00E9494058091E2 +:103EC000BC01282F082E000C330B3F938F9385E203 +:103ED00093E09F938F930E942D0682E293E00E94CD +:103EE00094058091B7011F928F938FE193E09F9388 +:103EF0008F930E942D068DE193E00E94940580919E +:103F0000B6011F928F938AE193E09F938F930E9453 +:103F10002D0687E193E00E9494058DB79EB74C96DD +:103F20000FB6F8949EBF0FBE8DBF88EB91E00E9444 +:103F30008E0E0E94FA1A9093B5018093B4010895F1 +:103F40001F93CF93DF938091B4019091B5010E94AC +:103F5000121BFC012091B701222329F0909112013C +:103F6000892F90E007C08091130190E06AE070E033 +:103F70000E948F26E817F90708F485C08091B901DF +:103F8000C091BA01D091BB011091BC01811107C051 +:103F9000C11175C0D11173C0111171C074C02F3F10 +:103FA00019F02F5F2093B701181624F40E94A01D6A +:103FB0008093B9018091B90187FF05C00E94A01DBF +:103FC00081958093B9011C1624F40E94A01D809352 +:103FD000BA018091BA0187FF05C00E94A01D81959A +:103FE0008093BA016091B901662331F1C091BA01A1 +:103FF000CC2311F1062E000C770B880B990B0E9435 +:104000008E2523E333E343E35FE30E94F2250E941E +:1040100056256093B9016C2FCC0F770B880B990B49 +:104020000E948E2523E333E343E35FE30E94F225FE +:104030000E9456256093BA011D1624F40E94EB1DC0 +:104040008093BB018091BB0187FF05C00E94EB1DDF +:1040500081958093BB01111624F40E94EB1D80937F +:10406000BC018091BC0187FF05C00E94EB1D8195BA +:104070008093BC01DF91CF911F910C94131F2F3FB0 +:1040800009F08FCF97CFDF91CF911F910895E8EB83 +:10409000F1E085E0DF011D928A95E9F71092B70102 +:1040A0001092B601089581E695E00E9494051F9252 +:1040B00081E08F931F9285E08F9383E195E09F933A +:1040C0008F930E942D060F900F900F900F900F90DE +:1040D0000F9008958330E9F128F4813061F0823047 +:1040E00009F10895853009F462C008F449C08630AA +:1040F00009F474C0089580911301262F30E0280F31 +:10410000311D2F3F310524F4680F6093130103C064 +:104110008FEF80931301809113011F928F938CE492 +:1041200094E072C080911201262F30E0280F311DDB +:104130002F3F310524F4680F6093120103C08FEF05 +:1041400080931201809112011F928F938AE394E071 +:104150005BC080911101262F30E0280F311D2F3FC9 +:10416000310524F4680F6093110103C08FEF809331 +:104170001101809111011F928F9387E294E044C056 +:1041800080911001262F30E0280F311D2F3F31057F +:1041900024F4680F6093100103C08FEF8093100127 +:1041A000809110011F928F9382E194E02DC0809145 +:1041B0000F01262F30E0280F311D2F3F310524F449 +:1041C000680F60930F0103C08FEF80930F01809100 +:1041D0000F011F928F9389EF93E016C080910E011B +:1041E000262F30E0280F311D2F3F310524F4680FB2 +:1041F00060930E0103C08FEF80930E0180910E013A +:104200001F928F938EED93E09F938F930E942D06C4 +:104210000F900F900F900F900895833081F128F444 +:10422000813059F08230D1F00895853009F449C0C9 +:10423000B8F1863009F456C00895809113016817CB +:1042400020F4861B8093130102C010921301809109 +:1042500013011F928F938FEC93E054C08091120151 +:10426000681720F4861B8093120102C0109212017D +:10427000809112011F928F938DEB93E043C0809148 +:104280001101681720F4861B8093110102C010925F +:104290001101809111011F928F938AEA93E032C03D +:1042A00080911001681720F4861B8093100102C0D2 +:1042B00010921001809110011F928F9385E993E075 +:1042C00021C080910F01681720F4861B80930F0195 +:1042D00002C010920F0180910F011F928F938CE703 +:1042E00093E010C080910E01681720F4861B809324 +:1042F0000E0102C010920E0180910E011F928F9349 +:1043000081E693E09F938F930E942D060F900F906C +:104310000F900F900895CF93C82F1F928F9386E62A +:1043200096E09F938F930E942D0681E090E0A0E09D +:10433000B0E0BC01CD0104C0660F771F881F991F34 +:10434000CA95D2F70E948B180F900F900F900F9084 +:10435000CF910C948414CF938732B0F58E3108F04E +:1043600040C28E3009F4BEC100F5873009F48DC11A +:10437000A8F4863009F039C28091AE01817F8E7F2A +:104380008093AE018BE696E00E9494058EE69AE05B +:104390000E94940581E08093BE0175C1883009F4C4 +:1043A0003FC08B3009F46BC120C2863109F4E0C1F3 +:1043B00020F4803109F4AAC118C2893109F4C1C1BD +:1043C0008B3109F47BC111C2883309F458C150F410 +:1043D000893209F404C2853309F401C2873209F035 +:1043E00004C2FDC1833409F4FAC128F48A3308F405 +:1043F000FCC18953F7C1883409F0F7C10E948414C5 +:104400008DE59AE00E9494059FEF23ED80E39150A3 +:1044100020408040E1F700C000000E94611B33C1D2 +:1044200082E79AE00E94940582E698E00E94940553 +:104430000E948E1D1F928F938FE598E09F938F931C +:104440000E942D068DE598E00E9494050E94851D2E +:10445000C82F8AE498E00E9494051F92CF9385E4C8 +:1044600098E09F938F930E942D0683E498E00E942A +:10447000940589E398E00E9494058C2F81701F9227 +:104480008F9386E398E09F938F930E942D0684E399 +:1044900098E00E9494058AE298E00E949405C1FB8E +:1044A000882780F91F928F9387E298E09F938F93DC +:1044B0000E942D0685E298E00E94940589E198E02B +:1044C0000E949405C2FB882780F91F928F9386E192 +:1044D00098E09F938F930E942D0684E198E00E94BC +:1044E00094058BE098E00E949405C3FBCC27C0F9AB +:1044F0001F92CF9388E098E09F938F930E942D06A0 +:1045000086E098E00E9494050E94971DC82F82EFD4 +:1045100097E00E9494051F92CF938DEE97E09F93B2 +:104520008F930E942D068BEE97E00E94940582EDFA +:1045300097E00E9494058C2F81701F928F938FECCF +:1045400097E09F938F930E942D068DB79EB780961C +:104550000FB6F8949EBF0FBE8DBF8DEC97E00E9402 +:10456000940586EB97E00E949405C1FB882780F9AB +:104570001F928F9383EB97E09F938F930E942D065A +:1045800081EB97E00E9494058FE997E00E949405E3 +:10459000C2FB882780F91F928F938CE997E09F9345 +:1045A0008F930E942D068AE997E00E94940588E87F +:1045B00097E00E949405C3FB882780F91F928F9390 +:1045C00085E897E09F938F930E942D0683E897E0FC +:1045D0000E94940589E797E00E949405C4FB882710 +:1045E00080F91F928F9386E797E09F938F930E94A5 +:1045F0002D0684E797E00E94940582E697E00E94EA +:104600009405C5FB882780F91F928F938FE597E06B +:104610009F938F930E942D068DE597E00E9494054D +:1046200081E497E00E949405C6FB882780F91F92D9 +:104630008F938EE397E09F938F930E942D068CE3D8 +:1046400097E00E94940584E397E00E949405C7FBDD +:10465000CC27C0F91F92CF9381E397E09F938F936C +:104660000E942D068FE297E00E9494058DB79EB7B9 +:104670004C960FB6F8949EBF0FBE8DBF04C082E962 +:1046800096E00E949405C1E0B5C08091AE01C82FAC +:10469000C17080FF09C080E59AE00E949405809176 +:1046A000AE01817F8E7F47C084E49AE00E9494052A +:1046B0008091AE0181608093AE01E5CF9091AE0113 +:1046C00091FBCC27C0F981E0C827892FC0FB81F975 +:1046D0008093AE01CC2319F087E39AE027C089E2EA +:1046E0009AE0CFCF9091AE0192FBCC27C0F981E048 +:1046F000C827892FC0FB82F98093AE01CC2319F023 +:104700008AE19AE013C08AE09AE0BBCF9091AE01B3 +:1047100093FBCC27C0F981E0C827892FC0FB83F920 +:104720008093AE01CC2351F08EEF99E00E94940566 +:104730008091AE0181608093AE015CC081EF99E011 +:10474000A0CF82EE99E00E9494058AEB99E00E9446 +:10475000940588E899E00E9494058BE599E00E9411 +:1047600094058CE099E00E9494058DED98E089CF46 +:104770008FEC98E00E9494050E94390E1F928F934F +:1047800085EB98E09F938F930E942D0680910B01FB +:104790001F928F938EE998E09F938F930E942D062E +:1047A000809153011F928F938BE898E09F938F9392 +:1047B0000E942D060E94061B9F938F937F936F93F9 +:1047C00084E798E09F938F930E942D068DB79EB744 +:1047D00042960FB6F8949EBF0FBE8DBF54CF80E0B7 +:1047E00001C08D510E948B214ECF82E798E00E943C +:1047F0009405C0E08C2FCF91089580E0089580E06B +:104800000895CF93C82F8091BE01813071F020F0C0 +:10481000823009F44BC042C1E0910C01F0910D01CE +:104820008081823209F03CC107C0E0910C01F09117 +:104830000D018081823261F48C2F0E94FD23811151 +:1048400004C08C2F0E94AB212FC081E090E02CC0CF +:104850008C2F0E94FF23811126C0C431E1F070F437 +:10486000CB3081F0C031D1F40E9453208EE596E028 +:104870000E94940582E08093BE0115C0C93259F0B0 +:10488000C83361F48BE696E00E94940582E696E0D8 +:104890000E94940508C01092BE0104C18CE596E008 +:1048A0000E949405FFC081E08170FEC0C43228F5EB +:1048B000CE3108F0C1C0CB30A1F1D0F4C73009F03F +:1048C000D3C08EE18093130182E3809312018AE0CA +:1048D0008093110184E18093100188E080930F019F +:1048E00088E280930E0182E095E00E949405BFC0AB +:1048F000C33149F1C431C1F0B7C0CB3409F4A9C008 +:1049000028F4C93289F0C83361F0AEC0C13509F46A +:104910009EC0C23509F499C0CE3409F0A5C06AE042 +:104920009EC00E945320A3C08091BD01882319F02E +:104930001092BD019CC08FE095E00E94940581E03B +:104940008093BE01B1C089EE94E00E94940587ED8A +:1049500094E00E949405809113011F928F9384ED3F +:1049600094E09F938F930E942D0682ED94E00E9425 +:10497000940580EC94E00E949405809112011F92AE +:104980008F938DEB94E09F938F930E942D068BEB7A +:1049900094E00E9494058CEA94E00E949405809132 +:1049A00011011F928F9389EA94E09F938F930E9445 +:1049B0002D0687EA94E00E94940586E994E00E941F +:1049C0009405809110011F928F9383E994E09F9347 +:1049D0008F930E942D0681E994E00E9494058CE754 +:1049E00094E00E94940580910F011F928F9389E7B4 +:1049F00094E09F938F930E942D0687E794E00E9496 +:104A0000940580E694E00E94940580910E011F9227 +:104A10008F938DE594E09F938F930E942D068BE5F5 +:104A200094E00E9494058DB79EB748960FB6F8940F +:104A30009EBF0FBE8DBF1BC0CE51EC2FF0E0E75DD7 +:104A4000FE4F80818093BD0112C061E003C061E030 +:104A500006C06AE08091BD010E946A2008C0809172 +:104A6000BD010E940D2103C080E095E013C080913C +:104A7000BD01882369F01F928F938AEF94E09F9382 +:104A80008F930E942D060F900F900F900F9004C0EF +:104A900087EF94E00E94940581E006C01092BE0169 +:104AA00080E002C080E000CFCF9108950E945D2594 +:104AB0006894B1110C94EC2508950E94D12588F0DA +:104AC0009F5798F0B92F9927B751B0F0E1F0660FD2 +:104AD000771F881F991F1AF0BA95C9F714C0B13013 +:104AE00091F00E94EB25B1E008950C94EB25672F1F +:104AF000782F8827B85F39F0B93FCCF38695779542 +:104B00006795B395D9F73EF490958095709561952A +:104B10007F4F8F4F9F4F0895E89409C097FB3EF455 +:104B200090958095709561957F4F8F4F9F4F9923FA +:104B3000A9F0F92F96E9BB279395F6958795779578 +:104B40006795B795F111F8CFFAF4BB0F11F460FF38 +:104B50001BC06F5F7F4F8F4F9F4F16C0882311F090 +:104B600096E911C0772321F09EE8872F762F05C0A4 +:104B7000662371F096E8862F70E060E02AF09A953F +:104B8000660F771F881FDAF7880F9695879597F934 +:104B9000089557FD9058440F551F59F05F3F71F02D +:104BA0004795880F97FB991F61F09F3F79F0879594 +:104BB0000895121613061406551FF2CF4695F1DF1D +:104BC00008C0161617061806991FF1CF86957105AD +:104BD000610508940895E894BB2766277727CB01E1 +:104BE00097F908950E9404260C947E260E94702650 +:104BF00038F00E94772620F0952311F00C94672658 +:104C00000C946D260C94EC250E94C92578F3992309 +:104C1000C9F35523B9F3950F50E0551FAA27EE2786 +:104C2000FF27BB2700240894679520F4E20FF31FA9 +:104C3000B41F0A1E220F331F441FAA1F6695A9F72F +:104C4000779530F4F30FB41F0A1E121E08F4639513 +:104C5000330F441FAA1F221F769599F7879520F4DA +:104C6000B40F0A1E121E631F440FAA1F221F331FF8 +:104C70008695A9F7862F712D602D11249F575040DE +:104C80009AF0F1F088234AF0EE0FFF1FBB1F661F5A +:104C9000771F881F91505040A9F79E3F510580F023 +:104CA0000C9467260C94EC255F3FE4F3983ED4F314 +:104CB000869577956795B795F795E7959F5FC1F7C7 +:104CC000FE2B880F911D9695879597F9089597F972 +:104CD0009F6780E870E060E008959FEF80EC0895A2 +:104CE00000240A94161617061806090608950024CB +:104CF0000A9412161306140605060895092E039445 +:104D0000000C11F4882352F0BB0F40F4BF2B11F4B8 +:104D100060FF04C06F5F7F4F8F4F9F4F0895002447 +:104D2000552704C0080E591F880F991F009729F0B6 +:104D300076956795B8F37105B9F7802D952F08958D +:104D4000991B79E004C0991F961708F0961B881FDD +:104D50007A95C9F78095089597FB072E16F400946D +:104D600007D077FD09D00E94C62607FC05D03EF487 +:104D7000909581959F4F0895709561957F4F089507 +:104D8000EE0FFF1F0590F491E02D0994AA1BBB1BA9 +:104D900051E107C0AA1FBB1FA617B70710F0A61B3B +:104DA000B70B881F991F5A95A9F780959095BC015C +:104DB000CD010895F999FECF92BD81BDF89A99274A +:104DC00080B50895A8E1B0E042E050E00C94FD26E3 +:104DD000262FF999FECF1FBA92BD81BD20BD0FB617 +:104DE000F894FA9AF99A0FBE019608950E94E8265F +:104DF000272F0C94E926DC01CB01FC01F999FECFA9 +:104E000006C0F2BDE1BDF89A319600B40D92415052 +:0A4E10005040B8F70895F894FFCF62 +:104E1A0005F806E907C60792075E0701A4012808F4 +:104E2A00140A321E404D36227A022D02F701D501AC +:104E3A0061017A019301AC0100010203040506072E +:044E4A000809000053 +:106800000000000000000000040005000600070072 +:10681000080009000A000B000C000D000E000F001C +:1068200010001100120013001400150016001700CC +:10683000180019001A001B001C001D001E001F007C +:10684000200021002200230024002500260027002C +:10685000280029002A002B002C002D002E002F00DC +:1068600030003100000033003400350036003700BE +:106870003800E00000000000000000000000000000 +:106880000000000000000000000000000000000008 +:1068900000000000000000000000000000000000F8 +:1068A00000000000000000000000000000000000E8 +:1068B00000000000000000000000000000000000D8 +:1068C00000000000000000006400650000000000FF +:1068D00000000000000000000000000000000000B8 +:1068E0000000000000000000320000000000000076 +:1068F000E000E100E200E300F1A1E500E600E700CE +:106900000100010001000100EA4401000100E2442D +:106910000100010001005500460054004A004B00F0 +:10692000560057004700480001000100E9440100FB +:106930000100010001000100010001003A003B00DC +:106940003C003D003E003F0040004100420043004B +:10695000580001004C00390001004400450052007D +:1069600001000100010050004F0029004D004E00C1 +:1069700051000100010001000100010001000100BF +:1069800001000100010001000100010001000100FF +:1069900001000100010001000100010001000100EF +:1069A00001000100010001000100010001000100DF +:1069B00001000100010001000100010001000100CF +:1069C00001000100010001000100010001000100BF +:1069D00001000100010001000100010001000100AF +:1069E0000100010001000100490001000100010057 +:1069F000010001000100010001000100010001008F +:00000001FF diff --git a/keyboard/alps64/unimap_plain.c b/keyboard/alps64/unimap_plain.c new file mode 100644 index 00000000..a0fd4a35 --- /dev/null +++ b/keyboard/alps64/unimap_plain.c @@ -0,0 +1,64 @@ +/* +Copyright 2016 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "unimap_trans.h" + + +#define AC_FN0 ACTION_LAYER_MOMENTARY(1) + +#ifdef KEYMAP_SECTION_ENABLE +const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] __attribute__ ((section (".keymap.keymaps"))) = { +#else +const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] PROGMEM = { +#endif + /* + * Universal keyboard layout + * ,-----------------------------------------------. + * |F13|F14|F15|F16|F17|F18|F19|F20|F21|F22|F23|F24| + * ,---. |-----------------------------------------------| ,-----------. ,-----------. + * |Esc| |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12| |PrS|ScL|Pau| |VDn|VUp|Mut| + * `---' `-----------------------------------------------' `-----------' `-----------' + * ,-----------------------------------------------------------. ,-----------. ,---------------. + * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|JPY|Bsp| |Ins|Hom|PgU| |NmL| /| *| -| + * |-----------------------------------------------------------| |-----------| |---------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | |Del|End|PgD| | 7| 8| 9| +| + * |-----------------------------------------------------------| `-----------' |---------------| + * |CapsL | A| S| D| F| G| H| J| K| L| ;| '| #|Retn| | 4| 5| 6|KP,| + * |-----------------------------------------------------------| ,---. |---------------| + * |Shft| <| Z| X| C| V| B| N| M| ,| .| /| RO|Shift | |Up | | 1| 2| 3|KP=| + * |-----------------------------------------------------------| ,-----------. |---------------| + * |Ctl|Gui|Alt|MHEN| Space |HENK|KANA|Alt|Gui|App|Ctl| |Lef|Dow|Rig| | 0 | .|Ent| + * `-----------------------------------------------------------' `-----------' `---------------' + */ + UNIMAP( + NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, + ESC, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, NUHS,BSPC, NO, NO, NO, NO, NO, NO, NO, + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, BSLS, NO, NO, NO, NO, NO, NO, NO, + LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, NO, ENT, NO, NO, NO, NO, + LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH, NO, RSFT, NO, NO, NO, NO, NO, + LCTL,LGUI,LALT,NO, SPC, NO, NO, RALT,RGUI,APP, FN0, NO, NO, NO, NO, NO, NO + ), + UNIMAP( + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, + TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, + CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP, TRNS, TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, + TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT, TRNS,PENT, TRNS,TRNS,TRNS,TRNS, + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN, TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS, + TRNS,TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, TRNS, TRNS,TRNS + ), +}; diff --git a/keyboard/alps64/unimap_trans.h b/keyboard/alps64/unimap_trans.h new file mode 100644 index 00000000..e52bd55e --- /dev/null +++ b/keyboard/alps64/unimap_trans.h @@ -0,0 +1,63 @@ +/* +Copyright 2016 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#ifndef UNIMAP_TRNAS_H +#define UNIMAP_TRNAS_H + +#include +#include +#include "unimap.h" + + +/* Mapping to Universal keyboard layout + * ,-----------------------------------------------------------. + * |` | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|JPY|Bsp| + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | + * |-----------------------------------------------------------| + * |Caps | A| S| D| F| G| H| J| K| L| ;| '|Enter | + * |-----------------------------------------------------------| + * |Shft| \| Z| X| C| V| B| N| M| ,| .| /|Shift |Esc| + * |-----------------------------------------------------------' + * |Ctrl|Gui |Alt | Space |App |Alt |Gui |Ctrl | + * `-----------------------------------------------------------' + * + * ,-----------------------------------------------------------. + * |36 |37 |46 |47 |56 |57 |66 |67 |76 |77 |06 |07 |17 |26 |27 | + * |-----------------------------------------------------------| + * |34 |35 |44 |45 |54 |55 |64 |65 |75 |05 |15 |16 |25 |24 | + * |-----------------------------------------------------------| + * |32 |33 |43 |52 |53 |63 |73 |74 |03 |04 |13 |14 | 23 | + * |-----------------------------------------------------------| + * |31 |41 |42 |51 |61 |62 |71 |72 |01 |02 |11 |12 |21 |22 | + * |-----------------------------------------------------------| + * |30 |40 |50 | 60 |70 |00 |10 |20 | + * `-----------------------------------------------------------' + */ +const uint8_t PROGMEM unimap_trans[MATRIX_ROWS][MATRIX_COLS] = { + { UNIMAP_RALT, UNIMAP_M, UNIMAP_COMM, UNIMAP_K, UNIMAP_L, UNIMAP_O, UNIMAP_0, UNIMAP_MINS }, /* 00-07 */ + { UNIMAP_RGUI, UNIMAP_DOT, UNIMAP_SLSH, UNIMAP_SCLN, UNIMAP_QUOT, UNIMAP_P, UNIMAP_LBRC, UNIMAP_EQL }, /* 10-17 */ + { UNIMAP_RCTL, UNIMAP_RSFT, UNIMAP_ESC, UNIMAP_ENT, UNIMAP_BSLS, UNIMAP_RBRC, UNIMAP_JYEN, UNIMAP_BSPC }, /* 20-27 */ + { UNIMAP_LCTL, UNIMAP_LSFT, UNIMAP_CAPS, UNIMAP_A, UNIMAP_TAB, UNIMAP_Q, UNIMAP_GRV, UNIMAP_1 }, /* 30-37 */ + { UNIMAP_LGUI, UNIMAP_NUBS, UNIMAP_Z, UNIMAP_S, UNIMAP_W, UNIMAP_E, UNIMAP_2, UNIMAP_3 }, /* 40-47 */ + { UNIMAP_LALT, UNIMAP_X, UNIMAP_D, UNIMAP_F, UNIMAP_R, UNIMAP_T, UNIMAP_4, UNIMAP_5 }, /* 50-57 */ + { UNIMAP_SPC, UNIMAP_C, UNIMAP_V, UNIMAP_G, UNIMAP_Y, UNIMAP_U, UNIMAP_6, UNIMAP_7 }, /* 60-67 */ + { UNIMAP_APP, UNIMAP_B, UNIMAP_N, UNIMAP_H, UNIMAP_J, UNIMAP_I, UNIMAP_8, UNIMAP_9 }, /* 70-77 */ +}; + +#endif + + -- 2.46.2