From 911e9ac4e3874fce63a1685bf7262a022a1f60e4 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Sat, 22 Dec 2012 19:31:03 +0100 Subject: Fixed compile problems with avr gcc 4.6.2 (crosspack CrossPack-AVR-20121207.dmg) --- bootloaders/stk500v2/Makefile | 2 +- bootloaders/stk500v2/stk500boot.c | 118 ++++--- bootloaders/stk500v2/stk500boot_v2_mega2560.hex | 408 ++++++++++++++++++++++++ 3 files changed, 466 insertions(+), 62 deletions(-) create mode 100644 bootloaders/stk500v2/stk500boot_v2_mega2560.hex diff --git a/bootloaders/stk500v2/Makefile b/bootloaders/stk500v2/Makefile index 54c5f85..6b66a26 100755 --- a/bootloaders/stk500v2/Makefile +++ b/bootloaders/stk500v2/Makefile @@ -124,7 +124,7 @@ CINCS = CFLAGS = -g$(DEBUG) CFLAGS += $(CDEFS) $(CINCS) CFLAGS += -O$(OPT) -CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -mno-tablejump +CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -fno-jump-tables CFLAGS += -Wall -Wstrict-prototypes CFLAGS += -Wa,-adhlns=$(<:.c=.lst) CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) diff --git a/bootloaders/stk500v2/stk500boot.c b/bootloaders/stk500v2/stk500boot.c index 89eead1..3e8becc 100755 --- a/bootloaders/stk500v2/stk500boot.c +++ b/bootloaders/stk500v2/stk500boot.c @@ -1240,82 +1240,78 @@ unsigned long gEepromIndex; void PrintDecInt(int theNumber, int digitCnt); #ifdef _AVR_CPU_NAME_ - prog_char gTextMsg_CPU_Name[] PROGMEM = _AVR_CPU_NAME_; + const char gTextMsg_CPU_Name[] PROGMEM = _AVR_CPU_NAME_; #else - prog_char gTextMsg_CPU_Name[] PROGMEM = "UNKNOWN"; + const char gTextMsg_CPU_Name[] PROGMEM = "UNKNOWN"; #endif - prog_char gTextMsg_Explorer[] PROGMEM = "Arduino explorer stk500V2 by MLS"; - prog_char gTextMsg_Prompt[] PROGMEM = "Bootloader>"; - prog_char gTextMsg_HUH[] PROGMEM = "Huh?"; - prog_char gTextMsg_COMPILED_ON[] PROGMEM = "Compiled on = "; - prog_char gTextMsg_CPU_Type[] PROGMEM = "CPU Type = "; - prog_char gTextMsg_AVR_ARCH[] PROGMEM = "__AVR_ARCH__= "; - prog_char gTextMsg_AVR_LIBC[] PROGMEM = "AVR LibC Ver= "; - prog_char gTextMsg_GCC_VERSION[] PROGMEM = "GCC Version = "; - prog_char gTextMsg_CPU_SIGNATURE[] PROGMEM = "CPU ID = "; - prog_char gTextMsg_FUSE_BYTE_LOW[] PROGMEM = "Low fuse = "; - prog_char gTextMsg_FUSE_BYTE_HIGH[] PROGMEM = "High fuse = "; - prog_char gTextMsg_FUSE_BYTE_EXT[] PROGMEM = "Ext fuse = "; - prog_char gTextMsg_FUSE_BYTE_LOCK[] PROGMEM = "Lock fuse = "; - prog_char gTextMsg_GCC_DATE_STR[] PROGMEM = __DATE__; - prog_char gTextMsg_AVR_LIBC_VER_STR[] PROGMEM = __AVR_LIBC_VERSION_STRING__; - prog_char gTextMsg_GCC_VERSION_STR[] PROGMEM = __VERSION__; - prog_char gTextMsg_VECTOR_HEADER[] PROGMEM = "V# ADDR op code instruction addr Interrupt"; - prog_char gTextMsg_noVector[] PROGMEM = "no vector"; - prog_char gTextMsg_rjmp[] PROGMEM = "rjmp "; - prog_char gTextMsg_jmp[] PROGMEM = "jmp "; - prog_char gTextMsg_WHAT_PORT[] PROGMEM = "What port:"; - prog_char gTextMsg_PortNotSupported[] PROGMEM = "Port not supported"; - prog_char gTextMsg_MustBeLetter[] PROGMEM = "Must be a letter"; - prog_char gTextMsg_SPACE[] PROGMEM = " "; - prog_char gTextMsg_WriteToEEprom[] PROGMEM = "Writting EE"; - prog_char gTextMsg_ReadingEEprom[] PROGMEM = "Reading EE"; - prog_char gTextMsg_EEPROMerrorCnt[] PROGMEM = "EE err cnt="; - prog_char gTextMsg_PORT[] PROGMEM = "PORT"; + const char gTextMsg_Explorer[] PROGMEM = "Arduino explorer stk500V2 by MLS"; + const char gTextMsg_Prompt[] PROGMEM = "Bootloader>"; + const char gTextMsg_HUH[] PROGMEM = "Huh?"; + const char gTextMsg_COMPILED_ON[] PROGMEM = "Compiled on = "; + const char gTextMsg_CPU_Type[] PROGMEM = "CPU Type = "; + const char gTextMsg_AVR_ARCH[] PROGMEM = "__AVR_ARCH__= "; + const char gTextMsg_AVR_LIBC[] PROGMEM = "AVR LibC Ver= "; + const char gTextMsg_GCC_VERSION[] PROGMEM = "GCC Version = "; + const char gTextMsg_CPU_SIGNATURE[] PROGMEM = "CPU ID = "; + const char gTextMsg_FUSE_BYTE_LOW[] PROGMEM = "Low fuse = "; + const char gTextMsg_FUSE_BYTE_HIGH[] PROGMEM = "High fuse = "; + const char gTextMsg_FUSE_BYTE_EXT[] PROGMEM = "Ext fuse = "; + const char gTextMsg_FUSE_BYTE_LOCK[] PROGMEM = "Lock fuse = "; + const char gTextMsg_GCC_DATE_STR[] PROGMEM = __DATE__; + const char gTextMsg_AVR_LIBC_VER_STR[] PROGMEM = __AVR_LIBC_VERSION_STRING__; + const char gTextMsg_GCC_VERSION_STR[] PROGMEM = __VERSION__; + const char gTextMsg_VECTOR_HEADER[] PROGMEM = "V# ADDR op code instruction addr Interrupt"; + const char gTextMsg_noVector[] PROGMEM = "no vector"; + const char gTextMsg_rjmp[] PROGMEM = "rjmp "; + const char gTextMsg_jmp[] PROGMEM = "jmp "; + const char gTextMsg_WHAT_PORT[] PROGMEM = "What port:"; + const char gTextMsg_PortNotSupported[] PROGMEM = "Port not supported"; + const char gTextMsg_MustBeLetter[] PROGMEM = "Must be a letter"; + const char gTextMsg_SPACE[] PROGMEM = " "; + const char gTextMsg_WriteToEEprom[] PROGMEM = "Writting EE"; + const char gTextMsg_ReadingEEprom[] PROGMEM = "Reading EE"; + const char gTextMsg_EEPROMerrorCnt[] PROGMEM = "EE err cnt="; + const char gTextMsg_PORT[] PROGMEM = "PORT"; //************************************************************************ //* Help messages - prog_char gTextMsg_HELP_MSG_0[] PROGMEM = "0=Zero addr"; - prog_char gTextMsg_HELP_MSG_QM[] PROGMEM = "?=CPU stats"; - prog_char gTextMsg_HELP_MSG_AT[] PROGMEM = "@=EEPROM test"; - prog_char gTextMsg_HELP_MSG_B[] PROGMEM = "B=Blink LED"; - prog_char gTextMsg_HELP_MSG_E[] PROGMEM = "E=Dump EEPROM"; - prog_char gTextMsg_HELP_MSG_F[] PROGMEM = "F=Dump FLASH"; - prog_char gTextMsg_HELP_MSG_H[] PROGMEM = "H=Help"; - prog_char gTextMsg_HELP_MSG_L[] PROGMEM = "L=List I/O Ports"; -// prog_char gTextMsg_HELP_MSG_Q[] PROGMEM = "Q=Quit & jump to user pgm"; - prog_char gTextMsg_HELP_MSG_Q[] PROGMEM = "Q=Quit"; - prog_char gTextMsg_HELP_MSG_R[] PROGMEM = "R=Dump RAM"; - prog_char gTextMsg_HELP_MSG_V[] PROGMEM = "V=show interrupt Vectors"; - prog_char gTextMsg_HELP_MSG_Y[] PROGMEM = "Y=Port blink"; - - prog_char gTextMsg_END[] PROGMEM = "*"; + const char gTextMsg_HELP_MSG_0[] PROGMEM = "0=Zero addr"; + const char gTextMsg_HELP_MSG_QM[] PROGMEM = "?=CPU stats"; + const char gTextMsg_HELP_MSG_AT[] PROGMEM = "@=EEPROM test"; + const char gTextMsg_HELP_MSG_B[] PROGMEM = "B=Blink LED"; + const char gTextMsg_HELP_MSG_E[] PROGMEM = "E=Dump EEPROM"; + const char gTextMsg_HELP_MSG_F[] PROGMEM = "F=Dump FLASH"; + const char gTextMsg_HELP_MSG_H[] PROGMEM = "H=Help"; + const char gTextMsg_HELP_MSG_L[] PROGMEM = "L=List I/O Ports"; +// const char gTextMsg_HELP_MSG_Q[] PROGMEM = "Q=Quit & jump to user pgm"; + const char gTextMsg_HELP_MSG_Q[] PROGMEM = "Q=Quit"; + const char gTextMsg_HELP_MSG_R[] PROGMEM = "R=Dump RAM"; + const char gTextMsg_HELP_MSG_V[] PROGMEM = "V=show interrupt Vectors"; + const char gTextMsg_HELP_MSG_Y[] PROGMEM = "Y=Port blink"; + + const char gTextMsg_END[] PROGMEM = "*"; //************************************************************************ -void PrintFromPROGMEM(void *dataPtr, unsigned char offset) +void PrintFromPROGMEM(const void *dataPtr, unsigned char offset) { -uint8_t ii; char theChar; - ii = offset; - theChar = 1; + dataPtr += offset; - while (theChar != 0) - { + do { #if (FLASHEND > 0x10000) - theChar = pgm_read_byte_far((uint32_t)dataPtr + ii); + theChar = pgm_read_byte_far((uint16_t)dataPtr++); #else - theChar = pgm_read_byte_near((uint32_t)dataPtr + ii); + theChar = pgm_read_byte_near((uint16_t)dataPtr++); #endif if (theChar != 0) { sendchar(theChar); } - ii++; - } + } while (theChar != 0); } //************************************************************************ @@ -1327,7 +1323,7 @@ void PrintNewLine(void) //************************************************************************ -void PrintFromPROGMEMln(void *dataPtr, unsigned char offset) +void PrintFromPROGMEMln(const void *dataPtr, unsigned char offset) { PrintFromPROGMEM(dataPtr, offset); @@ -1523,7 +1519,7 @@ unsigned char *ramPtr; break; case kDUMP_EEPROM: - theValue = eeprom_read_byte((void *)myAddressPointer); + theValue = eeprom_read_byte((uint8_t *)(uint16_t)myAddressPointer); break; case kDUMP_RAM: @@ -1567,9 +1563,9 @@ int errorCount; PrintNewLine(); ii = 0; #if (FLASHEND > 0x10000) - while (((theChar = pgm_read_byte_far(gTextMsg_Explorer + ii)) != '*') && (ii < 512)) + while (((theChar = pgm_read_byte_far(((uint16_t)gTextMsg_Explorer) + ii)) != '*') && (ii < 512)) #else - while (((theChar = pgm_read_byte_near(gTextMsg_Explorer + ii)) != '*') && (ii < 512)) + while (((theChar = pgm_read_byte_near(((uint16_t)gTextMsg_Explorer) + ii)) != '*') && (ii < 512)) #endif { eeprom_write_byte((uint8_t *)ii, theChar); @@ -1592,9 +1588,9 @@ int errorCount; errorCount = 0; ii = 0; #if (FLASHEND > 0x10000) - while (((theChar = pgm_read_byte_far(gTextMsg_Explorer + ii)) != '*') && (ii < 512)) + while (((theChar = pgm_read_byte_far((uint16_t)gTextMsg_Explorer + ii)) != '*') && (ii < 512)) #else - while (((theChar = pgm_read_byte_near(gTextMsg_Explorer + ii)) != '*') && (ii < 512)) + while (((theChar = pgm_read_byte_near((uint16_t)gTextMsg_Explorer + ii)) != '*') && (ii < 512)) #endif { theEEPROMchar = eeprom_read_byte((uint8_t *)ii); diff --git a/bootloaders/stk500v2/stk500boot_v2_mega2560.hex b/bootloaders/stk500v2/stk500boot_v2_mega2560.hex new file mode 100644 index 0000000..a600ec2 --- /dev/null +++ b/bootloaders/stk500v2/stk500boot_v2_mega2560.hex @@ -0,0 +1,408 @@ +:020000023000CC +:10E000000D9489F10D94B3F10D94B3F10D94B3F126 +:10E010000D94B3F10D94B3F10D94B3F10D94B3F1EC +:10E020000D94B3F10D94B3F10D94B3F10D94B3F1DC +:10E030000D94B3F10D94B3F10D94B3F10D94B3F1CC +:10E040000D94B3F10D94B3F10D94B3F10D94B3F1BC +:10E050000D94B3F10D94B3F10D94B3F10D94B3F1AC +:10E060000D94B3F10D94B3F10D94B3F10D94B3F19C +:10E070000D94B3F10D94B3F10D94B3F10D94B3F18C +:10E080000D94B3F10D94B3F10D94B3F10D94B3F17C +:10E090000D94B3F10D94B3F10D94B3F10D94B3F16C +:10E0A0000D94B3F10D94B3F10D94B3F10D94B3F15C +:10E0B0000D94B3F10D94B3F10D94B3F10D94B3F14C +:10E0C0000D94B3F10D94B3F10D94B3F10D94B3F13C +:10E0D0000D94B3F10D94B3F10D94B3F10D94B3F12C +:10E0E0000D94B3F12A00593D506F727420626C692F +:10E0F0006E6B00563D73686F7720696E746572723F +:10E1000075707420566563746F727300523D447568 +:10E110006D702052414D00513D51756974004C3D68 +:10E120004C69737420492F4F20506F7274730048EC +:10E130003D48656C7000463D44756D7020464C410D +:10E14000534800453D44756D7020454550524F4D34 +:10E1500000423D426C696E6B204C454400403D4599 +:10E160004550524F4D2074657374003F3D435055E8 +:10E1700020737461747300303D5A65726F2061645E +:10E18000647200504F5254004545206572722063FE +:10E190006E743D0052656164696E672045450057A5 +:10E1A00072697474696E672045450020004D75736F +:10E1B000742062652061206C657474657200506F14 +:10E1C0007274206E6F7420737570706F72746564F2 +:10E1D000005768617420706F72743A006A6D702025 +:10E1E00000726A6D702020006E6F20766563746F18 +:10E1F00072005623202020414444522020206F707A +:10E2000020636F64652020202020696E737472750E +:10E210006374696F6E2061646472202020496E749B +:10E2200065727275707400342E362E3200312E38BD +:10E230002E30004465632032322032303132004CBF +:10E240006F636B20667573652020203D2000457844 +:10E25000742066757365202020203D200048696782 +:10E260006820667573652020203D20004C6F772064 +:10E2700066757365202020203D20004350552049BD +:10E28000442020202020203D200047434320566585 +:10E290007273696F6E203D2000415652204C6962B6 +:10E2A00043205665723D20005F5F4156525F4152E8 +:10E2B00043485F5F3D2000435055205479706520EE +:10E2C0002020203D2000436F6D70696C6564206FD5 +:10E2D0006E203D20004875683F00426F6F746C6F80 +:10E2E000616465723E0041726475696E6F20657885 +:10E2F000706C6F7265722073746B353030563220DB +:10E300006279204D4C530041546D6567613235365A +:10E31000300011241FBECFEFD1E2DEBFCDBF01E040 +:10E320000CBF12E0A0E0B2E0E2E3F9EF03E00BBFC4 +:10E3300002C007900D92A430B107D9F71BBE12E0BE +:10E34000A4E0B2E001C01D92A231B107E1F70F9441 +:10E35000F7F20D9497FC01E20EBF0FEF0DBF1124F1 +:10E360001FBE0D94F7F20D9400F08093C6008091CB +:10E37000C00086FFFCCF8091C00080648093C00005 +:10E38000089520E030E008C0EFECF7E03197F1F7B6 +:10E3900000C000002F5F3F4F28173907A9F70895E5 +:10E3A000CF93DF93EC01C60FD11DCE01A0E0B0E00A +:10E3B0002196ABBFFC018791882319F00F94B5F12A +:10E3C000F4CFDF91CF9108958DE00F94B5F18AE0FD +:10E3D0000F94B5F108950F94D0F10F94E4F10895DE +:10E3E000CF93DF93EC018991882319F00F94B5F155 +:10E3F000FACFDF91CF910895CF93C82F982F9295A0 +:10E400009F70892F805D8A3308F0895F0F94B5F182 +:10E41000CF708C2F805D8A3308F0895F0F94B5F13F +:10E42000CF9108950F931F93CF93DF93EC018B014E +:10E43000853691051CF4633071054CF0CE0164E61D +:10E4400070E00F9438FC862F805D0F94B5F1CB30CF +:10E45000D1051CF4023011056CF0CE0164E670E0C9 +:10E460000F9438FC6AE070E00F9438FC862F805DD2 +:10E470000F94B5F1CE016AE070E00F9438FC805D36 +:10E480000F94B5F1DF91CF911F910F910895809175 +:10E49000C00087FFFCCF8091C6000895CF93C82F9E +:10E4A00083E891EE60E00F94D0F18C2F0F94B5F1DA +:10E4B0000F94E4F1CF9108953F924F925F926F9243 +:10E4C0007F928F929F92AF92BF92CF92DF92EF9204 +:10E4D000FF920F931F93CF93DF93CDB7DEB7629771 +:10E4E0000FB6F894DEBF0FBECDBF582E6A017B0178 +:10E4F00010E144248EE2382E81E0C81680E0D80670 +:10E5000081E0E80680E0F80618F08E2D0F94FCF10B +:10E510008D2D0F94FCF18C2D0F94FCF180E20F9463 +:10E52000B5F18DE20F94B5F180E20F94B5F1198247 +:10E530003E010894611C711C4601570100E191E005 +:10E54000591651F0591620F0A2E05A1661F409C08C +:10E55000ABBEF401479007C0C4010F9481FC482E64 +:10E5600002C0F4014080842D0F94FCF180E20F94EE +:10E57000B5F1842D80528F3518F4F301408202C02A +:10E58000D3013C920894811C911CA11CB11C015028 +:10E590000894611C711C002391F680E190E0A0E0DA +:10E5A000B0E0C80ED91EEA1EFB1E198ACE010196E4 +:10E5B0000F94F0F10F94E4F1115009F09DCF6296A1 +:10E5C0000FB6F894DEBF0FBECDBFDF91CF911F9184 +:10E5D0000F91FF90EF90DF90CF90BF90AF909F9002 +:10E5E0008F907F906F905F904F903F900895CF9362 +:10E5F000DF93CDB7DEB7C054D1400FB6F894DEBF7D +:10E600000FBECDBF01E20EBF0FEF0DBF94B7F89460 +:10E61000A89514BE8091600088618093600010927C +:10E620006000789493FF05C0E0910402F091050228 +:10E630001995279A2F9A8091C00082608093C0001C +:10E6400080E18093C40088E18093C1000000CC2465 +:10E65000DD247601A7EC8A2EABE19A2EA12CB12CF9 +:10E6600000E010E025C005E00A95F1F700000894ED +:10E67000C11CD11CE11CF11C01E010E021E2C2161A +:10E680002EE4D20620E0E20620E0F20610F400E0DC +:10E6900010E0C701B601A50194010F944BFCDC0109 +:10E6A000CB010097A105B10519F485B1805885B952 +:10E6B0008091C00087FD03C001151105A1F2C801BA +:10E6C00001968130910511F00D9419FC0D94D4FB45 +:10E6D00080E090E081309105C9F41FC00196A11D32 +:10E6E000B11D813032E193073AE7A30730E0B30769 +:10E6F00080F0C15CDE4F88819981CF53D140AFEF6C +:10E700008F3F9A0719F0EE27FF27099480E090E0E9 +:10E71000DC013091C00037FFE1CF3091C600089492 +:10E72000E11CF11C313209F042C5BAE0EB16F104EC +:10E7300008F03DC56F5F7F4F6330710509F039C543 +:10E740000FC081E20F94B5F101501040D1F70F9442 +:10E75000E4F10894E108F108E114F10481F412C035 +:10E76000C95DDE4FF982E882C752D140C55DDE4FF8 +:10E7700019830883CB52D140F5E0EF2EF12C09E14B +:10E7800010E0DFCF10920E0210920F0210921002D2 +:10E790001092110210920A0210920B0210920C02B7 +:10E7A00010920D02109206021092070210920802B7 +:10E7B0001092090286EE92EE60E00F94EBF18AED82 +:10E7C00092EE60E00F94D0F10F9447F2182F80364C +:10E7D00008F01F75103230F0812F0F94B5F180E2F0 +:10E7E0000F94B5F1183409F4B5C11934B8F41234E2 +:10E7F00009F446C1133458F4103319F1103308F4F6 +:10E80000D3C41F33A1F1103409F0CEC4B9C01534FC +:10E8100009F44DC1163409F0C7C477C1123509F4A3 +:10E8200009C2133538F41C3409F4D3C1113509F089 +:10E83000BBC4F6C1163509F422C2193509F0B4C4B7 +:10E84000A8C387E791EE62E00F94EBF110920A0201 +:10E8500010920B0210920C0210920D0210920E02F6 +:10E8600010920F02109210021092110200C18BE65A +:10E8700091EE62E00F94EBF186EE92EE60E00F9481 +:10E88000EBF186EC92EE60E00F94D0F183E392EE30 +:10E8900060E00F94EBF187EB92EE60E00F94D0F123 +:10E8A00087E093EE60E00F94EBF188EA92EE60E08F +:10E8B0000F94D0F186E090E061E070E00F9412F2E6 +:10E8C0000F94E4F18AE892EE60E00F94D0F187E2D1 +:10E8D00092EE60E00F94EBF189E992EE60E00F9424 +:10E8E000D0F18DE292EE60E00F94EBF18BE792EEC7 +:10E8F00060E00F94D0F18EE10F94FCF188E90F9461 +:10E90000FCF181E00F94FCF10F94E4F18CE692EEBF +:10E9100060E00F94D0F119E0E0E0F0E010935700D0 +:10E9200084910F94FCF10F94E4F18DE592EE60E098 +:10E930000F94D0F1E3E0F0E01093570084910F942E +:10E94000FCF10F94E4F18EE492EE60E00F94D0F1CC +:10E95000E2E0F0E01093570084910F94FCF10F94E3 +:10E96000E4F18FE392EE60E00F94D0F1E1E0F0E0AB +:10E970001093570084910F94FCF10F94E4F11FCF92 +:10E980008DE591EE62E00F94EBF18FE991EE60E09E +:10E990000F94EBF10F94E4F1EE24FF2412C0C701B1 +:10E9A000612F0F9489FC112331F48BEA91EE60E022 +:10E9B0000F94D0F103C0812F0F94B5F10894E11C9E +:10E9C000F11CC7018A519D41A0E0B0E0ABBFFC0142 +:10E9D00017911A3229F0E0E0EE16E2E0FE06F9F6B1 +:10E9E0000F94E4F10F94E4F184E991EE60E00F9468 +:10E9F000EBF10F94E4F1CC24DD24EE24FF2416C0C7 +:10EA0000C7010F9481FC182F882331F48BEA91EE13 +:10EA100060E00F94D0F102C00F94B5F1101719F017 +:10EA20000894C11CD11C0894E11CF11C87010A51F7 +:10EA30001D4120E030E02BBFF80107910A3229F098 +:10EA4000F0E0EF16F2E0FF06D9F60F94E4F10F9430 +:10EA5000E4F188E891EE60E00F94D0F1C60161E046 +:10EA600070E00F9412F20F94E4F10F94E4F110921D +:10EA700006021092070210920802109209029FCE1D +:10EA800081E591EE62E00F94EBF1279A2F9A0AC08C +:10EA90002F9884E690E00F94C1F12F9A84E690E0DD +:10EAA0000F94C1F18091C00087FFF2CF77C383E458 +:10EAB00091EE62E00F94EBF1409106025091070253 +:10EAC000609108027091090281E00F945CF28091DC +:10EAD000060290910702A0910802B09109028050AD +:10EAE0009F4FAF4FBF4F8093060290930702A093B2 +:10EAF0000802B0930902803000E1900700E0A0070F +:10EB000000E0B00708F45BCEB2CF86E391EE62E09E +:10EB10000F94EBF140910A0250910B0260910C02AC +:10EB200070910D0280E00F945CF280910A02909146 +:10EB30000B02A0910C02B0910D0280509F4FAF4F7D +:10EB4000BF4F80930A0290930B02A0930C02B093E4 +:10EB50000D0235CE8FE291EE62E00F94EBF187E784 +:10EB600091EE60E00F94EBF18BE691EE60E00F9494 +:10EB7000EBF18DE591EE60E00F94EBF181E591EE24 +:10EB800060E00F94EBF183E491EE60E00F94EBF121 +:10EB900086E391EE60E00F94EBF18FE291EE60E09E +:10EBA0000F94EBF18EE191EE60E00F94EBF187E1D1 +:10EBB00091EE60E00F94EBF18CE091EE60E00F9449 +:10EBC000EBF183EF90EE60E00F94EBF186EE90EEC8 +:10EBD000F3CD8EE191EE62E00F94EBF181E40F94BE +:10EBE0004EF282E40F944EF283E40F944EF284E4EA +:10EBF0000F944EF285E40F944EF286E40F944EF299 +:10EC000087E40F944EF288E40F944EF28AE40F9456 +:10EC10004EF28BE40F944EF28CE40F944EF2CFCD73 +:10EC200087E191EE62E00F94EBF122243324442437 +:10EC3000439413C38CE091EE62E00F94EBF14091AA +:10EC40000E0250910F02609110027091110282E049 +:10EC50000F945CF280910E0290910F02A09110022D +:10EC6000B091110280509F4FAF4FBF4F80930E0263 +:10EC700090930F02A0931002B0931102A0CD83EFE6 +:10EC800090EE62E00F94EBF187E093EE60E00F947A +:10EC9000EBF182EF91EE60E00F94EBF1C75DDE4F98 +:10ECA00019821882C952D140442455243201A3014B +:10ECB00092015695479537952795CF5CDE4F28836F +:10ECC00039834A835B83C153D140C75DDE4F48819E +:10ECD0005981C952D1404F5F5F4FC75DDE4F5983A5 +:10ECE0004883C952D140CA0162E070E00F9412F229 +:10ECF00080E20F94B5F18DE20F94B5F180E20F94AC +:10ED0000B5F180E00F94FCF1CF5CDE4F8881C153F8 +:10ED1000D1400F94FCF180E20F94B5F18DE30F9494 +:10ED2000B5F180E20F94B5F16BBEF2018790682DCA +:10ED300070E080E090E0C35DDE4F688379838A8372 +:10ED40009B83CD52D140D301C2010196A11DB11DBB +:10ED5000ABBFFC018791082F10E020E030E0CB5CD6 +:10ED6000DE4F088319832A833B83C553D140930127 +:10ED700082010D5F1F4F2F4F3F4FB301A2014E5F26 +:10ED80005F4F6F4F7F4F6BBFFA01379044E050E009 +:10ED900060E070E0440E551E661E771E2BBFF80122 +:10EDA0001791CB5CDE4F288139814A815B81C55345 +:10EDB000D140CC24D22EE32EF42EC35DDE4F488109 +:10EDC00059816A817B81CD52D140C40ED51EE61E89 +:10EDD000F71E0F94FCF180E20F94B5F1882D0F948B +:10EDE000FCF180E20F94B5F1812F0F94FCF180E2E9 +:10EDF0000F94B5F1832D0F94FCF180E20F94B5F1DF +:10EE00005FEFC5165FEFD50650E0E50650E0F5066A +:10EE100031F488EE91EE60E00F94D0F1ADC0D701EF +:10EE2000C6018070907CA070B070803060EC960756 +:10EE300060E0A60760E0B60701F57FEF872E7FE36D +:10EE4000972EA12CB12C8C209D20AE20BF20CF5C12 +:10EE5000DE4FC880D980EA80FB80C153D140C80C06 +:10EE6000D91CEA1CFB1CCC0CDD1CEE1CFF1C81EE2B +:10EE700091EE60E00F94D0F16AC0D701C6018E70A8 +:10EE80009E7FA070B0708C3074E9970770E0A70780 +:10EE900070E0B70709F070C0812F90E0A0E0B0E00B +:10EEA0008824982EA92EBA2E830C911CA11CB11C6B +:10EEB000C35DDE4F88819981AA81BB81CD52D1404B +:10EEC00081709070A070B070DC0199278827880E3F +:10EED000991EAA1EBB1EC35DDE4F88819981AA813F +:10EEE000BB81CD52D140807F9070A070B07041E165 +:10EEF000880F991FAA1FBB1F4A95D1F7880E991E2C +:10EF0000AA1EBB1ECB5CDE4F88819981AA81BB8182 +:10EF1000C553D14081709070A070B07055E1880FDA +:10EF2000991FAA1FBB1F5A95D1F7880E991EAA1EBA +:10EF3000BB1E75016401CC0CDD1CEE1CFF1C8CEDAE +:10EF400091EE60E00F94D0F18A2D0F94FCF1892DA1 +:10EF50000F94FCF1882D0F94FCF180E20F94B5F131 +:10EF60008EE30F94B5F18E2D0F94FCF18D2D0F943F +:10EF7000FCF18C2D0F94FCF10F94E4F1C75DDE4F92 +:10EF800008811981C952D1400933110509F08FCE8A +:10EF900016CC86EE90EE62E00F94EBF181ED91EEEF +:10EFA00060E00F94D0F10F9447F2182F1F75812F56 +:10EFB0000F94B5F10F94E4F1812F81548A3108F058 +:10EFC000F0C0163409F477C0173490F4133409F400 +:10EFD00042C0143430F41134F1F0123409F0DBC0C3 +:10EFE0002AC0143409F447C0153409F0D4C053C002 +:10EFF0001A3409F494C01B3438F4173409F46BC084 +:10F00000183409F0C8C077C01B3409F49CC01C3404 +:10F0100009F0C1C0ACC08FEF81B907C082B1809543 +:10F0200082B988EC90E00F94C1F18091C00087FF15 +:10F03000F5CF12B8B3C08FEF84B907C085B1809502 +:10F0400085B988EC90E00F94C1F18091C00087FFF2 +:10F05000F5CF15B8A3C08FEF87B907C088B18095E9 +:10F0600088B988EC90E00F94C1F18091C00087FFCF +:10F07000F5CF18B893C08FEF8AB907C08BB18095D0 +:10F080008BB988EC90E00F94C1F18091C00087FFAC +:10F09000F5CF1BB883C08FEF8DB907C08EB18095B7 +:10F0A0008EB988EC90E00F94C1F18091C00087FF89 +:10F0B000F5CF1EB873C08FEF80BB07C081B38095BA +:10F0C00081BB88EC90E00F94C1F18091C00087FF74 +:10F0D000F5CF11BA63C08FEF83BB07C084B38095AF +:10F0E00084BB88EC90E00F94C1F18091C00087FF51 +:10F0F000F5CF14BA53C08FEF8093010109C08091FE +:10F10000020180958093020188EC90E00F94C1F198 +:10F110008091C00087FFF3CF109202013FC08FEFB4 +:10F120008093040109C080910501809580930501B9 +:10F1300088EC90E00F94C1F18091C00087FFF3CF7D +:10F14000109205012BC08FEF8093070109C08091B9 +:10F15000080180958093080188EC90E00F94C1F13C +:10F160008091C00087FFF3CF1092080117C08FEF86 +:10F1700080930A0109C080910B01809580930B0157 +:10F1800088EC90E00F94C1F18091C00087FFF3CF2D +:10F1900010920B0103C08EEB91EE0ECB0F9447F251 +:10F1A0000ECB8DEA91EE08CB85ED92EE05CB60E0BB +:10F1B00070E02330F9F0243028F4213071F022304F +:10F1C000A0F407C0253029F12530D8F02630A1F56C +:10F1D0002FC03B3109F07CCA40C3C326CA5DDE4F55 +:10F1E0003883C652D14022E073CA532F40E0C32671 +:10F1F00023E06ECA832F90E0482B592BC32624E0CE +:10F2000067CA3E3009F02EC3C32600E010E025E0B7 +:10F210005FCAE1E0F0E0EC0FFD1FE00FF11F30836B +:10F220000F5F1F4FC3260417150709F051CA1DC3EE +:10F230003C1509F017C303C0273009F049CA1B0168 +:10F24000C95DDE4FF982E882C752D140C55DDE4F0D +:10F2500019830883CB52D14044249981933109F416 +:10F260000AC19431C8F4963009F4D0C0973050F4F4 +:10F27000923009F4FEC0933009F46AC0913009F06D +:10F2800048C24FC0913109F470C0923108F0B0C04B +:10F29000903109F03EC2EDC0983109F483C0993134 +:10F2A00050F4953109F4E7C0953108F4B4C19631B2 +:10F2B00009F02FC2B0C19A3109F467C09A3108F43D +:10F2C00085C09B3109F454C09D3109F022C28D8163 +:10F2D000803339F49F819923A9F09130A9F4E8E9AA +:10F2E00016C0982F907591F0803519F4E0E0F0E0A9 +:10F2F00004C0883559F4E3E0F0E099E090935700BA +:10F30000E49105C0EEE103C0E1E001C0E0E01A8253 +:10F310001B828C831D82EE831F8207E0E02EF12C7E +:10F32000FDC11A8288E08B8381E48C8386E58D831E +:10F3300082E58E8389E48F8383E5888780E58987EA +:10F340008FE58A8782E38B871BE0E12EF12CE6C1F3 +:10F35000EA81E059E33028F4F0E0E050FE4F80818C +:10F3600001C080E01A828B833FC04424439481C053 +:10F370008D81882321F0813021F488E903C08EE15A +:10F3800001C081E01A828B8308C01A82E1E0F0E0BC +:10F3900089E080935700E491EB831C82B4E0EB2E6C +:10F3A000F12CBCC18B81803549F48C81883019F4F3 +:10F3B000E2E0F0E005C0E0E0F0E002C0E3E0F0E011 +:10F3C00089E080935700E4911A82E6CF8D81836CA7 +:10F3D00099E0E1E0F0E0082E90935700E89507B639 +:10F3E00000FCFDCF1A821B82A3E0EA2EF12C96C10D +:10F3F00080EC8A83F2E0EF2EF12CCE5DDE4F188296 +:10F4000019821A821B82C252D14088C18A8190E03F +:10F41000A0E0B0E0582F4427332722278B8190E0CB +:10F42000A0E0B0E0DC0199278827282B392B4A2B54 +:10F430005B2B8D8190E0A0E0B0E0282B392B4A2B8C +:10F440005B2B8C8190E0A0E0B0E0BA2FA92F982F21 +:10F450008827282B392B4A2B5B2B220F331F441F65 +:10F46000551FC25EDE4F288339834A835B83CE51AA +:10F47000D1401A8250C13A81C65CDE4F3883CA53EC +:10F48000D140C75CDE4F1882C953D1402B8130E098 +:10F49000C75CDE4F08811981C953D140202B312B25 +:10F4A000933109F079C0CE5DDE4F488159816A8180 +:10F4B0007B81C252D140403080EC580783E068071E +:10F4C00080E07807F0F483E0FA0160935B008093BA +:10F4D0005700E89507B600FCFDCFCE5DDE4F4881B2 +:10F4E00059816A817B81C252D14040505F4F6F4F3A +:10F4F0007F4FCE5DDE4F488359836A837B83C25240 +:10F50000D1408B85DE011D96C25EDE4F4881598158 +:10F510006A817B81CE51D14011E0FD01319790810C +:10F52000C45CDE4F9883CC53D140C55CDE4F18825B +:10F53000CB53D14090E0C55CDE4FE881F981CB53DD +:10F54000D1408E2B9F2B0C01FA0160935B0010932E +:10F550005700E89511244E5F5F4F6F4F7F4F225049 +:10F56000304019F08C911296D8CF85E0C25EDE4F04 +:10F57000088119812A813B81CE51D140F801209325 +:10F580005B0080935700E89507B600FCFDCF81E152 +:10F5900080935700E89535C0F901C25EDE4F48817F +:10F5A00059816A817B81CE51D1408E01055F1F4F09 +:10F5B00041BDBB27A72F962F852F82BD4F5F5F4F81 +:10F5C0006F4F7F4FD8018D918D0180BDFA9AF99AC6 +:10F5D000F999FECF319761F7C9010197AC0160E05D +:10F5E00070E04F5F5F4F6F4F7F4FC25EDE4F08810D +:10F5F00019812A813B81CE51D140400F511F621F9A +:10F60000731F1A82C25EDE4F488359836A837B83ED +:10F61000CE51D14080C01A81C25CDE4F1883CE53D8 +:10F62000D140C35CDE4F1882CD53D1402B8130E0F6 +:10F63000C35CDE4F08811981CD53D140202B312B83 +:10F64000B3E0EB2EF12CE20EF31E1A82943119F581 +:10F65000DE011396C25EDE4F488159816A817B814B +:10F66000CE51D1406BBFFA01879196918C93119640 +:10F670009C93119712964E5F5F4F6F4F7F4F2250B2 +:10F68000304081F7C25EDE4F488359836A837B83B3 +:10F69000CE51D1403CC0F901C25EDE4F4881598154 +:10F6A0006A817B81CE51D1408E010D5F1F4F41BDDC +:10F6B000BB27A72F962F852F82BD4F5F5F4F6F4FC0 +:10F6C0007F4FF89A80B5D8018D938D01319779F7E6 +:10F6D000C9010197A0E0B0E00196A11DB11DC25E75 +:10F6E000DE4F488159816A817B81CE51D140480FDC +:10F6F000591F6A1F7B1FC25EDE4F488359836A838E +:10F700007B83CE51D140DE011396A20FB31F1C9212 +:10F7100005C080EC8A8332E0E32EF12C8BE10F945C +:10F72000B5F1CA5DDE4F8881C652D1400F94B5F164 +:10F730008F2D0F94B5F18E2D0F94B5F18EE00F94AF +:10F74000B5F125E1C22ECA5DDE4F2881C652D140F7 +:10F75000C226CE24CF244E010894811C911C0AC0DD +:10F76000D4011D914D01812F0F94B5F1C12608944C +:10F77000E108F108E114F10499F78C2D0F94B5F12B +:10F78000CA5DDE4F0881C652D1400F5FCA5DDE4FB1 +:10F790000883C652D14085B1805885B9442009F00C +:10F7A00048C080E090E033C0C95DDE4F1982188206 +:10F7B000C752D140EE24FF242224CC24C55DDE4F65 +:10F7C00019821882CB52D140CE5DDE4F1882198249 +:10F7D0001A821B82C252D140C25EDE4F1882198249 +:10F7E0001A821B82CE51D14020E030E0A9014BBFEC +:10F7F000F90147915691C15CDE4F59834883CF533D +:10F80000D140CA5DDE4F2882C652D140170140E088 +:10F8100050E020E0B101C95DDE4FE880F980C752B9 +:10F82000D140C55DDE4F08811981CB52D1400D9486 +:10F830006AF327982F9884E690E00F94C1F10000B6 +:10F840008091C0008D7F8093C00081E1809357003C +:10F85000E895EE27FF270994FFCF9BE1C92E21E011 +:10F860000D9468F320E00D9468F326E00D9468F39E +:10F8700097FB092E07260AD077FD04D02ED006D09C +:10F8800000201AF4709561957F4F0895F6F79095D2 +:10F8900081959F4F0895A1E21A2EAA1BBB1BFD0163 +:10F8A0000DC0AA1FBB1FEE1FFF1FA217B307E4075F +:10F8B000F50720F0A21BB30BE40BF50B661F771FB7 +:10F8C000881F991F1A9469F7609570958095909597 +:10F8D0009B01AC01BD01CF010895AA1BBB1B51E1E7 +:10F8E00007C0AA1FBB1FA617B70710F0A61BB70BB0 +:10F8F000881F991F5A95A9F780959095BC01CD0155 +:10F900000895F999FECF92BD81BDF89A992780B5E7 +:10F910000895262FF999FECF1FBA92BD81BD20BD53 +:10F920000FB6F894FA9AF99A0FBE01960895F894D2 +:02F93000FFCF07 +:04F932000F020A00B6 +:040000033000E000E9 +:00000001FF -- cgit v1.2.3-18-g5258