From 3ab9085285e62dc57f70b55e6a056c3fb3d33525 Mon Sep 17 00:00:00 2001 From: Pablo2048 Date: Sun, 22 Jul 2018 10:36:30 +0200 Subject: [PATCH] Prvni odevzdani --- 1.0.3/boards.txt | 43 ++++ .../ATmegaBOOT_168_atmega328_pro_8MHz.hex | 124 ++++++++++ .../atmega/optiboot_atmega328p_8MHz.hex | 67 ++++++ 1.0.3/platform.txt | 124 ++++++++++ 1.0.3/variants/rfs/pins_arduino.h | 223 ++++++++++++++++++ RFS-1.0.0.zip | Bin 0 -> 8773 bytes RFS-1.0.1.zip | Bin 0 -> 8785 bytes RFS-1.0.2.zip | Bin 0 -> 8849 bytes RFS-1.0.3.zip | Bin 0 -> 8853 bytes package_xPablo_index.json | 44 ++++ package_xPablo_index.json_ | 43 ++++ 11 files changed, 668 insertions(+) create mode 100644 1.0.3/boards.txt create mode 100644 1.0.3/bootloaders/atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex create mode 100644 1.0.3/bootloaders/atmega/optiboot_atmega328p_8MHz.hex create mode 100644 1.0.3/platform.txt create mode 100644 1.0.3/variants/rfs/pins_arduino.h create mode 100644 RFS-1.0.0.zip create mode 100644 RFS-1.0.1.zip create mode 100644 RFS-1.0.2.zip create mode 100644 RFS-1.0.3.zip create mode 100644 package_xPablo_index.json create mode 100644 package_xPablo_index.json_ diff --git a/1.0.3/boards.txt b/1.0.3/boards.txt new file mode 100644 index 0000000..a97b913 --- /dev/null +++ b/1.0.3/boards.txt @@ -0,0 +1,43 @@ +############################################################## + +RFS.name=EasyTherm RFS Rev.A (8 MHz internal clock) + +RFS.upload.protocol=arduino +RFS.upload.maximum_size=30720 +RFS.upload.speed=57600 + +RFS.bootloader.low_fuses=0xE2 +RFS.bootloader.high_fuses=0xDA +RFS.bootloader.extended_fuses=0x05 + +RFS.bootloader.file=atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex +RFS.bootloader.unlock_bits=0x3F +RFS.bootloader.lock_bits=0x0F + +RFS.build.mcu=atmega328p +RFS.build.f_cpu=8000000L +RFS.build.core=arduino:arduino +RFS.build.variant=arduino:standard + +RFS.bootloader.tool=arduino:avrdude +RFS.upload.tool=arduino:avrdude + +RFSU.name=EasyTherm RFS Rev.A (8 MHz internal clock, USBTinyISP) + +RFSU.upload.maximum_size=32768 +RFSU.upload.speed=57600 +RFSU.upload.tool=arduino:usbtinyisp + +RFSU.bootloader.low_fuses=0xE2 +RFSU.bootloader.high_fuses=0xDA +RFSU.bootloader.extended_fuses=0x01 +RFSU.bootloader.tool=arduino:avrdude + +RFSU.bootloader.file=atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex +RFSU.bootloader.unlock_bits=0x3F +RFSU.bootloader.lock_bits=0x0F + +RFSU.build.mcu=atmega328p +RFSU.build.f_cpu=8000000L +RFSU.build.core=arduino:arduino +RFSU.build.variant=arduino:standard diff --git a/1.0.3/bootloaders/atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex b/1.0.3/bootloaders/atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex new file mode 100644 index 0000000..9753e2e --- /dev/null +++ b/1.0.3/bootloaders/atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex @@ -0,0 +1,124 @@ +:107800000C94343C0C94513C0C94513C0C94513CE1 +:107810000C94513C0C94513C0C94513C0C94513CB4 +:107820000C94513C0C94513C0C94513C0C94513CA4 +:107830000C94513C0C94513C0C94513C0C94513C94 +:107840000C94513C0C94513C0C94513C0C94513C84 +:107850000C94513C0C94513C0C94513C0C94513C74 +:107860000C94513C0C94513C11241FBECFEFD8E036 +:10787000DEBFCDBF11E0A0E0B1E0EAE8FFE702C063 +:1078800005900D92A230B107D9F712E0A2E0B1E065 +:1078900001C01D92AD30B107E1F70E942D3D0C945F +:1078A000C33F0C94003C982F95959595959595958B +:1078B000905D8F708A307CF0282F295A8091C0000B +:1078C00085FFFCCF9093C6008091C00085FFFCCF60 +:1078D0002093C6000895282F205DF0CF982F809127 +:1078E000C00085FFFCCF9093C6000895EF92FF92F1 +:1078F0000F931F93EE24FF2487018091C00087FD22 +:1079000017C00894E11CF11C011D111D81E2E8164D +:1079100081EAF80687E0080780E0180770F3E09135 +:107920000401F091050109958091C00087FFE9CF1E +:107930008091C6001F910F91FF90EF9008950E94D3 +:10794000763C982F8091C00085FFFCCF9093C600B5 +:1079500091362CF490330CF09053892F089597555D +:10796000892F08951F930E949F3C182F0E949F3CCF +:107970001295107F810F1F9108951F93182F882350 +:1079800021F00E94763C1150E1F71F9108951F935A +:10799000182F0E94763C803249F0809103018F5F5E +:1079A000809303018530C1F01F9108958091C0003C +:1079B00085FFFCCF84E18093C6008091C00085FFE5 +:1079C000FCCF1093C6008091C00085FFFCCF80E102 +:1079D0008093C6001F910895E0910401F091050184 +:1079E00009951F9108950E94763C803241F0809164 +:1079F00003018F5F80930301853081F008958091AA +:107A0000C00085FFFCCF84E18093C6008091C00058 +:107A100085FFFCCF80E18093C6000895E0910401CA +:107A2000F09105010995089548EC50E08823A1F0F4 +:107A30002D9A28EE33E0FA013197F1F721503040CA +:107A4000D1F72D9828EE33E0FA013197F1F7215064 +:107A50003040D1F7815061F708953F924F925F9285 +:107A60006F927F928F929F92AF92BF92CF92DF924E +:107A7000EF92FF920F931F93CF93DF93000082E06A +:107A80008093C00080E18093C4001092C50088E11B +:107A90008093C10086E08093C2005098589A259A3E +:107AA00081E00E94143D24E1F22E9EE1E92E85E959 +:107AB000D82E0FE0C02E10E1B12EAA24A394B1E479 +:107AC0009B2EA6E58A2EF2E57F2EE0E26E2E79E46B +:107AD000572E63E5462E50E5352E0E94763C8033C6 +:107AE000B1F18133B9F1803409F46FC0813409F404 +:107AF00076C0823409F485C0853409F488C08035A5 +:107B000031F1823521F1813511F1853509F485C0D6 +:107B1000863509F48DC0843609F496C0843709F49B +:107B200003C1853709F472C1863709F466C08091B4 +:107B300003018F5F80930301853079F6E0910401A2 +:107B4000F091050109950E94763C803351F60E9420 +:107B5000F33CC3CF0E94763C803249F78091C0004D +:107B600085FFFCCFF092C6008091C00085FFFCCF5E +:107B70009092C6008091C00085FFFCCF8092C60025 +:107B80008091C00085FFFCCF7092C6008091C0003C +:107B900085FFFCCF6092C6008091C00085FFFCCFBE +:107BA0005092C6008091C00085FFFCCF4092C60075 +:107BB0008091C00085FFFCCF3092C6008091C0004C +:107BC00085FFFCCFB092C60088CF0E94763C8638F5 +:107BD00008F4BDCF0E94763C0E94F33C7ECF0E9409 +:107BE000763C803809F49CC0813809F40BC1823896 +:107BF00009F430C1883909F48FC080E00E94C73C85 +:107C00006CCF84E10E94BD3C0E94F33C66CF85E0CE +:107C10000E94BD3C0E94F33C60CF0E94763C809362 +:107C200006010E94763C809307010E94F33C55CFE9 +:107C30000E94763C803309F411C183E00E94BD3C70 +:107C400080E00E94C73C49CF0E94763C80930902A5 +:107C50000E94763C8093080280910C028E7F809374 +:107C60000C020E94763C853409F409C18091080217 +:107C700090910902892B89F000E010E00E94763C87 +:107C8000F801E85FFE4F80830F5F1F4F809108026D +:107C9000909109020817190788F30E94763C8032F8 +:107CA00009F045CF80910C0280FFF5C0609106017C +:107CB00070910701660F771F7093070160930601AB +:107CC000A0910802B09109021097C9F0E8E0F1E034 +:107CD0009B01AD014E0F5F1FF999FECF32BD21BD53 +:107CE000819180BDFA9AF99A2F5F3F4FE417F5070B +:107CF00099F76A0F7B1F70930701609306018091CB +:107D0000C00085FFFCCFF092C6008091C00085FFC7 +:107D1000FCCFB092C600E1CE83E00E94C73CDDCE2E +:107D200082E00E94C73CD9CE0E94763C8093090233 +:107D30000E94763C80930802809106019091070191 +:107D4000880F991F90930701809306010E94763C4B +:107D5000853409F49AC080910C028E7F80930C02C6 +:107D60000E94763C803209F0B8CE8091C00085FF39 +:107D7000FCCFF092C600A0910802B09109021097C2 +:107D8000C1F180910C02082F0170182F1695117007 +:107D9000E0910601F0910701AF014F5F5F4FBA011B +:107DA00020E030E00023B1F4112339F49491809164 +:107DB000C00085FFFCCF9093C6002F5F3F4FCB01E3 +:107DC0000196FA012A173B0780F4BC014F5F5F4F11 +:107DD000002351F3F999FECFF2BDE1BDF89A90B5B9 +:107DE0008091C00085FFFCCFE6CF709307016093C0 +:107DF00006018091C00085FDE5CE8091C00085FF21 +:107E0000F8CFE0CE81E00E94C73C67CE0E94763C6E +:107E1000803209F08CCE8091C00085FFFCCFF092BB +:107E2000C6008091C00085FFFCCFE092C600809123 +:107E3000C00085FFFCCFD092C6008091C00085FFB6 +:107E4000FCCFC092C6008091C00085FFFCCFB092ED +:107E5000C60043CE80E10E94C73C3FCE0E94763CE4 +:107E60000E94763C182F0E94763C112309F483C0AF +:107E7000113009F484C08FE00E94C73C2ECE80915F +:107E80000C02816080930C02F1CE80910C02816023 +:107E900080930C0265CF809107018823880F880B9F +:107EA0008A2180930B028091060190910701880F2F +:107EB000991F90930701809306018091080280FF2B +:107EC00009C08091080290910902019690930902DD +:107ED00080930802F894F999FECF1127E0910601EA +:107EE000F0910701C8E0D1E0809108029091090269 +:107EF000103091F40091570001700130D9F303E084 +:107F000000935700E8950091570001700130D9F3B4 +:107F100001E100935700E8950990199000915700EE +:107F200001700130D9F301E000935700E8951395F3 +:107F3000103498F011270091570001700130D9F3E7 +:107F400005E000935700E89500915700017001305B +:107F5000D9F301E100935700E8953296029709F0B2 +:107F6000C7CF103011F00296E5CF11248091C000E8 +:107F700085FFC5CEC8CE8EE10E94C73CAECD85E957 +:0A7F80000E94C73CAACDF894FFCF81 +:027F8A00800075 +:040000030000780081 +:00000001FF diff --git a/1.0.3/bootloaders/atmega/optiboot_atmega328p_8MHz.hex b/1.0.3/bootloaders/atmega/optiboot_atmega328p_8MHz.hex new file mode 100644 index 0000000..58f396e --- /dev/null +++ b/1.0.3/bootloaders/atmega/optiboot_atmega328p_8MHz.hex @@ -0,0 +1,67 @@ +:107C00001F92CDB7DEB7112484B714BE81FD06C024 +:107C100083FF03C08983F4D08981E3D185E0809319 +:107C2000810082E08093C00088E18093C10096E0EB +:107C30009093C20090E19093C400809360008EE026 +:107C4000809360003B9A86E028E13EEF91E030931C +:107C500085002093840096BBB09BFECF339AA895F5 +:107C60008150A9F7612C712C08E128E0F22EEE2456 +:107C7000E39435E0D32E41E1C42E13E08BD181345F +:107C800069F488D1898394D189818238F9F0813867 +:107C900011F485E001C083E076D17BC0823411F419 +:107CA00084E103C0853419F485E08ED172C0853536 +:107CB00049F470D1B82E6ED16B2C712C782A660CD9 +:107CC000771C66C0863521F484E07ED180E0E4CF65 +:107CD000843609F03FC05ED15DD1982E5BD161142E +:107CE00080E7780618F4F30117BFE895A12CBB24B0 +:107CF000B39450D1F50181935F019E12FACF6114C4 +:107D0000F0E77F0618F0F30117BFE89551D107B6E9 +:107D100000FCFDCFA301A0E0B1E08C9112969D0183 +:107D200021503109F901208190E0922BFA010C01D8 +:107D3000E7BEE89511244E5F5F4FA038F1E0BF0722 +:107D400061F7F301D7BEE89507B600FCFDCFC7BECB +:107D5000E8951FC0843769F41DD11CD1B82E1AD103 +:107D600027D1F30185913F010ED1BA94B110F9CF1B +:107D700010C0853739F41CD18EE105D185E903D1D6 +:107D80008FE08ACF813521F400936000F09260008B +:107D90000FD180E1F8D072CF8EBD0DB407FEFDCFBC +:107DA0008EB50895289885E0F7DF80E0F5DF289A02 +:107DB00081700895CF93C82F662321F060E086E09C +:107DC000F9DF289AEFDF8111FDCF28988C2FCF9112 +:107DD000E3CFCF92DF92EF92FF926B017C0160E0E4 +:107DE00083E0E8DF8E2DD8DF8D2DD6DF8C2DD4DF1C +:107DF00080E0D2DF289AFF90EF90DF90CF90089537 +:107E00009F92AF92BF92CF92DF92EF92FF920F9329 +:107E10001F93CF93DF9388E18093600010926000FE +:107E200084B18D6284B9289A2A9A8CB580658CBDFC +:107E300028988FE9B1DF80E0AFDF289A81508E3F2C +:107E400008F095C061E081E0B5DF80E0A5DF289A09 +:107E500060E070E0CB01BDDF863409F088C061E0EE +:107E600070E080E090E0B5DF8C3409F080C062E023 +:107E700070E080E090E0ADDF883509F078C066E022 +:107E800070E080E090E0A5DF8A3309F070C069E01F +:107E900070E080E090E09DDF8A3309F068C067E021 +:107EA00070E080E090E095DFC82F68E070E080E04F +:107EB00090E08FDFD0E0DC2FCC27C82BC0FD57C06F +:107EC000339AC12CD12C00E010E0BB24B39483E0A2 +:107ED000A82E95E0992E0C171D0770F5B801665F66 +:107EE0007F4F80E090E075DFE82EF12CB801655FF0 +:107EF0007F4F80E090E06DDFF82AF8010701B7BE00 +:107F0000E89511240E5F1F4FC8018F779927892BA1 +:107F100019F00C171D07F9F6F601A7BEE89507B68C +:107F200000FCFDCFF60197BEE89507B600FCFDCF3B +:107F3000F0E8CF0ED11CCFCF339881E187BFE89511 +:107F40002A9661E0C130D04810F482E501C088ED86 +:107F500031DF80E021DF80E01FDF80E01DDF289A35 +:107F600088E18093600088E080936000FFCFDF911C +:107F7000CF911F910F91FF90EF90DF90CF90BF9026 +:107F8000AF909F9008959091C00095FFFCCF809393 +:107F9000C6000895339A8091C00087FFFCCF80917E +:107FA000C00084FD01C0A8958091C600339A089551 +:107FB000F1DF803239F088E18093600088E08093BF +:107FC0006000FFCF84E1DFCFCF93C82FE3DFC15044 +:107FD000E9F7CF91EDCFE0E6F0E098E19083808380 +:107FE0000895282EE0E6F0E088E180831082EE27F5 +:047FF000FF270994CA +:027FFE0000057C +:0400000300007C007D +:00000001FF diff --git a/1.0.3/platform.txt b/1.0.3/platform.txt new file mode 100644 index 0000000..47e6cf5 --- /dev/null +++ b/1.0.3/platform.txt @@ -0,0 +1,124 @@ + +# xPablo EasyTherm platform. +# ------------------------------ +# +# For more info: +# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification + +name=xPablo.cz AVR based boards +version=1.0.0 + +# Derived from Arduino AVR 1.6.11. + +# AVR compile variables +# --------------------- + +compiler.warning_flags=-w +compiler.warning_flags.none=-w +compiler.warning_flags.default= +compiler.warning_flags.more=-Wall +compiler.warning_flags.all=-Wall -Wextra + +# Default "compiler.path" is correct, change only if you want to override the initial value +compiler.path={runtime.tools.avr-gcc.path}/bin/ +compiler.c.cmd=avr-gcc +compiler.c.flags=-c -g -Os {compiler.warning_flags} -std=gnu11 -ffunction-sections -fdata-sections -MMD +compiler.c.elf.flags={compiler.warning_flags} -Os -Wl,--gc-sections +compiler.c.elf.cmd=avr-gcc +compiler.S.flags=-c -g -x assembler-with-cpp +compiler.cpp.cmd=avr-g++ +compiler.cpp.flags=-c -g -Os {compiler.warning_flags} -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD +compiler.ar.cmd=avr-ar +compiler.ar.flags=rcs +compiler.objcopy.cmd=avr-objcopy +compiler.objcopy.eep.flags=-O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 +compiler.elf2hex.flags=-O ihex -R .eeprom +compiler.elf2hex.cmd=avr-objcopy +compiler.ldflags= +compiler.size.cmd=avr-size + +# This can be overridden in boards.txt +build.extra_flags= + +# These can be overridden in platform.local.txt +compiler.c.extra_flags= +compiler.c.elf.extra_flags= +compiler.S.extra_flags= +compiler.cpp.extra_flags= +compiler.ar.extra_flags= +compiler.objcopy.eep.extra_flags= +compiler.elf2hex.extra_flags= + +# AVR compile patterns +# -------------------- + +## Compile c files +recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" + +## Compile c++ files +recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" + +## Compile S files +recipe.S.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.S.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.S.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" + +## Create archives +# archive_file_path is needed for backwards compatibility with IDE 1.6.5 or older, IDE 1.6.6 or newer overrides this value +archive_file_path={build.path}/{archive_file} +recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{archive_file_path}" "{object_file}" + +## Combine gc-sections, archives, and objects +recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mmcu={build.mcu} {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" {object_files} "{build.path}/{archive_file}" "-L{build.path}" -lm + +## Create output files (.eep and .hex) +recipe.objcopy.eep.pattern="{compiler.path}{compiler.objcopy.cmd}" {compiler.objcopy.eep.flags} {compiler.objcopy.eep.extra_flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.eep" +recipe.objcopy.hex.pattern="{compiler.path}{compiler.elf2hex.cmd}" {compiler.elf2hex.flags} {compiler.elf2hex.extra_flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.hex" + +## Save hex +recipe.output.tmp_file={build.project_name}.hex +recipe.output.save_file={build.project_name}.{build.variant}.hex + +## Compute size +recipe.size.pattern="{compiler.path}{compiler.size.cmd}" -A "{build.path}/{build.project_name}.elf" +recipe.size.regex=^(?:\.text|\.data|\.bootloader)\s+([0-9]+).* +recipe.size.regex.data=^(?:\.data|\.bss|\.noinit)\s+([0-9]+).* +recipe.size.regex.eeprom=^(?:\.eeprom)\s+([0-9]+).* + +## Preprocessor +preproc.includes.flags=-w -x c++ -M -MG -MP +recipe.preproc.includes="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} {preproc.includes.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {includes} "{source_file}" + +preproc.macros.flags=-w -x c++ -E -CC +recipe.preproc.macros="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} {preproc.macros.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{preprocessed_file_path}" + +# AVR Uploader/Programmers tools +# ------------------------------ + +tools.avrdude.path={runtime.tools.avrdude.path} +tools.avrdude.cmd.path={path}/bin/avrdude +tools.avrdude.config.path={path}/etc/avrdude.conf + +tools.avrdude.upload.params.verbose=-v +tools.avrdude.upload.params.quiet=-q -q +tools.avrdude.upload.params.noverify=-V +tools.avrdude.upload.pattern="{cmd.path}" "-C{config.path}" {upload.verbose} {upload.verify} -p{build.mcu} -c{upload.protocol} -P{serial.port} -b{upload.speed} -D "-Uflash:w:{build.path}/{build.project_name}.hex:i" + +tools.avrdude.program.params.verbose=-v +tools.avrdude.program.params.quiet=-q -q +tools.avrdude.program.params.noverify=-V +tools.avrdude.program.pattern="{cmd.path}" "-C{config.path}" {program.verbose} {program.verify} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:{build.path}/{build.project_name}.hex:i" + +tools.avrdude.erase.params.verbose=-v +tools.avrdude.erase.params.quiet=-q -q +tools.avrdude.erase.pattern="{cmd.path}" "-C{config.path}" {erase.verbose} -p{build.mcu} -c{protocol} {program.extra_params} -e -Ulock:w:{bootloader.unlock_bits}:m -Uefuse:w:{bootloader.extended_fuses}:m -Uhfuse:w:{bootloader.high_fuses}:m -Ulfuse:w:{bootloader.low_fuses}:m + +tools.avrdude.bootloader.params.verbose=-v +tools.avrdude.bootloader.params.quiet=-q -q +tools.avrdude.bootloader.pattern="{cmd.path}" "-C{config.path}" {bootloader.verbose} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:{runtime.platform.path}/bootloaders/{bootloader.file}:i" -Ulock:w:{bootloader.lock_bits}:m + +tools.avrdude_remote.upload.pattern=/usr/bin/run-avrdude /tmp/sketch.hex {upload.verbose} -p{build.mcu} + +# USB Default Flags +# Default blank usb manufacturer will be filled in at compile time +# - from numeric vendor ID, set to Unknown otherwise +build.usb_manufacturer="Unknown" +build.usb_flags=-DUSB_VID={build.vid} -DUSB_PID={build.pid} '-DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}' diff --git a/1.0.3/variants/rfs/pins_arduino.h b/1.0.3/variants/rfs/pins_arduino.h new file mode 100644 index 0000000..e312475 --- /dev/null +++ b/1.0.3/variants/rfs/pins_arduino.h @@ -0,0 +1,223 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2007 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $ +*/ + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include + +#define NUM_DIGITAL_PINS 20 +#define NUM_ANALOG_INPUTS 6 +#define analogInputToDigitalPin(p) ((p < 6) ? (p) + 14 : -1) + +#if defined(__AVR_ATmega8__) + #define digitalPinHasPWM(p) ((p) == 9 || (p) == 10 || (p) == 11) +#else + #define digitalPinHasPWM(p) ((p) == 3 || (p) == 5 || (p) == 6 || (p) == 9 || (p) == 10 || (p) == 11) +#endif + +static const uint8_t SS = 10; +static const uint8_t MOSI = 11; +static const uint8_t MISO = 12; +static const uint8_t SCK = 13; + +static const uint8_t SDA = 18; +static const uint8_t SCL = 19; +#define LED_BUILTIN 8 + +static const uint8_t A0 = 14; +static const uint8_t A1 = 15; +static const uint8_t A2 = 16; +static const uint8_t A3 = 17; +static const uint8_t A4 = 18; +static const uint8_t A5 = 19; +static const uint8_t A6 = 20; +static const uint8_t A7 = 21; + +#define digitalPinToPCICR(p) (((p) >= 0 && (p) <= 21) ? (&PCICR) : ((uint8_t *)0)) +#define digitalPinToPCICRbit(p) (((p) <= 7) ? 2 : (((p) <= 13) ? 0 : 1)) +#define digitalPinToPCMSK(p) (((p) <= 7) ? (&PCMSK2) : (((p) <= 13) ? (&PCMSK0) : (((p) <= 21) ? (&PCMSK1) : ((uint8_t *)0)))) +#define digitalPinToPCMSKbit(p) (((p) <= 7) ? (p) : (((p) <= 13) ? ((p) - 8) : ((p) - 14))) + +#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : NOT_AN_INTERRUPT)) + +#ifdef ARDUINO_MAIN + +// On the Arduino board, digital pins are also used +// for the analog output (software PWM). Analog input +// pins are a separate set. + +// ATMEL ATMEGA8 & 168 / ARDUINO +// +// +-\/-+ +// PC6 1| |28 PC5 (AI 5) +// (D 0) PD0 2| |27 PC4 (AI 4) +// (D 1) PD1 3| |26 PC3 (AI 3) +// (D 2) PD2 4| |25 PC2 (AI 2) +// PWM+ (D 3) PD3 5| |24 PC1 (AI 1) +// (D 4) PD4 6| |23 PC0 (AI 0) +// VCC 7| |22 GND +// GND 8| |21 AREF +// PB6 9| |20 AVCC +// PB7 10| |19 PB5 (D 13) +// PWM+ (D 5) PD5 11| |18 PB4 (D 12) +// PWM+ (D 6) PD6 12| |17 PB3 (D 11) PWM +// (D 7) PD7 13| |16 PB2 (D 10) PWM +// (D 8) PB0 14| |15 PB1 (D 9) PWM +// +----+ +// +// (PWM+ indicates the additional PWM pins on the ATmega168.) + +// these arrays map port names (e.g. port B) to the +// appropriate addresses for various functions (e.g. reading +// and writing) +const uint16_t PROGMEM port_to_mode_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + (uint16_t) &DDRB, + (uint16_t) &DDRC, + (uint16_t) &DDRD, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + (uint16_t) &PORTB, + (uint16_t) &PORTC, + (uint16_t) &PORTD, +}; + +const uint16_t PROGMEM port_to_input_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + (uint16_t) &PINB, + (uint16_t) &PINC, + (uint16_t) &PIND, +}; + +const uint8_t PROGMEM digital_pin_to_port_PGM[] = { + PD, /* 0 */ + PD, + PD, + PD, + PD, + PD, + PD, + PD, + PB, /* 8 */ + PB, + PB, + PB, + PB, + PB, + PC, /* 14 */ + PC, + PC, + PC, + PC, + PC, +}; + +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { + _BV(0), /* 0, port D */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), /* 8, port B */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(0), /* 14, port C */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), +}; + +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { + NOT_ON_TIMER, /* 0 - port D */ + NOT_ON_TIMER, + NOT_ON_TIMER, + // on the ATmega168, digital pin 3 has hardware pwm +#if defined(__AVR_ATmega8__) + NOT_ON_TIMER, +#else + TIMER2B, +#endif + NOT_ON_TIMER, + // on the ATmega168, digital pins 5 and 6 have hardware pwm +#if defined(__AVR_ATmega8__) + NOT_ON_TIMER, + NOT_ON_TIMER, +#else + TIMER0B, + TIMER0A, +#endif + NOT_ON_TIMER, + NOT_ON_TIMER, /* 8 - port B */ + TIMER1A, + TIMER1B, +#if defined(__AVR_ATmega8__) + TIMER2, +#else + TIMER2A, +#endif + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, /* 14 - port C */ + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, +}; + +#endif + +// These serial port names are intended to allow libraries and architecture-neutral +// sketches to automatically default to the correct port name for a particular type +// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN, +// the first hardware serial port whose RX/TX pins are not dedicated to another use. +// +// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor +// +// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial +// +// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library +// +// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins. +// +// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX +// pins are NOT connected to anything by default. +#define SERIAL_PORT_MONITOR Serial +#define SERIAL_PORT_HARDWARE Serial + +#endif diff --git a/RFS-1.0.0.zip b/RFS-1.0.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..ce96659a60b7c4f2cd3ff9fa9bf251cb00a7bedd GIT binary patch literal 8773 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 literal 0 HcmV?d00001 diff --git a/RFS-1.0.1.zip b/RFS-1.0.1.zip new file mode 100644 index 0000000000000000000000000000000000000000..f2e5ad4602a0e55fa46779597cccbccd7a1d63b3 GIT binary patch literal 8785 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 literal 0 HcmV?d00001 diff --git a/RFS-1.0.2.zip b/RFS-1.0.2.zip new file mode 100644 index 0000000000000000000000000000000000000000..2ddc3555e2eedeb7abb2fe1386d026fb943e5132 GIT binary patch literal 8849 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 B$G89h literal 0 HcmV?d00001 diff --git a/RFS-1.0.3.zip b/RFS-1.0.3.zip new file mode 100644 index 0000000000000000000000000000000000000000..7e5c3f6984fc76fe8c9127e674ad85b116f33d3c GIT binary patch literal 8853 zcma)i1yEdDuj1&s9fA)o!QI{6HNgS|hv4oG!6mqBaOWqLcjec;@7C*6 zGiPS1SNH7QRcEi=Yb(k?Kw<#E0RRA*&Zg|o+n)yg^AigrGb0<5;{W)-0HO_#Wj&E; zbh`C97^`6u-4MFQEZU=;GLPmZ%qbvWo^i`D2b@ zCl)sHx7=fu}XVx7=i_+>hMpx;(_472}&qGs( z74m!R0eiPsPDgX?FKj7sky;TA9<0RaOv}BUS+#Dr1s5tC2tz_`q}Wk3m?7bp9%I<^ ze&G8COZtSs5@F+2-Lj)@#;xS47lsRr*4seT(CSId`B1VpEjeQBC{Q0RLhJ?DJv6p+ zf>lkCk5N@*%+Y1W9c%DqokZd1+`E**ELgoD>M_wc-x;UMot;f_>&y;F#pe76KVz8t zVs0iZEqQ)M7vhmK`S?%j7-rn|BdsRG9Mpu9CCTIP_Q@FcXOE&8L1eelhw6c+^2dfh zBtN+qCjj5U8 zpD-9eg{_CU4T#)1;SB&_jR^n%{|hFp`V0L|K|xiYg_B$VcQ7_qZhd-P4ay&Y>utAoZRwpEorN8IPla)#r`ugdGt!8=j{-F^zGwBt7#?b;gF~o=<1KXwc zie4=IE=yb+lYAFGQ(%DZ(S3PDHVJm5BrA(5RN~-MRkJL`ss9e^T=ihDfQPOqDN88i z)?+GlvMUVsU5&0@jWXF8Ha`U4!^sB@1^)~t3p&las8opVWOb=J5z#n$y|OLI1=3QL zhYd%EoFCJsdwQXIYh=vM*5Ytjz+7Q!s3w8!Tg74FrcVWK4s=|-HWeu&j%zm@BeLis zcL<-QHM5!{QFk$8`=KL;hTC?t7B4G-o;A zsI~Ogs0-&&8_F-jKc!R7Ng9>wdXY(YL8eRgUL5Y;<4c7~!ef9r>z#$ztQzJInlQXY z#Zwa1J+}uwycbTuTYm^E)Te{b{fc1C{E!L@ijI$EnNFWH5xO7{4VMIi)##s{2^4Xn zaZ}oPTM=Wmp3#UxXE;Lfb{Yk!!&?0WrnutO{f(nw)rghL@wTb#AP+_s-2hD!a#0k0 zYacqKODF#b_hz)>>xx0)iUd1Lf3k^u!5sz{nKXnc1UeE%=#*N}x z*)d122x+(yNw-I6Mlx`U&(jTup(?z0S}eh=pv+TrI%}9uNa?hUvaV-N%@n`gb{(&* zC@4N>SZg`m#0I>y_OP=AP26KEPT$V$k4uny{t z)gq*|9~Gf@?@++#;jyade9NP{LPC@Rzz#ku2}~J3Up7COUHNkgfAc#!sbv zwMB0@Qa^&H3MIW{@Kp>?8VWwQtTl*S`h#v+QrQTL*eL*cOj2f$MYZAc<~saE*UG;C z6eC$Bty`{1%;NIBXsYFkrK~Ut{pLV-Sa`cgZs!fri_B$Q$uSY^^-9bUmh{ z8tKBN-gh3N8|W1>!s~HdG0dShjwMxO0F>6PJKmy&cV!%@o$b;C_Rzv8fC3Y^tVE-` z^k(ruH4^hyPIeoY3C+dJd=|0Z0yZ^F`xHNpN5`Lg`w9ihZm3&;QfmmQ|Q8bl<_fw^M56*g@B0=W%npc)L`vPng{zP?!1ev#H%vkRxlR?GXQ=Yvf z;0b+Xb?lT!!|_5(EC_eia;l1!$hy3W0jrybs^H11q%&thr8nIbf$Cr?89Y0V6BRz1 zCes+ds!+!g@iI(H!F2}9sMdCYtwEV^IUODf%SEhO;CQyCUcNOn?d}A9P1yI_RAyw9 z-RgWjgjb^@573vY3U;l`I$Kf_tVmYS*v2r4%u29jROL%E+{Jh4QU4c;JAV$jxZ1k% z*0hr&2xWgqQJn<;Ay2CTBHRzurC|}q6JyJt>!qeZLu4`9@o?J)ov}P38Jn6AE@aBM zFWOkWwFA~42@k6LpAB7ks15>fPL}HF1W!P#exnXg)|pRG9*gfe{qVUbAkCHz^Sqh7 zjVt#xFSz`Wl|D2x;>FR}t9ZbC3n`(WS|yNq$>Bx5HF++8(B23Wi8EfvrR0DdNazsz zGClD;H#rci5AQf~WR%!3PiYj%t#KiVs;`$LLC8IQnfiptO?J|-!a?>vz-x5sn=0nf z$kpOoUw43gf%sC8z)YHSyYmXvb!#?X=95hb4(aLo;Z9)d1Doj9+*s|hog0(F%u;`T z_3kKxC*@}sxAuejCMMsBQIt3WMU?G|S)1*&9h)@#3nNZDn{F$ERAGGWD&==UOv--6 z&{t-uPxYrq)udkHvj%G|18^{`jwcJ=M{XY&t@#z>4BUn>f>|w_yj+iWm=1riFYp`M z#o!xvH8L03D7ZH8%tPf?5?9ewF)WBw%?n6eWfW_n(IfCD@;>drBcTUg-j-N7n;`gw z6ALhK<>tU&dhluZ#@{!{bS@l7;7pEiut_r;uk5}MUEKB$$mbsN;Ow@mpf87G5v4pq zkwT^eVo^OW_&PXpTLpZF^!uwe{b3GPI+N2%uqFHTd~-UkvbmQGv-L8M47+9nfM{7q z#Xg2_P8!m}ztoN7tn&a*@MT)a`y&fieNa>eZkVjsUaNv#;w$oE2-h?h+FGsm&b&Na z_D<~5L}a<#g^4Qsc2V+<8`uWbf95x})1K@dBZ6#YC7O{iC*$G%zBsrBMz~*+jWj$s zT}s^&0hfXJ#DMF(sfqUGT_W&B{m!#$uB5GZH>&?s^RXMNw`-D$*?(e?oL!ngro_uh zAs|4MrqZqL>FvRFB zMMABqFhdBg`nLCZ6K^iCofQY$3Y8itbX6v|CTnab#2{>l*vNgi%0kb@>$z96_hAan_;Jc|fKyqQH1-Bc;o;nK$ z-HAazfFsq1+FUcKm(6F!ciifLzxChL+uw}5RIq(@qQAGgePZd=X?Ydcb9z~7<~TFk zeTGysBp&M*n8LcEXewHo)nECF6B+3B4lyF$G1|2gYuTH?Gx*{LZl#ZC{Mp=mDhnam zl}C#EcvVmpLrfdO@opO$vQT`~o66=CvC($)9=Yl6`psXDQac+48OT-nZG@j2r*1p| z;II9ey|tke$j-s$*S>jG%f@b*6XoSpUznSCi7`LR+T0%sC4^pn4j_Y0@!`>M6(QrJ zH7DBV1l6pWOW!r6k0#O$Xt#*e>IK!#w*>CD=WhHgZG=v~Qk3DMRHA|_qiNDgDJbYN z${lveUgu^ISNhLYlJ-z1V^G?F9ax%yqD?c0(eznC| z8iJW0<|go&sFBqqV$C0@&MIcx-hE8shDksGiDgXOH4sIGu!`De=v375?(CXC6>2?i z-H0~^opqKp$JHF16v|VSusUr!9Jb{uWeKH&TxvQPpav^+N7%v@kra>J^U=p936<@L zyn$Alt5sBjZi1O&oP!Iwufpc>MuWHD$|Y+~j& z^^a!-(?7+?QP$p1353NC#LR(akA4?=-WMYragMP8AB~j>p+{COhaoTKWAA5AuotjY z*O`Hti)Vt$((4HnB!0N8qHu9^o&bE?avdUqCO-0CGPXw8YR2ssAk(hJaFE*Iv4)hb z9mS^_QU7#&%88jPH*jhz3}gM)ML|nFz8Xq+u74DRJf4!pnhOFyx*?pr^d`9^r145s zDVCJyUdZ%DQKxaw8DQ*OfE_lmAka-5m%Q{PqDw;MK3pd4TX5Wd!s*)tQ2@m22z`GH zzI}Uw>aLV@sejLNGI>>kU{9S5RR!%aZw*@!1??LxDfZW1%U16y&kGR9l^E5$yA%z{LUW;>LhXgY{-w1;yc=m8Nn8d5|J)) z0SqZc?8w+VA3HVT5EKRmQa?#!#agIK##V%Us^!8i3xJtrvwxFNOw89})aQLaHT&a8 zS_&hZ0sqwP$t`cX1s*t8;089#aLm)Z_&GM>EJT!b8rj048 z6`ICuC2>eIXwJv#q9Suf&)2YB?^Uxv&lh`mJ&grnu_=$Lwq?Kx^K#d5ey(41s+3Hibmo{BXvV+~g_R?z4kQ&?F}m9X}KuUFS`&QgcP z>7#NfnGUWW_ii9*8)4V0+?80ih!qqZx12cr&S3gh~aE zUW2ADbcYWiLGiv9>UJcb%2#XyW!@G?6wutoL`23ESN3~c2TMW{Iq9X$G@HUBA8lHz zYtYEgi%X+kT0o2<5Z)a&u(_jRrwPd}RSb$+Vr{la7!o^<%Z3S(J^fJ1s$#&7C4TqR z0Iz{PRR?T;ymQ+SGjg2n%J!7e2lR-1G>N7tNG3{|k)%bB(_>`!+xWtrINW(z(7lha zB%5i)`~#*&YyxR7R3}>@w6&w5!PJF+$P9j7&K!PWY#*+Xun^Oy?=#h+>|w+hp3Z6Y zbkojPk~o@=i-}hpimTgdRVO$!Qyj#(#6S>CESi*Ed|Ihq1AmU$G=JPBb?-=6o6LXj1`it&s1Xu%1c{J0IM3%|dV6R@(Ly@?hu~SbWMS5N` zTA6^D0`ae}ZEQ&xYl}U^2nmqAVkK%k}22Kn}~mCW&vs zLEo^s3VrDcawm#~HErgHjujMlsROgFAnPYVQXh&Wtkzk8q@lMVCfhyd4!<+bU|xq^ zXjefd%j!TPXkVICJmjMf=rxV2GAB&Tn8B69W(IwTszJTfGV#nSjwRCH+-A{d6$BX! zpiFBXv%VqXGWt$P!#aWK-vT(WVI5*%j&aa_Oc!I(lKDK;XUSs>HEC_iNBT?-^Dcur ze;WVXdZr>xi_g^mM4Yfwg;bpj=7R>~#RgEnaj%O!kR4PuQ$_+|v?0uPW(JQwbAaup zh$xbsp>K5AxWNS|(@_j4%^SBXsTGgYgu z^pUokZ+*ThzFZt1m(5NQ!|R*5O|;I+!do}}?>{gf&LS9%tas)|9AwUV3r#|MU~W_2 zA2Qz=2ufU^TM&kpfX1G`T=AMVr)fgi6r>+6OxGU}xcEpLBNxff{;)Q&Q1LcA-Q=yL zUY39twD3uz1Tn8G@K+1Wd?t_v>^Q&>=aF}v2|dfi>DWW4X`!_Ycf&ajrxg0I($DJF zQngrVDZ|1!>?NOlkGT#FHyHCZJ@k5lnLod#+qP+{UhZ=K&cXx|?4MuBH$SW6<2$h{ zKQP{=N#2AcGz&*M8o&u`%ys$#xoaYp;pC|eOdsP&7}?ui@)CF0iSqjXDss+cH$lU! zDD_={&sTQyXn7uj2>Fe=U4FEj4csbQfn^|N{kVN8tJLyd0h|=yUV&V~`|QMq?@N(O z<6j-LmxMn%oD$5?C2Z0p#dr@OT(!?}IqcEE58R)Sv#)QyyX$(BL6i0J4)E6L!J)~( zhlzvYfd7bGA&lHutcZ?G8BzpD#${3BFLI&vap);l;2Mr>8pbrjNj5DK&-3F6P>~{c zVNeGzYXz=8cE0F6W^=k^-451=T#9+G(Ih22O0hUp4TYiTnzn(Cz^Lbg(O%{d(oq7u z{&!r3^bd-XYSCTqGRMoqOXXw=JqSTsjPwy{0|2^I>FS1(Xuq0(lRhw0tP&&;mv@!GP*~}t_e5RD|tOUwwpk+BGZf* zz%a%qb@p|(EcFdp+ZtG0hw^3FbfFLaa4EFS0j4GqfT$U0Zg4f>uK{TdYhZ;;jjjl7 zzT1femI=PF0znI@3ee`Mk`odGV1kL(>Y`Oiby5oPy=j1vMwUKld=R09WMQBUQIH@@SrdBM82F@^Bn3vphLzS|l zU8K!)Ycz|%n`xFSZSY3BNF*>m?hJ?n91l4#iXK5(my-`-2D(5&xb&Eh#W40;Fi~7G zXB_9sI|jTlIkE{y-pB1C8)vMpUuzT-j4gFOmi4EP@Wr@cDyrQw59#s_R>lqP?tkTw za$}ECVhO3=p$w@fe223h*!6W@QVmpJtj#%@7$J?Yw_u0^W!QUQxvq?==CRnawHV_T z*UwiOA4P7|5Llm_cFgy&uBSqEso$k3FkXfW^l8YRETt}?v%46)_G)Uo<8>hK)%5@y zm6hHbl$IPQ-?SdLZp6&&F(C51l`mX)g-n@XM;#9pL#z=Pf^?l%Eh1)q{K$^Va!7?S zRV3kI{*9cY?jRm(mGJF_fmJ?RJmb4!LbWSlsKYasNn;DyY`d3h$o9+)&tx`VZ~yKK z)y{|HMBlY9?36$&n*rZbTH9-2GQM(=*IUOMf6Zvf8r2~@=_zxpX!R*`>}dI^Mp`@` zJFdNxX9Bx%vab#qFUa4#zWSrJgQoIB$BI%uZv?Ult{+y!-)u|hwVs9=nlV`!GpujQ zeDAYnRCc(l@p%Mus1mw~xD&fddS6&_?yDM&vxbh5!n^qCrg+v}qy^gDaZY*S(B0(N z*6?`LF-S-qo-*C#smLSU5b5|T`^Z;^uQhpAFZRiub0e?s5pkB3HlG%9xygvmNznGBjNX8GboUq4{kK9G25W zkncKyziY#jJi`9LMK6BQx>Fm)tRN@abcYfnoLN(;K3r^@kZeJp)7z(n#HnE7fKB6& z#SN8M=7~f*vi=dIZVNA=7+Xslc zxF1cnKHt^Led5+ZHSb7jkz*R^(WG~Gx=%|J7ggEJ`mLstP%jHxX0dBqb9;j=A|5<* zELdT^av-N*cl%mzrPxM;d4VRoEO{t7?nwob@h1n6J(`(}z*__xW;`P1ZOTz3wEh)^ z*8n$kD(mQS&MUH0{_0J~Y1rNFx%-MUg*0r4FD>Ci0+YR(yL;k5)1J0OzA>!5h;Q~N ztonB<>4#mw(MjAr)sc|-t%cE@!+z4Nkx=f{u=0Sz}p!hK^; z*orb>;241aU90~|U4GgxMgEulq1^w0`FHL9mnRs2i@CW+uit``Y|H*q5YHW{vOWX`$T`?|2eC_*zs@sHLEE<8SQWU z-?;K0bNNs3FSh*Ket~=b3I5HU{|NB!?D