diff --git a/BaS_gcc/.gdbinit b/BaS_gcc/.gdbinit index cd00d0a..e49794d 100644 --- a/BaS_gcc/.gdbinit +++ b/BaS_gcc/.gdbinit @@ -1,14 +1,14 @@ #set disassemble-next-line on define tr #!killall m68k-bdm-gdbserver - target remote | m68k-bdm-gdbserver pipe /dev/bdmcf3 + #target remote | m68k-bdm-gdbserver pipe /dev/bdmcf3 #target remote localhost:1234 - #target remote | m68k-bdm-gdbserver pipe /dev/tblcf1 + target remote | m68k-bdm-gdbserver pipe /dev/tblcf2 #target dbug /dev/ttyS0 #monitor bdm-reset end define tbtr - target remote | m68k-bdm-gdbserver pipe /dev/tblcf3 + target remote | m68k-bdm-gdbserver pipe /dev/tblcf2 end source mcf5474.gdb set breakpoint auto-hw diff --git a/BaS_gcc/BaS_gcc.config b/BaS_gcc/BaS_gcc.config index c79b3e5..2fafefa 100644 --- a/BaS_gcc/BaS_gcc.config +++ b/BaS_gcc/BaS_gcc.config @@ -1,2 +1,3 @@ // ADD PREDEFINED MACROS HERE! -#define MACHINE_FIREBEE +//#define MACHINE_FIREBEE +#define MACHINE_M5484LITE diff --git a/BaS_gcc/BaS_gcc.files b/BaS_gcc/BaS_gcc.files index 27f7931..677b349 100644 --- a/BaS_gcc/BaS_gcc.files +++ b/BaS_gcc/BaS_gcc.files @@ -452,7 +452,6 @@ tos/jtagwait/jtagwait.files tos/jtagwait/jtagwait.includes tos/jtagwait/Makefile tos/jtagwait/mapfile -tos/pci_test/include/bas_printf.h tos/pci_test/include/bas_string.h tos/pci_test/include/driver_vec.h tos/pci_test/include/MCF5475.h @@ -481,8 +480,6 @@ tos/pci_test/include/MCF5475_USB.h tos/pci_test/include/MCF5475_XLB.h tos/pci_test/m5475/mshort/pci_test.prg tos/pci_test/m5475/pci_test.prg -tos/pci_test/sources/bas_printf.c -tos/pci_test/sources/bas_string.c tos/pci_test/sources/pci_test.c tos/pci_test/sources/printf_helper.S tos/pci_test/depend @@ -733,3 +730,166 @@ tos/vmem_test/Makefile tos/Makefile tos/fpga_test/sources/fpga_test.c include/debug.h +tos/bascook/sources/bascook.c +tos/bascook/Makefile +tos/fpga_test/include/bas_printf.h +tos/fpga_test/include/bas_string.h +tos/fpga_test/include/driver_vec.h +tos/fpga_test/include/MCF5475.h +tos/fpga_test/include/MCF5475_CLOCK.h +tos/fpga_test/include/MCF5475_CTM.h +tos/fpga_test/include/MCF5475_DMA.h +tos/fpga_test/include/MCF5475_DSPI.h +tos/fpga_test/include/MCF5475_EPORT.h +tos/fpga_test/include/MCF5475_FBCS.h +tos/fpga_test/include/MCF5475_FEC.h +tos/fpga_test/include/MCF5475_GPIO.h +tos/fpga_test/include/MCF5475_GPT.h +tos/fpga_test/include/MCF5475_I2C.h +tos/fpga_test/include/MCF5475_INTC.h +tos/fpga_test/include/MCF5475_MMU.h +tos/fpga_test/include/MCF5475_PAD.h +tos/fpga_test/include/MCF5475_PCI.h +tos/fpga_test/include/MCF5475_PCIARB.h +tos/fpga_test/include/MCF5475_PSC.h +tos/fpga_test/include/MCF5475_SDRAMC.h +tos/fpga_test/include/MCF5475_SEC.h +tos/fpga_test/include/MCF5475_SIU.h +tos/fpga_test/include/MCF5475_SLT.h +tos/fpga_test/include/MCF5475_SRAM.h +tos/fpga_test/include/MCF5475_USB.h +tos/fpga_test/include/MCF5475_XLB.h +tos/fpga_test/sources/bas_printf.c +tos/fpga_test/sources/bas_string.c +tos/fpga_test/sources/fpga_test.c +tos/fpga_test/sources/printf_helper.S +tos/fpga_test/sources/vmem_test.c +tos/fpga_test/Makefile +tos/jtagwait/include/bas_printf.h +tos/jtagwait/include/bas_string.h +tos/jtagwait/include/driver_vec.h +tos/jtagwait/include/MCF5475.h +tos/jtagwait/include/MCF5475_CLOCK.h +tos/jtagwait/include/MCF5475_CTM.h +tos/jtagwait/include/MCF5475_DMA.h +tos/jtagwait/include/MCF5475_DSPI.h +tos/jtagwait/include/MCF5475_EPORT.h +tos/jtagwait/include/MCF5475_FBCS.h +tos/jtagwait/include/MCF5475_FEC.h +tos/jtagwait/include/MCF5475_GPIO.h +tos/jtagwait/include/MCF5475_GPT.h +tos/jtagwait/include/MCF5475_I2C.h +tos/jtagwait/include/MCF5475_INTC.h +tos/jtagwait/include/MCF5475_MMU.h +tos/jtagwait/include/MCF5475_PAD.h +tos/jtagwait/include/MCF5475_PCI.h +tos/jtagwait/include/MCF5475_PCIARB.h +tos/jtagwait/include/MCF5475_PSC.h +tos/jtagwait/include/MCF5475_SDRAMC.h +tos/jtagwait/include/MCF5475_SEC.h +tos/jtagwait/include/MCF5475_SIU.h +tos/jtagwait/include/MCF5475_SLT.h +tos/jtagwait/include/MCF5475_SRAM.h +tos/jtagwait/include/MCF5475_USB.h +tos/jtagwait/include/MCF5475_XLB.h +tos/jtagwait/sources/bas_printf.c +tos/jtagwait/sources/bas_string.c +tos/jtagwait/sources/jtagwait.c +tos/jtagwait/sources/printf_helper.S +tos/jtagwait/Makefile +tos/pci_mem/include/bas_string.h +tos/pci_mem/include/bas_types.h +tos/pci_mem/include/driver_vec.h +tos/pci_mem/include/MCF5475.h +tos/pci_mem/include/MCF5475_CLOCK.h +tos/pci_mem/include/MCF5475_CTM.h +tos/pci_mem/include/MCF5475_DMA.h +tos/pci_mem/include/MCF5475_DSPI.h +tos/pci_mem/include/MCF5475_EPORT.h +tos/pci_mem/include/MCF5475_FBCS.h +tos/pci_mem/include/MCF5475_FEC.h +tos/pci_mem/include/MCF5475_GPIO.h +tos/pci_mem/include/MCF5475_GPT.h +tos/pci_mem/include/MCF5475_I2C.h +tos/pci_mem/include/MCF5475_INTC.h +tos/pci_mem/include/MCF5475_MMU.h +tos/pci_mem/include/MCF5475_PAD.h +tos/pci_mem/include/MCF5475_PCI.h +tos/pci_mem/include/MCF5475_PCIARB.h +tos/pci_mem/include/MCF5475_PSC.h +tos/pci_mem/include/MCF5475_SDRAMC.h +tos/pci_mem/include/MCF5475_SEC.h +tos/pci_mem/include/MCF5475_SIU.h +tos/pci_mem/include/MCF5475_SLT.h +tos/pci_mem/include/MCF5475_SRAM.h +tos/pci_mem/include/MCF5475_USB.h +tos/pci_mem/include/MCF5475_XLB.h +tos/pci_mem/include/pci.h +tos/pci_mem/include/util.h +tos/pci_mem/sources/pci_mem.c +tos/pci_mem/Makefile +tos/pci_test/include/bas_string.h +tos/pci_test/include/bas_types.h +tos/pci_test/include/driver_vec.h +tos/pci_test/include/MCF5475.h +tos/pci_test/include/MCF5475_CLOCK.h +tos/pci_test/include/MCF5475_CTM.h +tos/pci_test/include/MCF5475_DMA.h +tos/pci_test/include/MCF5475_DSPI.h +tos/pci_test/include/MCF5475_EPORT.h +tos/pci_test/include/MCF5475_FBCS.h +tos/pci_test/include/MCF5475_FEC.h +tos/pci_test/include/MCF5475_GPIO.h +tos/pci_test/include/MCF5475_GPT.h +tos/pci_test/include/MCF5475_I2C.h +tos/pci_test/include/MCF5475_INTC.h +tos/pci_test/include/MCF5475_MMU.h +tos/pci_test/include/MCF5475_PAD.h +tos/pci_test/include/MCF5475_PCI.h +tos/pci_test/include/MCF5475_PCIARB.h +tos/pci_test/include/MCF5475_PSC.h +tos/pci_test/include/MCF5475_SDRAMC.h +tos/pci_test/include/MCF5475_SEC.h +tos/pci_test/include/MCF5475_SIU.h +tos/pci_test/include/MCF5475_SLT.h +tos/pci_test/include/MCF5475_SRAM.h +tos/pci_test/include/MCF5475_USB.h +tos/pci_test/include/MCF5475_XLB.h +tos/pci_test/include/pci.h +tos/pci_test/include/util.h +tos/pci_test/sources/pci_test.c +tos/pci_test/sources/printf_helper.S +tos/pci_test/Makefile +tos/vmem_test/include/bas_printf.h +tos/vmem_test/include/bas_string.h +tos/vmem_test/include/driver_vec.h +tos/vmem_test/include/MCF5475.h +tos/vmem_test/include/MCF5475_CLOCK.h +tos/vmem_test/include/MCF5475_CTM.h +tos/vmem_test/include/MCF5475_DMA.h +tos/vmem_test/include/MCF5475_DSPI.h +tos/vmem_test/include/MCF5475_EPORT.h +tos/vmem_test/include/MCF5475_FBCS.h +tos/vmem_test/include/MCF5475_FEC.h +tos/vmem_test/include/MCF5475_GPIO.h +tos/vmem_test/include/MCF5475_GPT.h +tos/vmem_test/include/MCF5475_I2C.h +tos/vmem_test/include/MCF5475_INTC.h +tos/vmem_test/include/MCF5475_MMU.h +tos/vmem_test/include/MCF5475_PAD.h +tos/vmem_test/include/MCF5475_PCI.h +tos/vmem_test/include/MCF5475_PCIARB.h +tos/vmem_test/include/MCF5475_PSC.h +tos/vmem_test/include/MCF5475_SDRAMC.h +tos/vmem_test/include/MCF5475_SEC.h +tos/vmem_test/include/MCF5475_SIU.h +tos/vmem_test/include/MCF5475_SLT.h +tos/vmem_test/include/MCF5475_SRAM.h +tos/vmem_test/include/MCF5475_USB.h +tos/vmem_test/include/MCF5475_XLB.h +tos/vmem_test/sources/bas_printf.c +tos/vmem_test/sources/bas_string.c +tos/vmem_test/sources/printf_helper.S +tos/vmem_test/sources/vmem_test.c +tos/vmem_test/Makefile +tos/Makefile diff --git a/BaS_gcc/BaS_gcc.includes b/BaS_gcc/BaS_gcc.includes index b9060a5..bea1405 100644 --- a/BaS_gcc/BaS_gcc.includes +++ b/BaS_gcc/BaS_gcc.includes @@ -47,3 +47,6 @@ tos/jtagwait tos/fpga_test/include tos/fpga_test tos/fpga_test/sources +tos/pci_mem +tos/pci_mem/include +tos/pci_mem/sources diff --git a/BaS_gcc/Makefile b/BaS_gcc/Makefile index 93020b5..5413dc2 100644 --- a/BaS_gcc/Makefile +++ b/BaS_gcc/Makefile @@ -22,7 +22,7 @@ EXE=s19 FORMAT=srec endif -CC=$(TCPREFIX)gcc +CC=$(TCPREFIX)gcc-4.6.4 LD=$(TCPREFIX)ld CPP=$(TCPREFIX)cpp OBJCOPY=$(TCPREFIX)objcopy diff --git a/BaS_gcc/flash/s19reader.c b/BaS_gcc/flash/s19reader.c index 9f0f917..a2a1f87 100644 --- a/BaS_gcc/flash/s19reader.c +++ b/BaS_gcc/flash/s19reader.c @@ -103,13 +103,13 @@ static uint32_t hex_to_long(uint8_t hex[8]) static uint8_t checksum(uint8_t arr[]) { int i; - uint8_t csum = SREC_COUNT(arr); + uint8_t cs = SREC_COUNT(arr); for (i = 0; i < SREC_COUNT(arr) - 1; i++) { - csum += arr[i + 2]; + cs += arr[i + 2]; } - return ~csum; + return ~cs; } #ifdef _NOT_USED_ diff --git a/BaS_gcc/flash_scripts/m548xlite_dbug_ram.elf b/BaS_gcc/flash_scripts/m548xlite_dbug_ram.elf new file mode 100644 index 0000000..4926872 Binary files /dev/null and b/BaS_gcc/flash_scripts/m548xlite_dbug_ram.elf differ diff --git a/BaS_gcc/flash_scripts/m548xlite_dbug_ram.s19 b/BaS_gcc/flash_scripts/m548xlite_dbug_ram.s19 new file mode 100644 index 0000000..c2c89f1 --- /dev/null +++ b/BaS_gcc/flash_scripts/m548xlite_dbug_ram.s19 @@ -0,0 +1,5922 @@ +S00F00006D35343735657662655F0000AD +S3210000000000045F90000004000000EF220000EF220000EF220000EF220000EF2292 +S3210000001C0000EF220000EF220000EF220000EF220000EF220000EF220000EF224B +S321000000380000EF220000EF220000EF220000EF220000EF220000EF220000EF222F +S321000000540000EF220000EF220000EF220000EF220000F04E0000F04E0000F04E8C +S321000000700000F04E0000F04E0000F04E0000F04E0000EF220000EF220000EF2243 +S3210000008C0000EF220000EF220000EF220000EF220000EF220000EF220000EF22DB +S321000000A80000EF220000EF220000EF220000EF220000EF22000267900000EF22D7 +S321000000C40000EF220000EF220000EF220000EF220000EF220000EF220000EF22A3 +S321000000E00000EF220000EF220000EF220000EF220000EF220000EF220000EF2287 +S321000000FC0000EF220000F04E0000F04E0000F04E0000F04E0000F04E0000F04E5D +S321000001180000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04E13 +S321000001340000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04EF7 +S321000001500000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04EDB +S3210000016C0000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04EBF +S321000001880000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04EA3 +S321000001A40000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04E87 +S321000001C00000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04E6B +S321000001DC0000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04E4F +S321000001F80000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04E33 +S321000002140000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04E16 +S321000002300000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04EFA +S3210000024C0000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04EDE +S321000002680000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04EC2 +S321000002840000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04EA6 +S321000002A00000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04E8A +S321000002BC0000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04E6E +S321000002D80000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04E52 +S321000002F40000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04E36 +S321000003100000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04E19 +S3210000032C0000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04EFD +S321000003480000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04EE1 +S321000003640000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04EC5 +S321000003800000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04EA9 +S3210000039C0000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04E8D +S321000003B80000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04E71 +S321000003D40000F04E0000F04E0000F04E0000F04E0000F04E0000F04E0000F04E55 +S31F000003F00000F04E0000F04E0000F04E0000F04E46FC27004EF90000F1BC98 +S321000004104E560000222E0008700AB08163242001E580D08141F90002B43C41F068 +S3210000042C0C002F28000C2F2800082F10487A000E4EB9000047084E5E4E7551FCBF +S32100000448253038583A20202530385820253038580A0051FC4E5600002F042F03E9 +S321000004642F02487A008C4EB900004708206E000C242800044A82588F6624200258 +S32100000480E580D08241F90002B43C4AB00C1067082F024EBAFF7C588F5282700A09 +S3210000049CB0826EDE6048A342603A4878001042A72F014EB900004DF028007600CE +S321000004B84FEF000C2003E580D08341F90002B43CB8B00C0066082F034EBAFF3E78 +S321000004D4588F5283700AB0836EDE5282206E000C22302C0066BC4CEE001CFFF4FA +S321000004F04E5E4E752041646472657373202020202020436F756E7420205472695D +S3210000050C676765720A0051FC4E5600002F0272002001E580D081242E000841F91F +S321000005280002B43CB4B00C0066042001600A5281700AB0816EDEA140242EFFFC62 +S321000005444E5E4E754E56FFF048D70C0C262E00082F0361BC72FFB280588F6600C1 +S32100000560008874002002E580D08247F90002B43C4AB30C1067085282700AB0826A +S3210000057C6EE645F900004708700AB082660A487A00684E92588F60542F034EB982 +S321000005980000ECFC4A80588F660A487A00644E92588F603C2002E580D08241F3A2 +S321000005B40C00264343E80004329336BC4AFC30130C404AFC670A487A00644E9238 +S321000005D0588F60142443208342A800083491A368000C216E000C00104CEE0C0CD9 +S321000005ECFFF04E5E4E7551FC427265616B207461626C652066756C6C2E0A0051D9 +S321000006084572726F723A2020496E76616C696420627265616B706F696E742061B5 +S32100000624646472657373210A0051FC514572726F723A20204164647265737320FC +S32100000640697320726561642D6F6E6C79210A00514E5600002F0272002001E580C8 +S3210000065CD081242E000841F90002B43C528121820C08700AB0816EE4242EFFFCD1 +S321000006784E5E4E754E5600002F022F2E00084EBAFE8C720AB28063142200E58178 +S32100000694D28041F90002B43C242E000C21821C08242EFFFC4E5E4E754E56000041 +S321000006B02F0272002001E580D081242E000841F90002B43C528121820C0C700A20 +S321000006CCB0816EE4242EFFFC4E5E4E754E5600002F022F2E00084EBAFE30720AE1 +S321000006E8B28063142200E581D28041F90002B43C242E000C21821C0C242EFFFCCB +S321000007044E5E4E754E560000222E0008700AB08163202001E580D08141F9000227 +S32100000720B43C41F00C00429842A80004425042A8000842A8000C4E5E4E7551FC8C +S3210000073C4E56000093C92F0961C25289700AB089588F6EF24E5E4E754E56000058 +S321000007582F2E00084EBAFDB672FFB28067042F00619E4E5E4E7551FC4E56FFE8DC +S3210000077448D70C0C246E000C222E0008A1435381660E2F0AA3674EBAFCD0508F14 +S3210000079060000204A342B4AE00086C0001FA47F22C00205310100C00002D67444F +S321000007AC48780010486EFFF82F084EB900000B8C26004AAEFFF84FEF000C661202 +S321000007C82F13487A01D44EB900004708508F600001BEA3672F004EBAFD68528268 +S321000007E4508FB4AE00086DB2600001A8732800017063B08163227043B081673CD6 +S321000008007049B0816700015C7052B081670000EA7054B081670000846000016241 +S3210000081C7063B081671A7069B0816700013A7072B081670000C87074B081676269 +S32100000838600001424AAB0004672C2F390002B504486EFFFC52822F322C004EB933 +S3210000085400004DF022004A804FEF000C660E41F22C002010B0AEFFFC66027200D9 +S3210000087070FFB083660C2F014EBAFDD6588F600001162F012F034EBAFDF4508FAF +S3210000088C5282B4AE00086D00FF0A600000FE4AAB0004672C2F390002B504486ED3 +S321000008A8FFFC52822F322C004EB900004DF022004A804FEF000C660E41F22C0085 +S321000008C42010B0AEFFFC6602A34170FFB083660C2F014EBAFDD4588F600000B821 +S321000008E02F012F034EBAFDF2508F5282B4AE00086D00FEAC600000A070FFB083C7 +S321000008FC66504AAB0004663E4EBAFE365282B4AE00086D00FE8E60000082487872 +S321000009180010486EFFF82F322C004EB900000B8C26004AAEFFF84FEF000C66060A +S321000009344EBAFE0660082F004EBAFE16588F202E00085282B0826ECA603E2F0397 +S321000009504EBAFE02588F5282B4AE00086D00FE406034A3674EBAFD4642A74EBAD3 +S3210000096CFCE4508F5282B4AE00086D00FE26601A2F2A0004487A00364EB9000005 +S321000009884708508F5282B4AE00086D00FE0A4CEE0C0CFFE84E5E4E754572726F2C +S321000009A4723A20204261642056616C75653A202025730A004572726F723A202081 +S321000009C0496E76616C6964206F7074696F6E3A202025730A0051FC514E56000037 +S321000009DC2F032F02206E000C7600429074002002E580D08241F90002B43C41F00A +S321000009F80C004AA8001067402250202E000832A80004B090662252A80008200296 +S32100000A14E580D0822228000843F90002B43CA343B2B10C0C6D06226E000CA35125 +S32100000A307002B0A8001066082F024EBAFCCC588F5282700AB0826EA24EB90000DD +S32100000A4CF21820034CEE000CFFF84E5E4E7551FC4E5600002F0274007200200186 +S32100000A68E580D08141F90002B43C41F00C004AA80010671E2010B0AE0008660CBE +S32100000A84A3425281700AB0816ED8601222403151000432BC4AFC5281700AB0819B +S32100000AA06EC44EB90000F2182002242EFFFC4E5E4E7551FC4E5600002F0A2F02B8 +S32100000ABC45F900004708243C00000B382F024E9248790002678448790000F678FA +S32100000AD8487A00624E9248790002531C4879000253107139000267802F002F3976 +S32100000AF40002677C71390000F60C2F002F390000F5E0713900003F7C2F002F39E7 +S32100000B1000003F78487A00364E92487900003FD04E924879000267814E922F02C8 +S32100000B2C4E924CEE0404FFF84E5E4E750A0051FC2573206F6E207468652025731A +S32100000B480A0051FC4669726D776172652076256425632E256425632E25642563D2 +S32100000B6420284275696C74206F6E202573202573290A00514E5600004EB9000289 +S32100000B8063584EB90000F1BC4E5E4E754E56FFF8486EFFF82F2E00084EB90000C1 +S32100000B9C56404A80662E2F2E0010486EFFFC2F2E00084EB900004DF02D40FFF818 +S32100000BB84A806614202E0008B0AEFFFC660A206E000C42907000600A206E000CD8 +S32100000BD4A350202EFFF84E5E4E7551FC4E56FFFC2F0A45F90002B51C222E0008CA +S32100000BF0A3525581661C4878000A486EFFFC206E000C2F280004618424804AAEA5 +S32100000C0CFFFC6602A352A3674EB90000ECBC246EFFF84E5E4E7551FC4E560000CC +S32100000C2842A74EB90000ED642F004EB90000B24423C00002B518A5672F39000215 +S32100000C44B5184EB90000054842A74EB90000ECBC4E5E4E754E56FFA848D7041CDC +S32100000C6045F900004708222E00087600558166382F390002B504486EFFF8206E45 +S32100000C7C000C2F2800044EBAFF0824004AAEFFF84FEF000C6624206E000C2F2808 +S32100000C980004487900003FB44E92508F6000008042A742A74EB90000EC282400D2 +S32100000CB4508F487A00784E92487A008A4E92508F486EFFFC2F024EB90000EC281D +S32100000CD028004AAEFFFC508F674C2F2EFFFC2F02487A007E4E92486EFFB82F2EE2 +S32100000CECFFFC4EB90000501C4A804FEF0014670C486EFFB8487A006A4E92508F91 +S32100000D08487AFE2E4E92200490820C8000000400588F620A240452837010B08332 +S32100000D246E9E4CEE041CFFA84E5E4E7553746B204672616D652052657475726E54 +S32100000D402050430A0051FC512D2D2D2D2D2D2D2D2D202D2D2D2D2D2D2D2D2D0AE2 +S32100000D5C0051FC51253038583A20253038580051202025730051FC514E56FFFC4D +S32100000D782F0A246E000C2F390002B504486EFFFC2F2A00084EBAFDFE4AAEFFFC57 +S32100000D9466122F2A0008487900003FB44EB900004708600C2F002F2A00044EB95B +S32100000DB00000ED88246EFFF84E5E4E754E5600002F0A2F02246E000C74004AAAA0 +S32100000DCC0004661842A74EB90000E578588F60142F322C004EB90000E578588F03 +S32100000DE852824AB22C0066EC4CEE0404FFF84E5E4E7551FC4E56FF9448D71C3CF8 +S32100000E04246E000C47F90000470849FAFD7C2F124EB90000ED10487800102600A8 +S32100000E20486EFFFC2F2A00044E944AAEFFFC4FEF001066122F2A000448790000E9 +S32100000E3C3FB44E93508F600001FE2F032F004EB90000EC4C2400202A00084A80A2 +S32100000E58508F670000802F390002B504486EFFFC2F004E942D40FFF84AAEFFFC76 +S32100000E744FEF000C66122F2A0008487900003FB44E93508F600001B82F024EB974 +S32100000E90000030444A80588F672C42A742A72F002203701FE0A1701DE0A9D283E7 +S32100000EACE6812F0141EEFFF82F082F024EB9000032004FEF00186000017E2F2E34 +S32100000EC8FFF82F032F024EB90000E6644FEF000C6000016828002F032F024EB9B8 +S32100000EE40000EC782F022A00487A015E4E934FEF00100C8300000008670E701051 +S32100000F00B08367187020B0836722602E203C000010542F052F004E93508F601EE2 +S32100000F1C203C000010602F052F004E93508F600E203C0000106C2F052F004E933A +S32100000F38508F45EEFFB02F0A4EB900003ECC42A72F0A4EB900003B104A804FEF10 +S32100000F54000C670000B82F390002B504486EFFFC2F0A4E942D40FFF84AAEFFFC0A +S32100000F704FEF000C665010120C00003D670000BE0C00005E663C0C83000000082C +S32100000F8C67107010B08367167020B083671C600000A053824A846700FF3A6000B3 +S32100000FA8009A55824A846700FF2E6000008E59824A846700FF2260000082A3446C +S32100000FC4604A2F024EB9000030444A80588F672A42A742A72F002203701FE0A13D +S32100000FE0701DE0A9D283E6812F0141EEFFF82F082F024EB9000032004FEF0018D0 +S32100000FFC60122F2EFFF82F032F024EB90000E6644FEF000C0C8300000008670E03 +S321000010187010B08367127020B0836716601652824A846700FEB2601254824A8405 +S321000010346700FEA8600858824A846700FE9E4CEE1C3CFF944E5E4E752530385801 +S321000010503A2020005B253032585D20200051FC515B253034585D20200051FC5118 +S3210000106C5B253038585D20200051FC514E56FFD848D70C3C45F900004708262E24 +S3210000108800082F03487AFFBE4E9247EEFFF07400508F2F2E00102F034EB9000090 +S321000010A4EC782800508F2A2E0010518567127010B0AE001067227020B0AE001093 +S321000010C0673260402F04487A00984E92528316C45282508F7010B0826EC0602E98 +S321000010DC2F04487A00884E92548336C45482508F7010B0826EA860162F04487ADC +S321000010F800784E92588326C45882508F7010B0826E90740041EEFFF079302800ED +S32100001114705F2204048100000020B08163142F04487A00524E92508F528270101D +S32100001130B0826ED86010487A00434E92588F52827010B0826EC6487AF9F04E92A4 +S3210000114CB6AE000C588F6500FF364CEE0C3CFFD84E5E4E7525303258200051FC7C +S3210000116825303458200051FC25303858200000002563002E0051FC514E56FFE437 +S3210000118448D71C1C246E000C2F124EB90000ED10222E0008280053816F0000C28A +S321000011A047F900004708222E000849FAF9E055816648206A000410100C00002AC2 +S321000011BC663C2F390002B504486EFFFC43E800012F094E9426004AAEFFFC67389D +S321000011D8487800202F004EB90000EC782F0024002F03487A00B44E9326020482F1 +S321000011F4FFFFFF80607A48780010486EFFFC2F2A00044E9426004AAEFFFC660E35 +S321000012102F2A0004487900003FB44E936076222E00085781663048780010486EA8 +S3210000122CFFFC2F2A00084E9424004AAEFFFC660E2F2A0008487900003FB44E93E1 +S32100001248604AB6806326200224032600601E24030482FFFFFF806014263900022F +S32100001264B50828390002876424030482FFFFFF802F042F034EB90000EC4C2F045C +S321000012802F022F004EBAFDF223C20002B50823C4000287644CEE1C1CFFE44E5E7C +S3210000129C4E7551FC2530385820636F6E7461696E7320253038580A004E56FFEC1E +S321000012B848D7041C246E000C2F124EB90000ED102F390002B5042800486EFFFCF6 +S321000012D42F2A00044EBAF8B224004AAEFFFC4FEF001066142F2A000448790000EC +S321000012F03FB44EB900004708508F60722F390002B504486EFFFC2F2A00084EBAA5 +S3210000130CF88026004AAEFFFC4FEF000C66142F2A0008487900003FB44EB900004E +S321000013284708508F60407010B08467167020B0846620204220834EB9000286ECDA +S321000013444A8067E6601E204230834EB9000286EC4A8067D6600E204210834EB9F1 +S32100001360000286EC4A8067C64EB9000287304CEE041CFFEC4E5E4E754E56FFFCED +S3210000137C2F0A2F032F02246E000C2F124EB90000ED102F390002B5042600486ED1 +S32100001398FFFC2F2A00044EBAF7EC24004AAEFFFC4FEF001066142F2A00044879F3 +S321000013B400003FB44EB900004708508F60407010B08367167020B0836620204274 +S321000013D020104EB9000286EC4A8067E6601E204271D04EB9000286EC4A8067D696 +S321000013EC600E204271904EB9000286EC4A8067C64EB9000287304CEE040CFFF0A3 +S321000014084E5E4E754E560000202E0008E78041F90002533041F00C0020102F286F +S32100001424001C2F002F2800182F00487A000C4EB9000047084E5E4E75253873203A +S32100001440252D3235732025732025730A0051FC514E56FFEC48D71C04286E000CD6 +S3210000145C45F900004708222E000847F90002533053816666487A00F2487A00F2BC +S32100001478487A00F6487A00FE487AFFBA4E92A36EFFFC74004FEF0014602A200201 +S32100001494E780720141F30C000328001366182F024EBAFF66486EFFFC4EB900000A +S321000014B03E004A80508F660000A25282B4B9000253286DCE487900030000487AAC +S321000014CC00B84E92508F600000867400601A2F2C00042002E7802F330C004EB956 +S321000014E800004F904A80508F672E5282B4B9000253286DDE740060442002E7801B +S3210000150441F30C002F2800042F2C00042F104EB900004F244A804FEF000C662276 +S32100001520487A0042487A0042487A0046487A004E487AFF0A4E922F024EBAFED2D5 +S3210000153C4FEF001860185282B4B9000253286DB42F2C0004487900003F984E9209 +S32100001558508F4CEE1C04FFEC4E5E4E750051FC5153796E746178005144657363E9 +S3210000157472697074696F6E00436F6D6D616E64000A5573657220636F6465206DA0 +S32100001590617920737461727420617420616464726573732025233038580A005193 +S321000015AC4E56FFFC2F390002B504486EFFFC206E000C2F2800044EBAF5C84AAEF8 +S321000015C8FFFC6616206E000C2F280004487900003FB44EB9000047086012A5670D +S321000015E42F004EB90000054842A74EB90000ECBC4E5E4E754E56FFFC222E000864 +S321000016005581663A2F390002B504486EFFFC206E000C2F2800044EBAF5744AAE20 +S3210000161CFFFC6616206E000C2F280004487900003FB44EB90000470860102F0097 +S321000016384EB90000ED7442A74EB90000ECBC4E5E4E7551FC4E56FFFC2F024EB9FD +S321000016540000ED64242E000822005582663A2F390002B504486EFFFC206E000CC2 +S321000016702F2800044EBAF51622004AAEFFFC4FEF000C6622206E000C2F2800040E +S3210000168C487900003FB44EB900004708508F602420390002B50C670222007410A4 +S321000016A8A3672F014EB90000B24422005382508F66EE23C00002B50C242EFFF8D0 +S321000016C44E5E4E754E56FFFC42A7486EFFFC206E000C2F2800044EBAF4B02F008C +S321000016E02F002F00487A000E4EB9000047084E5E4E7551FC4865783A20252330B1 +S321000016FC38582C2042696E3A2025303332622C204465633A2025640A0051FC517E +S321000017184E56FFDC48D71C7C246E000C47F90000470849F900003FB42F127C005A +S321000017344EB90000ED1041EEFFFC2600487800102A082F082F2A00044EBAF43E6F +S3210000175024004AAEFFFC4FEF0010660E2F2A00042F0C4E93508F600000C0487866 +S3210000176C00102F052F2A00084EBAF41628004AAEFFFC4FEF000C660E2F2A00086A +S321000017882F0C4E93508F600000982F390002B5042F052F2A000C4EBAF3EC2A007F +S321000017A44AAEFFFC4FEF000C660C2F2A000C2F0C4E93508F606EB4846306200283 +S321000017C024042800B48462482F032F024EB90000EC78BA80508F660C2F02487A89 +S321000017DC00584E93508F60440C8300000008670E7010B08367107020B0836712BD +S321000017F860125282B48463C8600E5482B48463C060065882B48463B84A86670CB1 +S321000018142F02487A001C4E93508F6008487A002E4E93588F4CEE1C7CFFDC4E5E6A +S321000018304E7551FC44617461206C6F63617465642061743A202025233038580A8F +S3210000184C0051FC5144617461206E6F7420666F756E642E0A0051FC514E56FFE05C +S3210000186848D71C3C246E000C47F90000470841EEFFFC49F900003FB4487800108B +S3210000188428082F082F2A00044EBAF2FE24004AAEFFFC4FEF000C660E2F2A000454 +S321000018A02F0C4E93508F600000B0487800102F042F2A00084EBAF2D626004AAEC9 +S321000018BCFFFC4FEF000C660E2F2A00082F0C4E93508F60000088487800102F040A +S321000018D82F2A000C4EBAF2AE28004AAEFFFC4FEF000C660C2F2A000C2F0C4E9389 +S321000018F4508F6060B48363062002240326002003908252802200D284B481620608 +S32100001910D084B6806408B882650EB883620A487A00444E93588F60302A02B483AA +S3210000192C622A487800082F054EB90000EC782F00487800082004D08590822F00F5 +S321000019484EB90000E66452854FEF0014BA8363D64CEE1C3CFFE04E5E4E7551FC60 +S321000019644572726F723A20204F7665726C617070696E672064657374696E6174DA +S32100001980696F6E0A0051FC514E56FFDC48D71C7C246E000C47FAF1F62F124EB913 +S3210000199C0000ED1041EEFFFC26004878001024082F082F2A00044E932C004AAE47 +S321000019B8FFFC4FEF00106618202A00042F00487900003FB44EB900004708508FE0 +S321000019D4600000EA487800102F022F2A00084E934AAEFFFC28404FEF000C670454 +S321000019F0BC806318202A00082F00487900003FB44EB900004708508F600000B69E +S32100001A0C2F390002B5042F022F2A000C4E9328004AAEFFFC4FEF000C6618202AF1 +S32100001A28000C2F00487900003FB44EB900004708508F60000084222E00085B8160 +S32100001A4466302F390002B5042F022F2A00104E932A004AAEFFFC4FEF000C661867 +S32100001A60202A00102F00487900003FB44EB900004708508F604A7A002406BC8C5C +S32100001A7C64422F042F032F024EB90000E6644FEF000C0C8300000008670E7010E5 +S32100001A98B08367127020B083671660165282D885B48C65D260125482D885B48C3D +S32100001AB465C860085882D885B48C65BE4CEE1C7CFFDC4E5E4E7551FC4E56FFD401 +S32100001AD048D71CFC246E000C47F90000470841EEFFF849F900003FB44878001065 +S32100001AEC24082F082F2A00044EBAF0962C004AAEFFF84FEF000C660E2F2A000454 +S32100001B082F0C4E93508F600000C2487800102F022F2A00084EBAF06E2E004AAEB0 +S32100001B24FFF84FEF000C660E2F2A00082F0C4E93508F6000009A2F390002B50471 +S32100001B402F022F2A000C4EBAF0442A004AAEFFF84FEF000C660C2F2A000C2F0C3C +S32100001B5C4E93508F6070240626077800A36EFFF85380B880644A487800082F034D +S32100001B784EB90000EC784878000824402F024EB90000EC78B5C04FEF0010671AD4 +S32100001B942F032F02487A00424E9342AEFFF84FEF000C4AAEFFF8672660145282F2 +S32100001BB05283528420055380B88065B64AAEFFF867102F052F072F06487A002E28 +S32100001BCC4E934FEF00104CEE1CFCFFD44E5E4E754D69736D617463683A2020255F +S32100001BE8233038582C2025233038580A0051FC51426C6F636B7320737461727450 +S32100001C04696E6720617420252330345820616E64202523303458206F66206C650A +S32100001C206E67746820252330325820617265206964656E746963616C2E0A005121 +S32100001C3C4E56FF7448D71C1C246E000C47F90002B510222E000849F9000047088A +S32100001C5855816D3E2F390002B504486EFFFC2F2A00044EBAEF2024004AAEFFFC8A +S32100001C744FEF000C66102F2A0004487A00DC4E94508F600000CA2F024EB900026E +S32100001C90636C4A80588F67066012241360EC2F02487A00D64E94508F600000A8BE +S32100001CAC222E00085381670A222E0008558166000084A3672F024EB90000B24429 +S32100001CC82F022800487A00D24E94486EFFB44EB900003ECC45EEFF8C2F0A486E04 +S32100001CE4FFB44EB900003B1026004A804FEF001C6604240460C45380660A205224 +S32100001D0010100C00002E673442B23C002F0A2F024EB9000089502F0026004EB9F6 +S32100001D1C0002636C4A804FEF000C6714B682670CA3672F024EB90000B244508F83 +S32100001D38240360822682601241EA00082F082F024EB9000089502680508F4CEE2C +S32100001D541C1CFF744E5E4E754572726F723A20496E76616C696420616464726508 +S32100001D7073733A2025730A004572726F723A2043616E6E6F74207772697465203D +S32100001D8C746F206164647265737320253038582E0A0051FC253038583E2000512E +S32100001DA84E56000042B90002B508701023C00002B50423C000028764203C00036E +S32100001DC4000023C00002B50C23C00002B5104EB90000073C4EB9000052FC4EB907 +S32100001DE00000392C4EB900003AE44EB9000036584E5E4E754E5600002F0274000A +S32100001DFCB4AE000C6C1C4EB9000263E8206E00081180280052B90002876852825C +S32100001E18B4AE000C6DE42002242EFFFC4E5E4E754E560000487800142F2E00082E +S32100001E3461BE4E5E4E7551FC4E5600004878001C2F2E000861AA4E5E4E7551FC05 +S32100001E504E560000487800282F2E000861964E5E4E7551FC4E56FFFC2F0A2F02C3 +S32100001E6C246E00082F2A00102F2A00082F0A487A00B04EB9000047082439000290 +S32100001E8887684FEF0010202A0014B0826F16A367486EFFFF4EBAFF565282508F18 +S32100001EA4202A0014B0826EEA2F2A00084EB90002636C4A80588F675475FC00809E +S32100001EC0C4AA00244A82662C202A0010B0826F50A367486EFFFF4EBAFF1C206A5A +S32100001EDC0008102EFFFF118028005282508F202A0010B0826EDE602C7400202A12 +S32100001EF800106F24206A000842302800202A00105282B0826EEE60102F2A00086C +S32100001F14487A00464EB900004708508F4CEE0404FFF44E5E4E7551FC53656374EE +S32100001F30696F6E3A2020252D3873202850616464723A2030782530385820205325 +S32100001F4C697A653A20307825303858290A0051FC4572726F723A20496E76616C66 +S32100001F68696420646F776E6C6F616420616464726573733A2025233038580A00A0 +S32100001F844E56FFF42F0A2F02246E0008487800122F0A4EBAFE5C4A92508F674EC3 +S32100001FA0732A00105581666A4A2A0011666441EEFFF4109A115A0001115A0002D8 +S32100001FBC115A0003115A0004115A0005115A0006115A0007422800082212518A52 +S32100001FD82F012F084EB900005274508F752A00114A826E2E6042732A0010558197 +S32100001FF466164A2A001166102F2A00082F2A00044EB9000055B8508F52B9000296 +S32100002010876C752A00114A826F16487800122F0A4EBAFDD253B900028770508FF4 +S3210000202C538266EA4CEE0404FFEC4E5E4E7551FC4E56FD9C48D71C7C45F9000250 +S32100002048876C49EAFFFC47EEFFE042942F0B4EBAFDD071D3588F0C800000015054 +S3210000206467220C8000000195671A0C800000019867122F00487A018A4EB900000D +S321000020804708508F60000172082B000100136610487A01A24EB900004708588FDE +S3210000209C6000015A302B0010263C00001DF40C40001C6620486EFFC44EBAFD8697 +S321000020B82F2EFFD44EB90000ED74508F71EEFFE27400B4806C60602C71EEFFF001 +S321000020D47400B4806C18A36741EEFFF42F0826434E935282508F71EEFFF0B480DC +S321000020F06DE871EEFFE27400B4806C3241EEFFB070092208B0826F142002D0804B +S3210000210C2200E580D08141EEFE2043F00C0022092F014EBAFD305282588F71EEA3 +S32100002128FFE2B4806DCE71EEFFE27400B4806C242002D0802200E580D08141EE54 +S32100002144FE2043F00C002F094EBAFD165282588F71EEFFE2B4806DDC202EFFE81C +S321000021602414B0826F18A36741EEFFF42F0826434E935282508F202EFFE8B082A5 +S3210000217C6EE84292202EFFEC671E2540000441EA000453906512486EFFB04EBAFA +S32100002198FDEC588F41EA0004539064EE4A9267502C14A96741EEFFF82F08264348 +S321000021B44E937400508FB4926C3A2A149A867800A367486EFFFF26434E9341EEDC +S321000021D0FDBC102EFFFF1180480052844A2EFFFF508F66E02F05486EFDBC4EB904 +S321000021EC0000556C508F5282B4926DC64CEE1C7CFD9C4E5E4E7551FC4572726F25 +S32100002208723A20204E6F742061207265636F676E697A656420434F464620666F99 +S32100002224726D61743A2020253034580A0051FC514572726F723A20204E6F74200C +S321000022406120434F46462065786563757461626C652E0A004E5600002F024AB98B +S3210000225C0002B520673041F90002B5242010529041F90002DD8C1430080041F9A0 +S321000022780002B52053906610487800114EB90002870C42B90002B52460084EB962 +S321000022940002873014007182242EFFFC4E5E4E754E56000061AA0C00005366F840 +S321000022B061A24E5E4E7551FC4E56000073AE000B0481000000307036B08165008C +S321000022CC009C307B1A064EFB8802006E006E006E006E006E006E006E006E006ED8 +S321000022E8006E0092009200920092009200920092007A007E00820086008A008E50 +S3210000230400920092009200920092009200920092009200920092009200920092BB +S32100002320009200920092009200920092009200920092009200920092007A007ECB +S3210000233C00820086008A008E122E000B703092807181601A700A6016700B601219 +S32100002358700C600E700D600A700E6006700F6002420071804E5E4E754E56000087 +S321000023742F024EBAFEDC2F004EBAFF3A2400E9824EBAFECE2F004EBAFF2C8082FD +S321000023907180242EFFFC4E5E4E7551FC4E56FF2448D73CFC42AEFFF045F90000F6 +S321000023AC470841EEFFE447FAFFBC10FC000810FC007C10FC002F10FC002D10BCD6 +S321000023C8005C42B90002B52048780011A34C4EB90002870C588F4EBAFEC42C008C +S321000023E44E93220677801D40FFFF0481000000315581630C59815581630001D895 +S32100002400600002747E0074000486000000307A00601A4E93E18A79807184D083B7 +S3210000241C7780102EFFFF848453801D40FFFF5285BA866FE2D4AE00082F024EB90B +S32100002438000030444A802A40588F670000E67A00600A41EEFF4C11805800528588 +S321000024547DAEFFFF53862D46FFF84E931800BAAEFFF86DE2487800134EB9000277 +S32100002470870C588F60264EB9000286EC4A80671C4EB90002873041F90002B520B1 +S3210000248C2210529041F90002DD8C118018007E00200752870C80000007D06DCEB0 +S321000024A842A742A72F0D2F0541EEFF4C2F082F024EB9000032004A864FEF00188F +S321000024C46F0E20427190D08377805282538666F271843203468190810280000043 +S321000024E000FF4A40671E487A019C4E922F0371842F00487A01B44E922F02487AED +S321000024FC01CC4E924FEF00184AB90002B5206600008A487800114EB90002870C84 +S32100002518588F52AEFFF0700AB0AEFFF066000150607A2F024EB90002636C4A80A0 +S32100002534588F674E7BAEFFFF53854A856F124E93204210807180D08377805282B8 +S32100002550538566EE4E93320318007184468190810280000000FF4A40672C487AE2 +S3210000256C01184E922F0371842F00487A01304E9270004FEF0010600000F62F02E6 +S32100002588487A014E4E927000508F600000E652AEFFF0700AB0AEFFF0660000D4BB +S321000025A4102EFFE42F004EB90002870C41EEFFE41030C8002F004EB90002870C44 +S321000025C0528CB9FC00000005508F6602A34C42AEFFF0600000A27400048600004C +S321000025DC0030700A90862C0053864A806D224E93E18A79802004D0837780718417 +S321000025F88480102EFFFF53801D40FFFF200653864A806CDE102EFFFFD4AE00087A +S32100002614120053811D41FFFF0C000001631A4E937180D0837780102EFFFF12006E +S3210000263053811D41FFFF0C00000162E64E9373803003468092800281000000FFA2 +S3210000264C4A41670C487A00324E927000588F601E487A009E4E922F024EB900004D +S32100002668ED74508F4EB900028730A34060046000FD664CEE3CFCFF244E5E4E7542 +S32100002684084572726F723A2020532D7265636F726420636865636B73756D2065B1 +S321000026A072726F72210A005145787065637465643A20202532582C2020526563F6 +S321000026BC65697665643A202532580A00416464726573733A202538580A0051FCB0 +S321000026D808496E76616C696420646F776E6C6F616420616464726573733A202514 +S321000026F4233038580A0051FC08532D7265636F726420646F776E6C6F6164207378 +S3210000271075636365737366756C210A004E56FFFC2F0A2F02206E000C45F90000CE +S3210000272C4708202800044A8067362F390002B504486EFFFC2F004EB900000B8CE8 +S3210000274824004AAEFFFC6612206E000C2F280004487900003FB44E9260362F0092 +S32100002764487A003E4E9260022400487A00484E922F024EBAFC244EB90000F21899 +S321000027804EB90000ED6423C00002B50C4EB90000ED6423C00002B5084CEE0404FD +S3210000279CFFF44E5E4E7551FC4F66667365743A20252330385820282564290A009F +S321000027B845736361706520746F206C6F63616C20686F737420616E642073656EE9 +S321000027D46420532D7265636F726473206E6F772E2E2E0A004E5600002F0274009C +S321000027F0B4AE000C6C1C4EB9000263E8206E00081180280052B900028774528252 +S3210000280CB4AE000C6DE4242EFFFC4E5E4E7551FC4E5600002F0A246E00084878AB +S3210000282800342F0A61BA10120C00007F6674102A00010C000045666A102A0002E7 +S321000028440C00004C6660102A00030C0000466656082A00010011674E302A00288E +S321000028600C4000346644302A002A0C400020663A302A002E0C4000286630302AB0 +S3210000287C00300C4000146318487A003A4EB900004708487A00584EB9000047086D +S321000028987000601A2F2A00184EB90000ED74A340600C487A003C4EB900004708B8 +S321000028B47000246EFFFC4E5E4E7551FC084572726F723A20546F6F206D616E79D6 +S321000028D02053656374696F6E20486561646572732121210A0051FC5108457272D9 +S321000028EC6F723A204E6F742061207265636F676E697A656420454C462066696C41 +S3210000290865210A004E56FFDC2F0A2F02246E00084A6A002C676E202A001C243922 +S3210000292400028774B0826316A367486EFFFF4EBAFEB45282508F202A001CB08226 +S3210000294062EA487A00544EB9000047087400588F71EA002CB4806C3441EEFFDCFD +S3210000295C487800202F084EBAFE842F2EFFF02F2EFFE82F2EFFE42F02487A0036BF +S321000029784EB90000470852824FEF001C71EA002CB4806DCC4CEE0404FFD44E5E04 +S321000029944E7551FC0850726F6772616D20486561646572733A0A00512053656781 +S321000029B06D656E7420232564202856616464723A20253038582C205061646472D6 +S321000029CC3A20253038582C2053697A653A2025303858290A0051FC514E56FFE42C +S321000029E848D71C1C282E000845F90002877841EA032449EA03282608A152A15017 +S32100002A042044A1544A680030670000CC20280020242AFFFCB0826318A367486E24 +S32100002A20FFFF4EBAFDC452822044508F20280020B08262E8487A00B24EB9000057 +S32100002A3C470874002044588F71E80030B4806C7A2002D0802200E580D08141EA52 +S32100002A58000447F00C00487800282F0B4EBAFD822F2B00142F2B000C2F2B00043A +S32100002A742F02487A00844EB900004708222B00044FEF001C538167245381670628 +S32100002A905381670C602420434A906C14208260104A946C0C204471E80032B48011 +S32100002AAC67022882202B0010B092640224802044528271E80030B4806D86204303 +S32100002AC820106D0E22146D0AB0815DC049C04480600270004CEE1C1CFFE44E5EA6 +S32100002AE44E7551FC0853656374696F6E20486561646572733A0A00512053656337 +S32100002B0074696F6E2025642028547970653A20253038582C20416464723A2025E1 +S32100002B1C3038582C2053697A653A2025303858290A0051FC4E56FF6C48D71C3CAB +S32100002B3849FAFCAE283C000287747A0095CAA143740060262002D0802200E5807D +S32100002B54D08141F90002877C41F00C0020280010670AB083640624482628001062 +S32100002B705282206E000871E80030B4806DCE70FFB08367044A8A6618A367486EC2 +S32100002B8CFFFF4E94102EFFFF0C0000FF508F66EC6000015620442410600CA3670A +S32100002BA8486EFFFF4E945282508FB68262F0222A00045381671653816700008CD0 +S32100002BC45381670000A45B81670000F660000114266A000C2F0B4EB90002636CB4 +S32100002BE04A80588F670001004AAA0014670000F874006010A367486EFFFF4E94CF +S32100002BFC16EEFFFF5282508F202A0014B08262E8600000D847EEFFEC4878001000 +S32100002C182F0B4E9475AB000C2202E8815381508F6624720F7182C2800C81000045 +S32100002C34000167084A8167045581660E2F2B00042F134EB9000055B8508F204497 +S32100002C50202A0010D0AA0014B09062B442AA001095CAA345A14374006000FF0822 +S32100002C6C4A856776604047EEFF882610740096811D7C0058FFFF601AA367486E54 +S32100002C88FFFF4E9452827064B082508F6F0616EEFFFF600242134A2EFFFF66E0A7 +S32100002CA42F03486EFF884EB90000556C508F2044222A0010202A0014D081B09049 +S32100002CC062B06022266A000C2F0B4EB90002636C4A80588F671074006004421B53 +S32100002CDC5282202A0014B08262F442AA001095CAA14374006000FE804CEE1C3CF9 +S32100002CF8FF6C4E5E4E7551FC4E5600002F0B2F0A45F900028774222E0008429215 +S32100002D145381665447EA03302F0B4EBAFAFC53806704A140604C202A0350B0ABB0 +S32100002D30001C63162F0B4EBAFBD42F0B4EBAFCA6202A0004B092652060142F0B34 +S32100002D4C4EBAFC962F0B4EBAFBB8202A0004B092650A2F0B4EBAFDCE7000600EEC +S32100002D68A340600A486A03304EBAFDBEA3404CEE0C00FFF84E5E4E754E56000021 +S32100002D842F0A487A002045F9000047084E92487A002C4E92487A00464E92246E5D +S32100002DA0FFFC4E5E4E7551FC466C617368205574696C6974792055736167653A09 +S32100002DBC0A0A0051202028666C2961736820286529726173652061646472206233 +S32100002DD8797465730A0051FC202028666C29617368202877297269746520646599 +S32100002DF47374207372632062797465730A0A00514E56FFDC48D71C7C487A013A8F +S32100002E1045F9000047084E927600588F7A6447F900028AD84C035800D7C549EBDD +S32100002E2C00404A94670001002F0B2F03487A012A4E922F14487A013A4E9222146F +S32100002E48700A2401E0A20C82000004004FEF00146F0A203C00002F9474146008DB +S32100002E64203C00002FA4740AE4A12F012F004E92222B003C2014D08153802F00CB +S32100002E802F01487A01304E92202B00604FEF00146716222B005C5380D0812F00B7 +S32100002E9C2F01487A01384E924FEF000C202B004452802F00487A014A4E927800CA +S32100002EB8700B2D40FFFC7C0047F900028AD8508FD7C5B8AB00406C5A202B003C8A +S32100002ED4D0842F00206B00504E902840202B003CD0842F00206B00544E90720AF5 +S32100002EF02400948C5282D882E2A22F022F002F0C2F06487A01184E92486EFFFC8E +S32100002F0C4EB900003E004A804FEF0020662447F900028AD8D7C55286B8AB0040F1 +S32100002F286DA6487A01144E92588F52830C83000000026D00FEE04CEE1C7CFFDC78 +S32100002F444E5E4E75466C6173682044657669636520496E666F726D6174696F6EF8 +S32100002F603A0A0A0020204465766963652025643A202020202020202025730A00EC +S32100002F7C2020546F74616C2053697A653A20202020202025235820002825644D7C +S32100002F98292062797465730A0051FC512825644B292062797465730A0051FC51EB +S32100002FB42020416464726573732052616E67653A20202025233038582D3E252393 +S32100002FD03038580A0051FC51202050726F7465637465642052616E67653A202501 +S32100002FEC233038582D3E25233038580A0051FC5120204163636573732053697ADD +S32100003008653A2020202020256420627974652873290A00512020536563746F723B +S32100003024202533643A2025233038582D3E252330385820282533644B290A000057 +S321000030400A0051FC4E5600002F02242E000891C82008E7802200D080D081D088E5 +S3210000305C43F900028AD843F10C0020290040672A2229003CB28262225380D081F5 +S32100003078B480621A2229005CB282620C202900605380D081B480631052882008C7 +S32100003094600C5288B1FC000000026DB07000242EFFFC4E5E4E7551FC4E56FFA448 +S321000030B048D70C1C206E00105388B1FC00000002646E2008E7802200D080D0816B +S321000030CCD08847F90000470841F900028AD845F00C002F2E0008206A00504E90FF +S321000030E8242E000CD4AE0008260053822F02206A00544E902800B6AE00086604F8 +S32100003104B082672C2F042F03487A00624E93486EFFB84EB900003ECCA367486E3C +S32100003120FFB8487A00844EB900004F244A80670470006030240494832F2A0058F1 +S3210000313C52822F022F03206A00484E90B082670E2F022F00487A005A4E93700016 +S32100003158600A2F00487A007A4E93A3404CEE0C1CFFA44E5E4E7551FC4D75737452 +S3210000317420657261736520636F6D706C65746520736563746F72732028252330AD +S32100003190385820746F202523303858290A436F6E74696E75653F2000796573003A +S321000031AC466C617368204572617365206572726F723A2025235820627974657378 +S321000031C8206F6620252358206572617365640A00466C6173682045726173652074 +S321000031E4636F6D706C6574652E20252358206279746573206572617365640A009D +S321000032004E560000206E00145388B1FC000000026504700060664AAE001C67348E +S3210000321C2008E7802200D080D081D08841F900028AD841F00C002F28005842A773 +S321000032382F2E00182F2E00102F2E000C2F2E00082068004C4E90602C42A742A7B4 +S321000032542F2E00182F2E00102F2E000C2F2E00082008E7802200D080D081D088FE +S3210000327041F900028AD820700C4C4E904E5E4E754E56FFC848D71C7C246E000CA9 +S3210000328C222E00085381660C4EBAFAEA4EBAFB6A6000022A47F90000470849FACB +S321000032A8FD9CA367487A02262F2A00044EB900004F244A806678222E00085981C6 +S321000032C4660001FE2F390002B504486EFFFC2F2A00084EB900000B8C26004AAE92 +S321000032E0FFFC670000922F390002B504486EFFFC2F2A000C4EB900000B8C2800D9 +S321000032FC4AAEFFFC6700009E2F034E9424002004D08353802F004E9422004A8237 +S32100003318670000DE4A80670000D8B481660000D22F022F042F034EBAFD7C600061 +S321000033340194A367487A01A22F2A00044EB900004F244A806600017A222E000899 +S321000033505B816600017041EEFFFC2F390002B50424082F082F2A00084EB9000090 +S3210000336C0B8C26004AAEFFFC66102F2A0008487900003FB44E93600001442F3916 +S321000033880002B5042F022F2A000C4EB900000B8C2C004AAEFFFC66102F2A000C3A +S321000033A4487900003FB44E936000011A2F390002B5042F022F2A00104EB9000033 +S321000033C00B8C28004AAEFFFC66102F2A0010487900003FB44E93600000F02F0343 +S321000033DC4E942A042400DA8353852F054E9422004A8267084A806704B481670E14 +S321000033F8487A00EA4E934EBAFA04600000C42002E7802200D080D081D08245F920 +S3210000341400028AD8220420320C44C280671252802F00487A00DC4E934EBAF9D658 +S32100003430600000962F064E94B480660A487A00FE4E93600000842002E780220099 +S3210000344CD080D081D08249F20C9C2F03206C00504E902F052440206C00544E9046 +S321000034682200B5C36604B08567282F012F0A487AFCF84E93486EFFE84EB90000D6 +S321000034843ECCA367486EFFE8487AFD1A4EB900004F244A80662EA367A3672F027F +S321000034A02F042F062F034EBAFD58B084670C2F042F00487A00C44E93600E2F0006 +S321000034BC487A00EA4E9360044EBAF8BA4CEE1C7CFFC84E5E4E7551FC6572617343 +S321000034D8650051FC77726974650051FC496E76616C696420466C617368206164EE +S321000034F464726573732072616E67650A0051FC51466C6173682057726974652087 +S321000035106572726F723A206279746520636F756E74206D7573742062652064695B +S3210000352C76697369626C652062792025640A0051466C6173682057726974652057 +S321000035486572726F723A20736F7572636520616E642064657374696E6174696FA5 +S321000035646E20696E2073616D65206465766963650A0051FC466C6173682057725C +S32100003580697465206572726F723A20252358206279746573206F66202523582087 +S3210000359C7772697474656E0A0051FC51466C61736820577269746520636F6D7070 +S321000035B86C6574652E20252358206279746573207772697474656E0A0051FC513D +S321000035D44E5600002F0C2F0B2F0A246E000891C82008E7802200D080D081D088E6 +S321000035F043F900028AD847F10C0049EB00404A94663E2F0A2F0B4EB900004C9485 +S3210000360C28AA0040276A003C003C47EB004426EA004426EA004826EA004C26EAF3 +S32100003628005026EA005426EA005826EA005C26AA0060A340508F600C5288B1FC13 +S32100003644000000026D9A70004CEE1C00FFF44E5E4E7551FC4E56000091C82008C1 +S32100003660E7802200D080D081D08843F900028AD8528842B10C40B1FC000000025E +S3210000367C6DE04E5E4E7551FC4E560000206E000870FFB09066044290600A5290B2 +S321000036987005B0906E02A9502010D0802200E780D08141F90002DDC843F00C0078 +S321000036B42F092F2E000C4EB900004C942F2E000C487A00164EB9000047082F2E78 +S321000036D0000C4EB900004CBC4E5E4E75257300514E560000206E00082F0A246E60 +S321000036EC000C53904A906C08A1504212700060322010D0802200E780D08141F9A4 +S321000037080002DDC843F00C002F092F0A4EB900004C942F0A487AFFBE4EB90000A2 +S3210000372447082F0A4EB900004CBC246EFFFC4E5E4E7551FC4E560000487900023C +S32100003740DDC82F2E00084EB900004C942F2E0008487AFF8A4EB9000047082F2E13 +S3210000375C00084EB900004CBC4E5E4E754E5600002F0A2F02A9422202E78120011F +S32100003778E781D28045F90002DDC841F218B82F0841F218002F084EB900004C94ED +S3210000379453824A82508F6ED62F2E00082F0A4EB900004C94508F4CEE0404FFF8B2 +S321000037B04E5E4E754E56FF9C48D70C3C45F90002870CA16EFFFC780074006000B9 +S321000037CC00F822037012B08363160C8300000004674A70080C83000000086600D7 +S321000037E800B060147012B08167367015B0816730707FB0816600009A4A826F00A3 +S3210000380400BC4878000853824E92487800204E92487800084E924FEF000C4A84E9 +S32100003820670000A2600000BA2A024A826F1A487800084E92487800204E924878BA +S3210000383C00084E924FEF000C538566E67015B0836616486EFFB4486EFFFC4EBABE +S32100003858FE2C2400508F4A846762607C0C83000000046616486EFFB4486EFFFC85 +S321000038744EBAFE6A2400508F4A846744605E7012B0836638486EFFB44EBAFEAA1C +S321000038902400A344588F6048220252817048B0816F1E2203048100000020706075 +S321000038ACB081631041EEFFB41183280052822F034E92588F4A84661C4EB9000292 +S321000038C887302600700DB083670E700AB08367087048B0826E00FEF047EEFFB492 +S321000038E4423328004878000D4E924878000A4E922F0B4EB900004CBC4A804FEF7D +S32100003900000C670C4A8466082F0B4EBAFE5C588F2F0B2F2E00084EB900004C94E1 +S3210000391C4CEE0C3CFF9C202E00084E5E4E7551FC4E56000091C82008D0802200C3 +S32100003938E780D08143F90002DDC8528842310C00B1FC000000056DE24E5E4E7509 +S321000039544E5600004EB9000263E8220070FFB081670C206E0008108152AE0008F5 +S3210000397060E64E5E4E7551FC4E5600002F032F02760074002002E580D08241F92F +S3210000398C0002B52841F00C00202E0008B09066227001B0A80004661A2F2800102B +S321000039A82F28000C206800084E904A80508F6706A3437400600A5282700AB082D2 +S321000039C46EBE74002002E580D08241F90002B52841F00C00202E0008B0906620F6 +S321000039E07002B0A8000466182F2800102F28000C206800084E904A80508F67042D +S321000039FCA34360085282700AB0826EC020034CEE000CFFF84E5E4E754E5600003A +S32100003A182F0A72002001E580D08141F90002B52841F00C00202E000C43E8000827 +S32100003A34B091661A202E000845E80004B092660E42904292429142A8000C42A819 +S32100003A5000105281700AB0816EC2246EFFFC4E5E4E7551FC4E5600002F032F0246 +S32100003A6C242E0008262E000C4A83675E0C820000000167080C8200000002664EAA +S32100003A884AAE0010674872002001E580D08141F90002B52841F00C00201022482C +S32100003AA4B0836606B4A8000467284A80661C228321420004216E00100008216EE4 +S32100003AC00014000C216E00180010A340600A5281700AB0816EBA70004CEE000C64 +S32100003ADCFFF84E5E4E7551FC4E56000072002001E580D08141F90002B52852813C +S32100003AF841F00C004298429842984298700A4290B0816EDE4E5E4E754E5600002B +S32100003B142F0A2F032F02206E000C246E000872007600740043D2101167480C0072 +S32100003B30002067060C00000966184A82672A5283246E00084211740043F2380053 +S32100003B4C101166DE60244A826612A342700AB0816F184A88670421891C0052813D +S32100003B68246E0008528343F23800101166B84A88670442B01C004CEE040CFFF498 +S32100003B8420014E5E4E7551FC4E56FFBC48D71C1C47F900028BE8243C00028BA04A +S32100003BA02F024EB9000037B4486EFFD42F024EBAFF6026004FEF000C661A2F0B95 +S32100003BBC2F024EB900004C94486EFFD42F024EBAFF4426004FEF001042134A8334 +S32100003BD867000108283C000047087400B4B9000253286C642002E78041F90002B5 +S32100003BF4533049EEFFD445F00C002F142F124EB900004F904A80508F663820030D +S32100003C105380B0AA00086D000096B0AA000C6E00008E082A00000013670C2F14FD +S32100003C2C2F0B4EB900004C94508F2F0C2F03206A00144E90508F6000009E5282DC +S32100003C48B4B9000253286D9C7400606C2002E78041F90002533049EEFFD445F0A0 +S32100003C640C002F2A00042F142F124EB900004F244A804FEF000C66422003538025 +S32100003C80B0AA00086D28B0AA000C6E22082A00000013670C2F142F0B4EB90000F9 +S32100003C9C4C94508F2F0C2F03206A00144E90508F60342F2EFFD4487A0038244459 +S32100003CB84E92508F60245282B4B9000253286D8C2F2EFFD4487900003F982444C0 +S32100003CD44E92487900003F804E924FEF000C4CEE1C1CFFBC4E5E4E754572726F10 +S32100003CF0723A20496E76616C69642073796E74617820666F723A2025730A0051A4 +S32100003D0C4E560000487A00124EB9000047084EBAFE70588F60EE51FC644255478D +S32100003D283E2000514E56000041F900000000B1FC00000000671A700022300C00F0 +S32100003D4443F90000000023810C0052800C800000010065E841F900026BC0203C02 +S32100003D6000026BC0B1C06718223C0002875892802F012F082F004EB900004BB03B +S32100003D7C4FEF000C203C00028758223C0002DF35B081671292802F0142A72F0026 +S32100003D984EB900004B884FEF000C4EB9000266A84EB90000EDD44EB900001DA83A +S32100003DB4423900028BA0423900028BE84EB90002669442A742A74EB900000AB4BB +S32100003DD04EB900026534487900003F804EB900004708487A00184EB90000470829 +S32100003DEC4EBAFF1E70004FEF00104E5E4E7551FC0A0051FC4E56FFF048D7041CED +S32100003E08206E00087600740070165290B0906E00008A487A00944EB900004708CC +S32100003E24588F4EB900028730722E2040B28063160C8000000003672E720AB28058 +S32100003E40671E720DB280662E6016702E2808B08467187051B08467127071B08818 +S32100003E5C670C601645F90002870C741B601845F90002870CA343741B600C4A8201 +S32100003E7867AC45F90002870C741B487800084E92487800204E92487800084E92A3 +S32100003E944FEF000C538266E6206E0008429020034CEE041CFFF04E5E4E7551FC11 +S32100003EB05072657373203C454E5445523E20746F20636F6E74696E75652E0051C4 +S32100003ECC4E5600002F0A2F032F0245F90002870C74004EB9000286E460542041C5 +S32100003EE8B1FC000000086706707FB081661E4A826F404878000853824E9248783A +S32100003F0400204E92487800084E924FEF000C6026260252837048B0836F1C20414F +S32100003F20706041E8FFE0B0886310206E00081181280052822F014E92588F4EB9DA +S32100003F3C000287302200700DB081670C700AB08167067048B0826E92206E0008CF +S32100003F58423028004878000D4E924878000A4E92202E0008508F4CEE040CFFF4E4 +S32100003F744E5E4E75000000046151FC51456E746572202768656C702720666F723D +S32100003F902068656C702E0A004572726F723A204E6F207375636820636F6D6D61ED +S32100003FAC6E643A2025730A004572726F723A20496E76616C69642076616C7565BD +S32100003FC83A2025730A0051FC436F7079726967687420313939352D3230303720C7 +S32100003FE4467265657363616C652053656D69636F6E647563746F722C20496E634C +S321000040002E0A00514572726F723A20496E76616C696420617267756D656E743A2D +S3210000401C2025730A0051FC514572726F723A20496E76616C6964207265676973BD +S321000040387465723A2025730A0051FC514E560000206E00102210538167065381F8 +S3210000405467166022102E000B2F00206800044E90206E000C5290601422680008E7 +S32100004070102E000B128052A80008206E000C52904E5E4E754E5600002F042F035D +S3210000408C2F02226E000C282E0014206E0008740042184AAE0010674020114A80CD +S321000040A8674026004C443803220020044C03080092804A816C14200346810681F3 +S321000040C40000003110C152824A8366DA6058200306810000003010C152824A83F3 +S321000040E066C8604620114A80660810BC0030A342603826004C44300322002003DA +S321000040FC4C0408009280700AB0816312200306810000003010C152824A8366DA8C +S321000041186010200306810000003710C152824A8366C820024CEE001CFFF44E5E7D +S321000041344E7551FC4E5600002F02242E0008B4AE000C6C1C2F2E00142F2E001056 +S32100004150487800304EBAFEEE52824FEF000CB4AE000C6DE4242EFFFC4E5E4E75D0 +S3210000416C4E5600002F02242E0008B4AE000C6C1C2F2E00142F2E0010487800204E +S321000041884EBAFEBA52824FEF000CB4AE000C6DE4242EFFFC4E5E4E754E56FF9881 +S321000041A448D73CFC242E0008246E0010266E000C42AEFFE449FAFE8A12134BFAFE +S321000041C0FEC4670005040C010025672E0C01000A660004E02F02486EFFE44878F9 +S321000041DC000D4E942F02486EFFE44878000A4E94528B4FEF0018121366D060006E +S321000041F804D07A007600528B702B7313B081630E7020B08167307023B081673E80 +S321000042146046702BB0816718702DB08167087030B0816720603208C500004A83D6 +S3210000423067CC602A08C500014A8367C2602008C500024A8367B8601608C500036A +S3210000424C4A8367AE600C08C500044A8367A46002538B78007600528B700973134F +S321000042682C01048600000030B0866518D8842004E584D880730104810000003030 +S32100004284D8814A8367D86002538B528B10130C00002E661C7600528B7009731365 +S321000042A0048100000030B0816404538B60084A8367E86002538B528B704C7313ED +S321000042BCB081670E7068B0816708706CB0816702538B528B7020731326010483CD +S321000042D800000058B083650003D2307B3A064EFB8802011A03C803C803C803C8FA +S321000042F403C803C803C803C803C8024E032E004203C803C803C803C8004203C8B5 +S3210000431003C803C803C803B8021C027A03C803C8034A03C802A803C803C8011ACC +S3210000432C2D5AFFE84878000AA36741EEFFE82F08486EFFC04EBAFD4243EEFFC034 +S321000043482600D3C02E094AAEFFE84FEF00106C067C2D52836018A546CC854A86C2 +S3210000436467067C2B5283600A0805000267047C2052830805000367324A06670E8B +S321000043802F02486EFFE42F064E944FEF000C2F02486EFFE42F042F034EBAFD9E1E +S3210000439C260420474FEF00104A10670002D8600002500805000066302F02486E49 +S321000043B8FFE42F042F034EBAFDAC4A064FEF0010670E2F02486EFFE42F064E94F6 +S321000043D44FEF000C20474A10670002A26000021A4A06670002282F02486EFFE48A +S321000043F02F064E9420474FEF000C4A1067000282600001FA2D5AFFEC4878001001 +S3210000440C42A741EEFFEC2F08486EFFC04EBAFC6A43EEFFC02600D3C02E09422E21 +S32100004428FFFF080500034FEF001067460805000467222F02486EFFE44878003015 +S321000044444E942F02486EFFE4487800784E941D7C0001FFFF4FEF00182F02486EBB +S32100004460FFE42F042F034EBAFCD026044FEF0010080500046700019A605A0805CC +S3210000447C0000664C7C10CC856702548341EEFFE42F022D48FFF82F082F042F0304 +S321000044984EBAFCD24A864FEF001067282F022F2EFFF8487800304E942F022F2E9A +S321000044B4FFF8487800784E9420474FEF00184A10670001BA6000013208050004F8 +S321000044D06700013E4A2EFFFF660001362F02486EFFE4487800304E942F02486E8E +S321000044ECFFE4487800784E94548320474FEF00184A1067000180600000F82D5AFC +S32100004508FFEC4878000842A741EEFFEC2F08486EFFC04EBAFB6826004FEF001050 +S3210000452443EEFFC0D3C02E0908050003670000AA600000882D5AFFECA56742A74B +S3210000454041EEFFEC2F08486EFFC04EBAFB3826004FEF001043EEFFC0D3C02E092A +S3210000455C08050003677A605A2D5AFFEC4878001042A741EEFFEC2F08486EFFC0A1 +S321000045784EBAFB0A26004FEF001043EEFFC0D3C02E0908050003674C602C2D5A10 +S32100004594FFEC4878000A42A741EEFFEC2F08486EFFC04EBAFADC26004FEF00104F +S321000045B043EEFFC0D3C02E0908050003671E2F02486EFFE42F042F034EBAFB6EFA +S321000045CC260420474FEF00104A10670000A8602008050000662E2F02486EFFE49A +S321000045E82F042F034EBAFB7E20474FEF00104A10670000862F02486EFFE420479E +S32100004604538710102F004E944FEF000C20474A1066E66068201A2F02486EFFE466 +S321000046202F004E94528B4FEF000C12136600FB98600000962C1A4A866700008629 +S3210000463C2F064EB900004CBC260008050000588F662C2F02486EFFE42F042F0040 +S321000046584EBAFB1220464FEF00104A10671A2F02486EFFE4204610182C082F00E1 +S321000046744E944FEF000C20464A1066E608050000673A2F02486EFFE42F042F030F +S321000046904EBAFADA528B4FEF001012136600FB286026205A528B20AEFFE41213A0 +S321000046AC6600FB1860162F02486EFFE42F014E944FEF000C528B12136600FB0074 +S321000046C84CEE3CFCFF98202EFFE44E5E4E7551FC4E56FFF470004AAE000867204C +S321000046E441EEFFF42D6E0008FFFCA550486E00102F2E000C2F084EBAFAA4206E65 +S32100004700FFFC42104E5E4E754E56FFF441EEFFF4223C0002870CA3502D41FFF8D7 +S3210000471C486E000C2F2E00082F084EBAFA784E5E4E7551FC4E56FFE848D71C0C15 +S32100004738266E000C49F900004708222E000842AEFFFC5381665642AB00087400F2 +S32100004754B4B90002532C6C0000D02002E780908241F90002573045F00C00082A48 +S321000047700000001366202F12487A00BE4E942F0BA567206A00144E90486EFFFC78 +S3210000478C4EB900003E004FEF00145282B4B90002532C6DBE6000008A7400B4B9BC +S321000047A80002532C6C722002E780908241F90002573045F00C002F2A0004260A64 +S321000047C42F2B00042F124EB900004F244A804FEF000C663E202E00085580B0AA7D +S321000047E000086D22B0AA000C6E1C20432F10487A00484E942F0B2F2E0008206A79 +S321000047FC00144E904FEF001060262F2B00044879000040044E94508F6016528267 +S32100004818B4B90002532C6D8E2F2B0004487A001A4E94508F4CEE1C0CFFE84E5EA5 +S321000048344E7551FC253132733A2000514572726F723A2020496E76616C69642041 +S321000048507365742F73686F77206F7074696F6E3A2025730A0051FC514E56FFEC28 +S3210000486C48D71C04286E000C45F900004708222E000842AEFFFC53816664487A19 +S3210000488800F44E92486EFFFC4EB900003E007400B4B90002532C508F6C0000CEC9 +S321000048A42002E780908241F90002573047F00C00082B0000001366202F13487A81 +S321000048C0FF784E922F2B0018487A00CA4E92486EFFFC4EB900003E004FEF001459 +S321000048DC5282B4B90002532C6DBE60000088222E00085781670A487A00A44E92FE +S321000048F8588F60747400B4B90002532C6C5E2002E780908241F90002573047F022 +S321000049140C002F2B00042F2C00042F134EB900004F244A804FEF000C662C7001E5 +S32100004930B0AB00086D14B0AB000C6E0E2F0CA767206B00144E90508F60262F2C18 +S3210000494C00044879000040044E92508F60165282B4B90002532C6DA22F2C0004DB +S32100004968487AFED64E92508F4CEE1C04FFEC4E5E4E7551FC56616C69642027732D +S32100004984657427206F7074696F6E733A0A0051FC25730A004572726F723A204905 +S321000049A06E76616C696420617267756D656E74206C6973740A0051FC4E56FFFC22 +S321000049BC2F0A222E0008578167164EB900026B502F00487A00B04EB90000470838 +S321000049D86000009E4878000A486EFFFC246E000C2F2A00084EB900000B8C220085 +S321000049F420400C80000012C064220C800000012C67540C8000000258674C0C80C4 +S32100004A10000004B067440C80000009606646603A0C8100009600641A0C810000BC +S32100004A2C12C0672A0C810000258067220C8100004B00662460180C81000096004D +S32100004A4867100C810000E10067080C810001C200660A2F084EB900026BA0601479 +S32100004A64206E000C2F2800084879000040044EB900004708246EFFF84E5E4E75E4 +S32100004A8025640A004E5600002F0B2F0A2F02266E000C4AAB000866142F390002B8 +S32100004A9CB504487AFFE04EB900004708508F606274002002E58041FA006445F0D8 +S32100004AB80C002F2A00042F2B00082F124EB900004F244A804FEF000C67142F2B6D +S32100004AD400082F2A00084EB900004F904A80508F660C202A000C23C00002B50462 +S32100004AF0601C52820C82000000046DB22F2B00044879000040044EB900004708EA +S32100004B0C508F4CEE0C04FFF44E5E4E7500004B7C0000000300004B6C000000106B +S32100004B2800004B580000000300004B6F0000000A00004B600000000300004B68A0 +S32100004B440000000800004B740000000300004B6A00000002646563696D616C00FF +S32100004B606F6374616C0000003800320031360031300051FC62696E6172790051CB +S32100004B7C68657861646563696D616C004E560000222E0008202E001020414A811C +S32100004B98670E4A80670A600410EE000F538064F820014E5E4E7551FC4E5600002A +S32100004BB42F02242E0008222E00102242206E000C4A8267264AAE000C67204A8147 +S32100004BD0671CA740C0819280E4895381650622D8538164FA5380650612D8538033 +S32100004BEC64FA2002242EFFFC4E5E4E754E560000202E0010206E0008226E000C37 +S32100004C084A806E1070006016B210660C5380670852885289121166F071107301C3 +S32100004C2490814E5E4E7551FC4E560000226E000C206E00081011670CB010660809 +S32100004C4052895288101166F473107100928020014E5E4E754E5600002F02222E67 +S32100004C5C0008202E00102241206E000C4A81671C4AAE000C67164A806F12600257 +S32100004C7812D84A106708240053804A826EF242112001242EFFFC4E5E4E7551FCC7 +S32100004C944E560000202E00082240206E000C4A8067104AAE000C670A600212D806 +S32100004CB0121066FA12814E5E4E7551FC4E560000206E000870004A886606200801 +S32100004CCC600652804A1866FA4E5E4E754E5600002F0A246E0008222E0010226EF6 +S32100004CE8000C4A8A67264AAE000C67204A816F1C2F0A61C041F20800588F60027E +S32100004D0410D94A116708200153814A806EF24210200A246EFFFC4E5E4E7551FCF6 +S32100004D204E5600002F0A246E0008226E000C4A8A671C4AAE000C67162F0A61806C +S32100004D3C41F20800588F1011670610D9101166FA1080200A246EFFFC4E5E4E7585 +S32100004D584E560000A3407220B2AE0008670C7009B0AE000857C049C044804E5ED6 +S32100004D744E7551FC4E5600002F02222E00082041700A41E8FFD02408B082621C31 +S32100004D902041701A41E8FFBFB0886210048100000061B08152C049C0448060022D +S32100004DACA340242EFFFC4E5E4E7551FC4E560000222E0008048100000030700ACE +S32100004DC8B08152C049C044804E5E4E754E560000222E0008048100000041701AFE +S32100004DE4B08152C049C044804E5E4E754E56FFE848D7047C246E000C242E001004 +S32100004E0078007A007C004AAE0008670000FE4A826D0000F80C8200000001670096 +S32100004E1C00EE7024B0826D0000E6206E000877102F034EBAFF284A80588F6710C7 +S32100004E38528877102F034EBAFF184A80588F66F0702DB08367307030B083662ED1 +S32100004E54102800010C00007867060C000058661E4A8267067010B082661A43E894 +S32100004E700002771174104A83670000866012A34652884A826602740A7710224880 +S32100004E8C4A8367702F034EBAFEE44A80588F673A2F034EBAFF184A80588F670C7D +S32100004EA8048300000030B6826D2C60222F034EBAFF1C4A80588F670C0683FFFFDE +S32100004EC4FFC9B6826D14600A0683FFFFFFA9B6826D08A3454A8A672A60264A8662 +S32100004EE067104C0248005289988377114A8366A0600E4C0248005289D883771190 +S32100004EFC4A8366904A8A670224894A85670C4A8A670424AE000870006002200496 +S32100004F184CEE047CFFE84E5E4E7551FC4E5600002F042F032F02206E0008226EBA +S32100004F34000C70007601242E00106F44141912187061180198807904701AB084BF +S32100004F506304702092801802706198807904701AB0846304702094807101790200 +S32100004F6C908466144A0167104A02670C2203242E00105283B4816EBC4CEE001C03 +S32100004F88FFF44E5E4E7551FC4E5600002F032F02206E0008226E000C14191218C8 +S32100004FA47061160196807703701AB0836304702092801602706196807703701AAA +S32100004FC0B08363047020948071017702908366084A0167044A0266C84CEE000CAF +S32100004FDCFFF84E5E4E7551FC4E5600002F0A247900028C34601C487800202F0A2F +S32100004FF82F2E00084EB900004BF84A804FEF000C6708246A00244A8A66E0200A6F +S32100005014246EFFFC4E5E4E754E5600002F0A2F032F02202E0008242E000C2079F1 +S3210000503000028C3445F9000046D84A8866222F00487A00762F024E9270004FEFC0 +S3210000504C000C605E226800244A896726B0A900206520204926280020B68066E811 +S32100005068487800202F082F024EB900004C54A3404FEF000C6030220092830C81B6 +S321000050840000040064142F012F08487A00302F024E92A3404FEF001060102F0054 +S321000050A0487A00162F024E924FEF000C70004CEE040CFFF44E5E4E7525233038EF +S321000050BC580051FC25732B25233034580051FC514E56FFA448D71C0C242E0008E0 +S321000050D847F90000470849FA00D042AEFFFC4A82662E247900028C3460202F0AB1 +S321000050F42F2A00202F0C4E93246A0024486EFFFC4EB900003E004A804FEF001045 +S3210000511066764A8A66DC60702F024EBAFEC84A802440588F664A2F390002B504D4 +S3210000512C486EFFF82F024EB900000B8C26004AAEFFF84FEF000C6720486EFFB892 +S321000051482F004EBAFED04A80508F6710486EFFB82F032F0C4E934FEF000C602497 +S321000051642F02487A002C4E93508F6018207C00FFFE00B1D2670E2F0A2F2A00208F +S321000051802F0C4E934FEF000C4CEE1C0CFFA44E5E4E7551FC4572726F723A204E34 +S3210000519C6F20737563682073796D626F6C3A2025730A0051253038583A202573D5 +S321000051B80A0051FC4E56000043F900028C38205120084A88670422A800244E5E68 +S321000051D44E7551FC4E5600002F0A2F02242E000C61D64A802440677C254200206E +S321000051F0487800202F2E00082F004EB900004C54422A001F43F900028C342011C8 +S3210000520C4A8020404FEF000C660A228A42AA0024200A6048B4A80020640A2540BF +S321000052280024228A200A603820280024222800202240B282671A4A80660C214A3E +S32100005244002442AA0024200A601AB4816312B4A90020640C25400024214A0024C1 +S32100005260200A6004204960C84CEE0404FFF84E5E4E7551FC4E5600002F2E000C0B +S3210000527C2F2E00084EBAFF564E5E4E754E5600002F0A206E0008429045F900025A +S321000052988C3043EA00082151002422885392246EFFFC4E5E4E7551FC4E560000F1 +S321000052B42F0A206E000845F900028C342252B1C9660C24A800242F0861BA588F80 +S321000052D060204A89671C20290024B088660E2368002400242F0861A0588F600675 +S321000052EC22404A8066E4246EFFFC4E5E4E7551FC4E5600002F0B2F0A2F0241F95F +S3210000530800028C3074002202E7812001E581D28043E8000C528245F118004292BF +S3210000532447F11828254B00240C82000000FA6DDA42A9270C4298429820894CEED7 +S321000053400C04FFF44E5E4E754E56FFEC48D70C0CA342B4AE000845F90000470837 +S3210000535C6C00018C206E000C47F02C00225310110C00002D67142F094EBAFD565C +S32100005378588F5282B4AE00086DDE60000166732900010481000000417032B081A6 +S321000053946500014A307B1A064EFB88020066014000DA01400140014001400140E3 +S321000053B001400140014000E00140014001400140014000EA012A0140014001401B +S321000053CC01400140014001400140014001400140014001400066014000DA014073 +S321000053E8014001400140014001400140014000E00140014001400140014000EACD +S32100005404012A5482B4AE00086D0C487A00E44E92588F600000D22F390002B504E0 +S32100005420486EFFFC2F2B00084EB900004DF026004A804FEF000C6616202B00040E +S3210000543CB0AEFFFC660C2F00487900003FB44E92508F588B2F134EBAFB904A805F +S32100005458588F67082F004EBAFE50588F2F032F134EBAFE0A508F5282B4AE0008CF +S321000054746D00FEEA60704EBAFE80606A42A74EBAFC48588F6060206E000C528257 +S3210000549047F02C002F134EBAFB4C4A80588F66162F13487A00684E92508F5482D8 +S321000054ACB4AE00086D00FEAE60342F004EBAFDF6588F5482B4AE00086D00FE9A71 +S321000054C86020487800FA2F3900028C30487A00524E924FEF000C600A2F09487AC0 +S321000054E4006C4E92508F4CEE0C0CFFEC4E5E4E754572726F723A20496E76616C71 +S3210000550069642076616C75650A0051FC4572726F723A20496E76616C696420736A +S3210000551C796D626F6C3A2025730A00512564206F662025642073796D626F6C2000 +S321000055387461626C6520656E747269657320696E207573652E0A00514572726FAA +S32100005554723A20496E76616C6964206F7074696F6E3A2025730A00514E560000F8 +S321000055702F0A247900028C346032207C00FFFE00B1D26624202E000CB0AA000491 +S3210000558C661A487800202F2E00082F0A4EB900004C54422A001F4FEF000C60081B +S321000055A8246A00244A8A66CA246EFFFC4E5E4E754E56FFFC203C00FFFE002D40CA +S321000055C4FFFC2F2E000C43EEFFFC2F094EBAFC064A802040670A20FC00FFFE003F +S321000055E020AE00084E5E4E754E560000207900028C344A88660A602A202800242D +S321000055FC67242040202E0008B0A8002066EE487800202F082F2E000C4EB90000F9 +S321000056184C54A3404FEF000C60182F2E0008487AFA902F2E000C4EB9000046D8EC +S3210000563470004FEF000C4E5E4E7551FC4E5600002F2E00084EBAF99A4A80204010 +S32100005650670A226E000C22A80020A3404E5E4E754E5600002F0B2F0A222E000880 +S3210000566C5E8145F90002B354E689225252814A89662441F90002DF90203C0004D8 +S321000056884F909088E6882140000443F90002B34C2649208926C842932489205100 +S321000056A420280004B081652AB081660C2290248947E80008200B602893A80004AD +S321000056C020280004E780D1C0248947E8000821410004200B600EB1D26604700044 +S321000056DC60062248205060C04CEE0C00FFF84E5E4E7551FC4E5600002F0B2F0A3C +S321000056F8246E000820790002B35443EAFFF860102010B1C06D08B3C86E0EB3C040 +S321000057146D0A2040B3C86FECB3D06CE820290004D080245047F10C00B5CB661E96 +S32100005730202A0004D1A9000424502452228A20280004D08047F00C00B3CB66260C +S3210000574C6010228A20280004D08047F00C00B3CB661420290004D1A8000422510B +S32100005768208923C80002B3546008208923C80002B3544CEE0C00FFF84E5E4E75D1 +S321000057844E5600002F2E000C2F2E0008487A001E4EB900004708487A00384EB95A +S321000057A0000047084EB9000262784FEF001060FE417373657274696F6E2066616A +S321000057BC696C656420696E202573206174206C696E652025640A005150726F6329 +S321000057D86573732068616C7465642E0A0051FC514E560000206E00084A9057C0D1 +S321000057F449C044804E5E4E754E5600002F0A226E0008246E000C2F0A61DA4A8006 +S3210000581066222F0961D222124A80670A22C122AA00044292600E206900042081F1 +S3210000582C236A000400044292246EFFFC4E5E4E754E560000206E000820104E5EDF +S321000058484E7551FC4E560000226E00082F0961904A80670470006006205122909B +S3210000586420084E5E4E7551FC4E5600002F0A226E0008246E000C2F094EBAFF6A82 +S321000058804A80670A234A0004228A4292600C20690004208A234A00044292246E60 +S3210000589CFFFC4E5E4E7551FC4E560000206E000842904E5E4E7551FC4E560000C7 +S321000058B84E5E4E754E5600002F032F02242E0008AF674EB90000F018D48241F949 +S321000058D40002B5F0260043F02C002F094EB90000584C2F0324004EB90000F0183E +S321000058F020024CEE000CFFF84E5E4E754E5600002F0A2F02246E0008AF674EB903 +S3210000590C0000F018357C0800000A426A000824002F0A48790002B5F04EB900002E +S32100005928586C2F024EB90000F0184CEE0404FFF84E5E4E754E5600002F032F02AA +S32100005944AF674EB90000F018A3422600588FA3674EBAFF664A80588F67122F005A +S32100005960619A588F2F024EBAFF544A80588F66EE52820C82000000046DEA2F03C3 +S3210000597C4EB90000F018588F4CEE000CFFF84E5E4E7551FC4E5600002F032F0213 +S32100005998242E0008AF674EB90000F0182F2E000C2600D48241F90002B5F043F075 +S321000059B42C002F094EB90000586C2F034EB90000F0184CEE000CFFF84E5E4E75B5 +S321000059D04E5600002F032F02AF674EB90000F01848790002B5F026004EB90000F4 +S321000059EC584C24002F034EB90000F01820024CEE000CFFF84E5E4E754E5600001E +S32100005A082F032F02AF674EB90000F01826007400588F41F90002B6102F302C00E6 +S32100005A244EB9000056F05282701EB082588F6EE67400600A2F004EB9000056F0EA +S32100005A40588F2002D08041F90002B5F043F00C002F094EB90000584C4A80588F37 +S32100005A5C66DA52820C82000000046DDA2F034EB90000F018588F4CEE000CFFF8D6 +S32100005A784E5E4E754E5600002F0B2F0A2F0274002002D08041F90002B5F043F05B +S32100005A940C002F094EB9000058A452820C8200000004588F6DDE74004878000CD1 +S32100005AB04EB9000056604A802440588F672C41F90002B61047F02C004878081032 +S32100005ACC4EB900005660268006800000000F0280FFFFFFF0254000044A80588F37 +S32100005AE86604A3406022426A0008426A000A2F0A48790002B5F04EB90000586CF7 +S32100005B045282701EB082508F6E9E70004CEE0C04FFF44E5E4E7551FC4E560000F3 +S32100005B20206E000872004230180050C01180180652810C81000000066DEC7200E1 +S32100005B3C2001E5809081528143F00C14425142A9000442A900080C810000000385 +S32100005B586DE24268003842A8000C42A8001042A8003C42A8004042A8004442A8A2 +S32100005B74004842A8004C42A8005020084E5E4E754E560000206E000830280038F6 +S32100005B900C400002643C71C02200E580908143E80014322E000E33810C0071E876 +S32100005BAC00382200E580908143F10C00236E0014000832280038236E00100004E3 +S32100005BC8528131410038A340600270004E5E4E754E560000226E00087200601AF2 +S32100005BE42001E580908141F10C14302E000EB050660620280008600C528171E9F5 +S32100005C000038B2806DDE70004E5E4E754E5600002F0A2F02246E00087400602250 +S32100005C1C2002E580908241F20C14302E000EB050660E2F2E00102F0A2068000468 +S32100005C384E90508F528271EA0038B4806DD64CEE0404FFF84E5E4E754E56000063 +S32100005C542F02206E0008720060162001E5809081342E000EB4700C146604A340E7 +S32100005C70600C528171E80038B2806DE27000242EFFFC4E5E4E7551FC4E560000A4 +S32100005C8C2F042F032F02206E0008222E000C7400E2814A81672479D02604D68276 +S32100005CA871C377C4B0836D04B0826C08528002800000FFFF5488240053814A8130 +S32100005CC466DC300246804CEE001CFFF471C04E5E4E7551FC4E5600002F0A2F0240 +S32100005CE0246E000C73920281000000F0E881598166581212700FC2800C01000594 +S32100005CFC654C487808002F2E00084EB900005BD872002040508F43F21800102937 +S32100005D180010B0301800662A52810C810000000465E875EA000A7392426A000AFC +S32100005D3402810000000FE5812F012F0A4EBAFF46B480508F6704700060063542D4 +S32100005D50000AA3404CEE0404FFF84E5E4E7551FC4E5600002F0B2F0A2F02246E75 +S32100005D6C000C71EA0008266A0004D7C02F0B2F2E00084EBAFF584A8067567393F0 +S32100005D88700FC28071C1322A0008E580D28035410008342B00027393700FC28045 +S32100005DA4E58194813542000A73AB00090C810000000167087011B0816710601C18 +S32100005DC02F0A2F2E00084EB9000069FC60162F0A2F2E00084EB900006AC8600802 +S32100005DDC2F0A4EB9000058FC4CEE0C04FFF44E5E4E7551FC4E5600002F0A7200C9 +S32100005DF8226E000C206E000845F118001012B030180067047000600C52810C8148 +S32100005E140000000465DEA340246EFFFC4E5E4E754E56FFF82F0B2F0A2F02487847 +S32100005E3008002F2E00084EB900005BD872002440508F43F2180010321800142910 +S32100005E4C000841EEFFF8C0821180180052810C810000000465E07200226E000C64 +S32100005E681030180047F11800141343EEFFFCC0821380180052810C8100000004CC +S32100005E8465DE486EFFFC2F084EBAFF624A80508F67182F2E000C487808002F2EB2 +S32100005EA000084EB9000065544FEF000C601841EA00042F08487808002F2E0008C3 +S32100005EBC4EB9000065544FEF000C4CEE0C04FFEC4E5E4E754E5600002F0C2F0BFD +S32100005ED82F0A266E0008246E000C206E0010286E0018226C0004701472454229B1 +S32100005EF4000F1341000E322C000A42690012D2803341001042690014137C00FFD3 +S32100005F10001643E9000E136E001700094269000A1358000C1358000D1358000E61 +S32100005F2C1350000F13520010136A00010011136A00020012136A000300134878F9 +S32100005F4800142F094EBAFD3A3340000A322C000A7014D2803941000A2F0A2F0BFA +S32100005F644EBAFEBE4A80662471AA00032F0071AA00022F0071AA00012F0071921C +S32100005F802F00487A00284EB900004708700060122F0C487808002F0B2F002F0B08 +S32100005F9C206B003C4E904CEE1C00FFF44E5E4E75556E61626C6520746F206C6F31 +S32100005FB8636174652025642E25642E25642E25640A0051FC4E560000202E00080B +S32100005FD44A804E5E4E7551FC4E560000206E00087200226E000C10311800226EF4 +S32100005FF000101180180010311800226E001411801804103118001180180850C012 +S3210000600C1180180C52810C810000000465CC42A8001042A8001442A8001842A844 +S32100006028001C4E5E4E7551FC4E56FFEC48D71C0C226E0008246E0010266E0014C6 +S3210000604476004A8A66064A8B670000804A89677A7400720060662001E580D08191 +S3210000606041F10C044AA800106754302E000EB050664C4A8A672249E8000A240C39 +S3210000607C7000600E49F208001614B63008036622528077A80002B0836DEA60322F +S3210000609849E80003240C7000601249F308001614B630080A67047600600C52801B +S321000060B477A80009B0836DE6600C52812011B08162944A83670420026002700059 +S321000060D04CEE1C0CFFEC4E5E4E7551FC4E5600002F0A2F024AAE0014670001081B +S321000060EC4AAE001C670001004AAE0008670000F87002B0AE0020670A7001B0AE87 +S321000061080020660000E62F2E001C42A7302E000E2F002F2E00084EBAFF104A80C6 +S3210000612422404FEF0010671C91C8600E246E001410328800138088005288B1EE5B +S3210000614000106DEC600000ACA14291C8246E00082008E580D08843EA00044AB1E1 +S3210000615C0C10660A240870FFB082671060385288700AB0886EDA70FFB082662AB4 +S3210000617891C82008E580D0887202B2B10C10660A240870FFB082671060105288D6 +S32100006194700AB0886EE070FFB082660274092002E580D08291C843F10C0032AE11 +S321000061B0000E136E00130002600E246E001410328800138088035288B1EE0010A4 +S321000061CC6DEC136E001B000991C8600E246E001C103288001380880A5288B1EED6 +S321000061E800186DEC236E002000104CEE0404FFF84E5E4E754E56FFE048D73C3CA1 +S32100006204246E0008262E000C48780806283C00005BD82F0A26444E9320432A0008 +S32100006220286800043028000A73E800080C40001C6500018430341800D9C10C404F +S3210000623C000166000176102C00040C0000066600016A302C00020C400800660027 +S32100006258015E102C00050C00000466000152487808002F0A26444E93508F2F0061 +S321000062744EB900005FCC204024001010B02C00186626204210280001B02C001922 +S32100006290661A10280002B02C001A6610204210280003B02C001B6604A340600283 +S321000062ACA5402F0041EC000E2F0871AC00052F0041EC00082F0871AC00042F003D +S321000062C8302C00022F002F054EBAFE0A73EC00065381660000DA20421010B02C0C +S321000062E40018660000CE10280001B02C0019660000C2204210280002B02C001A64 +S32100006300660000B410280003B02C001B660000A82643266B000447EB000E36FCB1 +S3210000631C000136FC080016FC000616FC000436BC000247EB000C16EC000816ECB8 +S32100006338000916EC000A16EC000B16EC000C16EC000D16EC000E16EC000F16ECE1 +S32100006354001016AC001147EBFFED16D216EA000116EA000216EA000316EA000434 +S3210000637016EA0005487808002F0A2A444E95508F2F004EB900005FCC204016D826 +S3210000638C16D816D816902043317C001C000A2F034878080641EBFFF72F0841EBB2 +S321000063A800012F082F0A206A003C4E9060082F034EB9000058FC4CEE3C3CFFE038 +S321000063C44E5E4E754E5600002F02226E000822BC0000000A740072002002E58086 +S321000063E0D08241F10C044230180352810C81000000066DE872004230180A5281E6 +S321000063FC0C81000000046DF242A8001042280002422800095282700AB08262C212 +S32100006418242EFFFC4E5E4E754E5600004AAE0010673C4AAE000867364A6E000EF4 +S321000064346730487808062F2E00084EB900005BD82F2E001042A7322E000E2F014E +S321000064502F004EBAFBDC206E001420804A8056C049C04480600270004E5E4E75EC +S3210000646C4E5600002F0C2F0B2F0A266E00084EB9000059D04A802840670000C295 +S32100006488246C0004204B357C00010014157C00040013157C00060012357C080023 +S321000064A40010357C0001000E45EA000E7200103018001580180852810C810000EA +S321000064C000066DEE487808002F0B4EB900005BD8508F2F004EB900005FCC72006B +S321000064DC2040588F103018001580180E52810C81000000046DEE72004232181275 +S321000064F852810C81000000066DF27200206E000C103018001580181852810C8134 +S32100006514000000046DEA397C001C000A2F0C487808062F0B41EB00062F082F0B49 +S32100006530206B003C4E904A804FEF0014660A2F0C4EB9000058FC588F4CEE1C0045 +S3210000654CFFF44E5E4E7551FC4E56FFFC2F02486EFFFC2F2E0010302E000E2F00F5 +S321000065682F2E00084EBAFEB24A804FEF00106706202EFFFC606224002F2E0010D3 +S321000065842F2E00084EBAFEE2A36742A74EB9000252984FEF001042A74EB9000282 +S321000065A051F44A80588F672C486EFFFC2F2E0010302E000E2F002F2E00084EBA2A +S321000065BCFE644A804FEF001066B242A74EB9000251F44A80588F66D452820C82A7 +S321000065D8000000036DA27000242EFFF84E5E4E754E56FFF048D71C04226E0008FD +S321000065F4246E0010266E00144A8A66064A8B670000AA4A89670000A47400600063 +S3210000661000962002E580D08241F10C044AA8001067000082302E000EB050667882 +S3210000662C4A8A671C7200600E49F218001014B03018036664528171A80002B280B9 +S321000066486DEA601A220A600E49F318001014B030180A6648528171A80009B28076 +S321000066646DEA720060102002E580D08241F10C004230180752812002E580D08287 +S3210000668041F10C0471A80002B2806DDE720060064230180A528171A80009B2808B +S3210000669C6DF242A80010600A52822011B0826200FF664CEE1C04FFF04E5E4E7563 +S321000066B84E5600002F0A226E000873917010B08165000182307B1A064EFB880210 +S321000066D4012801780178002200F601080178017801180178017800D200E401585C +S321000066F0016801380148487A016C4EB900004708246E000873AA000170050C815E +S3210000670C0000000562000082307B1A064EFB8802000C001E00300042005400668E +S32100006728203C0000686C2F004EB90000470860000122203C000068802F004EB99D +S321000067440000470860000110203C000068942F004EB900004708600000FE203CDC +S32100006760000068AC2F004EB900004708600000EC203C000068C02F004EB9000078 +S3210000677C4708600000DA203C000068E42F004EB900004708600000C8203C0000C1 +S3210000679868FC2F004EB900004708600000B6203C000069182F004EB9000047087E +S321000067B4600000A4203C0000692C2F004EB90000470860000092203C000069444E +S321000067D02F004EB90000470860000080203C000069582F004EB900004708606ED2 +S321000067EC203C000069682F004EB900004708605E203C000069742F004EB90000AC +S321000068084708604E203C000069882F004EB900004708603E203C000069A42F0069 +S321000068244EB900004708602E203C000069BC2F004EB900004708601E203C00008E +S3210000684069CC2F004EB900004708600E203C000069E42F004EB900004708246E4E +S3210000685CFFFC4E5E4E7551FC49434D50203A20004E657420556E72656163686152 +S32100006878626C650A0051FC51486F737420556E726561636861626C650A0051FCB4 +S3210000689450726F746F636F6C20556E726561636861626C650A0051FC506F72741A +S321000068B020556E726561636861626C650A0051FC467261676D656E746174696F14 +S321000068CC6E206E656564656420616E64204446207365740A0051FC51536F7572FD +S321000068E8636520726F757465206661696C65640A0051FC5144657374696E61740E +S32100006904696F6E20556E726561636861626C650A0051FC5149434D505F54494D97 +S32100006920455F45584345454445440A0049434D505F504152414D455445525F5098 +S3210000693C524F424C454D0A0049434D505F534F555243455F5155454E43480A00E8 +S3210000695849434D505F52454449524543540A005149434D505F4543484F0A0051E6 +S3210000697449434D505F4543484F5F5245504C590A0051FC5149434D505F494E4662 +S321000069904F524D4154494F4E5F524551554553540A0051FC49434D505F494E4638 +S321000069AC4F524D4154494F4E5F5245504C590A0049434D505F54494D45535441CC +S321000069C84D500A0049434D505F54494D455354414D505F5245504C590A0051FC88 +S321000069E4556E6B6E6F776E2049434D50206D6573736167650A0051FC4E56FFF861 +S32100006A002F0B2F0A266E000C71EB0008246B0004D5C0739251816664426A000286 +S32100006A1C421271EB000A2F002F0A4EB900005C8835400002246B000445EA000E04 +S32100006A38A96741EA000C2F0841EEFFFC2F084EB900004BB0A96741EA00102F08D9 +S32100006A5441EEFFF82F084EB900004BB02F0B102A00092F00486EFFF8486EFFFCB7 +S32100006A702F2E00084EB900005ED0600E2F0A4EBAFC382F0B4EB9000058FC4CEEB8 +S32100006A8C0C00FFF04E5E4E754E56000072002001D08041F90002B35841F00C0073 +S32100006AA8302E000AB050660620280004600C52810C81000000056DDA70004E5E78 +S32100006AC44E7551FC4E560000226E000C71E9000820690004D1C03029000A5180AC +S32100006AE03340000A30290008508033400008302800022F00619E4A802040670A48 +S32100006AFC2F092F2E00084E9060082F094EB9000058FC4E5E4E7551FC4E560000A2 +S32100006B18226E0018206900047022316E0012002241E80022316E00160002302966 +S32100006B34000A426800065080314000043229000A50813341000A2F094878001183 +S32100006B50487808002F2E00084EB900005BD8508F2F004EB900005FCC588F2F0066 +S32100006B6C2F2E000C2F2E00084EB900005ED04E5E4E7551FC4E56000041F9000268 +S32100006B88B38030103200538130810C4100FF620430BC432171C04E5E4E7551FCD2 +S32100006BA44E56000072002001D08041F90002B35841F00C00302E000AB0506604F2 +S32100006BC04250600A52810C81000000056DDC4E5E4E7551FC4E5600007200200116 +S32100006BDCD08041F90002B35841F00C004A50660C30AE000A216E000C0004600AC6 +S32100006BF852810C81000000056DD84E5E4E7551FC4E560000302E000A33C0000214 +S32100006C14B3804E5E4E7551FC4E56000072002001D08041F90002B358528142701C +S32100006C300C000C81000000056DE8303C432133C00002B3804E5E4E754E56000044 +S32100006C4C2F0A2F032F024EB9000059D04A8024406604200A6060206A000441E821 +S32100006C68002A30FC000430AE000A7400357C0004000A41F90002B6882F0A71E889 +S32100006C8400282F0071E8002A2F0043E800102F092F2800084EB900006B14260067 +S32100006CA053804FEF0014670A52820C82000000036DC24A83660A2F0A4EB900002B +S32100006CBC58FC588F20034CEE040CFFF44E5E4E754E56FFE448D73C1C45F900026E +S32100006CD8B6884A92204A671620525292759053AA00244AAA0024620001526000F0 +S32100006CF401364A2A00056606A1426000014243E80014283C00006C482F094EB946 +S32100006D100000583C26404A80588F6600008C2400A36742A74EB900025298508FDB +S32100006D2C42A74EB9000251F44A80588F673441EA00142F0826084EB9000057E8D8 +S32100006D484A80588F66122F034EB90000583C2640588F4A806714604842A74EB909 +S32100006D64000251F44A80588F66CC4A8B6636302A002E284A53802F002A444E9525 +S32100006D8052820C8200000003588F6D94422A0005157C00010030487A00B84EB9F0 +S32100006D9C00004708A142588F6000009C71EB0008206B00044BEA0024D1C071EB87 +S32100006DB8000A260D59802A804BE80004224A248D49EA002E220038A800020C80B4 +S32100006DD4000002006404422A00054A81662C41E900142F084EB90000584C2F0016 +S32100006DF04EB9000058FC301442923200528138812F0026444E93A1424FEF000CA9 +S32100006E0C603430143200528138812F0026444E9320525292759020435390588FCC +S32100006E28661841EA00142F084EB90000584C2F004EB9000058FC4292508F20024A +S32100006E444CEE3C1CFFE44E5E4E7551FC54465450206C6F737420636F6E6E656345 +S32100006E6074696F6E20746F207365727665722E0A0051FC514E5600002F0A2F03B7 +S32100006E7C2F024EB9000059D04A8024406604200A6062206A000441E8002A30FC02 +S32100006E98000530EE000A42107400357C0005000A41F90002B6882F0A71EE000E05 +S32100006EB42F0071E8002A2F0043E800102F092F2800084EB900006B14260053808A +S32100006ED04FEF0014670A52820C82000000036DC24A83660A2F0A4EB9000058FC78 +S32100006EEC588F20034CEE040CFFF44E5E4E7551FC4E56FFE848D73C0C286E000CED +S32100006F0845F90002B38473EC0008206C000471C1243C0002B68847F0180073D392 +S32100006F2441F008F8578167105381670001065381670000CE600001462A42302B12 +S32100006F400002264243ED002C32112409B0416600009C0C400001661E3750002886 +S32100006F5C700117400005103900026BC02F004EB90002870C42AA0004600A30106B +S32100006F78B06B0028660000F02F0C41EB00142F084EB90000586C2042301052806D +S32100006F94308071EC000A5980D1AB001C52AA00047032B0AA0004660000DC2212DD +S32100006FB0701F52812601E0A3A742C483D4810282FFFFFFFC928224814878000830 +S32100006FCC4EB90002870C201A41F900026BC0103008002F004EB90002870C42927F +S32100006FE86000009EB041640000902F004EBAFC522F0C4EB9000058FC60000086A3 +S3210000700471EB00022F00487A00884EB90000470841EB00042F08487A008C4EB981 +S32100007020000047082042117C000100302F0C4EB9000058FC60522A42224245ED95 +S3210000703C002C3012B06B0002663A4A6B0002661A3350002870011340000530121A +S32100007058528034802F0C4EB9000058FC60223010B0690028670C30102F00AB6703 +S321000070744EBAFDFE600E3012528034802F0C4EB9000058FC4CEE3C0CFFE84E5E16 +S321000070904E7551FC0A54465450204572726F72202325643A200051FC25730A0047 +S321000070AC4E56FFE848D71C1C4EB9000059D04A8024406606200A6000009C43F9B4 +S321000070C80002B688206A000473A900043141002A49E9000C47E8002C2F142F0B06 +S321000070E44EB900004C942F144EB900004CBC2400528241FA007443F3280012D862 +S3210000710012D812D812D812D812D876004FEF000C300250803540000A41F900025E +S3210000711CB6882F0A71E800282F0071E8002A2F0043E800102F092F2800084EB99F +S3210000713800006B14280053804FEF0014670A52830C83000000036DC04A84660A26 +S321000071542F0A4EB9000058FC588F20044CEE1C1CFFE84E5E4E7551FC6F637465BA +S32100007170740051FC4E56FFF048D71C04286E0008206E00104AAE000C67044A88ED +S3210000718C660670006000012445F90002B68847F90000470843EA0010256E000C97 +S321000071A8000C254C000812D812D812D870011290357C004500283540002C426A04 +S321000071C4002E15400004422A000542AA001C42AA0024429243EA0014422A0030E8 +S321000071E02F094EB9000058A471AC000473AC0005E18080812F004EB900006C0801 +S321000071FC4EB900006B803540002A2F3C00006EFC302A002A2F004EB900006BD412 +S32100007218A9424FEF001060564EBAFE8A4A806618487A00964E93302A002A2F00A1 +S321000072344EB900006BA47000508F6076A56742A74EB900025298508F600A102A92 +S3210000725000050C000001670E42A74EB9000251F44A80588F66E8102A00050C0014 +S3210000726C0001670A4A2A00306604538266A64A826618487A00684E93302A002AC6 +S321000072882F004EB900006BA47000508F60204A2A00306718487A00764E93302A3A +S321000072A4002A2F004EB900006BA47000508F6002A3404CEE1C04FFF04E5E4E750D +S321000072C04572726F723A20436F756C646E27742073656E64205446545020526549 +S321000072DC616420526571756573740A005446545020636F756C64206E6F74206D45 +S321000072F8616B6520636F6E6E656374696F6E20746F207365727665722E0A0051B0 +S32100007314084572726F727320696E205446545020646F776E6C6F61642E0A00517C +S321000073304E56FFD048D73CFC286E0008206E00104AAE000C670E4A88670A202E2B +S3210000734C0018B0AE0014640670006000028445F90002B68847F90000470843EA9B +S321000073680010256E000C000C254C000812D812D812D81290357C00450028426AA5 +S32100007384002C422A003042AA0020422A0005157C0002000471AC000473AC0005C6 +S321000073A0E18080812F004EB900006C084EB900006B803540002A2F3C00006EFC59 +S321000073BC302A002A2F004EB900006BD4A94342054FEF000C60544EBAFCD84A80DF +S321000073D8661A487A020C4E93302A002A2F004EB900006BA47000508F600001EAFF +S321000073F4A56742A74EB900025298508F600C4A2A000567064A83663C602042A786 +S321000074104EB9000251F44A80588F66E64A05660A4A2A00306604538366A84A8391 +S3210000742C661A487AFEB84E93302A002A2F004EB900006BA47000508F6000019656 +S321000074484A2A0030671A487A01C44E93302A002A2F004EB900006BA47000508F7D +S3210000746460000176282E00182A6E001498AE00147C01600000FE4EB9000059D0B0 +S321000074804A8028406700FECE206C000470033146002C41E8002A308071C40C8417 +S3210000749C000002006304303C02003E007400600A1035280011802804528271C7A5 +S321000074B8B48065F0300758803940000A74002F0C71EA00282F0071EA002A2F0082 +S321000074D443EA00102F092F2A00084EB900006B14204053804FEF0014670A528270 +S321000074F00C820000000365CE4A88660A2F0C4EB9000058FC588FA56742A74EB9FB +S3210000750C00025298508F601671EA002C73C65380B280660A7A010C470200651A98 +S32100007528602642A74EB9000251F44A80588F66DC4A0567140C470200640E71C7C8 +S32100007544D1AA00204A2A0030663860624A2A0030204A662E4A05671E20280020A8 +S32100007560048400000200068000000200214000204BED02005286A943420553835B +S3210000757C6600FEFC4A2A0030672C487AF8C84E9371EA002C53802F002F2A0020F1 +S32100007598487A00964E93302A002A2F004EB900006BA470004FEF0014602A487AC1 +S321000075B400984E9371EA002C53802F002F2A0020487A006A4E93302A002A2F007A +S321000075D04EB900006BA4A3404FEF00144CEE3CFCFFD04E5E4E7551FC4572726FB9 +S321000075EC723A20436F756C646E27742073656E642054465450205772697465203E +S32100007608526571756573740A0051FC51084572726F727320696E205446545020D5 +S3210000762475706C6F61642E0A0051FC5153656E74202564206279746573202825F2 +S321000076406420626C6F636B73290A005108544654502075706C6F6164207375634C +S3210000765C6365737366756C0A0051FC514E5600002F0C2F0B2F0A45F90002B6889F +S321000076784AAE000847F900004708673E4A2A0030284A66364A2A00056630487A39 +S3210000769400AC4E9371EC002C53802F002F2C001C487A00B64E934FEF001041EA73 +S321000076B000142F084EB9000057E84A80588F673C6064302A00282F00A9674EBA46 +S321000076CCF7A8487A00A84E9371EA002C53802F002F2A001C487A007A4E934FEF59 +S321000076E8001841EA00142F084EB9000057E84A80588F662A41EA00142F084EB9EE +S321000077040000584C588F2F004EB9000058FC588F41EA00142F084EB9000057E8AB +S321000077204A80588F67D6302A002A2F004EB900006BA4588F4CEE1C00FFF44E5EB4 +S3210000773C4E7551FC0854465450207472616E7366657220636F6D706C6574656473 +S32100007758200A0051526561642025642062797465732028256420626C6F636B73B9 +S32100007774290A0051084572726F727320696E2054465450207472616E7366657210 +S321000077902E0A00514E56FFF42F032F02486EFFF44EB90002696C486EFFF84EB919 +S321000077AC000268EC486EFFFC4EB9000268AC243C0002B7302F024EB9000063C8EB +S321000077C8263C0002B6BC2F022F3C000061FC487808062F034EB900005B84486E34 +S321000077E4FFFC243C0002B710486EFFF8486EFFF42F024EB900005FDC2F022F3CFA +S3210000780000005D60487808002F034EB900005B844EB900006C1C4CEE000CFFEC09 +S3210000781CA3404E5E4E7551FC4E56FFE448D70C1C246E000CA5790002B514487896 +S32100007838001047F900004708486EFFFC2F2A00044EB900000B8C24004AAEFFFCCC +S3210000785466102F2A0004487900003FB44E936000009248780010486EFFFC2F2ADE +S3210000787000084EB900000B8C26004AAEFFFC660E2F2A0008487900003FB44E93CD +S3210000788C6068282A000C4EB9000264504A80675A4EB90000779445EEFFF82F0AF7 +S321000078A84EB90002692C71AA00032F0071AA00022F0071AA00012F0071922F000A +S321000078C42F032F02487A00364E932F04487A00624E932F032F022F0A2F0448799E +S321000078E00002B6BC4EB9000073304EB9000264084EB90000F2184CEE0C1CFFE49D +S321000078FC4E5E4E7553656E64696E6720646174612066726F6D20307825303858F8 +S32100007918202D3E2030782530385820746F2025642E25642E25642E25640A0051E9 +S3210000793452656D6F74652066696C656E616D653A2025730A0051FC514E56FF78AF +S3210000795048D73CFC282E0008246E000C49F900004708A5790002B5144BF9000301 +S3210000796C00007E002A0D4EB90002684897CB2600A3427C004A8A67000222206AB9 +S3210000798800044A886700021810100C00002D667A732800017063B081631A70437D +S321000079A4B081673A7045B08167447049B081674E7053B081665860187063B08191 +S321000079C067207065B081672A7069B08167347073B081663EA542A346A543B4843A +S321000079DC6C0000CC606CA542A346A343B4846C0001BA600000DCA542A346A94378 +S321000079F8B4846C0001AA600000ECA542A346A743B4846C000190600000F40C8300 +S32100007A1400000001670000AA0C830000000267240C8300000003670E0C8300008C +S32100007A300004670000B06000016E2A0DA743B4846C00015A600000BEA543B484EC +S32100007A4C6C5C20722C0010100C00002D664873280001704FB0816708706FB08180 +S32100007A68660001185282B8826F242F390002B504486EFFF42F322C004EB900007C +S32100007A840B8C2E004AAEFFF44FEF000C670000B6600E487A03704E94588F6000FD +S32100007AA0035E26485282B4846DA42F07487A037A4E94508F4EB9000264504A801B +S32100007ABC67000340600000F0A343B4846C0000DC26722C00702D7313B0816700C9 +S32100007AD800AA5282B4846DEC600000C4A943B4846C0000BC26722C00702D731326 +S32100007AF4B0816700008A5282B4846DEC600000A420722C0010100C00002D660068 +S32100007B100082732800017041B08167067061B08166605282B8826F4E2F390002E9 +S32100007B2CB504486EFFF42F322C004EB900000B8C2A004AAEFFF44FEF000C6612D3 +S32100007B482F322C00487900003FB44E94508F600002A62F004EB90002636C4A8040 +S32100007B64588F662C2F05487A02CC4E94508F6000028A487A02EC4E94588F60003C +S32100007B80027E2F322C00487A02FC4E94508F6000026E26485282B4846D00FF6A35 +S32100007B9C2F05487A03044E94508F4EB9000264504A806700024E4EB900007794B9 +S32100007BB84A8B6610486EFFA04EB90002685847EEFFA0588F4A86660000962F0B81 +S32100007BD44EB900004CBC45F30800588F6002538A10120C00002E6706B5CB66F279 +S32100007BF06002528AA767487A02C02F0A4EB900004F244A804FEF000C6602A5438C +S32100007C0CA767487A02B02F0A4EB900004F244A804FEF000C6602A943A767487AE9 +S32100007C28029C2F0A4EB900004F244A804FEF000C6602A343A767487A028C2F0AF0 +S32100007C444EB900004F244A804FEF000C6602A7432F0A2F0B4EB9000263604A8035 +S32100007C60508F6702260045EEFFF02F0A4EB90002692C487A025C4E94508F0C832B +S32100007C7C00000001672A0C8300000002671A0C8300000003670A0C8300000004AC +S32100007C98671A6020203C00007EE0601E203C00007EE86016203C00007EC4600E4D +S32100007CB4203C00007EC06006203C00007EF4243C000071742F004E9471AA00036C +S32100007CD02F0071AA00022F0071AA00012F0071922F002F0B487A02164E94A36E93 +S32100007CECFFF44FEF001C538367705383673E5383670A53836700008C600000D4BD +S32100007D082F0A2F0B48790002B6BC28424E944A804FEF000C670000BC2F054EB9F3 +S32100007D2400003954588FA3674EB900007668588F600000A42F0A2F0B48790002B9 +S32100007D40B6BC28424E944A804FEF000C6700008C2F074EB90000802C588F2F005D +S32100007D5C4EB900007668588F60742F0A2F0B48790002B6BC28424E944A804FEF69 +S32100007D78000C675E4EB90000203CA3674EB900007668588F604C263C0002B6BC5D +S32100007D942F0A2F0B2F0328424E944A804FEF000C6734A3674EB900002D0053801C +S32100007DB0588F66262F0A2F0B2F0328424E944A804FEF000C6714A5674EB90000AB +S32100007DCC2D00588F2F004EB900007668588F4EB9000264084EB90000F2184EB9F9 +S32100007DE80000ED6423C00002B50C4EB90000ED6423C00002B5084CEE3CFCFF789F +S32100007E044E5E4E754572726F723A20204F6666736574206E6F742073706563695D +S32100007E2066696564210A00514F66667365743A202025233038580A004572726FA1 +S32100007E3C723A2020496E76616C696420646F776E6C6F61642061646472657373F3 +S32100007E583A202025233038580A0051FC4572726F723A20204164647265737320C5 +S32100007E746E6F7420737065636966696564210A004572726F723A2020496E766192 +S32100007E906C6964206F7074696F6E3A202025730A0051FC51416464726573733A24 +S32100007EAC202025233038580A0051FC51535245430051FC51454C4600434F464604 +S32100007EC80051FC5142494E00446F776E6C6F6164696E67200051FC51496D61676F +S32100007EE4650051FC532D5265636F72640051FC51556E6B6E6F776E00202725737E +S32100007F00272066726F6D2025642E25642E25642E25640A004E5600004EB90000E1 +S32100007F1C6CCC72FFB280670C7253B28066EE4EB900006CCC4E5E4E754E56000058 +S32100007F382F02222E00082041703641E8FFD02408B0826500009A307B8A064EFBBE +S32100007F548802006E006E006E006E006E006E006E006E006E006E00900090009085 +S32100007F7000900090009000900078007C008000840088008C009000900090009063 +S32100007F8C00900090009000900090009000900090009000900090009000900090F3 +S32100007FA8009000900090009000900090009000900078007C008000840088008C2B +S32100007FC40481000000302001601A700A6016700B6012700C600E700D600A700E1F +S32100007FE06006700F60027000242EFFFC4E5E4E754E5600002F024EB900006CCCF8 +S32100007FFC72FFB28067162F004EBAFF2E2400E9824EB900006CCC72FFB280660404 +S32100008018A14060082F004EBAFF148082242EFFFC4E5E4E754E56FFE048D71C7CBB +S3210000803447FAFFBA49F9000047084EBAFED472FF2A00B280670001244E9372FF1A +S3210000805028002C00B2806700011622050481000000315581630C598155816200D6 +S3210000806C0138600000AA760004850000003095CA60184E93240070FFB08267009C +S3210000808800E6E18B8682D48479825386528AB5C56FE4D6AE00082F034EB90002E0 +S321000080A4636C4A80588F675E95CA601A4E93240070FFB082670000B42043718285 +S321000080C0D084108279805283528A20065380B5C06DDE4E93240070FFB082670048 +S321000080DC009230023204468190810280000000FF4A40670000B4487A00C04E9426 +S321000080F82F042F02487A00DA4E944FEF00106000009C2F03487A00EA4E9470000A +S32100008114508F60000090048500000030700A90852A00760060164E93240070FFA8 +S32100008130B082673A2002D0847980E18B86825386200553854A806CE2D6AE0008FD +S3210000814C600E4E93240070FFB0826716D48479822006538653806EEA4E932400FE +S3210000816870FFB08266047000603630023204468190810280000000FF4A40670C26 +S32100008184487A002E4E947000588F6018487A00924E942F034EB90000ED74508F89 +S321000081A0A34060046000FE984CEE1C7CFFE04E5E4E7551FC084572726F723A20A7 +S321000081BC20532D7265636F726420636865636B73756D206572726F72210A005149 +S321000081D845787065637465643A20202532582C202052656365697665643A202518 +S321000081F432580A00084572726F723A20496E76616C696420646F776E6C6F61642A +S3210000821020616464726573733A2025233038580A0051FC5108532D7265636F7299 +S3210000822C6420646F776E6C6F6164207375636365737366756C210A004E56000025 +S321000082482F0C2F0B2F0A266E000C222B000845F90000470866484EB9000268487D +S321000082645380670E5380671453806724538067166028487A00B04E926000009EDC +S32100008280487A00AE4E9260000094487A00B04E926000008A487A00AE4E926000AC +S3210000829C0080487A00AC4E92607649F900026828A367487A00A82F014EB900009D +S321000082B84F244A806606A7674E946058A367487A00982F2B00084EB900004F2413 +S321000082D44A806606A5674E94603EA367487A00862F2B00084EB900004F244A80CE +S321000082F06606A3674E946024A367487A00742F2B00084EB900004F244A8066063E +S3210000830CA9674E94600A2F2B0008487A005C4E924CEE1C00FFF44E5E4E7551FC8E +S32100008328434F46460A0051FC532D5265636F72640A0051FC454C460A0051FC5109 +S32100008344496D6167650A0051556E6B6E6F776E0A0051FC51696D6167650051FCF1 +S32100008360737265636F726400636F66660051FC51656C66004572726F723A2049E9 +S3210000837C6E76616C69642046696C65747970653A2025730A0051FC514E56FF8042 +S32100008398206E000C20280008661A486EFF804EB900026858486EFF80487A00164E +S321000083B44EB90000470860082F004EB9000268904E5E4E7525730A004E56FFEC19 +S321000083D048D7043C246E00082F0A4EB900004CBC72002800588FB2806C1C1432C9 +S321000083EC18000C02002E670C703094807502700AB08263345281B2846DE476006A +S3210000840874007200602E41F2180010100C00002E670C52830C83000000036F16DA +S32100008424600E52820C82000000036E044A8366047000605276005281B2846DCEDE +S32100008440740076007200B2846C361A3218000C05002E671AD4822002E582D4808F +S3210000845C7105D4800482000000305281B2846DDE6012206E000C118238007400DF +S3210000847852835281B2846DCA206E000C11823800A3404CEE043CFFEC4E5E4E75B1 +S321000084944E56FFFC2F0A206E000C20280008662E45EEFFFC2F0A4EB9000268ACEC +S321000084B071AA00032F0071AA00022F0071AA00012F0071922F00487A00404EB98B +S321000084CC00004708602C486EFFFC2F004EBAFEF24A806614206E000C2F2800089E +S321000084E8487A002E4EB900004708600A486EFFFC4EB9000268D4246EFFF84E5E97 +S321000085044E7551FC25642E25642E25642E25640A0051FC514572726F723A204942 +S321000085206E76616C696420495020616464726573733A2025730A00514E56FFFC10 +S3210000853C2F0A206E000C20280008662E45EEFFFC2F0A4EB9000268EC71AA000384 +S321000085582F0071AA00022F0071AA00012F0071922F00487AFF9C4EB90000470856 +S32100008574602C486EFFFC2F004EBAFE4E4A806614206E000C2F280008487AFF8A9D +S321000085904EB900004708600A486EFFFC4EB900026914246EFFF84E5E4E7551FC8D +S321000085AC4E56FFFC2F0A206E000C20280008662E45EEFFFC2F0A4EB90002696C12 +S321000085C871AA00032F0071AA00022F0071AA00012F0071922F00487AFF284EB98B +S321000085E400004708602C486EFFFC2F004EBAFDDA4A806614206E000C2F2800089E +S32100008600487AFF164EB900004708600A486EFFFC4EB900026994246EFFF84E5ED5 +S3210000861C4E7551FC4E56FFFC2F0A206E000C20280008662E45EEFFFC2F0A4EB968 +S321000086380002692C71AA00032F0071AA00022F0071AA00012F0071922F00487AB1 +S32100008654FEB44EB900004708602C486EFFFC2F004EBAFD664A806614206E000C47 +S321000086702F280008487AFEA24EB900004708600A486EFFFC4EB900026954246E5E +S3210000868CFFF84E5E4E7551FC4E560000206E000812100C010030661010280001D1 +S321000086A80C000078670C0C00005867060C010024660C206E000C20BC00000010BF +S321000086C4601E0C0100256608206E000CA5506010700A0C01004066027008206E42 +S321000086E0000C20804E5E4E754E56FFFC2F0A2F0245F90002B808202A000467009F +S321000086FC00AC243C000087B42F022F004EB900004F904A80508F6722206A00040F +S3210000871810100C00002E660000882F0243E800012F094EB900004F904A80508FD3 +S32100008734667243EA00082011676A486EFFFC2F004EBAFF4E2F2EFFFC48790002C4 +S32100008750B8042F114EB900000B8C4AB90002B80422404FEF0014672CA340600220 +S3210000876C5280205212300800D1C00C01003A67064A0166EC600242102F092F124E +S321000087884EB900005274508FA34060162F12487900003FB44EB900004708508FA0 +S321000087A4A340600270004CEE0404FFF44E5E4E75657175004E5600002F0B2F0AF8 +S321000087C02F0247F90002B38CA3426002528245F90002B808205210302800D1C25D +S321000087DC0C00003A670C4A00673E0C00002E66E0604242102F390002B8302F12CC +S321000087F84EB90000527441EA00042490508F43EA000820914291A34260025282FC +S3210000881420521030280067080C00002E66F0600C2252103128000C00002E66740C +S321000088302052706273302801B08163147042B0816722704CB08167327057B08184 +S3210000884C672060367062B081670E706CB081671E7077B081670C6022421320520F +S3210000886842302800603A16BC0001205242302800602E16BC00022052423028006D +S321000088846022700113C00002DF302F08487A00224EB900004708508F20524230C7 +S321000088A02800600416BC00FF4CEE0C04FFF44E5E4E7551FC4E6F742061207661B7 +S321000088BC6C696420436F6C644669726520696E737472756374696F6E3A20257365 +S321000088D80A0051FC4E5600002F0A2F032F027000A342604A760060160C010028C7 +S321000088F4660652805283600A0C01002966025380528345F1380012120C01002CD4 +S3210000891066044A8067064A0166D66012148022302C00D283528121812C045282CB +S3210000892C6008730121812C04528241F90002B80822702C004A8966A84CEE040CC2 +S32100008948FFF44E5E4E7551FC4E56FFEC48D71C0C49F90002DF30206E000C740027 +S32100008964421445F90002B80820302C00671825802C00206E000C528220302C00E5 +S3210000898066F0600642B22C005282700AB0826EF4202E000823C00002B8304EBAEC +S3210000899CFD4C4A806600008A4EBAFE124A14660000804A92677A7400B4B90000BC +S321000089B8BD386C702002E580D08241F90000B31047F00C002F2B00042F124EB90D +S321000089D400004F904A80508F664442390002DF3342390002DF3242390002DF34A2 +S321000089F042B90002B80042790002DD8A33C00002DD88362B00024EBAFED42F03C3 +S32100008A0C2F2B0008206B00104E90B4B90000BD38508F661460165282B4B90000FB +S32100008A28BD386D90B4B90000BD3867044A14670E2F12487A001C4EB90000470825 +S32100008A44508F4CEE1C0CFFEC20390002B8304E5E4E7551FC4572726F723A204938 +S32100008A606E76616C696420696E737472756374696F6E3A2025730A004E560000F4 +S32100008A7C2F032F0276087400A5672002E58043FA00509082D3C02F092F2E000821 +S32100008A984EB900004F244A804FEF000C660E260242390002DF3151826714601A3D +S32100008AB452820C82000000086DC60C83000000086608700113C00002DF31200385 +S32100008AD04CEE000CFFF84E5E4E7551FC44300044310044320044330044340044F9 +S32100008AEC35004436004437004E5600002F2E00104EBAFF7A206E000820807008FE +S32100008B08B0906710206E000C4290A3790002B7FCA340600270004E5E4E7551FCE6 +S32100008B244E5600002F0A2F032F0245F90002DF3176087400A5672002E58043FADD +S32100008B4000609082D3C02F092F2E00084EB900004F244A804FEF000C660626024F +S32100008B5C4212600A52820C82000000086DCEA567487A004A2F2E00084EB9000010 +S32100008B784F244A804FEF000C6606AF434212600C0C8300000008660414BC000164 +S32100008B9420034CEE040CFFF44E5E4E754130004131004132004133004134004170 +S32100008BB03500413600413700737000514E5600002F2E00104EBAFF5E206E00083F +S32100008BCC20807008B0906710206E000CA350A5790002B7FCA340600270004E5EF7 +S32100008BE84E7551FC4E560000206E001010100C0000286636102800030C000029B9 +S32100008C04662C4A280004662643E800012F094EBAFF10226E000822807008B0914C +S32100008C206710206E000CA550A9790002B7FCA340600270004E5E4E754E5600008D +S32100008C3C206E001010100C0000286640102800030C0000296636102800040C002A +S32100008C58002B662C4A280005662643E800012F094EBAFEBA226E00082280700864 +S32100008C74B0916710206E000CA75023C00002B7FCA340600270004E5E4E7551FC8C +S32100008C904E560000206E001010100C00002D6642102800010C000028663810283C +S32100008CAC00040C000029662E4A280005662843E800022F094EBAFE62226E00086F +S32100008CC822807008B0916712206E000C7010A95023C00002B7FCA3406002700056 +S32100008CE44E5E4E754E56FFFC2F0C2F0B2F0A226E000845F900004708101149F92A +S32100008D000002DF300C000023671618BC00012F09487A00924E92487A00AC4E9205 +S32100008D1C7000607847E90001486EFFFC2F0B4EBAF96810130C000024670C0C0096 +S32100008D38002567060C0000406604A5406002A3402F2EFFFC48790002B80441F19E +S32100008D5408002F084EB900000B8C22004AB90002B804661218BC00012F0B4879F5 +S32100008D7000003FB44E927000601EC0AE000C671618BC00012F0B487A001C4E925C +S32100008D8C487A00564E927000600220014CEE1C00FFF04E5E4E7551FC4E6F742088 +S32100008DA876616C696420696D6D65646961746520646174613A2025730A0051FCC7 +S32100008DC44974206D696768742068656C7020696620796F75207573652027232764 +S32100008DE02E0A005156616C7565206973206C6172676572207468616E207370651F +S32100008DFC6369666965642E0A0051FC514E56FFFC2F0A246E001010120C00002350 +S32100008E186672206E0008A950206E000C203C00020000AF5023C00002B7FC42A759 +S32100008E342F0A4EBAFEB02D40FFFC4A390002DF30671241EEFFFC2F082F0A4EB917 +S32100008E50000056404A806734202EFFFC220042414A81671441F90002DF3323C0A0 +S32100008E6C0002B80010BC0001A340601641F90002DF3233C00002DD8A10BC00018E +S32100008E88A34060027000246EFFF84E5E4E7551FC4E56FFC848D70C0C760047EE81 +S32100008EA4FFD82F2E001074002F0B4EB900004C9445EEFFFC1013248B0C0000289F +S32100008EC0508F660841EB0001A3422488700060025280205212300800D1C00C0187 +S32100008EDC002E67064A0166EC603442102052D1C0704C73280001B0816716705786 +S32100008EF8B0816712706CB081670A7077B0816706600000EEA343102800020C0031 +S32100008F14002966025382A3406002528041F3080012100C01002967064A0166EE1E +S32100008F306004538242104A82660000BE205210100C0000306610122800010C0118 +S32100008F4C007867220C010058671C0C0000246716486EFFF82F2E00104EB900004C +S32100008F6856404A80508F67000088206E000CAF504878001048790002B8042F1290 +S32100008F844EB900000B8C2D40FFF84AB90002B8044FEF000C675E203CFFFF00009F +S32100008FA0C0AEFFF866044A836728206E0008223C000100007001A35023C1000245 +S32100008FBCB7FC222EFFF813C00002DF3323C10002B800A3406028206E000873FCA4 +S32100008FD880002083302EFFFA23C10002B7FC33C00002DD8A700113C00002DF32B1 +S32100008FF4A340600270004CEE0C0CFFC84E5E4E754E5600002F0A2F032F02206E50 +S321000090100008226E000C700042A8000876002168000800042089141172000C02DF +S3210000902C0028664C45E90001A341A340208A4A311800674245F1180014120C02EA +S321000090480028670C0C02002C67060C020029662252830C020028660C421A52805A +S32100009064218A3C00528160100C02002966025380421A218A3C0052814A311800A5 +S3210000908066BE4A8057C049C04CEE040CFFF444804E5E4E754E56FFFC2F0B266EE3 +S3210000909C00082F0A246E001020524A106700009A206A00044A1067000090226A97 +S321000090B800084A11660000862F084EBAFA6026807008B093670A206E000C7020B2 +S321000090D4AB506020A567487A00742F2A00044EB900004F244A806658206E000CC4 +S321000090F071FC0400AF50A553486EFFFC23C00002B7FC2F124EBAF58E2F2EFFFC89 +S3210000910C48790002B8042F124EB900000B8C22004AB90002B80467200480FFFFF7 +S3210000912880000C80000100006412700113C00002DF3233C10002DD8AA3406002A9 +S3210000914470004CEE0C00FFF44E5E4E75706300514E56FFEC48D71C04266E000863 +S32100009160286E000C246E001420524A106700017A206A00044A1067000170226AAB +S3210000917C00084A11670001662F084EBAF99C26807008B093670A206E00107040AC +S32100009198AD506022A567487AFFB02F2A00044EB900004F244A8066000138206EEB +S321000091B4001071FC0800AF50A753486EFFFC23C00002B7FC2F124EBAF4C82F2E70 +S321000091D0FFFC48790002B8042F124EB900000B8C4AB90002B8042040670000FE9E +S321000091EC0480FFFFFF800C8000000100640000EE700113C00002DF3247F90002E8 +S32100009208DD8A32080281000000FF36812F2A00084EBAF85E28807008B0946704DC +S3210000922491C860182F2A00084EBAF8F628807008B094670000A0207C0000800079 +S321000092402414301332088280700CE1A2828208C1000B54AA0008206A000836812F +S3210000925C10100C00002E661473280001704CB0816706706CB081666454AA000849 +S32100009278206A000810100C00002A664C732800017031B081673E7032B081670EDF +S321000092947034B08167187038B081672260363013323C02008081368054AA0008FC +S321000092B0601E3013323C04008081368054AA0008600E3013323C060080813680D0 +S321000092CC54AA0008206A00084A10670C700113C00002DF3070006006A3406002AB +S321000092E870004CEE1C04FFEC4E5E4E754E56FFB048D70C3C41EEFFC845F9000250 +S32100009304DF3047F9000047082F2E000824082F084EB900004C9441EEFFF42608AA +S3210000932041EEFFFC2F0228082F082F034EBAF7C64A80660000E22F022F042F03CA +S3210000933C4EBAF87E4A80660000D22F022F042F034EBAF89E4A80660000C22F0238 +S321000093582F042F034EBAF8DA4A80660000B22F022F042F034EBAF9224A806600E9 +S3210000937400A22F022F042F034EBAFA8A4A80672E4AAE00106700008C4A39000234 +S32100009390DF3267000082700113C00002DF3371F90002DD8A23C00002B80042397E +S321000093AC0002DF3260642F022F042F034EBAFADE4A80665641EEFFE82F022A0853 +S321000093C82F084EBAFC384A8067322F052F042F034EBAFCBA4A8066362F052F0489 +S321000093E4486EFFF82F034EBAFD684A8066242F2E0008487A00584E937001148062 +S321000094004240603E2F2E0008487A005E4E9314BC00014240602C20390002B7FCD7 +S3210000941CC0AE000C661414BC00012F390002B808487A004E4E934240600C302E02 +S32100009438FFFEE780322EFFF680814CEE0C3CFFB071C04E5E4E7551FC496E7661AC +S321000094546C6964206F706572616E643A2025730A0051FC5153796E74617820452E +S3210000947072726F723A2025730A0051FC496E76616C696420616464726573736996 +S3210000948C6E67206D6F646520666F72202725732720696E737472756374696F6ED5 +S321000094A80A0051FC4E5600007010B0AE000841F90002B830670A7020B0AE000836 +S321000094C4670C6012225032AE000E54906008225022AE000C58904E5E4E7551FC03 +S321000094E04E5600004A390002DF34670E71F90002DD882F004878001061B24A3953 +S321000094FC0002DF3241F90002B800672C4A390002DF33671273F90002DD8A20812E +S321000095182F0148780020618C602673F90002DD8A2F01487800104EBAFF7C6014E2 +S321000095344A390002DF33670C22102F01487800204EBAFF664E5E4E754E56000049 +S3210000955042A72F2E00082F390002B80C4EBAFD964A390002DF30661A322E000E60 +S3210000956C82803D41000E71C12F00487800104EBAFF304EBAFF604E5E4E7551FCC4 +S321000095884E56FFF048D71C0473390002B38C53816218700113C00002DF30487A9D +S321000095A400BC4EB900004708588F600000A649F90002DD88487A00CE45F900022D +S321000095C0B8082F124EB900004F904A80508F660438BC080072006002528147EABB +S321000095DC0008225341F1180010100C00003A67064A0066E8602042102013D081E5 +S321000095F852802540000C2F004EBAF47624004A390002DF31588F671260442F0978 +S32100009614487A007A4EB900004708508F60342F134EBAF4524A390002DF31588F23 +S321000096306624720CE3A2321484818480700113C00002DF34302E000E38822F008E +S3210000964C2F2E00084EBAFEFA508F4CEE1C04FFF04E5E4E75496E76616C69642019 +S3210000966873697A65207370656369666965643A20202E57206F72202E4C206F6EC2 +S321000096846C790A0052454D530051FC514E6F7420612076616C6964206F70657248 +S321000096A0616E643A2025730A0051FC514E5600002F0B2F0A2F02342E000E47F9E3 +S321000096BC0002B80845EB00082F124EBAF3B04A390002DF3166327209E3A02F2E1E +S321000096D8001084802F2E00082F2B00044EBAFC0E4A390002DF306620848071C236 +S321000096F42F00487800104EBAFDB04EBAFDE0600C2F12487A00144EB900004708E2 +S321000097104CEE0C04FFF44E5E4E7551FC4E6F7420612076616C69642064617461A2 +S3210000972C2072656769737465723A2025730A00514E5600002F0B2F0A2F02733955 +S321000097480002B38C4A81670653816718604A700113C00002DF30487AFF004EB96C +S3210000976400004708600000883D7C80C0000E487A00882F390002B8084EB900002A +S321000097804F904A8066063D7C81C0000E42A7302E000E2F002F3C00038C7D4EBAA7 +S3210000979CFF10605245F90002DD88487A005447F90002B8082F134EB900004F9005 +S321000097B84A80660434BC08002F2B00084EBAF2B24A390002DF3166223400720C86 +S321000097D4E3A23212848184803482700113C00002DF3448784C404878003D4EBA41 +S321000097F0FD5C4CEE0C04FFF44E5E4E75444956530051FC514E560000733900022C +S3210000980CB38C0C810000000163100C8100000002671670FFB08167106012487AA3 +S3210000982800184EB90000470870006006A340600270004E5E4E7551FC496E7661DB +S321000098446C69642073697A653A202E4C206F6E6C790A00514E5600002F0A45F9C2 +S321000098600002B8102F124EBAF2104A390002DF31661C322E000E82803D41000EBE +S3210000987C71C12F00487800104EBAFC264EBAFC56600C2F12487AFE8A4EB9000017 +S321000098984708246EFFFC4E5E4E7551FC4E5600004EBAFF5A4A80673042A72F395F +S321000098B40002B80C4EBAF42E23C00002B8004A390002DF306616700113C00002AF +S321000098D0DF33302E000E2F002F2E00084EBAFF7A4E5E4E754E5600002F0A4EBA8F +S321000098ECFF184A80674445F90002B8102F124EBAF2284A390002DF3166247201D1 +S3210000990813C10002DF337209E3A0322E000E82803D41000E30012F002F2E000896 +S321000099244EBAFC26600C2F12487A00124EB900004708246EFFFC4E5E4E7551FCD7 +S321000099404E6F7420612076616C6964206164647265737320726567697374657298 +S3210000995C3A2025730A0051FC4E56000010390002B38C0C00000167060C000002EA +S32100009978660C487A001C4EB900004708600E302E000E2F002F2E00084EBAFBBAFC +S321000099944E5E4E75496E76616C69642073697A653A202E4220206F6E6C790A00CA +S321000099B04E56FFF048D71C04342E000E73390002B38C45F9000047085381670698 +S321000099CC53816708600E08C200066008487A00764E92606449F90002B80847EC7D +S321000099E8000442A72F2E00082F134EBAF9004A390002DF30661647EC00082F133B +S32100009A0484804EBAF0700C8000000008672A60102F13487AFC784E92423900026A +S32100009A20DF3060207209E3A0848071C22F00487800104EBAFA784EBAFAA86008D5 +S32100009A3C2F13487AFCDC4E924CEE1C04FFF04E5E4E7551FC496E76616C69642060 +S32100009A5873697A653A202E42206F72202E57206F6E6C790A0051FC514E56000093 +S32100009A742F2E00102F2E00082F390002B8104EBAF8704A390002DF30661A322EE8 +S32100009A90000E82803D41000E71C12F00487800104EBAFA0A4EBAFA3A4E5E4E7530 +S32100009AAC4E5600002F0A45F90002B80C42A72F124EBAF22A4A390002DF30663E31 +S32100009AC80C40FFFF6604424060180C40000762044A40660E2F12487AFBB04EB962 +S32100009AE400004708601C7209E3A0322E000E82803D41000E42A730012F002F2EF5 +S32100009B0000084EBAFF6C246EFFFC4E5E4E7551FC4E5600002F0A45F90002B80C9E +S32100009B1C2F124EBAF0040C8000000008671C322E000E82803D41000E71C12F0076 +S32100009B38487800104EBAF96E4EBAF99E600C2F12487AFDF64EB900004708246EE3 +S32100009B54FFFC4E5E4E7551FC4E5600002F0B2F0A2F0241F90002B38D222E00081C +S32100009B70A5426002528243F90002B80847F11C00245343F228001011670E0C00EE +S32100009B8C002E670C0C00003A66DE60041080605073290001704CB081671470551E +S32100009BA8B0816718706CB08167087075B081670C60164210205342302800602889 +S32100009BC410BC0001205342302800601C700113C00002DF302F0A487A001C4EB9B6 +S32100009BE000004708508F2053423028004CEE0C04FFF44E5E4E7551FC4E6F7420DE +S32100009BFC612076616C6964206174747269627574652025730A0051FC4E56FFE828 +S32100009C1848D71C1C342E000E45F90002DD887800700113C00002DF34487A031A0E +S32100009C3449F90002B8082F144EB900004F904A80508F660408D200007339000246 +S32100009C50B38C47F9000047084A8167065381670E600E487A02F04E93588F600059 +S32100009C6C02D4600408D20003A3674EBAFEE441EC00042F1026084EBAEDF40C80B8 +S32100009C8800000008508F663220432F104EBAEE8E0C8000000008588F67103200F1 +S32100009CA47009E1A18282704082803401601620432F10487A02BC4E93508F600000 +S32100009CC002807209E3A0848071390002B38D3212EF8082803481A5674EBAFE8214 +S32100009CDC41EC00082F1026084EBAED920C8000000008508F662E20432F104EBA8C +S32100009CF8EE2C0C8000000008588F670C36123200828370088280601820432F102F +S32100009D14487A025E4E93508F600002223200301280813200348171390002B38D7F +S32100009D30ED808280348141EC000C487A02542F1026084EB900004F904A80508FA0 +S32100009D4C6714487A024420432F104EB900004F904A80508F662608D2000143ECAB +S32100009D680010A3442051A340260912280001D1FC000000010C010026670000C0FC +S32100009D84600000B6487A020E20432F104EB900004F904A80508F6714487A01FE68 +S32100009DA020432F104EB900004F904A80508F66283012008000000600348043EC37 +S32100009DBC0010A34420512609A34012280001D1FC000000010C010026676C606438 +S32100009DD842A72F2E000820432F104EBAF5104A390002DF304FEF000C661E43ECDB +S32100009DF4001084802051A340260912280001D1FC000000010C0100266734602C53 +S32100009E1020432F10487AF87A4E9342390002DF30508F6000011C43EC0010528080 +S32100009E2C2051260912300800D1C00C01002667064A0166E66008421008EA0005B1 +S32100009E4800014A84673E42A72F2E000820432F104EBAF49A4A390002DF304FEF2C +S32100009E64000C660E49EC001484802014670000BC607220432F10487AF8144E9395 +S32100009E8042390002DF30508F600000B620432F104EBAEBE60C8000000008588F49 +S32100009E9C663820432F104EBAEC800C8000000008588F6718720CE3A032128081B0 +S32100009EB808C0000F348049EC001420146768602020432F10487AF7C24E93508F54 +S32100009ED4606A720CE3A032128280348149EC0014201467462F004EBAEB8C0C8042 +S32100009EF000000008588F662C2F144EBAEC280C8000000008588F6710720CE3A07D +S32100009F0C3212808108C0000F348060162F14487AF7744E93508F601C720CE3A040 +S32100009F2832128280348171C22F00487800104EBAF5744EBAF5A4508F4CEE1C1C87 +S32100009F44FFE84E5E4E7551FC4D5341434C0051FC496E76616C69642073697A65F9 +S32100009F603A202E57206F72202E4C206F6E6C790A0051FC514E6F74206120766132 +S32100009F7C6C69642072656769737465723A2025730A0000003C3C00513C3C310097 +S32100009F983E3E00513E3E31004E56FFEC48D71C0C342E000E45F90002DD8849F900 +S32100009FB400004F90700113C00002DF34487A016A47F90002B8082F134E944A8036 +S32100009FD0660408D2000073390002B38C4A816706538167106010487AFF6C4EB917 +S32100009FEC000047086000012E600408D20003A3674EBAFB5E41EB00042F1026082C +S3210000A0084EBAEA6E0C8000000008663220432F104EBAEB0A0C8000000008671000 +S3210000A02432007009E1A18282704082803401601820432F10487AFF3A4EB90000E6 +S3210000A0404708600000DC7209E3A0848071390002B38D3212EF8082803481A5670F +S3210000A05C4EBAFAFE41EB00082F1026084EBAEA0E0C8000000008662E20432F1077 +S3210000A0784EBAEAAA0C8000000008670C32008282700882803401601420432F1028 +S3210000A094487AFEDE4EB90000470860000080848071390002B38D3212ED80828033 +S3210000A0B0348147EB000C20136756487AFED42F004E944A80670C487AFECC2F13FB +S3210000A0CC4E944A80660C3012323C0200808134806032487AFEB82F134E944A80F5 +S3210000A0E8670C487AFEB02F134E944A80660C3012323C060080813480600E2F13F8 +S3210000A104487AF58A4EB900004708601071C22F00487800104EBAF3924EBAF3C2B6 +S3210000A1204CEE1C0CFFEC4E5E4E7551FC4D5341430051FC514E5600002F0A45F937 +S3210000A13C0002B80C2F390002B50448790002B8042F124EB900000B8C4AB90002B5 +S3210000A158B804204066102F12487900003FB44EB900004708603673390002B38C85 +S3210000A1744A81670A538167125381671A6022487AFDD04EB90000470860162F08D7 +S3210000A190487800104EBAF316600A2F08487800204EBAF30A246EFFFC4E5E4E754A +S3210000A1AC4E5600002F0A2F02342E000E45F90002B8102F124EBAE8B60C80000098 +S3210000A1C8000866362F124EBAE9540C8000000008671A320082827008828071C154 +S3210000A1E42F00487800104EBAF2C04EBAF2F060202F12487AFD7C4EB90000470864 +S3210000A2006012848071C22F00487800104EBAF29E4EBAF2CE4CEE0404FFF84E5E4F +S3210000A21C4E7551FC4E56FFE048D71C7C242E00084244424347F90002B8082A3C09 +S3210000A2380000A40845EB00042F052F124EB900004F904A80660E487840C02F029A +S3210000A2544EBAFF56600001A42C3C0000A40C2F062F124EB900004F904A80660ED4 +S3210000A270487842C02F024EBAF5E06000018249EB00082F052F144EB900004F9080 +S3210000A28C4A80661A700113C00002DF33487846C02F3C000200014EBAF2A86000D8 +S3210000A2A801562F062F144EB900004F904A80661A700113C00002DF33487844C079 +S3210000A2C42F3C000200014EBAF2806000012E47F90002B38C10130C000002661CCD +S3210000A2E0A3672F3C00038C7F2F124EBAF0082A004A390002DF30671E60000104F0 +S3210000A2FC42A72F3C00038C7F2F124EBAEFEC2A004A390002DF30660000EA203953 +S3210000A3180002B7FC721FC2804A416706243C0001807F323C0420C2804A4167027B +S3210000A334743F223C00038840C2806702741F45F90002DF324A12670A363900025E +S3210000A350DD8A7801421242A72F022F144EBAEF9622004A390002DF30660000941D +S3210000A36C71C1E6807407C282E781751382804A82670A5382670A5382670A600C51 +S3210000A3887001601C7003601870026014700113C00002DF30487A00724EB9000065 +S3210000A3A44708605616807500700CE1A2ED81848184853D42000E4A44672E4A1200 +S3210000A3C0672073C37010E1A171F90002DD8A828023C10002B800700113C0000203 +S3210000A3DCDF334212600A14BC000133C30002DD8A71EE000E2F00487800104EBAEB +S3210000A3F8F0B44EBAF0E44CEE1C7CFFE04E5E4E7553520051434352005768617441 +S3210000A4142073697A653F0A004E56FFEC48D70C1C47F90002B80808EE0000000F25 +S3210000A43045EB00042F124EBAE64026005180588F66302F124EBAE6DE26005180EF +S3210000A44C588F671208C3000378007400B4B90000BD346C4E601C2F12487A0092AB +S3210000A4684EB900004708508F607A78007400B4B90000BD346C302002E580D08204 +S3210000A48441F90000BF7445F00A002F0A2F2B00084EB900004F904A80508F660476 +S3210000A4A079EA00085282B4B90000BD346DD04A8466122F2B0008487A005C4EB9F3 +S3210000A4BC00004708508F6028700CE1A38883700113C00002DF3271EE000E33C402 +S3210000A4D80002DD8A2F00487800104EBAEFC84EBAEFF8508F4CEE0C1CFFEC4E5E74 +S3210000A4F44E7551FC4E6F742061207661696C642072656769737465723A202573DD +S3210000A5100A0051FC496E76616C696420636F6E74726F6C20726567697374657265 +S3210000A52C3A2025730A0051FC4E56FFDC48D73C7C246E00082C3C00008A784244E4 +S3210000A54849FAE5DA2F0A26464E935180588F66162F0A4E945180588F660C42B9F5 +S3210000A5640002B8044240600000F047D274004A13670000E42F0B2A464E9526005D +S3210000A5805180588F660E2F0B4E9426005180588F675250837001E7A05482888031 +S3210000A59C733228004A81670000AC702DB081670A702FB081677660000082528250 +S3210000A5B841F228002F0826464E932A005180588F663C41F228002F084E942A0080 +S3210000A5D45180588F670A50855283B6856E3660284232280241F228002F08487A39 +S3210000A5F000784EB900004708700113C00002DF304240508F60565283B6856E0C85 +S3210000A60C7001E7A088805283B6856FF45482733228004A81672E702FB081660E72 +S3210000A628528247F228004A136600FF4660242F0A487A004A4EB900004708700143 +S3210000A64413C00002DF304240508F600C47F228004A136600FF2030044CEE3C7CDA +S3210000A660FFDC71C04E5E4E75496E76616C696420726567697374657220656E74AA +S3210000A67C72793A2025730A00496E76616C6964206C69737420666F726D61743A4F +S3210000A6982025730A0051FC514E5600002F0B2F0A2F02342E000E4EBAF1544A8071 +S3210000A6B4677C45F90002B80447F90002B808A3522F2B00044EBAFE6A33C00002EB +S3210000A6D0DD884A92671E4A390002DF306654700113C00002DF3442A72F022F2E84 +S3210000A6EC00084EBAF380603EA3522F2B00084EBAFE3833C00002DD88700113C0F8 +S3210000A7080002DF344A92660C487A002A4EB90000470860164A390002DF30660E0C +S3210000A72408C2000A2F022F2E00084EBAEE1C4CEE0C04FFF44E5E4E754E6F207698 +S3210000A740616C6964207265676973746572206C6973742077617320656E74657253 +S3210000A75C65640A004E56FFF048D70C0C4EBAF09A4A80675E47F90002B80845EBEB +S3210000A77800042F124EBAE2FA24005180673C45EB00082F124EBAE2EA0C80000025 +S3210000A7940008671C32007009362E000EE1A18283828271C12F00487800104EBA37 +S3210000A7B0ECFC601A2F12487AEF644EB900004708600C2F12487AEF564EB90000BE +S3210000A7CC47084CEE0C0CFFF04E5E4E754E56FFF048D70C0C4EBAF0224A80670057 +S3210000A7E8009047F90002B80845EB00082F124EBAE28024005180676C45EB0004DE +S3210000A8042F124EBAE2700C80000000086720362E000E32007009E1A18283702048 +S3210000A8208280828271C12F00487800104EBAEC7E60462F3C0FFFFFF02F124EBA16 +S3210000A83CE4AC73C04A390002DF3066300C8100000008660272007009E1A1302E45 +S3210000A858000E8280828271C12F00487800104EBAEC44600C2F12487AEEAC4EB951 +S3210000A874000047084CEE0C0CFFF04E5E4E7551FC4E560000700333C00002DD8805 +S3210000A890700113C00002DF34302E000E2F002F2E00084EBAECA84E5E4E7551FCF5 +S3210000A8AC4E5600002F0B2F0A2F02342E000E4EBAEF484A806700009A45F9000288 +S3210000A8C8B80847EA00082F134EBAE1A651806748487A008E2F124EB900004F90AD +S3210000A8E44A806710487A00822F124EB900004F904A80660C203C00038C7D2D4095 +S3210000A9000008600A203C00038C7F2D40000808C20007A3672F022F2E00084EBA6B +S3210000A91CED90603C588A2F124EBAE1520C8000000008671E323C01808282340062 +S3210000A9387009E1A242A782822F012F3C0001807C4EBAF126600E2F132F12487AAA +S3210000A954001C4EB9000047084CEE0C04FFF44E5E4E7551FC414E44004F520051B1 +S3210000A970496E76616C6964206F706572616E64733A2025732C25730A0051FC5124 +S3210000A98C4E5600002F0A2F032F024EBAEE6C4A8067544878FF0045F90002B808C3 +S3210000A9A82F2A00044EBAE33A34004A390002DF306638508A2F124EBAE0B84A3967 +S3210000A9C40002DF31661C32007009362E000EE1A18283828271C12F004878001004 +S3210000A9E04EBAEACA600C2F12487AED324EB9000047084CEE040CFFF44E5E4E7509 +S3210000A9FC4E56FFFC2F0A2F032F02342E000E486EFFFC45F90002B80C2F124EB991 +S3210000AA18000056404A806700008420390002B830222EFFFC5480928026010483AF +S3210000AA34FFFFFF800C830000010064160281000000FF848171C22F0048780010C0 +S3210000AA504EBAEA5A605A7680D6810C8300007F80651020010480FFFF80000C80DF +S3210000AA6C00007F80642602810000FFFF33C10002DD8A700113C00002DF3271C2D7 +S3210000AA882F00487800104EBAEA1C4EBAEA4C6018487A00224EB900004708600C43 +S3210000AAA42F12487A00404EB9000047084CEE040CFFF04E5E4E7551FC4572726F6A +S3210000AAC0723A20646973706C6163656D656E74206C617267657220746861742021 +S3210000AADC31362D626974730A0051FC514E6F7420612076616C6964206C616265D4 +S3210000AAF86C3A2025730A00514E5600002F0A4EBAECFC4A80674245F90002B80843 +S3210000AB142F2A00044EBADF5E4A390002DF31661E7209E3A0322E000E82803D4178 +S3210000AB30000E42A730012F002F2E00084EBAEF32600E2F2A0008487AEBD44EB9C7 +S3210000AB4C00004708246EFFFC4E5E4E754E5600004EBAECA64A80673A4878FFF044 +S3210000AB682F390002B80C4EBAE1784A390002DF3066240C40000866024240720965 +S3210000AB84E3A0322E000E82803D41000E42A730012F002F2E00084EBAEED44E5E0C +S3210000ABA04E7551FC4E5600002F0A4EBAEC584A80674445F90002B8102F124EBA94 +S3210000ABBCDEBC4A390002DF316624720113C10002DF337209E3A0322E000E8280F5 +S3210000ABD83D41000E30012F002F2E00084EBAE966600C2F12487AEB2E4EB9000024 +S3210000ABF44708246EFFFC4E5E4E7551FC4E5600002F0A4EBAEBFC4A80674445F928 +S3210000AC100002B8102F124EBADF0C4A390002DF316624720113C10002DF3372092F +S3210000AC2CE3A0322E000E82803D41000E30012F002F2E00084EBAE90A600C2F121A +S3210000AC48487AECF64EB900004708246EFFFC4E5E4E7551FC4E5600004878FFF054 +S3210000AC642F390002B80C4EBAE07C4A390002DF306616322E000E82803D41000E30 +S3210000AC8071C12F00487800104EBAE8224E5E4E754E5600002F0A73390002B38C36 +S3210000AC9C4A81670C5381671E5381674E600000A2700113C00002DF30487AE9AACA +S3210000ACB84EB9000047086000008C3D7CC0C0000E487A008A2F390002B8084EB974 +S3210000ACD400004F904A8066063D7CC1C0000EA367302E000E2F002F3C00038C7DE5 +S3210000ACF04EBAE9BA6056487A005C45F90002B8082F124EB900004F904A80660A62 +S3210000AD0C303C080033C00002DD882F2A00084EBADD5C4A390002DF316626720C16 +S3210000AD28E3A032390002DD88828033C10002DD88700113C00002DF3448784C00F2 +S3210000AD444878003D4EBAE802246EFFFC4E5E4E754D554C530051FC514E5600007F +S3210000AD602F0A4EBAEAA04A80673845F90002B80C2F124EBADD044A390002DF31DA +S3210000AD7C6618322E000E82803D41000E71C12F00487800104EBAE71A600C2F1254 +S3210000AD98487AE9824EB900004708246EFFFC4E5E4E7551FC4E5600002F02342E96 +S3210000ADB4000E73390002B38C4A81670A538167225381672C6030700113C00002AC +S3210000ADD0DF30487AE88C4EB9000047084A390002DF30671E602608C200074A39D3 +S3210000ADEC0002DF30671060180082000000C04A390002DF30660A2F022F2E000869 +S3210000AE084EBAFF52242EFFFC4E5E4E754E560000322E000E71390002B38C028193 +S3210000AE240000FF00ED8082802F012F2E00084EBAE7184E5E4E7551FC4E56FFECB7 +S3210000AE4048D71C0C45F90002B80849EA0004205447F900004F9010100C00002390 +S3210000AE5C6666487A00D42F124E934A806606343C08006026487A00CA2F124E936E +S3210000AE784A806606343C08406014487A00C0343C08802F124E934A806604343C16 +S3210000AE9408C04878FF002F144EBADE4A33C00002DD884A390002DF30667A700163 +S3210000AEB013C00002DF3442A72F024878003D4EBAEBB06064263C0000AF342F03A3 +S3210000AECC2F124E934A806606343C01006026487A00602F124E934A806606343C2B +S3210000AEE801406014487A0056343C01802F124E934A806604343C01C0203C0001A6 +S3210000AF04807D2D4000082F032F124E934A80660A203C00038C7D2D4000082F021D +S3210000AF202F2E00084EBAFBDA4CEE1C0CFFEC4E5E4E7551FC425453540051FC51E9 +S3210000AF3C424348470051FC51425345540051FC514E5600002F0A45F90002B80C94 +S3210000AF582F124EBADBC84A390002DF31661C322E000E82803D41000E71C12F0077 +S3210000AF74487800104EBAE5324EBAE562600C2F12487AE9BA4EB900004708246E83 +S3210000AF90FFFC4E5E4E7551FC4E56000042A72F390002B8104EBADD4222004A395D +S3210000AFAC0002DF3066360480FFFF80000C8000010000641E700113C00002DF326E +S3210000AFC8302E000E33C10002DD8A2F002F2E00084EBAFF72600A487AFADC4EB988 +S3210000AFE4000047084E5E4E754E5600004EBAE8124A80673042A72F390002B80C6F +S3210000B0004EBADCE623C00002B8004A390002DF306616700113C00002DF33302E01 +S3210000B01C000E2F002F2E00084EBAE8324E5E4E754E5600002F3CFFFF00002F396A +S3210000B0380002B80C4EBADCAA33C00002DD8A4A390002DF30661A700113C00002EC +S3210000B054DF3271EE000E2F00487800104EBAE44A4EBAE47A4E5E4E754E560000AE +S3210000B07071EE000E2F00487800104EBAE4304E5E4E7551FC4E5600002F2E000C6D +S3210000B08C487A00122F2E00084EB9000046D84E5E4E7551FC252D3130730051FC15 +S3210000B0A84E560000202E0008D1B90002B3904E5E4E7551FC4E56FFF42F0A2F0200 +S3210000B0C4242E000C222E001045EEFFF442120C8100000008670E7010B081671EF2 +S3210000B0E07020B081672E603E223C0000B13C71822F002F012F0A4EB9000046D85F +S3210000B0FC6028223C0000B14471C22F002F012F0A4EB9000046D86012223C000097 +S3210000B118B14C2F022F012F0A4EB9000046D82F0A2F2E00084EB900004D204CEE0D +S3210000B1340404FFEC4E5E4E753078253032580051307825303458005130782530E8 +S3210000B150385800514E56FF8448D7047C262E000C45F90000470824037A00486EF2 +S3210000B16CFF9C7C002F034EB9000055E84A80508F6712486EFF9C2F032F03487A9B +S3210000B18800904E924FEF001076002F02487A00964E92780A508FB4AE0010642CA5 +S3210000B1A4487800102F024EB90000EC78508F2F00487A007E4E9254825A84528366 +S3210000B1C00C8300000004508F6C06B4AE001065D44A8566262604701FB0846F1017 +S3210000B1DC487A005E4E925283588F701FB0836EF02F2E0008487A004C4E92A3453A +S3210000B1F8508F487A00454E92B4AE0010588F64044A8667844CEE047CFF844E5E0A +S3210000B2144E7551FC253038583A0A253038583A2025733A0A0051FC512530386C2D +S3210000B230583A2000253034582000000020002573000A00514E56FFE848D71C1C54 +S3210000B24C45F90002B39449EAFFFC41EA000428AE00084878001026082F2E0008BB +S3210000B2684EB90000EC7820433800429242107400508F2002E580D08241FA008EA3 +S3210000B28447F00C003013C084B06B00026628A3522F2B00042F034EBAFDE8A567B5 +S3210000B2A04EBAFE0630042F002F02206B000C4E904FEF00144A926634600E52826D +S3210000B2BC0C82000000816DB64A926624487A0A5A2F034EBAFDB44878001071C4C2 +S3210000B2D82F002F034EBAFDDE202E0008548028804FEF00144AAE000C67102F142E +S3210000B2F42F2E00082F034EBAFE584FEF000C20144CEE1C1CFFE84E5E4E7551FCB0 +S3210000B310FFF800800000BD3C000000010000DC880000AFECFFF802800000BE4430 +S3210000B32C000000010000DC880000AFECFFF804800000BE4C000000010000DC8815 +S3210000B3480000AFECFFF806800000BE54000000010000DC880000AFECFFF80A8038 +S3210000B3640000BE5C000000010000DC880000AFECFFF80C800000BE640000000107 +S3210000B3800000DC88000098A4FFC008000000BE6C0000003D0000DD6C0000AE3CAA +S3210000B39CFFC008400000BE740000003D0000DD6C0000AE3CFFC008C00000BE7C25 +S3210000B3B80000003D0000DD6C0000AE3CFFC008800000BE840000003D0000DD6CF4 +S3210000B3D40000AE3CF1C001000000BE6C00038C7D0000DC340000AE3CF1C0014099 +S3210000B3F00000BE740001807D0000DC340000AE3CF1C001C00000BE7C0001807D67 +S3210000B40C0000DC340000AE3CF1C001800000BE840001807D0000DC340000AE3CB8 +S3210000B428F00010000000BE8C00038C7F0000DB080000A220F1C020400000BE0C2A +S3210000B44400038C7F0000D6600000A220F00020000000BE8C00038C7F0000DB0895 +S3210000B4600000A220F1C030400000BE0C00038C7F0000D6600000A220F0003000F7 +S3210000B47C0000BE8C00038C7F0000DB080000A220FFFF4AFC0000BD2C0000000084 +S3210000B4980000D86C0000B06CFFFF4E710000BD40000000000000D86C0000B06C18 +S3210000B4B4FFFF4AC80000BE94000000000000D86C0000B06CFFFF4BCC0000BE14CD +S3210000B4D0000000000000D86C0000B06CFFFF4E730000BD44000000000000D86CF6 +S3210000B4EC0000B06CFFFF4E750000BD48000000000000D86C0000B06CFFFF4E723E +S3210000B5080000BE9C000000000000D7A80000B02CFFFF4E7A0000BE1C00000000CC +S3210000B5240000CE540000A41CFFFF4E7B0000BE1C000000000000CE540000A41CA0 +S3210000B540FFF848800000BE24000000000000D9C000000000FFF848C00000BE2CC6 +S3210000B55C000000000000D9C000000000FFF849C00000BEA4000000000000D9C039 +S3210000B57800000000000048000000BD4C000000000000D9C00000ADAC000049C065 +S3210000B5940000BEAC000000000000D9C00000AD5CFFF848400000BEB40000000098 +S3210000B5B00000D9C00000AD5CFFF84E580000BEBC000000000000D8200000AF4CCD +S3210000B5CCFFF84E500000BEC4000000000000D8740000AF98FFF840C00000BE8C72 +S3210000B5E8000000010000DAC40000A220FFF842C00000BE8C000000010000DA3092 +S3210000B6040000A220FFF840800000BECC000000010000D8E40000AD5CFFF84480A0 +S3210000B6200000BD50000000010000D8E40000AD5CFFF846800000BD540000000166 +S3210000B63C0000D8E40000AD5CFFF04E400000BED4000000000000D7EC0000AC5C4D +S3210000B658FFC046C00000BE8C000200010000DA780000A220FFC042000000BD5894 +S3210000B6740001807D0000D8E40000AE14FFC042400000BD580001807D0000D8E428 +S3210000B6900000AE14FFC042800000BD580001807D0000D8E40000AE14FFC044C001 +S3210000B6AC0000BE8C000200010000D9E00000A220FFC048400000BD5C00018C6463 +S3210000B6C80000D8400000954CFFC04A000000BD6000038C7F0000D8E40000AE14B5 +S3210000B6E4FFC04A400000BD6000038C7F0000D8E40000AE14FFC04A800000BD60AC +S3210000B70000038C7F0000D8E40000AE14FFC04C000000BEDC0000007D0000CC9815 +S3210000B71C0000AC9000004C000000BEE400038C7D0000CC980000AC90FFC04EC068 +S3210000B7380000BD6400018C640000D8400000954CFFC04E800000BD6800018C6441 +S3210000B7540000D8400000954CFFC048C00000BE34000000240000D4B00000A6A033 +S3210000B770FFC04CC00000BE34000000240000D4B00000A6A0F1C041C00000BD6C31 +S3210000B78C00018C640000D0640000AC00FFC050C00000BEEC000000010000D84038 +S3210000B7A80000954CFFC051C00000BEEF000000010000D8400000954CFFC052C056 +S3210000B7C40000BD70000000010000D8400000954CFFC053C00000BD740000000138 +S3210000B7E00000D8400000954CFFC054C00000BD78000000010000D8400000954C4C +S3210000B7FCFFC055C00000BD7C000000010000D8400000954CFFC056C00000BD8012 +S3210000B818000000010000D8400000954CFFC057C00000BD84000000010000D840E4 +S3210000B8340000954CFFC058C00000BD88000000010000D8400000954CFFC059C023 +S3210000B8500000BD8C000000010000D8400000954CFFC05AC00000BD90000000016C +S3210000B86C0000D8400000954CFFC05BC00000BD94000000010000D8400000954C9C +S3210000B888FFC05CC00000BD98000000010000D8400000954CFFC05DC00000BD9C3F +S3210000B8A4000000010000D8400000954CFFC05EC00000BDA0000000010000D84035 +S3210000B8C00000954CFFC05FC00000BDA4000000010000D8400000954CF1C05080CB +S3210000B8DC0000BEF40001807F0000D11C0000AB58F1C051800000BEFC0001807F6C +S3210000B8F80000D11C0000AB58FF0060000000BDA8000000000000D6C80000A9FC37 +S3210000B914FF0061000000BDAC000000000000D6C80000A9FCFF0062000000BDB037 +S3210000B930000000000000D6C80000A9FCFF0063000000BDB4000000000000D6C841 +S3210000B94C0000A9FCFF0064000000BDB8000000000000D6C80000A9FCFF006500B5 +S3210000B9680000BDBC000000000000D6C80000A9FCFF0066000000BDC0000000001F +S3210000B9840000D6C80000A9FCFF0067000000BDC4000000000000D6C80000A9FC34 +S3210000B9A0FF0068000000BDC8000000000000D6C80000A9FCFF0069000000BDCC65 +S3210000B9BC000000000000D6C80000A9FCFF006A000000BDD0000000000000D6C892 +S3210000B9D80000A9FCFF006B000000BDD4000000000000D6C80000A9FCFF006C00FF +S3210000B9F40000BDD8000000000000D6C80000A9FCFF006D000000BDDC0000000054 +S3210000BA100000D6C80000A9FCFF006E000000BDE0000000000000D6C80000A9FC84 +S3210000BA2CFF006F000000BDE4000000000000D6C80000A9FCF10070000000BE3C4B +S3210000BA48000000000000D7500000A98CF1C080800000BF0400038C7D0000D00030 +S3210000BA640000A8ACF1C081800000BF040001807C0000D0B80000A8ACF1F8918024 +S3210000BA800000BF08000000000000D9280000A760F1C090800000BDE800038C7F61 +S3210000BA9C0000D0000000A8ACF1C091800000BDE80001807C0000D0B80000A8AC24 +S3210000BAB8F1C091C00000BF1000038C7F0000D19C0000AC00F1C0B0800000BDECEA +S3210000BAD400038C7F0000D0000000ABA4F1C0B1C00000BF1800038C7F0000D19CAF +S3210000BAF0000098E4F1C0B1800000BDF00001807D0000D0B80000AB00F1C0C0C0C7 +S3210000BB0C0000BF2000038C7D0000CDAC00000000F1C0C1C00000BF2800038C7D8E +S3210000BB280000CDAC00000000F1C0C0800000BDF400038C7D0000D0000000A8ACB0 +S3210000BB44F1C0C1800000BDF40001807C0000D0B80000A8ACF1F0D1800000BF3042 +S3210000BB60000000000000D9280000A760F1C0D1C00000BF3800038C7F0000D19C07 +S3210000BB7C0000AC00F1C0D0800000BDF800038C7F0000D0000000A8ACF1C0D18011 +S3210000BB980000BDF80001807C0000CC340000A8AC0000FFFF0000BF400000000088 +S3210000BBB40000D8E40000A134F1F8E0800000BDFC000000000000CF8C0000A7D802 +S3210000BBD0F1F8E0A00000BDFC000000000000CF340000A7D8F1F8E1800000BE00A7 +S3210000BBEC000000000000CF8C0000A7D8F1F8E1A00000BE00000000000000CF3432 +S3210000BC080000A7D8F1F8E0880000BE04000000000000CF8C0000A7D8F1F8E0A83D +S3210000BC240000BE04000000000000CF340000A7D8F1F8E1880000BE0800000000A2 +S3210000BC400000CF8C0000A7D8F1F8E1A80000BE08000000000000CF340000A7D84E +S3210000BC5CFFC0FB000000BF440001807C0000D8E40000AE14FFC0FB400000BF4491 +S3210000BC780001807C0000D8E40000AE14FFC0FB800000BF440001807C0000D8E439 +S3210000BC940000AE14FFC0FBC00000BF4C000000240000CE000000A884FFC04C40DE +S3210000BCB00000BF540000003D0000C9980000973CFFC04C400000BF5C0000003D4B +S3210000BCCC0000C9980000973CF1C081C00000BF5400038C7D0000CABC0000973CB8 +S3210000BCE8F1C080C00000BF5C00038C7D0000CABC0000973CFFC04C400000BF645B +S3210000BD040000003D0000C99800009588FFC04C400000BF6C0000003D0000C9984E +S3210000BD200000958844432E570051FC51494C4C4547414C0000000020000000819F +S3210000BD3C4F5249004E4F50005254450052545300455854004E4547004E4F54006E +S3210000BD58434C520050454100545354004A4D50004A5352004C454100534849008B +S3210000BD74534C53005343430053435300534E450053455100535643005356530042 +S3210000BD9053504C00534D490053474500534C540053475400534C45004252410040 +S3210000BDAC4253520042484900424C53004243430042435300424E4500424551008D +S3210000BDC8425643004256530042504C00424D490042474500424C54004247540050 +S3210000BDE4424C450053554200434D5000454F5200414E4400414444004153520038 +S3210000BE0041534C004C5352004C534C004D4F5645410051FC50554C53450051FCC9 +S3210000BE1C4D4F5645430051FC4558542E570051FC4558542E4C0051FC4D4F56458B +S3210000BE384D0051FC4D4F5645510051FC414E44490051FC51535542490051FC51EE +S3210000BE54414444490051FC51454F52490051FC51434D50490051FC51425453544B +S3210000BE700051FC51424348470051FC51425345540051FC5142434C520051FC51D3 +S3210000BE8C4D4F56450051FC5148414C540051FC5153544F500051FC5145585442E1 +S3210000BEA82E4C0051455854420051FC51535741500051FC51554E4C4B0051FC512B +S3210000BEC44C494E4B0051FC514E4547580051FC51545241500051FC514D554C53AA +S3210000BEE00051FC514D554C550000000053540053460051FC414444510051FC511A +S3210000BEFC53554251000000004F520051535542580051FC51535542410051FC514E +S3210000BF18434D50410051FC514D554C552E5700514D554C532E57005141444458F7 +S3210000BF340051FC5141444441000000004443005157444441544100515744454243 +S3210000BF5055470051444956530051FC51444956550051FC5152454D530051FC5163 +S3210000BF6C52454D550051FC5143414352000000000002415349440000000000039D +S3210000BF884143523000000000000441435231000000000005414352320000000079 +S3210000BFA40006414352330000000000074D4D55424152000000084F544845525FB8 +S3210000BFC041370800564252000000000008014D4143535200000008044D41534B3E +S3210000BFDC00000000080541434330000000000806414343000000000008064143D8 +S3210000BFF8434558543031080741434345585432330808414343310000000008094D +S3210000C0144143433200000000080A4143433300000000080B53520000000000004D +S3210000C030080E5043000000000000080F524F4D42415230000C00524F4D4241526C +S3210000C04C00000C00524F4D42415231000C0152414D42415230000C0452414D42AE +S3210000C068415200000C0452414D42415231000C054D504352000000000C0C454449 +S3210000C08452414D4241520C0D4D424152320000000C0E5345434D424152000C0E47 +S3210000C0A04D424152000000000C0F4D424152310000000C0F4E56FFFC2F042F03CF +S3210000C0BC2F02242E000C262E0010282E001470FEB083671A70FDB083671CA340DD +S3210000C0D822034A836F06E380538166FA2202C2806708203C0000C1446006203C50 +S3210000C0F40000C1462F002F2E00084EB900004D20AF40A541508F6004E3805281CD +S3210000C110B2846DF8C4805584E8A22F02487A002A486EFFFD4EB9000046D8486E21 +S3210000C12CFFFD2F2E00084EB900004D204CEE001CFFF04E5E4E7551FC4100440096 +S3210000C148256400514E5600002F02222E000C202E0010A742A348B1C06C08E3824E +S3210000C1645288B1C06DF8C2825380E0A15581670653816732605E487800102F39CB +S3210000C1800002B3904EB90000EC78A56773404EBAEF184FEF000C487800102F01D5 +S3210000C19C2F2E00084EBAEF1A4FEF000C602E487800202F390002B3904EB900009F +S3210000C1B8EC78A96722004EBAEEE84FEF000C487800202F012F2E00084EBAEEEA52 +S3210000C1D44FEF000C242EFFFC4E5E4E754E56FFF048D7003C262E000C2A2E00108D +S3210000C1F0282E0014A34022054A856F06E380538166FA2203C280EAA1A740A34220 +S3210000C20C6004E3805282B4846DF8C68024035384E8A2203C0000C2B04A81670604 +S3210000C228203C0000C2B32F002F2E00084EB900004D20508F4A82670E538267209F +S3210000C24453826732538267446056203C0000C2B62F002F2E00084EB900004D2058 +S3210000C260508F6040203C0000C2B92F002F2E00084EB900004D20508F602A203C99 +S3210000C27C0000C2BC2F002F2E00084EB900004D20508F6014203C0000C2BF2F00BB +S3210000C2982F2E00084EB900004D20508F4CEE003CFFF04E5E4E7551FC2E57002EF8 +S3210000C2B44C002A31002A32002A34002A380051FC4E56FF7048D71C7C242E000834 +S3210000C2D02C2E001045F90002B3907600AF41A540B0866C08E3815280B0866DF899 +S3210000C2EC2A2E000C2006CA81AF415580E0A5A54028065784B0846C0CE381528041 +S3210000C30828065784B0846DF447F900004D2049FAFD9C282E000C5B86C881ECA4D0 +S3210000C32470070C85000000076200061A307B5A064EFB880200100026003C0062B4 +S3210000C340008800AE010002ACA5674878FFFD2F042F024E94A3434FEF0010600054 +S3210000C35C05ECA5674878FFFE2F042F024E94A5434FEF0010600005D6487A05EE99 +S3210000C3782F024E93A5674878FFFE2F042F024E94487A05DC2F024E93A9434FEFA3 +S3210000C3940020600005B0487A05C82F024E93A5674878FFFE2F042F024E94487AE0 +S3210000C3B005B82F024E9376084FEF00206000058A487A05A92F024E93A567487883 +S3210000C3CCFFFE2F042F024E94487A05902F024E9376104FEF002060000564487836 +S3210000C3E800102F124EB90000EC78A56773404EBAECB02F01487AFD4A486EFFF432 +S3210000C4044EB9000046D8486EFFF42F024E93487A05502F024E93A5674878FFFE44 +S3210000C4202F042F024E94487A053E2F024E9376204FEF004060000512205277D059 +S3210000C43CA5674EBAEC6808030008588F670001327007C0834A40670000D0A94678 +S3210000C458487A050ACC832F024E93487A050A2F024E93AB672F032F024EBAFCDA5A +S3210000C4742A3C0000C9702F052F024E93A5674878FFFE2F042F024E944A864FEFA4 +S3210000C49000346748487A04DC2F024E932F052F024E934878000E4878000F2F03DE +S3210000C4AC2F024E944878000A4878000B2F032F024EBAFD222F052F024E93A367EC +S3210000C4C82F032F024EBAFC7E77FC01004FEF0044600000FC2F052F024E93487815 +S3210000C4E4000E4878000F2F032F024E944878000A4878000B2F032F024EBAFCE236 +S3210000C500487A04702F024E932F052F024E93A3672F032F024EBAFC3677FC02006F +S3210000C51C4FEF0044600000B4487A043E2F024E93AB672F032F024EBAFC182A3C5A +S3210000C5380000C9702F052F024E93A5674878FFFE2F042F024E942F052F024E930D +S3210000C5544878000E4878000F2F032F024E944878000A4878000B2F032F024EBAE3 +S3210000C570FC7077FC00804FEF0054605A71032F00487AFBC6486EFFF44EB9000028 +S3210000C58C46D8486EFFF42F024E93487A03CC2F024E93A5674878FFFE2F042F02E4 +S3210000C5A84E94487A03C42F024E934878000E4878000F2F032F024E944878000A48 +S3210000C5C44878000B2F032F024EBAFC1276404FEF0054487A038E2F024E93508F85 +S3210000C5E060000366220470020C840000000264064A84665C60165581670000BEDB +S3210000C5FC5381670000F853816700025E6000033E487800102F124EB90000EC7832 +S3210000C618A56777404EBAEA8A487A03422F024E93487800102F032F024EBAEA8AF9 +S3210000C634487AFC7A2F024E93487A03282F024E9377FC80004FEF0030600002FADE +S3210000C650487800202F124EB90000EC78A96726004EBAEA46486EFF902F034EB950 +S3210000C66C000055E84A804FEF0014670841EEFF9022086026487A02E22F024E93BE +S3210000C688487800202F032F024EBAEA2A487AFC1D2F024E93223C0000C9664FEF79 +S3210000C6A4001C2F012F024E93263C00010000508F60000292487800102F124EB9C8 +S3210000C6C00000EC78A56773404EBAE9DE2F01487AFA78486EFFF44EB9000046D834 +S3210000C6DC486EFFF42F024E93487A028E2F024E9377FC04004FEF0028600002528C +S3210000C6F8205277D0A5674EBAE9A808030008588F670001067007C0834A406700AF +S3210000C71400B8A944487A024AC8832F024E93487A024A2F024E93AB672F032F025E +S3210000C7304EBAFA1A4A844FEF001C6744487A023E2F024E934878000E4878000F47 +S3210000C74C2F032F024E944878000A4878000B2F032F024EBAFA80487A020C2F020B +S3210000C7684E93A3672F032F024EBAF9DA77FC20004FEF003C600001CA487A020288 +S3210000C7842F024E934878000E4878000F2F032F024E944878000A4878000B2F03D8 +S3210000C7A02F024EBAFA3C487A01CA2F024E93487A01C02F024E93A3672F032F0267 +S3210000C7BC4EBAF98E77FC40004FEF00446000017E487A01962F024E93AB672F0309 +S3210000C7D82F024EBAF970487A01A42F024E934878000E4878000F2F032F024E9442 +S3210000C7F44878000A4878000B2F032F024EBAF9DE77FC10004FEF003C6000013AB4 +S3210000C81071032F00487AF932486EFFF44EB9000046D8486EFFF42F024E93487A2B +S3210000C82C01602F024E934878000E4878000F2F032F024E944878000A4878000B00 +S3210000C8482F032F024EBAF992487A01142F024E9377FC08004FEF0044600000E6AC +S3210000C864222A00580C810000000867107010B08167467020B0816774600000C4E4 +S3210000C880487800102F124EB90000EC78A56777C04EBAE816487A00FE028300008C +S3210000C89C00FF2F024E93487800082F032F024EBAE8104FEF0020263C000200007C +S3210000C8B86000008E487800102F124EB90000EC78A56777C04EBAE7DA487A00C264 +S3210000C8D42F024E93487800102F032F024EBAE7DA4FEF0020263C000200006058BA +S3210000C8F0487800202F124EB90000EC78A96726004EBAE7A6487A008E2F024E936D +S3210000C90C486EFF902F034EB9000055E84A804FEF001C6712486EFF902F024E935A +S3210000C928508F263C000200006016487800202F032F024EBAE7804FEF000C263CD6 +S3210000C94400020000202E0014C0834A8066042540000420034CEE1C7CFF704E5E7D +S3210000C9604E7551FC28002900292B002D28005B002C005D00285043290051FC5145 +S3210000C97C2C50435D2C0051FC2C50432C0051FC512850432C00000000230051FC24 +S3210000C9984E5600002F042F032F02487800102F390002B3904EB90000EC78A5674F +S3210000C9B424004EBAE6F0AF43C68273FC7000C282700CE0A1B68157C349C34483E1 +S3210000C9D00802000B67204A836708203C0000CA886032203C0000CA900802000A63 +S3210000C9EC6726203C0000CA98601E4A836708203C0000CAA06012203C0000CAA81E +S3210000CA080802000A6706203C0000CAB0283C0002B3982F002F044EBAE664202E02 +S3210000CA240008E580D0AE000841FAE8E22F300C08AB6771EE000E2F002F044EBA9C +S3210000CA40F884487AFF2C2F044EB900004D204A83661AA5674878FFFD2F022F044B +S3210000CA5C4EBAF656487A00562F044EB900004D204878000E4878FFFD2F022F04B7 +S3210000CA784EBAF63A4CEE001CFFF44E5E4E7551FC444956532E4C005152454D5327 +S3210000CA942E4C0051444956534C2E4C00444956552E4C005152454D552E4C0051B2 +S3210000CAB0444956554C2E4C003A0051FC4E5600002F02203C0000CB2C082E000081 +S3210000CACC000E6706203C0000CB34243C0002B3982F002F024EBAE5A2202E000880 +S3210000CAE8E580D0AE000841FAE8202F300C08AB6771EE000E2F002F024EBAF7C2EB +S3210000CB04487AFE6A2F024EB900004D204878000B4878FFFD71EE000E2F002F02EC +S3210000CB204EBAF592242EFFFC4E5E4E75444956552E570051444956532E5700518E +S3210000CB3C4E5600002F0A2F032F02206E0008262E000C202E0010A741A342B48042 +S3210000CB586C08E3815282B4806DF8C6812403538043F90002B3E8E0A2A1514AAEF0 +S3210000CB740014676645D0101272000C000020670E528145F0180010120C00002006 +S3210000CB9066F2702E118018004A8267120C8200000001671A0C8200000002672276 +S3210000CBAC6070528170421180180022BC000000086066528170571180180022BC9C +S3210000CBC80000001060565281704C1180180022BC00000020604643F900004D2000 +S3210000CBE44A8267120C820000000167160C8200000002671A6024487A00342F081C +S3210000CC004E91508F601E487AF6A82F084E91508F6012487AF69F2F084E91508FC3 +S3210000CC1C600642B90002B39420024CEE040CFFF44E5E4E752E4200514E56000019 +S3210000CC382F02243C0002B398A367AF6771EE000E2F002F024EBAFEEE4878000B50 +S3210000CC544878FFFD71EE000E2F002F024EBAF452487AFD0A2F024EB900004D2079 +S3210000CC70202E0008E580D0AE000841FAE6942F300C08AB6771EE000E2F002F025A +S3210000CC8C4EBAF636242EFFFC4E5E4E754E56FFEC48D70C1C45F90002B398487875 +S3210000CCA8001047FAE3D82F390002B3904EB90000EC7877C0A5674EBAE3E871FCC3 +S3210000CCC48FF8C083671A0C8000000400671E0C800000080067220C8000000C0039 +S3210000CCE067266030487A00B22F0A4E937820602C487A00A62F0A4E9378406020A9 +S3210000CCFC487A00A22F0A4E9378206014487A00962F0A4E937840600842B90002FD +S3210000CD18B3946070202E0008E580D0AE000841FAE5E8240A2F300C08AB6771EE87 +S3210000CD34000E2F002F0A4EBAF588487AFC302F0A4EB900004D207020B08466120B +S3210000CD504878000E4878FFFD2F032F0A4EBAF356602AA5674878FFFD2F032F0ABE +S3210000CD6C4EBAF346487A00362F0A4EB900004D204878000E4878FFFD2F032F0ACA +S3210000CD884EBAF32A4CEE0C1CFFEC4E5E4E7551FC4D554C552E4C00514D554C530C +S3210000CDA42E4C00002D0051FC4E5600002F02202E0008E580D0AE000841FAE552F1 +S3210000CDC0243C0002B3982F300C08AB6771EE000E2F002F024EBAF4EE487AFB9615 +S3210000CDDC2F024EB900004D204878000B4878FFFD71EE000E2F002F024EBAF2BE84 +S3210000CDF8242EFFFC4E5E4E754E560000487800102F390002B3904EB90000EC78D1 +S3210000CE14A56773C04EBAE28EA740C0814A806726202E0008E580D0AE000841FA4A +S3210000CE30E4E02F300C08AB6771EE000E2F0048790002B3984EBAF47E600623C02A +S3210000CE4C0002B3944E5E4E754E56FFDC48D70C3C45F90002B3984878001047F98B +S3210000CE6800004D202F390002B3904EB90000EC7875C0A5674EBAE22A71EE000E61 +S3210000CE84A343C6804FEF000C671C4878000E4878000F2F022F0A4EBAF218487AB8 +S3210000CEA0FAD02F0A4E934FEF0018780072002001E580D08141FAF0BE41F00A0051 +S3210000CEBC71FC0FFF7BE80008C082BA80660E2F082F0A4E93508F4A83664A602C45 +S3210000CED852817020B0816ECE4A84661C2F02487A0044486EFFF44EB9000046D813 +S3210000CEF4486EFFF42F0A4E934FEF00144A83661C487AFA6A2F0A4E934878000EAA +S3210000CF104878000F2F022F0A4EBAF19A4FEF00184CEE0C3CFFDC4E5E4E7551FCC4 +S3210000CF2C52632530335800514E5600002F02243C0002B398A367AF6771EE000EEE +S3210000CF482F002F024EBAFBEE4878000B4878FFFD71EE000E2F002F024EBAF152D7 +S3210000CF64487AFA0A2F024EB900004D20A5674878FFFD71EE000E2F002F024EBAA3 +S3210000CF80F134242EFFFC4E5E4E7551FC4E5600002F032F0271EE000E75FC0E006E +S3210000CF9CC4807009E0A24A8266027408263C0002B398A367AF6771EE000E2F0019 +S3210000CFB82F034EBAFB80487AF9D42F034EB900004D20487800082F022F034EBA3A +S3210000CFD4E0E8487AF9982F034EB900004D20A5674878FFFD71EE000E2F002F03E4 +S3210000CFF04EBAF0C24CEE000CFFF84E5E4E7551FC4E5600002F02243C0002B398EA +S3210000D00CA367AF6771EE000E2F002F024EBAFB22202E0008E580D0AE000841FA74 +S3210000D028E2E82F300C08AB6771EE000E2F002F024EBAF28A487AF9322F024EB921 +S3210000D04400004D204878000B4878FFFD71EE000E2F002F024EBAF05A242EFFFC6A +S3210000D0604E5E4E754E5600002F02202E0008E580D0AE000841FAE29A243C000210 +S3210000D07CB3982F300C08AB6771EE000E2F002F024EBAF236487AF8DE2F024EB9F5 +S3210000D09800004D204878000B4878FFFE71EE000E2F002F024EBAF006242EFFFC69 +S3210000D0B44E5E4E754E5600002F02243C0002B398A367AF6771EE000E2F002F027C +S3210000D0D04EBAFA6A4878000B4878FFFD71EE000E2F002F024EBAEFCE487AF88679 +S3210000D0EC2F024EB900004D20202E0008E580D0AE000841FAE2102F300C08AB678A +S3210000D10871EE000E2F002F024EBAF1B2242EFFFC4E5E4E754E5600002F032F02CA +S3210000D12471EE000E75FC0E00C4807009E0A24A8266027408263C0002B398A36755 +S3210000D140AF6771EE000E2F002F034EBAF9F0487AF8442F034EB900004D20487894 +S3210000D15C00082F022F034EBADF58487AF8082F034EB900004D20202E0008E580E4 +S3210000D178D0AE000841FAE1922F300C08AB6771EE000E2F002F034EBAF1344CEEA7 +S3210000D194000CFFF84E5E4E754E5600002F02A541082E0000000E6702A341243C5B +S3210000D1B00002B398A3672F01A5672F024EBAF97E202E0008E580D0AE000841FA9E +S3210000D1CCE1442F300C08AB6771EE000E2F002F024EBAF0E6487AF78E2F024EB96D +S3210000D1E800004D204878000B4878FFFE71EE000E2F002F024EBAEEB6242EFFFC6A +S3210000D2044E5E4E754E5600002F02206E000C202E0008242E00100C8200000001E3 +S3210000D220670872FFB28267106010E5A05288B1FC000000086C44600CE280528885 +S3210000D23CB1FC000000086C362200C2AE00146704A340602C0C82000000016708FB +S3210000D25872FFB28267106010E5A05288B1FC000000086DD8600CE2805288B1FC7A +S3210000D274000000086DCA7000242EFFFC4E5E4E754E56FFC048D71CFC2C2E000831 +S3210000D29041FA021643EEFFF012D8A34312D8723841FA020843EEFFF2C2AE000CC2 +S3210000D2AC12D8702012D8B0816602A14345F900004D2049F90002B39897CB60047F +S3210000D2C84A8B66220C8300000001660C41EEFFF224032D48FFF4604241EEFFF274 +S3210000D2E475FC80002D48FFF460340C8300000001661241EEFFF075FC01002D482E +S3210000D300FFF44A85671C601041EEFFF075FC00802D48FFF44A85670A487A01924A +S3210000D31C2F0C4E92508F7E00A3417A0078002006C082670000E0A3474A81675E78 +S3210000D3384A85670C487A016E2F0C4E927A00508F2F2EFFF42F0C4E922F04487A8C +S3210000D354EDF4486EFFE44EB9000046D8486EFFE42F0C4E922F062F032F042F0299 +S3210000D3704EBAFE964A804FEF002C6602A34572000C83000000016700009A70FF09 +S3210000D38CB083670000A2600000A00C8300000001661A91C82002E380C086670A9E +S3210000D3A80C84000000076702A3484A88671A605A91C82002E280C086670A0C8447 +S3210000D3C4000000076702A3484A886642487AF9D62F0C4E922F2EFFF42F0C4E925B +S3210000D3E02F04487AED64486EFFE44EB9000046D8486EFFE42F0C4E92A345A341A7 +S3210000D3FC4FEF00240C8300000001671A70FFB08367246024A3410C830000000177 +S3210000D418670870FFB08367126012E7A252840C84000000086D00FEFC600EE282C6 +S3210000D43452840C84000000086D00FEEC5184664E4A8B664A4A8767460C830000F6 +S3210000D4500001670870FFB083672460362F06A367A167487800804EBAFDA02A0031 +S3210000D46C4FEF0010528BB7FC000000026D00FE4E60202F06A167A167487801007F +S3210000D4884EBAFD7E2A004FEF0010528BB7FC000000026D00FE2C4CEE1CFCFFC04D +S3210000D4A44E5E4E75410044002F0051FC4E56FFF048D7003C282E0008342E000E3A +S3210000D4C0487800102F390002B3904EB90000EC78A5677BC04EBADBD2A541080276 +S3210000D4DC00066702A341263C0002B398A3672F01A5672F034EBAF64A0802000A58 +S3210000D4F867322004E580D08441FADE0E2F300C08AB6771C22F002F034EBAEDB2B5 +S3210000D514487AF45A2F034EB900004D2071C22F002F054EBAFD5C603071C22F0056 +S3210000D5302F054EBAFD50487AF4382F034EB900004D202004E580D08441FADDC601 +S3210000D54C2F300C08AB6771C22F002F034EBAED6A4CEE003CFFF04E5E4E7551FC24 +S3210000D5684E5600002F032F02206E0008262E000C202E0010A741A342B4806C08D1 +S3210000D584E3815282B4806DF8C68124035380E0A24AAE0014677043D01011720068 +S3210000D5A00C000020670E528143F0180010110C00002066F243F90002B3E8702E8E +S3210000D5BC118018000C820000000167120C8200000002671A0C8200000003672271 +S3210000D5D86074528170421180180022BC00000008606A5281704C1180180022BC69 +S3210000D5F400000020605A528170571180180022BC00000010604A43F900004D20B7 +S3210000D6100C820000000167120C820000000267160C8200000003671A6024487A8B +S3210000D62CF6042F084E91508F601E487AEC7B2F084E91508F6012487AEC6C2F088E +S3210000D6484E91508F600642B90002B39420024CEE000CFFF84E5E4E754E560000E6 +S3210000D6642F02243C0002B398A3674878000D71EE000E2F002F024EBAFEEC202EE2 +S3210000D6800008E580D0AE000841FADC862F300C08AB6771EE000E2F002F024EBA9E +S3210000D69CEC28487AF2D02F024EB900004D204878000B4878FFFE71EE000E2F000B +S3210000D6B82F024EBAE9F8242EFFFC4E5E4E7551FC4E56FF9C2F0A2F0245F9000244 +S3210000D6D4B39073EE000E71FC00FFC0814A80661A487800102F124EB90000EC780F +S3210000D6F024127140D480A5674EBAD9AE60160C80000000FF660842B90002B3948F +S3210000D70C603871002412D480486EFF9C2F024EB9000055E84A806712486EFF9C0E +S3210000D72848790002B3984EB900004D206010487800202F0248790002B3984EBAC6 +S3210000D744D9784CEE0404FF944E5E4E754E5600002F02487AF23C243C0002B398BC +S3210000D7602F024EB900004D2071EE000E73FC00FF48780008C2802F012F024EBAB4 +S3210000D77CD940487AF1F02F024EB900004D204878000B4878FFFD71EE000E2F0007 +S3210000D7982F024EBAE918242EFFFC4E5E4E7551FC4E5600002F02487AF1E4243C60 +S3210000D7B40002B3982F024EB900004D20487800102F390002B3904EB90000EC7879 +S3210000D7D073C0A5674EBAD8D2487800102F012F024EBAD8DA242EFFFC4E5E4E759F +S3210000D7EC4E5600002F02487AF1A0243C0002B3982F024EB900004D2071EE000E34 +S3210000D808720F48780008C2802F012F024EBAD8A6242EFFFC4E5E4E754E5600002C +S3210000D824A5674878FFFE71EE000E2F0048790002B3984EBAE87C4E5E4E7551FC47 +S3210000D8404E560000202E0008E580D0AE000841FADAC02F300C08AB6771EE000E1A +S3210000D85C2F0048790002B3984EBAEA5E4E5E4E754E5600004E5E4E754E56FFEC0C +S3210000D8782F032F02487800102F390002B3904EB90000EC78A56777404EBAD8168A +S3210000D894243C0002B398A5674878FFFE71EE000E2F002F024EBAE80A487A003241 +S3210000D8B02F024EB900004D202F03487AE88C486EFFEC4EB9000046D8486EFFECE2 +S3210000D8CC2F024EB900004D204CEE000CFFE44E5E4E7551FC2C2300514E5600006C +S3210000D8E82F02243C0002B398A367AF6771EE000E2F002F024EBAF23E202E0008C5 +S3210000D904E580D0AE000841FADA042F300C08AB6771EE000E2F002F024EBAE9A614 +S3210000D920242EFFFC4E5E4E754E56FFF048D70C0C243C0002B39845F900004D2007 +S3210000D93C47FAE77677EE000EA367AF672F032F024EBAF1EE082E0003000F67346B +S3210000D958487AF0112F024E92A5674878FFFE2F032F024E93487A004A2F024E92AF +S3210000D9744878000B4878FFFE2F032F024E93487AEFE22F024E926022A5674878D3 +S3210000D990FFFD2F032F024E93487AEFD62F024E924878000B4878FFFD2F032F02B3 +S3210000D9AC4E934CEE0C0CFFF04E5E4E75292C2D280051FC514E560000A567487810 +S3210000D9C8FFFD71EE000E2F0048790002B3984EBAE6DC4E5E4E7551FC4E5600006D +S3210000D9E42F02701023C00002B3E8202E0008E580D0AE000841FAD916243C000223 +S3210000DA00B3982F300C08AB6771EE000E2F002F024EBAE8B2487A00122F024EB9B9 +S3210000DA1C00004D20242EFFFC4E5E4E752C4343520051FC514E5600002F02487A86 +S3210000DA380038243C0002B3982F024EB900004D20202E0008E580D0AE000841FAC6 +S3210000DA54D8BC2F300C08AB6771EE000E2F002F024EBAE85E242EFFFC4E5E4E75C0 +S3210000DA704343522C0051FC514E5600002F02701023C00002B3E8202E0008E58062 +S3210000DA8CD0AE000841FAD87E243C0002B3982F300C08AB6771EE000E2F002F0262 +S3210000DAA84EBAE81A487A00122F024EB900004D20242EFFFC4E5E4E752C5352004C +S3210000DAC44E5600002F02487A0038243C0002B3982F024EB900004D20202E0008C9 +S3210000DAE0E580D0AE000841FAD8282F300C08AB6771EE000E2F002F024EBAE7CAF3 +S3210000DAFC242EFFFC4E5E4E7553522C004E56FFF048D7041C73EE000E75FC0FC0FA +S3210000DB18C48102810000F03F71FC01C0C082E780828071FC0E00C082243C0002FC +S3210000DB34B398E680828077C145FAE786A3674878000D2F032F024EBAFA1C202E92 +S3210000DB500008E580D0AE000841FAD7B62F300C08AB672F032F024E92487AEE067A +S3210000DB6C28002F024EB900004D2022047040B084633870080C8400000008641899 +S3210000DB8853810C8100000001635E70030C81000000036600008660500C8100002C +S3210000DBA4000867487010B08167427020B081674E606C0C810000800064187040D3 +S3210000DBC0B081674E0C810000040067360C8100000800673E604C0C81000080003C +S3210000DBDC67340C8100010000672C0C8100020000671460322F3C0001807F4878A4 +S3210000DBF8000B2F032F024E9260264878003F4878000B2F032F024E9260164878F4 +S3210000DC14001F4878000B2F032F024E92600642B90002B3944CEE041CFFF04E5E22 +S3210000DC304E7551FC4E5600002F024878000B243C0002B3984878FFFD71EE000E4C +S3210000DC4C2F002F024EBAE462487AED1A2F024EB900004D20202E0008E580D0AE61 +S3210000DC68000841FAD6A42F300C08AB6771EE000E2F002F024EBAE646242EFFFC0A +S3210000DC844E5E4E754E5600002F0B2F0A2F02243C0002B39845F90000EC7847F938 +S3210000DCA00002B390A367AF6771EE000E2F002F024EBAEE8A487AECDE2F024EB9EC +S3210000DCBC00004D2022390002B3E80C8100000008670E7010B08167267020B081D8 +S3210000DCD8673E6058487800102F134E92A56722004EBAD3BE487800082F012F02EB +S3210000DCF44EBAD3C6603A487800102F134E92A56722004EBAD3A0487800102F0138 +S3210000DD102F024EBAD3A8601C487800202F134E92A96722004EBAD3824878002050 +S3210000DD2C2F012F024EBAD38A487AEC3A2F024EB900004D20202E0008E580D0AE49 +S3210000DD48000841FAD5C42F300C08AB6771EE000E2F002F024EBAE5664CEE0C04EE +S3210000DD64FFF44E5E4E7551FC4E5600002F032F02487800102F390002B3904EB963 +S3210000DD800000EC78A56777C04EBAD31E303CFF00C0834A40670842B90002B394F6 +S3210000DD9C604A487AEBF4243C0002B3982F024EB900004D20487800082F032F029D +S3210000DDB84EBAD302487AEBB22F024EB900004D20202E0008E580D0AE000841FAEC +S3210000DDD4D53C2F300C08AB6771EE000E2F002F024EBAE4DE4CEE000CFFF84E5E17 +S3210000DDF04E7551FC4E5600002F0A2F02206E000845F90000470875D073D00282C4 +S3210000DE0C00000C00E08202810000000384812F02487A00864E920C820000000410 +S3210000DE2867160C820000000867207009B082672C700CB08267386048203C0000AF +S3210000DE44DEB02F004E92487A010C4E926046203C0000DED82F004E92487A00FAED +S3210000DE604E926034203C0000DEFC2F004E92487A00E84E926022203C0000DF2878 +S3210000DE7C2F004E92487A00D64E926010203C0000DF4C2F004E92487A00C44E9291 +S3210000DE984CEE0404FFF84E5E4E7551FC2046533D25582C200051FC515068797372 +S3210000DEB46963616C20627573206572726F72206F6E20696E737472756374696F8E +S3210000DED06E20666574636800506879736963616C20627573206572726F72206F18 +S3210000DEEC6E206F706572616E6420777269746500417474656D70746564207772A1 +S3210000DF0869746520746F2077726974652D70726F74656374656420737061636544 +S3210000DF240051FC51506879736963616C20627573206572726F72206F6E206F7050 +S3210000DF406572616E64207265616400515265736572766564000000000A0051FC11 +S3210000DF5C4E56FFEC2F032F0277FC8000740073C371EE000AE283C280700FB08253 +S3210000DF786500013E307B2A064EFB88020020003E00540074003E00940094009415 +S3210000DF94003E003E003E00B400D000EC0108012470744A816700010641EEFFECDC +S3210000DFB070541180280052827010B0826EAC6000010241EEFFEC702E118028005E +S3210000DFCC52827010B0826E96600000EC70734A81670000D241EEFFEC7053118008 +S3210000DFE8280052827010B0826E00FF78600000CC706D4A81670000B241EEFFEC7D +S3210000E004704D1180280052827010B0826E00FF58600000AC70304A8167000092C9 +S3210000E02041EEFFEC70311180280052827010B0826E00FF386000008C70784A81A0 +S3210000E03C677241EEFFEC70581180280052827010B0826E00FF1A606E706E4A81CA +S3210000E058675641EEFFEC704E1180280052827010B0826E00FEFE6052707A4A8101 +S3210000E074673A41EEFFEC705A1180280052827010B0826E00FEE2603670764A8131 +S3210000E090671E41EEFFEC70561180280052827010B0826E00FEC6601A70634A8180 +S3210000E0AC6702704341EEFFEC1180280052827010B0826E00FEAA41EEFFEC42303B +S3210000E0C82800486EFFEC487A00144EB9000047084CEE000CFFE44E5E4E7551FC5C +S3210000E0E4257300514E5600002F0A45F90002B8342F2A003C2F2A00382F2A003475 +S3210000E1002F2A00302F2A002C2F2A00282F2A00242F2A0020487A003A4EB9000075 +S3210000E11C47082F2A001C2F2A00182F2A00142F2A00102F2A000C2F2A00082F2AB7 +S3210000E13800042F12487A00424EB900004708246EFFFC4E5E4E7551FC416E3A20D4 +S3210000E1542530385820253038582025303858202530385820253038582025303803 +S3210000E17058202530385820253038580A0051FC51446E3A202530385820253038E5 +S3210000E18C58202530385820253038582025303858202530385820253038582025BB +S3210000E1A83038580A0051FC514E5600002F0274002F2E00082002E580908241FA6B +S3210000E1C400282F300C004EB900004F904A80508F66042002600A52827026B08285 +S3210000E1E06ED6A140242EFFFC4E5E4E750000E3DC0002B834000000200000E3DFAD +S3210000E1FC0002B838000000200000E3E20002B83C000000200000E3E50002B84052 +S3210000E218000000200000E3E80002B844000000200000E3EB0002B84800000020EB +S3210000E2340000E3EE0002B84C000000200000E3F10002B850000000200000E3F4FC +S3210000E2500002B854000000200000E3F70002B858000000200000E3FA0002B85C7F +S3210000E26C000000200000E3FD0002B860000000200000E4000002B8640000002034 +S3210000E2880000E4030002B868000000200000E4060002B86C000000200000E4092E +S3210000E2A40002B870000000200000E3B40002B874000000200000E40C0002B87807 +S3210000E2C0000000200000E3B80002B87C000000200000E4140002B88000000020D9 +S3210000E2DC0000E3BC0002B884000000200000E41C0002B888000000200000E3C01E +S3210000E2F80002B88C000000200000E4240002B890000000200000E3C40002B89437 +S3210000E314000000200000E42C0002B898000000200000E3C80002B89C0000002024 +S3210000E3300000E4340002B8A0000000200000E3CC0002B8A4000000200000E43CEC +S3210000E34C0002B8A8000000200000E3D00002B8AC000000200000E4440002B8B062 +S3210000E368000000200000E44C0002B8B4000000200000E4540002B8B800000020EB +S3210000E3840000E3D40002B8BC000000200000E45C0002B8C0000000200000E45F0D +S3210000E3A00002B8C4000000100000E4620002B870000000204650300046503100B0 +S3210000E3BC4650320046503300465034004650350046503600465037004650494160 +S3210000E3D85200000044300044310044320044330044340044350044360044370015 +S3210000E3F44130004131004132004133004134004135004136004137004650306C31 +S3210000E4100051FC514650316C0051FC514650326C0051FC514650336C0051FC51D6 +S3210000E42C4650346C0051FC514650356C0051FC514650366C0051FC514650376C16 +S3210000E4480051FC51465043520051FC514650535200000000504300535200535035 +S3210000E4640051FC514E5600002F0B2F0A45F90002B83447F9000047082F2A00804D +S3210000E480487A006E4E932F2A0084487A00744E932F2A0088487A007A4E932F2A1E +S3210000E49C005C2F2A00582F2A00542F2A00502F2A004C2F2A00482F2A00442F2ABF +S3210000E4B80040487A00644E932F2A007C2F2A00782F2A00742F2A00702F2A006CFA +S3210000E4D42F2A00682F2A00642F2A0060487A006A4E934CEE0C00FFF84E5E4E7536 +S3210000E4F0465043523A2020253038580A0051FC51465053523A2020253038580A34 +S3210000E50C0051FC5146504941523A20253038580A0051FC514650302D333A202551 +S3210000E52830385825303858202530385825303858202530385825303858202530E3 +S3210000E5443858253038580A004650342D373A2025303858253038582025303858DF +S3210000E560253038582025303858253038582025303858253038580A004E56000032 +S3210000E57C2F0B2F0A2F02242E000845F9000047084A82663247F90002B8342F2B06 +S3210000E598008C487A00904E9247EB009071D32F00487A008E4E9230132F004EBAC4 +S3210000E5B4F9A8487A008C4E924EBAFB2A60602F024EBAFBEA72FFB280673422000B +S3210000E5D0E581928041FAFC16701041F01C00B0A8000822680004660E71D12F00C4 +S3210000E5EC2F10487A00584E92602C2F112F10487A00584E926020487A005C2F0200 +S3210000E6084EB900004F904A8066064EBAFE54600A2F024879000040244E924CEEA0 +S3210000E6240C04FFF44E5E4E7550433A2025303858200051FC53523A202530345843 +S3210000E640205B00005D0A005125733A2020253034580A005125733A202025303898 +S3210000E65C580A0051667075004E5600002F032F02206E000C222E0008242E001043 +S3210000E678B1FC00000008671070102608B083670E7020B083670E60102041108263 +S3210000E694600A204130826004204120824CEE000CFFF84E5E4E7551FC4E56FFD410 +S3210000E6B048D73CFC266E000845F900004708A34375D3700CE0AA73825981670E50 +S3210000E6CC5381670E5381670E5381670E60107408601474096010740A600C740B9B +S3210000E6E86008487A03D44E9274002A3C0002B8342E0820454BE8003CD595280DBE +S3210000E7042A4549ED008C486EFFFC2F144EB9000009D82C0071D3E4887380703F68 +S3210000E720B08165000358307B1A064EFB8802034E034E008000AA00D4032C032C4A +S3210000E73C032C015A017E02020226024A032C026E0292032C032C032C032C032C1C +S3210000E758032C032C032C02B602DA02DA02DA02DA02DA02DA02DA03040304030441 +S3210000E7740304030403040304030403040304030403040304030403040304032CF9 +S3210000E790032C032C032C032C032C032C032C032C032C032C032C032C032C032CD5 +S3210000E7AC032C487A03284E922F0B4EBAF63C42A74EBAFDBAA3672F144EB90000DF +S3210000E7C8B2440C8300000001660002E0600002C6487A030E4E922F0B4EBAF6123C +S3210000E7E442A74EBAFD90A3672F144EB90000B2440C8300000001660002B660003D +S3210000E800029C4A8666262F14487A02EE4E9242A74EBAFD66A3672F144EB900007F +S3210000E81CB2440C83000000016600028C600002722014B0B90002B5186700024E69 +S3210000E8384AAEFFFC67262F00487A02D64E9242A74EBAFD2EA3672F144EB9000025 +S3210000E854B2440C8300000001660002546000023A2F004EB900000A5C4A806700F7 +S3210000E870022423D40002B3EC204408EB00070002959076006000022C487A02B2C9 +S3210000E88C4E9242A74EBAFCE6A3672F144EB90000B2440C83000000016600020C69 +S3210000E8A8600001F222390002B3EC672C48784AFC487800102F014EBAFDA4204558 +S3210000E8C408A800070090204442B90002B3EC7600959008AB00070002600001D45F +S3210000E8E041F90002B51C53904A906F1A20447600959042A74EBAFC82A3672F1408 +S3210000E8FC4EB90000B244600001AE2045A34308AB0007000208A80007009042B9A5 +S3210000E9180002B51C42A74EBAFC58A3672F144EB90000B2446000016E487A0222C6 +S3210000E9344E9242A74EBAFC3EA3672F144EB90000B2440C83000000016600016411 +S3210000E9506000014A487A02224E9242A74EBAFC1AA3672F144EB90000B2440C8354 +S3210000E96C000000016600014060000126487A02224E9242A74EBAFBF6A3672F1465 +S3210000E9884EB90000B2440C83000000016600011C60000102487A02124E9242A75B +S3210000E9A44EBAFBD2A3672F144EB90000B2440C8300000001660000F8600000DE06 +S3210000E9C0487A01FE4E9242A74EBAFBAEA3672F144EB90000B2440C830000000120 +S3210000E9DC660000D4600000BA487A01F24E9242A74EBAFB8AA3672F144EB9000066 +S3210000E9F8B2440C8300000001660000B0600000960481000000182F01487A01DA01 +S3210000EA144E9242A74EBAFB5EA3672F144EB90000B2440C830000000166000084F2 +S3210000EA30606A0481000000202F01487A01D04E9242A74EBAFB34A3672F144EB93E +S3210000EA4C0000B2440C8300000001665A60422F01487A01BA4E9242A74EBAFB1235 +S3210000EA68A3672F144EB90000B2440C8300000001663860202F014EB90000F27CEF +S3210000EA8442A74EBAFAF0A3672F144EB90000B2440C8300000001661620390002E4 +S3210000EAA0B518670E2F004EB90000075442B90002B51820034CEE3CFCFFD44E5EA3 +S3210000EABC4E7551FC0A496C6C6567616C20737461636B2074797065210A0051FCD4 +S3210000EAD8416363657373204572726F723A20005141646472657373204572726F77 +S3210000EAF4723A2000496C6C6567616C20696E737472756374696F6E20617420255E +S3210000EB10233038580A0051FC427265616B706F696E7420656E636F756E746572A7 +S3210000EB2C65642061742025233038580A0051FC5150726976696C65676520766993 +S3210000EB486F6C6174696F6E0A0051FC51556E696D706C656D656E74656420412D28 +S3210000EB644C696E6520496E737472756374696F6E0A0051FC556E696D706C656DA7 +S3210000EB80656E74656420462D4C696E6520496E737472756374696F6E0A0051FC2F +S3210000EB9C446562756720496E746572727570740A0051FC51466F726D617420450D +S3210000EBB872726F720A0051FC556E697469616C697A656420496E74657272757024 +S3210000EBD4740A005153707572696F757320496E746572727570740A004175746F56 +S3210000EBF0766563746F7220696E74657272757074206C6576656C2025640A005127 +S3210000EC0C54524150202325640A0051FC52657365727665643A202325640A0051EB +S3210000EC284E560000206E0008226E000C4A89660820390002B86C600622A8000400 +S3210000EC4420104E5E4E7551FC4E560000222E00087010B0AE000C670A7020B0AE7D +S3210000EC60000C6708600C70FEC081600870FCC081600220014E5E4E754E56000051 +S3210000EC7C2F02222E0008206E000CB1FC00000008671070102408B082670E702044 +S3210000EC98B082670E601220417190600E204171D060082041201060027000242EB2 +S3210000ECB4FFFC4E5E4E7551FC4E5600002F0A4AAE000845F90002B83466182F2AA7 +S3210000ECD0008C4EB900000A5C4A806710202A008C23C00002B3EC08EA0007009005 +S3210000ECEC2F0A4EB90000EEAC246EFFFC4E5E4E754E5600007001C0AE000808405D +S3210000ED0800004E5E4E7551FC4E5600002F02206E000872107000141067380C02FF +S3210000ED24002E662A733008017042B0816714704CB08167127062B0816708706C51 +S3210000ED40B08167066008720860107220600C7210600852801430080066C820016C +S3210000ED5C242EFFFC4E5E4E754E56000020390002B8C04E5E4E7551FC4E56000002 +S3210000ED78202E000823C00002B8C04E5E4E7551FC4E5600002F2E00084EBAF41EE7 +S3210000ED9472FFB28067262200E581928041FAF44A701041F01C00B0A80008226863 +S3210000EDB00004660632AE000E601622AE000C60102F2E00084879000040244EB990 +S3210000EDCC000047084E5E4E754E56000042B90002B3EC42B90002B51842B9000260 +S3210000EDE8B51C303C200033C00002B8C44E5E4E754E56FFF048D7003C222E000886 +S3210000EE042A2E000C2601E183243C100000002042D1FC0000860870302801E184A2 +S3210000EE201180380070201180380070102242D3FC00008600118038007013138096 +S3210000EE3C48007007138048002242D3FC000086042001ED80183C00DD13840C00FB +S3210000EE582242D3FC000086142001ED8079FCFF00EB8542310C00203C07DE290070 +S3210000EE744C4508002242D3FC000086187BC0C885E0842001ED80ED8113840C0087 +S3210000EE902242D3FC0000861C700513851C00118038004CEE003CFFF04E5E4E75C5 +S3210000EEAC206F00042C28003C2E06028700000003672E0C8700000001671C0C8722 +S3210000EEC800000002670A57862E3C70000000601A55862E3C600000006010538696 +S3210000EEE42E3C5000000060062E3C400000002C462D28008C3E2800902D074E7106 +S3210000EF002E4EF228D0FF0040F22890000080F22888000084F228840000884CD0B8 +S3210000EF1C7FFF4E714E7346FC270023CF00045F902E7C00045F902F0841F9000277 +S3210000EF38B83448D0FFFFF228F0FF0040F228B0000080F228A8000084F228A4001E +S3210000EF540088215F002022572149003C21690004008C3169000200904EB9000007 +S3210000EF70F2182F094EB90000E6AC4FEF00044A80661C41F90002B8342E68003C1C +S3210000EF8C222800042268002420280000206800204E7346FC27004EF900003D0CBD +S3210000EFA846FC27002F0841F90002B8342140000021410004214200082143000CDD +S3210000EFC42144001021450014214600182147001C21490024214A0028214B002C80 +S3210000EFE0214C0030214D0034214E0038225F21490020226F00042149003C216959 +S3210000EFFC0004008C3169000200902E7C00045F904EB90000F2184EF900003D0CF9 +S3210000F0184E56FFF848D700C040C72007028000000700E0882C2E00080286000053 +S3210000F0340007E18E02870000F8FF8E8646C74CD700C04FEF00084E5E4E754E5667 +S3210000F050FFF048D70303302E0004E4880280000000FF2F004EB9000039784FEF16 +S3210000F06C00040C8000000001670A4CD703034E5E4EFAFEA44CD703034E5E4E732B +S3210000F088202F000446C04E75202F00044E7B00024E714E75202F00044E7B00038B +S3210000F0A44E714E75202F00044E7B00044E714E75202F00044E7B00054E714E7583 +S3210000F0C0202F00044E7B00064E714E75202F00044E7B00074E714E75202F000492 +S3210000F0DC4E7B00084E714E75202F00044E7B08004E714E75202F00044E7B0801F4 +S3210000F0F84E714E75202F00044E7B08044E714E75202F00044E7B08054E714E751F +S3210000F114202F00044E7B08064E714E75202F00044E7B08074E714E75202F00042D +S3210000F1304E7B08084E714E75202F00044E7B08094E714E75202F00044E7B080A85 +S3210000F14C4E714E75202F00044E7B080B4E714E75202F00044E7B080F4E714E75B9 +S3210000F168202F00044E7B0C004E714E75202F00044E7B0C014E714E75202F0004DD +S3210000F1844E7B0C044E714E75202F00044E7B0C054E714E75202F00044E7B0C0C2B +S3210000F1A04E714E75202F00044E7B0C0E4E714E75202F00044E7B0C0F4E714E755A +S3210000F1BC203C100000004E7B0C0F203C200000000680000000214E7B0C04203C89 +S3210000F1D8200010000680000000214E7B0C05203C200010000680000010002E40D4 +S3210000F1F4203C010C01004E7B00024EB900025F302E7C00045F904EB900003D2C1F +S3210000F21060FE4E714E714AC84E71700072002040F4E8D1FC0000001052810C81D4 +S3210000F22C0000020066EE7200528020400C800000000466E04E75AF674EB9000010 +S3210000F248F0184FEF0004220061C642804E7B00044E7B00054E7B00064E7B000715 +S3210000F264203C010001004E7B00022F014EB90000F0184FEF00044E754E56000077 +S3210000F2802F032F02242E000822020481000000407041B081633E204241E8FFBFFA +S3210000F29CB1FC00000006622070409480203C0000F2E07601E5A313C310000F0C29 +S3210000F2B82F012F004EB9000047086010203C0000F2FC2F022F004EB9000047080F +S3210000F2D44CEE000CFFF84E5E4E7551FC0A4564676520506F727420496E746572B9 +S3210000F2F072757074202325640A0051FC0A5573657220446566696E6564205665BB +S3210000F30C63746F72202325640A0051FC4E56FFCC48D71C3C262E000C47F900007E +S3210000F328470842B90002B3F0222E000842B90002B3F4538166582F3C10000000CB +S3210000F344487A016E4E937400508F60162602701FE0A3AF41C283D2820281FFFF88 +S3210000F360FFF8B4816608487A01704E93588F2002D08041FA01682F300C00487AB3 +S3210000F37C02104E9352827016B082508F6EC6487A02084E93588F6000011620436F +S3210000F3987400222800042441602241EEFFE8119A2800101252824A00661249C000 +S3210000F3B441EEFFE82440423028004A806616601E10120C00002E66D641EEFFE8B1 +S3210000F3D0423028004A8A670A10120C00002E6602528A242E0008578266444A8AEB +S3210000F3EC660E2F01487A01A64E93508F600000B048780010486EFFFC20432F28E7 +S3210000F40800084EB900000B8C28004AAEFFFC4FEF000C661420432F2800084879DA +S3210000F42400003FB44E93508F607C780074002002D08041FA00A449F00C00486EFF +S3210000F440FFE82A0C2F144EB900004F904A80508F6642222E0008578166122F0438 +S3210000F45C42A72F0A206C00044E904FEF000C603E4A8A66122045A3790002B3F0A4 +S3210000F4782F10487A013C4E93508F42A7A3672F0A206C00044E904FEF000C60161A +S3210000F49452827016B0826E9620432F280004487A01204E93508F4CEE1C3CFFCC08 +S3210000F4B04E5E4E75496E7465726E616C204D6F64756C657320284D424152203DCE +S3210000F4CC202523303858293A000000000A0051FC0000F5E4000224940000F5E8CC +S3210000F4E800021EB00000F5EC00021BAC0000F6100001FDD40000F6040001FB7446 +S3210000F5040000F6180001E28C0000F6200001E06C0000F6280001D9CC0000F6301B +S3210000F5200001D6680000F5F00001C4E00000F6380001C4000000F6400001B5D44D +S3210000F53C0000F6480001A7A80000F5F40001A4A40000F65000019BE00000F5F83E +S3210000F5580001994C0000F5FC000188840000F6000001361C0000F65800012644AB +S3210000F5740000F6600001166C0000F668000106940000F6700000F6BC252D38738E +S3210000F590200000000A0A00514572726F723A2020496E76616C69642052656769E2 +S3210000F5AC737465723A202025730A00514D6F64756C653A2025730A004572726F18 +S3210000F5C8723A20496E76616C6964204D6F64756C653A2025730A005100000001BA +S3210000F5E45349550047505400534C54005043490043544D004932430053454300DD +S3210000F6005553420045504F52540000006151FC51494E54430051FC514750494F7A +S3210000F61C0051FC515352414D0051FC51464243530051FC51534452414D43005196 +S3210000F6385043494152420051464543300051FC51464543310051FC514453504945 +S3210000F6540051FC51505343300051FC51505343310051FC51505343320051FC51D7 +S3210000F670505343330051FC51436F6C6446697265204D4346353437580051FC512D +S3210000F68C25313573203A20253032580A0051FC5125313573203A20253034580AFA +S3210000F6A80051FC5125313573203A20253038580A0051FC514E56FFE048D71C7C63 +S3210000F6C4242E0008282E000C262E001045F90002B3F447EA000441EAFFFC49F980 +S3210000F6E000004F902A084A8467462C3C000105802F022F064E944A8067062045AA +S3210000F6FC4A90674E41F910000000D1FC00008900719026802F002F06487AFF767B +S3210000F7184EB9000047082F0A4EB900003E0020454A9067000E48601E2F02487A8E +S3210000F7340E4C4E944A80665841F910000000D1FC00008900108360000E282C3CBE +S3210000F750000105842F022F064E944A80670620454A90674E41F910000000D1FC83 +S3210000F76C0000890471D026802F002F06487AFF224EB9000047082F0A4EB900002A +S3210000F7883E0020454A9067000DE4601E2F02487A0DEC4E944A80665C41F9100068 +S3210000F7A40000D1FC00008904308360000DC44A8467462C3C000105882F022F062E +S3210000F7C04E944A80670620454A90674E41F910000000D1FC0000890471902680CF +S3210000F7DC2F002F06487AFEAA4EB9000047082F0A4EB900003E0020454A906700C3 +S3210000F7F80D7C601E2F02487A0D884E944A80665841F910000000D1FC0000890452 +S3210000F814108360000D5C2C3C000105902F022F064E944A80670620454A90674E05 +S3210000F83041F910000000D1FC00008908719026802F002F06487AFE464EB90000F6 +S3210000F84C47082F0A4EB900003E0020454A9067000D18601E2F02487A0D2C4E9476 +S3210000F8684A80665A41F910000000D1FC00008908108360000CF84A8467442C3C74 +S3210000F884000105942F022F064E944A80670620454A90673E41F910000000D1FC4E +S3210000F8A00000890C26902F132F06487AFE004EB9000047082F0A4EB900003E00F0 +S3210000F8BC20454A9067000CB260102F02487A0CCA4E944A8067544A8467442C3C45 +S3210000F8D8000105982F022F064E944A80670620454A90674C41F910000000D1FCE8 +S3210000F8F40000890C26902F132F06487AFDAC4EB9000047082F0A4EB900003E00F1 +S3210000F91020454A9067000C5E601E2F02487A0C7A4E944A80665C41F91000000016 +S3210000F92CD1FC0000890C208360000C3E4A8467462C3C0001059C2F022F064E943D +S3210000F9484A80670620454A90673E41F910000000D1FC00008910719026802F00FC +S3210000F9642F06487AFD244EB9000047082F0A4EB900003E0020454A9067000BF6EE +S3210000F980600E2F02487A0C164E944A80664860522C3C000105A42F022F064E947C +S3210000F99C4A80670620454A90674E41F910000000D1FC00008910719026802F0098 +S3210000F9B82F06487AFCD04EB9000047082F0A4EB900003E0020454A9067000BA243 +S3210000F9D4601E2F02487A0BCA4E944A80665C41F910000000D1FC0000891010831A +S3210000F9F060000B824A8467462C3C000105AC2F022F064E944A80670620454A90B5 +S3210000FA0C673E41F910000000D1FC0000891471D026802F002F06487AFC784EB9F7 +S3210000FA28000047082F0A4EB900003E0020454A9067000B3A600E2F02487A0B6A2E +S3210000FA444E944A80664860522C3C000105B42F022F064E944A80670620454A90B4 +S3210000FA60674E41F910000000D1FC0000891471D026802F002F06487AFC244EB9E7 +S3210000FA7C000047082F0A4EB900003E0020454A9067000AE6601E2F02487A0B1E6B +S3210000FA984E944A80665C41F910000000D1FC00008914308360000AC64A846746CC +S3210000FAB42C3C000105BC2F022F064E944A80670620454A90675241F91000000045 +S3210000FAD0D1FC00008918719026802F002F06487AFBAC4EB9000047082F0A4EB99C +S3210000FAEC00003E0020454A9067000A7E60222F02487A0ABE4E944A80661241F9F1 +S3210000FB0810000000D1FC00008918108360000A5E4A8467462C3C000105C42F0224 +S3210000FB242F064E944A80670620454A90674E41F910000000D1FC0000891C7190C0 +S3210000FB4026802F002F06487AFB444EB9000047082F0A4EB900003E0020454A9085 +S3210000FB5C67000A16601E2F02487A0A5E4E944A80665C41F910000000D1FC0000A2 +S3210000FB78891C1083600009F64A8467462C3C000105CC2F022F064E944A806706A0 +S3210000FB9420454A90674E41F910000000D1FC00008934719026802F002F06487ABA +S3210000FBB0FADC4EB9000047082F0A4EB900003E0020454A90670009AE601E2F027D +S3210000FBCC487A09FE4E944A80665841F910000000D1FC0000893410836000098E86 +S3210000FBE82C3C000105D02F022F064E944A80670620454A90674E41F91000000000 +S3210000FC04D1FC00008938719026802F002F06487AFA784EB9000047082F0A4EB97B +S3210000FC2000003E0020454A906700094A601E2F02487A099E4E944A80665C41F9CB +S3210000FC3C10000000D1FC0000893810836000092A4A8467462C3C000105D82F02F0 +S3210000FC582F064E944A80670620454A90674E41F910000000D1FC0000893C71906B +S3210000FC7426802F002F06487AFA104EB9000047082F0A4EB900003E0020454A9085 +S3210000FC90670008E2601E2F02487A093E4E944A80665841F910000000D1FC0000C8 +S3210000FCAC893C1083600008C22C3C000105E42F022F064E944A80670620454A90A4 +S3210000FCC8674E41F910000000D1FC00008940719026802F002F06487AF9AC4EB90C +S3210000FCE4000047082F0A4EB900003E0020454A906700087E601E2F02487A08E6A6 +S3210000FD004E944A80665C41F910000000D1FC0000894010836000085E4A846746BF +S3210000FD1C2C3C000105EC2F022F064E944A80670620454A90675241F910000000AA +S3210000FD38D1FC00008944719026802F002F06487AF9444EB9000047082F0A4EB96F +S3210000FD5400003E0020454A906700081660222F02487A08864E944A80661241F92A +S3210000FD7010000000D1FC000089441083600007F64A8467462C3C000105F42F02C9 +S3210000FD8C2F064E944A80670620454A90674E41F910000000D1FC0000894871902A +S3210000FDA826802F002F06487AF8DC4EB9000047082F0A4EB900003E0020454A9086 +S3210000FDC4670007AE601E2F02487A08264E944A80665C41F910000000D1FC0000DD +S3210000FDE0894810836000078E4A8467462C3C000105FC2F022F064E944A80670644 +S3210000FDFC20454A90674E41F910000000D1FC0000894C719026802F002F06487A38 +S3210000FE18F8744EB9000047082F0A4EB900003E0020454A9067000746601E2F02E6 +S3210000FE34487A07C64E944A80665841F910000000D1FC0000894C108360000726A7 +S3210000FE502C3C000106042F022F064E944A80670620454A90674E41F91000000060 +S3210000FE6CD1FC00008950719026802F002F06487AF8104EB9000047082F0A4EB963 +S3210000FE8800003E0020454A90670006E2601E2F02487A076A4E944A80665C41F902 +S3210000FEA410000000D1FC000089501083600006C24A8467462C3C0001060C2F02A4 +S3210000FEC02F064E944A80670620454A90674E41F910000000D1FC000089547190E9 +S3210000FEDC26802F002F06487AF7A84EB9000047082F0A4EB900003E0020454A9086 +S3210000FEF86700067A601E2F02487A070A4E944A80665841F910000000D1FC0000FE +S3210000FF14895410836000065A2C3C000106142F022F064E944A80670620454A905A +S3210000FF30674E41F910000000D1FC0000895871D026802F002F06487AF7544EB9A3 +S3210000FF4C000047082F0A4EB900003E0020454A9067000616601E2F02487A06AEDF +S3210000FF684E944A80665C41F910000000D1FC000089583083600005F64A84674688 +S3210000FF842C3C0001061C2F022F064E944A80670620454A90675241F9100000000F +S3210000FFA0D1FC0000895C71D026802F002F06487AF6EC4EB9000047082F0A4EB908 +S3210000FFBC00003E0020454A90670005AE60222F02487A064E4E944A80661241F965 +S3210000FFD810000000D1FC0000895C30836000058E4A8467462C3C000106242F0260 +S3210000FFF42F064E944A80670620454A90674E41F910000000D1FC0000896471D064 +S3210001001026802F002F06487AF6844EB9000047082F0A4EB900003E0020454A9074 +S3210001002C67000546601E2F02487A05EE4E944A80665C41F910000000D1FC000016 +S3210001004889643083600005264A8467462C3C0001062C2F022F064E944A806706D5 +S3210001006420454A90674E41F910000000D1FC0000898471D026802F002F06487A54 +S32100010080F61C4EB9000047082F0A4EB900003E0020454A90670004DE601E2F0240 +S3210001009C487A058E4E944A80665641F910000000D1FC000089843083600004BE8B +S321000100B82C3C000106342F022F064E944A80670620454A90674C41F910000000C7 +S321000100D4D1FC0000896826902F132F06487AF5CA4EB9000047082F0A4EB9000007 +S321000100F03E0020454A906700047C601E2F02487A05344E944A80665A41F9100029 +S3210001010C0000D1FC0000896820836000045C4A8467442C3C0001063C2F022F0625 +S321000101284E944A80670620454A90674C41F910000000D1FC0000898826902F1389 +S321000101442F06487AF5644EB9000047082F0A4EB900003E0020454A9067000416B4 +S32100010160601E2F02487A04D64E944A80665841F910000000D1FC000089882083FC +S3210001017C600003F62C3C000106442F022F064E944A80670620454A90674E41F9A7 +S3210001019810000000D1FC0000896E71D026802F002F06487AF4F04EB90000470829 +S321000101B42F0A4EB900003E0020454A90670003B2601E2F02487A047A4E944A80B4 +S321000101D0665C41F910000000D1FC0000896E3083600003924A8467462C3C0001B0 +S321000101EC064C2F022F064E944A80670620454A90675241F910000000D1FC000010 +S32100010208898E71D026802F002F06487AF4884EB9000047082F0A4EB900003E005F +S3210001022420454A906700034A60222F02487A041A4E944A80661241F910000000C3 +S32100010240D1FC0000898E30836000032A4A8467462C3C000106542F022F064E94F1 +S3210001025C4A80670620454A90674E41F910000000D1FC0000897271D026802F002C +S321000102782F06487AF4204EB9000047082F0A4EB900003E0020454A90670002E2FA +S32100010294601E2F02487A03BA4E944A80665C41F910000000D1FC000089723083E6 +S321000102B0600002C24A8467462C3C0001065C2F022F064E944A80670620454A9003 +S321000102CC674E41F910000000D1FC0000899271D026802F002F06487AF3B84EB969 +S321000102E8000047082F0A4EB900003E0020454A906700027A601E2F02487A035A36 +S321000103044E944A80665841F910000000D1FC0000899230836000025A2C3C000162 +S3210001032006642F022F064E944A80670620454A90674E41F910000000D1FC0000C6 +S3210001033C897671D026802F002F06487AF3544EB9000047082F0A4EB900003E0077 +S3210001035820454A9067000216601E2F02487A02FE4E944A80665C41F9100000009B +S32100010374D1FC000089763083600001F64A8467462C3C0001066C2F022F064E94F2 +S321000103904A80670620454A90674E41F910000000D1FC0000899671D026802F00D3 +S321000103AC2F06487AF2EC4EB9000047082F0A4EB900003E0020454A90670001AE30 +S321000103C8601E2F02487A029E4E944A80665841F910000000D1FC000089963083AE +S321000103E46000018E2C3C000106742F022F064E944A80670620454A90674E41F977 +S3210001040010000000D1FC0000897A71D026802F002F06487AF2884EB9000047081C +S3210001041C2F0A4EB900003E0020454A906700014A601E2F02487A02424E944A80ED +S32100010438665C41F910000000D1FC0000897A30836000012A4A8467462C3C0001A3 +S32100010454067C2F022F064E944A80670620454A90675241F910000000D1FC000075 +S32100010470899A71D026802F002F06487AF2204EB9000047082F0A4EB900003E0053 +S3210001048C20454A90670000E260222F02487A01E24E944A80661241F910000000FF +S321000104A8D1FC0000899A3083600000C24A8467442C3C000106842F022F064E94B8 +S321000104C44A80670620454A90674A41F910000000D1FC0000897E71D026802F00BA +S321000104E02F06487AF1B84EB9000047082F0A4EB900003E0020454A90677A601CE9 +S321000104FC2F02487A01844E944A80665241F910000000D1FC0000897E3083605C74 +S321000105184A84673E263C0001068C2F022F034E944A80670620454A90674241F9BA +S3210001053410000000D1FC0000899E71D026802F002F03487AF1544EB900004708FB +S321000105502F0A4EB900003E00601A2F02487A012E4E944A80660E41F91000000004 +S3210001056CD1FC0000899E30834CEE1C7CFFE04E5E4E7551FC4D52330053523300AE +S32100010588435352330051FC5143523300524233005442330049504352330051FC91 +S321000105A4414352330051FC51495352330051FC51494D52330051FC5143545552D7 +S321000105C0330051FC43544C52330051FC495033004F505345543300514F505245D2 +S321000105DC534554330051FC5153494352330051FC49524352313300514952435279 +S321000105F832330051495253445233005149524D4452330051495246445233005125 +S321000106145246434E543300515446434E5433005152465352330051FC54465352C3 +S32100010630330051FC52464352330051FC54464352330051FC52464152330051FC20 +S3210001064C54464152330051FC52465250330051FC54465250330051FC5246575029 +S32100010668330051FC54465750330051FC524C524650330051544C52465033005118 +S32100010684524C574650330051544C5746503300514E56FFE048D71C7C242E00089F +S321000106A0282E000C262E001045F90002B3F447EA000441EAFFFC49F900004F900E +S321000106BC2A084A8467462C3C000115582F022F064E944A80670620454A90674E25 +S321000106D841F910000000D1FC00008800719026802F002F06487AEF9E4EB90000FF +S321000106F447082F0A4EB900003E0020454A9067000E48601E2F02487A0E4C4E946D +S321000107104A80665841F910000000D1FC00008800108360000E282C3C0001155C9C +S3210001072C2F022F064E944A80670620454A90674E41F910000000D1FC0000880494 +S3210001074871D026802F002F06487AEF4A4EB9000047082F0A4EB900003E0020450F +S321000107644A9067000DE4601E2F02487A0DEC4E944A80665C41F910000000D1FC51 +S3210001078000008804308360000DC44A8467462C3C000115602F022F064E944A807B +S3210001079C670620454A90674E41F910000000D1FC00008804719026802F002F062B +S321000107B8487AEED24EB9000047082F0A4EB900003E0020454A9067000D7C601E1B +S321000107D42F02487A0D884E944A80665841F910000000D1FC00008804108360007A +S321000107F00D5C2C3C000115682F022F064E944A80670620454A90674E41F91000DA +S3210001080C0000D1FC00008808719026802F002F06487AEE6E4EB9000047082F0AB4 +S321000108284EB900003E0020454A9067000D18601E2F02487A0D2C4E944A80665A87 +S3210001084441F910000000D1FC00008808108360000CF84A8467442C3C0001156C90 +S321000108602F022F064E944A80670620454A90673E41F910000000D1FC0000880C67 +S3210001087C26902F132F06487AEE284EB9000047082F0A4EB900003E0020454A9041 +S3210001089867000CB260102F02487A0CCA4E944A8067544A8467442C3C0001157011 +S321000108B42F022F064E944A80670620454A90674C41F910000000D1FC0000880C05 +S321000108D026902F132F06487AEDD44EB9000047082F0A4EB900003E0020454A9042 +S321000108EC67000C5E601E2F02487A0C7A4E944A80665C41F910000000D1FC00009C +S32100010908880C208360000C3E4A8467462C3C000115742F022F064E944A806706FF +S3210001092420454A90673E41F910000000D1FC00008810719026802F002F06487A50 +S32100010940ED4C4EB9000047082F0A4EB900003E0020454A9067000BF6600E2F0241 +S3210001095C487A0C164E944A80664860522C3C0001157C2F022F064E944A8067060F +S3210001097820454A90674E41F910000000D1FC00008810719026802F002F06487AEC +S32100010994ECF84EB9000047082F0A4EB900003E0020454A9067000BA2601E2F0286 +S321000109B0487A0BCA4E944A80665C41F910000000D1FC00008810108360000B82F0 +S321000109CC4A8467462C3C000115842F022F064E944A80670620454A90673E41F9EE +S321000109E810000000D1FC0000881471D026802F002F06487AECA04EB90000470884 +S32100010A042F0A4EB900003E0020454A9067000B3A600E2F02487A0B6A4E944A80E4 +S32100010A20664860522C3C0001158C2F022F064E944A80670620454A90674E41F99C +S32100010A3C10000000D1FC0000881471D026802F002F06487AEC4C4EB90000470883 +S32100010A582F0A4EB900003E0020454A9067000AE6601E2F02487A0B1E4E944A8021 +S32100010A74665C41F910000000D1FC00008814308360000AC64A8467462C3C000123 +S32100010A9015942F022F064E944A80670620454A90675241F910000000D1FC00000C +S32100010AAC8818719026802F002F06487AEBD44EB9000047082F0A4EB900003E0027 +S32100010AC820454A9067000A7E60222F02487A0ABE4E944A80661241F91000000032 +S32100010AE4D1FC00008818108360000A5E4A8467462C3C0001159C2F022F064E944A +S32100010B004A80670620454A90674E41F910000000D1FC0000881C719026802F0016 +S32100010B1C2F06487AEB6C4EB9000047082F0A4EB900003E0020454A9067000A16CE +S32100010B38601E2F02487A0A5E4E944A80665C41F910000000D1FC0000881C108305 +S32100010B54600009F64A8467462C3C000115A42F022F064E944A80670620454A90C4 +S32100010B70674E41F910000000D1FC00008834719026802F002F06487AEB044EB917 +S32100010B8C000047082F0A4EB900003E0020454A90670009AE601E2F02487A09FEA4 +S32100010BA84E944A80665841F910000000D1FC0000883410836000098E2C3C0001FA +S32100010BC415A82F022F064E944A80670620454A90674E41F910000000D1FC0000C7 +S32100010BE08838719026802F002F06487AEAA04EB9000047082F0A4EB900003E0007 +S32100010BFC20454A906700094A601E2F02487A099E4E944A80665C41F9100000000D +S32100010C18D1FC0000883810836000092A4A8467462C3C000115B02F022F064E9415 +S32100010C344A80670620454A90674E41F910000000D1FC0000883C719026802F00C1 +S32100010C502F06487AEA384EB9000047082F0A4EB900003E0020454A90670008E204 +S32100010C6C601E2F02487A093E4E944A80665841F910000000D1FC0000883C1083D5 +S32100010C88600008C22C3C000115BC2F022F064E944A80670620454A90674E41F938 +S32100010CA410000000D1FC00008840719026802F002F06487AE9D44EB900004708A8 +S32100010CC02F0A4EB900003E0020454A906700087E601E2F02487A08E64E944A805C +S32100010CDC665C41F910000000D1FC0000884010836000085E4A8467462C3C000117 +S32100010CF815C42F022F064E944A80670620454A90675241F910000000D1FC000072 +S32100010D148844719026802F002F06487AE96C4EB9000047082F0A4EB900003E00FA +S32100010D3020454A906700081660222F02487A08864E944A80661241F9100000006B +S32100010D4CD1FC000088441083600007F64A8467462C3C000115CC2F022F064E94EE +S32100010D684A80670620454A90674E41F910000000D1FC00008848719026802F0080 +S32100010D842F06487AE9044EB9000047082F0A4EB900003E0020454A90670007AE39 +S32100010DA0601E2F02487A08264E944A80665C41F910000000D1FC000088481083A9 +S32100010DBC6000078E4A8467462C3C000115D42F022F064E944A80670620454A9094 +S32100010DD8674E41F910000000D1FC0000884C719026802F002F06487AE89C4EB900 +S32100010DF4000047082F0A4EB900003E0020454A9067000746601E2F02487A07C6DE +S32100010E104E944A80665841F910000000D1FC0000884C1083600007262C3C0001E1 +S32100010E2C15DC2F022F064E944A80670620454A90674E41F910000000D1FC000028 +S32100010E488850719026802F002F06487AE8384EB9000047082F0A4EB900003E00EE +S32100010E6420454A90670006E2601E2F02487A076A4E944A80665C41F91000000043 +S32100010E80D1FC000088501083600006C24A8467462C3C000115E42F022F064E94CA +S32100010E9C4A80670620454A90674E41F910000000D1FC00008854719026802F003F +S32100010EB82F06487AE7D04EB9000047082F0A4EB900003E0020454A906700067A6F +S32100010ED4601E2F02487A070A4E944A80665841F910000000D1FC00008854108389 +S32100010EF06000065A2C3C000115EC2F022F064E944A80670620454A90674E41F908 +S32100010F0C10000000D1FC0000885871D026802F002F06487AE77C4EB9000047083F +S32100010F282F0A4EB900003E0020454A9067000616601E2F02487A06AE4E944A8095 +S32100010F44665C41F910000000D1FC000088583083600005F64A8467462C3C0001DF +S32100010F6015F42F022F064E944A80670620454A90675241F910000000D1FC0000D7 +S32100010F7C885C71D026802F002F06487AE7144EB9000047082F0A4EB900003E0092 +S32100010F9820454A90670005AE60222F02487A064E4E944A80661241F910000000A6 +S32100010FB4D1FC0000885C30836000058E4A8467462C3C000115FC2F022F064E9486 +S32100010FD04A80670620454A90674E41F910000000D1FC0000886471D026802F00BA +S32100010FEC2F06487AE6AC4EB9000047082F0A4EB900003E0020454A906700054694 +S32100011008601E2F02487A05EE4E944A80665C41F910000000D1FC0000886430833D +S32100011024600005264A8467462C3C000116042F022F064E944A80670620454A9062 +S32100011040674E41F910000000D1FC0000888471D026802F002F06487AE6444EB977 +S3210001105C000047082F0A4EB900003E0020454A90670004DE601E2F02487A058E18 +S321000110784E944A80665641F910000000D1FC000088843083600004BE2C3C00018C +S32100011094160C2F022F064E944A80670620454A90674C41F910000000D1FC00008F +S321000110B0886826902F132F06487AE5F24EB9000047082F0A4EB900003E0020452E +S321000110CC4A906700047C601E2F02487A05344E944A80665A41F910000000D1FC13 +S321000110E80000886820836000045C4A8467442C3C000116142F022F064E944A8074 +S32100011104670620454A90674C41F910000000D1FC0000888826902F132F06487A53 +S32100011120E58C4EB9000047082F0A4EB900003E0020454A9067000416601E2F02F8 +S3210001113C487A04D64E944A80665841F910000000D1FC000088882083600003F667 +S321000111582C3C0001161C2F022F064E944A80670620454A90674E41F9100000001C +S32100011174D1FC0000886E71D026802F002F06487AE5184EB9000047082F0A4EB9F5 +S3210001119000003E0020454A90670003B2601E2F02487A047A4E944A80665C41F90C +S321000111AC10000000D1FC0000886E3083600003924A8467462C3C000116242F0256 +S321000111C82F064E944A80670620454A90675241F910000000D1FC0000888E71D050 +S321000111E426802F002F06487AE4B04EB9000047082F0A4EB900003E0020454A9075 +S321000112006700034A60222F02487A041A4E944A80661241F910000000D1FC000049 +S3210001121C888E30836000032A4A8467462C3C0001162C2F022F064E944A806706B4 +S3210001123820454A90674E41F910000000D1FC0000887271D026802F002F06487A81 +S32100011254E4484EB9000047082F0A4EB900003E0020454A90670002E2601E2F023E +S32100011270487A03BA4E944A80665C41F910000000D1FC000088723083600002C286 +S3210001128C4A8467462C3C000116342F022F064E944A80670620454A90674E41F964 +S321000112A810000000D1FC0000889271D026802F002F06487AE3E04EB90000470806 +S321000112C42F0A4EB900003E0020454A906700027A601E2F02487A035A4E944A80ED +S321000112E0665841F910000000D1FC0000889230836000025A2C3C0001163C2F02A1 +S321000112FC2F064E944A80670620454A90674E41F910000000D1FC0000887671D037 +S3210001131826802F002F06487AE37C4EB9000047082F0A4EB900003E0020454A9074 +S3210001133467000216601E2F02487A02FE4E944A80665C41F910000000D1FC000021 +S3210001135088763083600001F64A8467462C3C000116442F022F064E944A806706B5 +S3210001136C20454A90674E41F910000000D1FC0000889671D026802F002F06487A28 +S32100011388E3144EB9000047082F0A4EB900003E0020454A90670001AE601E2F0273 +S321000113A4487A029E4E944A80665841F910000000D1FC0000889630836000018E83 +S321000113C02C3C0001164C2F022F064E944A80670620454A90674E41F91000000082 +S321000113DCD1FC0000887A71D026802F002F06487AE2B04EB9000047082F0A4EB9EA +S321000113F800003E0020454A906700014A601E2F02487A02424E944A80665C41F946 +S3210001141410000000D1FC0000887A30836000012A4A8467462C3C000116542F0219 +S321000114302F064E944A80670620454A90675241F910000000D1FC0000889A71D0D9 +S3210001144C26802F002F06487AE2484EB9000047082F0A4EB900003E0020454A9074 +S32100011468670000E260222F02487A01E24E944A80661241F910000000D1FC000085 +S32100011484889A3083600000C24A8467442C3C0001165C2F022F064E944A8067067B +S321000114A020454A90674A41F910000000D1FC0000887E71D026802F002F06487A0F +S321000114BCE1E04EB9000047082F0A4EB900003E0020454A90677A601C2F02487AE9 +S321000114D801844E944A80665241F910000000D1FC0000887E3083605C4A84673E09 +S321000114F4263C000116642F022F034E944A80670620454A90674241F9100000004A +S32100011510D1FC0000889E71D026802F002F03487AE17C4EB9000047082F0A4EB9C8 +S3210001152C00003E00601A2F02487A012E4E944A80660E41F910000000D1FC00008B +S32100011548889E30834CEE1C7CFFE04E5E4E7551FC4D523200535232004353523278 +S321000115640051FC5143523200524232005442320049504352320051FC41435232BC +S321000115800051FC51495352320051FC51494D52320051FC5143545552320051FC77 +S3210001159C43544C52320051FC495032004F505345543200514F505245534554324B +S321000115B80051FC5153494352320051FC49524352313200514952435232320051F9 +S321000115D4495253445232005149524D445232005149524644523200515246434EC9 +S321000115F0543200515446434E5432005152465352320051FC54465352320051FC85 +S3210001160C52464352320051FC54464352320051FC52464152320051FC544641528A +S32100011628320051FC52465250320051FC54465250320051FC52465750320051FCEE +S3210001164454465750320051FC524C524650320051544C524650320051524C574674 +S3210001166050320051544C5746503200514E56FFE048D71C7C242E0008282E000C8E +S3210001167C262E001045F90002B3F447EA000441EAFFFC49F900004F902A084A8484 +S3210001169867462C3C000125302F022F064E944A80670620454A90674E41F9100007 +S321000116B40000D1FC00008700719026802F002F06487ADFC64EB9000047082F0ABE +S321000116D04EB900003E0020454A9067000E48601E2F02487A0E4C4E944A80665881 +S321000116EC41F910000000D1FC00008700108360000E282C3C000125342F022F06EC +S321000117084E944A80670620454A90674E41F910000000D1FC0000870471D0268028 +S321000117242F002F06487ADF724EB9000047082F0A4EB900003E0020454A906700B1 +S321000117400DE4601E2F02487A0DEC4E944A80665C41F910000000D1FC000087041B +S3210001175C308360000DC44A8467462C3C000125382F022F064E944A806706204561 +S321000117784A90674E41F910000000D1FC00008704719026802F002F06487ADEFA78 +S321000117944EB9000047082F0A4EB900003E0020454A9067000D7C601E2F02487ABE +S321000117B00D884E944A80665841F910000000D1FC00008704108360000D5C2C3CB1 +S321000117CC000125402F022F064E944A80670620454A90674E41F910000000D1FC0A +S321000117E800008708719026802F002F06487ADE964EB9000047082F0A4EB9000078 +S321000118043E0020454A9067000D18601E2F02487A0D2C4E944A80665A41F9100058 +S321000118200000D1FC00008708108360000CF84A8467442C3C000125442F022F06A1 +S3210001183C4E944A80670620454A90673E41F910000000D1FC0000870C26902F13EA +S321000118582F06487ADE504EB9000047082F0A4EB900003E0020454A9067000CB210 +S3210001187460102F02487A0CCA4E944A8067544A8467442C3C000125482F022F06FC +S321000118904E944A80670620454A90674C41F910000000D1FC0000870C26902F1388 +S321000118AC2F06487ADDFC4EB9000047082F0A4EB900003E0020454A9067000C5E65 +S321000118C8601E2F02487A0C7A4E944A80665C41F910000000D1FC0000870C20834B +S321000118E460000C3E4A8467462C3C0001254C2F022F064E944A80670620454A9024 +S32100011900673E41F910000000D1FC00008710719026802F002F06487ADD744EB94C +S3210001191C000047082F0A4EB900003E0020454A9067000BF6600E2F02487A0C16B1 +S321000119384E944A80664860522C3C000125542F022F064E944A80670620454A90E0 +S32100011954674E41F910000000D1FC00008710719026802F002F06487ADD204EB93C +S32100011970000047082F0A4EB900003E0020454A9067000BA2601E2F02487A0BCAEE +S3210001198C4E944A80665C41F910000000D1FC00008710108360000B824A84674621 +S321000119A82C3C0001255C2F022F064E944A80670620454A90673E41F91000000085 +S321000119C4D1FC0000871471D026802F002F06487ADCC84EB9000047082F0A4EB951 +S321000119E000003E0020454A9067000B3A600E2F02487A0B6A4E944A8066486052D9 +S321000119FC2C3C000125642F022F064E944A80670620454A90674E41F91000000019 +S32100011A18D1FC0000871471D026802F002F06487ADC744EB9000047082F0A4EB950 +S32100011A3400003E0020454A9067000AE6601E2F02487A0B1E4E944A80665C41F979 +S32100011A5010000000D1FC00008714308360000AC64A8467462C3C0001256C2F0272 +S32100011A6C2F064E944A80670620454A90675241F910000000D1FC0000871871905A +S32100011A8826802F002F06487ADBFC4EB9000047082F0A4EB900003E0020454A9085 +S32100011AA467000A7E60222F02487A0ABE4E944A80661241F910000000D1FC0000B8 +S32100011AC08718108360000A5E4A8467462C3C000125742F022F064E944A8067060D +S32100011ADC20454A90674E41F910000000D1FC0000871C719026802F002F06487A6C +S32100011AF8DB944EB9000047082F0A4EB900003E0020454A9067000A16601E2F0213 +S32100011B14487A0A5E4E944A80665C41F910000000D1FC0000871C1083600009F66A +S32100011B304A8467462C3C0001257C2F022F064E944A80670620454A90674E41F960 +S32100011B4C10000000D1FC00008734719026802F002F06487ADB2C4EB900004708B4 +S32100011B682F0A4EB900003E0020454A90670009AE601E2F02487A09FE4E944A805B +S32100011B84665841F910000000D1FC0000873410836000098E2C3C000125802F02E5 +S32100011BA02F064E944A80670620454A90674E41F910000000D1FC00008738719009 +S32100011BBC26802F002F06487ADAC84EB9000047082F0A4EB900003E0020454A9085 +S32100011BD86700094A601E2F02487A099E4E944A80665C41F910000000D1FC000093 +S32100011BF4873810836000092A4A8467462C3C000125882F022F064E944A806706D9 +S32100011C1020454A90674E41F910000000D1FC0000873C719026802F002F06487A16 +S32100011C2CDA604EB9000047082F0A4EB900003E0020454A90670008E2601E2F0248 +S32100011C48487A093E4E944A80665841F910000000D1FC0000873C1083600008C26F +S32100011C642C3C000125942F022F064E944A80670620454A90674E41F9100000007E +S32100011C80D1FC00008740719026802F002F06487AD9FC4EB9000047082F0A4EB975 +S32100011C9C00003E0020454A906700087E601E2F02487A08E64E944A80665C41F9B4 +S32100011CB810000000D1FC0000874010836000085E4A8467462C3C0001259C2F0236 +S32100011CD42F064E944A80670620454A90675241F910000000D1FC000087447190C4 +S32100011CF026802F002F06487AD9944EB9000047082F0A4EB900003E0020454A9085 +S32100011D0C6700081660222F02487A08864E944A80661241F910000000D1FC0000F1 +S32100011D2887441083600007F64A8467462C3C000125A42F022F064E944A806706B1 +S32100011D4420454A90674E41F910000000D1FC00008748719026802F002F06487AD5 +S32100011D60D92C4EB9000047082F0A4EB900003E0020454A90670007AE601E2F027D +S32100011D7C487A08264E944A80665C41F910000000D1FC0000874810836000078E78 +S32100011D984A8467462C3C000125AC2F022F064E944A80670620454A90674E41F9C6 +S32100011DB410000000D1FC0000874C719026802F002F06487AD8C44EB9000047089D +S32100011DD02F0A4EB900003E0020454A9067000746601E2F02487A07C64E944A8095 +S32100011DEC665841F910000000D1FC0000874C1083600007262C3C000125B42F0299 +S32100011E082F064E944A80670620454A90674E41F910000000D1FC00008750719086 +S32100011E2426802F002F06487AD8604EB9000047082F0A4EB900003E0020454A9084 +S32100011E40670006E2601E2F02487A076A4E944A80665C41F910000000D1FC0000C9 +S32100011E5C87501083600006C24A8467462C3C000125BC2F022F064E944A8067068D +S32100011E7820454A90674E41F910000000D1FC00008754719026802F002F06487A94 +S32100011E94D7F84EB9000047082F0A4EB900003E0020454A906700067A601E2F02B3 +S32100011EB0487A070A4E944A80665841F910000000D1FC0000875410836000065A8D +S32100011ECC2C3C000125C42F022F064E944A80670620454A90674E41F910000000E4 +S32100011EE8D1FC0000875871D026802F002F06487AD7A44EB9000047082F0A4EB90D +S32100011F0400003E0020454A9067000616601E2F02487A06AE4E944A80665C41F9ED +S32100011F2010000000D1FC000087583083600005F64A8467462C3C000125CC2F02CE +S32100011F3C2F064E944A80670620454A90675241F910000000D1FC0000875C71D001 +S32100011F5826802F002F06487AD73C4EB9000047082F0A4EB900003E0020454A9074 +S32100011F74670005AE60222F02487A064E4E944A80661241F910000000D1FC00002C +S32100011F90875C30836000058E4A8467462C3C000125D42F022F064E944A80670649 +S32100011FAC20454A90674E41F910000000D1FC0000876471D026802F002F06487A0F +S32100011FC8D6D44EB9000047082F0A4EB900003E0020454A9067000546601E2F02D8 +S32100011FE4487A05EE4E944A80665C41F910000000D1FC0000876430836000052677 +S321000120004A8467462C3C000125DC2F022F064E944A80670620454A90674E41F92B +S3210001201C10000000D1FC0000878471D026802F002F06487AD66C4EB90000470814 +S321000120382F0A4EB900003E0020454A90670004DE601E2F02487A058E4E944A80CF +S32100012054665641F910000000D1FC000087843083600004BE2C3C000125E42F0213 +S321000120702F064E944A80670620454A90674C41F910000000D1FC00008768269051 +S3210001208C2F132F06487AD61A4EB9000047082F0A4EB900003E0020454A9067008E +S321000120A8047C601E2F02487A05344E944A80665A41F910000000D1FC0000876879 +S321000120C420836000045C4A8467442C3C000125EC2F022F064E944A8067062045BF +S321000120E04A90674C41F910000000D1FC0000878826902F132F06487AD5B44EB9AB +S321000120FC000047082F0A4EB900003E0020454A9067000416601E2F02487A04D6E9 +S321000121184E944A80665841F910000000D1FC000087882083600003F62C3C0001AF +S3210001213425F42F022F064E944A80670620454A90674E41F910000000D1FC0000E5 +S32100012150876E71D026802F002F06487AD5404EB9000047082F0A4EB900003E0081 +S3210001216C20454A90670003B2601E2F02487A047A4E944A80665C41F9100000004E +S32100012188D1FC0000876E3083600003924A8467462C3C000125FC2F022F064E947D +S321000121A44A80670620454A90675241F910000000D1FC0000878E71D026802F00A7 +S321000121C02F06487AD4D84EB9000047082F0A4EB900003E0020454A906700034A92 +S321000121DC60222F02487A041A4E944A80661241F910000000D1FC0000878E30834A +S321000121F86000032A4A8467462C3C000126042F022F064E944A80670620454A906B +S32100012214674E41F910000000D1FC0000877271D026802F002F06487AD4704EB98A +S32100012230000047082F0A4EB900003E0020454A90670002E2601E2F02487A03BA06 +S3210001224C4E944A80665C41F910000000D1FC000087723083600002C24A8467469F +S321000122682C3C0001260C2F022F064E944A80670620454A90674E41F910000000FB +S32100012284D1FC0000879271D026802F002F06487AD4084EB9000047082F0A4EB9D2 +S321000122A000003E0020454A906700027A601E2F02487A035A4E944A80665841F949 +S321000122BC10000000D1FC0000879230836000025A2C3C000126142F022F064E94AF +S321000122D84A80670620454A90674E41F910000000D1FC0000877671D026802F008E +S321000122F42F06487AD3A44EB9000047082F0A4EB900003E0020454A9067000216C7 +S32100012310601E2F02487A02FE4E944A80665C41F910000000D1FC00008776308304 +S3210001232C600001F64A8467462C3C0001261C2F022F064E944A80670620454A9053 +S32100012348674E41F910000000D1FC0000879671D026802F002F06487AD33C4EB966 +S32100012364000047082F0A4EB900003E0020454A90670001AE601E2F02487A029E23 +S321000123804E944A80665841F910000000D1FC0000879630836000018E2C3C000191 +S3210001239C26242F022F064E944A80670620454A90674E41F910000000D1FC00004A +S321000123B8877A71D026802F002F06487AD2D84EB9000047082F0A4EB900003E0076 +S321000123D420454A906700014A601E2F02487A02424E944A80665C41F91000000088 +S321000123F0D1FC0000877A30836000012A4A8467462C3C0001262C2F022F064E9440 +S3210001240C4A80670620454A90675241F910000000D1FC0000879A71D026802F0030 +S321000124282F06487AD2704EB9000047082F0A4EB900003E0020454A90670000E2FC +S3210001244460222F02487A01E24E944A80661241F910000000D1FC0000879A30830E +S32100012460600000C24A8467442C3C000126342F022F064E944A80670620454A903D +S3210001247C674A41F910000000D1FC0000877E71D026802F002F06487AD2084EB982 +S32100012498000047082F0A4EB900003E0020454A90677A601C2F02487A01844E945E +S321000124B44A80665241F910000000D1FC0000877E3083605C4A84673E263C000122 +S321000124D0263C2F022F034E944A80670620454A90674241F910000000D1FC00000C +S321000124EC879E71D026802F002F03487AD1A44EB9000047082F0A4EB900003E0055 +S32100012508601A2F02487A012E4E944A80660E41F910000000D1FC0000879E308305 +S321000125244CEE1C7CFFE04E5E4E7551FC4D52310053523100435352310051FC51CA +S3210001254043523100524231005442310049504352310051FC414352310051FC51D5 +S3210001255C495352310051FC51494D52310051FC5143545552310051FC43544C52F7 +S32100012578310051FC495031004F505345543100514F505245534554310051FC51FA +S3210001259453494352310051FC49524352313100514952435232310051495253447C +S321000125B05231005149524D445231005149524644523100515246434E543100513C +S321000125CC5446434E5431005152465352310051FC54465352310051FC5246435246 +S321000125E8310051FC54464352310051FC52464152310051FC54464152310051FC51 +S3210001260452465250310051FC54465250310051FC52465750310051FC5446575043 +S32100012620310051FC524C524650310051544C524650310051524C574650310051FA +S3210001263C544C5746503100514E56FFE048D71C7C242E0008282E000C262E001012 +S3210001265845F90002B3F447EA000441EAFFFC49F900004F902A084A8467462C3CE7 +S32100012674000135082F022F064E944A80670620454A90674E41F910000000D1FC7B +S3210001269000008600719026802F002F06487ACFEE4EB9000047082F0A4EB9000081 +S321000126AC3E0020454A9067000E48601E2F02487A0E4C4E944A80665841F9100052 +S321000126C80000D1FC00008600108360000E282C3C0001350C2F022F064E944A80B7 +S321000126E4670620454A90674E41F910000000D1FC0000860471D026802F002F0686 +S32100012700487ACF9A4EB9000047082F0A4EB900003E0020454A9067000DE4601EA2 +S3210001271C2F02487A0DEC4E944A80665C41F910000000D1FC00008604308360008C +S321000127380DC44A8467462C3C000135102F022F064E944A80670620454A90674E11 +S3210001275441F910000000D1FC00008604719026802F002F06487ACF224EB90000FC +S3210001277047082F0A4EB900003E0020454A9067000D7C601E2F02487A0D884E9462 +S3210001278C4A80665841F910000000D1FC00008604108360000D5C2C3C00013518EF +S321000127A82F022F064E944A80670620454A90674E41F910000000D1FC00008608F6 +S321000127C4719026802F002F06487ACEBE4EB9000047082F0A4EB900003E00204560 +S321000127E04A9067000D18601E2F02487A0D2C4E944A80665A41F910000000D1FC43 +S321000127FC00008608108360000CF84A8467442C3C0001351C2F022F064E944A80F0 +S32100012818670620454A90673E41F910000000D1FC0000860C26902F132F06487AB4 +S32100012834CE784EB9000047082F0A4EB900003E0020454A9067000CB260102F0262 +S32100012850487A0CCA4E944A8067544A8467442C3C000135202F022F064E944A801D +S3210001286C670620454A90674C41F910000000D1FC0000860C26902F132F06487A52 +S32100012888CE244EB9000047082F0A4EB900003E0020454A9067000C5E601E2F02A8 +S321000128A4487A0C7A4E944A80665C41F910000000D1FC0000860C208360000C3E65 +S321000128C04A8467462C3C000135242F022F064E944A80670620454A90673E41F91B +S321000128DC10000000D1FC00008610719026802F002F06487ACD9C4EB900004708DA +S321000128F82F0A4EB900003E0020454A9067000BF6600E2F02487A0C164E944A8069 +S32100012914664860522C3C0001352C2F022F064E944A80670620454A90674E41F9C9 +S3210001293010000000D1FC00008610719026802F002F06487ACD484EB900004708D9 +S3210001294C2F0A4EB900003E0020454A9067000BA2601E2F02487A0BCA4E944A80A5 +S32100012968665C41F910000000D1FC00008610108360000B824A8467462C3C000179 +S3210001298435342F022F064E944A80670620454A90673E41F910000000D1FC00004D +S321000129A0861471D026802F002F06487ACCF04EB9000047082F0A4EB900003E00DD +S321000129BC20454A9067000B3A600E2F02487A0B6A4E944A80664860522C3C0001C2 +S321000129D8353C2F022F064E944A80670620454A90674E41F910000000D1FC0000E1 +S321000129F4861471D026802F002F06487ACC9C4EB9000047082F0A4EB900003E00DD +S32100012A1020454A9067000AE6601E2F02487A0B1E4E944A80665C41F910000000BB +S32100012A2CD1FC00008614308360000AC64A8467462C3C000135442F022F064E9498 +S32100012A484A80670620454A90675241F910000000D1FC00008618719026802F00B1 +S32100012A642F06487ACC244EB9000047082F0A4EB900003E0020454A9067000A7E66 +S32100012A8060222F02487A0ABE4E944A80661241F910000000D1FC0000861810838A +S32100012A9C60000A5E4A8467462C3C0001354C2F022F064E944A80670620454A902C +S32100012AB8674E41F910000000D1FC0000861C719026802F002F06487ACBBC4EB932 +S32100012AD4000047082F0A4EB900003E0020454A9067000A16601E2F02487A0A5E73 +S32100012AF04E944A80665C41F910000000D1FC0000861C1083600009F64A8467462F +S32100012B0C2C3C000135542F022F064E944A80670620454A90674E41F910000000F7 +S32100012B28D1FC00008634719026802F002F06487ACB544EB9000047082F0A4EB981 +S32100012B4400003E0020454A90670009AE601E2F02487A09FE4E944A80665841F9B7 +S32100012B6010000000D1FC0000863410836000098E2C3C000135582F022F064E94F3 +S32100012B7C4A80670620454A90674E41F910000000D1FC00008638719026802F0060 +S32100012B982F06487ACAF04EB9000047082F0A4EB900003E0020454A906700094A9C +S32100012BB4601E2F02487A099E4E944A80665C41F910000000D1FC00008638108310 +S32100012BD06000092A4A8467462C3C000135602F022F064E944A80670620454A9018 +S32100012BEC674E41F910000000D1FC0000863C719026802F002F06487ACA884EB912 +S32100012C08000047082F0A4EB900003E0020454A90670008E2601E2F02487A093E94 +S32100012C244E944A80665841F910000000D1FC0000863C1083600008C22C3C000124 +S32100012C40356C2F022F064E944A80670620454A90674E41F910000000D1FC000046 +S32100012C5C8640719026802F002F06487ACA244EB9000047082F0A4EB900003E0000 +S32100012C7820454A906700087E601E2F02487A08E64E944A80665C41F910000000F6 +S32100012C94D1FC0000864010836000085E4A8467462C3C000135742F022F064E945C +S32100012CB04A80670620454A90675241F910000000D1FC00008644719026802F001B +S32100012CCC2F06487AC9BC4EB9000047082F0A4EB900003E0020454A9067000816D1 +S32100012CE860222F02487A08864E944A80661241F910000000D1FC0000864410832E +S32100012D04600007F64A8467462C3C0001357C2F022F064E944A80670620454A90FC +S32100012D20674E41F910000000D1FC00008648719026802F002F06487AC9544EB905 +S32100012D3C000047082F0A4EB900003E0020454A90670007AE601E2F02487A0826AD +S32100012D584E944A80665C41F910000000D1FC0000864810836000078E4A84674602 +S32100012D742C3C000135842F022F064E944A80670620454A90674E41F9100000005D +S32100012D90D1FC0000864C719026802F002F06487AC8EC4EB9000047082F0A4EB96A +S32100012DAC00003E0020454A9067000746601E2F02487A07C64E944A80665841F9F1 +S32100012DC810000000D1FC0000864C1083600007262C3C0001358C2F022F064E94A7 +S32100012DE44A80670620454A90674E41F910000000D1FC00008650719026802F00DE +S32100012E002F06487AC8884EB9000047082F0A4EB900003E0020454A90670006E206 +S32100012E1C601E2F02487A076A4E944A80665C41F910000000D1FC000086501083C3 +S32100012E38600006C24A8467462C3C000135942F022F064E944A80670620454A90E4 +S32100012E54674E41F910000000D1FC00008654719026802F002F06487AC8204EB9F9 +S32100012E70000047082F0A4EB900003E0020454A906700067A601E2F02487A070ACA +S32100012E8C4E944A80665841F910000000D1FC0000865410836000065A2C3C00010C +S32100012EA8359C2F022F064E944A80670620454A90674E41F910000000D1FC0000AC +S32100012EC4865871D026802F002F06487AC7CC4EB9000047082F0A4EB900003E0099 +S32100012EE020454A9067000616601E2F02487A06AE4E944A80665C41F91000000030 +S32100012EFCD1FC000086583083600005F64A8467462C3C000135A42F022F064E94F5 +S32100012F184A80670620454A90675241F910000000D1FC0000865C71D026802F0058 +S32100012F342F06487AC7644EB9000047082F0A4EB900003E0020454A90670005AE2B +S32100012F5060222F02487A064E4E944A80661241F910000000D1FC0000865C3083C5 +S32100012F6C6000058E4A8467462C3C000135AC2F022F064E944A80670620454A90CC +S32100012F88674E41F910000000D1FC0000866471D026802F002F06487AC6FC4EB99A +S32100012FA4000047082F0A4EB900003E0020454A9067000546601E2F02487A05EEE8 +S32100012FC04E944A80665C41F910000000D1FC000086643083600005264A846746C6 +S32100012FDC2C3C000135B42F022F064E944A80670620454A90674E41F910000000C3 +S32100012FF8D1FC0000868471D026802F002F06487AC6944EB9000047082F0A4EB9E2 +S3210001301400003E0020454A90670004DE601E2F02487A058E4E944A80665641F92D +S3210001303010000000D1FC000086843083600004BE2C3C000135BC2F022F064E941F +S3210001304C4A80670620454A90674C41F910000000D1FC0000866826902F132F0606 +S32100013068487AC6424EB9000047082F0A4EB900003E0020454A906700047C601E03 +S321000130842F02487A05344E944A80665A41F910000000D1FC000086682083600089 +S321000130A0045C4A8467442C3C000135C42F022F064E944A80670620454A90674C61 +S321000130BC41F910000000D1FC0000868826902F132F06487AC5DC4EB900004708E6 +S321000130D82F0A4EB900003E0020454A9067000416601E2F02487A04D64E944A80A0 +S321000130F4665841F910000000D1FC000086882083600003F62C3C000135CC2F023F +S321000131102F064E944A80670620454A90674E41F910000000D1FC0000866E71D00E +S3210001312C26802F002F06487AC5684EB9000047082F0A4EB900003E0020454A9074 +S32100013148670003B2601E2F02487A047A4E944A80665C41F910000000D1FC0000D4 +S32100013164866E3083600003924A8467462C3C000135D42F022F064E944A80670640 +S3210001318020454A90675241F910000000D1FC0000868E71D026802F002F06487AFC +S3210001319CC5004EB9000047082F0A4EB900003E0020454A906700034A60222F02D1 +S321000131B8487A041A4E944A80661241F910000000D1FC0000868E30836000032A85 +S321000131D44A8467462C3C000135DC2F022F064E944A80670620454A90674E41F936 +S321000131F010000000D1FC0000867271D026802F002F06487AC4984EB90000470828 +S3210001320C2F0A4EB900003E0020454A90670002E2601E2F02487A03BA4E944A80BD +S32100013228665C41F910000000D1FC000086723083600002C24A8467462C3C0001F7 +S3210001324435E42F022F064E944A80670620454A90674E41F910000000D1FC0000C4 +S32100013260869271D026802F002F06487AC4304EB9000047082F0A4EB900003E005E +S3210001327C20454A906700027A601E2F02487A035A4E944A80665841F9100000008B +S32100013298D1FC0000869230836000025A2C3C000135EC2F022F064E944A806706B6 +S321000132B420454A90674E41F910000000D1FC0000867671D026802F002F06487AE3 +S321000132D0C3CC4EB9000047082F0A4EB900003E0020454A9067000216601E2F020B +S321000132EC487A02FE4E944A80665C41F910000000D1FC000086763083600001F672 +S321000133084A8467462C3C000135F42F022F064E944A80670620454A90674E41F9E8 +S3210001332410000000D1FC0000869671D026802F002F06487AC3644EB90000470803 +S321000133402F0A4EB900003E0020454A90670001AE601E2F02487A029E4E944A80DA +S3210001335C665841F910000000D1FC0000869630836000018E2C3C000135FC2F02F0 +S321000133782F064E944A80670620454A90674E41F910000000D1FC0000867A71D098 +S3210001339426802F002F06487AC3004EB9000047082F0A4EB900003E0020454A9074 +S321000133B06700014A601E2F02487A02424E944A80665C41F910000000D1FC00000E +S321000133CC867A30836000012A4A8467462C3C000136042F022F064E944A80670603 +S321000133E820454A90675241F910000000D1FC0000869A71D026802F002F06487A86 +S32100013404C2984EB9000047082F0A4EB900003E0020454A90670000E260222F023C +S32100013420487A01E24E944A80661241F910000000D1FC0000869A3083600000C2B4 +S3210001343C4A8467442C3C0001360C2F022F064E944A80670620454A90674A41F9A0 +S3210001345810000000D1FC0000867E71D026802F002F06487AC2304EB9000047081B +S321000134742F0A4EB900003E0020454A90677A601C2F02487A01844E944A8066523F +S3210001349041F910000000D1FC0000867E3083605C4A84673E263C000136142F023E +S321000134AC2F034E944A80670620454A90674241F910000000D1FC0000869E71D04E +S321000134C826802F002F03487AC1CC4EB9000047082F0A4EB900003E00601A2F020C +S321000134E4487A012E4E944A80660E41F910000000D1FC0000869E30834CEE1C7CF4 +S32100013500FFE04E5E4E7551FC4D52300053523000435352300051FC5143523000EE +S3210001351C524230005442300049504352300051FC414352300051FC514953523095 +S321000135380051FC51494D52300051FC5143545552300051FC43544C52300051FCAF +S32100013554495030004F505345543000514F505245534554300051FC51534943525E +S32100013570300051FC495243523130005149524352323000514952534452300051F1 +S3210001358C49524D445230005149524644523000515246434E543000515446434EFC +S321000135A85430005152465352300051FC54465352300051FC52464352300051FC0B +S321000135C454464352300051FC52464152300051FC54464152300051FC52465250AC +S321000135E0300051FC54465250300051FC52465750300051FC54465750300051FC18 +S321000135FC524C524650300051544C524650300051524C574650300051544C574653 +S32100013618503000514E56FFE048D71C7C242E0008282E000C262E001045F9000224 +S32100013634B3F047EA000849F900004F902A3C100000004A8467402C3C0001811091 +S321000136502F022F064E944A8067044A9267462045D1FC0000B000719026802F0099 +S3210001366C2F06487AC01C4EB900004708486A00044EB900003E004A9267004A7E0C +S32100013688601A2F02487A4A824E944A80664E2045D1FC0000B000108360004A6205 +S321000136A42C3C000181182F022F064E944A8067044A9267462045D1FC0000B00118 +S321000136C0719026802F002F06487ABFC24EB900004708486A00044EB900003E0048 +S321000136DC4A9267004A24601A2F02487A4A304E944A8066522045D1FC0000B001EC +S321000136F8108360004A084A8467402C3C000181202F022F064E944A8067044A9292 +S3210001371467462045D1FC0000B003719026802F002F06487ABF644EB900004708BA +S32100013730486A00044EB900003E004A92670049C6601A2F02487A49DA4E944A80ED +S3210001374C664E2045D1FC0000B0031083600049AA2C3C000181282F022F064E9481 +S321000137684A8067044A9267462045D1FC0000B004719026802F002F06487ABF0A04 +S321000137844EB900004708486A00044EB900003E004A926700496C601A2F02487A6C +S321000137A049884E944A8066522045D1FC0000B0041083600049504A8467402C3C82 +S321000137BC000181302F022F064E944A8067044A92674A2045D1FC0000B005719046 +S321000137D826802F002F06487ABEAC4EB900004708486A00044EB900003E004A926B +S321000137F46700490E601E2F02487A49324E944A80660E2045D1FC0000B00510836E +S32100013810600048F24A8467402C3C000181382F022F064E944A8067044A9267465E +S3210001382C2045D1FC0000B006719026802F002F06487ABE4E4EB900004708486AB0 +S3210001384800044EB900003E004A92670048B0601A2F02487A48DC4E944A806652E4 +S321000138642045D1FC0000B0061083600048944A8467402C3C000181402F022F0685 +S321000138804E944A8067044A9267462045D1FC0000B00E71D026802F002F06487A88 +S3210001389CBE004EB900004708486A00044EB900003E004A9267004852601A2F0272 +S321000138B8487A48864E944A80664E2045D1FC0000B00E3083600048362C3C000113 +S321000138D481482F022F064E944A8067044A9267462045D1FC0000B01071D0268029 +S321000138F02F002F06487ABDA64EB900004708486A00044EB900003E004A92670098 +S3210001390C47F8601A2F02487A48344E944A8066522045D1FC0000B0103083600007 +S3210001392847DC4A8467402C3C000181502F022F064E944A8067044A92674620453F +S32100013944D1FC0000B01471D026802F002F06487ABD484EB900004708486A0004B1 +S321000139604EB900003E004A926700479A601A2F02487A47DE4E944A80664E204584 +S3210001397CD1FC0000B01430836000477E2C3C000181582F022F064E944A80670400 +S321000139984A9267462045D1FC0000B04071D026802F002F06487ABCEE4EB90000A3 +S321000139B44708486A00044EB900003E004A9267004740601A2F02487A478C4E94BA +S321000139D04A8066522045D1FC0000B0403083600047244A8467402C3C00018160F3 +S321000139EC2F022F064E944A8067044A92674A2045D1FC0000B04271D026802F0074 +S32100013A082F06487ABC904EB900004708486A00044EB900003E004A92670046E29C +S32100013A24601E2F02487A47364E944A80660E2045D1FC0000B0423083600046C62E +S32100013A404A8467402C3C000181682F022F064E944A8067044A9267462045D1FC64 +S32100013A5C0000B04471D026802F002F06487ABC324EB900004708486A00044EB945 +S32100013A7800003E004A9267004684601A2F02487A46E04E944A8066522045D1FCB7 +S32100013A940000B0443083600046684A8467402C3C000181702F022F064E944A8079 +S32100013AB067044A9267462045D1FC0000B04671D026802F002F06487ABBD44EB934 +S32100013ACC00004708486A00044EB900003E004A9267004626601A2F02487A468AA1 +S32100013AE84E944A80664E2045D1FC0000B04630836000460A2C3C000181782F023D +S32100013B042F064E944A8067044A9267462045D1FC0000B04871D026802F002F0654 +S32100013B20487ABB7A4EB900004708486A00044EB900003E004A92670045CC601A6C +S32100013B3C2F02487A46384E944A8066522045D1FC0000B0483083600045B04A8491 +S32100013B5867402C3C000181802F022F064E944A8067044A9267462045D1FC000001 +S32100013B74B04A71D026802F002F06487ABB1C4EB900004708486A00044EB900003D +S32100013B903E004A926700456E601A2F02487A45E24E944A80664E2045D1FC0000B8 +S32100013BACB04A3083600045522C3C000181882F022F064E944A8067044A926746DA +S32100013BC82045D1FC0000B04C71D026802F002F06487ABAC24EB900004708486A1B +S32100013BE400044EB900003E004A9267004514601A2F02487A45904E944A80665233 +S32100013C002045D1FC0000B04C3083600044F84A8467402C3C000181902F022F06CF +S32100013C1C4E944A8067044A92674A2045D1FC0000B04E71D026802F002F06487AA4 +S32100013C38BA644EB900004708486A00044EB900003E004A92670044B6601E2F020E +S32100013C54487A453A4E944A80660E2045D1FC0000B04E30836000449A4A84674056 +S32100013C702C3C000181982F022F064E944A8067044A9267462045D1FC0000B05077 +S32100013C8C71D026802F002F06487ABA064EB900004708486A00044EB900003E00F7 +S32100013CA84A9267004458601A2F02487A44E44E944A8066522045D1FC0000B050EF +S32100013CC430836000443C4A8467402C3C000181A02F022F064E944A8067044A92F2 +S32100013CE067462045D1FC0000B05271D026802F002F06487AB9A84EB9000047081C +S32100013CFC486A00044EB900003E004A92670043FA601A2F02487A448E4E944A803F +S32100013D18664E2045D1FC0000B0523083600043DE2C3C000181A82F022F064E9492 +S32100013D344A8067044A9267462045D1FC0000B05471D026802F002F06487AB94E64 +S32100013D504EB900004708486A00044EB900003E004A92670043A0601A2F02487A6C +S32100013D6C443C4E944A8066522045D1FC0000B0543083600043844A8467402C3C63 +S32100013D88000181B02F022F064E944A8067044A9267462045D1FC0000B05671D067 +S32100013DA426802F002F06487AB8F04EB900004708486A00044EB900003E004A925B +S32100013DC067004342601A2F02487A43E64E944A80664E2045D1FC0000B056308313 +S32100013DDC600043262C3C000181B82F022F064E944A8067044A9267462045D1FC21 +S32100013DF80000B05871D026802F002F06487AB8964EB900004708486A00044EB932 +S32100013E1400003E004A92670042E8601A2F02487A43944E944A8066522045D1FC06 +S32100013E300000B0583083600042CC4A8467402C3C000181C02F022F064E944A8015 +S32100013E4C67044A92674A2045D1FC0000B05A71D026802F002F06487AB8384EB91B +S32100013E6800004708486A00044EB900003E004A926700428A601E2F02487A433EEC +S32100013E844E944A80660E2045D1FC0000B05A30836000426E4A8467402C3C00011E +S32100013EA081C82F022F064E944A8067044A9267462045D1FC0000B05C71D026808B +S32100013EBC2F002F06487AB7DA4EB900004708486A00044EB900003E004A92670098 +S32100013ED8422C601A2F02487A42E84E944A8066522045D1FC0000B05C308360000D +S32100013EF442104A8467402C3C000181D02F022F064E944A8067044A9267462045BF +S32100013F10D1FC0000B05E71D026802F002F06487AB77C4EB900004708486A000467 +S32100013F2C4EB900003E004A92670041CE601A2F02487A42924E944A80664E2045D5 +S32100013F48D1FC0000B05E3083600041B22C3C000181D82F022F064E944A80670436 +S32100013F644A9267462045D1FC0000B06071D026802F002F06487AB7224EB9000082 +S32100013F804708486A00044EB900003E004A9267004174601A2F02487A42404E940B +S32100013F9C4A8066522045D1FC0000B0603083600041584A8467402C3C000181E053 +S32100013FB82F022F064E944A8067044A9267462045D1FC0000B06271D026802F0086 +S32100013FD42F06487AB6C44EB900004708486A00044EB900003E004A92670041166E +S32100013FF0601A2F02487A41EA4E944A80664E2045D1FC0000B0623083600040FA25 +S3210001400C2C3C000181E82F022F064E944A8067044A9267462045D1FC0000B06473 +S3210001402871D026802F002F06487AB66A4EB900004708486A00044EB900003E00F7 +S321000140444A92670040BC601A2F02487A41984E944A8066522045D1FC0000B0642A +S321000140603083600040A04A8467402C3C000181F02F022F064E944A8067044A92A2 +S3210001407C674A2045D1FC0000B06671D026802F002F06487AB60C4EB90000470803 +S32100014098486A00044EB900003E004A926700405E601E2F02487A41424E944A8089 +S321000140B4660E2045D1FC0000B0663083600040424A8467402C3C000181F82F0210 +S321000140D02F064E944A8067044A9267462045D1FC0000B06871D026802F002F0663 +S321000140EC487AB5AE4EB900004708486A00044EB900003E004A9267004000601A3E +S321000141082F02487A40EC4E944A8066522045D1FC0000B068308360003FE44A84C3 +S3210001412467402C3C000182002F022F064E944A8067044A9267462045D1FC0000AE +S32100014140B06A71D026802F002F06487AB5504EB900004708486A00044EB900001D +S3210001415C3E004A9267003FA2601A2F02487A40964E944A80664E2045D1FC000009 +S32100014178B06A308360003F862C3C000182082F022F064E944A8067044A92674639 +S321000141942045D1FC0000B06C71D026802F002F06487AB4F64EB900004708486AFB +S321000141B000044EB900003E004A9267003F48601A2F02487A40444E944A80665284 +S321000141CC2045D1FC0000B06C308360003F2C4A8467402C3C000182102F022F062E +S321000141E84E944A8067044A9267462045D1FC0000B06E71D026802F002F06487AB7 +S32100014204B4984EB900004708486A00044EB900003E004A9267003EEA601A2F02E4 +S32100014220487A3FEE4E944A80664E2045D1FC0000B06E308360003ECE2C3C000154 +S3210001423C82182F022F064E944A8067044A9267462045D1FC0000B07071D0268086 +S321000142582F002F06487AB43E4EB900004708486A00044EB900003E004A92670097 +S321000142743E90601A2F02487A3F9C4E944A8066522045D1FC0000B0703083600048 +S321000142903E744A8467402C3C000182202F022F064E944A8067044A92674A20456A +S321000142ACD1FC0000B07271D026802F002F06487AB3E04EB900004708486A000454 +S321000142C84EB900003E004A9267003E32601E2F02487A3F464E944A80660E204560 +S321000142E4D1FC0000B072308360003E164A8467402C3C000182282F022F064E9491 +S321000143004A8067044A9267462045D1FC0000B07471D026802F002F06487AB38244 +S3210001431C4EB900004708486A00044EB900003E004A9267003DD4601A2F02487A6C +S321000143383EF04E944A8066522045D1FC0000B074308360003DB84A8467402C3C95 +S32100014354000182302F022F064E944A8067044A9267462045D1FC0000B07671D0F4 +S3210001437026802F002F06487AB3244EB900004708486A00044EB900003E004A925A +S3210001438C67003D76601A2F02487A3E9A4E944A80664E2045D1FC0000B076308344 +S321000143A860003D5A2C3C000182382F022F064E944A8067044A9267462045D1FCA0 +S321000143C40000B07871D026802F002F06487AB2CA4EB900004708486A00044EB912 +S321000143E000003E004A9267003D1C601A2F02487A3E484E944A8066522045D1FC57 +S321000143FC0000B078308360003D004A8467402C3C000182402F022F064E944A8074 +S3210001441867044A9267462045D1FC0000B07A71D026802F002F06487AB26C4EB9FF +S3210001443400004708486A00044EB900003E004A9267003CBE601A2F02487A3DF242 +S321000144504E944A80664E2045D1FC0000B07A308360003CA22C3C000182482F0238 +S3210001446C2F064E944A8067044A9267462045D1FC0000B07C71D026802F002F06AF +S32100014488487AB2124EB900004708486A00044EB900003E004A9267003C64601ADD +S321000144A42F02487A3DA04E944A8066522045D1FC0000B07C308360003C484A84FE +S321000144C067402C3C000182502F022F064E944A8067044A92674A2045D1FC0000BB +S321000144DCB07E71D026802F002F06487AB1B44EB900004708486A00044EB900000A +S321000144F83E004A9267003C06601E2F02487A3D4A4E944A80660E2045D1FC000094 +S32100014514B07E308360003BEA4A8467402C3C000182582F022F064E944A806704E9 +S321000145304A9267462045D1FC0000B08071D026802F002F06487AB1564EB9000062 +S3210001454C4708486A00044EB900003E004A9267003BA8601A2F02487A3CF44E945D +S321000145684A8066522045D1FC0000B080308360003B8C4A8467402C3C00018260B2 +S321000145842F022F064E944A8067044A9267462045D1FC0000B08271D026802F0094 +S321000145A02F06487AB0F84EB900004708486A00044EB900003E004A9267003B4A40 +S321000145BC601A2F02487A3C9E4E944A80664E2045D1FC0000B082308360003B2E55 +S321000145D82C3C000182682F022F064E944A8067044A9267462045D1FC0000B08401 +S321000145F471D026802F002F06487AB09E4EB900004708486A00044EB900003E00F8 +S321000146104A9267003AF0601A2F02487A3C4C4E944A8066522045D1FC0000B0845B +S3210001462C308360003AD44A8467402C3C000182702F022F064E944A8067044A9221 +S3210001464867462045D1FC0000B08671D026802F002F06487AB0404EB900004708E7 +S32100014664486A00044EB900003E004A9267003A92601A2F02487A3BF64E944A80DF +S32100014680664E2045D1FC0000B086308360003A762C3C000182782F022F064E948D +S3210001469C4A8067044A9267462045D1FC0000B08871D026802F002F06487AAFE631 +S321000146B84EB900004708486A00044EB900003E004A9267003A38601A2F02487A6C +S321000146D43BA44E944A8066522045D1FC0000B088308360003A1C4A8467402C3CD0 +S321000146F0000182802F022F064E944A8067044A92674A2045D1FC0000B08A71D0ED +S3210001470C26802F002F06487AAF884EB900004708486A00044EB900003E004A925A +S32100014728670039DA601E2F02487A3B4E4E944A80660E2045D1FC0000B08A3083BB +S32100014744600039BE4A8467402C3C000182882F022F064E944A8067044A9267460D +S321000147602045D1FC0000B08C71D026802F002F06487AAF2A4EB900004708486ADA +S3210001477C00044EB900003E004A926700397C601A2F02487A3AF84E944A806652D6 +S321000147982045D1FC0000B08C3083600039604A8467402C3C000182902F022F068E +S321000147B44E944A8067044A9267462045D1FC0000B08E719026802F002F06487A05 +S321000147D0AEBC4EB900004708486A00044EB900003E004A926700391E601A2F02C6 +S321000147EC487A3AA24E944A80664E2045D1FC0000B08E1083600039022C3C0001A5 +S3210001480882982F022F064E944A8067044A9267462045D1FC0000B10171902680E2 +S321000148242F002F06487AAE624EB900004708486A00044EB900003E004A926700A7 +S3210001484038C4601A2F02487A3A504E944A8066522045D1FC0000B1011083600027 +S3210001485C38A84A8467402C3C000182A02F022F064E944A8067044A9267462045EE +S32100014878D1FC0000B10271D026802F002F06487AAE144EB900004708486A0004C2 +S321000148944EB900003E004A9267003866601A2F02487A39FA4E944A80664E204576 +S321000148B0D1FC0000B10230836000384A2C3C000182A82F022F064E944A806704C0 +S321000148CC4A9267462045D1FC0000B104719026802F002F06487AADAA4EB900002E +S321000148E84708486A00044EB900003E004A926700380C601A2F02487A39A84E94AC +S321000149044A8066522045D1FC0000B1041083600037F04A8467402C3C000182B0FD +S321000149202F022F064E944A8067044A92674A2045D1FC0000B105719026802F00AC +S3210001493C2F06487AAD4C4EB900004708486A00044EB900003E004A92670037AEEF +S32100014958601E2F02487A39524E944A80660E2045D1FC0000B1051083600037927C +S321000149744A8467402C3C000182B82F022F064E944A8067044A9267462045D1FCD0 +S321000149900000B106719026802F002F06487AACEE4EB900004708486A00044EB9D3 +S321000149AC00003E004A9267003750601A2F02487A38FC4E944A8066522045D1FCA9 +S321000149C80000B1061083600037344A8467402C3C000182C02F022F064E944A8085 +S321000149E467044A9267462045D1FC0000B107719026802F002F06487AAC904EB9C2 +S32100014A0000004708486A00044EB900003E004A92670036F2601A2F02487A38A693 +S32100014A1C4E944A80664E2045D1FC0000B1071083600036D62C3C000182C82F024A +S32100014A382F064E944A8067044A9267462045D1FC0000B10871D026802F002F0650 +S32100014A54487AAC464EB900004708486A00044EB900003E004A9267003698601AAF +S32100014A702F02487A38544E944A8066522045D1FC0000B10830836000367C4A84C2 +S32100014A8C67402C3C000182D02F022F064E944A8067044A9267462045D1FC00006D +S32100014AA8B10A71D026802F002F06487AABE84EB900004708486A00044EB900007D +S32100014AC43E004A926700363A601A2F02487A37FE4E944A80664E2045D1FC0000AA +S32100014AE0B10A30836000361E2C3C000182D82F022F064E944A8067044A926746C8 +S32100014AFC2045D1FC0000B10C71D026802F002F06487AAB8E4EB900004708486A5A +S32100014B1800044EB900003E004A92670035E0601A2F02487A37AC4E944A80665225 +S32100014B342045D1FC0000B10C3083600035C44A8467402C3C000182E02F022F06BD +S32100014B504E944A8067044A92674A2045D1FC0000B131719026802F002F06487ABD +S32100014B6CAB204EB900004708486A00044EB900003E004A9267003582601E2F0261 +S32100014B88487A37564E944A80660E2045D1FC0000B1311083600035664A84674084 +S32100014BA42C3C000182EC2F022F064E944A8067044A9267462045D1FC0000B161CD +S32100014BC0719026802F002F06487AAAC24EB900004708486A00044EB900003E0048 +S32100014BDC4A9267003524601A2F02487A37044E944A8066522045D1FC0000B161CA +S32100014BF81083600035084A8467402C3C000182F82F022F064E944A8067044A92B9 +S32100014C1467462045D1FC0000B191719026802F002F06487AAA644EB9000047082B +S32100014C30486A00044EB900003E004A92670034C6601A2F02487A36B24E944A8028 +S32100014C4C664E2045D1FC0000B1911083600034AA2C3C000183042F022F064E9414 +S32100014C684A8067044A9267462045D1FC0000B1C1719026802F002F06487AAA0A46 +S32100014C844EB900004708486A00044EB900003E004A926700346C601A2F02487A6C +S32100014CA036644E944A8066522045D1FC0000B1C11083600034504A8467402C3CFB +S32100014CBC000183102F022F064E944A8067044A9267462045D1FC0000B1F1719066 +S32100014CD826802F002F06487AA9AC4EB900004708486A00044EB900003E004A926B +S32100014CF46700340E601A2F02487A36124E944A80664E2045D1FC0000B1F1108378 +S32100014D10600033F22C3C0001831C2F022F064E944A8067044A9267462045D1FCBB +S32100014D2C0000B221719026802F002F06487AA9524EB900004708486A00044EB9B6 +S32100014D4800003E004A92670033B4601A2F02487A35C44E944A8066522045D1FCE4 +S32100014D640000B2211083600033984A8467402C3C000183282F022F064E944A8000 +S32100014D8067044A92674A2045D1FC0000B13271D026802F002F06487AA9044EB942 +S32100014D9C00004708486A00044EB900003E004A9267003356601E2F02487A3572C6 +S32100014DB84E944A80660E2045D1FC0000B13230836000333A4A8467402C3C000145 +S32100014DD483342F022F064E944A8067044A9267462045D1FC0000B16271D02680D3 +S32100014DF02F002F06487AA8A64EB900004708486A00044EB900003E004A92670098 +S32100014E0C32F8601A2F02487A35204E944A8066522045D1FC0000B16230836000DB +S32100014E2832DC4A8467402C3C000183402F022F064E944A8067044A92674620454D +S32100014E44D1FC0000B19271D026802F002F06487AA8484EB900004708486A000432 +S32100014E604EB900003E004A926700329A601A2F02487A34CE4E944A80664E2045A7 +S32100014E7CD1FC0000B19230836000327E2C3C0001834C2F022F064E944A8067048B +S32100014E984A9267462045D1FC0000B1C271D026802F002F06487AA7EE4EB9000020 +S32100014EB44708486A00044EB900003E004A9267003240601A2F02487A34804E94D9 +S32100014ED04A8066522045D1FC0000B1C23083600032244A8467402C3C0001835876 +S32100014EEC2F022F064E944A8067044A9267462045D1FC0000B1F271D026802F00B2 +S32100014F082F06487AA7904EB900004708486A00044EB900003E004A92670031E2B1 +S32100014F24601A2F02487A342E4E944A80664E2045D1FC0000B1F23083600031C65C +S32100014F402C3C000183642F022F064E944A8067044A9267462045D1FC0000B222F2 +S32100014F5C71D026802F002F06487AA7364EB900004708486A00044EB900003E00F7 +S32100014F784A9267003188601A2F02487A33E04E944A8066522045D1FC0000B22230 +S32100014F9430836000316C4A8467402C3C000183702F022F064E944A8067044A9220 +S32100014FB0674A2045D1FC0000B134719026802F002F06487AA6C84EB90000470885 +S32100014FCC486A00044EB900003E004A926700312A601E2F02487A338E4E944A804B +S32100014FE8660E2045D1FC0000B13410836000310E4A8467402C3C0001837C2F02DB +S321000150042F064E944A8067044A9267462045D1FC0000B164719026802F002F0662 +S32100015020487AA66A4EB900004708486A00044EB900003E004A92670030CC601A91 +S3210001503C2F02487A333C4E944A8066522045D1FC0000B1641083600030B04A84A3 +S3210001505867402C3C000183882F022F064E944A8067044A9267462045D1FC0000E2 +S32100015074B194719026802F002F06487AA60C4EB900004708486A00044EB9000042 +S321000150903E004A926700306E601A2F02487A32EA4E944A80664E2045D1FC0000C3 +S321000150ACB1941083600030522C3C000183942F022F064E944A8067044A926746A1 +S321000150C82045D1FC0000B1C4719026802F002F06487AA5B24EB900004708486AF2 +S321000150E400044EB900003E004A9267003014601A2F02487A329C4E944A8066523A +S321000151002045D1FC0000B1C4108360002FF84A8467402C3C000183A02F022F0664 +S3210001511C4E944A8067044A9267462045D1FC0000B1F4719026802F002F06487A2C +S32100015138A5544EB900004708486A00044EB900003E004A9267002FB6601A2F0237 +S32100015154487A324A4E944A80664E2045D1FC0000B1F4108360002F9A2C3C00019E +S3210001517083AC2F022F064E944A8067044A9267462045D1FC0000B2247190268038 +S3210001518C2F002F06487AA4FA4EB900004708486A00044EB900003E004A926700A8 +S321000151A82F5C601A2F02487A31FC4E944A8066522045D1FC0000B2241083600060 +S321000151C42F404A8467402C3C000183B82F022F064E944A8067044A92674A2045D1 +S321000151E0D1FC0000B135719026802F002F06487AA49C4EB900004708486A0004E0 +S321000151FC4EB900003E004A9267002EFE601E2F02487A31AA4E944A80660E20450B +S32100015218D1FC0000B135108360002EE24A8467402C3C000183C42F022F064E9450 +S321000152344A8067044A9267462045D1FC0000B165719026802F002F06487AA43EA2 +S321000152504EB900004708486A00044EB900003E004A9267002EA0601A2F02487A6C +S3210001526C31584E944A8066522045D1FC0000B165108360002E844A8467402C3C68 +S32100015288000183D02F022F064E944A8067044A9267462045D1FC0000B195719030 +S321000152A426802F002F06487AA3E04EB900004708486A00044EB900003E004A926B +S321000152C067002E42601A2F02487A31064E944A80664E2045D1FC0000B1951083E5 +S321000152DC60002E262C3C000183DC2F022F064E944A8067044A9267462045D1FCFB +S321000152F80000B1C5719026802F002F06487AA3864EB900004708486A00044EB914 +S3210001531400003E004A9267002DE8601A2F02487A30B84E944A8066522045D1FCF5 +S321000153300000B1C5108360002DCC4A8467402C3C000183E82F022F064E944A809D +S3210001534C67044A9267462045D1FC0000B1F5719026802F002F06487AA3284EB9D3 +S3210001536800004708486A00044EB900003E004A9267002D8A601A2F02487A3066DB +S321000153844E944A80664E2045D1FC0000B1F5108360002D6E2C3C000183F42F022F +S321000153A02F064E944A8067044A9267462045D1FC0000B225719026802F002F0601 +S321000153BC487AA2CE4EB900004708486A00044EB900003E004A9267002D30601A31 +S321000153D82F02487A30184E944A8066522045D1FC0000B225108360002D144A8408 +S321000153F467402C3C000184002F022F064E944A8067044A92674A2045D1FC0000C6 +S32100015410B13E71D026802F002F06487AA2804EB900004708486A00044EB9000048 +S3210001542C3E004A9267002CD2601E2F02487A2FC64E944A80660E2045D1FC000026 +S32100015448B13E308360002CB64A8467402C3C0001840C2F022F064E944A80670472 +S321000154644A9267462045D1FC0000B16E71D026802F002F06487AA2224EB9000073 +S321000154804708486A00044EB900003E004A9267002C74601A2F02487A2F744E94EA +S3210001549C4A8066522045D1FC0000B16E308360002C584A8467402C3C0001841809 +S321000154B82F022F064E944A8067044A9267462045D1FC0000B19E71D026802F0034 +S321000154D42F06487AA1C44EB900004708486A00044EB900003E004A9267002C1683 +S321000154F0601A2F02487A2F224E944A80664E2045D1FC0000B19E308360002BFAC2 +S3210001550C2C3C000184242F022F064E944A8067044A9267462045D1FC0000B1CEB4 +S3210001552871D026802F002F06487AA16A4EB900004708486A00044EB900003E00F7 +S321000155444A9267002BBC601A2F02487A2ED44E944A8066522045D1FC0000B1CE96 +S32100015560308360002BA04A8467402C3C000184302F022F064E944A8067044A925F +S3210001557C67462045D1FC0000B1FE71D026802F002F06487AA10C4EB9000047086E +S32100015598486A00044EB900003E004A9267002B5E601A2F02487A2E824E944A8060 +S321000155B4664E2045D1FC0000B1FE308360002B422C3C0001843C2F022F064E944E +S321000155D04A8067044A9267462045D1FC0000B22E71D026802F002F06487AA0B289 +S321000155EC4EB900004708486A00044EB900003E004A9267002B04601A2F02487A6C +S321000156082E344E944A8066522045D1FC0000B22E308360002AE84A8467402C3CA5 +S32100015624000184482F022F064E944A8067044A92674A2045D1FC0000B14971905F +S3210001564026802F002F06487AA0444EB900004708486A00044EB900003E004A926A +S3210001565C67002AA6601E2F02487A2DE24E944A80660E2045D1FC0000B149108395 +S3210001567860002A8A4A8467402C3C000184542F022F064E944A8067044A9267463F +S321000156942045D1FC0000B179719026802F002F06487A9FE64EB900004708486A3D +S321000156B000044EB900003E004A9267002A48601A2F02487A2D904E944A8066524B +S321000156CC2045D1FC0000B179108360002A2C4A8467402C3C000184602F022F06EE +S321000156E84E944A8067044A9267462045D1FC0000B1A9719026802F002F06487AA6 +S321000157049F884EB900004708486A00044EB900003E004A92670029EA601A2F0209 +S32100015720487A2D3E4E944A80664E2045D1FC0000B1A91083600029CE2C3C0001FA +S3210001573C846C2F022F064E944A8067044A9267462045D1FC0000B1D971902680F1 +S321000157582F002F06487A9F2E4EB900004708486A00044EB900003E004A926700A7 +S321000157742990601A2F02487A2CF04E944A8066522045D1FC0000B1D910836000BD +S3210001579029744A8467402C3C000184782F022F064E944A8067044A926746204514 +S321000157ACD1FC0000B209719026802F002F06487A9ED04EB900004708486A00040B +S321000157C84EB900003E004A9267002932601A2F02487A2C9E4E944A80664E2045DF +S321000157E4D1FC0000B2091083600029162C3C000184842F022F064E944A806704FA +S321000158004A9267462045D1FC0000B239719026802F002F06487A9E764EB90000F7 +S3210001581C4708486A00044EB900003E004A92670028D8601A2F02487A2C504E9411 +S321000158384A8066522045D1FC0000B2391083600028BC4A8467402C3C00018490E5 +S321000158542F022F064E944A8067044A92674A2045D1FC0000B14A71D026802F00E4 +S321000158702F06487A9E284EB900004708486A00044EB900003E004A926700287A22 +S3210001588C601E2F02487A2BFE4E944A80660E2045D1FC0000B14A30836000285E79 +S321000158A84A8467402C3C0001849C2F022F064E944A8067044A9267462045D1FCA7 +S321000158C40000B17A71D026802F002F06487A9DCA4EB900004708486A00044EB90F +S321000158E000003E004A926700281C601A2F02487A2BAC4E944A8066522045D1FC06 +S321000158FC0000B17A3083600028004A8467402C3C000184A82F022F064E944A8007 +S3210001591867044A9267462045D1FC0000B1AA71D026802F002F06487A9D6C4EB9CE +S3210001593400004708486A00044EB900003E004A92670027BE601A2F02487A2B5AEC +S321000159504E944A80664E2045D1FC0000B1AA3083600027A22C3C000184B42F0299 +S3210001596C2F064E944A8067044A9267462045D1FC0000B1DA71D026802F002F063B +S32100015988487A9D124EB900004708486A00044EB900003E004A9267002764601AF2 +S321000159A42F02487A2B0C4E944A8066522045D1FC0000B1DA3083600027484A8445 +S321000159C067402C3C000184C02F022F064E944A8067044A9267462045D1FC000038 +S321000159DCB20A71D026802F002F06487A9CB44EB900004708486A00044EB900007C +S321000159F83E004A9267002706601A2F02487A2ABA4E944A80664E2045D1FC0000FB +S32100015A14B20A3083600026EA2C3C000184CC2F022F064E944A8067044A926746D1 +S32100015A302045D1FC0000B23A71D026802F002F06487A9C5A4EB900004708486A2A +S32100015A4C00044EB900003E004A92670026AC601A2F02487A2A6C4E944A80665272 +S32100015A682045D1FC0000B23A3083600026904A8467402C3C000184D82F022F0694 +S32100015A844E944A8067044A92674A2045D1FC0000B14C719026802F002F06487A5F +S32100015AA09BEC4EB900004708486A00044EB900003E004A926700264E601E2F02A5 +S32100015ABC487A2A1A4E944A80660E2045D1FC0000B14C1083600026324A846740B2 +S32100015AD82C3C000184E42F022F064E944A8067044A9267462045D1FC0000B17C75 +S32100015AF4719026802F002F06487A9B8E4EB900004708486A00044EB900003E0048 +S32100015B104A92670025F0601A2F02487A29C84E944A8066522045D1FC0000B17CF9 +S32100015B2C1083600025D44A8467402C3C000184F02F022F064E944A8067044A92BF +S32100015B4867462045D1FC0000B1AC719026802F002F06487A9B304EB90000470810 +S32100015B64486A00044EB900003E004A9267002592601A2F02487A29764E944A8071 +S32100015B80664E2045D1FC0000B1AC1083600025762C3C000184FC2F022F064E9400 +S32100015B9C4A8067044A9267462045D1FC0000B1DC719026802F002F06487A9AD62C +S32100015BB84EB900004708486A00044EB900003E004A9267002538601A2F02487A6C +S32100015BD429284E944A8066522045D1FC0000B1DC10836000251C4A8467402C3C29 +S32100015BF0000185082F022F064E944A8067044A9267462045D1FC0000B20C71900D +S32100015C0C26802F002F06487A9A784EB900004708486A00044EB900003E004A926A +S32100015C28670024DA601A2F02487A28D64E944A80664E2045D1FC0000B20C1083A6 +S32100015C44600024BE2C3C000185142F022F064E944A8067044A9267462045D1FCC1 +S32100015C600000B23C719026802F002F06487A9A1E4EB900004708486A00044EB99B +S32100015C7C00003E004A9267002480601A2F02487A28884E944A8066522045D1FC2D +S32100015C980000B23C1083600024644A8467402C3C000185202F022F064E944A80EB +S32100015CB467044A92674A2045D1FC0000B14D719026802F002F06487A99C04EB978 +S32100015CD000004708486A00044EB900003E004A9267002422601E2F02487A28360F +S32100015CEC4E944A80660E2045D1FC0000B14D1083600024064A8467402C3C00014A +S32100015D0885282F022F064E944A8067044A9267462045D1FC0000B17D71902680BE +S32100015D242F002F06487A99624EB900004708486A00044EB900003E004A926700A7 +S32100015D4023C4601A2F02487A27E04E944A8066522045D1FC0000B17D108360002E +S32100015D5C23A84A8467402C3C000185302F022F064E944A8067044A92674620455B +S32100015D78D1FC0000B1AD719026802F002F06487A99044EB900004708486A000467 +S32100015D944EB900003E004A9267002366601A2F02487A278A4E944A80664E2045F8 +S32100015DB0D1FC0000B1AD10836000234A2C3C000185382F022F064E944A806704A2 +S32100015DCC4A9267462045D1FC0000B1DD719026802F002F06487A98AA4EB9000055 +S32100015DE84708486A00044EB900003E004A926700230C601A2F02487A27384E942E +S32100015E044A8066522045D1FC0000B1DD1083600022F04A8467402C3C0001854091 +S32100015E202F022F064E944A8067044A9267462045D1FC0000B20D719026802F0092 +S32100015E3C2F06487A984C4EB900004708486A00044EB900003E004A92670022AE04 +S32100015E58601A2F02487A26E24E944A80664E2045D1FC0000B20D108360002292BA +S32100015E742C3C000185482F022F064E944A8067044A9267462045D1FC0000B23DAE +S32100015E90719026802F002F06487A97F24EB900004708486A00044EB900003E0048 +S32100015EAC4A9267002254601A2F02487A26904E944A8066522045D1FC0000B23D72 +S32100015EC81083600022384A8467402C3C000185502F022F064E944A8067044A925E +S32100015EE4674A2045D1FC0000B15A71D026802F002F06487A97A44EB9000047080F +S32100015F00486A00044EB900003E004A92670021F6601E2F02487A263A4E944A80AC +S32100015F1C660E2045D1FC0000B15A3083600021DA4A8467402C3C0001855C2F02B3 +S32100015F382F064E944A8067044A9267462045D1FC0000B18A71D026802F002F06B9 +S32100015F54487A97464EB900004708486A00044EB900003E004A9267002198601AC4 +S32100015F702F02487A25E84E944A8066522045D1FC0000B18A30836000217C4A84BF +S32100015F8C67402C3C000185682F022F064E944A8067044A9267462045D1FC0000BD +S32100015FA8B1BA71D026802F002F06487A96E84EB900004708486A00044EB90000CD +S32100015FC43E004A926700213A601A2F02487A25964E944A80664E2045D1FC000024 +S32100015FE0B1BA30836000211E2C3C000185742F022F064E944A8067044A92674679 +S32100015FFC2045D1FC0000B1EA71D026802F002F06487A968E4EB900004708486A7C +S3210001601800044EB900003E004A92670020E0601A2F02487A25484E944A8066529B +S321000160342045D1FC0000B1EA3083600020C44A8467402C3C000185802F022F063C +S321000160504E944A8067044A9267462045D1FC0000B21A71D026802F002F06487A82 +S3210001606C96304EB900004708486A00044EB900003E004A9267002082601A2F026A +S32100016088487A24F64E944A80664E2045D1FC0000B21A3083600020662C3C0001B9 +S321000160A4858C2F022F064E944A8067044A9267462045D1FC0000B24A71D02680AD +S321000160C02F002F06487A95D64EB900004708486A00044EB900003E004A92670098 +S321000160DC2028601A2F02487A24A84E944A8066502045D1FC0000B24A308360007D +S321000160F8200C4A84673E2C3C000185982F022F064E944A8067044A9267482045F3 +S32100016114D1FC0000B40026902F132F06487A958A4EB900004708486A00044EB9C6 +S3210001613000003E004A9267001FCC601E2F02487A24584E944A80660E2045D1FCA1 +S3210001614C0000B400208360001FB04A84673E2C3C000185A02F022F064E944A8097 +S3210001616867044A9267442045D1FC0000B40426902F132F06487A952E4EB900007F +S321000161844708486A00044EB900003E004A9267001F70601A2F02487A24044E9465 +S321000161A04A8066502045D1FC0000B404208360001F544A84673E2C3C000185A8F3 +S321000161BC2F022F064E944A8067044A9267442045D1FC0000B40826902F132F06A1 +S321000161D8487A94D24EB900004708486A00044EB900003E004A9267001F14601A3B +S321000161F42F02487A23B04E944A80664C2045D1FC0000B408208360001EF82C3CF5 +S32100016210000185B02F022F064E944A8067044A9267442045D1FC0000B40C269089 +S3210001622C2F132F06487A947A4EB900004708486A00044EB900003E004A92670074 +S321000162481EBC601A2F02487A23604E944A8066502045D1FC0000B40C2083600012 +S321000162641EA04A84673E2C3C000185B82F022F064E944A8067044A9267442045D7 +S32100016280D1FC0000B41026902F132F06487A941E4EB900004708486A00044EB9B6 +S3210001629C00003E004A9267001E60601A2F02487A230C4E944A80664C2045D1FCB4 +S321000162B80000B410208360001E442C3C000185C02F022F064E944A8067044A9293 +S321000162D467442045D1FC0000B41426902F132F06487A93C64EB900004708486AB2 +S321000162F000044EB900003E004A9267001E08601A2F02487A22BC4E944A8066502C +S3210001630C2045D1FC0000B414208360001DEC4A84673E2C3C000185C82F022F06D9 +S321000163284E944A8067044A9267482045D1FC0000B44026902F132F06487A936A9E +S321000163444EB900004708486A00044EB900003E004A9267001DAC601E2F02487A68 +S3210001636022684E944A80660E2045D1FC0000B440208360001D904A84673E2C3CBF +S3210001637C000185D02F022F064E944A8067044A9267442045D1FC0000B470269098 +S321000163982F132F06487A930E4EB900004708486A00044EB900003E004A92670074 +S321000163B41D50601A2F02487A22144E944A8066502045D1FC0000B47020836000FB +S321000163D01D344A84673E2C3C000185D82F022F064E944A8067044A9267442045B7 +S321000163ECD1FC0000B4A026902F132F06487A92B24EB900004708486A00044EB927 +S3210001640800003E004A9267001CF4601A2F02487A21C04E944A80664C2045D1FC02 +S321000164240000B4A0208360001CD82C3C000185E02F022F064E944A8067044A92E3 +S3210001644067442045D1FC0000B4D026902F132F06487A925A4EB900004708486AF5 +S3210001645C00044EB900003E004A9267001C9C601A2F02487A21704E944A80665079 +S321000164782045D1FC0000B4D0208360001C804A84673E2C3C000185E82F022F06FD +S321000164944E944A8067044A9267442045D1FC0000B50026902F132F06487A91FEE2 +S321000164B04EB900004708486A00044EB900003E004A9267001C40601A2F02487A6C +S321000164CC211C4E944A80664C2045D1FC0000B500208360001C242C3C000185F00A +S321000164E82F022F064E944A8067044A9267442045D1FC0000B53026902F132F0649 +S32100016504487A91A64EB900004708486A00044EB900003E004A9267001BE8601A6A +S321000165202F02487A20CC4E944A8066502045D1FC0000B530208360001BCC4A8448 +S3210001653C673E2C3C000185F82F022F064E944A8067044A9267482045D1FC000077 +S32100016558B56026902F132F06487A914A4EB900004708486A00044EB900003E00F0 +S321000165744A9267001B8C601E2F02487A20784E944A80660E2045D1FC0000B560AA +S32100016590208360001B704A84673E2C3C000186002F022F064E944A8067044A929F +S321000165AC67442045D1FC0000B44426902F132F06487A90EE4EB900004708486A82 +S321000165C800044EB900003E004A9267001B30601A2F02487A20244E944A806650C6 +S321000165E42045D1FC0000B444208360001B144A84673E2C3C000186082F022F0668 +S321000166004E944A8067044A9267442045D1FC0000B47426902F132F06487A90926E +S3210001661C4EB900004708486A00044EB900003E004A9267001AD4601A2F02487A6C +S321000166381FD04E944A80664C2045D1FC0000B474208360001AB82C3C00018610C4 +S321000166542F022F064E944A8067044A9267442045D1FC0000B4A426902F132F0668 +S32100016670487A903A4EB900004708486A00044EB900003E004A9267001A7C601AD7 +S3210001668C2F02487A1F804E944A8066502045D1FC0000B4A4208360001A604A8422 +S321000166A8673E2C3C000186182F022F064E944A8067044A9267442045D1FC0000ED +S321000166C4B4D426902F132F06487A8FDE4EB900004708486A00044EB900003E007E +S321000166E04A9267001A20601A2F02487A1F2C4E944A80664C2045D1FC0000B4D44A +S321000166FC208360001A042C3C000186202F022F064E944A8067044A9267442045E2 +S32100016718D1FC0000B50426902F132F06487A8F864EB900004708486A00044EB9C1 +S3210001673400003E004A92670019C8601A2F02487A1EDC4E944A8066502045D1FCE5 +S321000167500000B5042083600019AC4A84673E2C3C000186282F022F064E944A8009 +S3210001676C67044A9267482045D1FC0000B53426902F132F06487A8F2A4EB900004A +S321000167884708486A00044EB900003E004A926700196C601E2F02487A1E884E94E3 +S321000167A44A80660E2045D1FC0000B5342083600019504A84673E2C3C000186307B +S321000167C02F022F064E944A8067044A9267442045D1FC0000B56426902F132F063A +S321000167DC487A8ECE4EB900004708486A00044EB900003E004A9267001910601A45 +S321000167F82F02487A1E344E944A8066502045D1FC0000B5642083600018F44A84AF +S32100016814673E2C3C000186382F022F064E944A8067044A9267442045D1FC00005F +S32100016830B44826902F132F06487A8E724EB900004708486A00044EB900003E0009 +S3210001684C4A92670018B4601A2F02487A1DE04E944A80664C2045D1FC0000B44824 +S321000168682083600018982C3C000186402F022F064E944A8067044A9267442045C2 +S32100016884D1FC0000B47826902F132F06487A8E1A4EB900004708486A00044EB94E +S321000168A000003E004A926700185C601A2F02487A1D904E944A8066502045D1FC32 +S321000168BC0000B4782083600018404A84673E2C3C000186482F022F064E944A8076 +S321000168D867044A9267442045D1FC0000B4A826902F132F06487A8DBE4EB90000DC +S321000168F44708486A00044EB900003E004A9267001800601A2F02487A1D3C4E9434 +S321000169104A80664C2045D1FC0000B4A82083600017E42C3C000186502F022F06B7 +S3210001692C4E944A8067044A9267442045D1FC0000B4D826902F132F06487A8D660A +S321000169484EB900004708486A00044EB900003E004A92670017A8601A2F02487A6C +S321000169641CEC4E944A8066502045D1FC0000B4D820836000178C4A84673E2C3C67 +S32100016980000186582F022F064E944A8067044A9267482045D1FC0000B508269068 +S3210001699C2F132F06487A8D0A4EB900004708486A00044EB900003E004A92670074 +S321000169B8174C601E2F02487A1C984E944A80660E2045D1FC0000B5082083600022 +S321000169D417304A84673E2C3C000186602F022F064E944A8067044A92674420452E +S321000169F0D1FC0000B53826902F132F06487A8CAE4EB900004708486A00044EB98E +S32100016A0C00003E004A92670016F0601A2F02487A1C444E944A8066502045D1FC7F +S32100016A280000B5382083600016D44A84673E2C3C000186682F022F064E944A8095 +S32100016A4467044A9267442045D1FC0000B56826902F132F06487A8C524EB900001A +S32100016A604708486A00044EB900003E004A9267001694601A2F02487A1BF04E9482 +S32100016A7C4A80664C2045D1FC0000B5682083600016782C3C000186702F022F06D6 +S32100016A984E944A8067044A9267442045D1FC0000B44C26902F132F06487A8BFA97 +S32100016AB44EB900004708486A00044EB900003E004A926700163C601A2F02487A6C +S32100016AD01BA04E944A8066502045D1FC0000B44C2083600016204A84673E2C3C40 +S32100016AEC0001867C2F022F064E944A8067044A9267442045D1FC0000B47C269068 +S32100016B082F132F06487A8B9E4EB900004708486A00044EB900003E004A92670074 +S32100016B2415E0601A2F02487A1B504E944A80664C2045D1FC0000B47C20836000BE +S32100016B4015C42C3C000186882F022F064E944A8067044A9267442045D1FC0000AC +S32100016B5CB4AC26902F132F06487A8B464EB900004708486A00044EB900003E00A5 +S32100016B784A9267001588601A2F02487A1B044E944A8066502045D1FC0000B4AC9A +S32100016B9420836000156C4A84673E2C3C000186942F022F064E944A8067044A920B +S32100016BB067482045D1FC0000B4DC26902F132F06487A8AEA4EB900004708486AE6 +S32100016BCC00044EB900003E004A926700152C601E2F02487A1AB44E944A80660E7A +S32100016BE82045D1FC0000B4DC2083600015104A84673E2C3C000186A02F022F0638 +S32100016C044E944A8067044A9267442045D1FC0000B50C26902F132F06487A8A8ED5 +S32100016C204EB900004708486A00044EB900003E004A92670014D0601A2F02487A6C +S32100016C3C1A644E944A8066502045D1FC0000B50C2083600014B44A84673E2C3CBC +S32100016C58000186AC2F022F064E944A8067044A9267442045D1FC0000B53C269009 +S32100016C742F132F06487A8A324EB900004708486A00044EB900003E004A92670074 +S32100016C901474601A2F02487A1A144E944A80664C2045D1FC0000B53C208360003A +S32100016CAC14582C3C000186B82F022F064E944A8067044A9267442045D1FC00007C +S32100016CC8B56C26902F132F06487A89DA4EB900004708486A00044EB900003E00E5 +S32100016CE44A926700141C601A2F02487A19C84E944A8066502045D1FC0000B56C17 +S32100016D002083600014004A84673E2C3C000186C42F022F064E944A8067044A92DA +S32100016D1C67442045D1FC0000B45026902F132F06487A897E4EB900004708486A75 +S32100016D3800044EB900003E004A92670013C0601A2F02487A19784E944A80664C7D +S32100016D542045D1FC0000B4502083600013A42C3C000186CC2F022F064E944A805F +S32100016D7067044A9267442045D1FC0000B48026902F132F06487A89264EB9000003 +S32100016D8C4708486A00044EB900003E004A9267001368601A2F02487A19284E944C +S32100016DA84A8066502045D1FC0000B48020836000134C4A84673E2C3C000186D44A +S32100016DC42F022F064E944A8067044A9267482045D1FC0000B4B026902F132F06E1 +S32100016DE0487A88CA4EB900004708486A00044EB900003E004A926700130C601E4B +S32100016DFC2F02487A18D44E944A80660E2045D1FC0000B4B02083600012F04A840C +S32100016E18673E2C3C000186DC2F022F064E944A8067044A9267442045D1FC0000B1 +S32100016E34B4E026902F132F06487A886E4EB900004708486A00044EB900003E0071 +S32100016E504A92670012B0601A2F02487A18804E944A8066502045D1FC0000B4E0ED +S32100016E6C2083600012944A84673E2C3C000186E42F022F064E944A8067044A92BB +S32100016E8867442045D1FC0000B51026902F132F06487A88124EB900004708486AB4 +S32100016EA400044EB900003E004A9267001254601A2F02487A182C4E944A80664CCA +S32100016EC02045D1FC0000B5102083600012382C3C000186EC2F022F064E944A807E +S32100016EDC67044A9267442045D1FC0000B54026902F132F06487A87BA4EB9000043 +S32100016EF84708486A00044EB900003E004A92670011FC601A2F02487A17DC4E949B +S32100016F144A8066502045D1FC0000B5402083600011E04A84673E2C3C000186F469 +S32100016F302F022F064E944A8067044A9267442045D1FC0000B57026902F132F06B6 +S32100016F4C487A875E4EB900004708486A00044EB900003E004A92670011A0601ABC +S32100016F682F02487A17884E944A80664C2045D1FC0000B5702083600011842C3CBF +S32100016F84000186FC2F022F064E944A8067044A9267442045D1FC0000B454269073 +S32100016FA02F132F06487A87064EB900004708486A00044EB900003E004A92670074 +S32100016FBC1148601A2F02487A17384E944A8066502045D1FC0000B45420836000FE +S32100016FD8112C4A84673E2C3C000187042F022F064E944A8067044A926748204585 +S32100016FF4D1FC0000B48426902F132F06487A86AA4EB900004708486A00044EB943 +S3210001701000003E004A92670010EC601E2F02487A16E44E944A80660E2045D1FC23 +S3210001702C0000B4842083600010D04A84673E2C3C0001870C2F022F064E944A80A5 +S3210001704867044A9267442045D1FC0000B4B426902F132F06487A864E4EB90000CF +S321000170644708486A00044EB900003E004A9267001090601A2F02487A16904E94E7 +S321000170804A8066502045D1FC0000B4B42083600010744A84673E2C3C00018714D5 +S3210001709C2F022F064E944A8067044A9267442045D1FC0000B4E426902F132F06D6 +S321000170B8487A85F24EB900004708486A00044EB900003E004A9267001034601A2A +S321000170D42F02487A163C4E944A80664C2045D1FC0000B4E42083600010182C3C99 +S321000170F00001871C2F022F064E944A8067044A9267442045D1FC0000B514269024 +S3210001710C2F132F06487A859A4EB900004708486A00044EB900003E004A92670074 +S321000171280FDC601A2F02487A15EC4E944A8066502045D1FC0000B514208360008B +S321000171440FC04A84673E2C3C000187242F022F064E944A8067044A926744204569 +S32100017160D1FC0000B54426902F132F06487A853E4EB900004708486A00044EB981 +S3210001717C00003E004A9267000F80601A2F02487A15984E944A80664C2045D1FC36 +S321000171980000B544208360000F642C3C0001872C2F022F064E944A8067044A92F0 +S321000171B467442045D1FC0000B57426902F132F06487A84E64EB900004708486A51 +S321000171D000044EB900003E004A9267000F28601A2F02487A15484E944A806650AD +S321000171EC2045D1FC0000B574208360000F0C4A84673E2C3C000187342F022F060A +S321000172084E944A8067044A9267482045D1FC0000B45826902F132F06487A848A86 +S321000172244EB900004708486A00044EB900003E004A9267000ECC601E2F02487A68 +S3210001724014F44E944A80660E2045D1FC0000B458208360000EB04A84673E2C3C29 +S3210001725C0001873C2F022F064E944A8067044A9267442045D1FC0000B488269023 +S321000172782F132F06487A842E4EB900004708486A00044EB900003E004A92670074 +S321000172940E70601A2F02487A14A04E944A8066502045D1FC0000B4882083600065 +S321000172B00E544A84673E2C3C000187442F022F064E944A8067044A926744204549 +S321000172CCD1FC0000B4B826902F132F06487A83D24EB900004708486A00044EB90F +S321000172E800003E004A9267000E14601A2F02487A144C4E944A80664C2045D1FC83 +S321000173040000B4B8208360000DF82C3C0001874C2F022F064E944A8067044A925D +S3210001732067442045D1FC0000B4E826902F132F06487A837A4EB900004708486ADD +S3210001733C00044EB900003E004A9267000DBC601A2F02487A13FC4E944A806650FB +S321000173582045D1FC0000B4E8208360000DA04A84673E2C3C000187542F022F0677 +S321000173744E944A8067044A9267442045D1FC0000B51826902F132F06487A831EC9 +S321000173904EB900004708486A00044EB900003E004A9267000D60601A2F02487A6C +S321000173AC13A84E944A80664C2045D1FC0000B518208360000D442C3C0001875C06 +S321000173C82F022F064E944A8067044A9267442045D1FC0000B54826902F132F0642 +S321000173E4487A82C64EB900004708486A00044EB900003E004A9267000D08601A59 +S321000174002F02487A13584E944A8066502045D1FC0000B548208360000CEC4A84B1 +S3210001741C673E2C3C000187642F022F064E944A8067044A9267482045D1FC00001A +S32100017438B57826902F132F06487A826A4EB900004708486A00044EB900003E00D8 +S321000174544A9267000CAC601E2F02487A13044E944A80660E2045D1FC0000B57813 +S32100017470208360000C904A84673E2C3C0001876C2F022F064E944A8067044A9232 +S3210001748C67442045D1FC0000B45C26902F132F06487A820E4EB900004708486A69 +S321000174A800044EB900003E004A9267000C50601A2F02487A12B04E944A80665048 +S321000174C42045D1FC0000B45C208360000C344A84673E2C3C000187742F022F06E3 +S321000174E04E944A8067044A9267442045D1FC0000B48C26902F132F06487A81B257 +S321000174FC4EB900004708486A00044EB900003E004A9267000BF4601A2F02487A6D +S32100017518125C4E944A80664C2045D1FC0000B48C208360000BD82C3C0001877CC0 +S321000175342F022F064E944A8067044A9267442045D1FC0000B4BC26902F132F0661 +S32100017550487A815A4EB900004708486A00044EB900003E004A9267000B9C601AC6 +S3210001756C2F02487A120C4E944A8066502045D1FC0000B4BC208360000B804A848B +S32100017588673E2C3C000187842F022F064E944A8067044A9267442045D1FC000091 +S321000175A4B4EC26902F132F06487A80FE4EB900004708486A00044EB900003E0066 +S321000175C04A9267000B40601A2F02487A11B84E944A80664C2045D1FC0000B4ECB4 +S321000175DC208360000B242C3C0001878C2F022F064E944A8067044A926744204575 +S321000175F8D1FC0000B51C26902F132F06487A80A64EB900004708486A00044EB9AA +S3210001761400003E004A9267000AE8601A2F02487A11684E944A80664E2045D1FC68 +S321000176300000B51C208360000ACC4A84673C2F02487A11524E944A8067044A92D3 +S3210001764C674A2045D1FC0000B54C26902F13487A1138487A804C4EB90000470850 +S32100017668486A00044EB900003E004A9267000A8E601E2F02487A11164E944A80E5 +S32100017684660E2045D1FC0000B54C208360000A724A8467402C3C0001879C2F028B +S321000176A02F064E944A8067044A9267462045D1FC0000B57C26902F132F064879A1 +S321000176BC0000F6AC4EB900004708486A00044EB900003E004A9267000A30601AC1 +S321000176D82F02487A10C04E944A8066522045D1FC0000B57C208360000A144A8416 +S321000176F467402C3C000187A42F022F064E944A8067044A9267462045D1FC000000 +S32100017710B46026902F132F0648790000F6AC4EB900004708486A00044EB900009F +S3210001772C3E004A92670009D2601A2F02487A106A4E944A80664E2045D1FC000065 +S32100017748B4602083600009B62C3C000187AC2F022F064E944A8067044A926746A6 +S321000177642045D1FC0000B49026902F132F0648790000F6AC4EB900004708486AF4 +S3210001778000044EB900003E004A9267000978601A2F02487A10184E944A806652E0 +S3210001779C2045D1FC0000B49020836000095C4A8467402C3C000187B42F022F066D +S321000177B84E944A8067044A9267462045D1FC0000B4C026902F132F06487900007A +S321000177D4F6AC4EB900004708486A00044EB900003E004A926700091A601A2F028E +S321000177F0487A0FC24E944A80664E2045D1FC0000B4C02083600008FE2C3C00016B +S3210001780C87BC2F022F064E944A8067044A9267462045D1FC0000B4F026902F1342 +S321000178282F0648790000F6AC4EB900004708486A00044EB900003E004A92670011 +S3210001784408C0601A2F02487A0F704E944A8066522045D1FC0000B4F02083600030 +S3210001786008A44A8467402C3C000187C42F022F064E944A8067044A92674A2045C1 +S3210001787CD1FC0000B52026902F132F0648790000F6AC4EB900004708486A0004AB +S321000178984EB900003E004A9267000862601E2F02487A0F1A4E944A80660E2045BC +S321000178B4D1FC0000B5202083600008464A8467402C3C000187CC2F022F064E9445 +S321000178D04A8067044A9267462045D1FC0000B55026902F132F0648790000F6AC10 +S321000178EC4EB900004708486A00044EB900003E004A9267000804601A2F02487A6C +S321000179080EC44E944A8066522045D1FC0000B5502083600007E84A8467402C3C20 +S32100017924000187D42F022F064E944A8067044A9267462045D1FC0000B5802690C1 +S321000179402F132F0648790000F6AC4EB900004708486A00044EB900003E004A921D +S3210001795C670007A6601A2F02487A0E6E4E944A80664E2045D1FC0000B5802083A1 +S321000179786000078A2C3C000187DC2F022F064E944A8067044A9267462045D1FCF7 +S321000179940000B46426902F132F0648790000F6AC4EB900004708486A00044EB915 +S321000179B000003E004A926700074C601A2F02487A0E1C4E944A8066522045D1FCB3 +S321000179CC0000B4642083600007304A8467402C3C000187E42F022F064E944A80EB +S321000179E867044A9267462045D1FC0000B49426902F132F0648790000F6AC4EB977 +S32100017A0400004708486A00044EB900003E004A92670006EE601A2F02487A0DC69E +S32100017A204E944A80664E2045D1FC0000B4942083600006D22C3C000187EC2F0281 +S32100017A3C2F064E944A8067044A9267462045D1FC0000B4C426902F132F064879BA +S32100017A580000F6AC4EB900004708486A00044EB900003E004A9267000694601AC1 +S32100017A742F02487A0D744E944A8066522045D1FC0000B4C42083600006784A841E +S32100017A9067402C3C000187F42F022F064E944A8067044A92674A2045D1FC00000C +S32100017AACB4F426902F132F0648790000F6AC4EB900004708486A00044EB900006C +S32100017AC83E004A9267000636601E2F02487A0D1E4E944A80660E2045D1FC0000F0 +S32100017AE4B4F420836000061A4A8467402C3C000187FC2F022F064E944A806704D6 +S32100017B004A9267462045D1FC0000B52426902F132F0648790000F6AC4EB9000037 +S32100017B1C4708486A00044EB900003E004A92670005D8601A2F02487A0CC84E94B9 +S32100017B384A8066522045D1FC0000B5242083600005BC4A8467402C3C000188046F +S32100017B542F022F064E944A8067044A9267462045D1FC0000B55426902F132F06A0 +S32100017B7048790000F6AC4EB900004708486A00044EB900003E004A926700057A7C +S32100017B8C601A2F02487A0C724E944A80664E2045D1FC0000B55420836000055EEA +S32100017BA82C3C0001880C2F022F064E944A8067044A9267462045D1FC0000B5844C +S32100017BC426902F132F0648790000F6AC4EB900004708486A00044EB900003E00BD +S32100017BE04A9267000520601A2F02487A0C204E944A8066522045D1FC0000B584B2 +S32100017BFC2083600005044A8467402C3C000188142F022F064E944A8067044A9287 +S32100017C1867462045D1FC0000B46826902F132F0648790000F6AC4EB90000470868 +S32100017C34486A00044EB900003E004A92670004C2601A2F02487A0BCA4E944A803B +S32100017C50664E2045D1FC0000B4682083600004A62C3C0001881C2F022F064E940D +S32100017C6C4A8067044A9267462045D1FC0000B49826902F132F0648790000F6AC29 +S32100017C884EB900004708486A00044EB900003E004A9267000468601A2F02487A6C +S32100017CA40B784E944A8066522045D1FC0000B49820836000044C4A8467402C3C28 +S32100017CC0000188242F022F064E944A8067044A92674A2045D1FC0000B4C8269086 +S32100017CDC2F132F0648790000F6AC4EB900004708486A00044EB900003E004A927E +S32100017CF86700040A601E2F02487A0B224E944A80660E2045D1FC0000B4C82083E5 +S32100017D14600003EE4A8467402C3C0001882C2F022F064E944A8067044A92674663 +S32100017D302045D1FC0000B4F826902F132F0648790000F6AC4EB900004708486ABA +S32100017D4C00044EB900003E004A92670003AC601A2F02487A0ACC4E944A80665232 +S32100017D682045D1FC0000B4F82083600003904A8467402C3C000188342F022F0684 +S32100017D844E944A8067044A9267462045D1FC0000B52826902F132F06487900003F +S32100017DA0F6AC4EB900004708486A00044EB900003E004A926700034E601A2F028E +S32100017DBC487A0A764E944A80664E2045D1FC0000B5282083600003322C3C000152 +S32100017DD8883C2F022F064E944A8067044A9267462045D1FC0000B55826902F1387 +S32100017DF42F0648790000F6AC4EB900004708486A00044EB900003E004A92670040 +S32100017E1002F4601A2F02487A0A244E944A8066522045D1FC0000B5582083600018 +S32100017E2C02D84A8467402C3C000188442F022F064E944A8067044A926746204544 +S32100017E48D1FC0000B58826902F132F0648790000F6AC4EB900004708486A000471 +S32100017E644EB900003E004A9267000296601A2F02487A09CE4E944A80664E2045D2 +S32100017E80D1FC0000B58820836000027A2C3C0001884C2F022F064E944A8067049C +S32100017E9C4A9267462045D1FC0000B46C26902F132F0648790000F6AC4EB9000051 +S32100017EB84708486A00044EB900003E004A926700023C601A2F02487A097C4E9408 +S32100017ED44A8066522045D1FC0000B46C2083600002204A8467402C3C00018854D8 +S32100017EF02F022F064E944A8067044A92674A2045D1FC0000B49C26902F132F06B6 +S32100017F0C48790000F6AC4EB900004708486A00044EB900003E004A92670001DE7C +S32100017F28601E2F02487A09264E944A80660E2045D1FC0000B49C2083600001C22E +S32100017F444A8467402C3C0001885C2F022F064E944A8067044A9267462045D1FC20 +S32100017F600000B4CC26902F132F0648790000F6AC4EB900004708486A00044EB9DB +S32100017F7C00003E004A9267000180601A2F02487A08D04E944A8066522045D1FC05 +S32100017F980000B4CC2083600001644A8467402C3C000188642F022F064E944A8002 +S32100017FB467044A9267462045D1FC0000B4FC26902F132F0648790000F6AC4EB93D +S32100017FD000004708486A00044EB900003E004A9267000122601A2F02487A087AEF +S32100017FEC4E944A80664E2045D1FC0000B4FC2083600001062C3C0001886C2F0298 +S321000180082F064E944A8067044A9267462045D1FC0000B52C26902F132F0648797F +S321000180240000F6AC4EB900004708486A00044EB900003E004A92670000C8601AC1 +S321000180402F02487A08284E944A8066502045D1FC0000B52C2083600000AC4A8408 +S3210001805C673E263C000188742F022F034E944A8067044A9267422045D1FC0000CC +S32100018078B55C26902F132F0348790000F6AC4EB900004708486A00044EB9000034 +S321000180943E004A92676A60182F02487A07D44E944A8066462045D1FC0000B55CFD +S321000180B020836050263C0001887C2F022F034E944A8067044A92673C2045D1FCC8 +S321000180CC0000B58C26902F132F0348790000F6AC4EB900004708486A00044EB9B0 +S321000180E800003E0060162F02487A078A4E944A80660A2045D1FC0000B58C20830B +S321000181044CEE1C7CFFE04E5E4E7551FC555342414953520055534241494D5200BF +S321000181204550494E464F0051434647520051FC5143464741520051FC535045458D +S3210001813C4452005146524D4E554D52004550544E520051FC494655520051FC5168 +S32100018158494652300051FC51494652310051FC51494652320051FC5149465233E0 +S321000181740051FC51494652340051FC51494652350051FC51494652360051FC512E +S32100018190494652370051FC51494652380051FC51494652390051FC514946523195 +S321000181AC300051FC49465231310051FC49465231320051FC49465231330051FC80 +S321000181C849465231340051FC49465231350051FC49465231360051FC49465231C6 +S321000181E4370051FC49465231380051FC49465231390051FC49465232300051FC35 +S3210001820049465232310051FC49465232320051FC49465232330051FC4946523292 +S3210001821C340051FC49465232350051FC49465232360051FC49465232370051FCFC +S3210001823849465232380051FC49465232390051FC49465233300051FC494652334D +S32100018254310051FC5050434E540051FC4450434E540051FC43524345434E5400EF +S32100018270425345434E54005150494445434E540046524D45434E54005458504386 +S3210001828C4E540051434E544F5652005145503041435200514550304D50535200BC +S321000182A8455030494652005145503053520051FC424D5254520051FC42525452F7 +S321000182C40051FC515756414C5545520057494E4445585200574C454E4754480099 +S321000182E04550314F55544143520051FC4550324F55544143520051FC4550334FA1 +S321000182FC55544143520051FC4550344F55544143520051FC4550354F5554414369 +S32100018318520051FC4550364F55544143520051FC4550314F55544D50535200516C +S321000183344550324F55544D50535200514550334F55544D50535200514550344F69 +S3210001835055544D50535200514550354F55544D50535200514550364F55544D5019 +S3210001836C535200514550314F55544946520051FC4550324F55544946520051FC1F +S321000183884550334F55544946520051FC4550344F55544946520051FC4550354FDC +S321000183A455544946520051FC4550364F55544946520051FC4550314F555453528B +S321000183C00051FC514550324F555453520051FC514550334F555453520051FC51F7 +S321000183DC4550344F555453520051FC514550354F555453520051FC514550364F5B +S321000183F8555453520051FC514550314F55545346520051FC4550324F5554534628 +S32100018414520051FC4550334F55545346520051FC4550344F55545346520051FCB5 +S321000184304550354F55545346520051FC4550364F55545346520051FC4550314925 +S3210001844C4E4143520051FC51455032494E4143520051FC51455033494E41435244 +S321000184680051FC51455034494E4143520051FC51455035494E4143520051FC51AA +S32100018484455036494E4143520051FC51455031494E4D5053520051FC4550324903 +S321000184A04E4D5053520051FC455033494E4D5053520051FC455034494E4D50539E +S321000184BC520051FC455035494E4D5053520051FC455036494E4D5053520051FC1D +S321000184D8455031494E4946520051FC51455032494E4946520051FC5145503349B7 +S321000184F44E4946520051FC51455034494E4946520051FC51455035494E49465277 +S321000185100051FC51455036494E4946520051FC51455031494E53520045503249B7 +S3210001852C4E535200455033494E535200455034494E535200455035494E5352002A +S32100018548455036494E535200455031494E5346520051FC51455032494E534652DA +S321000185640051FC51455033494E5346520051FC51455034494E5346520051FC5185 +S32100018580455035494E5346520051FC51455036494E5346520051FC5155534253C6 +S3210001859C520051FC55534243520051FC4452414D435200514452414D445200513C +S321000185B85553424953520051555342494D5200514550305354415400455031533A +S321000185D4544154004550325354415400455033535441540045503453544154008F +S321000185F04550355354415400455036535441540045503049535200514550314948 +S3210001860C5352005145503249535200514550334953520051455034495352005140 +S3210001862845503549535200514550364953520051455030494D520051455031490F +S321000186444D520051455032494D520051455033494D520051455034494D52005120 +S32100018660455035494D520051455036494D5200514550304652434647520051FC24 +S3210001867C4550314652434647520051FC4550324652434647520051FC4550334632 +S3210001869852434647520051FC4550344652434647520051FC4550354652434647FC +S321000186B4520051FC4550364652434647520051FC45503046445200514550314634 +S321000186D044520051455032464452005145503346445200514550344644520051C1 +S321000186EC455035464452005145503646445200514550304653520051455031466F +S32100018708535200514550324653520051455033465352005145503446535200514C +S321000187244550354653520051455036465352005145503046435200514550314628 +S321000187404352005145503246435200514550334643520051455034464352005154 +S3210001875C4550354643520051455036464352005145503046415200514550314612 +S321000187784152005145503246415200514550334641520051455034464152005124 +S3210001879445503546415200514550364641520051455030465250005145503146CF +S321000187B052500051455032465250005145503346525000514550344652500051B0 +S321000187CC4550354652500051455036465250005145503046575000514550314674 +S321000187E85750005145503246575000514550334657500051455034465750005164 +S32100018804455035465750005145503646575000514550304C524650004550314C35 +S32100018820524650004550324C524650004550334C524650004550344C5246500059 +S3210001883C4550354C524650004550364C524650004550304C574650004550314C0C +S32100018858574650004550324C574650004550334C574650004550344C574650000D +S321000188744550354C574650004550364C574650004E56FFE048D71C7C242E000846 +S32100018890282E000C262E001045F90002B3F047EA000849F900004F902A3C10004C +S321000188AC00004A8467402C3C000198082F022F064E944A8067044A9267462045C0 +S321000188C8D1FC0002100026902F132F0648790000F6AC4EB900004708486A000412 +S321000188E44EB900003E004A9267000F0E601A2F02487A0F124E944A80664E204579 +S32100018900D1FC00021000208360000EF22C3C000198102F022F064E944A806704E4 +S3210001891C4A9267462045D1FC0002100426902F132F0648790000F6AC4EB90000D0 +S321000189384708486A00044EB900003E004A9267000EB4601A2F02487A0EC04E94B0 +S321000189544A8066522045D1FC00021004208360000E984A8467402C3C00019818FF +S321000189702F022F064E944A8067044A9267462045D1FC0002102826902F132F0645 +S3210001898C48790000F6AC4EB900004708486A00044EB900003E004A9267000E566D +S321000189A8601A2F02487A0E6A4E944A80664E2045D1FC00021028208360000E3AB0 +S321000189C42C3C000198202F022F064E944A8067044A9267462045D1FC0002102CF9 +S321000189E026902F132F0648790000F6AC4EB900004708486A00044EB900003E0093 +S321000189FC4A9267000DFC601A2F02487A0E184E944A8066522045D1FC0002102CA5 +S32100018A18208360000DE04A8467402C3C000198282F022F064E944A8067044A9254 +S32100018A34674A2045D1FC0002100826902F132F0648790000F6AC4EB9000047083C +S32100018A50486A00044EB900003E004A9267000D9E601E2F02487A0DC24E944A802E +S32100018A6C660E2045D1FC00021008208360000D824A8467402C3C000198302F02BE +S32100018A882F064E944A8067044A9267462045D1FC0002100C26902F132F064879B8 +S32100018AA40000F6AC4EB900004708486A00044EB900003E004A9267000D40601AB2 +S32100018AC02F02487A0D6C4E944A8066522045D1FC0002100C208360000D244A8471 +S32100018ADC67402C3C000198382F022F064E944A8067044A9267462045D1FC00025D +S32100018AF8101026902F132F0648790000F6AC4EB900004708486A00044EB9000098 +S32100018B143E004A9267000CE2601A2F02487A0D164E944A80664E2045D1FC0002AB +S32100018B301010208360000CC62C3C000198402F022F064E944A8067044A926746E6 +S32100018B4C2045D1FC0002101426902F132F0648790000F6AC4EB900004708486A16 +S32100018B6800044EB900003E004A9267000C88601A2F02487A0CC44E944A80665229 +S32100018B842045D1FC00021014208360000C6C4A8467402C3C000198482F022F06D7 +S32100018BA04E944A8067044A9267462045D1FC0002101C26902F132F0648790000C4 +S32100018BBCF6AC4EB900004708486A00044EB900003E004A9267000C2A601A2F027F +S32100018BD8487A0C6E4E944A80664E2045D1FC0002101C208360000C0E2C3C0001F8 +S32100018BF498502F022F064E944A8067044A9267462045D1FC0002102026902F1314 +S32100018C102F0648790000F6AC4EB900004708486A00044EB900003E004A92670015 +S32100018C2C0BD0601A2F02487A0C1C4E944A8066522045D1FC0002102020836000EA +S32100018C480BB44A8467402C3C000198582F022F064E944A8067044A92674A20450D +S32100018C64D1FC0002103026902F132F0648790000F6AC4EB900004708486A000442 +S32100018C804EB900003E004A9267000B72601E2F02487A0BC64E944A80660E204505 +S32100018C9CD1FC00021030208360000B564A8467402C3C000198602F022F064E9424 +S32100018CB84A8067044A9267462045D1FC0002103826902F132F0648790000F6ACCF +S32100018CD44EB900004708486A00044EB900003E004A9267000B14601A2F02487A5D +S32100018CF00B704E944A8066522045D1FC00021038208360000AF84A8467402C3C24 +S32100018D0C000198682F022F064E944A8067044A9267462045D1FC0002200C269027 +S32100018D282F132F0648790000F6AC4EB900004708486A00044EB900003E004A9221 +S32100018D4467000AB6601A2F02487A0B1A4E944A80664E2045D1FC0002200C2083F0 +S32100018D6060000A9A2C3C000198702F022F064E944A8067044A9267462045D1FC43 +S32100018D7C0002300C26902F132F0648790000F6AC4EB900004708486A00044EB9F3 +S32100018D9800003E004A9267000A5C601A2F02487A0AC84E944A8066522045D1FCFC +S32100018DB40002300C208360000A404A8467402C3C000198782F022F064E944A8011 +S32100018DD067044A9267462045D1FC0002201026902F132F0648790000F6AC4EB991 +S32100018DEC00004708486A00044EB900003E004A92670009FE601A2F02487A0A72E7 +S32100018E084E944A80664E2045D1FC000220102083600009E22C3C000198802F02E3 +S32100018E242F064E944A8067044A9267462045D1FC0002301026902F132F064879F4 +S32100018E400000F6AC4EB900004708486A00044EB900003E004A92670009A4601AB2 +S32100018E5C2F02487A0A204E944A8066522045D1FC000230102083600009884A849C +S32100018E7867402C3C000198882F022F064E944A8067044A92674A2045D1FC000269 +S32100018E94201426902F132F0648790000F6AC4EB900004708486A00044EB90000E4 +S32100018EB03E004A9267000946601E2F02487A09CA4E944A80660E2045D1FC000237 +S32100018ECC201420836000092A4A8467402C3C000198902F022F064E944A80670496 +S32100018EE84A9267462045D1FC0002301426902F132F0648790000F6AC4EB90000CF +S32100018F044708486A00044EB900003E004A92670008E8601A2F02487A09744E9401 +S32100018F204A8066522045D1FC000230142083600008CC4A8467402C3C000198984F +S32100018F3C2F022F064E944A8067044A9267462045D1FC0002204426902F132F0647 +S32100018F5848790000F6AC4EB900004708486A00044EB900003E004A926700088A6D +S32100018F74601A2F02487A091E4E944A80664E2045D1FC0002204420836000086ED5 +S32100018F902C3C000198A02F022F064E944A8067044A9267462045D1FC000230446F +S32100018FAC26902F132F0648790000F6AC4EB900004708486A00044EB900003E00C1 +S32100018FC84A9267000830601A2F02487A08CC4E944A8066522045D1FC00023044BE +S32100018FE42083600008144A8467402C3C000198A82F022F064E944A8067044A92D4 +S3210001900067462045D1FC0002204C26902F132F0648790000F6AC4EB9000047081A +S3210001901C486A00044EB900003E004A92670007D2601A2F02487A08764E944A8083 +S32100019038664E2045D1FC0002204C2083600007B62C3C000198AC2F022F064E940C +S321000190544A8067044A9267462045D1FC0002304C26902F132F0648790000F6ACFB +S321000190704EB900004708486A00044EB900003E004A9267000778601A2F02487A5D +S3210001908C08204E944A8066522045D1FC0002304C20836000075C4A8467402C3C42 +S321000190A8000198B02F022F064E944A8067044A92674C2045D1FC000280182690CE +S321000190C42F132F0648790000F68C4EB900004708486A00044EB900003E004A92A2 +S321000190E06700071A60202F02487A07C64E944A8066102045D1FC000280187183C3 +S321000190FC2080600006FC4A8467402C3C000198B82F022F064E944A8067044A92C8 +S3210001911867482045D1FC0002802826902F132F0648790000F68C4EB900004708E3 +S32100019134486A00044EB900003E004A92670006BA601C2F02487A076E4E944A808A +S3210001915066542045D1FC00028028718320806000069C4A8467402C3C000198C09A +S3210001916C2F022F064E944A8067044A9267482045D1FC0002803026902F132F06C7 +S3210001918848790000F69C4EB900004708486A00044EB900003E004A926700065A7D +S321000191A4601C2F02487A07164E944A8066502045D1FC0002803071C320806000A2 +S321000191C0063C2C3C000198C82F022F064E944A8067044A9267482045D1FC000245 +S321000191DC803826902F132F0648790000F69C4EB900004708486A00044EB9000025 +S321000191F83E004A92670005FE601C2F02487A06C24E944A8066542045D1FC0002FF +S32100019214803871C32080600005E04A8467402C3C000198D02F022F064E944A800E +S3210001923067044A9267482045D1FC0002A01826902F132F0648790000F68C4EB9C2 +S3210001924C00004708486A00044EB900003E004A926700059E601C2F02487A066AF0 +S321000192684E944A8066502045D1FC0002A01871832080600005802C3C000198D843 +S321000192842F022F064E944A8067044A9267482045D1FC0002A02826902F132F0696 +S321000192A048790000F68C4EB900004708486A00044EB900003E004A92670005428D +S321000192BC601C2F02487A06164E944A8066542045D1FC0002A028718320806000AE +S321000192D805244A8467402C3C000198DC2F022F064E944A8067044A92674C204587 +S321000192F4D1FC0002A03026902F132F0648790000F69C4EB900004708486A00042C +S321000193104EB900003E004A92670004E260202F02487A05BA4E944A806610204513 +S3210001932CD1FC0002A03071C32080600004C44A8467402C3C000198E42F022F06C3 +S321000193484E944A8067044A9267482045D1FC0002A03826902F132F064879000066 +S32100019364F69C4EB900004708486A00044EB900003E004A9267000482601C2F028D +S32100019380487A05624E944A8066542045D1FC0002A03871C32080600004644A84C5 +S3210001939C67402C3C000198EC2F022F064E944A8067044A9267482045D1FC0002DE +S321000193B8C01826902F132F0648790000F68C4EB900004708486A00044EB9000037 +S321000193D43E004A9267000422601C2F02487A050A4E944A8066502045D1FC0002BB +S321000193F0C01871832080600004042C3C000198F42F022F064E944A8067044A9238 +S3210001940C67482045D1FC0002C02826902F132F0648790000F68C4EB900004708AC +S32100019428486A00044EB900003E004A92670003C6601C2F02487A04B64E944A8045 +S3210001944466542045D1FC0002C02871832080600003A84A8467402C3C000198FC1E +S321000194602F022F064E944A8067044A9267482045D1FC0002C03026902F132F0690 +S3210001947C48790000F69C4EB900004708486A00044EB900003E004A92670003667D +S32100019498601C2F02487A045E4E944A8066502045D1FC0002C03071C32080600026 +S321000194B403482C3C000199042F022F064E944A8067044A9267482045D1FC000208 +S321000194D0C03826902F132F0648790000F69C4EB900004708486A00044EB90000EE +S321000194EC3E004A926700030A601C2F02487A040A4E944A8066542045D1FC0002B8 +S32100019508C03871C32080600002EC4A8467402C3C0001990C2F022F064E944A8091 +S3210001952467044A92674C2045D1FC0002E01826902F132F0648790000F68C4EB987 +S3210001954000004708486A00044EB900003E004A92670002AA60202F02487A03B2A7 +S3210001955C4E944A8066102045D1FC0002E018718320806000028C4A8467402C3C3F +S32100019578000199142F022F064E944A8067044A9267482045D1FC0002E028269028 +S321000195942F132F0648790000F68C4EB900004708486A00044EB900003E004A92CD +S321000195B06700024A601C2F02487A035A4E944A8066542045D1FC0002E028718383 +S321000195CC20806000022C4A8467402C3C0001991C2F022F064E944A8067044A9262 +S321000195E867482045D1FC0002E03026902F132F0648790000F69C4EB90000470897 +S32100019604486A00044EB900003E004A92670001EA601C2F02487A03024E944A80FA +S3210001962066502045D1FC0002E03071C32080600001CC2C3C000199242F022F06A0 +S3210001963C4E944A8067044A9267482045D1FC0002E03826902F132F06487900002F +S32100019658F69C4EB900004708486A00044EB900003E004A926700018E601C2F028D +S32100019674487A02AE4E944A8066542045D1FC0002E03871C32080600001704A843C +S3210001969067402C3C0001992C2F022F064E944A8067044A9267482045D1FC0003A5 +S321000196AC201826902F132F0648790000F68C4EB900004708486A00044EB90000E0 +S321000196C83E004A926700012E601C2F02487A02564E944A8066502045D1FC000371 +S321000196E4201871832080600001102C3C000199342F022F064E944A8067044A9297 +S3210001970067482045D1FC0003202826902F132F0648790000F68C4EB90000470854 +S3210001971C486A00044EB900003E004A92670000D2601C2F02487A02024E944A80FB +S3210001973866522045D1FC0003202871832080600000B44A84673E263C0001993C86 +S321000197542F022F034E944A8067044A9267482045D1FC0003203026902F132F033E +S3210001977048790000F69C4EB900004708486A00044EB900003E004A926772601EFF +S3210001978C2F02487A01AC4E944A80660E2045D1FC0003203071C3208060564A841D +S321000197A8673A263C000199442F022F034E944A8067044A92673E2045D1FC00038D +S321000197C4203826902F132F0348790000F69C4EB900004708486A00044EB900009A +S321000197E03E0060182F02487A015C4E944A80660C2045D1FC0003203871C32080E1 +S321000197FC4CEE1C7CFFE04E5E4E7551FC455541435248005145554143524C0051C7 +S32100019818455541535248005145554153524C005153494D52480051FC53494D52EC +S321000198344C0051FC53495352480051FC534953524C0051FC534943524C0051FCFE +S32100019850534944520051FC51534D43520051FC514D4541520051FC514343435274 +S3210001986C300051FC43434352310051FC43435053524830004343505352483100DC +S3210001988843435053524C300043435053524C310043445052300051FC43445052FF +S321000198A4310051FC465230004652310041465243520051FC414653520051FC510D +S321000198C041464953520051FC4146494D520051FC445243520051FC514453520055 +S321000198DC444953520051FC5144494D520051FC514D445243520051FC4D445352D4 +S321000198F80051FC514D444953520051FC4D44494D520051FC524E475243520051FE +S32100019914524E4753520051FC524E474953520051524E47494D52005141455352E6 +S321000199304352005141455353520051FC4145534953520051414553494D52005139 +S3210001994C4E56FFE448D71C3C242E0008282E001045F90002B3F047EA0008263CBC +S32100019968100000004AAE000C49F900004F9067422A3C00019BB02F022F054E9405 +S321000199844A8067044A9267482043D1FC00008F00719026802F002F054879000076 +S321000199A0F68C4EB900004708486A00044EB900003E004A92670001EE601A2F02F4 +S321000199BC487A01F24E944A8066502043D1FC00008F001084600001D22A3C000184 +S321000199D89BB82F022F054E944A8067044A9267482043D1FC00008F0471902680A8 +S321000199F42F002F0548790000F68C4EB900004708486A00044EB900003E004A927D +S32100019A1067000192601A2F02487A019E4E944A8066562043D1FC00008F0410846E +S32100019A2C600001764AAE000C67422A3C00019BC02F022F054E944A8067044A9279 +S32100019A4867482043D1FC00008F08719026802F002F0548790000F68C4EB9000031 +S32100019A644708486A00044EB900003E004A9267000130601A2F02487A01444E948D +S32100019A804A8066502043D1FC00008F081084600001142A3C00019BC82F022F0544 +S32100019A9C4E944A8067044A9267482043D1FC00008F0C719026802F002F0548796F +S32100019AB80000F68C4EB900004708486A00044EB900003E004A92670000D4601A27 +S32100019AD42F02487A00F04E944A8066542043D1FC00008F0C1084600000B84AAEB7 +S32100019AF0000C6740283C00019BD02F022F044E944A8067044A92674A2043D1FC98 +S32100019B0C00008F10719026802F002F0448790000F68C4EB900004708486A00043F +S32100019B284EB900003E004A926772601E2F02487A00984E944A80660C2043D1FCC9 +S32100019B4400008F10108460584AAE000C673C283C00019BD82F022F044E944A8084 +S32100019B6067044A92673E2043D1FC00008F20719026802F002F0448790000F68CCB +S32100019B7C4EB900004708486A00044EB900003E0060162F02487A00464E944A801A +S32100019B98660A2043D1FC00008F2010844CEE1C3CFFE44E5E4E7551FC4932415288 +S32100019BB40051FC5149324644520051FC493243520051FC51493253520051FC51E0 +S32100019BD0493244520051FC5149324943520051FC4E56FFE048D71C7C242E000889 +S32100019BEC282E000C262E001045F90002B3F047EA000849F900004F902A3C1000DD +S32100019C0800004A8467402C3C0001A3FC2F022F064E944A8067044A926746204551 +S32100019C24D1FC00008A0026902F132F0648790000F6AC4EB900004708486A00042A +S32100019C404EB900003E004A92670007A6601A2F02487A07AA4E944A80664E2045E9 +S32100019C5CD1FC00008A0020836000078A2C3C0001A4042F022F064E944A8067046C +S32100019C784A9267462045D1FC00008A0826902F132F0648790000F6AC4EB90000E5 +S32100019C944708486A00044EB900003E004A926700074C601A2F02487A07584E941F +S32100019CB04A8066522045D1FC00008A082083600007304A8467402C3C0001A40C83 +S32100019CCC2F022F064E944A8067044A9267462045D1FC00008A0C26902F132F067A +S32100019CE848790000F6AC4EB900004708486A00044EB900003E004A92670006EE6E +S32100019D04601A2F02487A07024E944A80664E2045D1FC00008A0C2083600006D2C3 +S32100019D202C3C0001A4142F022F064E944A8067044A9267462045D1FC00008A102D +S32100019D3C26902F132F0648790000F6AC4EB900004708486A00044EB900003E0023 +S32100019D584A9267000694601A2F02487A06B04E944A8066522045D1FC00008A10B8 +S32100019D742083600006784A8467402C3C0001A41C2F022F064E944A8067044A9254 +S32100019D90674A2045D1FC00008A1426902F132F0648790000F6AC4EB90000470849 +S32100019DAC486A00044EB900003E004A9267000636601E2F02487A065A4E944A809D +S32100019DC8660E2045D1FC00008A1420836000061A4A8467402C3C0001A4242F023A +S32100019DE42F064E944A8067044A9267462045D1FC00008A1826902F132F064879C5 +S32100019E000000F6AC4EB900004708486A00044EB900003E004A92670005D8601AB2 +S32100019E1C2F02487A06044E944A8066522045D1FC00008A182083600005BC4A845C +S32100019E3867402C3C0001A42C2F022F064E944A8067044A9267462045D1FC0000EF +S32100019E548A1C26902F132F0648790000F6AC4EB900004708486A00044EB90000A2 +S32100019E703E004A926700057A601A2F02487A05AE4E944A80664E2045D1FC00001D +S32100019E8C8A1C20836000055E2C3C0001A4342F022F064E944A8067044A92674660 +S32100019EA82045D1FC00008A2026902F132F0648790000F6AC4EB900004708486A23 +S32100019EC400044EB900003E004A9267000520601A2F02487A055C4E944A80665298 +S32100019EE02045D1FC00008A202083600005044A8467402C3C0001A43C2F022F0653 +S32100019EFC4E944A8067044A9267462045D1FC00008A2426902F132F0648790000D5 +S32100019F18F6AC4EB900004708486A00044EB900003E004A92670004C2601A2F027F +S32100019F34487A05064E944A80664E2045D1FC00008A242083600004A62C3C0001E7 +S32100019F50A4442F022F064E944A8067044A9267462045D1FC00008A2826902F1324 +S32100019F6C2F0648790000F6AC4EB900004708486A00044EB900003E004A926700A6 +S32100019F880468601A2F02487A04B44E944A8066522045D1FC00008A2820836000DA +S32100019FA4044C4A8467402C3C000198D82F022F064E944A8067044A92674A20458D +S32100019FC0D1FC00008A2C26902F132F0648790000F6AC4EB900004708486A00045F +S32100019FDC4EB900003E004A926700040A601E2F02487AF8EA4E944A80660E2045F4 +S32100019FF8D1FC00008A2C2083600003EE4A8467402C3C0001A44C2F022F064E94B9 +S3210001A0144A8067044A9267462045D1FC00008A3026902F132F0648790000F6ACEF +S3210001A0304EB900004708486A00044EB900003E004A92670003AC601A2F02487A5D +S3210001A04C04004E944A8066522045D1FC00008A302083600003904A8467402C3C2A +S3210001A0680001A4542F022F064E944A8067044A9267462045D1FC00008A34269030 +S3210001A0842F132F0648790000F6AC4EB900004708486A00044EB900003E004A92B2 +S3210001A0A06700034E601A2F02487A03AA4E944A80664E2045D1FC00008A342083D8 +S3210001A0BC600003322C3C0001A45C2F022F064E944A8067044A9267462045D1FC4B +S3210001A0D800008A3826902F132F0648790000F6AC4EB900004708486A00044EB900 +S3210001A0F400003E004A92670002F4601A2F02487A03584E944A8066522045D1FC74 +S3210001A11000008A382083600002D84A8467402C3C0001A4642F022F064E944A8095 +S3210001A12C67044A9267462045D1FC00008A3C26902F132F0648790000F6AC4EB98D +S3210001A14800004708486A00044EB900003E004A9267000296601A2F02487A03025D +S3210001A1644E944A80664E2045D1FC00008A3C20836000027A2C3C0001A46C2F0257 +S3210001A1802F064E944A8067044A9267462045D1FC00008A4026902F132F064879FD +S3210001A19C0000F6AC4EB900004708486A00044EB900003E004A926700023C601AB2 +S3210001A1B82F02487A02B04E944A8066522045D1FC00008A402083600002204A848C +S3210001A1D467402C3C0001A4742F022F064E944A8067044A92674A2045D1FC000004 +S3210001A1F08A4426902F132F0648790000F6AC4EB900004708486A00044EB90000DB +S3210001A20C3E004A92670001DE601E2F02487A025A4E944A80660E2045D1FC0000B0 +S3210001A2288A442083600001C24A8467402C3C0001A47C2F022F064E944A80670404 +S3210001A2444A9267462045D1FC00008A4826902F132F0648790000F6AC4EB90000D3 +S3210001A2604708486A00044EB900003E004A9267000180601A2F02487A02044E9478 +S3210001A27C4A8066522045D1FC00008A482083600001644A8467402C3C0001A484CB +S3210001A2982F022F064E944A8067044A9267462045D1FC00008A7C26902F132F0638 +S3210001A2B448790000F6AC4EB900004708486A00044EB900003E004A92670001226D +S3210001A2D0601A2F02487A01AE4E944A80664E2045D1FC00008A7C208360000106AD +S3210001A2EC2C3C0001A48C2F022F064E944A8067044A9267462045D1FC00008A8074 +S3210001A30826902F132F0648790000F6AC4EB900004708486A00044EB900003E0051 +S3210001A3244A92670000C8601A2F02487A015C4E944A8066502045D1FC00008A80A3 +S3210001A3402083600000AC4A84673E263C0001A4942F022F034E944A8067044A92E7 +S3210001A35C67422045D1FC00008A8426902F132F0348790000F6AC4EB90000470812 +S3210001A378486A00044EB900003E004A92676A60182F02487A01084E944A8066464E +S3210001A3942045D1FC00008A8420836050263C0001A49C2F022F034E944A806704F6 +S3210001A3B04A92673C2045D1FC00008A8826902F132F0348790000F6AC4EB9000033 +S3210001A3CC4708486A00044EB900003E0060162F02487A00BE4E944A80660A20457C +S3210001A3E8D1FC00008A8820834CEE1C7CFFE04E5E4E7551FC444D43520051FC519F +S3210001A404445443520051FC5144435441523000514443544152310051444354416F +S3210001A420523200514443544152330051444354415234005144435441523500516B +S3210001A43C4443544152360051444354415237005144495253520051FC4454465211 +S3210001A4580051FC51445246520051FC51445446445230005144544644523100518C +S3210001A47444544644523200514454464452330051445246445230005144524644C3 +S3210001A49052310051445246445232005144524644523300514E56FFDC48D73C7C94 +S3210001A4AC242E00082A2E000C282E001045F90002B3F047EA000849F910000000FB +S3210001A4C8263C00004F904A85673C2C3C0001A7682F022F062A434E954A8067045B +S3210001A4E44A92673C26AC7F002F132F0648790000F6AC4EB900004708486A00049F +S3210001A5004EB900003E004A926700025460162F02487A02562A434E954A806644D5 +S3210001A51C29447F006000023C2C3C0001A7702F022F062A434E954A8067044A924B +S3210001A538673A26AC7F042F132F0648790000F6AC4EB900004708486A00044EB91D +S3210001A55400003E004A926700020260142F02487A020C4E954A80664829447F049F +S3210001A570600001EC4A85673C2C3C0001A7782F022F062A434E954A8067044A92BA +S3210001A58C673C26AC7F082F132F0648790000F6AC4EB900004708486A00044EB9C3 +S3210001A5A800003E004A92670001AE60162F02487A01C02A434E954A806644294405 +S3210001A5C47F08600001962C3C0001A7802F022F062A434E954A8067044A92673AFE +S3210001A5E026AC7F0C2F132F0648790000F6AC4EB900004708486A00044EB900000E +S3210001A5FC3E004A926700015C60142F02487A01764E954A80664829447F0C6000CD +S3210001A61801464A85673C2C3C0001A7882F022F062A434E954A8067044A92674060 +S3210001A63426AC7F102F132F0648790000F6AC4EB900004708486A00044EB90000B5 +S3210001A6503E004A9267000108601A2F02487A012A2A434E954A80660829447F1041 +S3210001A66C600000F04A85673C2C3C0001A7902F022F062A434E954A8067044A92A2 +S3210001A688673C26AC7F142F132F0648790000F6AC4EB900004708486A00044EB9BA +S3210001A6A400003E004A92670000B260162F02487A00DC24434E924A8066462944F1 +S3210001A6C07F146000009A4A85673A283C0001A7982F022F042A434E954A806704ED +S3210001A6DC4A92673826AC7F182F132F0448790000F6AC4EB900004708486A000493 +S3210001A6F84EB900003E004A92675C60142F02487A009024434E924A80663C294444 +S3210001A7147F186046283C0001A7A02F022F042A434E954A8067044A92673026AC0B +S3210001A7307F1C2F132F0448790000F6AC4EB900004708486A00044EB900003E0042 +S3210001A74C60102F02487A004E4E924A80660429447F1C4CEE3C7CFFDC4E5E4E75E1 +S3210001A76843544352463000514354435246310051435443524632005143544352C6 +S3210001A78446330051435443525634005143544352563500514354435256360051D0 +S3210001A7A043544352563700514E56FFE048D71C7C242E0008282E000C262E001032 +S3210001A7BC45F90002B3F047EA000849F900004F902A3C100000004A8467402C3CEA +S3210001A7D80001B4782F022F064E944A8067044A9267462045D1FC000098042690A7 +S3210001A7F42F132F0648790000F6AC4EB900004708486A00044EB900003E004A923B +S3210001A81067000C5C601A2F02487A0C5E4E944A80664E2045D1FC000098042083AE +S3210001A82C60000C402C3C0001B4802F022F064E944A8067044A9267462045D1FC88 +S3210001A8480000980826902F132F0648790000F6AC4EB900004708486A00044EB9AA +S3210001A86400003E004A9267000C02601A2F02487A0C0C4E944A8066522045D1FC27 +S3210001A88000009808208360000BE64A8467402C3C0001B4882F022F064E944A80F5 +S3210001A89C67044A9267462045D1FC0000982426902F132F0648790000F6AC4EB920 +S3210001A8B800004708486A00044EB900003E004A9267000BA4601A2F02487A0BB613 +S3210001A8D44E944A80664E2045D1FC00009824208360000B882C3C0001B4902F029F +S3210001A8F02F064E944A8067044A9267462045D1FC0000984026902F132F06487978 +S3210001A90C0000F6AC4EB900004708486A00044EB900003E004A9267000B4A601A23 +S3210001A9282F02487A0B644E944A8066522045D1FC00009840208360000B2E4A8432 +S3210001A94467402C3C0001B4982F022F064E944A8067044A92674A2045D1FC000058 +S3210001A960984426902F132F0648790000F6AC4EB900004708486A00044EB9000055 +S3210001A97C3E004A9267000AEC601E2F02487A0B0E4E944A80660E2045D1FC000065 +S3210001A9989844208360000AD04A8467402C3C0001B4A02F022F064E944A80670434 +S3210001A9B44A9267462045D1FC0000986426902F132F0648790000F6AC4EB9000032 +S3210001A9D04708486A00044EB900003E004A9267000A8E601A2F02487A0AB84E942E +S3210001A9EC4A8066522045D1FC00009864208360000A724A8467402C3C0001B4A8DF +S3210001AA082F022F064E944A8067044A9267462045D1FC0000988426902F132F06AA +S3210001AA2448790000F6AC4EB900004708486A00044EB900003E004A9267000A30DE +S3210001AA40601A2F02487A0A624E944A80664E2045D1FC00009884208360000A144B +S3210001AA5C2C3C0001B4B02F022F064E944A8067044A9267462045D1FC00009888B2 +S3210001AA7826902F132F0648790000F6AC4EB900004708486A00044EB900003E00DA +S3210001AA944A92670009D6601A2F02487A0A104E944A8066522045D1FC0000988840 +S3210001AAB02083600009BA4A8467402C3C0001B4B82F022F064E944A8067044A921A +S3210001AACC67462045D1FC000098C426902F132F0648790000F6AC4EB90000470846 +S3210001AAE8486A00044EB900003E004A9267000978601A2F02487A09BA4E944A80B0 +S3210001AB04664E2045D1FC000098C420836000095C2C3C0001B4C02F022F064E945F +S3210001AB204A8067044A9267462045D1FC000098E426902F132F0648790000F6AC16 +S3210001AB3C4EB900004708486A00044EB900003E004A926700091E601A2F02487ACE +S3210001AB5809684E944A8066522045D1FC000098E42083600009024A8467402C3C6C +S3210001AB740001B4C82F022F064E944A8067044A92674A2045D1FC000098E82690CF +S3210001AB902F132F0648790000F6AC4EB900004708486A00044EB900003E004A929B +S3210001ABAC670008C0601E2F02487A09124E944A80660E2045D1FC000098E8208356 +S3210001ABC8600008A44A8467402C3C0001B4D02F022F064E944A8067044A926746F6 +S3210001ABE42045D1FC000098EC26902F132F0648790000F6AC4EB900004708486A00 +S3210001AC0000044EB900003E004A9267000862601A2F02487A08BC4E944A806652A6 +S3210001AC1C2045D1FC000098EC2083600008464A8467402C3C0001B4D82F022F063E +S3210001AC384E944A8067044A9267462045D1FC0000991826902F132F064879000088 +S3210001AC54F6AC4EB900004708486A00044EB900003E004A9267000804601A2F02F0 +S3210001AC70487A08664E944A80664E2045D1FC000099182083600007E82C3C0001F3 +S3210001AC8CB4E02F022F064E944A8067044A9267462045D1FC0000991C26902F132C +S3210001ACA82F0648790000F6AC4EB900004708486A00044EB900003E004A9267005D +S3210001ACC407AA601A2F02487A08144E944A8066522045D1FC0000991C20836000E5 +S3210001ACE0078E4A8467402C3C0001B4E82F022F064E944A8067044A9267462045D7 +S3210001ACFCD1FC0000992026902F132F0648790000F6AC4EB900004708486A000413 +S3210001AD184EB900003E004A926700074C601A2F02487A07BE4E944A80664E204546 +S3210001AD34D1FC000099202083600007302C3C0001B4F02F022F064E944A806704B2 +S3210001AD504A9267462045D1FC0000992426902F132F0648790000F6AC4EB90000D1 +S3210001AD6C4708486A00044EB900003E004A92670006F2601A2F02487A076C4E947D +S3210001AD884A8066522045D1FC000099242083600006D64A8467402C3C0001B4F8CE +S3210001ADA42F022F064E944A8067044A92674A2045D1FC0000994426902F132F0646 +S3210001ADC048790000F6AC4EB900004708486A00044EB900003E004A9267000694DF +S3210001ADDC601E2F02487A07164E944A80660E2045D1FC0000994420836000067816 +S3210001ADF84A8467402C3C0001B5042F022F064E944A8067044A9267462045D1FC69 +S3210001AE140000998426902F132F0648790000F6AC4EB900004708486A00044EB95B +S3210001AE3000003E004A9267000636601A2F02487A06C44E944A8066522045D1FC75 +S3210001AE4C0000998420836000061A4A8467402C3C0001B5102F022F064E944A80EE +S3210001AE6867044A9267462045D1FC0000998826902F132F0648790000F6AC4EB9E9 +S3210001AE8400004708486A00044EB900003E004A92670005D8601A2F02487A06725C +S3210001AEA04E944A80664E2045D1FC000099882083600005BC2C3C0001B51C2F02AD +S3210001AEBC2F064E944A8067044A9267462045D1FC0000998C26902F132F06487959 +S3210001AED80000F6AC4EB900004708486A00044EB900003E004A926700057E601A24 +S3210001AEF42F02487A06244E944A8066522045D1FC0000998C2083600005624A842B +S3210001AF1067402C3C0001B5282F022F064E944A8067044A9267462045D1FC0000F9 +S3210001AF2C999026902F132F0648790000F6AC4EB900004708486A00044EB9000036 +S3210001AF483E004A9267000520601A2F02487A05D24E944A80664E2045D1FC00006A +S3210001AF6499902083600005042C3C0001B5342F022F064E944A8067044A9267463D +S3210001AF802045D1FC0000999426902F132F0648790000F6AC4EB900004708486AB7 +S3210001AF9C00044EB900003E004A92670004C6601A2F02487A05844E944A806652E2 +S3210001AFB82045D1FC000099942083600004AA4A8467402C3C0001B5402F022F062D +S3210001AFD44E944A8067044A92674A2045D1FC0000999826902F132F064879000065 +S3210001AFF0F6AC4EB900004708486A00044EB900003E004A9267000468601E2F02ED +S3210001B00C487A05324E944A80660E2045D1FC0000999820836000044C4A846740DD +S3210001B0282C3C0001B54C2F022F064E944A8067044A9267462045D1FC0000999C2E +S3210001B04426902F132F0648790000F6AC4EB900004708486A00044EB900003E0008 +S3210001B0604A926700040A601A2F02487A04E04E944A8066522045D1FC0000999C60 +S3210001B07C2083600003EE4A8467402C3C0001B5582F022F064E944A8067044A9279 +S3210001B09867462045D1FC000099A026902F132F0648790000F6AC4EB90000470897 +S3210001B0B4486A00044EB900003E004A92670003AC601A2F02487A048E4E944A80E1 +S3210001B0D0664E2045D1FC000099A02083600003902C3C0001B5642F022F064E94DE +S3210001B0EC4A8067044A9267462045D1FC000099A426902F132F0648790000F6AC84 +S3210001B1084EB900004708486A00044EB900003E004A9267000352601A2F02487ACE +S3210001B12404404E944A8066522045D1FC000099A42083600003364A8467402C3CD8 +S3210001B1400001B5702F022F064E944A8067044A9267462045D1FC000099A8269097 +S3210001B15C2F132F0648790000F6AC4EB900004708486A00044EB900003E004A92C9 +S3210001B178670002F4601A2F02487A03EE4E944A80664E2045D1FC000099A8208383 +S3210001B194600002D82C3C0001B57C2F022F064E944A8067044A9267462045D1FC8C +S3210001B1B0000099AC26902F132F0648790000F6AC4EB900004708486A00044EB994 +S3210001B1CC00003E004A926700029A601A2F02487A03A04E944A8066522045D1FC9D +S3210001B1E8000099AC20836000027E4A8467402C3C0001B5882F022F064E944A804F +S3210001B20467044A92674A2045D1FC000099B026902F132F0648790000F6AC4EB91D +S3210001B22000004708486A00044EB900003E004A926700023C601E2F02487A034E7E +S3210001B23C4E944A80660E2045D1FC000099B02083600002204A8467402C3C000151 +S3210001B258B5942F022F064E944A8067044A9267462045D1FC000099B426902F130D +S3210001B2742F0648790000F6AC4EB900004708486A00044EB900003E004A9267008B +S3210001B29001DE601A2F02487A02FC4E944A8066522045D1FC000099B4208360006B +S3210001B2AC01C24A8467402C3C0001B5A02F022F064E944A8067044A92674620451E +S3210001B2C8D1FC000099B826902F132F0648790000F6AC4EB900004708486A0004A9 +S3210001B2E44EB900003E004A9267000180601A2F02487A02AA4E944A80664E204560 +S3210001B300D1FC000099B82083600001642C3C0001B5AC2F022F064E944A8067045D +S3210001B31C4A9267462045D1FC000099BC26902F132F0648790000F6AC4EB9000067 +S3210001B3384708486A00044EB900003E004A9267000126601A2F02487A025C4E9491 +S3210001B3544A8066522045D1FC000099BC20836000010A4A8467402C3C0001B5B874 +S3210001B3702F022F064E944A8067044A9267462045D1FC000099C026902F132F06FC +S3210001B38C48790000F6AC4EB900004708486A00044EB900003E004A92670000C8DF +S3210001B3A8601A2F02487A020A4E944A80664C2045D1FC000099C02083600000AC71 +S3210001B3C42C3C0001B5C42F022F064E944A8067044A9267422045D1FC000099C4F3 +S3210001B3E026902F132F0648790000F6AC4EB900004708486A00044EB900003E0069 +S3210001B3FC4A92676E60182F02487A01BE4E944A80664A2045D1FC000099C42083C5 +S3210001B41860544A84673A263C0001B5CC2F022F034E944A8067044A92673C2045AC +S3210001B434D1FC000099C826902F132F0348790000F6AC4EB900004708486A00042E +S3210001B4504EB900003E0060162F02487A01704E944A80660A2045D1FC000099C80B +S3210001B46C20834CEE1C7CFFE04E5E4E75454952310051FC5145494D52310051FCA0 +S3210001B488454352310051FC514D4D4652310051FC4D534352310051FC4D4942437A +S3210001B4A4310051FC524352310051FC51525F484153483100544352310051FC5193 +S3210001B4C050414C52310051FC50415552310051FC4F5044310051FC514941555223 +S3210001B4DC310051FC49414C52310051FC47415552310051FC47414C52310051FCD8 +S3210001B4F846454354465752310051FC5146454352464452310051FC514645435266 +S3210001B514465352310051FC5146454352464352310051FC51464543524C5246503C +S3210001B530310051FC464543524C574650310051FC46454352464152310051FC51DB +S3210001B54C46454352465250310051FC5146454352465750310051FC514645435407 +S3210001B568464452310051FC5146454354465352310051FC5146454354464352310B +S3210001B5840051FC51464543544C524650310051FC464543544C574650310051FC59 +S3210001B5A046454354464152310051FC5146454354465250310051FC5146454354C3 +S3210001B5BC465750310051FC5146525354310051FC43544357523100514E56FFE06B +S3210001B5D848D71C7C242E0008282E000C262E001045F90002B3F047EA000849F91B +S3210001B5F400004F902A3C100000004A8467402C3C0001C2A42F022F064E944A8089 +S3210001B61067044A9267462045D1FC0000900426902F132F0648790000F6AC4EB9C6 +S3210001B62C00004708486A00044EB900003E004A9267000C5C601A2F02487A0C5E2F +S3210001B6484E944A80664E2045D1FC00009004208360000C402C3C0001C2AC2F0262 +S3210001B6642F064E944A8067044A9267462045D1FC0000900826902F132F06487936 +S3210001B6800000F6AC4EB900004708486A00044EB900003E004A9267000C02601AE9 +S3210001B69C2F02487A0C0C4E944A8066522045D1FC00009008208360000BE64A8490 +S3210001B6B867402C3C0001C2B42F022F064E944A8067044A9267462045D1FC0000B1 +S3210001B6D4902426902F132F0648790000F6AC4EB900004708486A00044EB90000FC +S3210001B6F03E004A9267000BA4601A2F02487A0BB64E944A80664E2045D1FC000047 +S3210001B70C9024208360000B882C3C0001C2BC2F022F064E944A8067044A926746E3 +S3210001B7282045D1FC0000904026902F132F0648790000F6AC4EB900004708486A64 +S3210001B74400044EB900003E004A9267000B4A601A2F02487A0B644E944A806652C1 +S3210001B7602045D1FC00009040208360000B2E4A8467402C3C0001C2C42F022F06BE +S3210001B77C4E944A8067044A92674A2045D1FC0000904426902F132F064879000012 +S3210001B798F6AC4EB900004708486A00044EB900003E004A9267000AEC601E2F02B3 +S3210001B7B4487A0B0E4E944A80660E2045D1FC00009044208360000AD04A8467401F +S3210001B7D02C3C0001C2CC2F022F064E944A8067044A9267462045D1FC0000906433 +S3210001B7EC26902F132F0648790000F6AC4EB900004708486A00044EB900003E0059 +S3210001B8084A9267000A8E601A2F02487A0AB84E944A8066522045D1FC0000906489 +S3210001B824208360000A724A8467402C3C0001C2D42F022F064E944A8067044A92B5 +S3210001B84067462045D1FC0000908426902F132F0648790000F6AC4EB9000047080C +S3210001B85C486A00044EB900003E004A9267000A30601A2F02487A0A624E944A80CC +S3210001B878664E2045D1FC00009084208360000A142C3C0001C2DC2F022F064E9443 +S3210001B8944A8067044A9267462045D1FC0000908826902F132F0648790000F6ACF9 +S3210001B8B04EB900004708486A00044EB900003E004A92670009D6601A2F02487A95 +S3210001B8CC0A104E944A8066522045D1FC000090882083600009BA4A8467402C3CEE +S3210001B8E80001C2E42F022F064E944A8067044A9267462045D1FC000090C4269054 +S3210001B9042F132F0648790000F6AC4EB900004708486A00044EB900003E004A9219 +S3210001B92067000978601A2F02487A09BA4E944A80664E2045D1FC000090C4208363 +S3210001B93C6000095C2C3C0001C2EC2F022F064E944A8067044A9267462045D1FCD4 +S3210001B958000090E426902F132F0648790000F6AC4EB900004708486A00044EB9B5 +S3210001B97400003E004A926700091E601A2F02487A09684E944A8066522045D1FC94 +S3210001B990000090E42083600009024A8467402C3C0001C2F42F022F064E944A806C +S3210001B9AC67044A92674A2045D1FC000090E826902F132F0648790000F6AC4EB93F +S3210001B9C800004708486A00044EB900003E004A92670008C0601E2F02487A09127B +S3210001B9E44E944A80660E2045D1FC000090E82083600008A44A8467402C3C0001E9 +S3210001BA00C2FC2F022F064E944A8067044A9267462045D1FC000090EC26902F13B9 +S3210001BA1C2F0648790000F6AC4EB900004708486A00044EB900003E004A926700DB +S3210001BA380862601A2F02487A08BC4E944A8066522045D1FC000090EC208360003B +S3210001BA5408464A8467402C3C0001C3042F022F064E944A8067044A926746204571 +S3210001BA70D1FC0000911826902F132F0648790000F6AC4EB900004708486A0004A1 +S3210001BA8C4EB900003E004A9267000804601A2F02487A08664E944A80664E204563 +S3210001BAA8D1FC000091182083600007E82C3C0001C30C2F022F064E944A8067045E +S3210001BAC44A9267462045D1FC0000911C26902F132F0648790000F6AC4EB9000060 +S3210001BAE04708486A00044EB900003E004A92670007AA601A2F02487A08144E949A +S3210001BAFC4A8066522045D1FC0000911C20836000078E4A8467402C3C0001C31479 +S3210001BB182F022F064E944A8067044A9267462045D1FC0000912026902F132F06F4 +S3210001BB3448790000F6AC4EB900004708486A00044EB900003E004A926700074CA4 +S3210001BB50601A2F02487A07BE4E944A80664E2045D1FC0000912020836000073023 +S3210001BB6C2C3C0001C31C2F022F064E944A8067044A9267462045D1FC0000912481 +S3210001BB8826902F132F0648790000F6AC4EB900004708486A00044EB900003E00B9 +S3210001BBA44A92670006F2601A2F02487A076C4E944A8066522045D1FC0000912418 +S3210001BBC02083600006D64A8467402C3C0001C3242F022F064E944A8067044A9265 +S3210001BBDC674A2045D1FC0000914426902F132F0648790000F6AC4EB900004708A8 +S3210001BBF8486A00044EB900003E004A9267000694601E2F02487A07164E944A8018 +S3210001BC14660E2045D1FC000091442083600006784A8467402C3C0001C3302F020F +S3210001BC302F064E944A8067044A9267462045D1FC0000918426902F132F064879E7 +S3210001BC4C0000F6AC4EB900004708486A00044EB900003E004A9267000636601AE9 +S3210001BC682F02487A06C44E944A8066522045D1FC0000918420836000061A4A8460 +S3210001BC8467402C3C0001C33C2F022F064E944A8067044A9267462045D1FC000056 +S3210001BCA0918826902F132F0648790000F6AC4EB900004708486A00044EB90000C5 +S3210001BCBC3E004A92670005D8601A2F02487A06724E944A80664E2045D1FC000090 +S3210001BCD891882083600005BC2C3C0001C3482F022F064E944A8067044A926746F2 +S3210001BCF42045D1FC0000918C26902F132F0648790000F6AC4EB900004708486A46 +S3210001BD1000044EB900003E004A926700057E601A2F02487A06244E944A80665206 +S3210001BD2C2045D1FC0000918C2083600005624A8467402C3C0001C3542F022F06E0 +S3210001BD484E944A8067044A9267462045D1FC0000919026902F132F0648790000F7 +S3210001BD64F6AC4EB900004708486A00044EB900003E004A9267000520601A2F02B6 +S3210001BD80487A05D24E944A80664E2045D1FC000091902083600005042C3C0001DF +S3210001BD9CC3602F022F064E944A8067044A9267462045D1FC0000919426902F130C +S3210001BDB82F0648790000F6AC4EB900004708486A00044EB900003E004A9267003C +S3210001BDD404C6601A2F02487A05844E944A8066522045D1FC0000919420836000CE +S3210001BDF004AA4A8467402C3C0001C36C2F022F064E944A8067044A92674A204506 +S3210001BE0CD1FC0000919826902F132F0648790000F6AC4EB900004708486A000481 +S3210001BE284EB900003E004A9267000468601E2F02487A05324E944A80660E2045D6 +S3210001BE44D1FC0000919820836000044C4A8467402C3C0001C3782F022F064E9431 +S3210001BE604A8067044A9267462045D1FC0000919C26902F132F0648790000F6AC12 +S3210001BE7C4EB900004708486A00044EB900003E004A926700040A601A2F02487A94 +S3210001BE9804E04E944A8066522045D1FC0000919C2083600003EE4A8467402C3C0F +S3210001BEB40001C3842F022F064E944A8067044A9267462045D1FC000091A0269004 +S3210001BED02F132F0648790000F6AC4EB900004708486A00044EB900003E004A9248 +S3210001BEEC670003AC601A2F02487A048E4E944A80664E2045D1FC000091A02083B8 +S3210001BF08600003902C3C0001C3902F022F064E944A8067044A9267462045D1FC2F +S3210001BF24000091A426902F132F0648790000F6AC4EB900004708486A00044EB922 +S3210001BF4000003E004A9267000352601A2F02487A04404E944A8066522045D1FCC1 +S3210001BF5C000091A42083600003364A8467402C3C0001C39C2F022F064E944A8002 +S3210001BF7867044A9267462045D1FC000091A826902F132F0648790000F6AC4EB9B0 +S3210001BF9400004708486A00044EB900003E004A92670002F4601A2F02487A03EEA9 +S3210001BFB04E944A80664E2045D1FC000091A82083600002D82C3C0001C3A82F02C1 +S3210001BFCC2F064E944A8067044A9267462045D1FC000091AC26902F132F06487920 +S3210001BFE80000F6AC4EB900004708486A00044EB900003E004A926700029A601AEA +S3210001C0042F02487A03A04E944A8066522045D1FC000091AC20836000027E4A845F +S3210001C02067402C3C0001C3B42F022F064E944A8067044A92674A2045D1FC00003A +S3210001C03C91B026902F132F0648790000F6AC4EB900004708486A00044EB90000FD +S3210001C0583E004A926700023C601E2F02487A034E4E944A80660E2045D1FC0000F2 +S3210001C07491B02083600002204A8467402C3C0001C3C02F022F064E944A80670465 +S3210001C0904A9267462045D1FC000091B426902F132F0648790000F6AC4EB90000F6 +S3210001C0AC4708486A00044EB900003E004A92670001DE601A2F02487A02FC4E94B8 +S3210001C0C84A8066522045D1FC000091B42083600001C24A8467402C3C0001C3CC29 +S3210001C0E42F022F064E944A8067044A9267462045D1FC000091B826902F132F068B +S3210001C10048790000F6AC4EB900004708486A00044EB900003E004A9267000180A4 +S3210001C11C601A2F02487A02AA4E944A80664E2045D1FC000091B8208360000164A4 +S3210001C1382C3C0001C3D82F022F064E944A8067044A9267462045D1FC000091BC5B +S3210001C15426902F132F0648790000F6AC4EB900004708486A00044EB900003E00E7 +S3210001C1704A9267000126601A2F02487A025C4E944A8066522045D1FC000091BC94 +S3210001C18C20836000010A4A8467402C3C0001C3E42F022F064E944A8067044A92A4 +S3210001C1A867462045D1FC000091C026902F132F0648790000F6AC4EB9000047085E +S3210001C1C4486A00044EB900003E004A92670000C8601A2F02487A020A4E944A802D +S3210001C1E0664C2045D1FC000091C02083600000AC2C3C0001C3F02F022F064E94F4 +S3210001C1FC4A8067044A9267422045D1FC000091C426902F132F0648790000F6AC4F +S3210001C2184EB900004708486A00044EB900003E004A92676E60182F02487A01BED7 +S3210001C2344E944A80664A2045D1FC000091C4208360544A84673A263C0001C3F820 +S3210001C2502F022F034E944A8067044A92673C2045D1FC000091C826902F132F031D +S3210001C26C48790000F6AC4EB900004708486A00044EB900003E0060162F02487A92 +S3210001C28801704E944A80660A2045D1FC000091C820834CEE1C7CFFE04E5E4E75B8 +S3210001C2A4454952300051FC5145494D52300051FC454352300051FC514D4D465245 +S3210001C2C0300051FC4D534352300051FC4D494243300051FC524352300051FC51DF +S3210001C2DC525F484153483000544352300051FC5150414C52300051FC504155529F +S3210001C2F8300051FC4F5044300051FC5149415552300051FC49414C52300051FCA2 +S3210001C31447415552300051FC47414C52300051FC46454354465752300051FC51D8 +S3210001C33046454352464452300051FC5146454352465352300051FC514645435227 +S3210001C34C464352300051FC51464543524C524650300051FC464543524C574650FB +S3210001C368300051FC46454352464152300051FC5146454352465250300051FC5198 +S3210001C38446454352465750300051FC5146454354464452300051FC5146454354CD +S3210001C3A0465352300051FC5146454354464352300051FC51464543544C524650A0 +S3210001C3BC300051FC464543544C574650300051FC46454354464152300051FC5140 +S3210001C3D846454354465250300051FC5146454354465750300051FC51465253544E +S3210001C3F4300051FC43544357523000514E56FFEC48D71C0C242E000845F9000235 +S3210001C410B3F04AAE000C49F9100000006740263C0001C4D047EA00082F022F03D6 +S3210001C42C4EB900004F904A8067044A92673C26AC0C002F132F0348790000F6AC9E +S3210001C4484EB900004708486A00044EB900003E004A92676860182F02487A006EFC +S3210001C4644EB900004F904A806640296E00100C00604E263C0001C4D82F022F039C +S3210001C4804EB900004F904A8067044A92673626AC0C042F132F0348790000F6AC4C +S3210001C49C4EB900004708486A00044EB900003E0060162F02487A00264EB9000096 +S3210001C4B84F904A806606296E00100C044CEE1C0CFFEC4E5E4E7551FC5041435266 +S3210001C4D40051FC51504153520051FC514E56FFDC48D73C7C242E0008282E000CC1 +S3210001C4F0262E001045F90002B3F047EA000849F9100000002A3C00004F904A8444 +S3210001C50C673C2C3C0001D4D82F022F062A454E954A8067044A92673C26AC0B000B +S3210001C5282F132F0648790000F6AC4EB900004708486A00044EB900003E004A92E9 +S3210001C54467000F8660162F02487A0F8A2A454E954A80664429430B0060000F6EBC +S3210001C5602C3C0001D4E02F022F062A454E954A8067044A92673A26AC0B042F130E +S3210001C57C2F0648790000F6AC4EB900004708486A00044EB900003E004A92670070 +S3210001C5980F3460142F02487A0F404E954A80664829430B0460000F1E4A84673CB3 +S3210001C5B42C3C0001D4E82F022F062A454E954A8067044A92673C26AC0B082F13AC +S3210001C5D02F0648790000F6AC4EB900004708486A00044EB900003E004A9267001C +S3210001C5EC0EE060162F02487A0EF42A454E954A80664429430B0860000EC82C3CF0 +S3210001C6080001D4F42F022F062A454E954A8067044A92673A26AC0B0C2F132F067C +S3210001C62448790000F6AC4EB900004708486A00044EB900003E004A9267000E8E60 +S3210001C64060142F02487A0EAE4E954A80664829430B0C60000E784A84673C2C3C17 +S3210001C65C0001D4FC2F022F062A454E954A8067044A92674026AC0B102F132F0616 +S3210001C67848790000F6AC4EB900004708486A00044EB900003E004A9267000E3A60 +S3210001C694601A2F02487A0E622A454E954A80660829430B1060000E224A84673C94 +S3210001C6B02C3C0001D5042F022F062A454E954A8067044A92673C26AC0B142F1386 +S3210001C6CC2F0648790000F6AC4EB900004708486A00044EB900003E004A9267001F +S3210001C6E80DE460162F02487A0E142A454E954A80664829430B1460000DCC4A8457 +S3210001C704673C2C3C0001D50C2F022F062A454E954A8067044A92673C26AC0B3CA0 +S3210001C7202F132F0648790000F6AC4EB900004708486A00044EB900003E004A92EF +S3210001C73C67000D8E60162F02487A0DC62A454E954A80664429430B3C60000D7640 +S3210001C7582C3C0001D5142F022F062A454E954A8067044A92673A26AC0B602F1383 +S3210001C7742F0648790000F6AC4EB900004708486A00044EB900003E004A92670076 +S3210001C7900D3C60142F02487A0D7C4E954A80664829430B6060000D264A84673C17 +S3210001C7AC2C3C0001D51C2F022F062A454E954A8067044A92673C26AC0B642F1321 +S3210001C7C82F0648790000F6AC4EB900004708486A00044EB900003E004A92670022 +S3210001C7E40CE860162F02487A0D302A454E954A80664429430B6460000CD02C3C53 +S3210001C8000001D5282F022F062A454E954A8067044A92673A26AC0B682F132F06F1 +S3210001C81C48790000F6AC4EB900004708486A00044EB900003E004A9267000C9660 +S3210001C83860142F02487A0CEA4E954A80664829430B6860000C804A84673C2C3C81 +S3210001C8540001D5342F022F062A454E954A8067044A92674026AC0B6C2F132F0687 +S3210001C87048790000F6AC4EB900004708486A00044EB900003E004A9267000C4260 +S3210001C88C601A2F02487A0CA22A454E954A80660829430B6C60000C2A4A84673CFA +S3210001C8A82C3C0001D53C2F022F062A454E954A8067044A92673C26AC0B702F13F8 +S3210001C8C42F0648790000F6AC4EB900004708486A00044EB900003E004A92670025 +S3210001C8E00BEC60162F02487A0C542A454E954A80664829430B7060000BD44A84B7 +S3210001C8FC673C2C3C0001D5482F022F062A454E954A8067044A92673C26AC0B7433 +S3210001C9182F132F0648790000F6AC4EB900004708486A00044EB900003E004A92F5 +S3210001C93467000B9660162F02487A0C0A2A454E954A80664429430B7460000B7EBF +S3210001C9502C3C0001D5542F022F062A454E954A8067044A92673A26AC0B782F1331 +S3210001C96C2F0648790000F6AC4EB900004708486A00044EB900003E004A9267007C +S3210001C9880B4460142F02487A0BC44E954A80664829430B7860000B2E4A84673CB3 +S3210001C9A42C3C0001D5602F022F062A454E954A8067044A92673C26AC0B802F13C7 +S3210001C9C02F0648790000F6AC4EB900004708486A00044EB900003E004A92670028 +S3210001C9DC0AF060162F02487A0B7C2A454E954A80664429430B8060000AD82C3CE7 +S3210001C9F80001D5682F022F062A454E954A8067044A92673A26AC0B842F132F069C +S3210001CA1448790000F6AC4EB900004708486A00044EB900003E004A9267000A9E60 +S3210001CA3060142F02487A0B324E954A80664829430B8460000A884A84673C2C3C1E +S3210001CA4C0001D5702F022F062A454E954A8067044A92674026AC0B882F132F0635 +S3210001CA6848790000F6AC4EB900004708486A00044EB900003E004A9267000A4A60 +S3210001CA84601A2F02487A0AE62A454E954A80660829430B8860000A324A84673C9C +S3210001CAA02C3C0001D5782F022F062A454E954A8067044A92673C26AC0BF82F133A +S3210001CABC2F0648790000F6AC4EB900004708486A00044EB900003E004A9267002B +S3210001CAD809F460162F02487A0A982A454E954A80664E29430BF8600009DC4A84E1 +S3210001CAF467422C3C0001D5802F022F062A454E954A8067044A926746204CD1FC09 +S3210001CB100000840026902F132F0648790000F6AC4EB900004708486A00044EB9DB +S3210001CB2C00003E004A9267000998601A2F02487A0A442A454E954A80664ED9FC64 +S3210001CB480000840028836000097C2C3C0001D5882F022F062A454E954A80670403 +S3210001CB644A926744204CD1FC0000840426902F132F0648790000F6AC4EB90000CF +S3210001CB804708486A00044EB900003E004A926700093C60182F02487A09F04E9579 +S3210001CB9C4A806652D9FC000084042883600009224A8467422C3C0001D5902F02EB +S3210001CBB82F062A454E954A8067044A926746204CD1FC0000840826902F132F0623 +S3210001CBD448790000F6AC4EB900004708486A00044EB900003E004A92670008DE61 +S3210001CBF0601A2F02487A099A2A454E954A80664ED9FC000084082883600008C20C +S3210001CC0C2C3C0001D5982F022F062A454E954A8067044A926744204CD1FC000082 +S3210001CC28840C26902F132F0648790000F6AC4EB900004708486A00044EB90000B6 +S3210001CC443E004A926700088260182F02487A09464E954A806652D9FC0000840C3E +S3210001CC602883600008684A8467422C3C0001D5A02F022F062A454E954A806704F4 +S3210001CC7C4A92674A204CD1FC0000841026902F132F0648790000F6AC4EB90000A4 +S3210001CC984708486A00044EB900003E004A9267000824601E2F02487A08F02A45E8 +S3210001CCB44E954A80660CD9FC000084102883600008084A8467422C3C0001D5A85D +S3210001CCD02F022F062A454E954A8067044A926746204CD1FC0000841426902F1302 +S3210001CCEC2F0648790000F6AC4EB900004708486A00044EB900003E004A926700F9 +S3210001CD0807C4601A2F02487A08982A454E954A806652D9FC0000841428836000E4 +S3210001CD2407A84A8467422C3C0001D5B02F022F062A454E954A8067044A92674662 +S3210001CD40204CD1FC0000841826902F132F0648790000F6AC4EB900004708486A63 +S3210001CD5C00044EB900003E004A9267000764601A2F02487A08402A454E954A80EC +S3210001CD78664ED9FC000084182883600007482C3C0001D5B82F022F062A454E956B +S3210001CD944A8067044A926744204CD1FC0000841C26902F132F0648790000F6AC57 +S3210001CDB04EB900004708486A00044EB900003E004A926700070860182F02487A52 +S3210001CDCC07EC4E954A806652D9FC0000841C2883600006EE4A8467422C3C000198 +S3210001CDE8D5C02F022F062A454E954A8067044A926746204CD1FC0000844026906A +S3210001CE042F132F0648790000F6AC4EB900004708486A00044EB900003E004A9204 +S3210001CE20670006AA601A2F02487A07962A454E954A80664ED9FC000084402883BA +S3210001CE3C6000068E2C3C0001D5C82F022F062A454E954A8067044A926744204CF9 +S3210001CE58D1FC0000844426902F132F0648790000F6AC4EB900004708486A000486 +S3210001CE744EB900003E004A926700064E60182F02487A07424E954A806652D9FCD1 +S3210001CE90000084442883600006344A8467422C3C0001D5D02F022F062A454E9535 +S3210001CEAC4A8067044A92674A204CD1FC0000844826902F132F0648790000F6AC0C +S3210001CEC84EB900004708486A00044EB900003E004A92670005F0601E2F02487A4D +S3210001CEE406EC2A454E954A80660CD9FC000084482883600005D44A8467422C3C47 +S3210001CF000001D5D82F022F062A454E954A8067044A926746204CD1FC0000844CE1 +S3210001CF1C26902F132F0648790000F6AC4EB900004708486A00044EB900003E0011 +S3210001CF384A9267000590601A2F02487A06942A454E954A806652D9FC0000844C7E +S3210001CF542883600005744A8467422C3C0001D5E02F022F062A454E954A806704B4 +S3210001CF704A926746204CD1FC0000845026902F132F0648790000F6AC4EB9000071 +S3210001CF8C4708486A00044EB900003E004A9267000530601A2F02487A063C2A45A2 +S3210001CFA84E954A80664ED9FC000084502883600005142C3C0001D5EC2F022F06A8 +S3210001CFC42A454E954A8067044A926744204CD1FC0000845426902F132F0648793D +S3210001CFE00000F6AC4EB900004708486A00044EB900003E004A92670004D46018A8 +S3210001CFFC2F02487A05EC4E954A806652D9FC000084542883600004BA4A846742DC +S3210001D0182C3C0001D5F82F022F062A454E954A8067044A926746204CD1FC000010 +S3210001D034848026902F132F0648790000F6AC4EB900004708486A00044EB9000032 +S3210001D0503E004A9267000476601A2F02487A059A2A454E954A80664ED9FC000011 +S3210001D06C848028836000045A2C3C0001D6002F022F062A454E954A8067044A922C +S3210001D0886744204CD1FC0000848426902F132F0648790000F6AC4EB900004708B3 +S3210001D0A4486A00044EB900003E004A926700041A60182F02487A05464E954A80AA +S3210001D0C06652D9FC000084842883600004004A8467422C3C0001D6082F022F0685 +S3210001D0DC2A454E954A8067044A92674A204CD1FC0000848826902F132F064879EA +S3210001D0F80000F6AC4EB900004708486A00044EB900003E004A92670003BC601EA2 +S3210001D1142F02487A04F02A454E954A80660CD9FC000084882883600003A04A8426 +S3210001D13067422C3C0001D6102F022F062A454E954A8067044A926746204CD1FC35 +S3210001D14C0000848C26902F132F0648790000F6AC4EB900004708486A00044EB90D +S3210001D16800003E004A926700035C601A2F02487A04982A454E954A806652D9FC12 +S3210001D1840000848C2883600003404A8467422C3C0001D6182F022F062A454E95A4 +S3210001D1A04A8067044A926746204CD1FC0000849026902F132F0648790000F6ACD1 +S3210001D1BC4EB900004708486A00044EB900003E004A92670002FC601A2F02487A51 +S3210001D1D804402A454E954A80664ED9FC000084902883600002E02C3C0001D620EB +S3210001D1F42F022F062A454E954A8067044A926744204CD1FC0000849826902F1357 +S3210001D2102F0648790000F6AC4EB900004708486A00044EB900003E004A926700CF +S3210001D22C02A060182F02487A03EC4E954A806652D9FC00008498288360000286FA +S3210001D2484A8467422C3C0001D6282F022F062A454E954A8067044A926746204C03 +S3210001D264D1FC0000849C26902F132F0648790000F6AC4EB900004708486A00041E +S3210001D2804EB900003E004A9267000242601A2F02487A03962A454E954A80664EE9 +S3210001D29CD9FC0000849C2883600002262C3C0001D6302F022F062A454E954A8056 +S3210001D2B867044A926744204CD1FC000084C026902F132F0648790000F6AC4EB94D +S3210001D2D400004708486A00044EB900003E004A92670001E660182F02487A034213 +S3210001D2F04E954A806652D9FC000084C02883600001CC4A8467422C3C0001D638D7 +S3210001D30C2F022F062A454E954A8067044A92674A204CD1FC000084C426902F130B +S3210001D3282F0648790000F6AC4EB900004708486A00044EB900003E004A926700B6 +S3210001D3440188601E2F02487A02EC2A454E954A80660CD9FC000084C42883600028 +S3210001D360016C4A8467422C3C0001D6402F022F062A454E954A8067044A926746D1 +S3210001D37C204CD1FC000084C826902F132F0648790000F6AC4EB900004708486A71 +S3210001D39800044EB900003E004A9267000128601A2F02487A029424454E924A80A7 +S3210001D3B46652D9FC000084C828836000010C4A8467422C3C0001D6482F022F0601 +S3210001D3D02A454E954A8067044A926746204CD1FC000084CC26902F132F064879B3 +S3210001D3EC0000F6AC4EB900004708486A00044EB900003E004A92670000C8601AA6 +S3210001D4082F02487A023C24454E924A80664CD9FC000084CC2883600000AC2C3CC7 +S3210001D4240001D6502F022F062A454E954A8067044A926740204CD1FC000084D0C1 +S3210001D44026902F132F0648790000F6AC4EB900004708486A00044EB900003E00E8 +S3210001D45C4A92676C60162F02487A01EA4E924A806648D9FC000084D028836054CA +S3210001D4784A84673A263C0001D65C2F022F032A454E954A8067044A92673AD9FC51 +S3210001D494000084D426942F132F0348790000F6AC4EB900004708486A00044EB979 +S3210001D4B000003E0060162F02487A01A224454E924A806608D9FC000084D42883B6 +S3210001D4CC4CEE3C7CFFDC4E5E4E7551FC5043494944520051504349534352005193 +S3210001D4E850434943435249520051FC515043494352310051504349424152300060 +S3210001D50450434942415231005043494352320051504349475343520050434954F3 +S3210001D52042415452300051FC5043495442415452310051FC504349544352005155 +S3210001D53C504349495730425441520051504349495731425441520051504349495A +S3210001D558573242544152005150434949574352005043494943520051504349496C +S3210001D5745352005150434943415200515043495450535200504349545341520060 +S3210001D59050434954544352005043495445520051504349544E4152005043495406 +S3210001D5AC4C5752005043495444435200504349545352005150434954464452002C +S3210001D5C850434954465352005043495446435200504349544641520050434954E1 +S3210001D5E4465250520051FC5150434954465750520051FC5150434952505352001C +S3210001D6005043495253415200504349525443520050434952455200515043495298 +S3210001D61C4E415200504349524443520050434952535200515043495246445200D5 +S3210001D6385043495246535200504349524643520050434952464152005043495278 +S3210001D654465250520051FC5150434952465750520051FC514E56FFDC48D73C7C7A +S3210001D670242E00082A2E000C282E001045F90002B3F047EA000849F91000000005 +S3210001D68C263C00004F904A85673C2C3C0001D9842F022F062A434E954A80670417 +S3210001D6A84A92673C26AC00042F132F0648790000F6AC4EB900004708486A000424 +S3210001D6C44EB900003E004A92670002AA60162F02487A02AE2A434E954A80664432 +S3210001D6E029440004600002922C3C0001D98C2F022F062A434E954A8067044A922D +S3210001D6FC673A26AC00202F132F0648790000F6AC4EB900004708486A00044EB98B +S3210001D71800003E004A926700025860142F02487A02644E954A806648294400205E +S3210001D734600002424A85673C2C3C0001D9942F022F062A434E954A8067044A921F +S3210001D750673C26AC00242F132F0648790000F6AC4EB900004708486A00044EB930 +S3210001D76C00003E004A926700020460162F02487A02182A434E954A80664429445F +S3210001D7880024600001EC2C3C0001D99C2F022F062A434E954A8067044A92673AC7 +S3210001D7A426AC00282F132F0648790000F6AC4EB900004708486A00044EB900007B +S3210001D7C03E004A92670001B260142F02487A01CE4E954A8066482944002860008C +S3210001D7DC019C4A85673C2C3C0001D9A42F022F062A434E954A8067044A926740C7 +S3210001D7F826AC002C2F132F0648790000F6AC4EB900004708486A00044EB9000023 +S3210001D8143E004A926700015E601A2F02487A01822A434E954A8066082944002C00 +S3210001D830600001464A85673C2C3C0001D9AC2F022F062A434E954A8067044A9207 +S3210001D84C673C26AC01002F132F0648790000F6AC4EB900004708486A00044EB956 +S3210001D86800003E004A926700010860162F02487A013424434E924A806648294449 +S3210001D8840100600000F04A85673C2C3C0001D9B42F022F062A434E954A806704DD +S3210001D8A04A92673C26AC01042F132F0648790000F6AC4EB900004708486A000429 +S3210001D8BC4EB900003E004A92670000B260162F02487A00E624434E924A80664207 +S3210001D8D8294401046000009A2C3C0001D9BC2F022F062A434E954A8067044A92FC +S3210001D8F4673626AC01082F132F0648790000F6AC4EB900004708486A00044EB9AC +S3210001D91000003E004A92676060122F02487A009E4E924A80664029440108604C9E +S3210001D92C4A856736283C0001D9C42F022F042A434E954A8067044A92673226AC3A +S3210001D948010C2F132F0448790000F6AC4EB900004708486A00044EB900003E0086 +S3210001D96460122F02487A005A24434E924A8066042944010C4CEE3C7CFFDC4E5E73 +S3210001D9804E7551FC534452414D4453004353304346470051435331434647005197 +S3210001D99C4353324346470051435333434647005153444D520051FC515344435295 +S3210001D9B80051FC51534443464731005153444346473200514E56FFDC48D73C7C85 +S3210001D9D4242E00082A2E000C262E001045F90002B3F047EA000849F910000000A0 +S3210001D9F0283C00004F904A85673C2C3C0001DFDC2F022F062A444E954A8067044F +S3210001DA0C4A92673C26AC05002F132F0648790000F6AC4EB900004708486A0004BB +S3210001DA284EB900003E004A926700059E60162F02487A05A22A444E954A806644DB +S3210001DA4429430500600005862C3C0001DFE42F022F062A444E954A8067044A926F +S3210001DA60673A26AC05042F132F0648790000F6AC4EB900004708486A00044EB93A +S3210001DA7C00003E004A926700054C60142F02487A05584E954A8066482943050421 +S3210001DA98600005364A85673C2C3C0001DFEC2F022F062A444E954A8067044A9262 +S3210001DAB4673C26AC05082F132F0648790000F6AC4EB900004708486A00044EB9E0 +S3210001DAD000003E004A92670004F860162F02487A050C2A444E954A80664429430B +S3210001DAEC0508600004E02C3C0001DFF42F022F062A444E954A8067044A92673A21 +S3210001DB0826AC050C2F132F0648790000F6AC4EB900004708486A00044EB900002A +S3210001DB243E004A92670004A660142F02487A04C24E954A8066482943050C60004E +S3210001DB4004904A85673C2C3C0001DFFC2F022F062A444E954A8067044A92674009 +S3210001DB5C26AC05102F132F0648790000F6AC4EB900004708486A00044EB90000D2 +S3210001DB783E004A9267000452601A2F02487A04762A444E954A80660829430510C2 +S3210001DB946000043A4A85673C2C3C0001E0042F022F062A444E954A8067044A9249 +S3210001DBB0673C26AC05142F132F0648790000F6AC4EB900004708486A00044EB9D7 +S3210001DBCC00003E004A92670003FC60162F02487A04282A444E954A8066482943EC +S3210001DBE80514600003E44A85673C2C3C0001E00C2F022F062A444E954A80670407 +S3210001DC044A92673C26AC05182F132F0648790000F6AC4EB900004708486A0004A9 +S3210001DC204EB900003E004A92670003A660162F02487A03DA2A444E954A806644A5 +S3210001DC3C294305186000038E2C3C0001E0142F022F062A444E954A8067044A9226 +S3210001DC58673A26AC051C2F132F0648790000F6AC4EB900004708486A00044EB928 +S3210001DC7400003E004A926700035460142F02487A03904E954A8066482943051CD3 +S3210001DC906000033E4A85673C2C3C0001E01C2F022F062A444E954A8067044A9231 +S3210001DCAC673C26AC05202F132F0648790000F6AC4EB900004708486A00044EB9CE +S3210001DCC800003E004A926700030060162F02487A03442A444E954A8066442943D4 +S3210001DCE40520600002E82C3C0001E0242F022F062A444E954A8067044A92673AD8 +S3210001DD0026AC05242F132F0648790000F6AC4EB900004708486A00044EB9000018 +S3210001DD1C3E004A92670002AE60142F02487A02FA4E954A80664829430524600000 +S3210001DD3802984A85673C2C3C0001E02C2F022F062A444E954A8067044A926740D8 +S3210001DD5426AC05282F132F0648790000F6AC4EB900004708486A00044EB90000C0 +S3210001DD703E004A926700025A601A2F02487A02AE2A444E954A8066082943052874 +S3210001DD8C600002424A85673C2C3C0001E0342F022F062A444E954A8067044A9219 +S3210001DDA8673C26AC052C2F132F0648790000F6AC4EB900004708486A00044EB9C5 +S3210001DDC400003E004A926700020460162F02487A02602A444E954A8066482943B5 +S3210001DDE0052C600001EC4A85673C2C3C0001E03C2F022F062A444E954A806704BF +S3210001DDFC4A92673C26AC05302F132F0648790000F6AC4EB900004708486A000498 +S3210001DE184EB900003E004A92670001AE60162F02487A02122A444E954A8066446E +S3210001DE3429430530600001962C3C0001E0442F022F062A444E954A8067044A92DE +S3210001DE50673A26AC05342F132F0648790000F6AC4EB900004708486A00044EB916 +S3210001DE6C00003E004A926700015C60142F02487A01C84E954A8066482943053485 +S3210001DE88600001464A85673C2C3C0001E04C2F022F062A444E954A8067044A9201 +S3210001DEA4673C26AC05382F132F0648790000F6AC4EB900004708486A00044EB9BC +S3210001DEC000003E004A926700010860162F02487A017C2A444E954A80664429439E +S3210001DEDC0538600000F02C3C0001E0542F022F062A444E954A8067044A92673A90 +S3210001DEF826AC053C2F132F0648790000F6AC4EB900004708486A00044EB9000007 +S3210001DF143E004A92670000B660142F02487A01324E954A8066462943053C6000B3 +S3210001DF3000A04A85673A263C0001E05C2F022F032A444E954A8067044A92673CB7 +S3210001DF4C26AC05402F132F0348790000F6AC4EB900004708486A00044EB90000B1 +S3210001DF683E004A92676260182F02487A00E82A444E954A80660629430540604C7C +S3210001DF844A856736263C0001E0642F022F032A444E954A8067044A92673226AC37 +S3210001DFA005442F132F0348790000F6AC4EB900004708486A00044EB900003E00ED +S3210001DFBC60122F02487A00A224444E924A806604294305444CEE3C7CFFDC4E5E91 +S3210001DFD84E7551FC43534152300051FC43534D52300051FC43534352300051FC16 +S3210001DFF443534152310051FC43534D52310051FC43534352310051FC43534152DE +S3210001E010320051FC43534D52320051FC43534352320051FC43534152330051FC67 +S3210001E02C43534D52330051FC43534352330051FC43534152340051FC43534D5292 +S3210001E048340051FC43534352340051FC43534152350051FC43534D52350051FC26 +S3210001E06443534352350051FC4E56FFE448D71C3C262E0008282E001045F90002EC +S3210001E080B3F0243C100000004AAE000C49F900004F9067442A3C0001E26447EABC +S3210001E09C00082F032F054E944A8067044A9267462042D1FC0001FFC026902F136C +S3210001E0B82F0548790000F6AC4EB900004708486A00044EB900003E004A9267001A +S3210001E0D40184601A2F03487A01884E944A80664E2042D1FC0001FFC0208460005A +S3210001E0F001682A3C0001E26C2F032F054E944A8067044A9267462042D1FC0001B9 +S3210001E10CFFC426902F132F0548790000F6AC4EB900004708486A00044EB900008B +S3210001E1283E004A926700012A601A2F03487A01364E944A8066542042D1FC0001ED +S3210001E144FFC420846000010E4AAE000C67402A3C0001E2742F032F054E944A8068 +S3210001E16067044A9267462042D1FC0001FFC826902F132F0548790000F6AC4EB91B +S3210001E17C00004708486A00044EB900003E004A92670000CA601A2F03487A00DEDD +S3210001E1984E944A80664C2042D1FC0001FFC82084600000AE2A3C0001E27C2F0366 +S3210001E1B42F054E944A8067044A9267422042D1FC0001FFCC26902F132F05487990 +S3210001E1D00000F6AC4EB900004708486A00044EB900003E004A92677060182F03DC +S3210001E1EC487A008E4E944A80664C2042D1FC0001FFCC208460564AAE000C673A68 +S3210001E208283C0001E2842F032F044E944A8067044A92673C2042D1FC0001FFD02E +S3210001E22426902F132F0448790000F6AC4EB900004708486A00044EB900003E00F8 +S3210001E24060162F03487A003E4E944A80660A2042D1FC0001FFD020844CEE1C3CC2 +S3210001E25CFFE44E5E4E7551FC535343520051FC51544343520051FC515443435231 +S3210001E27844520051544343524457005154434352534543004E56FFDC48D73C7C27 +S3210001E294242E0008282E000C262E001045F90002B3F047EA000849F910000000D9 +S3210001E2B02A3C00004F904A84673E2C3C0001F8302F022F062A454E954A80670415 +S3210001E2CC4A92673E71AC0A0026802F002F0648790000F68C4EB900004708486A32 +S3210001E2E800044EB900003E004A926700153260162F02487A15342A454E954A8072 +S3210001E304664619430A006000151A2C3C0001F83C2F022F062A454E954A806704CB +S3210001E3204A92673C71AC0A0126802F002F0648790000F68C4EB900004708486ADE +S3210001E33C00044EB900003E004A92670014DE60142F02487A14EC4E954A80664A7C +S3210001E35819430A01600014C84A84673E2C3C0001F8482F022F062A454E954A8061 +S3210001E37467044A92673E71AC0A0226802F002F0648790000F68C4EB900004708CE +S3210001E390486A00044EB900003E004A926700148860162F02487A14A22A454E951F +S3210001E3AC4A80664619430A02600014702C3C0001F8542F022F062A454E954A8055 +S3210001E3C867044A92673C71AC0A0426802F002F0648790000F68C4EB9000047087A +S3210001E3E4486A00044EB900003E004A926700143460142F02487A145A4E954A800E +S3210001E400664A19430A046000141E4A84673E2C3C0001F8602F022F062A454E9561 +S3210001E41C4A8067044A92674271AC0A0526802F002F0648790000F68C4EB90000A3 +S3210001E4384708486A00044EB900003E004A92670013DE601A2F02487A14102A4543 +S3210001E4544E954A80660819430A05600013C64A84673E2C3C0001F86C2F022F0640 +S3210001E4702A454E954A8067044A92673E71AC0A0626802F002F0648790000F68C07 +S3210001E48C4EB900004708486A00044EB900003E004A926700138660162F02487AD7 +S3210001E4A813C42A454E954A80664A19430A066000136E4A84673E2C3C0001F87815 +S3210001E4C42F022F062A454E954A8067044A92673E71AC0A0726802F002F064879CE +S3210001E4E00000F68C4EB900004708486A00044EB900003E004A926700132E60164C +S3210001E4FC2F02487A13782A454E954A80664619430A07600013162C3C0001F884DC +S3210001E5182F022F062A454E954A8067044A92673C71AC0A0826802F002F0648797A +S3210001E5340000F68C4EB900004708486A00044EB900003E004A92670012DA60144E +S3210001E5502F02487A13304E954A80664A19430A08600012C44A84673E2C3C000195 +S3210001E56CF8902F022F062A454E954A8067044A92673E71AC0A0926802F002F065C +S3210001E58848790000F68C4EB900004708486A00044EB900003E004A926700128403 +S3210001E5A460162F02487A12E62A454E954A80664619430A096000126C2C3C000175 +S3210001E5C0F89C2F022F062A454E954A8067044A92673C71AC0A0A26802F002F06FD +S3210001E5DC48790000F68C4EB900004708486A00044EB900003E004A926700123003 +S3210001E5F860142F02487A129E4E954A80664A19430A0A6000121A4A84673E2C3CB5 +S3210001E6140001F8A82F022F062A454E954A8067044A92674271AC0A0C26802F00C8 +S3210001E6302F0648790000F68C4EB900004708486A00044EB900003E004A926700BB +S3210001E64C11DA601A2F02487A12542A454E954A80660819430A0C600011C24A84F0 +S3210001E668673E2C3C0001F8B82F022F062A454E954A8067044A92673E71AC0A0D2F +S3210001E68426802F002F0648790000F68C4EB900004708486A00044EB900003E00D5 +S3210001E6A04A926700118260162F02487A120C2A454E954A80664A19430A0D60005B +S3210001E6BC116A4A84673E2C3C0001F8C82F022F062A454E954A8067044A92673EB6 +S3210001E6D871AC0A0E26802F002F0648790000F68C4EB900004708486A00044EB98A +S3210001E6F400003E004A926700112A60162F02487A11C42A454E954A8066461943E5 +S3210001E7100A0E600011122C3C0001F8D42F022F062A454E954A8067044A92673CAA +S3210001E72C71AC0A1026802F002F0648790000F68C4EB900004708486A00044EB933 +S3210001E74800003E004A92670010D660142F02487A117C4E954A80664A19430A1080 +S3210001E764600010C04A84673E2C3C0001F8E02F022F062A454E954A8067044A92E5 +S3210001E780673E71AC0A1126802F002F0648790000F68C4EB900004708486A000440 +S3210001E79C4EB900003E004A926700108060162F02487A11322A454E954A806646CE +S3210001E7B819430A11600010682C3C0001F8EC2F022F062A454E954A8067044A92D9 +S3210001E7D4673C71AC0A1226802F002F0648790000F68C4EB900004708486A0004ED +S3210001E7F04EB900003E004A926700102C60142F02487A10EA4E954A80664A194328 +S3210001E80C0A12600010164A84673E2C3C0001F8F82F022F062A454E954A8067048E +S3210001E8284A92674271AC0A1426802F002F0648790000F68C4EB900004708486AB8 +S3210001E84400044EB900003E004A9267000FD6601A2F02487A10A02A454E954A8007 +S3210001E860660819430A1460000FBE4A84673E2C3C0001F9042F022F062A454E95EF +S3210001E87C4A8067044A92673E71AC0A1526802F002F0648790000F68C4EB9000033 +S3210001E8984708486A00044EB900003E004A9267000F7E60162F02487A10542A4507 +S3210001E8B44E954A80664A19430A1560000F664A84673E2C3C0001F9102F022F0649 +S3210001E8D02A454E954A8067044A92673E71AC0A1626802F002F0648790000F68C93 +S3210001E8EC4EB900004708486A00044EB900003E004A9267000F2660162F02487AD7 +S3210001E90810082A454E954A80664619430A1660000F0E2C3C0001F91C2F022F062F +S3210001E9242A454E954A8067044A92673C71AC0A1726802F002F0648790000F68C3F +S3210001E9404EB900004708486A00044EB900003E004A9267000ED260142F02487AD9 +S3210001E95C0FC04E954A80664A19430A1760000EBC4A84673E2C3C0001F9282F0297 +S3210001E9782F062A454E954A8067044A92673E71AC0A1826802F002F064879000035 +S3210001E994F68C4EB900004708486A00044EB900003E004A9267000E7C60162F0219 +S3210001E9B0487A0F762A454E954A80664619430A1860000E642C3C0001F9342F021E +S3210001E9CC2F062A454E954A8067044A92673C71AC0A1926802F002F0648790000E2 +S3210001E9E8F68C4EB900004708486A00044EB900003E004A9267000E2860142F021B +S3210001EA04487A0F2E4E954A80664A19430A1960000E124A84673E2C3C0001F9407F +S3210001EA202F022F062A454E954A8067044A92674271AC0A1A26802F002F06487955 +S3210001EA3C0000F68C4EB900004708486A00044EB900003E004A9267000DD2601A48 +S3210001EA582F02487A0EE42A454E954A80660819430A1A60000DBA4A84673E2C3CAA +S3210001EA740001F94C2F022F062A454E954A8067044A92673E71AC0A1C26802F00B3 +S3210001EA902F0648790000F68C4EB900004708486A00044EB900003E004A92670057 +S3210001EAAC0D7A60162F02487A0E982A454E954A80664A19430A1C60000D624A84C6 +S3210001EAC8673E2C3C0001F95C2F022F062A454E954A8067044A92673E71AC0A1D16 +S3210001EAE426802F002F0648790000F68C4EB900004708486A00044EB900003E0071 +S3210001EB004A9267000D2260162F02487A0E502A454E954A80664619430A1D60000E +S3210001EB1C0D0A2C3C0001F96C2F022F062A454E954A8067044A92673C71AC0A1E40 +S3210001EB3826802F002F0648790000F68C4EB900004708486A00044EB900003E001C +S3210001EB544A9267000CCE60142F02487A0E0C4E954A80664A19430A1E60000CB8FB +S3210001EB704A84673E2C3C0001F9782F022F062A454E954A8067044A92673E71ACAA +S3210001EB8C0A2026802F002F0648790000F68C4EB900004708486A00044EB90000DC +S3210001EBA83E004A9267000C7860162F02487A0DC22A454E954A80664619430A20BF +S3210001EBC460000C602C3C0001F9882F022F062A454E954A8067044A92673C71ACEF +S3210001EBE00A2126802F002F0648790000F68C4EB900004708486A00044EB9000087 +S3210001EBFC3E004A9267000C2460142F02487A0D7E4E954A80664A19430A2160000F +S3210001EC180C0E4A84673E2C3C0001F9942F022F062A454E954A8067044A926742E4 +S3210001EC3471AC0A2226802F002F0648790000F68C4EB900004708486A00044EB914 +S3210001EC5000003E004A9267000BCE601A2F02487A0D342A454E954A8066081943B3 +S3210001EC6C0A2260000BB64A84673E2C3C0001F9A02F022F062A454E954A806704D6 +S3210001EC884A92673E71AC0A2426802F002F0648790000F68C4EB900004708486A48 +S3210001ECA400044EB900003E004A9267000B7660162F02487A0CE82A454E954A80C7 +S3210001ECC0664A19430A2460000B5E4A84673E2C3C0001F9B02F022F062A454E95F1 +S3210001ECDC4A8067044A92673E71AC0A2526802F002F0648790000F68C4EB90000BF +S3210001ECF84708486A00044EB900003E004A9267000B1E60162F02487A0CA02A45BF +S3210001ED144E954A80664619430A2560000B062C3C0001F9C02F022F062A454E95AD +S3210001ED304A8067044A92673C71AC0A2626802F002F0648790000F68C4EB900006B +S3210001ED4C4708486A00044EB900003E004A9267000ACA60142F02487A0C5C4E9591 +S3210001ED684A80664A19430A2660000AB44A84673E2C3C0001F9D02F022F062A45EA +S3210001ED844E954A8067044A92673E71AC0A2726802F002F0648790000F68C4EB931 +S3210001EDA000004708486A00044EB900003E004A9267000A7460162F02487A0C16BA +S3210001EDBC2A454E954A80664619430A2760000A5C2C3C0001F9E02F022F062A4502 +S3210001EDD84E954A8067044A92673C71AC0A2826802F002F0648790000F68C4EB9DE +S3210001EDF400004708486A00044EB900003E004A9267000A2060142F02487A0BD201 +S3210001EE104E954A80664A19430A2860000A0A4A84673E2C3C0001F9F02F022F0655 +S3210001EE2C2A454E954A8067044A92674271AC0A2926802F002F0648790000F68C1A +S3210001EE484EB900004708486A00044EB900003E004A92670009CA601A2F02487AD3 +S3210001EE640B8C2A454E954A80660819430A29600009B24A84673E2C3C0001FA00EA +S3210001EE802F022F062A454E954A8067044A92673E71AC0A2A26802F002F064879E5 +S3210001EE9C0000F68C4EB900004708486A00044EB900003E004A926700097260164C +S3210001EEB82F02487A0B442A454E954A80664A19430A2A6000095A4A84673E2C3CFB +S3210001EED40001FA102F022F062A454E954A8067044A92673E71AC0A2C26802F007A +S3210001EEF02F0648790000F68C4EB900004708486A00044EB900003E004A926700F3 +S3210001EF0C091A60162F02487A0AFC2A454E954A80664619430A2C600009022C3C23 +S3210001EF280001FA202F022F062A454E954A8067044A92673C71AC0A2D26802F0016 +S3210001EF442F0648790000F68C4EB900004708486A00044EB900003E004A9267009E +S3210001EF6008C660142F02487A0AB84E954A80664A19430A2D600008B04A84673E1C +S3210001EF7C2C3C0001FA302F022F062A454E954A8067044A92673E71AC0A2E268076 +S3210001EF982F002F0648790000F68C4EB900004708486A00044EB900003E004A9282 +S3210001EFB46700087060162F02487A0A722A454E954A80664619430A2E600008585A +S3210001EFD02C3C0001FA3C2F022F062A454E954A8067044A92673C71AC0A30268016 +S3210001EFEC2F002F0648790000F68C4EB900004708486A00044EB900003E004A922E +S3210001F0086700081C60142F02487A0A2A4E954A80664A19430A30600008064A8490 +S3210001F024673E2C3C0001FA482F022F062A454E954A8067044A92674271AC0A31AF +S3210001F04026802F002F0648790000F68C4EB900004708486A00044EB900003E000F +S3210001F05C4A92670007C6601A2F02487A09E02A454E954A80660819430A316000AA +S3210001F07807AE4A84673E2C3C0001FA542F022F062A454E954A8067044A92673E28 +S3210001F09471AC0A3226802F002F0648790000F68C4EB900004708486A00044EB9A0 +S3210001F0B000003E004A926700076E60162F02487A09942A454E954A80664A194319 +S3210001F0CC0A32600007564A84673E2C3C0001FA602F022F062A454E954A80670405 +S3210001F0E84A92673E71AC0A3426802F002F0648790000F68C4EB900004708486AD4 +S3210001F10400044EB900003E004A926700071660162F02487A09482A454E954A8069 +S3210001F120664619430A34600006FE2C3C0001FA6C2F022F062A454E954A80670466 +S3210001F13C4A92673C71AC0A3526802F002F0648790000F68C4EB900004708486A80 +S3210001F15800044EB900003E004A92670006C260142F02487A09004E954A80664A73 +S3210001F17419430A35600006AC4A84673E2C3C0001FA782F022F062A454E954A80FB +S3210001F19067044A92673E71AC0A3626802F002F0648790000F68C4EB90000470870 +S3210001F1AC486A00044EB900003E004A926700066C60162F02487A08B62A454E9517 +S3210001F1C84A80664619430A36600006542C3C0001FA842F022F062A454E954A80EF +S3210001F1E467044A92673C71AC0A3726802F002F0648790000F68C4EB9000047081D +S3210001F200486A00044EB900003E004A926700061860142F02487A086E4E954A8005 +S3210001F21C664A19430A37600006024A84673E2C3C0001FA902F022F062A454E95FC +S3210001F2384A8067044A92674271AC0A3826802F002F0648790000F68C4EB9000046 +S3210001F2544708486A00044EB900003E004A92670005C2601A2F02487A08242A453B +S3210001F2704E954A80660819430A38600005AA4A84673E2C3C0001FAA02F022F06D7 +S3210001F28C2A454E954A8067044A92673E71AC0A3926802F002F0648790000F68CAA +S3210001F2A84EB900004708486A00044EB900003E004A926700056A60162F02487AD7 +S3210001F2C407DC2A454E954A80664A19430A39600005524A84673E2C3C0001FAACA0 +S3210001F2E02F022F062A454E954A8067044A92673E71AC0A3A26802F002F06487971 +S3210001F2FC0000F68C4EB900004708486A00044EB900003E004A926700051260164C +S3210001F3182F02487A07902A454E954A80664619430A3A600004FA2C3C0001FAB867 +S3210001F3342F022F062A454E954A8067044A92673C71AC0A3C26802F002F0648791C +S3210001F3500000F68C4EB900004708486A00044EB900003E004A92670004BE60144E +S3210001F36C2F02487A07484E954A80664A19430A3C600004A84A84673E2C3C000155 +S3210001F388FAC82F022F062A454E954A8067044A92673E71AC0A3D26802F002F06C4 +S3210001F3A448790000F68C4EB900004708486A00044EB900003E004A926700046803 +S3210001F3C060162F02487A07022A454E954A80664619430A3D600004502C3C000130 +S3210001F3DCFAD82F022F062A454E954A8067044A92673C71AC0A3E26802F002F0661 +S3210001F3F848790000F68C4EB900004708486A00044EB900003E004A926700041403 +S3210001F41460142F02487A06BE4E954A80664A19430A3E600003FE4A84673E2C3C6D +S3210001F4300001FAE42F022F062A454E954A8067044A92674271EC0A4026802F00EC +S3210001F44C2F0648790000F69C4EB900004708486A00044EB900003E004A92670081 +S3210001F46803BE601A2F02487A06742A454E954A80660839430A40600003A64A84B2 +S3210001F484673E2C3C0001FAF02F022F062A454E954A8067044A92673E71AC0A4296 +S3210001F4A026802F002F0648790000F68C4EB900004708486A00044EB900003E00AB +S3210001F4BC4A926700036660162F02487A06282A454E954A80664A19430A42600016 +S3210001F4D8034E4A84673E2C3C0001FAFC2F022F062A454E954A8067044A92673E80 +S3210001F4F471AC0A4326802F002F0648790000F68C4EB900004708486A00044EB92B +S3210001F51000003E004A926700030E60162F02487A05DC2A454E954A8066461943D8 +S3210001F52C0A43600002F62C3C0001FB042F022F062A454E954A8067044A92673C43 +S3210001F54871EC0A4426802F002F0648790000F69C4EB900004708486A00044EB985 +S3210001F56400003E004A92670002BA60142F02487A05904E954A80664A39430A4424 +S3210001F580600002A44A84673E2C3C0001FB142F022F062A454E954A8067044A92AE +S3210001F59C673E71EC0A4826802F002F0648790000F69C4EB900004708486A00048F +S3210001F5B84EB900003E004A926700026460162F02487A054A2A454E954A806646C2 +S3210001F5D439430A486000024C2C3C0001FB202F022F062A454E954A8067044A924B +S3210001F5F0673C71EC0A4A26802F002F0648790000F69C4EB900004708486A00043B +S3210001F60C4EB900003E004A926700021060142F02487A05024E954A80664A3943FA +S3210001F6280A4A600001FA4A84673E2C3C0001FB2C2F022F062A454E954A80670420 +S3210001F6444A92674271AC0A4C26802F002F0648790000F68C4EB900004708486A56 +S3210001F66000044EB900003E004A92670001BA601A2F02487A04B82A454E954A80FB +S3210001F67C660819430A4C600001A24A84673E2C3C0001FB382F022F062A454E9581 +S3210001F6984A8067044A92673E71AC0A4D26802F002F0648790000F68C4EB90000D1 +S3210001F6B44708486A00044EB900003E004A926700016260162F02487A046C244501 +S3210001F6D04E924A80664A19430A4D6000014A4A84673E2C3C0001FB442F022F06DE +S3210001F6EC2A454E954A8067044A92673E71AC0A4E26802F002F0648790000F68C31 +S3210001F7084EB900004708486A00044EB900003E004A926700010A60162F02487AD6 +S3210001F724042024454E924A80664619430A4E600000F22C3C0001FB502F022F06BF +S3210001F7402A454E954A8067044A92673C71AC0A4F26802F002F0648790000F68CDD +S3210001F75C4EB900004708486A00044EB900003E004A92670000B660142F02487AD9 +S3210001F77803D84E924A80664819430A4F600000A04A84673C263C0001FB5C2F022A +S3210001F7942F032A454E954A8067044A92673C71EC0A5026802F002F03487900009B +S3210001F7B0F68C4EB900004708486A00044EB900003E004A92676060162F02487A57 +S3210001F7CC039024454E924A806640718339400A506048263C0001FB682F022F0336 +S3210001F7E82A454E954A8067044A92673271AC0A5226802F002F0348790000F68C3F +S3210001F8044EB900004708486A00044EB900003E0060102F02487A034E4E924A8032 +S3210001F820660419430A524CEE3C7CFFDC4E5E4E75504F44525F464243544C005117 +S3210001F83C504F44525F464243530051FC504F44525F444D410051FC51504F445271 +S3210001F8585F46454330480051504F44525F464543304C0051504F44525F46454306 +S3210001F87431480051504F44525F464543314C0051504F44525F4645434932430057 +S3210001F890504F44525F50434942470051504F44525F50434942520051504F445281 +S3210001F8AC5F50534333505343320051FC504F44525F50534331505343300051FC4E +S3210001F8C8504F44525F445350490051FC504444525F464243544C0051504444529D +S3210001F8E45F464243530051FC504444525F444D410051FC51504444525F464543E7 +S3210001F90030480051504444525F464543304C0051504444525F46454331480051D6 +S3210001F91C504444525F464543314C0051504444525F464543493243005044445264 +S3210001F9385F50434942470051504444525F50434942520051504444525F505343DE +S3210001F95433505343320051FC504444525F50534331505343300051FC50444452CB +S3210001F9705F445350490051FC5050445344525F464243544C0051FC51505044532C +S3210001F98C44525F46424353005050445344525F444D4100515050445344525F4684 +S3210001F9A8454330480051FC515050445344525F464543304C0051FC515050445353 +S3210001F9C444525F46454331480051FC515050445344525F464543314C0051FC5131 +S3210001F9E05050445344525F4645434932430051FC5050445344525F50434942476E +S3210001F9FC0051FC515050445344525F50434942520051FC515050445344525F5094 +S3210001FA1853433350534332005050445344525F505343315053433000505044535A +S3210001FA3444525F445350490050434C52525F464243544C0050434C52525F4642D3 +S3210001FA504353005150434C52525F444D410051FC50434C52525F46454330480083 +S3210001FA6C50434C52525F464543304C0050434C52525F46454331480050434C52F1 +S3210001FA88525F464543314C0050434C52525F4645434932430051FC5150434C5222 +S3210001FAA4525F50434942470050434C52525F50434942520050434C52525F505352 +S3210001FAC0433350534332005150434C52525F5053433150534330005150434C52B3 +S3210001FADC525F4453504900515041525F464243544C0051FC5041525F464243537B +S3210001FAF80051FC515041525F444D41005041525F4645434932434952510051FC32 +S3210001FB145041525F50434942470051FC5041525F50434942520051FC5041525F99 +S3210001FB30505343330051FC515041525F505343320051FC515041525F50534331AA +S3210001FB4C0051FC515041525F505343300051FC515041525F445350490051FC51F2 +S3210001FB685041525F54494D45520051FC4E56FFE048D73C3C242E0008282E001090 +S3210001FB8445F90002B3F047EA0008263C00004F904AAE000C49F910000000673E06 +S3210001FBA02A3C0001FDA42F022F052A434E954A8067044A92673E71EC0F002680BD +S3210001FBBC2F002F0548790000F69C4EB900004708486A00044EB900003E004A9243 +S3210001FBD8670001BE60162F02487A01C22A434E954A80664639440F00600001A65F +S3210001FBF42A3C0001FDAC2F022F052A434E954A8067044A92673C71AC0F0426809F +S3210001FC102F002F0548790000F68C4EB900004708486A00044EB900003E004A92FE +S3210001FC2C6700016A60142F02487A01764E954A80664C19440F04600001544AAE89 +S3210001FC48000C673E2A3C0001FDB42F022F052A434E954A8067044A92673E71AC48 +S3210001FC640F0526802F002F0548790000F68C4EB900004708486A00044EB900000A +S3210001FC803E004A926700011260162F02487A01262A434E954A80664619440F0506 +S3210001FC9C600000FA2A3C0001FDBC2F022F052A434E954A8067044A92673C71AC45 +S3210001FCB80F0826802F002F0548790000F68C4EB900004708486A00044EB90000B3 +S3210001FCD43E004A92670000BE60142F02487A00DA4E954A80664A19440F0860005C +S3210001FCF000A84AAE000C673C283C0001FDC42F022F042A434E954A8067044A92B7 +S3210001FD0C674071AC0F0926802F002F0448790000F68C4EB900004708486A0004A1 +S3210001FD284EB900003E004A926766601A2F02487A008C2A434E954A8066061944EE +S3210001FD440F0960504AAE000C6738283C0001FDCC2F022F042A434E954A8067041A +S3210001FD604A92673471AC0F0C26802F002F0448790000F68C4EB900004708486A7E +S3210001FD7C00044EB900003E0060122F02487A004224434E924A80660419440F0C81 +S3210001FD984CEE3C3CFFE04E5E4E7551FC45505041520051FC45504444520051FC7A +S3210001FDB445504945520051FC455044520051FC5145505044520051FC45504652AC +S3210001FDD00051FC514E56FFE448D71C3C242E0008282E000C262E001045F9000214 +S3210001FDECB3F047EA000849F9100000004A84673E2A3C000219442F022F054EB922 +S3210001FE0800004F904A8067044A92673E26AC07002F132F0548790000F6AC4EB989 +S3210001FE2400004708486A00044EB900003E004A9267001B0260182F02487A1B0685 +S3210001FE404EB900004F904A8066462943070060001AE82A3C0002194C2F022F053C +S3210001FE5C4EB900004F904A8067044A92673E26AC07042F132F0548790000F6AC31 +S3210001FE784EB900004708486A00044EB900003E004A9267001AAC60182F02487AA2 +S3210001FE941AB84EB900004F904A80664A2943070460001A924A84673E2A3C0002BB +S3210001FEB019542F022F054EB900004F904A8067044A92673E26AC07082F132F056A +S3210001FECC48790000F6AC4EB900004708486A00044EB900003E004A9267001A52B0 +S3210001FEE860182F02487A1A664EB900004F904A8066462943070860001A382A3C1D +S3210001FF040002195C2F022F054EB900004F904A8067044A92673E26AC070C2F133B +S3210001FF202F0548790000F6AC4EB900004708486A00044EB900003E004A92670093 +S3210001FF3C19FC60182F02487A1A184EB900004F904A80664A2943070C600019E2B6 +S3210001FF584A84673E2A3C000219642F022F054EB900004F904A8067044A92674229 +S3210001FF7426AC07102F132F0548790000F6AC4EB900004708486A00044EB9000095 +S3210001FF903E004A92670019A2601C2F02487A19C64EB900004F904A80660829433A +S3210001FFAC0710600019884A84673E2A3C0002196C2F022F054EB900004F904A80A5 +S3210001FFC867044A92673E26AC07142F132F0548790000F6AC4EB900004708486A5C +S3210001FFE400044EB900003E004A926700194860182F02487A19744EB900004F902F +S321000200004A80664C294307146000192E4A8467402A3C000219742F022F054EB95C +S3210002001C00004F904A8067044A92674071AC071826802F002F0548790000F68CA1 +S321000200384EB900004708486A00044EB900003E004A92670018EC60182F02487AA1 +S3210002005419204EB900004F904A80664819430718600018D22A3C0002197C2F02FE +S321000200702F054EB900004F904A8067044A92674071AC071926802F002F05487993 +S3210002008C0000F68C4EB900004708486A00044EB900003E004A9267001894601816 +S321000200A82F02487A18D04EB900004F904A80664C194307196000187A4A84674014 +S321000200C42A3C000219842F022F054EB900004F904A8067044A92674071AC0741AB +S321000200E026802F002F0548790000F68C4EB900004708486A00044EB900003E005F +S321000200FC4A926700183860182F02487A187C4EB900004F904A806648194307414C +S321000201186000181E2A3C0002198C2F022F054EB900004F904A8067044A9267401D +S3210002013471AC074226802F002F0548790000F68C4EB900004708486A00044EB9E2 +S3210002015000003E004A92670017E060182F02487A182C4EB900004F904A80664C02 +S3210002016C19430742600017C64A8467402A3C000219942F022F054EB900004F90B8 +S321000201884A8067044A92674471AC074326802F002F0548790000F68C4EB90000DD +S321000201A44708486A00044EB900003E004A9267001784601C2F02487A17D84EB9AA +S321000201C000004F904A806608194307436000176A4A8467402A3C0002199C2F02BA +S321000201DC2F054EB900004F904A8067044A92674071AC074426802F002F054879FB +S321000201F80000F68C4EB900004708486A00044EB900003E004A9267001728601816 +S321000202142F02487A17844EB900004F904A80664C194307446000170E4A84674035 +S321000202302A3C000219A42F022F054EB900004F904A8067044A92674071AC074519 +S3210002024C26802F002F0548790000F68C4EB900004708486A00044EB900003E00F1 +S321000202684A92670016CC60182F02487A17304EB900004F904A8066481943074595 +S32100020284600016B22A3C000219AC2F022F054EB900004F904A8067044A926740FE +S321000202A071AC074626802F002F0548790000F68C4EB900004708486A00044EB971 +S321000202BC00003E004A926700167460182F02487A16E04EB900004F904A80664C50 +S321000202D8194307466000165A4A8467402A3C000219B42F022F054EB900004F9094 +S321000202F44A8067044A92674071AC074726802F002F0548790000F68C4EB9000070 +S321000203104708486A00044EB900003E004A926700161860182F02487A168C4EB9FA +S3210002032C00004F904A80664819430747600015FE2A3C000219BC2F022F054EB990 +S3210002034800004F904A8067044A92674071AC074826802F002F0548790000F68C42 +S321000203644EB900004708486A00044EB900003E004A92670015C060182F02487AA1 +S32100020380163C4EB900004F904A80664C19430748600015A64A8467402A3C000202 +S3210002039C19C42F022F054EB900004F904A8067044A92674471AC074926802F0017 +S321000203B82F0548790000F68C4EB900004708486A00044EB900003E004A92670016 +S321000203D41564601C2F02487A15E84EB900004F904A806608194307496000154A97 +S321000203F04A8467402A3C000219CC2F022F054EB900004F904A8067044A92674024 +S3210002040C71AC074A26802F002F0548790000F68C4EB900004708486A00044EB9FF +S3210002042800003E004A926700150860182F02487A15944EB900004F904A80664C9C +S321000204441943074A600014EE4A8467402A3C000219D42F022F054EB900004F9070 +S321000204604A8067044A92674071AC074B26802F002F0548790000F68C4EB90000FE +S3210002047C4708486A00044EB900003E004A92670014AC60182F02487A15404EB948 +S3210002049800004F904A8066481943074B600014922A3C000219DC2F022F054EB96C +S321000204B400004F904A8067044A92674071AC074C26802F002F0548790000F68CD1 +S321000204D04EB900004708486A00044EB900003E004A926700145460182F02487AA1 +S321000204EC14F04EB900004F904A80664C1943074C6000143A4A8467402A3C00024C +S3210002050819E42F022F054EB900004F904A8067044A92674071AC074D26802F0089 +S321000205242F0548790000F68C4EB900004708486A00044EB900003E004A926700A8 +S3210002054013F860182F02487A149C4EB900004F904A8066481943074D600013DE12 +S3210002055C2A3C000219EC2F022F054EB900004F904A8067044A92674071AC074E99 +S3210002057826802F002F0548790000F68C4EB900004708486A00044EB900003E00C2 +S321000205944A92670013A060182F02487A144C4EB900004F904A80664C1943074E6F +S321000205B0600013864A8467402A3C000219F42F022F054EB900004F904A806704C4 +S321000205CC4A92674471AC074F26802F002F0548790000F68C4EB900004708486ABD +S321000205E800044EB900003E004A9267001344601C2F02487A13F84EB900004F90AC +S321000206044A8066081943074F6000132A4A8467402A3C000219FC2F022F054EB9ED +S3210002062000004F904A8067044A92674071AC075126802F002F0548790000F68C5E +S3210002063C4EB900004708486A00044EB900003E004A92670012E860182F02487AA1 +S3210002065813A44EB900004F904A80664C19430751600012CE4A8467402A3C000294 +S321000206741A042F022F054EB900004F904A8067044A92674071AC075226802F00F6 +S321000206902F0548790000F68C4EB900004708486A00044EB900003E004A9267003B +S321000206AC128C60182F02487A13504EB900004F904A8066481943075260001272C7 +S321000206C82A3C00021A0C2F022F054EB900004F904A8067044A92674071AC075306 +S321000206E426802F002F0548790000F68C4EB900004708486A00044EB900003E0055 +S321000207004A926700123460182F02487A13004EB900004F904A80664C19430753B6 +S3210002071C6000121A4A8467402A3C00021A142F022F054EB900004F904A806704A2 +S321000207384A92674071AC075426802F002F0548790000F68C4EB900004708486A4E +S3210002075400044EB900003E004A92670011D860182F02487A12AC4EB900004F90FD +S321000207704A80664819430754600011BE2A3C00021A1C2F022F054EB900004F901E +S3210002078C4A8067044A92674071AC075526802F002F0548790000F68C4EB90000C5 +S321000207A84708486A00044EB900003E004A926700118060182F02487A125C4EB92F +S321000207C400004F904A80664C19430755600011664A8467402A3C00021A242F02DB +S321000207E02F054EB900004F904A8067044A92674471AC075626802F002F054879DB +S321000207FC0000F68C4EB900004708486A00044EB900003E004A9267001124601C12 +S321000208182F02487A12084EB900004F904A806608194307566000110A4A846740E8 +S321000208342A3C00021A2C2F022F054EB900004F904A8067044A92674071AC075774 +S3210002085026802F002F0548790000F68C4EB900004708486A00044EB900003E00E7 +S3210002086C4A92670010C860182F02487A11B44EB900004F904A80664C1943075701 +S32100020888600010AE4A8467402A3C00021A342F022F054EB900004F904A80670483 +S321000208A44A92674071AC075826802F002F0548790000F68C4EB900004708486ADD +S321000208C000044EB900003E004A926700106C60182F02487A11604EB900004F904A +S321000208DC4A80664819430758600010522A3C00021A3C2F022F054EB900004F90FA +S321000208F84A8067044A92674071AC075926802F002F0548790000F68C4EB9000054 +S321000209144708486A00044EB900003E004A926700101460182F02487A11104EB97B +S3210002093000004F904A80664C1943075960000FFA4A8467402A3C00021A442F02B7 +S3210002094C2F054EB900004F904A8067044A92674071AC075A26802F002F0548796D +S321000209680000F68C4EB900004708486A00044EB900003E004A9267000FB8601816 +S321000209842F02487A10BC4EB900004F904A8066481943075A60000F9E2A3C000200 +S321000209A01A4C2F022F054EB900004F904A8067044A92674071AC075B26802F0076 +S321000209BC2F0548790000F68C4EB900004708486A00044EB900003E004A9267000C +S321000209D80F6060182F02487A106C4EB900004F904A80664C1943075B60000F46D0 +S321000209F44A8467402A3C00021A542F022F054EB900004F904A8067044A9267448D +S32100020A1071AC075C26802F002F0548790000F68C4EB900004708486A00044EB9E3 +S32100020A2C00003E004A9267000F04601C2F02487A10184EB900004F904A8066085D +S32100020A481943075C60000EEA4A8467402A3C00021A5C2F022F054EB900004F90D5 +S32100020A644A8067044A92674071AC075D26802F002F0548790000F68C4EB90000E2 +S32100020A804708486A00044EB900003E004A9267000EA860182F02487A0FC44EB9CA +S32100020A9C00004F904A80664C1943075D60000E8E4A8467402A3C00021A642F0293 +S32100020AB82F054EB900004F904A8067044A92674071AC075E26802F002F054879FC +S32100020AD40000F68C4EB900004708486A00044EB900003E004A9267000E4C601816 +S32100020AF02F02487A0F704EB900004F904A8066481943075E60000E322A3C000249 +S32100020B0C1A6C2F022F054EB900004F904A8067044A92674071AC075F26802F00E4 +S32100020B282F0548790000F68C4EB900004708486A00044EB900003E004A9267009E +S32100020B440DF460182F02487A0F204EB900004F904A80664C1943075F60000DDA87 +S32100020B604A8467402A3C00021A742F022F054EB900004F904A8067044A92674003 +S32100020B7C71AC076026802F002F0548790000F68C4EB900004708486A00044EB972 +S32100020B9800003E004A9267000D9860182F02487A0ECC4EB900004F904A80664870 +S32100020BB41943076060000D7E2A3C00021A7C2F022F054EB900004F904A806704F1 +S32100020BD04A92674071AC076126802F002F0548790000F68C4EB900004708486AA5 +S32100020BEC00044EB900003E004A9267000D4060182F02487A0E7C4EB900004F9031 +S32100020C084A80664C1943076160000D264A8467402A3C00021A842F022F054EB90E +S32100020C2400004F904A8067044A92674471AC076226802F002F0548790000F68C3F +S32100020C404EB900004708486A00044EB900003E004A9267000CE4601C2F02487A9D +S32100020C5C0E284EB900004F904A8066081943076260000CCA4A8467402A3C000248 +S32100020C781A8C2F022F054EB900004F904A8067044A92674071AC076326802F0053 +S32100020C942F0548790000F68C4EB900004708486A00044EB900003E004A92670031 +S32100020CB00C8860182F02487A0DD44EB900004F904A80664C1943076360000C6E3E +S32100020CCC4A8467402A3C00021A942F022F054EB900004F904A8067044A92674076 +S32100020CE871AC076426802F002F0548790000F68C4EB900004708486A00044EB901 +S32100020D0400003E004A9267000C2C60182F02487A0D804EB900004F904A806648BC +S32100020D201943076460000C122A3C00021A9C2F022F054EB900004F904A806704CC +S32100020D3C4A92674071AC076526802F002F0548790000F68C4EB900004708486A33 +S32100020D5800044EB900003E004A9267000BD460182F02487A0D304EB900004F907E +S32100020D744A80664C1943076560000BBA4A8467402A3C00021AA42F022F054EB9EB +S32100020D9000004F904A8067044A92674071AC076626802F002F0548790000F68CD2 +S32100020DAC4EB900004708486A00044EB900003E004A9267000B7860182F02487AA1 +S32100020DC80CDC4EB900004F904A8066481943076660000B5E2A3C00021AAC2F02D0 +S32100020DE42F054EB900004F904A8067044A92674071AC076726802F002F054879C4 +S32100020E000000F68C4EB900004708486A00044EB900003E004A9267000B20601815 +S32100020E1C2F02487A0C8C4EB900004F904A80664C1943076760000B064A84674015 +S32100020E382A3C00021AB42F022F054EB900004F904A8067044A92674471AC0768CD +S32100020E5426802F002F0548790000F68C4EB900004708486A00044EB900003E00DD +S32100020E704A9267000AC4601C2F02487A0C384EB900004F904A80660819430768B1 +S32100020E8C60000AAA4A8467402A3C00021ABC2F022F054EB900004F904A806704FB +S32100020EA84A92674071AC076926802F002F0548790000F68C4EB900004708486AC2 +S32100020EC400044EB900003E004A9267000A6860182F02487A0BE44EB900004F90CC +S32100020EE04A80664C1943076960000A4E4A8467402A3C00021AC42F022F054EB9C7 +S32100020EFC00004F904A8067044A92674071AC076A26802F002F0548790000F68C61 +S32100020F184EB900004708486A00044EB900003E004A9267000A0C60182F02487AA0 +S32100020F340B904EB900004F904A8066481943076A600009F22A3C00021ACC2F02F9 +S32100020F502F054EB900004F904A8067044A92674071AC076B26802F002F05487952 +S32100020F6C0000F68C4EB900004708486A00044EB900003E004A92670009B4601816 +S32100020F882F02487A0B404EB900004F904A80664C1943076B6000099A4A8467405F +S32100020FA42A3C00021AD42F022F054EB900004F904A8067044A92674071AC076C40 +S32100020FC026802F002F0548790000F68C4EB900004708486A00044EB900003E0070 +S32100020FDC4A926700095860182F02487A0AEC4EB900004F904A8066481943076CBF +S32100020FF86000093E2A3C00021ADC2F022F054EB900004F904A8067044A926740CD +S3210002101471AC076D26802F002F0548790000F68C4EB900004708486A00044EB9C8 +S3210002103000003E004A926700090060182F02487A0A9C4EB900004F904A80664C9F +S3210002104C1943076D600008E64A8467402A3C00021AE42F022F054EB900004F903C +S321000210684A8067044A92674471AC076E26802F002F0548790000F68C4EB90000C3 +S321000210844708486A00044EB900003E004A92670008A4601C2F02487A0A484EB947 +S321000210A000004F904A8066081943076E6000088A4A8467402A3C00021AEC2F023E +S321000210BC2F054EB900004F904A8067044A92674071AC076F26802F002F054879E1 +S321000210D80000F68C4EB900004708486A00044EB900003E004A9267000848601816 +S321000210F42F02487A09F44EB900004F904A80664C1943076F6000082E4A846740A9 +S321000211102A3C00021AF42F022F054EB900004F904A8067044A92674071AC0770AE +S3210002112C26802F002F0548790000F68C4EB900004708486A00044EB900003E0002 +S321000211484A92670007EC60182F02487A09A04EB900004F904A8066481943077008 +S32100021164600007D22A3C00021AFC2F022F054EB900004F904A8067044A926740AD +S3210002118071AC077126802F002F0548790000F68C4EB900004708486A00044EB957 +S3210002119C00003E004A926700079460182F02487A09504EB900004F904A80664CED +S321000211B8194307716000077A4A8467402A3C00021B042F022F054EB900004F9017 +S321000211D44A8067044A92674071AC077226802F002F0548790000F68C4EB9000056 +S321000211F04708486A00044EB900003E004A926700073860182F02487A08FC4EB999 +S3210002120C00004F904A806648194307726000071E2A3C00021B0C2F022F054EB912 +S3210002122800004F904A8067044A92674071AC077326802F002F0548790000F68C28 +S321000212444EB900004708486A00044EB900003E004A92670006E060182F02487AA1 +S3210002126008AC4EB900004F904A80664C19430773600006C64A8467402A3C000275 +S3210002127C1B142F022F054EB900004F904A8067044A92674471AC077426802F00AB +S321000212982F0548790000F68C4EB900004708486A00044EB900003E004A92670027 +S321000212B40684601C2F02487A08584EB900004F904A806608194307746000066AF8 +S321000212D04A8467402A3C00021B1C2F022F054EB900004F904A8067044A926740E3 +S321000212EC71AC077526802F002F0548790000F68C4EB900004708486A00044EB9E6 +S3210002130800003E004A926700062860182F02487A08044EB900004F904A80664C39 +S32100021324194307756000060E4A8467402A3C00021B242F022F054EB900004F90F2 +S321000213404A8067044A92674071AC077626802F002F0548790000F68C4EB90000E4 +S3210002135C4708486A00044EB900003E004A92670005CC60182F02487A07B04EB9E6 +S3210002137800004F904A80664819430776600005B22A3C00021B2C2F022F054EB9EF +S3210002139400004F904A8067044A92674071AC077726802F002F0548790000F68CB7 +S321000213B04EB900004708486A00044EB900003E004A926700057460182F02487AA1 +S321000213CC07604EB900004F904A80664C194307776000055A4A8467402A3C0002BE +S321000213E81B342F022F054EB900004F904A8067044A92674071AC077826802F001E +S321000214042F0548790000F68C4EB900004708486A00044EB900003E004A926700B9 +S32100021420051860182F02487A070C4EB900004F904A80664819430778600004FE72 +S3210002143C2A3C00021B3C2F022F054EB900004F904A8067044A92674071AC07792D +S3210002145826802F002F0548790000F68C4EB900004708486A00044EB900003E00D3 +S321000214744A92670004C060182F02487A06BC4EB900004F904A80664C19430779E2 +S32100021490600004A64A8467402A3C00021B442F022F054EB900004F904A80670472 +S321000214AC4A92674471AC077A26802F002F0548790000F68C4EB900004708486AA3 +S321000214C800044EB900003E004A9267000464601C2F02487A06684EB900004F9049 +S321000214E44A8066081943077A6000044A4A8467402A3C00021B4C2F022F054EB971 +S3210002150000004F904A8067044A92674071AC077B26802F002F0548790000F68C45 +S3210002151C4EB900004708486A00044EB900003E004A926700040860182F02487AA0 +S3210002153806144EB900004F904A80664C1943077B600003EE4A8467402A3C000207 +S321000215541B542F022F054EB900004F904A8067044A92674071AC077C26802F008C +S321000215702F0548790000F68C4EB900004708486A00044EB900003E004A9267004C +S3210002158C03AC60182F02487A05C04EB900004F904A8066481943077C600003922A +S321000215A82A3C00021B5C2F022F054EB900004F904A8067044A92674071AC077D9C +S321000215C426802F002F0548790000F68C4EB900004708486A00044EB900003E0066 +S321000215E04A926700035460182F02487A05704EB900004F904A80664C1943077D2B +S321000215FC6000033A4A8467402A3C00021B642F022F054EB900004F904A80670452 +S321000216184A92674071AC077E26802F002F0548790000F68C4EB900004708486A35 +S3210002163400044EB900003E004A92670002F860182F02487A051C4EB900004F909A +S321000216504A8066481943077E600002DE2A3C00021B6C2F022F054EB900004F90A3 +S3210002166C4A8067044A92674071AC07E026802F002F0548790000F68C4EB900004B +S321000216884708486A00044EB900003E004A92670002A060182F02487A04CC4EB9CD +S321000216A400004F904A80664C194307E0600002864A8467402A3C00021B742F02FF +S321000216C02F054EB900004F904A8067044A92674471AC07E426802F002F0548795E +S321000216DC0000F68C4EB900004708486A00044EB900003E004A9267000244601C12 +S321000216F82F02487A04784EB900004F904A806608194307E46000022A4A846740F9 +S321000217142A3C00021B7C2F022F054EB900004F904A8067044A92674071AC07E8A3 +S3210002173026802F002F0548790000F68C4EB900004708486A00044EB900003E00F8 +S3210002174C4A92670001E860182F02487A04244EB900004F904A80664C194307E80D +S32100021768600001CE4A8467402A3C00021B842F022F054EB900004F904A80670432 +S321000217844A92674071AC07EC26802F002F0548790000F68C4EB900004708486A5A +S321000217A000044EB900003E004A926700018C60182F02487A03D04EB900004F90E8 +S321000217BC4A806648194307EC600001722A3C00021B8C2F022F054EB900004F9015 +S321000217D84A8067044A92674071AC07F026802F002F0548790000F68C4EB90000CE +S321000217F44708486A00044EB900003E004A926700013460182F02487A03804EB91A +S3210002181000004F904A80664C194307F06000011A4A8467402A3C00021B942F02CE +S3210002182C2F054EB900004F904A8067044A92674071AC07F426802F002F054879E4 +S321000218480000F68C4EB900004708486A00044EB900003E004A92670000D8601816 +S321000218642F02487A032C4EB900004F904A806648194307F4600000BE2A3C000203 +S321000218801B9C2F022F054EB900004F904A8067044A92673E71AC07F826802F009B +S3210002189C2F0548790000F68C4EB900004708486A00044EB900003E004A9267001D +S321000218B8008060162F02487A02DC4EB900004F904A806644194307F860664A84FC +S321000218D4673A263C00021BA42F022F034EB900004F904A8067044A92673C71AC12 +S321000218F007FC26802F002F0348790000F68C4EB900004708486A00044EB9000074 +S3210002190C3E0060282F02487A02904EB900004F904A806606194307FC60124A92A3 +S32100021928660E2F024879000040244EB9000047084CEE1C3CFFE44E5E4E7551FC4A +S32100021944495052480051FC514950524C0051FC51494D52480051FC51494D524CD7 +S321000219600051FC51494E544652434800494E544652434C0049524C520051FC51CE +S3210002197C4941434B4C505200494352310051FC51494352320051FC5149435233D5 +S321000219980051FC51494352340051FC51494352350051FC51494352360051FC517A +S321000219B4494352370051FC51494352380051FC51494352390051FC5149435231E4 +S321000219D0300051FC49435231310051FC49435231320051FC49435231330051FCCC +S321000219EC49435231340051FC49435231350051FC49435231370051FC4943523114 +S32100021A08380051FC49435231390051FC49435232300051FC49435232310051FC85 +S32100021A2449435232320051FC49435232330051FC49435232340051FC49435232DE +S32100021A40350051FC49435232360051FC49435232370051FC49435232380051FC44 +S32100021A5C49435232390051FC49435233300051FC49435233310051FC49435233A2 +S32100021A78320051FC49435233330051FC49435233340051FC49435233350051FC15 +S32100021A9449435233360051FC49435233370051FC49435233380051FC494352335E +S32100021AB0390051FC49435234300051FC49435234310051FC49435234320051FCDC +S32100021ACC49435234330051FC49435234340051FC49435234350051FC494352342B +S32100021AE8360051FC49435234370051FC49435234380051FC49435234390051FC92 +S32100021B0449435235300051FC49435235310051FC49435235320051FC49435235F7 +S32100021B20330051FC49435235340051FC49435235350051FC49435235360051FC62 +S32100021B3C49435235370051FC49435235380051FC49435235390051FC49435236A9 +S32100021B58300051FC49435236310051FC49435236320051FC53574941434B0051B4 +S32100021B744C314941434B00514C324941434B00514C334941434B00514C3449418E +S32100021B90434B00514C354941434B00514C364941434B00514C374941434B005191 +S32100021BAC4E56FFDC48D73C7C242E00082A2E000C282E001045F90002B3F047EA87 +S32100021BC8000849F910000000263C00004F904A85673C2C3C00021E702F022F068E +S32100021BE42A434E954A8067044A92673C26AC09002F132F0648790000F6AC4EB91D +S32100021C0000004708486A00044EB900003E004A926700025460162F02487A02561C +S32100021C1C2A434E954A806644294409006000023C2C3C00021E782F022F062A43F9 +S32100021C384E954A8067044A92673A26AC09042F132F0648790000F6AC4EB9000033 +S32100021C544708486A00044EB900003E004A926700020260142F02487A020C4E9583 +S32100021C704A80664829440904600001EC4A85673C2C3C00021E802F022F062A43C4 +S32100021C8C4E954A8067044A92673C26AC09082F132F0648790000F6AC4EB90000D9 +S32100021CA84708486A00044EB900003E004A92670001AE60162F02487A01C02A4345 +S32100021CC44E954A80664429440908600001962C3C00021E882F022F062A434E956A +S32100021CE04A8067044A92673A26AC090C2F132F0648790000F6AC4EB90000470817 +S32100021CFC486A00044EB900003E004A926700015C60142F02487A01764E954A809E +S32100021D1866482944090C600001464A85673C2C3C00021E902F022F062A434E9590 +S32100021D344A8067044A92674026AC09102F132F0648790000F6AC4EB900004708B8 +S32100021D50486A00044EB900003E004A9267000108601A2F02487A012A2A434E9540 +S32100021D6C4A80660829440910600000F04A85673C2C3C00021E982F022F062A43E0 +S32100021D884E954A8067044A92673C26AC09142F132F0648790000F6AC4EB90000D0 +S32100021DA44708486A00044EB900003E004A92670000B260162F02487A00DC244330 +S32100021DC04E924A806646294409146000009A4A85673A283C00021EA02F022F042D +S32100021DDC2A434E954A8067044A92673826AC09182F132F0448790000F6AC4EB911 +S32100021DF800004708486A00044EB900003E004A92675C60142F02487A0090244380 +S32100021E144E924A80663C294409186046283C00021EA82F022F042A434E954A8080 +S32100021E3067044A92673026AC091C2F132F0448790000F6AC4EB900004708486AD9 +S32100021E4C00044EB900003E0060102F02487A004E4E924A8066042944091C4CEE98 +S32100021E683C7CFFDC4E5E4E75534C54434E543000534352300051FC5153434E545E +S32100021E84300051FC535352300051FC51534C54434E543100534352310051FC5137 +S32100021EA053434E54310051FC535352310051FC514E56FFDC48D73C7C242E0008F1 +S32100021EBC2A2E000C262E001045F90002B3F047EA000849F910000000283C000068 +S32100021ED84F904A85673C2C3C000224142F022F062A444E954A8067044A92673C88 +S32100021EF426AC08002F132F0648790000F6AC4EB900004708486A00044EB9000003 +S32100021F103E004A92670004F260162F02487A04F62A444E954A806644294308009A +S32100021F2C600004DA2C3C0002241C2F022F062A444E954A8067044A92673A26AC6E +S32100021F4808042F132F0648790000F6AC4EB900004708486A00044EB900003E003E +S32100021F644A92670004A060142F02487A04AC4E954A806648294308046000048A9A +S32100021F804A85673C2C3C000224242F022F062A444E954A8067044A92673C26ACDC +S32100021F9C08082F132F0648790000F6AC4EB900004708486A00044EB900003E00E6 +S32100021FB84A926700044C60162F02487A04602A444E954A80664429430808600004 +S32100021FD404342C3C0002242C2F022F062A444E954A8067044A92673A26AC080CA8 +S32100021FF02F132F0648790000F6AC4EB900004708486A00044EB900003E004A92C6 +S3210002200C670003FA60142F02487A04164E954A8066482943080C600003E44A85DA +S32100022028673C2C3C000224342F022F062A444E954A8067044A92674026AC0810D6 +S321000220442F132F0648790000F6AC4EB900004708486A00044EB900003E004A9271 +S32100022060670003A6601A2F02487A03CA2A444E954A806608294308106000038E14 +S3210002207C4A85673C2C3C0002243C2F022F062A444E954A8067044A92673C26ACC7 +S3210002209808142F132F0648790000F6AC4EB900004708486A00044EB900003E00DD +S321000220B44A926700035060162F02487A037C2A444E954A806648294308146000D9 +S321000220D003384A85673C2C3C000224442F022F062A444E954A8067044A92673C02 +S321000220EC26AC08182F132F0648790000F6AC4EB900004708486A00044EB90000F1 +S321000221083E004A92670002FA60162F02487A032E2A444E954A806644294308184B +S32100022124600002E22C3C0002244C2F022F062A444E954A8067044A92673A26AC3E +S32100022140081C2F132F0648790000F6AC4EB900004708486A00044EB900003E002C +S3210002215C4A92670002A860142F02487A02E44E954A8066482943081C6000029246 +S321000221784A85673C2C3C000224542F022F062A444E954A8067044A92673C26ACB2 +S3210002219408202F132F0648790000F6AC4EB900004708486A00044EB900003E00D4 +S321000221B04A926700025460162F02487A02982A444E954A806644294308206000B6 +S321000221CC023C2C3C0002245C2F022F062A444E954A8067044A92673A26AC082460 +S321000221E82F132F0648790000F6AC4EB900004708486A00044EB900003E004A92CC +S321000222046700020260142F02487A024E4E954A80664829430824600001EC4A8585 +S32100022220673C2C3C000224642F022F062A444E954A8067044A92674026AC082894 +S3210002223C2F132F0648790000F6AC4EB900004708486A00044EB900003E004A9277 +S32100022258670001AE601A2F02487A02022A444E954A8066082943082860000196BF +S321000222744A85673C2C3C0002246C2F022F062A444E954A8067044A92673C26AC9D +S32100022290082C2F132F0648790000F6AC4EB900004708486A00044EB900003E00CB +S321000222AC4A926700015860162F02487A01B424444E924A8066482943082C600094 +S321000222C801404A85673C2C3C000224742F022F062A444E954A8067044A92673CD2 +S321000222E426AC08302F132F0648790000F6AC4EB900004708486A00044EB90000DF +S321000223003E004A926700010260162F02487A016624444E924A8066442943083005 +S3210002231C600000EA2C3C0002247C2F022F062A444E954A8067044A92673A26AC0E +S3210002233808342F132F0648790000F6AC4EB900004708486A00044EB900003E001A +S321000223544A92670000B060142F02487A011C4E924A806646294308346000009AF6 +S321000223704A85673A263C000224842F022F032A444E954A8067044A92673826AC97 +S3210002238C08382F132F0348790000F6AC4EB900004708486A00044EB900003E00C5 +S321000223A84A92675C60142F02487A00D224444E924A80663C294308386046263CD1 +S321000223C40002248C2F022F032A444E954A8067044A92673026AC083C2F132F035D +S321000223E048790000F6AC4EB900004708486A00044EB900003E0060102F02487AC2 +S321000223FC00904E924A8066042943083C4CEE3C7CFFDC4E5E4E7551FC474D5330C9 +S321000224180051FC5147434952300051FC4750574D300051FC475352300051FC51EE +S32100022434474D53310051FC5147434952310051FC4750574D310051FC4753523155 +S321000224500051FC51474D53320051FC5147434952320051FC4750574D320051FCB5 +S3210002246C475352320051FC51474D53330051FC5147434952330051FC4750574DF8 +S32100022488330051FC475352330051FC514E56FFE048D73C3C262E0008282E001017 +S321000224A445F90002B3F0243C00004F904AAE000C49F91000000067402A3C00028D +S321000224C0260847EA00082F032F052A424E954A8067044A92673C26AC00102F1304 +S321000224DC2F0548790000F6AC4EB900004708486A00044EB900003E004A926700B1 +S321000224F8010460162F03487A010824424E924A80664429440010600000EC2A3C5F +S32100022514000226102F032F052A424E954A8067044A92673A26AC00382F132F0584 +S3210002253048790000F6AC4EB900004708486A00044EB900003E004A92670000B2DE +S3210002254C60142F03487A00BE4E924A806648294400386000009C4AAE000C673AA7 +S32100022568283C000226182F032F042A424E954A8067044A92673826AC00442F13EF +S321000225842F0448790000F6AC4EB900004708486A00044EB900003E004A92675CAD +S321000225A060142F03487A007224424E924A80663C294400446046283C0002261C8C +S321000225BC2F032F042A424E954A8067044A92673026AC00502F132F044879000047 +S321000225D8F6AC4EB900004708486A00044EB900003E0060102F03487A002C4E927C +S321000225F44A806604294400504CEE3C3CFFE04E5E4E7551FC534243520051FC51BD +S321000226105345435341435200525352004A544147494400514E560000226E00086B +S3210002262C206E000C7000B0AE0010640A22D85880B0AE001065F64E5E4E7551FC4D +S321000226484E560000206E000820BC00026BC4A7404E5E4E754E56000071FC173C6D +S321000226644E5E4E754E560000A1404E5E4E7551FC4E5600002F0220790002B8C8B2 +S32100022680A54171FCA00221400078A3680080242E000820280080E4A80800000027 +S3210002269C6702A741202E000841F900026BF421810C00242EFFFC4E5E4E7551FC21 +S321000226B84E560000222E00087010B081620470FD601A20790002B8C830301A1C53 +S321000226D40280000080004A4067042F01619270004E5E4E754E5600002F032F02E2 +S321000226F0222E00087010B081620470FD603620790002B8C830301A1C0280000021 +S3210002270C80004A40672021410070A3427610D681E7A200820000E00221420078BC +S3210002272841F900026BF4A9701C0070004CEE000CFFF84E5E4E7551FC4E560000B0 +S321000227442F02222E00087010B081620470FD602220790002B8C843F01A0034291D +S32100022760001C08C2000F3342001C41F900026BF4A7701C007000242EFFFC4E5E98 +S3210002277C4E7551FC4E560000226E00087010B089620470FD601C20790002B8C8CA +S3210002279842709A1C2F094EBAFF1841F900026BF4AB709C0070004E5E4E7551FCE0 +S321000227B44E56FFD848D7047C262E0008206E000C7010B083620670FD600001AC5C +S321000227D02003E78022790002B8CC43F10C00246900182D6A0044FFF024690018E6 +S321000227EC2D6A003CFFF4246900182D6A0040FFF824690018202A00382D40FFFC01 +S321000228082469001820AA004424690018216A003C000424690018216A0040000811 +S3210002282424690018216A0038000C2010B0AEFFF0661E20280004B0AEFFF4661404 +S3210002284020280008B0AEFFF8660A2028000CB0AEFFFC67162D50FFF02D68000430 +S3210002285CFFF42D680008FFF82028000C609A43F90002BAD822313C00675E0C81D2 +S3210002287800000001676270FFB081660000AA45F13C00282800042C2A00C024685A +S32100022894000C2A065385C885CAAA000C2468000C202A000C45F13A002428000491 +S321000228B0908594849082756A008022004C4218017542D4864C0218009081D085C0 +S321000228CC908421400008605A2468000C216A000C0004604E45F13C002C2A00C048 +S321000228E82468000C22065381282A000CC881C2A800042468000C202A000C2428E9 +S3210002290400042A28000490849A8045F13A009481736A008094804C4128027341C6 +S3210002292092864C0218009A819A842145000822313C4067100C810000000167161D +S3210002293C70FFB081671060342268000C222900082081700060282468000C222A66 +S32100022958000845F13C00202800084C6A000000C045F13A00756A00A04C020800D6 +S32100022974D280208170004CEE047CFFD84E5E4E754E56FFD448D73CFC226E000C72 +S32100022990242E0008262E00147A007010B082620670FD6000028A24790002B8C855 +S321000229ACA140322A001208C1000F354100124A6E00126D0A4A6E00125EC049C026 +S321000229C844802200A1404A6E001A6D0A4A6E001A5EC049C0448041F90002BAD850 +S321000229E43D6E0022FFFE21802C0021812C4049F02A00396E001A008049F02A0023 +S32100022A00396E001200A049F02C002002296E002000C0E78026790002B8CC41F39B +S32100022A1C0C002828001806840000003860025285322E0026E18900810000006056 +S32100022A3835812A1C7DF22A1C222E0024028600001FFFE18908C1000608C10005A8 +S32100022A54BC8167080C85000003E86DCA122E002B7007C2801581283C0C82000053 +S32100022A70000864307A1C2002E5809A80700FEBA04680C1AA0060A741C2AE00205C +S32100022A8C7C1E20012E02E5879C87EDA881AA0060EBA983AA0060602E7A3C200205 +S32100022AA8E5809A80700FEBA04680C1AA0064A741C2AE00207C3E20012E02E587FD +S32100022AC49C87EDA881AA0064EBA983AA00642028000C49F90002B8D042002140BF +S32100022AE0000C71AE002F81A8000C082E0004002E6722245420EA006020AA006442 +S32100022AFC2F022F0B2F032F092F094EB900022E9C4FEF001460000110082E0005D8 +S32100022B18002E6722245420EA004020AA00442F022F0B2F032F092F094EB90002FC +S32100022B342FC84FEF0014600000E6082E0000002E670000882002E7802479000273 +S32100022B50BAD445F20C00254900082543000C25430010256E001C0014429242AAAB +S32100022B6C000442AA00182A6800182B4900442A6800182B43003C2A68001842ADEE +S32100022B8800402A6800182B4A0038285420EC002020AC00242F022F0B2F042F0A23 +S32100022BA42F2E002C302EFFFE2F002F2E001C302E001A2F002F03302E00122F0009 +S32100022BC02F094EB9000233244FEF002C6054246800182569000800442468001819 +S32100022BDC2569000C003C2468001842AA004024680018254900382454200920DA4A +S32100022BF820922F022F0B2F04302EFFFE2F002F2E0020302E001A2F00302E00124B +S32100022C142F002F094EB9000234204FEF002041F900026BF4A5702C0070004CEEF4 +S32100022C303CFCFFD44E5E4E754E5600002F02242E00087010B082620470FD605C96 +S32100022C4C20790002B8C843F900026BF471FC800073F02A1CC08122312C004A808C +S32100022C6866160C810000000367045581662EAD712C0020312C0060280C8100008B +S32100022C840003670455816618A368008022280080A540E4A9080100006702A7404A +S32100022CA023802C0020312C00242EFFFC4E5E4E754E56FFE448D71C3C206E000C70 +S32100022CBC47F90002B8CC202E000849F90002B8D023C00002B8C8082E000000135E +S32100022CD86700010430080280000001FF4A4066000108268843E80200707F2409C2 +S32100022CF4C0824A40670A0482FFFFFF80088200072602068300000800303C00FFC7 +S32100022D10C0834A40670A068300000100088300082803068400000100720042B02A +S32100022D2C1C0052810C81000004C06DF2245372002001E7807A038A8341F20C00AA +S32100022D48701021440018214200082145000C0682000000800684000000805281A8 +S32100022D64B0816ED4487801002F3C00027634202A000C42002F004EBAF8A84FEF53 +S32100022D80000C2884487800802F3C000277342F044EBAF892245441EA0080260809 +S32100022D9C72004FEF000C2001E78049F20C0041EC000420142410280894805882D1 +S32100022DB82F022F002F034EBAF86420442883D68220035980208052810C8100009E +S32100022DD400044FEF000C6DC6604C41F900026C3430080280000001FF4A40670621 +S32100022DF070FE6000009E72002001E78043F00C003429000A707FC4804A4266E4AA +S32100022E0C3029000E0280000000FF4A4066D652817010B0816ED6268828BC000298 +S32100022E28773420790002B8C8203C0002B8D423C00002BAD42093720042701A1C56 +S32100022E4443F900026BF47010A3711C005281B0816EEA42A8007042A8007471FC9C +S32100022E60A00221400078A168007C082E0001001367123028001202800000FFFEA2 +S32100022E7C314000127000600E32280012700182803141001270004CEE1C3CFFE489 +S32100022E984E5E4E754E560000202E0018226E0014E78041F10C002268000822AEF2 +S32100022EB4000822680008236E000C000C22680008236E0010002C2268000842A9DB +S32100022ED000042268000842A900082268000842A900102268000842A900142268AD +S32100022EEC000842A900182268000842A9001C2268000842A900202268000842A904 +S32100022F0800242268000842A900282268000842A900302268000871FCFFFF2340CF +S32100022F24003422680008A169003822680008A969003C22680008700823400040F4 +S32100022F402268000842A9006022680008203C600000002340006422680008203C8D +S32100022F5C400000002340006822680008203CC000FFFC2340006C22680008203CE0 +S32100022F78E00000042340007022680008203C800000002340007422680008203C4B +S32100022F944000FFFF2340007820680008203CE00000012140007C202E0018207957 +S32100022FB00002B8C843F00A003229001C08C1000F3341001C4E5E4E754E5600004C +S32100022FCC202E0018226E0014E78041F10C002268000822AE000822680008236EA5 +S32100022FE8000C000C22680008236E001000182268000842A900042268000842A964 +S3210002300400082268000842A900102268000842A900142268000842A9001C22685F +S32100023020000842A900202268000871FCFFFF2340002422680008203C30000000D7 +S3210002303C2340002822680008203C0FFFFFFF2340002C22680008700823400030BF +S321000230582268000842A9006022680008203C600000002340006422680008203C74 +S32100023074200000042340006820680008203C400000002140006C202E0018207951 +S321000230900002B8C843F00A003229001C08C1000F3341001C4E5E4E754E5600006B +S321000230AC202E0030E780206E002C41F00C0022680008236E00080020736E000EEA +S321000230C82268000871C10080E00000002340006422680008236E0010000C736ED9 +S321000230E400162268000871C10080E00000002340006022680008236E0018001080 +S32100023100736E001E2268000871C108C0001D2340006822680008202E00202340D5 +S3210002311C001822680008202E00242340000822680008202E0028228022680008CC +S3210002313842A900042268000842A900142268000842A9001C2268000842A90024B9 +S3210002315422680008A369002822680008A969002C22680008203C08000000234068 +S3210002317000302268000842A9006C22680008203CC000000023400070226800080F +S3210002318C203C800000002340007422680008203C80000001234000782068000892 +S321000231A8203C400000002140007C202E003020790002B8C843F00A003229001C3D +S321000231C408C1000F3341001C4E5E4E754E560000202E0024E780206E002041F0B4 +S321000231E00C0022680008236E0008000C736E000E2268000871C10080E000000075 +S321000231FC23400064736E00122268000871C10080E000000023400060226800087C +S32100023218236E00140030736E001A2268000871C108C0001D2340006822680008BC +S3210002323422AE001C2268000842A900042268000842A900082268000842A90010F7 +S321000232502268000842A900142268000842A900182268000842A9001C2268000809 +S3210002326C42A900202268000842A900242268000842A900282268000842A9002C44 +S321000232882268000842A9003422680008203C800000002340003822680008701056 +S321000232A42340003C22680008A369004022680008A969004422680008203C0800AB +S321000232C00000234000482268000842A9006C22680008203C800000002340007015 +S321000232DC22680008203CC00000002340007422680008203C8000000123400078FF +S321000232F820680008203C400000002140007C202E002420790002B8C843F00A00DF +S321000233143229001C08C1000F3341001C4E5E4E754E560000202E0030E780206E30 +S32100023330002C41F00C0022680008236E0008001C736E000E2268000871C1008096 +S3210002334CE00000002340006422680008236E00100008736E00162268000871C1C0 +S321000233680080E00000002340006022680008236E0018000C736E001E2268000846 +S3210002338471C108C0001D2340006822680008202E00202340001422680008202EEC +S321000233A000242340000422680008202E002822802268000842A9001022680008B5 +S321000233BC42A900182268000842A9002022680008A969002422680008203C08008F +S321000233D80000234000282268000842A9006C22680008203C80000001234000701B +S321000233F420680008203C4000000021400074202E003020790002B8C843F00A00DE +S321000234103229001C08C1000F3341001C4E5E4E754E560000202E0024E780206E3F +S3210002342C002041F00C0022680008236E00080008736E000E2268000871C10080B9 +S32100023448E000000023400064736E00122268000871C10080E000000023400060DF +S3210002346422680008236E0014002C736E001A2268000871C108C0001D2340006872 +S321000234802268000822AE001C2268000842A900042268000842A9000C226800080E +S3210002349C42A900102268000842A900142268000842A900182268000842A9001C52 +S321000234B82268000842A900202268000842A900242268000842A90028226800087B +S321000234D442A9003022680008203C80000000234000342268000870102340003807 +S321000234F022680008A969003C22680008203C08000000234000402268000842A9C2 +S3210002350C006C22680008203C800000002340007022680008203C8000000123401C +S32100023528007420680008203C4000000021400078202E002420790002B8C843F046 +S321000235440A003229001C08C1000F3341001C4E5E4E7551FC4E56FFF048D7041CEC +S3210002356075AE000B263C100000002443D5FC000090082002E180E7802043D1FCBD +S3210002357C0000902428320800D5C07182E180E780429222300800D1C07002C28052 +S321000235984A4167422243D3FC000090C47182E180E380720183B10C00600A22104D +S321000235B47002C2804A41671C22437182E180E780D3FC0000900422310800D3C0C0 +S321000235D002811000000067DA22BC1000000070134A02660270112F004EB9000225 +S321000235EC4CE42F004EB90002278070134A02508F660270112F004EB900024D5C34 +S3210002360870134A02588F660270112F004EB900024CB42484588F4CEE041CFFF0EF +S321000236244E5E4E754E5600002F0A2F032F0275AE000B45F9100000002002E180D4 +S32100023640D5FC00009008E78026320800D5C0701242924A02660270102F004EB9E1 +S3210002365C00024CE42F004EB90002278070124A02660270102F004EB900024D5CA2 +S3210002367870124A02660270102F004EB900024CB424834CEE040CFFF44E5E4E75ED +S321000236944E56000043F91000000071AE000B2049E180D1FC00009008E38042B074 +S321000236B00C0070404A2E000B660471FC008081A907084E5E4E7551FC4E560000C7 +S321000236CC2F032F0275AE000BAF674EB90000F018260010022F004EBAFE74100231 +S321000236E82F004EBAFF3C10022F0061A041F910000000E182D1FC00009024E38277 +S3210002370472FDC3B02C004EB900005A042F034EB90000F0184CEE000CFFF84E5E04 +S321000237204E7551FC4E5600004E5E4E754E5600004878006042A771AE000B721801 +S3210002373C4C01080041F90002DBD843F00C002F094EB900004B884E5E4E7551FC18 +S321000237584E5600002F032F0273AE000B203C10000000E181E781204122000681DA +S3210002377400009188263C80F0000022402183180022000681000091A806800000C0 +S321000237909024D3FC000091C4218318002231880008C100192381880022318800BD +S321000237AC0881001923818800A3700800740A4E71538266FA4CEE000CFFF84E5EB5 +S321000237C84E7551FC4E56FFF048D7003CA1417600206E0008183038007A08A3420A +S321000237E47184C480A340C081B1826712E2890A81EDB883207984E28C538566E2EF +S32100023800600AE2897984E28C538566D652830C83000000066DC2701AE0A94CEE6A +S3210002381C003CFFF071814E5E4E7551FC4E5600002F032F02206E000C77A80001EE +S3210002383871AE000B7390E180E78022407018E1A17010E1A371A800028283E18086 +S32100023854828071A80003243C10000000828020020680000090E42381080077A8D9 +S32100023870000573A800047018E1A17010E1A320020680000090E882832381080031 +S3210002388C2F084EBAFF3C22000C00002065180682000091187780A3400483000041 +S321000238A80020E7A081B12800600E06820000911CA340E3A081B128004CEE000C52 +S321000238C4FFF84E5E4E7551FC4E5600002F0A2F032F02162E000B4A2E000F661E93 +S321000238E0323C80000C030001662C303910000A44323C0800808133C010000A44A5 +S321000238FC6026102E000F0C000001661C323CF0000C0300016604323C0FC03039C8 +S3210002391810000A44808133C010000A44243C100000007183E180E7802440200229 +S3210002393406800000911C42B20800200206800000911842B208002002068000004B +S32100023950912442B20800200206800000912042B208002F2E00102F034EBAFEBEEA +S3210002396C2002068000009008204242B208002002068000009004D1FC000090847C +S32100023988A1720800203C05EE00202180A800102E000FD1CA0C0000016606A940FE +S321000239A48190600A0C0000026604A340819020020680000090C4A97208002002D7 +S321000239C006800000918C223C0F20000025810800200206800000919873FC0300C2 +S321000239DC2581080020020680000091AC223C0F240000258108002002068000004D +S321000239F891B873FC01002581080020020680000091440682000091C8A7720800C5 +S32100023A14203C03000000258028004CEE040CFFF44E5E4E754E5600002F02222E91 +S32100023A30000C70054C4010015281743FC48141F91000000071AE000BE38AE18047 +S32100023A4CD1FC00009044E38021820C00242EFFFC4E5E4E754E5600002F042F03DE +S32100023A682F02122E000B76264A01660276277007142E0013182E000FC0827407F4 +S32100023A84C48441F910000000E78243F0380080821340074022487181E180D3FC90 +S32100023AA000009004E380A1710C0022487181E180D3FC00009008E380A1710C0048 +S32100023ABC70BF4A016604717CFF7FC1A807084CEE001CFFF44E5E4E754E560000C3 +S32100023AD870124A2E000B660270102F004EB900024CE42F004EB9000227404E5E2A +S32100023AF44E7551FC4E56FFE048D73C3C263C00005990283C00023AD46000019ACA +S32100023B1071AE000B72184C01080041F90002DBD8A34541F00C0052A80034301204 +S32100023B2C0800000B6718323C0608C2804A41660E322A000202810000F8004A41C2 +S32100023B48670852A800386000012A7217C2804A4167347A0008000004670452A851 +S32100023B64005008000002670452A8005408000001670452A80058080000006738BD +S32100023B8041E8005C52904A85670000F0603008000005670452A8004C0800000836 +S32100023B9C670452A8004008000007670452A8004408000006670641E800485290DA +S32100023BB84A85670000BEA5674EB9000058BC2640322A0002701292803741000AF4 +S32100023BD4377C000E00084EB9000059D028404A80588F662A3012357C080000022E +S32100023BF0028000003000348008D200072F0BA56728434E942F0228444E944FEF1A +S32100023C0C000C600000982F00A5672A434E95256C000400043012357C080000026F +S32100023C28028000003000348008D200072F022A444E95246B0004302A000C2F0087 +S32100023C442F2E000C4EB900005C504A804FEF001467182F0B302A000C2F002F2E79 +S32100023C60000C4EB900005C0C4FEF000C603A2F0B4EB9000058FC588F602E301295 +S32100023C7C357C08000002028000003000348008D20007A5674EB9000058BC2F00CC +S32100023C98A56726434E932F0226444E934FEF001075AE000B10022F004EB9000270 +S32100023CB44AF84A802440588F6600FE524CEE3C3CFFE04E5E4E7551FC4E560000EE +S32100023CD048790002B6BC42A74EBAFE1E4E5E4E754E56000048790002B6BCA3673C +S32100023CEC4EBAFE0A4E5E4E754E5600002F032F02142E000B70124A02660270102B +S32100023D082F004EB900024DBC70124A02660270102F004EB900024D8C26007012E7 +S32100023D244A0266122F3C00023CCC487800104EB900024D1860102F3C00023CE00B +S32100023D40487800124EB900024D182F3CA00456702F3C10002007AB672F0342A77B +S32100023D5C4878080042A7223C100000000681000091847582E182E782D2822F0141 +S32100023D7842A72F2E000C2F004EB9000229844CEE000CFFF84E5E4E754E560000A0 +S32100023D942F0A102E000B2F004EB900024A3C4A802440588F674271AE000B721859 +S32100023DB04C01080041F90002DBD852B00C30A3674EB9000058BC2F004EB9000012 +S32100023DCC58FC42AA0004426A0002508F102E000B2F004EB900024A3C4A802440CD +S32100023DE8588F66BE246EFFFC4E5E4E754E56000042A761944E5E4E754E5600001B +S32100023E04A36761884E5E4E754E5600002F032F02142E000B70134A02660270112C +S32100023E202F004EB900024DBC70134A02660270112F004EB900024D8C26007013CB +S32100023E3C4A0266122F3C00023DF4487800114EB900024D1860102F3C00023E00A6 +S32100023E58487800134EB900024D182F3CA00456702F3C10001007AD672F0342A76F +S32100023E74487805EA42A7223C100000000681000091A47582E182E782D2822F0121 +S32100023E9042A72F2E000C2F004EB9000229844CEE000CFFF84E5E4E754E56000087 +S32100023EAC2F0275AE000B10022F004EBAF7DC10022F004EBAF86C4EB900005A7CED +S32100023EC810022F004EB900024B8410022F004EBAF8802F2E0018102E000F2F000B +S32100023EE410022F004EBAF9E2102E000F0C000001660C4878008410022F004EBA3D +S32100023F00FB284A2E000B56C044802F00AB6771822F004EBAFB4CA36771822F003F +S32100023F1C4EB900024B40508F2F0010022F004EBAFDC842A710022F004EB900029E +S32100023F384B40508F2F002F024EBAFECA41F91000000071AE000BD1FC00009024D6 +S32100023F54E180E380720283B00C00242EFFFC4E5E4E7551FC4E5600002F0A2F03BA +S32100023F702F0271AE000B45F9100000002400224AD3FC00009004E182E7827380D2 +S32100023F8CE181D5FC00009008E3812631280041F90002DBD8C6B21C002383280012 +S32100023FA8080300116712738074184C02180043F01C00529152A9002C0803001205 +S32100023FC46712738074184C02180043F01C00529152A9002808030013671273809C +S32100023FE074184C02180043F01C00529152A90024080300146712738074184C0215 +S32100023FFC180043F01C00529152A90020080300156712738074184C02180043F08B +S321000240181C00529152A9001C08030017670C738074184C02180052B01C180803B3 +S32100024034001B670C738074184C02180052B01C140803001C670C738074184C025C +S32100024050180052B01C100803001D6712738074184C02180043F01C00529152A953 +S3210002406C000C0803001E6712738074184C02180043F01C00529152A90008223C0A +S3210002408880000000C2836710718072184C01080041F00C00529852904CEE040CB5 +S321000240A4FFF44E5E4E7551FC4E560000A3674EBAFEB4A3404E5E4E754E560000EB +S321000240C042A74EBAFEA4A3404E5E4E754E56000070134A2E000B660270112F0035 +S321000240DC4EB900024CE42F004EB9000227404E5E4E7551FC4E5600002F0B2F0A15 +S321000240F8246E001C73EA000A06810000000E0C81000005EA6F06700060000088B1 +S3210002411447F900004BB0AD672F2E00102F2A00044E93AD672F2E0014202A0004BA +S321000241305C802F004E93A56741EE001A2F08222A000406810000000C2F014E93FF +S3210002414C4FEF0024102E000B2F004EB900024AA04A802640588F67EC2F0AA367D5 +S321000241684EB900005990322A000A700ED280374100023213276A00040004008134 +S32100024184000088003681102E000B2F004EBAFF3AA3404FEF000C4CEE0C00FFF8B5 +S321000241A04E5E4E754E5600002F2E0018302E00162F002F2E00102F2E000C2F2E9D +S321000241BC0008A3674EBAFF2E4E5E4E754E5600002F2E0018302E00162F002F2E10 +S321000241D800102F2E000C2F2E000842A74EBAFF0A4E5E4E754E5600002F0273AE86 +S321000241F4000B71AE000F41F91000000024002001E180E3807381E181E3814A8295 +S32100024210661C2248D3FC00009084D1FC000090C4740285B10C0070FBC1B01C00EA +S3210002422C601A2248D3FC00009084D1FC000090C474FDC5B10C00700481B01C00D2 +S32100024248242EFFFC4E5E4E754E5600002F0B2F0A2F0271AE000B47F90000470895 +S321000242642F00487A01B04E9371AE000B243C10000000E180E78024402002068045 +S32100024280000090042F320800487A01B24E9320020680000090082F320800487A5C +S3210002429C01B84E9320020680000090242F320800487A01BE4E9320020680000095 +S321000242B890842F320800487A01C44E9320020680000090882F320800487A01CA47 +S321000242D44E9320020680000090C42F320800487A01D04E9320020680000091448F +S321000242F02F320800487A01D64E9320020680000091882F320800487A01DC4E931D +S3210002430C200206800000918C2F320800487A01E24E9320020680000091902F32AF +S321000243280800487A01E84E9320020680000091942F320800487A01EE4E932002F3 +S321000243440680000091982F320800487A01F44E93200206800000919C2F32080067 +S32100024360487A01FA4E9320020680000091A02F320800487A02004E93200206800C +S3210002437C000091A82F320800487A02064E9320020680000091AC2F320800487AC0 +S32100024398020C4E9320020680000091B02F320800487A02124E9320020680000061 +S321000243B491B42F320800487A02184E9320020680000091B82F320800487A021E3E +S321000243D04E9320020680000091BC2F320800487A02244E9320020680000091C0C8 +S321000243EC2F320800487A022A4E930682000091C42F322800487A02324E93487A76 +S3210002440802444E934CEE0C04FFF44E5E4E7551FC0A2D2D2D2D2D2D2D2D2D2D2D77 +S321000244242D2D204645432564202D2D2D2D2D2D2D2D2D2D2D2D2D0A004549522030 +S3210002444020202020202530387820202020202020200A005145494D5220202020AB +S3210002445C202530387820202020202020200A005145435220202020202025303895 +S321000244787820202020202020200A00515243522020202020202530387820202041 +S3210002449420202020200A0051525F484153482020202530387820202020202020EF +S321000244B0200A00515443522020202020202530387820202020202020200A005164 +S321000244CC4645435446575220202530387820202020202020200A005146454352FB +S321000244E846535220202530387820202020202020200A005146454352464352200A +S32100024504202530387820202020202020200A0051464543524C5246502025303812 +S321000245207820202020202020200A0051464543524C5746502025303878202020C6 +S3210002453C20202020200A0051464543524641522020253038782020202020202042 +S32100024558200A00514645435246525020202530387820202020202020200A00511C +S321000245744645435246575020202530387820202020202020200A00514645435454 +S3210002459046535220202530387820202020202020200A005146454354464352205F +S321000245AC202530387820202020202020200A0051464543544C5246502025303868 +S321000245C87820202020202020200A0051464543544C57465020253038782020201C +S321000245E420202020200A0051464543544641522020253038782020202020202098 +S32100024600200A00514645435446525020202530387820202020202020200A005171 +S3210002461C4645435446575020202530387820202020202020200A0051465253548C +S3210002463820202020202530387820202020202020200A00512D2D2D2D2D2D2D2DF6 +S321000246542D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D0A0A0051A5 +S321000246704E5600002F0B2F0A71AE000B47F9000047082F00487A00F64E9371AE6F +S3210002468C000B72184C01080041F90002DBD845F00C002F1A487A00FA4E932F1AC1 +S321000246A8487A00FE4E932F1A487A01024E932F1A487A01064E932F1A487A010A55 +S321000246C44E932F1A487A010E4E932F1A487A01124E932F1A487A01164E932F1AAB +S321000246E0487A011A4E932F1A487A011E4E932F1A487A01224E932F1A487A0126AC +S321000246FC4E932F1A487A012A4E932F1A487A012E4E93487A01344E932F12487AAC +S3210002471801344E932F2A0008487A01364E932F2A000C487A01384E932F2A001082 +S32100024734487A013A4E932F2A0014487A013C4E932F2A0018487A013E4E932F2A8A +S32100024750001C487A01404E932F2A0020487A01424E932F2A0024487A01444E9381 +S3210002476C487A014A4E934CEE0C00FFF84E5E4E750A2020204645432564204C6FF3 +S32100024788670A2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D0A0051546F74616C3A20251B +S321000247A434640A0068626572723A202534640A00626162723A20202534640A0043 +S321000247C0626162743A20202534640A006772613A2020202534640A007478663AD4 +S321000247DC2020202534640A006D69693A2020202534640A006C633A202020202544 +S321000247F834640A00726C3A202020202534640A007866756E3A20202534640A009A +S3210002481478666572723A202534640A0072666572723A202534640A006474786640 +S321000248303A20202534640A00647278663A20202534640A000A524653573A0A009E +S3210002484C696E763A2020202534640A006D3A20202020202534640A0062633A206D +S321000248682020202534640A006D633A202020202534640A006C673A202020202502 +S3210002488434640A006E6F3A202020202534640A0063723A202020202534640A00BA +S321000248A06F763A202020202534640A0074723A202020202534640A002D2D2D2D73 +S321000248BC2D2D2D2D2D2D2D2D2D2D2D0A0A0051FC4E5600004E5E4E754E560000D1 +S321000248D84E5E4E754E5600002F0A2F032F0271AE000B43F910000000E1802049CD +S321000248F4D1FC00009004E780D3FC00009040223C00800000761F21810800721F8B +S32100024910D1C071AE000F75AE000BC2807017E1A1008160000000E18271AE0013D5 +S3210002492CE782C6807012E1A3828308C1001123812800D3C27000221002810080CD +S321000249480000660A52800C80000100006DEC0C80000100006604A3406010246E47 +S32100024964001420BC008000002011348070004CEE040CFFF44E5E4E754E5600001A +S321000249802F0A2F0271AE000B43F910000000E180E7802049D1FC00009004244934 +S3210002499CD5FC00009040223C0080000021810800721FD1C071AE000F741FC280A9 +S321000249B87017E1A171AE0013008150000000C4807012E1A271EE0016828208C144 +S321000249D40011828071AE000BE180E380D3FC0000900825810C0071AE000BE1801A +S321000249F0E78024310800223108000881001723810800D3C0700022100281008000 +S32100024A0C0000660A52800C80000100006DEC0C80000100006604A340600A20BC3E +S32100024A2800800000228270004CEE0404FFF84E5E4E7551FC4E5600002F042F03D8 +S32100024A442F0271AE000B24390002B3FCE580D082D08020790002DD8443F00C00A3 +S32100024A6028094AA900042049670608110007670470006022528216022202701F18 +S32100024A7CE0A17003C280D2820281000000FC9681718323C00002B3FC20044CEE10 +S32100024A98001CFFF44E5E4E754E5600002F032F0271AE000B24390002B400E580D3 +S32100024AB4D082D08020790002DD8441F00C0008100007670470006022528216029B +S32100024AD02202701FE0A17003C280D2820281000000FC9681718323C00002B40062 +S32100024AEC20084CEE000CFFF84E5E4E754E56000073AE000B20790002B404D2815C +S32100024B082001E581D280D288D28122790002DD8043F11C000811000767047000BE +S32100024B24601452882008720A4C410801718123C00002B40420094E5E4E7551FC71 +S32100024B404E56000073AE000F5381661871AE000B72144C01080020790002DD802E +S32100024B5C43F00C002009601271AE000BE78020790002DD8443F00C0020094E5EBA +S32100024B784E7551FC4E5600004E5E4E754E5600002F0A2F032F0245F90002DD8019 +S32100024B94223C0002DC9B0281FFFFFFFC24810681000000A023C10002DD84760021 +S32100024BB04EB9000059D075AE000B2240D4822002E582D4802002D083E7802040B2 +S32100024BCCD1D230FC900030FC080020A900042F09A5674EB9000059905283700AE2 +S32100024BE8B083508F6EC2D483E7827005205201F028F8760071AE000B2279000272 +S32100024C04DD84E580D083D080528341F10C0030FC1000425842900C8300000004D5 +S32100024C206DDA71AE000BE580D083E780720503F108F842B90002B40442B90002C3 +S32100024C3CB3FC42B90002B4004CEE040CFFF44E5E4E7551FC4E5600002F032F02F4 +S32100024C584EB90002627843F9100000002049D1FC00008014D3FC000080182410A4 +S32100024C7420114680C480208276000802000067142003D08041F900027B7020701A +S32100024C900C044A8867024E905283E28A7010B08362DC4EB9000263484CEE000CAB +S32100024CACFFF8A3404E5E4E754E56000072002001D08041F900027B7041F00C00B0 +S32100024CC8202E0008B0906606A1584290600852817010B08162DC4E5E4E7551FC15 +S32100024CE44E5600002F0272002001D080242E000841F900027B70B4B00C00660499 +S32100024D002001600A52817010B08162E0A140242EFFFC4E5E4E7551FC4E560000B0 +S32100024D1C2F2E000861C272FFB280588F662C72002001D08041F900027B7041F094 +S32100024D380C0070FFB090660C20EE000820AE000C2001600A52817010B0816ED8E5 +S32100024D54A1404E5E4E7551FC4E5600002F02721041F900027BF0D1C1242E0008B4 +S32100024D707110B48066044210600852817020B08162E2242EFFFC4E5E4E7551FC65 +S32100024D8C4E5600002F02720041F900027BF0242E000871301800B4806604200143 +S32100024DA8600A52817020B08162E27000242EFFFC4E5E4E754E5600002F0B2F0A62 +S32100024DC4222E000843F91000000045F900027BF0D3FC0000805C7023B0816500A8 +S32100024DE002F8307B1A064EFB880202F202F202F202F202F202F202F202F202F283 +S32100024DFC02F202F202F202F202F202F202F2004800580068008200E20120014217 +S32100024E180164018601A801CA01EC020E0230024E026C028602A002BA02D470FC01 +S32100024E34C191157C0010001070006000029E70F3C191157C0011001170006000AF +S32100024E50028E2011157C001200140280FFFFFCFF08C00008228070006000027493 +S32100024E6C41EA00154A10264A661820110280FFFFF3FF08C0000A228010BC0013A4 +S32100024E8870006000025241EA00194A10661820110280FFF3FFFF08C000132280A6 +S32100024EA410BC001370006000023241EB001F4A1066000222201102803FFFFFFFE9 +S32100024EC0228010BC001370006000021441EA001D4A10661820110280F3FFFFFFA4 +S32100024EDC08C0001A228010BC00147000600001F441EA00154A10660001E4201173 +S32100024EF80280FFFFF3FF228010BC00147000600001D641EA00184A10660001C631 +S32100024F1420110280FFFCFFFF08C00010228010BC00157000600001B441EA0019A9 +S32100024F304A10660001A420110280FFF3FFFF08C00012228010BC00167000600027 +S32100024F4C019241EA001A4A106600018220110280FFCFFFFF08C00015228010BC5C +S32100024F68001770006000017041EA001B4A106600016020110280FF3FFFFF08C0AF +S32100024F840017228010BC001870006000014E41EA001C4A106600013E2011028054 +S32100024FA0FCFFFFFF08C00018228010BC001970006000012C41EA001D4A10660088 +S32100024FBC011C20110280F3FFFFFF08C0001B228010BC001A70006000010A41EAA0 +S32100024FD8001E4A10660000FA20110280CFFFFFFF08C0001C228010BC001B700081 +S32100024FF4600000E841EA001F4A10660000D8201102803FFFFFFF08C0001F2280F7 +S3210002501010BC001C7000600000C641EA001A4A10660000B620110280FFCFFFFFC4 +S3210002502C228010BC001D7000600000A841EA001B4A106600009820110280FF3FCE +S32100025048FFFF228010BC001E70006000008A41EA001C4A10667A20110280FCFF31 +S32100025064FFFF228010BC001F7000606E41EA001C4A106660201100800300000044 +S32100025080228010BC00207000605441EA001D4A106646201100800C0000002280AD +S3210002509C10BC00217000603A41EA001E4A10662C2011008030000000228010BC75 +S321000250B800227000602041EA001F4A10661220110080C0000000228010BC0023A4 +S321000250D470006006A340600270004CEE0C00FFF84E5E4E754E56000041F9100093 +S321000250F00708A1687910A168790C201008C0001020804E5E4E7551FC4E56000065 +S3210002510C2F0241F9100000007007122E000F142E000BC0817207C282E78180818A +S321000251281140077041E8070842A8791042A8790C2010088000102080242EFFFCCC +S321000251444E5E4E754E5600002F0A206E000C7190E58043F91000000045F10C006D +S3210002516042AA080042280003246EFFFCA3404E5E4E7551FC4E5600002F0A2F0290 +S3210002517C75AE000B2002E58041F91000000043F00C0071822200E580908142A95B +S32100025198080041F90002B40843F00C001282136E000F00012449136E001300028C +S321000251B42F0942A72F3C00025148707E738290812F00A3674EB900003A644A8014 +S321000251D06716357CFFFF0008357C07BC000A73FC150425410004A3404CEE0404F2 +S321000251ECFFF84E5E4E7551FC4E56000071AE000B2200E580908141F90002B4088E +S3210002520871B00C034E5E4E754E5600002F032F0275AE000B2002E58090822202F1 +S3210002522441F90002B40841F00C0070071228000216280001C280C6807183E7805C +S3210002524082807182448043F91000000041F108001141077E0C020003660C203C55 +S3210002525CF7FFFFFFC1A9070860280C020002660C203CEFFFFFFFC1A90708601680 +S32100025278203CBFFFFFFF0C0200016606203CDFFFFFFFC1A907084CEE000CFFF891 +S321000252944E5E4E754E56FFF048D71C0449F91000000071AE000B45EC0800E98097 +S321000252B0D5C0429271AE000B2200E580908141F90002B40847F00C00302E000E08 +S321000252CC322B000AC0C175C0700117400003102E000B2F004EBAFF2E220275EBA5 +S321000252E800087010E1A271AE000BE580828241F40C002141080424AB00044CEE48 +S321000253041C04FFF0A3404E5E4E7551FC4A616E20323120323030370032323A3381 +S32100025320353A35320051FC5100000020000000090002582C000000020000000044 +S3210002533C0000000A0000000000001C3C000258300002583C00025850000000021F +S3210002535800000003000000030000000000001ACC00025854000258640002587807 +S3210002537400000002000000030000000400000000000019880002587C00025888B3 +S32100025390000258A00000000200000003000000030000000000001864000258A47D +S321000253AC000258B0000258C000000002000000000000000A000000000000077036 +S321000253C8000258C4000258D0000258FC000000020000000300000003000000001B +S321000253E40000171800025900000259100002592000000002000000010000000131 +S3210002540000000000000016C800025924000259340002593C000000020000000003 +S3210002541C00000001000000010000164C000259400002594C000259540000000215 +S321000254380000000000000001000000000000271C000259580002596C00025978BF +S32100025454000000020000000000000004000000000000794C0002597C00025990A7 +S32100025470000259B40000000200000000000000040000000000003280000259B83E +S3210002548C000259C8000259D800000001000000000000000100000001000015F896 +S321000254A8000259DC0002594C000259E400000001000000010000000100000000C0 +S321000254C4000015AC000259E8000259F4000259FC00000002000000000000000117 +S321000254E0000000000000145000025A0400025A0C00025A14000000020000000109 +S321000254FC00000001000000000000137800025A18000259F400025A2400000002BB +S32100025518000000020000000200000000000012B400025A2800025A3400025A40F5 +S32100025534000000020000000000000002000000010000118000025A4400025A546D +S3210002555000025A600000000200000001000000020000000000000DFC00025A64AD +S3210002556C00025A7400025A8000000002000000000000000A0000000000000DBC9A +S3210002558800025A8400025A9800025AA80000000200000002000000020000000021 +S321000255A400000D7400025AAC00025ABC00025AC800000005000000000000000019 +S321000255C00000000000000B7800025AD000025AD800025AD90000000200000000AD +S321000255DC000000000000000000000C5800025ADC00025AD800025AE80000000394 +S321000255F80000000000000002000000000000486800025AEC00025AF800025B08DC +S32100025614000000030000000000000001000000000000473000025B1000025B1C11 +S3210002563000025B280000000200000000000000000000000100000C2400025B3011 +S3210002564C00025AD800025B3C00000003000000010000000A0000000000005348C4 +S3210002566800025B4000025B4800025B740000000100000000000000010000000108 +S3210002568400000BE000025B7C00025B8C00025B940000000200000003000000035C +S321000256A0000000000000782400025B9800025BAC00025BC000000003000000002C +S321000256BC000000000000000000000AB400025BC400025AD800025BD40000000383 +S321000256D80000000000000002000000000000F31800025BDC00025BF400025C0CAD +S321000256F4000000030000000000000001000000020000F31800025AD800025AD819 +S3210002571000025C100000000400000000000000000000000000025F4800025C18E4 +S3210002572C00025AD800025C300000000400000000000000010000000000004A84C4 +S3210002574800025C3800025C5400000004000000000000000100000000000049B8EF +S3210002576400025C5C00025C700000000400000000000000010000000000008620EE +S3210002578000025C7800025C8400000004000000000000000100000000000085AC17 +S3210002579C00025C8C00025C98000000040000000000000001000000000000853847 +S321000257B800025CA000025CB00000000400000000000000010000000000008494A4 +S321000257D400025CB800025CC400000005000000000000000100000000000083945C +S321000257F000025CD000025CDC000000050000000000000001000000000000824461 +S3210002580C00025CE800025D000000000300000000000000010000000000026A88DB +S3210002582800025D0861736D00417373656D626C790051FC513C3C616464723E2065 +S321000258443C617373656D626C793E3E0062630051426C6F636B20436F6D706172A5 +S32100025860650051FC6164647231206164647232206C656E677468000062660051FE +S3210002587C426C6F636B2046696C6C0051626567696E20656E642064617461203CB3 +S32100025898696E633E00000000626D0051426C6F636B204D6F7665005162656769CA +S321000258B46E20656E642064657374000062720051427265616B706F696E740051B6 +S321000258D03C616464723E203C2D637C74203C76616C75653E3E203C2D72203C6116 +S321000258EC646472202E2E2E3E3E203C2D693E000062730051426C6F636B2053651F +S32100025908617263680051FC51626567696E20656E64206461746100006463005111 +S321000259244461746120436F6E766572740051FC51646174610051FC5164697300CE +S32100025940446973617373656D626C65003C616464723E0000646C0051446F776E09 +S3210002595C6C6F616420436F6E736F6C650051FC513C6F66667365743E00000000F5 +S32100025978646E0051446F776E6C6F6164204E6574776F726B0051FC513C2D637CC0 +S32100025994657C697C73203C2D6F206F66667365743E3E203C66696C656E616D65FE +S321000259B03E000000666C0051466C617368205574696C6974696573003C6F706528 +S321000259CC726174696F6E202E2E2E3E00676F00514578656375746500677400511C +S321000259E84578656375746520546F0051616464720051FC5168656C700051FC5114 +S32100025A0448656C700051FC513C636D643E0000006C7200514C6F6F7020526561A8 +S32100025A20640000006C7700514C6F6F7020577269746500516164647220646174C0 +S32100025A3C610000006D6400514D656D6F727920446973706C61790051626567696C +S32100025A586E203C656E643E006D6D00514D656D6F7279204D6F646966790051FC72 +S32100025A7461646472203C646174613E007264005152656769737465722044697393 +S32100025A90706C61790051FC513C7265676973746572202E2E2E3E0000726D0051E5 +S32100025AAC5265676973746572204D6F646966790072656720646174610051FC5173 +S32100025AC872657365740051FC526573657400000000736400537461636B204475A1 +S32100025AE46D7000517365740053657420436F6E66696700513C6F7074696F6E203C +S32100025B0076616C75653E005173686F770051FC5153686F7720436F6E666967005F +S32100025B1C3C6F7074696F6E3E0051FC51737465700051FC515374657020284F76B1 +S32100025B386572290073796D0053796D626F6C00513C73796D623E203C2D61207377 +S32100025B54796D622076616C75653E203C2D722073796D3E203C2D637C6C7C733EB7 +S32100025B700051FC5174726163650051FC54726163652028496E746F290051FC517F +S32100025B8C3C636F756E743E007570005155706C6F61642042696E6172792044616D +S32100025BA874610051626567696E20656E642066696C656E616D6500517665720058 +S32100025BC4446973706C61792056657273696F6E0069726D640051FC51496E746507 +S32100025BE0726E616C20526567204D6F642F446973700051FC6D6F64756C652E7244 +S32100025BFC65676973746572203C646174613E0051697264006D6D61700051FC5185 +S32100025C18446973706C617920746865206D656D6F7279206D61700051626173652E +S32100025C340051FC513C6865787C6465637C62696E7C6F63747C756E6B6E6F776E82 +S32100025C503E0051FC626175640051FC513C393630307C31393230307C333834309D +S32100025C6C303E005173657276657200513C686F73742049503E0051FC636C696592 +S32100025C886E7400513C626F6172642049503E005167617465776179003C676174CF +S32100025CA4657761792049503E0051FC516E65746D61736B003C6E65746D61736B6F +S32100025CC03E0051FC66696C656E616D650051FC513C66696C656E616D653E00514A +S32100025CDC66696C65747970650051FC513C737265637C636F66667C656C667C6909 +S32100025CF86D6167653E0051FC65746861646472003C61613A62623A63633A646489 +S32100025D143A65653A66663E0000004B00000000000000000000000000FFFFFF00DB +S32100025D300000020000CF5485CF01746573742E733139000000000000000000000A +S32100025D4C0000000000000000000000000000000000000000000000004E5600008F +S32100025D68303CFFC033C010000A444E5E4E7551FC4E56000041F910000A4F10BCCC +S32100025D84000C42287BF14EB900026B502F0042A74EB90000EDF84E5E4E7551FC95 +S32100025DA04E56000043F91000000041E901042010028010000000666E71FC02AA11 +S32100025DBC23400004203C0000000073FC0FFFC2807014E1A9008100000019234135 +S32100025DD80020203C7372293023400108203C463700002340010C20BCE10F00026A +S32100025DF443E90100700222BC4001000022BC058D0000819070048190819022BCD8 +S32100025E10018D000020100880001F20802010008010000F0020804E5E4E7551FC3E +S32100025E2C4E5600002F0243FA00DC41F910000000F2115480203CFF8000004240E6 +S32100025E482140050022280B607018E0A9AF40C0810C8080000000641643FA00BE59 +S32100025E64F2004000F2115423F2000438F2830030602206808000000043FA009A3C +S32100025E80F2004000F211542243FA0096F2115423F2000438F283000CF200000362 +S32100025E9CF2026000601643FA0084F2115428F2000003F202600006828000000087 +S32100025EB8706E4C420000723FC280700AE1A9203C003F0001008100100180214153 +S32100025ED4050821400504203CE000000042402140050C70784C420000723FC2809A +S32100025EF0700AE1A900810010018021410514203C00FF000121400510242EFFFCDE +S32100025F0C4E5E4E7541E000000000000041E0000000000000401E47AE147AE148B6 +S32100025F2841E00000000000004E5600004EBAFE2E4EBAFEF24EBAFE624EBAFE36C0 +S32100025F444E5E4E754E56FFF048D70C0C45F900004708263C000260DC2F034E92C1 +S32100025F60487A017E4E92487A01B04E9248780020243C0002615041F9000000007C +S32100025F7C203C0400000047F008FF2F0B2F3C00000000487A01E42F024E92487846 +S32100025F980020203C1000000006800003FFFF2F002F3C10000000487A01CC2F0268 +S32100025FB44E924878002041F910010000203C0000800047F008FF2F0B2F3C1001EE +S32100025FD00000487A01B02F024E924878002041F920000000203C0000100047F04C +S32100025FEC08FF2F0B2F3C20000000487A01982F024E924878002041F9200010000F +S32100026008203C0000100043F008FF2F092F3C20001000487A01802F024E924878E7 +S32100026024001041F9FF800000203C0020000043F008FF2F092F3CFF800000487AF5 +S3210002604001682F024E922F034E92487A01684E92487A018A4E9241F9000000003E +S3210002605C203C0003000043F008FF243C000262082F092F3C00000000487A01AEA7 +S321000260782F024E922F3C0002FFFF2F3C00000000487A01A62F024E9241F9100158 +S321000260940000203C0000300043F008FF2F092F3C10010000487A01922F024E9208 +S321000260B02F034E92487A018E4E92487A019C4E92487A00E642A7487A01A44E9272 +S321000260CC2F034E924CEE0C0CFFF04E5E4E7551FC0A0051FC2020202020205479BD +S321000260E870652020202020202020202020537461727420202020202020202045EC +S321000261046E64202020202020506F72742053697A650A005120202D2D2D2D2D2DDC +S321000261202D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D6F +S3210002613C2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D0A00512020252D313473205D +S3210002615820202523303858202020252330385820202025642D6269740A0051FCC7 +S32100026174534452414D0051FC4D4241520051FC5153797374656D205352414D00AB +S32100026190436F7265205352414D300051436F7265205352414D310051426F6F749C +S321000261AC20466C617368005120202050726F746563746564202020202020202066 +S321000261C8205374617274202020202020202020456E640A0020202D2D2D2D2D2DF6 +S321000261E42D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DAB +S321000262002D2D2D2D2D2D0A002020252D31347320202025233038582020202523E8 +S3210002621C3038580A0051FC516442554720436F64650051FC644255472044617451 +S32100026238610051FC4D4344204150490020202020436869702053656C65637473CF +S321000262540A0051FC20202D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D0A0020204353DF +S321000262702564202025730A004E560000AD674EB90000F0184E5E4E754E56FFF0D6 +S3210002628C48D71C04246E0008206E001049F90002DF4047F4880061D42F3C0000B1 +S321000262A800502F3CFF8020002F0C4EB900004BB0202E000C4A804FEF000C6F0658 +S321000262C416DA538066FA42A7243C0000005042A7A3672F022F3C0002DF402F3CDF +S321000262E0FF8020004EB9000285F0B4804FEF001867122F022F00487A00184EB939 +S321000262FC000047084FEF000C4CEE1C04FFF04E5E4E7551FC466C617368207072F0 +S321000263186F6772616D6D696E67206572726F723A202025235820627974657320D5 +S321000263346F6620252358207772697474656E210A0051FC514E56000042A74EB926 +S321000263500000F0184E5E4E754E5600004E5E4E754E56000070004E5E4E7551FCCF +S3210002636C4E560000222E0008203C00030000B280650A068003FD0000B280653CB8 +S32100026388203C20000000B280650A068000001000B2806528203C20001000B280C1 +S321000263A4650A068000001000B2806514203C10010000B2806528068000008000F3 +S321000263C0B280641E41F910010000A340B288651443F900003000D3C8B28954C0CE +S321000263DC49C04480600270004E5E4E754E56000022390002B514558166084EB97A +S321000263F800006CCC60064EB9000287304E5E4E754E5600007002B0B90002B5146A +S3210002641466344EBAFE60487801004EB90000F09042A74EB9000236C8203C0002CE +S3210002643040BC2F00A3674EB900003A142F3C00024C50A3674EB900003A144E5EAA +S3210002644C4E7551FC4E56FFF82F0A2F027002B0B90002B514660000A245F9000229 +S32100026468B6BC203C000240BC2F0A42A72F0048780067A3674EB900003A644A8053 +S32100026484671C42A7203C00024C5042A72F0048780070A3674EB900003A644A80CD +S321000264A0660E487A006C4EB9000047087000605641EEFFF82F0824084EB9000228 +S321000264BC69AC2F0A4EB900005B1C71FC05EA2540000C203C000241C82540003C1B +S321000264D82F02A367A367A36742A74EB900023EA8AD672F022F0A4EB900004BB0F9 +S321000264F42F3C000081004EB90000F0904EBAFE46A3404CEE0404FFF04E5E4E7542 +S321000265104572726F723A20556E61626C6520746F2072656769737465722068613B +S3210002652C6E646C65720A00514E56FF9C2F0A45EEFF9C224A41FA012222D822D8D7 +S3210002654822D822D822D832D8203CFF80000012D8A36EFFE02D40FFD8203C0020C2 +S3210002656400002D40FFDC203C000284982D40FFE4203C000285F02D40FFE8203C7E +S3210002658000027FF42D40FFEC203C00027F182D40FFF0203C0002870C2D40FFF488 +S3210002659C203C000000002D40FFF8203C000300002D40FFFC2F2EFFD84EB9000217 +S321000265B886D02F0A4EB9000035D4224A41FA00B6203CE000000022D822D822D899 +S321000265D422D822D832D812D8A36EFFE02D40FFD8203C010000002D40FFDC203C86 +S321000265F000027CF02D40FFE4203C00027DAC2D40FFE8203C00027C502D40FFEC6C +S3210002660C203C00027C102D40FFF0203C0002870C2D40FFF442AEFFFC2F2EFFD8B4 +S321000266284EB900027F042F0A4EB9000035D4A7672F3C10010000203C1000000083 +S321000266440680000080002F004EB900022CB042A7AD674EB900025108246EFF9890 +S321000266604E5E4E7532384633323043334220283120782031362D6269742900512C +S3210002667C3238463132384A334420283120782031362D6269742900514E560000CC +S3210002669842A7A76742A74EB9000251744E5E4E754E5600002F0C2F0B2F0A49F92D +S321000266B4000047082F3C000000004EB90000F0F0487A007E4E9447F910000000AF +S321000266D045EB004422127001C2804A416706487A00684E9422127002C2804A41D4 +S321000266EC6706487A00684E9422127008C2804A416706487A00704E9424BC000037 +S32100026708000B377C40000F00177C00800F05202B070C0280FFFFFF7E2740070C64 +S3210002672443F900030000203C03FD0000D3C023C90002B8704CEE1C00FFF44E5E18 +S321000267404E7551FC0A0A005145787465726E616C2052657365740A0057617463C1 +S3210002675C68646F672054696D65722052657365740A0051FC4A544147205265736C +S3210002677865740A0000000001640051FC4D35343735455642450051FC4FEFFFF4A6 +S3210002679448D7030448C00C800000001067200C800000001367240C8000000014C6 +S321000267B0672C4CD703044FEF000C2F0F4EB90000EFA84EB9000287302200700090 +S321000267CC601A2F014EB90002870C4FEF00047000600A4EB9000286EC600000026A +S321000267E84CD703044FEF000C4E7300004E56FFFC4AAE000856C044801D40FFFF84 +S3210002680448780014A367486EFFFF4EB9000262884E5E4E754E56000071B9FF802F +S3210002682020144E5E4E7551FC4E56FFFC1D6E000BFFFF48780016A367486EFFFF9D +S3210002683C4EB9000262884E5E4E7551FC4E56000071B9FF8020164E5E4E7551FC4A +S321000268584E560000206E0008720043F9FF8020007131181E1180180052814A8077 +S321000268746608422800282008600C7028B0816EDE4230180020084E5E4E7551FCE9 +S321000268904E5600004878001E487800282F2E00084EB9000262884E5E4E7551FC66 +S321000268AC4E560000206E0008720043F9FF802000103118101180180052810C81CF +S321000268C8000000046DE820084E5E4E754E56000048780010A9672F2E00084EB9CC +S321000268E4000262884E5E4E754E560000206E0008720043F9FF8020001031180C49 +S321000269001180180052810C81000000046DE820084E5E4E754E5600004878000C0A +S3210002691CA9672F2E00084EB9000262884E5E4E754E560000206E0008720043F998 +S32100026938FF802000103118081180180052810C81000000046DE820084E5E4E7542 +S321000269544E56000048780008A9672F2E00084EB9000262884E5E4E754E56000038 +S32100026970206E0008720043F9FF802000103118041180180052810C8100000004B6 +S3210002698C6DE820084E5E4E754E560000A967A9672F2E00084EB9000262884E5E33 +S321000269A84E7551FC4E560000206E0008720043F9FF80200010311818118018001A +S321000269C452810C81000000066DE820084E5E4E754E56FFE448D7043C2F2E000812 +S321000269E04EB900004CBC78002A00528574007600588FB6856C64206E0008123057 +S321000269FC38000C01003A671E4A01671A0C82000000026C5441EEFFFD1181280072 +S32100026A1852825283B6856DD6603845EEFFFD42322800487800107400486EFFF8DF +S32100026A342F0A4EB900004DF04A804FEF000C6606B5EEFFF8671A206E000C1180FB +S32100026A50480052845283B6856D9C5D8457C049C04480600270004CEE043CFFE4F7 +S32100026A6C4E5E4E754E56000048780018AD672F2E00084EB9000262884E5E4E7540 +S32100026A884E56FFF82F02206E000C202800086648486EFFF84EBAFF0E7400588F69 +S32100026AA460080C8200000005671041EEFFF8203C00026B1873B02800600A203C44 +S32100026AC000026B2073AEFFFD2F012F004EB90000470852820C8200000006508F0C +S32100026ADC6DC86030486EFFF82F004EBAFEEC4A80508F670C486EFFF84EBAFF7AB9 +S32100026AF8588F6014206E000C2F280008487A00224EB900004708508F242EFFF4C8 +S32100026B144E5E4E75253032583A0051FC253032580A0051FC4572726F723A2020CE +S32100026B30496E76616C69642045746865726E657420416464726573733A20202596 +S32100026B4C730A00514E5600002039FF8020000C8000002580671A0C8000009600E7 +S32100026B6867180C800000E10067160C800001C2006714601A71FC2580601871FC65 +S32100026B849600601271FCE100600C203C0001C200600471FC4B004E5E4E7551FC34 +S32100026BA04E56FFFC2D6E0008FFFC42A7A967486EFFFC4EB9000262884E5E4E7588 +S32100026BC02D5C7C2F4D756C74692D6368616E6E656C20444D412041504920416CB3 +S32100026BDC7068612076302E332028323030342D30342D32362900000000000001D7 +S32100026BF80000000100000001000000010000000100000001000000010000000172 +S32100026C140000000100000001000000010000000100000001000000010000000155 +S32100026C3000000001000000000000000000026E34000276340000000000000000EF +S32100026C4C0002BBD800000000000000000000000000026EB40002763400000000BF +S32100026C68000000000002BDD800000000000000000000000000026F340002763420 +S32100026C8400000000000000000002BFD800000000000000000000000000026FB42E +S32100026CA00002763400000000000000000002C1D800000000000000000000000089 +S32100026CBC000270340002763400000000000000000002C3D80000000000000000C5 +S32100026CD800000000000270B40002763400000000000000000002C5D80000000027 +S32100026CF40000000000000000000271340002763400000000000000000002C7D888 +S32100026D10000000000000000000000000000271B40002763400000000000000008C +S32100026D2C0002C9D80000000000000000000000000002723400027634000000004C +S32100026D48000000000002CBD8000000000000000000000000000272B400027634AE +S32100026D6400000000000000000002CDD800000000000000000000000000027334BB +S32100026D800002763400000000000000000002CFD80000000000000000000000009A +S32100026D9C000273B40002763400000000000000000002D1D8000000000000000053 +S32100026DB800000000000274340002763400000000000000000002D3D800000000B4 +S32100026DD40000000000000000000274B40002763400000000000000000002D5D816 +S32100026DF00000000000000000000000000002753400027634000000000000000028 +S32100026E0C0002D7D8000000000000000000000000000275B40002763400000000DA +S32100026E28000000000002D9D8000000000000000000000000000000000000000093 +S32100026E44000000000000000000000000000000000000000000000000000000002A +S32100026E60000000000000000000000000000000000000000000000000000000000E +S32100026E7C000000000000000000000000000000000000000000000000E000000012 +S32100026E98200000002000FFFF000000000000000000000000000000000000000098 +S32100026EB400000000000000000000000000000000000000000000000000000000BA +S32100026ED0000000000000000000000000000000000000000000000000000000009E +S32100026EEC0000000000000000000000000000000000000000000000000000000082 +S32100026F08000000000000000000000000E0000000200000002000FFFF0000000047 +S32100026F240000000000000000000000000000000000000000000000000000000049 +S32100026F40000000000000000000000000000000000000000000000000000000002D +S32100026F5C0000000000000000000000000000000000000000000000000000000011 +S32100026F7800000000000000000000000000000000000000000000000000000000F5 +S32100026F94E0000000200000002000FFFF00000000000000000000000000000000BB +S32100026FB000000000000000000000000000000000000000000000000000000000BD +S32100026FCC00000000000000000000000000000000000000000000000000000000A1 +S32100026FE80000000000000000000000000000000000000000000000000000000085 +S3210002700400000000000000000000000000000000E0000000200000002000FFFF4A +S32100027020000000000000000000000000000000000000000000000000000000004C +S3210002703C0000000000000000000000000000000000000000000000000000000030 +S321000270580000000000000000000000000000000000000000000000000000000014 +S3210002707400000000000000000000000000000000000000000000000000000000F8 +S3210002709000000000E0000000200000002000FFFF000000000000000000000000BE +S321000270AC00000000000000000000000000000000000000000000000000000000C0 +S321000270C800000000000000000000000000000000000000000000000000000000A4 +S321000270E40000000000000000000000000000000000000000000000000000000088 +S321000271000000000000000000000000000000000000000000E0000000200000006B +S3210002711C2000FFFF00000000000000000000000000000000000000000000000031 +S321000271380000000000000000000000000000000000000000000000000000000033 +S321000271540000000000000000000000000000000000000000000000000000000017 +S3210002717000000000000000000000000000000000000000000000000000000000FB +S3210002718C0000000000000000E0000000200000002000FFFF0000000000000000C1 +S321000271A800000000000000000000000000000000000000000000000000000000C3 +S321000271C400000000000000000000000000000000000000000000000000000000A7 +S321000271E0000000000000000000000000000000000000000000000000000000008B +S321000271FC000000000000000000000000000000000000000000000000E00000008F +S32100027218200000002000FFFF000000000000000000000000000000000000000014 +S321000272340000000000000000000000000000000000000000000000000000000036 +S32100027250000000000000000000000000000000000000000000000000000000001A +S3210002726C00000000000000000000000000000000000000000000000000000000FE +S32100027288000000000000000000000000E0000000200000002000FFFF00000000C4 +S321000272A400000000000000000000000000000000000000000000000000000000C6 +S321000272C000000000000000000000000000000000000000000000000000000000AA +S321000272DC000000000000000000000000000000000000000000000000000000008E +S321000272F80000000000000000000000000000000000000000000000000000000072 +S32100027314E0000000200000002000FFFF0000000000000000000000000000000037 +S321000273300000000000000000000000000000000000000000000000000000000039 +S3210002734C000000000000000000000000000000000000000000000000000000001D +S321000273680000000000000000000000000000000000000000000000000000000001 +S3210002738400000000000000000000000000000000E0000000200000002000FFFFC7 +S321000273A000000000000000000000000000000000000000000000000000000000C9 +S321000273BC00000000000000000000000000000000000000000000000000000000AD +S321000273D80000000000000000000000000000000000000000000000000000000091 +S321000273F40000000000000000000000000000000000000000000000000000000075 +S3210002741000000000E0000000200000002000FFFF0000000000000000000000003A +S3210002742C000000000000000000000000000000000000000000000000000000003C +S321000274480000000000000000000000000000000000000000000000000000000020 +S321000274640000000000000000000000000000000000000000000000000000000004 +S321000274800000000000000000000000000000000000000000E000000020000000E8 +S3210002749C2000FFFF000000000000000000000000000000000000000000000000AE +S321000274B800000000000000000000000000000000000000000000000000000000B0 +S321000274D40000000000000000000000000000000000000000000000000000000094 +S321000274F00000000000000000000000000000000000000000000000000000000078 +S3210002750C0000000000000000E0000000200000002000FFFF00000000000000003D +S32100027528000000000000000000000000000000000000000000000000000000003F +S321000275440000000000000000000000000000000000000000000000000000000023 +S321000275600000000000000000000000000000000000000000000000000000000007 +S3210002757C000000000000000000000000000000000000000000000000E00000000B +S32100027598200000002000FFFF000000000000000000000000000000000000000091 +S321000275B400000000000000000000000000000000000000000000000000000000B3 +S321000275D00000000000000000000000000000000000000000000000000000000097 +S321000275EC000000000000000000000000000000000000000000000000000000007B +S32100027608000000000000000000000000E0000000200000002000FFFF0000000040 +S321000276240000000000000000000000000000000000000000000000000000000042 +S321000276400000000000000000000000000000000000000000000000000000000026 +S3210002765C000000000000000000000000000000000000000000000000000000000A +S3210002767800000000000000000000000000000000000000000000000000000000EE +S3210002769400000000000000000000000000000000000000000000000000000000D2 +S321000276B000000000000000000000000000000000000000000000000000000000B6 +S321000276CC000000000000000000000000000000000000000000000000000000009A +S321000276E8000000000000000000000000A0045670A0000000A000000020000000B4 +S321000277042180000021E000002040000020500000205A000020A00000202FA000C6 +S32100027720202F9000202EA000202DA000202E2000202F2000000277B400027920E6 +S3210002773C000000000000000000000000000000000000000000000000000279248A +S32100027758000279F80000000000000000000000000000000000000000000000009A +S32100027774000279FC00027A98000000000000000000000000000000000000000066 +S321000277900000000000027A9C00027B6C00000000000000000000000000000000D4 +S321000277AC0000000000000000800040008118801BB8C6001810002B107000000D67 +S321000277C8018CF89F6000000A080CF89F000001F8981803648118801BF8C6001A48 +S321000277E4B8C6601B1000271000000F18B8C6001D1000131060000007014CF88B15 +S3210002780098C6001C0000071098C7001810001F100000C818000001F8C1476018C4 +S3210002781CC003231D811A601BC1862102849BE00903FED7B8DA9B001B9B9BE01B6C +S321000278381000CB2070000006088CF88F1000CB2870000006088CF88F1000CB3001 +S3210002785470000006088CF88F1000CB380000C728000001F8C1476018C003241D00 +S32100027870811A601BDA9B001B9B9BE01B0000D3A0C1862102849BE0090BFED7B8A0 +S3210002788CDA9B001B9B9BE01B1000CB2070000006088CF88F1000CB287000000612 +S321000278A8088CF88F1000CB3070000006088CF88F1000CB380000C728000001F80A +S321000278C48118801BD8C6001898C6601C6000000B0C8CFC9F000001F8A146001E40 +S321000278E010000B0810002050B8C6001810002B107000000A080CF89F6000000D6E +S321000278FC018CF89F000001F88618801B7000000E084CF21FD89903368019801B51 +S32100027918040001F8000001F8000001F88198001B7000000D080CF81F8198801BCC +S321000279346000000E084CF85F000001F88298001B7000000D010CF81F6000000ED9 +S32100027950018CF81FC202601BC002221C809A601BC10420C2839BE00903FED7B85D +S3210002796CDA9B001B9B9BE01B70000006088CF8891000CB2870000006088CF8891D +S321000279881000CB3070000006088CF8890000CB38000001F8C202601BC002229C8A +S321000279A4809A601BDA9B001B9B9BE01B0000D3A0C10420C2839BE0090BFED7B8B0 +S321000279C0DA9B001B9B9BE01B70000006088CF8891000CB2870000006088CF889C9 +S321000279DC1000CB3070000006088CF8890000CB38000001F8C318022D8018801BB8 +S321000279F8040001F88000400081988000100007886000000A080CF05F98180209EE +S32100027A1481C400047000000E010CF05F7000000C01CCF05F70000004014CF04999 +S32100027A3070000004004CF04A00000B88C40301508119E01203E0CF9081188000A6 +S32100027A4C000AC788C40300008199E00070000004084CFC8B600000050CCCF84137 +S32100027A6881C60000C399021B801980000000840000000F0881988000100007884E +S32100027A846000000A080CF05FC218820980190000040001F8000001F8800040005D +S32100027AA081988000100007886000000A080CF05F981803098000400381C60004F3 +S32100027ABC7000000E014CF05F7000000C028CF05F7000000D018CF05F7000000466 +S32100027AD801CCF04D10000B9060000004020CF0A1C318831283C7000000001F10E9 +S32100027AF4C583A3C38104232503E0C798D89900009999E000000ACF98D899230623 +S32100027B109999E03F03EAC798D89900009999E000000ACF98D8990000998323020E +S32100027B2C0BEAC798819880006000000B0C4CFC5F81C80000C519031280198000D5 +S32100027B480000840000000F0881988000100007886000000A080CF05FC298830993 +S32100027B6480190000040001F8000001F8FFFFFFFF00000000FFFFFFFF0000000076 +S32100027B80FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFFF1 +S32100027B9C00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000D1 +S32100027BB8FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFFB9 +S32100027BD400000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF0000000099 +S32100027BF0000102030405060708090A0B0C0D0E0F000000000000000000000000F9 +S32100027C0C000000004E5600002F0272002001E180EF80207900028760242E000840 +S32100027C2843F00C002009B480650A06800001FFFFB480630C52810C810000008025 +S32100027C446DD27000242EFFFC4E5E4E754E5600002F032F0272002001E180EF8047 +S32100027C60207900028760242E000843F00C002009B480650E260224090682000137 +S32100027C7CFFFFB682630C52810C81000000806DCE70004CEE000CFFF84E5E4E7508 +S32100027C984E56000020790002876030BC006030BC00D030100800000767F830BC00 +S32100027CB400FF4E5E4E7551FC4E560000222E00087011E1A1E2812079000287600D +S32100027CD041F01A0030BC002030BC00D03210303C0080C0814A4067F430BC00FF3E +S32100027CEC4E5E4E754E56FFE848D7047C262E0008282E000C246E00107A004A8433 +S32100027D0866042004606E618874002C390002876022027011E1A1D286B681650A2B +S32100027D2406810001FFFFB681630A52820C82000000806DDA22027011E1A1D28669 +S32100027D409681D883BA846C204A8A67084878002E4E92588F2F024EBAFF640685C4 +S32100027D5C000200005282588FBA846DE04A8A670E4878000A4E924878000D4E921B +S32100027D78508F20054CEE047CFFE84E5E4E7551FC4E560000206E000830BC004020 +S32100027D9430AE000E3210303C0080C0814A4067F430BC00FF4E5E4E754E56FFE4AA +S32100027DB048D71C0C286E001C246E000CA34241EEFFF8760010FC000810FC007CFB +S32100027DCC10FC002F10FC002D10BC005C4AAE0014266E0008671A2F0C2F2E001026 +S32100027DE82F2E00084EBAFF024FEF000C4AAE00106F5E600A4EBAFE9A4AAE0010D8 +S32100027E046F5230122F002F0B4EBAFF7A3012B053508F664055AE00104A5B4A5A47 +S32100027E204A8C672E0C83000010006624102EFFF8A1432F004E9441EEFFF810301A +S32100027E3C28002F004E9452820C8200000005508F6602A34252834AAE00106EAE5D +S32100027E584A8C670A102EFFF82F004E94588F4AAE00186706266E00184E93200A5E +S32100027E744CEE1C0CFFE490AE000C4E5E4E7551FC4E56FFEC48D7007C262E000819 +S32100027E90282E000C7A004A84675E720020790002876024012C087011E1A2D488B2 +S32100027EACB682650A06820001FFFFB682630A52810C81000000806DD82401701114 +S32100027EC8E1A2D4869682D883BA846C2024017011E1A2E28206850002000052818F +S32100027EE443F02A0032BC006032BC0001BA846DE030BC00FF4CEE007CFFEC4E5E1D +S32100027F004E7551FC4E560000202E000823C0000287604E5E4E7551FC4E56000027 +S32100027F1C2F0291C86008B1FC000000086C082008E180EB80600C2008E180E180DC +S32100027F380680FFF9000024390002B438222E0008D082B28065000092B1FC0000DC +S32100027F5400086C16227C000100002208E181EB81B1FC000000086C20601A227C8F +S32100027F70000100002208E181E1810681FFF90000B1FC000000086C04327C20008C +S32100027F8CD2825389202E0008D289B0816246B1FC000000086C16227C0001000041 +S32100027FA82208E181EB81B1FC000000086C20601A227C000100002208E181E18175 +S32100027FC40681FFF90000B1FC000000086C04327C2000D4815389D4892002600C0B +S32100027FE052887027B0886E00FF3A7000242EFFFC4E5E4E754E5600002F0291C8D3 +S32100027FFC6008B1FC000000086C082008E180EB80600C2008E180E1800680FFF908 +S32100028018000024390002B438222E0008D082B280656CB1FC000000086C16227C77 +S32100028034000100002208E181EB81B1FC000000086C20601A227C000100002208AB +S32100028050E181E1810681FFF90000B1FC000000086C04327C2000D2825389202E58 +S3210002806C0008D289B0816222B1FC000000086C0A2008E180EB80D082601C2008C3 +S32100028088E180E1800680FFF90000D082600C52887027B0886E00FF607000242E9E +S321000280A4FFFC4E5E4E7551FC4E56FFEC48D7007C282E00082C2E000C91C84A86EA +S321000280C067000142720060080C81000000086C082001E180EB80600C2001E18034 +S321000280DCE1800680FFF9000022790002B438D0892609B88065460C810000000818 +S321000280F86C162401E182EB822A3C000100000C81000000086C20601A2401E18263 +S32100028114E1820682FFF900002A3C000100000C81000000086C047BFC2000D4830A +S321000281305385D485B882630A52817027B0816E88601C0C81000000086C14200110 +S3210002814CE180EB80D6809883DC84B1C66C0000AA60182001E180E1800680FFF90C +S321000281680000D6809883DC84B1C66C0000900C81000000086C182401E182EB82A1 +S32100028184E282706033802A000C81000000086C3E601C2401E182E1820682FFF9A0 +S321000281A00000E282706033802A000C81000000086C202001E180EB80E280363CC8 +S321000281BC00D0243C0001000033830A000C81000000086C2A60242001E180E1801C +S321000281D80680FFF90000E280363C00D0243C0001000033830A000C8100000008AB +S321000281F46C0475FC2000D1C25281B1C66D00FF744CEE007CFFEC4E5E4E7551FC4C +S321000282104E5600002F032F02202E00082400E1820C80000000086C1EEB82E28277 +S3210002822C722020790002B43831812A002400E1820C80000000086C3A6022E18293 +S321000282480682FFF90000E282722020790002B43831812A002400E1820C80000026 +S3210002826400086C16EB82E282323C00D031812A000C80000000086C34601AE18270 +S321000282800682FFF90000E282323C00D031812A000C80000000086C182400E1823D +S3210002829CEB82E282727031812A000C80000000086C38601C2400E182E182068209 +S321000282B8FFF90000E282727031812A000C80000000086C1A2200E181EB81E2811B +S321000282D4343C008043F01A003611C4834A4267AC601E2200E181E1810681FFF939 +S321000282F00000E281343C008043F01A003611C4834A42678C2400E18251806C0EEB +S3210002830CEB82E282303C00FF31802A006012E1820682FFF90000E282303C00FF12 +S3210002832831802A004CEE000CFFF84E5E4E7551FC4E56FFEC48D7007C282E0008D5 +S321000283442C2E000C91C84A866700013E720060080C81000000086C082001E1807B +S32100028360EB80600C2001E180E1800680FFF9000022790002B438D0892609B88078 +S3210002837C65460C81000000086C162401E182EB822A3C000100000C81000000082A +S321000283986C20601A2401E182E1820682FFF900002A3C000100000C810000000854 +S321000283B46C047BFC2000D4835385D485B882630A52817027B0816E88601C0C81D5 +S321000283D0000000086C142001E180EB80D6809883DC84B1C66C0000A66018200121 +S321000283ECE180E1800680FFF90000D6809883DC84B1C66C00008C0C810000000858 +S321000284086C182401E182EB82E282706033802A000C81000000086C3C601C2401E8 +S32100028424E182E1820682FFF90000E282706033802A000C81000000086C1E240199 +S32100028440E182EB82E282700133802A00243C000100000C81000000086C2860228A +S3210002845C2401E182E1820682FFF90000E282700133802A00243C000100000C81F1 +S32100028478000000086C0475FC2000D1C25281B1C66D00FF784CEE007CFFEC4E5EC9 +S321000284944E7551FC4E56FFE848D7047C2A2E0008262E000C246E00107C004A83DF +S321000284B066062003600001082F032F054EBAFBEE7400508F60080C820000000808 +S321000284CC6C082002E180EB80600C2002E180E1800680FFF9000028390002B4380D +S321000284E8D084BA8065460C82000000086C16207C000100002202E181EB810C8202 +S32100028504000000086C20601A207C000100002202E181E1810681FFF900000C82B3 +S32100028520000000086C04307C2000D2845388D288BA81630A52827027B0826E8A2B +S3210002853C601C0C82000000086C1420052202E181EB81D8819084D680BC836C48BC +S32100028558601820052202E181E1810681FFF90000D8819084D680BC836C2E4A8A8B +S3210002857467084878002E4E92588F2F024EBAFC8E223C000100000C820000000807 +S32100028590588F6C0473FC2000DC815282BC836DD24A8A670E4878000A4E9248787F +S321000285AC000D4E92508F2F032F054EBAFD802006508F4CEE047CFFE84E5E4E75DF +S321000285C84E560000206E000830BC004030AE000E707030803210303C0080C0813E +S321000285E44A4067F030BC00FF4E5E4E754E56FFE048D71C1C242E0010286E001C4A +S32100028600246E000CA34341EEFFF8780010FC000810FC007C10FC002F10FC002D24 +S3210002861C10BC005C4AAE0014266E000867102F0C2F022F2E00084EBAFE644FEF7A +S32100028638000C2F022F2E00084EBAFA6A508F4A826F4E30122F002F0B4EBAFF7680 +S321000286543012B053508F663C55824A5B4A5A4A8C672E0C84000010006624102E49 +S32100028670FFF8A1442F004E9441EEFFF8103038002F004E9452830C8300000005E1 +S3210002868C508F6602A34352844A826EB24A8C670A102EFFF82F004E94588F2F0236 +S321000286A82F2E00084EBAFC8A4AAE0018508F6706266E00184E93200A4CEE1C1C36 +S321000286C4FFE090AE000C4E5E4E7551FC4E560000202E000823C00002B4384E5E36 +S321000286E04E7551FC4E5600004E5E4E754E56000041F910000000D1FC000086040E +S321000286FC739002810000000120014E5E4E7551FC4E56000041F910000000D1FC3B +S321000287180000860412107004C2804A0167EA116E000B00084E5E4E754E5600009A +S3210002873443F9100000002049D1FC0000860412107001C2804A0167E8D3FC0000D7 +S30D00028750860C71114E5E4E7596 +S5050000171FC4 +S70500000400F6 diff --git a/BaS_gcc/flash_scripts/run_m548x_dbug.bdm b/BaS_gcc/flash_scripts/run_m548x_dbug.bdm new file mode 100755 index 0000000..b216035 --- /dev/null +++ b/BaS_gcc/flash_scripts/run_m548x_dbug.bdm @@ -0,0 +1,57 @@ +#!/usr/local/bin/bdmctrl -D2 -v9 -d9 +# +# firebee board initialization for bdmctrl +# +open $1 +reset +sleep 1 + +wait + + + +# Turn on MBAR at 0x1000_0000 +write-ctrl 0x0C0F 0x10000000 +dump-register MBAR + +# Turn on RAMBAR0 at address 20000000 +write-ctrl 0x0C04 0x20000021 + +# Turn on RAMBAR1 at address 20001000 +write-ctrl 0x0C05 0x20001021 + +# Init CS0 (BootFLASH @ E000_0000 - E03F_FFFF 8Mbytes) +write 0x10000500 0xE0000000 4 +write 0x10000508 0x00041180 4 +write 0x10000504 0x003F0001 4 +wait + +# SDRAM Initialization @ 0000_0000 - 03FF_FFFF 64 MBytes +write 0x10000004 0x000002AA 4 # SDRAMDS configuration +write 0x10000020 0x00000019 4 # SDRAM CS0 configuration (64Mbytes 0000_0000 - 03FF_FFFF) +write 0x10000024 0x00000000 4 # SDRAM CS1 configuration +write 0x10000028 0x00000000 4 # SDRAM CS2 configuration +write 0x1000002C 0x00000000 4 # SDRAM CS3 configuration + +write 0x10000108 0x73711630 4 # SDCFG1 +write 0x1000010C 0x46370000 4 # SDCFG2 + +write 0x10000104 0xE10B0002 4 # SDCR + IPALL +write 0x10000100 0x40010000 4 # SDMR (write to LEMR) +write 0x10000100 0x058D0000 4 # SDMR (write to LMR) +sleep 100 +write 0x10000104 0xE10D0002 4 # SDCR + IPALL +write 0x10000104 0xE10D0004 4 # SDCR + IREF (first refresh) +write 0x10000104 0xE10D0004 4 # SDCR + IREF (first refresh) +write 0x10000100 0x018D0000 4 # SDMR (write to LMR) +write 0x10000104 0x710D0F00 4 # SDCR (lock SDMR and enable refresh) +sleep 100 + +load m548xlite_dbug_ram.elf .sec1 .sec2 .sec3 + +# set VBR +write-ctrl 0x0801 0x00000000 +dump-register VBR + +execute +wait diff --git a/BaS_gcc/include/mmu.h b/BaS_gcc/include/mmu.h index 4f55ea4..663b08a 100644 --- a/BaS_gcc/include/mmu.h +++ b/BaS_gcc/include/mmu.h @@ -30,8 +30,8 @@ /* * ACR register handling macros */ -#define ACR_BA(x) ((x) & 0xffff0000) -#define ACR_ADMSK(x) (((x) & 0xffff) << 16) +#define ACR_BA(x) ((x) & 0xff000000) +#define ACR_ADMSK(x) (((x) & 0xff) << 16) #define ACR_E(x) (((x) & 1) << 15) #define ACR_S(x) (((x) & 3) << 13) @@ -45,6 +45,17 @@ #define ACR_SUPERVISOR_PROTECT(x) (((x) & 1) << 3) #define ACR_WRITE_PROTECT(x) (((x) & 1) << 2) +#define ACR_AMM(x) (((x) & 1) << 10) + +#define ACR_CM(x) (((x) & 3) << 5) +#define ACR_CM_CACHEABLE_WT 0x0 +#define ACR_CM_CACHEABLE_CB 0x1 +#define ACR_CM_CACHE_INH_PRECISE 0x2 +#define ACR_CM_CACHE_INH_IMPRECISE 0x3 + +#define ACR_SP(x) (((x) & 1) << 3) +#define ACR_W(x) (((x) & 1) << 2) + /* * MMU register handling macros @@ -98,7 +109,7 @@ enum mmu_page_size extern long video_tlb; extern long video_sbt; -struct mmu_page_descriptor +struct mmu_page_descriptor_ram { uint8_t cache_mode : 2; uint8_t supervisor_protect : 1; @@ -110,7 +121,7 @@ struct mmu_page_descriptor }; extern void mmu_init(void); -extern uint32_t mmu_map_page(uint32_t virt, uint32_t phys, enum mmu_page_size sz, uint8_t page_id, const struct mmu_page_descriptor *flags); +extern uint32_t mmu_map_page(uint32_t virt, uint32_t phys, enum mmu_page_size sz, uint8_t page_id, const struct mmu_page_descriptor_ram *flags); /* * API functions for the BaS driver interface diff --git a/BaS_gcc/include/pci.h b/BaS_gcc/include/pci.h index 94f219b..b912dd6 100644 --- a/BaS_gcc/include/pci.h +++ b/BaS_gcc/include/pci.h @@ -27,22 +27,27 @@ #define PCI_MEMORY_OFFSET 0x80000000 #define PCI_MEMORY_SIZE 0x40000000 /* 1 GByte PCI memory window */ #define PCI_IO_OFFSET 0xD0000000 -#define PCI_IO_SIZE 0x10000000 /* 128 MByte PCI I/O window */ +#define PCI_IO_SIZE 0x10000000 /* 256 MByte PCI I/O window */ +#define PCI_LANESWAP_B(x) (x ^ 3) +#define PCI_LANESWAP_W(x) (x ^ 2) +#define PCI_LANESWAP_L(x) (x) /* for completeness only */ /* - * Note: the byte offsets are in little endian format, so you can't use them - * on byteswapped (Motorola format) values! + * Note: the byte offsets are in little endian format, so for pci_xxx_config_byte() + * accesses to hit the right offset, you'll need to wrap them into PCI_LANESWAP_B() + * and for pci_xxx_config_word() into PCI_LANESWAP_W() */ #define PCIIDR 0x00 /* PCI Configuration ID Register */ #define PCICSR 0x04 /* PCI Command/Status Register */ -#define PCICR 0x04 /* PCI Command Register */ -#define PCISR 0x06 /* PCI Status Register */ -#define PCIREV 0x08 /* PCI Revision ID Register */ -#define PCICCR 0x0B /* PCI Class Code Register */ -#define PCICLSR 0x0C /* PCI Cache Line Size Register */ -#define PCILTR 0x0D /* PCI Latency Timer Register */ -#define PCIHTR 0x0E /* PCI Header Type Register */ -#define PCIBISTR 0x0F /* PCI Build-In Self Test Register */ +#define PCICR 0x06 /* PCI Command Register */ +#define PCISR 0x04 /* PCI Status Register */ +#define PCIREV 0x0B /* PCI Revision ID Register */ +#define PCICCR 0x08 /* PCI Class Code Register */ +#define PCICLSR 0x0F /* PCI Cache Line Size Register */ +#define PCILTR 0x0E /* PCI Latency Timer Register */ +#define PCIHTR 0x0D /* PCI Header Type Register */ +#define PCIBISTR 0x0C /* PCI Build-In Self Test Register */ + #define PCIBAR0 0x10 /* PCI Base Address Register for Memory Accesses to Local, Runtime, and DMA */ #define PCIBAR1 0x14 /* PCI Base Address Register for I/O @@ -55,13 +60,13 @@ #define PCIBAR5 0x24 /* PCI Base Address Register, reserved */ #define PCICIS 0x28 /* PCI Cardbus CIS Pointer, not support*/ #define PCISVID 0x2E /* PCI Subsystem Vendor ID */ -#define PCISID 0x2E /* PCI Subsystem ID */ +#define PCISID 0x2D /* PCI Subsystem ID */ #define PCIERBAR 0x30 /* PCI Expansion ROM Base Register */ #define CAP_PTR 0x34 /* New Capability Pointer */ -#define PCIILR 0x3C /* PCI Interrupt Line Register */ -#define PCIIPR 0x3D /* PCI Interrupt Pin Register */ -#define PCIMGR 0x3E /* PCI Min_Gnt Register */ -#define PCIMLR 0x3F /* PCI Max_Lat Register */ +#define PCIILR 0x3F /* PCI Interrupt Line Register */ +#define PCIIPR 0x3E /* PCI Interrupt Pin Register */ +#define PCIMGR 0x3D /* PCI Min_Gnt Register */ +#define PCIMLR 0x3C /* PCI Max_Lat Register */ #define PMCAPID 0x40 /* Power Management Capability ID */ #define PMNEXT 0x41 /* Power Management Next Capability Pointer */ @@ -81,41 +86,41 @@ /* * bit definitions for PCICSR lower half (Command Register) */ -#define PCICSR_IO (1 << 0) /* if set: device responds to I/O space accesses */ -#define PCICSR_MEMORY (1 << 1) /* if set: device responds to memory space accesses */ -#define PCICSR_MASTER (1 << 2) /* if set: device is master */ -#define PCICSR_SPECIAL (1 << 3) /* if set: device reacts on special cycles */ -#define PCICSR_MEMWI (1 << 4) /* if set: device deals with memory write and invalidate */ -#define PCICSR_VGA_SNOOP (1 << 5) /* if set: capable of palette snoop */ -#define PCICSR_PERR (1 << 6) /* if set: reacts to parity errors */ -#define PCICSR_STEPPING (1 << 7) /* if set: stepping enabled */ -#define PCICSR_SERR (1 << 8) /* if set: SERR pin enabled */ -#define PCICSR_FAST_BTOB_E (1 << 9) /* if set: fast back-to-back enabled */ -#define PCICSR_INT_DISABLE (1 << 10) /* if set: disable interrupts from this device */ +#define PCICR_IO (1 << 0) /* if set: device responds to I/O space accesses */ +#define PCICR_MEMORY (1 << 1) /* if set: device responds to memory space accesses */ +#define PCICR_MASTER (1 << 2) /* if set: device is master */ +#define PCICR_SPECIAL (1 << 3) /* if set: device reacts on special cycles */ +#define PCICR_MEMWI (1 << 4) /* if set: device deals with memory write and invalidate */ +#define PCICR_VGA_SNOOP (1 << 5) /* if set: capable of palette snoop */ +#define PCICR_PERR (1 << 6) /* if set: reacts to parity errors */ +#define PCICR_STEPPING (1 << 7) /* if set: stepping enabled */ +#define PCICR_SERR (1 << 8) /* if set: SERR pin enabled */ +#define PCICR_FAST_BTOB_E (1 << 9) /* if set: fast back-to-back enabled */ +#define PCICR_INT_DISABLE (1 << 10) /* if set: disable interrupts from this device */ /* * bit definitions for PCICSR upper half (Status Register) */ -#define PCICSR_INTERRUPT (1 << 3) /* device requested interrupt */ -#define PCICSR_CAPABILITIES (1 << 4) /* if set, capabilities pointer is valid */ -#define PCICSR_66MHZ (1 << 5) /* 66 MHz capable */ -#define PCICSR_UDF (1 << 6) /* UDF supported */ -#define PCICSR_FAST_BTOB (1 << 7) /* Fast back-to-back enabled */ -#define PCICSR_DPARITY_ERROR (1 << 8) /* data parity error detected */ +#define PCISR_INTERRUPT (1 << 3) /* device requested interrupt */ +#define PCISR_CAPABILITIES (1 << 4) /* if set, capabilities pointer is valid */ +#define PCISR_66MHZ (1 << 5) /* 66 MHz capable */ +#define PCISR_UDF (1 << 6) /* UDF supported */ +#define PCISR_FAST_BTOB (1 << 7) /* Fast back-to-back enabled */ +#define PCISR_DPARITY_ERROR (1 << 8) /* data parity error detected */ -#define PCICSR_T_ABORT_S (1 << 11) /* target abort signaled */ -#define PCICSR_T_ABORT_R (1 << 12) /* target abort received */ -#define PCICSR_M_ABORT_R (1 << 13) /* master abort received */ -#define PCICSR_S_ERROR_S (1 << 14) /* system error signaled */ -#define PCICSR_PARITY_ERR (1 << 15) /* data parity error */ +#define PCISR_T_ABORT_S (1 << 11) /* target abort signaled */ +#define PCISR_T_ABORT_R (1 << 12) /* target abort received */ +#define PCISR_M_ABORT_R (1 << 13) /* master abort received */ +#define PCISR_S_ERROR_S (1 << 14) /* system error signaled */ +#define PCISR_PARITY_ERR (1 << 15) /* data parity error */ /* Header type 1 (PCI-to-PCI bridges) */ -#define PCI_PRIMARY_BUS 0x18 /* Primary bus number */ -#define PCI_SECONDARY_BUS 0x19 /* Secondary bus number */ -#define PCI_SUBORDINATE_BUS 0x1A /* Highest bus number behind the bridge */ -#define PCI_SEC_LATENCY_TIMER 0x1B /* Latency timer for secondary interface */ +#define PCI_PRIMARY_BUS 0x1B /* Primary bus number */ +#define PCI_SECONDARY_BUS 0x1A /* Secondary bus number */ +#define PCI_SUBORDINATE_BUS 0x19 /* Highest bus number behind the bridge */ +#define PCI_SEC_LATENCY_TIMER 0x18 /* Latency timer for secondary interface */ #define PCI_IO_BASE 0x1C /* I/O range behind the bridge */ #define PCI_IO_LIMIT 0x1D -#define PCI_SEC_STATUS 0x1E /* Secondary status register, only bit 14 used */ +#define PCI_SEC_STATUS 0x1C /* Secondary status register, only bit 14 used */ #define PCI_MEMORY_BASE 0x20 /* Memory range behind */ #define PCI_MEMORY_LIMIT 0x22 #define PCI_PREF_MEMORY_BASE 0x24 /* Prefetchable memory range behind */ @@ -186,28 +191,28 @@ typedef struct /* structure of address conversion */ /* PCI configuration space macros */ /* register 0x00 macros */ -#define PCI_VENDOR_ID(i) swpw((uint16_t)(((i) & 0xffff0000) >> 16)) -#define PCI_DEVICE_ID(i) swpw((uint16_t) ((i) & 0xffff)) +#define PCI_DEVICE_ID(i) (uint16_t)(((i) & 0xffff0000) >> 16) +#define PCI_VENDOR_ID(i) (uint16_t) ((i) & 0xffff) /* register 0x04 macros */ #define PCI_STATUS(i) ((i) & 0xffff) #define PCI_COMMAND(i) (((i) >> 16) & 0xffff) /* register 0x08 macros */ -#define PCI_CLASS_CODE(i) ((swpl((i)) & 0xff000000) >> 24) -#define PCI_SUBCLASS(i) ((swpl((i)) & 0x00ff0000) >> 16) -#define PCI_PROG_IF(i) ((swpl((i)) & 0x0000ff00) >> 8) -#define PCI_REVISION_ID(i) ((swpl((i)) & 0x000000ff)) +#define PCI_CLASS_CODE(i) (((i) & 0xff000000) >> 24) +#define PCI_SUBCLASS(i) (((i) & 0x00ff0000) >> 16) +#define PCI_PROG_IF(i) (((i) & 0x0000ff00) >> 8) +#define PCI_REVISION_ID(i) (((i) & 0x000000ff)) /* register 0x0c macros */ -#define PCI_BIST(i) ((swpl((i)) & 0xff000000) >> 24) -#define PCI_HEADER_TYPE(i) ((swpl((i)) & 0x00ff0000) >> 16) -#define PCI_LAT_TIMER(i) ((swpl((i)) & 0x0000ff00) >> 8) -#define PCI_CACHELINE_SIZE(i) ((swpl((i)) & 0x000000ff)) +#define PCI_BIST(i) (((i) & 0xff000000) >> 24) +#define PCI_HEADER_TYPE(i) (((i) & 0x00ff0000) >> 16) +#define PCI_LAT_TIMER(i) (((i) & 0x0000ff00) >> 8) +#define PCI_CACHELINE_SIZE(i) (((i) & 0x000000ff)) /* register 0x2c macros */ -#define PCI_SUBSYS_ID(i) (((i) & 0xffff0000) >> 16) -#define PCI_SUBSYS_VID(i) (((i) & 0xffff)) +#define PCI_SUBSYS_ID(i) ((i) & 0xffff0000) >> 16) +#define PCI_SUBSYS_VID(i) ((i) & 0xffff)) /* register 0x34 macros */ #define PCI_CAPABILITIES(i) ((i) & 0xff) @@ -350,4 +355,6 @@ extern int32_t wrapper_phys_to_virt(uint32_t address, PCI_CONV_ADR *pointer); #define PCI_DEVICE_FROM_HANDLE(h) (((h) & 0xf8) >> 3) #define PCI_FUNCTION_FROM_HANDLE(h) (((h) & 0x7)) +extern void pci_dump_registers(int32_t handle); + #endif /* _PCI_H_ */ diff --git a/BaS_gcc/include/util.h b/BaS_gcc/include/util.h index d57e359..355c1ac 100644 --- a/BaS_gcc/include/util.h +++ b/BaS_gcc/include/util.h @@ -35,18 +35,7 @@ */ static inline uint16_t swpw(uint16_t w) { - register uint32_t result asm("d0"); - __asm__ __volatile__ - ( - "lea %[input],a0\n\t" \ - "mvz.b 1(a0),%[output]\n\t" \ - "lsl.l #8,%[output]\n\t" \ - "move.b (a0),%[output]\n\t" \ - : [output] "=d" (result) /* output */ - : [input] "o" (w) /* input */ - : "cc", "a0", "memory" /* clobbered */ - ); - return result; + return (w << 8) | (w >> 8); } /* @@ -56,23 +45,8 @@ static inline uint16_t swpw(uint16_t w) */ static inline uint32_t swpl(uint32_t l) { - register uint32_t result asm("d0"); - - __asm__ __volatile__ - ( - "lea %[input],a0\n\t" \ - "mvz.b 3(a0),%[output]\n\t" \ - "lsl.l #8,%[output]\n\t" \ - "move.b 2(a0),%[output]\n\t" \ - "lsl.l #8,%[output]\n\t" \ - "move.b 1(a0),%[output]\n\t" \ - "lsl.l #8,%[output]\n\t" \ - "move.b (a0),%[output]\n\t" \ - : [output] "=d" (result) /* output */ - : [input] "o" (l) /* input */ - : "cc", "a0", "memory" /* clobbered */ - ); - return result; + return ((l & 0xff000000) >> 24) | ((l & 0x00ff0000) >> 8) | + ((l & 0x0000ff00) << 8) | (l << 24); } diff --git a/BaS_gcc/pci/pci.c b/BaS_gcc/pci/pci.c index ec94435..5dc0e78 100644 --- a/BaS_gcc/pci/pci.c +++ b/BaS_gcc/pci/pci.c @@ -34,6 +34,7 @@ #include "interrupts.h" #include "wait.h" +#define DEBUG #include "debug.h" #define pci_config_wait() do { __asm__ __volatile("tpf" ::: "memory"); } while (0) @@ -112,13 +113,13 @@ int32_t pci_get_interrupt_cause(void) dbg(""); while ((handle = *hdl++) != -1) { - uint16_t command_register = swpw(pci_read_config_word(handle, PCICR)); - uint16_t status_register = swpw(pci_read_config_word(handle, PCISR)); + uint16_t command_register = swpw(pci_read_config_word(handle, PCI_LANESWAP_W(PCICR))); + uint16_t status_register = swpw(pci_read_config_word(handle, PCI_LANESWAP_W(PCISR))); /* * ...to see which device caused the interrupt */ - if ((status_register & PCICSR_INTERRUPT) && !(command_register & PCICSR_INT_DISABLE)) + if ((status_register & PCISR_INTERRUPT) && !(command_register & PCICR_INT_DISABLE)) { /* device has interrupts enabled and has an active interrupt, so its probably ours */ @@ -284,7 +285,7 @@ uint16_t pci_read_config_word(int32_t handle, int offset) NOP(); - value = * (volatile uint16_t *) PCI_IO_OFFSET + (offset & 2); + value = * (volatile uint16_t *) (PCI_IO_OFFSET + (offset & 2)); NOP(); @@ -329,17 +330,15 @@ int32_t pci_write_config_longword(int32_t handle, int offset, uint32_t value) { /* initiate PCI configuration access to device */ - dbg("initiate configuration access\r\n"); - MCF_PCI_PCICAR = MCF_PCI_PCICAR_E | /* enable configuration access special cycle */ MCF_PCI_PCICAR_BUSNUM(PCI_BUS_FROM_HANDLE(handle)) | MCF_PCI_PCICAR_DEVNUM(PCI_DEVICE_FROM_HANDLE(handle)) | /* device number, devices 0 - 9 are reserved */ MCF_PCI_PCICAR_FUNCNUM(PCI_FUNCTION_FROM_HANDLE(handle)) | /* function number */ MCF_PCI_PCICAR_DWORD(offset / 4); + chip_errata_135(); NOP(); - dbg("access device\r\n"); * (volatile uint32_t *) PCI_IO_OFFSET = value; /* access device */ dbg("chip errata\r\n"); @@ -347,7 +346,6 @@ int32_t pci_write_config_longword(int32_t handle, int offset, uint32_t value) NOP(); - dbg("finish config space access cycle\r\n"); /* finish configuration space access cycle */ MCF_PCI_PCICAR &= ~MCF_PCI_PCICAR_E; @@ -367,12 +365,14 @@ int32_t pci_write_config_word(int32_t handle, int offset, uint16_t value) MCF_PCI_PCICAR_DEVNUM(PCI_DEVICE_FROM_HANDLE(handle)) | MCF_PCI_PCICAR_FUNCNUM(PCI_FUNCTION_FROM_HANDLE(handle)) | MCF_PCI_PCICAR_DWORD(offset / 4); + chip_errata_135(); NOP(); * (volatile uint16_t *) (PCI_IO_OFFSET + (offset & 2)) = value; chip_errata_135(); + NOP(); /* finish configuration space access cycle */ MCF_PCI_PCICAR &= ~MCF_PCI_PCICAR_E; @@ -399,7 +399,8 @@ int32_t pci_write_config_byte(int32_t handle, int offset, uint8_t value) * (volatile uint8_t *) (PCI_IO_OFFSET + (offset & 3)) = value; chip_errata_135(); - __asm__ __volatile__("tpf" ::: "memory"); + NOP(); + /* finish configuration space access cycle */ MCF_PCI_PCICAR &= ~MCF_PCI_PCICAR_E; @@ -456,7 +457,7 @@ int32_t pci_find_device(uint16_t device_id, uint16_t vendor_id, int index) uint8_t htr; handle = PCI_HANDLE(bus, device, 0); - value = pci_read_config_longword(handle, PCIIDR); + value = swpl(pci_read_config_longword(handle, PCIIDR)); if (value != 0xffffffff) /* we have a device at this position */ { if (vendor_id == 0xffff || @@ -474,14 +475,14 @@ int32_t pci_find_device(uint16_t device_id, uint16_t vendor_id, int index) * Check to see if it is a multi-function device. We need to look "behind" it * for the other functions in that case. */ - if ((htr = pci_read_config_byte(handle, PCIHTR)) & 0x80) + if ((htr = pci_read_config_byte(handle, PCI_LANESWAP_B(PCIHTR))) & 0x80) { /* yes, this is a multi-function device, look for more functions */ for (function = 1; function < 8; function++) { handle = PCI_HANDLE(bus, device, function); - value = pci_read_config_longword(handle, PCIIDR); + value = swpl(pci_read_config_longword(handle, PCIIDR)); if (value != 0xffffffff) /* device found */ { if (vendor_id == 0xffff || @@ -528,11 +529,11 @@ int32_t pci_find_classcode(uint32_t classcode, int index) handle = PCI_HANDLE(bus, device, 0); dbg("check handle %d\r\n", handle); - value = pci_read_config_longword(handle, PCIIDR); + value = swpl(pci_read_config_longword(handle, PCIIDR)); if (value != 0xffffffff) /* device found */ { - value = pci_read_config_longword(handle, PCICCR); + value = swpl(pci_read_config_longword(handle, PCICCR)); dbg("classcode to search for=%x\r\n", classcode); dbg("PCI_CLASSCODE found=%02x\r\n", PCI_CLASS_CODE(value)); @@ -556,7 +557,7 @@ int32_t pci_find_classcode(uint32_t classcode, int index) * Check to see if it is a multi-function device. We need to look "behind" it * for the other functions in that case. */ - if ((htr = pci_read_config_byte(handle, PCIHTR)) & 0x80) + if ((htr = pci_read_config_byte(handle, PCI_LANESWAP_B(PCIHTR))) & 0x80) { /* yes, this is a multi-function device, look for more functions */ @@ -567,7 +568,7 @@ int32_t pci_find_classcode(uint32_t classcode, int index) if (value != 0xffffffff) /* device found */ { - value = pci_read_config_longword(handle, PCICCR); + value = swpl(pci_read_config_longword(handle, PCICCR)); if ((classcode & PCI_FIND_BASE_CLASS ? ((PCI_CLASS_CODE(value) == (classcode & 0xff))) : true) && (classcode & PCI_FIND_SUB_CLASS ? ((PCI_SUBCLASS(value) == ((classcode & 0xff00) >> 8))) : true) && @@ -831,9 +832,9 @@ static void pci_device_config(uint16_t bus, uint16_t device, uint16_t function) * disable device */ - cr = swpw(pci_read_config_word(handle, PCICSR)); + cr = swpw(pci_read_config_word(handle, PCI_LANESWAP_W(PCICR))); cr &= ~3; /* disable device response to address */ - pci_write_config_word(handle, PCICSR, swpw(cr)); + pci_write_config_word(handle, PCI_LANESWAP_W(PCICR), swpw(cr)); int barnum = 0; @@ -861,8 +862,8 @@ static void pci_device_config(uint16_t bus, uint16_t device, uint16_t function) if (IS_PCI_MEM_BAR(address)) { /* adjust base address to card's alignment requirements */ - int size = ~(address & 0xfffffff0) + 1; - dbg("device 0x%x: BAR[%d] requests %d bytes of memory\r\n", handle, i / 4, size); + long size = ~(address & 0xfffffff0) + 1; + dbg("device 0x%02x: BAR[%d] requests %ld kBytes of memory\r\n", handle, i / 4, size / 1024); /* calculate a valid map adress with alignment requirements */ address = (mem_address + size - 1) & ~(size - 1); @@ -923,7 +924,6 @@ static void pci_device_config(uint16_t bus, uint16_t device, uint16_t function) /* * check if we have an expansion ROM */ - value = swpl(pci_read_config_longword(handle, PCIERBAR)); /* * write all bits of PCIERBAR @@ -936,8 +936,15 @@ static void pci_device_config(uint16_t bus, uint16_t device, uint16_t function) address = swpl(pci_read_config_longword(handle, PCIERBAR)); if (address & 1) { + /* + * there is a ROM + */ + struct pci_rd *rd = &descriptors[barnum]; - int size = ~(address & ~0x7ff); + int size = ~(address & ~0x7ff) + 1; + + dbg("expansion ROM requested size=0x%08x\r\n", size); + dbg("device 0x%02x: requests %ld kBytes for expansion ROM\r\n", handle, size / 1024); /* expansion ROM active and mapped */ @@ -959,6 +966,7 @@ static void pci_device_config(uint16_t bus, uint16_t device, uint16_t function) rd->length = size; rd->dmaoffset = 0; + cr |= 2; /* enable Memory */ mem_address += size; barnum++; } @@ -968,19 +976,17 @@ static void pci_device_config(uint16_t bus, uint16_t device, uint16_t function) descriptors[barnum - 1].flags |= FLG_LAST; /* check if device requests an interrupt */ - il = pci_read_config_byte(handle, PCIIPR); + il = pci_read_config_byte(handle, PCI_LANESWAP_B(PCIIPR)); dbg("device requests interrupts on interrupt pin %d\r\n", il); /* enable interrupt on PCI device */ - il = pci_read_config_byte(handle, PCICR); - il &= ~PCICSR_INT_DISABLE; - pci_write_config_byte(handle, PCICR, il); + cr &= ~PCICR_INT_DISABLE; /* * enable device memory or I/O access */ - pci_write_config_word(handle, PCICSR, swpw(cr)); + pci_write_config_word(handle, PCI_LANESWAP_W(PCICR), swpw(cr)); } static void pci_bridge_config(uint16_t bus, uint16_t device, uint16_t function) @@ -995,9 +1001,18 @@ static void pci_bridge_config(uint16_t bus, uint16_t device, uint16_t function) handle = PCI_HANDLE(bus, device, function); dbg("handle=%d\r\n", handle); + pci_write_config_longword(handle, PCIBISTR, MCF_PCI_PCICR1_CACHELINESIZE(8) | + MCF_PCI_PCICR1_LATTIMER(0x20)); pci_write_config_longword(handle, PCIBAR0, swpl(0x40000000)); pci_write_config_longword(handle, PCIBAR1, 0x0); - pci_write_config_longword(handle, PCICSR, 0x146); + pci_write_config_word(handle, PCI_LANESWAP_W(PCICR), swpw( + (1 << 1) /* memory space */ + | (1 << 2) /* bus master */ + | (1 << 4) /* memory write and invalidate */ + | (1 << 6) /* parity errors */ + | (1 << 8) /* SERR */ + | (1 << 9) /* fast back-to-back */ + )); } /* @@ -1017,7 +1032,7 @@ void pci_scan(void) { uint32_t value; - value = pci_read_config_longword(handle, PCIIDR); + value = swpl(pci_read_config_longword(handle, PCIIDR)); xprintf(" %02x | %02x | %02x |%04x|%04x|%04x| %s (0x%02x, 0x%04x)\r\n", PCI_BUS_FROM_HANDLE(handle), @@ -1025,9 +1040,9 @@ void pci_scan(void) PCI_FUNCTION_FROM_HANDLE(handle), PCI_VENDOR_ID(value), PCI_DEVICE_ID(value), handle, - device_class(pci_read_config_byte(handle, PCICCR)), - pci_read_config_byte(handle, PCICCR), - pci_read_config_word(handle, PCICCR)); + device_class(pci_read_config_byte(handle, PCI_LANESWAP_B(PCICCR))), + pci_read_config_byte(handle, PCI_LANESWAP_B(PCICCR)), + pci_read_config_word(handle, PCI_LANESWAP_W(PCICCR))); /* save handle to index value so that we'll be able to later find our resources */ handles[index] = handle; @@ -1042,12 +1057,12 @@ void pci_scan(void) } else { - dbg(""); + dbg("\r\n"); pci_bridge_config(PCI_BUS_FROM_HANDLE(handle), PCI_DEVICE_FROM_HANDLE(handle), PCI_FUNCTION_FROM_HANDLE(handle)); } - dbg(""); + dbg("\r\n"); handle = pci_find_device(0x0, 0xFFFF, ++index); } xprintf("\r\n...finished\r\n"); @@ -1125,13 +1140,14 @@ void init_pci(void) init_eport(); init_xlbus_arbiter(); - MCF_PCI_PCIGSCR = -1; + MCF_PCI_PCIGSCR |= MCF_PCI_PCIGSCR_PR; /* reset PCI devices */ + /* * setup the PCI arbiter */ MCF_PCIARB_PACR = MCF_PCIARB_PACR_INTMPRI /* internal master priority: high */ - | MCF_PCIARB_PACR_EXTMPRI(0xf) /* external master priority: high */ + | MCF_PCIARB_PACR_EXTMPRI(0x0) /* external master priority: high */ | MCF_PCIARB_PACR_INTMINTEN /* enable "internal master broken" interrupt */ | MCF_PCIARB_PACR_EXTMINTEN(0x0f); /* enable "external master broken" interrupt */ @@ -1146,20 +1162,29 @@ void init_pci(void) MCF_PAD_PAR_PCIBR_PAR_PCIBR2_PCIBR2 | MCF_PAD_PAR_PCIBR_PAR_PCIBR1_PCIBR1 | MCF_PAD_PAR_PCIBR_PAR_PCIBR0_PCIBR0; -#elif MACHINE_M5484LITE - MCF_PAD_PAR_PCIBG = 0x3ff; /* enable all PCI bus grant and bus requests on the LITE board */ - MCF_PAD_PAR_PCIBR = 0x3ff; +#elif defined(MACHINE_M5484LITE) + MCF_PAD_PAR_PCIBG = MCF_PAD_PAR_PCIBG_PAR_PCIBG0_PCIBG0 | + MCF_PAD_PAR_PCIBG_PAR_PCIBG1_PCIBG1 | + MCF_PAD_PAR_PCIBG_PAR_PCIBG2_PCIBG2 | + MCF_PAD_PAR_PCIBG_PAR_PCIBG3_PCIBG3 | + MCF_PAD_PAR_PCIBG_PAR_PCIBG4_PCIBG4; /* enable all PCI bus grant and bus requests on the LITE board */ + MCF_PAD_PAR_PCIBR = MCF_PAD_PAR_PCIBR_PAR_PCIBR0_PCIBR0 | + MCF_PAD_PAR_PCIBR_PAR_PCIBR1_PCIBR1 | + MCF_PAD_PAR_PCIBR_PAR_PCIBR2_PCIBR2 | + MCF_PAD_PAR_PCIBR_PAR_PCIBR3_PCIBR3 | + MCF_PAD_PAR_PCIBR_PAR_PCIBR4_PCIBR4; #endif /* MACHINE_FIREBEE */ MCF_PCI_PCISCR = MCF_PCI_PCISCR_M | /* memory access control enabled */ MCF_PCI_PCISCR_B | /* bus master enabled */ MCF_PCI_PCISCR_M | /* mem access enable */ MCF_PCI_PCISCR_MA | /* clear master abort error */ - MCF_PCI_PCISCR_MW; /* memory write and invalidate enabled */ + MCF_PCI_PCISCR_MW | /* memory write and invalidate enabled */ + MCF_PCI_PCISCR_PER; /* assert PERR on parity error */ /* Setup burst parameters */ - MCF_PCI_PCICR1 = MCF_PCI_PCICR1_CACHELINESIZE(0) | + MCF_PCI_PCICR1 = MCF_PCI_PCICR1_CACHELINESIZE(8) | MCF_PCI_PCICR1_LATTIMER(0x20); /* TODO: test increased latency timer */ MCF_PCI_PCICR2 = MCF_PCI_PCICR2_MINGNT(1) | @@ -1174,8 +1199,8 @@ void init_pci(void) // MCF_PCI_PCIICR = 0; /* this is what Linux does */ - MCF_PCI_PCIGSCR |= MCF_PCI_PCIGSCR_SEE; /* system error interrupt enable */ - + MCF_PCI_PCIGSCR |= MCF_PCI_PCIGSCR_SEE | /* system error interrupt enable */ + MCF_PCI_PCIGSCR_PEE; /* parity error interrupt enable */ /* Configure Initiator Windows */ /* @@ -1183,7 +1208,7 @@ void init_pci(void) * used for PCI memory access */ MCF_PCI_PCIIW0BTAR = ((PCI_MEMORY_OFFSET + ((PCI_MEMORY_SIZE - 1) >> 8)) & 0xffff0000) - + (PCI_MEMORY_OFFSET >> 16); + | (PCI_MEMORY_OFFSET >> 16); NOP(); dbg("PCIIW0BTAR=0x%08x\r\n", MCF_PCI_PCIIW0BTAR); @@ -1192,8 +1217,8 @@ void init_pci(void) * initiator window 1 base / translation adress register * used for PCI I/O access */ - MCF_PCI_PCIIW1BTAR = ((PCI_IO_OFFSET + ((PCI_IO_SIZE - 1) >> 8)) & 0xffff0000) + - + (PCI_IO_OFFSET >> 16); + MCF_PCI_PCIIW1BTAR = ((PCI_IO_OFFSET + ((PCI_IO_SIZE - 1) >> 8)) & 0xffff0000) + | (PCI_IO_OFFSET >> 16); NOP(); /* initiator window 2 base / translation address register */ MCF_PCI_PCIIW2BTAR = 0L; /* not used */ @@ -1217,6 +1242,8 @@ void init_pci(void) /* reset PCI devices */ MCF_PCI_PCIGSCR &= ~MCF_PCI_PCIGSCR_PR; do { NOP(); } while (MCF_PCI_PCIGSCR & MCF_PCI_PCIGSCR_PR); /* wait until reset finished */ + wait(200); + xprintf("finished\r\n"); /* initialize/clear resource descriptor table */ diff --git a/BaS_gcc/radeon/radeon_base.c b/BaS_gcc/radeon/radeon_base.c index 8b6bb61..f63be71 100644 --- a/BaS_gcc/radeon/radeon_base.c +++ b/BaS_gcc/radeon/radeon_base.c @@ -62,13 +62,8 @@ #include "bas_string.h" #include "exceptions.h" /* for set_ipl() */ -#define DBG_RADEON -#ifdef DBG_RADEON -#define dbg(format, arg...) do { xprintf("DEBUG (%s()): " format, __FUNCTION__, ##arg);} while(0) -#else -#define dbg(format, arg...) do {;} while (0) -#endif /* DBG_RADEON */ -#define err(format, arg...) do { xprintf("ERROR (%s()): " format, __FUNCTION__, ##arg); } while(0) +// #define DEBUG +#include "debug.h" extern void run_bios(struct radeonfb_info *rinfo); @@ -241,8 +236,9 @@ extern struct fb_info *info_fb; #define rinfo ((struct radeonfb_info *) info_fb->par) static uint32_t inreg(uint32_t addr) { - return swpl(*(uint32_t *)(rinfo->mmio_base + addr)); - //return INREG(addr); + dbg("info_fb = %p, info_fb->par = %p\r\n", info_fb, info_fb->par); + dbg("retrieve from addr %p\r\n", rinfo->mmio_base + addr); + return INREG(addr); } static void outreg(uint32_t addr, uint32_t val) @@ -367,7 +363,9 @@ static int radeon_map_ROM(struct radeonfb_info *rinfo) dbg("bios_seg=%p\r\n", rinfo->bios_seg); dbg("bios_seg_phys=%p\r\n", rinfo->bios_seg_phys); + dbg("before inreg\r\n"); temp = inreg(MPP_TB_CONFIG); + dbg("after inreg\r\n"); dbg("temp=%d\r\n", temp); temp &= 0x00ffffffu; @@ -2218,6 +2216,7 @@ int32_t radeonfb_pci_register(int32_t handle, const struct pci_device_id *ent) hexdump((uint8_t *) rinfo->bios_seg_phys, 0x100); #endif rinfo->bios_seg_phys = 0; + return 0; } } } diff --git a/BaS_gcc/sys/BaS.c b/BaS_gcc/sys/BaS.c index 72b57d9..74016d0 100644 --- a/BaS_gcc/sys/BaS.c +++ b/BaS_gcc/sys/BaS.c @@ -295,9 +295,10 @@ NIF nif2; bool spurious_interrupt_handler(void *arg1, void *arg2) { - dbg("IMRH=%lx, IMRL=%lx\r\n", MCF_INTC_IMRH, MCF_INTC_IMRL); - dbg("IPRH=%lx, IPRL=%lx\r\n", MCF_INTC_IPRH, MCF_INTC_IPRL); - dbg("IRLR=%x\r\n", MCF_INTC_IRLR); + err("spurious interrupt\r\n"); + err("IMRH=%lx, IMRL=%lx\r\n", MCF_INTC_IMRH, MCF_INTC_IMRL); + err("IPRH=%lx, IPRL=%lx\r\n", MCF_INTC_IPRH, MCF_INTC_IPRL); + err("IRLR=%x\r\n", MCF_INTC_IRLR); return true; } diff --git a/BaS_gcc/sys/interrupts.c b/BaS_gcc/sys/interrupts.c index 9d2bc87..691ded9 100644 --- a/BaS_gcc/sys/interrupts.c +++ b/BaS_gcc/sys/interrupts.c @@ -37,14 +37,8 @@ #include "dma.h" #include "pci.h" -// #define IRQ_DEBUG -#if defined(IRQ_DEBUG) -#define dbg(format, arg...) do { xprintf("DEBUG %s(): " format, __FUNCTION__, ##arg); } while (0) -#else -#define dbg(format, arg...) do { ; } while (0) -#endif -#define err(format, arg...) do { xprintf("DEBUG %s(): " format, __FUNCTION__, ##arg); } while (0) - +// #define DEBUG +#include "debug.h" #ifndef MAX_ISR_ENTRY #define MAX_ISR_ENTRY (20) @@ -206,6 +200,140 @@ void isr_remove_handler(bool (*handler)(void *, void *)) dbg("no such handler registered (handler=%p\r\n", handler); } +#ifdef DEBUG +static char *vector_to_str[] = +{ + "initial stack pointer", /* 0 */ + "initial program counter", /* 1 */ + "access error", /* 2 */ + "address error", /* 3 */ + "illegal instruction", /* 4 */ + "divide by zero", /* 5 */ + "reserved6", /* 6 */ + "reserved7", /* 7 */ + "privilege violation", /* 8 */ + "trace", /* 9 */ + "unimplemented line-a opcode", /* 10 */ + "unimplemented line-f opcode", /* 11 */ + "non-PC breakpoint debug interrupt", /* 12 */ + "PC breakpoint debug interrupt", /* 13 */ + "format error", /* 14 */ + "uninitialized interrupt", /* 15 */ + "reserved16", + "reserved17", + "reserved18", + "reserved19", + "reserved20", + "reserved21", + "reserved22", + "reserved23", + "spurious interrupt", /* 24 */ + "level 1 autovector", /* 25 */ + "level 2 autovector", /* 26 */ + "level 3 autovector", /* 27 */ + "level 4 autovector", /* 28 */ + "level 5 autovector", /* 29 */ + "level 6 autovector", /* 30 */ + "level 7 autovector", /* 31 */ + "trap #0", /* 32 */ + "trap #1", /* 33 */ + "trap #2", /* 34 */ + "trap #3", /* 35 */ + "trap #4", /* 36 */ + "trap #5", /* 37 */ + "trap #6", /* 38 */ + "trap #7", /* 39 */ + "trap #8", /* 40 */ + "trap #9", /* 41 */ + "trap #10" /* 42 */ + "trap #11", /* 43 */ + "trap #12", /* 44 */ + "trap #13", /* 45 */ + "trap #14", /* 46 */ + "trap #15", /* 47 */ + "floating point branch on unordered condition", /* 48 */ + "floting point inexact result", /* 49 */ + "floating point divide by zero", /* 50 */ + "floating point underflow", /* 51 */ + "floating point operand error", /* 52 */ + "floating point overflow", /* 53 */ + "floating point NaN", /* 54 */ + "floating point denormalized number", /* 55 */ + "reserved56", /* 56 */ + "reserved57", + "reserved58", + "reserved59", + "reserved60", + "unsupported instruction", /* 61 */ + "reserved62", /* 62 */ + "reserved63", /* 63 */ + "", "", + "edge port 1", /* 1 */ + "edge port 2", /* 2 */ + "edge port 3", /* 3 */ + "edge port 4", /* 4 */ + "edge port 5", /* 5 */ + "edge port 6", /* 6 */ + "edge port 7", /* 7 */ + "unused8", + "unused9", + "unused10", + "unused11", + "unused12", + "unused13", + "unused14", + "USB endpoint 0", /* 15 */ + "USB endpoint 1", /* 16 */ + "USB endpoint 2", /* 17 */ + "USB endpoint 3", /* 18 */ + "USB endpoint 4", /* 19 */ + "USB endpoint 5", /* 20 */ + "USB endpoint 6", /* 21 */ + "USB general interrupt", /* 22 */ + "USB core interrupt", /* 23 */ + "USB OR interrupt", /* 24 */ + "DSPI over/underflow", /* 25 */ + "DSPI receive FIFO overflow", /* 26 */ + "DSPI receive FIFO drain", /* 27 */ + "DSPI transmit FIFO underflow", /* 28 */ + "DSPI transfer complete", /* 29 */ + "DSPI trasmit FIFO full", /* 30 */ + "DSPI end of queue", /* 31 */ + "PSC3", /* 32 */ + "PSC2", /* 33 */ + "PSC1", /* 34 */ + "PSC0", /* 35 */ + "Comm timer", /* 36 */ + "SEC", /* 37 */ + "FEC1", /* 38 */ + "FEC0", /* 39 */ + "I2C", /* 40 */ + "PCI arbiter", /* 41 */ + "comm bus PCI", /* 42 */ + "XLB PCI", /* 43 */ + "not used44", + "not used45", + "not used46", + "XLB arbiter to CPU", /* 47 */ + "multichannel DMA", /* 48 */ + "FlexCAN 0 error", /* 49 */ + "FlexCAN 0 bus off", /* 50 */ + "FlexCAN 0 message buffer", /* 51 */ + "not used52" + "slice timer 1", /* 53 */ + "slice timer 0", /* 54 */ + "FlexCAN 1 error", /* 55 */ + "FlexCAN 1 bus off", /* 56 */ + "FlexCAN 1 message buffer", /* 57 */ + "not used58", + "GPT3", /* 59 */ + "GPT2", /* 60 */ + "GPT1", /* 61 */ + "GPT0", /* 62 */ + "not used63" +}; +#endif /* DEBUG */ + /* * This routine searches the ISR table for an entry that matches * 'vector'. If one is found, then 'handler' is executed. @@ -218,7 +346,7 @@ bool isr_execute_handler(int vector) { int index; - dbg("vector = %d\r\n", vector); + dbg("vector = %d (%s)\r\n", vector, vector_to_str[vector]); /* * locate an interrupt service routine handler. diff --git a/BaS_gcc/sys/mmu.c b/BaS_gcc/sys/mmu.c index 6994ada..dd7552d 100644 --- a/BaS_gcc/sys/mmu.c +++ b/BaS_gcc/sys/mmu.c @@ -36,26 +36,6 @@ * Copyright 2013 M. Froeschle */ -#define ACR_BA(x) ((x) & 0xffff0000) -#define ACR_ADMSK(x) (((x) & 0xffff) << 16) -#define ACR_E(x) (((x) & 1) << 15) - -#define ACR_S(x) (((x) & 3) << 13) -#define ACR_S_USERMODE 0 -#define ACR_S_SUPERVISOR_MODE 1 -#define ACR_S_ALL 2 - -#define ACR_AMM(x) (((x) & 1) << 10) - -#define ACR_CM(x) (((x) & 3) << 5) -#define ACR_CM_CACHEABLE_WT 0x0 -#define ACR_CM_CACHEABLE_CB 0x1 -#define ACR_CM_CACHE_INH_PRECISE 0x2 -#define ACR_CM_CACHE_INH_IMPRECISE 0x3 - -#define ACR_SP(x) (((x) & 1) << 3) -#define ACR_W(x) (((x) & 1) << 2) - #include #include "bas_printf.h" #include "bas_types.h" @@ -230,6 +210,9 @@ static struct virt_to_phys translation[] = { 0x00000000, 0x00e00000, 0x00000000 }, /* map first 14 MByte to first 14 Mb of SD ram */ { 0x00e00000, 0x00100000, 0x00000000 }, /* map TOS to SDRAM */ { 0x01000000, 0x04000000, 0x00000000 }, /* map rest of ram virt = phys */ +#if 0 + { 0x04000000, 0x08000000, 0x7C000000 }, /* experimental mapping for PCI memory */ +#endif }; #elif defined(MACHINE_M54455) /* FIXME: this is not determined yet! */ @@ -269,14 +252,14 @@ static inline uint32_t lookup_phys(int32_t virt) * bytes size) or 8k pages (64k descriptor array size) */ #define NUM_PAGES (SDRAM_SIZE / SIZE_DEFAULT) -static struct mmu_page_descriptor pages[NUM_PAGES]; +static struct mmu_page_descriptor_ram pages[NUM_PAGES]; int mmu_map_instruction_page(uint32_t virt, uint8_t asid) { const uint32_t size_mask = ~ (SIZE_DEFAULT - 1); /* pagesize */ int page_index = (virt & size_mask) / SIZE_DEFAULT; /* index into page_descriptor array */ - struct mmu_page_descriptor *page = &pages[page_index]; /* attributes of page to map */ + struct mmu_page_descriptor_ram *page = &pages[page_index]; /* attributes of page to map */ int ipl; uint32_t phys = lookup_phys(virt); /* virtual to physical translation of page */ @@ -332,7 +315,7 @@ int mmu_map_data_page(uint32_t virt, uint8_t asid) uint16_t ipl; const uint32_t size_mask = ~ (SIZE_DEFAULT - 1); /* pagesize */ int page_index = (virt & size_mask) / SIZE_DEFAULT; /* index into page_descriptor array */ - struct mmu_page_descriptor *page = &pages[page_index]; /* attributes of page to map */ + struct mmu_page_descriptor_ram *page = &pages[page_index]; /* attributes of page to map */ uint32_t phys = lookup_phys(virt); /* virtual to physical translation of page */ @@ -389,7 +372,7 @@ int mmu_map_data_page(uint32_t virt, uint8_t asid) * per instruction as a minimum, more for performance. Thus locked pages (that can't be touched by the * LRU algorithm) should be used sparsingly. */ -uint32_t mmu_map_page(uint32_t virt, uint32_t phys, enum mmu_page_size sz, uint8_t page_id, const struct mmu_page_descriptor *flags) +uint32_t mmu_map_page(uint32_t virt, uint32_t phys, enum mmu_page_size sz, uint8_t page_id, const struct mmu_page_descriptor_ram *flags) { int size_mask; int ipl; @@ -456,7 +439,7 @@ void mmu_init(void) { extern uint8_t _MMUBAR[]; uint32_t MMUBAR = (uint32_t) &_MMUBAR[0]; - struct mmu_page_descriptor flags; + struct mmu_page_descriptor_ram flags; int i; /* @@ -613,18 +596,21 @@ void mmu_init(void) /* set data access attributes in ACR0 and ACR1 */ /* map PCI address space */ + /* set SRAM and MBAR access */ set_acr0(ACR_W(0) | /* read and write accesses permitted */ - //ACR_SP(1) | /* supervisor only access permitted */ + // ACR_SP(1) | /* supervisor only access permitted */ ACR_CM(ACR_CM_CACHE_INH_PRECISE) | /* cache inhibit, precise */ ACR_AMM(0) | /* control region > 16 MB */ - ACR_S(ACR_S_SUPERVISOR_MODE) | /* match addresses in supervisor mode only */ + ACR_S(ACR_S_SUPERVISOR_MODE) | /* match addresses in supervisor and user mode */ ACR_E(1) | /* enable ACR */ #if defined(MACHINE_FIREBEE) ACR_ADMSK(0x7f) | /* cover 2GB area from 0x80000000 to 0xffffffff */ - ACR_BA(PCI_MEMORY_OFFSET)); /* (equals area from 3 to 4 GB */ + // ACR_BA(PCI_MEMORY_OFFSET)); /* (equals area from 3 to 4 GB */ + ACR_BA(0xe0000000)); #elif defined(MACHINE_M5484LITE) ACR_ADMSK(0x7f) | /* cover 2 GB area from 0x80000000 to 0xffffffff */ - ACR_BA(PCI_MEMORY_OFFSET)); + // ACR_BA(PCI_MEMORY_OFFSET)); + ACR_BA(0xe0000000)); #elif defined(MACHINE_M54455) ACR_ADMSK(0x7f) | ACR_BA(0x80000000)); /* FIXME: not determined yet */ @@ -709,6 +695,10 @@ void mmu_init(void) flags.execute = 0; flags.locked = 1; mmu_map_page(0x6a000000, 0x6a000000, MMU_PAGE_SIZE_1M, 0, &flags); +#elif defined(MACHINE_M54455) +#warning MMU specs for M54455 not yet determined +#else +#error Unknown machine #endif /* MACHINE_FIREBEE */ /* @@ -881,7 +871,7 @@ uint32_t mmu_map_data_page_locked(uint32_t virt, uint32_t size, int asid) { const uint32_t size_mask = ~ (SIZE_DEFAULT - 1); /* pagesize */ int page_index = (virt & size_mask) / SIZE_DEFAULT; /* index into page_descriptor array */ - struct mmu_page_descriptor *page = &pages[page_index]; /* attributes of page to map */ + struct mmu_page_descriptor_ram *page = &pages[page_index]; /* attributes of page to map */ int i = 0; while (page_index * SIZE_DEFAULT < virt + size) @@ -914,7 +904,7 @@ uint32_t mmu_unlock_data_page(uint32_t address, uint32_t size, int asid) int curr_asid; const uint32_t size_mask = ~ (SIZE_DEFAULT - 1); int page_index = (address & size_mask) / SIZE_DEFAULT; /* index into page descriptor array */ - struct mmu_page_descriptor *page = &pages[page_index]; + struct mmu_page_descriptor_ram *page = &pages[page_index]; curr_asid = set_asid(asid); /* set asid to the one to search for */ @@ -1000,3 +990,4 @@ uint32_t mmu_report_pagesize(void) { return SIZE_DEFAULT; } + diff --git a/BaS_gcc/sys/sysinit.c b/BaS_gcc/sys/sysinit.c index d4b0293..a525f1a 100644 --- a/BaS_gcc/sys/sysinit.c +++ b/BaS_gcc/sys/sysinit.c @@ -53,6 +53,9 @@ #include "usb.h" #include "video.h" +#define DEBUG +#include "debug.h" + #define UNUSED(x) (void)(x) /* Unused variable */ bool fpga_configured = false; /* for FPGA JTAG configuration */ @@ -462,6 +465,9 @@ static void init_fbcs() MCF_FBCS3_CSMR = 0; MCF_FBCS4_CSMR = 0; + /* + * the FireEngine needs AA for its CPLD accessed registers + */ MCF_FBCS5_CSAR = MCF_FBCS_CSAR_BA(0x60000000); MCF_FBCS5_CSCR = MCF_FBCS_CSCR_PS_16 | /* CPLD access 16 bit wide */ MCF_FBCS_CSCR_WS(32) | /* 32 wait states */ @@ -587,6 +593,7 @@ void init_usb(void) do { handle = pci_find_classcode(PCI_CLASS_SERIAL_USB | PCI_FIND_BASE_CLASS | PCI_FIND_SUB_CLASS, index++); + dbg("handle 0x%02x\r\n", handle); if (handle > 0) { long id; @@ -597,10 +604,10 @@ void init_usb(void) PCI_DEVICE_FROM_HANDLE(handle), PCI_FUNCTION_FROM_HANDLE(handle), handle); - id = pci_read_config_longword(handle, PCIIDR); - pci_class = pci_read_config_longword(handle, PCIREV); + id = swpl(pci_read_config_longword(handle, PCIIDR)); + pci_class = swpl(pci_read_config_longword(handle, PCIREV)); - if (PCI_SUBCLASS(pci_class) == PCI_CLASS_SERIAL_USB_EHCI) + if (pci_class == PCI_CLASS_SERIAL_USB_EHCI) { board = ehci_usb_pci_table; while (board->vendor) @@ -615,7 +622,7 @@ void init_usb(void) board++; } } - if (PCI_SUBCLASS(pci_class) == PCI_CLASS_SERIAL_USB_OHCI) + if (pci_class == PCI_CLASS_SERIAL_USB_OHCI) { board = ohci_usb_pci_table; while (board->vendor) diff --git a/BaS_gcc/tos/Makefile b/BaS_gcc/tos/Makefile index 120ff9d..3817e1e 100644 --- a/BaS_gcc/tos/Makefile +++ b/BaS_gcc/tos/Makefile @@ -3,8 +3,9 @@ .PHONY: bascook .PHONY: vmem_test .PHONY: pci_test +.PHONY: pci_mem .PHONY: fpga_test -tos: jtagwait bascook vmem_test pci_test fpga_test +tos: jtagwait bascook vmem_test pci_test pci_mem fpga_test jtagwait: $(MAKE) -C $@ @@ -18,6 +19,9 @@ vmem_test: pci_test: $(MAKE) -C $@ +pci_mem: + $(MAKE) -C $@ + fpga_test: $(MAKE) -C $@ diff --git a/BaS_gcc/tos/pci_mem/Makefile b/BaS_gcc/tos/pci_mem/Makefile new file mode 100755 index 0000000..d0862c3 --- /dev/null +++ b/BaS_gcc/tos/pci_mem/Makefile @@ -0,0 +1,105 @@ +CROSS=Y + +CROSSBINDIR_IS_Y=m68k-atari-mint- +CROSSBINDIR_IS_N= + +CROSSBINDIR=$(CROSSBINDIR_IS_$(CROSS)) + +UNAME := $(shell uname) +ifeq ($(CROSS), Y) +ifeq ($(UNAME),Linux) +PREFIX=m68k-atari-mint +HATARI=hatari +else +PREFIX=m68k-atari-mint +HATARI=/usr/local/bin/hatari +endif +else +PREFIX=/usr +endif + +DEPEND=depend +TOPDIR = ../.. + +LIBCMINI=$(TOPDIR)/../libcmini/libcmini + +INCLUDE=-I$(LIBCMINI)/include -nostdlib +LIBS=-lcmini -nostdlib -lgcc +CC=$(PREFIX)/bin/gcc + +CC=$(CROSSBINDIR)gcc +STRIP=$(CROSSBINDIR)strip +STACK=$(CROSSBINDIR)stack + +APP=pci_mem.prg +TEST_APP=$(APP) + +CFLAGS=\ + -O0\ + -g\ + -Wl,-Map,mapfile\ + -Wl,--defsym -Wl,__MBAR=0xff000000\ + -Wl,--defsym -Wl,__MMUBAR=0xff040000\ + -Wl,--defsym -Wl,__FPGA_JTAG_LOADED=0xff101000\ + -Wl,--defsym -Wl,__FPGA_JTAG_VALID=0xff101004\ + -Wl,--defsym -Wl,__VRAM=0x60000000\ + -Wall + +SRCDIR=sources +INCDIR=include +INCLUDE+=-I$(INCDIR) + +CSRCS=\ + $(SRCDIR)/pci_mem.c + +ASRCS= + +COBJS=$(patsubst $(SRCDIR)/%.o,%.o,$(patsubst %.c,%.o,$(CSRCS))) +AOBJS=$(patsubst $(SRCDIR)/%.o,%.o,$(patsubst %.S,%.o,$(ASRCS))) +OBJS=$(COBJS) $(AOBJS) + +TRGTDIRS=./m5475 ./m5475/mshort +OBJDIRS=$(patsubst %,%/objs,$(TRGTDIRS)) + +# +# multilib flags. These must match m68k-atari-mint-gcc -print-multi-lib output +# +m5475/$(APP):CFLAGS += -mcpu=5475 +m5475/mshort/$(APP): CFLAGS += -mcpu=5475 -mshort + +all:$(patsubst %,%/$(APP),$(TRGTDIRS)) +# +# generate pattern rules for multilib object files. +# +define CC_TEMPLATE +$(1)/objs/%.o:$(SRCDIR)/%.c + $(CC) $$(CFLAGS) $(INCLUDE) -c $$< -o $$@ + +$(1)/objs/%.o:$(SRCDIR)/%.S + $(CC) $$(CFLAGS) $(INCLUDE) -c $$< -o $$@ + +$(1)_OBJS=$(patsubst %,$(1)/objs/%,$(OBJS)) +$(1)/$(APP): $$($(1)_OBJS) + $(CC) $$(CFLAGS) -o $$@ $(LIBCMINI)/$(1)/startup.o $$($(1)_OBJS) -L$(LIBCMINI)/$(1) $(LIBS) + $(STRIP) $$@ +endef +$(foreach DIR,$(TRGTDIRS),$(eval $(call CC_TEMPLATE,$(DIR)))) + +$(DEPEND): $(ASRCS) $(CSRCS) + -rm -f $(DEPEND) + for d in $(TRGTDIRS);\ + do $(CC) $(CFLAGS) $(INCLUDE) -M $(ASRCS) $(CSRCS) | sed -e "s#^\(.*\).o:#$$d/objs/\1.o:#" >> $(DEPEND); \ + done + + +clean: + @rm -f $(patsubst %,%/objs/*.o,$(TRGTDIRS)) $(patsubst %,%/$(APP),$(TRGTDIRS)) + @rm -f $(DEPEND) mapfile + +.PHONY: printvars +printvars: + @$(foreach V,$(.VARIABLES), $(if $(filter-out environment% default automatic, $(origin $V)),$(warning $V=$($V)))) + +ifneq (clean,$(MAKECMDGOALS)) +-include $(DEPEND) +endif diff --git a/BaS_gcc/tos/pci_mem/include/MCF5475.h b/BaS_gcc/tos/pci_mem/include/MCF5475.h new file mode 100644 index 0000000..5ab1750 --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/MCF5475.h @@ -0,0 +1,67 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_H__ +#define __MCF5475_H__ + +#include +/*** + * MCF5475 Derivative Memory map definitions from linker command files: + * __MBAR, __MMUBAR, __RAMBAR0, __RAMBAR0_SIZE, __RAMBAR1, __RAMBAR1_SIZE + * linker symbols must be defined in the linker command file. + */ + +typedef uint32_t __attribute__((__may_alias__)) uint32_t_a; /* a type to avoid gcc's complaints about pointer aliasing */ + +extern uint8_t _MBAR[]; +extern uint8_t _MMUBAR[]; +extern uint8_t _RAMBAR0[]; +extern uint8_t _RAMBAR0_SIZE[]; +extern uint8_t _RAMBAR1[]; +extern uint8_t _RAMBAR1_SIZE[]; + +#define MBAR_ADDRESS (uint32_t)_MBAR +#define MMUBAR_ADDRESS (uint32_t)_MMUBAR +#define RAMBAR0_ADDRESS (uint32_t)_RAMBAR0 +#define RAMBAR0_SIZE (uint32_t)_RAMBAR0_SIZE +#define RAMBAR1_ADDRESS (uint32_t)_RAMBAR1 +#define RAMBAR1_SIZE (uint32_t)_RAMBAR1_SIZE + + +#include "MCF5475_SIU.h" +#include "MCF5475_MMU.h" +#include "MCF5475_SDRAMC.h" +#include "MCF5475_XLB.h" +#include "MCF5475_CLOCK.h" +#include "MCF5475_FBCS.h" +#include "MCF5475_INTC.h" +#include "MCF5475_GPT.h" +#include "MCF5475_SLT.h" +#include "MCF5475_GPIO.h" +#include "MCF5475_PAD.h" +#include "MCF5475_PCI.h" +#include "MCF5475_PCIARB.h" +#include "MCF5475_EPORT.h" +#include "MCF5475_CTM.h" +#include "MCF5475_DMA.h" +#include "MCF5475_PSC.h" +#include "MCF5475_DSPI.h" +#include "MCF5475_I2C.h" +#include "MCF5475_FEC.h" +#include "MCF5475_USB.h" +#include "MCF5475_SRAM.h" +#include "MCF5475_SEC.h" + +#endif /* __MCF5475_H__ */ diff --git a/BaS_gcc/tos/pci_mem/include/MCF5475_CLOCK.h b/BaS_gcc/tos/pci_mem/include/MCF5475_CLOCK.h new file mode 100644 index 0000000..4603098 --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/MCF5475_CLOCK.h @@ -0,0 +1,47 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_CLOCK_H__ +#define __MCF5475_CLOCK_H__ + + +/********************************************************************* +* +* Clock Module (CLOCK) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_CLOCK_SPCR (*(volatile uint32_t*)(&_MBAR[0x300])) + + +/* Bit definitions and macros for MCF_CLOCK_SPCR */ +#define MCF_CLOCK_SPCR_MEMEN (0x1) +#define MCF_CLOCK_SPCR_PCIEN (0x2) +#define MCF_CLOCK_SPCR_FBEN (0x4) +#define MCF_CLOCK_SPCR_CAN0EN (0x8) +#define MCF_CLOCK_SPCR_DMAEN (0x10) +#define MCF_CLOCK_SPCR_FEC0EN (0x20) +#define MCF_CLOCK_SPCR_FEC1EN (0x40) +#define MCF_CLOCK_SPCR_USBEN (0x80) +#define MCF_CLOCK_SPCR_PSCEN (0x200) +#define MCF_CLOCK_SPCR_CAN1EN (0x800) +#define MCF_CLOCK_SPCR_CRYENA (0x1000) +#define MCF_CLOCK_SPCR_CRYENB (0x2000) +#define MCF_CLOCK_SPCR_COREN (0x4000) +#define MCF_CLOCK_SPCR_PLLK (0x80000000) + + +#endif /* __MCF5475_CLOCK_H__ */ diff --git a/BaS_gcc/tos/pci_mem/include/MCF5475_CTM.h b/BaS_gcc/tos/pci_mem/include/MCF5475_CTM.h new file mode 100644 index 0000000..5ba86e4 --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/MCF5475_CTM.h @@ -0,0 +1,76 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_CTM_H__ +#define __MCF5475_CTM_H__ + + +/********************************************************************* +* +* Comm Timer Module (CTM) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_CTM_CTCR0 (*(volatile uint32_t*)(&_MBAR[0x7F00])) +#define MCF_CTM_CTCR1 (*(volatile uint32_t*)(&_MBAR[0x7F04])) +#define MCF_CTM_CTCR2 (*(volatile uint32_t*)(&_MBAR[0x7F08])) +#define MCF_CTM_CTCR3 (*(volatile uint32_t*)(&_MBAR[0x7F0C])) +#define MCF_CTM_CTCR4 (*(volatile uint32_t*)(&_MBAR[0x7F10])) +#define MCF_CTM_CTCR5 (*(volatile uint32_t*)(&_MBAR[0x7F14])) +#define MCF_CTM_CTCR6 (*(volatile uint32_t*)(&_MBAR[0x7F18])) +#define MCF_CTM_CTCR7 (*(volatile uint32_t*)(&_MBAR[0x7F1C])) +#define MCF_CTM_CTCRF(x) (*(volatile uint32_t*)(&_MBAR[0x7F00 + ((x)*0x4)])) +#define MCF_CTM_CTCRV(x) (*(volatile uint32_t*)(&_MBAR[0x7F10 + ((x-4)*0x4)])) + + +/* Bit definitions and macros for MCF_CTM_CTCRF */ +#define MCF_CTM_CTCRF_CRV(x) (((x)&0xFFFF)<<0) +#define MCF_CTM_CTCRF_S(x) (((x)&0xF)<<0x10) +#define MCF_CTM_CTCRF_S_CLK_1 (0) +#define MCF_CTM_CTCRF_S_CLK_2 (0x10000) +#define MCF_CTM_CTCRF_S_CLK_4 (0x20000) +#define MCF_CTM_CTCRF_S_CLK_8 (0x30000) +#define MCF_CTM_CTCRF_S_CLK_16 (0x40000) +#define MCF_CTM_CTCRF_S_CLK_32 (0x50000) +#define MCF_CTM_CTCRF_S_CLK_64 (0x60000) +#define MCF_CTM_CTCRF_S_CLK_128 (0x70000) +#define MCF_CTM_CTCRF_S_CLK_256 (0x80000) +#define MCF_CTM_CTCRF_S_CLK_EXT (0x90000) +#define MCF_CTM_CTCRF_PCT(x) (((x)&0x7)<<0x14) +#define MCF_CTM_CTCRF_PCT_100 (0) +#define MCF_CTM_CTCRF_PCT_50 (0x100000) +#define MCF_CTM_CTCRF_PCT_25 (0x200000) +#define MCF_CTM_CTCRF_PCT_12p5 (0x300000) +#define MCF_CTM_CTCRF_PCT_6p25 (0x400000) +#define MCF_CTM_CTCRF_PCT_OFF (0x500000) +#define MCF_CTM_CTCRF_M (0x800000) +#define MCF_CTM_CTCRF_IM (0x1000000) +#define MCF_CTM_CTCRF_I (0x80000000) + +/* Bit definitions and macros for MCF_CTM_CTCRV */ +#define MCF_CTM_CTCRV_CRV(x) (((x)&0xFFFFFF)<<0) +#define MCF_CTM_CTCRV_PCT(x) (((x)&0x7)<<0x18) +#define MCF_CTM_CTCRV_PCT_100 (0) +#define MCF_CTM_CTCRV_PCT_50 (0x1000000) +#define MCF_CTM_CTCRV_PCT_25 (0x2000000) +#define MCF_CTM_CTCRV_PCT_12p5 (0x3000000) +#define MCF_CTM_CTCRV_PCT_6p25 (0x4000000) +#define MCF_CTM_CTCRV_PCT_OFF (0x5000000) +#define MCF_CTM_CTCRV_M (0x8000000) +#define MCF_CTM_CTCRV_S (0x10000000) + + +#endif /* __MCF5475_CTM_H__ */ diff --git a/BaS_gcc/tos/pci_mem/include/MCF5475_DMA.h b/BaS_gcc/tos/pci_mem/include/MCF5475_DMA.h new file mode 100644 index 0000000..4e6f916 --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/MCF5475_DMA.h @@ -0,0 +1,234 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_DMA_H__ +#define __MCF5475_DMA_H__ + + +/********************************************************************* +* +* Multichannel DMA (DMA) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_DMA_TASKBAR (*(volatile uint32_t*)(&_MBAR[0x8000])) +#define MCF_DMA_CP (*(volatile uint32_t*)(&_MBAR[0x8004])) +#define MCF_DMA_EP (*(volatile uint32_t*)(&_MBAR[0x8008])) +#define MCF_DMA_VP (*(volatile uint32_t*)(&_MBAR[0x800C])) +#define MCF_DMA_PTD (*(volatile uint32_t*)(&_MBAR[0x8010])) +#define MCF_DMA_DIPR (*(volatile uint32_t*)(&_MBAR[0x8014])) +#define MCF_DMA_DIMR (*(volatile uint32_t*)(&_MBAR[0x8018])) +#define MCF_DMA_TCR0 (*(volatile uint16_t*)(&_MBAR[0x801C])) +#define MCF_DMA_TCR1 (*(volatile uint16_t*)(&_MBAR[0x801E])) +#define MCF_DMA_TCR2 (*(volatile uint16_t*)(&_MBAR[0x8020])) +#define MCF_DMA_TCR3 (*(volatile uint16_t*)(&_MBAR[0x8022])) +#define MCF_DMA_TCR4 (*(volatile uint16_t*)(&_MBAR[0x8024])) +#define MCF_DMA_TCR5 (*(volatile uint16_t*)(&_MBAR[0x8026])) +#define MCF_DMA_TCR6 (*(volatile uint16_t*)(&_MBAR[0x8028])) +#define MCF_DMA_TCR7 (*(volatile uint16_t*)(&_MBAR[0x802A])) +#define MCF_DMA_TCR8 (*(volatile uint16_t*)(&_MBAR[0x802C])) +#define MCF_DMA_TCR9 (*(volatile uint16_t*)(&_MBAR[0x802E])) +#define MCF_DMA_TCR10 (*(volatile uint16_t*)(&_MBAR[0x8030])) +#define MCF_DMA_TCR11 (*(volatile uint16_t*)(&_MBAR[0x8032])) +#define MCF_DMA_TCR12 (*(volatile uint16_t*)(&_MBAR[0x8034])) +#define MCF_DMA_TCR13 (*(volatile uint16_t*)(&_MBAR[0x8036])) +#define MCF_DMA_TCR14 (*(volatile uint16_t*)(&_MBAR[0x8038])) +#define MCF_DMA_TCR15 (*(volatile uint16_t*)(&_MBAR[0x803A])) +#define MCF_DMA_PRIOR0 (*(volatile uint8_t *)(&_MBAR[0x803C])) +#define MCF_DMA_PRIOR1 (*(volatile uint8_t *)(&_MBAR[0x803D])) +#define MCF_DMA_PRIOR2 (*(volatile uint8_t *)(&_MBAR[0x803E])) +#define MCF_DMA_PRIOR3 (*(volatile uint8_t *)(&_MBAR[0x803F])) +#define MCF_DMA_PRIOR4 (*(volatile uint8_t *)(&_MBAR[0x8040])) +#define MCF_DMA_PRIOR5 (*(volatile uint8_t *)(&_MBAR[0x8041])) +#define MCF_DMA_PRIOR6 (*(volatile uint8_t *)(&_MBAR[0x8042])) +#define MCF_DMA_PRIOR7 (*(volatile uint8_t *)(&_MBAR[0x8043])) +#define MCF_DMA_PRIOR8 (*(volatile uint8_t *)(&_MBAR[0x8044])) +#define MCF_DMA_PRIOR9 (*(volatile uint8_t *)(&_MBAR[0x8045])) +#define MCF_DMA_PRIOR10 (*(volatile uint8_t *)(&_MBAR[0x8046])) +#define MCF_DMA_PRIOR11 (*(volatile uint8_t *)(&_MBAR[0x8047])) +#define MCF_DMA_PRIOR12 (*(volatile uint8_t *)(&_MBAR[0x8048])) +#define MCF_DMA_PRIOR13 (*(volatile uint8_t *)(&_MBAR[0x8049])) +#define MCF_DMA_PRIOR14 (*(volatile uint8_t *)(&_MBAR[0x804A])) +#define MCF_DMA_PRIOR15 (*(volatile uint8_t *)(&_MBAR[0x804B])) +#define MCF_DMA_PRIOR16 (*(volatile uint8_t *)(&_MBAR[0x804C])) +#define MCF_DMA_PRIOR17 (*(volatile uint8_t *)(&_MBAR[0x804D])) +#define MCF_DMA_PRIOR18 (*(volatile uint8_t *)(&_MBAR[0x804E])) +#define MCF_DMA_PRIOR19 (*(volatile uint8_t *)(&_MBAR[0x804F])) +#define MCF_DMA_PRIOR20 (*(volatile uint8_t *)(&_MBAR[0x8050])) +#define MCF_DMA_PRIOR21 (*(volatile uint8_t *)(&_MBAR[0x8051])) +#define MCF_DMA_PRIOR22 (*(volatile uint8_t *)(&_MBAR[0x8052])) +#define MCF_DMA_PRIOR23 (*(volatile uint8_t *)(&_MBAR[0x8053])) +#define MCF_DMA_PRIOR24 (*(volatile uint8_t *)(&_MBAR[0x8054])) +#define MCF_DMA_PRIOR25 (*(volatile uint8_t *)(&_MBAR[0x8055])) +#define MCF_DMA_PRIOR26 (*(volatile uint8_t *)(&_MBAR[0x8056])) +#define MCF_DMA_PRIOR27 (*(volatile uint8_t *)(&_MBAR[0x8057])) +#define MCF_DMA_PRIOR28 (*(volatile uint8_t *)(&_MBAR[0x8058])) +#define MCF_DMA_PRIOR29 (*(volatile uint8_t *)(&_MBAR[0x8059])) +#define MCF_DMA_PRIOR30 (*(volatile uint8_t *)(&_MBAR[0x805A])) +#define MCF_DMA_PRIOR31 (*(volatile uint8_t *)(&_MBAR[0x805B])) +#define MCF_DMA_IMCR (*(volatile uint32_t*)(&_MBAR[0x805C])) +#define MCF_DMA_TSKSZ0 (*(volatile uint32_t*)(&_MBAR[0x8060])) +#define MCF_DMA_TSKSZ1 (*(volatile uint32_t*)(&_MBAR[0x8064])) +#define MCF_DMA_DBGCOMP0 (*(volatile uint32_t*)(&_MBAR[0x8070])) +#define MCF_DMA_DBGCOMP2 (*(volatile uint32_t*)(&_MBAR[0x8074])) +#define MCF_DMA_DBGCTL (*(volatile uint32_t*)(&_MBAR[0x8078])) +#define MCF_DMA_TCR(x) (*(volatile uint16_t*)(&_MBAR[0x801C + ((x)*0x2)])) +#define MCF_DMA_PRIOR(x) (*(volatile uint8_t *)(&_MBAR[0x803C + ((x)*0x1)])) + + +/* Bit definitions and macros for MCF_DMA_TASKBAR */ +#define MCF_DMA_TASKBAR_TASK_BASE_ADDRESS(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_DMA_CP */ +#define MCF_DMA_CP_DESCRIPTOR_POINTER(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_DMA_EP */ +#define MCF_DMA_EP_DESCRIPTOR_POINTER(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_DMA_VP */ +#define MCF_DMA_VP_VARIABLE_POINTER(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_DMA_PTD */ +#define MCF_DMA_PTD_PCTL0 (0x1) +#define MCF_DMA_PTD_PCTL1 (0x2) +#define MCF_DMA_PTD_PCTL13 (0x2000) +#define MCF_DMA_PTD_PCTL14 (0x4000) +#define MCF_DMA_PTD_PCTL15 (0x8000) + +/* Bit definitions and macros for MCF_DMA_DIPR */ +#define MCF_DMA_DIPR_TASK(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_DMA_DIMR */ +#define MCF_DMA_DIMR_TASK(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_DMA_TCR */ +#define MCF_DMA_TCR_ASTSKNUM(x) (((x)&0xF)<<0) +#define MCF_DMA_TCR_HLDINITNUM (0x20) +#define MCF_DMA_TCR_HIPRITSKEN (0x40) +#define MCF_DMA_TCR_ASTRT (0x80) +#define MCF_DMA_TCR_INITNUM(x) (((x)&0x1F)<<0x8) +#define MCF_DMA_TCR_ALWINIT (0x2000) +#define MCF_DMA_TCR_V (0x4000) +#define MCF_DMA_TCR_EN (0x8000) + +/* Bit definitions and macros for MCF_DMA_PRIOR */ +#define MCF_DMA_PRIOR_PRI(x) (((x)&0x7)<<0) +#define MCF_DMA_PRIOR_HLD (0x80) + +/* Bit definitions and macros for MCF_DMA_IMCR */ +#define MCF_DMA_IMCR_IMC16(x) (((x)&0x3)<<0) +#define MCF_DMA_IMCR_IMC17(x) (((x)&0x3)<<0x2) +#define MCF_DMA_IMCR_IMC18(x) (((x)&0x3)<<0x4) +#define MCF_DMA_IMCR_IMC19(x) (((x)&0x3)<<0x6) +#define MCF_DMA_IMCR_IMC20(x) (((x)&0x3)<<0x8) +#define MCF_DMA_IMCR_IMC21(x) (((x)&0x3)<<0xA) +#define MCF_DMA_IMCR_IMC22(x) (((x)&0x3)<<0xC) +#define MCF_DMA_IMCR_IMC23(x) (((x)&0x3)<<0xE) +#define MCF_DMA_IMCR_IMC24(x) (((x)&0x3)<<0x10) +#define MCF_DMA_IMCR_IMC25(x) (((x)&0x3)<<0x12) +#define MCF_DMA_IMCR_IMC26(x) (((x)&0x3)<<0x14) +#define MCF_DMA_IMCR_IMC27(x) (((x)&0x3)<<0x16) +#define MCF_DMA_IMCR_IMC28(x) (((x)&0x3)<<0x18) +#define MCF_DMA_IMCR_IMC29(x) (((x)&0x3)<<0x1A) +#define MCF_DMA_IMCR_IMC30(x) (((x)&0x3)<<0x1C) +#define MCF_DMA_IMCR_IMC31(x) (((x)&0x3)<<0x1E) + + +#define MCF_DMA_IMCR_IMC16_FEC0RX (0x00000000) +#define MCF_DMA_IMCR_IMC17_FEC0TX (0x00000000) +#define MCF_DMA_IMCR_IMC18_FEC0RX (0x00000020) +#define MCF_DMA_IMCR_IMC19_FEC0TX (0x00000080) +#define MCF_DMA_IMCR_IMC20_FEC1RX (0x00000100) +#define MCF_DMA_IMCR_IMC21_DREQ1 (0x00000000) +#define MCF_DMA_IMCR_IMC21_FEC1TX (0x00000400) +#define MCF_DMA_IMCR_IMC22_FEC0RX (0x00001000) +#define MCF_DMA_IMCR_IMC23_FEC0TX (0x00004000) +#define MCF_DMA_IMCR_IMC24_CTM0 (0x00010000) +#define MCF_DMA_IMCR_IMC24_FEC1RX (0x00020000) +#define MCF_DMA_IMCR_IMC25_CTM1 (0x00040000) +#define MCF_DMA_IMCR_IMC25_FEC1TX (0x00080000) +#define MCF_DMA_IMCR_IMC26_USBEP4 (0x00000000) +#define MCF_DMA_IMCR_IMC26_CTM2 (0x00200000) +#define MCF_DMA_IMCR_IMC27_USBEP5 (0x00000000) +#define MCF_DMA_IMCR_IMC27_CTM3 (0x00800000) +#define MCF_DMA_IMCR_IMC28_USBEP6 (0x00000000) +#define MCF_DMA_IMCR_IMC28_CTM4 (0x01000000) +#define MCF_DMA_IMCR_IMC28_DREQ1 (0x02000000) +#define MCF_DMA_IMCR_IMC28_PSC2RX (0x03000000) +#define MCF_DMA_IMCR_IMC29_DREQ1 (0x04000000) +#define MCF_DMA_IMCR_IMC29_CTM5 (0x08000000) +#define MCF_DMA_IMCR_IMC29_PSC2TX (0x0C000000) +#define MCF_DMA_IMCR_IMC30_FEC1RX (0x00000000) +#define MCF_DMA_IMCR_IMC30_CTM6 (0x10000000) +#define MCF_DMA_IMCR_IMC30_PSC3RX (0x30000000) +#define MCF_DMA_IMCR_IMC31_FEC1TX (0x00000000) +#define MCF_DMA_IMCR_IMC31_CTM7 (0x80000000) +#define MCF_DMA_IMCR_IMC31_PSC3TX (0xC0000000) + +/* Bit definitions and macros for MCF_DMA_TSKSZ0 */ +#define MCF_DMA_TSKSZ0_DSTSZ7(x) (((x)&0x3)<<0) +#define MCF_DMA_TSKSZ0_SRCSZ7(x) (((x)&0x3)<<0x2) +#define MCF_DMA_TSKSZ0_DSTSZ6(x) (((x)&0x3)<<0x4) +#define MCF_DMA_TSKSZ0_SRCSZ6(x) (((x)&0x3)<<0x6) +#define MCF_DMA_TSKSZ0_DSTSZ5(x) (((x)&0x3)<<0x8) +#define MCF_DMA_TSKSZ0_SRCSZ5(x) (((x)&0x3)<<0xA) +#define MCF_DMA_TSKSZ0_DSTSZ4(x) (((x)&0x3)<<0xC) +#define MCF_DMA_TSKSZ0_SRCSZ4(x) (((x)&0x3)<<0xE) +#define MCF_DMA_TSKSZ0_DSTSZ3(x) (((x)&0x3)<<0x10) +#define MCF_DMA_TSKSZ0_SRCSZ3(x) (((x)&0x3)<<0x12) +#define MCF_DMA_TSKSZ0_DSTSZ2(x) (((x)&0x3)<<0x14) +#define MCF_DMA_TSKSZ0_SRCSZ2(x) (((x)&0x3)<<0x16) +#define MCF_DMA_TSKSZ0_DSTSZ1(x) (((x)&0x3)<<0x18) +#define MCF_DMA_TSKSZ0_SRCSZ1(x) (((x)&0x3)<<0x1A) +#define MCF_DMA_TSKSZ0_DSTSZ0(x) (((x)&0x3)<<0x1C) +#define MCF_DMA_TSKSZ0_SRCSZ0(x) (((x)&0x3)<<0x1E) + +/* Bit definitions and macros for MCF_DMA_TSKSZ1 */ +#define MCF_DMA_TSKSZ1_DSTSZ15(x) (((x)&0x3)<<0) +#define MCF_DMA_TSKSZ1_SRCSZ15(x) (((x)&0x3)<<0x2) +#define MCF_DMA_TSKSZ1_DSTSZ14(x) (((x)&0x3)<<0x4) +#define MCF_DMA_TSKSZ1_SRCSZ14(x) (((x)&0x3)<<0x6) +#define MCF_DMA_TSKSZ1_DSTSZ13(x) (((x)&0x3)<<0x8) +#define MCF_DMA_TSKSZ1_SRCSZ13(x) (((x)&0x3)<<0xA) +#define MCF_DMA_TSKSZ1_DSTSZ12(x) (((x)&0x3)<<0xC) +#define MCF_DMA_TSKSZ1_SRCSZ12(x) (((x)&0x3)<<0xE) +#define MCF_DMA_TSKSZ1_DSTSZ11(x) (((x)&0x3)<<0x10) +#define MCF_DMA_TSKSZ1_SRCSZ11(x) (((x)&0x3)<<0x12) +#define MCF_DMA_TSKSZ1_DSTSZ10(x) (((x)&0x3)<<0x14) +#define MCF_DMA_TSKSZ1_SRCSZ10(x) (((x)&0x3)<<0x16) +#define MCF_DMA_TSKSZ1_DSTSZ9(x) (((x)&0x3)<<0x18) +#define MCF_DMA_TSKSZ1_SRCSZ9(x) (((x)&0x3)<<0x1A) +#define MCF_DMA_TSKSZ1_DSTSZ8(x) (((x)&0x3)<<0x1C) +#define MCF_DMA_TSKSZ1_SRCSZ8(x) (((x)&0x3)<<0x1E) + +/* Bit definitions and macros for MCF_DMA_DBGCOMP0 */ +#define MCF_DMA_DBGCOMP0_COMPARATOR_VALUE(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_DMA_DBGCOMP2 */ +#define MCF_DMA_DBGCOMP2_COMPARATOR_VALUE(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_DMA_DBGCTL */ +#define MCF_DMA_DBGCTL_I (0x2) +#define MCF_DMA_DBGCTL_E (0x4) +#define MCF_DMA_DBGCTL_AND_OR (0x80) +#define MCF_DMA_DBGCTL_COMPARATOR_TYPE_2(x) (((x)&0x7)<<0x8) +#define MCF_DMA_DBGCTL_COMPARATOR_TYPE_1(x) (((x)&0x7)<<0xB) +#define MCF_DMA_DBGCTL_B (0x4000) +#define MCF_DMA_DBGCTL_AA (0x8000) +#define MCF_DMA_DBGCTL_BLOCK_TASKS(x) (((x)&0xFFFF)<<0x10) + + +#endif /* __MCF5475_DMA_H__ */ diff --git a/BaS_gcc/tos/pci_mem/include/MCF5475_DSPI.h b/BaS_gcc/tos/pci_mem/include/MCF5475_DSPI.h new file mode 100644 index 0000000..76cac28 --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/MCF5475_DSPI.h @@ -0,0 +1,150 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_DSPI_H__ +#define __MCF5475_DSPI_H__ + + +/********************************************************************* +* +* DMA Serial Peripheral Interface (DSPI) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_DSPI_DMCR (*(volatile uint32_t*)(&_MBAR[0x8A00])) +#define MCF_DSPI_DTCR (*(volatile uint32_t*)(&_MBAR[0x8A08])) +#define MCF_DSPI_DCTAR0 (*(volatile uint32_t*)(&_MBAR[0x8A0C])) +#define MCF_DSPI_DCTAR1 (*(volatile uint32_t*)(&_MBAR[0x8A10])) +#define MCF_DSPI_DCTAR2 (*(volatile uint32_t*)(&_MBAR[0x8A14])) +#define MCF_DSPI_DCTAR3 (*(volatile uint32_t*)(&_MBAR[0x8A18])) +#define MCF_DSPI_DCTAR4 (*(volatile uint32_t*)(&_MBAR[0x8A1C])) +#define MCF_DSPI_DCTAR5 (*(volatile uint32_t*)(&_MBAR[0x8A20])) +#define MCF_DSPI_DCTAR6 (*(volatile uint32_t*)(&_MBAR[0x8A24])) +#define MCF_DSPI_DCTAR7 (*(volatile uint32_t*)(&_MBAR[0x8A28])) +#define MCF_DSPI_DSR (*(volatile uint32_t*)(&_MBAR[0x8A2C])) +#define MCF_DSPI_DIRSR (*(volatile uint32_t*)(&_MBAR[0x8A30])) +#define MCF_DSPI_DTFR (*(volatile uint32_t*)(&_MBAR[0x8A34])) +#define MCF_DSPI_DRFR (*(volatile uint32_t*)(&_MBAR[0x8A38])) +#define MCF_DSPI_DTFDR0 (*(volatile uint32_t*)(&_MBAR[0x8A3C])) +#define MCF_DSPI_DTFDR1 (*(volatile uint32_t*)(&_MBAR[0x8A40])) +#define MCF_DSPI_DTFDR2 (*(volatile uint32_t*)(&_MBAR[0x8A44])) +#define MCF_DSPI_DTFDR3 (*(volatile uint32_t*)(&_MBAR[0x8A48])) +#define MCF_DSPI_DRFDR0 (*(volatile uint32_t*)(&_MBAR[0x8A7C])) +#define MCF_DSPI_DRFDR1 (*(volatile uint32_t*)(&_MBAR[0x8A80])) +#define MCF_DSPI_DRFDR2 (*(volatile uint32_t*)(&_MBAR[0x8A84])) +#define MCF_DSPI_DRFDR3 (*(volatile uint32_t*)(&_MBAR[0x8A88])) +#define MCF_DSPI_DCTAR(x) (*(volatile uint32_t*)(&_MBAR[0x8A0C + ((x)*0x4)])) +#define MCF_DSPI_DTFDR(x) (*(volatile uint32_t*)(&_MBAR[0x8A3C + ((x)*0x4)])) +#define MCF_DSPI_DRFDR(x) (*(volatile uint32_t*)(&_MBAR[0x8A7C + ((x)*0x4)])) + + +/* Bit definitions and macros for MCF_DSPI_DMCR */ +#define MCF_DSPI_DMCR_HALT (0x1) +#define MCF_DSPI_DMCR_SMPL_PT(x) (((x)&0x3)<<0x8) +#define MCF_DSPI_DMCR_SMPL_PT_0CLK (0) +#define MCF_DSPI_DMCR_SMPL_PT_1CLK (0x100) +#define MCF_DSPI_DMCR_SMPL_PT_2CLK (0x200) +#define MCF_DSPI_DMCR_CRXF (0x400) +#define MCF_DSPI_DMCR_CTXF (0x800) +#define MCF_DSPI_DMCR_DRXF (0x1000) +#define MCF_DSPI_DMCR_DTXF (0x2000) +#define MCF_DSPI_DMCR_CSIS0 (0x10000) +#define MCF_DSPI_DMCR_CSIS2 (0x40000) +#define MCF_DSPI_DMCR_CSIS3 (0x80000) +#define MCF_DSPI_DMCR_CSIS5 (0x200000) +#define MCF_DSPI_DMCR_ROOE (0x1000000) +#define MCF_DSPI_DMCR_PCSSE (0x2000000) +#define MCF_DSPI_DMCR_MTFE (0x4000000) +#define MCF_DSPI_DMCR_FRZ (0x8000000) +#define MCF_DSPI_DMCR_DCONF(x) (((x)&0x3)<<0x1C) +#define MCF_DSPI_DMCR_CSCK (0x40000000) +#define MCF_DSPI_DMCR_MSTR (0x80000000) + +/* Bit definitions and macros for MCF_DSPI_DTCR */ +#define MCF_DSPI_DTCR_SPI_TCNT(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_DSPI_DCTAR */ +#define MCF_DSPI_DCTAR_BR(x) (((x)&0xF)<<0) +#define MCF_DSPI_DCTAR_DT(x) (((x)&0xF)<<0x4) +#define MCF_DSPI_DCTAR_ASC(x) (((x)&0xF)<<0x8) +#define MCF_DSPI_DCTAR_CSSCK(x) (((x)&0xF)<<0xC) +#define MCF_DSPI_DCTAR_PBR(x) (((x)&0x3)<<0x10) +#define MCF_DSPI_DCTAR_PBR_1CLK (0) +#define MCF_DSPI_DCTAR_PBR_3CLK (0x10000) +#define MCF_DSPI_DCTAR_PBR_5CLK (0x20000) +#define MCF_DSPI_DCTAR_PBR_7CLK (0x30000) +#define MCF_DSPI_DCTAR_PDT(x) (((x)&0x3)<<0x12) +#define MCF_DSPI_DCTAR_PDT_1CLK (0) +#define MCF_DSPI_DCTAR_PDT_3CLK (0x40000) +#define MCF_DSPI_DCTAR_PDT_5CLK (0x80000) +#define MCF_DSPI_DCTAR_PDT_7CLK (0xC0000) +#define MCF_DSPI_DCTAR_PASC(x) (((x)&0x3)<<0x14) +#define MCF_DSPI_DCTAR_PASC_1CLK (0) +#define MCF_DSPI_DCTAR_PASC_3CLK (0x100000) +#define MCF_DSPI_DCTAR_PASC_5CLK (0x200000) +#define MCF_DSPI_DCTAR_PASC_7CLK (0x300000) +#define MCF_DSPI_DCTAR_PCSSCK(x) (((x)&0x3)<<0x16) +#define MCF_DSPI_DCTAR_LSBFE (0x1000000) +#define MCF_DSPI_DCTAR_CPHA (0x2000000) +#define MCF_DSPI_DCTAR_CPOL (0x4000000) +#define MCF_DSPI_DCTAR_TRSZ(x) (((x)&0xF)<<0x1B) + +/* Bit definitions and macros for MCF_DSPI_DSR */ +#define MCF_DSPI_DSR_RXPTR(x) (((x)&0xF)<<0) +#define MCF_DSPI_DSR_RXCTR(x) (((x)&0xF)<<0x4) +#define MCF_DSPI_DSR_TXPTR(x) (((x)&0xF)<<0x8) +#define MCF_DSPI_DSR_TXCTR(x) (((x)&0xF)<<0xC) +#define MCF_DSPI_DSR_RFDF (0x20000) +#define MCF_DSPI_DSR_RFOF (0x80000) +#define MCF_DSPI_DSR_TFFF (0x2000000) +#define MCF_DSPI_DSR_TFUF (0x8000000) +#define MCF_DSPI_DSR_EOQF (0x10000000) +#define MCF_DSPI_DSR_TXRXS (0x40000000) +#define MCF_DSPI_DSR_TCF (0x80000000) + +/* Bit definitions and macros for MCF_DSPI_DIRSR */ +#define MCF_DSPI_DIRSR_RFDFS (0x10000) +#define MCF_DSPI_DIRSR_RFDFE (0x20000) +#define MCF_DSPI_DIRSR_RFOFE (0x80000) +#define MCF_DSPI_DIRSR_TFFFS (0x1000000) +#define MCF_DSPI_DIRSR_TFFFE (0x2000000) +#define MCF_DSPI_DIRSR_TFUFE (0x8000000) +#define MCF_DSPI_DIRSR_EOQFE (0x10000000) +#define MCF_DSPI_DIRSR_TCFE (0x80000000) + +/* Bit definitions and macros for MCF_DSPI_DTFR */ +#define MCF_DSPI_DTFR_TXDATA(x) (((x)&0xFFFF)<<0) +#define MCF_DSPI_DTFR_CS0 (0x10000) +#define MCF_DSPI_DTFR_CS2 (0x40000) +#define MCF_DSPI_DTFR_CS3 (0x80000) +#define MCF_DSPI_DTFR_CS5 (0x200000) +#define MCF_DSPI_DTFR_CTCNT (0x4000000) +#define MCF_DSPI_DTFR_EOQ (0x8000000) +#define MCF_DSPI_DTFR_CTAS(x) (((x)&0x7)<<0x1C) +#define MCF_DSPI_DTFR_CONT (0x80000000) + +/* Bit definitions and macros for MCF_DSPI_DRFR */ +#define MCF_DSPI_DRFR_RXDATA(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_DSPI_DTFDR */ +#define MCF_DSPI_DTFDR_TXDATA(x) (((x)&0xFFFF)<<0) +#define MCF_DSPI_DTFDR_TXCMD(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_DSPI_DRFDR */ +#define MCF_DSPI_DRFDR_RXDATA(x) (((x)&0xFFFF)<<0) + + +#endif /* __MCF5475_DSPI_H__ */ diff --git a/BaS_gcc/tos/pci_mem/include/MCF5475_EPORT.h b/BaS_gcc/tos/pci_mem/include/MCF5475_EPORT.h new file mode 100644 index 0000000..6506196 --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/MCF5475_EPORT.h @@ -0,0 +1,123 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_EPORT_H__ +#define __MCF5475_EPORT_H__ + + +/********************************************************************* +* +* Edge Port Module (EPORT) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_EPORT_EPPAR (*(volatile uint16_t*)(&_MBAR[0xF00])) +#define MCF_EPORT_EPDDR (*(volatile uint8_t *)(&_MBAR[0xF04])) +#define MCF_EPORT_EPIER (*(volatile uint8_t *)(&_MBAR[0xF05])) +#define MCF_EPORT_EPDR (*(volatile uint8_t *)(&_MBAR[0xF08])) +#define MCF_EPORT_EPPDR (*(volatile uint8_t *)(&_MBAR[0xF09])) +#define MCF_EPORT_EPFR (*(volatile uint8_t *)(&_MBAR[0xF0C])) + + + +/* Bit definitions and macros for MCF_EPORT_EPPAR */ +#define MCF_EPORT_EPPAR_EPPA1(x) (((x)&0x3)<<0x2) +#define MCF_EPORT_EPPAR_EPPA1_LEVEL (0) +#define MCF_EPORT_EPPAR_EPPA1_RISING (0x4) +#define MCF_EPORT_EPPAR_EPPA1_FALLING (0x8) +#define MCF_EPORT_EPPAR_EPPA1_BOTH (0xC) +#define MCF_EPORT_EPPAR_EPPA2(x) (((x)&0x3)<<0x4) +#define MCF_EPORT_EPPAR_EPPA2_LEVEL (0) +#define MCF_EPORT_EPPAR_EPPA2_RISING (0x10) +#define MCF_EPORT_EPPAR_EPPA2_FALLING (0x20) +#define MCF_EPORT_EPPAR_EPPA2_BOTH (0x30) +#define MCF_EPORT_EPPAR_EPPA3(x) (((x)&0x3)<<0x6) +#define MCF_EPORT_EPPAR_EPPA3_LEVEL (0) +#define MCF_EPORT_EPPAR_EPPA3_RISING (0x40) +#define MCF_EPORT_EPPAR_EPPA3_FALLING (0x80) +#define MCF_EPORT_EPPAR_EPPA3_BOTH (0xC0) +#define MCF_EPORT_EPPAR_EPPA4(x) (((x)&0x3)<<0x8) +#define MCF_EPORT_EPPAR_EPPA4_LEVEL (0) +#define MCF_EPORT_EPPAR_EPPA4_RISING (0x100) +#define MCF_EPORT_EPPAR_EPPA4_FALLING (0x200) +#define MCF_EPORT_EPPAR_EPPA4_BOTH (0x300) +#define MCF_EPORT_EPPAR_EPPA5(x) (((x)&0x3)<<0xA) +#define MCF_EPORT_EPPAR_EPPA5_LEVEL (0) +#define MCF_EPORT_EPPAR_EPPA5_RISING (0x400) +#define MCF_EPORT_EPPAR_EPPA5_FALLING (0x800) +#define MCF_EPORT_EPPAR_EPPA5_BOTH (0xC00) +#define MCF_EPORT_EPPAR_EPPA6(x) (((x)&0x3)<<0xC) +#define MCF_EPORT_EPPAR_EPPA6_LEVEL (0) +#define MCF_EPORT_EPPAR_EPPA6_RISING (0x1000) +#define MCF_EPORT_EPPAR_EPPA6_FALLING (0x2000) +#define MCF_EPORT_EPPAR_EPPA6_BOTH (0x3000) +#define MCF_EPORT_EPPAR_EPPA7(x) (((x)&0x3)<<0xE) +#define MCF_EPORT_EPPAR_EPPA7_LEVEL (0) +#define MCF_EPORT_EPPAR_EPPA7_RISING (0x4000) +#define MCF_EPORT_EPPAR_EPPA7_FALLING (0x8000) +#define MCF_EPORT_EPPAR_EPPA7_BOTH (0xC000) +#define MCF_EPORT_EPPAR_LEVEL (0) +#define MCF_EPORT_EPPAR_RISING (0x1) +#define MCF_EPORT_EPPAR_FALLING (0x2) +#define MCF_EPORT_EPPAR_BOTH (0x3) + +/* Bit definitions and macros for MCF_EPORT_EPDDR */ +#define MCF_EPORT_EPDDR_EPDD1 (0x2) +#define MCF_EPORT_EPDDR_EPDD2 (0x4) +#define MCF_EPORT_EPDDR_EPDD3 (0x8) +#define MCF_EPORT_EPDDR_EPDD4 (0x10) +#define MCF_EPORT_EPDDR_EPDD5 (0x20) +#define MCF_EPORT_EPDDR_EPDD6 (0x40) +#define MCF_EPORT_EPDDR_EPDD7 (0x80) + +/* Bit definitions and macros for MCF_EPORT_EPIER */ +#define MCF_EPORT_EPIER_EPIE1 (0x2) +#define MCF_EPORT_EPIER_EPIE2 (0x4) +#define MCF_EPORT_EPIER_EPIE3 (0x8) +#define MCF_EPORT_EPIER_EPIE4 (0x10) +#define MCF_EPORT_EPIER_EPIE5 (0x20) +#define MCF_EPORT_EPIER_EPIE6 (0x40) +#define MCF_EPORT_EPIER_EPIE7 (0x80) + +/* Bit definitions and macros for MCF_EPORT_EPDR */ +#define MCF_EPORT_EPDR_EPD1 (0x2) +#define MCF_EPORT_EPDR_EPD2 (0x4) +#define MCF_EPORT_EPDR_EPD3 (0x8) +#define MCF_EPORT_EPDR_EPD4 (0x10) +#define MCF_EPORT_EPDR_EPD5 (0x20) +#define MCF_EPORT_EPDR_EPD6 (0x40) +#define MCF_EPORT_EPDR_EPD7 (0x80) + +/* Bit definitions and macros for MCF_EPORT_EPPDR */ +#define MCF_EPORT_EPPDR_EPPD1 (0x2) +#define MCF_EPORT_EPPDR_EPPD2 (0x4) +#define MCF_EPORT_EPPDR_EPPD3 (0x8) +#define MCF_EPORT_EPPDR_EPPD4 (0x10) +#define MCF_EPORT_EPPDR_EPPD5 (0x20) +#define MCF_EPORT_EPPDR_EPPD6 (0x40) +#define MCF_EPORT_EPPDR_EPPD7 (0x80) + +/* Bit definitions and macros for MCF_EPORT_EPFR */ +#define MCF_EPORT_EPFR_EPF1 (0x2) +#define MCF_EPORT_EPFR_EPF2 (0x4) +#define MCF_EPORT_EPFR_EPF3 (0x8) +#define MCF_EPORT_EPFR_EPF4 (0x10) +#define MCF_EPORT_EPFR_EPF5 (0x20) +#define MCF_EPORT_EPFR_EPF6 (0x40) +#define MCF_EPORT_EPFR_EPF7 (0x80) + + +#endif /* __MCF5475_EPORT_H__ */ diff --git a/BaS_gcc/tos/pci_mem/include/MCF5475_FBCS.h b/BaS_gcc/tos/pci_mem/include/MCF5475_FBCS.h new file mode 100644 index 0000000..37daf00 --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/MCF5475_FBCS.h @@ -0,0 +1,100 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_FBCS_H__ +#define __MCF5475_FBCS_H__ + + +/********************************************************************* +* +* FlexBus Chip Select Module (FBCS) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_FBCS0_CSAR (*(volatile uint32_t*)(&_MBAR[0x500])) +#define MCF_FBCS0_CSMR (*(volatile uint32_t*)(&_MBAR[0x504])) +#define MCF_FBCS0_CSCR (*(volatile uint32_t*)(&_MBAR[0x508])) + +#define MCF_FBCS1_CSAR (*(volatile uint32_t*)(&_MBAR[0x50C])) +#define MCF_FBCS1_CSMR (*(volatile uint32_t*)(&_MBAR[0x510])) +#define MCF_FBCS1_CSCR (*(volatile uint32_t*)(&_MBAR[0x514])) + +#define MCF_FBCS2_CSAR (*(volatile uint32_t*)(&_MBAR[0x518])) +#define MCF_FBCS2_CSMR (*(volatile uint32_t*)(&_MBAR[0x51C])) +#define MCF_FBCS2_CSCR (*(volatile uint32_t*)(&_MBAR[0x520])) + +#define MCF_FBCS3_CSAR (*(volatile uint32_t*)(&_MBAR[0x524])) +#define MCF_FBCS3_CSMR (*(volatile uint32_t*)(&_MBAR[0x528])) +#define MCF_FBCS3_CSCR (*(volatile uint32_t*)(&_MBAR[0x52C])) + +#define MCF_FBCS4_CSAR (*(volatile uint32_t*)(&_MBAR[0x530])) +#define MCF_FBCS4_CSMR (*(volatile uint32_t*)(&_MBAR[0x534])) +#define MCF_FBCS4_CSCR (*(volatile uint32_t*)(&_MBAR[0x538])) + +#define MCF_FBCS5_CSAR (*(volatile uint32_t*)(&_MBAR[0x53C])) +#define MCF_FBCS5_CSMR (*(volatile uint32_t*)(&_MBAR[0x540])) +#define MCF_FBCS5_CSCR (*(volatile uint32_t*)(&_MBAR[0x544])) + +#define MCF_FBCS_CSAR(x) (*(volatile uint32_t*)(&_MBAR[0x500 + ((x)*0xC)])) +#define MCF_FBCS_CSMR(x) (*(volatile uint32_t*)(&_MBAR[0x504 + ((x)*0xC)])) +#define MCF_FBCS_CSCR(x) (*(volatile uint32_t*)(&_MBAR[0x508 + ((x)*0xC)])) + + +/* Bit definitions and macros for MCF_FBCS_CSAR */ +#define MCF_FBCS_CSAR_BA(x) ((x)&0xFFFF0000) + +/* Bit definitions and macros for MCF_FBCS_CSMR */ +#define MCF_FBCS_CSMR_V (0x1) +#define MCF_FBCS_CSMR_WP (0x100) +#define MCF_FBCS_CSMR_BAM(x) (((x)&0xFFFF)<<0x10) +#define MCF_FBCS_CSMR_BAM_4G (0xFFFF0000) +#define MCF_FBCS_CSMR_BAM_2G (0x7FFF0000) +#define MCF_FBCS_CSMR_BAM_1G (0x3FFF0000) +#define MCF_FBCS_CSMR_BAM_1024M (0x3FFF0000) +#define MCF_FBCS_CSMR_BAM_512M (0x1FFF0000) +#define MCF_FBCS_CSMR_BAM_256M (0xFFF0000) +#define MCF_FBCS_CSMR_BAM_128M (0x7FF0000) +#define MCF_FBCS_CSMR_BAM_64M (0x3FF0000) +#define MCF_FBCS_CSMR_BAM_32M (0x1FF0000) +#define MCF_FBCS_CSMR_BAM_16M (0xFF0000) +#define MCF_FBCS_CSMR_BAM_8M (0x7F0000) +#define MCF_FBCS_CSMR_BAM_4M (0x3F0000) +#define MCF_FBCS_CSMR_BAM_2M (0x1F0000) +#define MCF_FBCS_CSMR_BAM_1M (0xF0000) +#define MCF_FBCS_CSMR_BAM_1024K (0xF0000) +#define MCF_FBCS_CSMR_BAM_512K (0x70000) +#define MCF_FBCS_CSMR_BAM_256K (0x30000) +#define MCF_FBCS_CSMR_BAM_128K (0x10000) +#define MCF_FBCS_CSMR_BAM_64K (0) + +/* Bit definitions and macros for MCF_FBCS_CSCR */ +#define MCF_FBCS_CSCR_BSTW (0x8) +#define MCF_FBCS_CSCR_BSTR (0x10) +#define MCF_FBCS_CSCR_BEM (0x20) +#define MCF_FBCS_CSCR_PS(x) (((x)&0x3)<<0x6) +#define MCF_FBCS_CSCR_PS_32 (0) +#define MCF_FBCS_CSCR_PS_8 (0x40) +#define MCF_FBCS_CSCR_PS_16 (0x80) +#define MCF_FBCS_CSCR_AA (0x100) +#define MCF_FBCS_CSCR_WS(x) (((x)&0x3F)<<0xA) +#define MCF_FBCS_CSCR_WRAH(x) (((x)&0x3)<<0x10) +#define MCF_FBCS_CSCR_RDAH(x) (((x)&0x3)<<0x12) +#define MCF_FBCS_CSCR_ASET(x) (((x)&0x3)<<0x14) +#define MCF_FBCS_CSCR_SWSEN (0x800000) +#define MCF_FBCS_CSCR_SWS(x) (((x)&0x3F)<<0x1A) + + +#endif /* __MCF5475_FBCS_H__ */ diff --git a/BaS_gcc/tos/pci_mem/include/MCF5475_FEC.h b/BaS_gcc/tos/pci_mem/include/MCF5475_FEC.h new file mode 100644 index 0000000..fdd9403 --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/MCF5475_FEC.h @@ -0,0 +1,680 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_FEC_H__ +#define __MCF5475_FEC_H__ + + +/********************************************************************* +* +* Fast Ethernet Controller(FEC) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_FEC0_EIR (*(volatile uint32_t*)(&_MBAR[0x9004])) +#define MCF_FEC0_EIMR (*(volatile uint32_t*)(&_MBAR[0x9008])) +#define MCF_FEC0_ECR (*(volatile uint32_t*)(&_MBAR[0x9024])) +#define MCF_FEC0_MMFR (*(volatile uint32_t*)(&_MBAR[0x9040])) +#define MCF_FEC0_MSCR (*(volatile uint32_t*)(&_MBAR[0x9044])) +#define MCF_FEC0_MIBC (*(volatile uint32_t*)(&_MBAR[0x9064])) +#define MCF_FEC0_RCR (*(volatile uint32_t*)(&_MBAR[0x9084])) +#define MCF_FEC0_RHR (*(volatile uint32_t*)(&_MBAR[0x9088])) +#define MCF_FEC0_TCR (*(volatile uint32_t*)(&_MBAR[0x90C4])) +#define MCF_FEC0_PALR (*(volatile uint32_t*)(&_MBAR[0x90E4])) +#define MCF_FEC0_PAHR (*(volatile uint32_t*)(&_MBAR[0x90E8])) +#define MCF_FEC0_OPD (*(volatile uint32_t*)(&_MBAR[0x90EC])) +#define MCF_FEC0_IAUR (*(volatile uint32_t*)(&_MBAR[0x9118])) +#define MCF_FEC0_IALR (*(volatile uint32_t*)(&_MBAR[0x911C])) +#define MCF_FEC0_GAUR (*(volatile uint32_t*)(&_MBAR[0x9120])) +#define MCF_FEC0_GALR (*(volatile uint32_t*)(&_MBAR[0x9124])) +#define MCF_FEC0_FECTFWR (*(volatile uint32_t*)(&_MBAR[0x9144])) +#define MCF_FEC0_FECRFDR (*(volatile uint32_t*)(&_MBAR[0x9184])) +#define MCF_FEC0_FECRFSR (*(volatile uint32_t*)(&_MBAR[0x9188])) +#define MCF_FEC0_FECRFCR (*(volatile uint32_t*)(&_MBAR[0x918C])) +#define MCF_FEC0_FECRLRFP (*(volatile uint32_t*)(&_MBAR[0x9190])) +#define MCF_FEC0_FECRLWFP (*(volatile uint32_t*)(&_MBAR[0x9194])) +#define MCF_FEC0_FECRFAR (*(volatile uint32_t*)(&_MBAR[0x9198])) +#define MCF_FEC0_FECRFRP (*(volatile uint32_t*)(&_MBAR[0x919C])) +#define MCF_FEC0_FECRFWP (*(volatile uint32_t*)(&_MBAR[0x91A0])) +#define MCF_FEC0_FECTFDR (*(volatile uint32_t*)(&_MBAR[0x91A4])) +#define MCF_FEC0_FECTFSR (*(volatile uint32_t*)(&_MBAR[0x91A8])) +#define MCF_FEC0_FECTFCR (*(volatile uint32_t*)(&_MBAR[0x91AC])) +#define MCF_FEC0_FECTLRFP (*(volatile uint32_t*)(&_MBAR[0x91B0])) +#define MCF_FEC0_FECTLWFP (*(volatile uint32_t*)(&_MBAR[0x91B4])) +#define MCF_FEC0_FECTFAR (*(volatile uint32_t*)(&_MBAR[0x91B8])) +#define MCF_FEC0_FECTFRP (*(volatile uint32_t*)(&_MBAR[0x91BC])) +#define MCF_FEC0_FECTFWP (*(volatile uint32_t*)(&_MBAR[0x91C0])) +#define MCF_FEC0_FECFRST (*(volatile uint32_t*)(&_MBAR[0x91C4])) +#define MCF_FEC0_FECCTCWR (*(volatile uint32_t*)(&_MBAR[0x91C8])) +#define MCF_FEC0_RMON_T_DROP (*(volatile uint32_t*)(&_MBAR[0x9200])) +#define MCF_FEC0_RMON_T_PACKETS (*(volatile uint32_t*)(&_MBAR[0x9204])) +#define MCF_FEC0_RMON_T_BC_PKT (*(volatile uint32_t*)(&_MBAR[0x9208])) +#define MCF_FEC0_RMON_T_MC_PKT (*(volatile uint32_t*)(&_MBAR[0x920C])) +#define MCF_FEC0_RMON_T_CRC_ALIGN (*(volatile uint32_t*)(&_MBAR[0x9210])) +#define MCF_FEC0_RMON_T_UNDERSIZE (*(volatile uint32_t*)(&_MBAR[0x9214])) +#define MCF_FEC0_RMON_T_OVERSIZE (*(volatile uint32_t*)(&_MBAR[0x9218])) +#define MCF_FEC0_RMON_T_FRAG (*(volatile uint32_t*)(&_MBAR[0x921C])) +#define MCF_FEC0_RMON_T_JAB (*(volatile uint32_t*)(&_MBAR[0x9220])) +#define MCF_FEC0_RMON_T_COL (*(volatile uint32_t*)(&_MBAR[0x9224])) +#define MCF_FEC0_RMON_T_P64 (*(volatile uint32_t*)(&_MBAR[0x9228])) +#define MCF_FEC0_RMON_T_P65TO127 (*(volatile uint32_t*)(&_MBAR[0x922C])) +#define MCF_FEC0_RMON_T_P128TO255 (*(volatile uint32_t*)(&_MBAR[0x9230])) +#define MCF_FEC0_RMON_T_P256TO511 (*(volatile uint32_t*)(&_MBAR[0x9234])) +#define MCF_FEC0_RMON_T_P512TO1023 (*(volatile uint32_t*)(&_MBAR[0x9238])) +#define MCF_FEC0_RMON_T_P1024TO2047 (*(volatile uint32_t*)(&_MBAR[0x923C])) +#define MCF_FEC0_RMON_T_P_GTE2048 (*(volatile uint32_t*)(&_MBAR[0x9240])) +#define MCF_FEC0_RMON_T_OCTETS (*(volatile uint32_t*)(&_MBAR[0x9244])) +#define MCF_FEC0_IEEE_T_DROP (*(volatile uint32_t*)(&_MBAR[0x9248])) +#define MCF_FEC0_IEEE_T_FRAME_OK (*(volatile uint32_t*)(&_MBAR[0x924C])) +#define MCF_FEC0_IEEE_T_1COL (*(volatile uint32_t*)(&_MBAR[0x9250])) +#define MCF_FEC0_IEEE_T_MCOL (*(volatile uint32_t*)(&_MBAR[0x9254])) +#define MCF_FEC0_IEEE_T_DEF (*(volatile uint32_t*)(&_MBAR[0x9258])) +#define MCF_FEC0_IEEE_T_LCOL (*(volatile uint32_t*)(&_MBAR[0x925C])) +#define MCF_FEC0_IEEE_T_EXCOL (*(volatile uint32_t*)(&_MBAR[0x9260])) +#define MCF_FEC0_IEEE_T_MACERR (*(volatile uint32_t*)(&_MBAR[0x9264])) +#define MCF_FEC0_IEEE_T_CSERR (*(volatile uint32_t*)(&_MBAR[0x9268])) +#define MCF_FEC0_IEEE_T_SQE (*(volatile uint32_t*)(&_MBAR[0x926C])) +#define MCF_FEC0_IEEE_T_FDXFC (*(volatile uint32_t*)(&_MBAR[0x9270])) +#define MCF_FEC0_IEEE_T_OCTETS_OK (*(volatile uint32_t*)(&_MBAR[0x9274])) +#define MCF_FEC0_RMON_R_DROP (*(volatile uint32_t*)(&_MBAR[0x9280])) +#define MCF_FEC0_RMON_R_PACKETS (*(volatile uint32_t*)(&_MBAR[0x9284])) +#define MCF_FEC0_RMON_R_BC_PKT (*(volatile uint32_t*)(&_MBAR[0x9288])) +#define MCF_FEC0_RMON_R_MC_PKT (*(volatile uint32_t*)(&_MBAR[0x928C])) +#define MCF_FEC0_RMON_R_CRC_ALIGN (*(volatile uint32_t*)(&_MBAR[0x9290])) +#define MCF_FEC0_RMON_R_UNDERSIZE (*(volatile uint32_t*)(&_MBAR[0x9294])) +#define MCF_FEC0_RMON_R_OVERSIZE (*(volatile uint32_t*)(&_MBAR[0x9298])) +#define MCF_FEC0_RMON_R_FRAG (*(volatile uint32_t*)(&_MBAR[0x929C])) +#define MCF_FEC0_RMON_R_JAB (*(volatile uint32_t*)(&_MBAR[0x92A0])) +#define MCF_FEC0_RMON_R_RESVD_0 (*(volatile uint32_t*)(&_MBAR[0x92A4])) +#define MCF_FEC0_RMON_R_P64 (*(volatile uint32_t*)(&_MBAR[0x92A8])) +#define MCF_FEC0_RMON_R_P65TO127 (*(volatile uint32_t*)(&_MBAR[0x92AC])) +#define MCF_FEC0_RMON_R_P128TO255 (*(volatile uint32_t*)(&_MBAR[0x92B0])) +#define MCF_FEC0_RMON_R_P256TO511 (*(volatile uint32_t*)(&_MBAR[0x92B4])) +#define MCF_FEC0_RMON_R_P512TO1023 (*(volatile uint32_t*)(&_MBAR[0x92B8])) +#define MCF_FEC0_RMON_R_P1024TO2047 (*(volatile uint32_t*)(&_MBAR[0x92BC])) +#define MCF_FEC0_RMON_R_P_GTE2048 (*(volatile uint32_t*)(&_MBAR[0x92C0])) +#define MCF_FEC0_RMON_R_OCTETS (*(volatile uint32_t*)(&_MBAR[0x92C4])) +#define MCF_FEC0_IEEE_R_DROP (*(volatile uint32_t*)(&_MBAR[0x92C8])) +#define MCF_FEC0_IEEE_R_FRAME_OK (*(volatile uint32_t*)(&_MBAR[0x92CC])) +#define MCF_FEC0_IEEE_R_CRC (*(volatile uint32_t*)(&_MBAR[0x92D0])) +#define MCF_FEC0_IEEE_R_ALIGN (*(volatile uint32_t*)(&_MBAR[0x92D4])) +#define MCF_FEC0_IEEE_R_MACERR (*(volatile uint32_t*)(&_MBAR[0x92D8])) +#define MCF_FEC0_IEEE_R_FDXFC (*(volatile uint32_t*)(&_MBAR[0x92DC])) +#define MCF_FEC0_IEEE_R_OCTETS_OK (*(volatile uint32_t*)(&_MBAR[0x92E0])) + +#define MCF_FEC1_EIR (*(volatile uint32_t*)(&_MBAR[0x9804])) +#define MCF_FEC1_EIMR (*(volatile uint32_t*)(&_MBAR[0x9808])) +#define MCF_FEC1_ECR (*(volatile uint32_t*)(&_MBAR[0x9824])) +#define MCF_FEC1_MMFR (*(volatile uint32_t*)(&_MBAR[0x9840])) +#define MCF_FEC1_MSCR (*(volatile uint32_t*)(&_MBAR[0x9844])) +#define MCF_FEC1_MIBC (*(volatile uint32_t*)(&_MBAR[0x9864])) +#define MCF_FEC1_RCR (*(volatile uint32_t*)(&_MBAR[0x9884])) +#define MCF_FEC1_RHR (*(volatile uint32_t*)(&_MBAR[0x9888])) +#define MCF_FEC1_TCR (*(volatile uint32_t*)(&_MBAR[0x98C4])) +#define MCF_FEC1_PALR (*(volatile uint32_t*)(&_MBAR[0x98E4])) +#define MCF_FEC1_PAHR (*(volatile uint32_t*)(&_MBAR[0x98E8])) +#define MCF_FEC1_OPD (*(volatile uint32_t*)(&_MBAR[0x98EC])) +#define MCF_FEC1_IAUR (*(volatile uint32_t*)(&_MBAR[0x9918])) +#define MCF_FEC1_IALR (*(volatile uint32_t*)(&_MBAR[0x991C])) +#define MCF_FEC1_GAUR (*(volatile uint32_t*)(&_MBAR[0x9920])) +#define MCF_FEC1_GALR (*(volatile uint32_t*)(&_MBAR[0x9924])) +#define MCF_FEC1_FECTFWR (*(volatile uint32_t*)(&_MBAR[0x9944])) +#define MCF_FEC1_FECRFDR (*(volatile uint32_t*)(&_MBAR[0x9984])) +#define MCF_FEC1_FECRFSR (*(volatile uint32_t*)(&_MBAR[0x9988])) +#define MCF_FEC1_FECRFCR (*(volatile uint32_t*)(&_MBAR[0x998C])) +#define MCF_FEC1_FECRLRFP (*(volatile uint32_t*)(&_MBAR[0x9990])) +#define MCF_FEC1_FECRLWFP (*(volatile uint32_t*)(&_MBAR[0x9994])) +#define MCF_FEC1_FECRFAR (*(volatile uint32_t*)(&_MBAR[0x9998])) +#define MCF_FEC1_FECRFRP (*(volatile uint32_t*)(&_MBAR[0x999C])) +#define MCF_FEC1_FECRFWP (*(volatile uint32_t*)(&_MBAR[0x99A0])) +#define MCF_FEC1_FECTFDR (*(volatile uint32_t*)(&_MBAR[0x99A4])) +#define MCF_FEC1_FECTFSR (*(volatile uint32_t*)(&_MBAR[0x99A8])) +#define MCF_FEC1_FECTFCR (*(volatile uint32_t*)(&_MBAR[0x99AC])) +#define MCF_FEC1_FECTLRFP (*(volatile uint32_t*)(&_MBAR[0x99B0])) +#define MCF_FEC1_FECTLWFP (*(volatile uint32_t*)(&_MBAR[0x99B4])) +#define MCF_FEC1_FECTFAR (*(volatile uint32_t*)(&_MBAR[0x99B8])) +#define MCF_FEC1_FECTFRP (*(volatile uint32_t*)(&_MBAR[0x99BC])) +#define MCF_FEC1_FECTFWP (*(volatile uint32_t*)(&_MBAR[0x99C0])) +#define MCF_FEC1_FECFRST (*(volatile uint32_t*)(&_MBAR[0x99C4])) +#define MCF_FEC1_FECCTCWR (*(volatile uint32_t*)(&_MBAR[0x99C8])) +#define MCF_FEC1_RMON_T_DROP (*(volatile uint32_t*)(&_MBAR[0x9A00])) +#define MCF_FEC1_RMON_T_PACKETS (*(volatile uint32_t*)(&_MBAR[0x9A04])) +#define MCF_FEC1_RMON_T_BC_PKT (*(volatile uint32_t*)(&_MBAR[0x9A08])) +#define MCF_FEC1_RMON_T_MC_PKT (*(volatile uint32_t*)(&_MBAR[0x9A0C])) +#define MCF_FEC1_RMON_T_CRC_ALIGN (*(volatile uint32_t*)(&_MBAR[0x9A10])) +#define MCF_FEC1_RMON_T_UNDERSIZE (*(volatile uint32_t*)(&_MBAR[0x9A14])) +#define MCF_FEC1_RMON_T_OVERSIZE (*(volatile uint32_t*)(&_MBAR[0x9A18])) +#define MCF_FEC1_RMON_T_FRAG (*(volatile uint32_t*)(&_MBAR[0x9A1C])) +#define MCF_FEC1_RMON_T_JAB (*(volatile uint32_t*)(&_MBAR[0x9A20])) +#define MCF_FEC1_RMON_T_COL (*(volatile uint32_t*)(&_MBAR[0x9A24])) +#define MCF_FEC1_RMON_T_P64 (*(volatile uint32_t*)(&_MBAR[0x9A28])) +#define MCF_FEC1_RMON_T_P65TO127 (*(volatile uint32_t*)(&_MBAR[0x9A2C])) +#define MCF_FEC1_RMON_T_P128TO255 (*(volatile uint32_t*)(&_MBAR[0x9A30])) +#define MCF_FEC1_RMON_T_P256TO511 (*(volatile uint32_t*)(&_MBAR[0x9A34])) +#define MCF_FEC1_RMON_T_P512TO1023 (*(volatile uint32_t*)(&_MBAR[0x9A38])) +#define MCF_FEC1_RMON_T_P1024TO2047 (*(volatile uint32_t*)(&_MBAR[0x9A3C])) +#define MCF_FEC1_RMON_T_P_GTE2048 (*(volatile uint32_t*)(&_MBAR[0x9A40])) +#define MCF_FEC1_RMON_T_OCTETS (*(volatile uint32_t*)(&_MBAR[0x9A44])) +#define MCF_FEC1_IEEE_T_DROP (*(volatile uint32_t*)(&_MBAR[0x9A48])) +#define MCF_FEC1_IEEE_T_FRAME_OK (*(volatile uint32_t*)(&_MBAR[0x9A4C])) +#define MCF_FEC1_IEEE_T_1COL (*(volatile uint32_t*)(&_MBAR[0x9A50])) +#define MCF_FEC1_IEEE_T_MCOL (*(volatile uint32_t*)(&_MBAR[0x9A54])) +#define MCF_FEC1_IEEE_T_DEF (*(volatile uint32_t*)(&_MBAR[0x9A58])) +#define MCF_FEC1_IEEE_T_LCOL (*(volatile uint32_t*)(&_MBAR[0x9A5C])) +#define MCF_FEC1_IEEE_T_EXCOL (*(volatile uint32_t*)(&_MBAR[0x9A60])) +#define MCF_FEC1_IEEE_T_MACERR (*(volatile uint32_t*)(&_MBAR[0x9A64])) +#define MCF_FEC1_IEEE_T_CSERR (*(volatile uint32_t*)(&_MBAR[0x9A68])) +#define MCF_FEC1_IEEE_T_SQE (*(volatile uint32_t*)(&_MBAR[0x9A6C])) +#define MCF_FEC1_IEEE_T_FDXFC (*(volatile uint32_t*)(&_MBAR[0x9A70])) +#define MCF_FEC1_IEEE_T_OCTETS_OK (*(volatile uint32_t*)(&_MBAR[0x9A74])) +#define MCF_FEC1_RMON_R_DROP (*(volatile uint32_t*)(&_MBAR[0x9A80])) +#define MCF_FEC1_RMON_R_PACKETS (*(volatile uint32_t*)(&_MBAR[0x9A84])) +#define MCF_FEC1_RMON_R_BC_PKT (*(volatile uint32_t*)(&_MBAR[0x9A88])) +#define MCF_FEC1_RMON_R_MC_PKT (*(volatile uint32_t*)(&_MBAR[0x9A8C])) +#define MCF_FEC1_RMON_R_CRC_ALIGN (*(volatile uint32_t*)(&_MBAR[0x9A90])) +#define MCF_FEC1_RMON_R_UNDERSIZE (*(volatile uint32_t*)(&_MBAR[0x9A94])) +#define MCF_FEC1_RMON_R_OVERSIZE (*(volatile uint32_t*)(&_MBAR[0x9A98])) +#define MCF_FEC1_RMON_R_FRAG (*(volatile uint32_t*)(&_MBAR[0x9A9C])) +#define MCF_FEC1_RMON_R_JAB (*(volatile uint32_t*)(&_MBAR[0x9AA0])) +#define MCF_FEC1_RMON_R_RESVD_0 (*(volatile uint32_t*)(&_MBAR[0x9AA4])) +#define MCF_FEC1_RMON_R_P64 (*(volatile uint32_t*)(&_MBAR[0x9AA8])) +#define MCF_FEC1_RMON_R_P65TO127 (*(volatile uint32_t*)(&_MBAR[0x9AAC])) +#define MCF_FEC1_RMON_R_P128TO255 (*(volatile uint32_t*)(&_MBAR[0x9AB0])) +#define MCF_FEC1_RMON_R_P256TO511 (*(volatile uint32_t*)(&_MBAR[0x9AB4])) +#define MCF_FEC1_RMON_R_P512TO1023 (*(volatile uint32_t*)(&_MBAR[0x9AB8])) +#define MCF_FEC1_RMON_R_P1024TO2047 (*(volatile uint32_t*)(&_MBAR[0x9ABC])) +#define MCF_FEC1_RMON_R_P_GTE2048 (*(volatile uint32_t*)(&_MBAR[0x9AC0])) +#define MCF_FEC1_RMON_R_OCTETS (*(volatile uint32_t*)(&_MBAR[0x9AC4])) +#define MCF_FEC1_IEEE_R_DROP (*(volatile uint32_t*)(&_MBAR[0x9AC8])) +#define MCF_FEC1_IEEE_R_FRAME_OK (*(volatile uint32_t*)(&_MBAR[0x9ACC])) +#define MCF_FEC1_IEEE_R_CRC (*(volatile uint32_t*)(&_MBAR[0x9AD0])) +#define MCF_FEC1_IEEE_R_ALIGN (*(volatile uint32_t*)(&_MBAR[0x9AD4])) +#define MCF_FEC1_IEEE_R_MACERR (*(volatile uint32_t*)(&_MBAR[0x9AD8])) +#define MCF_FEC1_IEEE_R_FDXFC (*(volatile uint32_t*)(&_MBAR[0x9ADC])) +#define MCF_FEC1_IEEE_R_OCTETS_OK (*(volatile uint32_t*)(&_MBAR[0x9AE0])) + +#define MCF_FEC_EIR(x) (*(volatile uint32_t*)(&_MBAR[0x9004 + ((x)*0x800)])) +#define MCF_FEC_EIMR(x) (*(volatile uint32_t*)(&_MBAR[0x9008 + ((x)*0x800)])) +#define MCF_FEC_ECR(x) (*(volatile uint32_t*)(&_MBAR[0x9024 + ((x)*0x800)])) +#define MCF_FEC_MMFR(x) (*(volatile uint32_t*)(&_MBAR[0x9040 + ((x)*0x800)])) +#define MCF_FEC_MSCR(x) (*(volatile uint32_t*)(&_MBAR[0x9044 + ((x)*0x800)])) +#define MCF_FEC_MIBC(x) (*(volatile uint32_t*)(&_MBAR[0x9064 + ((x)*0x800)])) +#define MCF_FEC_RCR(x) (*(volatile uint32_t*)(&_MBAR[0x9084 + ((x)*0x800)])) +#define MCF_FEC_RHR(x) (*(volatile uint32_t*)(&_MBAR[0x9088 + ((x)*0x800)])) +#define MCF_FEC_TCR(x) (*(volatile uint32_t*)(&_MBAR[0x90C4 + ((x)*0x800)])) +#define MCF_FEC_PALR(x) (*(volatile uint32_t*)(&_MBAR[0x90E4 + ((x)*0x800)])) +#define MCF_FEC_PAHR(x) (*(volatile uint32_t*)(&_MBAR[0x90E8 + ((x)*0x800)])) +#define MCF_FEC_OPD(x) (*(volatile uint32_t*)(&_MBAR[0x90EC + ((x)*0x800)])) +#define MCF_FEC_IAUR(x) (*(volatile uint32_t*)(&_MBAR[0x9118 + ((x)*0x800)])) +#define MCF_FEC_IALR(x) (*(volatile uint32_t*)(&_MBAR[0x911C + ((x)*0x800)])) +#define MCF_FEC_GAUR(x) (*(volatile uint32_t*)(&_MBAR[0x9120 + ((x)*0x800)])) +#define MCF_FEC_GALR(x) (*(volatile uint32_t*)(&_MBAR[0x9124 + ((x)*0x800)])) +#define MCF_FEC_FECTFWR(x) (*(volatile uint32_t*)(&_MBAR[0x9144 + ((x)*0x800)])) +#define MCF_FEC_FECRFDR(x) (*(volatile uint32_t*)(&_MBAR[0x9184 + ((x)*0x800)])) +#define MCF_FEC_FECRFSR(x) (*(volatile uint32_t*)(&_MBAR[0x9188 + ((x)*0x800)])) +#define MCF_FEC_FECRFCR(x) (*(volatile uint32_t*)(&_MBAR[0x918C + ((x)*0x800)])) +#define MCF_FEC_FECRLRFP(x) (*(volatile uint32_t*)(&_MBAR[0x9190 + ((x)*0x800)])) +#define MCF_FEC_FECRLWFP(x) (*(volatile uint32_t*)(&_MBAR[0x9194 + ((x)*0x800)])) +#define MCF_FEC_FECRFAR(x) (*(volatile uint32_t*)(&_MBAR[0x9198 + ((x)*0x800)])) +#define MCF_FEC_FECRFRP(x) (*(volatile uint32_t*)(&_MBAR[0x919C + ((x)*0x800)])) +#define MCF_FEC_FECRFWP(x) (*(volatile uint32_t*)(&_MBAR[0x91A0 + ((x)*0x800)])) +#define MCF_FEC_FECTFDR(x) (*(volatile uint32_t*)(&_MBAR[0x91A4 + ((x)*0x800)])) +#define MCF_FEC_FECTFSR(x) (*(volatile uint32_t*)(&_MBAR[0x91A8 + ((x)*0x800)])) +#define MCF_FEC_FECTFCR(x) (*(volatile uint32_t*)(&_MBAR[0x91AC + ((x)*0x800)])) +#define MCF_FEC_FECTLRFP(x) (*(volatile uint32_t*)(&_MBAR[0x91B0 + ((x)*0x800)])) +#define MCF_FEC_FECTLWFP(x) (*(volatile uint32_t*)(&_MBAR[0x91B4 + ((x)*0x800)])) +#define MCF_FEC_FECTFAR(x) (*(volatile uint32_t*)(&_MBAR[0x91B8 + ((x)*0x800)])) +#define MCF_FEC_FECTFRP(x) (*(volatile uint32_t*)(&_MBAR[0x91BC + ((x)*0x800)])) +#define MCF_FEC_FECTFWP(x) (*(volatile uint32_t*)(&_MBAR[0x91C0 + ((x)*0x800)])) +#define MCF_FEC_FECFRST(x) (*(volatile uint32_t*)(&_MBAR[0x91C4 + ((x)*0x800)])) +#define MCF_FEC_FECCTCWR(x) (*(volatile uint32_t*)(&_MBAR[0x91C8 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_DROP(x) (*(volatile uint32_t*)(&_MBAR[0x9200 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_PACKETS(x) (*(volatile uint32_t*)(&_MBAR[0x9204 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_BC_PKT(x) (*(volatile uint32_t*)(&_MBAR[0x9208 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_MC_PKT(x) (*(volatile uint32_t*)(&_MBAR[0x920C + ((x)*0x800)])) +#define MCF_FEC_RMON_T_CRC_ALIGN(x) (*(volatile uint32_t*)(&_MBAR[0x9210 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_UNDERSIZE(x) (*(volatile uint32_t*)(&_MBAR[0x9214 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_OVERSIZE(x) (*(volatile uint32_t*)(&_MBAR[0x9218 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_FRAG(x) (*(volatile uint32_t*)(&_MBAR[0x921C + ((x)*0x800)])) +#define MCF_FEC_RMON_T_JAB(x) (*(volatile uint32_t*)(&_MBAR[0x9220 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_COL(x) (*(volatile uint32_t*)(&_MBAR[0x9224 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_P64(x) (*(volatile uint32_t*)(&_MBAR[0x9228 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_P65TO127(x) (*(volatile uint32_t*)(&_MBAR[0x922C + ((x)*0x800)])) +#define MCF_FEC_RMON_T_P128TO255(x) (*(volatile uint32_t*)(&_MBAR[0x9230 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_P256TO511(x) (*(volatile uint32_t*)(&_MBAR[0x9234 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_P512TO1023(x) (*(volatile uint32_t*)(&_MBAR[0x9238 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_P1024TO2047(x) (*(volatile uint32_t*)(&_MBAR[0x923C + ((x)*0x800)])) +#define MCF_FEC_RMON_T_P_GTE2048(x) (*(volatile uint32_t*)(&_MBAR[0x9240 + ((x)*0x800)])) +#define MCF_FEC_RMON_T_OCTETS(x) (*(volatile uint32_t*)(&_MBAR[0x9244 + ((x)*0x800)])) +#define MCF_FEC_IEEE_T_DROP(x) (*(volatile uint32_t*)(&_MBAR[0x9248 + ((x)*0x800)])) +#define MCF_FEC_IEEE_T_FRAME_OK(x) (*(volatile uint32_t*)(&_MBAR[0x924C + ((x)*0x800)])) +#define MCF_FEC_IEEE_T_1COL(x) (*(volatile uint32_t*)(&_MBAR[0x9250 + ((x)*0x800)])) +#define MCF_FEC_IEEE_T_MCOL(x) (*(volatile uint32_t*)(&_MBAR[0x9254 + ((x)*0x800)])) +#define MCF_FEC_IEEE_T_DEF(x) (*(volatile uint32_t*)(&_MBAR[0x9258 + ((x)*0x800)])) +#define MCF_FEC_IEEE_T_LCOL(x) (*(volatile uint32_t*)(&_MBAR[0x925C + ((x)*0x800)])) +#define MCF_FEC_IEEE_T_EXCOL(x) (*(volatile uint32_t*)(&_MBAR[0x9260 + ((x)*0x800)])) +#define MCF_FEC_IEEE_T_MACERR(x) (*(volatile uint32_t*)(&_MBAR[0x9264 + ((x)*0x800)])) +#define MCF_FEC_IEEE_T_CSERR(x) (*(volatile uint32_t*)(&_MBAR[0x9268 + ((x)*0x800)])) +#define MCF_FEC_IEEE_T_SQE(x) (*(volatile uint32_t*)(&_MBAR[0x926C + ((x)*0x800)])) +#define MCF_FEC_IEEE_T_FDXFC(x) (*(volatile uint32_t*)(&_MBAR[0x9270 + ((x)*0x800)])) +#define MCF_FEC_IEEE_T_OCTETS_OK(x) (*(volatile uint32_t*)(&_MBAR[0x9274 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_DROP(x) (*(volatile uint32_t*)(&_MBAR[0x9280 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_PACKETS(x) (*(volatile uint32_t*)(&_MBAR[0x9284 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_BC_PKT(x) (*(volatile uint32_t*)(&_MBAR[0x9288 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_MC_PKT(x) (*(volatile uint32_t*)(&_MBAR[0x928C + ((x)*0x800)])) +#define MCF_FEC_RMON_R_CRC_ALIGN(x) (*(volatile uint32_t*)(&_MBAR[0x9290 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_UNDERSIZE(x) (*(volatile uint32_t*)(&_MBAR[0x9294 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_OVERSIZE(x) (*(volatile uint32_t*)(&_MBAR[0x9298 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_FRAG(x) (*(volatile uint32_t*)(&_MBAR[0x929C + ((x)*0x800)])) +#define MCF_FEC_RMON_R_JAB(x) (*(volatile uint32_t*)(&_MBAR[0x92A0 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_RESVD_0(x) (*(volatile uint32_t*)(&_MBAR[0x92A4 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_P64(x) (*(volatile uint32_t*)(&_MBAR[0x92A8 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_P65TO127(x) (*(volatile uint32_t*)(&_MBAR[0x92AC + ((x)*0x800)])) +#define MCF_FEC_RMON_R_P128TO255(x) (*(volatile uint32_t*)(&_MBAR[0x92B0 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_P256TO511(x) (*(volatile uint32_t*)(&_MBAR[0x92B4 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_P512TO1023(x) (*(volatile uint32_t*)(&_MBAR[0x92B8 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_P1024TO2047(x) (*(volatile uint32_t*)(&_MBAR[0x92BC + ((x)*0x800)])) +#define MCF_FEC_RMON_R_P_GTE2048(x) (*(volatile uint32_t*)(&_MBAR[0x92C0 + ((x)*0x800)])) +#define MCF_FEC_RMON_R_OCTETS(x) (*(volatile uint32_t*)(&_MBAR[0x92C4 + ((x)*0x800)])) +#define MCF_FEC_IEEE_R_DROP(x) (*(volatile uint32_t*)(&_MBAR[0x92C8 + ((x)*0x800)])) +#define MCF_FEC_IEEE_R_FRAME_OK(x) (*(volatile uint32_t*)(&_MBAR[0x92CC + ((x)*0x800)])) +#define MCF_FEC_IEEE_R_CRC(x) (*(volatile uint32_t*)(&_MBAR[0x92D0 + ((x)*0x800)])) +#define MCF_FEC_IEEE_R_ALIGN(x) (*(volatile uint32_t*)(&_MBAR[0x92D4 + ((x)*0x800)])) +#define MCF_FEC_IEEE_R_MACERR(x) (*(volatile uint32_t*)(&_MBAR[0x92D8 + ((x)*0x800)])) +#define MCF_FEC_IEEE_R_FDXFC(x) (*(volatile uint32_t*)(&_MBAR[0x92DC + ((x)*0x800)])) +#define MCF_FEC_IEEE_R_OCTETS_OK(x) (*(volatile uint32_t*)(&_MBAR[0x92E0 + ((x)*0x800)])) + + +/* Bit definitions and macros for MCF_FEC_EIR */ +#define MCF_FEC_EIR_RFERR (0x20000) +#define MCF_FEC_EIR_XFERR (0x40000) +#define MCF_FEC_EIR_XFUN (0x80000) +#define MCF_FEC_EIR_RL (0x100000) +#define MCF_FEC_EIR_LC (0x200000) +#define MCF_FEC_EIR_MII (0x800000) +#define MCF_FEC_EIR_TXF (0x8000000) +#define MCF_FEC_EIR_GRA (0x10000000) +#define MCF_FEC_EIR_BABT (0x20000000) +#define MCF_FEC_EIR_BABR (0x40000000) +#define MCF_FEC_EIR_HBERR (0x80000000) +#define MCF_FEC_EIR_CLEAR_ALL (0xFFFFFFFF) + +/* Bit definitions and macros for MCF_FEC_EIMR */ +#define MCF_FEC_EIMR_RFERR (0x20000) +#define MCF_FEC_EIMR_XFERR (0x40000) +#define MCF_FEC_EIMR_XFUN (0x80000) +#define MCF_FEC_EIMR_RL (0x100000) +#define MCF_FEC_EIMR_LC (0x200000) +#define MCF_FEC_EIMR_MII (0x800000) +#define MCF_FEC_EIMR_TXF (0x8000000) +#define MCF_FEC_EIMR_GRA (0x10000000) +#define MCF_FEC_EIMR_BABT (0x20000000) +#define MCF_FEC_EIMR_BABR (0x40000000) +#define MCF_FEC_EIMR_HBERR (0x80000000) +#define MCF_FEC_EIMR_MASK_ALL (0) +#define MCF_FEC_EIMR_UNMASK_ALL (0xFFFFFFFF) + +/* Bit definitions and macros for MCF_FEC_ECR */ +#define MCF_FEC_ECR_RESET (0x1) +#define MCF_FEC_ECR_ETHER_EN (0x2) + +/* Bit definitions and macros for MCF_FEC_MMFR */ +#define MCF_FEC_MMFR_DATA(x) (((x)&0xFFFF)<<0) +#define MCF_FEC_MMFR_TA(x) (((x)&0x3)<<0x10) +#define MCF_FEC_MMFR_TA_10 (0x20000) +#define MCF_FEC_MMFR_RA(x) (((x)&0x1F)<<0x12) +#define MCF_FEC_MMFR_PA(x) (((x)&0x1F)<<0x17) +#define MCF_FEC_MMFR_OP(x) (((x)&0x3)<<0x1C) +#define MCF_FEC_MMFR_OP_READ (0x20000000) +#define MCF_FEC_MMFR_OP_WRITE (0x10000000) +#define MCF_FEC_MMFR_ST(x) (((x)&0x3)<<0x1E) +#define MCF_FEC_MMFR_ST_01 (0x40000000) + +/* Bit definitions and macros for MCF_FEC_MSCR */ +#define MCF_FEC_MSCR_MII_SPEED(x) (((x)&0x3F)<<0x1) +#define MCF_FEC_MSCR_DIS_PREAMBLE (0x80) +#define MCF_FEC_MSCR_MII_SPEED_133 (0x1B<<0x1) +#define MCF_FEC_MSCR_MII_SPEED_120 (0x18<<0x1) +#define MCF_FEC_MSCR_MII_SPEED_66 (0xE<<0x1) +#define MCF_FEC_MSCR_MII_SPEED_60 (0xC<<0x1) + +/* Bit definitions and macros for MCF_FEC_MIBC */ +#define MCF_FEC_MIBC_MIB_IDLE (0x40000000) +#define MCF_FEC_MIBC_MIB_DISABLE (0x80000000) + +/* Bit definitions and macros for MCF_FEC_RCR */ +#define MCF_FEC_RCR_LOOP (0x1) +#define MCF_FEC_RCR_DRT (0x2) +#define MCF_FEC_RCR_MII_MODE (0x4) +#define MCF_FEC_RCR_PROM (0x8) +#define MCF_FEC_RCR_BC_REJ (0x10) +#define MCF_FEC_RCR_FCE (0x20) +#define MCF_FEC_RCR_MAX_FL(x) (((x)&0x7FF)<<0x10) + +/* Bit definitions and macros for MCF_FEC_RHR */ +#define MCF_FEC_RHR_HASH(x) (((x)&0x3F)<<0x18) +#define MCF_FEC_RHR_MULTCAST (0x40000000) +#define MCF_FEC_RHR_FCE (0x80000000) + +/* Bit definitions and macros for MCF_FEC_TCR */ +#define MCF_FEC_TCR_GTS (0x1) +#define MCF_FEC_TCR_HBC (0x2) +#define MCF_FEC_TCR_FDEN (0x4) +#define MCF_FEC_TCR_TFC_PAUSE (0x8) +#define MCF_FEC_TCR_RFC_PAUSE (0x10) + +/* Bit definitions and macros for MCF_FEC_PALR */ +#define MCF_FEC_PALR_PADDR1(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_PAHR */ +#define MCF_FEC_PAHR_TYPE(x) (((x)&0xFFFF)<<0) +#define MCF_FEC_PAHR_PADDR2(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_FEC_OPD */ +#define MCF_FEC_OPD_PAUSE_DUR(x) (((x)&0xFFFF)<<0) +#define MCF_FEC_OPD_OPCODE(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_FEC_IAUR */ +#define MCF_FEC_IAUR_IADDR1(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IALR */ +#define MCF_FEC_IALR_IADDR2(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_GAUR */ +#define MCF_FEC_GAUR_GADDR1(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_GALR */ +#define MCF_FEC_GALR_GADDR2(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECTFWR */ +#define MCF_FEC_FECTFWR_X_WMRK(x) (((x)&0xF)<<0) +#define MCF_FEC_FECTFWR_X_WMRK_64 (0) +#define MCF_FEC_FECTFWR_X_WMRK_128 (0x1) +#define MCF_FEC_FECTFWR_X_WMRK_192 (0x2) +#define MCF_FEC_FECTFWR_X_WMRK_256 (0x3) +#define MCF_FEC_FECTFWR_X_WMRK_320 (0x4) +#define MCF_FEC_FECTFWR_X_WMRK_384 (0x5) +#define MCF_FEC_FECTFWR_X_WMRK_448 (0x6) +#define MCF_FEC_FECTFWR_X_WMRK_512 (0x7) +#define MCF_FEC_FECTFWR_X_WMRK_576 (0x8) +#define MCF_FEC_FECTFWR_X_WMRK_640 (0x9) +#define MCF_FEC_FECTFWR_X_WMRK_704 (0xA) +#define MCF_FEC_FECTFWR_X_WMRK_768 (0xB) +#define MCF_FEC_FECTFWR_X_WMRK_832 (0xC) +#define MCF_FEC_FECTFWR_X_WMRK_896 (0xD) +#define MCF_FEC_FECTFWR_X_WMRK_960 (0xE) +#define MCF_FEC_FECTFWR_X_WMRK_1024 (0xF) + +/* Bit definitions and macros for MCF_FEC_FECRFDR */ +#define MCF_FEC_FECRFDR_FIFO_DATA(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECRFSR */ +#define MCF_FEC_FECRFSR_EMT (0x10000) +#define MCF_FEC_FECRFSR_ALARM (0x20000) +#define MCF_FEC_FECRFSR_FU (0x40000) +#define MCF_FEC_FECRFSR_FRMRDY (0x80000) +#define MCF_FEC_FECRFSR_OF (0x100000) +#define MCF_FEC_FECRFSR_UF (0x200000) +#define MCF_FEC_FECRFSR_RXW (0x400000) +#define MCF_FEC_FECRFSR_FAE (0x800000) +#define MCF_FEC_FECRFSR_FRM(x) (((x)&0xF)<<0x18) +#define MCF_FEC_FECRFSR_IP (0x80000000) + +/* Bit definitions and macros for MCF_FEC_FECRFCR */ +#define MCF_FEC_FECRFCR_COUNTER(x) (((x)&0xFFFF)<<0) +#define MCF_FEC_FECRFCR_OF_MSK (0x80000) +#define MCF_FEC_FECRFCR_UF_MSK (0x100000) +#define MCF_FEC_FECRFCR_RXW_MSK (0x200000) +#define MCF_FEC_FECRFCR_FAE_MSK (0x400000) +#define MCF_FEC_FECRFCR_IP_MSK (0x800000) +#define MCF_FEC_FECRFCR_GR(x) (((x)&0x7)<<0x18) +#define MCF_FEC_FECRFCR_FRMEN (0x8000000) +#define MCF_FEC_FECRFCR_TIMER (0x10000000) + +/* Bit definitions and macros for MCF_FEC_FECRLRFP */ +#define MCF_FEC_FECRLRFP_LRFP(x) (((x)&0x3FF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECRLWFP */ +#define MCF_FEC_FECRLWFP_LWFP(x) (((x)&0x3FF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECRFAR */ +#define MCF_FEC_FECRFAR_ALARM(x) (((x)&0x3FF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECRFRP */ +#define MCF_FEC_FECRFRP_READ(x) (((x)&0x3FF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECRFWP */ +#define MCF_FEC_FECRFWP_WRITE(x) (((x)&0x3FF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECTFDR */ +#define MCF_FEC_FECTFDR_FIFO_DATA(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECTFSR */ +#define MCF_FEC_FECTFSR_EMT (0x10000) +#define MCF_FEC_FECTFSR_ALARM (0x20000) +#define MCF_FEC_FECTFSR_FU (0x40000) +#define MCF_FEC_FECTFSR_FRMRDY (0x80000) +#define MCF_FEC_FECTFSR_OF (0x100000) +#define MCF_FEC_FECTFSR_UF (0x200000) +#define MCF_FEC_FECTFSR_FAE (0x800000) +#define MCF_FEC_FECTFSR_FRM(x) (((x)&0xF)<<0x18) +#define MCF_FEC_FECTFSR_TXW (0x40000000) +#define MCF_FEC_FECTFSR_IP (0x80000000) + +/* Bit definitions and macros for MCF_FEC_FECTFCR */ +#define MCF_FEC_FECTFCR_RESERVED (0x200000) +#define MCF_FEC_FECTFCR_COUNTER(x) (((x)&0xFFFF)<<0|0x200000) +#define MCF_FEC_FECTFCR_TXW_MASK (0x240000) +#define MCF_FEC_FECTFCR_OF_MSK (0x280000) +#define MCF_FEC_FECTFCR_UF_MSK (0x300000) +#define MCF_FEC_FECTFCR_FAE_MSK (0x600000) +#define MCF_FEC_FECTFCR_IP_MSK (0xA00000) +#define MCF_FEC_FECTFCR_GR(x) (((x)&0x7)<<0x18|0x200000) +#define MCF_FEC_FECTFCR_FRMEN (0x8200000) +#define MCF_FEC_FECTFCR_TIMER (0x10200000) +#define MCF_FEC_FECTFCR_WFR (0x20200000) +#define MCF_FEC_FECTFCR_WCTL (0x40200000) + +/* Bit definitions and macros for MCF_FEC_FECTLRFP */ +#define MCF_FEC_FECTLRFP_LRFP(x) (((x)&0x3FF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECTLWFP */ +#define MCF_FEC_FECTLWFP_LWFP(x) (((x)&0x3FF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECTFAR */ +#define MCF_FEC_FECTFAR_ALARM(x) (((x)&0x3FF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECTFRP */ +#define MCF_FEC_FECTFRP_READ(x) (((x)&0x3FF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECTFWP */ +#define MCF_FEC_FECTFWP_WRITE(x) (((x)&0x3FF)<<0) + +/* Bit definitions and macros for MCF_FEC_FECFRST */ +#define MCF_FEC_FECFRST_RST_CTL (0x1000000) +#define MCF_FEC_FECFRST_SW_RST (0x2000000) + +/* Bit definitions and macros for MCF_FEC_FECCTCWR */ +#define MCF_FEC_FECCTCWR_TFCW (0x1000000) +#define MCF_FEC_FECCTCWR_CRC (0x2000000) + +/* Bit definitions and macros for MCF_FEC_RMON_T_DROP */ +#define MCF_FEC_RMON_T_DROP_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_PACKETS */ +#define MCF_FEC_RMON_T_PACKETS_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_BC_PKT */ +#define MCF_FEC_RMON_T_BC_PKT_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_MC_PKT */ +#define MCF_FEC_RMON_T_MC_PKT_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_CRC_ALIGN */ +#define MCF_FEC_RMON_T_CRC_ALIGN_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_UNDERSIZE */ +#define MCF_FEC_RMON_T_UNDERSIZE_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_OVERSIZE */ +#define MCF_FEC_RMON_T_OVERSIZE_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_FRAG */ +#define MCF_FEC_RMON_T_FRAG_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_JAB */ +#define MCF_FEC_RMON_T_JAB_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_COL */ +#define MCF_FEC_RMON_T_COL_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_P64 */ +#define MCF_FEC_RMON_T_P64_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_P65TO127 */ +#define MCF_FEC_RMON_T_P65TO127_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_P128TO255 */ +#define MCF_FEC_RMON_T_P128TO255_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_P256TO511 */ +#define MCF_FEC_RMON_T_P256TO511_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_P512TO1023 */ +#define MCF_FEC_RMON_T_P512TO1023_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_P1024TO2047 */ +#define MCF_FEC_RMON_T_P1024TO2047_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_P_GTE2048 */ +#define MCF_FEC_RMON_T_P_GTE2048_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_T_OCTETS */ +#define MCF_FEC_RMON_T_OCTETS_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_T_DROP */ +#define MCF_FEC_IEEE_T_DROP_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_T_FRAME_OK */ +#define MCF_FEC_IEEE_T_FRAME_OK_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_T_1COL */ +#define MCF_FEC_IEEE_T_1COL_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_T_MCOL */ +#define MCF_FEC_IEEE_T_MCOL_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_T_DEF */ +#define MCF_FEC_IEEE_T_DEF_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_T_LCOL */ +#define MCF_FEC_IEEE_T_LCOL_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_T_EXCOL */ +#define MCF_FEC_IEEE_T_EXCOL_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_T_MACERR */ +#define MCF_FEC_IEEE_T_MACERR_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_T_CSERR */ +#define MCF_FEC_IEEE_T_CSERR_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_T_SQE */ +#define MCF_FEC_IEEE_T_SQE_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_T_FDXFC */ +#define MCF_FEC_IEEE_T_FDXFC_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_T_OCTETS_OK */ +#define MCF_FEC_IEEE_T_OCTETS_OK_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_DROP */ +#define MCF_FEC_RMON_R_DROP_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_PACKETS */ +#define MCF_FEC_RMON_R_PACKETS_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_BC_PKT */ +#define MCF_FEC_RMON_R_BC_PKT_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_MC_PKT */ +#define MCF_FEC_RMON_R_MC_PKT_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_CRC_ALIGN */ +#define MCF_FEC_RMON_R_CRC_ALIGN_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_UNDERSIZE */ +#define MCF_FEC_RMON_R_UNDERSIZE_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_OVERSIZE */ +#define MCF_FEC_RMON_R_OVERSIZE_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_FRAG */ +#define MCF_FEC_RMON_R_FRAG_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_JAB */ +#define MCF_FEC_RMON_R_JAB_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_RESVD_0 */ +#define MCF_FEC_RMON_R_RESVD_0_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_P64 */ +#define MCF_FEC_RMON_R_P64_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_P65TO127 */ +#define MCF_FEC_RMON_R_P65TO127_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_P128TO255 */ +#define MCF_FEC_RMON_R_P128TO255_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_P256TO511 */ +#define MCF_FEC_RMON_R_P256TO511_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_P512TO1023 */ +#define MCF_FEC_RMON_R_P512TO1023_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_P1024TO2047 */ +#define MCF_FEC_RMON_R_P1024TO2047_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_P_GTE2048 */ +#define MCF_FEC_RMON_R_P_GTE2048_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_RMON_R_OCTETS */ +#define MCF_FEC_RMON_R_OCTETS_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_R_DROP */ +#define MCF_FEC_IEEE_R_DROP_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_R_FRAME_OK */ +#define MCF_FEC_IEEE_R_FRAME_OK_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_R_CRC */ +#define MCF_FEC_IEEE_R_CRC_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_R_ALIGN */ +#define MCF_FEC_IEEE_R_ALIGN_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_R_MACERR */ +#define MCF_FEC_IEEE_R_MACERR_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_R_FDXFC */ +#define MCF_FEC_IEEE_R_FDXFC_Value(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_FEC_IEEE_R_OCTETS_OK */ +#define MCF_FEC_IEEE_R_OCTETS_OK_Value(x) (((x)&0xFFFFFFFF)<<0) + + +#endif /* __MCF5475_FEC_H__ */ diff --git a/BaS_gcc/tos/pci_mem/include/MCF5475_GPIO.h b/BaS_gcc/tos/pci_mem/include/MCF5475_GPIO.h new file mode 100644 index 0000000..5dd2583 --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/MCF5475_GPIO.h @@ -0,0 +1,543 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_GPIO_H__ +#define __MCF5475_GPIO_H__ + + +/********************************************************************* +* +* General Purpose I/O (GPIO) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_GPIO_PODR_FBCTL (*(volatile uint8_t *)(&_MBAR[0xA00])) +#define MCF_GPIO_PDDR_FBCTL (*(volatile uint8_t *)(&_MBAR[0xA10])) +#define MCF_GPIO_PPDSDR_FBCTL (*(volatile uint8_t *)(&_MBAR[0xA20])) +#define MCF_GPIO_PCLRR_FBCTL (*(volatile uint8_t *)(&_MBAR[0xA30])) + +#define MCF_GPIO_PODR_FBCS (*(volatile uint8_t *)(&_MBAR[0xA01])) +#define MCF_GPIO_PDDR_FBCS (*(volatile uint8_t *)(&_MBAR[0xA11])) +#define MCF_GPIO_PPDSDR_FBCS (*(volatile uint8_t *)(&_MBAR[0xA21])) +#define MCF_GPIO_PCLRR_FBCS (*(volatile uint8_t *)(&_MBAR[0xA31])) + +#define MCF_GPIO_PODR_DMA (*(volatile uint8_t *)(&_MBAR[0xA02])) +#define MCF_GPIO_PDDR_DMA (*(volatile uint8_t *)(&_MBAR[0xA12])) +#define MCF_GPIO_PPDSDR_DMA (*(volatile uint8_t *)(&_MBAR[0xA22])) +#define MCF_GPIO_PCLRR_DMA (*(volatile uint8_t *)(&_MBAR[0xA32])) + +#define MCF_GPIO_PODR_FEC0H (*(volatile uint8_t *)(&_MBAR[0xA04])) +#define MCF_GPIO_PDDR_FEC0H (*(volatile uint8_t *)(&_MBAR[0xA14])) +#define MCF_GPIO_PPDSDR_FEC0H (*(volatile uint8_t *)(&_MBAR[0xA24])) +#define MCF_GPIO_PCLRR_FEC0H (*(volatile uint8_t *)(&_MBAR[0xA34])) + +#define MCF_GPIO_PODR_FEC0L (*(volatile uint8_t *)(&_MBAR[0xA05])) +#define MCF_GPIO_PDDR_FEC0L (*(volatile uint8_t *)(&_MBAR[0xA15])) +#define MCF_GPIO_PPDSDR_FEC0L (*(volatile uint8_t *)(&_MBAR[0xA25])) +#define MCF_GPIO_PCLRR_FEC0L (*(volatile uint8_t *)(&_MBAR[0xA35])) + +#define MCF_GPIO_PODR_FEC1H (*(volatile uint8_t *)(&_MBAR[0xA06])) +#define MCF_GPIO_PDDR_FEC1H (*(volatile uint8_t *)(&_MBAR[0xA16])) +#define MCF_GPIO_PPDSDR_FEC1H (*(volatile uint8_t *)(&_MBAR[0xA26])) +#define MCF_GPIO_PCLRR_FEC1H (*(volatile uint8_t *)(&_MBAR[0xA36])) + +#define MCF_GPIO_PODR_FEC1L (*(volatile uint8_t *)(&_MBAR[0xA07])) +#define MCF_GPIO_PDDR_FEC1L (*(volatile uint8_t *)(&_MBAR[0xA17])) +#define MCF_GPIO_PPDSDR_FEC1L (*(volatile uint8_t *)(&_MBAR[0xA27])) +#define MCF_GPIO_PCLRR_FEC1L (*(volatile uint8_t *)(&_MBAR[0xA37])) + +#define MCF_GPIO_PODR_FECI2C (*(volatile uint8_t *)(&_MBAR[0xA08])) +#define MCF_GPIO_PDDR_FECI2C (*(volatile uint8_t *)(&_MBAR[0xA18])) +#define MCF_GPIO_PPDSDR_FECI2C (*(volatile uint8_t *)(&_MBAR[0xA28])) +#define MCF_GPIO_PCLRR_FECI2C (*(volatile uint8_t *)(&_MBAR[0xA38])) + +#define MCF_GPIO_PODR_PCIBG (*(volatile uint8_t *)(&_MBAR[0xA09])) +#define MCF_GPIO_PDDR_PCIBG (*(volatile uint8_t *)(&_MBAR[0xA19])) +#define MCF_GPIO_PPDSDR_PCIBG (*(volatile uint8_t *)(&_MBAR[0xA29])) +#define MCF_GPIO_PCLRR_PCIBG (*(volatile uint8_t *)(&_MBAR[0xA39])) + +#define MCF_GPIO_PODR_PCIBR (*(volatile uint8_t *)(&_MBAR[0xA0A])) +#define MCF_GPIO_PDDR_PCIBR (*(volatile uint8_t *)(&_MBAR[0xA1A])) +#define MCF_GPIO_PPDSDR_PCIBR (*(volatile uint8_t *)(&_MBAR[0xA2A])) +#define MCF_GPIO_PCLRR_PCIBR (*(volatile uint8_t *)(&_MBAR[0xA3A])) + +#define MCF_GPIO2_PODR_PSC3PSC (*(volatile uint8_t *)(&_MBAR[0xA0C])) +#define MCF_GPIO2_PDDR_PSC3PSC (*(volatile uint8_t *)(&_MBAR[0xA1C])) +#define MCF_GPIO2_PPDSDR_PSC3PSC (*(volatile uint8_t *)(&_MBAR[0xA2C])) +#define MCF_GPIO2_PCLRR_PSC3PSC (*(volatile uint8_t *)(&_MBAR[0xA3C])) + +#define MCF_GPIO0_PODR_PSC1PSC (*(volatile uint8_t *)(&_MBAR[0xA0D])) +#define MCF_GPIO0_PDDR_PSC1PSC (*(volatile uint8_t *)(&_MBAR[0xA1D])) +#define MCF_GPIO0_PPDSDR_PSC1PSC (*(volatile uint8_t *)(&_MBAR[0xA2D])) +#define MCF_GPIO0_PCLRR_PSC1PSC (*(volatile uint8_t *)(&_MBAR[0xA3D])) + +#define MCF_GPIO_PODR_DSPI (*(volatile uint8_t *)(&_MBAR[0xA0E])) +#define MCF_GPIO_PDDR_DSPI (*(volatile uint8_t *)(&_MBAR[0xA1E])) +#define MCF_GPIO_PPDSDR_DSPI (*(volatile uint8_t *)(&_MBAR[0xA2E])) +#define MCF_GPIO_PCLRR_DSPI (*(volatile uint8_t *)(&_MBAR[0xA3E])) + + + +/* Bit definitions and macros for MCF_GPIO_PODR_FBCTL */ +#define MCF_GPIO_PODR_FBCTL_PODR_FBCTL0 (0x1) +#define MCF_GPIO_PODR_FBCTL_PODR_FBCTL1 (0x2) +#define MCF_GPIO_PODR_FBCTL_PODR_FBCTL2 (0x4) +#define MCF_GPIO_PODR_FBCTL_PODR_FBCTL3 (0x8) +#define MCF_GPIO_PODR_FBCTL_PODR_FBCTL4 (0x10) +#define MCF_GPIO_PODR_FBCTL_PODR_FBCTL5 (0x20) +#define MCF_GPIO_PODR_FBCTL_PODR_FBCTL6 (0x40) +#define MCF_GPIO_PODR_FBCTL_PODR_FBCTL7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PDDR_FBCTL */ +#define MCF_GPIO_PDDR_FBCTL_PDDR_FBCTL0 (0x1) +#define MCF_GPIO_PDDR_FBCTL_PDDR_FBCTL1 (0x2) +#define MCF_GPIO_PDDR_FBCTL_PDDR_FBCTL2 (0x4) +#define MCF_GPIO_PDDR_FBCTL_PDDR_FBCTL3 (0x8) +#define MCF_GPIO_PDDR_FBCTL_PDDR_FBCTL4 (0x10) +#define MCF_GPIO_PDDR_FBCTL_PDDR_FBCTL5 (0x20) +#define MCF_GPIO_PDDR_FBCTL_PDDR_FBCTL6 (0x40) +#define MCF_GPIO_PDDR_FBCTL_PDDR_FBCTL7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_FBCTL */ +#define MCF_GPIO_PPDSDR_FBCTL_PPDSDR_FBCTL0 (0x1) +#define MCF_GPIO_PPDSDR_FBCTL_PPDSDR_FBCTL1 (0x2) +#define MCF_GPIO_PPDSDR_FBCTL_PPDSDR_FBCTL2 (0x4) +#define MCF_GPIO_PPDSDR_FBCTL_PPDSDR_FBCTL3 (0x8) +#define MCF_GPIO_PPDSDR_FBCTL_PPDSDR_FBCTL4 (0x10) +#define MCF_GPIO_PPDSDR_FBCTL_PPDSDR_FBCTL5 (0x20) +#define MCF_GPIO_PPDSDR_FBCTL_PPDSDR_FBCTL6 (0x40) +#define MCF_GPIO_PPDSDR_FBCTL_PPDSDR_FBCTL7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_FBCTL */ +#define MCF_GPIO_PCLRR_FBCTL_PCLRR_FBCTL0 (0x1) +#define MCF_GPIO_PCLRR_FBCTL_PCLRR_FBCTL1 (0x2) +#define MCF_GPIO_PCLRR_FBCTL_PCLRR_FBCTL2 (0x4) +#define MCF_GPIO_PCLRR_FBCTL_PCLRR_FBCTL3 (0x8) +#define MCF_GPIO_PCLRR_FBCTL_PCLRR_FBCTL4 (0x10) +#define MCF_GPIO_PCLRR_FBCTL_PCLRR_FBCTL5 (0x20) +#define MCF_GPIO_PCLRR_FBCTL_PCLRR_FBCTL6 (0x40) +#define MCF_GPIO_PCLRR_FBCTL_PCLRR_FBCTL7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PODR_FBCS */ +#define MCF_GPIO_PODR_FBCS_PODR_FBCS1 (0x2) +#define MCF_GPIO_PODR_FBCS_PODR_FBCS2 (0x4) +#define MCF_GPIO_PODR_FBCS_PODR_FBCS3 (0x8) +#define MCF_GPIO_PODR_FBCS_PODR_FBCS4 (0x10) +#define MCF_GPIO_PODR_FBCS_PODR_FBCS5 (0x20) + +/* Bit definitions and macros for MCF_GPIO_PDDR_FBCS */ +#define MCF_GPIO_PDDR_FBCS_PDDR_FBCS1 (0x2) +#define MCF_GPIO_PDDR_FBCS_PDDR_FBCS2 (0x4) +#define MCF_GPIO_PDDR_FBCS_PDDR_FBCS3 (0x8) +#define MCF_GPIO_PDDR_FBCS_PDDR_FBCS4 (0x10) +#define MCF_GPIO_PDDR_FBCS_PDDR_FBCS5 (0x20) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_FBCS */ +#define MCF_GPIO_PPDSDR_FBCS_PPDSDR_FBCS1 (0x2) +#define MCF_GPIO_PPDSDR_FBCS_PPDSDR_FBCS2 (0x4) +#define MCF_GPIO_PPDSDR_FBCS_PPDSDR_FBCS3 (0x8) +#define MCF_GPIO_PPDSDR_FBCS_PPDSDR_FBCS4 (0x10) +#define MCF_GPIO_PPDSDR_FBCS_PPDSDR_FBCS5 (0x20) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_FBCS */ +#define MCF_GPIO_PCLRR_FBCS_PCLRR_FBCS1 (0x2) +#define MCF_GPIO_PCLRR_FBCS_PCLRR_FBCS2 (0x4) +#define MCF_GPIO_PCLRR_FBCS_PCLRR_FBCS3 (0x8) +#define MCF_GPIO_PCLRR_FBCS_PCLRR_FBCS4 (0x10) +#define MCF_GPIO_PCLRR_FBCS_PCLRR_FBCS5 (0x20) + +/* Bit definitions and macros for MCF_GPIO_PODR_DMA */ +#define MCF_GPIO_PODR_DMA_PODR_DMA0 (0x1) +#define MCF_GPIO_PODR_DMA_PODR_DMA1 (0x2) +#define MCF_GPIO_PODR_DMA_PODR_DMA2 (0x4) +#define MCF_GPIO_PODR_DMA_PODR_DMA3 (0x8) + +/* Bit definitions and macros for MCF_GPIO_PDDR_DMA */ +#define MCF_GPIO_PDDR_DMA_PDDR_DMA0 (0x1) +#define MCF_GPIO_PDDR_DMA_PDDR_DMA1 (0x2) +#define MCF_GPIO_PDDR_DMA_PDDR_DMA2 (0x4) +#define MCF_GPIO_PDDR_DMA_PDDR_DMA3 (0x8) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_DMA */ +#define MCF_GPIO_PPDSDR_DMA_PPDSDR_DMA0 (0x1) +#define MCF_GPIO_PPDSDR_DMA_PPDSDR_DMA1 (0x2) +#define MCF_GPIO_PPDSDR_DMA_PPDSDR_DMA2 (0x4) +#define MCF_GPIO_PPDSDR_DMA_PPDSDR_DMA3 (0x8) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_DMA */ +#define MCF_GPIO_PCLRR_DMA_PCLRR_DMA0 (0x1) +#define MCF_GPIO_PCLRR_DMA_PCLRR_DMA1 (0x2) +#define MCF_GPIO_PCLRR_DMA_PCLRR_DMA2 (0x4) +#define MCF_GPIO_PCLRR_DMA_PCLRR_DMA3 (0x8) + +/* Bit definitions and macros for MCF_GPIO_PODR_FEC0H */ +#define MCF_GPIO_PODR_FEC0H_PODR_FEC0H0 (0x1) +#define MCF_GPIO_PODR_FEC0H_PODR_FEC0H1 (0x2) +#define MCF_GPIO_PODR_FEC0H_PODR_FEC0H2 (0x4) +#define MCF_GPIO_PODR_FEC0H_PODR_FEC0H3 (0x8) +#define MCF_GPIO_PODR_FEC0H_PODR_FEC0H4 (0x10) +#define MCF_GPIO_PODR_FEC0H_PODR_FEC0H5 (0x20) +#define MCF_GPIO_PODR_FEC0H_PODR_FEC0H6 (0x40) +#define MCF_GPIO_PODR_FEC0H_PODR_FEC0H7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PDDR_FEC0H */ +#define MCF_GPIO_PDDR_FEC0H_PDDR_FEC0H0 (0x1) +#define MCF_GPIO_PDDR_FEC0H_PDDR_FEC0H1 (0x2) +#define MCF_GPIO_PDDR_FEC0H_PDDR_FEC0H2 (0x4) +#define MCF_GPIO_PDDR_FEC0H_PDDR_FEC0H3 (0x8) +#define MCF_GPIO_PDDR_FEC0H_PDDR_FEC0H4 (0x10) +#define MCF_GPIO_PDDR_FEC0H_PDDR_FEC0H5 (0x20) +#define MCF_GPIO_PDDR_FEC0H_PDDR_FEC0H6 (0x40) +#define MCF_GPIO_PDDR_FEC0H_PDDR_FEC0H7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_FEC0H */ +#define MCF_GPIO_PPDSDR_FEC0H_PPDSDR_FEC0H0 (0x1) +#define MCF_GPIO_PPDSDR_FEC0H_PPDSDR_FEC0H1 (0x2) +#define MCF_GPIO_PPDSDR_FEC0H_PPDSDR_FEC0H2 (0x4) +#define MCF_GPIO_PPDSDR_FEC0H_PPDSDR_FEC0H3 (0x8) +#define MCF_GPIO_PPDSDR_FEC0H_PPDSDR_FEC0H4 (0x10) +#define MCF_GPIO_PPDSDR_FEC0H_PPDSDR_FEC0H5 (0x20) +#define MCF_GPIO_PPDSDR_FEC0H_PPDSDR_FEC0H6 (0x40) +#define MCF_GPIO_PPDSDR_FEC0H_PPDSDR_FEC0H7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_FEC0H */ +#define MCF_GPIO_PCLRR_FEC0H_PCLRR_FEC0H0 (0x1) +#define MCF_GPIO_PCLRR_FEC0H_PCLRR_FEC0H1 (0x2) +#define MCF_GPIO_PCLRR_FEC0H_PCLRR_FEC0H2 (0x4) +#define MCF_GPIO_PCLRR_FEC0H_PCLRR_FEC0H3 (0x8) +#define MCF_GPIO_PCLRR_FEC0H_PCLRR_FEC0H4 (0x10) +#define MCF_GPIO_PCLRR_FEC0H_PCLRR_FEC0H5 (0x20) +#define MCF_GPIO_PCLRR_FEC0H_PCLRR_FEC0H6 (0x40) +#define MCF_GPIO_PCLRR_FEC0H_PCLRR_FEC0H7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PODR_FEC0L */ +#define MCF_GPIO_PODR_FEC0L_PODR_FEC0L0 (0x1) +#define MCF_GPIO_PODR_FEC0L_PODR_FEC0L1 (0x2) +#define MCF_GPIO_PODR_FEC0L_PODR_FEC0L2 (0x4) +#define MCF_GPIO_PODR_FEC0L_PODR_FEC0L3 (0x8) +#define MCF_GPIO_PODR_FEC0L_PODR_FEC0L4 (0x10) +#define MCF_GPIO_PODR_FEC0L_PODR_FEC0L5 (0x20) +#define MCF_GPIO_PODR_FEC0L_PODR_FEC0L6 (0x40) +#define MCF_GPIO_PODR_FEC0L_PODR_FEC0L7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PDDR_FEC0L */ +#define MCF_GPIO_PDDR_FEC0L_PDDR_FEC0L0 (0x1) +#define MCF_GPIO_PDDR_FEC0L_PDDR_FEC0L1 (0x2) +#define MCF_GPIO_PDDR_FEC0L_PDDR_FEC0L2 (0x4) +#define MCF_GPIO_PDDR_FEC0L_PDDR_FEC0L3 (0x8) +#define MCF_GPIO_PDDR_FEC0L_PDDR_FEC0L4 (0x10) +#define MCF_GPIO_PDDR_FEC0L_PDDR_FEC0L5 (0x20) +#define MCF_GPIO_PDDR_FEC0L_PDDR_FEC0L6 (0x40) +#define MCF_GPIO_PDDR_FEC0L_PDDR_FEC0L7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_FEC0L */ +#define MCF_GPIO_PPDSDR_FEC0L_PPDSDR_FEC0L0 (0x1) +#define MCF_GPIO_PPDSDR_FEC0L_PPDSDR_FEC0L1 (0x2) +#define MCF_GPIO_PPDSDR_FEC0L_PPDSDR_FEC0L2 (0x4) +#define MCF_GPIO_PPDSDR_FEC0L_PPDSDR_FEC0L3 (0x8) +#define MCF_GPIO_PPDSDR_FEC0L_PPDSDR_FEC0L4 (0x10) +#define MCF_GPIO_PPDSDR_FEC0L_PPDSDR_FEC0L5 (0x20) +#define MCF_GPIO_PPDSDR_FEC0L_PPDSDR_FEC0L6 (0x40) +#define MCF_GPIO_PPDSDR_FEC0L_PPDSDR_FEC0L7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_FEC0L */ +#define MCF_GPIO_PCLRR_FEC0L_PCLRR_FEC0L0 (0x1) +#define MCF_GPIO_PCLRR_FEC0L_PCLRR_FEC0L1 (0x2) +#define MCF_GPIO_PCLRR_FEC0L_PCLRR_FEC0L2 (0x4) +#define MCF_GPIO_PCLRR_FEC0L_PCLRR_FEC0L3 (0x8) +#define MCF_GPIO_PCLRR_FEC0L_PCLRR_FEC0L4 (0x10) +#define MCF_GPIO_PCLRR_FEC0L_PCLRR_FEC0L5 (0x20) +#define MCF_GPIO_PCLRR_FEC0L_PCLRR_FEC0L6 (0x40) +#define MCF_GPIO_PCLRR_FEC0L_PCLRR_FEC0L7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PODR_FEC1H */ +#define MCF_GPIO_PODR_FEC1H_PODR_FEC1H0 (0x1) +#define MCF_GPIO_PODR_FEC1H_PODR_FEC1H1 (0x2) +#define MCF_GPIO_PODR_FEC1H_PODR_FEC1H2 (0x4) +#define MCF_GPIO_PODR_FEC1H_PODR_FEC1H3 (0x8) +#define MCF_GPIO_PODR_FEC1H_PODR_FEC1H4 (0x10) +#define MCF_GPIO_PODR_FEC1H_PODR_FEC1H5 (0x20) +#define MCF_GPIO_PODR_FEC1H_PODR_FEC1H6 (0x40) +#define MCF_GPIO_PODR_FEC1H_PODR_FEC1H7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PDDR_FEC1H */ +#define MCF_GPIO_PDDR_FEC1H_PDDR_FEC1H0 (0x1) +#define MCF_GPIO_PDDR_FEC1H_PDDR_FEC1H1 (0x2) +#define MCF_GPIO_PDDR_FEC1H_PDDR_FEC1H2 (0x4) +#define MCF_GPIO_PDDR_FEC1H_PDDR_FEC1H3 (0x8) +#define MCF_GPIO_PDDR_FEC1H_PDDR_FEC1H4 (0x10) +#define MCF_GPIO_PDDR_FEC1H_PDDR_FEC1H5 (0x20) +#define MCF_GPIO_PDDR_FEC1H_PDDR_FEC1H6 (0x40) +#define MCF_GPIO_PDDR_FEC1H_PDDR_FEC1H7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_FEC1H */ +#define MCF_GPIO_PPDSDR_FEC1H_PPDSDR_FEC1H0 (0x1) +#define MCF_GPIO_PPDSDR_FEC1H_PPDSDR_FEC1H1 (0x2) +#define MCF_GPIO_PPDSDR_FEC1H_PPDSDR_FEC1H2 (0x4) +#define MCF_GPIO_PPDSDR_FEC1H_PPDSDR_FEC1H3 (0x8) +#define MCF_GPIO_PPDSDR_FEC1H_PPDSDR_FEC1H4 (0x10) +#define MCF_GPIO_PPDSDR_FEC1H_PPDSDR_FEC1H5 (0x20) +#define MCF_GPIO_PPDSDR_FEC1H_PPDSDR_FEC1H6 (0x40) +#define MCF_GPIO_PPDSDR_FEC1H_PPDSDR_FEC1H7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_FEC1H */ +#define MCF_GPIO_PCLRR_FEC1H_PCLRR_FEC1H0 (0x1) +#define MCF_GPIO_PCLRR_FEC1H_PCLRR_FEC1H1 (0x2) +#define MCF_GPIO_PCLRR_FEC1H_PCLRR_FEC1H2 (0x4) +#define MCF_GPIO_PCLRR_FEC1H_PCLRR_FEC1H3 (0x8) +#define MCF_GPIO_PCLRR_FEC1H_PCLRR_FEC1H4 (0x10) +#define MCF_GPIO_PCLRR_FEC1H_PCLRR_FEC1H5 (0x20) +#define MCF_GPIO_PCLRR_FEC1H_PCLRR_FEC1H6 (0x40) +#define MCF_GPIO_PCLRR_FEC1H_PCLRR_FEC1H7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PODR_FEC1L */ +#define MCF_GPIO_PODR_FEC1L_PODR_FEC1L0 (0x1) +#define MCF_GPIO_PODR_FEC1L_PODR_FEC1L1 (0x2) +#define MCF_GPIO_PODR_FEC1L_PODR_FEC1L2 (0x4) +#define MCF_GPIO_PODR_FEC1L_PODR_FEC1L3 (0x8) +#define MCF_GPIO_PODR_FEC1L_PODR_FEC1L4 (0x10) +#define MCF_GPIO_PODR_FEC1L_PODR_FEC1L5 (0x20) +#define MCF_GPIO_PODR_FEC1L_PODR_FEC1L6 (0x40) +#define MCF_GPIO_PODR_FEC1L_PODR_FEC1L7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PDDR_FEC1L */ +#define MCF_GPIO_PDDR_FEC1L_PDDR_FEC1L0 (0x1) +#define MCF_GPIO_PDDR_FEC1L_PDDR_FEC1L1 (0x2) +#define MCF_GPIO_PDDR_FEC1L_PDDR_FEC1L2 (0x4) +#define MCF_GPIO_PDDR_FEC1L_PDDR_FEC1L3 (0x8) +#define MCF_GPIO_PDDR_FEC1L_PDDR_FEC1L4 (0x10) +#define MCF_GPIO_PDDR_FEC1L_PDDR_FEC1L5 (0x20) +#define MCF_GPIO_PDDR_FEC1L_PDDR_FEC1L6 (0x40) +#define MCF_GPIO_PDDR_FEC1L_PDDR_FEC1L7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_FEC1L */ +#define MCF_GPIO_PPDSDR_FEC1L_PPDSDR_FEC1L0 (0x1) +#define MCF_GPIO_PPDSDR_FEC1L_PPDSDR_FEC1L1 (0x2) +#define MCF_GPIO_PPDSDR_FEC1L_PPDSDR_FEC1L2 (0x4) +#define MCF_GPIO_PPDSDR_FEC1L_PPDSDR_FEC1L3 (0x8) +#define MCF_GPIO_PPDSDR_FEC1L_PPDSDR_FEC1L4 (0x10) +#define MCF_GPIO_PPDSDR_FEC1L_PPDSDR_FEC1L5 (0x20) +#define MCF_GPIO_PPDSDR_FEC1L_PPDSDR_FEC1L6 (0x40) +#define MCF_GPIO_PPDSDR_FEC1L_PPDSDR_FEC1L7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_FEC1L */ +#define MCF_GPIO_PCLRR_FEC1L_PCLRR_FEC1L0 (0x1) +#define MCF_GPIO_PCLRR_FEC1L_PCLRR_FEC1L1 (0x2) +#define MCF_GPIO_PCLRR_FEC1L_PCLRR_FEC1L2 (0x4) +#define MCF_GPIO_PCLRR_FEC1L_PCLRR_FEC1L3 (0x8) +#define MCF_GPIO_PCLRR_FEC1L_PCLRR_FEC1L4 (0x10) +#define MCF_GPIO_PCLRR_FEC1L_PCLRR_FEC1L5 (0x20) +#define MCF_GPIO_PCLRR_FEC1L_PCLRR_FEC1L6 (0x40) +#define MCF_GPIO_PCLRR_FEC1L_PCLRR_FEC1L7 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PODR_FECI2C */ +#define MCF_GPIO_PODR_FECI2C_PODR_FECI2C0 (0x1) +#define MCF_GPIO_PODR_FECI2C_PODR_FECI2C1 (0x2) +#define MCF_GPIO_PODR_FECI2C_PODR_FECI2C2 (0x4) +#define MCF_GPIO_PODR_FECI2C_PODR_FECI2C3 (0x8) + +/* Bit definitions and macros for MCF_GPIO_PDDR_FECI2C */ +#define MCF_GPIO_PDDR_FECI2C_PDDR_FECI2C0 (0x1) +#define MCF_GPIO_PDDR_FECI2C_PDDR_FECI2C1 (0x2) +#define MCF_GPIO_PDDR_FECI2C_PDDR_FECI2C2 (0x4) +#define MCF_GPIO_PDDR_FECI2C_PDDR_FECI2C3 (0x8) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_FECI2C */ +#define MCF_GPIO_PPDSDR_FECI2C_PPDSDR_FECI2C0 (0x1) +#define MCF_GPIO_PPDSDR_FECI2C_PPDSDR_FECI2C1 (0x2) +#define MCF_GPIO_PPDSDR_FECI2C_PPDSDR_FECI2C2 (0x4) +#define MCF_GPIO_PPDSDR_FECI2C_PPDSDR_FECI2C3 (0x8) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_FECI2C */ +#define MCF_GPIO_PCLRR_FECI2C_PCLRR_FECI2C0 (0x1) +#define MCF_GPIO_PCLRR_FECI2C_PCLRR_FECI2C1 (0x2) +#define MCF_GPIO_PCLRR_FECI2C_PCLRR_FECI2C2 (0x4) +#define MCF_GPIO_PCLRR_FECI2C_PCLRR_FECI2C3 (0x8) + +/* Bit definitions and macros for MCF_GPIO_PODR_PCIBG */ +#define MCF_GPIO_PODR_PCIBG_PODR_PCIBG0 (0x1) +#define MCF_GPIO_PODR_PCIBG_PODR_PCIBG1 (0x2) +#define MCF_GPIO_PODR_PCIBG_PODR_PCIBG2 (0x4) +#define MCF_GPIO_PODR_PCIBG_PODR_PCIBG3 (0x8) +#define MCF_GPIO_PODR_PCIBG_PODR_PCIBG4 (0x10) + +/* Bit definitions and macros for MCF_GPIO_PDDR_PCIBG */ +#define MCF_GPIO_PDDR_PCIBG_PDDR_PCIBG0 (0x1) +#define MCF_GPIO_PDDR_PCIBG_PDDR_PCIBG1 (0x2) +#define MCF_GPIO_PDDR_PCIBG_PDDR_PCIBG2 (0x4) +#define MCF_GPIO_PDDR_PCIBG_PDDR_PCIBG3 (0x8) +#define MCF_GPIO_PDDR_PCIBG_PDDR_PCIBG4 (0x10) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_PCIBG */ +#define MCF_GPIO_PPDSDR_PCIBG_PPDSDR_PCIBG0 (0x1) +#define MCF_GPIO_PPDSDR_PCIBG_PPDSDR_PCIBG1 (0x2) +#define MCF_GPIO_PPDSDR_PCIBG_PPDSDR_PCIBG2 (0x4) +#define MCF_GPIO_PPDSDR_PCIBG_PPDSDR_PCIBG3 (0x8) +#define MCF_GPIO_PPDSDR_PCIBG_PPDSDR_PCIBG4 (0x10) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_PCIBG */ +#define MCF_GPIO_PCLRR_PCIBG_PCLRR_PCIBG0 (0x1) +#define MCF_GPIO_PCLRR_PCIBG_PCLRR_PCIBG1 (0x2) +#define MCF_GPIO_PCLRR_PCIBG_PCLRR_PCIBG2 (0x4) +#define MCF_GPIO_PCLRR_PCIBG_PCLRR_PCIBG3 (0x8) +#define MCF_GPIO_PCLRR_PCIBG_PCLRR_PCIBG4 (0x10) + +/* Bit definitions and macros for MCF_GPIO_PODR_PCIBR */ +#define MCF_GPIO_PODR_PCIBR_PODR_PCIBR0 (0x1) +#define MCF_GPIO_PODR_PCIBR_PODR_PCIBR1 (0x2) +#define MCF_GPIO_PODR_PCIBR_PODR_PCIBR2 (0x4) +#define MCF_GPIO_PODR_PCIBR_PODR_PCIBR3 (0x8) +#define MCF_GPIO_PODR_PCIBR_PODR_PCIBR4 (0x10) + +/* Bit definitions and macros for MCF_GPIO_PDDR_PCIBR */ +#define MCF_GPIO_PDDR_PCIBR_PDDR_PCIBR0 (0x1) +#define MCF_GPIO_PDDR_PCIBR_PDDR_PCIBR1 (0x2) +#define MCF_GPIO_PDDR_PCIBR_PDDR_PCIBR2 (0x4) +#define MCF_GPIO_PDDR_PCIBR_PDDR_PCIBR3 (0x8) +#define MCF_GPIO_PDDR_PCIBR_PDDR_PCIBR4 (0x10) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_PCIBR */ +#define MCF_GPIO_PPDSDR_PCIBR_PPDSDR_PCIBR0 (0x1) +#define MCF_GPIO_PPDSDR_PCIBR_PPDSDR_PCIBR1 (0x2) +#define MCF_GPIO_PPDSDR_PCIBR_PPDSDR_PCIBR2 (0x4) +#define MCF_GPIO_PPDSDR_PCIBR_PPDSDR_PCIBR3 (0x8) +#define MCF_GPIO_PPDSDR_PCIBR_PPDSDR_PCIBR4 (0x10) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_PCIBR */ +#define MCF_GPIO_PCLRR_PCIBR_PCLRR_PCIBR0 (0x1) +#define MCF_GPIO_PCLRR_PCIBR_PCLRR_PCIBR1 (0x2) +#define MCF_GPIO_PCLRR_PCIBR_PCLRR_PCIBR2 (0x4) +#define MCF_GPIO_PCLRR_PCIBR_PCLRR_PCIBR3 (0x8) +#define MCF_GPIO_PCLRR_PCIBR_PCLRR_PCIBR4 (0x10) + +/* Bit definitions and macros for MCF_GPIO_PODR_PSC3PSC */ +#define MCF_GPIO_PODR_PSC3PSC_PODR_PSC3PSC20 (0x1) +#define MCF_GPIO_PODR_PSC3PSC_PODR_PSC3PSC21 (0x2) +#define MCF_GPIO_PODR_PSC3PSC_PODR_PSC3PSC22 (0x4) +#define MCF_GPIO_PODR_PSC3PSC_PODR_PSC3PSC23 (0x8) +#define MCF_GPIO_PODR_PSC3PSC_PODR_PSC3PSC24 (0x10) +#define MCF_GPIO_PODR_PSC3PSC_PODR_PSC3PSC25 (0x20) +#define MCF_GPIO_PODR_PSC3PSC_PODR_PSC3PSC26 (0x40) +#define MCF_GPIO_PODR_PSC3PSC_PODR_PSC3PSC27 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PDDR_PSC3PSC */ +#define MCF_GPIO_PDDR_PSC3PSC_PDDR_PSC3PSC20 (0x1) +#define MCF_GPIO_PDDR_PSC3PSC_PDDR_PSC3PSC21 (0x2) +#define MCF_GPIO_PDDR_PSC3PSC_PDDR_PSC3PSC22 (0x4) +#define MCF_GPIO_PDDR_PSC3PSC_PDDR_PSC3PSC23 (0x8) +#define MCF_GPIO_PDDR_PSC3PSC_PDDR_PSC3PSC24 (0x10) +#define MCF_GPIO_PDDR_PSC3PSC_PDDR_PSC3PSC25 (0x20) +#define MCF_GPIO_PDDR_PSC3PSC_PDDR_PSC3PSC26 (0x40) +#define MCF_GPIO_PDDR_PSC3PSC_PDDR_PSC3PSC27 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_PSC3PSC */ +#define MCF_GPIO_PPDSDR_PSC3PSC_PPDSDR_PSC3PSC20 (0x1) +#define MCF_GPIO_PPDSDR_PSC3PSC_PPDSDR_PSC3PSC21 (0x2) +#define MCF_GPIO_PPDSDR_PSC3PSC_PPDSDR_PSC3PSC22 (0x4) +#define MCF_GPIO_PPDSDR_PSC3PSC_PPDSDR_PSC3PSC23 (0x8) +#define MCF_GPIO_PPDSDR_PSC3PSC_PPDSDR_PSC3PSC24 (0x10) +#define MCF_GPIO_PPDSDR_PSC3PSC_PPDSDR_PSC3PSC25 (0x20) +#define MCF_GPIO_PPDSDR_PSC3PSC_PPDSDR_PSC3PSC26 (0x40) +#define MCF_GPIO_PPDSDR_PSC3PSC_PPDSDR_PSC3PSC27 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_PSC3PSC */ +#define MCF_GPIO_PCLRR_PSC3PSC_PCLRR_PSC3PSC20 (0x1) +#define MCF_GPIO_PCLRR_PSC3PSC_PCLRR_PSC3PSC21 (0x2) +#define MCF_GPIO_PCLRR_PSC3PSC_PCLRR_PSC3PSC22 (0x4) +#define MCF_GPIO_PCLRR_PSC3PSC_PCLRR_PSC3PSC23 (0x8) +#define MCF_GPIO_PCLRR_PSC3PSC_PCLRR_PSC3PSC24 (0x10) +#define MCF_GPIO_PCLRR_PSC3PSC_PCLRR_PSC3PSC25 (0x20) +#define MCF_GPIO_PCLRR_PSC3PSC_PCLRR_PSC3PSC26 (0x40) +#define MCF_GPIO_PCLRR_PSC3PSC_PCLRR_PSC3PSC27 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PODR_PSC1PSC */ +#define MCF_GPIO_PODR_PSC1PSC_PODR_PSC1PSC00 (0x1) +#define MCF_GPIO_PODR_PSC1PSC_PODR_PSC1PSC01 (0x2) +#define MCF_GPIO_PODR_PSC1PSC_PODR_PSC1PSC02 (0x4) +#define MCF_GPIO_PODR_PSC1PSC_PODR_PSC1PSC03 (0x8) +#define MCF_GPIO_PODR_PSC1PSC_PODR_PSC1PSC04 (0x10) +#define MCF_GPIO_PODR_PSC1PSC_PODR_PSC1PSC05 (0x20) +#define MCF_GPIO_PODR_PSC1PSC_PODR_PSC1PSC06 (0x40) +#define MCF_GPIO_PODR_PSC1PSC_PODR_PSC1PSC07 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PDDR_PSC1PSC */ +#define MCF_GPIO_PDDR_PSC1PSC_PDDR_PSC1PSC00 (0x1) +#define MCF_GPIO_PDDR_PSC1PSC_PDDR_PSC1PSC01 (0x2) +#define MCF_GPIO_PDDR_PSC1PSC_PDDR_PSC1PSC02 (0x4) +#define MCF_GPIO_PDDR_PSC1PSC_PDDR_PSC1PSC03 (0x8) +#define MCF_GPIO_PDDR_PSC1PSC_PDDR_PSC1PSC04 (0x10) +#define MCF_GPIO_PDDR_PSC1PSC_PDDR_PSC1PSC05 (0x20) +#define MCF_GPIO_PDDR_PSC1PSC_PDDR_PSC1PSC06 (0x40) +#define MCF_GPIO_PDDR_PSC1PSC_PDDR_PSC1PSC07 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_PSC1PSC */ +#define MCF_GPIO_PPDSDR_PSC1PSC_PPDSDR_PSC1PSC00 (0x1) +#define MCF_GPIO_PPDSDR_PSC1PSC_PPDSDR_PSC1PSC01 (0x2) +#define MCF_GPIO_PPDSDR_PSC1PSC_PPDSDR_PSC1PSC02 (0x4) +#define MCF_GPIO_PPDSDR_PSC1PSC_PPDSDR_PSC1PSC03 (0x8) +#define MCF_GPIO_PPDSDR_PSC1PSC_PPDSDR_PSC1PSC04 (0x10) +#define MCF_GPIO_PPDSDR_PSC1PSC_PPDSDR_PSC1PSC05 (0x20) +#define MCF_GPIO_PPDSDR_PSC1PSC_PPDSDR_PSC1PSC06 (0x40) +#define MCF_GPIO_PPDSDR_PSC1PSC_PPDSDR_PSC1PSC07 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_PSC1PSC */ +#define MCF_GPIO_PCLRR_PSC1PSC_PCLRR_PSC1PSC00 (0x1) +#define MCF_GPIO_PCLRR_PSC1PSC_PCLRR_PSC1PSC01 (0x2) +#define MCF_GPIO_PCLRR_PSC1PSC_PCLRR_PSC1PSC02 (0x4) +#define MCF_GPIO_PCLRR_PSC1PSC_PCLRR_PSC1PSC03 (0x8) +#define MCF_GPIO_PCLRR_PSC1PSC_PCLRR_PSC1PSC04 (0x10) +#define MCF_GPIO_PCLRR_PSC1PSC_PCLRR_PSC1PSC05 (0x20) +#define MCF_GPIO_PCLRR_PSC1PSC_PCLRR_PSC1PSC06 (0x40) +#define MCF_GPIO_PCLRR_PSC1PSC_PCLRR_PSC1PSC07 (0x80) + +/* Bit definitions and macros for MCF_GPIO_PODR_DSPI */ +#define MCF_GPIO_PODR_DSPI_PODR_DSPI0 (0x1) +#define MCF_GPIO_PODR_DSPI_PODR_DSPI1 (0x2) +#define MCF_GPIO_PODR_DSPI_PODR_DSPI2 (0x4) +#define MCF_GPIO_PODR_DSPI_PODR_DSPI3 (0x8) +#define MCF_GPIO_PODR_DSPI_PODR_DSPI4 (0x10) +#define MCF_GPIO_PODR_DSPI_PODR_DSPI5 (0x20) +#define MCF_GPIO_PODR_DSPI_PODR_DSPI6 (0x40) + +/* Bit definitions and macros for MCF_GPIO_PDDR_DSPI */ +#define MCF_GPIO_PDDR_DSPI_PDDR_DSPI0 (0x1) +#define MCF_GPIO_PDDR_DSPI_PDDR_DSPI1 (0x2) +#define MCF_GPIO_PDDR_DSPI_PDDR_DSPI2 (0x4) +#define MCF_GPIO_PDDR_DSPI_PDDR_DSPI3 (0x8) +#define MCF_GPIO_PDDR_DSPI_PDDR_DSPI4 (0x10) +#define MCF_GPIO_PDDR_DSPI_PDDR_DSPI5 (0x20) +#define MCF_GPIO_PDDR_DSPI_PDDR_DSPI6 (0x40) + +/* Bit definitions and macros for MCF_GPIO_PPDSDR_DSPI */ +#define MCF_GPIO_PPDSDR_DSPI_PPDSDR_DSPI0 (0x1) +#define MCF_GPIO_PPDSDR_DSPI_PPDSDR_DSPI1 (0x2) +#define MCF_GPIO_PPDSDR_DSPI_PPDSDR_DSPI2 (0x4) +#define MCF_GPIO_PPDSDR_DSPI_PPDSDR_DSPI3 (0x8) +#define MCF_GPIO_PPDSDR_DSPI_PPDSDR_DSPI4 (0x10) +#define MCF_GPIO_PPDSDR_DSPI_PPDSDR_DSPI5 (0x20) +#define MCF_GPIO_PPDSDR_DSPI_PPDSDR_DSPI6 (0x40) + +/* Bit definitions and macros for MCF_GPIO_PCLRR_DSPI */ +#define MCF_GPIO_PCLRR_DSPI_PCLRR_DSPI0 (0x1) +#define MCF_GPIO_PCLRR_DSPI_PCLRR_DSPI1 (0x2) +#define MCF_GPIO_PCLRR_DSPI_PCLRR_DSPI2 (0x4) +#define MCF_GPIO_PCLRR_DSPI_PCLRR_DSPI3 (0x8) +#define MCF_GPIO_PCLRR_DSPI_PCLRR_DSPI4 (0x10) +#define MCF_GPIO_PCLRR_DSPI_PCLRR_DSPI5 (0x20) +#define MCF_GPIO_PCLRR_DSPI_PCLRR_DSPI6 (0x40) + + +#endif /* __MCF5475_GPIO_H__ */ diff --git a/BaS_gcc/tos/pci_mem/include/MCF5475_GPT.h b/BaS_gcc/tos/pci_mem/include/MCF5475_GPT.h new file mode 100644 index 0000000..f9fbc98 --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/MCF5475_GPT.h @@ -0,0 +1,100 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_GPT_H__ +#define __MCF5475_GPT_H__ + + +/********************************************************************* +* +* General Purpose Timers (GPT) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_GPT0_GMS (*(volatile uint32_t*)(&_MBAR[0x800])) +#define MCF_GPT0_GCIR (*(volatile uint32_t*)(&_MBAR[0x804])) +#define MCF_GPT0_GPWM (*(volatile uint32_t*)(&_MBAR[0x808])) +#define MCF_GPT0_GSR (*(volatile uint32_t*)(&_MBAR[0x80C])) + +#define MCF_GPT1_GMS (*(volatile uint32_t*)(&_MBAR[0x810])) +#define MCF_GPT1_GCIR (*(volatile uint32_t*)(&_MBAR[0x814])) +#define MCF_GPT1_GPWM (*(volatile uint32_t*)(&_MBAR[0x818])) +#define MCF_GPT1_GSR (*(volatile uint32_t*)(&_MBAR[0x81C])) + +#define MCF_GPT2_GMS (*(volatile uint32_t*)(&_MBAR[0x820])) +#define MCF_GPT2_GCIR (*(volatile uint32_t*)(&_MBAR[0x824])) +#define MCF_GPT2_GPWM (*(volatile uint32_t*)(&_MBAR[0x828])) +#define MCF_GPT2_GSR (*(volatile uint32_t*)(&_MBAR[0x82C])) + +#define MCF_GPT3_GMS (*(volatile uint32_t*)(&_MBAR[0x830])) +#define MCF_GPT3_GCIR (*(volatile uint32_t*)(&_MBAR[0x834])) +#define MCF_GPT3_GPWM (*(volatile uint32_t*)(&_MBAR[0x838])) +#define MCF_GPT3_GSR (*(volatile uint32_t*)(&_MBAR[0x83C])) + +#define MCF_GPT_GMS(x) (*(volatile uint32_t*)(&_MBAR[0x800 + ((x)*0x10)])) +#define MCF_GPT_GCIR(x) (*(volatile uint32_t*)(&_MBAR[0x804 + ((x)*0x10)])) +#define MCF_GPT_GPWM(x) (*(volatile uint32_t*)(&_MBAR[0x808 + ((x)*0x10)])) +#define MCF_GPT_GSR(x) (*(volatile uint32_t*)(&_MBAR[0x80C + ((x)*0x10)])) + + +/* Bit definitions and macros for MCF_GPT_GMS */ +#define MCF_GPT_GMS_TMS(x) (((x)&0x7)<<0) +#define MCF_GPT_GMS_TMS_DISABLE (0) +#define MCF_GPT_GMS_TMS_INCAPT (0x1) +#define MCF_GPT_GMS_TMS_OUTCAPT (0x2) +#define MCF_GPT_GMS_TMS_PWM (0x3) +#define MCF_GPT_GMS_TMS_GPIO (0x4) +#define MCF_GPT_GMS_GPIO(x) (((x)&0x3)<<0x4) +#define MCF_GPT_GMS_GPIO_INPUT (0) +#define MCF_GPT_GMS_GPIO_OUTLO (0x20) +#define MCF_GPT_GMS_GPIO_OUTHI (0x30) +#define MCF_GPT_GMS_IEN (0x100) +#define MCF_GPT_GMS_OD (0x200) +#define MCF_GPT_GMS_SC (0x400) +#define MCF_GPT_GMS_CE (0x1000) +#define MCF_GPT_GMS_WDEN (0x8000) +#define MCF_GPT_GMS_ICT(x) (((x)&0x3)<<0x10) +#define MCF_GPT_GMS_ICT_ANY (0) +#define MCF_GPT_GMS_ICT_RISE (0x10000) +#define MCF_GPT_GMS_ICT_FALL (0x20000) +#define MCF_GPT_GMS_ICT_PULSE (0x30000) +#define MCF_GPT_GMS_OCT(x) (((x)&0x3)<<0x14) +#define MCF_GPT_GMS_OCT_FRCLOW (0) +#define MCF_GPT_GMS_OCT_PULSEHI (0x100000) +#define MCF_GPT_GMS_OCT_PULSELO (0x200000) +#define MCF_GPT_GMS_OCT_TOGGLE (0x300000) +#define MCF_GPT_GMS_OCPW(x) (((x)&0xFF)<<0x18) + +/* Bit definitions and macros for MCF_GPT_GCIR */ +#define MCF_GPT_GCIR_CNT(x) (((x)&0xFFFF)<<0) +#define MCF_GPT_GCIR_PRE(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_GPT_GPWM */ +#define MCF_GPT_GPWM_LOAD (0x1) +#define MCF_GPT_GPWM_PWMOP (0x100) +#define MCF_GPT_GPWM_WIDTH(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_GPT_GSR */ +#define MCF_GPT_GSR_CAPT (0x1) +#define MCF_GPT_GSR_COMP (0x2) +#define MCF_GPT_GSR_PWMP (0x4) +#define MCF_GPT_GSR_TEXP (0x8) +#define MCF_GPT_GSR_PIN (0x100) +#define MCF_GPT_GSR_OVF(x) (((x)&0x7)<<0xC) +#define MCF_GPT_GSR_CAPTURE(x) (((x)&0xFFFF)<<0x10) + + +#endif /* __MCF5475_GPT_H__ */ diff --git a/BaS_gcc/tos/pci_mem/include/MCF5475_I2C.h b/BaS_gcc/tos/pci_mem/include/MCF5475_I2C.h new file mode 100644 index 0000000..1e8a85b --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/MCF5475_I2C.h @@ -0,0 +1,69 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_I2C_H__ +#define __MCF5475_I2C_H__ + + +/********************************************************************* +* +* I2C Module (I2C) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_I2C_I2ADR (*(volatile uint8_t *)(&_MBAR[0x8F00])) +#define MCF_I2C_I2FDR (*(volatile uint8_t *)(&_MBAR[0x8F04])) +#define MCF_I2C_I2CR (*(volatile uint8_t *)(&_MBAR[0x8F08])) +#define MCF_I2C_I2SR (*(volatile uint8_t *)(&_MBAR[0x8F0C])) +#define MCF_I2C_I2DR (*(volatile uint8_t *)(&_MBAR[0x8F10])) +#define MCF_I2C_I2ICR (*(volatile uint8_t *)(&_MBAR[0x8F20])) + + + +/* Bit definitions and macros for MCF_I2C_I2ADR */ +#define MCF_I2C_I2ADR_ADR(x) (((x)&0x7F)<<0x1) + +/* Bit definitions and macros for MCF_I2C_I2FDR */ +#define MCF_I2C_I2FDR_IC(x) (((x)&0x3F)<<0) + +/* Bit definitions and macros for MCF_I2C_I2CR */ +#define MCF_I2C_I2CR_RSTA (0x4) +#define MCF_I2C_I2CR_TXAK (0x8) +#define MCF_I2C_I2CR_MTX (0x10) +#define MCF_I2C_I2CR_MSTA (0x20) +#define MCF_I2C_I2CR_IIEN (0x40) +#define MCF_I2C_I2CR_IEN (0x80) + +/* Bit definitions and macros for MCF_I2C_I2SR */ +#define MCF_I2C_I2SR_RXAK (0x1) +#define MCF_I2C_I2SR_IIF (0x2) +#define MCF_I2C_I2SR_SRW (0x4) +#define MCF_I2C_I2SR_IAL (0x10) +#define MCF_I2C_I2SR_IBB (0x20) +#define MCF_I2C_I2SR_IAAS (0x40) +#define MCF_I2C_I2SR_ICF (0x80) + +/* Bit definitions and macros for MCF_I2C_I2DR */ +#define MCF_I2C_I2DR_DATA(x) (((x)&0xFF)<<0) + +/* Bit definitions and macros for MCF_I2C_I2ICR */ +#define MCF_I2C_I2ICR_IE (0x1) +#define MCF_I2C_I2ICR_RE (0x2) +#define MCF_I2C_I2ICR_TE (0x4) +#define MCF_I2C_I2ICR_BNBE (0x8) + + +#endif /* __MCF5475_I2C_H__ */ diff --git a/BaS_gcc/tos/pci_mem/include/MCF5475_INTC.h b/BaS_gcc/tos/pci_mem/include/MCF5475_INTC.h new file mode 100644 index 0000000..61265ed --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/MCF5475_INTC.h @@ -0,0 +1,331 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_INTC_H__ +#define __MCF5475_INTC_H__ + + +/********************************************************************* +* +* Interrupt Controller (INTC) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_INTC_IPRH (*(volatile uint32_t*)(&_MBAR[0x700])) +#define MCF_INTC_IPRL (*(volatile uint32_t*)(&_MBAR[0x704])) +#define MCF_INTC_IMRH (*(volatile uint32_t*)(&_MBAR[0x708])) +#define MCF_INTC_IMRL (*(volatile uint32_t*)(&_MBAR[0x70C])) +#define MCF_INTC_INTFRCH (*(volatile uint32_t*)(&_MBAR[0x710])) +#define MCF_INTC_INTFRCL (*(volatile uint32_t*)(&_MBAR[0x714])) +#define MCF_INTC_IRLR (*(volatile uint8_t *)(&_MBAR[0x718])) +#define MCF_INTC_IACKLPR (*(volatile uint8_t *)(&_MBAR[0x719])) +#define MCF_INTC_ICR01 (*(volatile uint8_t *)(&_MBAR[0x741])) +#define MCF_INTC_ICR02 (*(volatile uint8_t *)(&_MBAR[0x742])) +#define MCF_INTC_ICR03 (*(volatile uint8_t *)(&_MBAR[0x743])) +#define MCF_INTC_ICR04 (*(volatile uint8_t *)(&_MBAR[0x744])) +#define MCF_INTC_ICR05 (*(volatile uint8_t *)(&_MBAR[0x745])) +#define MCF_INTC_ICR06 (*(volatile uint8_t *)(&_MBAR[0x746])) +#define MCF_INTC_ICR07 (*(volatile uint8_t *)(&_MBAR[0x747])) +#define MCF_INTC_ICR08 (*(volatile uint8_t *)(&_MBAR[0x748])) +#define MCF_INTC_ICR09 (*(volatile uint8_t *)(&_MBAR[0x749])) +#define MCF_INTC_ICR10 (*(volatile uint8_t *)(&_MBAR[0x74A])) +#define MCF_INTC_ICR11 (*(volatile uint8_t *)(&_MBAR[0x74B])) +#define MCF_INTC_ICR12 (*(volatile uint8_t *)(&_MBAR[0x74C])) +#define MCF_INTC_ICR13 (*(volatile uint8_t *)(&_MBAR[0x74D])) +#define MCF_INTC_ICR14 (*(volatile uint8_t *)(&_MBAR[0x74E])) +#define MCF_INTC_ICR15 (*(volatile uint8_t *)(&_MBAR[0x74F])) +#define MCF_INTC_ICR16 (*(volatile uint8_t *)(&_MBAR[0x750])) +#define MCF_INTC_ICR17 (*(volatile uint8_t *)(&_MBAR[0x751])) +#define MCF_INTC_ICR18 (*(volatile uint8_t *)(&_MBAR[0x752])) +#define MCF_INTC_ICR19 (*(volatile uint8_t *)(&_MBAR[0x753])) +#define MCF_INTC_ICR20 (*(volatile uint8_t *)(&_MBAR[0x754])) +#define MCF_INTC_ICR21 (*(volatile uint8_t *)(&_MBAR[0x755])) +#define MCF_INTC_ICR22 (*(volatile uint8_t *)(&_MBAR[0x756])) +#define MCF_INTC_ICR23 (*(volatile uint8_t *)(&_MBAR[0x757])) +#define MCF_INTC_ICR24 (*(volatile uint8_t *)(&_MBAR[0x758])) +#define MCF_INTC_ICR25 (*(volatile uint8_t *)(&_MBAR[0x759])) +#define MCF_INTC_ICR26 (*(volatile uint8_t *)(&_MBAR[0x75A])) +#define MCF_INTC_ICR27 (*(volatile uint8_t *)(&_MBAR[0x75B])) +#define MCF_INTC_ICR28 (*(volatile uint8_t *)(&_MBAR[0x75C])) +#define MCF_INTC_ICR29 (*(volatile uint8_t *)(&_MBAR[0x75D])) +#define MCF_INTC_ICR30 (*(volatile uint8_t *)(&_MBAR[0x75E])) +#define MCF_INTC_ICR31 (*(volatile uint8_t *)(&_MBAR[0x75F])) +#define MCF_INTC_ICR32 (*(volatile uint8_t *)(&_MBAR[0x760])) +#define MCF_INTC_ICR33 (*(volatile uint8_t *)(&_MBAR[0x761])) +#define MCF_INTC_ICR34 (*(volatile uint8_t *)(&_MBAR[0x762])) +#define MCF_INTC_ICR35 (*(volatile uint8_t *)(&_MBAR[0x763])) +#define MCF_INTC_ICR36 (*(volatile uint8_t *)(&_MBAR[0x764])) +#define MCF_INTC_ICR37 (*(volatile uint8_t *)(&_MBAR[0x765])) +#define MCF_INTC_ICR38 (*(volatile uint8_t *)(&_MBAR[0x766])) +#define MCF_INTC_ICR39 (*(volatile uint8_t *)(&_MBAR[0x767])) +#define MCF_INTC_ICR40 (*(volatile uint8_t *)(&_MBAR[0x768])) +#define MCF_INTC_ICR41 (*(volatile uint8_t *)(&_MBAR[0x769])) +#define MCF_INTC_ICR42 (*(volatile uint8_t *)(&_MBAR[0x76A])) +#define MCF_INTC_ICR43 (*(volatile uint8_t *)(&_MBAR[0x76B])) +#define MCF_INTC_ICR44 (*(volatile uint8_t *)(&_MBAR[0x76C])) +#define MCF_INTC_ICR45 (*(volatile uint8_t *)(&_MBAR[0x76D])) +#define MCF_INTC_ICR46 (*(volatile uint8_t *)(&_MBAR[0x76E])) +#define MCF_INTC_ICR47 (*(volatile uint8_t *)(&_MBAR[0x76F])) +#define MCF_INTC_ICR48 (*(volatile uint8_t *)(&_MBAR[0x770])) +#define MCF_INTC_ICR49 (*(volatile uint8_t *)(&_MBAR[0x771])) +#define MCF_INTC_ICR50 (*(volatile uint8_t *)(&_MBAR[0x772])) +#define MCF_INTC_ICR51 (*(volatile uint8_t *)(&_MBAR[0x773])) +#define MCF_INTC_ICR52 (*(volatile uint8_t *)(&_MBAR[0x774])) +#define MCF_INTC_ICR53 (*(volatile uint8_t *)(&_MBAR[0x775])) +#define MCF_INTC_ICR54 (*(volatile uint8_t *)(&_MBAR[0x776])) +#define MCF_INTC_ICR55 (*(volatile uint8_t *)(&_MBAR[0x777])) +#define MCF_INTC_ICR56 (*(volatile uint8_t *)(&_MBAR[0x778])) +#define MCF_INTC_ICR57 (*(volatile uint8_t *)(&_MBAR[0x779])) +#define MCF_INTC_ICR58 (*(volatile uint8_t *)(&_MBAR[0x77A])) +#define MCF_INTC_ICR59 (*(volatile uint8_t *)(&_MBAR[0x77B])) +#define MCF_INTC_ICR60 (*(volatile uint8_t *)(&_MBAR[0x77C])) +#define MCF_INTC_ICR61 (*(volatile uint8_t *)(&_MBAR[0x77D])) +#define MCF_INTC_ICR62 (*(volatile uint8_t *)(&_MBAR[0x77E])) +#define MCF_INTC_ICR63 (*(volatile uint8_t *)(&_MBAR[0x77F])) +#define MCF_INTC_SWIACK (*(volatile uint8_t *)(&_MBAR[0x7E0])) +#define MCF_INTC_L1IACK (*(volatile uint8_t *)(&_MBAR[0x7E4])) +#define MCF_INTC_L2IACK (*(volatile uint8_t *)(&_MBAR[0x7E8])) +#define MCF_INTC_L3IACK (*(volatile uint8_t *)(&_MBAR[0x7EC])) +#define MCF_INTC_L4IACK (*(volatile uint8_t *)(&_MBAR[0x7F0])) +#define MCF_INTC_L5IACK (*(volatile uint8_t *)(&_MBAR[0x7F4])) +#define MCF_INTC_L6IACK (*(volatile uint8_t *)(&_MBAR[0x7F8])) +#define MCF_INTC_L7IACK (*(volatile uint8_t *)(&_MBAR[0x7FC])) +#define MCF_INTC_ICR(x) (*(volatile uint8_t *)(&_MBAR[0x741 + ((x-1)*0x1)])) +#define MCF_INTC_LIACK(x) (*(volatile uint8_t *)(&_MBAR[0x7E4 + ((x-1)*0x4)])) + + + +/* Bit definitions and macros for MCF_INTC_IPRH */ +#define MCF_INTC_IPRH_INT32 (0x1) +#define MCF_INTC_IPRH_INT33 (0x2) +#define MCF_INTC_IPRH_INT34 (0x4) +#define MCF_INTC_IPRH_INT35 (0x8) +#define MCF_INTC_IPRH_INT36 (0x10) +#define MCF_INTC_IPRH_INT37 (0x20) +#define MCF_INTC_IPRH_INT38 (0x40) +#define MCF_INTC_IPRH_INT39 (0x80) +#define MCF_INTC_IPRH_INT40 (0x100) +#define MCF_INTC_IPRH_INT41 (0x200) +#define MCF_INTC_IPRH_INT42 (0x400) +#define MCF_INTC_IPRH_INT43 (0x800) +#define MCF_INTC_IPRH_INT44 (0x1000) +#define MCF_INTC_IPRH_INT45 (0x2000) +#define MCF_INTC_IPRH_INT46 (0x4000) +#define MCF_INTC_IPRH_INT47 (0x8000) +#define MCF_INTC_IPRH_INT48 (0x10000) +#define MCF_INTC_IPRH_INT49 (0x20000) +#define MCF_INTC_IPRH_INT50 (0x40000) +#define MCF_INTC_IPRH_INT51 (0x80000) +#define MCF_INTC_IPRH_INT52 (0x100000) +#define MCF_INTC_IPRH_INT53 (0x200000) +#define MCF_INTC_IPRH_INT54 (0x400000) +#define MCF_INTC_IPRH_INT55 (0x800000) +#define MCF_INTC_IPRH_INT56 (0x1000000) +#define MCF_INTC_IPRH_INT57 (0x2000000) +#define MCF_INTC_IPRH_INT58 (0x4000000) +#define MCF_INTC_IPRH_INT59 (0x8000000) +#define MCF_INTC_IPRH_INT60 (0x10000000) +#define MCF_INTC_IPRH_INT61 (0x20000000) +#define MCF_INTC_IPRH_INT62 (0x40000000) +#define MCF_INTC_IPRH_INT63 (0x80000000) + +/* Bit definitions and macros for MCF_INTC_IPRL */ +#define MCF_INTC_IPRL_INT1 (0x2) +#define MCF_INTC_IPRL_INT2 (0x4) +#define MCF_INTC_IPRL_INT3 (0x8) +#define MCF_INTC_IPRL_INT4 (0x10) +#define MCF_INTC_IPRL_INT5 (0x20) +#define MCF_INTC_IPRL_INT6 (0x40) +#define MCF_INTC_IPRL_INT7 (0x80) +#define MCF_INTC_IPRL_INT8 (0x100) +#define MCF_INTC_IPRL_INT9 (0x200) +#define MCF_INTC_IPRL_INT10 (0x400) +#define MCF_INTC_IPRL_INT11 (0x800) +#define MCF_INTC_IPRL_INT12 (0x1000) +#define MCF_INTC_IPRL_INT13 (0x2000) +#define MCF_INTC_IPRL_INT14 (0x4000) +#define MCF_INTC_IPRL_INT15 (0x8000) +#define MCF_INTC_IPRL_INT16 (0x10000) +#define MCF_INTC_IPRL_INT17 (0x20000) +#define MCF_INTC_IPRL_INT18 (0x40000) +#define MCF_INTC_IPRL_INT19 (0x80000) +#define MCF_INTC_IPRL_INT20 (0x100000) +#define MCF_INTC_IPRL_INT21 (0x200000) +#define MCF_INTC_IPRL_INT22 (0x400000) +#define MCF_INTC_IPRL_INT23 (0x800000) +#define MCF_INTC_IPRL_INT24 (0x1000000) +#define MCF_INTC_IPRL_INT25 (0x2000000) +#define MCF_INTC_IPRL_INT26 (0x4000000) +#define MCF_INTC_IPRL_INT27 (0x8000000) +#define MCF_INTC_IPRL_INT28 (0x10000000) +#define MCF_INTC_IPRL_INT29 (0x20000000) +#define MCF_INTC_IPRL_INT30 (0x40000000) +#define MCF_INTC_IPRL_INT31 (0x80000000) + +/* Bit definitions and macros for MCF_INTC_IMRH */ +#define MCF_INTC_IMRH_INT_MASK32 (0x1) +#define MCF_INTC_IMRH_INT_MASK33 (0x2) +#define MCF_INTC_IMRH_INT_MASK34 (0x4) +#define MCF_INTC_IMRH_INT_MASK35 (0x8) +#define MCF_INTC_IMRH_INT_MASK36 (0x10) +#define MCF_INTC_IMRH_INT_MASK37 (0x20) +#define MCF_INTC_IMRH_INT_MASK38 (0x40) +#define MCF_INTC_IMRH_INT_MASK39 (0x80) +#define MCF_INTC_IMRH_INT_MASK40 (0x100) +#define MCF_INTC_IMRH_INT_MASK41 (0x200) +#define MCF_INTC_IMRH_INT_MASK42 (0x400) +#define MCF_INTC_IMRH_INT_MASK43 (0x800) +#define MCF_INTC_IMRH_INT_MASK44 (0x1000) +#define MCF_INTC_IMRH_INT_MASK45 (0x2000) +#define MCF_INTC_IMRH_INT_MASK46 (0x4000) +#define MCF_INTC_IMRH_INT_MASK47 (0x8000) +#define MCF_INTC_IMRH_INT_MASK48 (0x10000) +#define MCF_INTC_IMRH_INT_MASK49 (0x20000) +#define MCF_INTC_IMRH_INT_MASK50 (0x40000) +#define MCF_INTC_IMRH_INT_MASK51 (0x80000) +#define MCF_INTC_IMRH_INT_MASK52 (0x100000) +#define MCF_INTC_IMRH_INT_MASK53 (0x200000) +#define MCF_INTC_IMRH_INT_MASK54 (0x400000) +#define MCF_INTC_IMRH_INT_MASK55 (0x800000) +#define MCF_INTC_IMRH_INT_MASK56 (0x1000000) +#define MCF_INTC_IMRH_INT_MASK57 (0x2000000) +#define MCF_INTC_IMRH_INT_MASK58 (0x4000000) +#define MCF_INTC_IMRH_INT_MASK59 (0x8000000) +#define MCF_INTC_IMRH_INT_MASK60 (0x10000000) +#define MCF_INTC_IMRH_INT_MASK61 (0x20000000) +#define MCF_INTC_IMRH_INT_MASK62 (0x40000000) +#define MCF_INTC_IMRH_INT_MASK63 (0x80000000) + +/* Bit definitions and macros for MCF_INTC_IMRL */ +#define MCF_INTC_IMRL_MASKALL (0x1) +#define MCF_INTC_IMRL_INT_MASK1 (0x2) +#define MCF_INTC_IMRL_INT_MASK2 (0x4) +#define MCF_INTC_IMRL_INT_MASK3 (0x8) +#define MCF_INTC_IMRL_INT_MASK4 (0x10) +#define MCF_INTC_IMRL_INT_MASK5 (0x20) +#define MCF_INTC_IMRL_INT_MASK6 (0x40) +#define MCF_INTC_IMRL_INT_MASK7 (0x80) +#define MCF_INTC_IMRL_INT_MASK8 (0x100) +#define MCF_INTC_IMRL_INT_MASK9 (0x200) +#define MCF_INTC_IMRL_INT_MASK10 (0x400) +#define MCF_INTC_IMRL_INT_MASK11 (0x800) +#define MCF_INTC_IMRL_INT_MASK12 (0x1000) +#define MCF_INTC_IMRL_INT_MASK13 (0x2000) +#define MCF_INTC_IMRL_INT_MASK14 (0x4000) +#define MCF_INTC_IMRL_INT_MASK15 (0x8000) +#define MCF_INTC_IMRL_INT_MASK16 (0x10000) +#define MCF_INTC_IMRL_INT_MASK17 (0x20000) +#define MCF_INTC_IMRL_INT_MASK18 (0x40000) +#define MCF_INTC_IMRL_INT_MASK19 (0x80000) +#define MCF_INTC_IMRL_INT_MASK20 (0x100000) +#define MCF_INTC_IMRL_INT_MASK21 (0x200000) +#define MCF_INTC_IMRL_INT_MASK22 (0x400000) +#define MCF_INTC_IMRL_INT_MASK23 (0x800000) +#define MCF_INTC_IMRL_INT_MASK24 (0x1000000) +#define MCF_INTC_IMRL_INT_MASK25 (0x2000000) +#define MCF_INTC_IMRL_INT_MASK26 (0x4000000) +#define MCF_INTC_IMRL_INT_MASK27 (0x8000000) +#define MCF_INTC_IMRL_INT_MASK28 (0x10000000) +#define MCF_INTC_IMRL_INT_MASK29 (0x20000000) +#define MCF_INTC_IMRL_INT_MASK30 (0x40000000) +#define MCF_INTC_IMRL_INT_MASK31 (0x80000000) + +/* Bit definitions and macros for MCF_INTC_INTFRCH */ +#define MCF_INTC_INTFRCH_INTFRC32 (0x1) +#define MCF_INTC_INTFRCH_INTFRC33 (0x2) +#define MCF_INTC_INTFRCH_INTFRC34 (0x4) +#define MCF_INTC_INTFRCH_INTFRC35 (0x8) +#define MCF_INTC_INTFRCH_INTFRC36 (0x10) +#define MCF_INTC_INTFRCH_INTFRC37 (0x20) +#define MCF_INTC_INTFRCH_INTFRC38 (0x40) +#define MCF_INTC_INTFRCH_INTFRC39 (0x80) +#define MCF_INTC_INTFRCH_INTFRC40 (0x100) +#define MCF_INTC_INTFRCH_INTFRC41 (0x200) +#define MCF_INTC_INTFRCH_INTFRC42 (0x400) +#define MCF_INTC_INTFRCH_INTFRC43 (0x800) +#define MCF_INTC_INTFRCH_INTFRC44 (0x1000) +#define MCF_INTC_INTFRCH_INTFRC45 (0x2000) +#define MCF_INTC_INTFRCH_INTFRC46 (0x4000) +#define MCF_INTC_INTFRCH_INTFRC47 (0x8000) +#define MCF_INTC_INTFRCH_INTFRC48 (0x10000) +#define MCF_INTC_INTFRCH_INTFRC49 (0x20000) +#define MCF_INTC_INTFRCH_INTFRC50 (0x40000) +#define MCF_INTC_INTFRCH_INTFRC51 (0x80000) +#define MCF_INTC_INTFRCH_INTFRC52 (0x100000) +#define MCF_INTC_INTFRCH_INTFRC53 (0x200000) +#define MCF_INTC_INTFRCH_INTFRC54 (0x400000) +#define MCF_INTC_INTFRCH_INTFRC55 (0x800000) +#define MCF_INTC_INTFRCH_INTFRC56 (0x1000000) +#define MCF_INTC_INTFRCH_INTFRC57 (0x2000000) +#define MCF_INTC_INTFRCH_INTFRC58 (0x4000000) +#define MCF_INTC_INTFRCH_INTFRC59 (0x8000000) +#define MCF_INTC_INTFRCH_INTFRC60 (0x10000000) +#define MCF_INTC_INTFRCH_INTFRC61 (0x20000000) +#define MCF_INTC_INTFRCH_INTFRC62 (0x40000000) +#define MCF_INTC_INTFRCH_INTFRC63 (0x80000000) + +/* Bit definitions and macros for MCF_INTC_INTFRCL */ +#define MCF_INTC_INTFRCL_INTFRC1 (0x2) +#define MCF_INTC_INTFRCL_INTFRC2 (0x4) +#define MCF_INTC_INTFRCL_INTFRC3 (0x8) +#define MCF_INTC_INTFRCL_INTFRC4 (0x10) +#define MCF_INTC_INTFRCL_INTFRC5 (0x20) +#define MCF_INTC_INTFRCL_INTFRC6 (0x40) +#define MCF_INTC_INTFRCL_INTFRC7 (0x80) +#define MCF_INTC_INTFRCL_INTFRC8 (0x100) +#define MCF_INTC_INTFRCL_INTFRC9 (0x200) +#define MCF_INTC_INTFRCL_INTFRC10 (0x400) +#define MCF_INTC_INTFRCL_INTFRC11 (0x800) +#define MCF_INTC_INTFRCL_INTFRC12 (0x1000) +#define MCF_INTC_INTFRCL_INTFRC13 (0x2000) +#define MCF_INTC_INTFRCL_INTFRC14 (0x4000) +#define MCF_INTC_INTFRCL_INTFRC15 (0x8000) +#define MCF_INTC_INTFRCL_INTFRC16 (0x10000) +#define MCF_INTC_INTFRCL_INTFRC17 (0x20000) +#define MCF_INTC_INTFRCL_INTFRC18 (0x40000) +#define MCF_INTC_INTFRCL_INTFRC19 (0x80000) +#define MCF_INTC_INTFRCL_INTFRC20 (0x100000) +#define MCF_INTC_INTFRCL_INTFRC21 (0x200000) +#define MCF_INTC_INTFRCL_INTFRC22 (0x400000) +#define MCF_INTC_INTFRCL_INTFRC23 (0x800000) +#define MCF_INTC_INTFRCL_INTFRC24 (0x1000000) +#define MCF_INTC_INTFRCL_INTFRC25 (0x2000000) +#define MCF_INTC_INTFRCL_INTFRC26 (0x4000000) +#define MCF_INTC_INTFRCL_INTFRC27 (0x8000000) +#define MCF_INTC_INTFRCL_INTFRC28 (0x10000000) +#define MCF_INTC_INTFRCL_INTFRC29 (0x20000000) +#define MCF_INTC_INTFRCL_INTFRC30 (0x40000000) +#define MCF_INTC_INTFRCL_INTFRC31 (0x80000000) + +/* Bit definitions and macros for MCF_INTC_IRLR */ +#define MCF_INTC_IRLR_IRQ(x) (((x)&0x7F)<<0x1) + +/* Bit definitions and macros for MCF_INTC_IACKLPR */ +#define MCF_INTC_IACKLPR_PRI(x) (((x)&0xF)<<0) +#define MCF_INTC_IACKLPR_LEVEL(x) (((x)&0x7)<<0x4) + +/* Bit definitions and macros for MCF_INTC_ICR */ +#define MCF_INTC_ICR_IP(x) (((x)&0x7)<<0) +#define MCF_INTC_ICR_IL(x) (((x)&0x7)<<0x3) + +/* Bit definitions and macros for MCF_INTC_SWIACK */ +#define MCF_INTC_SWIACK_VECTOR(x) (((x)&0xFF)<<0) + +/* Bit definitions and macros for MCF_INTC_LIACK */ +#define MCF_INTC_LIACK_VECTOR(x) (((x)&0xFF)<<0) + + +#endif /* __MCF5475_INTC_H__ */ diff --git a/BaS_gcc/tos/pci_mem/include/MCF5475_MMU.h b/BaS_gcc/tos/pci_mem/include/MCF5475_MMU.h new file mode 100644 index 0000000..334ad28 --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/MCF5475_MMU.h @@ -0,0 +1,79 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_MMU_H__ +#define __MCF5475_MMU_H__ + + +/********************************************************************* +* +* Memory Management Unit (MMU) +* +*********************************************************************/ + +/* Register read/write macros */ + +/* note the uint32_t_a - this is to avoid gcc warnings about pointer aliasing */ +#define MCF_MMU_MMUCR (*(volatile uint32_t_a*)(&_MMUBAR[0])) +#define MCF_MMU_MMUOR (*(volatile uint32_t_a*)(&_MMUBAR[0x4])) +#define MCF_MMU_MMUSR (*(volatile uint32_t_a*)(&_MMUBAR[0x8])) +#define MCF_MMU_MMUAR (*(volatile uint32_t_a*)(&_MMUBAR[0x10])) +#define MCF_MMU_MMUTR (*(volatile uint32_t_a*)(&_MMUBAR[0x14])) +#define MCF_MMU_MMUDR (*(volatile uint32_t_a*)(&_MMUBAR[0x18])) + + +/* Bit definitions and macros for MCF_MMU_MMUCR */ +#define MCF_MMU_MMUCR_EN (0x1) +#define MCF_MMU_MMUCR_ASM (0x2) + +/* Bit definitions and macros for MCF_MMU_MMUOR */ +#define MCF_MMU_MMUOR_UAA (0x1) +#define MCF_MMU_MMUOR_ACC (0x2) +#define MCF_MMU_MMUOR_RW (0x4) +#define MCF_MMU_MMUOR_ADR (0x8) +#define MCF_MMU_MMUOR_ITLB (0x10) +#define MCF_MMU_MMUOR_CAS (0x20) +#define MCF_MMU_MMUOR_CNL (0x40) +#define MCF_MMU_MMUOR_CA (0x80) +#define MCF_MMU_MMUOR_STLB (0x100) +#define MCF_MMU_MMUOR_AA(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_MMU_MMUSR */ +#define MCF_MMU_MMUSR_HIT (0x2) +#define MCF_MMU_MMUSR_WF (0x8) +#define MCF_MMU_MMUSR_RF (0x10) +#define MCF_MMU_MMUSR_SPF (0x20) + +/* Bit definitions and macros for MCF_MMU_MMUAR */ +#define MCF_MMU_MMUAR_FA(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_MMU_MMUTR */ +#define MCF_MMU_MMUTR_V (0x1) +#define MCF_MMU_MMUTR_SG (0x2) +#define MCF_MMU_MMUTR_ID(x) (((x)&0xFF)<<0x2) +#define MCF_MMU_MMUTR_VA(x) (((x)&0x3FFFFF)<<0xA) + +/* Bit definitions and macros for MCF_MMU_MMUDR */ +#define MCF_MMU_MMUDR_LK (0x2) +#define MCF_MMU_MMUDR_X (0x4) +#define MCF_MMU_MMUDR_W (0x8) +#define MCF_MMU_MMUDR_R (0x10) +#define MCF_MMU_MMUDR_SP (0x20) +#define MCF_MMU_MMUDR_CM(x) (((x)&0x3)<<0x6) +#define MCF_MMU_MMUDR_SZ(x) (((x)&0x3)<<0x8) +#define MCF_MMU_MMUDR_PA(x) (((x)&0x3FFFFF)<<0xA) + + +#endif /* __MCF5475_MMU_H__ */ diff --git a/BaS_gcc/tos/pci_mem/include/MCF5475_PAD.h b/BaS_gcc/tos/pci_mem/include/MCF5475_PAD.h new file mode 100644 index 0000000..1d87e2e --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/MCF5475_PAD.h @@ -0,0 +1,233 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_PAD_H__ +#define __MCF5475_PAD_H__ + + +/********************************************************************* +* +* Common GPIO +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_PAD_PAR_FBCTL (*(volatile uint16_t*)(&_MBAR[0xA40])) +#define MCF_PAD_PAR_FBCS (*(volatile uint8_t *)(&_MBAR[0xA42])) +#define MCF_PAD_PAR_DMA (*(volatile uint8_t *)(&_MBAR[0xA43])) +#define MCF_PAD_PAR_FECI2CIRQ (*(volatile uint16_t*)(&_MBAR[0xA44])) +#define MCF_PAD_PAR_PCIBG (*(volatile uint16_t*)(&_MBAR[0xA48])) +#define MCF_PAD_PAR_PCIBR (*(volatile uint16_t*)(&_MBAR[0xA4A])) +#define MCF_PAD_PAR_PSC3 (*(volatile uint8_t *)(&_MBAR[0xA4C])) +#define MCF_PAD_PAR_PSC2 (*(volatile uint8_t *)(&_MBAR[0xA4D])) +#define MCF_PAD_PAR_PSC1 (*(volatile uint8_t *)(&_MBAR[0xA4E])) +#define MCF_PAD_PAR_PSC0 (*(volatile uint8_t *)(&_MBAR[0xA4F])) +#define MCF_PAD_PAR_DSPI (*(volatile uint16_t*)(&_MBAR[0xA50])) +#define MCF_PAD_PAR_TIMER (*(volatile uint8_t *)(&_MBAR[0xA52])) + + +/* Bit definitions and macros for MCF_PAD_PAR_FBCTL */ +#define MCF_PAD_PAR_FBCTL_PAR_ALE(x) (((x)&0x3)<<0) +#define MCF_PAD_PAR_FBCTL_PAR_ALE_GPIO (0) +#define MCF_PAD_PAR_FBCTL_PAR_ALE_TBST (0x2) +#define MCF_PAD_PAR_FBCTL_PAR_ALE_ALE (0x3) +#define MCF_PAD_PAR_FBCTL_PAR_TA (0x4) +#define MCF_PAD_PAR_FBCTL_PAR_RWB(x) (((x)&0x3)<<0x4) +#define MCF_PAD_PAR_FBCTL_PAR_RWB_GPIO (0) +#define MCF_PAD_PAR_FBCTL_PAR_RWB_TBST (0x20) +#define MCF_PAD_PAR_FBCTL_PAR_RWB_RW (0x30) +#define MCF_PAD_PAR_FBCTL_PAR_OE (0x40) +#define MCF_PAD_PAR_FBCTL_PAR_BWE0 (0x100) +#define MCF_PAD_PAR_FBCTL_PAR_BWE1 (0x400) +#define MCF_PAD_PAR_FBCTL_PAR_BWE2 (0x1000) +#define MCF_PAD_PAR_FBCTL_PAR_BWE3 (0x4000) + +/* Bit definitions and macros for MCF_PAD_PAR_FBCS */ +#define MCF_PAD_PAR_FBCS_PAR_CS1 (0x2) +#define MCF_PAD_PAR_FBCS_PAR_CS2 (0x4) +#define MCF_PAD_PAR_FBCS_PAR_CS3 (0x8) +#define MCF_PAD_PAR_FBCS_PAR_CS4 (0x10) +#define MCF_PAD_PAR_FBCS_PAR_CS5 (0x20) + +/* Bit definitions and macros for MCF_PAD_PAR_DMA */ +#define MCF_PAD_PAR_DMA_PAR_DREQ0(x) (((x)&0x3)<<0) +#define MCF_PAD_PAR_DMA_PAR_DREQ0_GPIO (0) +#define MCF_PAD_PAR_DMA_PAR_DREQ0_TIN0 (0x2) +#define MCF_PAD_PAR_DMA_PAR_DREQ0_DREQ0 (0x3) +#define MCF_PAD_PAR_DMA_PAR_DREQ1(x) (((x)&0x3)<<0x2) +#define MCF_PAD_PAR_DMA_PAR_DREQ1_GPIO (0) +#define MCF_PAD_PAR_DMA_PAR_DREQ1_IRQ1 (0x4) +#define MCF_PAD_PAR_DMA_PAR_DREQ1_TIN1 (0x8) +#define MCF_PAD_PAR_DMA_PAR_DREQ1_DREQ1 (0xC) +#define MCF_PAD_PAR_DMA_PAR_DACK0(x) (((x)&0x3)<<0x4) +#define MCF_PAD_PAR_DMA_PAR_DACK0_GPIO (0) +#define MCF_PAD_PAR_DMA_PAR_DACK0_TOUT0 (0x20) +#define MCF_PAD_PAR_DMA_PAR_DACK0_DACK0 (0x30) +#define MCF_PAD_PAR_DMA_PAR_DACK1(x) (((x)&0x3)<<0x6) +#define MCF_PAD_PAR_DMA_PAR_DACK1_GPIO (0) +#define MCF_PAD_PAR_DMA_PAR_DACK1_TOUT1 (0x80) +#define MCF_PAD_PAR_DMA_PAR_DACK1_DACK1 (0xC0) + +/* Bit definitions and macros for MCF_PAD_PAR_FECI2CIRQ */ +#define MCF_PAD_PAR_FECI2CIRQ_PAR_IRQ5 (0x1) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_IRQ6 (0x2) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_SCL (0x4) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_SDA (0x8) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_E1MDC(x) (((x)&0x3)<<0x6) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_E1MDC_SCL (0x80) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_E1MDC_E1MDC (0xC0) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_E1MDIO(x) (((x)&0x3)<<0x8) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_E1MDIO_SDA (0x200) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_E1MDIO_E1MDIO (0x300) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_E1MII (0x400) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_E17 (0x800) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_E0MDC (0x1000) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_E0MDIO (0x2000) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_E0MII (0x4000) +#define MCF_PAD_PAR_FECI2CIRQ_PAR_E07 (0x8000) + +/* Bit definitions and macros for MCF_PAD_PAR_PCIBG */ +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG0(x) (((x)&0x3)<<0) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG0_GPIO (0) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG0_TOUT0 (0x2) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG0_PCIBG0 (0x3) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG1(x) (((x)&0x3)<<0x2) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG1_GPIO (0) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG1_TOUT1 (0x8) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG1_PCIBG1 (0xC) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG2(x) (((x)&0x3)<<0x4) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG2_GPIO (0) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG2_TOUT2 (0x20) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG2_PCIBG2 (0x30) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG3(x) (((x)&0x3)<<0x6) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG3_GPIO (0) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG3_TOUT3 (0x80) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG3_PCIBG3 (0xC0) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG4(x) (((x)&0x3)<<0x8) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG4_GPIO (0) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG4_TBST (0x200) +#define MCF_PAD_PAR_PCIBG_PAR_PCIBG4_PCIBG4 (0x300) + +/* Bit definitions and macros for MCF_PAD_PAR_PCIBR */ +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR0(x) (((x)&0x3)<<0) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR0_GPIO (0) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR0_TIN0 (0x2) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR0_PCIBR0 (0x3) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR1(x) (((x)&0x3)<<0x2) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR1_GPIO (0) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR1_TIN1 (0x8) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR1_PCIBR1 (0xC) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR2(x) (((x)&0x3)<<0x4) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR2_GPIO (0) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR2_TIN2 (0x20) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR2_PCIBR2 (0x30) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR3(x) (((x)&0x3)<<0x6) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR3_GPIO (0) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR3_TIN3 (0x80) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR3_PCIBR3 (0xC0) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR4(x) (((x)&0x3)<<0x8) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR4_GPIO (0) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR4_IRQ4 (0x200) +#define MCF_PAD_PAR_PCIBR_PAR_PCIBR4_PCIBR4 (0x300) + +/* Bit definitions and macros for MCF_PAD_PAR_PSC3 */ +#define MCF_PAD_PAR_PSC3_PAR_TXD3 (0x4) +#define MCF_PAD_PAR_PSC3_PAR_RXD3 (0x8) +#define MCF_PAD_PAR_PSC3_PAR_RTS3(x) (((x)&0x3)<<0x4) +#define MCF_PAD_PAR_PSC3_PAR_RTS3_GPIO (0) +#define MCF_PAD_PAR_PSC3_PAR_RTS3_FSYNC (0x20) +#define MCF_PAD_PAR_PSC3_PAR_RTS3_RTS (0x30) +#define MCF_PAD_PAR_PSC3_PAR_CTS3(x) (((x)&0x3)<<0x6) +#define MCF_PAD_PAR_PSC3_PAR_CTS3_GPIO (0) +#define MCF_PAD_PAR_PSC3_PAR_CTS3_BCLK (0x80) +#define MCF_PAD_PAR_PSC3_PAR_CTS3_CTS (0xC0) + +/* Bit definitions and macros for MCF_PAD_PAR_PSC2 */ +#define MCF_PAD_PAR_PSC2_PAR_TXD2 (0x4) +#define MCF_PAD_PAR_PSC2_PAR_RXD2 (0x8) +#define MCF_PAD_PAR_PSC2_PAR_RTS2(x) (((x)&0x3)<<0x4) +#define MCF_PAD_PAR_PSC2_PAR_RTS2_GPIO (0) +#define MCF_PAD_PAR_PSC2_PAR_RTS2_FSYNC (0x20) +#define MCF_PAD_PAR_PSC2_PAR_RTS2_RTS (0x30) +#define MCF_PAD_PAR_PSC2_PAR_CTS2(x) (((x)&0x3)<<0x6) +#define MCF_PAD_PAR_PSC2_PAR_CTS2_GPIO (0) +#define MCF_PAD_PAR_PSC2_PAR_CTS2_BCLK (0x80) +#define MCF_PAD_PAR_PSC2_PAR_CTS2_CTS (0xC0) + +/* Bit definitions and macros for MCF_PAD_PAR_PSC1 */ +#define MCF_PAD_PAR_PSC1_PAR_TXD1 (0x4) +#define MCF_PAD_PAR_PSC1_PAR_RXD1 (0x8) +#define MCF_PAD_PAR_PSC1_PAR_RTS1(x) (((x)&0x3)<<0x4) +#define MCF_PAD_PAR_PSC1_PAR_RTS1_GPIO (0) +#define MCF_PAD_PAR_PSC1_PAR_RTS1_FSYNC (0x20) +#define MCF_PAD_PAR_PSC1_PAR_RTS1_RTS (0x30) +#define MCF_PAD_PAR_PSC1_PAR_CTS1(x) (((x)&0x3)<<0x6) +#define MCF_PAD_PAR_PSC1_PAR_CTS1_GPIO (0) +#define MCF_PAD_PAR_PSC1_PAR_CTS1_BCLK (0x80) +#define MCF_PAD_PAR_PSC1_PAR_CTS1_CTS (0xC0) + +/* Bit definitions and macros for MCF_PAD_PAR_PSC0 */ +#define MCF_PAD_PAR_PSC0_PAR_TXD0 (0x4) +#define MCF_PAD_PAR_PSC0_PAR_RXD0 (0x8) +#define MCF_PAD_PAR_PSC0_PAR_RTS0(x) (((x)&0x3)<<0x4) +#define MCF_PAD_PAR_PSC0_PAR_RTS0_GPIO (0) +#define MCF_PAD_PAR_PSC0_PAR_RTS0_FSYNC (0x20) +#define MCF_PAD_PAR_PSC0_PAR_RTS0_RTS (0x30) +#define MCF_PAD_PAR_PSC0_PAR_CTS0(x) (((x)&0x3)<<0x6) +#define MCF_PAD_PAR_PSC0_PAR_CTS0_GPIO (0) +#define MCF_PAD_PAR_PSC0_PAR_CTS0_BCLK (0x80) +#define MCF_PAD_PAR_PSC0_PAR_CTS0_CTS (0xC0) + +/* Bit definitions and macros for MCF_PAD_PAR_DSPI */ +#define MCF_PAD_PAR_DSPI_PAR_SOUT(x) (((x)&0x3)<<0) +#define MCF_PAD_PAR_DSPI_PAR_SOUT_GPIO (0) +#define MCF_PAD_PAR_DSPI_PAR_SOUT_TXD (0x2) +#define MCF_PAD_PAR_DSPI_PAR_SOUT_SOUT (0x3) +#define MCF_PAD_PAR_DSPI_PAR_SIN(x) (((x)&0x3)<<0x2) +#define MCF_PAD_PAR_DSPI_PAR_SIN_GPIO (0) +#define MCF_PAD_PAR_DSPI_PAR_SIN_RXD (0x8) +#define MCF_PAD_PAR_DSPI_PAR_SIN_SIN (0xC) +#define MCF_PAD_PAR_DSPI_PAR_SCK(x) (((x)&0x3)<<0x4) +#define MCF_PAD_PAR_DSPI_PAR_SCK_GPIO (0) +#define MCF_PAD_PAR_DSPI_PAR_SCK_BCLK (0x10) +#define MCF_PAD_PAR_DSPI_PAR_SCK_CTS (0x20) +#define MCF_PAD_PAR_DSPI_PAR_SCK_SCK (0x30) +#define MCF_PAD_PAR_DSPI_PAR_CS0(x) (((x)&0x3)<<0x6) +#define MCF_PAD_PAR_DSPI_PAR_CS0_GPIO (0) +#define MCF_PAD_PAR_DSPI_PAR_CS0_FSYNC (0x40) +#define MCF_PAD_PAR_DSPI_PAR_CS0_RTS (0x80) +#define MCF_PAD_PAR_DSPI_PAR_CS0_DSPICS0 (0xC0) +#define MCF_PAD_PAR_DSPI_PAR_CS2(x) (((x)&0x3)<<0x8) +#define MCF_PAD_PAR_DSPI_PAR_CS2_GPIO (0) +#define MCF_PAD_PAR_DSPI_PAR_CS2_TOUT2 (0x200) +#define MCF_PAD_PAR_DSPI_PAR_CS2_DSPICS2 (0x300) +#define MCF_PAD_PAR_DSPI_PAR_CS3(x) (((x)&0x3)<<0xA) +#define MCF_PAD_PAR_DSPI_PAR_CS3_GPIO (0) +#define MCF_PAD_PAR_DSPI_PAR_CS3_TOUT3 (0x800) +#define MCF_PAD_PAR_DSPI_PAR_CS3_DSPICS3 (0xC00) +#define MCF_PAD_PAR_DSPI_PAR_CS5 (0x1000) + +/* Bit definitions and macros for MCF_PAD_PAR_TIMER */ +#define MCF_PAD_PAR_TIMER_PAR_TOUT2 (0x1) +#define MCF_PAD_PAR_TIMER_PAR_TIN2(x) (((x)&0x3)<<0x1) +#define MCF_PAD_PAR_TIMER_PAR_TIN2_IRQ2 (0x4) +#define MCF_PAD_PAR_TIMER_PAR_TIN2_TIN2 (0x6) +#define MCF_PAD_PAR_TIMER_PAR_TOUT3 (0x8) +#define MCF_PAD_PAR_TIMER_PAR_TIN3(x) (((x)&0x3)<<0x4) +#define MCF_PAD_PAR_TIMER_PAR_TIN3_IRQ3 (0x20) +#define MCF_PAD_PAR_TIMER_PAR_TIN3_TIN3 (0x30) + + +#endif /* __MCF5475_PAD_H__ */ diff --git a/BaS_gcc/tos/pci_mem/include/MCF5475_PCI.h b/BaS_gcc/tos/pci_mem/include/MCF5475_PCI.h new file mode 100644 index 0000000..3eb3341 --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/MCF5475_PCI.h @@ -0,0 +1,376 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_PCI_H__ +#define __MCF5475_PCI_H__ + + +/********************************************************************* +* +* PCI Bus Controller (PCI) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_PCI_PCIIDR (*(volatile uint32_t*)(&_MBAR[0xB00])) +#define MCF_PCI_PCISCR (*(volatile uint32_t*)(&_MBAR[0xB04])) +#define MCF_PCI_PCICCRIR (*(volatile uint32_t*)(&_MBAR[0xB08])) +#define MCF_PCI_PCICR1 (*(volatile uint32_t*)(&_MBAR[0xB0C])) +#define MCF_PCI_PCIBAR0 (*(volatile uint32_t*)(&_MBAR[0xB10])) +#define MCF_PCI_PCIBAR1 (*(volatile uint32_t*)(&_MBAR[0xB14])) +#define MCF_PCI_PCICCPR (*(volatile uint32_t*)(&_MBAR[0xB28])) +#define MCF_PCI_PCISID (*(volatile uint32_t*)(&_MBAR[0xB2C])) +#define MCF_PCI_PCICR2 (*(volatile uint32_t*)(&_MBAR[0xB3C])) +#define MCF_PCI_PCIGSCR (*(volatile uint32_t*)(&_MBAR[0xB60])) +#define MCF_PCI_PCITBATR0 (*(volatile uint32_t*)(&_MBAR[0xB64])) +#define MCF_PCI_PCITBATR1 (*(volatile uint32_t*)(&_MBAR[0xB68])) +#define MCF_PCI_PCITCR (*(volatile uint32_t*)(&_MBAR[0xB6C])) +#define MCF_PCI_PCIIW0BTAR (*(volatile uint32_t*)(&_MBAR[0xB70])) +#define MCF_PCI_PCIIW1BTAR (*(volatile uint32_t*)(&_MBAR[0xB74])) +#define MCF_PCI_PCIIW2BTAR (*(volatile uint32_t*)(&_MBAR[0xB78])) +#define MCF_PCI_PCIIWCR (*(volatile uint32_t*)(&_MBAR[0xB80])) +#define MCF_PCI_PCIICR (*(volatile uint32_t*)(&_MBAR[0xB84])) +#define MCF_PCI_PCIISR (*(volatile uint32_t*)(&_MBAR[0xB88])) +#define MCF_PCI_PCICAR (*(volatile uint32_t*)(&_MBAR[0xBF8])) +#define MCF_PCI_PCITPSR (*(volatile uint32_t*)(&_MBAR[0x8400])) +#define MCF_PCI_PCITSAR (*(volatile uint32_t*)(&_MBAR[0x8404])) +#define MCF_PCI_PCITTCR (*(volatile uint32_t*)(&_MBAR[0x8408])) +#define MCF_PCI_PCITER (*(volatile uint32_t*)(&_MBAR[0x840C])) +#define MCF_PCI_PCITNAR (*(volatile uint32_t*)(&_MBAR[0x8410])) +#define MCF_PCI_PCITLWR (*(volatile uint32_t*)(&_MBAR[0x8414])) +#define MCF_PCI_PCITDCR (*(volatile uint32_t*)(&_MBAR[0x8418])) +#define MCF_PCI_PCITSR (*(volatile uint32_t*)(&_MBAR[0x841C])) +#define MCF_PCI_PCITFDR (*(volatile uint32_t*)(&_MBAR[0x8440])) +#define MCF_PCI_PCITFSR (*(volatile uint32_t*)(&_MBAR[0x8444])) +#define MCF_PCI_PCITFCR (*(volatile uint32_t*)(&_MBAR[0x8448])) +#define MCF_PCI_PCITFAR (*(volatile uint32_t*)(&_MBAR[0x844C])) +#define MCF_PCI_PCITFRPR (*(volatile uint32_t*)(&_MBAR[0x8450])) +#define MCF_PCI_PCITFWPR (*(volatile uint32_t*)(&_MBAR[0x8454])) +#define MCF_PCI_PCIRPSR (*(volatile uint32_t*)(&_MBAR[0x8480])) +#define MCF_PCI_PCIRSAR (*(volatile uint32_t*)(&_MBAR[0x8484])) +#define MCF_PCI_PCIRTCR (*(volatile uint32_t*)(&_MBAR[0x8488])) +#define MCF_PCI_PCIRER (*(volatile uint32_t*)(&_MBAR[0x848C])) +#define MCF_PCI_PCIRNAR (*(volatile uint32_t*)(&_MBAR[0x8490])) +#define MCF_PCI_PCIRDCR (*(volatile uint32_t*)(&_MBAR[0x8498])) +#define MCF_PCI_PCIRSR (*(volatile uint32_t*)(&_MBAR[0x849C])) +#define MCF_PCI_PCIRFDR (*(volatile uint32_t*)(&_MBAR[0x84C0])) +#define MCF_PCI_PCIRFSR (*(volatile uint32_t*)(&_MBAR[0x84C4])) +#define MCF_PCI_PCIRFCR (*(volatile uint32_t*)(&_MBAR[0x84C8])) +#define MCF_PCI_PCIRFAR (*(volatile uint32_t*)(&_MBAR[0x84CC])) +#define MCF_PCI_PCIRFRPR (*(volatile uint32_t*)(&_MBAR[0x84D0])) +#define MCF_PCI_PCIRFWPR (*(volatile uint32_t*)(&_MBAR[0x84D4])) + + +/* Bit definitions and macros for MCF_PCI_PCIIDR */ +#define MCF_PCI_PCIIDR_VENDORID(x) (((x)&0xFFFF)<<0) +#define MCF_PCI_PCIIDR_DEVICEID(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_PCI_PCISCR */ +#define MCF_PCI_PCISCR_IO (0x1) +#define MCF_PCI_PCISCR_M (0x2) +#define MCF_PCI_PCISCR_B (0x4) +#define MCF_PCI_PCISCR_SP (0x8) +#define MCF_PCI_PCISCR_MW (0x10) +#define MCF_PCI_PCISCR_V (0x20) +#define MCF_PCI_PCISCR_PER (0x40) +#define MCF_PCI_PCISCR_ST (0x80) +#define MCF_PCI_PCISCR_S (0x100) +#define MCF_PCI_PCISCR_F (0x200) +#define MCF_PCI_PCISCR_C (0x100000) +#define MCF_PCI_PCISCR_66M (0x200000) +#define MCF_PCI_PCISCR_R (0x400000) +#define MCF_PCI_PCISCR_FC (0x800000) +#define MCF_PCI_PCISCR_DP (0x1000000) +#define MCF_PCI_PCISCR_DT(x) (((x)&0x3)<<0x19) +#define MCF_PCI_PCISCR_TS (0x8000000) +#define MCF_PCI_PCISCR_TR (0x10000000) +#define MCF_PCI_PCISCR_MA (0x20000000) +#define MCF_PCI_PCISCR_SE (0x40000000) +#define MCF_PCI_PCISCR_PE (0x80000000) + +/* Bit definitions and macros for MCF_PCI_PCICCRIR */ +#define MCF_PCI_PCICCRIR_REVISIONID(x) (((x)&0xFF)<<0) +#define MCF_PCI_PCICCRIR_CLASSCODE(x) (((x)&0xFFFFFF)<<0x8) + +/* Bit definitions and macros for MCF_PCI_PCICR1 */ +#define MCF_PCI_PCICR1_CACHELINESIZE(x) (((x)&0xFF)<<0) +#define MCF_PCI_PCICR1_LATTIMER(x) (((x)&0xFF)<<0x8) +#define MCF_PCI_PCICR1_HEADERTYPE(x) (((x)&0xFF)<<0x10) +#define MCF_PCI_PCICR1_BIST(x) (((x)&0xFF)<<0x18) + +/* Bit definitions and macros for MCF_PCI_PCIBAR0 */ +#define MCF_PCI_PCIBAR0_IOM (0x1) +#define MCF_PCI_PCIBAR0_RANGE(x) (((x)&0x3)<<0x1) +#define MCF_PCI_PCIBAR0_PREF (0x8) +#define MCF_PCI_PCIBAR0_BAR0(x) (((x)&0x3FFF)<<0x12) + +/* Bit definitions and macros for MCF_PCI_PCIBAR1 */ +#define MCF_PCI_PCIBAR1_IOM (0x1) +#define MCF_PCI_PCIBAR1_RANGE(x) (((x)&0x3)<<0x1) +#define MCF_PCI_PCIBAR1_PREF (0x8) +#define MCF_PCI_PCIBAR1_BAR1(x) (((x)&0x3)<<0x1E) + +/* Bit definitions and macros for MCF_PCI_PCICCPR */ +#define MCF_PCI_PCICCPR_PCICCP(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_PCI_PCISID */ +#define MCF_PCI_PCISID_VENDORID(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_PCI_PCICR2 */ +#define MCF_PCI_PCICR2_INTLINE(x) (((x)&0xFF)<<0) +#define MCF_PCI_PCICR2_INTPIN(x) (((x)&0xFF)<<0x8) +#define MCF_PCI_PCICR2_MINGNT(x) (((x)&0xFF)<<0x10) +#define MCF_PCI_PCICR2_MAXLAT(x) (((x)&0xFF)<<0x18) + +/* Bit definitions and macros for MCF_PCI_PCIGSCR */ +#define MCF_PCI_PCIGSCR_PR (0x1) +#define MCF_PCI_PCIGSCR_SEE (0x1000) +#define MCF_PCI_PCIGSCR_PEE (0x2000) +#define MCF_PCI_PCIGSCR_CLKINRESERVED(x) (((x)&0x7)<<0x10) +#define MCF_PCI_PCIGSCR_XLB2CLKIN(x) (((x)&0x7)<<0x18) +#define MCF_PCI_PCIGSCR_SE (0x10000000) +#define MCF_PCI_PCIGSCR_PE (0x20000000) + +/* Bit definitions and macros for MCF_PCI_PCITBATR0 */ +#define MCF_PCI_PCITBATR0_EN (0x1) +#define MCF_PCI_PCITBATR0_BAT0(x) (((x)&0x3FFF)<<0x12) + +/* Bit definitions and macros for MCF_PCI_PCITBATR1 */ +#define MCF_PCI_PCITBATR1_EN (0x1) +#define MCF_PCI_PCITBATR1_BAT1(x) (((x)&0x3)<<0x1E) + +/* Bit definitions and macros for MCF_PCI_PCITCR */ +#define MCF_PCI_PCITCR_P (0x10000) +#define MCF_PCI_PCITCR_LD (0x1000000) + +/* Bit definitions and macros for MCF_PCI_PCIIW0BTAR */ +#define MCF_PCI_PCIIW0BTAR_WTA0(x) (((x)&0xFF)<<0x8) +#define MCF_PCI_PCIIW0BTAR_WAM0(x) (((x)&0xFF)<<0x10) +#define MCF_PCI_PCIIW0BTAR_WBA0(x) (((x)&0xFF)<<0x18) + +/* Bit definitions and macros for MCF_PCI_PCIIW1BTAR */ +#define MCF_PCI_PCIIW1BTAR_WTA1(x) (((x)&0xFF)<<0x8) +#define MCF_PCI_PCIIW1BTAR_WAM1(x) (((x)&0xFF)<<0x10) +#define MCF_PCI_PCIIW1BTAR_WBA1(x) (((x)&0xFF)<<0x18) + +/* Bit definitions and macros for MCF_PCI_PCIIW2BTAR */ +#define MCF_PCI_PCIIW2BTAR_WTA2(x) (((x)&0xFF)<<0x8) +#define MCF_PCI_PCIIW2BTAR_WAM2(x) (((x)&0xFF)<<0x10) +#define MCF_PCI_PCIIW2BTAR_WBA2(x) (((x)&0xFF)<<0x18) + +/* Bit definitions and macros for MCF_PCI_PCIIWCR */ +#define MCF_PCI_PCIIWCR_WINCTRL2_E (0x100) +#define MCF_PCI_PCIIWCR_WINCTRL2_PRC(x) (((x)&0x3)<<0x9) +#define MCF_PCI_PCIIWCR_WINCTRL2_IOM (0x800) +#define MCF_PCI_PCIIWCR_WINCTRL1_E (0x10000) +#define MCF_PCI_PCIIWCR_WINCTRL1_PRC(x) (((x)&0x3)<<0x11) +#define MCF_PCI_PCIIWCR_WINCTRL1_IOM (0x80000) +#define MCF_PCI_PCIIWCR_WINCTRL0_E (0x1000000) +#define MCF_PCI_PCIIWCR_WINCTRL0_PRC(x) (((x)&0x3)<<0x19) +#define MCF_PCI_PCIIWCR_WINCTRL0_IOM (0x8000000) +#define MCF_PCI_PCIIWCR_WINCTRL2_MEMREAD (0x100) +#define MCF_PCI_PCIIWCR_WINCTRL2_MEMRDLINE (0x300) +#define MCF_PCI_PCIIWCR_WINCTRL2_MEMRDMUL (0x500) +#define MCF_PCI_PCIIWCR_WINCTRL2_IO (0x900) +#define MCF_PCI_PCIIWCR_WINCTRL1_MEMREAD (0x10000) +#define MCF_PCI_PCIIWCR_WINCTRL1_MEMRDLINE (0x30000) +#define MCF_PCI_PCIIWCR_WINCTRL1_MEMRDMUL (0x50000) +#define MCF_PCI_PCIIWCR_WINCTRL1_IO (0x90000) +#define MCF_PCI_PCIIWCR_WINCTRL0_MEMREAD (0x1000000) +#define MCF_PCI_PCIIWCR_WINCTRL0_MEMRDLINE (0x3000000) +#define MCF_PCI_PCIIWCR_WINCTRL0_MEMRDMUL (0x5000000) +#define MCF_PCI_PCIIWCR_WINCTRL0_IO (0x9000000) + +/* Bit definitions and macros for MCF_PCI_PCIICR */ +#define MCF_PCI_PCIICR_MAXRETRY(x) (((x)&0xFF)<<0) +#define MCF_PCI_PCIICR_TAE (0x1000000) +#define MCF_PCI_PCIICR_IAE (0x2000000) +#define MCF_PCI_PCIICR_REE (0x4000000) + +/* Bit definitions and macros for MCF_PCI_PCIISR */ +#define MCF_PCI_PCIISR_TA (0x1000000) +#define MCF_PCI_PCIISR_IA (0x2000000) +#define MCF_PCI_PCIISR_RE (0x4000000) + +/* Bit definitions and macros for MCF_PCI_PCICAR */ +#define MCF_PCI_PCICAR_DWORD(x) (((x)&0x3F)<<0x2) +#define MCF_PCI_PCICAR_FUNCNUM(x) (((x)&0x7)<<0x8) +#define MCF_PCI_PCICAR_DEVNUM(x) (((x)&0x1F)<<0xB) +#define MCF_PCI_PCICAR_BUSNUM(x) (((x)&0xFF)<<0x10) +#define MCF_PCI_PCICAR_E (0x80000000) + +/* Bit definitions and macros for MCF_PCI_PCITPSR */ +#define MCF_PCI_PCITPSR_PKTSIZE(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_PCI_PCITSAR */ +#define MCF_PCI_PCITSAR_STARTADD(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_PCI_PCITTCR */ +#define MCF_PCI_PCITTCR_DI (0x1) +#define MCF_PCI_PCITTCR_W (0x10) +#define MCF_PCI_PCITTCR_MAXBEATS(x) (((x)&0x7)<<0x8) +#define MCF_PCI_PCITTCR_MAXRETRY(x) (((x)&0xFF)<<0x10) +#define MCF_PCI_PCITTCR_PCICMD(x) (((x)&0xF)<<0x18) + +/* Bit definitions and macros for MCF_PCI_PCITER */ +#define MCF_PCI_PCITER_NE (0x10000) +#define MCF_PCI_PCITER_IAE (0x20000) +#define MCF_PCI_PCITER_TAE (0x40000) +#define MCF_PCI_PCITER_RE (0x80000) +#define MCF_PCI_PCITER_SE (0x100000) +#define MCF_PCI_PCITER_FEE (0x200000) +#define MCF_PCI_PCITER_ME (0x1000000) +#define MCF_PCI_PCITER_BE (0x8000000) +#define MCF_PCI_PCITER_CM (0x10000000) +#define MCF_PCI_PCITER_RF (0x40000000) +#define MCF_PCI_PCITER_RC (0x80000000) + +/* Bit definitions and macros for MCF_PCI_PCITNAR */ +#define MCF_PCI_PCITNAR_NEXTADDRESS(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_PCI_PCITLWR */ +#define MCF_PCI_PCITLWR_LASTWORD(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_PCI_PCITDCR */ +#define MCF_PCI_PCITDCR_PKTSDONE(x) (((x)&0xFFFF)<<0) +#define MCF_PCI_PCITDCR_BYTESDONE(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_PCI_PCITSR */ +#define MCF_PCI_PCITSR_IA (0x10000) +#define MCF_PCI_PCITSR_TA (0x20000) +#define MCF_PCI_PCITSR_RE (0x40000) +#define MCF_PCI_PCITSR_SE (0x80000) +#define MCF_PCI_PCITSR_FE (0x100000) +#define MCF_PCI_PCITSR_BE1 (0x200000) +#define MCF_PCI_PCITSR_BE2 (0x400000) +#define MCF_PCI_PCITSR_BE3 (0x800000) +#define MCF_PCI_PCITSR_NT (0x1000000) + +/* Bit definitions and macros for MCF_PCI_PCITFDR */ +#define MCF_PCI_PCITFDR_FIFODATAWORD(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_PCI_PCITFSR */ +#define MCF_PCI_PCITFSR_EMPTY (0x10000) +#define MCF_PCI_PCITFSR_ALARM (0x20000) +#define MCF_PCI_PCITFSR_FULL (0x40000) +#define MCF_PCI_PCITFSR_FR (0x80000) +#define MCF_PCI_PCITFSR_OF (0x100000) +#define MCF_PCI_PCITFSR_UF (0x200000) +#define MCF_PCI_PCITFSR_RXW (0x400000) +#define MCF_PCI_PCITFSR_FAE (0x800000) +#define MCF_PCI_PCITFSR_TXW (0x40000000) +#define MCF_PCI_PCITFSR_IP (0x80000000) + +/* Bit definitions and macros for MCF_PCI_PCITFCR */ +#define MCF_PCI_PCITFCR_TXW_MASK (0x40000) +#define MCF_PCI_PCITFCR_OF_MASK (0x80000) +#define MCF_PCI_PCITFCR_UF_MASK (0x100000) +#define MCF_PCI_PCITFCR_RXW_MASK (0x200000) +#define MCF_PCI_PCITFCR_FAE_MASK (0x400000) +#define MCF_PCI_PCITFCR_IP_MASK (0x800000) +#define MCF_PCI_PCITFCR_GR(x) (((x)&0x7)<<0x18) +#define MCF_PCI_PCITFCR_WFR (0x20000000) + +/* Bit definitions and macros for MCF_PCI_PCITFAR */ +#define MCF_PCI_PCITFAR_ALARM(x) (((x)&0xFFF)<<0) + +/* Bit definitions and macros for MCF_PCI_PCITFRPR */ +#define MCF_PCI_PCITFRPR_READPTR(x) (((x)&0x7F)<<0) + +/* Bit definitions and macros for MCF_PCI_PCITFWPR */ +#define MCF_PCI_PCITFWPR_WRITEPTR(x) (((x)&0x7F)<<0) + +/* Bit definitions and macros for MCF_PCI_PCIRPSR */ +#define MCF_PCI_PCIRPSR_PKTSIZE(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_PCI_PCIRSAR */ +#define MCF_PCI_PCIRSAR_STARTADD(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_PCI_PCIRTCR */ +#define MCF_PCI_PCIRTCR_DI (0x1) +#define MCF_PCI_PCIRTCR_W (0x10) +#define MCF_PCI_PCIRTCR_MAXBEATS(x) (((x)&0x7)<<0x8) +#define MCF_PCI_PCIRTCR_FB (0x1000) +#define MCF_PCI_PCIRTCR_MAXRETRY(x) (((x)&0xFF)<<0x10) +#define MCF_PCI_PCIRTCR_PCICMD(x) (((x)&0xF)<<0x18) + +/* Bit definitions and macros for MCF_PCI_PCIRER */ +#define MCF_PCI_PCIRER_NE (0x10000) +#define MCF_PCI_PCIRER_IAE (0x20000) +#define MCF_PCI_PCIRER_TAE (0x40000) +#define MCF_PCI_PCIRER_RE (0x80000) +#define MCF_PCI_PCIRER_SE (0x100000) +#define MCF_PCI_PCIRER_FEE (0x200000) +#define MCF_PCI_PCIRER_ME (0x1000000) +#define MCF_PCI_PCIRER_BE (0x8000000) +#define MCF_PCI_PCIRER_CM (0x10000000) +#define MCF_PCI_PCIRER_FE (0x20000000) +#define MCF_PCI_PCIRER_RF (0x40000000) +#define MCF_PCI_PCIRER_RC (0x80000000) + +/* Bit definitions and macros for MCF_PCI_PCIRNAR */ +#define MCF_PCI_PCIRNAR_NEXTADDRESS(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_PCI_PCIRDCR */ +#define MCF_PCI_PCIRDCR_PKTSDONE(x) (((x)&0xFFFF)<<0) +#define MCF_PCI_PCIRDCR_BYTESDONE(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_PCI_PCIRSR */ +#define MCF_PCI_PCIRSR_IA (0x10000) +#define MCF_PCI_PCIRSR_TA (0x20000) +#define MCF_PCI_PCIRSR_RE (0x40000) +#define MCF_PCI_PCIRSR_SE (0x80000) +#define MCF_PCI_PCIRSR_FE (0x100000) +#define MCF_PCI_PCIRSR_BE1 (0x200000) +#define MCF_PCI_PCIRSR_BE2 (0x400000) +#define MCF_PCI_PCIRSR_BE3 (0x800000) +#define MCF_PCI_PCIRSR_NT (0x1000000) + +/* Bit definitions and macros for MCF_PCI_PCIRFDR */ +#define MCF_PCI_PCIRFDR_FIFODATAWORD(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_PCI_PCIRFSR */ +#define MCF_PCI_PCIRFSR_EMPTY (0x10000) +#define MCF_PCI_PCIRFSR_ALARM (0x20000) +#define MCF_PCI_PCIRFSR_FULL (0x40000) +#define MCF_PCI_PCIRFSR_FR (0x80000) +#define MCF_PCI_PCIRFSR_OF (0x100000) +#define MCF_PCI_PCIRFSR_UF (0x200000) +#define MCF_PCI_PCIRFSR_RXW (0x400000) +#define MCF_PCI_PCIRFSR_FAE (0x800000) +#define MCF_PCI_PCIRFSR_TXW (0x40000000) +#define MCF_PCI_PCIRFSR_IP (0x80000000) + +/* Bit definitions and macros for MCF_PCI_PCIRFCR */ +#define MCF_PCI_PCIRFCR_TXW_MASK (0x40000) +#define MCF_PCI_PCIRFCR_OF_MASK (0x80000) +#define MCF_PCI_PCIRFCR_UF_MASK (0x100000) +#define MCF_PCI_PCIRFCR_RXW_MASK (0x200000) +#define MCF_PCI_PCIRFCR_FAE_MASK (0x400000) +#define MCF_PCI_PCIRFCR_IP_MASK (0x800000) +#define MCF_PCI_PCIRFCR_GR(x) (((x)&0x7)<<0x18) +#define MCF_PCI_PCIRFCR_WFR (0x20000000) + +/* Bit definitions and macros for MCF_PCI_PCIRFAR */ +#define MCF_PCI_PCIRFAR_ALARM(x) (((x)&0x7F)<<0) + +/* Bit definitions and macros for MCF_PCI_PCIRFRPR */ +#define MCF_PCI_PCIRFRPR_READPTR(x) (((x)&0x7F)<<0) + +/* Bit definitions and macros for MCF_PCI_PCIRFWPR */ +#define MCF_PCI_PCIRFWPR_WRITEPTR(x) (((x)&0x7F)<<0) + + +#endif /* __MCF5475_PCI_H__ */ diff --git a/BaS_gcc/tos/pci_mem/include/MCF5475_PCIARB.h b/BaS_gcc/tos/pci_mem/include/MCF5475_PCIARB.h new file mode 100644 index 0000000..9e8c05b --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/MCF5475_PCIARB.h @@ -0,0 +1,43 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_PCIARB_H__ +#define __MCF5475_PCIARB_H__ + + +/********************************************************************* +* +* PCI Bus Arbiter Module (PCIARB) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_PCIARB_PACR (*(volatile uint32_t*)(&_MBAR[0xC00])) +#define MCF_PCIARB_PASR (*(volatile uint32_t*)(&_MBAR[0xC04])) + + +/* Bit definitions and macros for MCF_PCIARB_PACR */ +#define MCF_PCIARB_PACR_INTMPRI (0x1) +#define MCF_PCIARB_PACR_EXTMPRI(x) (((x)&0x1F)<<0x1) +#define MCF_PCIARB_PACR_INTMINTEN (0x10000) +#define MCF_PCIARB_PACR_EXTMINTEN(x) (((x)&0x1F)<<0x11) +#define MCF_PCIARB_PACR_DS (0x80000000) + +/* Bit definitions and macros for MCF_PCIARB_PASR */ +#define MCF_PCIARB_PASR_ITLMBK (0x10000) +#define MCF_PCIARB_PASR_EXTMBK(x) (((x)&0x1F)<<0x11) + + +#endif /* __MCF5475_PCIARB_H__ */ diff --git a/BaS_gcc/tos/pci_mem/include/MCF5475_PSC.h b/BaS_gcc/tos/pci_mem/include/MCF5475_PSC.h new file mode 100644 index 0000000..ffa9f3e --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/MCF5475_PSC.h @@ -0,0 +1,527 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_PSC_H__ +#define __MCF5475_PSC_H__ + + +/********************************************************************* +* +* Programmable Serial Controller (PSC) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_PSC0_PSCMR2 (*(volatile uint8_t *)(&_MBAR[0x8600])) +#define MCF_PSC0_PSCMR1 (*(volatile uint8_t *)(&_MBAR[0x8600])) +#define MCF_PSC0_PSCCSR (*(volatile uint8_t *)(&_MBAR[0x8604])) +#define MCF_PSC0_PSCSR (*(volatile uint16_t*)(&_MBAR[0x8604])) +#define MCF_PSC0_PSCCR (*(volatile uint8_t *)(&_MBAR[0x8608])) +#define MCF_PSC0_PSCRB_8BIT (*(volatile uint32_t*)(&_MBAR[0x860C])) +#define MCF_PSC0_PSCTB_8BIT (*(volatile uint32_t*)(&_MBAR[0x860C])) +#define MCF_PSC0_PSCRB_16BIT (*(volatile uint32_t*)(&_MBAR[0x860C])) +#define MCF_PSC0_PSCTB_16BIT (*(volatile uint32_t*)(&_MBAR[0x860C])) +#define MCF_PSC0_PSCRB_AC97 (*(volatile uint32_t*)(&_MBAR[0x860C])) +#define MCF_PSC0_PSCTB_AC97 (*(volatile uint32_t*)(&_MBAR[0x860C])) +#define MCF_PSC0_PSCIPCR (*(volatile uint8_t *)(&_MBAR[0x8610])) +#define MCF_PSC0_PSCACR (*(volatile uint8_t *)(&_MBAR[0x8610])) +#define MCF_PSC0_PSCIMR (*(volatile uint16_t*)(&_MBAR[0x8614])) +#define MCF_PSC0_PSCISR (*(volatile uint16_t*)(&_MBAR[0x8614])) +#define MCF_PSC0_PSCCTUR (*(volatile uint8_t *)(&_MBAR[0x8618])) +#define MCF_PSC0_PSCCTLR (*(volatile uint8_t *)(&_MBAR[0x861C])) +#define MCF_PSC0_PSCIP (*(volatile uint8_t *)(&_MBAR[0x8634])) +#define MCF_PSC0_PSCOPSET (*(volatile uint8_t *)(&_MBAR[0x8638])) +#define MCF_PSC0_PSCOPRESET (*(volatile uint8_t *)(&_MBAR[0x863C])) +#define MCF_PSC0_PSCSICR (*(volatile uint8_t *)(&_MBAR[0x8640])) +#define MCF_PSC0_PSCIRCR1 (*(volatile uint8_t *)(&_MBAR[0x8644])) +#define MCF_PSC0_PSCIRCR2 (*(volatile uint8_t *)(&_MBAR[0x8648])) +#define MCF_PSC0_PSCIRSDR (*(volatile uint8_t *)(&_MBAR[0x864C])) +#define MCF_PSC0_PSCIRMDR (*(volatile uint8_t *)(&_MBAR[0x8650])) +#define MCF_PSC0_PSCIRFDR (*(volatile uint8_t *)(&_MBAR[0x8654])) +#define MCF_PSC0_PSCRFCNT (*(volatile uint16_t*)(&_MBAR[0x8658])) +#define MCF_PSC0_PSCTFCNT (*(volatile uint16_t*)(&_MBAR[0x865C])) +#define MCF_PSC0_PSCRFDR (*(volatile uint32_t*)(&_MBAR[0x8660])) +#define MCF_PSC0_PSCRFSR (*(volatile uint16_t*)(&_MBAR[0x8664])) +#define MCF_PSC0_PSCRFCR (*(volatile uint32_t*)(&_MBAR[0x8668])) +#define MCF_PSC0_PSCRFAR (*(volatile uint16_t*)(&_MBAR[0x866E])) +#define MCF_PSC0_PSCRFRP (*(volatile uint16_t*)(&_MBAR[0x8672])) +#define MCF_PSC0_PSCRFWP (*(volatile uint16_t*)(&_MBAR[0x8676])) +#define MCF_PSC0_PSCRLRFP (*(volatile uint16_t*)(&_MBAR[0x867A])) +#define MCF_PSC0_PSCRLWFP (*(volatile uint16_t*)(&_MBAR[0x867E])) +#define MCF_PSC0_PSCTFDR (*(volatile uint32_t*)(&_MBAR[0x8680])) +#define MCF_PSC0_PSCTFSR (*(volatile uint16_t*)(&_MBAR[0x8684])) +#define MCF_PSC0_PSCTFCR (*(volatile uint32_t*)(&_MBAR[0x8688])) +#define MCF_PSC0_PSCTFAR (*(volatile uint16_t*)(&_MBAR[0x868E])) +#define MCF_PSC0_PSCTFRP (*(volatile uint16_t*)(&_MBAR[0x8692])) +#define MCF_PSC0_PSCTFWP (*(volatile uint16_t*)(&_MBAR[0x8696])) +#define MCF_PSC0_PSCTLRFP (*(volatile uint16_t*)(&_MBAR[0x869A])) +#define MCF_PSC0_PSCTLWFP (*(volatile uint16_t*)(&_MBAR[0x869E])) + +#define MCF_PSC1_PSCMR2 (*(volatile uint8_t *)(&_MBAR[0x8700])) +#define MCF_PSC1_PSCMR1 (*(volatile uint8_t *)(&_MBAR[0x8700])) +#define MCF_PSC1_PSCCSR (*(volatile uint8_t *)(&_MBAR[0x8704])) +#define MCF_PSC1_PSCSR (*(volatile uint16_t*)(&_MBAR[0x8704])) +#define MCF_PSC1_PSCCR (*(volatile uint8_t *)(&_MBAR[0x8708])) +#define MCF_PSC1_PSCRB_8BIT (*(volatile uint32_t*)(&_MBAR[0x870C])) +#define MCF_PSC1_PSCTB_8BIT (*(volatile uint32_t*)(&_MBAR[0x870C])) +#define MCF_PSC1_PSCRB_16BIT (*(volatile uint32_t*)(&_MBAR[0x870C])) +#define MCF_PSC1_PSCTB_16BIT (*(volatile uint32_t*)(&_MBAR[0x870C])) +#define MCF_PSC1_PSCRB_AC97 (*(volatile uint32_t*)(&_MBAR[0x870C])) +#define MCF_PSC1_PSCTB_AC97 (*(volatile uint32_t*)(&_MBAR[0x870C])) +#define MCF_PSC1_PSCIPCR (*(volatile uint8_t *)(&_MBAR[0x8710])) +#define MCF_PSC1_PSCACR (*(volatile uint8_t *)(&_MBAR[0x8710])) +#define MCF_PSC1_PSCIMR (*(volatile uint16_t*)(&_MBAR[0x8714])) +#define MCF_PSC1_PSCISR (*(volatile uint16_t*)(&_MBAR[0x8714])) +#define MCF_PSC1_PSCCTUR (*(volatile uint8_t *)(&_MBAR[0x8718])) +#define MCF_PSC1_PSCCTLR (*(volatile uint8_t *)(&_MBAR[0x871C])) +#define MCF_PSC1_PSCIP (*(volatile uint8_t *)(&_MBAR[0x8734])) +#define MCF_PSC1_PSCOPSET (*(volatile uint8_t *)(&_MBAR[0x8738])) +#define MCF_PSC1_PSCOPRESET (*(volatile uint8_t *)(&_MBAR[0x873C])) +#define MCF_PSC1_PSCSICR (*(volatile uint8_t *)(&_MBAR[0x8740])) +#define MCF_PSC1_PSCIRCR1 (*(volatile uint8_t *)(&_MBAR[0x8744])) +#define MCF_PSC1_PSCIRCR2 (*(volatile uint8_t *)(&_MBAR[0x8748])) +#define MCF_PSC1_PSCIRSDR (*(volatile uint8_t *)(&_MBAR[0x874C])) +#define MCF_PSC1_PSCIRMDR (*(volatile uint8_t *)(&_MBAR[0x8750])) +#define MCF_PSC1_PSCIRFDR (*(volatile uint8_t *)(&_MBAR[0x8754])) +#define MCF_PSC1_PSCRFCNT (*(volatile uint16_t*)(&_MBAR[0x8758])) +#define MCF_PSC1_PSCTFCNT (*(volatile uint16_t*)(&_MBAR[0x875C])) +#define MCF_PSC1_PSCRFDR (*(volatile uint32_t*)(&_MBAR[0x8760])) +#define MCF_PSC1_PSCRFSR (*(volatile uint16_t*)(&_MBAR[0x8764])) +#define MCF_PSC1_PSCRFCR (*(volatile uint32_t*)(&_MBAR[0x8768])) +#define MCF_PSC1_PSCRFAR (*(volatile uint16_t*)(&_MBAR[0x876E])) +#define MCF_PSC1_PSCRFRP (*(volatile uint16_t*)(&_MBAR[0x8772])) +#define MCF_PSC1_PSCRFWP (*(volatile uint16_t*)(&_MBAR[0x8776])) +#define MCF_PSC1_PSCRLRFP (*(volatile uint16_t*)(&_MBAR[0x877A])) +#define MCF_PSC1_PSCRLWFP (*(volatile uint16_t*)(&_MBAR[0x877E])) +#define MCF_PSC1_PSCTFDR (*(volatile uint32_t*)(&_MBAR[0x8780])) +#define MCF_PSC1_PSCTFSR (*(volatile uint16_t*)(&_MBAR[0x8784])) +#define MCF_PSC1_PSCTFCR (*(volatile uint32_t*)(&_MBAR[0x8788])) +#define MCF_PSC1_PSCTFAR (*(volatile uint16_t*)(&_MBAR[0x878E])) +#define MCF_PSC1_PSCTFRP (*(volatile uint16_t*)(&_MBAR[0x8792])) +#define MCF_PSC1_PSCTFWP (*(volatile uint16_t*)(&_MBAR[0x8796])) +#define MCF_PSC1_PSCTLRFP (*(volatile uint16_t*)(&_MBAR[0x879A])) +#define MCF_PSC1_PSCTLWFP (*(volatile uint16_t*)(&_MBAR[0x879E])) + +#define MCF_PSC2_PSCMR2 (*(volatile uint8_t *)(&_MBAR[0x8800])) +#define MCF_PSC2_PSCMR1 (*(volatile uint8_t *)(&_MBAR[0x8800])) +#define MCF_PSC2_PSCCSR (*(volatile uint8_t *)(&_MBAR[0x8804])) +#define MCF_PSC2_PSCSR (*(volatile uint16_t*)(&_MBAR[0x8804])) +#define MCF_PSC2_PSCCR (*(volatile uint8_t *)(&_MBAR[0x8808])) +#define MCF_PSC2_PSCRB_8BIT (*(volatile uint32_t*)(&_MBAR[0x880C])) +#define MCF_PSC2_PSCTB_8BIT (*(volatile uint32_t*)(&_MBAR[0x880C])) +#define MCF_PSC2_PSCRB_16BIT (*(volatile uint32_t*)(&_MBAR[0x880C])) +#define MCF_PSC2_PSCTB_16BIT (*(volatile uint32_t*)(&_MBAR[0x880C])) +#define MCF_PSC2_PSCRB_AC97 (*(volatile uint32_t*)(&_MBAR[0x880C])) +#define MCF_PSC2_PSCTB_AC97 (*(volatile uint32_t*)(&_MBAR[0x880C])) +#define MCF_PSC2_PSCIPCR (*(volatile uint8_t *)(&_MBAR[0x8810])) +#define MCF_PSC2_PSCACR (*(volatile uint8_t *)(&_MBAR[0x8810])) +#define MCF_PSC2_PSCIMR (*(volatile uint16_t*)(&_MBAR[0x8814])) +#define MCF_PSC2_PSCISR (*(volatile uint16_t*)(&_MBAR[0x8814])) +#define MCF_PSC2_PSCCTUR (*(volatile uint8_t *)(&_MBAR[0x8818])) +#define MCF_PSC2_PSCCTLR (*(volatile uint8_t *)(&_MBAR[0x881C])) +#define MCF_PSC2_PSCIP (*(volatile uint8_t *)(&_MBAR[0x8834])) +#define MCF_PSC2_PSCOPSET (*(volatile uint8_t *)(&_MBAR[0x8838])) +#define MCF_PSC2_PSCOPRESET (*(volatile uint8_t *)(&_MBAR[0x883C])) +#define MCF_PSC2_PSCSICR (*(volatile uint8_t *)(&_MBAR[0x8840])) +#define MCF_PSC2_PSCIRCR1 (*(volatile uint8_t *)(&_MBAR[0x8844])) +#define MCF_PSC2_PSCIRCR2 (*(volatile uint8_t *)(&_MBAR[0x8848])) +#define MCF_PSC2_PSCIRSDR (*(volatile uint8_t *)(&_MBAR[0x884C])) +#define MCF_PSC2_PSCIRMDR (*(volatile uint8_t *)(&_MBAR[0x8850])) +#define MCF_PSC2_PSCIRFDR (*(volatile uint8_t *)(&_MBAR[0x8854])) +#define MCF_PSC2_PSCRFCNT (*(volatile uint16_t*)(&_MBAR[0x8858])) +#define MCF_PSC2_PSCTFCNT (*(volatile uint16_t*)(&_MBAR[0x885C])) +#define MCF_PSC2_PSCRFDR (*(volatile uint32_t*)(&_MBAR[0x8860])) +#define MCF_PSC2_PSCRFSR (*(volatile uint16_t*)(&_MBAR[0x8864])) +#define MCF_PSC2_PSCRFCR (*(volatile uint32_t*)(&_MBAR[0x8868])) +#define MCF_PSC2_PSCRFAR (*(volatile uint16_t*)(&_MBAR[0x886E])) +#define MCF_PSC2_PSCRFRP (*(volatile uint16_t*)(&_MBAR[0x8872])) +#define MCF_PSC2_PSCRFWP (*(volatile uint16_t*)(&_MBAR[0x8876])) +#define MCF_PSC2_PSCRLRFP (*(volatile uint16_t*)(&_MBAR[0x887A])) +#define MCF_PSC2_PSCRLWFP (*(volatile uint16_t*)(&_MBAR[0x887E])) +#define MCF_PSC2_PSCTFDR (*(volatile uint32_t*)(&_MBAR[0x8880])) +#define MCF_PSC2_PSCTFSR (*(volatile uint16_t*)(&_MBAR[0x8884])) +#define MCF_PSC2_PSCTFCR (*(volatile uint32_t*)(&_MBAR[0x8888])) +#define MCF_PSC2_PSCTFAR (*(volatile uint16_t*)(&_MBAR[0x888E])) +#define MCF_PSC2_PSCTFRP (*(volatile uint16_t*)(&_MBAR[0x8892])) +#define MCF_PSC2_PSCTFWP (*(volatile uint16_t*)(&_MBAR[0x8896])) +#define MCF_PSC2_PSCTLRFP (*(volatile uint16_t*)(&_MBAR[0x889A])) +#define MCF_PSC2_PSCTLWFP (*(volatile uint16_t*)(&_MBAR[0x889E])) + +#define MCF_PSC3_PSCMR2 (*(volatile uint8_t *)(&_MBAR[0x8900])) +#define MCF_PSC3_PSCMR1 (*(volatile uint8_t *)(&_MBAR[0x8900])) +#define MCF_PSC3_PSCCSR (*(volatile uint8_t *)(&_MBAR[0x8904])) +#define MCF_PSC3_PSCSR (*(volatile uint16_t*)(&_MBAR[0x8904])) +#define MCF_PSC3_PSCCR (*(volatile uint8_t *)(&_MBAR[0x8908])) +#define MCF_PSC3_PSCRB_8BIT (*(volatile uint32_t*)(&_MBAR[0x890C])) +#define MCF_PSC3_PSCTB_8BIT (*(volatile uint32_t*)(&_MBAR[0x890C])) +#define MCF_PSC3_PSCRB_16BIT (*(volatile uint32_t*)(&_MBAR[0x890C])) +#define MCF_PSC3_PSCTB_16BIT (*(volatile uint32_t*)(&_MBAR[0x890C])) +#define MCF_PSC3_PSCRB_AC97 (*(volatile uint32_t*)(&_MBAR[0x890C])) +#define MCF_PSC3_PSCTB_AC97 (*(volatile uint32_t*)(&_MBAR[0x890C])) +#define MCF_PSC3_PSCIPCR (*(volatile uint8_t *)(&_MBAR[0x8910])) +#define MCF_PSC3_PSCACR (*(volatile uint8_t *)(&_MBAR[0x8910])) +#define MCF_PSC3_PSCIMR (*(volatile uint16_t*)(&_MBAR[0x8914])) +#define MCF_PSC3_PSCISR (*(volatile uint16_t*)(&_MBAR[0x8914])) +#define MCF_PSC3_PSCCTUR (*(volatile uint8_t *)(&_MBAR[0x8918])) +#define MCF_PSC3_PSCCTLR (*(volatile uint8_t *)(&_MBAR[0x891C])) +#define MCF_PSC3_PSCIP (*(volatile uint8_t *)(&_MBAR[0x8934])) +#define MCF_PSC3_PSCOPSET (*(volatile uint8_t *)(&_MBAR[0x8938])) +#define MCF_PSC3_PSCOPRESET (*(volatile uint8_t *)(&_MBAR[0x893C])) +#define MCF_PSC3_PSCSICR (*(volatile uint8_t *)(&_MBAR[0x8940])) +#define MCF_PSC3_PSCIRCR1 (*(volatile uint8_t *)(&_MBAR[0x8944])) +#define MCF_PSC3_PSCIRCR2 (*(volatile uint8_t *)(&_MBAR[0x8948])) +#define MCF_PSC3_PSCIRSDR (*(volatile uint8_t *)(&_MBAR[0x894C])) +#define MCF_PSC3_PSCIRMDR (*(volatile uint8_t *)(&_MBAR[0x8950])) +#define MCF_PSC3_PSCIRFDR (*(volatile uint8_t *)(&_MBAR[0x8954])) +#define MCF_PSC3_PSCRFCNT (*(volatile uint16_t*)(&_MBAR[0x8958])) +#define MCF_PSC3_PSCTFCNT (*(volatile uint16_t*)(&_MBAR[0x895C])) +#define MCF_PSC3_PSCRFDR (*(volatile uint32_t*)(&_MBAR[0x8960])) +#define MCF_PSC3_PSCRFSR (*(volatile uint16_t*)(&_MBAR[0x8964])) +#define MCF_PSC3_PSCRFCR (*(volatile uint32_t*)(&_MBAR[0x8968])) +#define MCF_PSC3_PSCRFAR (*(volatile uint16_t*)(&_MBAR[0x896E])) +#define MCF_PSC3_PSCRFRP (*(volatile uint16_t*)(&_MBAR[0x8972])) +#define MCF_PSC3_PSCRFWP (*(volatile uint16_t*)(&_MBAR[0x8976])) +#define MCF_PSC3_PSCRLRFP (*(volatile uint16_t*)(&_MBAR[0x897A])) +#define MCF_PSC3_PSCRLWFP (*(volatile uint16_t*)(&_MBAR[0x897E])) +#define MCF_PSC3_PSCTFDR (*(volatile uint32_t*)(&_MBAR[0x8980])) +#define MCF_PSC3_PSCTFSR (*(volatile uint16_t*)(&_MBAR[0x8984])) +#define MCF_PSC3_PSCTFCR (*(volatile uint32_t*)(&_MBAR[0x8988])) +#define MCF_PSC3_PSCTFAR (*(volatile uint16_t*)(&_MBAR[0x898E])) +#define MCF_PSC3_PSCTFRP (*(volatile uint16_t*)(&_MBAR[0x8992])) +#define MCF_PSC3_PSCTFWP (*(volatile uint16_t*)(&_MBAR[0x8996])) +#define MCF_PSC3_PSCTLRFP (*(volatile uint16_t*)(&_MBAR[0x899A])) +#define MCF_PSC3_PSCTLWFP (*(volatile uint16_t*)(&_MBAR[0x899E])) + +#define MCF_PSC_PSCMR(x) (*(volatile uint8_t *)(&_MBAR[0x8600 + ((x)*0x100)])) +#define MCF_PSC_PSCCSR(x) (*(volatile uint8_t *)(&_MBAR[0x8604 + ((x)*0x100)])) +#define MCF_PSC_PSCSR(x) (*(volatile uint16_t*)(&_MBAR[0x8604 + ((x)*0x100)])) +#define MCF_PSC_PSCCR(x) (*(volatile uint8_t *)(&_MBAR[0x8608 + ((x)*0x100)])) +#define MCF_PSC_PSCRB_8BIT(x) (*(volatile uint32_t*)(&_MBAR[0x860C + ((x)*0x100)])) +#define MCF_PSC_PSCTB_8BIT(x) (*(volatile uint32_t*)(&_MBAR[0x860C + ((x)*0x100)])) +#define MCF_PSC_PSCRB_16BIT(x) (*(volatile uint32_t*)(&_MBAR[0x860C + ((x)*0x100)])) +#define MCF_PSC_PSCTB_16BIT(x) (*(volatile uint32_t*)(&_MBAR[0x860C + ((x)*0x100)])) +#define MCF_PSC_PSCRB_AC97(x) (*(volatile uint32_t*)(&_MBAR[0x860C + ((x)*0x100)])) +#define MCF_PSC_PSCTB_AC97(x) (*(volatile uint32_t*)(&_MBAR[0x860C + ((x)*0x100)])) +#define MCF_PSC_PSCIPCR(x) (*(volatile uint8_t *)(&_MBAR[0x8610 + ((x)*0x100)])) +#define MCF_PSC_PSCACR(x) (*(volatile uint8_t *)(&_MBAR[0x8610 + ((x)*0x100)])) +#define MCF_PSC_PSCIMR(x) (*(volatile uint16_t*)(&_MBAR[0x8614 + ((x)*0x100)])) +#define MCF_PSC_PSCISR(x) (*(volatile uint16_t*)(&_MBAR[0x8614 + ((x)*0x100)])) +#define MCF_PSC_PSCCTUR(x) (*(volatile uint8_t *)(&_MBAR[0x8618 + ((x)*0x100)])) +#define MCF_PSC_PSCCTLR(x) (*(volatile uint8_t *)(&_MBAR[0x861C + ((x)*0x100)])) +#define MCF_PSC_PSCIP(x) (*(volatile uint8_t *)(&_MBAR[0x8634 + ((x)*0x100)])) +#define MCF_PSC_PSCOPSET(x) (*(volatile uint8_t *)(&_MBAR[0x8638 + ((x)*0x100)])) +#define MCF_PSC_PSCOPRESET(x) (*(volatile uint8_t *)(&_MBAR[0x863C + ((x)*0x100)])) +#define MCF_PSC_PSCSICR(x) (*(volatile uint8_t *)(&_MBAR[0x8640 + ((x)*0x100)])) +#define MCF_PSC_PSCIRCR1(x) (*(volatile uint8_t *)(&_MBAR[0x8644 + ((x)*0x100)])) +#define MCF_PSC_PSCIRCR2(x) (*(volatile uint8_t *)(&_MBAR[0x8648 + ((x)*0x100)])) +#define MCF_PSC_PSCIRSDR(x) (*(volatile uint8_t *)(&_MBAR[0x864C + ((x)*0x100)])) +#define MCF_PSC_PSCIRMDR(x) (*(volatile uint8_t *)(&_MBAR[0x8650 + ((x)*0x100)])) +#define MCF_PSC_PSCIRFDR(x) (*(volatile uint8_t *)(&_MBAR[0x8654 + ((x)*0x100)])) +#define MCF_PSC_PSCRFCNT(x) (*(volatile uint16_t*)(&_MBAR[0x8658 + ((x)*0x100)])) +#define MCF_PSC_PSCTFCNT(x) (*(volatile uint16_t*)(&_MBAR[0x865C + ((x)*0x100)])) +#define MCF_PSC_PSCRFDR(x) (*(volatile uint32_t*)(&_MBAR[0x8660 + ((x)*0x100)])) +#define MCF_PSC_PSCRFSR(x) (*(volatile uint16_t*)(&_MBAR[0x8664 + ((x)*0x100)])) +#define MCF_PSC_PSCRFCR(x) (*(volatile uint32_t*)(&_MBAR[0x8668 + ((x)*0x100)])) +#define MCF_PSC_PSCRFAR(x) (*(volatile uint16_t*)(&_MBAR[0x866E + ((x)*0x100)])) +#define MCF_PSC_PSCRFRP(x) (*(volatile uint16_t*)(&_MBAR[0x8672 + ((x)*0x100)])) +#define MCF_PSC_PSCRFWP(x) (*(volatile uint16_t*)(&_MBAR[0x8676 + ((x)*0x100)])) +#define MCF_PSC_PSCRLRFP(x) (*(volatile uint16_t*)(&_MBAR[0x867A + ((x)*0x100)])) +#define MCF_PSC_PSCRLWFP(x) (*(volatile uint16_t*)(&_MBAR[0x867E + ((x)*0x100)])) +#define MCF_PSC_PSCTFDR(x) (*(volatile uint32_t*)(&_MBAR[0x8680 + ((x)*0x100)])) +#define MCF_PSC_PSCTFSR(x) (*(volatile uint16_t*)(&_MBAR[0x8684 + ((x)*0x100)])) +#define MCF_PSC_PSCTFCR(x) (*(volatile uint32_t*)(&_MBAR[0x8688 + ((x)*0x100)])) +#define MCF_PSC_PSCTFAR(x) (*(volatile uint16_t*)(&_MBAR[0x868E + ((x)*0x100)])) +#define MCF_PSC_PSCTFRP(x) (*(volatile uint16_t*)(&_MBAR[0x8692 + ((x)*0x100)])) +#define MCF_PSC_PSCTFWP(x) (*(volatile uint16_t*)(&_MBAR[0x8696 + ((x)*0x100)])) +#define MCF_PSC_PSCTLRFP(x) (*(volatile uint16_t*)(&_MBAR[0x869A + ((x)*0x100)])) +#define MCF_PSC_PSCTLWFP(x) (*(volatile uint16_t*)(&_MBAR[0x869E + ((x)*0x100)])) + +/* Bit definitions and macros for MCF_PSC_PSCMR */ +#define MCF_PSC_PSCMR_SB(x) (((x)&0xF)<<0) +#define MCF_PSC_PSCMR_TXCTS (0x10) +#define MCF_PSC_PSCMR_TXRTS (0x20) +#define MCF_PSC_PSCMR_CM(x) (((x)&0x3)<<0x6) +#define MCF_PSC_PSCMR_CM_NORMAL (0) +#define MCF_PSC_PSCMR_CM_ECHO (0x40) +#define MCF_PSC_PSCMR_CM_LOCAL_LOOP (0x80) +#define MCF_PSC_PSCMR_CM_REMOTE_LOOP (0xC0) +#define MCF_PSC_PSCMR_SB_STOP_BITS_1 (0x7) +#define MCF_PSC_PSCMR_SB_STOP_BITS_15 (0x8) +#define MCF_PSC_PSCMR_SB_STOP_BITS_2 (0xF) +#define MCF_PSC_PSCMR_PM_MULTI_ADDR (0x1C) +#define MCF_PSC_PSCMR_PM_MULTI_DATA (0x18) +#define MCF_PSC_PSCMR_PM_NONE (0x10) +#define MCF_PSC_PSCMR_PM_FORCE_HI (0xC) +#define MCF_PSC_PSCMR_PM_FORCE_LO (0x8) +#define MCF_PSC_PSCMR_PM_ODD (0x4) +#define MCF_PSC_PSCMR_PM_EVEN (0) +#define MCF_PSC_PSCMR_BC(x) (((x)&0x3)<<0) +#define MCF_PSC_PSCMR_BC_5 (0) +#define MCF_PSC_PSCMR_BC_6 (0x1) +#define MCF_PSC_PSCMR_BC_7 (0x2) +#define MCF_PSC_PSCMR_BC_8 (0x3) +#define MCF_PSC_PSCMR_PT (0x4) +#define MCF_PSC_PSCMR_PM(x) (((x)&0x3)<<0x3) +#define MCF_PSC_PSCMR_ERR (0x20) +#define MCF_PSC_PSCMR_RXIRQ_FU (0x40) +#define MCF_PSC_PSCMR_RXRTS (0x80) + +/* Bit definitions and macros for MCF_PSC_PSCCSR */ +#define MCF_PSC_PSCCSR_TCSEL(x) (((x)&0xF)<<0) +#define MCF_PSC_PSCCSR_RCSEL(x) (((x)&0xF)<<0x4) +#define MCF_PSC_PSCCSR_TCSEL_SYS_CLK (0x0D) +#define MCF_PSC_PSCCSR_TCSEL_CTM16 (0x0E) +#define MCF_PSC_PSCCSR_TCSEL_CTM (0x0F) +#define MCF_PSC_PSCCSR_RCSEL_SYS_CLK (0xD0) +#define MCF_PSC_PSCCSR_RCSEL_CTM16 (0xE0) +#define MCF_PSC_PSCCSR_RCSEL_CTM (0xF0) + +/* Bit definitions and macros for MCF_PSC_PSCSR */ +#define MCF_PSC_PSCSR_ERR (0x40) +#define MCF_PSC_PSCSR_CDE_DEOF (0x80) +#define MCF_PSC_PSCSR_RXRDY (0x100) +#define MCF_PSC_PSCSR_FU (0x200) +#define MCF_PSC_PSCSR_TXRDY (0x400) +#define MCF_PSC_PSCSR_TXEMP_URERR (0x800) +#define MCF_PSC_PSCSR_OE (0x1000) +#define MCF_PSC_PSCSR_PE_CRCERR (0x2000) +#define MCF_PSC_PSCSR_FE_PHYERR (0x4000) +#define MCF_PSC_PSCSR_RB_NEOF (0x8000) + +/* Bit definitions and macros for MCF_PSC_PSCCR */ +#define MCF_PSC_PSCCR_RXC(x) (((x)&0x3)<<0) +#define MCF_PSC_PSCCR_RX_ENABLED (0x1) +#define MCF_PSC_PSCCR_RX_DISABLED (0x2) +#define MCF_PSC_PSCCR_TXC(x) (((x)&0x3)<<0x2) +#define MCF_PSC_PSCCR_TX_ENABLED (0x4) +#define MCF_PSC_PSCCR_TX_DISABLED (0x8) +#define MCF_PSC_PSCCR_MISC(x) (((x)&0x7)<<0x4) +#define MCF_PSC_PSCCR_NONE (0) +#define MCF_PSC_PSCCR_RESET_MR (0x10) +#define MCF_PSC_PSCCR_RESET_RX (0x20) +#define MCF_PSC_PSCCR_RESET_TX (0x30) +#define MCF_PSC_PSCCR_RESET_ERROR (0x40) +#define MCF_PSC_PSCCR_RESET_BKCHGINT (0x50) +#define MCF_PSC_PSCCR_START_BREAK (0x60) +#define MCF_PSC_PSCCR_STOP_BREAK (0x70) + +/* Bit definitions and macros for MCF_PSC_PSCRB_8BIT */ +#define MCF_PSC_PSCRB_8BIT_RB3(x) (((x)&0xFF)<<0) +#define MCF_PSC_PSCRB_8BIT_RB2(x) (((x)&0xFF)<<0x8) +#define MCF_PSC_PSCRB_8BIT_RB1(x) (((x)&0xFF)<<0x10) +#define MCF_PSC_PSCRB_8BIT_RB0(x) (((x)&0xFF)<<0x18) + +/* Bit definitions and macros for MCF_PSC_PSCTB_8BIT */ +#define MCF_PSC_PSCTB_8BIT_TB3(x) (((x)&0xFF)<<0) +#define MCF_PSC_PSCTB_8BIT_TB2(x) (((x)&0xFF)<<0x8) +#define MCF_PSC_PSCTB_8BIT_TB1(x) (((x)&0xFF)<<0x10) +#define MCF_PSC_PSCTB_8BIT_TB0(x) (((x)&0xFF)<<0x18) + +/* Bit definitions and macros for MCF_PSC_PSCRB_16BIT */ +#define MCF_PSC_PSCRB_16BIT_RB1(x) (((x)&0xFFFF)<<0) +#define MCF_PSC_PSCRB_16BIT_RB0(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_PSC_PSCTB_16BIT */ +#define MCF_PSC_PSCTB_16BIT_TB1(x) (((x)&0xFFFF)<<0) +#define MCF_PSC_PSCTB_16BIT_TB0(x) (((x)&0xFFFF)<<0x10) + +/* Bit definitions and macros for MCF_PSC_PSCRB_AC97 */ +#define MCF_PSC_PSCRB_AC97_SOF (0x800) +#define MCF_PSC_PSCRB_AC97_RB(x) (((x)&0xFFFFF)<<0xC) + +/* Bit definitions and macros for MCF_PSC_PSCTB_AC97 */ +#define MCF_PSC_PSCTB_AC97_TB(x) (((x)&0xFFFFF)<<0xC) + +/* Bit definitions and macros for MCF_PSC_PSCIPCR */ +#define MCF_PSC_PSCIPCR_RESERVED (0xC) +#define MCF_PSC_PSCIPCR_CTS (0xD) +#define MCF_PSC_PSCIPCR_D_CTS (0x1C) +#define MCF_PSC_PSCIPCR_SYNC (0x8C) + +/* Bit definitions and macros for MCF_PSC_PSCACR */ +#define MCF_PSC_PSCACR_IEC0 (0x1) + +/* Bit definitions and macros for MCF_PSC_PSCIMR */ +#define MCF_PSC_PSCIMR_ERR (0x40) +#define MCF_PSC_PSCIMR_DEOF (0x80) +#define MCF_PSC_PSCIMR_TXRDY (0x100) +#define MCF_PSC_PSCIMR_RXRDY_FU (0x200) +#define MCF_PSC_PSCIMR_DB (0x400) +#define MCF_PSC_PSCIMR_IPC (0x8000) + +/* Bit definitions and macros for MCF_PSC_PSCISR */ +#define MCF_PSC_PSCISR_ERR (0x40) +#define MCF_PSC_PSCISR_DEOF (0x80) +#define MCF_PSC_PSCISR_TXRDY (0x100) +#define MCF_PSC_PSCISR_RXRDY_FU (0x200) +#define MCF_PSC_PSCISR_DB (0x400) +#define MCF_PSC_PSCISR_IPC (0x8000) + +/* Bit definitions and macros for MCF_PSC_PSCCTUR */ +#define MCF_PSC_PSCCTUR_CT(x) (((x)&0xFF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCCTLR */ +#define MCF_PSC_PSCCTLR_CT(x) (((x)&0xFF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCIP */ +#define MCF_PSC_PSCIP_CTS (0x1) +#define MCF_PSC_PSCIP_TGL (0x40) +#define MCF_PSC_PSCIP_LPWR_B (0x80) + +/* Bit definitions and macros for MCF_PSC_PSCOPSET */ +#define MCF_PSC_PSCOPSET_RTS (0x1) + +/* Bit definitions and macros for MCF_PSC_PSCOPRESET */ +#define MCF_PSC_PSCOPRESET_RTS (0x1) + +/* Bit definitions and macros for MCF_PSC_PSCSICR */ +#define MCF_PSC_PSCSICR_SIM(x) (((x)&0x7)<<0) +#define MCF_PSC_PSCSICR_SIM_UART (0) +#define MCF_PSC_PSCSICR_SIM_MODEM8 (0x1) +#define MCF_PSC_PSCSICR_SIM_MODEM16 (0x2) +#define MCF_PSC_PSCSICR_SIM_AC97 (0x3) +#define MCF_PSC_PSCSICR_SIM_SIR (0x4) +#define MCF_PSC_PSCSICR_SIM_MIR (0x5) +#define MCF_PSC_PSCSICR_SIM_FIR (0x6) +#define MCF_PSC_PSCSICR_SHDIR (0x10) +#define MCF_PSC_PSCSICR_DTS1 (0x20) +#define MCF_PSC_PSCSICR_AWR (0x40) +#define MCF_PSC_PSCSICR_ACRB (0x80) + +/* Bit definitions and macros for MCF_PSC_PSCIRCR1 */ +#define MCF_PSC_PSCIRCR1_SPUL (0x1) +#define MCF_PSC_PSCIRCR1_SIPEN (0x2) +#define MCF_PSC_PSCIRCR1_FD (0x4) + +/* Bit definitions and macros for MCF_PSC_PSCIRCR2 */ +#define MCF_PSC_PSCIRCR2_NXTEOF (0x1) +#define MCF_PSC_PSCIRCR2_ABORT (0x2) +#define MCF_PSC_PSCIRCR2_SIPREQ (0x4) + +/* Bit definitions and macros for MCF_PSC_PSCIRSDR */ +#define MCF_PSC_PSCIRSDR_IRSTIM(x) (((x)&0xFF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCIRMDR */ +#define MCF_PSC_PSCIRMDR_M_FDIV(x) (((x)&0x7F)<<0) +#define MCF_PSC_PSCIRMDR_FREQ (0x80) + +/* Bit definitions and macros for MCF_PSC_PSCIRFDR */ +#define MCF_PSC_PSCIRFDR_F_FDIV(x) (((x)&0xF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCRFCNT */ +#define MCF_PSC_PSCRFCNT_CNT(x) (((x)&0x1FF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCTFCNT */ +#define MCF_PSC_PSCTFCNT_CNT(x) (((x)&0x1FF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCRFDR */ +#define MCF_PSC_PSCRFDR_DATA(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCRFSR */ +#define MCF_PSC_PSCRFSR_EMT (0x1) +#define MCF_PSC_PSCRFSR_ALARM (0x2) +#define MCF_PSC_PSCRFSR_FU (0x4) +#define MCF_PSC_PSCRFSR_FRMRDY (0x8) +#define MCF_PSC_PSCRFSR_OF (0x10) +#define MCF_PSC_PSCRFSR_UF (0x20) +#define MCF_PSC_PSCRFSR_RXW (0x40) +#define MCF_PSC_PSCRFSR_FAE (0x80) +#define MCF_PSC_PSCRFSR_FRM(x) (((x)&0xF)<<0x8) +#define MCF_PSC_PSCRFSR_FRM_BYTE0 (0x800) +#define MCF_PSC_PSCRFSR_FRM_BYTE1 (0x400) +#define MCF_PSC_PSCRFSR_FRM_BYTE2 (0x200) +#define MCF_PSC_PSCRFSR_FRM_BYTE3 (0x100) +#define MCF_PSC_PSCRFSR_TAG(x) (((x)&0x3)<<0xC) +#define MCF_PSC_PSCRFSR_TXW (0x4000) +#define MCF_PSC_PSCRFSR_IP (0x8000) + +/* Bit definitions and macros for MCF_PSC_PSCRFCR */ +#define MCF_PSC_PSCRFCR_CNTR(x) (((x)&0xFFFF)<<0) +#define MCF_PSC_PSCRFCR_TXW_MSK (0x40000) +#define MCF_PSC_PSCRFCR_OF_MSK (0x80000) +#define MCF_PSC_PSCRFCR_UF_MSK (0x100000) +#define MCF_PSC_PSCRFCR_RXW_MSK (0x200000) +#define MCF_PSC_PSCRFCR_FAE_MSK (0x400000) +#define MCF_PSC_PSCRFCR_IP_MSK (0x800000) +#define MCF_PSC_PSCRFCR_GR(x) (((x)&0x7)<<0x18) +#define MCF_PSC_PSCRFCR_FRMEN (0x8000000) +#define MCF_PSC_PSCRFCR_TIMER (0x10000000) + +/* Bit definitions and macros for MCF_PSC_PSCRFAR */ +#define MCF_PSC_PSCRFAR_ALARM(x) (((x)&0x1FF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCRFRP */ +#define MCF_PSC_PSCRFRP_READ(x) (((x)&0x1FF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCRFWP */ +#define MCF_PSC_PSCRFWP_WRITE(x) (((x)&0x1FF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCRLRFP */ +#define MCF_PSC_PSCRLRFP_LRFP(x) (((x)&0x1FF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCRLWFP */ +#define MCF_PSC_PSCRLWFP_LWFP(x) (((x)&0x1FF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCTFDR */ +#define MCF_PSC_PSCTFDR_DATA(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCTFSR */ +#define MCF_PSC_PSCTFSR_EMT (0x1) +#define MCF_PSC_PSCTFSR_ALARM (0x2) +#define MCF_PSC_PSCTFSR_FU (0x4) +#define MCF_PSC_PSCTFSR_FRMRDY (0x8) +#define MCF_PSC_PSCTFSR_OF (0x10) +#define MCF_PSC_PSCTFSR_UF (0x20) +#define MCF_PSC_PSCTFSR_RXW (0x40) +#define MCF_PSC_PSCTFSR_FAE (0x80) +#define MCF_PSC_PSCTFSR_FRM(x) (((x)&0xF)<<0x8) +#define MCF_PSC_PSCTFSR_FRM_BYTE0 (0x800) +#define MCF_PSC_PSCTFSR_FRM_BYTE1 (0x400) +#define MCF_PSC_PSCTFSR_FRM_BYTE2 (0x200) +#define MCF_PSC_PSCTFSR_FRM_BYTE3 (0x100) +#define MCF_PSC_PSCTFSR_TAG(x) (((x)&0x3)<<0xC) +#define MCF_PSC_PSCTFSR_TXW (0x4000) +#define MCF_PSC_PSCTFSR_IP (0x8000) + +/* Bit definitions and macros for MCF_PSC_PSCTFCR */ +#define MCF_PSC_PSCTFCR_CNTR(x) (((x)&0xFFFF)<<0) +#define MCF_PSC_PSCTFCR_TXW_MSK (0x40000) +#define MCF_PSC_PSCTFCR_OF_MSK (0x80000) +#define MCF_PSC_PSCTFCR_UF_MSK (0x100000) +#define MCF_PSC_PSCTFCR_RXW_MSK (0x200000) +#define MCF_PSC_PSCTFCR_FAE_MSK (0x400000) +#define MCF_PSC_PSCTFCR_IP_MSK (0x800000) +#define MCF_PSC_PSCTFCR_GR(x) (((x)&0x7)<<0x18) +#define MCF_PSC_PSCTFCR_FRMEN (0x8000000) +#define MCF_PSC_PSCTFCR_TIMER (0x10000000) +#define MCF_PSC_PSCTFCR_WFR (0x20000000) + +/* Bit definitions and macros for MCF_PSC_PSCTFAR */ +#define MCF_PSC_PSCTFAR_ALARM(x) (((x)&0x1FF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCTFRP */ +#define MCF_PSC_PSCTFRP_READ(x) (((x)&0x1FF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCTFWP */ +#define MCF_PSC_PSCTFWP_WRITE(x) (((x)&0x1FF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCTLRFP */ +#define MCF_PSC_PSCTLRFP_LRFP(x) (((x)&0x1FF)<<0) + +/* Bit definitions and macros for MCF_PSC_PSCTLWFP */ +#define MCF_PSC_PSCTLWFP_LWFP(x) (((x)&0x1FF)<<0) + + +#endif /* __MCF5475_PSC_H__ */ diff --git a/BaS_gcc/tos/pci_mem/include/MCF5475_SDRAMC.h b/BaS_gcc/tos/pci_mem/include/MCF5475_SDRAMC.h new file mode 100644 index 0000000..6cdbd68 --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/MCF5475_SDRAMC.h @@ -0,0 +1,106 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_SDRAMC_H__ +#define __MCF5475_SDRAMC_H__ + + +/********************************************************************* +* +* Synchronous DRAM Controller (SDRAMC) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_SDRAMC_SDRAMDS (*(volatile uint32_t*)(&_MBAR[0x4])) +#define MCF_SDRAMC_CS0CFG (*(volatile uint32_t*)(&_MBAR[0x20])) +#define MCF_SDRAMC_CS1CFG (*(volatile uint32_t*)(&_MBAR[0x24])) +#define MCF_SDRAMC_CS2CFG (*(volatile uint32_t*)(&_MBAR[0x28])) +#define MCF_SDRAMC_CS3CFG (*(volatile uint32_t*)(&_MBAR[0x2C])) +#define MCF_SDRAMC_SDMR (*(volatile uint32_t*)(&_MBAR[0x100])) +#define MCF_SDRAMC_SDCR (*(volatile uint32_t*)(&_MBAR[0x104])) +#define MCF_SDRAMC_SDCFG1 (*(volatile uint32_t*)(&_MBAR[0x108])) +#define MCF_SDRAMC_SDCFG2 (*(volatile uint32_t*)(&_MBAR[0x10C])) +#define MCF_SDRAMC_CSCFG(x) (*(volatile uint32_t*)(&_MBAR[0x20 + ((x)*0x4)])) + + +/* Bit definitions and macros for MCF_SDRAMC_SDRAMDS */ +#define MCF_SDRAMC_SDRAMDS_SB_D(x) (((x)&0x3)<<0) +#define MCF_SDRAMC_SDRAMDS_SB_S(x) (((x)&0x3)<<0x2) +#define MCF_SDRAMC_SDRAMDS_SB_A(x) (((x)&0x3)<<0x4) +#define MCF_SDRAMC_SDRAMDS_SB_C(x) (((x)&0x3)<<0x6) +#define MCF_SDRAMC_SDRAMDS_SB_E(x) (((x)&0x3)<<0x8) +#define MCF_SDRAMC_SDRAMDS_DRIVE_24MA (0) +#define MCF_SDRAMC_SDRAMDS_DRIVE_16MA (0x1) +#define MCF_SDRAMC_SDRAMDS_DRIVE_8MA (0x2) +#define MCF_SDRAMC_SDRAMDS_DRIVE_NONE (0x3) + +/* Bit definitions and macros for MCF_SDRAMC_CSCFG */ +#define MCF_SDRAMC_CSCFG_CSSZ(x) (((x)&0x1F)<<0) +#define MCF_SDRAMC_CSCFG_CSSZ_DISABLED (0) +#define MCF_SDRAMC_CSCFG_CSSZ_1MBYTE (0x13) +#define MCF_SDRAMC_CSCFG_CSSZ_2MBYTE (0x14) +#define MCF_SDRAMC_CSCFG_CSSZ_4MBYTE (0x15) +#define MCF_SDRAMC_CSCFG_CSSZ_8MBYTE (0x16) +#define MCF_SDRAMC_CSCFG_CSSZ_16MBYTE (0x17) +#define MCF_SDRAMC_CSCFG_CSSZ_32MBYTE (0x18) +#define MCF_SDRAMC_CSCFG_CSSZ_64MBYTE (0x19) +#define MCF_SDRAMC_CSCFG_CSSZ_128MBYTE (0x1A) +#define MCF_SDRAMC_CSCFG_CSSZ_256MBYTE (0x1B) +#define MCF_SDRAMC_CSCFG_CSSZ_512MBYTE (0x1C) +#define MCF_SDRAMC_CSCFG_CSSZ_1GBYTE (0x1D) +#define MCF_SDRAMC_CSCFG_CSSZ_2GBYTE (0x1E) +#define MCF_SDRAMC_CSCFG_CSSZ_4GBYTE (0x1F) +#define MCF_SDRAMC_CSCFG_CSBA(x) (((x)&0xFFF)<<0x14) +#define MCF_SDRAMC_CSCFG_BA(x) ((x)&0xFFF00000) + +/* Bit definitions and macros for MCF_SDRAMC_SDMR */ +#define MCF_SDRAMC_SDMR_CMD (0x10000) +#define MCF_SDRAMC_SDMR_AD(x) (((x)&0xFFF)<<0x12) +#define MCF_SDRAMC_SDMR_BNKAD(x) (((x)&0x3)<<0x1E) +#define MCF_SDRAMC_SDMR_BK_LMR (0) +#define MCF_SDRAMC_SDMR_BK_LEMR (0x40000000) + +/* Bit definitions and macros for MCF_SDRAMC_SDCR */ +#define MCF_SDRAMC_SDCR_IPALL (0x2) +#define MCF_SDRAMC_SDCR_IREF (0x4) +#define MCF_SDRAMC_SDCR_BUFF (0x10) +#define MCF_SDRAMC_SDCR_DQS_OE(x) (((x)&0xF)<<0x8) +#define MCF_SDRAMC_SDCR_RCNT(x) (((x)&0x3F)<<0x10) +#define MCF_SDRAMC_SDCR_DRIVE (0x400000) +#define MCF_SDRAMC_SDCR_AP (0x800000) +#define MCF_SDRAMC_SDCR_MUX(x) (((x)&0x3)<<0x18) +#define MCF_SDRAMC_SDCR_REF (0x10000000) +#define MCF_SDRAMC_SDCR_DDR (0x20000000) +#define MCF_SDRAMC_SDCR_CKE (0x40000000) +#define MCF_SDRAMC_SDCR_MODE_EN (0x80000000) + +/* Bit definitions and macros for MCF_SDRAMC_SDCFG1 */ +#define MCF_SDRAMC_SDCFG1_WTLAT(x) (((x)&0x7)<<0x4) +#define MCF_SDRAMC_SDCFG1_REF2ACT(x) (((x)&0xF)<<0x8) +#define MCF_SDRAMC_SDCFG1_PRE2ACT(x) (((x)&0x7)<<0xC) +#define MCF_SDRAMC_SDCFG1_ACT2RW(x) (((x)&0x7)<<0x10) +#define MCF_SDRAMC_SDCFG1_RDLAT(x) (((x)&0xF)<<0x14) +#define MCF_SDRAMC_SDCFG1_SWT2RD(x) (((x)&0x7)<<0x18) +#define MCF_SDRAMC_SDCFG1_SRD2RW(x) (((x)&0xF)<<0x1C) + +/* Bit definitions and macros for MCF_SDRAMC_SDCFG2 */ +#define MCF_SDRAMC_SDCFG2_BL(x) (((x)&0xF)<<0x10) +#define MCF_SDRAMC_SDCFG2_BRD2WT(x) (((x)&0xF)<<0x14) +#define MCF_SDRAMC_SDCFG2_BWT2RW(x) (((x)&0xF)<<0x18) +#define MCF_SDRAMC_SDCFG2_BRD2PRE(x) (((x)&0xF)<<0x1C) + + +#endif /* __MCF5475_SDRAMC_H__ */ diff --git a/BaS_gcc/tos/pci_mem/include/MCF5475_SEC.h b/BaS_gcc/tos/pci_mem/include/MCF5475_SEC.h new file mode 100644 index 0000000..8deff0b --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/MCF5475_SEC.h @@ -0,0 +1,398 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_SEC_H__ +#define __MCF5475_SEC_H__ + + +/********************************************************************* +* +* Integrated Security Engine (SEC) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_SEC_EUACRH (*(volatile uint32_t*)(&_MBAR[0x21000])) +#define MCF_SEC_EUACRL (*(volatile uint32_t*)(&_MBAR[0x21004])) +#define MCF_SEC_SIMRH (*(volatile uint32_t*)(&_MBAR[0x21008])) +#define MCF_SEC_SIMRL (*(volatile uint32_t*)(&_MBAR[0x2100C])) +#define MCF_SEC_SISRH (*(volatile uint32_t*)(&_MBAR[0x21010])) +#define MCF_SEC_SISRL (*(volatile uint32_t*)(&_MBAR[0x21014])) +#define MCF_SEC_SICRH (*(volatile uint32_t*)(&_MBAR[0x21018])) +#define MCF_SEC_SICRL (*(volatile uint32_t*)(&_MBAR[0x2101C])) +#define MCF_SEC_SIDR (*(volatile uint32_t*)(&_MBAR[0x21020])) +#define MCF_SEC_EUASRH (*(volatile uint32_t*)(&_MBAR[0x21028])) +#define MCF_SEC_EUASRL (*(volatile uint32_t*)(&_MBAR[0x2102C])) +#define MCF_SEC_SMCR (*(volatile uint32_t*)(&_MBAR[0x21030])) +#define MCF_SEC_MEAR (*(volatile uint32_t*)(&_MBAR[0x21038])) +#define MCF_SEC_CCCR0 (*(volatile uint32_t*)(&_MBAR[0x2200C])) +#define MCF_SEC_CCPSRH0 (*(volatile uint32_t*)(&_MBAR[0x22010])) +#define MCF_SEC_CCPSRL0 (*(volatile uint32_t*)(&_MBAR[0x22014])) +#define MCF_SEC_CDPR0 (*(volatile uint32_t*)(&_MBAR[0x22044])) +#define MCF_SEC_FR0 (*(volatile uint32_t*)(&_MBAR[0x2204C])) +#define MCF_SEC_CCCR1 (*(volatile uint32_t*)(&_MBAR[0x2300C])) +#define MCF_SEC_CCPSRH1 (*(volatile uint32_t*)(&_MBAR[0x23010])) +#define MCF_SEC_CCPSRL1 (*(volatile uint32_t*)(&_MBAR[0x23014])) +#define MCF_SEC_CDPR1 (*(volatile uint32_t*)(&_MBAR[0x23044])) +#define MCF_SEC_FR1 (*(volatile uint32_t*)(&_MBAR[0x2304C])) +#define MCF_SEC_AFRCR (*(volatile uint32_t*)(&_MBAR[0x28018])) +#define MCF_SEC_AFSR (*(volatile uint32_t*)(&_MBAR[0x28028])) +#define MCF_SEC_AFISR (*(volatile uint32_t*)(&_MBAR[0x28030])) +#define MCF_SEC_AFIMR (*(volatile uint32_t*)(&_MBAR[0x28038])) +#define MCF_SEC_DRCR (*(volatile uint32_t*)(&_MBAR[0x2A018])) +#define MCF_SEC_DSR (*(volatile uint32_t*)(&_MBAR[0x2A028])) +#define MCF_SEC_DISR (*(volatile uint32_t*)(&_MBAR[0x2A030])) +#define MCF_SEC_DIMR (*(volatile uint32_t*)(&_MBAR[0x2A038])) +#define MCF_SEC_MDRCR (*(volatile uint32_t*)(&_MBAR[0x2C018])) +#define MCF_SEC_MDSR (*(volatile uint32_t*)(&_MBAR[0x2C028])) +#define MCF_SEC_MDISR (*(volatile uint32_t*)(&_MBAR[0x2C030])) +#define MCF_SEC_MDIMR (*(volatile uint32_t*)(&_MBAR[0x2C038])) +#define MCF_SEC_RNGRCR (*(volatile uint32_t*)(&_MBAR[0x2E018])) +#define MCF_SEC_RNGSR (*(volatile uint32_t*)(&_MBAR[0x2E028])) +#define MCF_SEC_RNGISR (*(volatile uint32_t*)(&_MBAR[0x2E030])) +#define MCF_SEC_RNGIMR (*(volatile uint32_t*)(&_MBAR[0x2E038])) +#define MCF_SEC_AESRCR (*(volatile uint32_t*)(&_MBAR[0x32018])) +#define MCF_SEC_AESSR (*(volatile uint32_t*)(&_MBAR[0x32028])) +#define MCF_SEC_AESISR (*(volatile uint32_t*)(&_MBAR[0x32030])) +#define MCF_SEC_AESIMR (*(volatile uint32_t*)(&_MBAR[0x32038])) +#define MCF_SEC_CCCRn(x) (*(volatile uint32_t*)(&_MBAR[0x2200C + ((x)*0x1000)])) +#define MCF_SEC_CCPSRHn(x) (*(volatile uint32_t*)(&_MBAR[0x22010 + ((x)*0x1000)])) +#define MCF_SEC_CCPSRLn(x) (*(volatile uint32_t*)(&_MBAR[0x22014 + ((x)*0x1000)])) +#define MCF_SEC_CDPRn(x) (*(volatile uint32_t*)(&_MBAR[0x22044 + ((x)*0x1000)])) +#define MCF_SEC_FRn(x) (*(volatile uint32_t*)(&_MBAR[0x2204C + ((x)*0x1000)])) + + +/* Bit definitions and macros for MCF_SEC_EUACRH */ +#define MCF_SEC_EUACRH_AFEU(x) (((x)&0xF)<<0) +#define MCF_SEC_EUACRH_AFFEU_NOASSIGN (0) +#define MCF_SEC_EUACRH_AFFEU_CHA0 (0x1) +#define MCF_SEC_EUACRH_AFFEU_CHA1 (0x2) +#define MCF_SEC_EUACRH_MDEU(x) (((x)&0xF)<<0x8) +#define MCF_SEC_EUACRH_MDEU_NOASSIGN (0) +#define MCF_SEC_EUACRH_MDEU_CHA0 (0x100) +#define MCF_SEC_EUACRH_MDEU_CHA1 (0x200) +#define MCF_SEC_EUACRH_RNG(x) (((x)&0xF)<<0x18) +#define MCF_SEC_EUACRH_RNG_NOASSIGN (0) +#define MCF_SEC_EUACRH_RNG_CHA0 (0x1000000) +#define MCF_SEC_EUACRH_RNG_CHA1 (0x2000000) + +/* Bit definitions and macros for MCF_SEC_EUACRL */ +#define MCF_SEC_EUACRL_AESU(x) (((x)&0xF)<<0x10) +#define MCF_SEC_EUACRL_AESU_NOASSIGN (0) +#define MCF_SEC_EUACRL_AESU_CHA0 (0x10000) +#define MCF_SEC_EUACRL_AESU_CHA1 (0x20000) +#define MCF_SEC_EUACRL_DEU(x) (((x)&0xF)<<0x18) + +/* Bit definitions and macros for MCF_SEC_SIMRH */ +#define MCF_SEC_SIMRH_AERR (0x8000000) +#define MCF_SEC_SIMRH_CHA_0_DN (0x10000000) +#define MCF_SEC_SIMRH_CHA_0_ERR (0x20000000) +#define MCF_SEC_SIMRH_CHA_1_DN (0x40000000) +#define MCF_SEC_SIMRH_CHA_1_ERR (0x80000000) + +/* Bit definitions and macros for MCF_SEC_SIMRL */ +#define MCF_SEC_SIMRL_TEA (0x40) +#define MCF_SEC_SIMRL_DEU_DN (0x100) +#define MCF_SEC_SIMRL_DEU_ERR (0x200) +#define MCF_SEC_SIMRL_AESU_DN (0x1000) +#define MCF_SEC_SIMRL_AESU_ERR (0x2000) +#define MCF_SEC_SIMRL_MDEU_DN (0x10000) +#define MCF_SEC_SIMRL_MDEU_ERR (0x20000) +#define MCF_SEC_SIMRL_AFEU_DN (0x100000) +#define MCF_SEC_SIMRL_AFEU_ERR (0x200000) +#define MCF_SEC_SIMRL_RNG_DN (0x1000000) +#define MCF_SEC_SIMRL_RNG_ERR (0x2000000) + +/* Bit definitions and macros for MCF_SEC_SISRH */ +#define MCF_SEC_SISRH_AERR (0x8000000) +#define MCF_SEC_SISRH_CHA_0_DN (0x10000000) +#define MCF_SEC_SISRH_CHA_0_ERR (0x20000000) +#define MCF_SEC_SISRH_CHA_1_DN (0x40000000) +#define MCF_SEC_SISRH_CHA_1_ERR (0x80000000) + +/* Bit definitions and macros for MCF_SEC_SISRL */ +#define MCF_SEC_SISRL_TEA (0x40) +#define MCF_SEC_SISRL_DEU_DN (0x100) +#define MCF_SEC_SISRL_DEU_ERR (0x200) +#define MCF_SEC_SISRL_AESU_DN (0x1000) +#define MCF_SEC_SISRL_AESU_ERR (0x2000) +#define MCF_SEC_SISRL_MDEU_DN (0x10000) +#define MCF_SEC_SISRL_MDEU_ERR (0x20000) +#define MCF_SEC_SISRL_AFEU_DN (0x100000) +#define MCF_SEC_SISRL_AFEU_ERR (0x200000) +#define MCF_SEC_SISRL_RNG_DN (0x1000000) +#define MCF_SEC_SISRL_RNG_ERR (0x2000000) + +/* Bit definitions and macros for MCF_SEC_SICRH */ +#define MCF_SEC_SICRH_AERR (0x8000000) +#define MCF_SEC_SICRH_CHA_0_DN (0x10000000) +#define MCF_SEC_SICRH_CHA_0_ERR (0x20000000) +#define MCF_SEC_SICRH_CHA_1_DN (0x40000000) +#define MCF_SEC_SICRH_CHA_1_ERR (0x80000000) + +/* Bit definitions and macros for MCF_SEC_SICRL */ +#define MCF_SEC_SICRL_TEA (0x40) +#define MCF_SEC_SICRL_DEU_DN (0x100) +#define MCF_SEC_SICRL_DEU_ERR (0x200) +#define MCF_SEC_SICRL_AESU_DN (0x1000) +#define MCF_SEC_SICRL_AESU_ERR (0x2000) +#define MCF_SEC_SICRL_MDEU_DN (0x10000) +#define MCF_SEC_SICRL_MDEU_ERR (0x20000) +#define MCF_SEC_SICRL_AFEU_DN (0x100000) +#define MCF_SEC_SICRL_AFEU_ERR (0x200000) +#define MCF_SEC_SICRL_RNG_DN (0x1000000) +#define MCF_SEC_SICRL_RNG_ERR (0x2000000) + +/* Bit definitions and macros for MCF_SEC_SIDR */ +#define MCF_SEC_SIDR_VERSION(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_SEC_EUASRH */ +#define MCF_SEC_EUASRH_AFEU(x) (((x)&0xF)<<0) +#define MCF_SEC_EUASRH_MDEU(x) (((x)&0xF)<<0x8) +#define MCF_SEC_EUASRH_RNG(x) (((x)&0xF)<<0x18) + +/* Bit definitions and macros for MCF_SEC_EUASRL */ +#define MCF_SEC_EUASRL_AESU(x) (((x)&0xF)<<0x10) +#define MCF_SEC_EUASRL_DEU(x) (((x)&0xF)<<0x18) + +/* Bit definitions and macros for MCF_SEC_SMCR */ +#define MCF_SEC_SMCR_CURR_CHAN(x) (((x)&0xF)<<0x4) +#define MCF_SEC_SMCR_CURR_CHAN_1 (0x10) +#define MCF_SEC_SMCR_CURR_CHAN_2 (0x20) +#define MCF_SEC_SMCR_SWR (0x1000000) + +/* Bit definitions and macros for MCF_SEC_MEAR */ +#define MCF_SEC_MEAR_ADDRESS(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_SEC_CCCRn */ +#define MCF_SEC_CCCRn_RST (0x1) +#define MCF_SEC_CCCRn_CDIE (0x2) +#define MCF_SEC_CCCRn_NT (0x4) +#define MCF_SEC_CCCRn_NE (0x8) +#define MCF_SEC_CCCRn_WE (0x10) +#define MCF_SEC_CCCRn_BURST_SIZE(x) (((x)&0x7)<<0x8) +#define MCF_SEC_CCCRn_BURST_SIZE_2 (0) +#define MCF_SEC_CCCRn_BURST_SIZE_8 (0x100) +#define MCF_SEC_CCCRn_BURST_SIZE_16 (0x200) +#define MCF_SEC_CCCRn_BURST_SIZE_24 (0x300) +#define MCF_SEC_CCCRn_BURST_SIZE_32 (0x400) +#define MCF_SEC_CCCRn_BURST_SIZE_40 (0x500) +#define MCF_SEC_CCCRn_BURST_SIZE_48 (0x600) +#define MCF_SEC_CCCRn_BURST_SIZE_56 (0x700) + +/* Bit definitions and macros for MCF_SEC_CCPSRHn */ +#define MCF_SEC_CCPSRHn_STATE(x) (((x)&0xFF)<<0) + +/* Bit definitions and macros for MCF_SEC_CCPSRLn */ +#define MCF_SEC_CCPSRLn_PAIR_PTR(x) (((x)&0xFF)<<0) +#define MCF_SEC_CCPSRLn_EUERR (0x100) +#define MCF_SEC_CCPSRLn_SERR (0x200) +#define MCF_SEC_CCPSRLn_DERR (0x400) +#define MCF_SEC_CCPSRLn_PERR (0x1000) +#define MCF_SEC_CCPSRLn_TEA (0x2000) +#define MCF_SEC_CCPSRLn_SD (0x10000) +#define MCF_SEC_CCPSRLn_PD (0x20000) +#define MCF_SEC_CCPSRLn_SRD (0x40000) +#define MCF_SEC_CCPSRLn_PRD (0x80000) +#define MCF_SEC_CCPSRLn_SG (0x100000) +#define MCF_SEC_CCPSRLn_PG (0x200000) +#define MCF_SEC_CCPSRLn_SR (0x400000) +#define MCF_SEC_CCPSRLn_PR (0x800000) +#define MCF_SEC_CCPSRLn_MO (0x1000000) +#define MCF_SEC_CCPSRLn_MI (0x2000000) +#define MCF_SEC_CCPSRLn_STAT (0x4000000) + +/* Bit definitions and macros for MCF_SEC_CDPRn */ +#define MCF_SEC_CDPRn_CDP(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_SEC_FRn */ +#define MCF_SEC_FRn_FETCH_ADDR(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_SEC_AFRCR */ +#define MCF_SEC_AFRCR_SR (0x1000000) +#define MCF_SEC_AFRCR_MI (0x2000000) +#define MCF_SEC_AFRCR_RI (0x4000000) + +/* Bit definitions and macros for MCF_SEC_AFSR */ +#define MCF_SEC_AFSR_RD (0x1000000) +#define MCF_SEC_AFSR_ID (0x2000000) +#define MCF_SEC_AFSR_IE (0x4000000) +#define MCF_SEC_AFSR_OFR (0x8000000) +#define MCF_SEC_AFSR_IFW (0x10000000) +#define MCF_SEC_AFSR_HALT (0x20000000) + +/* Bit definitions and macros for MCF_SEC_AFISR */ +#define MCF_SEC_AFISR_DSE (0x10000) +#define MCF_SEC_AFISR_KSE (0x20000) +#define MCF_SEC_AFISR_CE (0x40000) +#define MCF_SEC_AFISR_ERE (0x80000) +#define MCF_SEC_AFISR_IE (0x100000) +#define MCF_SEC_AFISR_OFU (0x2000000) +#define MCF_SEC_AFISR_IFO (0x4000000) +#define MCF_SEC_AFISR_IFE (0x10000000) +#define MCF_SEC_AFISR_OFE (0x20000000) +#define MCF_SEC_AFISR_AE (0x40000000) +#define MCF_SEC_AFISR_ME (0x80000000) + +/* Bit definitions and macros for MCF_SEC_AFIMR */ +#define MCF_SEC_AFIMR_DSE (0x10000) +#define MCF_SEC_AFIMR_KSE (0x20000) +#define MCF_SEC_AFIMR_CE (0x40000) +#define MCF_SEC_AFIMR_ERE (0x80000) +#define MCF_SEC_AFIMR_IE (0x100000) +#define MCF_SEC_AFIMR_OFU (0x2000000) +#define MCF_SEC_AFIMR_IFO (0x4000000) +#define MCF_SEC_AFIMR_IFE (0x10000000) +#define MCF_SEC_AFIMR_OFE (0x20000000) +#define MCF_SEC_AFIMR_AE (0x40000000) +#define MCF_SEC_AFIMR_ME (0x80000000) + +/* Bit definitions and macros for MCF_SEC_DRCR */ +#define MCF_SEC_DRCR_SR (0x1000000) +#define MCF_SEC_DRCR_MI (0x2000000) +#define MCF_SEC_DRCR_RI (0x4000000) + +/* Bit definitions and macros for MCF_SEC_DSR */ +#define MCF_SEC_DSR_RD (0x1000000) +#define MCF_SEC_DSR_ID (0x2000000) +#define MCF_SEC_DSR_IE (0x4000000) +#define MCF_SEC_DSR_OFR (0x8000000) +#define MCF_SEC_DSR_IFW (0x10000000) +#define MCF_SEC_DSR_HALT (0x20000000) + +/* Bit definitions and macros for MCF_SEC_DISR */ +#define MCF_SEC_DISR_DSE (0x10000) +#define MCF_SEC_DISR_KSE (0x20000) +#define MCF_SEC_DISR_CE (0x40000) +#define MCF_SEC_DISR_ERE (0x80000) +#define MCF_SEC_DISR_IE (0x100000) +#define MCF_SEC_DISR_KPE (0x200000) +#define MCF_SEC_DISR_OFU (0x2000000) +#define MCF_SEC_DISR_IFO (0x4000000) +#define MCF_SEC_DISR_IFE (0x10000000) +#define MCF_SEC_DISR_OFE (0x20000000) +#define MCF_SEC_DISR_AE (0x40000000) +#define MCF_SEC_DISR_ME (0x80000000) + +/* Bit definitions and macros for MCF_SEC_DIMR */ +#define MCF_SEC_DIMR_DSE (0x10000) +#define MCF_SEC_DIMR_KSE (0x20000) +#define MCF_SEC_DIMR_CE (0x40000) +#define MCF_SEC_DIMR_ERE (0x80000) +#define MCF_SEC_DIMR_IE (0x100000) +#define MCF_SEC_DIMR_KPE (0x200000) +#define MCF_SEC_DIMR_OFU (0x2000000) +#define MCF_SEC_DIMR_IFO (0x4000000) +#define MCF_SEC_DIMR_IFE (0x10000000) +#define MCF_SEC_DIMR_OFE (0x20000000) +#define MCF_SEC_DIMR_AE (0x40000000) +#define MCF_SEC_DIMR_ME (0x80000000) + +/* Bit definitions and macros for MCF_SEC_MDRCR */ +#define MCF_SEC_MDRCR_SR (0x1000000) +#define MCF_SEC_MDRCR_MI (0x2000000) +#define MCF_SEC_MDRCR_RI (0x4000000) + +/* Bit definitions and macros for MCF_SEC_MDSR */ +#define MCF_SEC_MDSR_RD (0x1000000) +#define MCF_SEC_MDSR_ID (0x2000000) +#define MCF_SEC_MDSR_IE (0x4000000) +#define MCF_SEC_MDSR_IFW (0x10000000) +#define MCF_SEC_MDSR_HALT (0x20000000) + +/* Bit definitions and macros for MCF_SEC_MDISR */ +#define MCF_SEC_MDISR_DSE (0x10000) +#define MCF_SEC_MDISR_KSE (0x20000) +#define MCF_SEC_MDISR_CE (0x40000) +#define MCF_SEC_MDISR_ERE (0x80000) +#define MCF_SEC_MDISR_IE (0x100000) +#define MCF_SEC_MDISR_IFO (0x4000000) +#define MCF_SEC_MDISR_AE (0x40000000) +#define MCF_SEC_MDISR_ME (0x80000000) + +/* Bit definitions and macros for MCF_SEC_MDIMR */ +#define MCF_SEC_MDIMR_DSE (0x10000) +#define MCF_SEC_MDIMR_KSE (0x20000) +#define MCF_SEC_MDIMR_CE (0x40000) +#define MCF_SEC_MDIMR_ERE (0x80000) +#define MCF_SEC_MDIMR_IE (0x100000) +#define MCF_SEC_MDIMR_IFO (0x4000000) +#define MCF_SEC_MDIMR_AE (0x40000000) +#define MCF_SEC_MDIMR_ME (0x80000000) + +/* Bit definitions and macros for MCF_SEC_RNGRCR */ +#define MCF_SEC_RNGRCR_SR (0x1000000) +#define MCF_SEC_RNGRCR_MI (0x2000000) +#define MCF_SEC_RNGRCR_RI (0x4000000) + +/* Bit definitions and macros for MCF_SEC_RNGSR */ +#define MCF_SEC_RNGSR_RD (0x1000000) +#define MCF_SEC_RNGSR_IE (0x4000000) +#define MCF_SEC_RNGSR_OFR (0x8000000) +#define MCF_SEC_RNGSR_HALT (0x20000000) + +/* Bit definitions and macros for MCF_SEC_RNGISR */ +#define MCF_SEC_RNGISR_IE (0x100000) +#define MCF_SEC_RNGISR_OFU (0x2000000) +#define MCF_SEC_RNGISR_AE (0x40000000) +#define MCF_SEC_RNGISR_ME (0x80000000) + +/* Bit definitions and macros for MCF_SEC_RNGIMR */ +#define MCF_SEC_RNGIMR_IE (0x100000) +#define MCF_SEC_RNGIMR_OFU (0x2000000) +#define MCF_SEC_RNGIMR_AE (0x40000000) +#define MCF_SEC_RNGIMR_ME (0x80000000) + +/* Bit definitions and macros for MCF_SEC_AESRCR */ +#define MCF_SEC_AESRCR_SR (0x1000000) +#define MCF_SEC_AESRCR_MI (0x2000000) +#define MCF_SEC_AESRCR_RI (0x4000000) + +/* Bit definitions and macros for MCF_SEC_AESSR */ +#define MCF_SEC_AESSR_RD (0x1000000) +#define MCF_SEC_AESSR_ID (0x2000000) +#define MCF_SEC_AESSR_IE (0x4000000) +#define MCF_SEC_AESSR_OFR (0x8000000) +#define MCF_SEC_AESSR_IFW (0x10000000) +#define MCF_SEC_AESSR_HALT (0x20000000) + +/* Bit definitions and macros for MCF_SEC_AESISR */ +#define MCF_SEC_AESISR_DSE (0x10000) +#define MCF_SEC_AESISR_KSE (0x20000) +#define MCF_SEC_AESISR_CE (0x40000) +#define MCF_SEC_AESISR_ERE (0x80000) +#define MCF_SEC_AESISR_IE (0x100000) +#define MCF_SEC_AESISR_OFU (0x2000000) +#define MCF_SEC_AESISR_IFO (0x4000000) +#define MCF_SEC_AESISR_IFE (0x10000000) +#define MCF_SEC_AESISR_OFE (0x20000000) +#define MCF_SEC_AESISR_AE (0x40000000) +#define MCF_SEC_AESISR_ME (0x80000000) + +/* Bit definitions and macros for MCF_SEC_AESIMR */ +#define MCF_SEC_AESIMR_DSE (0x10000) +#define MCF_SEC_AESIMR_KSE (0x20000) +#define MCF_SEC_AESIMR_CE (0x40000) +#define MCF_SEC_AESIMR_ERE (0x80000) +#define MCF_SEC_AESIMR_IE (0x100000) +#define MCF_SEC_AESIMR_OFU (0x2000000) +#define MCF_SEC_AESIMR_IFO (0x4000000) +#define MCF_SEC_AESIMR_IFE (0x10000000) +#define MCF_SEC_AESIMR_OFE (0x20000000) +#define MCF_SEC_AESIMR_AE (0x40000000) +#define MCF_SEC_AESIMR_ME (0x80000000) + + +#endif /* __MCF5475_SEC_H__ */ diff --git a/BaS_gcc/tos/pci_mem/include/MCF5475_SIU.h b/BaS_gcc/tos/pci_mem/include/MCF5475_SIU.h new file mode 100644 index 0000000..efb2896 --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/MCF5475_SIU.h @@ -0,0 +1,67 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_SIU_H__ +#define __MCF5475_SIU_H__ + + +/********************************************************************* +* +* System Integration Unit (SIU) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_SIU_SBCR (*(volatile uint32_t*)(&_MBAR[0x10])) +#define MCF_SIU_SECSACR (*(volatile uint32_t*)(&_MBAR[0x38])) +#define MCF_SIU_RSR (*(volatile uint32_t*)(&_MBAR[0x44])) +#define MCF_SIU_JTAGID (*(volatile uint32_t*)(&_MBAR[0x50])) + + +/* Bit definitions and macros for MCF_SIU_SBCR */ +#define MCF_SIU_SBCR_PIN2DSPI (0x8000000) +#define MCF_SIU_SBCR_DMA2CPU (0x10000000) +#define MCF_SIU_SBCR_CPU2DMA (0x20000000) +#define MCF_SIU_SBCR_PIN2DMA (0x40000000) +#define MCF_SIU_SBCR_PIN2CPU (0x80000000) + +/* Bit definitions and macros for MCF_SIU_SECSACR */ +#define MCF_SIU_SECSACR_SEQEN (0x1) + +/* Bit definitions and macros for MCF_SIU_RSR */ +#define MCF_SIU_RSR_RST (0x1) +#define MCF_SIU_RSR_RSTWD (0x2) +#define MCF_SIU_RSR_RSTJTG (0x8) + +/* Bit definitions and macros for MCF_SIU_JTAGID */ +#define MCF_SIU_JTAGID_JTAGID(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_SIU_JTAGID */ +#define MCF_SIU_JTAGID_REV (0xF0000000) +#define MCF_SIU_JTAGID_PROCESSOR (0x0FFFFFFF) +#define MCF_SIU_JTAGID_MCF5485 (0x0800C01D) +#define MCF_SIU_JTAGID_MCF5484 (0x0800D01D) +#define MCF_SIU_JTAGID_MCF5483 (0x0800E01D) +#define MCF_SIU_JTAGID_MCF5482 (0x0800F01D) +#define MCF_SIU_JTAGID_MCF5481 (0x0801001D) +#define MCF_SIU_JTAGID_MCF5480 (0x0801101D) +#define MCF_SIU_JTAGID_MCF5475 (0x0801201D) +#define MCF_SIU_JTAGID_MCF5474 (0x0801301D) +#define MCF_SIU_JTAGID_MCF5473 (0x0801401D) +#define MCF_SIU_JTAGID_MCF5472 (0x0801501D) +#define MCF_SIU_JTAGID_MCF5471 (0x0801601D) +#define MCF_SIU_JTAGID_MCF5470 (0x0801701D) + +#endif /* __MCF5475_SIU_H__ */ diff --git a/BaS_gcc/tos/pci_mem/include/MCF5475_SLT.h b/BaS_gcc/tos/pci_mem/include/MCF5475_SLT.h new file mode 100644 index 0000000..20e8558 --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/MCF5475_SLT.h @@ -0,0 +1,59 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_SLT_H__ +#define __MCF5475_SLT_H__ + + +/********************************************************************* +* +* Slice Timers (SLT) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_SLT0_STCNT (*(volatile uint32_t*)(&_MBAR[0x900])) +#define MCF_SLT0_SCR (*(volatile uint32_t*)(&_MBAR[0x904])) +#define MCF_SLT0_SCNT (*(volatile uint32_t*)(&_MBAR[0x908])) +#define MCF_SLT0_SSR (*(volatile uint32_t*)(&_MBAR[0x90C])) + +#define MCF_SLT1_STCNT (*(volatile uint32_t*)(&_MBAR[0x910])) +#define MCF_SLT1_SCR (*(volatile uint32_t*)(&_MBAR[0x914])) +#define MCF_SLT1_SCNT (*(volatile uint32_t*)(&_MBAR[0x918])) +#define MCF_SLT1_SSR (*(volatile uint32_t*)(&_MBAR[0x91C])) + +#define MCF_SLT_STCNT(x) (*(volatile uint32_t*)(&_MBAR[0x900 + ((x)*0x10)])) +#define MCF_SLT_SCR(x) (*(volatile uint32_t*)(&_MBAR[0x904 + ((x)*0x10)])) +#define MCF_SLT_SCNT(x) (*(volatile int32_t*)(&_MBAR[0x908 + ((x)*0x10)])) +#define MCF_SLT_SSR(x) (*(volatile uint32_t*)(&_MBAR[0x90C + ((x)*0x10)])) + + +/* Bit definitions and macros for MCF_SLT_STCNT */ +#define MCF_SLT_STCNT_TC(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_SLT_SCR */ +#define MCF_SLT_SCR_TEN (0x1000000) +#define MCF_SLT_SCR_IEN (0x2000000) +#define MCF_SLT_SCR_RUN (0x4000000) + +/* Bit definitions and macros for MCF_SLT_SCNT */ +#define MCF_SLT_SCNT_CNT(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_SLT_SSR */ +#define MCF_SLT_SSR_ST (0x1000000) +#define MCF_SLT_SSR_BE (0x2000000) + + +#endif /* __MCF5475_SLT_H__ */ diff --git a/BaS_gcc/tos/pci_mem/include/MCF5475_SRAM.h b/BaS_gcc/tos/pci_mem/include/MCF5475_SRAM.h new file mode 100644 index 0000000..d111f13 --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/MCF5475_SRAM.h @@ -0,0 +1,62 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_SRAM_H__ +#define __MCF5475_SRAM_H__ + + +/********************************************************************* +* +* System SRAM Module (SRAM) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_SRAM_SSCR (*(volatile uint32_t*)(&__MBAR[0x1FFC0])) +#define MCF_SRAM_TCCR (*(volatile uint32_t*)(&__MBAR[0x1FFC4])) +#define MCF_SRAM_TCCRDR (*(volatile uint32_t*)(&__MBAR[0x1FFC8])) +#define MCF_SRAM_TCCRDW (*(volatile uint32_t*)(&__MBAR[0x1FFCC])) +#define MCF_SRAM_TCCRSEC (*(volatile uint32_t*)(&__MBAR[0x1FFD0])) + + +/* Bit definitions and macros for MCF_SRAM_SSCR */ +#define MCF_SRAM_SSCR_INLV (0x10000) + +/* Bit definitions and macros for MCF_SRAM_TCCR */ +#define MCF_SRAM_TCCR_BANK0_TC(x) (((x)&0xF)<<0) +#define MCF_SRAM_TCCR_BANK1_TC(x) (((x)&0xF)<<0x8) +#define MCF_SRAM_TCCR_BANK2_TC(x) (((x)&0xF)<<0x10) +#define MCF_SRAM_TCCR_BANK3_TC(x) (((x)&0xF)<<0x18) + +/* Bit definitions and macros for MCF_SRAM_TCCRDR */ +#define MCF_SRAM_TCCRDR_BANK0_TC(x) (((x)&0xF)<<0) +#define MCF_SRAM_TCCRDR_BANK1_TC(x) (((x)&0xF)<<0x8) +#define MCF_SRAM_TCCRDR_BANK2_TC(x) (((x)&0xF)<<0x10) +#define MCF_SRAM_TCCRDR_BANK3_TC(x) (((x)&0xF)<<0x18) + +/* Bit definitions and macros for MCF_SRAM_TCCRDW */ +#define MCF_SRAM_TCCRDW_BANK0_TC(x) (((x)&0xF)<<0) +#define MCF_SRAM_TCCRDW_BANK1_TC(x) (((x)&0xF)<<0x8) +#define MCF_SRAM_TCCRDW_BANK2_TC(x) (((x)&0xF)<<0x10) +#define MCF_SRAM_TCCRDW_BANK3_TC(x) (((x)&0xF)<<0x18) + +/* Bit definitions and macros for MCF_SRAM_TCCRSEC */ +#define MCF_SRAM_TCCRSEC_BANK0_TC(x) (((x)&0xF)<<0) +#define MCF_SRAM_TCCRSEC_BANK1_TC(x) (((x)&0xF)<<0x8) +#define MCF_SRAM_TCCRSEC_BANK2_TC(x) (((x)&0xF)<<0x10) +#define MCF_SRAM_TCCRSEC_BANK3_TC(x) (((x)&0xF)<<0x18) + + +#endif /* __MCF5475_SRAM_H__ */ diff --git a/BaS_gcc/tos/pci_mem/include/MCF5475_USB.h b/BaS_gcc/tos/pci_mem/include/MCF5475_USB.h new file mode 100644 index 0000000..c60273c --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/MCF5475_USB.h @@ -0,0 +1,554 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_USB_H__ +#define __MCF5475_USB_H__ + + +/********************************************************************* +* +* Universal Serial Bus Interface (USB) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_USB_USBAISR (*(volatile uint8_t *)(&__MBAR[0xB000])) +#define MCF_USB_USBAIMR (*(volatile uint8_t *)(&__MBAR[0xB001])) +#define MCF_USB_EPINFO (*(volatile uint8_t *)(&__MBAR[0xB003])) +#define MCF_USB_CFGR (*(volatile uint8_t *)(&__MBAR[0xB004])) +#define MCF_USB_CFGAR (*(volatile uint8_t *)(&__MBAR[0xB005])) +#define MCF_USB_SPEEDR (*(volatile uint8_t *)(&__MBAR[0xB006])) +#define MCF_USB_FRMNUMR (*(volatile uint16_t*)(&__MBAR[0xB00E])) +#define MCF_USB_EPTNR (*(volatile uint16_t*)(&__MBAR[0xB010])) +#define MCF_USB_IFUR (*(volatile uint16_t*)(&__MBAR[0xB014])) +#define MCF_USB_IFR0 (*(volatile uint16_t*)(&__MBAR[0xB040])) +#define MCF_USB_IFR1 (*(volatile uint16_t*)(&__MBAR[0xB042])) +#define MCF_USB_IFR2 (*(volatile uint16_t*)(&__MBAR[0xB044])) +#define MCF_USB_IFR3 (*(volatile uint16_t*)(&__MBAR[0xB046])) +#define MCF_USB_IFR4 (*(volatile uint16_t*)(&__MBAR[0xB048])) +#define MCF_USB_IFR5 (*(volatile uint16_t*)(&__MBAR[0xB04A])) +#define MCF_USB_IFR6 (*(volatile uint16_t*)(&__MBAR[0xB04C])) +#define MCF_USB_IFR7 (*(volatile uint16_t*)(&__MBAR[0xB04E])) +#define MCF_USB_IFR8 (*(volatile uint16_t*)(&__MBAR[0xB050])) +#define MCF_USB_IFR9 (*(volatile uint16_t*)(&__MBAR[0xB052])) +#define MCF_USB_IFR10 (*(volatile uint16_t*)(&__MBAR[0xB054])) +#define MCF_USB_IFR11 (*(volatile uint16_t*)(&__MBAR[0xB056])) +#define MCF_USB_IFR12 (*(volatile uint16_t*)(&__MBAR[0xB058])) +#define MCF_USB_IFR13 (*(volatile uint16_t*)(&__MBAR[0xB05A])) +#define MCF_USB_IFR14 (*(volatile uint16_t*)(&__MBAR[0xB05C])) +#define MCF_USB_IFR15 (*(volatile uint16_t*)(&__MBAR[0xB05E])) +#define MCF_USB_IFR16 (*(volatile uint16_t*)(&__MBAR[0xB060])) +#define MCF_USB_IFR17 (*(volatile uint16_t*)(&__MBAR[0xB062])) +#define MCF_USB_IFR18 (*(volatile uint16_t*)(&__MBAR[0xB064])) +#define MCF_USB_IFR19 (*(volatile uint16_t*)(&__MBAR[0xB066])) +#define MCF_USB_IFR20 (*(volatile uint16_t*)(&__MBAR[0xB068])) +#define MCF_USB_IFR21 (*(volatile uint16_t*)(&__MBAR[0xB06A])) +#define MCF_USB_IFR22 (*(volatile uint16_t*)(&__MBAR[0xB06C])) +#define MCF_USB_IFR23 (*(volatile uint16_t*)(&__MBAR[0xB06E])) +#define MCF_USB_IFR24 (*(volatile uint16_t*)(&__MBAR[0xB070])) +#define MCF_USB_IFR25 (*(volatile uint16_t*)(&__MBAR[0xB072])) +#define MCF_USB_IFR26 (*(volatile uint16_t*)(&__MBAR[0xB074])) +#define MCF_USB_IFR27 (*(volatile uint16_t*)(&__MBAR[0xB076])) +#define MCF_USB_IFR28 (*(volatile uint16_t*)(&__MBAR[0xB078])) +#define MCF_USB_IFR29 (*(volatile uint16_t*)(&__MBAR[0xB07A])) +#define MCF_USB_IFR30 (*(volatile uint16_t*)(&__MBAR[0xB07C])) +#define MCF_USB_IFR31 (*(volatile uint16_t*)(&__MBAR[0xB07E])) +#define MCF_USB_PPCNT (*(volatile uint16_t*)(&__MBAR[0xB080])) +#define MCF_USB_DPCNT (*(volatile uint16_t*)(&__MBAR[0xB082])) +#define MCF_USB_CRCECNT (*(volatile uint16_t*)(&__MBAR[0xB084])) +#define MCF_USB_BSECNT (*(volatile uint16_t*)(&__MBAR[0xB086])) +#define MCF_USB_PIDECNT (*(volatile uint16_t*)(&__MBAR[0xB088])) +#define MCF_USB_FRMECNT (*(volatile uint16_t*)(&__MBAR[0xB08A])) +#define MCF_USB_TXPCNT (*(volatile uint16_t*)(&__MBAR[0xB08C])) +#define MCF_USB_CNTOVR (*(volatile uint8_t *)(&__MBAR[0xB08E])) +#define MCF_USB_EP0ACR (*(volatile uint8_t *)(&__MBAR[0xB101])) +#define MCF_USB_EP0MPSR (*(volatile uint16_t*)(&__MBAR[0xB102])) +#define MCF_USB_EP0IFR (*(volatile uint8_t *)(&__MBAR[0xB104])) +#define MCF_USB_EP0SR (*(volatile uint8_t *)(&__MBAR[0xB105])) +#define MCF_USB_BMRTR (*(volatile uint8_t *)(&__MBAR[0xB106])) +#define MCF_USB_BRTR (*(volatile uint8_t *)(&__MBAR[0xB107])) +#define MCF_USB_WVALUER (*(volatile uint16_t*)(&__MBAR[0xB108])) +#define MCF_USB_WINDEXR (*(volatile uint16_t*)(&__MBAR[0xB10A])) +#define MCF_USB_WLENGTHR (*(volatile uint16_t*)(&__MBAR[0xB10C])) +#define MCF_USB_EP1OUTACR (*(volatile uint8_t *)(&__MBAR[0xB131])) +#define MCF_USB_EP1OUTMPSR (*(volatile uint16_t*)(&__MBAR[0xB132])) +#define MCF_USB_EP1OUTIFR (*(volatile uint8_t *)(&__MBAR[0xB134])) +#define MCF_USB_EP1OUTSR (*(volatile uint8_t *)(&__MBAR[0xB135])) +#define MCF_USB_EP1OUTSFR (*(volatile uint16_t*)(&__MBAR[0xB13E])) +#define MCF_USB_EP1INACR (*(volatile uint8_t *)(&__MBAR[0xB149])) +#define MCF_USB_EP1INMPSR (*(volatile uint16_t*)(&__MBAR[0xB14A])) +#define MCF_USB_EP1INIFR (*(volatile uint8_t *)(&__MBAR[0xB14C])) +#define MCF_USB_EP1INSR (*(volatile uint8_t *)(&__MBAR[0xB14D])) +#define MCF_USB_EP1INSFR (*(volatile uint16_t*)(&__MBAR[0xB156])) +#define MCF_USB_EP2OUTACR (*(volatile uint8_t *)(&__MBAR[0xB161])) +#define MCF_USB_EP2OUTMPSR (*(volatile uint16_t*)(&__MBAR[0xB162])) +#define MCF_USB_EP2OUTIFR (*(volatile uint8_t *)(&__MBAR[0xB164])) +#define MCF_USB_EP2OUTSR (*(volatile uint8_t *)(&__MBAR[0xB165])) +#define MCF_USB_EP2OUTSFR (*(volatile uint16_t*)(&__MBAR[0xB16E])) +#define MCF_USB_EP2INACR (*(volatile uint8_t *)(&__MBAR[0xB179])) +#define MCF_USB_EP2INMPSR (*(volatile uint16_t*)(&__MBAR[0xB17A])) +#define MCF_USB_EP2INIFR (*(volatile uint8_t *)(&__MBAR[0xB17C])) +#define MCF_USB_EP2INSR (*(volatile uint8_t *)(&__MBAR[0xB17D])) +#define MCF_USB_EP2INSFR (*(volatile uint16_t*)(&__MBAR[0xB186])) +#define MCF_USB_EP3OUTACR (*(volatile uint8_t *)(&__MBAR[0xB191])) +#define MCF_USB_EP3OUTMPSR (*(volatile uint16_t*)(&__MBAR[0xB192])) +#define MCF_USB_EP3OUTIFR (*(volatile uint8_t *)(&__MBAR[0xB194])) +#define MCF_USB_EP3OUTSR (*(volatile uint8_t *)(&__MBAR[0xB195])) +#define MCF_USB_EP3OUTSFR (*(volatile uint16_t*)(&__MBAR[0xB19E])) +#define MCF_USB_EP3INACR (*(volatile uint8_t *)(&__MBAR[0xB1A9])) +#define MCF_USB_EP3INMPSR (*(volatile uint16_t*)(&__MBAR[0xB1AA])) +#define MCF_USB_EP3INIFR (*(volatile uint8_t *)(&__MBAR[0xB1AC])) +#define MCF_USB_EP3INSR (*(volatile uint8_t *)(&__MBAR[0xB1AD])) +#define MCF_USB_EP3INSFR (*(volatile uint16_t*)(&__MBAR[0xB1B6])) +#define MCF_USB_EP4OUTACR (*(volatile uint8_t *)(&__MBAR[0xB1C1])) +#define MCF_USB_EP4OUTMPSR (*(volatile uint16_t*)(&__MBAR[0xB1C2])) +#define MCF_USB_EP4OUTIFR (*(volatile uint8_t *)(&__MBAR[0xB1C4])) +#define MCF_USB_EP4OUTSR (*(volatile uint8_t *)(&__MBAR[0xB1C5])) +#define MCF_USB_EP4OUTSFR (*(volatile uint16_t*)(&__MBAR[0xB1CE])) +#define MCF_USB_EP4INACR (*(volatile uint8_t *)(&__MBAR[0xB1D9])) +#define MCF_USB_EP4INMPSR (*(volatile uint16_t*)(&__MBAR[0xB1DA])) +#define MCF_USB_EP4INIFR (*(volatile uint8_t *)(&__MBAR[0xB1DC])) +#define MCF_USB_EP4INSR (*(volatile uint8_t *)(&__MBAR[0xB1DD])) +#define MCF_USB_EP4INSFR (*(volatile uint16_t*)(&__MBAR[0xB1E6])) +#define MCF_USB_EP5OUTACR (*(volatile uint8_t *)(&__MBAR[0xB1F1])) +#define MCF_USB_EP5OUTMPSR (*(volatile uint16_t*)(&__MBAR[0xB1F2])) +#define MCF_USB_EP5OUTIFR (*(volatile uint8_t *)(&__MBAR[0xB1F4])) +#define MCF_USB_EP5OUTSR (*(volatile uint8_t *)(&__MBAR[0xB1F5])) +#define MCF_USB_EP5OUTSFR (*(volatile uint16_t*)(&__MBAR[0xB1FE])) +#define MCF_USB_EP5INACR (*(volatile uint8_t *)(&__MBAR[0xB209])) +#define MCF_USB_EP5INMPSR (*(volatile uint16_t*)(&__MBAR[0xB20A])) +#define MCF_USB_EP5INIFR (*(volatile uint8_t *)(&__MBAR[0xB20C])) +#define MCF_USB_EP5INSR (*(volatile uint8_t *)(&__MBAR[0xB20D])) +#define MCF_USB_EP5INSFR (*(volatile uint16_t*)(&__MBAR[0xB216])) +#define MCF_USB_EP6OUTACR (*(volatile uint8_t *)(&__MBAR[0xB221])) +#define MCF_USB_EP6OUTMPSR (*(volatile uint16_t*)(&__MBAR[0xB222])) +#define MCF_USB_EP6OUTIFR (*(volatile uint8_t *)(&__MBAR[0xB224])) +#define MCF_USB_EP6OUTSR (*(volatile uint8_t *)(&__MBAR[0xB225])) +#define MCF_USB_EP6OUTSFR (*(volatile uint16_t*)(&__MBAR[0xB22E])) +#define MCF_USB_EP6INACR (*(volatile uint8_t *)(&__MBAR[0xB239])) +#define MCF_USB_EP6INMPSR (*(volatile uint16_t*)(&__MBAR[0xB23A])) +#define MCF_USB_EP6INIFR (*(volatile uint8_t *)(&__MBAR[0xB23C])) +#define MCF_USB_EP6INSR (*(volatile uint8_t *)(&__MBAR[0xB23D])) +#define MCF_USB_EP6INSFR (*(volatile uint16_t*)(&__MBAR[0xB246])) +#define MCF_USB_USBSR (*(volatile uint32_t*)(&__MBAR[0xB400])) +#define MCF_USB_USBCR (*(volatile uint32_t*)(&__MBAR[0xB404])) +#define MCF_USB_DRAMCR (*(volatile uint32_t*)(&__MBAR[0xB408])) +#define MCF_USB_DRAMDR (*(volatile uint32_t*)(&__MBAR[0xB40C])) +#define MCF_USB_USBISR (*(volatile uint32_t*)(&__MBAR[0xB410])) +#define MCF_USB_USBIMR (*(volatile uint32_t*)(&__MBAR[0xB414])) +#define MCF_USB_EP0STAT (*(volatile uint32_t*)(&__MBAR[0xB440])) +#define MCF_USB_EP0ISR (*(volatile uint32_t*)(&__MBAR[0xB444])) +#define MCF_USB_EP0IMR (*(volatile uint32_t*)(&__MBAR[0xB448])) +#define MCF_USB_EP0FRCFGR (*(volatile uint32_t*)(&__MBAR[0xB44C])) +#define MCF_USB_EP0FDR (*(volatile uint32_t*)(&__MBAR[0xB450])) +#define MCF_USB_EP0FSR (*(volatile uint32_t*)(&__MBAR[0xB454])) +#define MCF_USB_EP0FCR (*(volatile uint32_t*)(&__MBAR[0xB458])) +#define MCF_USB_EP0FAR (*(volatile uint32_t*)(&__MBAR[0xB45C])) +#define MCF_USB_EP0FRP (*(volatile uint32_t*)(&__MBAR[0xB460])) +#define MCF_USB_EP0FWP (*(volatile uint32_t*)(&__MBAR[0xB464])) +#define MCF_USB_EP0LRFP (*(volatile uint32_t*)(&__MBAR[0xB468])) +#define MCF_USB_EP0LWFP (*(volatile uint32_t*)(&__MBAR[0xB46C])) +#define MCF_USB_EP1STAT (*(volatile uint32_t*)(&__MBAR[0xB470])) +#define MCF_USB_EP1ISR (*(volatile uint32_t*)(&__MBAR[0xB474])) +#define MCF_USB_EP1IMR (*(volatile uint32_t*)(&__MBAR[0xB478])) +#define MCF_USB_EP1FRCFGR (*(volatile uint32_t*)(&__MBAR[0xB47C])) +#define MCF_USB_EP1FDR (*(volatile uint32_t*)(&__MBAR[0xB480])) +#define MCF_USB_EP1FSR (*(volatile uint32_t*)(&__MBAR[0xB484])) +#define MCF_USB_EP1FCR (*(volatile uint32_t*)(&__MBAR[0xB488])) +#define MCF_USB_EP1FAR (*(volatile uint32_t*)(&__MBAR[0xB48C])) +#define MCF_USB_EP1FRP (*(volatile uint32_t*)(&__MBAR[0xB490])) +#define MCF_USB_EP1FWP (*(volatile uint32_t*)(&__MBAR[0xB494])) +#define MCF_USB_EP1LRFP (*(volatile uint32_t*)(&__MBAR[0xB498])) +#define MCF_USB_EP1LWFP (*(volatile uint32_t*)(&__MBAR[0xB49C])) +#define MCF_USB_EP2STAT (*(volatile uint32_t*)(&__MBAR[0xB4A0])) +#define MCF_USB_EP2ISR (*(volatile uint32_t*)(&__MBAR[0xB4A4])) +#define MCF_USB_EP2IMR (*(volatile uint32_t*)(&__MBAR[0xB4A8])) +#define MCF_USB_EP2FRCFGR (*(volatile uint32_t*)(&__MBAR[0xB4AC])) +#define MCF_USB_EP2FDR (*(volatile uint32_t*)(&__MBAR[0xB4B0])) +#define MCF_USB_EP2FSR (*(volatile uint32_t*)(&__MBAR[0xB4B4])) +#define MCF_USB_EP2FCR (*(volatile uint32_t*)(&__MBAR[0xB4B8])) +#define MCF_USB_EP2FAR (*(volatile uint32_t*)(&__MBAR[0xB4BC])) +#define MCF_USB_EP2FRP (*(volatile uint32_t*)(&__MBAR[0xB4C0])) +#define MCF_USB_EP2FWP (*(volatile uint32_t*)(&__MBAR[0xB4C4])) +#define MCF_USB_EP2LRFP (*(volatile uint32_t*)(&__MBAR[0xB4C8])) +#define MCF_USB_EP2LWFP (*(volatile uint32_t*)(&__MBAR[0xB4CC])) +#define MCF_USB_EP3STAT (*(volatile uint32_t*)(&__MBAR[0xB4D0])) +#define MCF_USB_EP3ISR (*(volatile uint32_t*)(&__MBAR[0xB4D4])) +#define MCF_USB_EP3IMR (*(volatile uint32_t*)(&__MBAR[0xB4D8])) +#define MCF_USB_EP3FRCFGR (*(volatile uint32_t*)(&__MBAR[0xB4DC])) +#define MCF_USB_EP3FDR (*(volatile uint32_t*)(&__MBAR[0xB4E0])) +#define MCF_USB_EP3FSR (*(volatile uint32_t*)(&__MBAR[0xB4E4])) +#define MCF_USB_EP3FCR (*(volatile uint32_t*)(&__MBAR[0xB4E8])) +#define MCF_USB_EP3FAR (*(volatile uint32_t*)(&__MBAR[0xB4EC])) +#define MCF_USB_EP3FRP (*(volatile uint32_t*)(&__MBAR[0xB4F0])) +#define MCF_USB_EP3FWP (*(volatile uint32_t*)(&__MBAR[0xB4F4])) +#define MCF_USB_EP3LRFP (*(volatile uint32_t*)(&__MBAR[0xB4F8])) +#define MCF_USB_EP3LWFP (*(volatile uint32_t*)(&__MBAR[0xB4FC])) +#define MCF_USB_EP4STAT (*(volatile uint32_t*)(&__MBAR[0xB500])) +#define MCF_USB_EP4ISR (*(volatile uint32_t*)(&__MBAR[0xB504])) +#define MCF_USB_EP4IMR (*(volatile uint32_t*)(&__MBAR[0xB508])) +#define MCF_USB_EP4FRCFGR (*(volatile uint32_t*)(&__MBAR[0xB50C])) +#define MCF_USB_EP4FDR (*(volatile uint32_t*)(&__MBAR[0xB510])) +#define MCF_USB_EP4FSR (*(volatile uint32_t*)(&__MBAR[0xB514])) +#define MCF_USB_EP4FCR (*(volatile uint32_t*)(&__MBAR[0xB518])) +#define MCF_USB_EP4FAR (*(volatile uint32_t*)(&__MBAR[0xB51C])) +#define MCF_USB_EP4FRP (*(volatile uint32_t*)(&__MBAR[0xB520])) +#define MCF_USB_EP4FWP (*(volatile uint32_t*)(&__MBAR[0xB524])) +#define MCF_USB_EP4LRFP (*(volatile uint32_t*)(&__MBAR[0xB528])) +#define MCF_USB_EP4LWFP (*(volatile uint32_t*)(&__MBAR[0xB52C])) +#define MCF_USB_EP5STAT (*(volatile uint32_t*)(&__MBAR[0xB530])) +#define MCF_USB_EP5ISR (*(volatile uint32_t*)(&__MBAR[0xB534])) +#define MCF_USB_EP5IMR (*(volatile uint32_t*)(&__MBAR[0xB538])) +#define MCF_USB_EP5FRCFGR (*(volatile uint32_t*)(&__MBAR[0xB53C])) +#define MCF_USB_EP5FDR (*(volatile uint32_t*)(&__MBAR[0xB540])) +#define MCF_USB_EP5FSR (*(volatile uint32_t*)(&__MBAR[0xB544])) +#define MCF_USB_EP5FCR (*(volatile uint32_t*)(&__MBAR[0xB548])) +#define MCF_USB_EP5FAR (*(volatile uint32_t*)(&__MBAR[0xB54C])) +#define MCF_USB_EP5FRP (*(volatile uint32_t*)(&__MBAR[0xB550])) +#define MCF_USB_EP5FWP (*(volatile uint32_t*)(&__MBAR[0xB554])) +#define MCF_USB_EP5LRFP (*(volatile uint32_t*)(&__MBAR[0xB558])) +#define MCF_USB_EP5LWFP (*(volatile uint32_t*)(&__MBAR[0xB55C])) +#define MCF_USB_EP6STAT (*(volatile uint32_t*)(&__MBAR[0xB560])) +#define MCF_USB_EP6ISR (*(volatile uint32_t*)(&__MBAR[0xB564])) +#define MCF_USB_EP6IMR (*(volatile uint32_t*)(&__MBAR[0xB568])) +#define MCF_USB_EP6FRCFGR (*(volatile uint32_t*)(&__MBAR[0xB56C])) +#define MCF_USB_EP6FDR (*(volatile uint32_t*)(&__MBAR[0xB570])) +#define MCF_USB_EP6FSR (*(volatile uint32_t*)(&__MBAR[0xB574])) +#define MCF_USB_EP6FCR (*(volatile uint32_t*)(&__MBAR[0xB578])) +#define MCF_USB_EP6FAR (*(volatile uint32_t*)(&__MBAR[0xB57C])) +#define MCF_USB_EP6FRP (*(volatile uint32_t*)(&__MBAR[0xB580])) +#define MCF_USB_EP6FWP (*(volatile uint32_t*)(&__MBAR[0xB584])) +#define MCF_USB_EP6LRFP (*(volatile uint32_t*)(&__MBAR[0xB588])) +#define MCF_USB_EP6LWFP (*(volatile uint32_t*)(&__MBAR[0xB58C])) +#define MCF_USB_IFR(x) (*(volatile uint16_t*)(&__MBAR[0xB040 + ((x)*0x2)])) +#define MCF_USB_EPOUTACR(x) (*(volatile uint8_t *)(&__MBAR[0xB131 + ((x-1)*0x30)])) +#define MCF_USB_EPOUTMPSR(x) (*(volatile uint16_t*)(&__MBAR[0xB132 + ((x-1)*0x30)])) +#define MCF_USB_EPOUTIFR(x) (*(volatile uint8_t *)(&__MBAR[0xB134 + ((x-1)*0x30)])) +#define MCF_USB_EPOUTSR(x) (*(volatile uint8_t *)(&__MBAR[0xB135 + ((x-1)*0x30)])) +#define MCF_USB_EPOUTSFR(x) (*(volatile uint16_t*)(&__MBAR[0xB13E + ((x-1)*0x30)])) +#define MCF_USB_EPINACR(x) (*(volatile uint8_t *)(&__MBAR[0xB149 + ((x-1)*0x30)])) +#define MCF_USB_EPINMPSR(x) (*(volatile uint16_t*)(&__MBAR[0xB14A + ((x-1)*0x30)])) +#define MCF_USB_EPINIFR(x) (*(volatile uint8_t *)(&__MBAR[0xB14C + ((x-1)*0x30)])) +#define MCF_USB_EPINSR(x) (*(volatile uint8_t *)(&__MBAR[0xB14D + ((x-1)*0x30)])) +#define MCF_USB_EPINSFR(x) (*(volatile uint16_t*)(&__MBAR[0xB156 + ((x-1)*0x30)])) +#define MCF_USB_EPSTAT(x) (*(volatile uint32_t*)(&__MBAR[0xB440 + ((x)*0x30)])) +#define MCF_USB_EPISR(x) (*(volatile uint32_t*)(&__MBAR[0xB444 + ((x)*0x30)])) +#define MCF_USB_EPIMR(x) (*(volatile uint32_t*)(&__MBAR[0xB448 + ((x)*0x30)])) +#define MCF_USB_EPFRCFGR(x) (*(volatile uint32_t*)(&__MBAR[0xB44C + ((x)*0x30)])) +#define MCF_USB_EPFDR(x) (*(volatile uint32_t*)(&__MBAR[0xB450 + ((x)*0x30)])) +#define MCF_USB_EPFSR(x) (*(volatile uint32_t*)(&__MBAR[0xB454 + ((x)*0x30)])) +#define MCF_USB_EPFCR(x) (*(volatile uint32_t*)(&__MBAR[0xB458 + ((x)*0x30)])) +#define MCF_USB_EPFAR(x) (*(volatile uint32_t*)(&__MBAR[0xB45C + ((x)*0x30)])) +#define MCF_USB_EPFRP(x) (*(volatile uint32_t*)(&__MBAR[0xB460 + ((x)*0x30)])) +#define MCF_USB_EPFWP(x) (*(volatile uint32_t*)(&__MBAR[0xB464 + ((x)*0x30)])) +#define MCF_USB_EPLRFP(x) (*(volatile uint32_t*)(&__MBAR[0xB468 + ((x)*0x30)])) +#define MCF_USB_EPLWFP(x) (*(volatile uint32_t*)(&__MBAR[0xB46C + ((x)*0x30)])) + + +/* Bit definitions and macros for MCF_USB_USBAISR */ +#define MCF_USB_USBAISR_SETUP (0x1) +#define MCF_USB_USBAISR_IN (0x2) +#define MCF_USB_USBAISR_OUT (0x4) +#define MCF_USB_USBAISR_EPHALT (0x8) +#define MCF_USB_USBAISR_TRANSERR (0x10) +#define MCF_USB_USBAISR_ACK (0x20) +#define MCF_USB_USBAISR_CTROVFL (0x40) +#define MCF_USB_USBAISR_EPSTALL (0x80) + +/* Bit definitions and macros for MCF_USB_USBAIMR */ +#define MCF_USB_USBAIMR_SETUPEN (0x1) +#define MCF_USB_USBAIMR_INEN (0x2) +#define MCF_USB_USBAIMR_OUTEN (0x4) +#define MCF_USB_USBAIMR_EPHALTEN (0x8) +#define MCF_USB_USBAIMR_TRANSERREN (0x10) +#define MCF_USB_USBAIMR_ACKEN (0x20) +#define MCF_USB_USBAIMR_CTROVFLEN (0x40) +#define MCF_USB_USBAIMR_EPSTALLEN (0x80) + +/* Bit definitions and macros for MCF_USB_EPINFO */ +#define MCF_USB_EPINFO_EPDIR (0x1) +#define MCF_USB_EPINFO_EPNUM(x) (((x)&0x7)<<0x1) + +/* Bit definitions and macros for MCF_USB_CFGR */ +#define MCF_USB_CFGR_Configuration_Value(x) (((x)&0xFF)<<0) + +/* Bit definitions and macros for MCF_USB_CFGAR */ +#define MCF_USB_CFGAR_RESERVED (0xA0) +#define MCF_USB_CFGAR_RMTWKEUP (0xE0) + +/* Bit definitions and macros for MCF_USB_SPEEDR */ +#define MCF_USB_SPEEDR_SPEED(x) (((x)&0x3)<<0) + +/* Bit definitions and macros for MCF_USB_FRMNUMR */ +#define MCF_USB_FRMNUMR_FRMNUM(x) (((x)&0xFFF)<<0) + +/* Bit definitions and macros for MCF_USB_EPTNR */ +#define MCF_USB_EPTNR_EP1T(x) (((x)&0x3)<<0) +#define MCF_USB_EPTNR_EP2T(x) (((x)&0x3)<<0x2) +#define MCF_USB_EPTNR_EP3T(x) (((x)&0x3)<<0x4) +#define MCF_USB_EPTNR_EP4T(x) (((x)&0x3)<<0x6) +#define MCF_USB_EPTNR_EP5T(x) (((x)&0x3)<<0x8) +#define MCF_USB_EPTNR_EP6T(x) (((x)&0x3)<<0xA) +#define MCF_USB_EPTNR_EPnT1 (0) +#define MCF_USB_EPTNR_EPnT2 (0x1) +#define MCF_USB_EPTNR_EPnT3 (0x2) + +/* Bit definitions and macros for MCF_USB_IFUR */ +#define MCF_USB_IFUR_ALTSET(x) (((x)&0xFF)<<0) +#define MCF_USB_IFUR_IFNUM(x) (((x)&0xFF)<<0x8) + +/* Bit definitions and macros for MCF_USB_IFR */ +#define MCF_USB_IFR_ALTSET(x) (((x)&0xFF)<<0) +#define MCF_USB_IFR_IFNUM(x) (((x)&0xFF)<<0x8) + +/* Bit definitions and macros for MCF_USB_PPCNT */ +#define MCF_USB_PPCNT_PPCNT(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_USB_DPCNT */ +#define MCF_USB_DPCNT_DPCNT(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_USB_CRCECNT */ +#define MCF_USB_CRCECNT_CRCECNT(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_USB_BSECNT */ +#define MCF_USB_BSECNT_BSECNT(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_USB_PIDECNT */ +#define MCF_USB_PIDECNT_PIDECNT(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_USB_FRMECNT */ +#define MCF_USB_FRMECNT_FRMECNT(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_USB_TXPCNT */ +#define MCF_USB_TXPCNT_TXPCNT(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_USB_CNTOVR */ +#define MCF_USB_CNTOVR_PPCNT (0x1) +#define MCF_USB_CNTOVR_DPCNT (0x2) +#define MCF_USB_CNTOVR_CRCECNT (0x4) +#define MCF_USB_CNTOVR_BSECNT (0x8) +#define MCF_USB_CNTOVR_PIDECNT (0x10) +#define MCF_USB_CNTOVR_FRMECNT (0x20) +#define MCF_USB_CNTOVR_TXPCNT (0x40) + +/* Bit definitions and macros for MCF_USB_EP0ACR */ +#define MCF_USB_EP0ACR_TTYPE(x) (((x)&0x3)<<0) +#define MCF_USB_EP0ACR_TTYPE_CTRL (0) +#define MCF_USB_EP0ACR_TTYPE_ISOC (0x1) +#define MCF_USB_EP0ACR_TTYPE_BULK (0x2) +#define MCF_USB_EP0ACR_TTYPE_INT (0x3) + +/* Bit definitions and macros for MCF_USB_EP0MPSR */ +#define MCF_USB_EP0MPSR_MAXPKTSZ(x) (((x)&0x7FF)<<0) +#define MCF_USB_EP0MPSR_ADDTRANS(x) (((x)&0x3)<<0xB) + +/* Bit definitions and macros for MCF_USB_EP0IFR */ +#define MCF_USB_EP0IFR_IFNUM(x) (((x)&0xFF)<<0) + +/* Bit definitions and macros for MCF_USB_EP0SR */ +#define MCF_USB_EP0SR_HALT (0x1) +#define MCF_USB_EP0SR_ACTIVE (0x2) +#define MCF_USB_EP0SR_PSTALL (0x4) +#define MCF_USB_EP0SR_CCOMP (0x8) +#define MCF_USB_EP0SR_TXZERO (0x20) +#define MCF_USB_EP0SR_INT (0x80) + +/* Bit definitions and macros for MCF_USB_BMRTR */ +#define MCF_USB_BMRTR_REC(x) (((x)&0x1F)<<0) +#define MCF_USB_BMRTR_REC_DEVICE (0) +#define MCF_USB_BMRTR_REC_INTERFACE (0x1) +#define MCF_USB_BMRTR_REC_ENDPOINT (0x2) +#define MCF_USB_BMRTR_REC_OTHER (0x3) +#define MCF_USB_BMRTR_TYPE(x) (((x)&0x3)<<0x5) +#define MCF_USB_BMRTR_TYPE_STANDARD (0) +#define MCF_USB_BMRTR_TYPE_CLASS (0x20) +#define MCF_USB_BMRTR_TYPE_VENDOR (0x40) +#define MCF_USB_BMRTR_DIR (0x80) + +/* Bit definitions and macros for MCF_USB_BRTR */ +#define MCF_USB_BRTR_BREQ(x) (((x)&0xFF)<<0) + +/* Bit definitions and macros for MCF_USB_WVALUER */ +#define MCF_USB_WVALUER_WVALUE(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_USB_WINDEXR */ +#define MCF_USB_WINDEXR_WINDEX(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_USB_WLENGTHR */ +#define MCF_USB_WLENGTHR_WLENGTH(x) (((x)&0xFFFF)<<0) + +/* Bit definitions and macros for MCF_USB_EPOUTACR */ +#define MCF_USB_EPOUTACR_TTYPE(x) (((x)&0x3)<<0) +#define MCF_USB_EPOUTACR_TTYPE_ISOC (0x1) +#define MCF_USB_EPOUTACR_TTYPE_BULK (0x2) +#define MCF_USB_EPOUTACR_TTYPE_INT (0x3) + +/* Bit definitions and macros for MCF_USB_EPOUTMPSR */ +#define MCF_USB_EPOUTMPSR_MAXPKTSZ(x) (((x)&0x7FF)<<0) +#define MCF_USB_EPOUTMPSR_ADDTRANS(x) (((x)&0x3)<<0xB) + +/* Bit definitions and macros for MCF_USB_EPOUTIFR */ +#define MCF_USB_EPOUTIFR_IFNUM(x) (((x)&0xFF)<<0) + +/* Bit definitions and macros for MCF_USB_EPOUTSR */ +#define MCF_USB_EPOUTSR_HALT (0x1) +#define MCF_USB_EPOUTSR_ACTIVE (0x2) +#define MCF_USB_EPOUTSR_PSTALL (0x4) +#define MCF_USB_EPOUTSR_CCOMP (0x8) +#define MCF_USB_EPOUTSR_TXZERO (0x20) +#define MCF_USB_EPOUTSR_INT (0x80) + +/* Bit definitions and macros for MCF_USB_EPOUTSFR */ +#define MCF_USB_EPOUTSFR_FRMNUM(x) (((x)&0x7FF)<<0) + +/* Bit definitions and macros for MCF_USB_EPINACR */ +#define MCF_USB_EPINACR_TTYPE(x) (((x)&0x3)<<0) +#define MCF_USB_EPINACR_TTYPE_ISOC (0x1) +#define MCF_USB_EPINACR_TTYPE_BULK (0x2) +#define MCF_USB_EPINACR_TTYPE_INT (0x3) + +/* Bit definitions and macros for MCF_USB_EPINMPSR */ +#define MCF_USB_EPINMPSR_MAXPKTSZ(x) (((x)&0x7FF)<<0) +#define MCF_USB_EPINMPSR_ADDTRANS(x) (((x)&0x3)<<0xB) + +/* Bit definitions and macros for MCF_USB_EPINIFR */ +#define MCF_USB_EPINIFR_IFNUM(x) (((x)&0xFF)<<0) + +/* Bit definitions and macros for MCF_USB_EPINSR */ +#define MCF_USB_EPINSR_HALT (0x1) +#define MCF_USB_EPINSR_ACTIVE (0x2) +#define MCF_USB_EPINSR_PSTALL (0x4) +#define MCF_USB_EPINSR_CCOMP (0x8) +#define MCF_USB_EPINSR_TXZERO (0x20) +#define MCF_USB_EPINSR_INT (0x80) + +/* Bit definitions and macros for MCF_USB_EPINSFR */ +#define MCF_USB_EPINSFR_FRMNUM(x) (((x)&0x7FF)<<0) + +/* Bit definitions and macros for MCF_USB_USBSR */ +#define MCF_USB_USBSR_ISOERREP(x) (((x)&0xF)<<0) +#define MCF_USB_USBSR_SUSP (0x80) + +/* Bit definitions and macros for MCF_USB_USBCR */ +#define MCF_USB_USBCR_RESUME (0x1) +#define MCF_USB_USBCR_APPLOCK (0x2) +#define MCF_USB_USBCR_RST (0x4) +#define MCF_USB_USBCR_RAMEN (0x8) +#define MCF_USB_USBCR_RAMSPLIT (0x20) + +/* Bit definitions and macros for MCF_USB_DRAMCR */ +#define MCF_USB_DRAMCR_DADR(x) (((x)&0x3FF)<<0) +#define MCF_USB_DRAMCR_DSIZE(x) (((x)&0x7FF)<<0x10) +#define MCF_USB_DRAMCR_BSY (0x40000000) +#define MCF_USB_DRAMCR_START (0x80000000) + +/* Bit definitions and macros for MCF_USB_DRAMDR */ +#define MCF_USB_DRAMDR_DDAT(x) (((x)&0xFF)<<0) + +/* Bit definitions and macros for MCF_USB_USBISR */ +#define MCF_USB_USBISR_ISOERR (0x1) +#define MCF_USB_USBISR_FTUNLCK (0x2) +#define MCF_USB_USBISR_SUSP (0x4) +#define MCF_USB_USBISR_RES (0x8) +#define MCF_USB_USBISR_UPDSOF (0x10) +#define MCF_USB_USBISR_RSTSTOP (0x20) +#define MCF_USB_USBISR_SOF (0x40) +#define MCF_USB_USBISR_MSOF (0x80) + +/* Bit definitions and macros for MCF_USB_USBIMR */ +#define MCF_USB_USBIMR_ISOERR (0x1) +#define MCF_USB_USBIMR_FTUNLCK (0x2) +#define MCF_USB_USBIMR_SUSP (0x4) +#define MCF_USB_USBIMR_RES (0x8) +#define MCF_USB_USBIMR_UPDSOF (0x10) +#define MCF_USB_USBIMR_RSTSTOP (0x20) +#define MCF_USB_USBIMR_SOF (0x40) +#define MCF_USB_USBIMR_MSOF (0x80) + +/* Bit definitions and macros for MCF_USB_EPSTAT */ +#define MCF_USB_EPSTAT_RST (0x1) +#define MCF_USB_EPSTAT_FLUSH (0x2) +#define MCF_USB_EPSTAT_DIR (0x80) +#define MCF_USB_EPSTAT_BYTECNT(x) (((x)&0xFFF)<<0x10) + +/* Bit definitions and macros for MCF_USB_EPISR */ +#define MCF_USB_EPISR_EOF (0x1) +#define MCF_USB_EPISR_EOT (0x4) +#define MCF_USB_EPISR_FIFOLO (0x10) +#define MCF_USB_EPISR_FIFOHI (0x20) +#define MCF_USB_EPISR_ERR (0x40) +#define MCF_USB_EPISR_EMT (0x80) +#define MCF_USB_EPISR_FU (0x100) + +/* Bit definitions and macros for MCF_USB_EPIMR */ +#define MCF_USB_EPIMR_EOF (0x1) +#define MCF_USB_EPIMR_EOT (0x4) +#define MCF_USB_EPIMR_FIFOLO (0x10) +#define MCF_USB_EPIMR_FIFOHI (0x20) +#define MCF_USB_EPIMR_ERR (0x40) +#define MCF_USB_EPIMR_EMT (0x80) +#define MCF_USB_EPIMR_FU (0x100) + +/* Bit definitions and macros for MCF_USB_EPFRCFGR */ +#define MCF_USB_EPFRCFGR_DEPTH(x) (((x)&0x1FFF)<<0) +#define MCF_USB_EPFRCFGR_BASE(x) (((x)&0xFFF)<<0x10) + +/* Bit definitions and macros for MCF_USB_EPFDR */ +#define MCF_USB_EPFDR_RX_TXDATA(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_USB_EPFSR */ +#define MCF_USB_EPFSR_EMT (0x10000) +#define MCF_USB_EPFSR_ALRM (0x20000) +#define MCF_USB_EPFSR_FU (0x40000) +#define MCF_USB_EPFSR_FR (0x80000) +#define MCF_USB_EPFSR_OF (0x100000) +#define MCF_USB_EPFSR_UF (0x200000) +#define MCF_USB_EPFSR_RXW (0x400000) +#define MCF_USB_EPFSR_FAE (0x800000) +#define MCF_USB_EPFSR_FRM(x) (((x)&0xF)<<0x18) +#define MCF_USB_EPFSR_TXW (0x40000000) +#define MCF_USB_EPFSR_IP (0x80000000) + +/* Bit definitions and macros for MCF_USB_EPFCR */ +#define MCF_USB_EPFCR_COUNTER(x) (((x)&0xFFFF)<<0) +#define MCF_USB_EPFCR_TXWMSK (0x40000) +#define MCF_USB_EPFCR_OFMSK (0x80000) +#define MCF_USB_EPFCR_UFMSK (0x100000) +#define MCF_USB_EPFCR_RXWMSK (0x200000) +#define MCF_USB_EPFCR_FAEMSK (0x400000) +#define MCF_USB_EPFCR_IPMSK (0x800000) +#define MCF_USB_EPFCR_GR(x) (((x)&0x7)<<0x18) +#define MCF_USB_EPFCR_FRM (0x8000000) +#define MCF_USB_EPFCR_TMR (0x10000000) +#define MCF_USB_EPFCR_WFR (0x20000000) +#define MCF_USB_EPFCR_SHAD (0x80000000) + +/* Bit definitions and macros for MCF_USB_EPFAR */ +#define MCF_USB_EPFAR_ALRMP(x) (((x)&0xFFF)<<0) + +/* Bit definitions and macros for MCF_USB_EPFRP */ +#define MCF_USB_EPFRP_RP(x) (((x)&0xFFF)<<0) + +/* Bit definitions and macros for MCF_USB_EPFWP */ +#define MCF_USB_EPFWP_WP(x) (((x)&0xFFF)<<0) + +/* Bit definitions and macros for MCF_USB_EPLRFP */ +#define MCF_USB_EPLRFP_LRFP(x) (((x)&0xFFF)<<0) + +/* Bit definitions and macros for MCF_USB_EPLWFP */ +#define MCF_USB_EPLWFP_LWFP(x) (((x)&0xFFF)<<0) + + +#endif /* __MCF5475_USB_H__ */ diff --git a/BaS_gcc/tos/pci_mem/include/MCF5475_XLB.h b/BaS_gcc/tos/pci_mem/include/MCF5475_XLB.h new file mode 100644 index 0000000..af25ae7 --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/MCF5475_XLB.h @@ -0,0 +1,101 @@ +/* Coldfire C Header File + * Copyright Freescale Semiconductor Inc + * All rights reserved. + * + * 2008/05/23 Revision: 0.81 + * + * (c) Copyright UNIS, a.s. 1997-2008 + * UNIS, a.s. + * Jundrovska 33 + * 624 00 Brno + * Czech Republic + * http : www.processorexpert.com + * mail : info@processorexpert.com + */ + +#ifndef __MCF5475_XLB_H__ +#define __MCF5475_XLB_H__ + + +/********************************************************************* +* +* XL Bus Arbiter (XLB) +* +*********************************************************************/ + +/* Register read/write macros */ +#define MCF_XLB_XARB_CFG (*(volatile uint32_t*)(&_MBAR[0x240])) +#define MCF_XLB_XARB_VER (*(volatile uint32_t*)(&_MBAR[0x244])) +#define MCF_XLB_XARB_SR (*(volatile uint32_t*)(&_MBAR[0x248])) +#define MCF_XLB_XARB_IMR (*(volatile uint32_t*)(&_MBAR[0x24C])) +#define MCF_XLB_XARB_ADRCAP (*(volatile uint32_t*)(&_MBAR[0x250])) +#define MCF_XLB_XARB_SIGCAP (*(volatile uint32_t*)(&_MBAR[0x254])) +#define MCF_XLB_XARB_ADRTO (*(volatile uint32_t*)(&_MBAR[0x258])) +#define MCF_XLB_XARB_DATTO (*(volatile uint32_t*)(&_MBAR[0x25C])) +#define MCF_XLB_XARB_BUSTO (*(volatile uint32_t*)(&_MBAR[0x260])) +#define MCF_XLB_XARB_PRIEN (*(volatile uint32_t*)(&_MBAR[0x264])) +#define MCF_XLB_XARB_PRI (*(volatile uint32_t*)(&_MBAR[0x268])) + + +/* Bit definitions and macros for MCF_XLB_XARB_CFG */ +#define MCF_XLB_XARB_CFG_AT (0x2) +#define MCF_XLB_XARB_CFG_DT (0x4) +#define MCF_XLB_XARB_CFG_BA (0x8) +#define MCF_XLB_XARB_CFG_PM(x) (((x)&0x3)<<0x5) +#define MCF_XLB_XARB_CFG_SP(x) (((x)&0x7)<<0x8) +#define MCF_XLB_XARB_CFG_PLDIS (0x80000000) + +/* Bit definitions and macros for MCF_XLB_XARB_VER */ +#define MCF_XLB_XARB_VER_VER(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_XLB_XARB_SR */ +#define MCF_XLB_XARB_SR_AT (0x1) +#define MCF_XLB_XARB_SR_DT (0x2) +#define MCF_XLB_XARB_SR_BA (0x4) +#define MCF_XLB_XARB_SR_TTM (0x8) +#define MCF_XLB_XARB_SR_ECW (0x10) +#define MCF_XLB_XARB_SR_TTR (0x20) +#define MCF_XLB_XARB_SR_TTA (0x40) +#define MCF_XLB_XARB_SR_MM (0x80) +#define MCF_XLB_XARB_SR_SEA (0x100) + +/* Bit definitions and macros for MCF_XLB_XARB_IMR */ +#define MCF_XLB_XARB_IMR_ATE (0x1) +#define MCF_XLB_XARB_IMR_DTE (0x2) +#define MCF_XLB_XARB_IMR_BAE (0x4) +#define MCF_XLB_XARB_IMR_TTME (0x8) +#define MCF_XLB_XARB_IMR_ECWE (0x10) +#define MCF_XLB_XARB_IMR_TTRE (0x20) +#define MCF_XLB_XARB_IMR_TTAE (0x40) +#define MCF_XLB_XARB_IMR_MME (0x80) +#define MCF_XLB_XARB_IMR_SEAE (0x100) + +/* Bit definitions and macros for MCF_XLB_XARB_ADRCAP */ +#define MCF_XLB_XARB_ADRCAP_ADRCAP(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_XLB_XARB_SIGCAP */ +#define MCF_XLB_XARB_SIGCAP_TT(x) (((x)&0x1F)<<0) +#define MCF_XLB_XARB_SIGCAP_TBST (0x20) +#define MCF_XLB_XARB_SIGCAP_TSIZ(x) (((x)&0x7)<<0x7) + +/* Bit definitions and macros for MCF_XLB_XARB_ADRTO */ +#define MCF_XLB_XARB_ADRTO_ADRTO(x) (((x)&0xFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_XLB_XARB_DATTO */ +#define MCF_XLB_XARB_DATTO_DATTO(x) (((x)&0xFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_XLB_XARB_BUSTO */ +#define MCF_XLB_XARB_BUSTO_BUSTO(x) (((x)&0xFFFFFFFF)<<0) + +/* Bit definitions and macros for MCF_XLB_XARB_PRIEN */ +#define MCF_XLB_XARB_PRIEN_M0 (0x1) +#define MCF_XLB_XARB_PRIEN_M2 (0x4) +#define MCF_XLB_XARB_PRIEN_M3 (0x8) + +/* Bit definitions and macros for MCF_XLB_XARB_PRI */ +#define MCF_XLB_XARB_PRI_M0P(x) (((x)&0x7)<<0) +#define MCF_XLB_XARB_PRI_M2P(x) (((x)&0x7)<<0x8) +#define MCF_XLB_XARB_PRI_M3P(x) (((x)&0x7)<<0xC) + + +#endif /* __MCF5475_XLB_H__ */ diff --git a/BaS_gcc/tos/pci_mem/include/bas_string.h b/BaS_gcc/tos/pci_mem/include/bas_string.h new file mode 100644 index 0000000..c743c95 --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/bas_string.h @@ -0,0 +1,47 @@ +/* + * bas_string.h + * + * This file is part of BaS_gcc. + * + * BaS_gcc 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 3 of the License, or + * (at your option) any later version. + * + * BaS_gcc 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 BaS_gcc. If not, see . + * + * Created on: 26.02.2013 + * Author: Markus Fröschle + */ + +#ifndef BAS_STRING_H_ +#define BAS_STRING_H_ + +#include + +extern int strncmp(const char *s1, const char *s2, size_t max); +extern char *strcpy(char *dst, const char *src); +char *strncpy(char *dst, const char *src, size_t max); +extern int strcmp(const char *s1, const char *s2); +extern size_t strlen(const char *str); +extern char *strcat(char *dst, const char *src); +extern char *strncat(char *dst, const char *src, size_t max); +extern int atoi(const char *c); +extern void *memcpy(void *dst, const void *src, size_t n); +extern void *memset(void *s, int c, size_t n); +extern int memcmp(const void *s1, const void *s2, size_t max); +extern void bzero(void *s, size_t n); + +#define isdigit(c) (((c) >= '0') && ((c) <= '9')) +#define isupper(c) ((c) >= 'A' && ((c) <= 'Z')) +#define islower(c) ((c) >= 'a' && ((c) <= 'z')) +#define isalpha(c) (isupper((c)) || islower(c)) +#define tolower(c) (isupper(c) ? ((c) + 'a' - 'A') : (c)) + +#endif /* BAS_STRING_H_ */ diff --git a/BaS_gcc/tos/pci_test/include/bas_printf.h b/BaS_gcc/tos/pci_mem/include/bas_types.h similarity index 56% rename from BaS_gcc/tos/pci_test/include/bas_printf.h rename to BaS_gcc/tos/pci_mem/include/bas_types.h index 5b42c28..4f692a1 100644 --- a/BaS_gcc/tos/pci_test/include/bas_printf.h +++ b/BaS_gcc/tos/pci_mem/include/bas_types.h @@ -1,4 +1,8 @@ /* + * bas_types.h + * + * Created on: 17.11.2012 + * Author: mfro * * This file is part of BaS_gcc. * @@ -15,21 +19,17 @@ * You should have received a copy of the GNU General Public License * along with BaS_gcc. If not, see . * + * Copyright 2010 - 2012 F. Aschwanden + * Copyright 2011 - 2012 V. Riviere + * Copyright 2012 M. Froeschle + * */ -#ifndef _BAS_PRINTF_H_ -#define _BAS_PRINTF_H_ -#include -#include +#ifndef BAS_TYPES_H_ +#define BAS_TYPES_H_ -extern void xvsnprintf(char *str, size_t size, const char *fmt, va_list va); -extern void xvprintf(const char *fmt, va_list va); -extern void xprintf(const char *fmt, ...); -extern void xsnprintf(char *str, size_t size, const char *fmt, ...); -extern void xputchar(int c); -extern int sprintf(char *str, const char *format, ...); +#include +#include +#include /* for sizeof() etc. */ - -extern void display_progress(void); -extern void hexdump(uint8_t buffer[], int size); -#endif /* _BAS_PRINTF_H_ */ +#endif /* BAS_TYPES_H_ */ diff --git a/BaS_gcc/tos/pci_mem/include/driver_vec.h b/BaS_gcc/tos/pci_mem/include/driver_vec.h new file mode 100644 index 0000000..06220ef --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/driver_vec.h @@ -0,0 +1,319 @@ +/* + * driver_vec.h + * + * Interface for exposure of BaS drivers to the OS + * + * This file is part of BaS_gcc. + * + * BaS_gcc 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 3 of the License, or + * (at your option) any later version. + * + * BaS_gcc 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 BaS_gcc. If not, see . + * + * Created on: 24.10.2013 + * Author: Markus Fröschle + */ + +#ifndef _DRIVER_VEC_H_ +#define _DRIVER_VEC_H_ + +#include "pci.h" + +enum driver_type +{ + BLOCKDEV_DRIVER, + CHARDEV_DRIVER, + XHDI_DRIVER, + MCD_DRIVER, + VIDEO_DRIVER, + PCI_DRIVER, + MMU_DRIVER, + PCI_NATIVE_DRIVER, + END_OF_DRIVERS = 0xffffffffL, /* marks end of driver list */ +}; + +struct generic_driver_interface +{ + uint32_t (*init)(void); + uint32_t (*read)(void *buf, size_t count); + uint32_t (*write)(const void *buf, size_t count); + uint32_t (*ioctl)(uint32_t request, ...); +}; + +struct dma_driver_interface +{ + int32_t version; + int32_t magic; + int (*dma_set_initiator)(int initiator); + uint32_t (*dma_get_initiator)(int requestor); + void (*dma_free_initiator)(int requestor); + int (*dma_set_channel)(int requestor, void (*handler)(void)); + int (*dma_get_channel)(int requestor); + void (*dma_free_channel)(int requestor); + void (*dma_clear_channel)(int channel); + int (*MCD_startDma)(long channel, + int8_t *srcAddr, unsigned int srcIncr, int8_t *destAddr, unsigned int destIncr, + unsigned int dmaSize, unsigned int xferSize, unsigned int initiator, int priority, + unsigned int flags, unsigned int funcDesc); + int32_t (*MCD_dmaStatus)(int32_t channel); + int32_t (*MCD_XferProgrQuery)(int32_t channel, /* MCD_XferProg */ void *progRep); + int32_t (*MCD_killDma)(int32_t channel); + int32_t (*MCD_continDma)(int32_t channel); + int32_t (*MCD_pauseDma)(int32_t channel); + int32_t (*MCD_resumeDma)(int32_t channel); + int32_t (*MCD_csumQuery)(int32_t channel, uint32_t *csum); + void *(*dma_malloc)(uint32_t amount); + int32_t (*dma_free)(void *addr); +}; + +struct xhdi_driver_interface +{ + uint32_t (*xhdivec)(); +}; + +/* + * Interpretation of offset for color fields: All offsets are from the right, + * inside a "pixel" value, which is exactly 'bits_per_pixel' wide (means: you + * can use the offset as right argument to <<). A pixel afterwards is a bit + * stream and is written to video memory as that unmodified. This implies + * big-endian byte order if bits_per_pixel is greater than 8. + */ +struct fb_bitfield +{ + unsigned long offset; /* beginning of bitfield */ + unsigned long length; /* length of bitfield */ + unsigned long msb_right; /* != 0 : Most significant bit is */ + /* right */ +}; + +/* + * the following structures define the interface to the BaS-builtin-framebuffer video driver + */ +struct fb_var_screeninfo +{ + unsigned long xres; /* visible resolution */ + unsigned long yres; + unsigned long xres_virtual; /* virtual resolution */ + unsigned long yres_virtual; + unsigned long xoffset; /* offset from virtual to visible */ + unsigned long yoffset; /* resolution */ + + unsigned long bits_per_pixel; /* guess what */ + unsigned long grayscale; /* != 0 Graylevels instead of colors */ + + struct fb_bitfield red; /* bitfield in fb mem if true color, */ + struct fb_bitfield green; /* else only length is significant */ + struct fb_bitfield blue; + struct fb_bitfield transp; /* transparency */ + + unsigned long nonstd; /* != 0 Non standard pixel format */ + + unsigned long activate; /* see FB_ACTIVATE_* */ + + unsigned long height; /* height of picture in mm */ + unsigned long width; /* width of picture in mm */ + + unsigned long accel_flags; /* (OBSOLETE) see fb_info.flags */ + + /* Timing: All values in pixclocks, except pixclock (of course) */ + unsigned long pixclock; /* pixel clock in ps (pico seconds) */ + unsigned long left_margin; /* time from sync to picture */ + unsigned long right_margin; /* time from picture to sync */ + unsigned long upper_margin; /* time from sync to picture */ + unsigned long lower_margin; + unsigned long hsync_len; /* length of horizontal sync */ + unsigned long vsync_len; /* length of vertical sync */ + unsigned long sync; /* see FB_SYNC_* */ + unsigned long vmode; /* see FB_VMODE_* */ + unsigned long rotate; /* angle we rotate counter clockwise */ + unsigned long refresh; + unsigned long reserved[4]; /* Reserved for future compatibility */ +}; + +struct fb_fix_screeninfo +{ + char id[16]; /* identification string eg "TT Builtin" */ + unsigned long smem_start; /* Start of frame buffer mem */ + /* (physical address) */ + unsigned long smem_len; /* Length of frame buffer mem */ + unsigned long type; /* see FB_TYPE_* */ + unsigned long type_aux; /* Interleave for interleaved Planes */ + unsigned long visual; /* see FB_VISUAL_* */ + unsigned short xpanstep; /* zero if no hardware panning */ + unsigned short ypanstep; /* zero if no hardware panning */ + unsigned short ywrapstep; /* zero if no hardware ywrap */ + unsigned long line_length; /* length of a line in bytes */ + unsigned long mmio_start; /* Start of Memory Mapped I/O */ + /* (physical address) */ + unsigned long mmio_len; /* Length of Memory Mapped I/O */ + unsigned long accel; /* Indicate to driver which */ + /* specific chip/card we have */ + unsigned short reserved[3]; /* Reserved for future compatibility */ +}; + +struct fb_chroma +{ + unsigned long redx; /* in fraction of 1024 */ + unsigned long greenx; + unsigned long bluex; + unsigned long whitex; + unsigned long redy; + unsigned long greeny; + unsigned long bluey; + unsigned long whitey; +}; + +struct fb_monspecs +{ + struct fb_chroma chroma; + struct fb_videomode *modedb; /* mode database */ + unsigned char manufacturer[4]; /* Manufacturer */ + unsigned char monitor[14]; /* Monitor String */ + unsigned char serial_no[14]; /* Serial Number */ + unsigned char ascii[14]; /* ? */ + unsigned long modedb_len; /* mode database length */ + unsigned long model; /* Monitor Model */ + unsigned long serial; /* Serial Number - Integer */ + unsigned long year; /* Year manufactured */ + unsigned long week; /* Week Manufactured */ + unsigned long hfmin; /* hfreq lower limit (Hz) */ + unsigned long hfmax; /* hfreq upper limit (Hz) */ + unsigned long dclkmin; /* pixelclock lower limit (Hz) */ + unsigned long dclkmax; /* pixelclock upper limit (Hz) */ + unsigned short input; /* display type - see FB_DISP_* */ + unsigned short dpms; /* DPMS support - see FB_DPMS_ */ + unsigned short signal; /* Signal Type - see FB_SIGNAL_* */ + unsigned short vfmin; /* vfreq lower limit (Hz) */ + unsigned short vfmax; /* vfreq upper limit (Hz) */ + unsigned short gamma; /* Gamma - in fractions of 100 */ + unsigned short gtf : 1; /* supports GTF */ + unsigned short misc; /* Misc flags - see FB_MISC_* */ + unsigned char version; /* EDID version... */ + unsigned char revision; /* ...and revision */ + unsigned char max_x; /* Maximum horizontal size (cm) */ + unsigned char max_y; /* Maximum vertical size (cm) */ +}; + +struct framebuffer_driver_interface +{ + struct fb_info **framebuffer_info; /* pointer to an fb_info struct (defined in include/fb.h) */ +}; + + +struct pci_bios_interface +{ + uint32_t subjar; + uint32_t version; + /* Although we declare this functions as standard gcc functions (cdecl), + * they expect parameters inside registers (fastcall) unsupported by gcc m68k. + * Caller will take care of parameters passing convention. + */ + int32_t (*find_pci_device)(uint32_t id, uint16_t index); + int32_t (*find_pci_classcode)(uint32_t class, uint16_t index); + int32_t (*read_config_byte)(int32_t handle, uint16_t reg, uint8_t *address); + int32_t (*read_config_word)(int32_t handle, uint16_t reg, uint16_t *address); + int32_t (*read_config_longword)(int32_t handle, uint16_t reg, uint32_t *address); + uint8_t (*fast_read_config_byte)(int32_t handle, uint16_t reg); + uint16_t (*fast_read_config_word)(int32_t handle, uint16_t reg); + uint32_t (*fast_read_config_longword)(int32_t handle, uint16_t reg); + int32_t (*write_config_byte)(int32_t handle, uint16_t reg, uint16_t val); + int32_t (*write_config_word)(int32_t handle, uint16_t reg, uint16_t val); + int32_t (*write_config_longword)(int32_t handle, uint16_t reg, uint32_t val); + int32_t (*hook_interrupt)(int32_t handle, uint32_t *routine, uint32_t *parameter); + int32_t (*unhook_interrupt)(int32_t handle); + int32_t (*special_cycle)(uint16_t bus, uint32_t data); + int32_t (*get_routing)(int32_t handle); + int32_t (*set_interrupt)(int32_t handle); + int32_t (*get_resource)(int32_t handle); + int32_t (*get_card_used)(int32_t handle, uint32_t *address); + int32_t (*set_card_used)(int32_t handle, uint32_t *callback); + int32_t (*read_mem_byte)(int32_t handle, uint32_t offset, uint8_t *address); + int32_t (*read_mem_word)(int32_t handle, uint32_t offset, uint16_t *address); + int32_t (*read_mem_longword)(int32_t handle, uint32_t offset, uint32_t *address); + uint8_t (*fast_read_mem_byte)(int32_t handle, uint32_t offset); + uint16_t (*fast_read_mem_word)(int32_t handle, uint32_t offset); + uint32_t (*fast_read_mem_longword)(int32_t handle, uint32_t offset); + int32_t (*write_mem_byte)(int32_t handle, uint32_t offset, uint16_t val); + int32_t (*write_mem_word)(int32_t handle, uint32_t offset, uint16_t val); + int32_t (*write_mem_longword)(int32_t handle, uint32_t offset, uint32_t val); + int32_t (*read_io_byte)(int32_t handle, uint32_t offset, uint8_t *address); + int32_t (*read_io_word)(int32_t handle, uint32_t offset, uint16_t *address); + int32_t (*read_io_longword)(int32_t handle, uint32_t offset, uint32_t *address); + uint8_t (*fast_read_io_byte)(int32_t handle, uint32_t offset); + uint16_t (*fast_read_io_word)(int32_t handle, uint32_t offset); + uint32_t (*fast_read_io_longword)(int32_t handle, uint32_t offset); + int32_t (*write_io_byte)(int32_t handle, uint32_t offset, uint16_t val); + int32_t (*write_io_word)(int32_t handle, uint32_t offset, uint16_t val); + int32_t (*write_io_longword)(int32_t handle, uint32_t offset, uint32_t val); + int32_t (*get_machine_id)(void); + int32_t (*get_pagesize)(void); + int32_t (*virt_to_bus)(int32_t handle, uint32_t address, PCI_CONV_ADR *pointer); + int32_t (*bus_to_virt)(int32_t handle, uint32_t address, PCI_CONV_ADR *pointer); + int32_t (*virt_to_phys)(uint32_t address, PCI_CONV_ADR *pointer); + int32_t (*phys_to_virt)(uint32_t address, PCI_CONV_ADR *pointer); + // int32_t reserved[2]; +}; + +struct mmu_driver_interface +{ + int32_t (*map_page_locked)(uint32_t address, uint32_t length, int asid); + int32_t (*unlock_page)(uint32_t address, uint32_t length, int asid); + int32_t (*report_locked_pages)(uint32_t *num_itlb, uint32_t *num_dtlb); + uint32_t (*report_pagesize)(void); +}; + +struct pci_native_driver_interface +{ + uint32_t (*pci_read_config_longword)(int32_t handle, int offset); + uint16_t (*pci_read_config_word)(int32_t handle, int offset); + uint8_t (*pci_read_config_byte)(int32_t handle, int offset); + + int32_t (*pci_write_config_longword)(int32_t handle, int offset, uint32_t value); + int32_t (*pci_write_config_word)(int32_t handle, int offset, uint16_t value); + int32_t (*pci_write_config_byte)(int32_t handle, int offset, uint8_t value); + int32_t (*pci_hook_interrupt)(int32_t handle, void *handler, void *parameter); + int32_t (*pci_unhook_interrupt)(int32_t handle); + int32_t (*pci_find_device)(uint16_t device_id, uint16_t vendor_id, int index); + int32_t (*pci_find_classcode)(uint32_t classcode, int index); + struct pci_rd * (*pci_get_resource)(int32_t handle); +}; + +union interface +{ + struct generic_driver_interface *gdi; + struct xhdi_driver_interface *xhdi; + struct dma_driver_interface *dma; + struct framebuffer_driver_interface *fb; + struct pci_bios_interface *pci; + struct mmu_driver_interface *mmu; + struct pci_native_driver_interface *pci_native; +}; + +struct generic_interface +{ + enum driver_type type; + char name[16]; + char description[64]; + int version; + int revision; + union interface interface; +}; + +struct driver_table +{ + uint32_t bas_version; + uint32_t bas_revision; + void (*remove_handler)(void); /* calling this will disable the BaS' hook into trap #0 */ + struct generic_interface *interfaces; +}; + + +#endif /* _DRIVER_VEC_H_ */ diff --git a/BaS_gcc/tos/pci_mem/include/pci.h b/BaS_gcc/tos/pci_mem/include/pci.h new file mode 100644 index 0000000..b912dd6 --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/pci.h @@ -0,0 +1,360 @@ +#ifndef _PCI_H_ +#define _PCI_H_ + +/* + * This file is part of BaS_gcc. + * + * BaS_gcc 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 3 of the License, or + * (at your option) any later version. + * + * BaS_gcc 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 BaS_gcc. If not, see . + * + * Created on: 26.02.2013 + * Author: Markus Fröschle + */ + +#include +#include "util.h" /* for swpX() */ + +#define PCI_MEMORY_OFFSET 0x80000000 +#define PCI_MEMORY_SIZE 0x40000000 /* 1 GByte PCI memory window */ +#define PCI_IO_OFFSET 0xD0000000 +#define PCI_IO_SIZE 0x10000000 /* 256 MByte PCI I/O window */ + +#define PCI_LANESWAP_B(x) (x ^ 3) +#define PCI_LANESWAP_W(x) (x ^ 2) +#define PCI_LANESWAP_L(x) (x) /* for completeness only */ +/* + * Note: the byte offsets are in little endian format, so for pci_xxx_config_byte() + * accesses to hit the right offset, you'll need to wrap them into PCI_LANESWAP_B() + * and for pci_xxx_config_word() into PCI_LANESWAP_W() + */ +#define PCIIDR 0x00 /* PCI Configuration ID Register */ +#define PCICSR 0x04 /* PCI Command/Status Register */ +#define PCICR 0x06 /* PCI Command Register */ +#define PCISR 0x04 /* PCI Status Register */ +#define PCIREV 0x0B /* PCI Revision ID Register */ +#define PCICCR 0x08 /* PCI Class Code Register */ +#define PCICLSR 0x0F /* PCI Cache Line Size Register */ +#define PCILTR 0x0E /* PCI Latency Timer Register */ +#define PCIHTR 0x0D /* PCI Header Type Register */ +#define PCIBISTR 0x0C /* PCI Build-In Self Test Register */ + +#define PCIBAR0 0x10 /* PCI Base Address Register for Memory + Accesses to Local, Runtime, and DMA */ +#define PCIBAR1 0x14 /* PCI Base Address Register for I/O + Accesses to Local, Runtime, and DMA */ +#define PCIBAR2 0x18 /* PCI Base Address Register for Memory + Accesses to Local Address Space 0 */ +#define PCIBAR3 0x1C /* PCI Base Address Register for Memory + Accesses to Local Address Space 1 */ +#define PCIBAR4 0x20 /* PCI Base Address Register, reserved */ +#define PCIBAR5 0x24 /* PCI Base Address Register, reserved */ +#define PCICIS 0x28 /* PCI Cardbus CIS Pointer, not support*/ +#define PCISVID 0x2E /* PCI Subsystem Vendor ID */ +#define PCISID 0x2D /* PCI Subsystem ID */ +#define PCIERBAR 0x30 /* PCI Expansion ROM Base Register */ +#define CAP_PTR 0x34 /* New Capability Pointer */ +#define PCIILR 0x3F /* PCI Interrupt Line Register */ +#define PCIIPR 0x3E /* PCI Interrupt Pin Register */ +#define PCIMGR 0x3D /* PCI Min_Gnt Register */ +#define PCIMLR 0x3C /* PCI Max_Lat Register */ +#define PMCAPID 0x40 /* Power Management Capability ID */ +#define PMNEXT 0x41 /* Power Management Next Capability + Pointer */ +#define PMC 0x42 /* Power Management Capabilities */ +#define PMCSR 0x44 /* Power Management Control/Status */ +#define PMCSR_BSE 0x46 /* PMCSR Bridge Support Extensions */ +#define PMDATA 0x47 /* Power Management Data */ +#define HS_CNTL 0x48 /* Hot Swap Control */ +#define HS_NEXT 0x49 /* Hot Swap Next Capability Pointer */ +#define HS_CSR 0x4A /* Hot Swap Control/Status */ +#define PVPDCNTL 0x4C /* PCI Vital Product Data Control */ +#define PVPD_NEXT 0x4D /* PCI Vital Product Data Next + Capability Pointer */ +#define PVPDAD 0x4E /* PCI Vital Product Data Address */ +#define PVPDATA 0x50 /* PCI VPD Data */ + +/* + * bit definitions for PCICSR lower half (Command Register) + */ +#define PCICR_IO (1 << 0) /* if set: device responds to I/O space accesses */ +#define PCICR_MEMORY (1 << 1) /* if set: device responds to memory space accesses */ +#define PCICR_MASTER (1 << 2) /* if set: device is master */ +#define PCICR_SPECIAL (1 << 3) /* if set: device reacts on special cycles */ +#define PCICR_MEMWI (1 << 4) /* if set: device deals with memory write and invalidate */ +#define PCICR_VGA_SNOOP (1 << 5) /* if set: capable of palette snoop */ +#define PCICR_PERR (1 << 6) /* if set: reacts to parity errors */ +#define PCICR_STEPPING (1 << 7) /* if set: stepping enabled */ +#define PCICR_SERR (1 << 8) /* if set: SERR pin enabled */ +#define PCICR_FAST_BTOB_E (1 << 9) /* if set: fast back-to-back enabled */ +#define PCICR_INT_DISABLE (1 << 10) /* if set: disable interrupts from this device */ +/* + * bit definitions for PCICSR upper half (Status Register) + */ +#define PCISR_INTERRUPT (1 << 3) /* device requested interrupt */ +#define PCISR_CAPABILITIES (1 << 4) /* if set, capabilities pointer is valid */ +#define PCISR_66MHZ (1 << 5) /* 66 MHz capable */ +#define PCISR_UDF (1 << 6) /* UDF supported */ +#define PCISR_FAST_BTOB (1 << 7) /* Fast back-to-back enabled */ +#define PCISR_DPARITY_ERROR (1 << 8) /* data parity error detected */ + +#define PCISR_T_ABORT_S (1 << 11) /* target abort signaled */ +#define PCISR_T_ABORT_R (1 << 12) /* target abort received */ +#define PCISR_M_ABORT_R (1 << 13) /* master abort received */ +#define PCISR_S_ERROR_S (1 << 14) /* system error signaled */ +#define PCISR_PARITY_ERR (1 << 15) /* data parity error */ + +/* Header type 1 (PCI-to-PCI bridges) */ +#define PCI_PRIMARY_BUS 0x1B /* Primary bus number */ +#define PCI_SECONDARY_BUS 0x1A /* Secondary bus number */ +#define PCI_SUBORDINATE_BUS 0x19 /* Highest bus number behind the bridge */ +#define PCI_SEC_LATENCY_TIMER 0x18 /* Latency timer for secondary interface */ +#define PCI_IO_BASE 0x1C /* I/O range behind the bridge */ +#define PCI_IO_LIMIT 0x1D +#define PCI_SEC_STATUS 0x1C /* Secondary status register, only bit 14 used */ +#define PCI_MEMORY_BASE 0x20 /* Memory range behind */ +#define PCI_MEMORY_LIMIT 0x22 +#define PCI_PREF_MEMORY_BASE 0x24 /* Prefetchable memory range behind */ +#define PCI_PREF_MEMORY_LIMIT 0x26 +#define PCI_PREF_BASE_UPPER32 0x28 /* Upper half of prefetchable memory range */ +#define PCI_PREF_LIMIT_UPPER32 0x2C +#define PCI_IO_BASE_UPPER16 0x30 /* Upper half of I/O addresses */ +#define PCI_IO_LIMIT_UPPER16 0x32 +#define PCI_BRIDGE_CONTROL 0x3E /* Bridge Control */ + +struct pci_rd /* structure of resource descriptor */ +{ + unsigned short next; /* length of the following structure */ + unsigned short flags; /* type of resource and misc. flags */ + unsigned long start; /* start-address of resource */ + unsigned long length; /* length of resource */ + unsigned long offset; /* offset PCI to phys. CPU Address */ + unsigned long dmaoffset; /* offset for DMA-transfers */ +}; + +typedef struct /* structure of address conversion */ +{ + unsigned long adr; /* calculated address (CPU<->PCI) */ + unsigned long len; /* length of memory range */ +} PCI_CONV_ADR; + +/******************************************************************************/ +/* PCI-BIOS Error Codes */ +/******************************************************************************/ +#define PCI_SUCCESSFUL 0 /* everything's fine */ +#define PCI_FUNC_NOT_SUPPORTED -2 /* function not supported */ +#define PCI_BAD_VENDOR_ID -3 /* wrong Vendor ID */ +#define PCI_DEVICE_NOT_FOUND -4 /* PCI-Device not found */ +#define PCI_BAD_REGISTER_NUMBER -5 /* wrong register number */ +#define PCI_SET_FAILED -6 /* reserved for later use */ +#define PCI_BUFFER_TOO_SMALL -7 /* reserved for later use */ +#define PCI_GENERAL_ERROR -8 /* general BIOS error code */ +#define PCI_BAD_HANDLE -9 /* wrong/unknown PCI-handle */ + +/******************************************************************************/ +/* Flags used in Resource-Descriptor */ +/******************************************************************************/ +#define FLG_IO 0x4000 /* Ressource in IO range */ +#define FLG_ROM 0x2000 /* Expansion ROM */ +#define FLG_LAST 0x8000 /* last ressource */ +#define FLG_8BIT 0x0100 /* 8 bit accesses allowed */ +#define FLG_16BIT 0x0200 /* 16 bit accesses allowed */ +#define FLG_32BIT 0x0400 /* 32 bit accesses allowed */ +#define FLG_ENDMASK 0x000F /* mask for byte ordering */ + +/******************************************************************************/ +/* Values used in FLG_ENDMASK for Byte Ordering */ +/******************************************************************************/ +#define ORD_MOTOROLA 0 /* Motorola (big endian) */ +#define ORD_INTEL_AS 1 /* Intel (little endian), addr.swapped */ +#define ORD_INTEL_LS 2 /* Intel (little endian), lane swapped */ +#define ORD_UNKNOWN 15 /* unknown (BIOS-calls allowed only) */ + +/******************************************************************************/ +/* Status Info used in Device-Descriptor */ +/******************************************************************************/ +#define DEVICE_FREE 0 /* Device is not used */ +#define DEVICE_USED 1 /* Device is used by another driver */ +#define DEVICE_CALLBACK 2 /* used, but driver can be cancelled */ +#define DEVICE_AVAILABLE 3 /* used, not available */ +#define NO_DEVICE -1 /* no device detected */ + +/* PCI configuration space macros */ + +/* register 0x00 macros */ +#define PCI_DEVICE_ID(i) (uint16_t)(((i) & 0xffff0000) >> 16) +#define PCI_VENDOR_ID(i) (uint16_t) ((i) & 0xffff) + +/* register 0x04 macros */ +#define PCI_STATUS(i) ((i) & 0xffff) +#define PCI_COMMAND(i) (((i) >> 16) & 0xffff) + +/* register 0x08 macros */ +#define PCI_CLASS_CODE(i) (((i) & 0xff000000) >> 24) +#define PCI_SUBCLASS(i) (((i) & 0x00ff0000) >> 16) +#define PCI_PROG_IF(i) (((i) & 0x0000ff00) >> 8) +#define PCI_REVISION_ID(i) (((i) & 0x000000ff)) + +/* register 0x0c macros */ +#define PCI_BIST(i) (((i) & 0xff000000) >> 24) +#define PCI_HEADER_TYPE(i) (((i) & 0x00ff0000) >> 16) +#define PCI_LAT_TIMER(i) (((i) & 0x0000ff00) >> 8) +#define PCI_CACHELINE_SIZE(i) (((i) & 0x000000ff)) + +/* register 0x2c macros */ +#define PCI_SUBSYS_ID(i) ((i) & 0xffff0000) >> 16) +#define PCI_SUBSYS_VID(i) ((i) & 0xffff)) + +/* register 0x34 macros */ +#define PCI_CAPABILITIES(i) ((i) & 0xff) + +/* register 0x3c macros */ +#define PCI_MAX_LATENCY(i) (((i) & 0xff000000) >> 24) +#define PCI_MIN_GRANT(i) (((i) & 0xff0000) >> 16) +#define PCI_INTERRUPT_PIN(i) (((i) & 0xff00) >> 8) +#define PCI_INTERRUPT_LINE(i) (((i)) & 0xff) + +#define IS_PCI_MEM_BAR(i) ((i) & 1) == 0 +#define IS_PCI_IO_BAR(i) ((i) & 1) == 1 +#define PCI_MEMBAR_TYPE(i) (((i) & 0x6) >> 1) +#define PCI_IOBAR_ADR(i) (((i) & 0xfffffffc)) +#define PCI_MEMBAR_ADR(i) (((i) & 0xfffffff0)) + +extern void init_eport(void); +extern void init_xlbus_arbiter(void); +extern void init_pci(void); +extern int pci_handle2index(int32_t handle); + +extern int32_t pci_find_device(uint16_t device_id, uint16_t vendor_id, int index); +extern int32_t pci_find_classcode(uint32_t classcode, int index); + +extern int32_t pci_get_interrupt_cause(void); +extern int32_t pci_call_interrupt_chain(int32_t handle, int32_t data); + +/* + * match bits for pci_find_classcode() + */ +#define PCI_FIND_BASE_CLASS (1 << 26) +#define PCI_FIND_SUB_CLASS (1 << 25) +#define PCI_FIND_PROG_IF (1 << 24) + +extern uint32_t pci_read_config_longword(int32_t handle, int offset); +extern uint16_t pci_read_config_word(int32_t handle, int offset); +extern uint8_t pci_read_config_byte(int32_t handle, int offset); + +extern int32_t pci_write_config_longword(int32_t handle, int offset, uint32_t value); +extern int32_t pci_write_config_word(int32_t handle, int offset, uint16_t value); +extern int32_t pci_write_config_byte(int32_t handle, int offset, uint8_t value); + +typedef int (*pci_interrupt_handler)(int param); + +extern int32_t pci_hook_interrupt(int32_t handle, void *handler, void *parameter); +extern int32_t pci_unhook_interrupt(int32_t handle); + +extern struct pci_rd *pci_get_resource(int32_t handle); + +/* + * Not implemented PCI_BIOS functions + */ +extern uint8_t pci_fast_read_config_byte(int32_t handle, uint16_t reg); +extern uint16_t pci_fast_read_config_word(int32_t handle, uint16_t reg); +extern uint32_t pci_fast_read_config_longword(int32_t handle, uint16_t reg); +extern int32_t pci_special_cycle(uint16_t bus, uint32_t data); +extern int32_t pci_get_routing(int32_t handle); +extern int32_t pci_set_interrupt(int32_t handle); +extern int32_t pci_get_card_used(int32_t handle, uint32_t *address); +extern int32_t pci_set_card_used(int32_t handle, uint32_t *callback); +extern int32_t pci_read_mem_byte(int32_t handle, uint32_t offset, uint8_t *address); +extern int32_t pci_read_mem_word(int32_t handle, uint32_t offset, uint16_t *address); +extern int32_t pci_read_mem_longword(int32_t handle, uint32_t offset, uint32_t *address); +extern uint8_t pci_fast_read_mem_byte(int32_t handle, uint32_t offset); +extern uint16_t pci_fast_read_mem_word(int32_t handle, uint32_t offset); +extern uint32_t pci_fast_read_mem_longword(int32_t handle, uint32_t offset); +extern int32_t pci_write_mem_byte(int32_t handle, uint32_t offset, uint16_t val); +extern int32_t pci_write_mem_word(int32_t handle, uint32_t offset, uint16_t val); +extern int32_t pci_write_mem_longword(int32_t handle, uint32_t offset, uint32_t val); +extern int32_t pci_read_io_byte(int32_t handle, uint32_t offset, uint8_t *address); +extern int32_t pci_read_io_word(int32_t handle, uint32_t offset, uint16_t *address); +extern int32_t pci_read_io_longword(int32_t handle, uint32_t offset, uint32_t *address); +extern uint8_t pci_fast_read_io_byte(int32_t handle, uint32_t offset); +extern uint16_t pci_fast_read_io_word(int32_t handle, uint32_t offset); +extern uint32_t pci_fast_read_io_longword(int32_t handle, uint32_t offset); +extern int32_t pci_write_io_byte(int32_t handle, uint32_t offset, uint16_t val); +extern int32_t pci_write_io_word(int32_t handle, uint32_t offset, uint16_t val); +extern int32_t pci_write_io_longword(int32_t handle, uint32_t offset, uint32_t val); +extern int32_t pci_get_machine_id(void); +extern int32_t pci_get_pagesize(void); +extern int32_t pci_virt_to_bus(int32_t handle, uint32_t address, PCI_CONV_ADR *pointer); +extern int32_t pci_bus_to_virt(int32_t handle, uint32_t address, PCI_CONV_ADR *pointer); +extern int32_t pci_virt_to_phys(uint32_t address, PCI_CONV_ADR *pointer); +extern int32_t pci_phys_to_virt(uint32_t address, PCI_CONV_ADR *pointer); + +/* + * prototypes for PCI wrapper routines + */ +extern int32_t wrapper_find_pci_device(uint32_t id, uint16_t index); +extern int32_t wrapper_find_pci_classcode(uint32_t class, uint16_t index); +extern int32_t wrapper_read_config_byte(int32_t handle, uint16_t reg, uint8_t *address); +extern int32_t wrapper_read_config_word(int32_t handle, uint16_t reg, uint16_t *address); +extern int32_t wrapper_read_config_longword(int32_t handle, uint16_t reg, uint32_t *address); +extern uint8_t wrapper_fast_read_config_byte(int32_t handle, uint16_t reg); +extern uint16_t wrapper_fast_read_config_word(int32_t handle, uint16_t reg); +extern uint32_t wrapper_fast_read_config_longword(int32_t handle, uint16_t reg); +extern int32_t wrapper_write_config_byte(int32_t handle, uint16_t reg, uint16_t val); +extern int32_t wrapper_write_config_word(int32_t handle, uint16_t reg, uint16_t val); +extern int32_t wrapper_write_config_longword(int32_t handle, uint16_t reg, uint32_t val); +extern int32_t wrapper_hook_interrupt(int32_t handle, uint32_t *routine, uint32_t *parameter); +extern int32_t wrapper_unhook_interrupt(int32_t handle); +extern int32_t wrapper_special_cycle(uint16_t bus, uint32_t data); +extern int32_t wrapper_get_routing(int32_t handle); +extern int32_t wrapper_set_interrupt(int32_t handle); +extern int32_t wrapper_get_resource(int32_t handle); +extern int32_t wrapper_get_card_used(int32_t handle, uint32_t *address); +extern int32_t wrapper_set_card_used(int32_t handle, uint32_t *callback); +extern int32_t wrapper_read_mem_byte(int32_t handle, uint32_t offset, uint8_t *address); +extern int32_t wrapper_read_mem_word(int32_t handle, uint32_t offset, uint16_t *address); +extern int32_t wrapper_read_mem_longword(int32_t handle, uint32_t offset, uint32_t *address); +extern uint8_t wrapper_fast_read_mem_byte(int32_t handle, uint32_t offset); +extern uint16_t wrapper_fast_read_mem_word(int32_t handle, uint32_t offset); +extern uint32_t wrapper_fast_read_mem_longword(int32_t handle, uint32_t offset); +extern int32_t wrapper_write_mem_byte(int32_t handle, uint32_t offset, uint16_t val); +extern int32_t wrapper_write_mem_word(int32_t handle, uint32_t offset, uint16_t val); +extern int32_t wrapper_write_mem_longword(int32_t handle, uint32_t offset, uint32_t val); +extern int32_t wrapper_read_io_byte(int32_t handle, uint32_t offset, uint8_t *address); +extern int32_t wrapper_read_io_word(int32_t handle, uint32_t offset, uint16_t *address); +extern int32_t wrapper_read_io_longword(int32_t handle, uint32_t offset, uint32_t *address); +extern uint8_t wrapper_fast_read_io_byte(int32_t handle, uint32_t offset); +extern uint16_t wrapper_fast_read_io_word(int32_t handle, uint32_t offset); +extern uint32_t wrapper_fast_read_io_longword(int32_t handle, uint32_t offset); +extern int32_t wrapper_write_io_byte(int32_t handle, uint32_t offset, uint16_t val); +extern int32_t wrapper_write_io_word(int32_t handle, uint32_t offset, uint16_t val); +extern int32_t wrapper_write_io_longword(int32_t handle, uint32_t offset, uint32_t val); +extern int32_t wrapper_get_machine_id(void); +extern int32_t wrapper_get_pagesize(void); +extern int32_t wrapper_virt_to_bus(int32_t handle, uint32_t address, PCI_CONV_ADR *pointer); +extern int32_t wrapper_bus_to_virt(int32_t handle, uint32_t address, PCI_CONV_ADR *pointer); +extern int32_t wrapper_virt_to_phys(uint32_t address, PCI_CONV_ADR *pointer); +extern int32_t wrapper_phys_to_virt(uint32_t address, PCI_CONV_ADR *pointer); + +#define PCI_MK_CONF_ADDR(bus, device, function) (MCF_PCI_PCICAR_E | \ + ((bus) << 16) | \ + ((device << 8) | \ + (function)) + +#define PCI_HANDLE(bus, slot, function) (0 | ((bus & 0xff) << 10 | (slot & 0x1f) << 3 | (function & 7))) +#define PCI_BUS_FROM_HANDLE(h) (((h) & 0xff00) >> 10) +#define PCI_DEVICE_FROM_HANDLE(h) (((h) & 0xf8) >> 3) +#define PCI_FUNCTION_FROM_HANDLE(h) (((h) & 0x7)) + +extern void pci_dump_registers(int32_t handle); + +#endif /* _PCI_H_ */ diff --git a/BaS_gcc/tos/pci_mem/include/util.h b/BaS_gcc/tos/pci_mem/include/util.h new file mode 100644 index 0000000..355c1ac --- /dev/null +++ b/BaS_gcc/tos/pci_mem/include/util.h @@ -0,0 +1,128 @@ +/* + * util.h + * + * Byteswapping macros lend from EmuTOS sources + * + * This file is part of BaS_gcc. + * + * BaS_gcc 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 3 of the License, or + * (at your option) any later version. + * + * BaS_gcc 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 BaS_gcc. If not, see . + * + * Created on: 27.10.2013 + * Author: mfro + */ + +#ifndef UTIL_H_ +#define UTIL_H_ + +#include + +#define NOP() __asm__ __volatile__("nop\n\t" : : : "memory") + +/* + * uint16_t swpw(uint16_t val); + * swap endianess of val, 16 bits only. + */ +static inline uint16_t swpw(uint16_t w) +{ + return (w << 8) | (w >> 8); +} + +/* + * uint32_t swpl(uint32_t val); + * swap endianess of val, 32 bits only. + * e.g. ABCD => DCBA + */ +static inline uint32_t swpl(uint32_t l) +{ + return ((l & 0xff000000) >> 24) | ((l & 0x00ff0000) >> 8) | + ((l & 0x0000ff00) << 8) | (l << 24); +} + + +/* + * WORD swpw2(ULONG val); + * swap endianness of val, treated as two 16-bit words. + * e.g. ABCD => BADC + */ + +#define swpw2(a) \ + __extension__ \ + ({unsigned long _tmp; \ + __asm__ __volatile__ \ + ("move.b (%1),%0\n\t" \ + "move.b 1(%1),(%1)\n\t" \ + "move.b %0,1(%1)\n\t" \ + "move.b 2(%1),%0\n\t" \ + "move.b 3(%1),2(%1)\n\t" \ + "move.b %0,3(%1)" \ + : "=d"(_tmp) /* outputs */ \ + : "a"(&a) /* inputs */ \ + : "cc", "memory" /* clobbered */ \ + ); \ + }) + +/* + * WORD set_sr(WORD new); + * sets sr to the new value, and return the old sr value + */ + +#define set_sr(a) \ +__extension__ \ +({short _r, _a = (a); \ + __asm__ __volatile__ \ + ("move.w sr,%0\n\t" \ + "move.w %1,sr" \ + : "=&d"(_r) /* outputs */ \ + : "nd"(_a) /* inputs */ \ + : "cc", "memory" /* clobbered */ \ + ); \ + _r; \ +}) + + +/* + * WORD get_sr(void); + * returns the current value of sr. + */ + +#define get_sr() \ +__extension__ \ +({short _r; \ + __asm__ volatile \ + ("move.w sr,%0" \ + : "=dm"(_r) /* outputs */ \ + : /* inputs */ \ + : "cc", "memory" /* clobbered */ \ + ); \ + _r; \ +}) + + + +/* + * void regsafe_call(void *addr) + * Saves all registers to the stack, calls the function + * that addr points to, and restores the registers afterwards. + */ +#define regsafe_call(addr) \ +__extension__ \ +({__asm__ volatile ("lea -60(sp),sp\n\t" \ + "movem.l d0-d7/a0-a6,(sp)"); \ + ((void (*) (void)) addr)(); \ + __asm__ volatile ("movem.l (sp),d0-d7/a0-a6\n\t" \ + "lea 60(sp),sp"); \ +}) + + +#endif /* UTIL_H_ */ diff --git a/BaS_gcc/tos/pci_mem/pci_mem.config b/BaS_gcc/tos/pci_mem/pci_mem.config new file mode 100644 index 0000000..8cec188 --- /dev/null +++ b/BaS_gcc/tos/pci_mem/pci_mem.config @@ -0,0 +1 @@ +// ADD PREDEFINED MACROS HERE! diff --git a/BaS_gcc/tos/pci_mem/pci_mem.creator b/BaS_gcc/tos/pci_mem/pci_mem.creator new file mode 100644 index 0000000..e94cbbd --- /dev/null +++ b/BaS_gcc/tos/pci_mem/pci_mem.creator @@ -0,0 +1 @@ +[General] diff --git a/BaS_gcc/tos/pci_mem/pci_mem.files b/BaS_gcc/tos/pci_mem/pci_mem.files new file mode 100644 index 0000000..893c36e --- /dev/null +++ b/BaS_gcc/tos/pci_mem/pci_mem.files @@ -0,0 +1,6 @@ +include/driver_vec.h +Makefile +sources/bas_printf.c +sources/bas_string.c +sources/printf_helper.S +sources/pci_mem.c diff --git a/BaS_gcc/tos/pci_mem/pci_mem.includes b/BaS_gcc/tos/pci_mem/pci_mem.includes new file mode 100644 index 0000000..0e46827 --- /dev/null +++ b/BaS_gcc/tos/pci_mem/pci_mem.includes @@ -0,0 +1,2 @@ +include +/usr/m68k-atari-mint/include diff --git a/BaS_gcc/tos/pci_mem/sources/pci_mem.c b/BaS_gcc/tos/pci_mem/sources/pci_mem.c new file mode 100644 index 0000000..580696e --- /dev/null +++ b/BaS_gcc/tos/pci_mem/sources/pci_mem.c @@ -0,0 +1,181 @@ +#include +#include +#include +#include +#include + +#include "MCF5475.h" +#include "driver_vec.h" +#include "pci.h" + +#define NOP() __asm__ __volatile__("nop\n\t" : : : "memory") + +#define SYSCLK 132000 + + +int i; + +void add_mem(struct pci_native_driver_interface *pci) +{ + int32_t handle; + int16_t index = 0; + +#define PCI_READ_CONFIG_LONGWORD(a, b) (*pci->pci_read_config_longword)(a, b) +#define PCI_WRITE_CONFIG_LONGWORD(a, b) (*pci->pci_write_config_longword)(a, b) +#define PCI_FIND_DEVICE(a, b, c) (*pci->pci_find_device)(a, b, c) +#define PCI_GET_RESOURCE(a) (*pci->pci_get_resource)(a) + + printf("find ATI graphics card\r\n"); + + handle = PCI_FIND_DEVICE(0x5159, 0x1002, index); + if (handle > 0) + { + struct pci_rd *rd; + + printf("ATI device with handle 0x%02x found\r\n", handle); + rd = PCI_GET_RESOURCE(handle); /* get resource descriptor for ATI graphics card */ + printf("rd=%p\r\n", rd); + printf("start=%lx, length=%lx, flags=%x\r\n", rd->start, rd->length, rd->flags); + + if (rd != NULL) + { + if (rd->start != 0L && rd->length > 0x04000000 && + !(rd->flags & FLG_IO) && !(rd->flags & FLG_ROM)) + { + int32_t err; + + if ((err = Maddalt(0x04000000 /* rd->start + 0x7C000000UL */, rd->length)) > 0) + { + printf("%ld MBytes of additional memory added to system at %p\r\n", + rd->length / 1024 / 1024, 0x04000000 /* rd->start + 0x7C000000 */); + return; + } + else + { + fprintf(stderr, "Maddalt() returned error code %ld\r\n", err); + exit(1); + } + } + } + else + { + fprintf(stderr, "no resource descriptor for handle 0x%02x found", handle); + exit(1); + } + } + else + { + fprintf(stderr, "no ATI graphics card found\r\n"); + exit(1); + } + +} + +/* + * temporarily replace the trap 0 handler with this so we can avoid + * getting caught by BaS versions that don't understand the driver interface + * exposure call. + * If we get here, we have a BaS version that doesn't support the trap 0 interface + */ +static void __attribute__((interrupt)) trap0_catcher(void) +{ + __asm__ __volatile__( + " clr.l d0 \n\t" // return 0 to indicate not supported + : + : + : + ); +} + +struct driver_table *get_bas_drivers(void) +{ + struct driver_table *ret = NULL; + void *old_vector; + + old_vector = Setexc(0x20, trap0_catcher); /* set our own temporarily */ + + __asm__ __volatile__( + " bra.s do_trap \n\t" + " .dc.l 0x5f424153 \n\t" // '_BAS' + "do_trap: trap #0 \n\t" + " move.l d0,%[ret] \n\t" + : [ret] "=m" (ret) /* output */ + : /* no inputs */ + : /* clobbered */ + ); + (void) Setexc(0x20, old_vector); /* restore original vector */ + + return ret; +} + +void pci_mem(void) +{ + struct driver_table *bas_drivers; + struct generic_interface *ifc; + bool pci_driver_found = false; + struct pci_native_driver_interface *pci_driver = NULL; + + bas_drivers = get_bas_drivers(); + + /* + * trap0_catcher should return 0L on failure, for some reason FireTOS + * returns -1L on a trap #0. Anyway, ... + */ + if (bas_drivers != NULL && bas_drivers != (void *) -1L) + { + printf("BaS driver vector: %p\r\n", bas_drivers); + printf("BaS version: %ld.%02ld\r\n", (long) bas_drivers->bas_version, (long) bas_drivers->bas_revision); + } + else + { + printf("BaS driver retrieval not supported\r\n"); + printf("(old BaS version or FireTOS?)\r\n"); + exit(1); + } + + ifc = bas_drivers->interfaces; + + do { + struct generic_interface *pci_driver_interface = NULL; + + printf("interface type: %ld\r\n", (long) ifc[i].type); + printf("interface version: %ld.%02ld\r\n", (long) ifc[i].version, (long) ifc[i].revision); + printf("interface name: %s\r\n", ifc[i].name); + printf("interface description: %s\r\n", ifc[i].description); + + if (ifc[i].type == PCI_NATIVE_DRIVER) + { + pci_driver_found = true; + + if (!pci_driver_interface || (ifc[i].version > pci_driver_interface->version || + (ifc[i].version == pci_driver_interface->version && ifc[i].revision > pci_driver_interface->revision))) + { + /* + * either no PCI driver interface found yet or with lower version or with lower version and higher revision + * + * replace it + */ + pci_driver = ifc[i].interface.pci_native; + pci_driver_interface = &ifc[i]; + printf("PCI native driver interface v%d.%02d found\r\n", pci_driver_interface->version, pci_driver_interface->revision); + printf("replaced old with newer driver version\r\n"); + } + } + } while (ifc[++i].type != END_OF_DRIVERS); + + if (pci_driver_found) + { + add_mem(pci_driver); + } +} + +int main(int argc, char *argv[]) +{ + printf("PCI Memory Adder\r\n"); + printf("\xbd 2016 M. Fr\x94schle\r\n"); + + Supexec(pci_mem); + + return 0; /* just to make the compiler happy, we will never return */ +} + diff --git a/BaS_gcc/tos/pci_test/Makefile b/BaS_gcc/tos/pci_test/Makefile index b3ec937..2561a47 100755 --- a/BaS_gcc/tos/pci_test/Makefile +++ b/BaS_gcc/tos/pci_test/Makefile @@ -50,10 +50,9 @@ INCDIR=include INCLUDE+=-I$(INCDIR) CSRCS=\ - $(SRCDIR)/pci_test.c \ - $(SRCDIR)/bas_printf.c + $(SRCDIR)/pci_test.c -ASRCS=$(SRCDIR)/printf_helper.S +ASRCS= COBJS=$(patsubst $(SRCDIR)/%.o,%.o,$(patsubst %.c,%.o,$(CSRCS))) AOBJS=$(patsubst $(SRCDIR)/%.o,%.o,$(patsubst %.S,%.o,$(ASRCS))) diff --git a/BaS_gcc/tos/pci_test/include/bas_types.h b/BaS_gcc/tos/pci_test/include/bas_types.h new file mode 100644 index 0000000..4f692a1 --- /dev/null +++ b/BaS_gcc/tos/pci_test/include/bas_types.h @@ -0,0 +1,35 @@ +/* + * bas_types.h + * + * Created on: 17.11.2012 + * Author: mfro + * + * This file is part of BaS_gcc. + * + * BaS_gcc 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 3 of the License, or + * (at your option) any later version. + * + * BaS_gcc 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 BaS_gcc. If not, see . + * + * Copyright 2010 - 2012 F. Aschwanden + * Copyright 2011 - 2012 V. Riviere + * Copyright 2012 M. Froeschle + * + */ + +#ifndef BAS_TYPES_H_ +#define BAS_TYPES_H_ + +#include +#include +#include /* for sizeof() etc. */ + +#endif /* BAS_TYPES_H_ */ diff --git a/BaS_gcc/tos/pci_test/include/pci.h b/BaS_gcc/tos/pci_test/include/pci.h index cdacfa2..b912dd6 100644 --- a/BaS_gcc/tos/pci_test/include/pci.h +++ b/BaS_gcc/tos/pci_test/include/pci.h @@ -21,26 +21,33 @@ * Author: Markus Fröschle */ +#include +#include "util.h" /* for swpX() */ #define PCI_MEMORY_OFFSET 0x80000000 #define PCI_MEMORY_SIZE 0x40000000 /* 1 GByte PCI memory window */ #define PCI_IO_OFFSET 0xD0000000 -#define PCI_IO_SIZE 0x10000000 /* 128 MByte PCI I/O window */ +#define PCI_IO_SIZE 0x10000000 /* 256 MByte PCI I/O window */ +#define PCI_LANESWAP_B(x) (x ^ 3) +#define PCI_LANESWAP_W(x) (x ^ 2) +#define PCI_LANESWAP_L(x) (x) /* for completeness only */ /* - * Note: the byte offsets are in little endian format, so you can't use them - * on byteswapped (Motorola format) values! + * Note: the byte offsets are in little endian format, so for pci_xxx_config_byte() + * accesses to hit the right offset, you'll need to wrap them into PCI_LANESWAP_B() + * and for pci_xxx_config_word() into PCI_LANESWAP_W() */ #define PCIIDR 0x00 /* PCI Configuration ID Register */ #define PCICSR 0x04 /* PCI Command/Status Register */ -#define PCICR 0x04 /* PCI Command Register */ -#define PCISR 0x06 /* PCI Status Register */ -#define PCIREV 0x08 /* PCI Revision ID Register */ -#define PCICCR 0x0B /* PCI Class Code Register */ -#define PCICLSR 0x0C /* PCI Cache Line Size Register */ -#define PCILTR 0x0D /* PCI Latency Timer Register */ -#define PCIHTR 0x0E /* PCI Header Type Register */ -#define PCIBISTR 0x0F /* PCI Build-In Self Test Register */ +#define PCICR 0x06 /* PCI Command Register */ +#define PCISR 0x04 /* PCI Status Register */ +#define PCIREV 0x0B /* PCI Revision ID Register */ +#define PCICCR 0x08 /* PCI Class Code Register */ +#define PCICLSR 0x0F /* PCI Cache Line Size Register */ +#define PCILTR 0x0E /* PCI Latency Timer Register */ +#define PCIHTR 0x0D /* PCI Header Type Register */ +#define PCIBISTR 0x0C /* PCI Build-In Self Test Register */ + #define PCIBAR0 0x10 /* PCI Base Address Register for Memory Accesses to Local, Runtime, and DMA */ #define PCIBAR1 0x14 /* PCI Base Address Register for I/O @@ -53,13 +60,13 @@ #define PCIBAR5 0x24 /* PCI Base Address Register, reserved */ #define PCICIS 0x28 /* PCI Cardbus CIS Pointer, not support*/ #define PCISVID 0x2E /* PCI Subsystem Vendor ID */ -#define PCISID 0x2E /* PCI Subsystem ID */ +#define PCISID 0x2D /* PCI Subsystem ID */ #define PCIERBAR 0x30 /* PCI Expansion ROM Base Register */ #define CAP_PTR 0x34 /* New Capability Pointer */ -#define PCIILR 0x3C /* PCI Interrupt Line Register */ -#define PCIIPR 0x3D /* PCI Interrupt Pin Register */ -#define PCIMGR 0x3E /* PCI Min_Gnt Register */ -#define PCIMLR 0x3F /* PCI Max_Lat Register */ +#define PCIILR 0x3F /* PCI Interrupt Line Register */ +#define PCIIPR 0x3E /* PCI Interrupt Pin Register */ +#define PCIMGR 0x3D /* PCI Min_Gnt Register */ +#define PCIMLR 0x3C /* PCI Max_Lat Register */ #define PMCAPID 0x40 /* Power Management Capability ID */ #define PMNEXT 0x41 /* Power Management Next Capability Pointer */ @@ -79,41 +86,41 @@ /* * bit definitions for PCICSR lower half (Command Register) */ -#define PCICSR_IO (1 << 0) /* if set: device responds to I/O space accesses */ -#define PCICSR_MEMORY (1 << 1) /* if set: device responds to memory space accesses */ -#define PCICSR_MASTER (1 << 2) /* if set: device is master */ -#define PCICSR_SPECIAL (1 << 3) /* if set: device reacts on special cycles */ -#define PCICSR_MEMWI (1 << 4) /* if set: device deals with memory write and invalidate */ -#define PCICSR_VGA_SNOOP (1 << 5) /* if set: capable of palette snoop */ -#define PCICSR_PERR (1 << 6) /* if set: reacts to parity errors */ -#define PCICSR_STEPPING (1 << 7) /* if set: stepping enabled */ -#define PCICSR_SERR (1 << 8) /* if set: SERR pin enabled */ -#define PCICSR_FAST_BTOB_E (1 << 9) /* if set: fast back-to-back enabled */ -#define PCICSR_INT_DISABLE (1 << 10) /* if set: disable interrupts from this device */ +#define PCICR_IO (1 << 0) /* if set: device responds to I/O space accesses */ +#define PCICR_MEMORY (1 << 1) /* if set: device responds to memory space accesses */ +#define PCICR_MASTER (1 << 2) /* if set: device is master */ +#define PCICR_SPECIAL (1 << 3) /* if set: device reacts on special cycles */ +#define PCICR_MEMWI (1 << 4) /* if set: device deals with memory write and invalidate */ +#define PCICR_VGA_SNOOP (1 << 5) /* if set: capable of palette snoop */ +#define PCICR_PERR (1 << 6) /* if set: reacts to parity errors */ +#define PCICR_STEPPING (1 << 7) /* if set: stepping enabled */ +#define PCICR_SERR (1 << 8) /* if set: SERR pin enabled */ +#define PCICR_FAST_BTOB_E (1 << 9) /* if set: fast back-to-back enabled */ +#define PCICR_INT_DISABLE (1 << 10) /* if set: disable interrupts from this device */ /* * bit definitions for PCICSR upper half (Status Register) */ -#define PCICSR_INTERRUPT (1 << 3) /* device requested interrupt */ -#define PCICSR_CAPABILITIES (1 << 4) /* if set, capabilities pointer is valid */ -#define PCICSR_66MHZ (1 << 5) /* 66 MHz capable */ -#define PCICSR_UDF (1 << 6) /* UDF supported */ -#define PCICSR_FAST_BTOB (1 << 7) /* Fast back-to-back enabled */ -#define PCICSR_DPARITY_ERROR (1 << 8) /* data parity error detected */ +#define PCISR_INTERRUPT (1 << 3) /* device requested interrupt */ +#define PCISR_CAPABILITIES (1 << 4) /* if set, capabilities pointer is valid */ +#define PCISR_66MHZ (1 << 5) /* 66 MHz capable */ +#define PCISR_UDF (1 << 6) /* UDF supported */ +#define PCISR_FAST_BTOB (1 << 7) /* Fast back-to-back enabled */ +#define PCISR_DPARITY_ERROR (1 << 8) /* data parity error detected */ -#define PCICSR_T_ABORT_S (1 << 11) /* target abort signaled */ -#define PCICSR_T_ABORT_R (1 << 12) /* target abort received */ -#define PCICSR_M_ABORT_R (1 << 13) /* master abort received */ -#define PCICSR_S_ERROR_S (1 << 14) /* system error signaled */ -#define PCICSR_PARITY_ERR (1 << 15) /* data parity error */ +#define PCISR_T_ABORT_S (1 << 11) /* target abort signaled */ +#define PCISR_T_ABORT_R (1 << 12) /* target abort received */ +#define PCISR_M_ABORT_R (1 << 13) /* master abort received */ +#define PCISR_S_ERROR_S (1 << 14) /* system error signaled */ +#define PCISR_PARITY_ERR (1 << 15) /* data parity error */ /* Header type 1 (PCI-to-PCI bridges) */ -#define PCI_PRIMARY_BUS 0x18 /* Primary bus number */ -#define PCI_SECONDARY_BUS 0x19 /* Secondary bus number */ -#define PCI_SUBORDINATE_BUS 0x1A /* Highest bus number behind the bridge */ -#define PCI_SEC_LATENCY_TIMER 0x1B /* Latency timer for secondary interface */ +#define PCI_PRIMARY_BUS 0x1B /* Primary bus number */ +#define PCI_SECONDARY_BUS 0x1A /* Secondary bus number */ +#define PCI_SUBORDINATE_BUS 0x19 /* Highest bus number behind the bridge */ +#define PCI_SEC_LATENCY_TIMER 0x18 /* Latency timer for secondary interface */ #define PCI_IO_BASE 0x1C /* I/O range behind the bridge */ #define PCI_IO_LIMIT 0x1D -#define PCI_SEC_STATUS 0x1E /* Secondary status register, only bit 14 used */ +#define PCI_SEC_STATUS 0x1C /* Secondary status register, only bit 14 used */ #define PCI_MEMORY_BASE 0x20 /* Memory range behind */ #define PCI_MEMORY_LIMIT 0x22 #define PCI_PREF_MEMORY_BASE 0x24 /* Prefetchable memory range behind */ @@ -184,28 +191,28 @@ typedef struct /* structure of address conversion */ /* PCI configuration space macros */ /* register 0x00 macros */ -#define PCI_VENDOR_ID(i) swpw((uint16_t)(((i) & 0xffff0000) >> 16)) -#define PCI_DEVICE_ID(i) swpw((uint16_t) ((i) & 0xffff)) +#define PCI_DEVICE_ID(i) (uint16_t)(((i) & 0xffff0000) >> 16) +#define PCI_VENDOR_ID(i) (uint16_t) ((i) & 0xffff) /* register 0x04 macros */ #define PCI_STATUS(i) ((i) & 0xffff) #define PCI_COMMAND(i) (((i) >> 16) & 0xffff) /* register 0x08 macros */ -#define PCI_CLASS_CODE(i) ((swpl((i)) & 0xff000000) >> 24) -#define PCI_SUBCLASS(i) ((swpl((i)) & 0xffff0000) >> 16) -#define PCI_PROG_IF(i) ((swpl((i)) & 0x0000ff00) >> 8) -#define PCI_REVISION_ID(i) ((swpl((i)) & 0x000000ff)) +#define PCI_CLASS_CODE(i) (((i) & 0xff000000) >> 24) +#define PCI_SUBCLASS(i) (((i) & 0x00ff0000) >> 16) +#define PCI_PROG_IF(i) (((i) & 0x0000ff00) >> 8) +#define PCI_REVISION_ID(i) (((i) & 0x000000ff)) /* register 0x0c macros */ -#define PCI_BIST(i) ((swpl((i)) & 0xff000000) >> 24) -#define PCI_HEADER_TYPE(i) ((swpl((i)) & 0x00ff0000) >> 16) -#define PCI_LAT_TIMER(i) ((swpl((i)) & 0x0000ff00) >> 8) -#define PCI_CACHELINE_SIZE(i) ((swpl((i)) & 0x000000ff)) +#define PCI_BIST(i) (((i) & 0xff000000) >> 24) +#define PCI_HEADER_TYPE(i) (((i) & 0x00ff0000) >> 16) +#define PCI_LAT_TIMER(i) (((i) & 0x0000ff00) >> 8) +#define PCI_CACHELINE_SIZE(i) (((i) & 0x000000ff)) /* register 0x2c macros */ -#define PCI_SUBSYS_ID(i) (((i) & 0xffff0000) >> 16) -#define PCI_SUBSYS_VID(i) (((i) & 0xffff)) +#define PCI_SUBSYS_ID(i) ((i) & 0xffff0000) >> 16) +#define PCI_SUBSYS_VID(i) ((i) & 0xffff)) /* register 0x34 macros */ #define PCI_CAPABILITIES(i) ((i) & 0xff) @@ -222,6 +229,17 @@ typedef struct /* structure of address conversion */ #define PCI_IOBAR_ADR(i) (((i) & 0xfffffffc)) #define PCI_MEMBAR_ADR(i) (((i) & 0xfffffff0)) +extern void init_eport(void); +extern void init_xlbus_arbiter(void); +extern void init_pci(void); +extern int pci_handle2index(int32_t handle); + +extern int32_t pci_find_device(uint16_t device_id, uint16_t vendor_id, int index); +extern int32_t pci_find_classcode(uint32_t classcode, int index); + +extern int32_t pci_get_interrupt_cause(void); +extern int32_t pci_call_interrupt_chain(int32_t handle, int32_t data); + /* * match bits for pci_find_classcode() */ @@ -229,6 +247,104 @@ typedef struct /* structure of address conversion */ #define PCI_FIND_SUB_CLASS (1 << 25) #define PCI_FIND_PROG_IF (1 << 24) +extern uint32_t pci_read_config_longword(int32_t handle, int offset); +extern uint16_t pci_read_config_word(int32_t handle, int offset); +extern uint8_t pci_read_config_byte(int32_t handle, int offset); + +extern int32_t pci_write_config_longword(int32_t handle, int offset, uint32_t value); +extern int32_t pci_write_config_word(int32_t handle, int offset, uint16_t value); +extern int32_t pci_write_config_byte(int32_t handle, int offset, uint8_t value); + +typedef int (*pci_interrupt_handler)(int param); + +extern int32_t pci_hook_interrupt(int32_t handle, void *handler, void *parameter); +extern int32_t pci_unhook_interrupt(int32_t handle); + +extern struct pci_rd *pci_get_resource(int32_t handle); + +/* + * Not implemented PCI_BIOS functions + */ +extern uint8_t pci_fast_read_config_byte(int32_t handle, uint16_t reg); +extern uint16_t pci_fast_read_config_word(int32_t handle, uint16_t reg); +extern uint32_t pci_fast_read_config_longword(int32_t handle, uint16_t reg); +extern int32_t pci_special_cycle(uint16_t bus, uint32_t data); +extern int32_t pci_get_routing(int32_t handle); +extern int32_t pci_set_interrupt(int32_t handle); +extern int32_t pci_get_card_used(int32_t handle, uint32_t *address); +extern int32_t pci_set_card_used(int32_t handle, uint32_t *callback); +extern int32_t pci_read_mem_byte(int32_t handle, uint32_t offset, uint8_t *address); +extern int32_t pci_read_mem_word(int32_t handle, uint32_t offset, uint16_t *address); +extern int32_t pci_read_mem_longword(int32_t handle, uint32_t offset, uint32_t *address); +extern uint8_t pci_fast_read_mem_byte(int32_t handle, uint32_t offset); +extern uint16_t pci_fast_read_mem_word(int32_t handle, uint32_t offset); +extern uint32_t pci_fast_read_mem_longword(int32_t handle, uint32_t offset); +extern int32_t pci_write_mem_byte(int32_t handle, uint32_t offset, uint16_t val); +extern int32_t pci_write_mem_word(int32_t handle, uint32_t offset, uint16_t val); +extern int32_t pci_write_mem_longword(int32_t handle, uint32_t offset, uint32_t val); +extern int32_t pci_read_io_byte(int32_t handle, uint32_t offset, uint8_t *address); +extern int32_t pci_read_io_word(int32_t handle, uint32_t offset, uint16_t *address); +extern int32_t pci_read_io_longword(int32_t handle, uint32_t offset, uint32_t *address); +extern uint8_t pci_fast_read_io_byte(int32_t handle, uint32_t offset); +extern uint16_t pci_fast_read_io_word(int32_t handle, uint32_t offset); +extern uint32_t pci_fast_read_io_longword(int32_t handle, uint32_t offset); +extern int32_t pci_write_io_byte(int32_t handle, uint32_t offset, uint16_t val); +extern int32_t pci_write_io_word(int32_t handle, uint32_t offset, uint16_t val); +extern int32_t pci_write_io_longword(int32_t handle, uint32_t offset, uint32_t val); +extern int32_t pci_get_machine_id(void); +extern int32_t pci_get_pagesize(void); +extern int32_t pci_virt_to_bus(int32_t handle, uint32_t address, PCI_CONV_ADR *pointer); +extern int32_t pci_bus_to_virt(int32_t handle, uint32_t address, PCI_CONV_ADR *pointer); +extern int32_t pci_virt_to_phys(uint32_t address, PCI_CONV_ADR *pointer); +extern int32_t pci_phys_to_virt(uint32_t address, PCI_CONV_ADR *pointer); + +/* + * prototypes for PCI wrapper routines + */ +extern int32_t wrapper_find_pci_device(uint32_t id, uint16_t index); +extern int32_t wrapper_find_pci_classcode(uint32_t class, uint16_t index); +extern int32_t wrapper_read_config_byte(int32_t handle, uint16_t reg, uint8_t *address); +extern int32_t wrapper_read_config_word(int32_t handle, uint16_t reg, uint16_t *address); +extern int32_t wrapper_read_config_longword(int32_t handle, uint16_t reg, uint32_t *address); +extern uint8_t wrapper_fast_read_config_byte(int32_t handle, uint16_t reg); +extern uint16_t wrapper_fast_read_config_word(int32_t handle, uint16_t reg); +extern uint32_t wrapper_fast_read_config_longword(int32_t handle, uint16_t reg); +extern int32_t wrapper_write_config_byte(int32_t handle, uint16_t reg, uint16_t val); +extern int32_t wrapper_write_config_word(int32_t handle, uint16_t reg, uint16_t val); +extern int32_t wrapper_write_config_longword(int32_t handle, uint16_t reg, uint32_t val); +extern int32_t wrapper_hook_interrupt(int32_t handle, uint32_t *routine, uint32_t *parameter); +extern int32_t wrapper_unhook_interrupt(int32_t handle); +extern int32_t wrapper_special_cycle(uint16_t bus, uint32_t data); +extern int32_t wrapper_get_routing(int32_t handle); +extern int32_t wrapper_set_interrupt(int32_t handle); +extern int32_t wrapper_get_resource(int32_t handle); +extern int32_t wrapper_get_card_used(int32_t handle, uint32_t *address); +extern int32_t wrapper_set_card_used(int32_t handle, uint32_t *callback); +extern int32_t wrapper_read_mem_byte(int32_t handle, uint32_t offset, uint8_t *address); +extern int32_t wrapper_read_mem_word(int32_t handle, uint32_t offset, uint16_t *address); +extern int32_t wrapper_read_mem_longword(int32_t handle, uint32_t offset, uint32_t *address); +extern uint8_t wrapper_fast_read_mem_byte(int32_t handle, uint32_t offset); +extern uint16_t wrapper_fast_read_mem_word(int32_t handle, uint32_t offset); +extern uint32_t wrapper_fast_read_mem_longword(int32_t handle, uint32_t offset); +extern int32_t wrapper_write_mem_byte(int32_t handle, uint32_t offset, uint16_t val); +extern int32_t wrapper_write_mem_word(int32_t handle, uint32_t offset, uint16_t val); +extern int32_t wrapper_write_mem_longword(int32_t handle, uint32_t offset, uint32_t val); +extern int32_t wrapper_read_io_byte(int32_t handle, uint32_t offset, uint8_t *address); +extern int32_t wrapper_read_io_word(int32_t handle, uint32_t offset, uint16_t *address); +extern int32_t wrapper_read_io_longword(int32_t handle, uint32_t offset, uint32_t *address); +extern uint8_t wrapper_fast_read_io_byte(int32_t handle, uint32_t offset); +extern uint16_t wrapper_fast_read_io_word(int32_t handle, uint32_t offset); +extern uint32_t wrapper_fast_read_io_longword(int32_t handle, uint32_t offset); +extern int32_t wrapper_write_io_byte(int32_t handle, uint32_t offset, uint16_t val); +extern int32_t wrapper_write_io_word(int32_t handle, uint32_t offset, uint16_t val); +extern int32_t wrapper_write_io_longword(int32_t handle, uint32_t offset, uint32_t val); +extern int32_t wrapper_get_machine_id(void); +extern int32_t wrapper_get_pagesize(void); +extern int32_t wrapper_virt_to_bus(int32_t handle, uint32_t address, PCI_CONV_ADR *pointer); +extern int32_t wrapper_bus_to_virt(int32_t handle, uint32_t address, PCI_CONV_ADR *pointer); +extern int32_t wrapper_virt_to_phys(uint32_t address, PCI_CONV_ADR *pointer); +extern int32_t wrapper_phys_to_virt(uint32_t address, PCI_CONV_ADR *pointer); + #define PCI_MK_CONF_ADDR(bus, device, function) (MCF_PCI_PCICAR_E | \ ((bus) << 16) | \ ((device << 8) | \ @@ -239,4 +355,6 @@ typedef struct /* structure of address conversion */ #define PCI_DEVICE_FROM_HANDLE(h) (((h) & 0xf8) >> 3) #define PCI_FUNCTION_FROM_HANDLE(h) (((h) & 0x7)) +extern void pci_dump_registers(int32_t handle); + #endif /* _PCI_H_ */ diff --git a/BaS_gcc/tos/pci_test/include/util.h b/BaS_gcc/tos/pci_test/include/util.h new file mode 100644 index 0000000..355c1ac --- /dev/null +++ b/BaS_gcc/tos/pci_test/include/util.h @@ -0,0 +1,128 @@ +/* + * util.h + * + * Byteswapping macros lend from EmuTOS sources + * + * This file is part of BaS_gcc. + * + * BaS_gcc 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 3 of the License, or + * (at your option) any later version. + * + * BaS_gcc 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 BaS_gcc. If not, see . + * + * Created on: 27.10.2013 + * Author: mfro + */ + +#ifndef UTIL_H_ +#define UTIL_H_ + +#include + +#define NOP() __asm__ __volatile__("nop\n\t" : : : "memory") + +/* + * uint16_t swpw(uint16_t val); + * swap endianess of val, 16 bits only. + */ +static inline uint16_t swpw(uint16_t w) +{ + return (w << 8) | (w >> 8); +} + +/* + * uint32_t swpl(uint32_t val); + * swap endianess of val, 32 bits only. + * e.g. ABCD => DCBA + */ +static inline uint32_t swpl(uint32_t l) +{ + return ((l & 0xff000000) >> 24) | ((l & 0x00ff0000) >> 8) | + ((l & 0x0000ff00) << 8) | (l << 24); +} + + +/* + * WORD swpw2(ULONG val); + * swap endianness of val, treated as two 16-bit words. + * e.g. ABCD => BADC + */ + +#define swpw2(a) \ + __extension__ \ + ({unsigned long _tmp; \ + __asm__ __volatile__ \ + ("move.b (%1),%0\n\t" \ + "move.b 1(%1),(%1)\n\t" \ + "move.b %0,1(%1)\n\t" \ + "move.b 2(%1),%0\n\t" \ + "move.b 3(%1),2(%1)\n\t" \ + "move.b %0,3(%1)" \ + : "=d"(_tmp) /* outputs */ \ + : "a"(&a) /* inputs */ \ + : "cc", "memory" /* clobbered */ \ + ); \ + }) + +/* + * WORD set_sr(WORD new); + * sets sr to the new value, and return the old sr value + */ + +#define set_sr(a) \ +__extension__ \ +({short _r, _a = (a); \ + __asm__ __volatile__ \ + ("move.w sr,%0\n\t" \ + "move.w %1,sr" \ + : "=&d"(_r) /* outputs */ \ + : "nd"(_a) /* inputs */ \ + : "cc", "memory" /* clobbered */ \ + ); \ + _r; \ +}) + + +/* + * WORD get_sr(void); + * returns the current value of sr. + */ + +#define get_sr() \ +__extension__ \ +({short _r; \ + __asm__ volatile \ + ("move.w sr,%0" \ + : "=dm"(_r) /* outputs */ \ + : /* inputs */ \ + : "cc", "memory" /* clobbered */ \ + ); \ + _r; \ +}) + + + +/* + * void regsafe_call(void *addr) + * Saves all registers to the stack, calls the function + * that addr points to, and restores the registers afterwards. + */ +#define regsafe_call(addr) \ +__extension__ \ +({__asm__ volatile ("lea -60(sp),sp\n\t" \ + "movem.l d0-d7/a0-a6,(sp)"); \ + ((void (*) (void)) addr)(); \ + __asm__ volatile ("movem.l (sp),d0-d7/a0-a6\n\t" \ + "lea 60(sp),sp"); \ +}) + + +#endif /* UTIL_H_ */ diff --git a/BaS_gcc/tos/pci_test/sources/bas_printf.c b/BaS_gcc/tos/pci_test/sources/bas_printf.c deleted file mode 100644 index d0d2f30..0000000 --- a/BaS_gcc/tos/pci_test/sources/bas_printf.c +++ /dev/null @@ -1,456 +0,0 @@ -/* - * tc.printf.c: A public-domain, minimal printf/sprintf routine that prints - * through the putchar() routine. Feel free to use for - * anything... -- 7/17/87 Paul Placeway - */ -/*- - * Copyright (c) 1980, 1991 The Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include -#include "MCF5475.h" -#include "bas_printf.h" -#include "bas_string.h" - -/* - * Lexical definitions. - * - * All lexical space is allocated dynamically. - * The eighth/sixteenth bit of characters is used to prevent recognition, - * and eventually stripped. - */ -#define META 0200 -#define ASCII 0177 -#define QUOTE ((char) 0200) /* Eighth char bit used for 'ing */ -#define TRIM 0177 /* Mask to strip quote bit */ -#define UNDER 0000000 /* No extra bits to do both */ -#define BOLD 0000000 /* Bold flag */ -#define STANDOUT META /* Standout flag */ -#define LITERAL 0000000 /* Literal character flag */ -#define ATTRIBUTES 0200 /* The bits used for attributes */ -#define CHAR 0000177 /* Mask to mask out the character */ - -#define INF 32766 /* should be bigger than any field to print */ - -static char snil[] = "(nil)"; - -void xputchar(int c) -{ - __asm__ __volatile__ - ( - ".extern printf_helper\n\t" - "move.b %0,d0\n\t" - "bsr printf_helper\n\t" - /* output */: - /* input */: "r" (c) - /* clobber */: "d0","d2","a0","memory" - ); -} - -static void doprnt(void (*addchar)(int), const char *sfmt, va_list ap) -{ - char buf[128]; - char *bp; - const char *f; - float flt; - long l; - unsigned long u; - int i; - int fmt; - unsigned char pad = ' '; - int flush_left = 0; - int f_width = 0; - int prec = INF; - int hash = 0; - int do_long = 0; - int sign = 0; - int attributes = 0; - - f = sfmt; - for (; *f; f++) - { - if (*f != '%') - { - /* then just out the char */ - (*addchar)((int) (((unsigned char) *f) | attributes)); - } - else - { - f++; /* skip the % */ - - if (*f == '-') - { /* minus: flush left */ - flush_left = 1; - f++; - } - - if (*f == '0' || *f == '.') - { - /* padding with 0 rather than blank */ - pad = '0'; - f++; - } - if (*f == '*') - { - /* field width */ - f_width = va_arg(ap, int); - f++; - } - else if (isdigit((unsigned char)*f)) - { - f_width = atoi(f); - while (isdigit((unsigned char)*f)) - f++; /* skip the digits */ - } - - if (*f == '.') - { /* precision */ - f++; - if (*f == '*') - { - prec = va_arg(ap, int); - f++; - } - else if (isdigit((unsigned char)*f)) - { - prec = atoi(f); - while (isdigit((unsigned char)*f)) - f++; /* skip the digits */ - } - } - - if (*f == '#') - { /* alternate form */ - hash = 1; - f++; - } - - if (*f == 'l') - { /* long format */ - do_long++; - f++; - if (*f == 'l') - { - do_long++; - f++; - } - } - - fmt = (unsigned char) *f; - if (fmt != 'S' && fmt != 'Q' && isupper(fmt)) - { - do_long = 1; - fmt = tolower(fmt); - } - bp = buf; - switch (fmt) - { /* do the format */ - case 'd': - switch (do_long) - { - case 0: - l = (long) (va_arg(ap, int)); - break; - case 1: - default: - l = va_arg(ap, long); - break; - } - - if (l < 0) - { - sign = 1; - l = -l; - } - do - { - *bp++ = (char) (l % 10) + '0'; - } while ((l /= 10) > 0); - if (sign) - *bp++ = '-'; - f_width = f_width - (int) (bp - buf); - if (!flush_left) - while (f_width-- > 0) - (*addchar)((int) (pad | attributes)); - for (bp--; bp >= buf; bp--) - (*addchar)((int) (((unsigned char) *bp) | attributes)); - if (flush_left) - while (f_width-- > 0) - (*addchar)((int) (' ' | attributes)); - break; - - case 'f': - /* this is actually more than stupid, but does work for now */ - flt = (float) (va_arg(ap, double)); /* beware: va_arg() extends float to double! */ - if (flt < 0) - { - sign = 1; - flt = -flt; - } - { - int quotient, remainder; - - quotient = (int) flt; - remainder = (flt - quotient) * 10E5; - - for (i = 0; i < 6; i++) - { - *bp++ = (char) (remainder % 10) + '0'; - remainder /= 10; - } - *bp++ = '.'; - do - { - *bp++ = (char) (quotient % 10) + '0'; - } while ((quotient /= 10) > 0); - if (sign) - *bp++ = '-'; - f_width = f_width - (int) (bp - buf); - if (!flush_left) - while (f_width-- > 0) - (*addchar)((int) (pad | attributes)); - for (bp--; bp >= buf; bp--) - (*addchar)((int) (((unsigned char) *bp) | attributes)); - if (flush_left) - while (f_width-- > 0) - (*addchar)((int) (' ' | attributes)); - } - break; - - case 'p': - do_long = 1; - hash = 1; - fmt = 'x'; - /* no break */ - case 'o': - case 'x': - case 'u': - switch (do_long) - { - case 0: - u = (unsigned long) (va_arg(ap, unsigned int)); - break; - case 1: - default: - u = va_arg(ap, unsigned long); - break; - } - if (fmt == 'u') - { /* unsigned decimal */ - do - { - *bp++ = (char) (u % 10) + '0'; - } while ((u /= 10) > 0); - } - else if (fmt == 'o') - { /* octal */ - do - { - *bp++ = (char) (u % 8) + '0'; - } while ((u /= 8) > 0); - if (hash) - *bp++ = '0'; - } - else if (fmt == 'x') - { /* hex */ - do - { - i = (int) (u % 16); - if (i < 10) - *bp++ = i + '0'; - else - *bp++ = i - 10 + 'a'; - } while ((u /= 16) > 0); - if (hash) - { - *bp++ = 'x'; - *bp++ = '0'; - } - } - i = f_width - (int) (bp - buf); - if (!flush_left) - while (i-- > 0) - (*addchar)((int) (pad | attributes)); - for (bp--; bp >= buf; bp--) - (*addchar)((int) (((unsigned char) *bp) | attributes)); - if (flush_left) - while (i-- > 0) - (*addchar)((int) (' ' | attributes)); - break; - - case 'c': - i = va_arg(ap, int); - (*addchar)((int) (i | attributes)); - break; - - case 'S': - case 'Q': - case 's': - case 'q': - bp = va_arg(ap, char *); - if (!bp) - bp = snil; - f_width = f_width - strlen((char *) bp); - if (!flush_left) - while (f_width-- > 0) - (*addchar)((int) (pad | attributes)); - for (i = 0; *bp && i < prec; i++) - { - if (fmt == 'q' && (*bp & QUOTE)) - (*addchar)((int) ('\\' | attributes)); - (*addchar)( - (int) (((unsigned char) *bp & TRIM) | attributes)); - bp++; - } - if (flush_left) - while (f_width-- > 0) - (*addchar)((int) (' ' | attributes)); - break; - - case 'a': - attributes = va_arg(ap, int); - break; - - case '%': - (*addchar)((int) ('%' | attributes)); - break; - - default: - break; - } - flush_left = 0, f_width = 0, prec = INF, hash = 0, do_long = 0; - sign = 0; - pad = ' '; - } - } -} - -static char *xstring, *xestring; - -void xaddchar(int c) -{ - if (xestring == xstring) - *xstring = '\0'; - else - *xstring++ = (char) c; -} - -int sprintf(char *str, const char *format, ...) -{ - va_list va; - va_start(va, format); - - xstring = str; - - doprnt(xaddchar, format, va); - va_end(va); - *xstring++ = '\0'; - - return 0; -} - -void xsnprintf(char *str, size_t size, const char *fmt, ...) -{ - va_list va; - va_start(va, fmt); - - xstring = str; - xestring = str + size - 1; - doprnt(xaddchar, fmt, va); - va_end(va); - *xstring++ = '\0'; -} - -void xprintf(const char *fmt, ...) -{ - va_list va; - va_start(va, fmt); - doprnt(xputchar, fmt, va); - va_end(va); -} - -void xvprintf(const char *fmt, va_list va) -{ - doprnt(xputchar, fmt, va); -} - -void xvsnprintf(char *str, size_t size, const char *fmt, va_list va) -{ - xstring = str; - xestring = str + size - 1; - doprnt(xaddchar, fmt, va); - *xstring++ = '\0'; -} - - -void display_progress() -{ - static int _progress_index; - char progress_char[] = "|/-\\"; - - xputchar(progress_char[_progress_index++ % strlen(progress_char)]); - xputchar('\r'); -} - -void hexdump(uint8_t buffer[], int size) -{ - int i; - int line = 0; - uint8_t *bp = buffer; - - while (bp < buffer + size) { - uint8_t *lbp = bp; - - xprintf("%08x ", line); - - for (i = 0; i < 16; i++) { - if (bp + i > buffer + size) { - break; - } - xprintf("%02x ", (uint8_t) *lbp++); - } - - lbp = bp; - for (i = 0; i < 16; i++) { - int8_t c = *lbp++; - - if (bp + i > buffer + size) { - break; - } - if (c > ' ' && c < '~') { - xprintf("%c", c); - } else { - xprintf("."); - } - } - xprintf("\r\n"); - - bp += 16; - line += 16; - } -} diff --git a/BaS_gcc/tos/pci_test/sources/bas_string.c b/BaS_gcc/tos/pci_test/sources/bas_string.c deleted file mode 100644 index b8d6a0f..0000000 --- a/BaS_gcc/tos/pci_test/sources/bas_string.c +++ /dev/null @@ -1,156 +0,0 @@ -/* - * bas_string.c - * - * This file is part of BaS_gcc. - * - * BaS_gcc 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 3 of the License, or - * (at your option) any later version. - * - * BaS_gcc 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 BaS_gcc. If not, see . - * - * Created on: 26.02.2013 - * Author: Markus Fröschle - */ - -#include "bas_types.h" -#include -#include "bas_string.h" - -void *memcpy(void *dst, const void *src, size_t n) -{ - uint8_t *to = dst; - - while (to < (uint8_t *) dst + n) - *to++ = * (uint8_t *) src++; - - return dst; -} - -void bzero(void *s, size_t n) -{ - size_t i; - - for (i = 0; i < n; i++) - ((unsigned char *) s)[i] = '\0'; -} - -void *memset(void *s, int c, size_t n) -{ - uint8_t *dst = s; - - do - { - *dst++ = c; - } while ((dst - (uint8_t *) s) < n); - - return s; -} - - -int memcmp(const void *s1, const void *s2, size_t max) -{ - int i; - int cmp; - - for (i = 0; i < max; i++) - { - cmp = (* (const char *) s1 - * (const char *) s2); - if (cmp != 0) return cmp; - } - return cmp; -} - -int strcmp(const char *s1, const char *s2) -{ - int i; - int cmp; - - for (i = 0; *s1++ && *s2++; i++) - { - cmp = (*s1 - *s2); - if (cmp != 0) return cmp; - } - return cmp; -} - -int strncmp(const char *s1, const char *s2, size_t max) -{ - int i; - int cmp; - - for (i = 0; i < max && *s1++ && *s2++; i++); - { - cmp = (*s1 - *s2); - if (cmp != 0) return cmp; - } - return cmp; -} - -char *strcpy(char *dst, const char *src) -{ - char *ptr = dst; - - while ((*dst++ = *src++) != '\0'); - return ptr; -} - -char *strncpy(char *dst, const char *src, size_t max) -{ - char *ptr = dst; - - while ((*dst++ = *src++) != '\0' && max-- >= 0); - return ptr; -} - -int atoi(const char *c) -{ - int value = 0; - while (isdigit(*c)) - { - value *= 10; - value += (int) (*c - '0'); - c++; - } - return value; -} - -size_t strlen(const char *s) -{ - const char *start = s; - - while (*s++); - - return s - start - 1; -} - - -char *strcat(char *dst, const char *src) -{ - char *ret = dst; - dst = &dst[strlen(dst)]; - while ((*dst++ = *src++) != '\0'); - return ret; -} - -char *strncat(char *dst, const char *src, size_t max) -{ - size_t i; - char *ret = dst; - - dst = &dst[strlen(dst)]; - for (i = 0; i < max && *src; i++) - { - *dst++ = *src++; - } - *dst++ = '\0'; - - return ret; -} diff --git a/BaS_gcc/tos/pci_test/sources/pci_test.c b/BaS_gcc/tos/pci_test/sources/pci_test.c index 1e642d4..6ec6d01 100644 --- a/BaS_gcc/tos/pci_test/sources/pci_test.c +++ b/BaS_gcc/tos/pci_test/sources/pci_test.c @@ -1,9 +1,9 @@ #include +#include #include #include #include -#include "bas_printf.h" #include "MCF5475.h" #include "driver_vec.h" #include "pci.h" @@ -15,17 +15,97 @@ volatile int32_t time, start, end; int i; -#define swpw(a) ((a) >> 8 | (a) << 8) +/* + * PCI device class descriptions displayed during PCI bus scan + */ +static struct pci_class +{ + int classcode; + char *description; +} pci_classes[] = +{ + { 0x00, "device was built prior definition of the class code field" }, + { 0x01, "Mass Storage Controller" }, + { 0x02, "Network Controller" }, + { 0x03, "Display Controller" }, + { 0x04, "Multimedia Controller" }, + { 0x05, "Memory Controller" }, + { 0x06, "Bridge Device" }, + { 0x07, "Simple Communication Controller" }, + { 0x08, "Base System Peripherial" }, + { 0x09, "Input Device" }, + { 0x0a, "Docking Station" }, + { 0x0b, "Processor" }, + { 0x0c, "Serial Bus Controller" }, + { 0x0d, "Wireless Controller" }, + { 0x0e, "Intelligent I/O Controller" }, + { 0x0f, "Satellite Communication Controller" }, + { 0x10, "Encryption/Decryption Controller" }, + { 0x11, "Data Acquisition and Signal Processing Controller" }, + { 0xff, "Device does not fit any defined class" }, +}; +static int num_pci_classes = sizeof(pci_classes) / sizeof(struct pci_class); + +/* + * retrieve device class (in cleartext) for a PCI classcode + */ +static char *device_class(int classcode) +{ + int i; + + for (i = 0; i < num_pci_classes; i++) + { + if (pci_classes[i].classcode == classcode) + { + return pci_classes[i].description; + } + } + return "unknown device class"; +} + +void hexdump(uint8_t buffer[], int size) +{ + int i; + int line = 0; + uint8_t *bp = buffer; + + while (bp < buffer + size) { + uint8_t *lbp = bp; + + printf("%08lx ", (uintptr_t) buffer + line); + + for (i = 0; i < 16; i++) { + if (bp + i > buffer + size) { + break; + } + printf("%02x ", (uint8_t) *lbp++); + } + + lbp = bp; + for (i = 0; i < 16; i++) { + int8_t c = *lbp++; + + if (bp + i > buffer + size) { + break; + } + if (c > ' ' && c < '~') { + printf("%c", c); + } else { + printf("."); + } + } + printf("\r\n"); + + bp += 16; + line += 16; + } +} void do_tests(struct pci_native_driver_interface *pci) { #define PCI_READ_CONFIG_LONGWORD(a, b) pci->pci_read_config_longword(a, b) #define PCI_WRITE_CONFIG_LONGWORD(a, b) pci->pci_write_config_longword(a, b) - start = MCF_SLT0_SCNT; - hexdump((uint8_t *) 0, 64); - end = MCF_SLT0_SCNT; - time = (start - end) / (SYSCLK / 1000) / 1000; printf("enumerate PCI devices\r\n"); @@ -42,20 +122,69 @@ void do_tests(struct pci_native_driver_interface *pci) { uint32_t value; - value = (*pci->pci_read_config_longword)(handle, PCIIDR); + value = swpl((*pci->pci_read_config_longword)(handle, PCIIDR)); - printf(" %02x | %02x | %02x |%04x|%04x|%04x| (0x%02x)\r\n", - (char) PCI_BUS_FROM_HANDLE(handle), - (char) PCI_DEVICE_FROM_HANDLE(handle), - (char) PCI_FUNCTION_FROM_HANDLE(handle), - (short) PCI_VENDOR_ID(value), (short) PCI_DEVICE_ID(value), - (unsigned char) handle, - (char) (*pci->pci_read_config_byte)(handle, PCICCR)); + printf(" %02x | %02x | %02x |%04x|%04x|%04x| %s (0x%02x, 0x%04x)\r\n", + PCI_BUS_FROM_HANDLE(handle), + PCI_DEVICE_FROM_HANDLE(handle), + PCI_FUNCTION_FROM_HANDLE(handle), + PCI_VENDOR_ID(value), PCI_DEVICE_ID(value), + handle, + device_class((*pci->pci_read_config_byte)(handle, PCI_LANESWAP_B(PCICCR))), + (*pci->pci_read_config_byte)(handle, PCI_LANESWAP_B(PCICCR)), + (*pci->pci_read_config_word)(handle, PCI_LANESWAP_W(PCICCR))); handle = (*pci->pci_find_device)(0x0, 0xFFFF, ++index); } + + struct pci_rd *rd; + int flags; + + handle = 0xa0; + + rd = (*pci->pci_get_resource)(handle); /* get resource descriptor for ATI graphics card */ + if (rd != NULL) + { + do + { + flags = rd->flags; + + printf("Start address: 0x%08lx\r\n", rd->start); + printf("Length: 0x%08lx\r\n", rd->length); + printf("Offset: 0x%08lx\r\n", rd->offset); + printf("DMA offset: 0x%08lx\r\n", rd->dmaoffset); + printf("FLAGS: %s%s%s%s%s%s%s\r\n", + flags & FLG_IO ? "FLG_IO, " : "", + flags & FLG_ROM ? "FLG_ROM, " : "", + flags & FLG_8BIT ? "FLG_8BIT, " : "", + flags & FLG_16BIT ? "FLG_16BIT, " : "", + flags & FLG_32BIT ? "FLG_32BIT, " : "", + (flags & FLG_ENDMASK) == ORD_MOTOROLA ? "ORD_MOTOROLA" : + (flags & FLG_ENDMASK) == ORD_INTEL_AS ? "ORD_INTEL_AS" : + (flags & FLG_ENDMASK) == ORD_INTEL_LS ? "ORD_INTEL_LS" : + (flags & FLG_ENDMASK) == ORD_UNKNOWN ? "ORD_UNKNOWN" : + "", ""); + printf("\r\n"); + + if (rd->start != 0L) + { + hexdump((uint8_t *) rd->start + rd->offset, 128); + + memset((uint8_t *) rd-> start + rd->offset, 0, 128); + + printf("memory cleared\r\n"); + hexdump((uint8_t *) rd->start + rd->offset, 128); + } + + rd = (struct pci_rd *) (((uintptr_t) rd) + (uintptr_t) rd->next); + } while (!(flags & FLG_LAST)); + } + else + { + printf("resource descriptor for handle 0x%02x not found\r\n", handle); + } + printf("\r\n...finished\r\n"); - printf("finished (took %f seconds).\r\n", time / 1000.0); } /* diff --git a/BaS_gcc/usb/usb.c b/BaS_gcc/usb/usb.c index 224619b..fce1923 100644 --- a/BaS_gcc/usb/usb.c +++ b/BaS_gcc/usb/usb.c @@ -54,14 +54,8 @@ #include "usb.h" #include "usb_hub.h" -#define DEBUG_USB -#ifdef DEBUG_USB -#define dbg(format, arg...) do { xprintf("DEBUG: %s(): " format, __FUNCTION__, ##arg); } while (0) -#else -#define dbg(format, arg...) do { ; } while (0) -#endif /* DEBUG_USB */ -#define err(format, arg...) do { xprintf("ERROR: %s(): " format, __FUNCTION__, ##arg); } while (0) -#define info(format, arg...) do { xprintf("INFO: %s(): " format, __FUNCTION__, ##arg); } while (0) +#define DEBUG +#include "debug.h" struct hci { diff --git a/BaS_gcc/video/fbmem.c b/BaS_gcc/video/fbmem.c index 2fca2fc..90444ea 100644 --- a/BaS_gcc/video/fbmem.c +++ b/BaS_gcc/video/fbmem.c @@ -148,25 +148,14 @@ int fb_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg) */ struct fb_info *framebuffer_alloc(unsigned long size) { - struct fb_info *info = driver_mem_alloc(sizeof(struct fb_info)); + /* changed for BaS_gcc: + * we do not allocate anything here anymore, info_fb is statically allocated in video.c + * This leads to the (not really existing) limitation that we only support one Radeon + * card in the system + */ + extern struct fb_info *info_fb; - if (info == NULL) - { - dbg("%s: could not allocate fb_info structure\r\n", __FUNCTION__); - return 0; - } - memset(info, 0, sizeof(struct fb_info)); - - if (size) - { - char *p = driver_mem_alloc(size); - - if (!p) - return NULL; - memset(p, 0, size); - info->par = p; - } - return info; + return info_fb; } /** diff --git a/BaS_gcc/video/video.c b/BaS_gcc/video/video.c index 1b043c6..3c0f712 100644 --- a/BaS_gcc/video/video.c +++ b/BaS_gcc/video/video.c @@ -7,13 +7,8 @@ #include "fb.h" #include "radeonfb.h" -#define DBG_VIDEO -#ifdef DBG_VIDEO -#define dbg(format, arg...) do { xprintf("DEBUG (%s()): " format, __FUNCTION__, ##arg);} while(0) -#else -#define dbg(format, arg...) do {;} while (0) -#endif /* DBG_VIDEO */ -#define err(format, arg...) do { xprintf("ERROR (%s()): " format, __FUNCTION__, ##arg); } while(0) +// #define DEBUG +#include "debug.h" #ifdef _USE_VIDEL_ #define MON_ALL -1 /* code used in VMODE_ENTRY for match on mode only */ @@ -277,7 +272,13 @@ void videl_screen_init(void) #endif /* _USE_VIDEL_ */ -static struct fb_info fb; +static struct radeonfb_info rfb; + +static struct fb_info fb = +{ + .par = &rfb +}; + struct fb_info *info_fb = &fb; const char monitor_layout[1024] = "CRT,CRT"; @@ -345,18 +346,15 @@ void video_init(void) dbg("matched\r\n"); - xprintf("not registering RADEON card\r\n"); + xprintf("registering RADEON card with PCI handle 0x%02x\r\n", handle); - if (0) + if (radeonfb_pci_register(handle, board) >= 0) { - if (radeonfb_pci_register(handle, board) >= 0) - { - xprintf("RADEON video card found and registered\r\n"); - } - else - { - dbg("failed to register RADEON PCI video card\r\n"); - } + xprintf("RADEON video card found and registered\r\n"); + } + else + { + dbg("failed to register RADEON PCI video card\r\n"); } return; } diff --git a/BaS_gcc/x86emu/x86biosemu.c b/BaS_gcc/x86emu/x86biosemu.c index a0a06db..c79f364 100644 --- a/BaS_gcc/x86emu/x86biosemu.c +++ b/BaS_gcc/x86emu/x86biosemu.c @@ -10,6 +10,7 @@ #include "pci_ids.h" #include "x86pcibios.h" +#define DEBUG #include "debug.h" #define USE_SDRAM @@ -42,7 +43,7 @@ typedef struct struct rom_header { - uint16_t signature; + uint16_t signature; uint8_t size; uint8_t init[3]; uint8_t reserved[0x12]; @@ -63,7 +64,7 @@ struct pci_data uint16_t irevision; uint8_t type; uint8_t indicator; - uint16_t reserved_2; + uint16_t reserved_2; }; static struct radeonfb_info *rinfo_biosemu; @@ -72,8 +73,6 @@ uint32_t offset_mem; static uint32_t offset_io; static uint32_t config_address_reg; -extern int x86_pcibios_emulator(); - //X86EMU_sysEnv _X86EMU_env; /* general software interrupt handler */ @@ -102,46 +101,42 @@ int run_bios_int(struct X86EMU *emu, int num) return 1; } -uint8_t inb(uint16_t port) +static uint8_t inb(struct X86EMU *emu, uint16_t port) { uint8_t val = 0; if ((port >= offset_port) && (port <= offset_port + 0xFF)) { val = * (uint8_t *) (offset_io + (uint32_t) port); - //dbg("%s: inb(0x%x) = 0x%x\r\n", __FUNCTION__, port, val); } return val; } -uint16_t inw(uint16_t port) +uint16_t inw(struct X86EMU *emu, uint16_t port) { uint16_t val = 0; if ((port >= offset_port) && (port <= offset_port + 0xFF)) { val = swpw(*(uint16_t *)(offset_io + (uint32_t) port)); - //dbg("inw(0x%x) = 0x%x\r\n", port, val); } return val; } -uint32_t inl(uint16_t port) +uint32_t inl(struct X86EMU *emu, uint16_t port) { uint32_t val = 0; if ((port >= offset_port) && (port <= offset_port + 0xFF)) { val = swpl(*(uint32_t *)(offset_io + (uint32_t) port)); - //dbg("0x%x) = 0x%x\r\n", port, val); } else if (port == 0xCF8) { val = config_address_reg; - dbg("inl(0x%x) = 0x%x\r\n", port, val); } else if ((port == 0xCFC) && ((config_address_reg & 0x80000000) != 0)) { - dbg("%s: PCI BIOS access to register %x\r\n", __FUNCTION__, config_address_reg); + dbg("PCI BIOS access to register %x\r\n", config_address_reg); switch (config_address_reg & 0xFC) { case PCIIDR: @@ -161,34 +156,30 @@ uint32_t inl(uint16_t port) return val; } -void outb(uint8_t val, uint16_t port) +void outb(struct X86EMU *emu, uint16_t port, uint8_t val) { if ((port >= offset_port) && (port <= offset_port + 0xFF)) { - //dbg("outb(0x%x, 0x%x)\r\n", port, val); *(uint8_t *)(offset_io + (uint32_t) port) = val; } } -void outw(uint16_t val, uint16_t port) +void outw(struct X86EMU *emu, uint16_t port, uint16_t val) { if ((port >= offset_port) && (port <= offset_port + 0xFF)) { - //dbg("outw(0x%x, 0x%x)\r\n", port, val); *(uint16_t *)(offset_io + (uint32_t) port) = swpw(val); } } -void outl(uint32_t val, uint16_t port) +void outl(struct X86EMU *emu, uint16_t port, uint32_t val) { if ((port >= offset_port) && (port <= offset_port + 0xFF)) { - //dbg("outl(0x%x, 0x%x)\r\n", port, val); *(uint32_t *)(offset_io + (uint32_t) port) = swpl(val); } else if (port == 0xCF8) { - dbg("outl(0x%x, 0x%x)\r\n", port, val); config_address_reg = val; } else if ((port == 0xCFC) && ((config_address_reg & 0x80000000) !=0)) @@ -209,6 +200,8 @@ void do_int(struct X86EMU *emu, int num) { int ret = 0; + dbg("int %02xh\r\n", num); + switch (num) { #ifndef _PC @@ -275,9 +268,17 @@ void run_bios(struct radeonfb_info *rinfo) unsigned short initialip; unsigned short devfn = (unsigned short) rinfo->handle; - struct X86EMU emu; + struct X86EMU emu = {0}; X86EMU_init_default(&emu); + emu.emu_inb = inb; + emu.emu_inw = inw; + emu.emu_inl = inl; + + emu.emu_outb = outb; + emu.emu_outw = outw; + emu.emu_outl = outl; + if ((rinfo->mmio_base == NULL) || (rinfo->io_base == NULL)) { @@ -301,19 +302,20 @@ void run_bios(struct radeonfb_info *rinfo) if (BIOS_IN8((long) &rom_data->type) != 0) { - dbg("%s: ROM data type = 0x%x\r\n", __FUNCTION__, BIOS_IN8((long) &rom_data->type)); + dbg("unknown ROM data type = 0x%x\r\n", BIOS_IN8((long) &rom_data->type)); return; } rom_size = (unsigned long) BIOS_IN8((long) &rom_header->size) * 512; + dbg("ROM size = 0x%lx\r\n", rom_size); if (PCI_CLASS_DISPLAY_VGA == BIOS_IN16((long) &rom_data->class_hi)) { memset((char *) biosmem, 0, SIZE_EMU); setup_system_bios((char *) biosmem); - dbg("%s: Copying VGA ROM Image from %p to %p (0x%lx bytes)\r\n", - __FUNCTION__, (long) rinfo->bios_seg + (long) rom_header, + dbg("Copying VGA ROM Image from %p to %p (0x%lx bytes)\r\n", + (long) rinfo->bios_seg + (long) rom_header, biosmem + PCI_VGA_RAM_IMAGE_START, rom_size); { long bytes_align = (long) rom_header & 3; @@ -335,7 +337,7 @@ void run_bios(struct radeonfb_info *rinfo) memset((char *) biosmem, 0, SIZE_EMU); setup_system_bios((char *) biosmem); - dbg("%s: Copying non-VGA ROM Image from %p to %p (0x%lx bytes)\r\n", __FUNCTION__, + dbg("Copying non-VGA ROM Image from %p to %p (0x%lx bytes)\r\n", (long) rinfo->bios_seg + (long) rom_header, biosmem + PCI_RAM_IMAGE_START, rom_size); @@ -367,16 +369,16 @@ void run_bios(struct radeonfb_info *rinfo) } { /* FixME: move PIT init to its own file */ - outb(0x36, 0x43); - outb(0x00, 0x40); - outb(0x00, 0x40); + outb(&emu, 0x36, 0x43); + outb(&emu, 0x00, 0x40); + outb(&emu, 0x00, 0x40); } // setup_int_vect(); /* cpu setup */ emu.x86.R_AX = devfn ? devfn : 0xff; emu.x86.R_DX = 0x80; - emu.x86.R_EIP = initialip; + emu.x86.R_IP = initialip; emu.x86.R_CS = initialcs; /* Initialize stack and data segment */ @@ -398,16 +400,12 @@ void run_bios(struct radeonfb_info *rinfo) // pushw(0xb890); /* nop, mov ax,#0x13 */ pushw(&emu, emu.x86.R_SS); pushw(&emu, emu.x86.R_SP + 2); -#ifdef DBG_X86EMU - X86EMU_trace_on(); - X86EMU_set_debug(DEBUG_DECODE_F | DEBUG_TRACE_F); -#endif - dbg("%s: X86EMU entering emulator\r\n", __FUNCTION__); + dbg("X86EMU entering emulator\r\n"); //*vblsem = 0; X86EMU_exec(&emu); //*vblsem = 1; - dbg("%s: X86EMU halted\r\n", __FUNCTION__); + dbg("X86EMU halted\r\n"); // biosfn_set_video_mode(0x13); /* 320 x 200 x 256 colors */ memset((char *) biosmem, 0, SIZE_EMU); } diff --git a/BaS_gcc/x86emu/x86emu.c b/BaS_gcc/x86emu/x86emu.c index a496c89..df0c484 100644 --- a/BaS_gcc/x86emu/x86emu.c +++ b/BaS_gcc/x86emu/x86emu.c @@ -35,8 +35,9 @@ #include #include #include "setjmp.h" +#include "debug.h" -static void x86emu_intr_raise (struct X86EMU *, uint8_t type); +static void x86emu_intr_raise (struct X86EMU *, uint8_t type); static void X86EMU_exec_one_byte(struct X86EMU *); static void X86EMU_exec_two_byte(struct X86EMU *); @@ -57,25 +58,25 @@ static void store_data_word (struct X86EMU *, uint32_t offset, uint16_t val); static void store_word (struct X86EMU *, uint32_t segment, uint32_t offset, uint16_t val); static void store_data_long (struct X86EMU *, uint32_t offset, uint32_t val); static void store_long (struct X86EMU *, uint32_t segment, uint32_t offset, uint32_t val); -static uint8_t* decode_rl_byte_register(struct X86EMU *); -static uint16_t* decode_rl_word_register(struct X86EMU *); -static uint32_t* decode_rl_long_register(struct X86EMU *); -static uint8_t* decode_rh_byte_register(struct X86EMU *); -static uint16_t* decode_rh_word_register(struct X86EMU *); -static uint32_t* decode_rh_long_register(struct X86EMU *); -static uint16_t* decode_rh_seg_register(struct X86EMU *); +static uint8_t *decode_rl_byte_register(struct X86EMU *); +static uint16_t *decode_rl_word_register(struct X86EMU *); +static uint32_t *decode_rl_long_register(struct X86EMU *); +static uint8_t *decode_rh_byte_register(struct X86EMU *); +static uint16_t *decode_rh_word_register(struct X86EMU *); +static uint32_t *decode_rh_long_register(struct X86EMU *); +static uint16_t *decode_rh_seg_register(struct X86EMU *); static uint32_t decode_rl_address(struct X86EMU *); static uint8_t decode_and_fetch_byte(struct X86EMU *); -static uint16_t decode_and_fetch_word(struct X86EMU *); -static uint32_t decode_and_fetch_long(struct X86EMU *); +static uint16_t decode_and_fetch_word(struct X86EMU *); +static uint32_t decode_and_fetch_long(struct X86EMU *); static uint8_t decode_and_fetch_byte_imm8(struct X86EMU *, uint8_t *); -static uint16_t decode_and_fetch_word_imm8(struct X86EMU *, uint8_t *); -static uint32_t decode_and_fetch_long_imm8(struct X86EMU *, uint8_t *); +static uint16_t decode_and_fetch_word_imm8(struct X86EMU *, uint8_t *); +static uint32_t decode_and_fetch_long_imm8(struct X86EMU *, uint8_t *); -static uint16_t decode_and_fetch_word_disp(struct X86EMU *, int16_t); -static uint32_t decode_and_fetch_long_disp(struct X86EMU *, int16_t); +static uint16_t decode_and_fetch_word_disp(struct X86EMU *, int16_t); +static uint32_t decode_and_fetch_long_disp(struct X86EMU *, int16_t); static void write_back_byte(struct X86EMU *, uint8_t); static void write_back_word(struct X86EMU *, uint16_t); @@ -395,27 +396,27 @@ static uint32_t get_data_segment(struct X86EMU *emu) { switch (emu->x86.mode & SYSMODE_SEGMASK) { - case 0: /* default case: use ds register */ - case SYSMODE_SEGOVR_DS: - case SYSMODE_SEGOVR_DS | SYSMODE_SEG_DS_SS: - return emu->x86.R_DS; - case SYSMODE_SEG_DS_SS:/* non-overridden, use ss register */ - return emu->x86.R_SS; - case SYSMODE_SEGOVR_CS: - case SYSMODE_SEGOVR_CS | SYSMODE_SEG_DS_SS: - return emu->x86.R_CS; - case SYSMODE_SEGOVR_ES: - case SYSMODE_SEGOVR_ES | SYSMODE_SEG_DS_SS: - return emu->x86.R_ES; - case SYSMODE_SEGOVR_FS: - case SYSMODE_SEGOVR_FS | SYSMODE_SEG_DS_SS: - return emu->x86.R_FS; - case SYSMODE_SEGOVR_GS: - case SYSMODE_SEGOVR_GS | SYSMODE_SEG_DS_SS: - return emu->x86.R_GS; - case SYSMODE_SEGOVR_SS: - case SYSMODE_SEGOVR_SS | SYSMODE_SEG_DS_SS: - return emu->x86.R_SS; + case 0: /* default case: use ds register */ + case SYSMODE_SEGOVR_DS: + case SYSMODE_SEGOVR_DS | SYSMODE_SEG_DS_SS: + return emu->x86.R_DS; + case SYSMODE_SEG_DS_SS:/* non-overridden, use ss register */ + return emu->x86.R_SS; + case SYSMODE_SEGOVR_CS: + case SYSMODE_SEGOVR_CS | SYSMODE_SEG_DS_SS: + return emu->x86.R_CS; + case SYSMODE_SEGOVR_ES: + case SYSMODE_SEGOVR_ES | SYSMODE_SEG_DS_SS: + return emu->x86.R_ES; + case SYSMODE_SEGOVR_FS: + case SYSMODE_SEGOVR_FS | SYSMODE_SEG_DS_SS: + return emu->x86.R_FS; + case SYSMODE_SEGOVR_GS: + case SYSMODE_SEGOVR_GS | SYSMODE_SEG_DS_SS: + return emu->x86.R_GS; + case SYSMODE_SEGOVR_SS: + case SYSMODE_SEGOVR_SS | SYSMODE_SEG_DS_SS: + return emu->x86.R_SS; } X86EMU_halt_sys(emu); return 0L; @@ -618,24 +619,24 @@ static uint8_t * decode_rm_byte_register(struct X86EMU *emu, int reg) { switch (reg) { - case 0: - return &emu->x86.R_AL; - case 1: - return &emu->x86.R_CL; - case 2: - return &emu->x86.R_DL; - case 3: - return &emu->x86.R_BL; - case 4: - return &emu->x86.R_AH; - case 5: - return &emu->x86.R_CH; - case 6: - return &emu->x86.R_DH; - case 7: - return &emu->x86.R_BH; - default: - X86EMU_halt_sys(emu); + case 0: + return &emu->x86.R_AL; + case 1: + return &emu->x86.R_CL; + case 2: + return &emu->x86.R_DL; + case 3: + return &emu->x86.R_BL; + case 4: + return &emu->x86.R_AH; + case 5: + return &emu->x86.R_CH; + case 6: + return &emu->x86.R_DH; + case 7: + return &emu->x86.R_BH; + default: + X86EMU_halt_sys(emu); } return 0L; } @@ -666,24 +667,24 @@ static uint16_t * decode_rm_word_register(struct X86EMU *emu, int reg) { switch (reg) { - case 0: - return &emu->x86.R_AX; - case 1: - return &emu->x86.R_CX; - case 2: - return &emu->x86.R_DX; - case 3: - return &emu->x86.R_BX; - case 4: - return &emu->x86.R_SP; - case 5: - return &emu->x86.R_BP; - case 6: - return &emu->x86.R_SI; - case 7: - return &emu->x86.R_DI; - default: - X86EMU_halt_sys(emu); + case 0: + return &emu->x86.R_AX; + case 1: + return &emu->x86.R_CX; + case 2: + return &emu->x86.R_DX; + case 3: + return &emu->x86.R_BX; + case 4: + return &emu->x86.R_SP; + case 5: + return &emu->x86.R_BP; + case 6: + return &emu->x86.R_SI; + case 7: + return &emu->x86.R_DI; + default: + X86EMU_halt_sys(emu); } return 0; } @@ -714,24 +715,24 @@ static uint32_t * decode_rm_long_register(struct X86EMU *emu, int reg) { switch (reg) { - case 0: - return &emu->x86.R_EAX; - case 1: - return &emu->x86.R_ECX; - case 2: - return &emu->x86.R_EDX; - case 3: - return &emu->x86.R_EBX; - case 4: - return &emu->x86.R_ESP; - case 5: - return &emu->x86.R_EBP; - case 6: - return &emu->x86.R_ESI; - case 7: - return &emu->x86.R_EDI; - default: - X86EMU_halt_sys(emu); + case 0: + return &emu->x86.R_EAX; + case 1: + return &emu->x86.R_ECX; + case 2: + return &emu->x86.R_EDX; + case 3: + return &emu->x86.R_EBX; + case 4: + return &emu->x86.R_ESP; + case 5: + return &emu->x86.R_EBP; + case 6: + return &emu->x86.R_ESI; + case 7: + return &emu->x86.R_EDI; + default: + X86EMU_halt_sys(emu); } return 0L; } @@ -764,20 +765,20 @@ static uint16_t * decode_rh_seg_register(struct X86EMU *emu) { switch (emu->cur_rh) { - case 0: - return &emu->x86.R_ES; - case 1: - return &emu->x86.R_CS; - case 2: - return &emu->x86.R_SS; - case 3: - return &emu->x86.R_DS; - case 4: - return &emu->x86.R_FS; - case 5: - return &emu->x86.R_GS; - default: - X86EMU_halt_sys(emu); + case 0: + return &emu->x86.R_ES; + case 1: + return &emu->x86.R_CS; + case 2: + return &emu->x86.R_SS; + case 3: + return &emu->x86.R_DS; + case 4: + return &emu->x86.R_FS; + case 5: + return &emu->x86.R_GS; + default: + X86EMU_halt_sys(emu); } return 0; } @@ -791,62 +792,62 @@ decode_sib_address(struct X86EMU *emu, int sib, int mod) uint32_t base = 0, i = 0, scale = 1; switch (sib & 0x07) { - case 0: - base = emu->x86.R_EAX; - break; - case 1: - base = emu->x86.R_ECX; - break; - case 2: - base = emu->x86.R_EDX; - break; - case 3: - base = emu->x86.R_EBX; - break; - case 4: - base = emu->x86.R_ESP; + case 0: + base = emu->x86.R_EAX; + break; + case 1: + base = emu->x86.R_ECX; + break; + case 2: + base = emu->x86.R_EDX; + break; + case 3: + base = emu->x86.R_EBX; + break; + case 4: + base = emu->x86.R_ESP; + emu->x86.mode |= SYSMODE_SEG_DS_SS; + break; + case 5: + if (mod == 0) { + base = fetch_long_imm(emu); + } else { + base = emu->x86.R_EBP; emu->x86.mode |= SYSMODE_SEG_DS_SS; - break; - case 5: - if (mod == 0) { - base = fetch_long_imm(emu); - } else { - base = emu->x86.R_EBP; - emu->x86.mode |= SYSMODE_SEG_DS_SS; - } - break; - case 6: - base = emu->x86.R_ESI; - break; - case 7: - base = emu->x86.R_EDI; - break; + } + break; + case 6: + base = emu->x86.R_ESI; + break; + case 7: + base = emu->x86.R_EDI; + break; } switch ((sib >> 3) & 0x07) { - case 0: - i = emu->x86.R_EAX; - break; - case 1: - i = emu->x86.R_ECX; - break; - case 2: - i = emu->x86.R_EDX; - break; - case 3: - i = emu->x86.R_EBX; - break; - case 4: - i = 0; - break; - case 5: - i = emu->x86.R_EBP; - break; - case 6: - i = emu->x86.R_ESI; - break; - case 7: - i = emu->x86.R_EDI; - break; + case 0: + i = emu->x86.R_EAX; + break; + case 1: + i = emu->x86.R_ECX; + break; + case 2: + i = emu->x86.R_EDX; + break; + case 3: + i = emu->x86.R_EBX; + break; + case 4: + i = 0; + break; + case 5: + i = emu->x86.R_EBP; + break; + case 6: + i = emu->x86.R_ESI; + break; + case 7: + i = emu->x86.R_EDI; + break; } scale = 1 << ((sib >> 6) & 0x03); return base + (i * scale); @@ -869,38 +870,38 @@ decode_rl_address(struct X86EMU *emu) uint32_t offset, sib; /* 32-bit addressing */ switch (emu->cur_rl) { - case 0: - offset = emu->x86.R_EAX; - break; - case 1: - offset = emu->x86.R_ECX; - break; - case 2: - offset = emu->x86.R_EDX; - break; - case 3: - offset = emu->x86.R_EBX; - break; - case 4: - sib = fetch_byte_imm(emu); - offset = decode_sib_address(emu, sib, 0); - break; - case 5: - if (emu->cur_mod == 0) { - offset = fetch_long_imm(emu); - } else { - emu->x86.mode |= SYSMODE_SEG_DS_SS; - offset = emu->x86.R_EBP; - } - break; - case 6: - offset = emu->x86.R_ESI; - break; - case 7: - offset = emu->x86.R_EDI; - break; - default: - X86EMU_halt_sys(emu); + case 0: + offset = emu->x86.R_EAX; + break; + case 1: + offset = emu->x86.R_ECX; + break; + case 2: + offset = emu->x86.R_EDX; + break; + case 3: + offset = emu->x86.R_EBX; + break; + case 4: + sib = fetch_byte_imm(emu); + offset = decode_sib_address(emu, sib, 0); + break; + case 5: + if (emu->cur_mod == 0) { + offset = fetch_long_imm(emu); + } else { + emu->x86.mode |= SYSMODE_SEG_DS_SS; + offset = emu->x86.R_EBP; + } + break; + case 6: + offset = emu->x86.R_ESI; + break; + case 7: + offset = emu->x86.R_EDI; + break; + default: + X86EMU_halt_sys(emu); } if (emu->cur_mod == 1) offset += (int8_t)fetch_byte_imm(emu); @@ -912,39 +913,39 @@ decode_rl_address(struct X86EMU *emu) /* 16-bit addressing */ switch (emu->cur_rl) { - case 0: - offset = emu->x86.R_BX + emu->x86.R_SI; - break; - case 1: - offset = emu->x86.R_BX + emu->x86.R_DI; - break; - case 2: + case 0: + offset = emu->x86.R_BX + emu->x86.R_SI; + break; + case 1: + offset = emu->x86.R_BX + emu->x86.R_DI; + break; + case 2: + emu->x86.mode |= SYSMODE_SEG_DS_SS; + offset = emu->x86.R_BP + emu->x86.R_SI; + break; + case 3: + emu->x86.mode |= SYSMODE_SEG_DS_SS; + offset = emu->x86.R_BP + emu->x86.R_DI; + break; + case 4: + offset = emu->x86.R_SI; + break; + case 5: + offset = emu->x86.R_DI; + break; + case 6: + if (emu->cur_mod == 0) { + offset = fetch_word_imm(emu); + } else { emu->x86.mode |= SYSMODE_SEG_DS_SS; - offset = emu->x86.R_BP + emu->x86.R_SI; - break; - case 3: - emu->x86.mode |= SYSMODE_SEG_DS_SS; - offset = emu->x86.R_BP + emu->x86.R_DI; - break; - case 4: - offset = emu->x86.R_SI; - break; - case 5: - offset = emu->x86.R_DI; - break; - case 6: - if (emu->cur_mod == 0) { - offset = fetch_word_imm(emu); - } else { - emu->x86.mode |= SYSMODE_SEG_DS_SS; - offset = emu->x86.R_BP; - } - break; - case 7: - offset = emu->x86.R_BX; - break; - default: - X86EMU_halt_sys(emu); + offset = emu->x86.R_BP; + } + break; + case 7: + offset = emu->x86.R_BX; + break; + default: + X86EMU_halt_sys(emu); } if (emu->cur_mod == 1) offset += (int8_t)fetch_byte_imm(emu); @@ -3747,26 +3748,26 @@ x86emuOp_opcF6_byte_RM(struct X86EMU *emu) } destval = decode_and_fetch_byte(emu); switch (emu->cur_rh) { - case 2: - destval = ~destval; - write_back_byte(emu, destval); - break; - case 3: - destval = neg_byte(emu, destval); - write_back_byte(emu, destval); - break; - case 4: - mul_byte(emu, destval); - break; - case 5: - imul_byte(emu, destval); - break; - case 6: - div_byte(emu, destval); - break; - case 7: - idiv_byte(emu, destval); - break; + case 2: + destval = ~destval; + write_back_byte(emu, destval); + break; + case 3: + destval = neg_byte(emu, destval); + write_back_byte(emu, destval); + break; + case 4: + mul_byte(emu, destval); + break; + case 5: + imul_byte(emu, destval); + break; + case 6: + div_byte(emu, destval); + break; + case 7: + idiv_byte(emu, destval); + break; } } /**************************************************************************** @@ -3800,26 +3801,26 @@ x86emuOp32_opcF7_word_RM(struct X86EMU *emu) } destval = decode_and_fetch_long(emu); switch (emu->cur_rh) { - case 2: - destval = ~destval; - write_back_long(emu, destval); - break; - case 3: - destval = neg_long(emu, destval); - write_back_long(emu, destval); - break; - case 4: - mul_long(emu, destval); - break; - case 5: - imul_long(emu, destval); - break; - case 6: - div_long(emu, destval); - break; - case 7: - idiv_long(emu, destval); - break; + case 2: + destval = ~destval; + write_back_long(emu, destval); + break; + case 3: + destval = neg_long(emu, destval); + write_back_long(emu, destval); + break; + case 4: + mul_long(emu, destval); + break; + case 5: + imul_long(emu, destval); + break; + case 6: + div_long(emu, destval); + break; + case 7: + idiv_long(emu, destval); + break; } } static void @@ -3849,26 +3850,26 @@ x86emuOp16_opcF7_word_RM(struct X86EMU *emu) } destval = decode_and_fetch_word(emu); switch (emu->cur_rh) { - case 2: - destval = ~destval; - write_back_word(emu, destval); - break; - case 3: - destval = neg_word(emu, destval); - write_back_word(emu, destval); - break; - case 4: - mul_word(emu, destval); - break; - case 5: - imul_word(emu, destval); - break; - case 6: - div_word(emu, destval); - break; - case 7: - idiv_word(emu, destval); - break; + case 2: + destval = ~destval; + write_back_word(emu, destval); + break; + case 3: + destval = neg_word(emu, destval); + write_back_word(emu, destval); + break; + case 4: + mul_word(emu, destval); + break; + case 5: + imul_word(emu, destval); + break; + case 6: + div_word(emu, destval); + break; + case 7: + idiv_word(emu, destval); + break; } } static void @@ -3895,26 +3896,26 @@ x86emuOp_opcFE_byte_RM(struct X86EMU *emu) if (emu->cur_mod != 3) { destoffset = decode_rl_address(emu); switch (emu->cur_rh) { - case 0: /* inc word ptr ... */ - destval = fetch_data_byte(emu, destoffset); - destval = inc_byte(emu, destval); - store_data_byte(emu, destoffset, destval); - break; - case 1: /* dec word ptr ... */ - destval = fetch_data_byte(emu, destoffset); - destval = dec_byte(emu, destval); - store_data_byte(emu, destoffset, destval); - break; + case 0: /* inc word ptr ... */ + destval = fetch_data_byte(emu, destoffset); + destval = inc_byte(emu, destval); + store_data_byte(emu, destoffset, destval); + break; + case 1: /* dec word ptr ... */ + destval = fetch_data_byte(emu, destoffset); + destval = dec_byte(emu, destval); + store_data_byte(emu, destoffset, destval); + break; } } else { destreg = decode_rl_byte_register(emu); switch (emu->cur_rh) { - case 0: - *destreg = inc_byte(emu, *destreg); - break; - case 1: - *destreg = dec_byte(emu, *destreg); - break; + case 0: + *destreg = inc_byte(emu, *destreg); + break; + case 1: + *destreg = dec_byte(emu, *destreg); + break; } } } @@ -3932,30 +3933,30 @@ x86emuOp32_opcFF_word_RM(struct X86EMU *emu) destoffset = decode_rl_address(emu); destval = fetch_data_long(emu, destoffset); switch (emu->cur_rh) { - case 0: /* inc word ptr ... */ - destval = inc_long(emu, destval); - store_data_long(emu, destoffset, destval); - break; - case 1: /* dec word ptr ... */ - destval = dec_long(emu, destval); - store_data_long(emu, destoffset, destval); - break; - case 6: /* push word ptr ... */ - push_long(emu, destval); - break; + case 0: /* inc word ptr ... */ + destval = inc_long(emu, destval); + store_data_long(emu, destoffset, destval); + break; + case 1: /* dec word ptr ... */ + destval = dec_long(emu, destval); + store_data_long(emu, destoffset, destval); + break; + case 6: /* push word ptr ... */ + push_long(emu, destval); + break; } } else { destreg = decode_rl_long_register(emu); switch (emu->cur_rh) { - case 0: - *destreg = inc_long(emu, *destreg); - break; - case 1: - *destreg = dec_long(emu, *destreg); - break; - case 6: - push_long(emu, *destreg); - break; + case 0: + *destreg = inc_long(emu, *destreg); + break; + case 1: + *destreg = dec_long(emu, *destreg); + break; + case 6: + push_long(emu, *destreg); + break; } } } @@ -3971,30 +3972,30 @@ x86emuOp16_opcFF_word_RM(struct X86EMU *emu) destoffset = decode_rl_address(emu); destval = fetch_data_word(emu, destoffset); switch (emu->cur_rh) { - case 0: - destval = inc_word(emu, destval); - store_data_word(emu, destoffset, destval); - break; - case 1: /* dec word ptr ... */ - destval = dec_word(emu, destval); - store_data_word(emu, destoffset, destval); - break; - case 6: /* push word ptr ... */ - push_word(emu, destval); - break; + case 0: + destval = inc_word(emu, destval); + store_data_word(emu, destoffset, destval); + break; + case 1: /* dec word ptr ... */ + destval = dec_word(emu, destval); + store_data_word(emu, destoffset, destval); + break; + case 6: /* push word ptr ... */ + push_word(emu, destval); + break; } } else { destreg = decode_rl_word_register(emu); switch (emu->cur_rh) { - case 0: - *destreg = inc_word(emu, *destreg); - break; - case 1: - *destreg = dec_word(emu, *destreg); - break; - case 6: - push_word(emu, *destreg); - break; + case 0: + *destreg = inc_word(emu, *destreg); + break; + case 1: + *destreg = dec_word(emu, *destreg); + break; + case 6: + push_word(emu, *destreg); + break; } } } @@ -4021,31 +4022,31 @@ x86emuOp_opcFF_word_RM(struct X86EMU *emu) destoffset = decode_rl_address(emu); destval = fetch_data_word(emu, destoffset); switch (emu->cur_rh) { - case 3: /* call far ptr ... */ - destval2 = fetch_data_word(emu, destoffset + 2); - push_word(emu, emu->x86.R_CS); - emu->x86.R_CS = destval2; - push_word(emu, emu->x86.R_IP); - emu->x86.R_IP = destval; - break; - case 5: /* jmp far ptr ... */ - destval2 = fetch_data_word(emu, destoffset + 2); - emu->x86.R_IP = destval; - emu->x86.R_CS = destval2; - break; + case 3: /* call far ptr ... */ + destval2 = fetch_data_word(emu, destoffset + 2); + push_word(emu, emu->x86.R_CS); + emu->x86.R_CS = destval2; + push_word(emu, emu->x86.R_IP); + emu->x86.R_IP = destval; + break; + case 5: /* jmp far ptr ... */ + destval2 = fetch_data_word(emu, destoffset + 2); + emu->x86.R_IP = destval; + emu->x86.R_CS = destval2; + break; } } else { destval = *decode_rl_word_register(emu); } switch (emu->cur_rh) { - case 2: /* call word ptr */ - push_word(emu, emu->x86.R_IP); - emu->x86.R_IP = destval; - break; - case 4: /* jmp */ - emu->x86.R_IP = destval; - break; + case 2: /* call word ptr */ + push_word(emu, emu->x86.R_IP); + emu->x86.R_IP = destval; + break; + case 4: /* jmp */ + emu->x86.R_IP = destval; + break; } } /*************************************************************************** @@ -4059,798 +4060,798 @@ X86EMU_exec_one_byte(struct X86EMU * emu) op1 = fetch_byte_imm(emu); switch (op1) { - case 0x00: - common_binop_byte_rm_r(emu, add_byte); - break; - case 0x01: - common_binop_word_long_rm_r(emu, add_word, add_long); - break; - case 0x02: - common_binop_byte_r_rm(emu, add_byte); - break; - case 0x03: - common_binop_word_long_r_rm(emu, add_word, add_long); - break; - case 0x04: - common_binop_byte_imm(emu, add_byte); - break; - case 0x05: - common_binop_word_long_imm(emu, add_word, add_long); - break; - case 0x06: - push_word(emu, emu->x86.R_ES); - break; - case 0x07: - emu->x86.R_ES = pop_word(emu); - break; + case 0x00: + common_binop_byte_rm_r(emu, add_byte); + break; + case 0x01: + common_binop_word_long_rm_r(emu, add_word, add_long); + break; + case 0x02: + common_binop_byte_r_rm(emu, add_byte); + break; + case 0x03: + common_binop_word_long_r_rm(emu, add_word, add_long); + break; + case 0x04: + common_binop_byte_imm(emu, add_byte); + break; + case 0x05: + common_binop_word_long_imm(emu, add_word, add_long); + break; + case 0x06: + push_word(emu, emu->x86.R_ES); + break; + case 0x07: + emu->x86.R_ES = pop_word(emu); + break; - case 0x08: - common_binop_byte_rm_r(emu, or_byte); - break; - case 0x09: - common_binop_word_long_rm_r(emu, or_word, or_long); - break; - case 0x0a: - common_binop_byte_r_rm(emu, or_byte); - break; - case 0x0b: - common_binop_word_long_r_rm(emu, or_word, or_long); - break; - case 0x0c: - common_binop_byte_imm(emu, or_byte); - break; - case 0x0d: - common_binop_word_long_imm(emu, or_word, or_long); - break; - case 0x0e: - push_word(emu, emu->x86.R_CS); - break; - case 0x0f: - X86EMU_exec_two_byte(emu); - break; + case 0x08: + common_binop_byte_rm_r(emu, or_byte); + break; + case 0x09: + common_binop_word_long_rm_r(emu, or_word, or_long); + break; + case 0x0a: + common_binop_byte_r_rm(emu, or_byte); + break; + case 0x0b: + common_binop_word_long_r_rm(emu, or_word, or_long); + break; + case 0x0c: + common_binop_byte_imm(emu, or_byte); + break; + case 0x0d: + common_binop_word_long_imm(emu, or_word, or_long); + break; + case 0x0e: + push_word(emu, emu->x86.R_CS); + break; + case 0x0f: + X86EMU_exec_two_byte(emu); + break; - case 0x10: - common_binop_byte_rm_r(emu, adc_byte); - break; - case 0x11: - common_binop_word_long_rm_r(emu, adc_word, adc_long); - break; - case 0x12: - common_binop_byte_r_rm(emu, adc_byte); - break; - case 0x13: - common_binop_word_long_r_rm(emu, adc_word, adc_long); - break; - case 0x14: - common_binop_byte_imm(emu, adc_byte); - break; - case 0x15: - common_binop_word_long_imm(emu, adc_word, adc_long); - break; - case 0x16: - push_word(emu, emu->x86.R_SS); - break; - case 0x17: - emu->x86.R_SS = pop_word(emu); - break; + case 0x10: + common_binop_byte_rm_r(emu, adc_byte); + break; + case 0x11: + common_binop_word_long_rm_r(emu, adc_word, adc_long); + break; + case 0x12: + common_binop_byte_r_rm(emu, adc_byte); + break; + case 0x13: + common_binop_word_long_r_rm(emu, adc_word, adc_long); + break; + case 0x14: + common_binop_byte_imm(emu, adc_byte); + break; + case 0x15: + common_binop_word_long_imm(emu, adc_word, adc_long); + break; + case 0x16: + push_word(emu, emu->x86.R_SS); + break; + case 0x17: + emu->x86.R_SS = pop_word(emu); + break; - case 0x18: - common_binop_byte_rm_r(emu, sbb_byte); - break; - case 0x19: - common_binop_word_long_rm_r(emu, sbb_word, sbb_long); - break; - case 0x1a: - common_binop_byte_r_rm(emu, sbb_byte); - break; - case 0x1b: - common_binop_word_long_r_rm(emu, sbb_word, sbb_long); - break; - case 0x1c: - common_binop_byte_imm(emu, sbb_byte); - break; - case 0x1d: - common_binop_word_long_imm(emu, sbb_word, sbb_long); - break; - case 0x1e: - push_word(emu, emu->x86.R_DS); - break; - case 0x1f: - emu->x86.R_DS = pop_word(emu); - break; + case 0x18: + common_binop_byte_rm_r(emu, sbb_byte); + break; + case 0x19: + common_binop_word_long_rm_r(emu, sbb_word, sbb_long); + break; + case 0x1a: + common_binop_byte_r_rm(emu, sbb_byte); + break; + case 0x1b: + common_binop_word_long_r_rm(emu, sbb_word, sbb_long); + break; + case 0x1c: + common_binop_byte_imm(emu, sbb_byte); + break; + case 0x1d: + common_binop_word_long_imm(emu, sbb_word, sbb_long); + break; + case 0x1e: + push_word(emu, emu->x86.R_DS); + break; + case 0x1f: + emu->x86.R_DS = pop_word(emu); + break; - case 0x20: - common_binop_byte_rm_r(emu, and_byte); - break; - case 0x21: - common_binop_word_long_rm_r(emu, and_word, and_long); - break; - case 0x22: - common_binop_byte_r_rm(emu, and_byte); - break; - case 0x23: - common_binop_word_long_r_rm(emu, and_word, and_long); - break; - case 0x24: - common_binop_byte_imm(emu, and_byte); - break; - case 0x25: - common_binop_word_long_imm(emu, and_word, and_long); - break; - case 0x26: - emu->x86.mode |= SYSMODE_SEGOVR_ES; - break; - case 0x27: - emu->x86.R_AL = daa_byte(emu, emu->x86.R_AL); - break; + case 0x20: + common_binop_byte_rm_r(emu, and_byte); + break; + case 0x21: + common_binop_word_long_rm_r(emu, and_word, and_long); + break; + case 0x22: + common_binop_byte_r_rm(emu, and_byte); + break; + case 0x23: + common_binop_word_long_r_rm(emu, and_word, and_long); + break; + case 0x24: + common_binop_byte_imm(emu, and_byte); + break; + case 0x25: + common_binop_word_long_imm(emu, and_word, and_long); + break; + case 0x26: + emu->x86.mode |= SYSMODE_SEGOVR_ES; + break; + case 0x27: + emu->x86.R_AL = daa_byte(emu, emu->x86.R_AL); + break; - case 0x28: - common_binop_byte_rm_r(emu, sub_byte); - break; - case 0x29: - common_binop_word_long_rm_r(emu, sub_word, sub_long); - break; - case 0x2a: - common_binop_byte_r_rm(emu, sub_byte); - break; - case 0x2b: - common_binop_word_long_r_rm(emu, sub_word, sub_long); - break; - case 0x2c: - common_binop_byte_imm(emu, sub_byte); - break; - case 0x2d: - common_binop_word_long_imm(emu, sub_word, sub_long); - break; - case 0x2e: - emu->x86.mode |= SYSMODE_SEGOVR_CS; - break; - case 0x2f: - emu->x86.R_AL = das_byte(emu, emu->x86.R_AL); - break; + case 0x28: + common_binop_byte_rm_r(emu, sub_byte); + break; + case 0x29: + common_binop_word_long_rm_r(emu, sub_word, sub_long); + break; + case 0x2a: + common_binop_byte_r_rm(emu, sub_byte); + break; + case 0x2b: + common_binop_word_long_r_rm(emu, sub_word, sub_long); + break; + case 0x2c: + common_binop_byte_imm(emu, sub_byte); + break; + case 0x2d: + common_binop_word_long_imm(emu, sub_word, sub_long); + break; + case 0x2e: + emu->x86.mode |= SYSMODE_SEGOVR_CS; + break; + case 0x2f: + emu->x86.R_AL = das_byte(emu, emu->x86.R_AL); + break; - case 0x30: - common_binop_byte_rm_r(emu, xor_byte); - break; - case 0x31: - common_binop_word_long_rm_r(emu, xor_word, xor_long); - break; - case 0x32: - common_binop_byte_r_rm(emu, xor_byte); - break; - case 0x33: - common_binop_word_long_r_rm(emu, xor_word, xor_long); - break; - case 0x34: - common_binop_byte_imm(emu, xor_byte); - break; - case 0x35: - common_binop_word_long_imm(emu, xor_word, xor_long); - break; - case 0x36: - emu->x86.mode |= SYSMODE_SEGOVR_SS; - break; - case 0x37: - emu->x86.R_AX = aaa_word(emu, emu->x86.R_AX); - break; + case 0x30: + common_binop_byte_rm_r(emu, xor_byte); + break; + case 0x31: + common_binop_word_long_rm_r(emu, xor_word, xor_long); + break; + case 0x32: + common_binop_byte_r_rm(emu, xor_byte); + break; + case 0x33: + common_binop_word_long_r_rm(emu, xor_word, xor_long); + break; + case 0x34: + common_binop_byte_imm(emu, xor_byte); + break; + case 0x35: + common_binop_word_long_imm(emu, xor_word, xor_long); + break; + case 0x36: + emu->x86.mode |= SYSMODE_SEGOVR_SS; + break; + case 0x37: + emu->x86.R_AX = aaa_word(emu, emu->x86.R_AX); + break; - case 0x38: - common_binop_ns_byte_rm_r(emu, cmp_byte_no_return); - break; - case 0x39: - common_binop_ns_word_long_rm_r(emu, cmp_word_no_return, - cmp_long_no_return); - break; - case 0x3a: - x86emuOp_cmp_byte_R_RM(emu); - break; - case 0x3b: - x86emuOp_cmp_word_R_RM(emu); - break; - case 0x3c: - x86emuOp_cmp_byte_AL_IMM(emu); - break; - case 0x3d: - x86emuOp_cmp_word_AX_IMM(emu); - break; - case 0x3e: - emu->x86.mode |= SYSMODE_SEGOVR_DS; - break; - case 0x3f: - emu->x86.R_AX = aas_word(emu, emu->x86.R_AX); - break; + case 0x38: + common_binop_ns_byte_rm_r(emu, cmp_byte_no_return); + break; + case 0x39: + common_binop_ns_word_long_rm_r(emu, cmp_word_no_return, + cmp_long_no_return); + break; + case 0x3a: + x86emuOp_cmp_byte_R_RM(emu); + break; + case 0x3b: + x86emuOp_cmp_word_R_RM(emu); + break; + case 0x3c: + x86emuOp_cmp_byte_AL_IMM(emu); + break; + case 0x3d: + x86emuOp_cmp_word_AX_IMM(emu); + break; + case 0x3e: + emu->x86.mode |= SYSMODE_SEGOVR_DS; + break; + case 0x3f: + emu->x86.R_AX = aas_word(emu, emu->x86.R_AX); + break; - case 0x40: - common_inc_word_long(emu, &emu->x86.register_a); - break; - case 0x41: - common_inc_word_long(emu, &emu->x86.register_c); - break; - case 0x42: - common_inc_word_long(emu, &emu->x86.register_d); - break; - case 0x43: - common_inc_word_long(emu, &emu->x86.register_b); - break; - case 0x44: - common_inc_word_long(emu, &emu->x86.register_sp); - break; - case 0x45: - common_inc_word_long(emu, &emu->x86.register_bp); - break; - case 0x46: - common_inc_word_long(emu, &emu->x86.register_si); - break; - case 0x47: - common_inc_word_long(emu, &emu->x86.register_di); - break; + case 0x40: + common_inc_word_long(emu, &emu->x86.register_a); + break; + case 0x41: + common_inc_word_long(emu, &emu->x86.register_c); + break; + case 0x42: + common_inc_word_long(emu, &emu->x86.register_d); + break; + case 0x43: + common_inc_word_long(emu, &emu->x86.register_b); + break; + case 0x44: + common_inc_word_long(emu, &emu->x86.register_sp); + break; + case 0x45: + common_inc_word_long(emu, &emu->x86.register_bp); + break; + case 0x46: + common_inc_word_long(emu, &emu->x86.register_si); + break; + case 0x47: + common_inc_word_long(emu, &emu->x86.register_di); + break; - case 0x48: - common_dec_word_long(emu, &emu->x86.register_a); - break; - case 0x49: - common_dec_word_long(emu, &emu->x86.register_c); - break; - case 0x4a: - common_dec_word_long(emu, &emu->x86.register_d); - break; - case 0x4b: - common_dec_word_long(emu, &emu->x86.register_b); - break; - case 0x4c: - common_dec_word_long(emu, &emu->x86.register_sp); - break; - case 0x4d: - common_dec_word_long(emu, &emu->x86.register_bp); - break; - case 0x4e: - common_dec_word_long(emu, &emu->x86.register_si); - break; - case 0x4f: - common_dec_word_long(emu, &emu->x86.register_di); - break; + case 0x48: + common_dec_word_long(emu, &emu->x86.register_a); + break; + case 0x49: + common_dec_word_long(emu, &emu->x86.register_c); + break; + case 0x4a: + common_dec_word_long(emu, &emu->x86.register_d); + break; + case 0x4b: + common_dec_word_long(emu, &emu->x86.register_b); + break; + case 0x4c: + common_dec_word_long(emu, &emu->x86.register_sp); + break; + case 0x4d: + common_dec_word_long(emu, &emu->x86.register_bp); + break; + case 0x4e: + common_dec_word_long(emu, &emu->x86.register_si); + break; + case 0x4f: + common_dec_word_long(emu, &emu->x86.register_di); + break; - case 0x50: - common_push_word_long(emu, &emu->x86.register_a); - break; - case 0x51: - common_push_word_long(emu, &emu->x86.register_c); - break; - case 0x52: - common_push_word_long(emu, &emu->x86.register_d); - break; - case 0x53: - common_push_word_long(emu, &emu->x86.register_b); - break; - case 0x54: - common_push_word_long(emu, &emu->x86.register_sp); - break; - case 0x55: - common_push_word_long(emu, &emu->x86.register_bp); - break; - case 0x56: - common_push_word_long(emu, &emu->x86.register_si); - break; - case 0x57: - common_push_word_long(emu, &emu->x86.register_di); - break; + case 0x50: + common_push_word_long(emu, &emu->x86.register_a); + break; + case 0x51: + common_push_word_long(emu, &emu->x86.register_c); + break; + case 0x52: + common_push_word_long(emu, &emu->x86.register_d); + break; + case 0x53: + common_push_word_long(emu, &emu->x86.register_b); + break; + case 0x54: + common_push_word_long(emu, &emu->x86.register_sp); + break; + case 0x55: + common_push_word_long(emu, &emu->x86.register_bp); + break; + case 0x56: + common_push_word_long(emu, &emu->x86.register_si); + break; + case 0x57: + common_push_word_long(emu, &emu->x86.register_di); + break; - case 0x58: - common_pop_word_long(emu, &emu->x86.register_a); - break; - case 0x59: - common_pop_word_long(emu, &emu->x86.register_c); - break; - case 0x5a: - common_pop_word_long(emu, &emu->x86.register_d); - break; - case 0x5b: - common_pop_word_long(emu, &emu->x86.register_b); - break; - case 0x5c: - common_pop_word_long(emu, &emu->x86.register_sp); - break; - case 0x5d: - common_pop_word_long(emu, &emu->x86.register_bp); - break; - case 0x5e: - common_pop_word_long(emu, &emu->x86.register_si); - break; - case 0x5f: - common_pop_word_long(emu, &emu->x86.register_di); - break; + case 0x58: + common_pop_word_long(emu, &emu->x86.register_a); + break; + case 0x59: + common_pop_word_long(emu, &emu->x86.register_c); + break; + case 0x5a: + common_pop_word_long(emu, &emu->x86.register_d); + break; + case 0x5b: + common_pop_word_long(emu, &emu->x86.register_b); + break; + case 0x5c: + common_pop_word_long(emu, &emu->x86.register_sp); + break; + case 0x5d: + common_pop_word_long(emu, &emu->x86.register_bp); + break; + case 0x5e: + common_pop_word_long(emu, &emu->x86.register_si); + break; + case 0x5f: + common_pop_word_long(emu, &emu->x86.register_di); + break; - case 0x60: - x86emuOp_push_all(emu); - break; - case 0x61: - x86emuOp_pop_all(emu); - break; - /* 0x62 bound */ - /* 0x63 arpl */ - case 0x64: - emu->x86.mode |= SYSMODE_SEGOVR_FS; - break; - case 0x65: - emu->x86.mode |= SYSMODE_SEGOVR_GS; - break; - case 0x66: - emu->x86.mode |= SYSMODE_PREFIX_DATA; - break; - case 0x67: - emu->x86.mode |= SYSMODE_PREFIX_ADDR; - break; + case 0x60: + x86emuOp_push_all(emu); + break; + case 0x61: + x86emuOp_pop_all(emu); + break; + /* 0x62 bound */ + /* 0x63 arpl */ + case 0x64: + emu->x86.mode |= SYSMODE_SEGOVR_FS; + break; + case 0x65: + emu->x86.mode |= SYSMODE_SEGOVR_GS; + break; + case 0x66: + emu->x86.mode |= SYSMODE_PREFIX_DATA; + break; + case 0x67: + emu->x86.mode |= SYSMODE_PREFIX_ADDR; + break; - case 0x68: - x86emuOp_push_word_IMM(emu); - break; - case 0x69: - common_imul_imm(emu, false); - break; - case 0x6a: - x86emuOp_push_byte_IMM(emu); - break; - case 0x6b: - common_imul_imm(emu, true); - break; - case 0x6c: - ins(emu, 1); - break; - case 0x6d: - x86emuOp_ins_word(emu); - break; - case 0x6e: - outs(emu, 1); - break; - case 0x6f: - x86emuOp_outs_word(emu); - break; + case 0x68: + x86emuOp_push_word_IMM(emu); + break; + case 0x69: + common_imul_imm(emu, false); + break; + case 0x6a: + x86emuOp_push_byte_IMM(emu); + break; + case 0x6b: + common_imul_imm(emu, true); + break; + case 0x6c: + ins(emu, 1); + break; + case 0x6d: + x86emuOp_ins_word(emu); + break; + case 0x6e: + outs(emu, 1); + break; + case 0x6f: + x86emuOp_outs_word(emu); + break; - case 0x70: - common_jmp_near(emu, ACCESS_FLAG(F_OF)); - break; - case 0x71: - common_jmp_near(emu, !ACCESS_FLAG(F_OF)); - break; - case 0x72: - common_jmp_near(emu, ACCESS_FLAG(F_CF)); - break; - case 0x73: - common_jmp_near(emu, !ACCESS_FLAG(F_CF)); - break; - case 0x74: - common_jmp_near(emu, ACCESS_FLAG(F_ZF)); - break; - case 0x75: - common_jmp_near(emu, !ACCESS_FLAG(F_ZF)); - break; - case 0x76: - common_jmp_near(emu, ACCESS_FLAG(F_CF) || ACCESS_FLAG(F_ZF)); - break; - case 0x77: - common_jmp_near(emu, !ACCESS_FLAG(F_CF) && !ACCESS_FLAG(F_ZF)); - break; + case 0x70: + common_jmp_near(emu, ACCESS_FLAG(F_OF)); + break; + case 0x71: + common_jmp_near(emu, !ACCESS_FLAG(F_OF)); + break; + case 0x72: + common_jmp_near(emu, ACCESS_FLAG(F_CF)); + break; + case 0x73: + common_jmp_near(emu, !ACCESS_FLAG(F_CF)); + break; + case 0x74: + common_jmp_near(emu, ACCESS_FLAG(F_ZF)); + break; + case 0x75: + common_jmp_near(emu, !ACCESS_FLAG(F_ZF)); + break; + case 0x76: + common_jmp_near(emu, ACCESS_FLAG(F_CF) || ACCESS_FLAG(F_ZF)); + break; + case 0x77: + common_jmp_near(emu, !ACCESS_FLAG(F_CF) && !ACCESS_FLAG(F_ZF)); + break; - case 0x78: - common_jmp_near(emu, ACCESS_FLAG(F_SF)); - break; - case 0x79: - common_jmp_near(emu, !ACCESS_FLAG(F_SF)); - break; - case 0x7a: - common_jmp_near(emu, ACCESS_FLAG(F_PF)); - break; - case 0x7b: - common_jmp_near(emu, !ACCESS_FLAG(F_PF)); - break; - case 0x7c: - x86emuOp_jump_near_L(emu); - break; - case 0x7d: - x86emuOp_jump_near_NL(emu); - break; - case 0x7e: - x86emuOp_jump_near_LE(emu); - break; - case 0x7f: - x86emuOp_jump_near_NLE(emu); - break; + case 0x78: + common_jmp_near(emu, ACCESS_FLAG(F_SF)); + break; + case 0x79: + common_jmp_near(emu, !ACCESS_FLAG(F_SF)); + break; + case 0x7a: + common_jmp_near(emu, ACCESS_FLAG(F_PF)); + break; + case 0x7b: + common_jmp_near(emu, !ACCESS_FLAG(F_PF)); + break; + case 0x7c: + x86emuOp_jump_near_L(emu); + break; + case 0x7d: + x86emuOp_jump_near_NL(emu); + break; + case 0x7e: + x86emuOp_jump_near_LE(emu); + break; + case 0x7f: + x86emuOp_jump_near_NLE(emu); + break; - case 0x80: - x86emuOp_opc80_byte_RM_IMM(emu); - break; - case 0x81: - x86emuOp_opc81_word_RM_IMM(emu); - break; - case 0x82: - x86emuOp_opc82_byte_RM_IMM(emu); - break; - case 0x83: - x86emuOp_opc83_word_RM_IMM(emu); - break; - case 0x84: - common_binop_ns_byte_rm_r(emu, test_byte); - break; - case 0x85: - common_binop_ns_word_long_rm_r(emu, test_word, test_long); - break; - case 0x86: - x86emuOp_xchg_byte_RM_R(emu); - break; - case 0x87: - x86emuOp_xchg_word_RM_R(emu); - break; + case 0x80: + x86emuOp_opc80_byte_RM_IMM(emu); + break; + case 0x81: + x86emuOp_opc81_word_RM_IMM(emu); + break; + case 0x82: + x86emuOp_opc82_byte_RM_IMM(emu); + break; + case 0x83: + x86emuOp_opc83_word_RM_IMM(emu); + break; + case 0x84: + common_binop_ns_byte_rm_r(emu, test_byte); + break; + case 0x85: + common_binop_ns_word_long_rm_r(emu, test_word, test_long); + break; + case 0x86: + x86emuOp_xchg_byte_RM_R(emu); + break; + case 0x87: + x86emuOp_xchg_word_RM_R(emu); + break; - case 0x88: - x86emuOp_mov_byte_RM_R(emu); - break; - case 0x89: - x86emuOp_mov_word_RM_R(emu); - break; - case 0x8a: - x86emuOp_mov_byte_R_RM(emu); - break; - case 0x8b: - x86emuOp_mov_word_R_RM(emu); - break; - case 0x8c: - x86emuOp_mov_word_RM_SR(emu); - break; - case 0x8d: - x86emuOp_lea_word_R_M(emu); - break; - case 0x8e: - x86emuOp_mov_word_SR_RM(emu); - break; - case 0x8f: - x86emuOp_pop_RM(emu); - break; + case 0x88: + x86emuOp_mov_byte_RM_R(emu); + break; + case 0x89: + x86emuOp_mov_word_RM_R(emu); + break; + case 0x8a: + x86emuOp_mov_byte_R_RM(emu); + break; + case 0x8b: + x86emuOp_mov_word_R_RM(emu); + break; + case 0x8c: + x86emuOp_mov_word_RM_SR(emu); + break; + case 0x8d: + x86emuOp_lea_word_R_M(emu); + break; + case 0x8e: + x86emuOp_mov_word_SR_RM(emu); + break; + case 0x8f: + x86emuOp_pop_RM(emu); + break; - case 0x90: - /* nop */ - break; - case 0x91: - x86emuOp_xchg_word_AX_CX(emu); - break; - case 0x92: - x86emuOp_xchg_word_AX_DX(emu); - break; - case 0x93: - x86emuOp_xchg_word_AX_BX(emu); - break; - case 0x94: - x86emuOp_xchg_word_AX_SP(emu); - break; - case 0x95: - x86emuOp_xchg_word_AX_BP(emu); - break; - case 0x96: - x86emuOp_xchg_word_AX_SI(emu); - break; - case 0x97: - x86emuOp_xchg_word_AX_DI(emu); - break; + case 0x90: + /* nop */ + break; + case 0x91: + x86emuOp_xchg_word_AX_CX(emu); + break; + case 0x92: + x86emuOp_xchg_word_AX_DX(emu); + break; + case 0x93: + x86emuOp_xchg_word_AX_BX(emu); + break; + case 0x94: + x86emuOp_xchg_word_AX_SP(emu); + break; + case 0x95: + x86emuOp_xchg_word_AX_BP(emu); + break; + case 0x96: + x86emuOp_xchg_word_AX_SI(emu); + break; + case 0x97: + x86emuOp_xchg_word_AX_DI(emu); + break; - case 0x98: - x86emuOp_cbw(emu); - break; - case 0x99: - x86emuOp_cwd(emu); - break; - case 0x9a: - x86emuOp_call_far_IMM(emu); - break; - case 0x9b: - /* wait */ - break; - case 0x9c: - x86emuOp_pushf_word(emu); - break; - case 0x9d: - x86emuOp_popf_word(emu); - break; - case 0x9e: - x86emuOp_sahf(emu); - break; - case 0x9f: - x86emuOp_lahf(emu); - break; + case 0x98: + x86emuOp_cbw(emu); + break; + case 0x99: + x86emuOp_cwd(emu); + break; + case 0x9a: + x86emuOp_call_far_IMM(emu); + break; + case 0x9b: + /* wait */ + break; + case 0x9c: + x86emuOp_pushf_word(emu); + break; + case 0x9d: + x86emuOp_popf_word(emu); + break; + case 0x9e: + x86emuOp_sahf(emu); + break; + case 0x9f: + x86emuOp_lahf(emu); + break; - case 0xa0: - x86emuOp_mov_AL_M_IMM(emu); - break; - case 0xa1: - x86emuOp_mov_AX_M_IMM(emu); - break; - case 0xa2: - x86emuOp_mov_M_AL_IMM(emu); - break; - case 0xa3: - x86emuOp_mov_M_AX_IMM(emu); - break; - case 0xa4: - x86emuOp_movs_byte(emu); - break; - case 0xa5: - x86emuOp_movs_word(emu); - break; - case 0xa6: - x86emuOp_cmps_byte(emu); - break; - case 0xa7: - x86emuOp_cmps_word(emu); - break; + case 0xa0: + x86emuOp_mov_AL_M_IMM(emu); + break; + case 0xa1: + x86emuOp_mov_AX_M_IMM(emu); + break; + case 0xa2: + x86emuOp_mov_M_AL_IMM(emu); + break; + case 0xa3: + x86emuOp_mov_M_AX_IMM(emu); + break; + case 0xa4: + x86emuOp_movs_byte(emu); + break; + case 0xa5: + x86emuOp_movs_word(emu); + break; + case 0xa6: + x86emuOp_cmps_byte(emu); + break; + case 0xa7: + x86emuOp_cmps_word(emu); + break; - case 0xa8: - test_byte(emu, emu->x86.R_AL, fetch_byte_imm(emu)); - break; - case 0xa9: - x86emuOp_test_AX_IMM(emu); - break; - case 0xaa: - x86emuOp_stos_byte(emu); - break; - case 0xab: - x86emuOp_stos_word(emu); - break; - case 0xac: - x86emuOp_lods_byte(emu); - break; - case 0xad: - x86emuOp_lods_word(emu); - break; - case 0xae: - x86emuOp_scas_byte(emu); - break; - case 0xaf: - x86emuOp_scas_word(emu); - break; + case 0xa8: + test_byte(emu, emu->x86.R_AL, fetch_byte_imm(emu)); + break; + case 0xa9: + x86emuOp_test_AX_IMM(emu); + break; + case 0xaa: + x86emuOp_stos_byte(emu); + break; + case 0xab: + x86emuOp_stos_word(emu); + break; + case 0xac: + x86emuOp_lods_byte(emu); + break; + case 0xad: + x86emuOp_lods_word(emu); + break; + case 0xae: + x86emuOp_scas_byte(emu); + break; + case 0xaf: + x86emuOp_scas_word(emu); + break; - case 0xb0: - emu->x86.R_AL = fetch_byte_imm(emu); - break; - case 0xb1: - emu->x86.R_CL = fetch_byte_imm(emu); - break; - case 0xb2: - emu->x86.R_DL = fetch_byte_imm(emu); - break; - case 0xb3: - emu->x86.R_BL = fetch_byte_imm(emu); - break; - case 0xb4: - emu->x86.R_AH = fetch_byte_imm(emu); - break; - case 0xb5: - emu->x86.R_CH = fetch_byte_imm(emu); - break; - case 0xb6: - emu->x86.R_DH = fetch_byte_imm(emu); - break; - case 0xb7: - emu->x86.R_BH = fetch_byte_imm(emu); - break; + case 0xb0: + emu->x86.R_AL = fetch_byte_imm(emu); + break; + case 0xb1: + emu->x86.R_CL = fetch_byte_imm(emu); + break; + case 0xb2: + emu->x86.R_DL = fetch_byte_imm(emu); + break; + case 0xb3: + emu->x86.R_BL = fetch_byte_imm(emu); + break; + case 0xb4: + emu->x86.R_AH = fetch_byte_imm(emu); + break; + case 0xb5: + emu->x86.R_CH = fetch_byte_imm(emu); + break; + case 0xb6: + emu->x86.R_DH = fetch_byte_imm(emu); + break; + case 0xb7: + emu->x86.R_BH = fetch_byte_imm(emu); + break; - case 0xb8: - x86emuOp_mov_word_AX_IMM(emu); - break; - case 0xb9: - x86emuOp_mov_word_CX_IMM(emu); - break; - case 0xba: - x86emuOp_mov_word_DX_IMM(emu); - break; - case 0xbb: - x86emuOp_mov_word_BX_IMM(emu); - break; - case 0xbc: - x86emuOp_mov_word_SP_IMM(emu); - break; - case 0xbd: - x86emuOp_mov_word_BP_IMM(emu); - break; - case 0xbe: - x86emuOp_mov_word_SI_IMM(emu); - break; - case 0xbf: - x86emuOp_mov_word_DI_IMM(emu); - break; + case 0xb8: + x86emuOp_mov_word_AX_IMM(emu); + break; + case 0xb9: + x86emuOp_mov_word_CX_IMM(emu); + break; + case 0xba: + x86emuOp_mov_word_DX_IMM(emu); + break; + case 0xbb: + x86emuOp_mov_word_BX_IMM(emu); + break; + case 0xbc: + x86emuOp_mov_word_SP_IMM(emu); + break; + case 0xbd: + x86emuOp_mov_word_BP_IMM(emu); + break; + case 0xbe: + x86emuOp_mov_word_SI_IMM(emu); + break; + case 0xbf: + x86emuOp_mov_word_DI_IMM(emu); + break; - case 0xc0: - x86emuOp_opcC0_byte_RM_MEM(emu); - break; - case 0xc1: - x86emuOp_opcC1_word_RM_MEM(emu); - break; - case 0xc2: - x86emuOp_ret_near_IMM(emu); - break; - case 0xc3: - emu->x86.R_IP = pop_word(emu); - break; - case 0xc4: - common_load_far_pointer(emu, &emu->x86.R_ES); - break; - case 0xc5: - common_load_far_pointer(emu, &emu->x86.R_DS); - break; - case 0xc6: - x86emuOp_mov_byte_RM_IMM(emu); - break; - case 0xc7: - x86emuOp_mov_word_RM_IMM(emu); - break; - case 0xc8: - x86emuOp_enter(emu); - break; - case 0xc9: - x86emuOp_leave(emu); - break; - case 0xca: - x86emuOp_ret_far_IMM(emu); - break; - case 0xcb: - x86emuOp_ret_far(emu); - break; - case 0xcc: - x86emuOp_int3(emu); - break; - case 0xcd: - x86emuOp_int_IMM(emu); - break; - case 0xce: - x86emuOp_into(emu); - break; - case 0xcf: - x86emuOp_iret(emu); - break; + case 0xc0: + x86emuOp_opcC0_byte_RM_MEM(emu); + break; + case 0xc1: + x86emuOp_opcC1_word_RM_MEM(emu); + break; + case 0xc2: + x86emuOp_ret_near_IMM(emu); + break; + case 0xc3: + emu->x86.R_IP = pop_word(emu); + break; + case 0xc4: + common_load_far_pointer(emu, &emu->x86.R_ES); + break; + case 0xc5: + common_load_far_pointer(emu, &emu->x86.R_DS); + break; + case 0xc6: + x86emuOp_mov_byte_RM_IMM(emu); + break; + case 0xc7: + x86emuOp_mov_word_RM_IMM(emu); + break; + case 0xc8: + x86emuOp_enter(emu); + break; + case 0xc9: + x86emuOp_leave(emu); + break; + case 0xca: + x86emuOp_ret_far_IMM(emu); + break; + case 0xcb: + x86emuOp_ret_far(emu); + break; + case 0xcc: + x86emuOp_int3(emu); + break; + case 0xcd: + x86emuOp_int_IMM(emu); + break; + case 0xce: + x86emuOp_into(emu); + break; + case 0xcf: + x86emuOp_iret(emu); + break; - case 0xd0: - x86emuOp_opcD0_byte_RM_1(emu); - break; - case 0xd1: - x86emuOp_opcD1_word_RM_1(emu); - break; - case 0xd2: - x86emuOp_opcD2_byte_RM_CL(emu); - break; - case 0xd3: - x86emuOp_opcD3_word_RM_CL(emu); - break; - case 0xd4: - x86emuOp_aam(emu); - break; - case 0xd5: - x86emuOp_aad(emu); - break; - /* 0xd6 Undocumented SETALC instruction */ - case 0xd7: - x86emuOp_xlat(emu); - break; - case 0xd8: - x86emuOp_esc_coprocess_d8(emu); - break; - case 0xd9: - x86emuOp_esc_coprocess_d9(emu); - break; - case 0xda: - x86emuOp_esc_coprocess_da(emu); - break; - case 0xdb: - x86emuOp_esc_coprocess_db(emu); - break; - case 0xdc: - x86emuOp_esc_coprocess_dc(emu); - break; - case 0xdd: - x86emuOp_esc_coprocess_dd(emu); - break; - case 0xde: - x86emuOp_esc_coprocess_de(emu); - break; - case 0xdf: - x86emuOp_esc_coprocess_df(emu); - break; + case 0xd0: + x86emuOp_opcD0_byte_RM_1(emu); + break; + case 0xd1: + x86emuOp_opcD1_word_RM_1(emu); + break; + case 0xd2: + x86emuOp_opcD2_byte_RM_CL(emu); + break; + case 0xd3: + x86emuOp_opcD3_word_RM_CL(emu); + break; + case 0xd4: + x86emuOp_aam(emu); + break; + case 0xd5: + x86emuOp_aad(emu); + break; + /* 0xd6 Undocumented SETALC instruction */ + case 0xd7: + x86emuOp_xlat(emu); + break; + case 0xd8: + x86emuOp_esc_coprocess_d8(emu); + break; + case 0xd9: + x86emuOp_esc_coprocess_d9(emu); + break; + case 0xda: + x86emuOp_esc_coprocess_da(emu); + break; + case 0xdb: + x86emuOp_esc_coprocess_db(emu); + break; + case 0xdc: + x86emuOp_esc_coprocess_dc(emu); + break; + case 0xdd: + x86emuOp_esc_coprocess_dd(emu); + break; + case 0xde: + x86emuOp_esc_coprocess_de(emu); + break; + case 0xdf: + x86emuOp_esc_coprocess_df(emu); + break; - case 0xe0: - x86emuOp_loopne(emu); - break; - case 0xe1: - x86emuOp_loope(emu); - break; - case 0xe2: - x86emuOp_loop(emu); - break; - case 0xe3: - x86emuOp_jcxz(emu); - break; - case 0xe4: - x86emuOp_in_byte_AL_IMM(emu); - break; - case 0xe5: - x86emuOp_in_word_AX_IMM(emu); - break; - case 0xe6: - x86emuOp_out_byte_IMM_AL(emu); - break; - case 0xe7: - x86emuOp_out_word_IMM_AX(emu); - break; + case 0xe0: + x86emuOp_loopne(emu); + break; + case 0xe1: + x86emuOp_loope(emu); + break; + case 0xe2: + x86emuOp_loop(emu); + break; + case 0xe3: + x86emuOp_jcxz(emu); + break; + case 0xe4: + x86emuOp_in_byte_AL_IMM(emu); + break; + case 0xe5: + x86emuOp_in_word_AX_IMM(emu); + break; + case 0xe6: + x86emuOp_out_byte_IMM_AL(emu); + break; + case 0xe7: + x86emuOp_out_word_IMM_AX(emu); + break; - case 0xe8: - x86emuOp_call_near_IMM(emu); - break; - case 0xe9: - x86emuOp_jump_near_IMM(emu); - break; - case 0xea: - x86emuOp_jump_far_IMM(emu); - break; - case 0xeb: - x86emuOp_jump_byte_IMM(emu); - break; - case 0xec: - x86emuOp_in_byte_AL_DX(emu); - break; - case 0xed: - x86emuOp_in_word_AX_DX(emu); - break; - case 0xee: - x86emuOp_out_byte_DX_AL(emu); - break; - case 0xef: - x86emuOp_out_word_DX_AX(emu); - break; + case 0xe8: + x86emuOp_call_near_IMM(emu); + break; + case 0xe9: + x86emuOp_jump_near_IMM(emu); + break; + case 0xea: + x86emuOp_jump_far_IMM(emu); + break; + case 0xeb: + x86emuOp_jump_byte_IMM(emu); + break; + case 0xec: + x86emuOp_in_byte_AL_DX(emu); + break; + case 0xed: + x86emuOp_in_word_AX_DX(emu); + break; + case 0xee: + x86emuOp_out_byte_DX_AL(emu); + break; + case 0xef: + x86emuOp_out_word_DX_AX(emu); + break; - case 0xf0: - x86emuOp_lock(emu); - break; - case 0xf2: - emu->x86.mode |= SYSMODE_PREFIX_REPNE; - break; - case 0xf3: - emu->x86.mode |= SYSMODE_PREFIX_REPE; - break; - case 0xf4: - X86EMU_halt_sys(emu); - break; - case 0xf5: - x86emuOp_cmc(emu); - break; - case 0xf6: - x86emuOp_opcF6_byte_RM(emu); - break; - case 0xf7: - x86emuOp_opcF7_word_RM(emu); - break; + case 0xf0: + x86emuOp_lock(emu); + break; + case 0xf2: + emu->x86.mode |= SYSMODE_PREFIX_REPNE; + break; + case 0xf3: + emu->x86.mode |= SYSMODE_PREFIX_REPE; + break; + case 0xf4: + X86EMU_halt_sys(emu); + break; + case 0xf5: + x86emuOp_cmc(emu); + break; + case 0xf6: + x86emuOp_opcF6_byte_RM(emu); + break; + case 0xf7: + x86emuOp_opcF7_word_RM(emu); + break; - case 0xf8: - CLEAR_FLAG(F_CF); - break; - case 0xf9: - SET_FLAG(F_CF); - break; - case 0xfa: - CLEAR_FLAG(F_IF); - break; - case 0xfb: - SET_FLAG(F_IF); - break; - case 0xfc: - CLEAR_FLAG(F_DF); - break; - case 0xfd: - SET_FLAG(F_DF); - break; - case 0xfe: - x86emuOp_opcFE_byte_RM(emu); - break; - case 0xff: - x86emuOp_opcFF_word_RM(emu); - break; - default: - X86EMU_halt_sys(emu); - break; + case 0xf8: + CLEAR_FLAG(F_CF); + break; + case 0xf9: + SET_FLAG(F_CF); + break; + case 0xfa: + CLEAR_FLAG(F_IF); + break; + case 0xfb: + SET_FLAG(F_IF); + break; + case 0xfc: + CLEAR_FLAG(F_DF); + break; + case 0xfd: + SET_FLAG(F_DF); + break; + case 0xfe: + x86emuOp_opcFE_byte_RM(emu); + break; + case 0xff: + x86emuOp_opcFF_word_RM(emu); + break; + default: + X86EMU_halt_sys(emu); + break; } if (op1 != 0x26 && op1 != 0x2e && op1 != 0x36 && op1 != 0x3e && (op1 | 3) != 0x67) @@ -4899,17 +4900,17 @@ common_bitstring32(struct X86EMU *emu, int op) CONDITIONAL_SET_FLAG(srcval & mask, F_CF); switch (op) { - case 0: - break; - case 1: - write_back_long(emu, srcval | mask); - break; - case 2: - write_back_long(emu, srcval & ~mask); - break; - case 3: - write_back_long(emu, srcval ^ mask); - break; + case 0: + break; + case 1: + write_back_long(emu, srcval | mask); + break; + case 2: + write_back_long(emu, srcval & ~mask); + break; + case 3: + write_back_long(emu, srcval ^ mask); + break; } } @@ -4927,17 +4928,17 @@ common_bitstring16(struct X86EMU *emu, int op) CONDITIONAL_SET_FLAG(srcval & mask, F_CF); switch (op) { - case 0: - break; - case 1: - write_back_word(emu, srcval | mask); - break; - case 2: - write_back_word(emu, srcval & ~mask); - break; - case 3: - write_back_word(emu, srcval ^ mask); - break; + case 0: + break; + case 1: + write_back_word(emu, srcval | mask); + break; + case 2: + write_back_word(emu, srcval & ~mask); + break; + case 3: + write_back_word(emu, srcval ^ mask); + break; } } @@ -5094,28 +5095,28 @@ x86emuOp2_cpuid(struct X86EMU *emu) &emu->x86.R_EDX); #endif switch (emu->x86.R_EAX) { - case 0: - emu->x86.R_EAX = 1; + case 0: + emu->x86.R_EAX = 1; #if !defined(__i386__) && !defined(__amd64__) - /* "GenuineIntel" */ - emu->x86.R_EBX = 0x756e6547; - emu->x86.R_EDX = 0x49656e69; - emu->x86.R_ECX = 0x6c65746e; + /* "GenuineIntel" */ + emu->x86.R_EBX = 0x756e6547; + emu->x86.R_EDX = 0x49656e69; + emu->x86.R_ECX = 0x6c65746e; #endif - break; - case 1: + break; + case 1: #if !defined(__i386__) && !defined(__amd64__) - emu->x86.R_EAX = 0x00000480; - emu->x86.R_EBX = emu->x86.R_ECX = 0; - emu->x86.R_EDX = 0x00000002; + emu->x86.R_EAX = 0x00000480; + emu->x86.R_EBX = emu->x86.R_ECX = 0; + emu->x86.R_EDX = 0x00000002; #else - emu->x86.R_EDX &= 0x00000012; + emu->x86.R_EDX &= 0x00000012; #endif - break; - default: - emu->x86.R_EAX = emu->x86.R_EBX = emu->x86.R_ECX = - emu->x86.R_EDX = 0; - break; + break; + default: + emu->x86.R_EAX = emu->x86.R_EBX = emu->x86.R_ECX = + emu->x86.R_EDX = 0; + break; } } /**************************************************************************** @@ -5343,15 +5344,15 @@ x86emuOp2_32_btX_I(struct X86EMU *emu) mask = (0x1 << bit); switch (emu->cur_rh) { - case 5: - write_back_long(emu, srcval | mask); - break; - case 6: - write_back_long(emu, srcval & ~mask); - break; - case 7: - write_back_long(emu, srcval ^ mask); - break; + case 5: + write_back_long(emu, srcval | mask); + break; + case 6: + write_back_long(emu, srcval & ~mask); + break; + case 7: + write_back_long(emu, srcval ^ mask); + break; } CONDITIONAL_SET_FLAG(srcval & mask, F_CF); } @@ -5372,15 +5373,15 @@ x86emuOp2_16_btX_I(struct X86EMU *emu) bit = shift & 0xF; mask = (0x1 << bit); switch (emu->cur_rh) { - case 5: - write_back_word(emu, srcval | mask); - break; - case 6: - write_back_word(emu, srcval & ~mask); - break; - case 7: - write_back_word(emu, srcval ^ mask); - break; + case 5: + write_back_word(emu, srcval | mask); + break; + case 6: + write_back_word(emu, srcval & ~mask); + break; + case 7: + write_back_word(emu, srcval ^ mask); + break; } CONDITIONAL_SET_FLAG(srcval & mask, F_CF); } @@ -5474,221 +5475,221 @@ X86EMU_exec_two_byte(struct X86EMU * emu) op2 = fetch_byte_imm(emu); switch (op2) { - /* 0x00 Group F (ring 0 PM) */ - /* 0x01 Group G (ring 0 PM) */ - /* 0x02 lar (ring 0 PM) */ - /* 0x03 lsl (ring 0 PM) */ - /* 0x05 loadall (undocumented) */ - /* 0x06 clts (ring 0 PM) */ - /* 0x07 loadall (undocumented) */ - /* 0x08 invd (ring 0 PM) */ - /* 0x09 wbinvd (ring 0 PM) */ + /* 0x00 Group F (ring 0 PM) */ + /* 0x01 Group G (ring 0 PM) */ + /* 0x02 lar (ring 0 PM) */ + /* 0x03 lsl (ring 0 PM) */ + /* 0x05 loadall (undocumented) */ + /* 0x06 clts (ring 0 PM) */ + /* 0x07 loadall (undocumented) */ + /* 0x08 invd (ring 0 PM) */ + /* 0x09 wbinvd (ring 0 PM) */ - /* 0x20 mov reg32(op2); break;creg (ring 0 PM) */ - /* 0x21 mov reg32(op2); break;dreg (ring 0 PM) */ - /* 0x22 mov creg(op2); break;reg32 (ring 0 PM) */ - /* 0x23 mov dreg(op2); break;reg32 (ring 0 PM) */ - /* 0x24 mov reg32(op2); break;treg (ring 0 PM) */ - /* 0x26 mov treg(op2); break;reg32 (ring 0 PM) */ + /* 0x20 mov reg32(op2); break;creg (ring 0 PM) */ + /* 0x21 mov reg32(op2); break;dreg (ring 0 PM) */ + /* 0x22 mov creg(op2); break;reg32 (ring 0 PM) */ + /* 0x23 mov dreg(op2); break;reg32 (ring 0 PM) */ + /* 0x24 mov reg32(op2); break;treg (ring 0 PM) */ + /* 0x26 mov treg(op2); break;reg32 (ring 0 PM) */ - case 0x31: - x86emuOp2_rdtsc(emu); - break; + case 0x31: + x86emuOp2_rdtsc(emu); + break; - case 0x80: - common_jmp_long(emu, ACCESS_FLAG(F_OF)); - break; - case 0x81: - common_jmp_long(emu, !ACCESS_FLAG(F_OF)); - break; - case 0x82: - common_jmp_long(emu, ACCESS_FLAG(F_CF)); - break; - case 0x83: - common_jmp_long(emu, !ACCESS_FLAG(F_CF)); - break; - case 0x84: - common_jmp_long(emu, ACCESS_FLAG(F_ZF)); - break; - case 0x85: - common_jmp_long(emu, !ACCESS_FLAG(F_ZF)); - break; - case 0x86: - common_jmp_long(emu, ACCESS_FLAG(F_CF) || ACCESS_FLAG(F_ZF)); - break; - case 0x87: - common_jmp_long(emu, !(ACCESS_FLAG(F_CF) || ACCESS_FLAG(F_ZF))); - break; - case 0x88: - common_jmp_long(emu, ACCESS_FLAG(F_SF)); - break; - case 0x89: - common_jmp_long(emu, !ACCESS_FLAG(F_SF)); - break; - case 0x8a: - common_jmp_long(emu, ACCESS_FLAG(F_PF)); - break; - case 0x8b: - common_jmp_long(emu, !ACCESS_FLAG(F_PF)); - break; - case 0x8c: - common_jmp_long(emu, xorl(ACCESS_FLAG(F_SF), ACCESS_FLAG(F_OF))); - break; - case 0x8d: - common_jmp_long(emu, !(xorl(ACCESS_FLAG(F_SF), ACCESS_FLAG(F_OF)))); - break; - case 0x8e: - common_jmp_long(emu, - (xorl(ACCESS_FLAG(F_SF), ACCESS_FLAG(F_OF)) || ACCESS_FLAG(F_ZF))); - break; - case 0x8f: - common_jmp_long(emu, - !(xorl(ACCESS_FLAG(F_SF), ACCESS_FLAG(F_OF)) || ACCESS_FLAG(F_ZF))); - break; + case 0x80: + common_jmp_long(emu, ACCESS_FLAG(F_OF)); + break; + case 0x81: + common_jmp_long(emu, !ACCESS_FLAG(F_OF)); + break; + case 0x82: + common_jmp_long(emu, ACCESS_FLAG(F_CF)); + break; + case 0x83: + common_jmp_long(emu, !ACCESS_FLAG(F_CF)); + break; + case 0x84: + common_jmp_long(emu, ACCESS_FLAG(F_ZF)); + break; + case 0x85: + common_jmp_long(emu, !ACCESS_FLAG(F_ZF)); + break; + case 0x86: + common_jmp_long(emu, ACCESS_FLAG(F_CF) || ACCESS_FLAG(F_ZF)); + break; + case 0x87: + common_jmp_long(emu, !(ACCESS_FLAG(F_CF) || ACCESS_FLAG(F_ZF))); + break; + case 0x88: + common_jmp_long(emu, ACCESS_FLAG(F_SF)); + break; + case 0x89: + common_jmp_long(emu, !ACCESS_FLAG(F_SF)); + break; + case 0x8a: + common_jmp_long(emu, ACCESS_FLAG(F_PF)); + break; + case 0x8b: + common_jmp_long(emu, !ACCESS_FLAG(F_PF)); + break; + case 0x8c: + common_jmp_long(emu, xorl(ACCESS_FLAG(F_SF), ACCESS_FLAG(F_OF))); + break; + case 0x8d: + common_jmp_long(emu, !(xorl(ACCESS_FLAG(F_SF), ACCESS_FLAG(F_OF)))); + break; + case 0x8e: + common_jmp_long(emu, + (xorl(ACCESS_FLAG(F_SF), ACCESS_FLAG(F_OF)) || ACCESS_FLAG(F_ZF))); + break; + case 0x8f: + common_jmp_long(emu, + !(xorl(ACCESS_FLAG(F_SF), ACCESS_FLAG(F_OF)) || ACCESS_FLAG(F_ZF))); + break; - case 0x90: - common_set_byte(emu, ACCESS_FLAG(F_OF)); - break; - case 0x91: - common_set_byte(emu, !ACCESS_FLAG(F_OF)); - break; - case 0x92: - common_set_byte(emu, ACCESS_FLAG(F_CF)); - break; - case 0x93: - common_set_byte(emu, !ACCESS_FLAG(F_CF)); - break; - case 0x94: - common_set_byte(emu, ACCESS_FLAG(F_ZF)); - break; - case 0x95: - common_set_byte(emu, !ACCESS_FLAG(F_ZF)); - break; - case 0x96: - common_set_byte(emu, ACCESS_FLAG(F_CF) || ACCESS_FLAG(F_ZF)); - break; - case 0x97: - common_set_byte(emu, !(ACCESS_FLAG(F_CF) || ACCESS_FLAG(F_ZF))); - break; - case 0x98: - common_set_byte(emu, ACCESS_FLAG(F_SF)); - break; - case 0x99: - common_set_byte(emu, !ACCESS_FLAG(F_SF)); - break; - case 0x9a: - common_set_byte(emu, ACCESS_FLAG(F_PF)); - break; - case 0x9b: - common_set_byte(emu, !ACCESS_FLAG(F_PF)); - break; - case 0x9c: - common_set_byte(emu, xorl(ACCESS_FLAG(F_SF), ACCESS_FLAG(F_OF))); - break; - case 0x9d: - common_set_byte(emu, xorl(ACCESS_FLAG(F_SF), ACCESS_FLAG(F_OF))); - break; - case 0x9e: - common_set_byte(emu, - (xorl(ACCESS_FLAG(F_SF), ACCESS_FLAG(F_OF)) || - ACCESS_FLAG(F_ZF))); - break; - case 0x9f: - common_set_byte(emu, - !(xorl(ACCESS_FLAG(F_SF), ACCESS_FLAG(F_OF)) || - ACCESS_FLAG(F_ZF))); - break; + case 0x90: + common_set_byte(emu, ACCESS_FLAG(F_OF)); + break; + case 0x91: + common_set_byte(emu, !ACCESS_FLAG(F_OF)); + break; + case 0x92: + common_set_byte(emu, ACCESS_FLAG(F_CF)); + break; + case 0x93: + common_set_byte(emu, !ACCESS_FLAG(F_CF)); + break; + case 0x94: + common_set_byte(emu, ACCESS_FLAG(F_ZF)); + break; + case 0x95: + common_set_byte(emu, !ACCESS_FLAG(F_ZF)); + break; + case 0x96: + common_set_byte(emu, ACCESS_FLAG(F_CF) || ACCESS_FLAG(F_ZF)); + break; + case 0x97: + common_set_byte(emu, !(ACCESS_FLAG(F_CF) || ACCESS_FLAG(F_ZF))); + break; + case 0x98: + common_set_byte(emu, ACCESS_FLAG(F_SF)); + break; + case 0x99: + common_set_byte(emu, !ACCESS_FLAG(F_SF)); + break; + case 0x9a: + common_set_byte(emu, ACCESS_FLAG(F_PF)); + break; + case 0x9b: + common_set_byte(emu, !ACCESS_FLAG(F_PF)); + break; + case 0x9c: + common_set_byte(emu, xorl(ACCESS_FLAG(F_SF), ACCESS_FLAG(F_OF))); + break; + case 0x9d: + common_set_byte(emu, xorl(ACCESS_FLAG(F_SF), ACCESS_FLAG(F_OF))); + break; + case 0x9e: + common_set_byte(emu, + (xorl(ACCESS_FLAG(F_SF), ACCESS_FLAG(F_OF)) || + ACCESS_FLAG(F_ZF))); + break; + case 0x9f: + common_set_byte(emu, + !(xorl(ACCESS_FLAG(F_SF), ACCESS_FLAG(F_OF)) || + ACCESS_FLAG(F_ZF))); + break; - case 0xa0: - x86emuOp2_push_FS(emu); - break; - case 0xa1: - x86emuOp2_pop_FS(emu); - break; - case 0xa2: - x86emuOp2_cpuid(emu); - break; - case 0xa3: - x86emuOp2_bt_R(emu); - break; - case 0xa4: - x86emuOp2_shld_IMM(emu); - break; - case 0xa5: - x86emuOp2_shld_CL(emu); - break; - case 0xa8: - x86emuOp2_push_GS(emu); - break; - case 0xa9: - x86emuOp2_pop_GS(emu); - break; - case 0xab: - x86emuOp2_bts_R(emu); - break; - case 0xac: - x86emuOp2_shrd_IMM(emu); - break; - case 0xad: - x86emuOp2_shrd_CL(emu); - break; - case 0xaf: - x86emuOp2_imul_R_RM(emu); - break; + case 0xa0: + x86emuOp2_push_FS(emu); + break; + case 0xa1: + x86emuOp2_pop_FS(emu); + break; + case 0xa2: + x86emuOp2_cpuid(emu); + break; + case 0xa3: + x86emuOp2_bt_R(emu); + break; + case 0xa4: + x86emuOp2_shld_IMM(emu); + break; + case 0xa5: + x86emuOp2_shld_CL(emu); + break; + case 0xa8: + x86emuOp2_push_GS(emu); + break; + case 0xa9: + x86emuOp2_pop_GS(emu); + break; + case 0xab: + x86emuOp2_bts_R(emu); + break; + case 0xac: + x86emuOp2_shrd_IMM(emu); + break; + case 0xad: + x86emuOp2_shrd_CL(emu); + break; + case 0xaf: + x86emuOp2_imul_R_RM(emu); + break; - /* 0xb0 TODO: cmpxchg */ - /* 0xb1 TODO: cmpxchg */ - case 0xb2: - x86emuOp2_lss_R_IMM(emu); - break; - case 0xb3: - x86emuOp2_btr_R(emu); - break; - case 0xb4: - x86emuOp2_lfs_R_IMM(emu); - break; - case 0xb5: - x86emuOp2_lgs_R_IMM(emu); - break; - case 0xb6: - x86emuOp2_movzx_byte_R_RM(emu); - break; - case 0xb7: - x86emuOp2_movzx_word_R_RM(emu); - break; - case 0xba: - x86emuOp2_btX_I(emu); - break; - case 0xbb: - x86emuOp2_btc_R(emu); - break; - case 0xbc: - x86emuOp2_bsf(emu); - break; - case 0xbd: - x86emuOp2_bsr(emu); - break; - case 0xbe: - x86emuOp2_movsx_byte_R_RM(emu); - break; - case 0xbf: - x86emuOp2_movsx_word_R_RM(emu); - break; + /* 0xb0 TODO: cmpxchg */ + /* 0xb1 TODO: cmpxchg */ + case 0xb2: + x86emuOp2_lss_R_IMM(emu); + break; + case 0xb3: + x86emuOp2_btr_R(emu); + break; + case 0xb4: + x86emuOp2_lfs_R_IMM(emu); + break; + case 0xb5: + x86emuOp2_lgs_R_IMM(emu); + break; + case 0xb6: + x86emuOp2_movzx_byte_R_RM(emu); + break; + case 0xb7: + x86emuOp2_movzx_word_R_RM(emu); + break; + case 0xba: + x86emuOp2_btX_I(emu); + break; + case 0xbb: + x86emuOp2_btc_R(emu); + break; + case 0xbc: + x86emuOp2_bsf(emu); + break; + case 0xbd: + x86emuOp2_bsr(emu); + break; + case 0xbe: + x86emuOp2_movsx_byte_R_RM(emu); + break; + case 0xbf: + x86emuOp2_movsx_word_R_RM(emu); + break; - /* 0xc0 TODO: xadd */ - /* 0xc1 TODO: xadd */ - /* 0xc8 TODO: bswap */ - /* 0xc9 TODO: bswap */ - /* 0xca TODO: bswap */ - /* 0xcb TODO: bswap */ - /* 0xcc TODO: bswap */ - /* 0xcd TODO: bswap */ - /* 0xce TODO: bswap */ - /* 0xcf TODO: bswap */ + /* 0xc0 TODO: xadd */ + /* 0xc1 TODO: xadd */ + /* 0xc8 TODO: bswap */ + /* 0xc9 TODO: bswap */ + /* 0xca TODO: bswap */ + /* 0xcb TODO: bswap */ + /* 0xcc TODO: bswap */ + /* 0xcd TODO: bswap */ + /* 0xce TODO: bswap */ + /* 0xcf TODO: bswap */ - default: - X86EMU_halt_sys(emu); - break; + default: + X86EMU_halt_sys(emu); + break; } } @@ -7949,28 +7950,28 @@ ins(struct X86EMU *emu, int size) uint32_t count = ((emu->x86.mode & SYSMODE_PREFIX_DATA) ? emu->x86.R_ECX : emu->x86.R_CX); switch (size) { - case 1: - while (count--) { - store_byte(emu, emu->x86.R_ES, emu->x86.R_DI, - (*emu->emu_inb) (emu, emu->x86.R_DX)); - emu->x86.R_DI += inc; - } - break; + case 1: + while (count--) { + store_byte(emu, emu->x86.R_ES, emu->x86.R_DI, + (*emu->emu_inb) (emu, emu->x86.R_DX)); + emu->x86.R_DI += inc; + } + break; - case 2: - while (count--) { - store_word(emu, emu->x86.R_ES, emu->x86.R_DI, - (*emu->emu_inw) (emu, emu->x86.R_DX)); - emu->x86.R_DI += inc; - } + case 2: + while (count--) { + store_word(emu, emu->x86.R_ES, emu->x86.R_DI, + (*emu->emu_inw) (emu, emu->x86.R_DX)); + emu->x86.R_DI += inc; + } + break; + case 4: + while (count--) { + store_long(emu, emu->x86.R_ES, emu->x86.R_DI, + (*emu->emu_inl) (emu, emu->x86.R_DX)); + emu->x86.R_DI += inc; break; - case 4: - while (count--) { - store_long(emu, emu->x86.R_ES, emu->x86.R_DI, - (*emu->emu_inl) (emu, emu->x86.R_DX)); - emu->x86.R_DI += inc; - break; - } + } } emu->x86.R_CX = 0; if (emu->x86.mode & SYSMODE_PREFIX_DATA) { @@ -7979,18 +7980,18 @@ ins(struct X86EMU *emu, int size) emu->x86.mode &= ~(SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE); } else { switch (size) { - case 1: - store_byte(emu, emu->x86.R_ES, emu->x86.R_DI, - (*emu->emu_inb) (emu, emu->x86.R_DX)); - break; - case 2: - store_word(emu, emu->x86.R_ES, emu->x86.R_DI, - (*emu->emu_inw) (emu, emu->x86.R_DX)); - break; - case 4: - store_long(emu, emu->x86.R_ES, emu->x86.R_DI, - (*emu->emu_inl) (emu, emu->x86.R_DX)); - break; + case 1: + store_byte(emu, emu->x86.R_ES, emu->x86.R_DI, + (*emu->emu_inb) (emu, emu->x86.R_DX)); + break; + case 2: + store_word(emu, emu->x86.R_ES, emu->x86.R_DI, + (*emu->emu_inw) (emu, emu->x86.R_DX)); + break; + case 4: + store_long(emu, emu->x86.R_ES, emu->x86.R_DI, + (*emu->emu_inl) (emu, emu->x86.R_DX)); + break; } emu->x86.R_DI += inc; } @@ -8013,28 +8014,28 @@ outs(struct X86EMU *emu, int size) uint32_t count = ((emu->x86.mode & SYSMODE_PREFIX_DATA) ? emu->x86.R_ECX : emu->x86.R_CX); switch (size) { - case 1: - while (count--) { - (*emu->emu_outb) (emu, emu->x86.R_DX, - fetch_byte(emu, emu->x86.R_ES, emu->x86.R_SI)); - emu->x86.R_SI += inc; - } - break; + case 1: + while (count--) { + (*emu->emu_outb) (emu, emu->x86.R_DX, + fetch_byte(emu, emu->x86.R_ES, emu->x86.R_SI)); + emu->x86.R_SI += inc; + } + break; - case 2: - while (count--) { - (*emu->emu_outw) (emu, emu->x86.R_DX, - fetch_word(emu, emu->x86.R_ES, emu->x86.R_SI)); - emu->x86.R_SI += inc; - } + case 2: + while (count--) { + (*emu->emu_outw) (emu, emu->x86.R_DX, + fetch_word(emu, emu->x86.R_ES, emu->x86.R_SI)); + emu->x86.R_SI += inc; + } + break; + case 4: + while (count--) { + (*emu->emu_outl) (emu, emu->x86.R_DX, + fetch_long(emu, emu->x86.R_ES, emu->x86.R_SI)); + emu->x86.R_SI += inc; break; - case 4: - while (count--) { - (*emu->emu_outl) (emu, emu->x86.R_DX, - fetch_long(emu, emu->x86.R_ES, emu->x86.R_SI)); - emu->x86.R_SI += inc; - break; - } + } } emu->x86.R_CX = 0; if (emu->x86.mode & SYSMODE_PREFIX_DATA) { @@ -8043,18 +8044,18 @@ outs(struct X86EMU *emu, int size) emu->x86.mode &= ~(SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE); } else { switch (size) { - case 1: - (*emu->emu_outb) (emu, emu->x86.R_DX, - fetch_byte(emu, emu->x86.R_ES, emu->x86.R_SI)); - break; - case 2: - (*emu->emu_outw) (emu, emu->x86.R_DX, - fetch_word(emu, emu->x86.R_ES, emu->x86.R_SI)); - break; - case 4: - (*emu->emu_outl) (emu, emu->x86.R_DX, - fetch_long(emu, emu->x86.R_ES, emu->x86.R_SI)); - break; + case 1: + (*emu->emu_outb) (emu, emu->x86.R_DX, + fetch_byte(emu, emu->x86.R_ES, emu->x86.R_SI)); + break; + case 2: + (*emu->emu_outw) (emu, emu->x86.R_DX, + fetch_word(emu, emu->x86.R_ES, emu->x86.R_SI)); + break; + case 4: + (*emu->emu_outl) (emu, emu->x86.R_DX, + fetch_long(emu, emu->x86.R_ES, emu->x86.R_SI)); + break; } emu->x86.R_SI += inc; } diff --git a/BaS_gcc/x86emu/x86emu_util.c b/BaS_gcc/x86emu/x86emu_util.c index 2a2be93..9a32dbc 100644 --- a/BaS_gcc/x86emu/x86emu_util.c +++ b/BaS_gcc/x86emu/x86emu_util.c @@ -79,11 +79,11 @@ Reads a byte value from the emulator memory. ****************************************************************************/ static uint8_t rdb(struct X86EMU *emu, uint32_t addr) { - if (addr > emu->mem_size - 1) + if (addr > emu->mem_size - 1) { - X86EMU_halt_sys(emu); + X86EMU_halt_sys(emu); } - return emu->mem_base[addr]; + return emu->mem_base[addr]; } /**************************************************************************** @@ -98,11 +98,11 @@ Reads a word value from the emulator memory. ****************************************************************************/ static uint16_t rdw(struct X86EMU *emu, uint32_t addr) { - if (addr > emu->mem_size - 2) + if (addr > emu->mem_size - 2) { - X86EMU_halt_sys(emu); + X86EMU_halt_sys(emu); } - return le16dec(emu->mem_base + addr); + return le16dec(emu->mem_base + addr); } /**************************************************************************** @@ -116,11 +116,11 @@ Reads a long value from the emulator memory. ****************************************************************************/ static uint32_t rdl(struct X86EMU *emu, uint32_t addr) { - if (addr > emu->mem_size - 4) + if (addr > emu->mem_size - 4) { - X86EMU_halt_sys(emu); + X86EMU_halt_sys(emu); } - return le32dec(emu->mem_base + addr); + return le32dec(emu->mem_base + addr); } /**************************************************************************** @@ -133,11 +133,11 @@ Writes a byte value to emulator memory. ****************************************************************************/ static void wrb(struct X86EMU *emu, uint32_t addr, uint8_t val) { - if (addr > emu->mem_size - 1) + if (addr > emu->mem_size - 1) { - X86EMU_halt_sys(emu); + X86EMU_halt_sys(emu); } - emu->mem_base[addr] = val; + emu->mem_base[addr] = val; } /**************************************************************************** @@ -150,11 +150,11 @@ Writes a word value to emulator memory. ****************************************************************************/ static void wrw(struct X86EMU *emu, uint32_t addr, uint16_t val) { - if (addr > emu->mem_size - 2) + if (addr > emu->mem_size - 2) { - X86EMU_halt_sys(emu); + X86EMU_halt_sys(emu); } - le16enc(emu->mem_base + addr, val); + le16enc(emu->mem_base + addr, val); } /**************************************************************************** PARAMETERS: @@ -166,28 +166,28 @@ Writes a long value to emulator memory. ****************************************************************************/ static void wrl(struct X86EMU *emu, uint32_t addr, uint32_t val) { - if (addr > emu->mem_size - 4) + if (addr > emu->mem_size - 4) { - X86EMU_halt_sys(emu); + X86EMU_halt_sys(emu); } - le32enc(emu->mem_base + addr, val); + le32enc(emu->mem_base + addr, val); } /*----------------------------- Setup -------------------------------------*/ void X86EMU_init_default(struct X86EMU *emu) { - int i; + int i; - emu->emu_rdb = rdb; - emu->emu_rdw = rdw; - emu->emu_rdl = rdl; - emu->emu_wrb = wrb; - emu->emu_wrw = wrw; - emu->emu_wrl = wrl; + emu->emu_rdb = rdb; + emu->emu_rdw = rdw; + emu->emu_rdl = rdl; + emu->emu_wrb = wrb; + emu->emu_wrw = wrw; + emu->emu_wrl = wrl; - for (i = 0; i < 256; i++) + for (i = 0; i < 256; i++) { - emu->_X86EMU_intrTab[i] = NULL; + emu->_X86EMU_intrTab[i] = NULL; } } diff --git a/BaS_gcc/x86emu/x86pcibios.c b/BaS_gcc/x86emu/x86pcibios.c index 0d09bbe..afa8110 100644 --- a/BaS_gcc/x86emu/x86pcibios.c +++ b/BaS_gcc/x86emu/x86pcibios.c @@ -6,14 +6,8 @@ #include "bas_printf.h" extern unsigned short offset_port; -#define DBG_PCIBIOS -#ifdef DBG_PCIBIOS -#define dbg(format, arg...) do { xprintf("DEBUG (%s()): " format, __FUNCTION__, ##arg);} while(0) -#else -#define dbg(format, arg...) do {;} while (0) -#endif /* DBG_PCIBIOS */ -#define err(format, arg...) do { xprintf("ERROR (%s()): " format, __FUNCTION__, ##arg); } while(0); - +#define DEBUG +#include "debug.h" int x86_pcibios_handler(struct X86EMU *emu) {