Christopher Browne 9 years ago
commit e32b0960af

@ -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:

@ -112,4 +112,9 @@ VPATH += $(QUANTUM_PATH)/audio
include $(TMK_PATH)/protocol/lufa.mk
include $(TMK_PATH)/common.mk
include $(TMK_PATH)/rules.mk
include $(TMK_PATH)/rules.mk
GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d")
OPT_DEFS += -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\"
OPT_DEFS += -DQMK_VERSION=\"$(GIT_VERSION)\"

@ -2,3 +2,7 @@ BOOTMAGIC_ENABLE=no
COMMAND_ENABLE=no
SLEEP_LED_ENABLE=no
UNICODE_ENABLE=no
ifndef QUANTUM_DIR
include ../../../../Makefile
endif

@ -1,1257 +0,0 @@
:100000000C941C040C9460040C9460040C94600424
:100010000C9460040C9460040C9460040C946004D0
:100020000C9460040C9460040C94DC130C94AE14D7
:100030000C9461220C9460040C9460040C94600491
:100040000C9460040C9460040C9460040C946004A0
:100050000C9460040C94C9220C9460040C94600409
:100060000C9460040C9460040C9460040C94600480
:100070000C9460040C9460040C9460040C94600470
:100080000C9460040C9460040C9460040C94600460
:100090000C9460040C9460040C9460040C94600450
:1000A0000C9460040C9460040C9460046E08AA071D
:1000B000B807BF07C907ED072708F807D807DF0704
:1000C000E5075C0862086808850788078D079007C0
:1000D0009307960799079E07A107A508AC08B308E0
:1000E000BA08C108C808C808C808C808C808C808A5
:1000F000C808C808C808C808C808E308FA08CC082F
:100100001D092F0973071B153D152B163D152B16C1
:100110008215A5152B16FA150D1683188318AF181E
:10012000AF18F21812196D1A6D1A1D196D1ACA1925
:10013000CA195E1A6D1A6D1A671AD719D719D71905
:10014000D719D719D719D719D719D719D719D7192F
:10015000D719D719D719D719D719E819F519FC19CB
:10016000031A0D1A0128022800012C022C00012A72
:10017000022A00016502650001150215010B020B40
:10018000011C021C01170217010B020B01100210C7
:100190000105020501120212011B021B012802289F
:1001A0000001060206010B020B01150215011202E5
:1001B000120110021001280228000117021701087D
:1001C0000208011502150110021001280228000181
:1001D00008020801100210010402040106020601CF
:1001E0001602160128022800011602160106020650
:1001F000011802180107020701060206010F020F8B
:100200000112021201180218010702070128022830
:100210000001040204000115021500010C020C008B
:1002200001E40119021902E40001E401E5011902E7
:100230001902E502E400011302130002E501300295
:10024000300113021301E500014C024C00010702CA
:10025000070001E40106020602E40001E401E501F1
:1002600006020602E502E400011C021C0001E40192
:100270001B021B02E40001E401E5011B021B02E575
:1002800002E400011B021B00011902190000810495
:100290008900C800220024002135002B002D00AE6B
:1002A000004A0000001C303400040033004D002CD4
:1002B000301D30360012001400510003201E30376C
:1002C0000008000D0052002A001F30130018000E15
:1002D000003302052020301C000C001B000000042D
:1002E0002065002F0000002602000002206500307B
:1002F0000000002702000003552130090007000517
:100300000000002A3022300A000B0010002D0014DB
:10031000502330060017001A0050002C002430151E
:1003200000110019004F00280025300F0016001D95
:10033000004B000120263038003100AD004E000097
:10034000000100010001000100010000001B30015C
:10035000000100010001000100173001000100014F
:10036000000100010018300100010001000100013E
:10037000001930010001000100010001001A3001E4
:100380000001000100000001000100010000000167
:100390000000000100010001000000010000000158
:1003A0000000000100010001000000010000000148
:1003B0000001000100010001000000010001000136
:1003C0000001000100000001000100010001000126
:1003D0000000000100010001000100010001000116
:1003E0000001000100010000000000000000000109
:1003F0000001000000000000000E300000010001BC
:1004000000000015300F3013300100010000000023
:1004100000103000000100010000001630113014FF
:100420003000000100000000001230000000000158
:1004300000010000000000000000000100010000B9
:1004400000000000000000000000000000000000AC
:10045000000000000000000000000000000000009C
:10046000000000000000000000010001000000008A
:10047000000000000001000100000000000000007A
:10048000000100002000000000000000000100004A
:1004900000FD00FE00FF00AE00083000001C300030
:1004A000000D300000093001001D304A0050004DA1
:1004B000000A3001001E30520051005100000006B9
:1004C000301F304B004F004E000000010020300074
:1004D000000B301B00000001000F08053000000772
:1004E00030000001000F08F9000000FA00000001D0
:1004F0000021302102070000000000F60022300138
:1005000030F2000330A900AC002330F000F1001AF3
:1005100000AA00F50024300230F3000430A800F4F3
:100520000025300C30000000000000AB00263046F3
:10053000000000AD000000000035002B002D00AED3
:10054000004A0000001C303400040033004D002B32
:10055000301D30360012001400510028301E303794
:100560000008000D00520027301F30130018000E45
:10057000002C30010020301C000C001B000000018A
:100580000029302F000000260200000100000000BA
:10059000000000000000000000000000000000005B
:1005A000000000000000000000000000000000004B
:1005B000000000000000000000000000000000003B
:1005C000000000000000000000000000000000002B
:1005D000000000000000000000000000000000001B
:1005E00000263038003100AD004E00000025300FED
:1005F0000016001D004B002A302430150011001990
:10060000004F0028302330060017001A0050002742
:100610003022300A000B0010002C3001002130097C
:10062000000700050000000100293030000000270D
:1006300002000001000000000000000000000000B7
:1006400000000000000000000000000000000000AA
:10065000000000000000000000000000000000009A
:10066000000000000000000000000000000000008A
:10067000000000000000000000000000000000007A
:100680000000000000000000001603450072006733
:10069000006F0044006F007800200045005A000001
:1006A0000016034500720067006F0044006F007879
:1006B00000200045005A0000000403090409026DEF
:1006C00000040100A0FA090400000103010100096F
:1006D0002111010001223F000705810308000A09DA
:1006E0000401000103010200092111010001224D52
:1006F000000705820308000A090402000103000044
:1007000000092111010001223600070583030800BA
:100710000A0904030001030000000921110100017E
:1007200022390007058403100001120110010000A6
:100730000008EDFE07130100010200010501090692
:10074000A101050719E029E71500250195087501A4
:100750008102050819012905950575019102950188
:100760007503910105071900297715002501957872
:1007700075018102C005010980A1018502160100F1
:1007800026B7001A01002AB700751095018100C034
:10079000050C0901A1018503160100269C021A011E
:1007A000002A9C02751095018100C005010902A173
:1007B000010901A100050919012905150025019567
:1007C0000575018102950175038101050109300953
:1007D000311581257F950275088106093815812517
:1007E0007F950175088106050C0A38021581257F61
:1007F000950175088106C0C005010906A10105071C
:1008000019E029E715002501950875018102950178
:1008100075088101050819012905950575019102E1
:100820009501750391010507190029FF150025FFA2
:10083000950675088100C00011241FBECFEFDAE0D5
:10084000DEBFCDBF04B603FE24C080914402909168
:100850004502A0914602B09147028730904BA740D5
:10086000B04BB9F410924402109245021092460225
:100870001092470214BE84B7877F84BF88E10FB609
:10088000F89480936000109260000FBEE0E0FFE3F8
:10089000099511E0A0E0B1E0EAE2FEE402C00590B3
:1008A0000D92A035B107D9F712E0A0E5B1E001C083
:1008B0001D92A434B107E1F70E9422110C94132772
:1008C0000C9400001092B9008AE08093B80008955B
:1008D00094EA9093BC009091BC0097FFFCCF90915C
:1008E000B900987F983021F0903111F081E008959F
:1008F0008093BB0084E88093BC008091BC0087FF9C
:10090000FCCF8091B900887F883111F0803471F775
:1009100080E0089584E98093BC008091BC0084FD50
:10092000FCCF08958093BB0084E88093BC00809145
:10093000BC0087FFFCCF9091B900987F81E098328E
:1009400009F480E0089584E88093BC008091BC00A5
:1009500087FFFCCF8091BB00089580910101811138
:1009600015C080E40E9468048093010181110CC0CD
:1009700082E10E94920480930101811105C08FEFF2
:100980000E949204809301010E948A0484B1807FB6
:1009900084B985B1807F85B98AB1837F8AB98BB1EB
:1009A000837F8BB93E98469808950E94680680938D
:1009B00001010E94AD0480B38C7080BB81B3836F52
:1009C00081BBA1E5B1E0EFE5F1E08EE08E0F119281
:1009D0001D928E13FCCF0C945206BF92CF92DF92E1
:1009E000EF92FF920F931F93CF93DF9380910101BA
:1009F000882379F0809150018F5F8093500181119D
:100A000008C00E94680680930101811102C00E9403
:100A1000FA0501E511E0C0E0D0E0DD24D39482E0E6
:100A2000C82EEE24E394F12CC730D10500F5809157
:100A30000101811164C080E40E9468048093010177
:100A4000811112C082E10E94920480930101811100
:100A50000BC0C7010C2E01C0880F0A94EAF78095DD
:100A60000E949204809301010E948A0448C0CA3007
:100A7000A1F028F4C83059F0C93061F005C0CC307D
:100A800089F070F0CD3089F0209A289810C0219A12
:100A900029980DC0229A2A980AC0239A2B9807C039
:100AA000529A01C0539A5B9802C03E9A469890EAC7
:100AB0009A95F1F79FB1799902C082E001C080E078
:100AC00091709D25982B7C9902C084E001C080E044
:100AD000892B7D9902C038E001C030E0832B7E99DC
:100AE00002C020E101C020E0822B9FB19095991FA8
:100AF0009927991F9295990F907E892B0FC080910D
:100B00000101811149C080E40E94680480930101C1
:100B1000882379F1B12C0E948A048B2DF8019081F1
:100B2000981719F08083C09200010E94AD042196AD
:100B30000F5F1F4FCE30D10509F076CF80910001B5
:100B4000882361F1815080930001882339F08FE977
:100B50009FE00197F1F700C0000020C0AFE5B1E0D1
:100B6000E1E5F1E0CF01825F91919D938E13FCCF7F
:100B700015C083E10E949204809301018111CACFC4
:100B800081E40E946804809301018111C3CF0E9417
:100B9000A304B82EB094BFCF80E0C0CF0E94F80568
:100BA00081E0DF91CF911F910F91FF90EF90DF9047
:100BB000CF90BF900895E82FF0E0E15AFE4F80817A
:100BC000089508950F931F93CF93DF93CFE5D1E05E
:100BD00010E00C2F025F899190E00E94C621180F4F
:100BE0000C13F9CF812FDF91CF911F910F910895B1
:100BF0000C94AF0956985E9825982D9826982E98B3
:100C000027982F988FEF90E0909389008093880029
:100C100090938B0080938A0090938D0080938C003A
:100C2000259A2D9A2FEF80E792E021508040904046
:100C3000E1F700C00000269A2E9A2FEF80E792E09D
:100C4000215080409040E1F700C00000279A2F9A81
:100C50002FEF80E792E0215080409040E1F700C004
:100C6000000025982D982FEF80E792E021508040DA
:100C70009040E1F700C0000026982E982FEF80E703
:100C800092E0215080409040E1F700C0000027989A
:100C90002F9856985E9825982D9826982E982798E4
:100CA0002F98089589EA8093800089E080938100DD
:100CB00024982C983F988AB18F748AB96E98479A75
:100CC0008BB1806B8BB9769A0E94FA050C945E0901
:100CD00080E28093010180916D0181110EC00E941C
:100CE000620481E080936D012FEF83ED90E321504A
:100CF00080409040E1F700C0000080E40E9468045A
:100D00008093010181112EC00E9492048093010101
:100D1000811128C00E94920480930101811122C098
:100D20008FE30E9492048093010181111BC00E94F5
:100D30008A0480E40E94680480930101811112C03A
:100D40008CE00E9492048093010181110BC00E94EB
:100D5000920480930101811105C08FE30E949204E7
:100D6000809301010E948A04809101010895FF92FD
:100D70000F931F93CF93DF93EB01F42EFC0182813D
:100D8000882309F458C082E00E94301FE0910E01D0
:100D9000F0910F01808181FF05C081EE0E9414183F
:100DA00011E001C010E00E947C2181FF0AC00E9476
:100DB0002220811106C081EE0E94141810E001E08B
:100DC00001C0012F0E94752186EE0E94801786EED9
:100DD0000E941418C433F2E0DF0719F485EE0E9474
:100DE00080178C2F0E9480178C2F0E9414180023CC
:100DF00041F0C43382E0D80759F085EE0E94801795
:100E000007C0C433E2E0DE0719F485EE0E9414182F
:100E10008F2D0E9480178F2D0E941418011103C07E
:100E2000C433D24019F485EE0E941418112319F02E
:100E300081EE0E94801780E090E0DF91CF911F91BA
:100E40000F91FF9008950F931F93CF93DF931F92FD
:100E5000CDB7DEB724EE260FFC018281022F10E011
:100E6000882381F00E9493229801220F331F225E73
:100E70003D4FF901918380830F90DF91CF911F91B6
:100E80000F910895C801880F991F825E9D4FFC0144
:100E90008081918169830E949F226981893C9105AB
:100EA00010F0625E05C0663211F06E5F01C06EE246
:100EB000862F69830E9480176981862F0F90DF91AA
:100EC000CF911F910F910C941418CF93DF93EC01E5
:100ED000462F50E04D32510508F0EBC1FA01EA5AB5
:100EE000FF4F0C94C3268A81882369F00E947C21DD
:100EF000882339F00E942220811103C00E947521AD
:100F0000D8C189E297C189E291C144E050E002C0B2
:100F100042E150E064E370E018C048E050E0FACFEE
:100F200048E150E0F7CF4CE050E0F4CF42E150E030
:100F300002C048E150E064E372E007C042E150E0E3
:100F400002C048E150E06EE270E0CE01DF91CF9147
:100F50000C94B7068A81882311F080EF14C080EFCB
:100F60000E944B2482EF0E944B240E94D024A1C1F6
:100F70008A81882311F080EF10C080EF15C08A812C
:100F8000882329F081EF0E94E32382EF09C081EFDB
:100F9000E7CF8A81882339F081EF0E94E32383EF32
:100FA0000E94E323E2CF81EF0E944B2483EFDBCF4B
:100FB0008A81882309F47DC110926E017AC18A81E9
:100FC000882309F476C181E005C08A81882309F469
:100FD00070C182E080936E016CC180916E018111BD
:100FE00068C18A81882309F464C188E892E063C1FA
:100FF0008A81882339F00E94932290937E01809306
:101000007D0157C180917D0190917E010E949F22B8
:1010100020916E01893C910568F0213041F008F47F
:1010200030C1223009F045C18DE692E044C186E727
:1010300092E041C1213041F008F426C1223009F08C
:1010400038C182E592E037C18BE592E034C18A81F4
:10105000882339F00E9493229093800180937F012E
:1010600028C180917F01909180010E949F22209150
:101070006E01893C910548F0222309F408C1233010
:1010800008F017C188E492E016C1213009F402C1CA
:1010900030F0223009F00DC180E292E00CC1E09105
:1010A0000E01F0910F01808185FFF7C085EE0E944F
:1010B00014188BE392E0FFC08A818111F1C00E9475
:1010C000F01EF7C08A818823D1F386E192E0F3C055
:1010D0008A818823A1F381E192E0EDC08A8188238F
:1010E00009F183EE0E9480178D81982F907F91F0F7
:1010F00080FD10C082958F7090E0029774F08AE1B5
:101100000E94801781E00E940F1F63E081E00E942F
:101110007A2003C08D818F708D8310927C01109294
:101120007B01C7C08D8182958F7090E0029734F06B
:101130008AE10E94141881E00E9491200E9493226B
:1011400090937C0180937B01B4C08A81882309F449
:10115000B0C088EE91E0AFC08A81882309F4A9C0AD
:101160008FEC91E0A8C08A81882309F4A2C08AEBA1
:1011700091E0A1C08A81882309F49BC081EA91E0B3
:101180009AC08A81882309F494C088E791E093C0CB
:10119000CE010E9423078DC08A81882339F00E94E6
:1011A000932290937A018093790183C08091790191
:1011B00090917A010E949F22893C910508F07FCF8F
:1011C00083E791E078C08A81882339F00E949322D6
:1011D00090937801809377016CC080917701909112
:1011E00078010E949F22893C910508F05CC089E645
:1011F00091E061C08A81882339F00E949322909304
:1012000076018093750155C08091750190917601AA
:101210000E949F22893C910508F448C0E0910E018C
:10122000F0910F01808181FF04C081EE0E941418AB
:1012300040C081EE0E9480173CC08A818823C9F19A
:1012400084E00E94FA1E81E0809374010E94932240
:101250009093730180937201259A2D9A2AC08A81F6
:10126000882339F185E00E94FA1E81E080937101A4
:101270000E9493229093700180936F01279A2F9A76
:1012800018C083E892E017C088E692E014C08DE4AD
:1012900092E011C089E292E00EC086E392E00BC0BA
:1012A0008BE192E008C08EE691E005C084E691E013
:1012B00002C080E090E0DF91CF9108958FE090E050
:1012C000909389008093880090938B0080938A008C
:1012D00090938D0080938C00569A5E9A259A2D9A51
:1012E000269A2E9A279A2F9A2FEF83ED90E321507A
:1012F00080409040E1F700C0000056985E98259825
:101300002D9826982E9827982F98089584EE0E945D
:10131000801785EE0E94801788E10E94801788E17F
:101320000E94141885EE0E94141884EE0C94141870
:101330000F931F93CF93DF93EC018E0188819981E6
:10134000009741F00E9480172296F80180810E9448
:101350001418F3CFDF91CF911F910F9108951F9330
:10136000CF93DF93CDB7DEB76A970FB6F894DEBFA1
:101370000FBECDBF6091EC017091ED018091EE0147
:101380009091EF010E94D221182F80917B019091C2
:101390007C01009741F00E949F22893C910518F042
:1013A00083EE0E941418143049F410927101123027
:1013B00051F4269A2E9A279A2F9A0BC010927401F4
:1013C000153099F706C0133021F4259A2D9A269AE4
:1013D0002E9A8CEF810F823008F050C0269A2E9AF8
:1013E00080917401882319F18091720190917301A9
:1013F0000E949F22853F914048F0E0910E01F091BC
:101400000F01808181FD02C025982D988091720185
:10141000909173010E949F22893E934040F0259A4B
:101420002D9A0E9493229093730180937201809170
:101430007101882319F180916F01909170010E94D0
:101440009F22853F914048F0E0910E01F0910F01FD
:10145000808180FD02C027982F9880916F01909124
:1014600070010E949F22893E934040F0279A2F9A54
:101470000E9493229093700180936F01E0910E017E
:10148000F0910F01808181FF09C08FEF90E0909370
:10149000890080938800259A2D9A14C00E947C218F
:1014A00081FF04C00E942220882379F38FE090E01E
:1014B00090938900809388008DEF810F823010F027
:1014C00025982D98E0910E01F0910F01808182FF07
:1014D00009C08FEF90E090938B0080938A00269A4A
:1014E0002E9A14C00E947C2182FF04C00E942220F8
:1014F000882379F38FE090E090938B0080938A00AB
:101500008EEF810F843010F026982E98E0910E0116
:10151000F0910F01808180FF09C08FEF90E09093E0
:101520008D0080938C00279A2F9A14C00E947C21F2
:1015300080FF04C00E942220882379F38FE090E08E
:1015400090938D0080938C00153021F0123011F0B3
:1015500027982F9880918C01882309F410C18091DD
:101560008A0190918B010E949F22893E934008F44A
:1015700006C110928C010E94D00B80918401909141
:101580008501489771F48091860190918701892B9C
:1015900041F48091880190918901892B11F40E9476
:1015A000860980918401909185010F97D9F48091EB
:1015B000860190918701892BA9F4809188019091EF
:1015C0008901892B79F40E9486098CE0E5E1F1E03C
:1015D000DE01119601900D928A95E1F7CE010196F8
:1015E0000E9498098091840190918501469709F0A5
:1015F00086C08091860190918701892B09F07FC078
:101600008091880190918901892B09F078C00E940E
:10161000860984E00E94801784E00E94141889E003
:101620000E94801789E00E9414188CE20E948017A3
:101630008CE20E94141881E30E94801781E30E94CB
:10164000141885EE0E9480178DE20E9480178DE2AB
:101650000E94141886E20E94801786E20E941418E5
:1016600085EE0E9414180E94860980E20E9480176D
:1016700080E20E94141887E20E94801787E20E948D
:10168000141886E00E94801786E00E94141881E2F8
:101690000E94801781E20E9414188CE20E94801739
:1016A0008CE20E94141885EE0E94801787E20E9447
:1016B000801787E20E9414188DE20E9480178DE245
:1016C0000E94141885EE0E94141888E30E94801767
:1016D00088E30E9414180E94860984E00E94801703
:1016E00084E00E94141889E00E94801789E00E941B
:1016F00014188CE20E9480178CE20E9414188091CA
:101700008401909185014A97D1F58091860190914D
:1017100087014097A1F58091880190918901892BDB
:1017200071F582EE0E9480178BE30E9480178BE395
:101730000E94141882EE0E9414188FEF93ED20E39C
:10174000815090402040E1F700C000008AE1E1E2D2
:10175000F1E0DE01119601900D928A95E1F7CE013C
:1017600001960E94980983EE0E94801782E50E94EC
:10177000801782E50E94141883EE0E9414186A965E
:101780000FB6F894DEBF0FBECDBFDF91CF911F9192
:10179000089581E0089581E008950C94CB0B08959D
:1017A00008950F931F93CF93DF938C01FC01C081A9
:1017B000D181CE010E94CB1FBE010E94760CEC01AC
:1017C000B8010E94CD0B882309F489C0F8018281F9
:1017D000882309F446C080918C0181111FC0C43157
:1017E000F0E5DF0709F04DC00E94CF0B81E0809348
:1017F0008C010E94932290938B0180938A01109216
:101800008301109285011092840110928701109239
:101810008601109289011092880161C080918A012D
:1018200090918B010E949F22883E934070F480919A
:101830008301E82FF0E0EE0FFF1FEC57FE4FD1833E
:10184000C0838F5F809383014AC0C43880E5D80786
:10185000B9F5F8018281882341F01092810182E07C
:101860001EC0C43880E5D80759F5809181018111E7
:1018700006C086E20E94801786E20E94141882E069
:101880001CC0C438F0E5DF0741F3C538D045D9F4B2
:10189000F8018281882331F01092820180E20E9457
:1018A0003C181DC080918201811106C087E20E9410
:1018B000801787E20E94141880E20E9443180FC02C
:1018C000C538D04529F381E080938101809382015E
:1018D000C801DF91CF911F910F910C94C90B80E04B
:1018E000DF91CF911F910F910895089596E0799F10
:1018F000F001112494E5899FE00DF11D1124E60FFC
:10190000F11DEE0FFF1FE756FD4F8591949108954D
:10191000880F991FFC01E35FFE4F85919491089514
:10192000880F991FFC01E357FD4F8591949108950D
:101930000F931F93CF93DF93EC01811520E3920760
:1019400050F5C11580E2D80708F0C3C0CB3BD105E4
:1019500090F4C83AD10508F06AC0C53AD10508F03C
:101960005BC0C430D10508F0D0C1219709F0CAC1CD
:1019700001E010E00AC2CF3FD10511F008F0C5C167
:10198000C03FD10508F0A2C0CE01805E9109089742
:1019900008F4BBC1B7C1C13090E5D90709F4A2C0B2
:1019A00020F5C0318FE4D80770F4C11590E4D90751
:1019B00008F094C0C11521E3D20708F0A3C1DD27C8
:1019C0008E01106CE2C1C115D04509F09BC10E9487
:1019D000D21A8FEF94E32CE0815090402040E1F741
:1019E00000C000000E94EE22D0C1C11597E5D907C2
:1019F00058F4C03121E5D20708F01CC1C43180E59C
:101A0000D80708F475C07EC1CE019057811590416A
:101A100008F078C1DF7073C1C53AD10509F477C108
:101A2000C63AD10509F076C102E810E4AEC1C83A61
:101A3000D10509F472C1C93AD10509F471C1CA3A94
:101A4000D10509F470C1CB3AD10509F46FC1CC3A84
:101A5000D10509F46EC1CD3AD10509F46DC1C03B81
:101A6000D10509F46CC1CE3AD10509F46BC1CF3A66
:101A7000D10509F46AC1C13BD10509F469C1C23B72
:101A8000D10509F468C1C33BD10509F467C1C43B62
:101A9000D10509F466C1C53BD10509F465C1C63B52
:101AA000D10509F464C1C73BD10509F463C1C83B42
:101AB000D10509F462C1C93BD10509F461C1CA3B32
:101AC000D10509F460C100E014E45FC18E01106526
:101AD0005CC1CE019F700E94900C58C1DF708E01D6
:101AE000106A53C180910E02816080930E024DC135
:101AF0000E944523811102C00E942B230E9458237B
:101B000090E09093440280934302C23080E5D8076E
:101B100021F480914302816086C0C43090E5D907EA
:101B200021F48091430282607EC0C63020E5D20756
:101B300021F480914302846076C0C83080E5D807E4
:101B400019F48091430227C0CA3090E5D90721F4E7
:101B500080914302806167C0CC3020E5D20721F438
:101B60008091430280625FC0CE3080E5D80721F4C7
:101B700080914302806457C0C03190E5D90721F4B9
:101B80008091430280684FC0C23120E5D20729F41A
:101B9000809143028460886046C0C33080E5D807E6
:101BA00021F4809143028E7F3EC0C53090E5D90775
:101BB00021F4809143028D7F36C0C73020E5D207E3
:101BC00021F4809143028B7F2EC0C93080E5D80775
:101BD00019F48091430226C0CB3090E5D90721F457
:101BE000809143028F7E1FC0CD3020E5D20721F4C3
:101BF000809143028F7D17C0CF3080E5D80721F454
:101C0000809143028F7B0FC0C13190E5D90721F449
:101C1000809143028F7707C0C331D04531F4809162
:101C200043028B7F877F80934302809143020E940F
:101C30005C23ABC08D2F99278F7099278130910538
:101C4000D9F49E012370332702C0880F991F2A956B
:101C5000E2F79C688E0144E0000F111F4A95E1F7FE
:101C600000271370802B912B53E0CC0FDD1F5A956A
:101C7000E1F7C076DD272FC08230910531F4DC2FEB
:101C8000CC278E01016F106A80C08330910569F402
:101C9000CE018370992701E010E002C0000F111FF0
:101CA0008A95E2F7C8019C680FC084309105B9F4A9
:101CB000CE018370992701E010E002C0000F111FD0
:101CC0008A95E2F7C8019A6823E0CC0FDD1F2A95B8
:101CD000E1F7C07ED7708C010C2B1D2B56C08530D0
:101CE000910531F4DC2FCC278E01046F106A4DC0B2
:101CF000069709F04AC0CF71DD27DC2FCC278E0173
:101D0000106243C000E010E040C08E013EC001E818
:101D100010E43BC003E810E438C002EE14E435C020
:101D200009EE14E432C00AEE14E42FC005EB14E40B
:101D30002CC006EB14E429C007EB14E426C00CEC1D
:101D400014E423C00DEC14E420C003E815E41DC026
:101D50000AE815E41AC002E915E417C004E915E41D
:101D600014C001E216E411C003E216E40EC004E25E
:101D700016E40BC005E216E408C006E216E405C04E
:101D800007E216E402C00AE216E4C801DF91CF912F
:101D90001F910F91089596E0799FF001112494E529
:101DA000899FE00DF11D1124E60FF11DEE0FFF1FBD
:101DB000E756FD4F85919491803E9105E0F4803C7B
:101DC000910558F58133910509F46FC048F48932C3
:101DD000910509F463C08A32910509F46DC072C09F
:101DE00089339105E9F082389105D1F08533910569
:101DF00009F44DC067C0833E910581F138F4803EFF
:101E00009105B9F0823E9105D9F05CC0863E9105FE
:101E100061F1873E9105A1F155C00E94880C08959B
:101E20002091430220FD02C021FF4CC080EE90E0D3
:101E300049C08091430280FFF9CF89E390E042C01E
:101E40008091430282FF0EC08091430284FF03C051
:101E500080E090E037C083EE90E034C08091430290
:101E600082FFF2CF82EE90E02DC08091430283FF8B
:101E70000BC08091430284FDEBCF87EE90E022C03F
:101E80008091430283FFF5CF86EE90E01BC08091E6
:101E9000430285FF07C089E290E014C080914302AD
:101EA00085FFF9CF85E390E00DC08091430286FF66
:101EB00007C08AE290E006C08091430286FFF9CF16
:101EC00081E390E00E94980C089508950C94650FAA
:101ED00080919D010895CF93DF9300D01F92CDB7DD
:101EE000DEB79C0180913A02843019F593E0998322
:101EF0003B832A839093E9008FEF9091E800815013
:101F000095FD06C095ED9A95F1F700008111F5CF8A
:101F10008091E80085FF0DC040E050E063E070E094
:101F2000CE0101960E94CC118091E8008E778093BB
:101F3000E8000F900F900F90DF91CF910895CF930D
:101F4000DF9300D01F92CDB7DEB720913A02243044
:101F500021F522E029839B838A8383E08093E90033
:101F60008FEF9091E800815095FD06C095ED9A9510
:101F7000F1F700008111F5CF8091E80085FF0DC0D9
:101F800040E050E063E070E0CE0101960E94CC1189
:101F90008091E8008E778093E8000F900F900F906B
:101FA000DF91CF91089520913A022430F1F422E09C
:101FB0002093E9002FEF3091E800215035FD06C055
:101FC00035ED3A95F1F700002111F5CF2091E800A9
:101FD00025FF0BC040E050E065E070E00E94CC11AE
:101FE0008091E8008E778093E8000895CF93DF9387
:101FF000EC0190913A02943009F046C080910C01B6
:102000008823D9F080910D018823B9F09093E900DD
:102010008FEF9091E800815095FD06C095E19A956B
:10202000F1F700008111F5CF8091E80085FF2CC009
:1020300040E050E060E170E017C081E08093E9008B
:102040008FEF9091E800815095FD06C095ED9A952F
:10205000F1F700008111F5CF8091E80085FF14C0F1
:1020600040E050E068E070E0CE010E94CC11809129
:10207000E8008E778093E80080E1FE01ADE8B1E0F2
:1020800001900D928A95E1F7DF91CF9108958091AB
:102090003902811109C00E9461130E94BE13809110
:1020A000E20084608093E20008951092390208955E
:1020B000089508950C945B2242E061EC81E00E9457
:1020C000DB1242E061EC82E00E94DB1242E061EC54
:1020D00083E00E94DB1242E161EC84E00C94DB12AD
:1020E00080913C02833009F455C030F4813071F0A6
:1020F000823009F48EC008958A3009F47AC08B309A
:1021000009F460C0893009F09CC020C080913B0276
:10211000813A09F096C08091E800877F8093E800BB
:1021200080913F0290914002892B21F460E18DE87B
:1021300091E003C060E080E090E070E00E94171240
:102140008091E8008B778093E800089580913B02AE
:10215000813209F076C080913F0290914002009751
:1021600019F0039709F06DC08091E800877F809394
:10217000E8008091E80082FD05C080913A0281115B
:10218000F8CF5FC08091F10080939D018091E800BD
:102190008B7753C080913B02813A09F052C0809105
:1021A0003F0290914002892B09F04BC08091E800DA
:1021B000877F8093E8008091E80080FFFCCF8091CA
:1021C0000C0136C080913B028132D9F580913F02EB
:1021D00090914002892BA9F58091E800877F809338
:1021E000E8000E94101380913D0280930C010C9432
:1021F000D21A80913B02813221F58091E800877FDD
:102200008093E8000E94101380913E0280939E010B
:10221000089580913B02813AA1F48091E800877F84
:102220008093E8008091E80080FFFCCF80919E01C0
:102230008093F1008091E8008E778093E8000C9401
:102240001013089584B7877F84BF88E10FB6F89490
:1022500080936000109260000FBE90E080E80FB69F
:10226000F89480936100909361000FBE0E94B316B2
:102270000E9461130E94BE138091E20084608093EB
:10228000E20078940E9444160E94B51682E091E024
:102290000E945F1680913A02853069F40E942222E2
:1022A000809138028823B1F30E944D22882391F354
:1022B0000E94B611EFCF0E94BB16ECCF292F332717
:1022C00023303105C9F064F42130310581F022302A
:1022D000310509F043C08DE690E02DEB36E042C0B9
:1022E00021323105F1F02232310541F137C082E16E
:1022F00090E02AE237E036C099278130910541F01D
:102300008230910541F0892B49F5E9EBF6E005C0F3
:10231000E1EAF6E002C0E9E8F6E0849190E09F018E
:1023200021C06430D8F4E62FF0E0EE0FFF1FE95B28
:10233000FE4F2081318189E090E014C0643070F458
:1023400070E0FB01EE0FFF1FE15CFE4F2081318149
:10235000FB01E55CFE4F808190E004C080E090E0EE
:1023600020E030E0FA0131832083089580E189BDC7
:1023700082E189BD09B400FEFDCF8091D8008F7D38
:102380008093D8008091E00082608093E00080918B
:10239000E00081FDFCCF0895CF92DF92EF92FF9293
:1023A0000F931F93CF93DF93EC018B016A010E947F
:1023B0002F13811133C0C114D10439F0F60180818B
:1023C0009181081B190BC80FD91FE12CF12C0115A5
:1023D000110519F18091E80085FD16C08091E80093
:1023E0008E778093E800C114D10449F0F601808112
:1023F0009181E80EF91EF182E08285E00FC00E9413
:102400002F13882321F30AC089918093F100015092
:102410001109FFEFEF1AFF0ADACF80E0DF91CF91C9
:102420001F910F91FF90EF90DF90CF900895209132
:102430004102309142022617370748F061157105B5
:1024400039F42091E8002E772093E80001C0B9010B
:1024500040E061157105A9F120913A02222309F4A7
:1024600043C0253009F442C02091E80023FD40C05C
:102470002091E80022FD32C02091E80020FFE9CF42
:102480004091F3002091F20030E0342BFC01CF01A9
:102490006115710559F02830310540F48191809320
:1024A000F100615071092F5F3F4FF1CF41E02830BB
:1024B000310509F040E02091E8002E772093E800F4
:1024C000C8CF4111C9CF0AC080913A02882361F078
:1024D000853061F08091E80083FD0AC08091E800BA
:1024E00082FFF2CF80E0089582E0089583E00895AE
:1024F00081E008952091410230914202261737076A
:1025000048F06115710539F42091E8002E77209389
:10251000E80001C0B901FC0120E06115710591F1ED
:1025200080913A02882309F440C0853009F43FC005
:102530008091E80083FD3DC08091E80082FD2FC0BE
:102540008091E80080FFE9CF2091F3008091F200B4
:1025500090E0922B6115710559F08830910540F497
:1025600024912093F1003196615071090196F2CFC8
:1025700021E0089709F020E08091E8008E778093B1
:10258000E800CBCF2111CCCF0AC080913A0288233A
:1025900061F0853061F08091E80083FD0AC0809190
:1025A000E80082FFF2CF80E0089582E0089583E0A2
:1025B000089581E00895982F973058F59093E90099
:1025C000981739F07091EC002091ED005091F000D7
:1025D00003C0242F762F50E021FF19C03091EB006B
:1025E0003E7F3093EB003091ED003D7F3093ED0066
:1025F0003091EB0031603093EB007093EC0020934E
:10260000ED005093F0002091EE0027FF07C09F5F80
:10261000D3CF8F708093E90081E0089580E0089522
:1026200080913B0287FF11C08091E80082FD05C0C8
:1026300080913A028111F8CF11C08091E8008B7728
:102640000BC080913A02882349F08091E80080FF16
:10265000F8CF8091E8008E778093E800089520916C
:10266000E4003091E50095E64091EC00842F817004
:1026700040FF22C08091E80080FD1CC080913A029A
:10268000882391F0853091F08091EB0085FD10C09A
:102690004091E4005091E5004217530729F39A0155
:1026A000915011F784E0089582E0089583E0089541
:1026B00081E0089580E008954091E80042FFDECF78
:1026C00008950E94CF130E94D713E0EEF0E08081BE
:1026D00081608083E8EDF0E080818F77808319BC92
:1026E000A7EDB0E08C918E7F8C9380818F7E80836C
:1026F0001092390208950F931F93CF93DF930E9496
:10270000CF130E94D713C8EDD0E088818F778883DC
:1027100088818068888388818F7D888319BC109226
:102720003A0210923602109238021092370200EEEE
:1027300010E0F80180818B7F8083888181608883AD
:1027400042E060E080E00E94DB12E1EEF0E0808198
:102750008E7F8083E2EEF0E08081816080838081E3
:1027600088608083F80180818E7F8083888180618A
:102770008883DF91CF911F910F910895E8EDF0E0EC
:1027800080818F7E8083E7EDF0E0808181608083AF
:1027900084E082BF81E0809339020C947B13E8EDE2
:1027A000F0E080818E7F80831092E2000895109285
:1027B000DA001092E10008951F920F920FB60F9267
:1027C00011242F933F934F935F936F937F938F9336
:1027D0009F93AF93BF93EF93FF938091E10082FFAC
:1027E0000BC08091E20082FF07C08091E1008B7FE7
:1027F0008093E1000E9443168091DA0080FF1FC0A1
:102800008091D80080FF1BC08091DA008E7F80937A
:10281000DA008091D90080FF0DC080E189BD82E19E
:1028200089BD09B400FEFDCF81E080933A020E9489
:10283000471005C019BC10923A020E9455108091B1
:10284000E10080FF19C08091E20080FF15C08091F7
:10285000E2008E7F8093E2008091E20080618093AD
:10286000E2008091D80080628093D80019BC85E096
:1028700080933A020E9459108091E10084FF30C099
:102880008091E20084FF2CC080E189BD82E189BD96
:1028900009B400FEFDCF8091D8008F7D8093D800D1
:1028A0008091E1008F7E8093E1008091E2008F7E35
:1028B0008093E2008091E20081608093E200809149
:1028C0003602882311F084E007C08091E30087FD81
:1028D00002C081E001C083E080933A020E945A1056
:1028E0008091E10083FF29C08091E20083FF25C031
:1028F0008091E100877F8093E10082E080933A023B
:10290000109236028091E1008E7F8093E1008091E9
:10291000E2008E7F8093E2008091E20080618093EC
:10292000E20042E060E080E00E94DB128091F00073
:1029300088608093F0000E945810FF91EF91BF9142
:10294000AF919F918F917F916F915F914F913F9147
:102950002F910F900FBE0F901F9018951F920F92FE
:102960000FB60F9211242F933F934F935F936F9362
:102970007F938F939F93AF93BF93CF93DF93EF9307
:10298000FF93C091E900CF708091EC00D82FD170F7
:1029900080FDD0E81092E9008091F000877F80935D
:1029A000F00078940E94F2141092E9008091F000F7
:1029B00088608093F000CD2BCF70C093E900FF9129
:1029C000EF91DF91CF91BF91AF919F918F917F91C7
:1029D0006F915F914F913F912F910F900FBE0F908C
:1029E0001F9018951F93CF93DF93CDB7DEB7AA97AB
:1029F0000FB6F894DEBF0FBECDBFEBE3F2E088E088
:102A00008E0F9091F10091938E13FBCF0E94701066
:102A10008091E80083FF1FC180913B0290913C02AE
:102A2000492F50E04A30510508F015C1FA01ED5721
:102A3000FF4F0C94C326803881F0823809F00BC117
:102A400080913F028F708093E9008091EB0085FBBD
:102A5000882780F91092E90006C080913702909192
:102A60003802911182609091E800977F9093E8007E
:102A70008093F1001092F100C8C0282F2D7F09F03B
:102A8000EAC0882319F0823061F0E5C080913D02F0
:102A9000813009F0E0C0933009F080E08093380283
:102AA0002BC080913D02811127C080913F028F7021
:102AB00009F4D1C08093E9002091EB0020FF1CC0F5
:102AC000933021F48091EB00806214C09091EB0070
:102AD00090619093EB0021E030E0A90102C0440F27
:102AE000551F8A95E2F74093EA001092EA00809120
:102AF000EB0088608093EB001092E9008091E80081
:102B0000877F86C08111A7C010913D021F778091F9
:102B1000E3008078812B8093E3008091E800877F39
:102B20008093E8000E9410138091E80080FFFCCFA2
:102B30008091E30080688093E300111102C082E07D
:102B400001C083E080933A0286C08058823008F04A
:102B500082C080913D0290913E028C3D53E09507EA
:102B600079F583E08A838AE289834FB7F894DE019E
:102B7000139620E03EE051E2E32FF0E0509357003F
:102B8000E49120FF03C0E295EF703F5FEF708E2F5E
:102B900090E0EA3010F0C79601C0C0968D939D93E7
:102BA0002F5F243149F74FBF8091E800877F8093E2
:102BB000E8006AE270E0CE0101960E94171214C08C
:102BC000AE014F5F5F4F60913F020E945E11BC01FA
:102BD000009709F440C09091E800977F9093E80037
:102BE00089819A810E947A128091E8008B77809384
:102BF000E80031C0803879F58091E800877F8093C4
:102C0000E800809136028093F1008091E8008E7791
:102C10008093E8000E9410131EC081111CC0909187
:102C20003D029230C0F48091E800877F8093E800F5
:102C3000909336020E94101380913602811106C0D3
:102C40008091E30087FD02C081E001C084E08093B1
:102C50003A020E945C108091E80083FF0AC08091D4
:102C6000E800877F8093E8008091EB00806280938A
:102C7000EB00AA960FB6F894DEBF0FBECDBFDF9172
:102C8000CF911F9108950895CF9380913A028823A0
:102C9000A1F0C091E900CF709091EC00892F817074
:102CA00090FD80E8C82B1092E9008091E80083FD38
:102CB0000E94F214CF70C093E900CF9108959093D1
:102CC000A4018093A3010895E091A301F091A401D0
:102CD000309721F00190F081E02D099480E0089573
:102CE000E091A301F091A401309721F00280F381DB
:102CF000E02D09940895E091A301F091A40130978B
:102D000021F00480F581E02D099408952091A1011E
:102D10003091A2018217930771F09093A2018093E2
:102D2000A101E091A301F091A401309721F0068068
:102D3000F781E02D0994089520919F013091A00121
:102D40008217930771F09093A00180939F01E09107
:102D5000A301F091A401309721F00084F185E02DCA
:102D60000994089508950C94B2160E948A220E9434
:102D7000D5040C9410239F92AF92BF92CF92DF9212
:102D8000EF92FF920F931F93CF93DF9300D000D069
:102D900000D0CDB7DEB70E94ED040DE010E0AA240C
:102DA000A394B12C902E802F0E94DB0598012A5508
:102DB0003E4F6901F901F080F826A1F40150110994
:102DC00088F78FEF89838A831B820E949322816018
:102DD000782F9D838C8349815A816B818D810E94DC
:102DE00052172FC090910E0291FF04C08E830E9453
:102DF000E1058E8125E030E0A501022E01C0440FDF
:102E00000A94EAF7E42E4F21C1F029839A828E2199
:102E100091E009F490E09B830E9493228160782FD7
:102E20009D838C8349815A816B818D810E945217C9
:102E3000F6018081E826E08204C021503109E0F6E5
:102E4000BDCF0E94DB241091A5010E9464161817C3
:102E5000B9F00E9464168093A50126960FB6F894E7
:102E6000DEBF0FBECDBFDF91CF911F910F91FF90BD
:102E7000EF90DF90CF90BF90AF909F900C94660F33
:102E800026960FB6F894DEBF0FBECDBFDF91CF916F
:102E90001F910F91FF90EF90DF90CF90BF90AF9078
:102EA0009F900895CF93DF93CDB7DEB72B970FB6E2
:102EB000F894DEBF0FBECDBF4F83588769877A87EE
:102EC0008B87DE01119686E0FD0111928A95E9F764
:102ED00085E0FE01379601900D928A95E1F74981D0
:102EE0005A816B817C818D819E810E94701D2B9601
:102EF0000FB6F894DEBF0FBECDBFDF91CF9108951E
:102F0000882309F490C09CEF980F913A18F40E941E
:102F1000B3200DC090E2980F983058F4877091E07C
:102F200001C0990F8A95EAF7892F0E943C210C94E1
:102F300090219BE5980F933070F4853A29F0863AFA
:102F400031F083E890E005C081E890E002C082E8BB
:102F500090E00C94861698E5980F933108F063C0C2
:102F6000883A39F1893A41F18A3A49F18B3A51F17B
:102F70008C3A59F18D3A61F1803B69F18E3A71F1E9
:102F80008F3A79F1813B81F1823B89F1833B91F169
:102F9000843B99F1853BA1F1863BA9F1873BB1F1D7
:102FA000883BB9F1893BC1F18A3BC9F180E090E0EF
:102FB00038C082EE90E035C089EE90E032C08AEEF3
:102FC00090E02FC085EB90E02CC086EB90E029C00C
:102FD00087EB90E026C08CEC90E023C08DEC90E075
:102FE00020C083E891E01DC08AE891E01AC082E920
:102FF00091E017C084E991E014C081E292E011C031
:1030000083E292E00EC084E292E00BC085E292E09F
:1030100008C086E292E005C087E292E002C08AE240
:1030200092E00C949C160895882329F19CEF980F48
:10303000913A18F40E94F5200DC090E2980F983054
:1030400058F4877091E001C0990F8A95EAF7892FAB
:103050000E9442210C9490219BE5980F933020F41C
:1030600080E090E00C948616885A833120F480E04A
:1030700090E00C949C160895882321F00E943C2136
:103080000C9490210895882321F00E9442210C94F1
:10309000902108958F929F92AF92BF92DF92EF920C
:1030A000FF920F931F93CF93DF937C01D62FC72FEF
:1030B000FC010281158112951F700E944F20882308
:1030C00019F082E00E94912001110E9459210E9472
:1030D000AC20882379F0002369F080E28D0F8830DE
:1030E00048F082E00E9491200E94AC2091E0D82E0E
:1030F000D92601C0D12CEC2FE295EF70F0E0E35718
:10310000FF4F0C94C3268C2F807FCF70882311F043
:10311000C295C07F002389F0CC2309F4C4C180E2AA
:103120008D0F883020F48C2F0E943C2103C08C2FFF
:103130000E944C210E949021B6C18D2F0E9414182C
:10314000CC2309F4CAC1D05E8C2FD83018F40E9469
:10315000422102C00E9452210E949021BEC18C2FA8
:10316000807FCF70803211F0C295C07FDD2319F0CF
:10317000D13029F12DC0002381F0112369F11130E4
:1031800021F48C2F0E946C21A8C1123029F50E94D5
:1031900075218C2F0E941C201FC0112369F0113053
:1031A00041F40E9439218C2309F497C10E941F2009
:1031B00003C0123009F491C10E94752111C000238F
:1031C00021F0123008F089C107C0111186C108C072
:1031D000002321F0111167C18C2FF1C011116AC1B8
:1031E0008C2FF3C08C2F86958695837090E0009786
:1031F00019F0019761F071C1002321F08D2F9C2FF0
:10320000937002C080E090E00E94861666C10023A1
:1032100021F08D2F9C2F937002C080E090E00E94DF
:103220009C165BC18D2F002319F00E94E32302C07E
:103230000E944B240E94D02450C18C2F837009F02F
:1032400050C001114AC18D2F829586958770880FD5
:10325000880F9D2F9F70892E912CA12CB12C082EA8
:1032600004C0880C991CAA1CBB1C0A94D2F7D4FF7A
:1032700014C00FE010E020E030E0B901A80104C064
:10328000440F551F661F771F8A95D2F7CB01BA01ED
:10329000609570958095909503C060E070E0CB01DB
:1032A000C695C695C370D0E0C230D10561F0C33079
:1032B000D10581F0682979298A299B29219771F004
:1032C0000E94B81E0AC1682979298A299B290E946F
:1032D000D41E03C10E94B81EC501B4010E949C1EE9
:1032E000FCC0002319F08C2F817001C086958823C3
:1032F00009F4F3C08D2F829586958770880F880F0B
:103300009D2F9F70892E912CA12CB12C082E04C0CA
:10331000880C991CAA1CBB1C0A94D2F7D4FF14C0B9
:103320000FE010E020E030E0B901A80104C0440F34
:10333000551F661F771F8A95D2F7CB01BA0160959A
:1033400070958095909503C060E070E0CB01C695C4
:10335000C695C3704C2F50E04230510569F04330A0
:10336000510589F0682979298A299B29413051051D
:1033700071F00E94921FB1C0682979298A299B297E
:103380000E94AE1FAAC00E94921FC501B4010E94F4
:10339000761FA3C08D2F90E0FC01E05EF109E531BE
:1033A000F10508F07BC0E356FF4F0C94C326DF7095
:1033B0008C2F8F71002331F00E940F1F8D2F0E94E0
:1033C0003C188BC00E94301F8D2F0E94431885C06F
:1033D000002339F0111181C08C2F8F710E94551F6D
:1033E0007CC0123008F079C0F7CF002339F08C2F61
:1033F0008F710E940F1F71C00023C9F38C2F8F7132
:103400000E94301F6AC0002329F08C2F8F710E9408
:10341000FA1E63C00E94F01E60C00023B9F00E9433
:1034200019200E9442210E944B20843029F40E94DE
:103430008A208C2F8F7162C0123008F06CC0CF715F
:103440008C2F0E940F1F63E08C2F0DC00E9419204B
:103450000E943C211230A0F00E948A200E941F206E
:1034600064E08C2F8F71DF91CF911F910F91FF90AE
:10347000EF90DF90BF90AF909F908F900C947A2048
:1034800081E0DF91CF911F910F91FF90EF90DF903E
:10349000BF90AF909F908F900C949120002339F0B3
:1034A000112309F4A4CF8D2F0E94801716C0112379
:1034B00009F4A4CF8D2F0E9414180FC04C2F4F7009
:1034C0006D2FC7010E9465070E94141E06C04C2F75
:1034D0004F706D2FC7010E94750CDD20E1F00E9436
:1034E0004B2080FD18C0F70112820E9445200E94E7
:1034F0000F1FC7010E94971A0E944520DF91CF91AC
:103500001F910F91FF90EF90DF90BF90AF909F9031
:103510008F900C94301FDF91CF911F910F91FF90EE
:10352000EF90DF90BF90AF909F908F9008950F9392
:103530001F93CF93DF93EC01888199812B813C818C
:10354000232BB9F09F3F11F48F3F99F0CE010E94D9
:10355000D10B882371F0688179818A810E941520BE
:103560008C010E94CA1F0E94911EB801CE010E94C8
:103570004A18DF91CF911F910F9108950E94592110
:103580000E9469210E942B210E9490210E94812586
:103590000E94D02480E090E00E94861680E090E0B7
:1035A0000C949C160E9449210C94BE1A0E940A2079
:1035B000292F22952F7030E02C3031054CF42A3021
:1035C00031056CF42250310922303105A8F407C0CE
:1035D0002C30310569F02F30310551F00DC0803F9E
:1035E00069F018F4803E40F409C0843F29F406C015
:1035F00093FB882780F9089580E0089581E008957D
:10360000CF93DF9300D000D01F92CDB7DEB70F90DD
:103610000F900F900F900F90DF91CF910895CF935F
:10362000DF9300D000D000D0CDB7DEB726960FB61E
:10363000F894DEBF0FBECDBFDF91CF9108951F93E9
:10364000CF93DF93C091B40116E08091B501C81704
:1036500099F0D0E01C9FF0011D9FF00D1124EA5459
:10366000FE4F4081518162817381848195810E94E6
:103670000F1B2196C770E9CFDF91CF911F9108955D
:103680004091E6015091E7016091E8017091E901F4
:103690008091EA019091EB010C940F1B8091EB015A
:1036A00082958F7009F054C08091E801882309F455
:1036B0004FC08091B401A091B5016091E601709175
:1036C000E7014091E9015091EA01B6E08A1709F457
:1036D0003FC090E041155105C1F17F3F11F46F3FAC
:1036E000A1F1B89FF001B99FF00D1124EA54FE4FEB
:1036F000218172132AC02081621327C022812111E7
:1037000024C0238134812417350710F42150310956
:10371000241B350B283C3105C0F42091EB012F70A0
:1037200020612093EB0126E0289FF001299FF00DF6
:103730001124E554FE4F80818F708061808386EE76
:1037400091E00E94971A0C941F1B01968770BECFC0
:103750000895CF92DF92EF92FF920F931F93CF9332
:10376000DF93CDB7DEB762970FB6F894DEBF0FBE1A
:10377000CDBF8C0185E0F801DE011D9601900D9210
:103780008A95E1F7D8014C9111965C9111971296A8
:103790006C9112971396CD90DC9014973091E601BE
:1037A0007091E7018091E9019091EA01009709F495
:1037B0006BC17F3F19F43F3F09F466C1E090E80117
:1037C000EE2009F4C0C02091EB01C816D90628F0FC
:1037D000F601E81BF90BCF0104C0809590958C0D84
:1037E0009D1DFF24F394883C910578F0F12C207FF7
:1037F00009F0C6C07C2DD98AC88A89890E94001B1D
:1038000086EE91E00E94971AB1C0822F807F09F066
:1038100046C0751314C0341312C0611110C02F704C
:1038200020612093EB010E94401B86EE91E00E94F4
:10383000971A8091EB01D80115968C932EC0CD2854
:1038400019F15F3F11F44F3FF9F0F62E61111CC0E2
:103850008091B4012091B50136E0821709F45AC075
:1038600090E0389FF001399FF00D1124EA54FE4F8B
:103870007181571306C07081471303C072817111A3
:1038800003C001968770E9CFF62E662309F418C1AC
:103890008091EB0181608093EB01F12C11C17513D4
:1038A00008C0341306C0611104C08091EB01D80137
:1038B000C3C04D875E878D859E856A8B0E94D61A10
:1038C0006A898823E1F16623D1F12091EB01822FEF
:1038D00082958F7090E0029774F08091E60190914C
:1038E000E70198878F831986DB86CA862C87CE01ED
:1038F00007960E94971A86E0F801A6EEB1E00190C3
:103900000D928A95E1F70E944E1B0E94401BFF24F6
:10391000F394D6C04D875E878D859E850E940A20D0
:10392000292F22952F7030E0223031050CF0BCC0D9
:103930009F7009F0B6C0805E883008F4C1C0C8012D
:103940000E94971AE4CFC816D90608F453C0F601AE
:10395000E81BF90BCF01883C910508F450C0F12C0D
:103960007C2DD98AC88A89890E94001BE6EEF1E085
:1039700086E0DF011D928A95E9F70E94401BA0C0F6
:10398000751314C0341312C0611110C08091EB0183
:10399000F8018583C8010E94971A86E0E6EEF1E0FF
:1039A000DF011D928A95E9F7FE2C8AC04D875E875C
:1039B0008D859E856A8B0E94D61A6A89882309F4B0
:1039C000BECF662309F4BBCF2091EB01822F8295F5
:1039D0008F7090E002970CF48ECF8091E601909169
:1039E000E7019A8389831B82DD82CC822E83CE01FC
:1039F00001967FCF809590958C0D9D1DACCFF62EB6
:103A0000662309F49CCF75132EC034132CC020916B
:103A1000EB0120FD1FC0822F82958F70D9F0D80155
:103A200015962C9315978F3049F08F5F982F9295AC
:103A3000907F822F8F70892B15968C93C8010E94DE
:103A4000971A86E0F801A6EEB1E001900D928A95F2
:103A5000E1F793CF86E0F801A6EEB1E001900D9278
:103A60008A95E1F72DC04D875E878D859E850E94E2
:103A7000D61A811140CF8091EB0181608093EB01D8
:103A8000C8010E94971A1CC0662309F458CF4D87BD
:103A90005E878D859E850E94D61A882309F44FCFB4
:103AA0002ACF811148CF0CC0243031050CF047CF0C
:103AB0009F7009F440CFF8019581907F09F03BCFCA
:103AC0008F2D62960FB6F894DEBF0FBECDBFDF918B
:103AD000CF911F910F91FF90EF90DF90CF900895BD
:103AE0001F93CF93DF93CDB7DEB72C970FB6F89423
:103AF000DEBF0FBECDBF4F83588769877A878B871C
:103B00009C87CE0107960E94A91B882369F08F81AC
:103B100098852A853B85232BF1F19F3F09F063C0EF
:103B20008F3F09F060C037C086E0FE013796DE01A6
:103B3000119601900D928A95E1F76F817885EA855B
:103B4000FB85309741F17F3F11F46F3F21F12091C8
:103B5000B50130E0C9010196877099274091B40101
:103B600050E08417950709F447C069837A83FD8381
:103B7000EC8396E0929FD001939FB00D1124AA543C
:103B8000BE4FFE01319601900D929A95E1F7809318
:103B9000B5010E941F1B16E08091B4019091B50100
:103BA0008917C1F1189FC00111248A549E4F0E94A9
:103BB000A91B882379F1E091B4011E9FF001112423
:103BC000EA54FE4F408151816281738184819581E5
:103BD0000E940F1B8091B40190E001968770992795
:103BE0008093B401D9CF4F81588569857A858B85BB
:103BF0009C850E940F1BCFCF0E94D21A1092B50154
:103C00001092B401E6EEF1E086E0DF011D928A95A4
:103C1000E9F7C1CF2C960FB6F894DEBF0FBECDBF2B
:103C2000DF91CF911F910895EF92FF920F931F9311
:103C3000CF93DF938C01009709F46CC0F12CEE2434
:103C4000E394E8012196F8018491843740F48430AC
:103C500008F051C0813081F0823019F15BC08537A6
:103C600009F444C0A8F19CE7980F903708F052C0BF
:103C70008F770E94141841C00E5F1F4FFE01C49140
:103C800080E28C0F883048F4C7708E2D01C0880FF9
:103C9000CA95EAF70E945C2114C08C2F0E948017FD
:103CA0002DC00E5F1F4FFE01C49180E28C0F883043
:103CB00058F4C7708E2D01C0880FCA95EAF70E948C
:103CC00062210E9490211AC08C2F0E94141816C0E5
:103CD0000E5F1F4FFE01C491CC2381F08FE99FE05E
:103CE0000197F1F700C00000C150F6CF0E5F1F4FE3
:103CF000FE01F49003C00E9480178E018F2D88234F
:103D000009F49FCFEFE9FFE03197F1F700C0000021
:103D10008150F5CFDF91CF911F910F91FF90EF90E0
:103D2000089508956093F0017093F1018093F2017A
:103D30009093F3010C94BE1A0F931F930091F0011E
:103D40001091F1012091F2013091F301DC01CB01DE
:103D5000802B912BA22BB32B8093F0019093F10138
:103D6000A093F201B093F3011F910F910C94BE1A2E
:103D70000F931F930091F0011091F1012091F20136
:103D80003091F301DC01CB0180239123A223B323E3
:103D90008093F0019093F101A093F201B093F301AD
:103DA0001F910F910C94BE1A0F931F930091F00175
:103DB0001091F1012091F2013091F301DC01CB016E
:103DC00080279127A227B3278093F0019093F101D8
:103DD000A093F201B093F3011F910F910C94BE1ABE
:103DE0001092EC011092ED011092EE011092EF0191
:103DF0000C94BE1A41E050E060E070E004C0440F53
:103E0000551F661F771F8A95D2F74093EC01509398
:103E1000ED016093EE017093EF010C94BE1A41E046
:103E200050E060E070E004C0440F551F661F771F2C
:103E30008A95D2F78091EC019091ED01A091EE016D
:103E4000B091EF01482B592B6A2B7B2B4093EC014F
:103E50005093ED016093EE017093EF010C94BE1A44
:103E600041E050E060E070E004C0440F551F661F61
:103E7000771F8A95D2F740955095609570958091FF
:103E8000EC019091ED01A091EE01B091EF0148237A
:103E900059236A237B234093EC015093ED016093F7
:103EA000EE017093EF010C94BE1A41E050E060E027
:103EB00070E004C0440F551F661F771F8A95D2F724
:103EC0008091EC019091ED01A091EE01B091EF0194
:103ED000482759276A277B274093EC015093ED012F
:103EE0006093EE017093EF010C94BE1A0F931F9331
:103EF0000091EC011091ED012091EE013091EF0164
:103F0000DC01CB01802B912BA22BB32B8093EC01F6
:103F10009093ED01A093EE01B093EF011F910F91EB
:103F20000C94BE1A0F931F930091EC011091ED01B8
:103F30002091EE013091EF01DC01CB018023912330
:103F4000A223B3238093EC019093ED01A093EE01A3
:103F5000B093EF011F910F910C94BE1A0F931F9312
:103F60000091EC011091ED012091EE013091EF01F3
:103F7000DC01CB0180279127A227B3278093EC0196
:103F80009093ED01A093EE01B093EF011F910F917B
:103F90000C94BE1A0895CF92DF92EF92FF920F9386
:103FA0001F93CF93DF938C01C090F001D090F1016B
:103FB000E090F201F090F3018091EC019091ED011D
:103FC000A091EE01B091EF01C82AD92AEA2AFB2A72
:103FD000CFE1D0E0D701C6010C2E04C0B695A7955D
:103FE000979587950A94D2F780FF06C0B8018C2F69
:103FF0000E94CB0E019721F4219760F780E001C069
:104000008C2FDF91CF911F910F91FF90EF90DF9058
:10401000CF900895CF93DF93EC010E94CB1FBE0198
:104020000E94CB0EDF91CF910895CB010E940A2010
:1040300008958091F90108958093F90108951092EF
:10404000F90108950E9493222091F7013091F8011F
:104050008217930750F00E9493222091F70130912C
:10406000F801821B930B9C010AC00E9493222091AD
:10407000F7013091F80120953095280F391F81E024
:10408000283B3B4008F480E008958091F601859537
:104090008595859508958091F601877008950E9411
:1040A00093222091F4013091F50182179307A8F033
:1040B0000E9493222091F4013091F501821B930B11
:1040C000883B9B4010F480E013C08091F60182FB96
:1040D000882780F991E089270BC00E9493222091C4
:1040E000F4013091F50120953095820F931FE8CFB0
:1040F0008170089598E0899F90011124262B2093C8
:10410000F6010E940F1F0E9493229093F501809365
:10411000F40108951092F6011092F5011092F40145
:1041200008952091F601809582238093F601982FBF
:10413000977089F430E0482F552747FD5095241794
:10414000350749F08595859585950E94301F109219
:10415000F5011092F40108959091F601977081E0B5
:1041600009F480E0089590910C01992321F0909139
:104170000D01911109C020910E0130910F01F9013B
:1041800032969FEF40E01FC0982F96959695969592
:104190009F3050F5E0910E01F0910F01E90FF11DF4
:1041A000877021E030E0A90102C0440F551F8A95B5
:1041B000E2F7CA019181892B818308959F3F39F0ED
:1041C0004F5F4E3041F051915813F8CF0DC051114F
:1041D000F7CF942FF5CF9F3F39F0F901E90FF11D8B
:1041E00097FDFA9582830895089590910C01992383
:1041F00021F090910D01911109C020910E01309193
:104200000F01F9013296205F3F4F1FC0982F9695FE
:10421000969596959F30F0F4E0910E01F0910F0184
:10422000E90FF11D877021E030E0A90102C0440FC1
:10423000551F8A95E2F7CA01809591818923818370
:1042400008953196E217F30729F090819813F9CF7A
:104250001082F7CF089581E090E0E0910E01F09197
:104260000F01E80FF91F1082019680319105A9F71F
:10427000089580910D02089590910D02892B8093ED
:104280000D020895809590910D02892380930D026F
:10429000089510920D02089590910C02892B80933D
:1042A0000C020895809590910C02892380930C0252
:1042B000089510920C02089590910B02892B80931F
:1042C0000B020895809590910B02892380930B0235
:1042D000089510920B0208958093FA010E94932290
:1042E0009093F8018093F70108951092FA011092CB
:1042F000F8011092F70108958091FA0108958091D4
:104300000E0190910F01FC0131969C01205F3F4FFF
:1043100080E0919191118F5FE217F307D1F7089533
:10432000E0910E01F0910F0180910D028083E091E8
:104330000E01F0910F01908180910C02892B8083F6
:10434000E0910E01F0910F01908180910B02892B79
:1043500080838091FA01882399F00E9422208111A4
:104360000E947521E0910E01F0910F0190818091E2
:10437000FA01892B80830E947F2181110E9475217F
:1043800080910E0190910F010C94701620E000971F
:1043900039F0AC0141505109842395232F5FF7CFA9
:1043A000822F0895CF92DF92EF92FF926C01EE245C
:1043B000FF24C114D104E104F10421F0C701B601C6
:1043C00020E101C020E0C72ED82EE92EFF24C11421
:1043D000D104E104F10419F0285FC701B6016B01B3
:1043E0007C0154E0F694E794D794C7945A95D1F79A
:1043F000C114D104E104F10419F02C5FC701B60126
:104400006B017C0142E0F694E794D794C7944A95F7
:10441000D1F7C114D104E104F10419F02E5FC701F2
:10442000B601DC01CB01B695A79597958795892BA9
:104430008A2B8B2B09F02F5F822FFF90EF90DF905C
:10444000CF90089580913A02843021F110920F02AA
:1044500020E488E190E00FB6F894A895809360007E
:104460000FBE2093600080E00E94660F83B7817FBB
:10447000846083BF83B7816083BF7894889583B756
:104480008E7F83BF88E10FB6F8948093600010920E
:1044900060000FBE0895089508950E944B220E9467
:1044A000ED040E944C220E94E20591E0811101C0BE
:1044B00090E0892F08950E94D21A0E9464160C94ED
:1044C000660F1F920F920FB60F9211248F939F9336
:1044D000AF93BF9380910F02811113C0809110029E
:1044E00090911102A0911202B09113024196A11D68
:1044F000B11D8093100290931102A0931202B09309
:104500001302BF91AF919F918F910F900FBE0F90AB
:104510001F90189582E084BD93E095BD9AEF97BDFA
:1045200080936E0008952FB7F894809110029091B7
:104530001102A0911202B09113022FBF0895CF92E1
:10454000DF92EF92FF920F931F932FB7F894409151
:1045500010025091110260911202709113022FBF4C
:104560006A017B01EE24FF248C0120E030E0C016BC
:10457000D106E206F30610F4415051099A01281BB6
:10458000390BC9011F910F91FF90EF90DF90CF90F1
:1045900008951F920F920FB60F9211248F939F933D
:1045A000AF93BF938091100290911102A0911202DB
:1045B000B09113020196A11DB11D8093100290933A
:1045C0001102A0931202B0931302BF91AF919F9179
:1045D0008F910F900FBE0F901F9018950E9461133E
:1045E000F8942FEF87EA91E6215080409040E1F760
:1045F00000C0000087E090EBDC01809344029093C0
:104600004502A0934602B09347029CE088E10FB6B2
:10461000F894A895809360000FBE90936000FFCF40
:104620000E944523811102C00E942B230E94502327
:1046300080930E020E9458238093430287FB8827B1
:1046400080F980930D010E945423682F70E080E070
:1046500090E00C94921E6DEE7EEF80E090E00E9460
:10466000FD2660E082E090E00E94EB2660E083E0BF
:1046700090E00E94EB2660E084E090E00E94EB2650
:1046800060E085E090E00C94EB2680E090E00E94F2
:10469000E52621E08D3E9E4F09F020E0822F08950F
:1046A00082E090E00C94DD2683E090E00C94DD261F
:1046B00084E090E00C94DD26682F84E090E00C9478
:1046C000EB268091170280FF0BC06091130185E0FB
:1046D000689FB001112475956795759567952BC0F6
:1046E00081FF09C06091130185E0689FB00111242A
:1046F0007595679520C082FF07C06091130185E022
:10470000689FB001112417C0909118029923D1F02D
:1047100060911201961788F72091130185E0289F78
:1047200090011124929FA001939F500D112470E0DD
:10473000CA010E94AF266038710540F46115710509
:1047400039F002C065E070E0862F08958FE7089584
:1047500081E008958091170280FF08C060911101E7
:1047600070E0759567957595679521C081FF06C0C6
:104770006091110170E07595679519C082FF04C0C2
:104780006091110170E010C0909118029923C1F05E
:10479000609110019617A0F780911101899FC001C7
:1047A000112470E00E94AF266038710528F461156D
:1047B000710521F0862F08958FE7089581E008950F
:1047C00061E070E0F4CF803F21F40E946123819585
:1047D00004C0813F29F40E94612380931B02089545
:1047E000823F21F40E946123819504C0833F29F414
:1047F0000E94612380931A020895893F19F40E9450
:10480000AA2305C08A3F31F40E94AA238195809390
:104810001C0208958B3F21F40E94AA23819504C0B5
:104820008C3F29F40E94AA2380931D020895843F9F
:1048300021F480911902816017C0853F21F4809195
:104840001902826011C0863F21F4809119028460B0
:104850000BC0873F21F480911902886005C0883F12
:1048600031F48091190280618093190208958D3F7F
:1048700021F48091170281600BC08E3F21F480915A
:104880001702826005C08F3F29F48091170284606F
:10489000809317020895803F39F480911B0287FFAF
:1048A0006CC010921B0269C0813F29F480911B02E9
:1048B0001816BCF362C090911A02823F29F497FF48
:1048C0005CC010921A0259C0833F19F41916CCF338
:1048D00054C0893F41F480911C0218160CF04DC061
:1048E00010921C024AC08A3F29F480911C0287FF63
:1048F00044C0F6CF8B3F39F480911D0287FF3DC045
:1049000010921D023AC08C3F29F480911D021816A6
:10491000BCF333C0843F21F4809119028E7F17C00D
:10492000853F21F4809119028D7F11C0863F21F4CB
:10493000809119028B7F0BC0873F21F4809119026F
:10494000877F05C0883F31F4809119028F7E809364
:10495000190213C08D3F21F4809117028E7F0BC086
:104960008E3F21F4809117028D7F05C08F3F29F47F
:10497000809117028B7F8093170280911A02811118
:104980000EC080911B0281110AC080911C0281110E
:1049900006C080911D02811102C010921802089574
:1049A00089E192E00E947B160E9493229093150267
:1049B0008093140208951F93CF93DF938091140284
:1049C000909115020E949F22AC01909118029923A8
:1049D00021F02091140130E006C0209116028AE0F7
:1049E000289F900111244217530708F486C0809134
:1049F0001A02C0911B02D0911C0210911D0281115C
:104A000007C0C11176C0D11174C0111172C075C038
:104A10009F3F19F09F5F90931802181624F40E948C
:104A2000612380931A0280911A0287FF05C00E94B9
:104A30006123819580931A021C1624F40E9461233D
:104A400080931B0280911B0287FF05C00E94612397
:104A5000819580931B0260911A02662339F1C091FF
:104A60001B02CC2319F1772767FD7095872F972FAD
:104A70000E94C02523E333E343E35FE30E9424263F
:104A80000E948D2560931A026C2F772767FD709521
:104A9000872F972F0E94C02523E333E343E35FE38F
:104AA0000E9424260E948D2560931B021D1624F46B
:104AB0000E94AA2380931C0280911C0287FF05C0DC
:104AC0000E94AA23819580931C02111624F40E944F
:104AD000AA2380931D0280911D0287FF05C00E94BA
:104AE000AA23819580931D02DF91CF911F910C9491
:104AF000D0249F3F09F08ECF96CFDF91CF911F91A9
:104B00000895E9E1F2E085E0DF011D928A95E9F779
:104B10001092180210921702089504D06894B111EF
:104B20008DC0089570D088F09F5790F0B92F9927C5
:104B3000B751A0F0D1F0660F771F881F991F1AF0A8
:104B4000BA95C9F712C0B13081F077D0B1E00895BD
:104B500074C0672F782F8827B85F39F0B93FCCF33E
:104B6000869577956795B395D9F73EF4909580959E
:104B7000709561957F4F8F4F9F4F0895E89409C0BE
:104B800097FB3EF490958095709561957F4F8F4F80
:104B90009F4F9923A9F0F92F96E9BB279395F69596
:104BA000879577956795B795F111F8CFFAF4BB0F14
:104BB00011F460FF1BC06F5F7F4F8F4F9F4F16C078
:104BC000882311F096E911C0772321F09EE8872F02
:104BD000762F05C0662371F096E8862F70E060E0BE
:104BE0002AF09A95660F771F881FDAF7880F969537
:104BF000879597F9089557FD9058440F551F59F020
:104C00005F3F71F04795880F97FB991F61F09F3FB9
:104C100079F087950895121613061406551FF2CFE2
:104C20004695F1DF08C0161617061806991FF1CF32
:104C300086957105610508940895E894BB27662759
:104C40007727CB0197F908950BD078C069D028F069
:104C50006ED018F0952309F05AC05FC01124EECF32
:104C6000CADFA0F3959FD1F3950F50E0551F629FC7
:104C7000F001729FBB27F00DB11D639FAA27F00DB5
:104C8000B11DAA1F649F6627B00DA11D661F829FDC
:104C90002227B00DA11D621F739FB00DA11D621FC1
:104CA000839FA00D611D221F749F3327A00D611DDE
:104CB000231F849F600D211D822F762F6A2F1124C0
:104CC0009F5750408AF0E1F088234AF0EE0FFF1F13
:104CD000BB1F661F771F881F91505040A9F79E3F4A
:104CE000510570F014C0AACF5F3FECF3983EDCF39F
:104CF000869577956795B795F795E7959F5FC1F787
:104D0000FE2B880F911D9695879597F9089597F931
:104D10009F6780E870E060E008959FEF80EC089561
:104D200000240A941616170618060906089500248A
:104D30000A9412161306140605060895092E039404
:104D4000000C11F4882352F0BB0F40F4BF2B11F478
:104D500060FF04C06F5F7F4F8F4F9F4F089597FB99
:104D6000072E16F4009407D077FD09D00E94C926BB
:104D700007FC05D03EF4909581959F4F089570955E
:104D800061957F4F0895EE0FFF1F0590F491E02D80
:104D90000994AA1BBB1B51E107C0AA1FBB1FA61782
:104DA000B70710F0A61BB70B881F991F5A95A9F7D4
:104DB00080959095BC01CD010895F999FECF92BDE3
:104DC00081BDF89A992780B50895A8E1B0E042E046
:104DD00050E00C940527262FF999FECF92BD81BD96
:104DE000F89A019700B4021639F01FBA20BD0FB629
:104DF000F894FA9AF99A0FBE08950196272F0E9407
:104E0000EC260C94EB26DC01CB01FC01F999FECFDA
:104E100006C0F2BDE1BDF89A319600B40D92415042
:0A4E20005040B8F70895F894FFCF52
:104E2A000220680FF60FD30F9F0F6B0F0101FB01D2
:104E3A0028080102142700200005000500280000A8
:104E4A0000100004001B002D0009001200060018C3
:104E5A0000160008000700280000003F4D3639F808
:104E6A0007AB0775073C07CF06E80601071A0700D4
:00000001FF

