diff --git a/Tools/bootloaders/mRo-M10104_bl.bin b/Tools/bootloaders/mRo-M10104_bl.bin new file mode 100755 index 0000000000000..9c85c71320c6d Binary files /dev/null and b/Tools/bootloaders/mRo-M10104_bl.bin differ diff --git a/Tools/bootloaders/mRo-M10104_bl.hex b/Tools/bootloaders/mRo-M10104_bl.hex new file mode 100644 index 0000000000000..83bf1056b3a14 --- /dev/null +++ b/Tools/bootloaders/mRo-M10104_bl.hex @@ -0,0 +1,1160 @@ +:020000040800F2 +:1000000000070020F10100083D260008F525000842 +:100010001D260008F525000815260008F301000834 +:10002000F3010008F3010008F3010008E5360008B9 +:10003000F3010008F3010008F3010008F3010008D0 +:10004000F3010008F3010008F3010008F3010008C0 +:10005000F3010008F3010008F3010008F3010008B0 +:10006000F3010008F3010008F3010008F3010008A0 +:10007000F3010008F3010008F3010008F301000890 +:10008000F3010008F3010008F3010008F301000880 +:10009000F3010008D5250008E5250008F301000854 +:1000A000F3010008F3010008F3010008F301000860 +:1000B000D9390008F3010008F3010008F301000832 +:1000C000F3010008F3010008F3010008F301000840 +:1000D000F3010008F3010008F3010008F301000830 +:1000E000F3010008F3010008F3010008F301000820 +:1000F000F3010008F3010008F3010008F301000810 +:10010000F3010008F3010008F3010008F3010008FF +:10011000F3010008F3010008F3010008F3010008EF +:10012000F3010008F3010008F3010008F3010008DF +:10013000F3010008F3010008F3010008F3010008CF +:10014000F3010008F3010008F3010008F3010008BF +:10015000F3010008F3010008F3010008F3010008AF +:10016000F3010008F3010008F3010008F30100089F +:10017000F3010008F3010008F3010008F30100088F +:10018000F3010008F3010008F3010008F30100087F +:10019000F3010008F3010008F3010008F30100086F +:1001A000F3010008F3010008F3010008F30100085F +:1001B000F3010008F3010008F3010008F30100084F +:1001C000F3010008F3010008F3010008F30100083F +:1001D000F3010008F3010008F3010008F30100082F +:1001E000650F0008FFFFFFFFFFFFFFFFFFFFFFFF9F +:1001F00002E000F000F8FEE772B6374880F30888A6 +:10020000364880F3098836483649086040F20000D5 +:10021000CCF200004EF63471CEF200010860BFF35C +:100220004F8FBFF36F8F40F20000C0F2F0004EF628 +:100230008851CEF200010860BFF34F8FBFF36F8F7C +:100240004FF00000E1EE100A4EF63C71CEF20001D4 +:100250000860062080F31488BFF36F8F04F04AF81B +:1002600004F01CF94FF055301F491B4A91423CBF26 +:1002700041F8040BFAE71D49184A91423CBF41F886 +:10028000040BFAE71A491B4A1B4B9A423EBF51F82E +:10029000040B42F8040BF8E700201849184A914271 +:1002A0003CBF41F8040BFAE704F028F804F03CF9ED +:1002B000144C154DAC4203DA54F8041B8847F9E797 +:1002C00000F042F8114C124DAC4203DA54F8041B12 +:1002D0008847F9E704F010B8000700200023002049 +:1002E0000000000808ED00E00001002000070020E9 +:1002F000B847000800230020A4230020A8230020E2 +:10030000D4500020E0010008E4010008E4010008E6 +:10031000E40100082DE9F04F2DED108AC1F80CD052 +:10032000C3689D46BDEC108ABDE8F08F002383F3BF +:1003300011882846A047002003F07CFCFEE703F06C +:10034000FFFB00DFFEE70000F8B500F01DFE03F044 +:100350006FFF074603F0C0FF0546C0BB284B9F4216 +:1003600035D001339F4235D0264B27F0FF029A4209 +:1003700033D1F8B200F03EFC2E4642F2107400F089 +:100380003FFC08B10024264601F0F2F848B30320F0 +:1003900000F03CF80024264635B11B4B9F4203D0A9 +:1003A00003F092FF00242646002003F04BFF0EB11D +:1003B00000F042F800F058FC02F048F90546BCB9DC +:1003C00000F09AFC4FF47A7003F03AFCF7E72E46FF +:1003D0000024D4E704460126D1E706464FF4FA6428 +:1003E000CDE7B4F5FA6F04BF4FF47A740126D3E772 +:1003F00002F02CF9431BA342E2D900F01DF8DBE721 +:10040000010007B0000008B0263A09B0084B187088 +:1004100003280CD8DFE800F008050208022000F0ED +:100420000FBE022000F004BE024B00225A6070474B +:10043000A8230020AC23002038B501F099F830B192 +:10044000254B03221A70254B00225A6038BD244BDD +:10045000244A19680131F9D004339342F9D1224C6E +:100460001F4DD4F80428AA42F0D3204B9B6803F117 +:10047000006303F5F0439A42E8D203F0F7FE03F07D +:1004800009FF002000F09AFD0220FFF7BFFF184B84 +:100490009A6D00229A65996F9A67996FD96DDA659E +:1004A000D96FDA67D96F196E1A66D3F88010C3F85E +:1004B0008020D3F8803072B64FF0E0233021C3F8AB +:1004C000085DD4F80038D4F8042881F311889D46DB +:1004D00083F308881047B9E7A8230020AC23002045 +:1004E0000078000820780008007000080023002031 +:1004F00000100240094A136849F2690099B21B0CC6 +:1005000000FB01331360064B186844F2506182B25D +:10051000000C01FB0200186080B270471423002019 +:100520001023002010B500211022044600F0A2FD87 +:10053000034B03CB206061601868A06010BD00BF52 +:100540009075FF1FF0B5ADF54F7D6CAC4FF4C472E4 +:1005500007460D462046002100F08CFD02F076F89B +:10056000244B4FF47A72B0FBF2F0186093E8070066 +:10057000022384E807000DF5E9702382FFF7D2FF1C +:1005800044F604431C49238406A804F035F81823D4 +:1005900084F832310DF2E3266B440DF1300C1A462B +:1005A00003CA624530607160134606F10806F6D151 +:1005B0000DAE31460122204600F0A8FD0023039332 +:1005C000AB7E029305F11903019380B20123CDE9BB +:1005D00004600093E97E05A3D3E90023384602F0C6 +:1005E00049FC0DF54F7DF0BDAFF300809E6AC4213C +:1005F000818A46EEB4230020084600082DE9F04128 +:100600002C4C237ADAB080460D465BBB27A92846DE +:1006100000F0A2FE0746002842D19DF89D60C82E3A +:100620003ED801464FF4A662204600F023FD4FF469 +:100630008073C4F8F8314FF40073C4F80C334FF4EE +:100640004073C4F8203432460DF19E0104F10900D4 +:1006500000F0FEFC26449DF89C30777223720BB9A3 +:10066000EB7E23728122002106AC27A800F002FD58 +:100670000122214627A800F0B5FE00230393AB7E9C +:10068000029305F1190380B201932823CDE90440B8 +:100690000093E97E05A3D3E90023404602F0EAFB7C +:1006A0005AB0BDE8F08100BFAFF3008026417272FE +:1006B000DF25D7B7FC330020F0B5254E4FF48A75FF +:1006C00005FB0065F1B096F8D83085F8DC300024E1 +:1006D000D822214685F8E8403AA800F0CBFC06F184 +:1006E000090000F0BFFCD5F8E4308DF8F000C2B28C +:1006F00006AF06F109010DF1F100CDE93A3400F041 +:10070000A7FC394601223AA800F0A2FE80B2CDE94A +:10071000047008230127CDE9023706F1D8030193BD +:1007200030230093317A0B4807A3D3E9002302F06A +:10073000A1FBA04206DD01F089FFC5F8E0003846C4 +:1007400071B0F0BD2046FBE778F6339F93CACD8D9C +:10075000FC330020CC3300202DE9F0411D4D1E4E0E +:100760001E4F86B0284602F0B1FB034658B3002462 +:10077000CDE90344ADF81440027B8DF8142099684C +:100780004068029403AA03C21B68DFF8548043F058 +:100790000043029301F05CFF821941F100030094D1 +:1007A00002A9384601F0D8F8A04205DD284602F03B +:1007B00091FB88F80040D5E798F80030072B05D862 +:1007C000013388F8003006B0BDE8F081014802F03E +:1007D00081FBF8E7CC33002040420F00383900207D +:1007E0003139002070B50D4614461E4602F09EFABF +:1007F00050B9022E10D1012C0ED112A3D3E900233F +:10080000C5E90023012007E0282C10D005D8012CD1 +:1008100009D0052C0FD0002070BD302CFBD10BA3CC +:10082000D3E90023ECE70BA3D3E90023E8E70BA30C +:10083000D3E90023E4E70BA3D3E90023E0E700BFFB +:10084000AFF30080401DA12026812A0B78F6339F4C +:1008500093CACD8D9E6AC421818A46EE264172726A +:10086000DF25D7B7F017304A39059E5638B505460B +:100870000E4C0021013500F0C3FBA4F82C55B4F850 +:100880002C0500F0A5FB78B1B4F82C0500F0B0FB06 +:10089000014648B9B4F82C0500F0B2FBB4F82C3589 +:1008A0000133A4F82C35EAE738BD00BFFC33002043 +:1008B00010B50A4B0A4A1A6003F5805393F8582082 +:1008C0003AB95C6D2CB1204600F0D0FE204601F014 +:1008D00007F8BDE81040034800F0C8BE38390020D2 +:1008E00054460008784900202DE9F04F8FB000AF42 +:1008F00005460C4602F01AFA00284BD1237E022B43 +:100900001BD1E38A012B18D101F0A0FE0646FFF7A8 +:10091000F1FD03464FF4C870DFF8D482B3FBF0F268 +:1009200006F5167602FB103316FA83F3C8F800308A +:10093000E37E33B9A74B00221A703C37BD46BDE8B1 +:10094000F08F07F12401204600F0BAFC0028F4D112 +:1009500007F11400FFF7E6FD97F8264007F11401B0 +:10096000224607F1270003F015FE0028E2D10F2CE4 +:1009700008D8984B1C70D8F80030A3F51673C8F847 +:100980000030DAE797F824100029D6D0284602F084 +:10099000C5F9D2E7E38A282B33D010D8012B2BD00E +:1009A000052BCAD1BFF34F8F8B498C4BCA6802F419 +:1009B000E0621343CB60BFF34F8F00BFFDE7302BE6 +:1009C000BBD1874EE17E327A9142B6D1607E31460C +:1009D000002291F8DC50854200F0AD800132042AFB +:1009E00001F58A71F5D1326840F6B831FA328A429F +:1009F00094BF32603160A0E721462846FFF7A2FD90 +:100A00009BE721462846FFF7F9FD96E7B2F8EC5040 +:100A10007B6005F103094FEA99094FEA8902D11D6C +:100A2000C908A8EBC1039D46EB460021584600F0DB +:100A300021FB04F1EE012A463144584600F008FB40 +:100A40007B6813B9012000F0B9FA96F8D20000F0E3 +:100A5000BFFA044630B9307200F0DAFA204600F0EE +:100A6000ADFAB0E0D6F8D4203AB996F8D200B6F88C +:100A70002C25824201D8FFF7F9FED6F8D4202A446B +:100A8000944208D296F8D200B6F82C250130824262 +:100A900001D8FFF7EBFE70685FFA89F2594600F063 +:100AA000F1FA08B9C54679E0726896F8D2002A448E +:100AB0007260D6F8D42005EB0209C6F8D49000F095 +:100AC00087FA814509D396F8D220D6F8D4000132AE +:100AD000001B86F8D220C6F8D400FF2D0FD80024C2 +:100AE000347200F095FA204600F068FA00F040FDFC +:100AF0003C4B188108B9FFF79FFCC5461DE7BB6852 +:100B000096F8D9000AFB0362FB68D2F8E41082F879 +:100B1000E83001F58061C2F8E030C2F8E410FFF778 +:100B2000CBFDFFF719FE96F8D920013202F003023F +:100B300086F8D920B6E74FF48A7A0AFB02F505F168 +:100B4000EA013144204600F0B7FCF86000287FF449 +:100B5000F4AE3544012285F8E82001F077FDD5F8A0 +:100B6000E020D6ED007ADFED206A801A192838BF20 +:100B7000192040F6B832904228BF1046B8EE677A86 +:100B800007EE900AF8EEE77A67EEA67ADFED176ACD +:100B9000E7EE267AFCEEE77AC6ED007A96F8D930D1 +:100BA0007168BB600AFB03F4321992F8E8505DB13A +:100BB000D2F8E4308B42E8463FF428AF002182F8B7 +:100BC000E810C2F8E010C5467368064A9B0A013374 +:100BD0001381B2E6C533002000ED00E00400FA0501 +:100BE000FC330020B4230020CDCCCC3D6666663FAC +:100BF000C8330020014B1870704700BFC02300208D +:100C000038B54FF00054144B22689A4221D1607DD0 +:100C1000F0B1124B124918701248237D03724FF441 +:100C20008073C0F8F8314FF40073C0F80C3300251E +:100C30004FF44073C0F82034C0F8E450C9220930A2 +:100C400000F006FAE0222946204600F013FA0120BF +:100C500038BD0020FCE700BF9AAD44C5C02300208A +:100C600016000020FC33002037B500F081FC194D40 +:100C7000194928810223002218486B7101F0CAF833 +:100C800000230193164B174900931748174B4FF455 +:100C9000805202F01BF8164B197811B1124802F07D +:100CA0003DF801F0D3FC0446FFF724FC4FF4C87371 +:100CB000B0FBF3F202FB130304F5167010FA83F095 +:100CC0000C4B186003F008FB08B10F232B8103B015 +:100CD00030BD00BFB423002040420F00383900204F +:100CE000E5070008C4230020CC330020E9080008F1 +:100CF000C0230020C83300202DE9F04F2DED028BDA +:100D000090A7D7E900670FF24429D9E90089884CF8 +:100D100095B00DAD9FED848BFFF71EFDDFF834B26B +:100D200000230C93ADF83C300D936B6000230DF164 +:100D300025028DED008B4FF0010A09A958468DF868 +:100D400025308DF824A001F0E9FB9DF82420002334 +:100D5000002A40F0AF80204601F0E8FF0546002859 +:100D600047D1DFF8F4B101F071FCDBF800309842B4 +:100D70003FD301F06BFC0790FFF7BCFB079A4FF4E1 +:100D8000C873B0FBF3F101FB130302F5167010FA00 +:100D900083F0CBF80000DFF8C4B19BF80010079196 +:100DA000002914BF2B46534610A88DF83030FFF7AA +:100DB000B9FB0799C1F11002D2B2062A10AB28BFC5 +:100DC000062219440DF13100079200F041F9079A0B +:100DD0000CAB0393182302930132564BD2B2CDE9E8 +:100DE00000A304923B463246204601F0E5FF8BF813 +:100DF000005001F02BFC504A504D1368C31AB3F554 +:100E00007A7F32D3106001F023FC02460B46204665 +:100E100002F06AF8204601F089FF30B32B7ADFF840 +:100E200040A1002B14BF032302238AF8053001F0F0 +:100E30000DFC0DF1400B4FF47A730122B0FBF3F07F +:100E40005946CAF80000504600F012FA18230293DF +:100E50003B4B019380B240F25513CDE903B00093B0 +:100E600042464B46204601F0A7FF2B7AB3B101F072 +:100E7000EDFB4FF0000A83464FF48A7295F8D900D3 +:100E8000504400F0030002FB005393F8E8100029DF +:100E900034D00AF1010ABAF1040FEFD1C82002F0F0 +:100EA000CFFE2B7A002B7FF434AF15B0BDEC028B54 +:100EB000BDE8F08F4FF0904110A84A6982F010020F +:100EC0004A611946102200F0D5F80DF126030AAA4E +:100ED0000CA9584600F04AFE95E8030011AB83E8E0 +:100EE00003009DF83C308DF84C300C9B109310A9FA +:100EF000DDE90A23204602F0CBF917E7D3F8E0102A +:100F000049B12B68FA2B38BFFA23ABEB010105334B +:100F1000B1EB430FBDD3FFF7CFFB4FF48A7200282C +:100F2000B7D1BBE7AFF30080000000000000000075 +:100F3000CC330020C43300202C390020FC330020A7 +:100F400030390020401DA12026812A0BF1C6A7C1FF +:100F5000D068080F38390020C8330020C53300207E +:100F6000B423002008B5054800F0A4FEBDE8084001 +:100F7000034A0449002003F0F1BA00BF38390020C9 +:100F8000404E0020B108000870B502F0F5FF094E90 +:100F9000094D3080002428683388834208D902F044 +:100FA000E7FF2B6804440133B4F5F04F2B60F2D314 +:100FB00070BD00BF344E0020084E002003F08EB8F4 +:100FC00000F10060920000F5F04003F011B800005D +:100FD000054B1A68054B1B889B1A834202D91044A3 +:100FE00002F0C6BF00207047084E0020344E00209B +:100FF000024B1B68184402F0C1BF00BF084E00201E +:10100000024B1B68184402F0CBBF00BF084E002003 +:10101000064991F8243033B10023086A81F824305E +:101020000822FFF7CDBF0120704700BF0C4E002003 +:10103000022802BF4FF0904310229A6170470000CF +:10104000022802BF4FF090434FF480129A6170471C +:1010500010B50023934203D0CC5CC4540133F9E7AC +:1010600010BD000003460246D01A12F9011B0029E8 +:10107000FAD1704702440346934202D003F8011BA1 +:10108000FAE770472DE9F8431F4D144695F82420E0 +:101090000746884652BBDFF870909CB395F8243021 +:1010A0002BB92022FF2148462F62FFF7E3FF95F876 +:1010B0002400C0F10802A24228BF2246D6B241460F +:1010C000920005EB8000FFF7C3FF95F82430A41BC6 +:1010D0001E44F6B2082E17449044E4B285F824600A +:1010E000DBD1FFF795FF0028D7D108E02B6A03EB8F +:1010F00082038342CFD0FFF78BFF0028CBD10020A3 +:10110000BDE8F8830120FBE70C4E00202DE9F347F2 +:101110000D46044600219046284640F27912FFF71A +:10112000A9FF234620220021284602F053F8231D60 +:1011300002222021284602F04DF8631D03222221BD +:10114000284602F047F8A31D03222521284602F075 +:1011500041F804F1080310222821284602F03AF849 +:1011600004F1100308223821284602F033F804F174 +:10117000110308224021284602F02CF804F1120342 +:1011800008224821284602F025F804F11403202201 +:101190005021284602F01EF804F118034022702165 +:1011A000284602F017F804F120030822B02128464F +:1011B00002F010F804F121030822B821284602F0B9 +:1011C00009F804F12207C0263B463146082228468A +:1011D000083601F0FFFFB6F5A07F07F10107F3D154 +:1011E00094F832308DF8073031460DF107030822AC +:1011F000284601F0EFFF002604F1330A9DF807307E +:101200004FEAC6099E4209F5A47720D394F83231FB +:10121000502B28BF50238DF80730B8F1000F08D1AC +:1012200039460DF107030722284601F0D3FF09F2E2 +:101230004F17002604F233149DF807309E4207EB47 +:10124000C6010DD30731C80802B0BDE8F0870AEB2C +:10125000060308223946284601F0BCFF0136CDE7D7 +:10126000A3190822284601F0B5FF0136E4E7000083 +:1012700013B504460846002101602346C0F8031058 +:101280002022019001F0A6FF0198231D02222021B7 +:1012900001F0A0FF0198631D0322222101F09AFFB3 +:1012A0000198A31D0322252101F094FF019804F168 +:1012B00008031022282101F08DFF072002B010BD85 +:1012C000F7B5047F05460E462CB1838A122B02D94E +:1012D000012003B0F0BD00231946072200962846DE +:1012E00001F03CFE731C00930122002307212846D5 +:1012F00001F034FED4B9B31C009305222346082123 +:10130000284601F02BFE0D24B378102BE0D8374689 +:10131000B278BB1B934210D32B7FA88A0734E40812 +:10132000B3B9844294BF00200120D2E7AB8ADB002E +:10133000083BDB08B3700824E6E7FB1C009321465A +:1013400000230822284601F009FE08340137DFE7B0 +:10135000201A18BF0120BCE7F7B5047F05460E46EA +:101360002CB1838ACA2B02D9012003B0F0BD00231F +:10137000194600960822284601F0F0FD731CD4B9E6 +:101380000822009311462346284601F0E7FD102469 +:101390007378C82BE8D8012372785F1C013B934215 +:1013A00010D32B7FA88A0734E408B3B9844294BFD2 +:1013B00000200120D9E7AB8ADB00083BDB08737013 +:1013C0000824E5E7F3190093214600230822284664 +:1013D00001F0C4FD08343B46DEE7201A18BF0120A7 +:1013E000C3E70000F7B50D4604460021164628461F +:1013F0008122FFF73FFE234608220021284601F004 +:10140000E9FE94F901206378002AB8BF7F238DF8A4 +:1014100007309EB90DF1070307220821284601F085 +:10142000D9FE0F27002602349DF807309E4207EBB5 +:10143000C60105D30731C80803B0F0BD0827F1E79E +:10144000A3190822284601F0C5FE0136ECE700008A +:10145000F7B50E460546002114463046CE22FFF76A +:1014600009FE2B4628220021304601F0B3FE2B7ADC +:10147000C82B28BFC8238DF807308CB90DF107039E +:1014800008222821304601F0A5FE30242F469DF881 +:1014900007207B1B934205D3E01DC00803B0F0BDBD +:1014A0002824F3E707F1090321460822304601F01A +:1014B00091FE08340137EAE7F7B5047F05460E468A +:1014C00034B1838AB3F5827F02D9012003B0F0BD25 +:1014D0000096012310220021284601F03FFDDCB9CF +:1014E000B31C0093092223461021284601F036FD43 +:1014F00019247388B3F5807FE7D837467288BB1B01 +:10150000934210D32B7FA88A0734E408B3B98442EE +:1015100094BF00200120D9E7AB8ADB00103BDB0839 +:1015200073801024E5E73B1D009321460023082229 +:10153000284601F013FD08340137DFE7201A18BFF1 +:101540000120C3E730B5094D0A4491420DD011F88E +:10155000013B5840082340F30004013B2C4013F0AA +:10156000FF0384EA5000F6D1EFE730BD2083B8EDE9 +:10157000F7B5384A106851686B4603C36A46364966 +:101580003648082303F016F80446002833D10A250C +:10159000334A106851686B4603C36A4631492F4885 +:1015A000082303F007F80446002849D00369B3F57F +:1015B000623F45D8B0F8661040F24C4291423FD1AC +:1015C000294A024402F15C018B4239D35C3B234936 +:1015D00000209E1AFFF7B6FF3246074604F1640169 +:1015E0000020FFF7AFFFA3689F4229D1E36898422C +:1015F00008BF002524E00369B3F5623F27D8418B7B +:1016000040F24C42914220D1174A024402F11001AB +:101610008B4218D3103B114900209D1AFFF792FF0F +:101620002A46064604F118010020FFF78BFFA36845 +:101630009E4202D1E368984201D00D25A8E700251B +:10164000284603B0F0BD1025A2E70C25A0E70B2526 +:101650009EE700BF24460008DC87030000780008EE +:101660002D460008908703000888FFF710B5037C1B +:10167000044613B9006802F085FF204610BD000043 +:101680000023BFF35B8FC360BFF35B8FBFF35B8F40 +:101690008360BFF35B8F7047BFF35B8F0068BFF35E +:1016A0005B8F704770B505460C30FFF7F5FF05F10D +:1016B000080604463046FFF7EFFFA04206D9304641 +:1016C0006D68FFF7E9FF2544281A70BD3046FFF723 +:1016D000E3FF201AF9E7000070B50546406898B1AD +:1016E00005F10800FFF7D8FF05F10C060446304667 +:1016F000FFF7D2FF8442304694BF6D680025FFF7A4 +:10170000CBFF013C2C44201A70BD000038B50C46BC +:101710000546FFF7C7FFA04210D305F10800FFF709 +:10172000BBFF04446868B4FBF0F100FB1144BFF355 +:101730005B8F0120AC60BFF35B8F38BD0020FCE7FE +:101740002DE9F041144607460D46FFF7C5FF8442D8 +:1017500028BF0446D4B1B84658F80C6B4046FFF792 +:101760009BFF3044286040467E68FFF795FF331AA0 +:101770009C4203D86C600120BDE8F0816B60A41B23 +:101780003B68AB602044E8600220F5E72046F3E7C1 +:1017900038B50C460546FFF79FFFA04210D305F170 +:1017A0000C00FFF779FF04446868B4FBF0F100FB1C +:1017B0001144BFF35B8F0120EC60BFF35B8F38BD3A +:1017C0000020FCE72DE9FF41884669460746FFF700 +:1017D000B7FF6C4606B204EBC6060025B44209D03A +:1017E0006268206808EB0501FFF732FC6368083483 +:1017F0001D44F3E729463846FFF7CAFF284604B0E0 +:10180000BDE8F081F8B505460C300F46FFF744FF00 +:1018100005F1080604463046FFF73EFFA042304679 +:1018200088BF6C68FFF738FF201A386020B1304657 +:101830002C68FFF731FF2044F8BD000073B5144653 +:1018400006460D46FFF72EFF844228BF044601904E +:10185000DCB101A93046FFF7D5FF019B33B93268EF +:10186000C5E90233C5E9002401200CE09C4238BFE1 +:1018700001942860019868608442F5D93368AB60B0 +:10188000241AEC60022002B070BD2046FBE7000085 +:101890002DE9FF410F466946FFF7D0FF6C4600B2C5 +:1018A00004EBC0050026AC4209D0D4F8048054F8FB +:1018B000081BB8194246FFF7CBFB4644F3E7304616 +:1018C00004B0BDE8F081000038B50546FFF7E0FF41 +:1018D000044601462846FFF719FF204638BD0000A0 +:1018E00008B102F04FBE7047704700000368002245 +:1018F0001B68184700F5805090F869047047000095 +:1019000000F5805090F862047047000000F58050A8 +:1019100090F9680470470000302383F3118800F5C4 +:101920008052D2F8AC34D2F8A8041844D2F8A434C7 +:101930001844D2F88C341844D2F89C341844D2F8A5 +:1019400098341844002383F31188704700F58050C1 +:10195000C0F86414012070472DE9FF470C4600F5DC +:101960008051054691F86204BDF8308098B1D1F8F5 +:1019700088040130C1F888042068860006D4207BE2 +:1019800008280BD9667B0EB10F2807D9D1F88C3403 +:101990000133C1F88C344FF0FF30AAE0302080F3DF +:1019A0001188A86BD0F8C47017F4001713D0D1F8C1 +:1019B00090040130C1F89004D1F89414002940F04B +:1019C0009B80CDF800802146284600F08FFE002342 +:1019D00083F311888DE0D0F8C460286BC6F301460C +:1019E0004FF0480919FB060920680028B4BF40F0F1 +:1019F000804C4FEA804CC9F800C02068400044BFCA +:101A00004CF00050C9F8000094F80CC0300640EAD1 +:101A10000C40C9F8040094F80DC04FEA461ABCF116 +:101A2000000F27D040F44010C9F80400D1F8C004DA +:101A30000130C1F8C00405EB0A0101F58351087FAC +:101A400040F020000877207BCDE9022300F0A2FEC1 +:101A5000DDE9022303308010F9B2814207F101076A +:101A600010DA04EB810C09EB8101DCF804C0C1F849 +:101A700008C0F1E705EB0A0101F58351087F6CF31B +:101A80004510DFE7A96B0120B040C1F8CC0006F19A +:101A9000830105EB4111C1E9002305EB461101F576 +:101AA00083512046083104F10C0750F804CB41F86B +:101AB00004CBB842F9D100880880AA4441F27801E9 +:101AC0004AF801600AF5805A08F003019AF87C0090 +:101AD00041F0100120F01F0001438AF87C10002122 +:101AE00081F31188CDF800802146284600F0FEFDE4 +:101AF000012004B0BDE8F087002068E713B500F5C9 +:101B000080540191606DFFF7E7FD1F280AD9019904 +:101B1000606D2022FFF756FEA0F120035842584185 +:101B200002B010BD0020FBE708B5302383F3118815 +:101B300000F58050406DFFF7A3FD002383F311886B +:101B400008BD00000022026082814260826070470E +:101B500010B500220023C0E90023002304460381BE +:101B60000C30FFF7EFFF204610BD00002DE9F047D5 +:101B70009A4688B0074688469146302383F31188F9 +:101B800007F580546846FFF7E3FF606DFFF78AFDB5 +:101B90001F282DD9606D20226946FFF795FE202869 +:101BA00026D194F862341BB303AD444605AB2E46F0 +:101BB00003CE9E4220606160354604F10804F6D1F0 +:101BC00030682060B388A380DDE90023C9E90023E1 +:101BD000BDF80830AAF80030002383F3118853467B +:101BE0004A464146384608B0BDE8F04700F03CBDE3 +:101BF000002080F3118808B0BDE8F0872DE9F84F88 +:101C0000064635468846182200210430FFF732FA8E +:101C1000254B45F8403B06F582572C46204620349C +:101C2000FFF796FFA742F9D106F580544FF4805391 +:101C300025640025C4E9113501236765E56484F84E +:101C4000503084F8583006F5845706F5A4594FF003 +:101C5000000A4FF0000B47E908ABA7F11800FFF7A7 +:101C600071FF203747F8285C4F45F4D184F8688429 +:101C7000A4F86A54A4F86C54A4F86E5484F8705410 +:101C8000A4F87254A4F87454A4F8765484F87854E0 +:101C9000B8F1000F02D0054800F0D2FC044BB3634A +:101CA0003046BDE8F88F00BF5446000838460008AB +:101CB0000064004010B5044B197804464A1C1A70A1 +:101CC000FFF79CFF204610BD3D4E00202DE9F84354 +:101CD00015460C4600295CD0022001F077FE2E4903 +:101CE000B0FBF4F78C428CBF0A2111214B1EB7FBCD +:101CF000F1F601FB1671DAB221B1022B1946F5D8C3 +:101D0000002032E0731EB3F5806FF9D2C2EBC20837 +:101D100008F103014FEAE10EC1F3C701A2EB010C88 +:101D20000EF101094FF47A735FFA8CF70EFB033E54 +:101D300059FA8CFCBEFBFCFCBCF5617F17DC1FFA7A +:101D40008CF34A1C57FA82F27243B0FBF2F08442E1 +:101D5000D6D14A1E0F2AD3D87A1E072AD0D80120FE +:101D60002B806E8028716971AF71BDE8F88308F12E +:101D7000FF314FEAE10CC1F3C701521A0CF1010E19 +:101D8000D7B20CFB03335EFA82F2B3FBF2F39BB2E1 +:101D9000D7E70846E9E700BF3F420F0030B50D4BDB +:101DA0000D4D05201C786C438C420ED15978518022 +:101DB00099785171D9789171197911715B7903EB27 +:101DC00083035B001380012030BD013803F106035B +:101DD000E8D1F9E79046000840420F000B4B10B5E0 +:101DE0004FF45472044600211846FFF743F9084B9C +:101DF00063624033A362D833E362F0332363A36B9F +:101E000020620022C3F8C02010BD00BF00A4004023 +:101E100070A400402DE9F04300F5805589B095F895 +:101E20006834012B04468846174604D900263046FC +:101E300009B0BDE8F083964A52F8231009B942F878 +:101E400023009448C4F81C80017899B9302383F3A7 +:101E50001188914B9A6D42F000729A659A6B42F02C +:101E600000729A639A6B22F000729A6301230370E6 +:101E700081F3118895F861647EB9302383F311886A +:101E80000321152001F0C8FD0321162001F0C4FD37 +:101E9000012385F8613486F31188302383F3118898 +:101EA000A26B936923F01003936100F0CFFB81468E +:101EB000A36B9E6916F0080609D000F0C7FBA0EBE3 +:101EC0000903FA2BF4D9002686F31188AFE79A6943 +:101ED00042F001029A6100F0B9FB8146A36B9A6956 +:101EE000D00706D400F0B2FBA0EB0903FA2BF5D91A +:101EF000E9E79A6942F002029A61A36B4FF0000988 +:101F0000C3F8549089F31188686DFFF7B9FB20225C +:101F100000216846FFF7AEF802A8FFF713FE04F5AC +:101F20008353CDF818906A4633440DF1180E944649 +:101F3000BCE80300F44518605960624603F10803E9 +:101F4000F5D1DCF80000186020369CF804201A71E6 +:101F5000B6F5806FDBD1002304F5A35285F8603419 +:101F600085F863340A3241462046FFF7AFFE064645 +:101F700090B9A26B936923F00103936100F066FBB3 +:101F80000546A36B9B69D9077FF550AF00F05EFB58 +:101F9000431BFA2BF5D949E795F86E34C5F87C84D4 +:101FA000591E95F86F34A26B013B1B0243EA416353 +:101FB00095F8701401390B43B5F86C14013943EAF4 +:101FC0000143D361002F36D004F5A35212323946B3 +:101FD0002046FFF7E3FE90B9A26B936923F001035B +:101FE000936100F033FB0546A36B9B69DA077FF52D +:101FF0001DAF00F02BFB431BFA2BF5D916E795F824 +:102000007734C5F88074591E95F87834A26B013B7B +:102010001B0143EA012395F8761401390B43B5F807 +:102020007414013943EA014343F40003D360A36B02 +:102030004FF420629A642046FFF7D0FE002385F813 +:102040006934A36B6FF040421A65A36B134A5A655B +:10205000A36B44229A65A36B0722C3F8DC20A36B11 +:102060000322DA65A26B936923F00103936100F008 +:10207000EDFA0746A36B9B69DB0705D500F0E6FA8E +:10208000C31BFA2BF6D9D1E6012385F86234CEE6DC +:10209000384E00203C4E0020001002409B000800FB +:1020A0002DE9F04F00F5A5578BB0054690469946AF +:1020B0004FF0000B41F2780A1037AB6BD3F8D430F5 +:1020C00023FA0BF3DC0753D505EB4B1151444FEAD0 +:1020D0004B120B7918074BD405F58056D6F894347B +:1020E0000133C6F89434C7E900890B79990648BFD3 +:1020F000D6F8C43405EB020148BF0133514448BF50 +:10210000C6F8C4340B7943F008030B71DB0724D500 +:1021100096F863340BB302A8019205F58354FFF7D8 +:1021200017FD019A0834144405AB04F1080C20682B +:1021300061681A4603C2083464451346F7D1206823 +:102140001060A2889A800123ADF810302B68CDE989 +:1021500002899B6B02A928469847D6F8B834D6F86E +:1021600064040133C6F8B83410B103681B6998479A +:102170000BF1010BBBF1200F9FD10BB0BDE8F08F2D +:102180002DE9F04F8DB004460F4600F061FA82460B +:102190008946002F56D1A36BD3F89020920141BFFE +:1021A00004F58051D1F8A8240132C1F8A824D3F84D +:1021B0009020160703D100200DB0BDE8F08FD3F8B2 +:1021C0009050A66AC5F30125482303FB0566E8463F +:1021D0004046FFF7B7FC326851004ABF22F0604327 +:1021E000C2F38A4343F00043920048BF43F0804368 +:1021F0000093736813F400131FBF04F5805201238A +:102200008DF80D30D2F8C8340EBF8DF80D30013383 +:10221000C2F8C834F38803F00F038DF80C304FF088 +:10222000000B9DF80C0000F0B5FA5FFA8BF39842B2 +:1022300020D9F2180CA90B44127A03F82C2C0BF1BC +:10224000010BEEE7012FB6D1A36BD3F898209501CF +:1022500041BF04F58051D1F8A8240132C1F8A82467 +:10226000D3F898201007A6D0D3F89850E66AC5F3A3 +:102270000125A9E7EFB9A36BC3F8945004A8FFF7B1 +:1022800067FC98E80F0007AD07C52B800023ADF869 +:10229000183023682046CDE904A99B6B04A9984710 +:1022A00004F5805458B1D4F8A0340133C4F8A034F4 +:1022B00082E7012F04BFA36BC3F89C50DEE7D4F87C +:1022C000A4340133C4F8A434012075E72DE9F041AA +:1022D00005460F4600F58054012639462846FFF78B +:1022E0004FFF10B184F86364F7E7D4F8B834D4F83A +:1022F00064040133C4F8B83420B10368BDE8F04188 +:102300001B691847BDE8F081F0B5836B1A6C12F4B5 +:102310007F0F2BD000F580541B6CC4F8BC3441F205 +:102320007805002347194FF0010C00EB43122A44B3 +:102330005E01117911F0020F15D0490713D4B95974 +:10234000866BD6F8C8E00CFA01F111EA0E0F0AD03C +:10235000C6F8D010117941F004011171D4F89C2411 +:102360000132C4F89C240133202BDED1F0BD0000E3 +:1023700010B5254C254B226802B338B31A6D1206EE +:102380000ED580221A6500F063F950EA01020B466F +:1023900002D0013861F1000302462068FFF780FE99 +:1023A0001A4A136D1B032AD523684FF4002103F545 +:1023B00080531165012283F8692420E001221A6507 +:1023C00008221A654FF480621A6510BD196DC8079E +:1023D00002D4196D890705D503211965104600211E +:1023E000FFF774FF094B1A6D100702D41A6DD1065E +:1023F00005D518221A6520680121FFF767FF2068BC +:10240000BDE81040FFF780BF384E00200064004058 +:1024100008B5302383F31188FFF776FF002383F399 +:10242000118808BD836BD3F8C40080F40010C0F39A +:102430004050704708B5302383F3118800F5805071 +:10244000406DFFF72FF9002383F3118843090CBF78 +:102450000120002008BD000000F5805393F8692496 +:1024600062B1816B8A6922F001028A61D3F8AC24DF +:102470000132C3F8AC24002283F8692470470000BD +:102480002DE9F743302181F31188002500F58351B0 +:1024900041F2780E4FF0010800F5805C00EB451426 +:1024A0007444267977071CD4F6061AD5D0F83890EC +:1024B0008E69D9F8C87008FA06F63E4211D04F6806 +:1024C00001970F689742019F9F410AD2C9F8D060D7 +:1024D000267946F004062671DCF898440134CCF8DD +:1024E00098440135202D01F12001D7D1002383F339 +:1024F000118803B0BDE8F083F8B51E4600231370C1 +:102500000F4605461446FFF795FF80F0010038702E +:102510001EB12846FFF786FF2070F8BD2DE9F04F69 +:1025200085B09946DDE90EA30D4602931378019319 +:1025300091F800B08046164600F08AF82B780446E1 +:102540000F4613B93378002B41D022463B46404614 +:10255000FFF796FFFFF75CFFFFF77EFF4B46324623 +:102560002946FFF7C9FF2B7833B1BBF1000F03D029 +:10257000012005B0BDE8F08F337813B1019B002B2B +:10258000F6D108F580530393029B544577EB030380 +:102590001DD2039BD3F86404C8B10368AAEB0401FD +:1025A0001B6898474B46324629464046FFF7A4FF32 +:1025B0002B7813B1BBF1000FDAD1337813B1019B43 +:1025C000002BD5D100F044F804460F46DCE700208C +:1025D000CFE7000008B50020FFF7CAFEBDE80840BD +:1025E00001F0B4B808B50120FFF7C2FEBDE808400D +:1025F00001F0ACB800B59BB0EFF3098168226846E2 +:10260000FEF726FDEFF30583014B9B6BFEE700BF52 +:1026100000ED00E008B5FFF7EDFF000000B59BB04E +:10262000EFF3098168226846FEF712FDEFF3058398 +:10263000014B5B6BFEE700BF00ED00E0FEE7000032 +:102640000FB408B5029801F0ABFAFEE701F08CBDBB +:1026500001F06EBD0139C9B202299EBF00EBC10075 +:102660000023C0E9013370472DE9F8431E461B885B +:102670005B070546884618D4044600F118094C4506 +:1026800013D063686BB12B6828465B6B984733881F +:10269000A768C1B243F0040360684246B8470834F3 +:1026A000EDE7A368002BEED1F9E70120BDE8F88340 +:1026B00073B56C4684E80600014600224E68D5B228 +:1026C0006EB98E685EB900EBC200021D94E803008B +:1026D000013582E803001D70012002B070BD013297 +:1026E000032A01F10801E9D10020F6E72DE9F04FB6 +:1026F0002DED028B89B09FED258BBDF850800446EF +:102700008B46054600F11809002708F0040AA94580 +:1027100036D06B680BB9AB6863B1BAF1000F0BD15F +:10272000236820465B6B98474346C1B25A46D5E9B9 +:102730000106B0470835EAE7002FFBD18DED008B8D +:10274000ADF808705B4603AA0BF1080C18685968CD +:10275000174603C7083363453A46F7D1186838600F +:102760009B88BB80FFF774FF0423ADF80830236813 +:10277000CDE900019B6B6946204698470127D9E7C0 +:10278000012009B0BDEC028BBDE8F08F0000000015 +:1027900000000000082817D909280CD00A280CD0FE +:1027A0000B280CD00C280CD00D280CD00E2814BFF0 +:1027B0004020302070470C207047102070471420B4 +:1027C0007047182070472020704700002DE9F04125 +:1027D000456A15B94162BDE8F0814B6823F0604756 +:1027E000C3F38A464FEAD37EC3F3807816EA230602 +:1027F00038BF3E46AC462B465A68BEEBD27F22F02D +:1028000060440AD0002A18DAA40CB44217D19D42C1 +:102810000FD10D60DEE71346EEE7A74207D102F0C5 +:102820008044C2F3807242450BD054B1EFE708D226 +:10283000EDE7CCF800100B60CDE7B44201D0B44214 +:10284000E5D81A689C46002AE5D11960C3E7000064 +:102850002DE9F047089D01F007044FEAD50822440E +:1028600005F0070500EBD1004FF47F49944201D1F8 +:10287000BDE8F08704F0070705F0070A57453E4614 +:1028800038BF5646C6F10806111B8E4228BF0E46B9 +:10289000E10808EBD50E415C13F80EC0B94029FAE7 +:1028A00006F721FA0AF1FFB28CEA010147FA0AF7AA +:1028B00039408CEA010C03F80EC034443544D5E7A6 +:1028C00080EA0120082341F2210201B240000029E0 +:1028D00080B203F1FF33B8BF504013F0FF03F4D1CF +:1028E0007047000038B50C468D18A54200D138BDA0 +:1028F00014F8011BFFF7E4FFF7E7000042684AB154 +:10290000136843604389818901339BB299424381B3 +:1029100038BF83811046704770B588B020220446C6 +:102920000D4668460021FEF7A5FB20460495FFF7FB +:10293000E5FF024658B16B46054608AE1C4603CC7F +:10294000B44228606960234605F10805F6D11046B7 +:1029500008B070BD082817D909280CD00A280CD057 +:102960000B280CD00C280CD00D280CD00E2814BF2E +:102970004020302070470C207047102070471420F2 +:10298000704718207047202070470000082817D98A +:102990000C280CD910280CD914280CD918280CD9BB +:1029A00020280CD930288CBF0F200E20704709201A +:1029B00070470A2070470B2070470C2070470D208D +:1029C000704700002DE9F843078C072F04461ED9F5 +:1029D000D0E9029800254FF6FF73C5F12006A5F156 +:1029E000200029FA05F108FA06F628FA00F031432A +:1029F0000143C9B21846FFF763FF0835402D03466F +:102A0000EBD1E1693A46BDE8F843FFF76BBF4FF6FB +:102A1000FF70BDE8F883000010B54B6823B9CA8A7F +:102A200063F30902CA8210BD04691A681C6003615D +:102A3000C38A013BC3824A60EFE700002DE9F84FEB +:102A40001D46CB8A0F46C3F30901052981469246EC +:102A50000B4630D00020AAB207F11A049EB2042E11 +:102A60001FFA80F80FD8904503F1010306D3FB8AC3 +:102A70000A4462F30903FB8201201AE01AF800609D +:102A8000E6540130EAE79045F1D2A1F1050B1C2391 +:102A90007C68BBFBF3F203FB12BB1FFA8BF6002C26 +:102AA00045D14846FFF72AFF044638B978606FF0F1 +:102AB0000200BDE8F88F4FF00008E6E70026066048 +:102AC0007860ADB24FF0000B454510D90AEB080312 +:102AD000221D13F8011B9155B1B208F101081B2901 +:102AE0001FFA88F82BD0454506F10106F1D8FB8A7C +:102AF000C3F30902154465F30903BCE7013292B23E +:102B00001C462368002BF9D16B1F0B441C21B3FB1F +:102B1000F1F301339BB29A42D3D2BBF1000FD0D173 +:102B20004846FFF7EBFE20B9C4F800B0BFE701222A +:102B3000E7E7C0F800B05E4620600446C1E74545BF +:102B4000D5D94846FFF7DAFE08B92060AFE7C0F8EC +:102B500000B0002620600446B6E700002DE9F04FE3 +:102B60002DED028B1C4683B05B69019207468846B7 +:102B7000002B00F0A780238C2BB1E269002A00F023 +:102B8000A180072B35D807F10C00FFF7B7FE0546EB +:102B900038B96FF00205284603B0BDEC028BBDE8E2 +:102BA000F08F14220021FEF765FA228CE16905F10D +:102BB0000800FEF74DFA208C013080B2FFF7E6FEE8 +:102BC000FFF7C8FE013880B22084013028746369A1 +:102BD000228C1B782A4403F01F0363F03F0348F064 +:102BE00000411372384669602946FFF7EFFD012561 +:102BF000D1E702339BB20722C18A0633B3FBF2F35B +:102C0000828A521A9BB292B29342C2D800F10C034C +:102C10004FF0000908EE103A4FF0800A4E464D463C +:102C200018EE100AFFF76AFE83460028B1D014227E +:102C30000021FEF71FFA002E3AD1019BABF80830B5 +:102C400002220BF1080E1FFA82FC0CF10100BCF10C +:102C5000060F218C80B201D88E422BD3FFF796FE4F +:102C6000FFF778FE62691278013802F01F028E4287 +:102C700008BF4FF0400A42EA49121BFA80F14AEAC3 +:102C8000020A013048F0004281F808A08BF81000D9 +:102C9000CBF8042059463846FFF798FD238C0135C0 +:102CA000B3422DB289F001094FF0000AB8D172E7A2 +:102CB0000022C6E7E169895D0EF802100136B6B25E +:102CC0000132C0E76FF0010565E70000F8B5154671 +:102CD0000E463022002104461F46FEF7CBF9069B24 +:102CE0006360B5F5001F079BA76034BF6A094FF604 +:102CF000FF72A36297B2E66104F1100000239A42CA +:102D000006D800230360A782E3822383E360F8BD33 +:102D10000660013330462036F1E7000003781BB926 +:102D20004BB2002BC8BF017070470000007870479D +:102D3000F8B50C46C969074611B9238C002B37D169 +:102D4000257E1F2D34D8387828BB228C072A2CD812 +:102D5000268A36F003032BD14FF6FF70FFF7C2FD32 +:102D600020F001003102400441EA0561400C41EAD3 +:102D700040254FF6FF72234629463846FFF7EEFE00 +:102D8000002807DD626913780133DBB21F2B88BF8F +:102D900000231370F8BD218A2D0645EA012505435D +:102DA0002046FFF70FFE0246E5E76FF00300F1E76C +:102DB0006FF00100EEE7000070B58AB004461646D9 +:102DC0000021282268461D46FEF754F9BDF8383028 +:102DD000ADF810300F9B05939DF840308DF81830FA +:102DE000119B07936946BDF84830ADF82030204666 +:102DF000CDE90265FFF79CFF0AB070BD2DE9F041F7 +:102E0000D36905460C4616460BB9138C5BBB377E5F +:102E10001F2F28D895F80080B8F1000F26D0304633 +:102E2000FFF7D0FD3378210241EAC33141EA0801BE +:102E3000338A41EA076141EA03410246334641F0E1 +:102E400080012846FFF78AFE00280ADD3378012B2F +:102E500007D1726913780133DBB21F2B88BF0023BF +:102E60001370BDE8F0816FF00100FAE76FF0030026 +:102E7000F7E70000F0B58BB004460D461746002179 +:102E8000282268461E46FEF7F5F89DF84C305A1E7B +:102E9000534253418DF800309DF84030ADF810306A +:102EA000119B05939DF848308DF81830149B0793BB +:102EB0006A46BDF85430ADF8203029462046CDE9A9 +:102EC0000276FFF79BFF0BB0F0BD0000406A00B137 +:102ED00004307047436A1A68426202691A600361EB +:102EE000C38A013BC38270472DE9F041D0F82080AE +:102EF000194E14461D464146002709B9BDE8F08128 +:102F0000D1E90223A21A65EB0303964277EB030390 +:102F10001ED2036A8B420DD1FFF77EFD036A1B6848 +:102F2000036203690B60C38A0161016A013BC382CA +:102F30008846E2E7FFF770FD0B68C8F800300369C8 +:102F40000B60C38A0161013BC382D8F80010D4E74B +:102F500088460968D1E700BF80841E002DE9F04F44 +:102F60008BB00D46DDF8509014469B4680460028F5 +:102F700000F01981B9F1000F00F01581531E3F2BAD +:102F800000F21181012A03D1BBF1000F40F00B8147 +:102F90000023CDE90833B8F81430B5EBC30F4FEA7E +:102FA000C30703D300200BB0BDE8F08F2B199F425D +:102FB000D8F80C303ABF7F1BFFB227461BB9D8F8B0 +:102FC0001030002B7AD0272D4ED8C5F12806B742F5 +:102FD0004FF000032CBFF6B23E4600932946D8F8C6 +:102FE000080008AB3246FFF733FCA7EB060A35446E +:102FF0005FFA8AFAB8F8143003F10053053BDB009E +:103000000493D8F80C3003932821039B13B1BAF131 +:10301000000F2CD1D8F8100040B1BAF1000F05D044 +:10302000009608AB5246691AFFF712FC38B2002F1F +:10303000B8D066070AD00AAB03EBD401624211F89C +:10304000083C02F00702134101F8083C082C3CD967 +:10305000102C40F2B580202C40F2B780BBF1000F5D +:1030600000F09C80082334E0BA460026C2E7049BA7 +:10307000E02B28BFE02306930B44AB42059314D901 +:103080005A1B03980096924534BF5246D2B2691A31 +:1030900008AB04300792FFF7DBFB079A1644AAEB54 +:1030A000020A1544F6B25FFA8AFA049B069A059959 +:1030B0009B1A0493039B1B680393A6E70093D8F81D +:1030C000080008AB3A462946AEE7BBF1000F13D023 +:1030D0000123B4EBC30F6CD0082C12D89DF820301C +:1030E000621E23FA02F2D50706D54FF0FF3202FA2C +:1030F00004F423438DF820309DF8203089F8003007 +:1031000051E7102C12D8BDF82030621E23FA02F2CB +:10311000D10706D54FF0FF3202FA04F42343ADF88D +:103120002030BDF82030A9F800303CE7202C0FD823 +:103130000899631E21FA03F3DA0705D54FF0FF3231 +:1031400002FA04F40C430894089BC9F800302AE7FB +:10315000402C2BD0DDE90865611EC4F12102A4F1E9 +:10316000210326FA01F105FA02F225FA03F31143CD +:103170001943CB0712D50122A4F12003C4F1200189 +:1031800002FA03F322FA01F1A240524243EA010398 +:1031900063EB430332432B43CDE90823DDE90823E6 +:1031A000C9E90023FFE66FF00100FCE66FF00800BC +:1031B000F9E6082CA0D9102CB3D9202CEED8C3E7FF +:1031C000BBF1000FADD0022383E7BBF1000FBBD0F2 +:1031D00004237EE730B5012A144638BF0124402C71 +:1031E00085B028BF40240025012ACDE9025518D812 +:1031F0001B788DF8083063070AD004AB03EBD405C5 +:10320000624215F8083C02F00702934005F8083CBA +:10321000009103462246002102A8FFF719FB05B0E2 +:1032200030BD082AE4D9102A03D81B88ADF808302D +:10323000E1E7202A8DBFD3E900231B680293CDE983 +:103240000223D8E710B5CB681BB98B600B618B826A +:1032500010BD04691A681C600361C38A013BC38204 +:10326000CA60F0E703064CBFC0F3C03002207047CD +:1032700008B50246FFF7F6FF022806D15306C2F34F +:103280000F2001D100F0030008BDC2F30740FBE7A7 +:103290002DE9F04F93B0CDE904230A6804461046A7 +:1032A000FFF7E0FF022814BFC2F306260026002A1B +:1032B0000D46824680F2028212F0C04940F0FE8143 +:1032C000097B002900F0FA81022803D02378B34259 +:1032D00040F0F781C2F304630693104602F07F03C7 +:1032E0000393FFF7C5FF039B29444FEA834848EA4D +:1032F0000A4848EA4668CE7800230022CDE9082330 +:10330000F309834648EA0008029367D0039B0093C1 +:1033100002466768534608A92046B847002868D087 +:10332000276A4FB9414604F10C00FFF7F5FA07464A +:1033300090B96FF002006AE03B6998450DD03F6894 +:10334000002FF9D1414604F10C00FFF7E5FA0746DA +:103350000028EED0236A3B60276297F817C006F07A +:103360001F08CCF3840CACEB08001FFA80FE002889 +:10337000B8BF0EF12000A8EB0C031FFA83FED7E9BB +:103380000221B8BF00B2002B0793BEBF0EF120038D +:103390001BB2079352EA010342D0049BDFF834E3E7 +:1033A0009A1A059B4FF0000C63EB010196457CEBEC +:1033B000010335D36B7B97F81AE0734521D1029B4B +:1033C000002B00F0848001282ADC786840BBDFF8FD +:1033D00000C3944570EB010343D21EE0276A5FB936 +:1033E000039B0093656853465A4608A92046A847A0 +:1033F00068BB6FF00B000AE03B699845ADD03F68B1 +:10340000EDE7B34890427CEB010303D3002013B0F7 +:10341000BDE8F08F029B002BF8D0079B0F2B19DC27 +:10342000FA7DB30002F0030203F07C031343FB7543 +:1034300039462046FFF7F0FA6B7BBB76029B4BB90F +:10344000FB7DC3F38402013262F38603FB756FF0E8 +:103450000C00DCE76A7BBB7E9A42D7D1029B002B33 +:1034600035D0B309022B32D0049BBB60059BFB60B7 +:10347000142200210DA8FDF7FDFD049B0A93059B76 +:103480000B932B1D0C932B7BADF83EB0013BDBB2B5 +:10349000ADF83C30069B8DF84230039B8DF84330ED +:1034A00094F82C308DF840A083F001038DF844305F +:1034B0008DF84180A3680AA920469847FB7DC3F395 +:1034C0008403013303F01F039B02FB829EE7FB7D15 +:1034D000C6F34012B2EBD31F40F0F680C3F384036F +:1034E000434540F0F980029A2B7BB609002A52D05E +:1034F00016F0010661D1032B40F2F180049BBB6002 +:10350000059BFB60FB8A66F30903FB822B7BAE1DE8 +:10351000033BDBB23246394604F10C00FFF78EFA6A +:1035200000280CDA39462046FFF776FAFB7DC3F314 +:103530008403013303F01F039B02FB82F9E6DDE9FC +:103540000884AB883B834FF6FF73C9F12000A9F1D3 +:10355000200228FA09F104FA00F0014324FA02F2E9 +:1035600011431846C9B2FFF7ABF909F10809B9F1DF +:10357000400F0346E9D1B8822A7B033AD2B23146E2 +:10358000FFF7B0F9FB7DB882DA43C2F3C01262F3F1 +:10359000C713FB753AE786B92E1D013BDBB23246F5 +:1035A000394604F10C00FFF749FA0028BADB2A7B00 +:1035B000B88A013AD2B23146E2E7F98AC1F3090189 +:1035C000013B0429DAB25BD8281D002307F11B0652 +:1035D0009A4208D910F801CB06F801C00131013335 +:1035E0000529DBB2F4D104990A9105990B91934214 +:1035F00007F11B010C9138BF043379680D9134BF7A +:1036000055FA83F300230E93FB8AADF83EB0C3F363 +:1036100009031A44069B8DF84230039B8DF8433012 +:1036200094F82C30ADF83C2083F001038DF8443041 +:1036300000238DF840A08DF841807B602A7BB88AFA +:10364000013A291DFFF74EF93B8BB882834203D123 +:10365000A3680AA92046984720460AA9FFF7F2FD69 +:10366000FB7DBA8AC3F38403013303F01F039B027B +:10367000FB823B8B9A420CBF00206FF01000C6E625 +:103680007B68002BAFD0052001E01C3033461E685C +:10369000002EFAD1091A081D2E1D184401EB090C41 +:1036A000BCF11B0F5FFA89F39DD89A429BD916F89B +:1036B000013B00F8013B09F10109EFE76FF0090058 +:1036C000A5E66FF00A00A2E66FF00D009FE600BFCE +:1036D00040420F0080841E006FF00E0097E66FF0EE +:1036E0000F0094E6EFF3098305494A6B22F00102CB +:1036F0004A63683383F30988002383F31188704792 +:1037000000EF00E0302080F3118862B60C4B0D4AC8 +:10371000D96821F4E0610904090C0A43DA60D3F89E +:10372000FC20094942F08072C3F8FC200A6842F08C +:1037300001020A602022DA7783F82200704700BF76 +:1037400000ED00E00003FA05001000E010B53023A2 +:1037500083F311880E4B5B6813F4006314D0F1EE11 +:10376000103AEFF30984683C4FF08073E361094B32 +:10377000DB6B236684F3098800F0D6F910B1064BA1 +:10378000A36110BD054BFBE783F31188F9E700BF88 +:1037900000ED00E000EF00E03F03000842030008F6 +:1037A000434B4FF4007270B51A605A6912F4C06F3F +:1037B000FBD1404B9A6802F00C02042A20D01A6810 +:1037C00042F480721A601A685205FCD501229A6090 +:1037D0009A6802F00C02042AFAD13749374A0A6083 +:1037E0000A6812F00F02FBD1C3F8982063221A6016 +:1037F0001A689603FCD42E4A4FF48071C2F88010E8 +:10380000C468E50306D51A6842F480321A601A6863 +:103810009103FCD5C269D20709D5D3F8982042F0AC +:103820000102C3F89820D3F898209607FBD5426987 +:10383000DA6044F480721A6004F0807111B11A6881 +:103840009501FBD5996802691B4E22F0030501F032 +:10385000030129439960856935603168694009072A +:10386000FBD1134905680D6046684E608068C1F859 +:1038700080006E0417D448698505FCD4996802F06D +:10388000030021F0030101439960920099685140BF +:1038900011F00C0FFAD1E2055EBF1A6822F48072B3 +:1038A0001A60002070BD48698005FCD5E6E700BFBE +:1038B000007000400010024000200240000604009A +:1038C00008B500F095F8BDE8084000F08DB800009C +:1038D00010B5394C3948A36A4FF0FF32A262A36A8F +:1038E0000023A362A16AE16A61F07F01E162E16AFB +:1038F00001F07F01E162E16A216B2263216B2363A6 +:10390000216BA16BA263A16BA363A16BE16BE2636B +:10391000E16BE363E16B216C2264226C2364226C13 +:10392000226E42F001022266D4F8802022F00102C9 +:10393000C4F88020D4F88020A26D42F08052A265A5 +:10394000A26F22F08052A267A26F1D4A4FF400417D +:103950009160D360136253629362D36213635363C3 +:103960009363D363136453649364D364136553659F +:10397000116841F480711160D4F8902012F4407FF6 +:103980001EBF4FF48032C4F89020C4F890300D4A26 +:103990000023A360C4F88820C4F89C30FFF700FF20 +:1039A00010B1094800F0FCF8D4F8903023F003235C +:1039B000C4F8903010BD00BF00100240B8460008A7 +:1039C0000070004055010051B0460008014B53F80B +:1039D000200070471823002008B500F0D9FCBDE88E +:1039E0000840FFF7B3BE000007211C2000F014B808 +:1039F0004FF0E023002258684FF0FF31930003F1AD +:103A0000604303F5614301329042C3F88010C3F86C +:103A10008011F3D27047000000F1604303F5614369 +:103A20000901C9B283F80013012200F01F039A4074 +:103A300043099B0003F1604303F56143C3F8802110 +:103A40001A60704700230375826803691B689968D0 +:103A50009142FBD25A680360426010605860704720 +:103A600000230375826803691B6899689142FBD83B +:103A70005A680360426010605860704708B5084695 +:103A8000302383F311880B7D032B05D0042B0DD03D +:103A90002BB983F3118808BD8B6900221A604FF09F +:103AA000FF338361FFF7CEFF0023F2E7D1E9003255 +:103AB00013605A60F3E70000FFF7C4BF38B50A4B44 +:103AC000DD681C68287522681A605360DC60A36892 +:103AD00001229342227501D100F008FC29462046BC +:103AE000BDE83840FCF716BC484E002030B50C4B02 +:103AF000DD684B1C87B004460FD02B46094A684648 +:103B000000F030F92046FFF7D9FF009B13B168465B +:103B100000F032F9A86907B030BDFFF7CFFFF9E731 +:103B2000484E00207D3A0008044B1A68DB68906814 +:103B30009B68984294BF002001207047484E0020A7 +:103B400038B50B4B1C68DD6822681A60536001228F +:103B50002275DC60AB68934201D100F0C9FB2846B6 +:103B6000FFF77EFF01462046BDE83840FCF7D2BB98 +:103B7000484E002038B5074C074908480123002566 +:103B80002370656000F032FC0223237085F31188F6 +:103B900038BD00BFB0500020DC460008484E002071 +:103BA00008B572B6044B186500F0ACFA00F05CFB87 +:103BB000024B03221A70FEE7484E0020B05000204E +:103BC00000F010B98B60022308618B8208467047B1 +:103BD0008368A3F1840243F8142C026943F8442C4F +:103BE000426943F8402C094A43F8242CC26843F840 +:103BF000182C022203F80C2C002203F80B2C044A88 +:103C000043F8102CA3F12000704700BF2D030008DB +:103C1000484E002008B5FFF7DBFFBDE80840FFF77E +:103C20004BBF0000024BDB6898610F20FFF746BFD7 +:103C3000484E0020302383F31188FFF7F3BF0000C4 +:103C400008B50146302383F311880820FFF74EFFA3 +:103C5000002383F3118808BD10B503689C68A24255 +:103C60000CD85C688A600B604C6021605960996870 +:103C70008A1A9A604FF0FF33836010BD1B68121BD5 +:103C8000ECE700000A2938BF0A2170B504460D464A +:103C90000A26601900F0A4FB00F090FB041BA5426B +:103CA00003D8751C2E460446F3E70A2E04D9BDE856 +:103CB0007040012000F0DABB70BD0000F8B5144B75 +:103CC0000D46D96103F1100141600A2A1969826029 +:103CD00038BF0A22016048601861A818144600F035 +:103CE00071FB0A2700F06AFB431BA342064606D37A +:103CF0007C1C281900F074FB27463546F2E70A2F92 +:103D000004D9BDE8F840012000F0B0BBF8BD00BF09 +:103D1000484E0020F8B506460D4600F04FFB0F4A0E +:103D2000134653F8107F9F4206D12A46014630467B +:103D3000BDE8F840FFF7C2BFD169BB68441A2C192F +:103D400028BF2C46A34202D92946FFF79BFF2246F3 +:103D500031460348BDE8F840FFF77EBF484E0020DB +:103D6000584E002010B4C0E9032300235DF8044B33 +:103D70004361FFF7CFBF000010B5194C236998428B +:103D80000DD0D0E90032816813605A609A680A4405 +:103D90009A60002303604FF0FF33A36110BD2346F8 +:103DA000026843F8102F53600022026022699A4291 +:103DB00003D1BDE8104000F00DBB936881680B444F +:103DC000936000F0FBFA2269E1699268441AA2420A +:103DD000E4D91144BDE81040091AFFF753BF00BFF2 +:103DE000484E00202DE9F047DFF8BC8008F11007AD +:103DF0002C4ED8F8105000F0E1FAD8F81C40AA6810 +:103E0000031B9A423ED81444D5E900324FF0000912 +:103E1000C8F81C4013605A60C5F80090D8F81030FC +:103E2000B34201D100F0D6FA89F31188D5E9033104 +:103E300028469847302383F311886B69002BD8D02C +:103E400000F0BCFA6A69A0EB04094A4582460DD22B +:103E5000022000F00BFB0022D8F81030B34208D14A +:103E600051462846BDE8F047FFF728BF121A224402 +:103E7000F2E712EB090938BF4A4629463846FFF7F0 +:103E8000EBFEB5E7D8F81030B34208D01444211A3D +:103E9000C8F81C00A960BDE8F047FFF7F3BEBDE815 +:103EA000F08700BF584E0020484E002038B500F083 +:103EB00085FA054AD2E90845031B181945F10001A6 +:103EC000C2E9080138BD00BF484E002000207047FD +:103ED000FEE70000704700004FF0FF307047000021 +:103EE000BFF34F8F024A1369DB03FCD4704700BF56 +:103EF0000020024008B5094B1B7873B9FFF7F0FFAB +:103F0000074B5A69002ABFBF064A9A6002F18832FD +:103F10009A601A6822F480621A6008BDC8500020B6 +:103F2000002002402301674508B50B4B1B7893B96D +:103F3000FFF7D6FF094B5A6942F000425A611A68EE +:103F400042F480521A601A6822F480521A601A6889 +:103F500042F480621A6008BDC85000200020024070 +:103F60007F289ABF00F58030C00200207047000013 +:103F70004FF4006070470000802070477F2808B52C +:103F80000BD8FFF7EDFF00F500630268013204D1A2 +:103F900004308342F9D1012008BD0020FCE7000075 +:103FA0007F2810B504461FD8FFF79AFFFFF7A2FF3E +:103FB0000E4BF3221A6102225A615A6942EAC00288 +:103FC0005A615A6942F480325A61FFF789FF4FF40F +:103FD0000061FFF7C5FF00F043F9FFF7A5FF20469A +:103FE000BDE81040FFF7CABF002010BD002002400E +:103FF0002DE9F84340EA020313F00703144606D004 +:10400000304B4FF461721A600020BDE8F8838518C8 +:104010002D4A95420CD92B4A40F289311160F3E7C1 +:10402000031D1B684A68934208D1083C08300831D8 +:10403000072C14D902680B689A42F1D0FFF75AFF97 +:10404000FFF74EFF214E08314FF001084FF00009F5 +:10405000012CA1F1080706D8FFF766FF01E0002C4C +:10406000ECD10120D1E7C6F81480054651F8083C90 +:1040700045F8043B51F8043C4360FFF731FF3369D6 +:1040800043F001033361C6F81490026851F8083C0C +:104090009A420CD00B4B40F2B1321A600C4B1860B4 +:1040A0000C4B1C600C4B1F60FFF73EFFACE72D680C +:1040B00051F8043C9D4201F10801EBD1083C083065 +:1040C000C6E700BFC45000200000040800200240E2 +:1040D000B8500020C0500020BC500020084908B54E +:1040E0000B7828B11BB9FFF705FF01230B7008BD42 +:1040F000002BFCD0BDE808400870FFF715BF00BFDB +:10410000C850002008B50649064800F0ABF8BDE8E5 +:1041100008404FF480414FF0805000F0A3B800BF3A +:10412000007F010000010020084600F02BBA0000CB +:1041300038B5EFF311859DB9EFF30584C4F3080496 +:10414000302334B183F31188FFF7B0FE85F3118873 +:1041500038BD83F31188FFF7A9FE84F3118838BDB9 +:10416000BDE83840FFF7A2BE38B5FFF7E1FF114CBC +:10417000114AC00840EA4170A0FB025EC908A0FBDA +:10418000040C1CEB050CA1FB04404FF000035B4149 +:10419000A1FB02121CEB040C43EB000011EB0E011F +:1041A00042F10002411842F10000090941EA0070A1 +:1041B00038BD00BFCFF753E3A59BC4200244D2B261 +:1041C000904200D17047431C800000F1804000F510 +:1041D0001450006841F8040BD8B2F1E7124B10B547 +:1041E000D3F89040240409D4D3F89040C3F8904009 +:1041F000D3F8904044F40044C3F890400B4C23683B +:10420000024443F480732360D2B2904200D110BDC7 +:10421000431C800000F1804000F5145051F8044B1D +:104220000460D8B2F1E700BF001002400070004007 +:1042300007B5012201A90020FFF7C0FF019803B0D4 +:104240005DF804FB13B50446FFF7F2FFA04205D06A +:10425000012201A900200194FFF7C0FF02B010BDA8 +:10426000704700007047000070470000074B45F2A0 +:1042700055521A6003225A6040F2FF729A604CF65F +:10428000CC421A60024B01221A7070470030004085 +:10429000D0500020034B1B781BB1034B4AF6AA22D7 +:1042A0001A607047D050002000300040054B1A685B +:1042B00032B902F1804202F50432D2F894201A6039 +:1042C000704700BFCC500020024B4FF40002C3F8EF +:1042D000942070470010024008B5FFF7E7FF024B3B +:1042E0001868C0F3407008BDCC5000207047000033 +:1042F0007047000070470000FEE700000A4B0B48C3 +:104300000B4A90420BD30B4BDA1C121AC11E22F03F +:1043100003028B4238BF00220021FCF7ABBE53F8EA +:10432000041B40F8041BECE75C480008D450002054 +:10433000D4500020D450002008B5124B9A6D42F0A2 +:1043400001029A659A6F42F001029A670E4A9B6FCA +:10435000936843F0010393600620FFF737FB0B4B94 +:10436000B0FBF3F04FF080434FF0FF32013898621A +:10437000DA6200229A615A63DA605A6001225A6155 +:104380001A6008BD00100240002004E040420F0007 +:104390004FF0804208B51169D3680B40D9B2C943C8 +:1043A0009B07116107D5302383F31188FFF708FCC1 +:1043B000002383F3118808BDFFF7BEBF4FF0804391 +:1043C000586A70474FF08043002258631A610222F6 +:1043D000DA6070474FF080430022DA6070470000D7 +:1043E0004FF0804358637047FEE7000070B51B4BE9 +:1043F00001630025044686B0586085620E46FFF7CB +:1044000081F904F11003C4E904334FF0FF33C4E928 +:104410000635C4E90044A560E562FFF7CFFF2B46EF +:104420000246C4E9082304F134010D4A25658023BE +:104430002046FFF7C7FB0123E0600A4A037500929C +:1044400072680192B268CDE90223074B6846CDE954 +:104450000435FFF7DFFB06B070BD00BFB050002091 +:10446000E8460008ED460008E9430008024AD36A1E +:104470001843D062704700BF484E00204B6843602D +:104480008B688360CB68C3600B6943614B690362CF +:104490008B6943620B6803607047000008B5204BCE +:1044A000DA6A42F07F02DA62DA6A22F07F02DA62C6 +:1044B000DA6ADA6C42F07F02DA64DA6E42F07F0286 +:1044C000DA66184ADB6E11464FF09040FFF7D6FFD0 +:1044D00002F11C0100F58060FFF7D0FF02F1380106 +:1044E00000F58060FFF7CAFF02F1540100F580601B +:1044F000FFF7C4FF02F1700100F58060FFF7BEFF17 +:1045000002F18C0100F58060FFF7B8FF02F1A8010D +:1045100000F58060FFF7B2FFBDE80840FFF7D8B9AB +:1045200000100240F446000808B500F009F8FFF753 +:1045300021FBBDE80840FFF7B9BE0000704700004E +:1045400008B5FFF7BDF900F007F8FFF7F7FFBDE882 +:104550000840FFF731BF0000704700000B460146DE +:10456000184600F001B8000010B5054C13462CB1F8 +:104570000A4601460220AFF3008010BD2046FCE74A +:1045800000000000024B01461868FFF7CDBD00BFD8 +:104590004023002010B501390244904201D100208F +:1045A00005E0037811F8014FA34201D0181B10BD9C +:1045B0000130F2E72DE9F041A3B1C91A177801449F +:1045C000044603F1FF3C8C42204601D9002009E05B +:1045D0000578BD4204F10104F5D10CEB0405D618B1 +:1045E000A54201D1BDE8F08115F8018D16F801ED65 +:1045F000F045F5D0E7E70000034611F8012B03F87A +:10460000012B002AF9D170476F72672E61726475B1 +:1046100070696C6F742E6D526F2D4D3130313034A6 +:104620000000000040A2E4F1646891060041A3E5A7 +:10463000F2656992070000004261642043414E49DF +:104640006661636520696E6465782E000000000075 +:1046500000000000151E0008ED1800081D250008C8 +:104660004D190008591900086D1B00081919000898 +:10467000F5180008E9180008291B000801190008AE +:10468000B1260008552600080D190008FD1A00087B +:1046900001040E05054B02020E05054B04010E0533 +:1046A000054B05010B04044B0801060303460000FB +:1046B000636C6B7377630000000300000000000070 +:1046C0000001000000000101030000000328310187 +:1046D000040704000100000063300000D846000811 +:1046E000A04E0020B05000206D61696E0069646CBE +:1046F000650000000001802A00000000AAAAAAAA02 +:1047000000000024EFFF00000000000000900900FE +:104710000000000000000000AAAAAAAA00000000F1 +:10472000FFFF00000000000000000000000000008B +:1047300000000000AAAAAAAA00000000FFFF0000D3 +:104740000000000000000000000000000000000069 +:10475000AAAAAAAA00000000FFFF000000000000B3 +:10476000000000000000000000000000AAAAAAAAA1 +:1047700000000000FFFF000000000000000000003B +:104780000000000000000000AAAAAAAA0000000081 +:10479000FFFF00000000000000000000000000001B +:1047A00000000000AAAAAAAA00000000FFFF000063 +:1047B00000000000000000004C04000000000000A9 +:1047C0000088030000000000FE2A0100D20400005F +:1047D000006889096D8BB90200B4C40400688909B6 +:1047E00000688909006889090068890900688909E1 +:1047F0000068890900000000442300200000000038 +:1048000000000000000000000000000000000000A8 +:104810000000000000000000000000000000000098 +:104820000000000000000000000000000000000088 +:104830000000000000000000000000000000000078 +:104840000000000000000000000000000000000068 +:0C4850000000000000000000000000005C +:00000001FF diff --git a/libraries/AP_BattMonitor/AP_BattMonitor.cpp b/libraries/AP_BattMonitor/AP_BattMonitor.cpp index 1156f8fe0043a..a9dd914a5bc65 100644 --- a/libraries/AP_BattMonitor/AP_BattMonitor.cpp +++ b/libraries/AP_BattMonitor/AP_BattMonitor.cpp @@ -29,6 +29,7 @@ #include "AP_BattMonitor_AD7091R5.h" #include "AP_BattMonitor_Scripting.h" #include "AP_BattMonitor_TIBQ76952.h" +#include "AP_BattMonitor_ACS37800.h" #include @@ -713,6 +714,11 @@ AP_BattMonitor::init() drivers[instance] = NEW_NOTHROW AP_BattMonitor_TIBQ76952(*this, state[instance], _params[instance]); break; #endif // AP_BATTERY_TIBQ76952_ENABLED +#if AP_BATTERY_ACS37800_ENABLED + case Type::ACS37800_I2C: + drivers[instance] = NEW_NOTHROW AP_BattMonitor_ACS37800(*this, state[instance], _params[instance]); + break; +#endif // AP_BATTERY_ACS37800_ENABLED case Type::NONE: default: break; diff --git a/libraries/AP_BattMonitor/AP_BattMonitor.h b/libraries/AP_BattMonitor/AP_BattMonitor.h index 1aedb543b5e3f..2a940c968cad4 100644 --- a/libraries/AP_BattMonitor/AP_BattMonitor.h +++ b/libraries/AP_BattMonitor/AP_BattMonitor.h @@ -44,7 +44,7 @@ class AP_BattMonitor_Torqeedo; class AP_BattMonitor_FuelLevel_Analog; class AP_BattMonitor_EFI; class AP_BattMonitor_Scripting; - +class AP_BattMonitor_ACS37800; class AP_BattMonitor { @@ -66,6 +66,7 @@ class AP_BattMonitor friend class AP_BattMonitor_LTC2946; friend class AP_BattMonitor_AD7091R5; friend class AP_BattMonitor_INA3221; + friend class AP_BattMonitor_ACS37800; friend class AP_BattMonitor_Torqeedo; friend class AP_BattMonitor_FuelLevel_Analog; diff --git a/libraries/AP_BattMonitor/AP_BattMonitor_ACS37800.cpp b/libraries/AP_BattMonitor/AP_BattMonitor_ACS37800.cpp new file mode 100644 index 0000000000000..e8e440a4df678 --- /dev/null +++ b/libraries/AP_BattMonitor/AP_BattMonitor_ACS37800.cpp @@ -0,0 +1,190 @@ +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#include "AP_BattMonitor_ACS37800.h" + +#if AP_BATTERY_ACS37800_ENABLED + +#include +#include +#include +#include "AP_BattMonitor_ACS37800.h" + +extern const AP_HAL::HAL& hal; + +typedef struct +{ + union + { + uint32_t all; + struct + { + uint32_t vcodes : 16; + uint32_t icodes : 16; + } bits; + } data; +} acs378002a_t; + +#define RESIST_MULT 202.5 + +#define REG_ACCESS_CODE 0x2F // access_code +#define CUSTOMER_CODE 0x4F70656E +#define REG_C_EEPROM 0x0C +#define REG_F_SHADOW 0x1F +#define REG_F_EEPROM 0x0F +#define CONFIG_C_MASK 0x0000000F +#define CONFIG_F 0x01FFC000 // bypass_N_en=1, n=1023 + +#define REG_VRMS_IRMS 0x20 +#define REG_VRMS_IRMS_ONESEC 0x26 +#define REG_VCODES_ICODES 0x2A +#define REG_PINSTANT 0x2C + +#ifndef HAL_BATTMON_ACS37800_BUS +#define HAL_BATTMON_ACS37800_BUS 0 +#endif +#ifndef HAL_BATTMON_ACS37800_ADDR +#define HAL_BATTMON_ACS37800_ADDR 96 +#endif + +// ACS37800-I2C provides voltage, current, and power measurements, however, it does not provide any means for calibration. +// Thus, added V_FINE_M and C_FINE_M to adjust the voltage and current readings. +const AP_Param::GroupInfo AP_BattMonitor_ACS37800::var_info[] = { + + // @Param: I2C_BUS + // @DisplayName: Battery monitor I2C bus number + // @Description: Battery monitor I2C bus number + // @Range: 0 4 + // @User: Advanced + // @RebootRequired: True + AP_GROUPINFO("I2C_BUS", 138, AP_BattMonitor_ACS37800, i2c_bus, HAL_BATTMON_ACS37800_BUS), + + // @Param: I2C_ADDR + // @DisplayName: Battery monitor I2C address + // @Description: Battery monitor I2C address + // @Range: 0 127 + // @User: Advanced + // @RebootRequired: True + AP_GROUPINFO("I2C_ADDR", 139, AP_BattMonitor_ACS37800, i2c_address, HAL_BATTMON_ACS37800_ADDR), + + // @Param: V_FINE_M + // @DisplayName: Voltage fine adjustment + // @Description: Fine-adjust the voltage reading. Calculate dividing the indicated measured voltage by the known applied voltage. + // @User: Advanced + AP_GROUPINFO("V_FINE_M", 8, AP_BattMonitor_ACS37800, volt_fine_mult, 1.0), + + // @Param: C_FINE_M + // @DisplayName: Current fine adjustment + // @Description: Fine-adjust the current reading. Calculate dividing the indicated measured current by the known current draw. + // @User: Advanced + AP_GROUPINFO("C_FINE_M", 9, AP_BattMonitor_ACS37800, curr_fine_mult, 1.0), + + AP_GROUPEND +}; + +AP_BattMonitor_ACS37800::AP_BattMonitor_ACS37800(AP_BattMonitor &mon, + AP_BattMonitor::BattMonitor_State &mon_state, + AP_BattMonitor_Params ¶ms): + AP_BattMonitor_Backend(mon, mon_state, params) +{ + AP_Param::setup_object_defaults(this, var_info); + _state.var_info = var_info; +} + +void AP_BattMonitor_ACS37800::init(void) +{ + _dev = hal.i2c_mgr->get_device_ptr(i2c_bus, i2c_address, 100000, false, 20); + if (!_dev) { + return; + } + //Device found + WITH_SEMAPHORE(_dev->get_semaphore()); + uint32_t f_config; + read_word(REG_F_SHADOW, f_config); + // if sensor is already configured, no need to write + if (f_config != CONFIG_F) { + // first time using the sensor -> write config to EEPROM + uint32_t c_config; + // enter "customer mode" by writing the access code - so EEPROM is writeable + write_word(REG_ACCESS_CODE, CUSTOMER_CODE); + hal.scheduler->delay(50); + // write configuration for DC operation + write_word(REG_F_EEPROM, CONFIG_F); + hal.scheduler->delay(90); + read_word(REG_C_EEPROM, c_config); + c_config |= CONFIG_C_MASK; + write_word(REG_C_EEPROM, c_config); + hal.scheduler->delay(100); + } + + _dev->register_periodic_callback(25000, FUNCTOR_BIND_MEMBER(&AP_BattMonitor_ACS37800::update, void)); +} + +void AP_BattMonitor_ACS37800::read() +{ + WITH_SEMAPHORE(accumulate.sem); + _state.healthy = accumulate.count > 0; + if (!_state.healthy) { + return; + } + + _state.voltage = accumulate.volt_sum / accumulate.count; + _state.current_amps = accumulate.current_sum / accumulate.count; + accumulate.volt_sum = 0; + accumulate.current_sum = 0; + accumulate.count = 0; + + const uint32_t tnow = AP_HAL::micros(); + const uint32_t dt_us = tnow - _state.last_time_micros; + + // update total current drawn since startup + update_consumed(_state, dt_us); + _state.last_time_micros = tnow; +} + +void AP_BattMonitor_ACS37800::update() +{ + WITH_SEMAPHORE(_dev->get_semaphore()); + acs378002a_t immediate; + if (read_word(REG_VCODES_ICODES, immediate.data.all)) { + WITH_SEMAPHORE(accumulate.sem); + accumulate.volt_sum += convert_voltage(immediate.data.bits.vcodes); + accumulate.current_sum += convert_current(immediate.data.bits.icodes); + accumulate.count++; + } +} + +float AP_BattMonitor_ACS37800::convert_voltage(int16_t vcode) +{ + return (((((float) vcode)/27536.13)*250)/1000)*RESIST_MULT*volt_fine_mult; +} + +float AP_BattMonitor_ACS37800::convert_current(int16_t icode) +{ + return (((float) icode)/32768.0)*90.0*curr_fine_mult; +} + +bool AP_BattMonitor_ACS37800::write_word(const uint8_t reg, const uint32_t data) const +{ + const uint8_t b[5] { reg, uint8_t (data&0xff), uint8_t(data >> 8), uint8_t(data >> 16), uint8_t(data >> 24) }; + return _dev->transfer(b, sizeof(b), nullptr, 0); +} + +bool AP_BattMonitor_ACS37800::read_word(const uint8_t reg, uint32_t& data) const +{ + return _dev->read_registers(reg, (uint8_t *)&data, sizeof(data)); +} + +#endif diff --git a/libraries/AP_BattMonitor/AP_BattMonitor_ACS37800.h b/libraries/AP_BattMonitor/AP_BattMonitor_ACS37800.h new file mode 100644 index 0000000000000..58b3eadca5f14 --- /dev/null +++ b/libraries/AP_BattMonitor/AP_BattMonitor_ACS37800.h @@ -0,0 +1,62 @@ +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ +#pragma once + +#include "AP_BattMonitor_config.h" + +#if AP_BATTERY_ACS37800_ENABLED + +#include +#include +#include +#include +#include "AP_BattMonitor_Backend.h" + +class AP_BattMonitor_ACS37800 : public AP_BattMonitor_Backend +{ +public: + AP_BattMonitor_ACS37800(AP_BattMonitor &mon, AP_BattMonitor::BattMonitor_State &mon_state, AP_BattMonitor_Params ¶ms); + + bool has_current() const override { return true; } + + void init(void) override; + void read() override; + void update(); + + static const struct AP_Param::GroupInfo var_info[]; + +protected: + AP_HAL::I2CDevice *_dev; + + AP_Int8 i2c_bus; + AP_Int8 i2c_address; + AP_Float volt_fine_mult; + AP_Float curr_fine_mult; + + struct { + uint16_t count; + float volt_sum; + float current_sum; + HAL_Semaphore sem; + } accumulate; + + float convert_voltage(int16_t vcode); + float convert_current(int16_t icode); + + bool write_word(const uint8_t reg, const uint32_t data) const; + bool read_word(const uint8_t reg, uint32_t& data) const; +}; + +#endif // AP_BATTERY_ACS37800_ENABLED diff --git a/libraries/AP_BattMonitor/AP_BattMonitor_Params.cpp b/libraries/AP_BattMonitor/AP_BattMonitor_Params.cpp index aa0d0543cb490..5097e7e23e460 100644 --- a/libraries/AP_BattMonitor/AP_BattMonitor_Params.cpp +++ b/libraries/AP_BattMonitor/AP_BattMonitor_Params.cpp @@ -53,6 +53,7 @@ const AP_Param::GroupInfo AP_BattMonitor_Params::var_info[] = { // @Values: 30:INA3221 // @Values: 31:Analog Current Only // @Values: 32:TIBQ76952-I2C (Periph only) + // @Values: 33:ACS37800-I2C // @User: Standard // @RebootRequired: True AP_GROUPINFO_FLAGS("MONITOR", 1, AP_BattMonitor_Params, _type, int8_t(AP_BattMonitor::Type::NONE), AP_PARAM_FLAG_ENABLE), diff --git a/libraries/AP_BattMonitor/AP_BattMonitor_Params.h b/libraries/AP_BattMonitor/AP_BattMonitor_Params.h index e94a09a35d4b9..a6ab5a62537e3 100644 --- a/libraries/AP_BattMonitor/AP_BattMonitor_Params.h +++ b/libraries/AP_BattMonitor/AP_BattMonitor_Params.h @@ -44,6 +44,7 @@ class AP_BattMonitor_Params { INA3221 = 30, ANALOG_CURRENT_ONLY = 31, TIBQ76952_I2C = 32, + ACS37800_I2C = 33, }; // low voltage sources (used for BATT_LOW_TYPE parameter) diff --git a/libraries/AP_BattMonitor/AP_BattMonitor_config.h b/libraries/AP_BattMonitor/AP_BattMonitor_config.h index a0d0fbfa57c66..247e6e40a9f90 100644 --- a/libraries/AP_BattMonitor/AP_BattMonitor_config.h +++ b/libraries/AP_BattMonitor/AP_BattMonitor_config.h @@ -108,6 +108,10 @@ #define AP_BATTERY_AD7091R5_ENABLED AP_BATTERY_BACKEND_DEFAULT_ENABLED && (HAL_PROGRAM_SIZE_LIMIT_KB > 1024) #endif +#ifndef AP_BATTERY_ACS37800_ENABLED +#define AP_BATTERY_ACS37800_ENABLED 0 +#endif + // SMBus-subclass backends: #ifndef AP_BATTERY_SMBUS_GENERIC_ENABLED #define AP_BATTERY_SMBUS_GENERIC_ENABLED AP_BATTERY_SMBUS_ENABLED diff --git a/libraries/AP_HAL_ChibiOS/hwdef/mRo-M10104/README.md b/libraries/AP_HAL_ChibiOS/hwdef/mRo-M10104/README.md new file mode 100644 index 0000000000000..2a996e00caffd --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/mRo-M10104/README.md @@ -0,0 +1,51 @@ +# mRo CAN Power Board - M10104 + +The sensor is based on Allegro Micro ACS37800 power monitoring IC, which provides 0.85 mΩ primary conductor resistance for low power loss and high inrush current capabilities. + +## Electrical: + +- 50.4V 12S LiPo +- 60 Amps**Continuous**- 90 Amps Max Current Sensing +- 5.3V, 3A ultra low noise power supply + +## Mechanical: + +- Board Weight: 5.90g (0.208 oz) +- Board Dimensions: + - 26mm x 26mm (1.02"x1.02") + +## Parameters: + +- Set `BATT_MONITORx=8` (CAN) + +NOTE: The module comes with factory calibrated values. End users are encouraged to verify and tune the parameters for the best accuracy. +`BATT_V_FINE_M` and `BATT_C_FINE_M` are multipliers set to 1.0 by default to fine tune your power readings. Keep a safe margin of battery capacity for your tests until verified. + +## Port pinout + +### CAN+PWR Connector + +6-pin Molex Clik-Mate + +| Pin | Color | Signal | TTL/Voltage Level | +| --- | ----- | ------ | ----------------- | +| 1 | red | VCC | 5.3V | +| 2 | black | VCC | 5.3V | +| 3 | black | CAN_H | | +| 4 | black | CAN_L | | +| 5 | black | GND | N/A | +| 6 | black | GND | N/A | + +### CAN + +| Pin | Color | Signal | TTL/Voltage Level | +| --- | ----- | ------ | ----------------- | +| 1 | red | VCC | 5V | +| 2 | black | CAN_H | +| 3 | black | CAN_L | +| 4 | black | GND | N/A + +## More questions? +Contact us [info@3dr.com](mailto:info@3dr.com) + +[Designed and assembled in USA] diff --git a/libraries/AP_HAL_ChibiOS/hwdef/mRo-M10104/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/mRo-M10104/hwdef-bl.dat new file mode 100644 index 0000000000000..ca35b44fed9df --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/mRo-M10104/hwdef-bl.dat @@ -0,0 +1,52 @@ +# hw definition file for processing by chibios_pins.py + +# MCU class and specific type +MCU STM32G491 STM32G491xx + +FLASH_RESERVE_START_KB 0 +FLASH_BOOTLOADER_LOAD_KB 26 + +# reserve some space for params +APP_START_OFFSET_KB 4 + +# board ID for firmware load +APJ_BOARD_ID AP_HW_mRoCANPower + +# setup build for a peripheral firmware +env AP_PERIPH 1 + +# crystal frequency +OSCILLATOR_HZ 8000000 + +# assume 256k flash part +FLASH_SIZE_KB 256 + +#STDOUT_SERIAL SD1 +#STDOUT_BAUDRATE 115200 + +# order of UARTs +SERIAL_ORDER + +# a fault LED +PA4 LED_BOOTLOADER OUTPUT LOW +define HAL_LED_ON 1 + +define HAL_USE_EMPTY_IO TRUE +#define PORT_INT_REQUIRED_STACK 64 + +#define DMA_RESERVE_SIZE 0 + +define HAL_SCHEDULER_LOOP_DELAY_ENABLED 0 + +# enable CAN support +PA11 CAN1_RX CAN1 +PA12 CAN1_TX CAN1 + +# debugger support +PA13 JTMS-SWDIO SWD +PA14 JTCK-SWCLK SWD + +# bootloader timeout +define HAL_BOOTLOADER_TIMEOUT 2000 + +define CAN_APP_NODE_NAME "org.ardupilot.mRo-M10104" diff --git a/libraries/AP_HAL_ChibiOS/hwdef/mRo-M10104/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/mRo-M10104/hwdef.dat new file mode 100644 index 0000000000000..877ee8acb29ee --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/mRo-M10104/hwdef.dat @@ -0,0 +1,93 @@ +# hw definition file for processing by chibios_pins.py + +# MCU class and specific type +MCU STM32G491 STM32G491xx + +define HAL_CAN_DEFAULT_NODE_ID 0 +define CAN_APP_NODE_NAME "io.mrobotics.mRo-m10104" + +# bootloader starts firmware at 26k + 4k (STORAGE_FLASH) +FLASH_RESERVE_START_KB 30 + +# store parameters in pages +STORAGE_FLASH_PAGE 13 +define HAL_STORAGE_SIZE 800 + +# setup build for a peripheral firmware +env AP_PERIPH 1 + +define HAL_WATCHDOG_ENABLED_DEFAULT true + +# crystal frequency +OSCILLATOR_HZ 8000000 +#define CH_CFG_ST_FREQUENCY 1000000 + +# assume the 256k flash part +FLASH_SIZE_KB 512 + +# board ID for firmware load +APJ_BOARD_ID AP_HW_mRoCANPower + +define HAL_CAN_POOL_SIZE 6000 + +# LEDs +PA4 LED OUTPUT HIGH + +# debugger support +PA13 JTMS-SWDIO SWD +PA14 JTCK-SWCLK SWD + +# Order of I2C buses +I2C_ORDER I2C1 + +# this board only has a single I2C bus so make it external +define HAL_I2C_INTERNAL_MASK 0 + +# Now the first I2C bus. The pin speeds are automatically setup +# correctly, but can be overridden here if needed. +PA15 I2C1_SCL I2C1 +PB7 I2C1_SDA I2C1 + +# order of UARTs +SERIAL_ORDER USART1 + +STDOUT_SERIAL SD1 +STDOUT_BAUDRATE 115200 + +PA9 USART1_TX USART1 +PA10 USART1_RX USART1 + +# stack for fast interrupts +define PORT_INT_REQUIRED_STACK 64 + +define HAL_SCHEDULER_LOOP_DELAY_ENABLED 0 + +# enable CAN support +PA11 CAN1_RX CAN1 +PA12 CAN1_TX CAN1 + +#define AP_PARAM_MAX_EMBEDDED_PARAM 512 + +#define HAL_USE_SERIAL FALSE +define HAL_USE_ADC FALSE +define HAL_STM32_ADC_USE_ADC1 FALSE +define HAL_DISABLE_ADC_DRIVER TRUE + +# avoid RCIN thread to save memory +define HAL_RCIN_THREAD_ENABLED 0 + +define DMA_RESERVE_SIZE 2048 +#define SERIAL_BUFFERS_SIZE 512 + +define AP_PERIPH_BATTERY_ENABLED 1 +define AP_BATTERY_ACS37800_ENABLED 1 + +define HAL_BATT_MONITOR_DEFAULT 33 +define HAL_BATT_I2C_BUS 1 + +# keep ROMFS uncompressed as we don't have enough RAM +# to uncompress the bootloader at runtime +env ROMFS_UNCOMPRESSED True + +# don't share any DMA channels (there are enough for everyone) +DMA_NOSHARE *