@ -1,5 +1,5 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H 1
#ifndef CONFIG_ALGERNON_H
#define CONFIG_ALGERNON_H
#include "../../config.h"
@ -24,4 +24,6 @@
#undef LEADER_TIMEOUT
#define LEADER_TIMEOUT 1000
#define FORCE_NKRO
#endif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

@ -9,77 +9,98 @@
#include "action_util.h"
#include "mousekey.h"
#include "timer.h"
#include "keymap_plover.h"
/* Layers */
#define BASE 0 // default layer
#define APPSEL 1 // application select layer
#define HUN 2 // Hungarian layer
#define EMACS 3 // (Spac)Emacs layer
#define OHLFT 4 // One-handed, left side
#define OHRGT 5 // One-handed, right side
enum {
BASE = 0,
APPSEL,
HUN,
EMACS,
OHLFT,
OHRGT,
PLVR,
EXPRM
};
/* Macros */
#define A_GUI 0 // GUI magic
#define A_ESC 44 // OSM-clearing ESC
#define A_MUL 1 // mouse up-left
#define A_MUR 2 // mouse up-right
#define A_MDL 3 // mouse down-left
#define A_MDR 4 // mouse down-right
#define AE_VIS 5 // Visual mode
#define AE_PSTDEL 6 // Paste/Delete
#define AE_CPYC 7 // Copy/Cut
#define AE_EMACS 8 // Emacs copy & paste mode
#define AE_TERM 9 // Terminal copy & paste mode
#define AE_OTHER 10 // Other copy & paste mode
#define AE_INS 11 // Insert mode
#define AE_OVR 12 // Overwrite mode
#define AE_APPND 13 // Append
#define HU_AA 14 // Á
#define HU_OO 15 // Ó
#define HU_EE 16 // É
#define HU_UU 17 // Ú
#define HU_II 18 // Í
#define HU_OE 19 // Ö
#define HU_UE 20 // Ü
#define HU_OEE 21 // Ő
#define HU_UEE 22 // Ű
#define APP_SLK 23 // Slack
#define APP_EMCS 24 // Emacs
#define APP_TERM 25 // Terminal
#define APP_CHRM 26 // Chrome
#define APP_MSIC 27 // Music
#define KF_1 28 // 1, F1
#define KF_2 29 // 2, F2
#define KF_3 30 // ...
#define KF_4 31
#define KF_5 32
#define KF_6 33
#define KF_7 34
#define KF_8 35
#define KF_9 36
#define KF_10 37
#define KF_11 38 // =, F11
#define OH_BSSPC 39
#define OH_ENTSFT 40
#define OH_BASE 41
#define OH_LEFT 42
#define OH_RIGHT 43
enum {
NONE = 0,
// Buttons that do extra stuff
A_GUI,
A_PLVR,
A_ESC,
A_MPN,
A_COLN,
// Function / number keys
KF_1, // 1, F1
KF_2, // 2, F2
KF_3, // ...
KF_4,
KF_5,
KF_6,
KF_7,
KF_8,
KF_9,
KF_10,
KF_11, // =, F11
// Application select keys
APP_SLK, // Slack
APP_EMCS, // Emacs
APP_TERM, // Terminal
APP_CHRM, // Chrome
APP_MSIC, // Music
// Diagonal mouse movement
A_MUL,
A_MUR,
A_MDL,
A_MDR,
// Emacs layer keys
AE_VIS, // Visual mode
AE_PSTDEL, // Paste/Delete
AE_CPYC, // Copy/Cut
AE_EMACS, // Emacs copy & paste mode
AE_TERM, // Terminal copy & paste mode
AE_OTHER, // Other copy & paste mode
AE_INS, // Insert mode
AE_OVR, // Overwrite mode
AE_APPND, // Append
// Hungarian layer keys
HU_AA, // Á
HU_OO, // Ó
HU_EE, // É
HU_UU, // Ú
HU_II, // Í
HU_OE, // Ö
HU_UE, // Ü
HU_OEE, // Ő
HU_UEE, // Ű
// One-handed layout specials
OH_BSSPC,
OH_ENTSFT,
OH_BASE,
OH_LEFT,
OH_RIGHT,
};
/* Fn keys */
#define F_BSE 0
#define F_HUN 1
#define F_GUI 2
#define F_SFT 3
#define F_ALT 4
#define F_CTRL 5
enum {
F_BSE = 0,
F_HUN,
F_GUI,
F_SFT,
F_ALT,
F_CTRL
};
/* States & timers */
@ -117,13 +138,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Base Layer
*
* ,-----------------------------------------------------. ,-----------------------------------------------------.
* | `~ | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Apps | | Apps | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| = F11 |
* | `~ | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | Apps | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 |
* |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
* | Tab | ' | , | . | P | Y | [ | | ] | F | G | C | R | L | / |
* | Next/Prev | ' | , | . | P | Y | [ | | ] | F | G | C | R | L | = |
* |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
* | - | A | O | E | U | I |------| |------| D | H | T | N | S | \ |
* | Tab | A | O | E | U | I |------| |------| D | H | T | N | S | \ |
* |-----------+------+------+------+------+------| ( | | ) |------+------+------+------+------+-----------|
* | Play/Pause| ; | Q | J | K | X | | | | B | M | W | V | Z | Stop |
* | Play/Pause| / | Q | J | K | X | | | | B | M | W | V | Z | Stop |
* `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
* | Home | End | Down | Up | : | | - | Left | Right| PgUp | PgDn |
* `-----------------------------------' `-----------------------------------'
@ -137,19 +158,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[BASE] = KEYMAP(
// left hand
KC_GRV ,M(KF_1) ,M(KF_2) ,M(KF_3),M(KF_4),M(KF_5),KC_APP
,KC_TAB ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,KC_LBRC
,KC_MINS ,KC_A ,KC_O ,KC_E ,KC_U ,KC_I
,KC_MPLY ,KC_SCLN ,KC_Q ,KC_J ,KC_K ,KC_X ,KC_LPRN
,KC_HOME ,KC_END ,KC_DOWN ,KC_UP ,KC_COLN
KC_GRV ,M(KF_1) ,M(KF_2) ,M(KF_3),M(KF_4),M(KF_5),M(A_PLVR)
,M(A_MPN) ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,KC_LBRC
,KC_TAB ,KC_A ,KC_O ,KC_E ,KC_U ,KC_I
,KC_MPLY ,KC_SLSH ,KC_Q ,KC_J ,KC_K ,KC_X ,KC_LPRN
,KC_HOME ,KC_END ,KC_DOWN ,KC_UP ,M(A_COLN)
,F(F_ALT),F(F_GUI)
,F(F_CTRL)
,KC_BSPC,F(F_SFT),M(A_ESC)
// right hand
,KC_APP ,M(KF_6),M(KF_7),M(KF_8),M(KF_9) ,M(KF_10) ,M(KF_11)
,KC_RBRC ,KC_F ,KC_G ,KC_C ,KC_R ,KC_L ,KC_SLSH
,KC_APP ,M(KF_6),M(KF_7),M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11
,KC_RBRC ,KC_F ,KC_G ,KC_C ,KC_R ,KC_L ,KC_EQL
,KC_D ,KC_H ,KC_T ,KC_N ,KC_S ,KC_BSLS
,KC_RPRN ,KC_B ,KC_M ,KC_W ,KC_V ,KC_Z ,KC_MSTP
,KC_MINS,KC_LEFT,KC_RGHT ,KC_PGUP ,KC_PGDN
@ -386,6 +407,96 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
,KC_NO ,KC_NO ,KC_NO
),
/* Keymap 7: Steno for Plover
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | | | | | | BASE | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | # | # | # | # | # | | | | # | # | # | # | # | # |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | T | P | H | |------| |------| | F | P | L | T | D |
* |--------+ S +------+------+------+ * | | | | * +------+------+------+------+--------|
* | | | K | W | R | | | | | | R | B | G | S | Z |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | A | O |------| |------| E | U |
* | | | | | | | |
* `--------------------' `--------------------'
*/
[PLVR] = KEYMAP(
// left hand
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, M(A_PLVR),
KC_NO, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, KC_NO,
KC_NO, PV_LS, PV_LT, PV_LP, PV_LH, PV_STAR,
KC_NO, PV_LS, PV_LK, PV_LW, PV_LR, PV_STAR, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO,
KC_NO,
PV_A, PV_O, KC_NO,
// right hand
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM,
PV_STAR, PV_RF, PV_RP, PV_RL, PV_RT, PV_RD,
KC_NO, PV_STAR, PV_RR, PV_RB, PV_RG, PV_RS, PV_RZ,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO,
KC_NO,
KC_NO,PV_E, PV_U
),
/* Keymap 8: Experimental layer
*
* ,-----------------------------------------------------. ,-----------------------------------------------------.
* | `~ | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | Apps | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 |
* |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
* | Next/Prev | ' | , | . | P | Y | [ | | ] | Q | F | C | R | J | = |
* |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
* | Tab | A | O | E | U | I |------| |------| D | H | T | N | S | \ |
* |-----------+------+------+------+------+------| ( | | ) |------+------+------+------+------+-----------|
* | Play/Pause| Z | K | V | G | X | | | | L | M | W | B | / | Stop |
* `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
* | Home | End | Down | Up | : | | - | Left | Right| PgUp | PgDn |
* `-----------------------------------' `-----------------------------------'
* ,-------------. ,-------------.
* | LAlt | GUI | |EMACS | 1HND |
* ,------|------|------| |------+------+------.
* | | | Ctrl | | LEAD | | |
* |Backsp|LShift|------| |------| Enter| Space|
* | | | ESC | | HUN | | |
* `--------------------' `--------------------'
*/
[EXPRM] = KEYMAP(
// left hand
KC_GRV ,M(KF_1) ,M(KF_2) ,M(KF_3),M(KF_4),M(KF_5),M(A_PLVR)
,M(A_MPN) ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,KC_LBRC
,KC_TAB ,KC_A ,KC_O ,KC_E ,KC_U ,KC_I
,KC_MPLY ,KC_Z ,KC_K ,KC_V ,KC_G ,KC_X ,KC_LPRN
,KC_HOME ,KC_END ,KC_DOWN ,KC_UP ,M(A_COLN)
,F(F_ALT),F(F_GUI)
,F(F_CTRL)
,KC_BSPC,F(F_SFT),M(A_ESC)
// right hand
,KC_APP ,M(KF_6),M(KF_7),M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11
,KC_RBRC ,KC_Q ,KC_F ,KC_C ,KC_R ,KC_J ,KC_EQL
,KC_D ,KC_H ,KC_T ,KC_N ,KC_S ,KC_BSLS
,KC_RPRN ,KC_L ,KC_M ,KC_W ,KC_B ,KC_SLSH ,KC_MSTP
,KC_MINS,KC_LEFT,KC_RGHT ,KC_PGUP ,KC_PGDN
,OSL(EMACS),M(OH_LEFT)
,KC_LEAD
,F(F_HUN),KC_ENT ,KC_SPC
),
};
const uint16_t PROGMEM fn_actions[] = {
@ -397,6 +508,29 @@ const uint16_t PROGMEM fn_actions[] = {
,[F_CTRL] = ACTION_MODS_ONESHOT (MOD_LCTL)
};
void toggle_steno(int pressed)
{
uint8_t layer = biton32(layer_state);
if (pressed) {
if (layer != PLVR) layer_on(PLVR); else layer_off(PLVR);
register_code(PV_LP);
register_code(PV_LH);
register_code(PV_LR);
register_code(PV_O);
register_code(PV_RL);
register_code(PV_RG);
} else {
unregister_code(PV_LP);
unregister_code(PV_LH);
unregister_code(PV_LR);
unregister_code(PV_O);
unregister_code(PV_RL);
unregister_code(PV_RG);
}
}
macro_t *ang_do_hun (keyrecord_t *record, uint16_t accent, uint16_t hun_char)
{
uint8_t need_shift = 0;
@ -476,11 +610,53 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
} else {
register_code (KC_ESC);
}
layer_off (HUN);
} else {
unregister_code (KC_ESC);
}
break;
case A_COLN:
if (keyboard_report->mods & MOD_BIT(KC_LSFT) ||
((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out())) {
int oneshot = ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out());
if (record->event.pressed) {
if (oneshot)
clear_oneshot_mods ();
unregister_code (KC_LSFT);
register_code (KC_SCLN);
unregister_code (KC_SCLN);
if (!oneshot)
register_code (KC_LSFT);
}
} else {
return MACRODOWN (D(RSFT), T(SCLN), U(RSFT), END);
}
break;
case A_MPN:
if (record->event.pressed) {
if (keyboard_report->mods & MOD_BIT(KC_LSFT) ||
((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out())) {
int oneshot = ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out());
if (oneshot)
clear_oneshot_mods ();
unregister_code (KC_LSFT);
register_code (KC_MPRV);
unregister_code (KC_MPRV);
if (!oneshot)
register_code (KC_LSFT);
} else {
return MACRO (T(MNXT), END);
}
}
break;
/* Hungarian layer */
case HU_AA:
return ang_do_hun (record, KC_QUOT, KC_A);
@ -666,6 +842,11 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}
break;
/* Plover base */
case A_PLVR:
toggle_steno(record->event.pressed);
break;
/* GUI & AppSel */
case A_GUI:
if (record->event.pressed) {
@ -691,29 +872,19 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
break;
case APP_SLK:
if (record->event.pressed)
return MACRO(T(S), T(C), T(U), T(D), T(C), T(L), T(O), T(U), T(D), T(ENT), END);
break;
return MACRODOWN(T(S), T(C), T(U), T(D), T(C), T(L), T(O), T(U), T(D), T(ENT), END);
case APP_EMCS:
if (record->event.pressed)
return MACRO(T(E), T(M), T(A), T(C), T(S), T(ENT), END);
break;
return MACRODOWN(T(E), T(M), T(A), T(C), T(S), T(ENT), END);
case APP_TERM:
if (record->event.pressed)
return MACRO(T(T), T(E), T(R), T(M), T(ENT), END);
break;
return MACRODOWN(T(T), T(E), T(R), T(M), T(ENT), END);
case APP_CHRM:
if (record->event.pressed)
return MACRO(T(C), T(H), T(R), T(O), T(M), T(ENT), END);
break;
return MACRODOWN(T(C), T(H), T(R), T(O), T(M), T(ENT), END);
case APP_MSIC:
if (record->event.pressed)
return MACRO(T(R), T(H), T(Y), T(T), T(H), T(M), T(B), T(O), T(X), T(ENT), END);
break;
return MACRODOWN(T(R), T(H), T(Y), T(T), T(H), T(M), T(B), T(O), T(X), T(ENT), END);
/* Function keys */
case KF_1 ... KF_11:
@ -783,9 +954,16 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
// Runs just one time when the keyboard initializes.
void matrix_init_user(void) {
ergodox_led_all_set (LED_BRIGHTNESS_LO);
ergodox_led_all_on();
for (int i = LED_BRIGHTNESS_HI; i > LED_BRIGHTNESS_LO; i--) {
ergodox_led_all_set (i);
_delay_ms (5);
}
_delay_ms(1000);
for (int i = LED_BRIGHTNESS_LO; i > 0; i--) {
ergodox_led_all_set (i);
_delay_ms (10);
}
ergodox_led_all_off();
};
@ -798,12 +976,14 @@ void ang_do_unicode (void) {
unregister_code (KC_U);
unregister_code (KC_RSFT);
unregister_code (KC_RCTL);
_delay_ms (100);
}
void ang_tap (uint16_t codes[]) {
for (int i = 0; codes[i] != 0; i++) {
register_code (codes[i]);
unregister_code (codes[i]);
_delay_ms (50);
}
}
@ -811,6 +991,8 @@ void ang_tap (uint16_t codes[]) {
register_code (code); \
unregister_code (code)
uint8_t is_exp = 0;
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state);
@ -829,6 +1011,16 @@ void matrix_scan_user(void) {
} else if (layer == EMACS) {
ergodox_right_led_1_on();
ergodox_right_led_2_on();
} else if (layer == PLVR) {
ergodox_right_led_1_on ();
ergodox_right_led_2_on ();
ergodox_right_led_3_on ();
} else if (layer == EXPRM) {
ergodox_right_led_1_on ();
ergodox_right_led_2_on ();
ergodox_right_led_3_on ();
ergodox_right_led_2_set (LED_BRIGHTNESS_HI);
}
if (layer == OHLFT || layer == OHRGT) {
@ -863,7 +1055,7 @@ void matrix_scan_user(void) {
ergodox_right_led_1_on ();
} else {
ergodox_right_led_1_set (LED_BRIGHTNESS_LO);
if (layer != OHLFT && layer != EMACS)
if (layer != OHLFT && layer != EMACS && layer != PLVR && layer != EXPRM)
ergodox_right_led_1_off ();
}
@ -873,7 +1065,7 @@ void matrix_scan_user(void) {
ergodox_right_led_2_on ();
} else {
ergodox_right_led_2_set (LED_BRIGHTNESS_LO);
if (layer != OHRGT && layer != HUN && layer != OHLFT && layer != EMACS)
if (layer != OHRGT && layer != HUN && layer != OHLFT && layer != EMACS && layer != PLVR && layer != EXPRM)
ergodox_right_led_2_off ();
}
@ -883,7 +1075,7 @@ void matrix_scan_user(void) {
ergodox_right_led_3_on ();
} else {
ergodox_right_led_3_set (LED_BRIGHTNESS_LO);
if (layer != OHRGT && layer != HUN)
if (layer != OHRGT && layer != HUN && layer != PLVR && layer != EXPRM)
ergodox_right_led_3_off ();
}
@ -895,6 +1087,12 @@ void matrix_scan_user(void) {
ang_do_unicode ();
}
#ifdef QMK_VERSION
SEQ_ONE_KEY (KC_V) {
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
}
#endif
SEQ_ONE_KEY (KC_L) {
/* λ */
ang_do_unicode ();
@ -903,6 +1101,11 @@ void matrix_scan_user(void) {
ang_tap (codes);
}
SEQ_ONE_KEY (KC_Y) {
uint16_t codes[] = {KC_BSLS, KC_O, KC_SLSH, 0};
ang_tap (codes);
}
SEQ_ONE_KEY (KC_S) {
ang_do_unicode (); TAP_ONCE (KC_A); TAP_ONCE (KC_F); TAP_ONCE (KC_SPC);
TAP_ONCE (KC_BSLS);
@ -928,5 +1131,42 @@ void matrix_scan_user(void) {
unregister_code (KC_UP);
unregister_code (KC_LGUI);
}
SEQ_ONE_KEY (KC_E) {
if (is_exp == 0) {
default_layer_and (0);
default_layer_or ((1 << EXPRM));
is_exp = 1;
ergodox_led_all_off ();
ergodox_right_led_3_on ();
_delay_ms (100);
ergodox_right_led_2_on ();
_delay_ms (100);
ergodox_right_led_3_off ();
ergodox_right_led_1_on ();
_delay_ms (100);
ergodox_right_led_2_off ();
_delay_ms (100);
ergodox_right_led_1_off ();
} else {
is_exp = 0;
default_layer_and (0);
default_layer_or (1 << BASE);
ergodox_led_all_off ();
ergodox_right_led_1_on ();
_delay_ms (100);
ergodox_right_led_2_on ();
_delay_ms (100);
ergodox_right_led_1_off ();
ergodox_right_led_3_on ();
_delay_ms (100);
ergodox_right_led_2_off ();
_delay_ms (100);
ergodox_right_led_3_off ();
}
}
}
}

@ -34,14 +34,19 @@ right). The more interesting parts are how certain keys behave:
* The `ESC` key also doubles as a one-shot cancel key: if tapped while any of
the one-shot modifiers are in-flight (as in, single-tapped, and not expired
yet), it cancels all one-shot modifiers. Otherwise it sends the usual keycode.
* The **Emacs** and **Hun** layer keys are one-shot, the **1Hand** is a toggle.
* The **Emacs** and **Hun** layer keys are one-shot, the **1Hand** and **STENO**
keys are toggles.
* The **Lead** key allows me to type in a sequence of keys, and trigger some
actions:
- `LEAD u` enters unicode input mode, by sending the GTK+ key sequence that
does this.
- `LEAD l` uses the unicode input method to enter a `λ`.
- `LEAD s` does a lot of magic to type in a shruggie: `¯\_(ツ)_/¯`
- `LEAD y` types `\o/`.
- `LEAD w m` maximises the currently focused window.
- `LEAD e` makes the [experimental layer](#experimental-layer) the default.
- `LEAD v` prints the firmware version, the keyboard and the keymap, if
compiled with a QMK version that has these available.
## Hungarian layer
@ -100,6 +105,26 @@ The differences are as follows:
* The `Apps`/`BASE` key can be used to go back to the base layer, by
long-tapping it. A short-tap will send the `App` key, as usual.
## Steno layer
[![Steno layer for Plover](images/steno-layer.png)](http://www.keyboard-layout-editor.com/#/gists/401ef9a84369e47c57f9aedcf0a0d667)
This is to be used with [Plover](http://www.openstenoproject.org/plover/),
nothing really fancy here. The **STENO** key toggles the layer on and off, and
sends the toggle command to Plover too.
## Experimental layer
[![Experimental layer](images/experimental-layer.png)](http://www.keyboard-layout-editor.com/#/gists/6ff50bf71248e05aab5b3fec4fae3d08)
While using the standard Dvorak layout, I encountered a number of
inconveniences, and on this layer, I am playing with ideas to make the layout
feel better. Initially, it was based on [Capewell-Dvorak][cpd], but that too,
had shortcomings I was not happy with. So now this is something inbetween, with
own observations thrown in. How it works out in the long run remains to be seen.
[cpd]: http://www.michaelcapewell.com/projects/keyboard/layout_capewell-dvorak.htm
# Building
To make my workflow easier, this layout is maintained in

@ -0,0 +1,5 @@
#! /bin/sh
WIN="$(xdotool getactivewindow)"
wmctrl -i -r ${WIN} -b remove,maximized_vert,maximized_horz
xdotool windowsize ${WIN} 100% 100%
wmctrl -i -r ${WIN} -b add,maximized_vert,maximized_horz

@ -1,4 +1,4 @@
kc60 keyboard firmware
KC60 (version 2.0) keyboard firmware
======================
## Quantum MK Firmware

File diff suppressed because it is too large Load Diff

@ -0,0 +1,1469 @@
:100000000C9401070C9445070C9445070C94450784
:100010000C9445070C9445070C9445070C94450730
:100020000C9445070C9445070C943A120C940C134D
:100030000C94E3200C9445070C9445070C94450759
:100040000C9445070C9445070C9445070C94450700
:100050000C9445070C944A210C9445070C944507D1
:100060000C9445070C9445070C9445070C944507E0
:100070000C9445070C9445070C9445070C944507D0
:100080000C9445070C9445070C9445070C944507C0
:100090000C9445070C9445070C9445070C944507B0
:1000A0000C9445070C9445070C9445077113931362
:1000B0007E1493137E14D513F8137E144D1460141C
:1000C000A917A917D817D81718183A18891989190C
:1000D00045188919EC18EC1856195E1989198419F4
:1000E000F918F918F918F918F918F918F918F91888
:1000F000F918F918F918F918F918F918F918F91878
:100100000919191920192719311929001E001F0072
:1001100020002100220023002400250026002700C3
:100120002D002E002A002B0014001A0009001300D5
:100130000A000D000F0018001C0033002F003000D3
:1001400031000252040015001600170007000B00D2
:10015000110008000C001200340000002800E1002B
:1001600000001D001B000600190005000E00100015
:100170003600370038000000E500E000E200E30050
:10018000000000002C000000000000000000E7005C
:10019000E600E400015329001E001F00200021009A
:1001A0002200230024002500260027002D002E0019
:1001B0002A002B0014001A000800150017001C006C
:1001C00018000C00120013002F0030003100025202
:1001D00004001600070009000A000B000D000E00C5
:1001E0000F003300340000002800E10000001D0073
:1001F0001B00060019000500110010003600370032
:1002000038000000E500E000E200E300000000002C
:100210002C000000000000000000E700E600E40001
:10022000005335003A003B003C003D003E003F00DB
:100230004000410042004300440045004C000100E2
:100240000100520001000100010001000100010055
:100250000100520081508050835001005000510035
:100260004F00010001000100010001005000510099
:100270004F000000010001000000AC00AE00AB0028
:10028000AA00A900A800010001000100010000006F
:100290000100010001000100000000002C0000002E
:1002A00000000000000001500050010000000A445E
:1002B000454255473A20656E61626C65642E0A00BE
:1002C0005374617465206F6620726F772025583AE9
:1002D0002025303136620A0048756D616E2D7265D9
:1002E000616461626C65206D6174726978207374F9
:1002F0006174653A0D0A004465626F756E63696EDC
:10030000672064656C61792072656D61696E696EE4
:10031000673A2025580A005B735D004B6579626F70
:100320006172642073746172742E0A005B575D0001
:100330005B535D005B525D005B445D005B435D00B1
:100340000E036B00630036003000760032000000C0
:10035000080359006F007500000004030904090236
:100360007400040100A0FA09040000010301010067
:100370000921110100012240000705810308000A3C
:1003800009040100010301020009211101000122F9
:100390004D000705820308000A090402000103005A
:1003A000000009211101000122360007058303081E
:1003B000000A0904030002030000000921110100E2
:1003C0000122200007058403200001070504032003
:1003D00000011201100100000008EDFE6060010044
:1003E000010200010631FF0974A1010975150025FC
:1003F000FF9520750881020976150025FF95207567
:10040000089102C005010980A1018502160100269C
:10041000B7001A01002AB700751095018100C005C8
:100420000C0901A1018503160100269C021A010096
:100430002A9C02751095018100C005010902A101E5
:100440000901A100050919012905150025019505D6
:10045000750181029501750381010501093009319A
:100460001581257F95027508810609381581257F3C
:10047000950175088106050C0A38021581257F95BE
:100480000175088106C0C005010906A1010507190B
:10049000E029E71500250195087501810295017590
:1004A0000881010508190129059505750191029535
:1004B00001750391010507190029FF150026FF00AA
:1004C000950675088100C00A002530325820006B5F
:1004D0006579626F6172645F7265706F72743A20E1
:1004E000004B6579626F617264204C4544732073E0
:1004F000746174653A2025780A00646F6E652E0A6F
:1005000000626F6F676D61676963207363616E3A44
:10051000202E2E2E2000290A002575002F0025757B
:10052000005D28002564002000256400200025646B
:100530000020002564007C0025303258006D6F7566
:1005400073656B6579205B62746E7C7820792076A8
:1005500020685D287265702F61636C293A205B000A
:100560006D6B5F776865656C5F74696D655F746FEF
:100570005F6D6178203D2025640A006D6B5F7768B0
:1005800065656C5F6D61785F7370656564203D20A3
:1005900025640A006D6B5F74696D655F746F5F6DD4
:1005A0006178203D2025640A006D6B5F6D61785F86
:1005B0007370656564203D2025640A006D6B5F697A
:1005C0006E74657276616C203D2025640A006D6B47
:1005D0005F64656C6179203D2025640A006D6B5F66
:1005E000776865656C5F74696D655F746F5F6D6179
:1005F00078203D2025640A006D6B5F776865656C27
:100600005F6D61785F7370656564203D2025640AC5
:10061000006D6B5F74696D655F746F5F6D617820ED
:100620003D2025640A006D6B5F6D61785F737065B6
:100630006564203D2025640A006D6B5F696E7465FA
:100640007276616C203D2025640A006D6B5F6465E5
:100650006C6179203D2025640A000A00257500366A
:100660003A20776865656C5F74696D655F746F5F6C
:100670006D61783A20000A00257500353A207768C8
:1006800065656C5F6D61785F73706565643A2000C5
:100690000A00257500343A2074696D655F746F5FD8
:1006A0006D61783A20000A00257500333A206D61AB
:1006B000785F73706565643A20000A002575003222
:1006C0003A20696E74657276616C286D73293A20E0
:1006D000000A00257500313A2064656C6179282A8A
:1006E00031306D73293A20000A092D2056616C754E
:1006F0006573202D0A004D3E004D25643E20003FCD
:10070000007365742064656661756C740A00433E0D
:10071000200077686572652064656C74613A2063B7
:100720007572736F723D25642C20776865656C3D2A
:1007300025640A53656520687474703A2F2F656EBE
:100740002E77696B6970656469612E6F72672F77A8
:10075000696B692F4D6F7573655F6B6579730A00FF
:100760000A092D204D6F7573656B6579202D0A453B
:1007700053432F713A09717569740A313A096465F6
:100780006C6179282A31306D73290A323A09696E11
:1007900074657276616C286D73290A333A096D614C
:1007A000785F73706565640A343A0974696D655FD2
:1007B000746F5F6D61780A353A09776865656C5FBB
:1007C0006D61785F73706565640A363A09776865AC
:1007D000656C5F74696D655F746F5F6D61780A0A3F
:1007E000703A097072696E742076616C7565730A6F
:1007F000643A097365742064656661756C74730A84
:1008000075703A092B310A646F776E3A092D310AF7
:10081000706775703A092B31300A7067646F776EB4
:100820003A092D31300A0A7370656564203D2064F1
:10083000656C7461202A206D61785F7370656564F2
:10084000202A2028726570656174202F2074696DDC
:10085000655F746F5F6D6178290A003F004D3E202F
:1008600000433E20004C25640A0074696D65725F88
:10087000636F756E743A202530346C580A006B65CE
:1008800079626F6172645F69646C653A2025580A09
:10089000006B6579626F6172645F70726F746F6311
:1008A0006F6C3A2025580A00686F73745F6B657926
:1008B000626F6172645F6C65647328293A20255801
:1008C0000A000A092D20537461747573202D0A00E3
:1008D0004743433A20342E382E31204156522D4C76
:1008E0004942433A20312E382E3073766E204156DD
:1008F000525F415243483A20617672350A004F50A8
:1009000054494F4E533A204C55464120424F4F5484
:100910004D41474943204D4F5553454B455920457F
:10092000585452414B455920434F4E534F4C45204C
:10093000434F4D4D414E4420343039360A00425524
:10094000494C443A20386538393137302D64697262
:100950007479202831333A32393A3233204A756E6D
:100960002031342032303136290A005649443A20A9
:1009700030784645454428596F7529205049443AF6
:1009800020307836303630286B6336307632292086
:100990005645523A203078303030310A00444553C1
:1009A000433A204120637573746F6D206B657962E3
:1009B0006F6172640A000A092D2056657273696FAF
:1009C0006E202D0A000A092D20436F6E736F6C652F
:1009D000202D0A4553432F713A09717569740A6DC8
:1009E0003A096D6F7573656B65790A000A092D20E8
:1009F0004D61676963202D0A443A09446562756751
:100A0000204D65737361676520546F67676C650A75
:100A1000583A094D6174726978204465627567209F
:100A20004D6F646520546F67676C65202D20536897
:100A30006F77206B65797072657373657320696E6B
:100A4000206D617472697820677269640A4B3A0993
:100A50004B6579626F6172642044656275672054EA
:100A60006F67676C65202D2053686F77206B657901
:100A70007072657373207265706F72740A4D3A09F3
:100A80004465627567204D6F75736520546F6767A5
:100A90006C650A563A0956657273696F6E0A533A65
:100AA000095374617475730A433A09416374697632
:100AB00061746520436F6E736F6C65204D6F646564
:100AC0000A46312D4631303A0953776974636820FC
:100AD000746F204C6179657220302D3920284631A1
:100AE00030203D204C30290A302D393A095377699E
:100AF00074636820746F204C6179657220302D39E1
:100B00000A4553433A0953776974636820746F2028
:100B10004C6179657220302028616C7465726E6159
:100B20007465206B65792031290A47524156453A50
:100B30000953776974636820746F204C617965721A
:100B400020302028616C7465726E617465206B655D
:100B5000792032290A50415553453A094A756D703A
:100B600020746F20426F6F746C6F6164657220280F
:100B70005265736574290A453A095072696E74208A
:100B8000454550524F4D2053657474696E67730A22
:100B9000000A002575002E6C6576656C3A20000A07
:100BA000002575002E656E61626C653A20000A00B2
:100BB00025303258006261636B6C696768745F63EB
:100BC0006F6E6669672E7261773A20000A0025759C
:100BD000002E6E6B726F3A20000A002575002E738E
:100BE0007761705F6261636B736C6173685F626190
:100BF000636B73706163653A20000A002575002EEF
:100C0000737761705F67726176655F6573633A20C1
:100C1000000A002575002E6E6F5F6775693A200027
:100C20000A002575002E737761705F72616C745FC6
:100C3000726775693A20000A002575002E73776186
:100C4000705F6C616C745F6C6775693A20000A00B4
:100C50002575002E636170736C6F636B5F746F5FDB
:100C6000636F6E74726F6C3A20000A002575002E57
:100C7000737761705F636F6E74726F6C5F636170C6
:100C8000736C6F636B3A20000A0025303258006B9A
:100C900065796D61705F636F6E6669672E726177EB
:100CA0003A20000A002575002E6D6F7573653A2095
:100CB000000A002575002E6B6579626F6172643AD7
:100CC00020000A002575002E6D61747269783A2043
:100CD000000A002575002E656E61626C653A200081
:100CE0000A00253032580064656275675F636F6E75
:100CF0006669672E7261773A20000A0025750064E4
:100D0000656661756C745F6C617965723A20003F4D
:100D1000000A6D6F7573653A206F66660A000A6D8A
:100D20006F7573653A206F6E0A000A6B6579626FA2
:100D30006172643A206F66660A000A6B6579626FB9
:100D40006172643A206F6E0A000A6D61747269788C
:100D50003A206F66660A000A6D61747269783A20FB
:100D60006F6E0A000A64656275673A206F66660AEC
:100D7000000A64656275673A206F6E0A000A0A4AC3
:100D8000756D70696E6720746F20626F6F746C6F21
:100D9000616465722E2E2E2000433E20006565633F
:100DA0006F6E6669673A0A006261636B6C696768B7
:100DB0007420737465703A2025750A006261636B54
:100DC0006C6967687420746F67676C653A20257575
:100DD0000A006261636B6C696768742064656372A2
:100DE000656173653A2025750A006261636B6C6901
:100DF00067687420696E6372656173653A20257552
:100E00000A0011241FBECFEFDAE0DEBFCDBF04B66B
:100E100003FE24C08091F3019091F401A091F501AB
:100E2000B091F6018730904BA740B04BB9F41092C7
:100E3000F3011092F4011092F5011092F60114BE24
:100E400084B7877F84BF88E10FB6F89480936000F1
:100E5000109260000FBEE0E0F8E3099511E0A0E019
:100E6000B1E0ECE6FBE502C005900D92A634B107B7
:100E7000D9F721E0A6E4B1E001C01D92A33FB2077B
:100E8000E1F70E947A0F0C94B42D0C940000FF93AC
:100E9000EF93E0914601F0914701309709F00995F1
:100EA000EF91FF910895FC018591803011F0EFDF03
:100EB000FBCF0895FF27E0E230E247FF0CC04195E9
:100EC00097FF09C0EDE26095709580959095611D42
:100ED000711D811D911D27FF02C0219530E350E255
:100EE000AA27660F771F881F991FAA1FA41710F043
:100EF000A41B63955A95A9F7AA3008F0A95FA05DD5
:100F0000AF93F395611571058105910541F7ED32B8
:100F100011F4EF93F395F21718F43F93F395FBCF89
:100F20008F91B5DFFA95E1F70895E991F9918591EF
:100F3000803021F0853219F0AADFF9CF089520E042
:100F4000E89455915532C1F3503311F4689455919A
:100F50005A3348F4505390F3220F022E220F220FDF
:100F6000200D250FF4CF0EF42195899199915336D8
:100F700019F3533729F1533559F1BC0188279927C3
:100F8000E8945C3621F4899199916894559154368E
:100F900039F446EF7EF077FF0DC08FEF9FEF0AC068
:100FA00055374AE039F0583540E121F0523642E0F9
:100FB00009F00895FF93EF937DDFEF91FF91B7CF95
:100FC000FF93EF93FC0181918030B9F360DFFBCF99
:100FD000FF93EF9368DFF1CFDF93CF93CDB7DEB709
:100FE0002596A3DFCF91DF9108950895089581E0BC
:100FF000089508950C94F6070C94F7070C94F907DC
:10100000269A2E988FEF9FEF90938700809386000B
:1010100082E28093800089E1809381000C943E2BD2
:101020000E9400080C94F5072E9881110AC0809147
:1010300080008F7D8093800010928B0010928A0038
:101040000895833041F48091800080628093800015
:101050008FEF9FEF12C0909180009062909380007C
:1010600023E030E0281B3109220F331F8FEF9FEF61
:1010700002C0969587952A95E2F790938B0080930E
:101080008A00089580E090E0089581E008950C942E
:10109000450808950F931F93CF93DF93EC010881C8
:1010A0001981C8010E94221FB8010E94E3088C0127
:1010B000BE010E944708882309F47AC08A818823E8
:1010C000C9F18091530181111EC0043180E51807D8
:1010D00089F50E94490881E0809353010E941521FF
:1010E000909352018093510110924A0110924C0149
:1010F00010924B0110924E0110924D01109250012E
:1011000010924F0155C080915101909152010E945F
:101110002121883C910570F480914A01E82FF0E08C
:10112000EE0FFF1FE55BFE4F118300838F5F8093FF
:101130004A013EC0043880E5180721F00538104503
:10114000A1F02AC08A81882321F01092480182E010
:1011500012C080914801811106C086E20E944716A4
:1011600086E20E940F1782E014C08A81882331F042
:101170001092490180E20E945E171AC080914901D5
:10118000811106C087E20E94471687E20E940F176E
:1011900080E20E9465170CC081E080934801809333
:1011A0004901CE01DF91CF911F910F910C94FC0763
:1011B00080E0DF91CF911F910F9108950C9410085A
:1011C0000C94FA0708959EE0799FF001112496E4AB
:1011D000899FE00DF11D1124E60FF11DEE0FFF1F99
:1011E000E65FFE4F859194910895880F991F865769
:1011F0009040FC01859194910895880F991F865F16
:101200009E4FFC018591949108950F931F93CF9366
:10121000DF93EC01811521E39207A0F5811530E3FE
:10122000930708F0D7C0883E9105D8F4803E910519
:1012300008F06FC0883A910578F4853A910508F076
:101240006AC08130910509F4F8C108F4F3C1843013
:10125000910508F05EC0EEC18B3B910508F466C0B5
:10126000E9C1C11580E2D80708F0AFC0C11591E00F
:10127000D90708F04EC0C03FD10508F4DBC18E018C
:1012800010651CC2803820E5920700F5803730E5F4
:10129000930708F0A3C0C11580E5D80709F4ACC0D6
:1012A00050F4CE01905480319F4008F0C3C18E01AC
:1012B0001F70106A03C2C13030E5D30709F4AAC019
:1012C000C43180E5D80708F4AFC0B4C1C33890E595
:1012D000D90709F48EC050F4C13830E5D30709F4BA
:1012E00082C008F083C000E011EDE8C1C03191E593
:1012F000D90708F49FC1C11527E5D20708F436C104
:10130000CE0190578115904108F094C18E011F7055
:101310008FC18E01D3C1853A910509F491C1863AF6
:10132000910509F490C103E810E4C8C1883A910519
:1013300009F48CC1893A910509F48BC18A3A910567
:1013400009F48AC18B3A910509F489C18C3A910557
:1013500009F488C18D3A910509F487C1803B910554
:1013600009F486C18E3A910509F485C18F3A910539
:1013700009F484C1813B910509F483C1823B910545
:1013800009F482C1833B910509F481C1843B910535
:1013900009F480C1853B910509F47FC1863B910525
:1013A00009F47EC1873B910509F47DC1883B910515
:1013B00009F47CC1893B910509F47BC18A3B910505
:1013C00009F07AC10AE216E479C1CE019F700E9449
:1013D000FD0875C18C011127106C70C18C010F7054
:1013E0001127146D6BC100E010ED68C100E012ED33
:1013F00065C100E013ED62C10E94F7198FEF94E31D
:101400002CE0815090402040E1F700C000000E9495
:101410006F2154C18EEA92E00E9453078091D3015C
:1014200081608093D3014AC10E942223811102C0AE
:101430000E9403230E943F2390E09093F201809347
:10144000F101C23030E5D30721F48091F1018160D0
:1014500086C0C43080E5D80721F48091F101826014
:101460007EC0C63090E5D90721F48091F1018460F7
:1014700076C0C83020E5D20719F48091F10127C069
:10148000CA3030E5D30721F48091F101806167C053
:10149000CC3080E5D80721F48091F10180625FC0F3
:1014A000CE3090E5D90721F48091F101806457C0D6
:1014B000C03120E5D20721F48091F10180684FC04E
:1014C000C23130E5D30729F48091F101846088604E
:1014D00046C0C33080E5D80721F48091F1018E7FAA
:1014E0003EC0C53090E5D90721F48091F1018D7F90
:1014F00036C0C73020E5D20721F48091F1018B7FFF
:101500002EC0C93030E5D30719F48091F10126C00F
:10151000CB3080E5D80721F48091F1018F7E1FC088
:10152000CD3090E5D90721F48091F1018F7D17C06E
:10153000CF3020E5D20721F48091F1018F7B0FC0DD
:10154000C13130E5D30721F48091F1018F7707C0D5
:10155000C331D04531F48091F1018B7F877F809337
:10156000F1018091F1010E944323A8C08D2F99279A
:101570008F70992781309105E9F48E01037011274E
:101580009C0102C0220F331F0A95E2F789011C68F3
:10159000CE01E4E0880F991FEA95E1F78827937060
:1015A000082B192BF3E0CC0FDD1FFA95E1F7C0767D
:1015B000DD272CC08230910529F41C2F0027016FF4
:1015C000106A7CC08330910561F4CE018370992745
:1015D00001E010E002C0000F111F8A95E2F71C68BD
:1015E0000EC084309105A9F4CE018370992701E0E3
:1015F00010E002C0000F111F8A95E2F71A6863E03D
:10160000CC0FDD1F6A95E1F7C07ED7700C2B1D2B28
:1016100055C08530910529F41C2F0027046F106AEE
:101620004DC0069709F04AC0CF71DD271C2F002757
:10163000106244C000E010E041C001E010E03EC094
:1016400001E810E43BC002E810E438C002EE14E404
:1016500035C009EE14E432C00AEE14E42FC005EBE5
:1016600014E42CC006EB14E429C007EB14E426C0F4
:101670000CEC14E423C00DEC14E420C003E815E4E2
:101680001DC00AE815E41AC002E915E417C004E910
:1016900015E414C001E216E411C003E216E40EC022
:1016A00004E216E40BC005E216E408C006E216E404
:1016B00005C007E216E402C000E014E4C801DF91AF
:1016C000CF911F910F9108959EE0799FF001112411
:1016D00096E4899FE00DF11D1124E60FF11DEE0F38
:1016E000FF1FE65FFE4F85919491803E9105E0F4E7
:1016F000803C910558F58133910509F46FC048F499
:101700008932910509F463C08A32910509F46DC0EC
:1017100072C089339105E9F082389105D1F08533A3
:10172000910509F44DC067C0833E910581F138F4FD
:10173000803E9105B9F0823E9105D9F05CC0863EAD
:10174000910561F1873E9105A1F155C00E94F50810
:1017500008952091F10120FD02C021FF4CC080EED0
:1017600090E049C08091F10180FFF9CF89E390E0DA
:1017700042C08091F10182FF0EC08091F10184FF8F
:1017800003C080E090E037C083EE90E034C08091E9
:10179000F10182FFF2CF82EE90E02DC08091F10145
:1017A00083FF0BC08091F10184FDEBCF87EE90E0C9
:1017B00022C08091F10183FFF5CF86EE90E01BC03F
:1017C0008091F10185FF07C089E290E014C080910B
:1017D000F10185FFF9CF85E390E00DC08091F10123
:1017E00086FF07C08AE290E006C08091F10186FF83
:1017F000F9CF81E390E00E94050908950C94FE075B
:10180000E82FF0E0EE5DFE4F8081E82FEF70F0E012
:10181000282F22952F7081E090E0022E01C0880FC2
:101820000A94EAF780A308950F931F93CF93DF9351
:1018300085B7806885BF85B7806885BFC4E0D0E084
:1018400001E010E0FE01EE5DFE4F8081E82FEF70B9
:10185000F0E021A182958F70A80102C0440F551FAE
:101860008A95E2F7242B21A38C2F0E94000C21974C
:1018700048F78DE090E041E050E0FC01EC5EFE4F67
:101880002081E22FEF70F0E062A122952F70DA0143
:1018900002C0AA0FBB1F2A95E2F76A2B62A3019729
:1018A00060F7DF91CF911F910F910C94DE08EF92BA
:1018B000FF920F931F93CF93DF93CEE5D1E084E0A7
:1018C000E82E01E010E095E0F92E8E2D0E94000C2C
:1018D0002DE030E040E050E0F901EC5EFE4F808109
:1018E000E82FEF70F0E060A170E082958F7002C089
:1018F000759567958A95E2F760FD09C0B801022EDB
:1019000002C0660F771F0A94E2F7462B572B21502F
:10191000310910F73A912A912417350721F059839C
:101920004883F09200018E2D0E94000CEA949FEFF4
:10193000E912CBCF2091000127FD2EC08091D30169
:1019400080FF10C0822F992787FD90959F932F933A
:1019500087EF92E09F938F930E94EC070F900F9078
:101960000F900F908091000181508093000187FDBE
:1019700007C08FE99FE00197F1F700C000000CC09D
:10198000A8E6B1E0EEE5F1E0929182919E938E930C
:1019900091E0E435F907C1F70E94E00881E0DF91AA
:1019A000CF911F910F91FF90EF900895E82FF0E0F5
:1019B000EE0FFF1FE25AFE4F808191810895EF9252
:1019C000FF920F931F93CF93DF938091D30180FFFA
:1019D00004C088ED92E00E9453070EE511E0C0E0DC
:1019E000D0E040ECE42E42E0F42E8091D30180FF61
:1019F00013C0F801808191810E947F209F938F9373
:101A0000DF93CF93FF92EF920E94EC070F900F901D
:101A10000F900F900F900F9021960E5F1F4FC530C3
:101A2000D10519F7DF91CF911F910F91FF90EF90A2
:101A300008951F93CF93DF93C8E6D1E010E09A9109
:101A40008A910E946120180F81E0CE35D807B9F73E
:101A5000812FDF91CF911F91089580917301089597
:101A60009FB7F89410926A019FBF9091E80194305B
:101A700009F058C09091E9009F702091EC0020FF80
:101A800002C020E801C020E0292B94E09093E900F7
:101A90009091EB0090FF43C09091EE0097FF3FC004
:101AA00090916801992321F09091E80095FF37C04B
:101AB0001092680196E03091E80035FD15C0309134
:101AC000E801343061F53091EB0035FD28C09150CC
:101AD00021F481E08093680122C0EFE9FFE03197B3
:101AE000F1F700C00000E7CF8093F1008091E8009B
:101AF00085FD0AC08091E80080FFFCCF8091E8005E
:101B00008E778093E80006C08FB7F89491E09093A9
:101B10006A018FBF2F702093E90080E008952F7035
:101B20002093E9008FEF0895CF93DF9300D01F92A9
:101B3000CDB7DEB72091E801243019F523E02983E1
:101B40009B838A832093E9008FEF9091E800815076
:101B500095FD06C095ED9A95F1F700008111F5CF3E
:101B60008091E80085FF0DC040E050E063E070E048
:101B7000CE0101960E942D108091E8008E7780930F
:101B8000E8000F900F900F90DF91CF910895CF93C1
:101B9000DF9300D01F92CDB7DEB72091E80124304B
:101BA00021F522E029839B838A8383E08093E900E7
:101BB0008FEF9091E800815095FD06C095ED9A95C4
:101BC000F1F700008111F5CF8091E80085FF0DC08D
:101BD00040E050E063E070E0CE0101960E942D10DD
:101BE0008091E8008E778093E8000F900F900F901F
:101BF000DF91CF9108952091E8012430F1F422E0A3
:101C00002093E9002FEF3091E800215035FD06C008
:101C100035ED3A95F1F700002111F5CF2091E8005C
:101C200025FF0BC040E050E065E070E00E942D1001
:101C30008091E8008E778093E8000895CF93DF933A
:101C4000EC018091E801843039F581E08093E9006E
:101C50008FEF9091E800815095FD06C095ED9A9523
:101C6000F1F700008111F5CF8091E80085FF14C0E5
:101C700040E050E068E070E0CE010E942D108091BD
:101C8000E8008E778093E80088E0FE01ABE6B1E0E3
:101C900001900D928A95E1F7DF91CF9108958CE341
:101CA00093E00E9453078091E701811109C00E94CF
:101CB000BF110E941C128091E20084608093E200B8
:101CC000089588E393E00E9453071092E701089576
:101CD00084E393E00C94530780E393E00C94530760
:101CE0008CE293E00E9453070C94D8208091690104
:101CF0008F5F8093690162E30E94442D911135C08A
:101D00001092690180916A01882379F18091E8013C
:101D1000843049F58091E9008F709091EC0090FF3C
:101D200002C090E801C090E0982B84E08093E90025
:101D30008091EB0080FF14C08091EE0087FF10C0FF
:101D40008091E80085FF03C01092F100F9CF8091E7
:101D5000E80080FF05C08091E8008E778093E8005E
:101D60009F709093E90010926A01089542E061EC3F
:101D700081E00E94391142E061EC82E00E94391159
:101D800042E061EC83E00E94391142E261EC84E0C0
:101D90000C9439118091EA01833009F453C030F476
:101DA000813071F0823009F48CC008958A3009F4D2
:101DB00078C08B3009F45EC0893009F09AC020C029
:101DC0008091E901813A09F094C08091E800877F11
:101DD0008093E8008091ED019091EE01892B21F034
:101DE00060E080E090E003C068E08BE691E070E0A6
:101DF0000E9476108091E8008B778093E800089528
:101E00008091E901813209F074C08091ED019091D7
:101E1000EE01892B09F06DC08091E800877F8093E7
:101E2000E8008091E80082FD05C08091E801811101
:101E3000F8CF5FC08091F100809373018091E8003A
:101E40008B7753C08091E901813A09F052C08091AB
:101E5000ED019091EE01892B09F04BC08091E800D3
:101E6000877F8093E8008091E80080FFFCCF80911D
:101E70000B0136C08091E9018132D9F58091ED01E5
:101E80009091EE01892BA9F58091E800877F8093DE
:101E9000E8000E946E118091EB0180930B010C947D
:101EA000F7198091E901813221F58091E800877F5F
:101EB0008093E8000E946E118091EC018093740180
:101EC00008958091E901813AA1F48091E800877F2B
:101ED0008093E8008091E80080FFFCCF809174013E
:101EE0008093F1008091E8008E778093E8000C9455
:101EF0006E11089584B7877F84BF88E10FB6F89488
:101F000080936000109260000FBE80E880936100B3
:101F1000109261000E9441150E94BF110E941C1284
:101F20008091E20084608093E20080E39DE00E9463
:101F30005C2078940E9496140E94431581E091E001
:101F40000E94B3148BE193E00E9453078091E80153
:101F5000853089F487E193E00E9453070E9499201D
:101F60008091E601882391F30E94C720882371F3B2
:101F70000E941710EBCF0E946915E8CF292F332755
:101F800023303105A9F06CF42130310509F442C049
:101F90002230310509F043C084E790E02EE533E0BC
:101FA00042C021323105C9F02232310519F137C062
:101FB00099278130910541F08230910541F0892BBC
:101FC00071F5EAE5F3E005C0E0E5F3E002C0E0E426
:101FD000F3E0849190E09F0126C0643000F5E62F85
:101FE000F0E0EE0FFF1FED5CFE4F2081318189E0B4
:101FF00090E019C0643098F4E62FF0E0DF01AA0FFA
:10200000BB1FA55DBE4F2D913C91E95DFE4F8081C8
:1020100090E009C082E190E022ED33E004C080E06E
:1020200090E020E030E0FA0131832083089580E1E0
:1020300089BD82E189BD09B400FEFDCF8091D80041
:102040008F7D8093D8008091E00082608093E000D3
:102050008091E00081FDFCCF0895CF92DF92EF9256
:10206000FF920F931F93CF93DF937C018B01EA01C3
:102070000E948F11811131C0209731F088819981A0
:10208000081B190BE80EF91EC12CD12C01151105E6
:1020900019F18091E80085FD14C08091E8008E77E9
:1020A0008093E800209741F0888199818C0D9D1DD7
:1020B0009983888385E011C00E948F11882331F3B2
:1020C0000CC0F70181917F018093F100015011094B
:1020D000FFEFCF1ADF0ADACF80E0DF91CF911F91B7
:1020E0000F91FF90EF90DF90CF9008952091EF0136
:1020F0003091F0012617370748F06115710539F462
:102100002091E8002E772093E80001C0B901FC017E
:1021100020E061157105B9F18091E801882309F487
:1021200040C0853009F43FC08091E80083FD3DC088
:102130008091E80082FF06C08091E80082FF26C0FF
:1021400080E008958091E80080FFE3CF2091F300C4
:102150008091F20090E0922B6115710551F088306A
:10216000910538F421912093F10061507109019695
:10217000F3CF21E0089709F020E08091E8008E7706
:102180008093E800C6CF2111C7CFD6CF8091E80158
:10219000882339F0853039F08091E80083FFCCCF77
:1021A00004C082E0089583E0089581E008952091BD
:1021B000EF013091F0012617370748F061157105DE
:1021C00039F42091E8002E772093E80001C0B9018E
:1021D000FC0120E061157105C1F18091E8018823BF
:1021E00009F441C0853009F440C08091E80083FDC6
:1021F0003EC08091E80082FF06C08091E80082FF27
:1022000027C080E008958091E80080FFE3CF20910F
:10221000F3008091F20090E0922B6115710559F066
:102220008830910540F424912093F100319661505B
:1022300071090196F2CF21E0089709F020E0809122
:10224000E8008E778093E800C5CF2111C6CFD5CFA7
:102250008091E801882339F0853039F08091E800D9
:1022600083FFCBCF04C082E0089583E0089581E02E
:102270000895982F973058F59093E900981739F002
:102280007091EC002091ED005091F00003C0242FDC
:10229000762F50E021FF19C03091EB003E7F309344
:1022A000EB003091ED003D7F3093ED003091EB007D
:1022B00031603093EB007093EC002093ED0050936D
:1022C000F0002091EE0027FF07C09F5FD3CF8F70F3
:1022D0008093E90081E0089580E008958091E9010C
:1022E00087FD05C08091E80080FF0EC012C080917C
:1022F000E80082FD05C08091E8018111F8CF0895C2
:102300008091E8008B7708C08091E8018111EACFC5
:1023100008958091E8008E778093E8000895809179
:10232000E4009091E50045E62091EC0020FF21C0FB
:102330002091E80020FD21C02091E801222389F0AE
:10234000253089F02091EB0025FD0FC02091E4009D
:102350003091E5002817390739F3415041F0C901A0
:10236000E3CF82E0089583E0089581E0089584E05A
:1023700008952091E80022FFDFCF80E008950E94B9
:102380002D120E943512E0EEF0E0808181608083A2
:10239000E8EDF0E080818F77808319BCA7EDB0E095
:1023A0008C918E7F8C9380818F7E80831092E70149
:1023B00008950F931F93CF93DF930E942D120E94D5
:1023C0003512C8EDD0E088818F7788838881806856
:1023D000888388818F7D888319BC1092E8011092D0
:1023E000E4011092E6011092E50100EE10E0F80120
:1023F00080818B7F808388818160888342E060E078
:1024000080E00E943911E1EEF0E080818E7F8083D0
:10241000E2EEF0E08081816080838081886080834B
:10242000F80180818E7F8083888180618883DF913D
:10243000CF911F910F910895E8EDF0E080818F7E9C
:102440008083E7EDF0E080818160808384E082BF5B
:1024500081E08093E7010C94D911E8EDF0E08081F0
:102460008E7F80831092E20008951092DA0010921D
:10247000E10008951F920F920FB60F9211242F932F
:102480003F934F935F936F937F938F939F93AF93FC
:10249000BF93EF93FF938091E10082FF0BC0809187
:1024A000E20082FF07C08091E1008B7F8093E10012
:1024B0000E94760E8091DA0080FF1FC08091D800C4
:1024C00080FF1BC08091DA008E7F8093DA008091BC
:1024D000D90080FF0DC080E189BD82E189BD09B4CA
:1024E00000FEFDCF81E08093E8010E944F0E05C001
:1024F00019BC1092E8010E94610E8091E10080FFFA
:1025000019C08091E20080FF15C08091E2008E7FAB
:102510008093E2008091E20080618093E2008091EC
:10252000D80080628093D80019BC85E08093E801D0
:102530000E946C0E8091E10084FF30C08091E20027
:1025400084FF2CC080E189BD82E189BD09B400FE11
:10255000FDCF8091D8008F7D8093D8008091E100DD
:102560008F7E8093E1008091E2008F7E8093E20075
:102570008091E20081608093E2008091E4018823F1
:1025800011F084E007C08091E30087FF02C083E080
:1025900001C081E08093E8010E94700E8091E1000B
:1025A00083FF29C08091E20083FF25C08091E10074
:1025B000877F8093E10082E08093E8011092E4013C
:1025C0008091E1008E7F8093E1008091E2008E7F18
:1025D0008093E2008091E20080618093E20042E01B
:1025E00060E080E00E9439118091F0008860809363
:1025F000F0000E94680EFF91EF91BF91AF919F9103
:102600008F917F916F915F914F913F912F910F909B
:102610000FBE0F901F9018951F920F920FB60F923A
:1026200011242F933F934F935F936F937F938F93D7
:102630009F93AF93BF93CF93EF93FF93C091E90024
:10264000CF708091EC001092E9008091F000877FBC
:102650008093F00078940E9448131092E9008091D2
:10266000F00088608093F000C093E900FF91EF9143
:10267000CF91BF91AF919F918F917F916F915F911A
:102680004F913F912F910F900FBE0F901F90189573
:102690001F93CF93DF93CDB7DEB7AA970FB6F89409
:1026A000DEBF0FBECDBFE9EEF1E08091F100819376
:1026B00021E0E13FF207C9F70E94CA0E8091E800CD
:1026C00083FF1CC12091E9013091EA01832F90E042
:1026D0008A30910508F012C1FC01EA5AFF4F0C94B0
:1026E000642D203881F0223809F008C18091ED0175
:1026F0008F708093E9008091EB0085FB882780F93B
:102700001092E90006C08091E5019091E6019111D7
:1027100082609091E800977F9093E8008093F100A9
:102720001092F100C5C0822F8D7F09F0E7C02223EF
:1027300019F0223061F0E2C08091EB01813009F0A4
:10274000DDC0333009F080E08093E60128C080913D
:10275000EB01811124C02091ED012F7009F4CEC04E
:102760002093E9008091EB0080FF19C08091EB007D
:10277000333011F4806211C080618093EB0081E0FE
:1027800090E0022E01C0880F0A94EAF78093EA00D5
:102790001092EA008091EB0088608093EB00109229
:1027A000E9008091E800877F86C02111A7C01091C1
:1027B000EB011F778091E3008078812B8093E30009
:1027C0008091E800877F8093E8000E946E118091DD
:1027D000E80080FFFCCF8091E30080688093E300F5
:1027E000112311F083E001C082E08093E80186C0EC
:1027F0002058223008F082C08091EB019091EC01CA
:102800008C3D23E0920779F583E08A838AE289830D
:102810004FB7F894DE01139620E03EE051E2E32F3B
:10282000F0E050935700E49120FF03C0E295EF7071
:102830003F5FEF708E2F90E0EA3010F0C79601C036
:10284000C0968D939D932F5F243149F74FBF8091A0
:10285000E800877F8093E8006AE270E0CE0101968D
:102860000E94761014C0AE014F5F5F4F6091ED0182
:102870000E94BE0F009709F441C02091E800277F15
:102880002093E800BC0189819A810E94D710809131
:10289000E8008B778093E80031C0203879F580918B
:1028A000E800877F8093E8008091E4018093F10045
:1028B0008091E8008E778093E8000E946E111EC020
:1028C00021111CC09091EB019230C0F48091E8007E
:1028D000877F8093E8009093E4010E946E118091BD
:1028E000E401811104C08091E30087FF02C084E00D
:1028F00001C081E08093E8010E94B60E8091E8005B
:1029000083FF0AC08091E800877F8093E800809170
:10291000EB0080628093EB00AA960FB6F894DEBFBE
:102920000FBECDBFDF91CF911F910895CF938091BE
:10293000E8018823B1F08091E9008F709091EC005C
:1029400090FF02C090E801C090E0C92FC82B109200
:10295000E9008091E80083FD0E944813CF70C09386
:10296000E900CF91089590937A01809379010895B9
:10297000E0917901F0917A01309721F00190F08196
:10298000E02D099480E00895FF920F931F93CF9359
:10299000DF938C01E0917901F0917A01309799F100
:1029A0000280F381E02D09958091D30182FF2BC035
:1029B00080FF04C08FEC94E00E945307E80188E098
:1029C000F82E09EC14E08091D30180FF0BC08881C0
:1029D0001F928F931F930F930E94EC070F900F90FD
:1029E0000F900F90FA942196F110EDCF8091D301C2
:1029F00080FF09C087EC94E0DF91CF911F910F9188
:102A0000FF900C945307DF91CF911F910F91FF908E
:102A10000895E0917901F0917A01309721F00480D6
:102A2000F581E02D09940895209177013091780186
:102A30008217930771F09093780180937701E0916A
:102A40007901F0917A01309721F00680F781E02D2D
:102A500009940895209175013091760182179307AA
:102A600071F09093760180937501E0917901F09176
:102A70007A01309721F00084F185E02D09940895C2
:102A800008950C9440150E940C210E94140C0E9481
:102A9000D7210C943E2BCF93DF931F92CDB7DEB797
:102AA0009091D30192FF10C090FF0EC01F928F93A0
:102AB00021EE34E03F932F9389830E94EC070F901F
:102AC0000F900F900F9089810F90DF91CF910C9410
:102AD000FE0B5F926F927F928F929F92AF92BF9206
:102AE000CF92DF92EF92FF920F931F93CF93DF93DA
:102AF00000D000D01F92CDB7DEB70E94570C96E8E9
:102B0000C92E91E0D92E04E010E0AA24A394B12CA0
:102B1000502E802F0E94D60C3C01F601F290E290DC
:102B20006F01E826F926E114F104A1F4015011091E
:102B300078F78FEF89838A831B820E941521816039
:102B4000782F9D838C8349815A816B818D810E946E
:102B5000191638C08091D30181FD0E94DF0C2DE051
:102B600030E04501022E02C0880C991C0A94E2F75D
:102B7000C4018E219F21892B09F129835A82682063
:102B8000792081E0672809F480E08B830E94152179
:102B90008160782F9D838C8349815A816B818D81DF
:102BA0000E941916F801EE0FFF1FE458FE4F8081B6
:102BB0009181882599259183808304C02150310912
:102BC00080F6B4CF0E944C2510917B010E94B8146E
:102BD0001817D1F00E94B81480937B010F900F90CA
:102BE0000F900F900F90DF91CF911F910F91FF9059
:102BF000EF90DF90CF90BF90AF909F908F907F909D
:102C00006F905F900C944B150F900F900F900F905A
:102C10000F90DF91CF911F910F91FF90EF90DF9078
:102C2000CF90BF90AF909F908F907F906F905F906C
:102C30000895CF93DF93CDB7DEB72B970FB6F894F7
:102C4000DEBF0FBECDBF4F83588769877A878B87DA
:102C5000DE01119686E0FD0111928A95E9F785E083
:102C6000FE01379601900D928A95E1F749815A81CC
:102C70006B817C818D819E810E94C71C2B960FB633
:102C8000F894DEBF0FBECDBFDF91CF910895CF93F3
:102C9000C82F882309F4C1C0823859F40E94B8149F
:102CA00081FDBBC089E30E94A21F0E942D2089E301
:102CB0000CC0833879F40E94B81480FDAEC083E55F
:102CC0000E94A21F0E942D2083E50E94C31FCF9166
:102CD0000C942D20843859F40E94B81482FD9DC0B4
:102CE00087E40E94A21F0E942D2087E4EECF8CEF84
:102CF0008C0F813A48F48C2F0E94EC2981118DC0F1
:102D00008C2F0E94A21FE3CF80E28C0F883048F402
:102D1000C77081E001C0880FCA95EAF70E94E41FDE
:102D2000D6CF8BE58C0F833078F4C53A29F0C63ABC
:102D300031F482E890E005C081E890E002C083E8C9
:102D400090E0CF910C94141588E58C0F833108F036
:102D500064C0C83A39F1C93A41F1CA3A49F1CB3AAB
:102D600051F1CC3A59F1CD3A61F1C03B69F1CE3A1B
:102D700071F1CF3A79F1C13B81F1C23B89F1C33B9B
:102D800091F1C43B99F1C53BA1F1C63BA9F1C73B09
:102D9000B1F1C83BB9F1C93BC1F1CA3BC9F58AE2FF
:102DA00092E038C082EE90E035C089EE90E032C00B
:102DB0008AEE90E02FC085EB90E02CC086EB90E08F
:102DC00029C087EB90E026C08CEC90E023C08DEC0E
:102DD00090E020C083E891E01DC08AE891E01AC02D
:102DE00082E991E017C084E991E014C081E292E0A9
:102DF00011C083E292E00EC084E292E00BC085E253
:102E000092E008C086E292E005C087E292E002C04C
:102E100080E090E0CF910C942A15CF9108958823FB
:102E200009F44BC0823859F40E94B81481FF45C0A0
:102E300089E30E94A21F0E942D2089E30CC08338E1
:102E400071F40E94B81480FF38C083E50E94A21F6D
:102E50000E942D2083E50E94C31F0C942D208438EE
:102E600059F40E94B81482FF28C087E40E94A21F70
:102E70000E942D2087E4EFCF9CEF980F913A58F3F2
:102E800090E2980F983050F4877091E001C0990F4C
:102E90008A95EAF7892F0E94EA1FDFCF9BE5980FFA
:102EA000933020F480E090E00C941415885A83311C
:102EB00020F480E090E00C942A150895882321F0F6
:102EC0000E94E41F0C942D200895882321F00E9475
:102ED000EA1F0C942D2008958F929F92AF92BF927B
:102EE000CF92DF92EF92FF920F931F93CF93DF93D6
:102EF0001F92CDB7DEB74C01A62E472FFC01E5800F
:102F0000E2948FE0E822F280FF2021F079830E9492
:102F10000120498149830E949B1F4981882381F0B8
:102F2000FF2071F080E28A0D883050F082E00E942C
:102F3000841F0E949B1FBB24B394B826498101C003
:102F4000B12CE42FE295EF70F0E0E05AFF4F0C94C3
:102F5000642D842F807F142F1F70882311F0129509
:102F6000107FFF2089F0112309F496C180E28A0DB9
:102F7000883020F4812F0E94E41F03C0812F0E941B
:102F8000F41F0E942D2088C18A2D0E940F17112343
:102F900009F4BFC180E28A0D883020F4812F0E949D
:102FA000EA1F03C0812F0E94FA1F0E942D20B1C189
:102FB000242F207F842F8F70203211F08295807F04
:102FC000AA2021F0F1E0AF16B1F021C0FF2041F0BE
:102FD000EE2039F191E0E91224C00E94142099C139
:102FE000EE2021F0E1E0EE1609F493C189830E94FE
:102FF000172089810BC1FF2029F0F5E0FE1508F4A8
:1030000088C10FC094E09E1508F483C1FFC0FF2063
:1030100059F0EE2031F0F401958190FF3DC19F7091
:1030200095830E945E1775C1EE2009F4EFC03AC186
:10303000242F26952695237030E02115310521F0A7
:103040002130310561F065C1FF2021F08A2D942FD8
:10305000937002C080E090E00E9414155AC1FF20D6
:1030600021F08A2D942F937002C080E090E00E949E
:103070002A154FC18A2DFF2019F00E94D22302C0C9
:103080000E943A240E94BF2444C1842F837009F017
:103090004EC0F1103EC12A2D229526952770220F91
:1030A000220F8A2D8F70C82ED12CE12CF12C022EEC
:1030B00004C0CC0CDD1CEE1CFF1C0A94D2F7A4FE4D
:1030C00010C06FE070E080E090E004C0660F771FF2
:1030D000881F991F2A95D2F76095709580959095D5
:1030E00003C060E070E0CB01242F26952695237065
:1030F00030E02230310569F02330310589F06C2948
:103100007D298E299F292130310571F00E94191ED9
:1031100000C16C297D298E299F290E94331EF9C088
:103120000E94191EC701B6010E94FF1DF2C0FF20B8
:1031300019F0842F817001C08695882309F4E9C0B5
:103140002A2D229526952770220F220F8A2D8F7007
:10315000C82ED12CE12CF12C022E04C0CC0CDD1C8D
:10316000EE1CFF1C0A94D2F7A4FE10C06FE070E0C2
:1031700080E090E004C0660F771F881F991F2A9592
:10318000D2F7609570958095909503C060E070E0EF
:10319000CB01242F26952695237030E0223031056F
:1031A00069F02330310589F06C297D298E299F290A
:1031B0002130310571F00E94ED1EABC06C297D29D4
:1031C0008E299F290E94071FA4C00E94ED1EC701DF
:1031D000B6010E94D31E9DC00A2D10E0F801E05EEA
:1031E000F109E531F10508F053C0E059FF4F0C94A7
:1031F000642D1A2D1F70842F8F71FF2021F00E94E3
:103200006C1E812F0ECF0E948D1E812F0E9465178C
:1032100080C0FF2049F0F4E0FE1508F47AC0842F46
:103220008F710E94B21E75C085E08E1508F471C0C2
:10323000F6CFFF2039F0842F8F710E946C1E69C079
:10324000FF20C9F3842F8F710E948D1E62C0FF2062
:1032500029F0842F8F710E94571E5BC00E944D1E63
:1032600058C0FF2051F0142F1F71812F0E946C1E37
:1032700063E0812F0E947B1F4CC081E00E94841F6D
:1032800091E09E1508F045C082E00E94841F41C075
:10329000FF2031F0EE2079F28A2D0E94471639C0C6
:1032A000EE2081F28A2D0E940F1733C04F706A2DD5
:1032B000C4010E9442080E94741D2BC0F11029C055
:1032C000942F9F70492F50E042305105B9F04CF4D3
:1032D0004115510581F041305105D9F40E94792BF7
:1032E00018C04330510569F04430510591F48A2DDE
:1032F0000E94062C0EC00E944F2B0BC00E94A82BD0
:1033000008C00E94CE2B05C04F706A2DC4010E94D8
:10331000E208BB20F1F00E94771F80FD1AC0F40183
:1033200012820E94711F0E946C1EC4010E94B71974
:103330000E94711F0F90DF91CF911F910F91FF900D
:10334000EF90DF90CF90BF90AF909F908F900C94B4
:103350008D1E0F90DF91CF911F910F91FF90EF90F5
:10336000DF90CF90BF90AF909F908F9008950F9374
:103370001F93CF93DF93EC01288139818B819C814E
:10338000892B31F03F3F11F080E003C02F3FE1F780
:1033900081E0811113C0CE010E944A08882371F098
:1033A000688179818A810E946D1F8C010E94211F92
:1033B0000E94F41DB801CE010E946C17DF91CF91DD
:1033C0001F910F9108950E9401200E9411200E94D8
:1033D000D61F0E942D200E94ED250E94BF2480E070
:1033E00090E00E94141580E090E00C942A150E9451
:1033F000F11F0C94E3190E94621F292F22952F7050
:1034000030E02C3031054CF42A3031056CF4225078
:10341000310922303105B0F407C02C30310571F08C
:103420002F30310559F00EC0803F31F018F4803E46
:1034300048F402C0843F31F481E0089593FB88276B
:1034400080F9089580E00895CF93DF9300D000D0F5
:103450001F92CDB7DEB70F900F900F900F900F9087
:10346000DF91CF910895CF93DF9300D000D000D0AB
:10347000CDB7DEB726960FB6F894DEBF0FBECDBF30
:10348000DF91CF9108951F93CF93DF93C091860171
:1034900016E080918701C81799F0D0E01C9FF001D9
:1034A0001D9FF00D1124E857FE4F4081518162812C
:1034B0007381848195810E94331A2196C770E9CF68
:1034C000DF91CF911F9108954091B8015091B901BA
:1034D0006091BA017091BB018091BC019091BD01D6
:1034E0000C94331ACF938091BD0182958F7009F0AF
:1034F0005FC08091BA01882309F45AC020918601E7
:10350000A09187016091B8017091B9018091BB01D0
:103510009091BC0131E06F3F09F030E0B32FC6E07D
:103520002A1709F445C0009721F07F3F21F44B2F63
:1035300003C041E001C040E030E040FD35C0C29F23
:10354000F001C39FF00D1124E857FE4F4181741321
:103550002BC04081641328C04281411125C04381A2
:1035600054814817590710F441505109481B590B11
:10357000483C5105C8F48091BD018F7080618093F3
:10358000BD0186E0829FF001839FF00D1124E35777
:10359000FE4F80818F708061808388EB91E00E9474
:1035A000B719CF910C94431A2F5F3F4F2770B8CFB4
:1035B000CF910895CF92DF92EF92FF920F931F93D6
:1035C000CF93DF93CDB7DEB762970FB6F894DEBF27
:1035D0000FBECDBF8C0185E0F801DE011D96019084
:1035E0000D928A95E1F7D8014C9111965C91119753
:1035F00012966C9112971396ED90FC90149770911F
:10360000B801E091B9012091BB013091BC012115B5
:10361000310531F0EF3F31F481E07F3F19F403C011
:1036200081E001C080E0B82FB170CB2E80FD6CC16D
:10363000D090BA01DD2009F4F5C0F091BD01E21689
:10364000F30638F0C701821B930B883C910548F0C4
:103650009BC0209530952E0D3F1D283C310508F06C
:1036600093C08F2F807F09F052C0E51314C07413EC
:1036700012C0D62E61110FC0FF70F061F093BD0132
:103680000E94641A88EB91E00E94B7198091BD01F5
:10369000F80185836CC1EF2831F05F3F31F481E0A0
:1036A0004F3F19F403C081E001C080E080FD03C0FA
:1036B00081E0862701C080E0F82FF170FF2E80FFA7
:1036C0001CC0809186012091870136E0821709F4A1
:1036D00028C190E0389FF001399FF00D1124E85780
:1036E000FE4F7181571306C07081471303C072816A
:1036F000671303C001968770E9CFD62E662309F4BD
:1037000036C18091BD0181608093BD0153C0E51336
:1037100008C0741306C0611104C0D8011596FC934B
:10372000AEC04D875E878D859E856A8B0E94FB1992
:103730006A89882329F1D62E662311F12091BD01D3
:10374000822F82958F7090E002970CF460C0809178
:10375000B8019091B90198878F831986FB86EA8614
:103760002C87CE01079651C0E51731F14D875E8752
:103770008D859E856A8B0E94FB196A8981112EC0F6
:10378000C8010E94B719A4C08F2F807F69F77E2DD2
:10379000F98AE88A89890E94241A88EB91E00E94BC
:1037A000B719E8EBF1E086E0DF011D928A95E9F7B1
:1037B0000E94641AD12CDBC07413D8CF6111D6CF0C
:1037C000D8011596FC93C8010E94B719E8EBF1E007
:1037D00086E0DF011D928A95E9F7C9C0D62E6623DF
:1037E00079F22091BD01822F82958F7090E002972F
:1037F00074F08091B8019091B9019A8389831B82FA
:10380000FD82EC822E83CE0101960E94B71986E0DC
:10381000F801A8EBB1E001900D928A95E1F70E94C2
:10382000721A6FC0E216F30628F0C701821B930BD1
:103830009C0104C0209530952E0D3F1D283C31057C
:1038400008F052C0D62E662309F49ACFE5132CC097
:1038500074132AC08091BD0180FD1DC0982F9295E0
:103860009F70C9F0D80115968C9315979F3039F049
:103870009F5F9295907F8F70892B15968C93C801CE
:103880000E94B71986E0F801A8EBB1E001900D9213
:103890008A95E1F736C086E0F801A8EBB1E0019027
:1038A0000D928A95E1F763C04D875E878D859E8571
:1038B0000E94FB19882379F086E0F801A8EBB1E0BB
:1038C00001900D928A95E1F70E94721A0E94641A83
:1038D000DD24D3944CC08091BD0181608093BD01F3
:1038E000C8010E94B71943C07E2DF98AE88A8989E8
:1038F0000E94241AE8EBF1E086E0DF011D928A9530
:10390000E9F70E94641A33C0662309F439CF4D8762
:103910005E878D859E850E94FB19882309F430CF30
:10392000CBCF4D875E878D859E850E94621F292F94
:1039300022952F7030E0223031052CF49F7041F039
:10394000811106C00CC0243031052CF49F7049F45D
:10395000805E883020F0C8010E94B719CF2CDC2C83
:1039600006C0D80115969C91907F91F7F8CF8D2DC8
:1039700062960FB6F894DEBF0FBECDBFDF91CF9138
:103980001F910F91FF90EF90DF90CF9008951F93BC
:10399000CF93DF93CDB7DEB72C970FB6F894DEBF89
:1039A0000FBECDBF4F83588769877A878B879C87E7
:1039B000CE0107960E94DA1A8823C1F02F8138853C
:1039C0008A859B85892B31F03F3F11F080E003C051
:1039D0002F3FE1F781E0811147C04F81588569850C
:1039E0007A858B859C850E94331A3EC086E0FE0155
:1039F0003796DE01119601900D928A95E1F7FF81CD
:103A0000E8854A855B854115510531F0EF3F31F47A
:103A100081E0FF3F19F403C081E001C080E080FD38
:103A200023C02091870130E0C90101968770992752
:103A30006091860170E086179707F1F1F983EA83B8
:103A40005D834C8396E0929FD001939FB00D11242B
:103A5000A857BE4FFE01319601900D929A95E1F75D
:103A6000809387010E94431A16E08091860190910D
:103A70008701891779F1189FC001112488579E4F3B
:103A80000E94DA1A882331F1E09186011E9FF0012D
:103A90001124E857FE4F40815181628173818481F6
:103AA00095810E94331A8091860190E0019687707B
:103AB000992780938601D9CF0E94F7191092870128
:103AC00010928601E8EBF1E086E0DF011D928A9515
:103AD000E9F7CACF2C960FB6F894DEBF0FBECDBF64
:103AE000DF91CF911F910895EF92FF920F931F9353
:103AF000CF93DF93FC01009709F46FC0F12CEE2403
:103B0000E394EF0121968491843740F4843008F0E7
:103B100055C0813081F0823021F15FC0853709F4D2
:103B200047C0C0F19CE7980F903708F056C08F77D8
:103B30000E940F1745C08F010E5F1F4FFE01849139
:103B400090E2980F983050F48770FE2D01C0FF0F5F
:103B50008A95EAF78F2F0E94042015C00E9447160D
:103B600014C08F010E5F1F4FFE01849190E2980FE9
:103B7000983068F48770FE2D01C0FF0F8A95EAF730
:103B80008F2F0E940A200E942D20E80119C00E9458
:103B90000F17FBCFCF010296FE01C491CC2361F039
:103BA000EFE9FFE03197F1F700C00000C150F6CF18
:103BB000CF010296FE01F490EC0102C00E9447166C
:103BC0008F2D882341F0EFE9FFE03197F1F700C036
:103BD00000008150F6CFFE0194CFDF91CF911F916D
:103BE0000F91FF90EF90089508956093C201709334
:103BF000C3018093C4019093C5010C94E3190F9302
:103C00001F930091C2011091C3012091C401309112
:103C1000C501062B172B282B392B0093C2011093BB
:103C2000C3012093C4013093C5011F910F910C94DF
:103C3000E3190F931F930091C2011091C3012091CA
:103C4000C4013091C501062317232823392300938B
:103C5000C2011093C3012093C4013093C5011F9189
:103C60000F910C94E3190F931F930091C2011091CF
:103C7000C3012091C4013091C501062717272827C9
:103C800039270093C2011093C3012093C4013093DC
:103C9000C5011F910F910C94E3191092BE0110926F
:103CA000BF011092C0011092C1010C94E31941E0D0
:103CB00050E060E070E004C0440F551F661F771F9E
:103CC0008A95D2F74093BE015093BF016093C00123
:103CD0007093C1010C94E31941E050E060E070E0A2
:103CE00004C0440F551F661F771F8A95D2F7809135
:103CF000BE019091BF01A091C001B091C101842B80
:103D0000952BA62BB72B8093BE019093BF01A09358
:103D1000C001B093C1010C94E31941E050E060E0B0
:103D200070E004C0440F551F661F771F8A95D2F7B5
:103D300040955095609570958091BE019091BF011E
:103D4000A091C001B091C10184239523A623B7237C
:103D50008093BE019093BF01A093C001B093C101B5
:103D60000C94E31941E050E060E070E004C0440FBF
:103D7000551F661F771F8A95D2F78091BE019091DB
:103D8000BF01A091C001B091C10184279527A6274A
:103D9000B7278093BE019093BF01A093C001B09359
:103DA000C1010C94E3190F931F930091BE01109170
:103DB000BF012091C0013091C101062B172B282B88
:103DC000392B0093BE011093BF012093C0013093A3
:103DD000C1011F910F910C94E3190F931F93009150
:103DE000BE011091BF012091C0013091C101062395
:103DF0001723282339230093BE011093BF0120937A
:103E0000C0013093C1011F910F910C94E3190F93DE
:103E10001F930091BE011091BF012091C00130910C
:103E2000C10106271727282739270093BE011093C1
:103E3000BF012093C0013093C1011F910F910C94D9
:103E4000E3190895CF92DF92EF92FF920F931F93A1
:103E5000CF93DF93EC01C090C201D090C301E090FA
:103E6000C401F090C5018091BE019091BF01A09165
:103E7000C001B091C101C82AD92AEA2AFB2A0FE160
:103E800010E0B701A601002E04C0769567955795FE
:103E900047950A94D2F740FD05C00150110988F7F3
:103EA00080E007C0BE01802F0E94640B0197A9F338
:103EB000802FDF91CF911F910F91FF90EF90DF90B6
:103EC000CF900895CF93DF93EC010E94221FBE0193
:103ED0000E94640BDF91CF910895CB010E94621F75
:103EE00008958091C6018595859585950895809161
:103EF000C6018770089598E0899F90011124622B74
:103F00006093C6010C946C1E4091C6018095842379
:103F10008093C601982F977069F450E0282F3327BB
:103F200027FD30954217530729F08595859585958E
:103F30000C948D1E08959091C601977081E009F44C
:103F400080E0089540910C0150910D0120E030E097
:103F50009FEFFA01E20FF31F6281681799F09F3F0C
:103F600019F4611101C0922F2F5F3F4F26303105A8
:103F700081F79F3F39F0FA01E90FF11D97FDFA959E
:103F800082830895089540910C0150910D0120E025
:103F900030E0FA01E20FF31F9281981301C0128200
:103FA0002F5F3F4F26303105A1F7089581E090E063
:103FB000E0910C01F0910D01E80FF91F10820196BC
:103FC00088309105A9F708959091D201982B90938C
:103FD000D201089580959091D20198239093D201B7
:103FE00008951092D20108959091D101982B909349
:103FF000D101089580959091D10198239093D1019A
:1040000008951092D10108959091D001982B90932A
:10401000D001089580959091D00198239093D0017C
:1040200008951092D00108958093C70108951092C9
:10403000C701089540910C0150910D0120E030E03E
:1040400080E0FA01E20FF31F918191118F5F2F5FE2
:104050003F4F27303105A9F70895E0910C01F09109
:104060000D018091D2018083E0910C01F0910D014E
:1040700080819091D101892B8083E0910C01F09196
:104080000D0180819091D001892B80839091C7018F
:10409000992361F0E0910C01F0910D018081892B51
:1040A00080830E941A2081111092C70180910C0117
:1040B00090910D010C94C414909347018093460194
:1040C000089540E0009739F09C0121503109822386
:1040D00093234F5FF7CF842F08958295982F9C7C70
:1040E00096959695837344E0849F90011124922BBA
:1040F000892F8A7A86959575990F892B08951F9334
:10410000CF93DF931F92CDB7DEB799830E946D20C6
:10411000182F9981892F0E946D20212F30E0322F96
:104120002227A901482BCA010F90DF91CF911F913F
:1041300008958091E801843039F11092D40120E48F
:1041400088E190E00FB6F894A895809360000FBEC8
:104150002093600080E00E94140880E00E94FE0B23
:1041600083B7817F846083BF83B7816083BF789486
:10417000889583B78E7F83BF88E10FB6F8948093CC
:104180006000109260000FBE08950895089580E0C9
:104190000E9414080E94C5200E94570C0E94C6204D
:1041A0000E94190D91E0811101C090E0892F0895BE
:1041B0000E94F71980E00E9414080E943E2B0E9482
:1041C000B8140C94FE0B1F920F920FB60F9211248D
:1041D0008F939F93AF93BF938091D401811113C0AC
:1041E0008091D5019091D601A091D701B091D801CD
:1041F0004196A11DB11D8093D5019093D601A09346
:10420000D701B093D801BF91AF919F918F910F903B
:104210000FBE0F901F90189582E084BD93E095BD6E
:104220009AEF97BD80936E0008952FB7F894809110
:10423000D5019091D601A091D701B091D8012FBF9F
:104240000895CF92DF92EF92FF920F931F932FB7B3
:10425000F8944091D5015091D6016091D7017091A9
:10426000D8012FBF6A017B01EE24FF248C0120E0DE
:1042700030E0C016D106E206F30610F441505109B1
:10428000481B590BCA011F910F91FF90EF90DF90CF
:10429000CF9008951F920F920FB60F9211248F9313
:1042A0009F93AF93BF938091D5019091D601A09138
:1042B000D701B091D8010196A11DB11D8093D50100
:1042C0009093D601A093D701B093D801BF91AF913D
:1042D0009F918F910F900FBE0F901F9018950E9485
:1042E000BF11F8942FEF87EA91E62150804090406B
:1042F000E1F700C0000087E090EBDC018093F30160
:104300009093F401A093F501B093F6012CE088E1BD
:1043100090E00FB6F894A895809360000FBE2093AC
:104320006000FFCFCF92DF92EF92FF920F931F9327
:10433000CF93DF93C82E84E0D82E01E010E08D2DBE
:104340000E94D60C7C01CDE0D0E098010C2E02C07A
:10435000220F331F0A94E2F72E213F21232B49F02D
:104360006C2F7D2D80E00E94E308C81202C081E01E
:1043700007C0219750F7DA948FEFD812E0CF80E092
:10438000DF91CF911F910F91FF90EF90DF90CF9031
:104390000895CF93C82F8CE20E949221882321F0A8
:1043A0008C2FCF910C94922180E0CF910895CF93E0
:1043B0000E942223811102C00E94032381E095E024
:1043C0000E945307C5E6C15049F00E94570C8FE385
:1043D0009CE90197F1F700C00000F5CF8AEF94E067
:1043E0000E94530789E20E94C92181110AC18AE211
:1043F0000E94C92181110E94032385E00E94C921E6
:1044000081110E946F210E942D238093D30187E0A8
:104410000E94C921882399F18BE10E94C921882338
:1044200051F09091D30191FB882780F921E08227F8
:1044300080FB91F922C08EE00E94C921882351F0AF
:104440009091D30192FB882780F921E0822780FB9D
:1044500092F913C080E10E94C9219091D301882371
:1044600041F093FB882780F921E0822780FB93F9B4
:1044700004C0892F809580FB90F99093D30180919F
:10448000D3010E9431230E943F238093F10180EEEB
:104490000E94C921882341F08091F101982F9095C5
:1044A00090FB80F98093F10189E30E94C921882360
:1044B00059F09091F10191FB882780F921E0822742
:1044C00080FB91F99093F10182EE0E94C92188232B
:1044D00059F09091F10192FB882780F921E0822721
:1044E00080FB92F99093F10186EE0E94C921882306
:1044F00059F09091F10193FB882780F921E0822700
:1045000080FB93F99093F10183EE0E94C9218823E7
:1045100059F09091F10194FB882780F921E08227DE
:1045200080FB94F99093F10185E30E94C9218823CF
:1045300059F09091F10195FB882780F921E08227BD
:1045400080FB95F99093F10181E30E94C9218823B2
:1045500059F09091F10196FB882780F921E082279C
:1045600080FB96F99093F10181E10E94C921882393
:1045700059F09091F10197FB882780F921E082277B
:1045800080FB97F99093F1018091F1010E94432300
:1045900087E20E94C921C82F8EE10E94C9218111A2
:1045A000C2608FE10E94C9218111C46080E20E9433
:1045B000C9218111C86081E20E94C9218111C061B5
:1045C00082E20E94C9218111C06283E20E94C92156
:1045D0008111C06484E20E94C921882311F0C0685F
:1045E00002C0CC2329F08C2F0E943A236C2F03C0E9
:1045F0000E943623682F70E080E090E0CF910C9409
:10460000F51DCF9108956DEE7EEF80E090E00E9461
:104610009E2D60E082E090E00E948C2D60E083E0BF
:1046200090E00E948C2D60E084E090E00E948C2D50
:1046300060E085E090E00E948C2D60E086E090E0F4
:104640000C948C2D80E090E00E94862D21E08D3E20
:104650009E4F09F020E0822F089582E090E00C94B4
:104660007E2D682F82E090E00C948C2D83E090E00A
:104670000C947E2D682F83E090E00C948C2D84E0C8
:1046800090E00C947E2D682F84E090E00C948C2DAB
:1046900086E090E00C947E2D682F86E090E00C94EC
:1046A0008C2D8091DB0180FF0BC06091110185E0B2
:1046B000689FB001112475956795759567952AC017
:1046C00081FF09C06091110185E0689FB00111244C
:1046D000759567951FC082FF07C06091110185E045
:1046E000689FB001112416C04091DC014423C9F039
:1046F00060911001461788F72091110185E0289FED
:1047000090011124429FC001439F900D112470E03D
:104710000E94502D6038710540F46115710539F023
:1047200002C065E070E0862F08958FE7089581E06C
:1047300008958091DB0180FF08C060910F0170E057
:10474000759567957595679521C081FF06C0609145
:104750000F0170E07595679519C082FF04C06091E4
:104760000F0170E010C08091DC018823C1F06091DE
:104770000E018617A0F790910F01989FC001112498
:1047800070E00E94502D6038710528F461157105A4
:1047900021F0862F08958FE7089581E0089561E064
:1047A00070E0F4CF803F21F40E945123819504C032
:1047B000813F29F40E9451238093DF010895823FB5
:1047C00021F40E945123819504C0833F29F40E9463
:1047D00051238093DE010895893F19F40E949923A3
:1047E00005C08A3F31F40E94992381958093E001AE
:1047F00008958B3F21F40E949923819504C08C3F3A
:1048000029F40E9499238093E1010895843F21F4C3
:104810008091DD01816017C0853F21F48091DD0129
:10482000826011C0863F21F48091DD0184600BC05D
:10483000873F21F48091DD01886005C0883F31F415
:104840008091DD0180618093DD0108958D3F21F429
:104850008091DB0181600BC08E3F21F48091DB01F0
:10486000826005C08F3F29F48091DB0184608093D2
:10487000DB010895803F39F48091DF0187FF6CC030
:104880001092DF0169C0813F29F48091DF01181681
:10489000BCF362C09091DE01823F29F497FF5CC0B7
:1048A0001092DE0159C0833F19F41916CCF354C09D
:1048B000893F41F48091E00118160CF04DC0109230
:1048C000E0014AC08A3F29F48091E00187FF44C09B
:1048D000F6CF8B3F39F48091E10187FF3DC0109204
:1048E000E1013AC08C3F29F48091E1011816BCF334
:1048F00033C0843F21F48091DD018E7F17C0853F56
:1049000021F48091DD018D7F11C0863F21F48091DB
:10491000DD018B7F0BC0873F21F48091DD01877F14
:1049200005C0883F31F48091DD018F7E8093DD01E9
:1049300013C08D3F21F48091DB018E7F0BC08E3F31
:1049400021F48091DB018D7F05C08F3F29F4809198
:10495000DB018B7F8093DB018091DE0181110EC032
:104960008091DF0181110AC08091E001811106C0B0
:104970008091E101811102C01092DC0108958091C3
:10498000D30183FF7EC08DE395E00E9453078091A1
:10499000DD011F928F9388E395E09F938F930E9490
:1049A000EC0786E395E00E9453072091DE01822FF9
:1049B000992787FD90959F932F9383E395E09F938D
:1049C0008F930E94EC0781E395E00E9453072091AA
:1049D000DF01822F992787FD90959F932F938EE279
:1049E00095E09F938F930E94EC078CE295E00E94E4
:1049F00053072091E001822F992787FD90959F937F
:104A00002F9389E295E09F938F930E94EC0787E2B2
:104A100095E00E9453072091E101822F992787FD9D
:104A200090959F932F9384E295E09F938F930E949C
:104A3000EC0781E295E00E9453078091DC011F9210
:104A40008F938EE195E09F938F930E94EC078CE10A
:104A500095E00E9453078091DB011F928F9389E1BB
:104A600095E09F938F930E94EC0786E195E00E946A
:104A700053078DB79EB74C960FB6F8949EBF0FBEE6
:104A80008DBF8DED91E00E9409150E941521909334
:104A9000DA018093D90108951F93CF93DF9380911A
:104AA000D9019091DA010E9421214091DC01442337
:104AB00021F02091120130E006C0209113015AE04C
:104AC000259F900111248217930708F482C08091DA
:104AD000DE011091DF01D091E001C091E10181116F
:104AE00007C0111105C0D11103C0CC2309F471C056
:104AF0004F3F19F04F5F4093DC01181624F40E94D9
:104B000051238093DE018091DE0187FF05C00E9462
:104B1000512381958093DE01111624F40E945123C4
:104B20008093DF018091DF0187FF05C00E94512340
:104B300081958093DF016091DE01662339F1109148
:104B4000DF01112319F1772767FD7095872F972FC4
:104B50000E94552C23E333E343E35FE30E94B92C27
:104B60000E94222C6093DE01612F772767FD7095EC
:104B7000872F972F0E94552C23E333E343E35FE312
:104B80000E94B92C0E94222C6093DF011D1624F490
:104B90000E9499238093E0018091E00187FF05C086
:104BA0000E94992381958093E0011C1624F40E94B1
:104BB00099238093E1018091E10187FF05C00E9464
:104BC000992381958093E101DF91CF911F910C94FE
:104BD000BF24DF91CF911F910895EDEDF1E085E0C5
:104BE000DF011D928A95E9F71092DC011092DB013A
:104BF000089580E697E00E9453071F9281E08F930B
:104C00001F9285E08F9382E197E09F938F930E949C
:104C1000EC070F900F900F900F900F900F9008954A
:104C20008330E9F128F4813061F0823009F1089590
:104C3000853009F462C008F449C0863009F474C0B4
:104C4000089520911301862F90E0820F911D8F3FD0
:104C5000910520F4620F6093130103C08FEF8093DE
:104C60001301809113011F928F938BE496E072C021
:104C700020911201862F90E0820F911D8F3F9105A8
:104C800020F4620F6093120103C08FEF8093120132
:104C9000809112011F928F9389E396E05BC020916F
:104CA0001101862F90E0820F911D8F3F910520F416
:104CB000620F6093110103C08FEF80931101809107
:104CC00011011F928F9386E296E044C0209110015B
:104CD000862F90E0820F911D8F3F910520F4620F87
:104CE0006093100103C08FEF809310018091100139
:104CF0001F928F9381E196E02DC020910F01862FA6
:104D000090E0820F911D8F3F910520F4620F609318
:104D10000F0103C08FEF80930F0180910F011F924D
:104D20008F9388EF95E016C020910E01862F90E0BA
:104D3000820F911D8F3F910520F4620F60930E0149
:104D400003C08FEF80930E0180910E011F928F930D
:104D50008DED95E09F938F930E94EC070F900F903D
:104D60000F900F900895833081F128F4813059F02D
:104D70008230D1F00895853009F449C0B8F1863009
:104D800009F456C0089580911301681720F4861B1A
:104D90008093130102C010921301809113011F929E
:104DA0008F938EEC95E054C080911201681720F427
:104DB000861B8093120102C0109212018091120191
:104DC0001F928F938CEB95E043C08091110168177F
:104DD00020F4861B8093110102C010921101809172
:104DE00011011F928F9389EA95E032C080911001E2
:104DF000681720F4861B8093100102C010921001E6
:104E0000809110011F928F9384E995E021C08091D9
:104E10000F01681720F4861B80930F0102C01092C7
:104E20000F0180910F011F928F938BE795E010C0C7
:104E300080910E01681720F4861B80930E0102C03A
:104E400010920E0180910E011F928F9380E695E0E3
:104E50009F938F930E94EC070F900F900F900F90ED
:104E60000895CF93C82F1F928F9325E638E03F9384
:104E70002F930E94EC0761E070E080E090E004C0B6
:104E8000660F771F881F991FCA95D2F70E94F51DDC
:104E90000F900F900F900F90CF910C94F719CF9324
:104EA0008732B0F58E3108F085C28E3009F401C228
:104EB00000F5873009F4CBC1A8F4863009F080C230
:104EC0008091D301817F8E7F8093D30185EC99E01F
:104ED0000E94530789E99DE00E94530781E0809377
:104EE000E301B3C1883009F43FC08B3009F4A9C194
:104EF00067C2863109F421C220F4803109F4ECC183
:104F00005FC2893109F402C28B3109F4BFC158C2B2
:104F1000883309F496C150F4893209F44DC28533BF
:104F200009F44AC2873209F447C24AC2833409F4F9
:104F300043C228F48A3308F443C289533EC28834FA
:104F400009F03EC20E94F7198DE79DE00E945307C9
:104F50009FEF23ED80E3915020408040E1F700C0B7
:104F600000000E946F2171C18DE99DE00E945307EE
:104F70008FEF9CE00E9453070E9436231F928F936D
:104F80008CEF9CE09F938F930E94EC078AEF9CE04C
:104F90000E9453070E942D23C82F87EE9CE00E9499
:104FA00053071F92CF9322EE3CE03F932F930E9432
:104FB000EC0780EE9CE00E94530786ED9CE00E9487
:104FC00053078C2F81701F928F9323ED3CE03F930A
:104FD0002F930E94EC0781ED9CE00E94530787EC21
:104FE0009CE00E945307C1FB882780F91F928F9392
:104FF00024EC3CE03F932F930E94EC0782EC9CE072
:105000000E94530786EB9CE00E945307C2FB88274F
:1050100080F91F928F9323EB3CE03F932F930E94E4
:10502000EC0781EB9CE00E94530788EA9CE00E9419
:105030005307C3FBCC27C0F91F92CF9385EA9CE0AE
:105040009F938F930E94EC0783EA9CE00E94530792
:105050000E943F23C82F8FE89CE00E9453071F92B5
:10506000CF932AE83CE03F932F930E94EC0788E817
:105070009CE00E9453078FE69CE00E9453078C2F10
:1050800081701F928F932CE63CE03F932F930E94F8
:10509000EC078DB79EB780960FB6F8949EBF0FBEF3
:1050A0008DBF8AE69CE00E94530783E59CE00E9446
:1050B0005307C1FB882780F91F928F9320E53CE0BE
:1050C0003F932F930E94EC078EE49CE00E945307CD
:1050D0008CE39CE00E945307C2FB882780F91F9253
:1050E0008F9329E33CE03F932F930E94EC0787E3E3
:1050F0009CE00E94530785E29CE00E945307C3FB9B
:10510000882780F91F928F9322E23CE03F932F93F0
:105110000E94EC0780E29CE00E94530786E19CE03D
:105120000E945307C4FB882780F91F928F9323E1C5
:105130003CE03F932F930E94EC0781E19CE00E94AA
:1051400053078FEF9BE00E945307C5FB882780F928
:105150001F928F932CEF3BE03F932F930E94EC071D
:105160008AEF9BE00E9453078EED9BE00E9453075D
:10517000C6FB882780F91F928F932BED3BE03F936E
:105180002F930E94EC0789ED9BE00E94530781ED6D
:105190009BE00E945307C7FBCC27C0F91F92CF9317
:1051A0008EEC9BE09F938F930E94EC078CEC9BE02E
:1051B0000E9453070E944823C82F85EB9BE00E9462
:1051C00053071F92CF9320EB3BE03F932F930E9416
:1051D000EC078DB79EB780960FB6F8949EBF0FBEB2
:1051E0008DBF8EEA9BE00E94530784EA9BE00E94F9
:1051F00053078C2F81701F928F9321EA3BE03F93DE
:105200002F930E94EC078FE99BE00E94530786E9E9
:105210009BE00E945307C6951F92CF9383E99BE0C2
:105220009F938F930E94EC0781E99BE00E945307B4
:105230008DB79EB708960FB6F8949EBF0FBE8DBF70
:1052400004C08CEE99E00E945307C1E0BEC080917B
:10525000D301C82FC095C170C0FB80F98093D301E2
:10526000CC2349F081E79DE00E9453078091D30150
:105270008660886045C084E69DE00E945307809167
:10528000D301897F877F8093D301DFCF8091D301C2
:1052900081FBCC27C0F991E0C927C0FB81F980933D
:1052A000D301CC2319F087E59DE025C089E49DE07A
:1052B000CACF8091D30182FBCC27C0F991E0C927E6
:1052C000C0FB82F98093D301CC2319F08AE39DE0DF
:1052D00012C08AE29DE0B7CF8091D30183FBCC2737
:1052E000C0F991E0C927C0FB83F98093D301CC2397
:1052F00051F08EE19DE00E9453078091D3018160BF
:105300008093D30162C081E19DE09DCF86EB99E05F
:105310000E9453078DE999E00E9453078BE699E0BC
:105320000E9453078EE399E00E9453078EEF98E0A6
:105330000E94530780ED98E086CF82EC98E00E94AF
:1053400053070E94B8141F928F9388EA98E09F93A6
:105350008F930E94EC0780910B011F928F9381E93C
:1053600098E09F938F930E94EC07809174011F92A5
:105370008F938EE798E09F938F930E94EC07809124
:10538000D5019091D601A091D701B091D801BF93DA
:10539000AF939F938F938AE698E09F938F930E9499
:1053A000EC078DB79EB742960FB6F8949EBF0FBE1E
:1053B0008DBF4BCF8D5101C080E00E94312745CF7A
:1053C0008FE09DE00E945307C0E08C2FCF9108959D
:1053D00080E0089580E00895CF93C82F8091E30185
:1053E000813071F020F0823009F448C03FC1A091B3
:1053F0000C01B0910D018C91823209F039C107C0C6
:10540000A0910C01B0910D018C91823249F48C2F46
:105410000E94E82981112FC08C2F0E944F272CC099
:105420008C2F0E94EA29811126C0C431E1F070F46A
:10543000CB3081F0C031D1F40E94F9258DE598E0A0
:105440000E94530782E08093E30115C0C93259F0EE
:10545000C83361F485EC99E00E94530781E698E037
:105460000E94530708C01092E30104C18BE598E045
:105470000E945307FFC081E08170FEC0C43228F54E
:10548000CE3108F0C1C0CB30A1F1D0F4C73009F063
:10549000D3C08EE18093130182E3809312018AE0EE
:1054A0008093110184E18093100188E080930F01C3
:1054B00088E280930E0181E097E00E945307BFC00D
:1054C000C33149F1C431C1F0B7C0CB3409F4A9C02C
:1054D00028F4C93289F0C83361F0AEC0C13509F48F
:1054E0009EC0C23509F499C0CE3409F0A5C06AE067
:1054F0009EC00E94F925A3C08091E201882319F083
:105500001092E2019CC08EE097E00E94530781E078
:105510008093E301B1C088EE96E00E94530786EDC8
:1055200096E00E945307809113011F928F9383EDA1
:1055300096E09F938F930E94EC0781ED96E00E9486
:1055400053078FEB96E00E945307809112011F9240
:105550008F938CEB96E09F938F930E94EC078AEBDE
:1055600096E00E9453078BEA96E00E9453078091D1
:1055700011011F928F9388EA96E09F938F930E9468
:10558000EC0786EA96E00E94530785E996E00E94C0
:105590005307809110011F928F9382E996E09F93A9
:1055A0008F930E94EC0780E996E00E9453078BE7F7
:1055B00096E00E94530780910F011F928F9388E716
:1055C00096E09F938F930E94EC0786E796E00E94F7
:1055D00053078FE596E00E94530780910E011F92BA
:1055E0008F938CE596E09F938F930E94EC078AE55A
:1055F00096E00E9453078DB79EB748960FB6F89471
:105600009EBF0FBE8DBF1BC0CE51EC2FF0E0E55CFE
:10561000FE4F80818093E20112C061E003C061E02F
:1056200006C06AE08091E2010E94102608C08091C5
:10563000E2010E94B32603C08FEF96E013C0809171
:10564000E201882369F01F928F9389EF96E09F9380
:105650008F930E94EC070F900F900F900F9004C053
:1056600086EF96E00E94530781E006C01092E301A6
:1056700080E002C080E000CFCF9108950E942223F5
:10568000811102C00E9403230E9448238093F201EB
:1056900080FF02C0869501C080E00C9414088091C0
:1056A000F201982F9695292F30E0233031054CF4E4
:1056B0009F5F990F8170892B81608093F2010E9416
:1056C0004C238091D30180FF0FC08091F201869519
:1056D0001F928F938AEE9DE09F938F930E94EC0719
:1056E0000F900F900F900F908091F20186950C947F
:1056F00014088091F201982F969591F09158990F86
:105700008170892B8093F2018E7F91E009F490E003
:105710008091F20190FB80F98093F2010E944C236A
:105720008091D30180FF0FC08091F20186951F9276
:105730008F9382ED9DE09F938F930E94EC070F90D3
:105740000F900F900F908091F20186950C941408A1
:105750008091F201982F909590FB80F98093F2014F
:105760000E944C238091D30180FF0FC08091F201F1
:1057700081701F928F938CEB9DE09F938F930E947B
:10578000EC070F900F900F900F908091F20180FF27
:1057900002C0869501C080E00C9414083091F2019B
:1057A000232F26952F5F2F77822F90E0317004975B
:1057B0002CF4220F232B2093F20102C03093F2012C
:1057C0008091F2018E7F91E009F490E08091F201E6
:1057D00090FB80F98093F2010E944C238091D301C9
:1057E00080FF0FC08091F20186951F928F9388EA07
:1057F0009DE09F938F930E94EC070F900F900F9066
:105800000F908091F20186950C9414082091F2017A
:10581000922F96959827990F822F8170892B8093CC
:10582000F2018E7F91E009F490E08091F20190FB0B
:1058300080F98093F2010E944C238091F2018695B9
:105840000C94140804D06894B1118DC0089570D0E0
:1058500088F09F5790F0B92F9927B751A0F0D1F059
:10586000660F771F881F991F1AF0BA95C9F712C0E3
:10587000B13081F077D0B1E0089574C0672F782FF0
:105880008827B85F39F0B93FCCF38695779567954F
:10589000B395D9F73EF490958095709561957F4FBB
:1058A0008F4F9F4F0895E89409C097FB3EF4909561
:1058B0008095709561957F4F8F4F9F4F9923A9F0E9
:1058C000F92F96E9BB279395F69587957795679578
:1058D000B795F111F8CFFAF4BB0F11F460FF1BC0BC
:1058E0006F5F7F4F8F4F9F4F16C0882311F096E94F
:1058F00011C0772321F09EE8872F762F05C06623FD
:1059000071F096E8862F70E060E02AF09A95660FB5
:10591000771F881FDAF7880F9695879597F908956E
:1059200057FD9058440F551F59F05F3F71F0479550
:10593000880F97FB991F61F09F3F79F08795089535
:10594000121613061406551FF2CF4695F1DF08C054
:10595000161617061806991FF1CF86957105610571
:1059600008940895E894BB2766277727CB0197F919
:1059700008950BD078C069D028F06ED018F0952328
:1059800009F05AC05FC01124EECFCADFA0F3959F83
:10599000D1F3950F50E0551F629FF001729FBB2716
:1059A000F00DB11D639FAA27F00DB11DAA1F649FC2
:1059B0006627B00DA11D661F829F2227B00DA11D75
:1059C000621F739FB00DA11D621F839FA00D611DFB
:1059D000221F749F3327A00D611D231F849F600D1C
:1059E000211D822F762F6A2F11249F5750408AF055
:1059F000E1F088234AF0EE0FFF1FBB1F661F771FE1
:105A0000881F91505040A9F79E3F510570F014C077
:105A1000AACF5F3FECF3983EDCF3869577956795C8
:105A2000B795F795E7959F5FC1F7FE2B880F911DFE
:105A30009695879597F9089597F99F6780E870E0A4
:105A400060E008959FEF80EC089500240A941616F4
:105A5000170618060906089500240A94121613065C
:105A6000140605060895092E0394000C11F48823EA
:105A700052F0BB0F40F4BF2B11F460FF04C06F5F06
:105A80007F4F8F4F9F4F0895991B79E004C0991F56
:105A9000961708F0961B881F7A95C9F78095089588
:105AA00097FB072E16F4009407D077FD09D00E94CB
:105AB0006A2D07FC05D03EF4909581959F4F08957F
:105AC000709561957F4F0895EE0FFF1F0590F4913B
:105AD000E02D0994AA1BBB1B51E107C0AA1FBB1FE5
:105AE000A617B70710F0A61BB70B881F991F5A956A
:105AF000A9F780959095BC01CD010895F999FECF45
:105B000092BD81BDF89A992780B50895A8E1B0E0CB
:105B100042E050E00C94A62D262FF999FECF92BDBD
:105B200081BDF89A019700B4021639F01FBA20BD62
:105B30000FB6F894FA9AF99A0FBE08950196272F96
:105B40000E948D2D0C948C2DDC01CB01FC01F99968
:105B5000FECF06C0F2BDE1BDF89A319600B40D92B9
:0C5B600041505040B8F70895F894FFCF72
:105B6C00FF2D0D1E0EFB0DC70D940D01C80128084D
:105B7C00140A321E0F1F6C76667349130353437954
:105B8C00693309196F7F59404D362087043A040454
:105B9C0004E40370038903A203BB0301020304059D
:065BAC00060708090000D5
:00000001FF

@ -0,0 +1,42 @@
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
// this is the style you want to emulate.
#include "kc60.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* Toggles between colemak and qwerty by tapping the bottom right key.
* Holding capslock key gives a layer like the KBParadise v60.
*/
[0] = KEYMAP( /* Basic Colemak */
KC_ESC, 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_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, \
MO(2), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_NO, KC_ENT, \
KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, \
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL, DF(1) \
),
[1] = KEYMAP( /* Basic QWERTY */
KC_ESC, 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, \
MO(2), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \
KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, \
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL, DF(0) \
),
[2] = KEYMAP( /* KBP v60-like arrows, media keys, etc */
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, BL_INC, BL_DEC, BL_STEP, \
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_NO, KC_TRNS, \
KC_TRNS, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, DEBUG, RESET, KC_TRNS, KC_NO \
),
};
const uint16_t PROGMEM fn_actions[] = {
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
// MACRODOWN only works in this function
return MACRO_NONE;
};

@ -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

@ -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);
}
}

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

@ -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

@ -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
}
}

@ -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);
}
}

@ -0,0 +1 @@
For WS2812B LED strip support, connect DIN from strip to PE2 on ATmega32u4 controller (see reference image controller.jpg)

Binary file not shown.

After

Width:  |  Height:  |  Size: 424 KiB

@ -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)();
}
};

@ -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
Loading…
Cancel
Save