/beta/FC_075i_MartinR/FlightCtrl.aps |
---|
0,0 → 1,0 |
<AVRStudio><MANAGEMENT><ProjectName>FlightCtrl</ProjectName><Created>15-May-2007 11:20:41</Created><LastEdit>11-Oct-2007 22:58:54</LastEdit><ICON>241</ICON><ProjectType>0</ProjectType><Created>15-May-2007 11:20:41</Created><Version>4</Version><Build>4, 13, 0, 528</Build><ProjectTypeName>AVR GCC</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>default\Flight-Ctrl.elf</ObjectFile><EntryFile></EntryFile><SaveFolder>F:\SVN\MikroKopter\FlightCtrl\branches\V0.64_ZeroWarnings\</SaveFolder></CODE_CREATION><DEBUG_TARGET><CURRENT_TARGET>AVR Simulator</CURRENT_TARGET><CURRENT_PART>ATmega644.xml</CURRENT_PART><BREAKPOINTS></BREAKPOINTS><IO_EXPAND><HIDE>false</HIDE></IO_EXPAND><REGISTERNAMES><Register>R00</Register><Register>R01</Register><Register>R02</Register><Register>R03</Register><Register>R04</Register><Register>R05</Register><Register>R06</Register><Register>R07</Register><Register>R08</Register><Register>R09</Register><Register>R10</Register><Register>R11</Register><Register>R12</Register><Register>R13</Register><Register>R14</Register><Register>R15</Register><Register>R16</Register><Register>R17</Register><Register>R18</Register><Register>R19</Register><Register>R20</Register><Register>R21</Register><Register>R22</Register><Register>R23</Register><Register>R24</Register><Register>R25</Register><Register>R26</Register><Register>R27</Register><Register>R28</Register><Register>R29</Register><Register>R30</Register><Register>R31</Register></REGISTERNAMES><COM>Auto</COM><COMType>0</COMType><WATCHNUM>0</WATCHNUM><WATCHNAMES><Pane0></Pane0><Pane1></Pane1><Pane2></Pane2><Pane3></Pane3></WATCHNAMES><BreakOnTrcaeFull>0</BreakOnTrcaeFull></DEBUG_TARGET><Debugger><Triggers></Triggers></Debugger><AVRGCCPLUGIN><FILES><SOURCEFILE>uart.c</SOURCEFILE><SOURCEFILE>analog.c</SOURCEFILE><SOURCEFILE>eeprom.c</SOURCEFILE><SOURCEFILE>fc.c</SOURCEFILE><SOURCEFILE>GPS.c</SOURCEFILE><SOURCEFILE>main.c</SOURCEFILE><SOURCEFILE>menu.c</SOURCEFILE><SOURCEFILE>printf_P.c</SOURCEFILE><SOURCEFILE>rc.c</SOURCEFILE><SOURCEFILE>timer0.c</SOURCEFILE><SOURCEFILE>twimaster.c</SOURCEFILE><HEADERFILE>uart.h</HEADERFILE><HEADERFILE>_Settings.h</HEADERFILE><HEADERFILE>analog.h</HEADERFILE><HEADERFILE>fc.h</HEADERFILE><HEADERFILE>gps.h</HEADERFILE><HEADERFILE>main.h</HEADERFILE><HEADERFILE>menu.h</HEADERFILE><HEADERFILE>old_macros.h</HEADERFILE><HEADERFILE>printf_P.h</HEADERFILE><HEADERFILE>rc.h</HEADERFILE><HEADERFILE>Settings.h</HEADERFILE><HEADERFILE>timer0.h</HEADERFILE><HEADERFILE>twimaster.h</HEADERFILE></FILES><CONFIGS><CONFIG><NAME>default</NAME><USESEXTERNALMAKEFILE>NO</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE></EXTERNALMAKEFILE><PART>atmega644</PART><HEX>1</HEX><LIST>1</LIST><MAP>1</MAP><OUTPUTFILENAME>Flight-Ctrl.elf</OUTPUTFILENAME><OUTPUTDIR>default\</OUTPUTDIR><ISDIRTY>1</ISDIRTY><OPTIONS><OPTION><FILE>GPS.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>analog.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>eeprom.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>fc.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>main.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>menu.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>printf_P.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>rc.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>timer0.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>twimaster.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>uart.c</FILE><OPTIONLIST></OPTIONLIST></OPTION></OPTIONS><INCDIRS/><LIBDIRS/><LIBS><LIB>libc.a</LIB><LIB>libm.a</LIB></LIBS><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -Wstrict-prototypes -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -DVERSION_HAUPTVERSION=0 -DVERSION_NEBENVERSION=64 -DVERSION_KOMPATIBEL=5</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG></CONFIGS><LASTCONFIG>default</LASTCONFIG><USES_WINAVR>1</USES_WINAVR><GCC_LOC>C:\Program Files\WinAVR\bin\avr-gcc.exe</GCC_LOC><MAKE_LOC>C:\Program Files\WinAVR\utils\bin\make.exe</MAKE_LOC></AVRGCCPLUGIN><IOView><usergroups/></IOView><Files><File00000><FileId>00000</FileId><FileName>main.c</FileName><Status>1</Status></File00000><File00001><FileId>00001</FileId><FileName>uart.c</FileName><Status>1</Status></File00001><File00002><FileId>00002</FileId><FileName>menu.c</FileName><Status>1</Status></File00002><File00003><FileId>00003</FileId><FileName>timer0.c</FileName><Status>1</Status></File00003><File00004><FileId>00004</FileId><FileName>fc.c</FileName><Status>1</Status></File00004><File00005><FileId>00005</FileId><FileName>fc.h</FileName><Status>1</Status></File00005><File00006><FileId>00006</FileId><FileName>menu.h</FileName><Status>1</Status></File00006><File00007><FileId>00007</FileId><FileName>TWIMASTER.C</FileName><Status>1</Status></File00007><File00008><FileId>00008</FileId><FileName>twimaster.h</FileName><Status>1</Status></File00008><File00009><FileId>00009</FileId><FileName>uart.h</FileName><Status>1</Status></File00009><File00010><FileId>00010</FileId><FileName>_Settings.h</FileName><Status>1</Status></File00010><File00011><FileId>00011</FileId><FileName>analog.h</FileName><Status>1</Status></File00011><File00012><FileId>00012</FileId><FileName>gps.h</FileName><Status>1</Status></File00012><File00013><FileId>00013</FileId><FileName>main.h</FileName><Status>1</Status></File00013><File00014><FileId>00014</FileId><FileName>old_macros.h</FileName><Status>1</Status></File00014><File00015><FileId>00015</FileId><FileName>printf_P.h</FileName><Status>1</Status></File00015><File00016><FileId>00016</FileId><FileName>rc.h</FileName><Status>1</Status></File00016><File00017><FileId>00017</FileId><FileName>Settings.h</FileName><Status>1</Status></File00017><File00018><FileId>00018</FileId><FileName>timer0.h</FileName><Status>1</Status></File00018></Files><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio> |
/beta/FC_075i_MartinR/GPS.c |
---|
0,0 → 1,32 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
signed int GPS_Nick = 0; |
signed int GPS_Roll = 0; |
signed int GPS_Nick2 = 0; |
signed int GPS_Roll2 = 0; |
long GpsAktuell_X = 0; |
long GpsAktuell_Y = 0; |
long GpsZiel_X = 0; |
long GpsZiel_Y = 0; |
void GPS_Neutral(void) |
{ |
GpsZiel_X = GpsAktuell_X; |
GpsZiel_Y = GpsAktuell_Y; |
} |
void GPS_BerechneZielrichtung(void) |
{ |
GPS_Nick = 0; |
GPS_Roll = 0; |
} |
/beta/FC_075i_MartinR/Hex-Files/BootLoader_MEGA644P_20MHZ_V0_1.hex |
---|
0,0 → 1,64 |
:10F8000011241FBECFEFD0E1DEBFCDBF11E0A0E0DD |
:10F81000B1E0E0EEFBEF02C005900D92A030B10721 |
:10F82000D9F712E0A0E0B1E001C01D92A230B1070B |
:10F83000E1F70C943B7C0C941D7C0895982F8091EB |
:10F84000C00085FFFCCF9093C60008958091C00052 |
:10F850008823E4F78091C600992708958DE40E94DB |
:10F860001E7C8BE40E941E7C82E40E941E7C8CE441 |
:10F870000E941E7C0895CFEFD0E1DEBFCDBFE0E057 |
:10F88000F0E014915F01772474BE98E10FB6F8940C |
:10F8900090936000109260000FBE7092C5008AE2E3 |
:10F8A0008093C4008091C00082608093C0009093D8 |
:10F8B000C10086E08093C200EF01072D8091C00057 |
:10F8C00087FF0DC0013031F48091C6008A3AB1F152 |
:10F8D00000E005C08091C6008B3109F401E0CE0143 |
:10F8E00021968436910528F11F3F41F0112331F014 |
:10F8F000E0910001F091010109951BC01092C50033 |
:10F900008AE28093C4008AE00E941E7C8DE00E94FF |
:10F910001E7C86E50E941E7C80E30E941E7C8EE297 |
:10F920000E941E7C81E30E941E7C8AE30E941E7C52 |
:10F9300005C080E593EC0197F1F7C0CF0E942E7CC3 |
:10F940000E94267C813611F489E547C1813471F427 |
:10F950000E94267CA82EBB24BA2CAA240E94267CB6 |
:10F960009927A82AB92AB694A79406C1823629F401 |
:10F9700089E50E941E7C81E00BC1823409F083C0BE |
:10F980000E94267C9927D82FCC270E94267C992775 |
:10F99000C82BD92B0E94267C082F12E0812E11E063 |
:10F9A000912EEE24FF2464010894811C911CEC1616 |
:10F9B000FD0618F40E94267C01C08FEFD6018C93BF |
:10F9C0000894E11CF11CBFEFEB16F10461F358F34E |
:10F9D000E4E77E1609F0DEC0063409F03DC0FFEF13 |
:10F9E000AF16F7EFBF0608F033C0DE01A5016627AA |
:10F9F0007727440F551F661F771F6A017B01C2E0FE |
:10FA0000D1E001E08991992729913327322F2227CC |
:10FA1000822B932B0C01FA0100935700E8951124D7 |
:10FA20004E5F5F4F6F4F7F4F129761F785E0F60192 |
:10FA300080935700E89507B600FCFDCF81E18093E5 |
:10FA40005700E89576956795579547955A0194C064 |
:10FA500080E00E941E7C90C0053409F08DC0F50145 |
:10FA60009E01A2E0B1E0E1BD8F2F992782BD8D916B |
:10FA700080BD3196FA9AF99AF999FECF215030401B |
:10FA800091F75F0179C0873609F047C00E94267C54 |
:10FA90009927D82ECC240E94267C9927C82AD92AB7 |
:10FAA0000E94267C863411F5E6016501EE24FF24D0 |
:10FAB000CC0CDD1CEE1CFF1CF60105911491802F6F |
:10FAC0000E941E7C812F99270E941E7C82E090E07C |
:10FAD000A0E0B0E0C80ED91EEA1EFB1E229761F717 |
:10FAE000F694E794D794C79456012ACF853409F049 |
:10FAF00027CF7501E1BC8F2D992782BDF89A089414 |
:10FB0000E11CF11C80B50E941E7C0894C108D1083C |
:10FB1000C114D10479F7570113CF853601F594E765 |
:10FB2000791651F580E090E0A0E0B0E023E0FC0120 |
:10FB300020935700E89507B600FCFDCF80509F4FFB |
:10FB4000AF4FBF4F8F3FE7EF9E07E0E0AE07E0E02B |
:10FB5000BE0768F381E180935700E8950DC08534B6 |
:10FB600069F488E190E02CE00FB6F894A8958093B2 |
:10FB700060000FBE209360008DE02FC08035E1F360 |
:10FB80008C34D1F3803711F483E527C0843721F416 |
:10FB90000E941E7C80E021C0843521F40E94267CD6 |
:10FBA000782EEACF8B3109F4C9CE8A3A09F4C6CE51 |
:10FBB000863529F480E30E941E7C81E30EC08337E2 |
:10FBC00041F489E00E941E7C86E90E941E7C8EE141 |
:10FBD00004C08B3109F4B4CE8FE30E941E7CB0CEFA |
:040000030000F80001 |
:00000001FF |
/beta/FC_075i_MartinR/Hex-Files/BootLoader_MEGA644_20MHZ_V0_1.hex |
---|
0,0 → 1,64 |
:10F8000011241FBECFEFD0E1DEBFCDBF11E0A0E0DD |
:10F81000B1E0E0EEFBEF02C005900D92A030B10721 |
:10F82000D9F712E0A0E0B1E001C01D92A230B1070B |
:10F83000E1F70C943B7C0C941D7C0895982F8091EB |
:10F84000C00085FFFCCF9093C60008958091C00052 |
:10F850008823E4F78091C600992708958DE40E94DB |
:10F860001E7C8BE40E941E7C82E40E941E7C8CE441 |
:10F870000E941E7C0895CFEFD0E1DEBFCDBFE0E057 |
:10F88000F0E014915F01772474BE98E10FB6F8940C |
:10F8900090936000109260000FBE7092C5008AE2E3 |
:10F8A0008093C4008091C00082608093C0009093D8 |
:10F8B000C10086E08093C200EF01072D8091C00057 |
:10F8C00087FF0DC0013031F48091C6008A3AB1F152 |
:10F8D00000E005C08091C6008B3109F401E0CE0143 |
:10F8E00021968436910528F11F3F41F0112331F014 |
:10F8F000E0910001F091010109951BC01092C50033 |
:10F900008AE28093C4008AE00E941E7C8DE00E94FF |
:10F910001E7C86E50E941E7C80E30E941E7C8EE297 |
:10F920000E941E7C81E30E941E7C8AE30E941E7C52 |
:10F9300005C080E593EC0197F1F7C0CF0E942E7CC3 |
:10F940000E94267C813611F489E547C1813471F427 |
:10F950000E94267CA82EBB24BA2CAA240E94267CB6 |
:10F960009927A82AB92AB694A79406C1823629F401 |
:10F9700089E50E941E7C81E00BC1823409F083C0BE |
:10F980000E94267C9927D82FCC270E94267C992775 |
:10F99000C82BD92B0E94267C082F12E0812E11E063 |
:10F9A000912EEE24FF2464010894811C911CEC1616 |
:10F9B000FD0618F40E94267C01C08FEFD6018C93BF |
:10F9C0000894E11CF11CBFEFEB16F10461F358F34E |
:10F9D000E4E77E1609F0DEC0063409F03DC0FFEF13 |
:10F9E000AF16F7EFBF0608F033C0DE01A5016627AA |
:10F9F0007727440F551F661F771F6A017B01C2E0FE |
:10FA0000D1E001E08991992729913327322F2227CC |
:10FA1000822B932B0C01FA0100935700E8951124D7 |
:10FA20004E5F5F4F6F4F7F4F129761F785E0F60192 |
:10FA300080935700E89507B600FCFDCF81E18093E5 |
:10FA40005700E89576956795579547955A0194C064 |
:10FA500080E00E941E7C90C0053409F08DC0F50145 |
:10FA60009E01A2E0B1E0E1BD8F2F992782BD8D916B |
:10FA700080BD3196FA9AF99AF999FECF215030401B |
:10FA800091F75F0179C0873609F047C00E94267C54 |
:10FA90009927D82ECC240E94267C9927C82AD92AB7 |
:10FAA0000E94267C863411F5E6016501EE24FF24D0 |
:10FAB000CC0CDD1CEE1CFF1CF60105911491802F6F |
:10FAC0000E941E7C812F99270E941E7C82E090E07C |
:10FAD000A0E0B0E0C80ED91EEA1EFB1E229761F717 |
:10FAE000F694E794D794C79456012ACF853409F049 |
:10FAF00027CF7501E1BC8F2D992782BDF89A089414 |
:10FB0000E11CF11C80B50E941E7C0894C108D1083C |
:10FB1000C114D10479F7570113CF853601F594E765 |
:10FB2000791651F580E090E0A0E0B0E023E0FC0120 |
:10FB300020935700E89507B600FCFDCF80509F4FFB |
:10FB4000AF4FBF4F8F3FE7EF9E07E0E0AE07E0E02B |
:10FB5000BE0768F381E180935700E8950DC08534B6 |
:10FB600069F488E190E02CE00FB6F894A8958093B2 |
:10FB700060000FBE209360008DE02FC08035E1F360 |
:10FB80008C34D1F3803711F483E527C0843721F416 |
:10FB90000E941E7C80E021C0843521F40E94267CD6 |
:10FBA000782EEACF8B3109F4C9CE8A3A09F4C6CE51 |
:10FBB000863529F480E30E941E7C81E30EC08337E2 |
:10FBC00041F489E00E941E7C86E90E941E7C8EE141 |
:10FBD00004C08B3109F4B4CE8FE30E941E7CB0CEFA |
:040000030000F80001 |
:00000001FF |
/beta/FC_075i_MartinR/Hex-Files/Flight-Ctrl_MEGA644_V0_75i.hex |
---|
0,0 → 1,3254 |
:100000000C94BB030C94D6030C94D6030C94D60327 |
:100010000C94D6030C94D6030C94D6030C94D603FC |
:100020000C94D6030C9403160C94D6030C94D603AC |
:100030000C946F290C94D6030C94D6030C94D6031D |
:100040000C94D6030C94D6030C949E140C94D603F3 |
:100050000C94A2090C94D6030C9469090C94D60351 |
:100060000C94271B0C94D6030C942A280C94D603CA |
:100070000C940A610C94D6030C94D603D51BC81BB0 |
:10008000BC1BA21B881B641B761BBB1EEF1DEC1D3B |
:10009000641BD91DBF1D9F1D7F1D2D1DDB1CE11B7A |
:1000A0009F289228DF28C328B72850286128612874 |
:1000B000682884287F2864286C2868287B2888285A |
:1000C00064286C28682877288D286428F1280A0D70 |
:1000D000426174743A0020332043656C6C732020B5 |
:1000E0000020342043656C6C73202000204C6F7717 |
:1000F000207761726E696E67206C6576656C3A2058 |
:1001000025642E2564000A0D3D3D3D3D3D3D3D3DB0 |
:100110003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D0F |
:100120003D3D3D3D3D3D3D3D3D3D3D000A0D466C67 |
:1001300069676874436F6E74726F6C0A0D48617200 |
:1001400064776172653A25642E25640A0D536F66E3 |
:1001500074776172653A5625642E25642563200004 |
:100160000A0D47656E65726174696E672064656625 |
:1001700061756C74204D69786572205461626C659C |
:10018000000A0D4D697865722D436F6E6669673A96 |
:10019000202725732720282575204D6F746F7273D3 |
:1001A00029000A0D466F756E6420424C2D4374720F |
:1001B0006C3A2000256420000A0D0A0D2121204DF3 |
:1001C000495353494E4720424C2D4354524C3A20F8 |
:1001D0002564202121000A0D3D3D3D3D3D3D3D3D35 |
:1001E0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3F |
:1001F0003D3D3D3D3D3D3D3D3D3D3D000A0D496E92 |
:1002000069742E20454550524F4D003A2047656E87 |
:1002100065726174696E672044656661756C742DE2 |
:10022000506172616D65746572207573696E6720C7 |
:100230006F6C6420537469636B2053657474696ECA |
:100240006773000A0D414343206E6F742063616C35 |
:10025000696272617465642021000A0D5573696ECC |
:100260006720706172616D657465727365742025B5 |
:1002700064000A0D43616C6962726174696E672083 |
:1002800070726573737572652073656E736F722E0D |
:100290002E004F4B0A0D000A0D436F6E74726F6C87 |
:1002A0003A200048656164696E67486F6C64004E6F |
:1002B0006F726D616C20284143432D4D6F64652939 |
:1002C000000A0D3D3D3D3D3D3D3D3D3D3D3D3D3DFE |
:1002D0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D4E |
:1002E0003D3D3D3D3D3D0A0D002E000A0D2044419F |
:1002F00043206F7220493243204552524F522120F1 |
:10030000436865636B204932432C2033567265661F |
:100310002C2044414320616E6420424C2D43747272 |
:100320006C005B25695D005B25695D002B204D69D4 |
:100330006B726F4B6F70746572202B0048573A5682 |
:1003400025642E25642053573A25642E25642563A1 |
:100350000053657474696E673A25642025730049FB |
:100360003243204552524F52212121004D6973736F |
:10037000696E6720424C2D4374726C3A25642121CA |
:100380000028632920486F6C67657220427573737B |
:1003900000486F6568653A202020202025356900D7 |
:1003A000536F6C6C486F6568653A20253569004C61 |
:1003B000756674647275636B3A20253569004F6603 |
:1003C000662020202020203A20253569004B6569D1 |
:1003D0006E65200048F668656E726567656C756EBF |
:1003E0006700616B742E204C616765004E69636B1A |
:1003F0003A20202020202025356900526F6C6C3A6D |
:10040000202020202020253569004B6F6D706173FE |
:10041000733A202020253569004B313A2534692074 |
:10042000204B323A25346920004B333A2534692079 |
:10043000204B343A25346920004B353A2534692065 |
:10044000204B363A25346920004B373A2534692051 |
:10045000204B383A25346920004E693A253469200A |
:1004600020526F3A253469200047733A25346920B9 |
:100470002047693A253469200050313A25346920F3 |
:100480002050323A253469200050333A253469200F |
:100490002050343A25346920004779726F202D208E |
:1004A00053656E736F72004E69636B20253469204B |
:1004B000282533692E25692900526F6C6C2025345C |
:1004C0006920282533692E2569290047696572202E |
:1004D000253469202825336929004E69636B20255E |
:1004E000346920282533692E25782900526F6C6CD9 |
:1004F0002025346920282533692E2578290047696D |
:10050000657220253469202825336929004E6963E6 |
:100510006B2025346920282533692928253369294A |
:1005200000526F6C6C2025346920282533692928F6 |
:1005300025336929004769657220253469202825FB |
:10054000336929282533692900414343202D20534D |
:10055000656E736F72004E69636B202534692028C5 |
:100560002533692900526F6C6C20253469202825B9 |
:1005700033692900486F63682025346920282533B2 |
:10058000692900566F6C746167653A202020253513 |
:10059000690052432D4C6576656C3A2020253569FB |
:1005A0000052432D4368616E6E656C733A25346961 |
:1005B000004B6F6D7061737320202020202020007D |
:1005C0005269636874756E673A2020253569004D5D |
:1005D000657373776572743A20202535690053740A |
:1005E0006172743A202020202025356900506F74F4 |
:1005F00069313A202025336900506F7469323A20FE |
:100600002025336900506F7469333A2020253369FF |
:1006100000506F7469343A202025336900536572A5 |
:10062000766F202000536574706F696E74202025EA |
:100630003369005374656C6C756E673A20253369B5 |
:100640000052616E67653A2533692D25336900458F |
:10065000787465726E436F6E74726F6C2020004EFA |
:10066000693A2534692020526F3A253469200047C1 |
:10067000733A253469202047693A253469200048B7 |
:10068000693A253469202043663A253469200042BE |
:100690004C2D4374726C204572726F72732000206F |
:1006A0002533642020253364202025336420202531 |
:1006B0003364200020253364202025336420202546 |
:1006C0003364202025336420002025336420202536 |
:1006D0003364202025336420202533642000424CDD |
:1006E0002D4374726C20666F756E64200020256344 |
:1006F0002020202563202020256320202025632022 |
:100700000020256320202025632020202563202031 |
:1007100020256320002025632020202D2020202D4F |
:100720002020202D003130003131003132000A0DFF |
:10073000506C6561736520636F6E6E6563742053E2 |
:1007400070656B7472756D2072656365697665722C |
:1007500020666F722062696E64696E67204E4F5723 |
:100760002E2E2E006F6B2E0A0D0054696D656F756D |
:10077000742E0A0D000011241FBECFEFD0E1DEBFA2 |
:10078000CDBF13E0A0E0B1E0EAE4F8EC02C00590D0 |
:100790000D92A43FB107D9F71AE0A4EFB3E001C06E |
:1007A0001D92AA32B107E1F70C940E050C940000DB |
:1007B000282FFB018150853008F023E0842F9927F2 |
:1007C000332721503040829FD001839FB00D929FEC |
:1007D000B00D1124AC59BF4F019724F00E9407645B |
:1007E0000192FACF0E946F5F0895863038F085E05D |
:1007F000A2E0B0E0082E0E94146408958823C1F797 |
:100800000895582F863048F155E0842F9927252FD9 |
:10081000332721503040829FD001839FB00D929F9B |
:10082000B00D1124AC59BF4FFB01019724F001908A |
:100830000E941464FACFA2E6B0E0042E0E94146471 |
:10084000A0E5B0E088E0FB01182E0E942064852F0F |
:100850000E94F5030E946F5F08958823B1F6089502 |
:10086000CF93A2E0B0E00E940764802DC82F815092 |
:10087000853020F0C3E08C2F0E94F5038C2F992740 |
:10088000CF9108958091F208E82FFF27EE0FFF1F08 |
:10089000E054F74F808191818D5E9F4F14F010924C |
:1008A0000301808191818A5B9F4F24F48091030131 |
:1008B000882319F020918F0717C081E080930301EE |
:1008C00020918F07280F20938F07253038F088EE6E |
:1008D00093E0909318048093170406C066E970E0D3 |
:1008E000822F0E94A62DE6CF822F992790935D0834 |
:1008F00080935C0808951F93CF93DF93182F88236C |
:1009000089F480910D098233D8F0809300018091A1 |
:1009100000018D3518F48DE580930001112309F451 |
:1009200079C038C08EEC90E09F938F931F920E9405 |
:1009300009120F900F900F9080910D09823328F7C4 |
:1009400084EF91E00E948115EC01112309F042C06F |
:100950008091270390912803823891050CF046C0BE |
:1009600080910D0923E0829FC00111248093000132 |
:10097000112369F268EC70E0822F0E94A62D86EDAB |
:1009800090E09F938F931F920E9409120F900F90F7 |
:100990000F90BDCF809100016AE00E949763892F7C |
:1009A00099279F938F93809100010E9497639927C5 |
:1009B0009F938F938CEE90E09F938F931F920E9452 |
:1009C00009128DB79EB707960FB6F8949EBF0FBE5B |
:1009D0008DBF20C0CE010E948A15882309F0B8CFB0 |
:1009E000CE010E948A158823A9F3B2CF80910D0908 |
:1009F0009927880F991F880F991F80930001112351 |
:100A000009F485CF68EC70E084E00E94A62D81EEA9 |
:100A100090E0B7CFDF91CF911F910895CFEFD0E154 |
:100A2000DEBFCDBF14B815B8C7EED3E0E297D7FF4D |
:100A3000FDCF189B53C1199B5CC12DE0209302018F |
:100A400081E887B93E9A8FEF88B98BE184B981E05C |
:100A500085B98EE38AB987E48BB9469A84B7877FD4 |
:100A600084BF809160008861809360001092600074 |
:100A700080ED97E090931804809317041092ED0492 |
:100A80001092EC041092C5081092C4081092EF0462 |
:100A90001092EE041092F1041092F004243108F444 |
:100AA00023C188E894E0A0E0B0E0809386039093AF |
:100AB0008703A0938803B09389032A3009F449C1BE |
:100AC000243109F446C1289A0E94EC150E94BD15F4 |
:100AD0000E94DE0E0E945A290E94F5190E94E92701 |
:100AE0000E94B85B789486E091E09F938F931F9269 |
:100AF0000E9409120F900F900F9089E690E09F934B |
:100B00008F938BE490E09F938F931F921F9280911D |
:100B100002016AE00E949763892F99279F938F9320 |
:100B2000809102010E94976399279F938F938CE293 |
:100B300091E09F938F931F920E9409128091C800A9 |
:100B40002DB73EB7235F3F4F0FB6F8943EBF0FBEA1 |
:100B50002DBF803209F4F5C0809102018C3008F07D |
:100B6000C1C0299A49E062EF78E083E00E94D8038F |
:100B7000C8EED3E0DE010E940764802D813009F4C5 |
:100B8000BAC080E691E09F938F931F920E94091252 |
:100B90000F900F900F9024EE35E0F9018FE015864D |
:100BA00016861786108A8150349687FFF8CF80E426 |
:100BB0008093F1058093F2051092F3058093F4057C |
:100BC0008093F50590EC9093F6051092F7058093CD |
:100BD000F8058093F9051092FA059093FB05909320 |
:100BE000FC058093FD051092FE058093FF05909310 |
:100BF000000681E08093E40545EE55E08BE0E4E0FB |
:100C0000F1E0DA0101900D928A95E1F78DE4DE01C1 |
:100C1000F901182E0E9420648091850399279F93E3 |
:100C20008F935F934F9381E891E09F938F931F92EF |
:100C30000E9409122DB73EB7295F3F4F0FB6F894B7 |
:100C40003EBF0FBE2DBF82EA91E09F938F931F920C |
:100C50000E9409121092610410921B040E948D3BA5 |
:100C60000F900F900F9080911B048823E1F3109256 |
:100C7000610480ED97E00E948115EC01EE24FF24D1 |
:100C800004EBC02E01E0D02E10921B040E948D3B7D |
:100C900080911B048823E1F3F701EE0FFF1FEE0F95 |
:100CA000FF1FEC51FA4F858518160CF054C08701D0 |
:100CB0000D54174FCE010E948A15882309F04EC0AB |
:100CC000D8018C91882309F049C080931B040E94AD |
:100CD0008D3B80911B048823E1F3ECCF199B2FC03F |
:100CE00024E1ACCE29983ECF8BE095E0A0E0B0E0C7 |
:100CF000DCCE2BE0A3CEA1E0B0E00E940764802D03 |
:100D00008F3F09F43ECF1092850324EE35E08DE449 |
:100D1000DE01F901182E0E940F6490918503F901FC |
:100D20003D962FE08081349618160CF49F5F215079 |
:100D300027FFF8CF9093850345EE55E06DCF2AE06D |
:100D40007DCE8091CA00863009F006CF0E941160E6 |
:100D500003CF2898B9CE87010D54174FF801808131 |
:100D60008823E1F587010F5F1F4F78010C301105D3 |
:100D700008F48ACFEE24FF24B8EBCB2EB1E0DB2EB3 |
:100D800023C0F701EE0FFF1FEE0FFF1FEC51FA4FCC |
:100D900085851816FCF487010F5F1F4F1F930F9373 |
:100DA000DF92CF929F930E9409120F900F900F90A5 |
:100DB0000F900F9027E938E0E20EF31ED7011C9246 |
:100DC00078010C301105D0F4F701ED54F74F908104 |
:100DD0009923B9F287010F5F1F4FECCF87010F5F97 |
:100DE0001F4F1F930F93DF92CF921F920E94091201 |
:100DF0000F900F900F900F900F90B7CF86ED91E06E |
:100E00009F938F931F920E9409120F900F900F9043 |
:100E1000A1E0B0E00E940764802D8E3409F066C125 |
:100E2000A4E0B0E00E940764802D853008F046C23F |
:100E30000E94300445E662EF78E00E94D8030E94E9 |
:100E4000300499279F938F938AE592E09F938F9325 |
:100E50001F920E9409128091FA080F900F900F9034 |
:100E60000F900F9080FD06C20E94ED388091020124 |
:100E70008A3009F4FDC1843109F4FAC1289A80ED61 |
:100E800097E0909318048093170485E58093910769 |
:100E900087E992E09F938F931F920E94091280919D |
:100EA000FA080F900F900F9082FF05C283EA92E03C |
:100EB0009F938F931F920E9409120F900F900F9093 |
:100EC0000E949E1F88E893E19093AB038093AA034E |
:100ED00081E0809390070E947B0481EC92E09F93D5 |
:100EE0008F931F920E9409120F900F900F90809184 |
:100EF0001B04882309F495C080911903882309F401 |
:100F000090C010921B0480918F07882309F4A6C01B |
:100F10000E9442040E948D3B209102012A3009F474 |
:100F2000A6C0243109F4A3C0289A80910F03882316 |
:100F300009F485C0815080930F038091F3048823C6 |
:100F400009F477C08091F30481508093F304809179 |
:100F5000CE05882369F081508093CE05882341F423 |
:100F60001092CC051092CB051092CA051092C905BB |
:100F70008091AA039091AB0301979093AB03809368 |
:100F8000AA038091AA039091AB03892B29F0809149 |
:100F90006004882309F473C08091AA039091AB0385 |
:100FA000892B09F472C080911203909113038F5F13 |
:100FB0009F4F09F47AC080911B04882321F080910F |
:100FC000E904882311F40E941A0F0E94030CCE0139 |
:100FD0000E948A15882319F180910001282F332758 |
:100FE0008091270390912803821793070CF041C04A |
:100FF0008091C20480628093C20480911203909118 |
:1010000013038F5F9F4F09F464C00E94965E84E0D3 |
:101010008093160484E190E00E948115EC010E9407 |
:101020007E5F80911604882309F061CF0E94DA5E0A |
:101030005ECF80916F00806280936F0088CF809335 |
:101040009B071092CE041092CD041092CC04109203 |
:10105000CB041092CA041092C9046FCF0E946D3F56 |
:101060000E948D3B209102012A3009F05ACF289826 |
:101070005CCF8091C2048F7D8093C204C6CF2A309A |
:1010800031F1243121F1289A96CF0E94FF2785E083 |
:1010900090E09093AB038093AA0380911203909108 |
:1010A00013038F5F9F4F09F086CF8091E904882357 |
:1010B00009F481CF80E197E290931804809317049C |
:1010C00080E890E0909313038093120374CF2898E4 |
:1010D00072CF80E797E1909318048093170480E023 |
:1010E00093E090931303809312038FCF0E94472BBA |
:1010F0008CEF91E09F938F931F920E940912E1E081 |
:101100009E2E0F900F900F9000E510E0780108944C |
:10111000E11CF11C72E0C72ED12CC00ED11E63E081 |
:10112000A62EB12CA00EB11E54E0652E712C600EBF |
:10113000711E45E0442E512C400E511E36E0232EE8 |
:10114000312C200E311EE2E09E1609F48BC0F3E034 |
:101150009F1609F48AC023E0291508F483C0809102 |
:101160000201843168F085E080930C09109228090F |
:101170008BE1809308098EE48093250980932609EA |
:10118000D8010E940764802D8C3008F068C0D70118 |
:101190000E940764802D8C3008F061C0D6010E9447 |
:1011A0000764802D8C3008F05AC0D5010E94076476 |
:1011B000802D8C3008F053C0D8010E940764802D28 |
:1011C0008093F208D7010E940764802D8093F30872 |
:1011D000D6010E940764802D8093F408D5010E94F7 |
:1011E0000764802D8093F508D3010E940764802D49 |
:1011F0008093F608D2010E940764802D8093F7083F |
:10120000D1010E940764802D8093F808A7E5B0E023 |
:101210000E940764802D8093F90831E0931651F401 |
:101220008BE092E09F938F931F920E9409120F9080 |
:101230000F900F9045E662EF78E0892D0E9401043F |
:10124000939495E0991508F07ECF83E00E94F50312 |
:101250008EE4A1E0B0E0082E0E941464E1CD0E946B |
:101260002E2BE8CF0E940C2C7ACF0E94CE2C77CF69 |
:10127000289805CE82E792E09F938F931F920E9459 |
:10128000091288EE93E00E948115EC010E94FB197F |
:101290000F900F900F90CE010E948A158823D9F3EA |
:1012A00082E992E09F938F931F920E9409120F9000 |
:1012B0000F900F90D9CD8FEA92E0FACD83E492E0BF |
:1012C0009F938F931F920E9409120F900F900F907F |
:1012D000AFCD1F920F920FB60F9211248F939F9351 |
:1012E000EF93FF93809111038823A9F48091070461 |
:1012F000909108040196FC01EF5BF94FE081ED301D |
:1013000079F08639910561F0909308048093070481 |
:10131000E093C6000EC0109208041092070409C0A2 |
:10132000109208041092070481E080931103E09367 |
:10133000C600FF91EF919F918F910F900FBE0F907C |
:101340001F9018951F920F920FB60F9211242F9392 |
:101350003F934F935F938F939F93AF93BF93EF937D |
:10136000FF9390E08091C6008093FF0350910D049D |
:10137000563910F090930E048091FF038D3091F058 |
:1013800020910E04822F99278130910509F46CC0B9 |
:10139000823091050CF48EC0029709F47FC0109240 |
:1013A0000E04A8C020910E04223061F790930E0421 |
:1013B000852F99278256984FFC01329740812091C2 |
:1013C000090430910A04241B3109DC0111978C9126 |
:1013D000281B3109C9019F7090930A048093090466 |
:1013E0000024880F991F001C880F991F001C892F4B |
:1013F000902D982F935C90930B042F733070235C87 |
:1014000020930C048081891709F46EC090E08091CC |
:10141000FC038F5F8093FC033091FE03332309F0BC |
:1014200069C0992309F466C081E08093FE03580FD8 |
:101430005093FB035150E52FFF27E256F84F8DE004 |
:1014400080838091A007823509F054C088E190E044 |
:101450002CE00FB6F894A895809360000FBE2093FF |
:1014600060003093150446C02F5F20930E04E52FD3 |
:10147000FF27E256F84F8091FF0380835F5F509310 |
:101480000D042091FF038091090490910A04820FBA |
:10149000911D90930A04809309042CC0E52FFF2727 |
:1014A000E256F84F8091FF038083563938F310924B |
:1014B0000E04E7CF892B09F072CF8091FF038332AE |
:1014C00059F08091FF0380939E0781E080930D0483 |
:1014D0008091FF039927DDCF8091FE03882389F750 |
:1014E00081E080930E04EDCF8C91821709F08ECFAE |
:1014F00091E092CFFF91EF91BF91AF919F918F912A |
:101500005F914F913F912F910F900FBE0F901F90C1 |
:101510001895AC01A0E0B0E09D01A817B90748F408 |
:10152000E1E4F6E08191280F311D1196A417B5076B |
:10153000C8F33F70FD01EF5BF94FC9010024880F2C |
:10154000991F001C880F991F001C892F902D835C08 |
:1015500080831196FD01EF5BF94F2F733070822F5E |
:10156000835C8083AE5BB94F8DE08C931092110346 |
:10157000809141068093C6000895BF92CF92DF927A |
:10158000EF92FF920F931F93CF93DF93CDB7DEB708 |
:101590002C859D857E85BB2483E2809341069F59DF |
:1015A000909342062093430603E010E0772309F46A |
:1015B000ADC0CF84D88843E1E42EF12CEC0EFD1EA3 |
:1015C000A989BA897150109709F4A0C0109709F43D |
:1015D0003CC0F601EB0DF11DB3949081119789F495 |
:1015E0007723A1F1F70122E030E0E20EF31ED701EC |
:1015F000C080D180E20EF31E0D90BC91A02DBB24C3 |
:101600007150109719F1F601EB0DF11DB394408163 |
:10161000119709F466C01097D1F0F601EB0DF11D9A |
:10162000B39460811197A1F4772391F0F70132967A |
:10163000D701CD90DC9032E0E32EF12CEE0EFF1EB0 |
:10164000A081B181BB24715003C090E040E060E014 |
:10165000F801EF5BF94F892F86958695835C80832F |
:101660000F5F1F4FF801EF5BF94F892F99278370A8 |
:10167000907082959295907F9827807F9827552724 |
:101680009A01329522952F7023273F702327822BB2 |
:10169000835C80830F5F1F4FF801EF5BF94F4F7042 |
:1016A0005070440F551F440F551F862F9927002453 |
:1016B000880F991F001C880F991F001C892F902DDF |
:1016C000842B835C80830F5F1F4FF801EF5BF94F22 |
:1016D0006F73635C60830F5F1F4F109709F076CFC5 |
:1016E00015C0772309F4B3CFF701A2E0B0E0EA0E0A |
:1016F000FB1ED701C080D18022E030E0E20EF31E55 |
:101700000D90BC91A02DBB24715085CFC8010E94C3 |
:10171000890ADF91CF911F910F91FF90EF90DF9099 |
:10172000CF90BF900895A3E07A2F4091FB034650DD |
:1017300009F45FC0E72FFF27E256F84F80818D53F1 |
:101740007F5FE72FFF27E256F84F20812D537F5F01 |
:10175000E72FFF27E256F84F30813D537F5FE72F99 |
:10176000FF27E256F84F60816D537F5F9927880FFE |
:10177000991F880F991F522F52955F70582B822FF7 |
:1017800099278F70907082959295907F9827807F8F |
:101790009827232F26952695282B832F992783700A |
:1017A0009070002496958795079496958795079451 |
:1017B000982F802D682B41504F3FD9F0EA2FFF27FB |
:1017C000E256F84F5083AF5F41504F3F91F0EA2F00 |
:1017D000FF27E256F84F2083AF5F41504F3F49F05B |
:1017E000EA2FFF27E256F84F6083AF5F442309F0EA |
:1017F000A1CF81EA97E09093FA038093F903A35075 |
:10180000A093F8030895CF93DF93CDB7DEB7229767 |
:101810000FB6F894DEBF0FBECDBF8091FE038823C4 |
:1018200009F4AFC20E94930B80919F07823609F49E |
:1018300071C08091A00799278436910509F457C09B |
:101840008536910584F58136910509F44EC18236BD |
:1018500091050CF4C2C08236910509F49AC1833611 |
:101860009105C1F48091F4039091F503892B09F05F |
:101870004FC2A091F903B091FA039C91992309F00A |
:101880003DC29C918AE0989FC00111249093F5037A |
:101890008093F4031092FE031092FA031092F9035E |
:1018A0001092F8036EC28C36910509F410C18D3682 |
:1018B00091050CF0B3C08736910509F42BC1883629 |
:1018C000910541F78FEF80930F03E091F903F091B9 |
:1018D000FA03808190915B04892B80935B048823B9 |
:1018E00011F01092000481E080930404D3CFE091C2 |
:1018F000F903F091FA0390818AE0989FC0011124C6 |
:1019000090930D0380930C03892B21F281E0809347 |
:101910000304C0CF8091A00799278037910509F46F |
:10192000F2C0813791050CF485C08337910509F425 |
:101930005BC1843791050CF03CC18137910509F0FA |
:1019400078CFA091F903B091FA038C918F3F09F4FD |
:101950000CC28C91882309F003C281E08C93A09182 |
:10196000F903B091FA0345E662EF78E08C910E94AA |
:10197000D803809111038823E1F3E091F903F091FA |
:10198000FA03808189838EE48A8385E690E09F93C1 |
:101990008F9382EF98E09F938F9321E030E03F9305 |
:1019A0002F93CE0102969F938F933F932F93CE0157 |
:1019B000820F931F9F938F9383E08F9381E08F9388 |
:1019C00081E58F930E94BD0AADB7BEB71F960FB6D3 |
:1019D000F894BEBF0FBEADBF2CCF8B34910509F07C |
:1019E00059CFE091F903F091FA03808191819093AE |
:1019F0000505809304052091020530910305821BA3 |
:101A0000930B845E9D4F68E671E00E94B763845B30 |
:101A1000904090930105809300053CCF8437910559 |
:101A200009F47CC08637910509F034CF81E08093BA |
:101A3000020430CF8D36910529F18E3691050CF0D8 |
:101A400093C08B34910509F0F4CEA091F903B091C5 |
:101A5000FA038D919C919093050580930405209144 |
:101A6000020530910305821B930B845E9D4F68E64F |
:101A700071E00E94B763845B90409093010580936E |
:101A80000005D7CE809111038823E1F3A091F903DB |
:101A9000B091FA039C91913009F43FC1198281E021 |
:101AA00090E09F938F93CE0101969F938F9381E057 |
:101AB0008F938F938DE48F930E94BD0A8DB79EB74D |
:101AC00007960FB6F8949EBF0FBE8DBFB2CE8FEFB4 |
:101AD00080930F03E091F903F091FA0380818093E2 |
:101AE0005C0481E080930504D5CEE091F903F09188 |
:101AF000FA03E081E03258F08FE1809310038FEF1A |
:101B000080930F03C7CE81E08093010492CEE093CF |
:101B10001003F5CF81E080930604BCCE8091FB03D7 |
:101B2000853108F4DAC0E091F903F091FA0380E11D |
:101B3000A9E7B7E001900D928A95E1F78091110332 |
:101B40008823E1F31F9280910E038F9384E58F9396 |
:101B50000E94BD0A8AEF8093F6038FEF80930F03F4 |
:101B60000F900F900F9096CE8E36910509F061CEB2 |
:101B7000809111038823E1F38DE490E09F938F938C |
:101B800084EE95E09F938F9381E08F938F938EE403 |
:101B900092CFA091F903B091FA038BE0E1E9F7E06D |
:101BA0000D9001928A95E1F780919A0780937608CB |
:101BB000A6CF8437910509F03CCE8091FB03853197 |
:101BC00008F4BCC0A091F903B091FA0380E1E9E701 |
:101BD000F7E00D9001928A95E1F780EF8093F6038C |
:101BE0008FEF80930F0325CE2091F9033091FA03F4 |
:101BF000F90180818150853018F481818E34E9F0BB |
:101C00001982809111038823E1F381E090E09F9392 |
:101C10008F93CE0101969F938F9381E08F938F9343 |
:101C200083E58F930E94BD0AEDB7FEB737960FB6D6 |
:101C3000F894FEBF0FBEEDBFFCCD62EF78E085E605 |
:101C40002E5F3F4FDB01F901982F01900D929A957D |
:101C5000E1F722503040482FD9018C910E940104B5 |
:101C6000809125099927AA27BB27BC01CD0124EC27 |
:101C700039E040E050E00E947863DC01CB018093C2 |
:101C8000A4039093A503A093A603B093A703809108 |
:101C900026099927AA27BB27BC01CD010E9478639A |
:101CA000DC01CB018093A0039093A103A093A20336 |
:101CB000B093A303E091F903F091FA0380810E94AD |
:101CC000F5030E943004898380E00E947B046EE665 |
:101CD00070E089810E94A62D94CFE091F903F091E4 |
:101CE000FA0380819181A281B381809379079093D7 |
:101CF0007A07A0937B07B0937C0720CF8AE0989F58 |
:101D0000C00111240E9481159093400680933F06E4 |
:101D1000A091F903B091FA03B4CD44EE55E08DE4FF |
:101D2000FA01282F0D9001922A95E1F7A8EEB3E071 |
:101D3000FA01182E0E9420649983B1CEA091F90374 |
:101D4000B091FA038D919D910D90BC91A02D80933F |
:101D5000790790937A07A0937B07B0937C073DCFD8 |
:101D6000863008F400CE85E0F9CD0E943004E09181 |
:101D7000F903F091FA038083A091F903B091FA037B |
:101D8000E8CD22960FB6F894DEBF0FBECDBFDF912F |
:101D9000CF910895CF93C82F8A3029F08091C00049 |
:101DA00085FFFCCF04C08DE00E94CA0EF7CFC09320 |
:101DB000C60080E090E0CF910895089588E1809377 |
:101DC000C1008091C00082608093C0008091C100FA |
:101DD00080688093C1008091C10080648093C100BD |
:101DE0008AE28093C40080910C0390910D030E94BD |
:101DF000811590936E0780936D078CED90E00E94A3 |
:101E0000811590939D0780939C0710926F078BE438 |
:101E10008093700788E0809373078AE0809371074E |
:101E200081E0809372071092FA031092F9031092E6 |
:101E3000F8030895EF92FF920F931F93809111037F |
:101E4000882309F478C280910404882309F082C0B1 |
:101E500080910504882329F080911103882309F0DB |
:101E60007FC180910204882329F080911103882387 |
:101E700009F05BC180910604882329F08091110349 |
:101E8000882309F036C180919C0790919D070E949C |
:101E90008A15882329F080911103882309F0C8C08E |
:101EA00080910C0390910D03892B09F084C18091DE |
:101EB0000304882329F080911103882309F00FC2BD |
:101EC0008091F4039091F503892B09F07EC1209154 |
:101ED00010032F3F59F180E190E09F938F93822F61 |
:101EE000992782959295907F9827807F9827845F85 |
:101EF0009E4F9F938F9381E090E09F938F9380E11B |
:101F000093E09F938F9382E08F9381E08F9381E49E |
:101F10008F930E94BD0A8FEF809310038DB79EB7F9 |
:101F20000B960FB6F8949EBF0FBE8DBF80917608BA |
:101F3000882329F080911103882309F05EC08091E5 |
:101F40000104882309F4F7C180911103882309F45F |
:101F5000F2C139C080911103882309F479CF0E941E |
:101F6000A71F84E190E09F938F939091000484E1F8 |
:101F7000989FC0011124865D9C4F9F938F9381E0B1 |
:101F800090E09F938F9380E094E09F938F9382E003 |
:101F90008F9381E08F9388E48F930E94BD0A809194 |
:101FA00000048F5F2DB73EB7255F3F4F0FB6F89403 |
:101FB0003EBF0FBE2DBF843008F4B8C1109200049C |
:101FC0001092040445CF86E190E09F938F9380ECBC |
:101FD00098E09F938F9381E08F938F9380E58F9309 |
:101FE0000E94BD0A109201048DB79EB707960FB6E6 |
:101FF000F8949EBF0FBE8DBF9EC181E090E09F937D |
:102000008F9386E798E09F938F9381E08F938F93D0 |
:1020100082E48F930E94BD0A109276082DB73EB7D6 |
:10202000295F3F4F0FB6F8943EBF0FBE2DBF87CF3D |
:10203000809108099927880F991F880F991F7C01A3 |
:102040000027F7FC0095102F80913E0590913F05E9 |
:10205000A0914005B0914105BC01CD01A8019701B7 |
:102060000E94EC6330938A0720938907809136059C |
:1020700090913705A0913805B0913905BC01CD018B |
:10208000A80197010E94EC6330938C0720938B0783 |
:102090008091D60480938D078091D50480938E071C |
:1020A00088E090E09F938F9389E897E09F938F93C8 |
:1020B00081E08F9383E08F9387E78F930E94BD0A1F |
:1020C00080918F072DB73EB7295F3F4F0FB6F89429 |
:1020D0003EBF0FBE2DBF853018F086E080938F077E |
:1020E00083E690E00E94811590939D0780939C0762 |
:1020F000D7CE8BE090E09F938F9381E997E09F93F9 |
:102100008F9381E08F9380910E038F9387E48F9359 |
:102110000E94BD0A109206048DB79EB707960FB6AF |
:10212000F8949EBF0FBE8DBFAECE8AE090E09F9325 |
:102130008F938FE697E09F938F9381E08F938F9398 |
:1021400086E58F930E94BD0A109202042DB73EB718 |
:10215000295F3F4F0FB6F8943EBF0FBE2DBF8ACE0A |
:102160000E94A71F80E590E09F938F938AE293E0FF |
:102170009F938F9321E030E03F932F9389E293E088 |
:102180009F938F933F932F938CE594E09F938F932E |
:1021900083E08F9381E08F938CE48F930E94BD0A3C |
:1021A000109205048DB79EB70F960FB6F8949EBF98 |
:1021B0000FBE8DBF56CE80916D0790916E070E9425 |
:1021C0008A15882309F077CE72CE80913F069091D0 |
:1021D00040060E948A15882309F479CE8091110364 |
:1021E000882309F474CE809108099927880F991FD4 |
:1021F000880F991F7C010027F7FC0095102F809114 |
:102200003E0590913F05A0914005B0914105BC016C |
:10221000CD01A80197010E94EC6330933206209310 |
:1022200031068091360590913705A0913805B0911F |
:102230003905BC01CD01A80197010E94EC633093E0 |
:102240003406209333062091BC093091BD0940919A |
:10225000BE095091BF09DA01C90103E0880F991F37 |
:10226000AA1FBB1F0A95D1F7820F931FA41FB51F8A |
:10227000820F931FA41FB51F2091860330918703FF |
:102280004091880350918903BC01CD010E94EC6309 |
:1022900030933606209335068EE090E09F938F931F |
:1022A00081E396E09F938F9381E08F938F9383E4F4 |
:1022B0008F930E94BD0A8091F4039091F5030E94D0 |
:1022C00081159093400680933F062DB73EB7295F56 |
:1022D0003F4F0FB6F8943EBF0FBE2DBFF8CD82E43E |
:1022E00090E09F938F9384E398E09F938F9381E096 |
:1022F0008F938F9384E48F930E94BD0A10920304FE |
:102300008DB79EB707960FB6F8949EBF0FBE8DBFD0 |
:1023100080910C0390910D03009709F4D1CD0E9498 |
:10232000811590936E0780936D07CACD809300044A |
:10233000109204048DCD1F910F91FF90EF9008959E |
:10234000982F80917708813031F0892F0E94CA0E32 |
:10235000282F33270CC080915D04E82FFF27E65D0E |
:10236000FC4F90838F5F80935D0421E030E0C901D2 |
:1023700008950F931F93CF93DF938C01EB01672B8D |
:1023800071F0F80181918F010E94A011219739F01D |
:10239000F80181918F010E94A011219791F7DF919F |
:1023A000CF911F910F9108950F931F93CF93DF93B8 |
:1023B0008C01EB01672B81F0F8010F5F1F4F8491B7 |
:1023C0000E94A011219741F0F8010F5F1F4F8491E7 |
:1023D0000E94A011219781F7DF91CF911F910F915A |
:1023E0000895CF93C82F181634F480E20E94A011EC |
:1023F000C1501C16D4F3CF910895CF93C82F18164F |
:1024000034F480E30E94A011C1501C16D4F3CF9184 |
:1024100008952F923F924F925F926F927F928F9288 |
:102420009F92AF92BF92CF92DF92EF92FF920F9363 |
:102430001F93CF93DF93CDB7DEB7E0970FB6F89435 |
:10244000DEBF0FBECDBF26968FAD26972896EEAD88 |
:10245000FFAD28978824992454018093770848E495 |
:10246000C42ED12CCC0EDD1E7F01C701F7011491C3 |
:10247000112331F0153221F00894E11CF11CF6CF44 |
:10248000B701681B790B09F095C0112309F43DC20F |
:102490000894E11CF11C1FA63FA4232C0FEF39A6C2 |
:1024A000F7010894E11CF11C14911537C9F1812F33 |
:1024B00080628837A9F1103209F440C0133209F460 |
:1024C0008DC01A3209F479C01D3209F476C01B326E |
:1024D000C9F11E32C9F1103309F48AC0812F81532A |
:1024E000893008F07EC060E070E0CB01880F991F52 |
:1024F000880F991F880F991F860F971F680F791FE4 |
:10250000610F711D60537040F7010894E11CF11CCC |
:102510001491812F80538A3040F3262E153739F6D7 |
:1025200030FE3DC0F60184E090E0C80ED91E8080E8 |
:102530009180A280B380103209F0C0CF89A5882392 |
:1025400009F0AECF19A7ACCFF7010894E11CF11C3C |
:1025500014911A3209F451C060E070E014C0CB014C |
:10256000880F991F880F991F880F991F860F971F33 |
:10257000680F791F610F711D60537040F701089457 |
:10258000E11CF11C1491812F80538A3040F3EFEF4E |
:102590006F3F7E0714F46FEF7FEF062F86CFF601B3 |
:1025A00082E090E0C80ED91E808191814C01AA245E |
:1025B000BB2481CF0E94D41168CF1A3251F4F601A6 |
:1025C00082E090E0C80ED91E208022200CF068CF57 |
:1025D000219490E1392AEFED3E2262CF98E0392A2A |
:1025E0005FCF1836C9F01C36D1F481E0382A58CFB5 |
:1025F00034FC56CFF0E23F2A53CFF60182E090E060 |
:10260000C80ED91E608171819FEF6F3F790714F466 |
:102610006FEF7FEF062F44CF24E0322A41CF1336ED |
:1026200009F44DC1143409F41FC1143609F41CC156 |
:10263000193609F419C11F3409F40FC11F3609F402 |
:102640000CC1103709F4F9C0133709F4B2C01535BD |
:1026500009F4ECC0153709F4E9C0183509F444C091 |
:10266000183709F441C0112309F44FC1CE01019676 |
:102670009DA78CA7198381E0482E19A6632C772487 |
:10268000042D5FA4541857FC2DC029A5222331F135 |
:102690000F5F050DC30180739070892B09F42FC162 |
:1026A000222309F027C166FC1BC1C301807390700F |
:1026B000809709F410C1852D0E94FD11842D992762 |
:1026C00087FD9095BC018CA59DA50E94B91164FE63 |
:1026D000CCCE822D801B0E94F111C7CE66FED9CFD1 |
:1026E0000E5FD7CF5524D1CFE0E1EEA733FE07C070 |
:1026F00081149104A104B10411F0F0E43F2A19A659 |
:102700000FA707FD02C02FED3222CE0189969DA7AB |
:102710008CA781149104A104B10419F49FA59923F5 |
:1027200061F1EEA54E2E55246624772418AA841450 |
:102730009504A604B70410F0F1E0F8ABC501B401AC |
:10274000A30192010E94CA63DC01CB01082F8A30E9 |
:10275000F0F4005DECA5FDA50293FDA7ECA7C50173 |
:10276000B401A30192010E94CA6349015A01F8A968 |
:10277000FF23E1F62EA5283079F0632C7724CE01D3 |
:102780000196482EFCA54F1A28E2420E79CF095A2D |
:10279000183501F70F7DDECF632C772463FEEFCF72 |
:1027A000003369F380E3ECA5FDA58293FDA7ECA7B8 |
:1027B000E6CFF60182E090E0C80ED91E0190F081CC |
:1027C000E02DFDA7ECA7EF2B81F4FE013196FDA7CC |
:1027D000ECA788E289838EE6818385E78B838CE68C |
:1027E0008C838D8389E28E831F8207FD15C0802F25 |
:1027F000992787FD9095AC0160E070E08CA59DA5C0 |
:102800000E949162009731F0482EFCA54F1A0415E2 |
:102810000CF033CF402E31CFECA5FDA50190002068 |
:10282000E9F731974E2E2CA5421A27CF153511F412 |
:1028300081E0382A9AE09EA762CFF60182E090E01C |
:10284000C80ED91E808191814C01AA24BB2490E13D |
:102850009EA7E0E43E2A18E752CF1F3411F4E1E0CE |
:102860003E2AF8E0FEA74BCF143411F491E0392A48 |
:1028700030FE18C0F60184E090E0C80ED91E8080BA |
:102880009180A280B380B7FE0AC0B094A0949094C7 |
:102890008094811C911CA11CB11C8DE289A79AE037 |
:1028A0009EA72ECFF60182E090E0C80ED91E80814F |
:1028B00091814C01AA2497FCA094BA2CE4CFFE018C |
:1028C0003196FDA7ECA7F60182E090E0C80ED91E74 |
:1028D00080818983D0CE822D801B0E94FD11EBCE9A |
:1028E00080E38AA71BA762E070E0CE018A960E946F |
:1028F000B911DBCE61E070E0CE018996F8CF822D70 |
:10290000801B0E94F11129A5CBCEE0960FB6F8945A |
:10291000DEBF0FBECDBFDF91CF911F910F91FF9012 |
:10292000EF90DF90CF90BF90AF909F908F907F906F |
:102930006F905F904F903F902F9008951F920F924D |
:102940000FB60F9211242F933F935F936F937F9352 |
:102950008F939F93AF93BF93EF93FF938091160450 |
:10296000882329F080911604815080931604809169 |
:102970001E0481508F3F09F493C080931E04809100 |
:10298000170490911804892B01F1809117049091FC |
:1029900018040197909318048093170480911704EA |
:1029A00090911804209112033091130382239323F2 |
:1029B000892B89F0809102018A3009F48BC0479AF3 |
:1029C0008091FA0883FF8DC010C08FEF9FEF909326 |
:1029D000130380931203809102018A3009F478C0B6 |
:1029E00047988091FA0883FF7CC086B19927FC0143 |
:1029F000E071F07084FF0AC08091190490911A046C |
:102A0000019690931A04809319046BC08091190465 |
:102A100090911A04892B49F18091190490911A041C |
:102A20008A56914010F58091190490911A0469E238 |
:102A300070E00E94A3638091190490911A04860F9C |
:102A4000971F90931A048093190480911904909110 |
:102A50001A040B9708F440C08091190490911A044D |
:102A60000A97909305058093040580910405909141 |
:102A700005052091020530910305821B930B845EAE |
:102A80009D4F68E671E00E94B763845B904090932D |
:102A900001058093000510921A041092190421C0B8 |
:102AA00089E080931E04809114038F5F817080936E |
:102AB0001403882319F481E080931B0480911C0483 |
:102AC00090911D04019690931D0480931C0457CF90 |
:102AD0005A9887CF5A9A85CFF0930505E09304055D |
:102AE000C4CFFF91EF91BF91AF919F918F917F9153 |
:102AF0006F915F913F912F910F900FBE0F901F909C |
:102B0000189520911C0430911D04280F391FC9010C |
:102B10000196089520911C0430911D04821B930B93 |
:102B2000892F99278695807490700895CF93DF93AD |
:102B30000E948115EC01CE010E948A158823D9F3E9 |
:102B4000DF91CF9108951F93CF93DF930E9481155A |
:102B5000EC011FEC08C080911903882321F09093A9 |
:102B6000190310937A00CE010E948A15982F8823AA |
:102B700091F3DF91CF911F9108959FB7F8945F98DB |
:102B80003E9A469A8091B0008F708093B0008091F9 |
:102B9000B00083608093B0008091B1008B7380930C |
:102BA000B1008091B1008B608093B1001092B200AF |
:102BB0008FEF8093B3008091B00080688093B00065 |
:102BC000809170008A7F8093700080917000826095 |
:102BD000809370009FBF08958AE090E00E94811565 |
:102BE000909326048093250482E085BD83EA84BD0A |
:102BF00017BC88E788BD86E086BD80916E00816045 |
:102C000080936E0008951F920F920FB60F921124B9 |
:102C10002F933F934F935F936F937F938F939F93E4 |
:102C2000AF93BF93EF93FF93809102018431C0F47F |
:102C300080911F04882309F446C02091200430911C |
:102C4000210441E02F37340708F49CC08FEF8093B4 |
:102C5000B3002F5F30403093210420932004B4C38D |
:102C600080911F04882349F78091B00086FFADC092 |
:102C70008091B0008F7B8093B000E0912404EE231C |
:102C800009F0EFC080911E09282F33278DED96E0C3 |
:102C9000289FA001299F500D389F500D1124CA0173 |
:102CA0002091220430912304821B930B90932104E2 |
:102CB000809320041092230410922204469A81E00B |
:102CC00080931F04BACF8091B00086FFA8C0809186 |
:102CD000B0008F7B8093B00089EA93E09093210449 |
:102CE0008093200480911503909116039C01220F7C |
:102CF000331F280F391F809192039927880F991F3E |
:102D0000880F991F280F391F37FD35C2C9019595C6 |
:102D100087959595879590931603809315039093C7 |
:102D20001204809311048091460980FFDDC08091D8 |
:102D30001709682F77278827992720913E0530911A |
:102D40003F05409140055091410557FDF9C1A7E06D |
:102D50005595479537952795AA95D1F70E947863A1 |
:102D60009B01AC0197FD0AC2F6E055954795379552 |
:102D70002795FA95D1F78091110490911204820F52 |
:102D8000931FDCC02F3F310569F060F0A9014F5F50 |
:102D900050404F37510588F480E88093B3002058A5 |
:102DA000304059CF809120048093B30010922104C9 |
:102DB0001092200410921F0407C38FEF8093B3007A |
:102DC0005093210440932004FFC28091B00080649E |
:102DD0008093B0008CEB90E09093210480932004CA |
:102DE000809122049091230484549F4F9093230454 |
:102DF0008093220480911504882329F08091F304A4 |
:102E0000853B08F0FAC0469A909124049F5F809118 |
:102E10001E09891708F0EEC01092240450CF80914B |
:102E2000B00080648093B00080911E09282F332762 |
:102E30008DED96E0289FA001299F500D389F500DE1 |
:102E40001124CA012091220430912304821B930B88 |
:102E500090932104809320049C0181E080931F04BF |
:102E6000F0CE89EA93E090932104809320048E2F82 |
:102E700099278130910509F4C2C0029709F488C1ED |
:102E8000FF27EE0FFF1FE054F74F80819181880FDD |
:102E9000991F2091200430912104820F931F909359 |
:102EA000210480932004209120043091210455E0D6 |
:102EB0002D3D350708F450C18CED95E09093210429 |
:102EC000809320049C012C5B30403093210420939C |
:102ED00020048091220490912304820F931F9093E9 |
:102EE000230480932204EBCE80911709682F772763 |
:102EF0008827992720913E0530913F054091400554 |
:102F00005091410557FD17C1E7E055954795379515 |
:102F10002795EA95D1F70E9478639B01AC0197FD54 |
:102F200032C176E055954795379527957A95D1F733 |
:102F30008091110490911204821B930B90931204C0 |
:102F40008093110480911809282F3327220F331FF3 |
:102F5000220F331F8091110490911204821793075E |
:102F60007CF080911909282F3327220F331F220F5D |
:102F7000331F80911104909112042817390724F40B |
:102F80003093120420931104209111043091120403 |
:102F90008091200490912104280F391F2050324045 |
:102FA000809111049091120497FDE3C09595879547 |
:102FB0009595879590931204809311048091110444 |
:102FC0009091120490935F0880935E0845E02D3D38 |
:102FD000340708F4BAC08CED95E0909321048093F7 |
:102FE0002004209120043091210430932304209365 |
:102FF000220433CF9093240462CE469805CF80916B |
:103000001503909116039C01220F331F280F391FBF |
:10301000809192039927880F991F880F991F280F75 |
:10302000391F37FDA1C1C90195958795959587955C |
:1030300090931603809315039093120480931104C8 |
:103040008091460980FF38C180911709682F772742 |
:103050008827992720913E0530913F0540914005F2 |
:103060005091410557FD8DC1E7E05595479537953E |
:103070002795EA95D1F70E9478639B01AC0197FDF3 |
:103080007BC1B6E05595479537952795BA95D1F709 |
:103090008091110490911204820F931F9093120457 |
:1030A0008093110480911809282F3327220F331F92 |
:1030B000220F331F809111049091120482179307FD |
:1030C0007CF080911909282F3327220F331F220FFC |
:1030D000331F80911104909112042817390724F4AA |
:1030E00030931204209311048091110490911204E2 |
:1030F0002091200430912104820F931F8050924030 |
:1031000090932104809320048091110490911204E3 |
:1031100097FD28C19595879595958795909312046D |
:1031200080931104809111049091120490935F0890 |
:1031300080935E08B8CE21583F4F4F4F5F4FE4CE8B |
:1031400021583F4F4F4F5F4F02CE51E02737350791 |
:1031500058F487E791E041CF81E02737380708F03E |
:10316000B2CE87E791E0AACE3093210420932004C9 |
:1031700038CF03961BCF2D5F3F4FC8CD215C3F4F0B |
:103180004F4F5F4FF1CD215C3F4F4F4F5F4FC9CE47 |
:1031900080911703909118039C01220F331F280F71 |
:1031A000391F809191039927880F991F880F991FC4 |
:1031B000280F391F37FDDBC0C90195958795959577 |
:1031C000879590931803809317039093100480932E |
:1031D0000F048091460981FF9AC080911B09682FD6 |
:1031E0007727882799272091360530913705409118 |
:1031F00038055091390557FDE2C0A7E05595479530 |
:1032000037952795AA95D1F70E9478639B01AC0169 |
:1032100097FDD0C0F6E05595479537952795FA95D7 |
:10322000D1F780910F0490911004820F931F909317 |
:10323000100480930F0480911C09282F3327220F3C |
:10324000331F220F331F80910F04909110048217B7 |
:1032500093077CF080911D09282F3327220F331FFD |
:10326000220F331F80910F04909110042817390703 |
:1032700024F43093100420930F0480910F04909154 |
:1032800010042091200430912104820F931F80505C |
:103290009240909321048093200480910F04909198 |
:1032A000100497FD67C095958795959587959093A0 |
:1032B000100480930F04F7CD80911709682F7727AA |
:1032C0008827992720913E0530913F054091400580 |
:1032D0005091410557FD5FC0A7E05595479537953B |
:1032E0002795AA95D1F70E9478639B01AC0197FDC1 |
:1032F0004DC0F6E05595479537952795FA95D1F746 |
:103300008091110490911204821B930BC7CE80917F |
:103310001B09682F77278827992720913605309138 |
:103320003705409138055091390557FD3EC0E7E01B |
:103330005595479537952795EA95D1F70E9478637B |
:103340009B01AC0197FD2CC066E0559547953795DC |
:1033500027956A95D1F780910F0490911004821BF4 |
:10336000930B65CF0396D6CE2D5F3F4F5CCE2D5F7E |
:103370003F4F22CF039697CF215C3F4F4F4F5F4F78 |
:1033800080CE21583F4F4F4F5F4F6ECE215C3F4F55 |
:103390004F4F5F4FAECF21583F4F4F4F5F4F9CCFA6 |
:1033A000215C3F4F4F4F5F4FCFCF21583F4F4F4F83 |
:1033B0005F4FBDCF215C3F4F4F4F5F4F2BCF215809 |
:1033C0003F4F4F4F5F4F19CFFF91EF91BF91AF919B |
:1033D0009F918F917F916F915F914F913F912F912D |
:1033E0000F900FBE0F901F90189510927C008FECDD |
:1033F00080937A000895EF92FF920F931F93CF93DB |
:10340000DF9303E010E0D8010E940764802DC82FED |
:10341000DD27C531D10508F02A97C7BD10922E04CB |
:1034200084E690E00E94A31580911D0390911E03F5 |
:103430008255934010F4C0E0D0E0CA3FD105E0F4DB |
:1034400089EEE82E82E0F82EC7BD82E390E00E946C |
:10345000A315FF92EF921F920E94091280911D0303 |
:1034600090911E030F900F900F908255934020F083 |
:103470002196CA3FD10540F3D8010C2E0E94146456 |
:10348000C09384088CE291E00E94A315DF91CF9154 |
:103490001F910F91FF90EF900895EF92FF920F937D |
:1034A0001F93CF93DF9300E0009329040093280437 |
:1034B0000093270480ED97E00E948115EC011CE841 |
:1034C00021E0F22E95EFE92E033009F4ABC000E0C5 |
:1034D00080913A0490913B048C5F93400CF091C032 |
:1034E00080911C03815080931C038091380490913B |
:1034F00039048C5F93400CF079C080911B0381509C |
:1035000080931B0380913604909137048C5F934025 |
:103510000CF04AC080911A03815080931A0388E00E |
:10352000809363040E94EF2780911C038A3008F087 |
:1035300055C0F09229048AE080931C0380911B03FC |
:103540008A3008F043C0F09228048AE080931B037D |
:1035500080911A038A3098F5F09227048AE08093CC |
:103560001A0380916304882379F0CE010E948A15A2 |
:103570008823B9F38BEE92E09F938F931F920E9462 |
:1035800009120F900F900F90109219038FEC8093F7 |
:103590007A00809119038823E1F31A3008F447C0B8 |
:1035A000115009F091CF48C08091360490913704B2 |
:1035B000875094408CF180911A038F5FAECF863F85 |
:1035C00080F2F0922704E0921A03CBCF863F08F4F2 |
:1035D000BFCFF0922804E0921B03BACF863F08F4D5 |
:1035E000ADCFF0922904E0921C03A8CF809138045B |
:1035F00090913904875094408CF080911B038F5F29 |
:103600007FCF80913A0490913B048750944044F0DE |
:1036100080911C038F5F67CF0F5F81CF0F5F72CFE9 |
:1036200001E063CF1B3008F452CF19E050CF8AE09D |
:1036300090E00E94A315B4CF86E490E00E94A31509 |
:10364000DF91CF911F910F91FF90EF9008951F92FE |
:103650000F920FB60F921124AF92BF92CF92DF92CA |
:10366000EF92FF920F931F932F933F934F935F938C |
:103670006F937F938F939F93AF93BF93EF93FF933A |
:1036800020914304822F9927AA27BB272F5FFC0193 |
:10369000429740F4E25CFF4FEE0FFF1F0590F4915C |
:1036A000E02D09941092430482E0809342048091BB |
:1036B000420480937C0080914304882309F425C44C |
:1036C0008FEC80937A0021C420934304809178008A |
:1036D000909179002091480430914904820F931F02 |
:1036E000909349048093480481E0DFCF2093430402 |
:1036F00080917800909179002091460430914704A0 |
:10370000820F931F909347048093460484E0CDCFAB |
:1037100020934304809178009091790020914C058A |
:1037200030914D05821B930B909383088093820800 |
:103730008091820890918308909351048093500463 |
:1037400082E0B3CF2093430480914A0590914B05CA |
:103750002091780030917900821B930B9093790827 |
:1037600080937808809178089091790890934F041D |
:1037700080934E0487E099CF209343048091780092 |
:1037800090917900909345048093440486E08DCF16 |
:1037900020934304209178003091790030934704BE |
:1037A000209346041092420482CF20934304209138 |
:1037B000780030917900309349042093480481E0E7 |
:1037C00074CF1092430481E08093190380912A04FE |
:1037D00090912B04019690932B0480932A0480915E |
:1037E00078009091790090931E0380931D0380913F |
:1037F0001D0390911E035C01CC24DD2480915204B2 |
:1038000090915304A0915404B0915504A80EB91E90 |
:10381000CA1EDB1E809156048F5F823108F4CAC233 |
:1038200080911F0390912003A0912103B091220366 |
:103830007C018D0123E0EE0CFF1C001F111F2A9557 |
:10384000D1F7E81AF90A0A0B1B0BEA0CFB1C0C1D3A |
:103850001D1D80912E04992787FD9095A92FB92FC2 |
:10386000BC01CD0126EC34E240E050E00E947863D8 |
:10387000DC01CB01E81AF90A0A0B1B0BD801C701BE |
:103880000496A11DB11DB7FD05C313E0B595A7951D |
:10389000979587951A95D1F780931F0390932003EE |
:1038A000A0932103B093220380917C0890917D081E |
:1038B0007C010027F7FC0095102F80911F03909149 |
:1038C0002003A0912103B0912203E81AF90A0A0B00 |
:1038D0001B0BE092E504F092E6040093E7041093DA |
:1038E000E8048091570490915804A0915904B09134 |
:1038F0005A049C01AD01B7FDDCC2F4E05595479533 |
:1039000037952795FA95D1F7821B930BA40BB50B2E |
:103910008E0D9F1DA01FB11F8093570490935804D4 |
:10392000A0935904B0935A0420912C0430912D0493 |
:10393000A90142955295507F5427407F5427421B3E |
:10394000530BB7FDB2C274E0B595A79597958795CF |
:103950007A95D1F72091E5043091E604281B390BC4 |
:10396000220F331F220F331F220F331F240F351F47 |
:1039700037FDA8C235952795359527953595279517 |
:103980003595279530932D0420932C04D601C5013D |
:10399000D7FC94C2B595A7959795879580935204C7 |
:1039A00090935304A0935404B093550489E08093FA |
:1039B000560482E07ACE209343042091780030911F |
:1039C00079008091460490914704280F391F809117 |
:1039D00002018A3009F448C2220F331F220F331F1D |
:1039E0003093470420934604C90137FD73C295956F |
:1039F00087959595879595958795909339048093AC |
:103A0000380480914C0490914D04820F931F97FDD0 |
:103A100066C29595879590934D0480934C042091B0 |
:103A2000540530915505821B930B9093240380938A |
:103A3000230320913E0430913F0480912303909111 |
:103A40002403280F391F37FD47C23595279530933A |
:103A50003F0420933E0483E028CE2093430420912A |
:103A60007800309179008091480490914904280FA2 |
:103A7000391F809102018A3009F407C2220F331FD7 |
:103A8000220F331F3093490420934804C90137FDA6 |
:103A9000FFC1959587959595879595958795909371 |
:103AA0003B0480933A0480914A0490914B04820F26 |
:103AB000931F97FD0DC29595879590934B04809326 |
:103AC0004A042091560530915705821B930B909321 |
:103AD0002603809325032091400430914104809176 |
:103AE000250390912603280F391F37FDEEC1359528 |
:103AF0002795309341042093400481E0D6CD209354 |
:103B00004304809178009091790020914C05309188 |
:103B10004D05821B930B90938308809382088091BC |
:103B20008208909183082091500430915104820FB3 |
:103B3000931F909333048093320482E0B6CD209398 |
:103B4000430480914A0590914B0520917800309173 |
:103B50007900821B930B9093790880937808809169 |
:103B600078089091790820914E0430914F04820F8B |
:103B7000931F909335048093340487E096CD20936F |
:103B80004304809102018A3009F471C1843109F43F |
:103B9000A8C18091780090917900209144043091DF |
:103BA0004504820F931F909337048093360486E078 |
:103BB0007CCD2093430480917800909179002091EE |
:103BC000460430914704820F931F909347048093DB |
:103BD0004604109242046BCD2093430400CE209300 |
:103BE00043048091780090917900AA2797FDA095D1 |
:103BF000BA2FBC01CD010E94FE627B018C01809135 |
:103C0000440590914505A0914605B09147059C015A |
:103C1000AD01C801B7010E949E62DC01CB01BC016D |
:103C2000CD010E94E162DC01CB01909331048093CD |
:103C30003004809130049091310402970CF4C6C096 |
:103C40008091440590914505A0914605B0914705A6 |
:103C500020E030E84BE354E4BC01CD010E9408634E |
:103C60008823DCF58091440590914505A091460597 |
:103C7000B09147052AE037ED43EA5CE3BC01CD0192 |
:103C80000E949F62DC01CB0180934405909345051F |
:103C9000A0934605B09347058091C3049091C40456 |
:103CA000845F9140D0F48091440590914505A091A6 |
:103CB0004605B09147052DEC3CEC4CEC5DE3BC01B6 |
:103CC000CD010E949F62DC01CB018093440590935B |
:103CD0004505A0934605B093470581E080932F04E6 |
:103CE000809178009091790090937B0880937A0876 |
:103CF0008091300490913104AA2797FDA095BA2FA6 |
:103D0000209106053091070540910805509109055D |
:103D1000820F931FA41FB51F80930605909307057C |
:103D2000A0930805B0930905209106053091070579 |
:103D3000409108055091090557FDB2C00AE055951C |
:103D40004795379527950A95D1F78091060590916B |
:103D50000705A0910805B0910905821B930BA40BE0 |
:103D6000B50B8093060590930705A0930805B093C3 |
:103D7000090583E09ACC2093430480912703909116 |
:103D800028039C01220F331F280F391F80917800D0 |
:103D90009091790063E070E00E94A363260F371FC3 |
:103DA000369527953695279530932803209327033A |
:103DB00085E07BCC80935604A0925204B0925304C9 |
:103DC000C0925404D092550482E06FCC80913004AC |
:103DD000909131048F5F9F4F0CF07FCF809144050D |
:103DE00090914505A0914605B091470520E030E847 |
:103DF00049E054E4BC01CD010E940B6318160CF09D |
:103E00006CCF8091440590914505A0914605B091F5 |
:103E100047052AE037ED43EA5CE3BC01CD010E948F |
:103E20009E62DC01CB018093440590934505A093ED |
:103E30004605B09347058091C3049091C404845F04 |
:103E4000914008F04ACF8091440590914505A0919A |
:103E50004605B09147052DEC3CEC4CEC5DE3BC0114 |
:103E6000CD010E949E622FCF220F331FB9CD8091CA |
:103E70007800909179002091440430914504820F9C |
:103E8000931F0196969587958ECE220F331FFACDFC |
:103E90000796FFCDD801C7010B96A11DB11DF5CC2A |
:103EA00021503C4F4F4F5F4F49CF0F96A11DB11D81 |
:103EB0004ACD215F3F4F4F4F5F4F1FCD0196A11D50 |
:103EC000B11D68CD215F3F4F55CD2F5F3F4F0FCEC6 |
:103ED0000196F1CD07968BCD2F5F3F4FB6CD019662 |
:103EE00098CD809178009091790020914404309190 |
:103EF0004504820F931F2FEF37E0281B390B3093B7 |
:103F000037042093360486E0D0CBFF91EF91BF9128 |
:103F1000AF919F918F917F916F915F914F913F9161 |
:103F20002F911F910F91FF90EF90DF90CF90BF9056 |
:103F3000AF900F900FBE0F901F90189590E2EAE29D |
:103F4000F3E08FE49193815087FFFCCF08951F9396 |
:103F5000CF93DF9380915C0420912903281710F4FC |
:103F600020935C0490915B0490FF08C080915C04F6 |
:103F7000882309F421C1815080935C0491FF08C01B |
:103F800080915C04821709F4BFC18F5F80935C0449 |
:103F9000892F992780FF02C081FD0BC10E949E1FBF |
:103FA00090915C049A3008F0ABC081E180935D048D |
:103FB000892F99279F938F9382E293E09F938F930A |
:103FC00081E08F930E9409120F900F900F900F9035 |
:103FD0000F9080915C04C82FDD27C630D10509F40D |
:103FE00096C1C730D1050CF095C0C230D10509F497 |
:103FF00048C2C330D1050CF4E2C0C430D10509F485 |
:1040000065C525970CF07FC310925D048091C408AC |
:104010009091C5089F938F938091C2089091C30897 |
:104020009F938F9389E194E09F938F9311E01F9367 |
:104030000E94091284E180935D046DB77EB7695FC9 |
:104040007F4F0FB6F8947EBF0FBE6DBF8091C8083A |
:104050009091C9089F938F938091C6089091C7084B |
:104060009F938F9389E294E09F938F931F930E9475 |
:10407000091288E280935D048DB79EB707960FB64C |
:10408000F8949EBF0FBE8DBF8091CC089091CD0853 |
:104090009F938F938091CA089091CB089F938F93A1 |
:1040A00089E394E09F938F931F930E9409128CE3FE |
:1040B00080935D042DB73EB7295F3F4F0FB6F8944C |
:1040C0003EBF0FBE2DBF8091D0089091D1089F9325 |
:1040D0008F938091CE089091CF089F938F9389E41E |
:1040E00094E09F938F931F930E9409126DB77EB740 |
:1040F000695F7F4F0FB6F8947EBF0FBE6DBF63C779 |
:1041000080E180935D04892F99279F938F9387E2A5 |
:1041100093E054CFCA30D10509F46DC1CB30D1053D |
:104120000CF059C0C830D10509F47BC529970CF0B3 |
:104130009FC384E180935D048091270390912803BD |
:104140009F938F9383E895E09F938F9311E01F9344 |
:104150000E94091288E280935D040F900F900F90E7 |
:104160000F900F908091F30499279F938F9382E98A |
:1041700095E09F938F931F930E9409128CE3809385 |
:104180005D040F900F900F900F900F908091BF08DB |
:10419000992701979F938F9381EA95E09F938F933F |
:1041A0001F930E9409120F900F900F900F900F9085 |
:1041B0000AC710925C04F2CE20935C04DFCE2097F5 |
:1041C00009F4CAC1219709F49EC381508093290341 |
:1041D00010925C04F8C6CC30D10509F4FAC3CC3097 |
:1041E000D1050CF432C22D9781F710925D048EED4B |
:1041F00096E09F938F93C1E0CF930E94091284E1D0 |
:1042000080935D040F900F900F908091B6089927CE |
:104210008D969F938F938091B50899278D969F9344 |
:104220008F938091B40899278D969F938F93809157 |
:10423000B30899278D969F938F938DEE96E09F9369 |
:104240008F93CF930E94091288E280935D048DB70B |
:104250009EB70B960FB6F8949EBF0FBE8DBF809190 |
:10426000BA0899278D969F938F938091B9089927C3 |
:104270008D969F938F938091B80899278D969F93E1 |
:104280008F938091B70899278D969F938F9381E0A4 |
:1042900097E09F938F93CF930E9409128CE38093B2 |
:1042A0005D042DB73EB7255F3F4F0FB6F8943EBF74 |
:1042B0000FBE2DBF8091BB0899278D969F938F933A |
:1042C00085E197E09F938F93CF930E9409120F90FF |
:1042D0000F900F900F900F908091BC08882309F0E9 |
:1042E00042C68091BD08882309F02FC68091BE0880 |
:1042F000882309F468C688E480935D048BE297E024 |
:104300009F938F93CF939BC110925C0441CE1092E8 |
:104310005D0489E495E09F938F9311E01F930E94C1 |
:10432000091284E180935D040F900F900F908091AB |
:104330004C0590914D059F938F93809132049091FD |
:1043400033049F938F9386E595E09F938F931F93FC |
:104350000E94091288E280935D046DB77EB7695FA1 |
:104360007F4F0FB6F8947EBF0FBE6DBF80914A0598 |
:1043700090914B059F938F938091340490913504D5 |
:104380009F938F9385E695E09F938F931F930E9451 |
:1043900009128CE380935D048DB79EB707960FB624 |
:1043A000F8949EBF0FBE8DBF809144059091450546 |
:1043B000A0914605B0914705BC01CD010E94E16284 |
:1043C000DC01CB019F938F938091730990917409C5 |
:1043D0009F938F9384E795E09F938F931F930E9401 |
:1043E00009122DB73EB7295F3F4F0FB6F8943EBF75 |
:1043F0000FBE2DBFE8C510925D048DE196E09F933E |
:104400008F9311E01F930E94091284E180935D0451 |
:104410000F900F900F908091920399279F938F9305 |
:1044200085E296E09F938F931F930E94091288E282 |
:1044300080935D040F900F900F900F900F908091DC |
:104440001304909114049F938F9383E396E09F93BA |
:104450008F931F930E9409128CE380935D040F9049 |
:104460000F900F900F900F908091190999279F93AB |
:104470008F938091180999279F938F9381E496E0F9 |
:1044800030CE10925D0482EE93E09F938F93C1E053 |
:10449000CF930E94091284E180935D040F900F90E6 |
:1044A0000F9080913E0590913F05A0914005B091FD |
:1044B0004105B7FD45C53AE0B595A7959795879510 |
:1044C0003A95D1F7BF93AF939F938F938CEE93E080 |
:1044D0009F938F93CF930E94091288E280935D048B |
:1044E0008DB79EB707960FB6F8949EBF0FBE8DBFCF |
:1044F0008091360590913705A0913805B091390526 |
:10450000B7FD19C52AE0B595A795979587952A9582 |
:10451000D1F7BF93AF939F938F938BEF93E09F93CC |
:104520008F93CF930E9409128CE380935D042DB783 |
:104530003EB7295F3F4F0FB6F8943EBF0FBE2DBF69 |
:1045400080910405909105059F938F938AE094E0F4 |
:104550009F938F93CF9325CE10925D048CE293E0CE |
:104560009F938F9311E01F930E94091284E180931F |
:104570005D040F900F900F9089E690E09F938F93CA |
:104580008BE490E09F938F93DF93CF938091020110 |
:104590006AE00E949763892F99279F938F93809158 |
:1045A00002010E94976399279F938F938CE393E076 |
:1045B0009F938F931F930E94091288E280935D045A |
:1045C0002DB73EB7235F3F4F0FB6F8943EBF0FBEE7 |
:1045D0002DBF85EE95E09F938F930E94300499271D |
:1045E0009F938F9381E593E09F938F931F930E94F6 |
:1045F00009128091AA039091AB036DB77EB7695FF2 |
:104600007F4F0FB6F8947EBF0FBE6DBF069778F050 |
:1046100090916004992309F447C38CE380935D046F |
:10462000892F99279F938F938CE693E0B7CD8CE3E6 |
:1046300080935D048FE593E09F938F931F930E9477 |
:1046400009120F900F900F90BEC410925D048FE47A |
:1046500096E09F938F9311E01F930E94091284E1CB |
:1046600080935D040F900F900F908091950799278C |
:1046700087FD90959F938F9380919407992787FD4D |
:1046800090959F938F938FE596E09F938F931F93C1 |
:104690000E94091288E280935D048DB79EB7079649 |
:1046A0000FB6F8949EBF0FBE8DBF809196079927D5 |
:1046B00087FD90959F938F938091970799279F935C |
:1046C0008F938FE696E09F938F931F930E9409121A |
:1046D0008CE380935D042DB73EB7295F3F4F0FB643 |
:1046E000F8943EBF0FBE2DBF80919B0799279F93E3 |
:1046F0008F9380919807992787FD90959F938F932B |
:104700008FE796E0EECC10925D0489E994E09F93E8 |
:104710008F93C1E0CF930E940912809102010F9004 |
:104720000F900F908A3009F481C38B3009F4D6C200 |
:10473000843109F4D3C28D3009F045C484E18093FB |
:104740005D0480911C0399279F938F934091560598 |
:1047500050915705CA0157FD34C495958795959595 |
:10476000879595958795959587959F938F939A01B2 |
:1047700057FD24C43595279535952795359527956B |
:1047800080913A0490913B04821B930B9F938F93EB |
:104790008DE095E09F938F93CF930E94091288E25A |
:1047A00080935D046DB77EB7675F7F4F0FB6F89457 |
:1047B0007EBF0FBE6DBF80911B0399279F938F9380 |
:1047C0004091540550915505CA0157FDF5C3959583 |
:1047D00087959595879595958795959587959F93B9 |
:1047E0008F939A0157FDE5C3359527953595279504 |
:1047F000359527958091380490913904821B930B4D |
:104800009F938F9381E295E09F938F93CF930E9424 |
:1048100009128CE380935D048DB79EB709960FB69D |
:10482000F8949EBF0FBE8DBF80911A0399279F9366 |
:104830008F932091520530915305C90137FDB7C3BD |
:10484000959587959F938F93809136049091370427 |
:10485000281B390B3F932F9385E395E09F938F930C |
:10486000CF930E9409122DB73EB7275F3F4FBDCDB2 |
:1048700010925D048091FA049091FB049F938F93B2 |
:104880008DEE95E09F938F9311E01F930E94091284 |
:1048900084E180935D040F900F900F900F900F9024 |
:1048A0008091F8049091F9049F938F9389EF95E09C |
:1048B0009F938F931F930E94091288E280935D0457 |
:1048C0000F900F900F900F900F908091F6049091A1 |
:1048D000F7049F938F9385E096E09F938F931F93A8 |
:1048E0000E9409128CE380935D040F900F900F904B |
:1048F0000F900F908091F4049091F5049F938F9303 |
:1049000081E196E04BCC8091FA0880FFD3C11092F0 |
:104910005D048091E5049091E604A091E704B091D4 |
:10492000E804BC01CD0125E030E040E050E00E9409 |
:10493000EC633F932F9381E993E09F938F9311E072 |
:104940001F930E94091284E180935D040F900F90E1 |
:104950000F900F900F908091E1049091E204A0914C |
:10496000E304B091E404BC01CD0125E030E040E077 |
:1049700050E00E94EC633F932F9380EA93E09F9373 |
:104980008F931F930E94091288E280935D040F9019 |
:104990000F900F900F900F9080911D0390911E0328 |
:1049A0009F938F938FEA93E09F938F931F930E941F |
:1049B00009128CE380935D040F900F900F900F907D |
:1049C0000F908091840899279F938F938EEB93E0AB |
:1049D000E5CB10925D048FE896E09F938F9311E0F2 |
:1049E0001F930E94091284E180935D040F900F9041 |
:1049F0000F9080919A0899279F938F93809199089F |
:104A000099279F938F938091980899279F938F93CD |
:104A10008091970899279F938F938FE996E09F93B2 |
:104A20008F931F930E94091288E280935D048DB7D3 |
:104A30009EB70B960FB6F8949EBF0FBE8DBF8091A8 |
:104A40009E0899279F938F9380919D0899279F9304 |
:104A50008F9380919C0899279F938F9380919B08B7 |
:104A600099279F938F9384EB96E09F938F931F9347 |
:104A70000E9409128CE380935D042DB73EB7255F39 |
:104A80003F4F0FB6F8943EBF0FBE2DBF8091A208D6 |
:104A900099279F938F938091A10899279F938F9334 |
:104AA0008091A00899279F938F9380919F089927C1 |
:104AB0009F938F9389EC96E09F938F931F930E940F |
:104AC00009126DB77EB7655F7F4F14CB10925D04FE |
:104AD0008091F308E82FFF27EE0FFF1FE054F74FF8 |
:104AE000808191819F938F938091F208E82FFF2717 |
:104AF000EE0FFF1FE054F74F808191819F938F93BA |
:104B000089E594E09F938F9311E01F930E9409120F |
:104B100084E180935D048DB79EB707960FB6F89435 |
:104B20009EBF0FBE8DBF8091F508E82FFF27EE0FC7 |
:104B3000FF1FE054F74F808191819F938F93809165 |
:104B4000F408E82FFF27EE0FFF1FE054F74F808196 |
:104B500091819F938F9389E694E09F938F931F9306 |
:104B60000E94091288E280935D042DB73EB7295F49 |
:104B70003F4F0FB6F8943EBF0FBE2DBF8091F70890 |
:104B8000E82FFF27EE0FFF1FE054F74F8081918140 |
:104B90009F938F938091F608E82FFF27EE0FFF1F5A |
:104BA000E054F74F808191819F938F9389E794E040 |
:104BB0009F938F931F930E9409128CE380935D044F |
:104BC0006DB77EB7695F7F4F0FB6F8947EBF0FBE9B |
:104BD0006DBF8091F908E82FFF27EE0FFF1FE0540B |
:104BE000F74F808191819F938F938091F808E82FF0 |
:104BF000FF27EE0FFF1FE054F74F808191819F93B5 |
:104C00008F9389E894E09F938F931F930E940912DA |
:104C10008DB79EB707960FB6F8949EBF0FBE8DBF97 |
:104C2000D2C110925D0481EB95E09F938F9311E0C8 |
:104C30001F930E94091284E180935D040F900F90EE |
:104C40000F9080910005909101059F938F9380ECC8 |
:104C500095E09F938F931F930E94091288E280939F |
:104C60005D040F900F900F900F900F9080910405AE |
:104C7000909105059F938F938FEC95E09F938F9371 |
:104C80001F930E9409128CE380935D040F900F9094 |
:104C90000F900F900F9080910205909103059F93C4 |
:104CA0008F938EED95E07ACA8CE380935D0481E862 |
:104CB00093E0C2CC84E180935D048DEC93E09F93FC |
:104CC0008F9311E01F930E94091288E280935D0484 |
:104CD0000F900F900F9084ED93E0AECC84E1809321 |
:104CE0005D044091560550915705CA0157FD57C1C3 |
:104CF0009C013595279535952795359527953595BB |
:104D00002795C90182959295907F9827807F982753 |
:104D1000BA01681B790BCB0177FD3FC1959587954B |
:104D20009F938F933F932F939A0157FD33C13595EE |
:104D30002795359527953595279580913A0490913B |
:104D40003B04821B930B9F938F938AED94E09F9378 |
:104D50008F93CF930E94091288E280935D048DB7F0 |
:104D60009EB709960FB6F8949EBF0FBE8DBF4091B7 |
:104D7000540550915505CA0157FD0AC19C0135954E |
:104D80002795359527953595279535952795C9010B |
:104D900082959295907F9827807F9827BA01681B0B |
:104DA000790BCB0177FDF2C0959587959F938F93F3 |
:104DB0003F932F939A0157FDE6C03595279535957A |
:104DC0002795359527958091380490913904821B59 |
:104DD000930B9F938F938CEE94E09F938F93CF933D |
:104DE0000E9409128CE380935D048DB79EB70996EB |
:104DF0000FB6F8949EBF0FBE8DBF20915205309123 |
:104E00005305C90137FDBDC0959587959F938F9335 |
:104E10008091360490913704281B390B3F932F93D0 |
:104E20008EEF94E09F938F93CF93D9CA84E18093C0 |
:104E30005D0440915605509157059A0157FDB4C045 |
:104E4000359527953595279535952795C901880F6F |
:104E5000991F880F991F880F991F481B590B5F9343 |
:104E60004F933F932F9380913A0490913B04821B80 |
:104E7000930B9F938F9387EA94E09F938F93CF93A5 |
:104E80000E94091288E280935D042DB73EB7275F28 |
:104E90003F4F0FB6F8943EBF0FBE2DBF4091540553 |
:104EA000509155059A0157FD7CC03595279535954C |
:104EB000279535952795C901880F991F880F991F48 |
:104EC000880F991F481B590B5F934F933F932F9364 |
:104ED0008091380490913904821B930B9F938F9398 |
:104EE00089EB94E09F938F93CF930E9409128CE3F8 |
:104EF00080935D046DB77EB7675F7F4F0FB6F89400 |
:104F00007EBF0FBE6DBF80915205909153059F9358 |
:104F10008F938091520590915305209136043091E2 |
:104F20003704821B930B9F938F938BEC94E09F939A |
:104F30008F93CF936BCE81509C4FAF4FBF4FE2CA40 |
:104F400081509C4FAF4FBF4FB6CA84E480935D043D |
:104F500088E297E09F938F93CF930E9409120F905E |
:104F60000F900F90C3C980E480935D0485E297E0C1 |
:104F70009F938F93CF930E9409120F900F900F90E1 |
:104F8000B0C9019641CF295F3F4F17CF01960CCF93 |
:104F90000F96F4CE295F3F4FCACE0196BFCE0F9633 |
:104FA000A7CE295F3F4F81CF295F3F4F49CF019661 |
:104FB00047CC295F3F4F18CC0F9609CC295F3F4F54 |
:104FC000D9CB0F96CACB10925B04DF91CF911F9182 |
:104FD00008951092B9008AE28093B800089585EA96 |
:104FE0008093BC00089584E98093BC0008951092DA |
:104FF000B9008093BB0085E88093BC0008950E94AF |
:10500000F327109263048091BB001092620480E841 |
:105010008093BC001092BD001092BA001092BB00A9 |
:105020001092B9001092B8000E94E9270E94EF2761 |
:1050300080E00E94F72708958093BB0085E8809365 |
:10504000BC00089585EC8093BC00089585E88093AA |
:10505000BC0008951F920F920FB60F9211242F9348 |
:105060003F934F935F936F937F938F939F93AF93F0 |
:10507000BF93EF93FF9380916304282F3327442736 |
:1050800055278F5F80936304F90127313105C8F4F8 |
:10509000E05BFF4FEE0FFF1F0590F491E02D0994A8 |
:1050A00080916104E82FFF27E957F74F9091BB00EB |
:1050B00090838F5F8C3008F49DC0109261040E9431 |
:1050C000F32710926304E0C080E80E94F727DCC059 |
:1050D00088E90E94F727D8C00E94F3278AE090E071 |
:1050E0009093AB038093AA030E94EF27CDC084E185 |
:1050F0000E94F727C9C082E10E94F727C5C08091AE |
:105100001C030E94F727C0C080E10E94F727BCC0A3 |
:1051100080911B030E94F727B7C080911A030E9459 |
:10512000F727B2C080916204E82FFF27E955F64FB8 |
:105130008F5F8093620480810E94F727A5C09091C1 |
:105140006204292FE92FFF27EE0FFF1FEE0FFF1F2D |
:10515000EC51FA4F858518160CF054C09C3009F4B8 |
:1051600067C0990F892F8E5A0E94F7278DC08091B2 |
:105170006104E82FFF27ED55F74F8091BB00808336 |
:105180000E94262881C08091B900803409F46EC045 |
:1051900080916104E82FFF27ED54F74F10828F5F55 |
:1051A0008C3068F1109261040E94F327109263041E |
:1051B00080916404809360041092640465C08091BF |
:1051C000B900803309F440C00E94F3278AE090E0E0 |
:1051D0009093AB038093AA03109263040E94EF277D |
:1051E00053C00E94F3278AE090E09093AB03809332 |
:1051F000AA0367CF809361040E94F32762CF809354 |
:105200006104D2CF9C3008F0A9CF922F9F5FE92F85 |
:10521000FF27EE0FFF1FEE0FFF1FEC51FA4F8585A2 |
:1052200018161CF0292F9C3080F39093620496CFBF |
:105230001092620483E08093630480916104880F7C |
:105240008D5A0E94F72720C0809164048823C9F4F6 |
:105250009091620490936404E92FFF27EA56F74F78 |
:1052600080818F5F09F48FEF8083AECF80916104DE |
:10527000E82FFF27ED54F74F8C5F80830E94222890 |
:1052800097CF90916204E8CF8091BC0080688093B2 |
:10529000BC00FF91EF91BF91AF919F918F917F9152 |
:1052A0006F915F914F913F912F910F900FBE0F9093 |
:1052B0001F90189583EC8093810080916F0080622D |
:1052C00080936F001092530510925205109255056D |
:1052D00010925405109257051092560508951F928A |
:1052E0000F920FB60F921124FF920F931F932F93DB |
:1052F0003F934F935F936F937F938F939F93AF935E |
:10530000BF93CF93DF93EF93FF934091860050912B |
:1053100087008091660490916704481B590B809127 |
:105320008600909187009093670480936604CA0179 |
:105330008D549440835F9A4140F58091C0048093DE |
:10534000650480916504843070F58091C1048536D0 |
:1053500008F4BDC08AE08093C104809102018A30C4 |
:1053600009F4BCC0843109F4B9C02898F090C10494 |
:1053700081E08093C0048091E904882309F04AC148 |
:10538000809165048093BF0845C1C091C004CA30B4 |
:1053900008F45AC0F090C104C43108F076C0CF5F61 |
:1053A000C093C00437C19091BF08809165049817DD |
:1053B00061F6F090C1043AE03F1508F016C1109272 |
:1053C00084031092C0043AC0C091C004EC2FFF27A0 |
:1053D000EE0FFF1F9F012C563B4FDF01A054B74F2C |
:1053E0008D919C91D9018D939C93DF01AA52B74F67 |
:1053F0008D919C91E655FB4F91838083EC2FFF2785 |
:10540000EE0FFF1F9F012054374FDF01A859BB4FFC |
:105410008D919C91D90111969C938E93DF01A25896 |
:10542000BB4F8D919C91EA52F74F91838083EC2F73 |
:10543000EF5FEB3008F0D9C0E093C0048EE18F1528 |
:1054400018F2C091C004DACFCA018B5F9040845B30 |
:10545000914008F445C0809102018A3009F4D5C01A |
:10546000843109F4D2C02898F090C104C53009F401 |
:1054700060C05D98C63009F4B5C05C98C73009F4C7 |
:1054800056C05B98C43108F48ACFC43109F0C2C059 |
:10549000809102018A3009F4B6C0843109F4B3C0A6 |
:1054A00028988EE18093C0042AE0C6EDD8E0A4E9F4 |
:1054B000B4E0E0ECF8E08D919D9191838083329689 |
:1054C000198218822296215027FFF5CFA3C010928F |
:1054D000C104809102018A3009F044CF289A46CF56 |
:1054E000425D5140EC2FFF27EE0FFF1FE859FB4FA5 |
:1054F00080819181DA01A81BB90BCD0105960B972C |
:10550000D0F4F090C104B9E1BF1508F478C02AE0E6 |
:105510002F1528F48091F3048E5F8093F30480911B |
:10552000F304893C50F088EC8093F30406C05B9A46 |
:1055300036CF5D9AA2CFF090C104EC2FFF27EE0F7B |
:10554000FF1FE859FB4F808191819C01220F331F7F |
:10555000280F391F240F351F37FD59C089011595B4 |
:10556000079515950795CA010196801791074CF587 |
:10557000015010408091F3048E3B58F1EC2FFF272F |
:10558000EE0FFF1FDF01A859BB4F8D919C91D801F1 |
:10559000A81BB90BCD0163E070E00E94B763CB019B |
:1055A000880F991F860F971FE258FB4F91838083C6 |
:1055B000EC2FFF27EE0FFF1FE859FB4F11830083ED |
:1055C00055CF4150504004171507A4F60F5F1F4FE9 |
:1055D000D1CFEC2FFF27EE0FFF1FE258FB4F1182B8 |
:1055E0001082E6CF5C9A5B984DCFBFEFFB1609F4B3 |
:1055F000BFCE8F2D8F5F8093C104F82EB9CE8091DE |
:10560000F304865F8ACF289A4CCF289A2DCF2D5F3E |
:105610003F4FA4CF8F2D992790935708809356081A |
:105620008091C4089091C5089093590880935808B8 |
:10563000FF91EF91DF91CF91BF91AF919F918F91AA |
:105640007F916F915F914F913F912F911F910F919A |
:10565000FF900F900FBE0F901F90189581E08093E0 |
:10566000F40882E08093F30883E08093F20884E0FA |
:105670008093F50885E08093F60886E08093F7082C |
:1056800087E08093F80888E08093F90808951F93D5 |
:1056900088E68093FA083EE13093FB088BEF809315 |
:1056A000FD088AE08093FE083093FC0830930009DF |
:1056B00085E08093010980E48093020984E180936E |
:1056C000FF088EE08093030970E1709304091CE0E9 |
:1056D00010930509E8E0E093060986EE8093070938 |
:1056E0003093080980E88093090960E560930A090E |
:1056F00086E980930B0943E040930C0981E2809393 |
:105700000D0983E280930E0930930F09109210095E |
:1057100050E250931109109212091092130910923D |
:1057200014091092150910922A0910922B0910924F |
:105730002C0910922D0924E62093160998E29093E3 |
:10574000170910924609109218098AEF80931909D7 |
:1057500040931E0920931A0990931B0910921C096B |
:1057600080931D0982E380931F099AE59093200995 |
:10577000809321091092450990932209609323098F |
:1057800081E08093240985E580932509809326098B |
:105790007093270950932809209329098FE5809356 |
:1057A0002E0983EF809330098AEA8093320980932F |
:1057B00033098FE080932F09809331098CEF809318 |
:1057C00034092093350990933609909337099093C3 |
:1057D00038098BE48093390980933A0980933B0917 |
:1057E00010923C0986E080933D09E0933E09909336 |
:1057F0003F0930934009209341092093420984E0F6 |
:1058000080934309ACEAB3E0EBE4F9E00D90019238 |
:105810001A95E1F71F91089588E68093FA085EE1F2 |
:105820005093FB088BEF8093FD089AE09093FE085D |
:105830005093FC085093000985E08093010980E4AF |
:10584000809302098FE08093FF089093030980E121 |
:1058500080930409E6E0E093050978E07093060977 |
:1058600086EE809307095093080980E88093090920 |
:105870002AE520930A0988E780930B0963E0609387 |
:105880000C0981E280930D0983E280930E09509305 |
:105890000F091092100940E2409311091092120969 |
:1058A00010921309109214091092150910922A09E6 |
:1058B00010922B0910922C0910922D0934E6309386 |
:1058C000160998E290931709109246091092180948 |
:1058D0008AEF8093190960931E0930931A099093F7 |
:1058E0001B0910921C0980931D0982E380931F09F4 |
:1058F00020932009809321091092450920932209C1 |
:1059000080E5809323098CE38093240985E58093C7 |
:1059100025098093260940932709409328099BE491 |
:10592000909329098FE580932E0983EF80933009A6 |
:105930008AEA809332098093330984E180932F09A6 |
:10594000809331098CEF809334093093350920938B |
:105950003609209337092093380990933909909399 |
:105960003A0990933B0910923C09E0933D097093EA |
:105970003E0920933F0950934009309341093093E9 |
:10598000420984E0809343098CE0A3EBB3E0EBE4AD |
:10599000F9E00D9001928A95E1F7089588EE8093E1 |
:1059A000FA083EE13093FB088BEF8093FD088AE014 |
:1059B0008093FE083093FC083093000985E08093C3 |
:1059C000010980E4809302098FE08093FF0858E08A |
:1059D0005093030990E19093040966E060930509F0 |
:1059E0005093060986EE809307093093080980E8F2 |
:1059F0008093090944E640930A0988E780930B09DC |
:105A000023E020930C0981E280930D0983E28093C7 |
:105A10000E0984E180930F091092100990931109E7 |
:105A2000109212091092130910921409109215097C |
:105A300010922A0910922B0910922C0910922D090C |
:105A40004093160998E29093170910924609109214 |
:105A500018098AEF8093190920931E0940931A09A7 |
:105A600090931B0910921C0980931D0992E3909357 |
:105A70001F092AE5209320099093210910924509D6 |
:105A80002093220980E58093230986E480932409EA |
:105A900085E5809325098093260980E28093270974 |
:105AA00080932809909329098FE580932E0983EF2D |
:105AB000809330098AEA80933209809333093093C6 |
:105AC0002F09309331098CEF8093340940933509C5 |
:105AD0002093360920933709209338098BE480936B |
:105AE000390980933A0980933B0910923C096093ED |
:105AF0003D0950933E0920933F093093400940935C |
:105B000041094093420984E0809343098CE0ABEB68 |
:105B1000B3E0EBE4F9E00D9001928A95E1F7089586 |
:105B20006817790744F4680F791F77FD09C0CB0126 |
:105B3000959587950895681B790B861B970B08959B |
:105B40006F5F7F4FCB01959587950895EF92FF92F8 |
:105B50000F931F93CF93C82F8B018091E904882363 |
:105B6000A9F4C150CF3F91F07B01E60EF71E1093D0 |
:105B70001804009317048091170490911804892B3E |
:105B8000D1F7C7010E949615C15088F7CF911F9198 |
:105B90000F91FF90EF9008952F923F924F925F9256 |
:105BA0006F927F928F929F92AF92BF92CF92DF922D |
:105BB000EF92FF920F931F93CF93DF93CDB7DEB792 |
:105BC000ED970FB6F894DEBF0FBECDBF2091520502 |
:105BD000309153058091360490913704281B390B7E |
:105BE0003A8729873093B6092093B509209140045C |
:105BF0003091410437FDD4C73595279535952795C4 |
:105C0000359527953AA729A73C872B8779012091BD |
:105C10003E0430913F0437FDC0C735952795359533 |
:105C20002795359527953CA72BA73E872D87F09282 |
:105C30007609E092750930936C0920936B09809185 |
:105C4000A4099091A509AA2797FDA095BA2F7C01D8 |
:105C50008D01EE0CFF1C001F111FE80EF91E0A1F1C |
:105C60001B1F80913204909133049C01442737FD1F |
:105C70004095542FDA01C901880F991FAA1FBB1F35 |
:105C8000880F991FAA1FBB1F820F931FA41FB51F48 |
:105C9000820F931FA41FB51FE80EF91E0A1F1B1FBA |
:105CA00017FD9CC715950795F794E79415950795EB |
:105CB000F794E794F092A509E092A4098091C009B5 |
:105CC0009091C109AA2797FDA095BA2F7C018D015B |
:105CD000EE0CFF1C001F111FE80EF91E0A1F1B1FF0 |
:105CE00080913404909135049C01442737FD409500 |
:105CF000542FDA01C901880F991FAA1FBB1F880FF3 |
:105D0000991FAA1FBB1F820F931FA41FB51F820FCD |
:105D1000931FA41FB51FE80EF91E0A1F1B1F17FDB6 |
:105D200054C715950795F794E79415950795F7943B |
:105D3000E794F092C109E092C009809173099091B3 |
:105D40007409AA2797FDA095BA2F9C01AD01220FD7 |
:105D5000331F441F551F280F391F4A1F5B1F809197 |
:105D6000300490913104AA2797FDA095BA2F280FEF |
:105D7000391F4A1F5B1F57FD16C755954795379525 |
:105D80002795559547953795279530937409209316 |
:105D900073092091320430913304C901880F991F8F |
:105DA000880F991F820F931F820F931FAA2797FDB9 |
:105DB000A095BA2F20912E0530912F0540913005E6 |
:105DC00050913105820F931FA41FB51F80932E059C |
:105DD00090932F05A0933005B093310520913404A2 |
:105DE00030913504C901880F991F880F991F820FC0 |
:105DF000931F820F931FAA2797FDA095BA2F20917A |
:105E00002A0530912B0540912C0550912D05820FCC |
:105E1000931FA41FB51F80932A0590932B05A09371 |
:105E20002C05B0932D0580917E0990917F092091DA |
:105E3000320430913304820F931F90937F09809333 |
:105E40007E098091B8099091B9092091340430916C |
:105E50003504820F931F9093B9098093B8098091FC |
:105E6000480590914905019690934905809348050E |
:105E70008091260590912705A0912805B0912905CC |
:105E8000BC01CD010E94FE625B016C0180917A0829 |
:105E900090917B08AA2797FDA095BA2FBC01CD0150 |
:105EA0000E94FE627B018C01809144059091450522 |
:105EB000A0914605B09147059C01AD01C801B7010D |
:105EC0000E949E62DC01CB019C01AD01C601B501BF |
:105ED0000E949F62DC01CB01BC01CD010E94E16206 |
:105EE000DC01CB018093260590932705A09328051C |
:105EF000B09329058FEC80937A00109219032090BB |
:105F0000160530901705409018055090190539E492 |
:105F100023163BE6330631E0430630E053060CF42B |
:105F200014C188E49BE6A1E0B0E08D839E83AF833B |
:105F3000B88760901E0570901F0580902005909096 |
:105F4000210539E463163BE6730631E0830630E051 |
:105F500093060CF4DCC488E49BE6A1E0B0E08983FE |
:105F60009A83AB83BC8349855A85CA01AA2797FDCA |
:105F7000A095BA2F20910E0530910F054091100584 |
:105F800050911105280F391F4A1F5B1F2DA33EA3F7 |
:105F90004FA358A7A090BC09B090BD09C090BE09FE |
:105FA000D090BF09A80EB91ECA1EDB1E860175015E |
:105FB0003091DC043BA3332309F0DAC08091DB0489 |
:105FC000882309F0C2C44091FA084CA346FF13C6C7 |
:105FD000EBA5FCA5CF01AA2797FDA095BA2FBC0180 |
:105FE000CD0129813A814B815C810E9478639B01BC |
:105FF000AC0197FD2CC7BBE0559547953795279584 |
:10600000BA95D1F780918E03E82EFF24002711273F |
:10601000C801B7010E94786397FD14C7ACE095955D |
:10602000879577956795AA95D1F76F87788B898B38 |
:106030009A8B6093600570936105809362059093DD |
:10604000630529A53AA5C901AA2797FDA095BA2FEE |
:10605000BC01CD012D813E814F8158850E9478631E |
:106060009B01AC0197FD01C7FBE05595479537951E |
:106070002795FA95D1F7C801B7010E94786397FD7B |
:10608000EFC6DC01CB01ECE0B595A7959795879518 |
:10609000EA95D1F78093640590936505A093660512 |
:1060A000B093670520916005309161053093ED084C |
:1060B0002093EC0820916405309165053093F10838 |
:1060C0002093F0082F85388949895A89821B930BC0 |
:1060D000A40BB50B8AAF9BAFACAFBDAF809364058B |
:1060E00090936505A0936605B0936705A80EB91E49 |
:1060F000CA1EDB1E8601750130918D033DA7332337 |
:1061000009F0A3C58EA79FA7A8ABB9ABB7FD61C621 |
:106110002EA53FA548A959A9559547953795279587 |
:106120008DA19EA1AFA1B8A5821B930BA40BB50BAB |
:106130008DA39EA3AFA3B8A780930E0590930F05E0 |
:10614000A0931005B09311058CC598EB291694E91E |
:1061500039069EEF49069FEF59060CF0F1C328EB74 |
:1061600034E94EEF5FEF2D833E834F835887E1CEB6 |
:106170002DA13EA14FA158A520930E0530930F05E8 |
:1061800040931005509311053091FA083CA31092EA |
:10619000F1081092F0081092ED081092EC0810929D |
:1061A0005C0510925D0510925E0510925F051092DD |
:1061B00058051092590510925A0510925B053091BE |
:1061C0008D033DA780915C0590915D05A0915E05D2 |
:1061D000B0915F05BC01CD0124E630E040E050E025 |
:1061E0000E94EC63DA01C9014091580550915905AC |
:1061F000481B590B58A34F8F809158059091590512 |
:10620000A0915A05B0915B05BC01CD0124E630E0B8 |
:1062100040E050E00E94EC63DA01C90120915C0586 |
:1062200030915D05821B930B9AA389A3809186030D |
:1062300090918703A0918803B0918903BC01CD019F |
:1062400028E631E040E050E00E947863E616F70669 |
:106250000807190744F057016801A61AB70AC80AC7 |
:10626000D90A8601750117FDA3C4A092BC09B0929A |
:10627000BD09C092BE09D092BF092BA53CA58F8D48 |
:1062800098A1280F391F79010027F7FC0095102FDE |
:106290008091120590911305A0911405B0911505F8 |
:1062A000E80EF91E0A1F1B1F570168018091DF04C9 |
:1062B0009091E004281B390BC901AA2797FDA095EE |
:1062C000BA2F280E391E4A1E5B1E2091A003309162 |
:1062D000A1034091A2035091A30322153305440565 |
:1062E000550574F4A8EAEA2EA1E6FA2E012D112D27 |
:1062F000E21AF30A040B150B170128015701680174 |
:1063000088279927DC01821B930BA40BB50B281659 |
:1063100039064A065B060CF0E9C2F8E52F2EFEE9C5 |
:106320003F2EFFEF4F2EFFEF5F2E220E331E441E37 |
:10633000551E20921605309217054092180550926E |
:1063400019058201710120921205309213054092C5 |
:1063500014055092150529A53AA5A9A1BAA12A0F9D |
:106360003B1FA901662757FD6095762F80911A057E |
:1063700090911B05A0911C05B0911D05480F591F58 |
:106380006A1F7B1F5A016B018091DD049091DE042E |
:10639000281B390BC901AA2797FDA095BA2F680EB3 |
:1063A000791E8A1E9B1E8091A4039091A503A09143 |
:1063B000A603B091A7038EAB9FABA8AFB9AF86156C |
:1063C0009705A805B90564F448EA51E660E070E075 |
:1063D000481B590B6A0B7B0B3A014B015A016B01AD |
:1063E0008EA99FA9A8ADB9ADB095A09590958195BE |
:1063F0009F4FAF4FBF4F681679068A069B060CF079 |
:1064000064C2E8E56E2EEEE97E2EEFEF8E2EEFEF02 |
:106410009E2E2EA93FA948AD59AD620E731E841E53 |
:10642000951E60921E0570921F0580922005909225 |
:106430002105B401A30160921A0570921B05809298 |
:106440001C0590921D058DA19EA1AFA1B8A58093BA |
:10645000220590932305A0932405B093250560920F |
:106460003E0570923F058092400590924105209232 |
:1064700036053092370540923805509239054093E1 |
:106480003A0550933B0560933C0570933D05E092BF |
:106490003205F09233050093340510933505809151 |
:1064A00025039091260397FDA4C37C01F594E794FE |
:1064B000F594E794F594E794FAA6E9A6809123036E |
:1064C0009091240397FD93C38C011595079515951D |
:1064D0000795159507951CA70BA780913A049091F5 |
:1064E0003B040F9734F458E1E52E5CEFF52EFAA645 |
:1064F000E9A680913A0490913B04079734F440E375 |
:10650000E42E48EFF42EFAA6E9A6209102012A30E3 |
:1065100009F46BC280913A0490913B04815D9740ED |
:106520000CF007C280913A0490913B04805E974042 |
:1065300034F080EDE82E87E0F82EFAA6E9A68091E7 |
:106540003804909139040F9724F408E11CEF1CA73C |
:106550000BA78091380490913904079724F400E345 |
:1065600018EF1CA70BA72A3009F455C280913804F4 |
:1065700090913904815D974024F008EE13E01CA748 |
:106580000BA78091380490913904805E974024F0E5 |
:1065900000ED17E01CA70BA7A0919703AA2309F40D |
:1065A00097C06091250370912603809168059091B2 |
:1065B0006905681B790B2091250330912603280F6C |
:1065C000391F37FD3FC335952795309369052093D3 |
:1065D0006805613871050CF43AC260E870E07093A8 |
:1065E0006F0560936E058A2F9927869FF001879F1C |
:1065F000F00D969FF00D1124CF01F7FD21C37C0112 |
:10660000F594E794F594E794F594E794F594E7947A |
:1066100029A53AA5E20EF31EFAA6E9A640912303A6 |
:106620005091240380916A0590916B05481B590B8A |
:106630002091230330912403280F391F37FDFDC219 |
:106640003595279530936B0520936A0541385105A0 |
:106650000CF4F5C140E850E050936D0540936C0593 |
:106660008A2F9927849FD001859FB00D949FB00DEC |
:106670001124AD019D01B7FDDDC289011595079576 |
:10668000159507951595079515950795EBA5FCA507 |
:106690000E0F1F1F1CA70BA7869F9001879F300D11 |
:1066A000969F300D1124C9012091250330912603B6 |
:1066B000820F931F909326038093250380912303D9 |
:1066C00090912403480F591F5093240340932303B0 |
:1066D0004D855E85141615060CF0C1C18091EC083D |
:1066E0009091ED0897FDA2C2AA2797FDA095BA2F19 |
:1066F0006DA5262F332744275527BC01CD010E94C5 |
:10670000786397FD8EC2E6E09595879577956795B6 |
:10671000EA95D1F7AF8DB8A1A60FB71FB09367095F |
:10672000A09366094B855C85141615060CF0C1C153 |
:106730008091F0089091F10897FD6FC2AA2797FD0C |
:10674000A095BA2F6DA5262F332744275527BC01C6 |
:10675000CD010E94786397FD5BC246E095958795D1 |
:10676000779567954A95D1F7A9A1BAA1A60FB71F4A |
:10677000B0935C09A0935B093CA137FDC1C11093A4 |
:106780005A0900935909F0926909E09268098091C9 |
:10679000F608E82FFF27EE0FFF1FE054F74F808128 |
:1067A000918182599F4FA091FA04B091FB04A817E0 |
:1067B000B9070CF0EEC0CD0101969093FB048093D5 |
:1067C000FA04DC018091F708E82FFF27EE0FFF1F86 |
:1067D000E054F74F8081918182599F4F6091F80476 |
:1067E0007091F904681779070CF0C4C0CB010196C9 |
:1067F0009093F9048093F804BC018091F808E82F85 |
:10680000FF27EE0FFF1FE054F74F808191818259DF |
:106810009F4F4091F6045091F704481759070CF028 |
:10682000D5C0CA0101969093F7048093F604AC0199 |
:106830008091F908E82FFF27EE0FFF1FE054F74F74 |
:106840008081918182599F4F2091F4043091F50409 |
:10685000281739070CF0ABC0C90101969093F504D5 |
:106860008093F4049C01B7FD93C1AF3FB10539F0AB |
:1068700034F08FEF90E09093FB048093FA0477FD5F |
:1068800076C16F3F710539F034F08FEF90E090934F |
:10689000F9048093F80457FD70C14F3F510539F05A |
:1068A00034F08FEF90E09093F7048093F60437FD77 |
:1068B0006AC12F3F310509F00CF4EEC28FEF90E072 |
:1068C0009093F5048093F404E7C260921E057092E1 |
:1068D0001F058092200590922105A0921A05B09282 |
:1068E0001B05C0921C05D0921D05ADCD209216054A |
:1068F000309217054092180550921905A092120582 |
:10690000B0921305C0921405D092150524CD98EBD2 |
:10691000691694E979069EEF89069FEF99062CF592 |
:1069200028EB34E94EEF5FEF29833A834B835C8396 |
:106930001ACB98EEE92E93E0F92EFAA6E9A6F2CD4D |
:106940002D823E824F825886F4CA8DA19EA1AFA1AE |
:10695000B8A580930E0590930F05A0931005B093F2 |
:1069600011059091FA089CA312CC69827A828B82DD |
:106970009C82F9CA8081918182599F4F861797071F |
:106980000CF03BCF6115710509F437CFCB010197AE |
:106990002FCF8081918182599F4F8A179B070CF0DE |
:1069A00011CF109709F40ECFCD01019706CF80814A |
:1069B000918182599F4F821793070CF054CF211574 |
:1069C000310509F450CFC901019748CF80819181E9 |
:1069D00082599F4F841795070CF02ACF4115510516 |
:1069E00009F426CFCA0101971ECF80913A049091F5 |
:1069F0003B04835F934034F038EEE32E33E0F32E14 |
:106A0000FAA6E9A680913A0490913B048A5F9340EC |
:106A10000CF495CD8ECD8091380490913904835F2C |
:106A2000934024F008EE13E01CA70BA780913804D4 |
:106A3000909139048A5F93400CF4AECDA9CD3FEF1D |
:106A4000403853070CF008CE40E85FEF05CE8FEFDB |
:106A5000603878070CF0C3CD60E87FEFC0CD80913F |
:106A6000EC089091ED0897FD9BC1AA2797FDA09592 |
:106A7000BA2FEDA52E2F332744275527BC01CD0172 |
:106A80000E94786397FDADC156E0959587957795FF |
:106A900067955A95D1F72F8D38A1261B370B309368 |
:106AA0006709209366094B855C85141615060CF45E |
:106AB0003FCE8091F0089091F10897FD6DC1AA2713 |
:106AC00097FDA095BA2FEDA52E2F332744275527E4 |
:106AD000BC01CD010E94786397FD88C136E0959591 |
:106AE0008795779567953A95D1F729A13AA1261B05 |
:106AF000370B30935C0920935B093CA137FF3FCEF5 |
:106B00004BA1442309F03BCE8091DB04882309F09C |
:106B100036CE8B859C85A1E081309A070CF044C16C |
:106B20002B853C854FEF203034070CF0A3C189A59D |
:106B30009AA5280F391F3C872B8720503F4F309351 |
:106B4000690920936809AD85BE85E1E0A130BE07E3 |
:106B50000CF465C12BA53CA5A20FB31FBE87AD8762 |
:106B6000A050B140B0935A09A093590910CE109289 |
:106B7000F9041092F80457FF90CE1092F704109287 |
:106B8000F60437FF96CE1092F5041092F40484C1F7 |
:106B90001092FB041092FA0472CE295F3F4F3DC859 |
:106BA000295F3F4F29C82D5F3F4F4F4F5F4FE5C8CB |
:106BB000E60EF71E081F191FE092BC09F092BD09EE |
:106BC0000093BE091093BF0958CB23E030E040E0AA |
:106BD00050E0E20EF31E041F151FA3C883E090E0EF |
:106BE000A0E0B0E0E80EF91E0A1F1B1F5BC8079665 |
:106BF0006BCC07965ACC2DA13EA14FA158A520934E |
:106C00000E0530930F054093100550931105BFCA30 |
:106C1000615C7F4F8F4F9F4FA0CD909581959F4F87 |
:106C20008DCD615C7F4F8F4F9F4F6DCD909581953E |
:106C30009F4F5ACD215F3F4F20CD2F5F3F4F00CD5B |
:106C40000F96DDCC2F5F3F4FBECC2DA13EA14FA1B3 |
:106C500058A520930E0530930F05409310055093CF |
:106C6000110589859A85AA2797FDA095BA2F2AAD87 |
:106C70003BAD4CAD5DAD820F931FA41FB51F8B8B39 |
:106C80009C8BAD8BBE8BBC01CD0129813A814B81A0 |
:106C90005C810E9478639B01AC0197FDBBC06BE0F7 |
:106CA00055954795379527956A95D1F760918F034C |
:106CB000862F9927AA27BB278F8B988FA98FBA8FEA |
:106CC000BC01CD010E94786397FD9FC02CE0959593 |
:106CD0008795779567952A95D1F76B8F7C8F8D8FE8 |
:106CE0009E8F609358057093590580935A05909331 |
:106CF0005B056B897C898D899E892D813E814F81C1 |
:106D000058850E9478639B01AC0197FD79C08BE0A8 |
:106D100055954795379527958A95D1F76F89788D41 |
:106D2000898D9A8D0E94786397FD65C0BCE095952A |
:106D3000879577956795BA95D1F76AAB7BAB8CABA6 |
:106D40009DAB60935C0570935D0580935E059093A9 |
:106D50005F0529853A8537FD7FC0213431050CF464 |
:106D600031CA6B8D7C8D8D8D9E8D97FD2AC06138CB |
:106D700071058105910564F46AA97BA98CA99DA977 |
:106D800097FD82C061387105810591050CF41ACA1E |
:106D900081E08093FE0416CA909581959F4F8FCE17 |
:106DA000909581959F4F61CEE9A5FAA58E0F9F1F03 |
:106DB0009C878B87805091409093690980936809E4 |
:106DC000C2CE90958095709561957F4F8F4F9F4F64 |
:106DD000CECF0196A11DB11D8EA79FA7A8ABB9ABC1 |
:106DE00097C9615C7F4F8F4F9F4F4ECE615C7F4F45 |
:106DF0008F4F9F4F73CE6150704F8F4F9F4F96CFE5 |
:106E00002150384F4F4F5F4F82CF6150704F8F4F9F |
:106E10009F4F5CCF2150384F4F4F5F4F40CF4D8534 |
:106E20005E856FEF4030560754F58BA59CA5480F43 |
:106E3000591F5E874D8740505F4F50935A094093CA |
:106E40005909A5CC6150704F8F4F9F4FE7C8215013 |
:106E5000384F4F4F5F4FCFC8309521953F4F7DCF73 |
:106E60006150704F8F4F9F4F0CC92150384F4F4F7B |
:106E70005F4FFAC8F0926909E092680964CE1093F6 |
:106E80005A090093590983CC909580957095619526 |
:106E90007F4F8F4F9F4F76CFED960FB6F894DEBFA2 |
:106EA0000FBECDBFDF91CF911F910F91FF90EF905B |
:106EB000DF90CF90BF90AF909F908F907F906F901A |
:106EC0005F904F903F902F900895809102018D30F8 |
:106ED00009F455C110927A0080913A0490913B04D4 |
:106EE00090936909809368098091380490913904DE |
:106EF00090935A09809359098091360490913704F0 |
:106F00009093B6098093B50980913204909133042F |
:106F10009C01442737FD4095542FDA01C901880FA1 |
:106F2000991FAA1FBB1F880F991FAA1FBB1F820F83 |
:106F3000931FA41FB51F820F931FA41FB51F90930B |
:106F4000A5098093A40980913404909135049C0193 |
:106F5000442737FD4095542FDA01C901880F991F46 |
:106F6000AA1FBB1F880F991FAA1FBB1F820F931F49 |
:106F7000A41FB51F820F931FA41FB51F9093C109B3 |
:106F80008093C009809130049091310490937409EA |
:106F9000809373098FEC80937A008091F608E82F34 |
:106FA000FF27EE0FFF1FE054F74F80819181825938 |
:106FB0009F4FA091FA04B091FB04A817B9070CF0F9 |
:106FC00085C0CD0101969093FB048093FA04DC0107 |
:106FD0008091F708E82FFF27EE0FFF1FE054F74FCF |
:106FE0008081918182599F4F6091F8047091F904DA |
:106FF000681779070CF096C0CB0101969093F904BD |
:107000008093F804BC018091F808E82FFF27EE0F69 |
:10701000FF1FE054F74F8081918182599F4F40912B |
:10702000F6045091F704481759070CF06CC0CA01D8 |
:1070300001969093F7048093F604AC018091F908CF |
:10704000E82FFF27EE0FFF1FE054F74F808191815B |
:1070500082599F4F2091F4043091F5042817390785 |
:107060000CF042C0C90101969093F5048093F4049A |
:107070009C01B7FD7FC0AF3FB10511F00CF061C0BE |
:1070800077FD67C06F3F710539F034F08FEF90E006 |
:107090009093F9048093F80457FD61C04F3F510568 |
:1070A00039F034F08FEF90E09093F7048093F6047A |
:1070B00037FD5BC02F3F310509F00CF463C08FEF43 |
:1070C00090E09093F5048093F4045CC080819181FA |
:1070D00082599F4F8A179B070CF07ACF109709F4BB |
:1070E00077CFCD0101976FCF8081918182599F4FDA |
:1070F000821793070CF0BDCF2115310509F4B9CFE4 |
:10710000C9010197B1CF8081918182599F4F841726 |
:1071100095070CF093CF4115510509F48FCFCA01A3 |
:10712000019787CF8081918182599F4F861797075A |
:107130000CF069CF6115710509F465CFCB0101979A |
:107140005DCF8FEF90E09093FB048093FA0477FF7C |
:1071500099CF1092F9041092F80457FF9FCF109224 |
:10716000F7041092F60437FFA5CF1092F5041092A1 |
:10717000F40408C01092FB041092FA0481CF0E941C |
:107180004D1AA8CE809125099927AA27BB27BC01B3 |
:10719000CD0124EC39E040E050E00E947863DC014E |
:1071A000CB018093A4039093A503A093A603B0936F |
:1071B000A703809126099927AA27BB27BC01CD01E7 |
:1071C0000E947863DC01CB018093A0039093A1031C |
:1071D000A093A203B093A30308956F927F928F921E |
:1071E0009F92AF92BF92CF92DF92EF92FF920F9356 |
:1071F0001F93CF9300E010E078016801109215040E |
:10720000469A10934D0500934C0510934B0500933F |
:107210004A0580E090E0A0E0B0E0809344059093C0 |
:107220004505A0934605B093470510935705009375 |
:10723000560510935505009354051093530500937C |
:107240005205109386090093850910928F031092BE |
:107250008E0310922E040E94653784E690E00E940F |
:10726000A3150E9465378091FA0880FF10C08091B5 |
:107270001D0390911E03875B934008F07BC08091B3 |
:107280001D0390911E038E5E924008F473C0CFE1FF |
:107290008AE090E00E94A315809136049091370413 |
:1072A000080F191F80913A0490913B04E80EF91ED3 |
:1072B0008091380490913904C80ED91EC150C7FF7F |
:1072C000E7CFA701405F5F4F569547955695479585 |
:1072D00050935705409356059601205F3F4F3695D2 |
:1072E0002795369527953093550520935405C80169 |
:1072F000409696958795929582958F7089279F7075 |
:107300008927909353058093520590938609809323 |
:107310008509309351052093500550934F054093B4 |
:107320004E0544E050E0DA010E940764802D85306C |
:1073300020F18091C0099091C10997FD53C06CE084 |
:1073400070E00E94B76370934B0560934A0580918B |
:10735000A4099091A50997FD56C06CE070E00E94C9 |
:10736000B76370934D0560934C0580917A089091B6 |
:107370007B084DC00E94FB198ACFDA010E94076486 |
:10738000802D9927982F8827DA0111960E9407648B |
:10739000202D820F911D90934D0580934C05DA01AD |
:1073A00012960E940764802D9927982F8827DA016A |
:1073B00013960E940764202D820F911D90934B0518 |
:1073C00080934A05DA0114960E940764802D99275C |
:1073D000982F8827DA0115960E940764202D820FC6 |
:1073E000911D15C0909581959F4F6CE070E00E94B3 |
:1073F000B76370934B0560934A058091A4099091FF |
:10740000A50997FFAACF909581959F4FA6CFAA2750 |
:1074100097FDA095BA2FBC01CD010E94FE62DC0150 |
:10742000CB018093440590934505A0934605B09306 |
:107430004705109269091092680910925A09109232 |
:1074400059091092B6091092B50984E690E00E949D |
:10745000A3158091320490913304AA2797FDA0953B |
:10746000BA2F9C01AD01220F331F441F551F220F5D |
:10747000331F441F551F280F391F4A1F5B1F280F3A |
:10748000391F4A1F5B1F3093A5092093A4098091DF |
:10749000340490913504AA2797FDA095BA2F7C015A |
:1074A0008D01EE0CFF1C001F111FEE0CFF1C001FB6 |
:1074B000111FE80EF91E0A1F1B1FE80EF91E0A1FF6 |
:1074C0001B1FF092C109E092C00980910809682E43 |
:1074D000772488249924C9019C01442737FD4095CD |
:1074E000542FC401B3010E9478635B016C01609367 |
:1074F0003E0570933F0580934005909341059701A9 |
:10750000442737FD4095542FC401B3010E9478638E |
:10751000DC01CB018093360590933705A0933805A5 |
:10752000B0933905A0921A05B0921B05C0921C05B4 |
:10753000D0921D058093120590931305A093140516 |
:10754000B093150510920E0510920F0510921005BC |
:107550001092110580911F0390912003A0912103A7 |
:10756000B091220390937D0880937C0810922D04A3 |
:1075700010922C041092060510920705109208052F |
:1075800010920905809104059091050590930305DB |
:10759000809302050E948E5B82E390E09093180432 |
:1075A00080931704809125099927AA27BB27BC013E |
:1075B000CD0124EC39E040E050E00E947863DC012A |
:1075C000CB018856954CAF4FBF4F8093A403909347 |
:1075D000A503A093A603B093A7038091260999273A |
:1075E000AA27BB27BC01CD010E947863DC01CB0137 |
:1075F0008856954CAF4FBF4F8093A0039093A10343 |
:10760000A093A203B093A30310928B0310928A035A |
:107610008091040590910505AA2797FDA095BA2FA2 |
:10762000209186033091870340918803509189030C |
:10763000BC01CD010E947863DC01CB018093BC09C1 |
:107640009093BD09A093BE09B093BF091092FD04A9 |
:107650001092FC0481E0809301010E946F5F809191 |
:10766000C20484608093C2048FEF8093250A109235 |
:10767000260A80E28093270A8091F608E82FFF27E8 |
:10768000EE0FFF1FE054F74F8081918182599F4F89 |
:107690009093FB048093FA048091F708E82FFF276A |
:1076A000EE0FFF1FE054F74F8081918182599F4F69 |
:1076B0009093F9048093F8048091F808E82FFF274D |
:1076C000EE0FFF1FE054F74F8081918182599F4F49 |
:1076D0009093F7048093F6048091F908E82FFF2730 |
:1076E000EE0FFF1FE054F74F8081918182599F4F29 |
:1076F0009093F5048093F40484E68093F304CF918F |
:107700001F910F91FF90EF90DF90CF90BF90AF90BF |
:107710009F908F907F906F9008959091E9049923A6 |
:1077200081F58091C2048C7F8093C20410C0A92F80 |
:10773000BB27FD01E758F84F8083FD01E758F84F5C |
:107740008081A955B64F8C939F5F9C3080F48091C7 |
:10775000F603882361F3A92FBB27FD01E758F84FF3 |
:107760008081A955B64F8C939F5F9C3080F38091A8 |
:10777000F603882359F08091F60381508093F60335 |
:1077800005C08091C20481608093C2048091A709E2 |
:10779000992790934F0880934E088091A8099927C4 |
:1077A00090935108809350088091AA09992790934B |
:1077B0005308809352088091A909992790935508FE |
:1077C0008093540810926304109262040E94EF2781 |
:1077D00008958091FD088B3F68F08B3F09F48AC2C1 |
:1077E0008C3F09F423C38D3F09F4D5C28E3F21F4A9 |
:1077F0008091F40480939C038091FC088B3F08F4F3 |
:1078000013C28B3F09F40EC28C3F09F4FDC28D3FB9 |
:1078100009F4D3C28E3F09F448C380919D038823A5 |
:1078200009F007C280939D038091FE088B3F08F406 |
:1078300007C28B3F09F402C28C3F09F4FAC28D3FA4 |
:1078400009F4BEC28E3F09F42AC380919B038823AA |
:1078500009F0FBC180939B03809100098B3F68F086 |
:107860008B3F09F44AC28C3F09F4D1C28D3F09F421 |
:1078700095C28E3F21F48091F40480939A03809105 |
:1078800002098B3F68F08B3F09F42BC28C3F09F44F |
:10789000CAC28D3F09F47CC28E3F21F48091F4046A |
:1078A00080939803809109098B3F68F08B3F09F41E |
:1078B0001BC28C3F09F4B1C28D3F09F475C28E3FE3 |
:1078C00021F48091F4048093990380910A098B3FFD |
:1078D00008F4C2C18B3F09F4BDC18C3F09F488C2D2 |
:1078E0008D3F09F464C28E3F09F4D6C2809196039D |
:1078F0008B3008F4B6C18F3F11F4809396038091CA |
:107900000B098B3F68F08B3F09F4F1C18C3F09F400 |
:107910006CC28D3F09F457C28E3F21F48091F4046C |
:107920008093950380910C098B3F68F08B3F09F49D |
:10793000CFC18C3F09F45FC28D3F09F447C28E3F2F |
:1079400021F48091F40480939703209111092B3F37 |
:1079500008F48BC12B3F09F486C12C3F09F442C2C5 |
:107960002D3F09F439C22E3F09F49CC220919303A4 |
:10797000809112098B3F08F07FC18093D6048091DB |
:1079800013098B3F68F08B3F09F4A8C18C3F09F4C1 |
:1079900038C28D3F09F40EC28E3F21F48091F40469 |
:1079A0008093D504809114098B3F68F08B3F09F4D4 |
:1079B000A7C18C3F09F42EC28D3F09F4F2C18E3F5E |
:1079C00021F48091F4048093D404809115098B3FB5 |
:1079D00068F08B3F09F497C18C3F09F40FC28D3FCB |
:1079E00009F4F7C18E3F21F48091F4048093D3040D |
:1079F00080912A098B3F68F08B3F09F487C18C3F47 |
:107A000009F42FC28D3F09F4A5C18E3F21F4809166 |
:107A1000F4048093D20480912B098B3F68F08B3F54 |
:107A200009F477C18C3F09F41FC28D3F09F495C159 |
:107A30008E3F21F48091F4048093D10480912C092D |
:107A40008B3F68F08B3F09F46DC18C3F09F40FC286 |
:107A50008D3F09F479C18E3F21F48091F404809325 |
:107A6000D00480912D098B3F68F08B3F09F45DC1F4 |
:107A70008C3F09F4FFC18D3F09F469C18E3F21F4A9 |
:107A80008091F4048093CF04809116098B3F68F0B5 |
:107A90008B3F09F44DC18C3F09F4D1C18D3F09F4EE |
:107AA0006BC18E3F21F48091F40480939203809106 |
:107AB0001A098B3F68F08B3F09F43DC18C3F09F4F4 |
:107AC000C1C18D3F09F45BC18E3F21F48091F40464 |
:107AD0008093910380911F098B3F68F08B3F09F4DD |
:107AE000EBC08C3F09F4B1C18D3F09F43FC18E3F1B |
:107AF00021F48091F40480939003809122098B3FBC |
:107B000068F08B3F09F4DBC08C3F09F4A1C18D3FC5 |
:107B100009F42FC18E3F21F48091F40480938F03E8 |
:107B2000809123098B3F68F08B3F09F4CBC08C3FD9 |
:107B300009F491C18D3F09F413C18E3F21F4809166 |
:107B4000F40480938E03809124098B3F68F08B3F6F |
:107B500009F4BBC08C3F09F481C18D3F09F403C116 |
:107B60008E3F21F48091F40480938D038091290944 |
:107B70008B3F68F08B3F09F4CFC08C3F09F47DC187 |
:107B80008D3F09F4DBC08E3F21F48091F404809393 |
:107B90008C0380912F098B3F08F47EC08B3F09F442 |
:107BA00079C08C3F09F448C18D3F09F4EBC08E3F8A |
:107BB00009F46CC180918009823008F472C08F3F53 |
:107BC00011F480938009809131098B3F08F46DC0D6 |
:107BD0008B3F09F468C08C3F09F455C18D3F09F40F |
:107BE000D4C08E3F09F455C18091B309823008F4A6 |
:107BF00061C08F3F11F48093B309809144098B3F9A |
:107C000070F08B3F09F48BC08C3F09F439C18D3F74 |
:107C100009F497C08E3F09F04BC18091F404809322 |
:107C2000C30946C18091FA0480939D03882309F417 |
:107C3000F9CD843608F4F8CD84E6F4CD8091FA04C9 |
:107C400080939B03882309F405CE843608F404CE80 |
:107C500084E600CE8091FA04809396038B3008F07E |
:107C60004ACE8AE04ACE2091FA0420939303809171 |
:107C700012098B3F08F481CE8B3F69F18C3F09F4E8 |
:107C8000CFC08D3F09F4ABC08E3F09F078CE809114 |
:107C9000F40473CE8091FA0480938009823008F056 |
:107CA0008ECF81E08ECF8091FA048093B309823029 |
:107CB00008F09FCF81E09FCF8091FA041CCF809184 |
:107CC000FA042CCF8091FA043CCF8091FA044CCF77 |
:107CD0008091FA0438CE8091FA044FCE8091FA0454 |
:107CE0005FCE8091FA04DCCD8091FA04ECCD8091D6 |
:107CF000FA0416CE8091FA047DCD8091FA04BDCDB0 |
:107D00008091FA0460CE8091FA0470CE8091FA04DA |
:107D100080CE8091FA0490CE8091FA0438CF809181 |
:107D2000FA047DCF8091FA049ACE8091FA04AACE0B |
:107D30008091FA04BACE8091FA04CACE8091F604FA |
:107D400026CF8091F6046BCF8091F60488CE809187 |
:107D5000F60498CE8091F6045CCE8091F6046CCE49 |
:107D60008091F604EECE8091F604FECE8091F6046A |
:107D7000C2CE8091F604D2CE8091F60496CE809148 |
:107D8000F604A6CE8091F60487CF8091F6048DCFBD |
:107D90008091F60485CD8091F6042CCD8091F60477 |
:107DA0006CCD8091F6040FCE8091F6048CCD80913D |
:107DB000F60452CF8091F604F3CD8091F60434CFCF |
:107DC0008091F6043DCF8091F604AACD8091F6040F |
:107DD000BACD8091F6040ACE2091F60446CF809168 |
:107DE000F604CBCD2091F80440CF8091F80498CDD3 |
:107DF0008091F80431CF8091F804A5CD8091F804EA |
:107E0000F5CD8091F804CCCD8091F8040DCF809110 |
:107E1000F80433CD8091F804D6CD8091F80453CD89 |
:107E20008091F804AACD8091F8043ACD8091F804AD |
:107E3000E1CC8091F80404CF8091F8042DCF80919B |
:107E4000F80433CE8091F80443CE8091F80453CEE9 |
:107E50008091F80463CE8091F80473CE8091F80489 |
:107E600083CE8091F804D5CD8091F804E5CD809142 |
:107E7000F804F5CD8091F80405CE8091F80487CE02 |
:107E80008091F804CCCE8091F8040FCF8091F40457 |
:107E900003CF8091F40409CF8091F404DDCE80916A |
:107EA000F404CECE2091F404E0CE8091F404BCCE54 |
:107EB00033272F5F3F4F8CE398E2B9010E94B763ED |
:107EC00070939F0360939E03809107098093B40988 |
:107ED0008091060980936D0908952F923F924F92E9 |
:107EE0005F926F927F928F929F92AF92BF92CF924A |
:107EF000DF92EF92FF920F931F93CF93DF93CDB753 |
:107F0000DEB7C156D0400FB6F894DEBF0FBECDBF6E |
:107F10000E94CC2D209102012C3008F0A0C2299A99 |
:107F2000A090EA04B090EB04B9A2A8A280916D09D8 |
:107F300099270A96A816B90614F499A388A38091E4 |
:107F4000F304843608F08DC280910F03882309F46E |
:107F500069C480918C0590918D05009711F40C9463 |
:107F6000D14B019790938D0580938C052A3011F4A5 |
:107F70000C94DC4B243111F40C94DC4B2898809148 |
:107F8000C3049091C404895E934010F40C94CD4BCB |
:107F900080910E09282F332739A328A38091C2048A |
:107FA00080618093C2048091F208A82FBB27AA0F9A |
:107FB000BB1FFD01EA52F74F118210828091F30836 |
:107FC000282F3327220F331FC9018A52974FFC01F4 |
:107FD00011821082A054B74F11961C921E92205409 |
:107FE000374FD90111961C921E928091F508E82F07 |
:107FF000FF27EE0FFF1FE054F74F11821082809190 |
:108000008403815080938403809184038F3F21F007 |
:108010008091C20484FF1BC40E94E93B80919D05AE |
:1080200090919E05AC01440F551F480F591FE090D9 |
:10803000F208AE2DBB27AA0FBB1FFD01E054F74F7E |
:10804000D09003090D2D112780819181809F5001CF |
:10805000819FB00C909FB00C11244A0D5B1D57FFFF |
:1080600002C00C9462565595479555954795AA526E |
:10807000B74F80910409682F77278D919C91869F37 |
:108080009001879F300D969F300D1124240F351FCE |
:1080900030939E0520939D058091CB059091CC0552 |
:1080A0004091C7055091C805840F951F281B390BB7 |
:1080B0003093F1042093F00480919F059091A005E6 |
:1080C000AC01440F551F480F591FF090F308AF2D16 |
:1080D000BB27AA0FBB1FFD01E054F74F80819181A0 |
:1080E000809F9001819F300D909F300D1124420F91 |
:1080F000531F57FF02C00C945E56559547955595F2 |
:108100004795AA52B74F8D919C91869F9001879F6A |
:10811000300D969F300D1124240F351F3093A0058C |
:1081200020939F058091C9059091CA054091C5058E |
:108130005091C605840F951F281B390B3093EF040F |
:108140002093EE048091F508E82FFF27EE0FFF1F24 |
:10815000E054F74F80819181909581959F4F8330B6 |
:10816000910514F40C946A4B02979093ED0480935C |
:10817000EC048091F408E82FFF27EE0FFF1FE05476 |
:10818000F74F0081118108581F4F8091960399275E |
:10819000AA2797FDA095BA2FBC01CD010E94FE62CF |
:1081A000DC01CB0120E030E040E251E4BC01CD0134 |
:1081B0000E949F62DC01CB01BC01CD010E94E16203 |
:1081C000DC01CB018093BA0960919503809360092B |
:1081D0006093770980919B0780FF06C08091C30957 |
:1081E000813810F00C94DF4B1093EB040093EA04F9 |
:1081F0008091EA049091EB0497FF02C00C945856CA |
:10820000B090FA08BBAEB2FC02C00C94B44B109212 |
:1082100087094091F0045091F104CA0157FF02C050 |
:108220000C94BF4B959587959595879597FF02C0C0 |
:108230000C94C84B2091C7043091C8042817390703 |
:1082400014F00C94724BCA0157FF02C00C9499575A |
:1082500097FF02C00C949657BC017595679575956C |
:1082600067956536710514F40C94754B64E670E0FF |
:108270004091EE045091EF04CA0157FD02C00C94E6 |
:108280007E4B0396959587959595879597FD02C0AA |
:108290000C94864B909581959F4F2091C504309109 |
:1082A000C6042817390714F40C948F4B2150304022 |
:1082B0008091C20484FD02C00C94AA4B1092C804A1 |
:1082C0001092C7041092C6041092C504EF2DFF2728 |
:1082D000EE0FFF1FE054F74F40912009242F332762 |
:1082E000808191812817390734F48091450982FFF4 |
:1082F00002C00C94534CEF2DFF27EE0FFF1FE054EC |
:10830000F74F842F992720912109821B9109208101 |
:1083100031812817390714F41092DA04EF2DFF2762 |
:10832000EE0FFF1FE054F74F842F992722273327A2 |
:10833000281B390B808191818217930734F4809137 |
:10834000450983FF02C00C944E4C8091D9048823C8 |
:1083500091F0EF2DFF27EE0FFF1FE054F74F8091B4 |
:1083600021099927841B9109208131818217930764 |
:1083700014F40C947B4CEE2DFF27EE0FFF1FE054FE |
:10838000F74F242F3327808191812817390734F440 |
:108390008091450980FF02C00C94484C5091D7044D |
:1083A000552399F0EE2DFF27EE0FFF1FE054F74FF6 |
:1083B000842F992720912109821B910920813181E5 |
:1083C0002817390714F40C94834CEE2DFF27EE0F79 |
:1083D000FF1FE054F74F842F992722273327281BAC |
:1083E000390B808191818217930734F4809145097C |
:1083F00081FF02C00C94434C8091D804882391F0F3 |
:10840000EE2DFF27EE0FFF1FE054F74F809121095B |
:108410009927841B9109208131818217930714F4D5 |
:108420000C947F4C8091DA04882331F48091D90434 |
:10843000882311F40C94404C91E0552331F4809141 |
:10844000D804882311F40C945E4C81E08093DC0402 |
:108450001092DB041092DA041092D904FBC129981F |
:108460005FCD8091F3048D3808F4C9CD8091C204AA |
:108470008F7E8093C20490910F0982E3989FC00180 |
:10848000112490938D0580938C05E8A1F9A1B997EB |
:1084900014F00C94644C8091C3049091C4048F3FF9 |
:1084A000910519F010F00C9451561092700510922D |
:1084B0007105109272051092730510927405109256 |
:1084C000750510927605109277058A3F910511F493 |
:1084D0000C94D3583091F408E32FFF27EE0FFF1FC1 |
:1084E000E054F74F80819181813591050CF4E9C00A |
:1084F0004091E904442309F0E4C08091F508E82F95 |
:10850000FF27EE0FFF1FE054F74F808191818C34DD |
:10851000910514F40C94385880918E058F5F893C36 |
:1085200010F40C94C0592C3010F00C945E5A299819 |
:108530001092E90410928E051092C4041092C304A4 |
:10854000E090F208EE2DFF27EE0FFF1FE054F74FEB |
:10855000808191818734910514F00C945A5AF090DF |
:10856000F308EF2DFF27EE0FFF1FE054F74F808138 |
:1085700091810190F081E02DF7FF02C00C940B5B1C |
:10858000E734F1050CF470C021E0AF2DBB27AA0F32 |
:10859000BB1FA054B74F8D919C91119787349105C3 |
:1085A00044F0EE2DFF27EE0FFF1FE054F74F8081C0 |
:1085B00091818D919C918734910564F0EE2DFF2778 |
:1085C000EE0FFF1FE054F74F8081918187349105B2 |
:1085D0000CF022E0EF2DFF27EE0FFF1FE054F74FC6 |
:1085E000808191818634910564F4EE2DFF27EE0F92 |
:1085F000FF1FE054F74F80819181873491050CF083 |
:1086000023E0EF2DFF27EE0FFF1FE054F74F80818F |
:1086100091818A5B9F4F64F4EE2DFF27EE0FFF1FC1 |
:10862000E054F74F80819181873491050CF024E06C |
:10863000EF2DFF27EE0FFF1FE054F74F8081918150 |
:108640008A5B9F4F64F4EE2DFF27EE0FFF1FE0546F |
:10865000F74F80819181863491050CF425E0822FBB |
:108660000E94F503F090F308EF2DFF27EE0FFF1F98 |
:10867000E054F74F808191810190F081E02DF7FF68 |
:1086800002C00C94C45A7E9714F00C94FA5980914D |
:10869000F208E82FFF27EE0FFF1FE054F74F80810D |
:1086A00091818A5B9F4F14F00C94FA5981E080937A |
:1086B0008F0788EE93E0909318048093170430910D |
:1086C000F408E32FFF27EE0FFF1FE054F74F8081E0 |
:1086D00091818B5A9F4F0CF092CCD090F508ED2DE4 |
:1086E000FF27EE0FFF1FE054F74F80819181855BDC |
:1086F0009F4F14F00C943A5780918F058F5F893CFF |
:1087000010F40C94355888EC80938F0581E090E04C |
:108710009093C4048093C30481E08093E904109291 |
:1087200078051092790510927A0510927B051092C7 |
:108730000E0510920F05109210051092110510925F |
:108740000A0510920B0510920C0510920D058091F0 |
:108750000809E82EFF24002711278091A409909191 |
:10876000A5099C01442737FD4095542FC801B70146 |
:108770000E947863DC01CB0180931E0590931F0556 |
:10878000A0932005B09321058091C0099091C10963 |
:108790009C01442737FD4095542FC801B7010E9422 |
:1087A0007863DC01CB018093160590931705A093A5 |
:1087B0001805B093190580913E0590913F05A09151 |
:1087C0004005B091410580931A0590931B05A09335 |
:1087D0001C05B0931D058091360590913705A09139 |
:1087E0003805B09139058093120590931305A09335 |
:1087F0001405B09315051092700510927105109232 |
:1088000072051092730510927405109275051092FE |
:108810007605109277058091C20488608093C20427 |
:108820000C943C5780911203909113038F5F9F4FDC |
:1088300009F08FCB88E99AE390931804809317048A |
:1088400080E09CE0909313038093120382CBC0904E |
:10885000FA08CBAE0091DB042F960FAF2F970023C1 |
:1088600021F48091DC04882369F080911F09992705 |
:1088700028A139A18217930714F499A388A381E052 |
:108880008093FE048091C20484FF1EC71092ED0401 |
:108890001092EC041092F1041092F0041092EF0484 |
:1088A0001092EE049AE59093BA0988E780938709BD |
:1088B0009093600926968FAF269780937709109240 |
:1088C000DB041092DC042F961FAE2F9720917A09BB |
:1088D00030917B0940917C0950917D0960913E0562 |
:1088E00070913F0580914005909141052E966CAFA7 |
:1088F0007DAF8EAF9FAF2E97260F371F481F591F92 |
:108900008091810990918209A0918309B091840995 |
:10891000A0903605B0903705C0903805D090390545 |
:10892000ACAEBDAECEAEDFAE8A0D9B1DAC1DBD1D87 |
:10893000C0906F09D0907009E0907109F0907209B1 |
:108940006C96CCAEDDAEEEAEFFAE6C97E0903A0525 |
:10895000F0903B0500913C0510913D052A96ECAE48 |
:10896000FDAE0EAF1FAF2A976C96ACACBDACCEACD3 |
:10897000DFAC6C97AE0CBF1CC01ED11E6C96ACAEAB |
:10898000BDAECEAEDFAE6C97C0906109D0906209EB |
:10899000E0906309F09064096896CCAEDDAEEEAE6F |
:1089A000FFAE6897E0903205F090330500913405F2 |
:1089B00010913505EFAAF8AE09AF1AAF6896ACACC6 |
:1089C000BDACCEACDFAC6897AE0CBF1CC01ED11ED8 |
:1089D0006896ACAEBDAECEAEDFAE6897B090DC04AC |
:1089E0002596BFAE2597BB2009F005C62F960FAD83 |
:1089F0002F97002309F0FFC5809381099093820986 |
:108A0000A0938309B093840920937A0930937B095A |
:108A100040937C0950937D0980917A0890917B085E |
:108A2000815092400CF0A4C48091E904882309F09D |
:108A30009FC480912A0490912B048F3F910509F0E7 |
:108A400008F4A7C52596BFAD2597BB2309F065C7D8 |
:108A50002F96EFAD2F97EE2309F05FC7F091FE043C |
:108A60002496FFAF2497FF2309F057C7A090280949 |
:108A70002196AFAE2197AA2009F44FC76C96CCACD3 |
:108A8000DDACEEACFFAC6C97C0926F09D092700970 |
:108A9000E0927109F09272096896ECACFDAC0EADF3 |
:108AA0001FAD6897E0926109F09262090093630933 |
:108AB0001093640980917A0990917B09A0917C09B7 |
:108AC000B0917D09B7FF02C00C94BE5A292E3A2EF0 |
:108AD0004B2E552447FC5A9420927A0930927B09F8 |
:108AE00040927C0950927D09809181099091820980 |
:108AF000A0918309B0918409B7FF02C00C94B25AC7 |
:108B0000892F9A2FAB2FBB27A7FDBA958FA398A7C4 |
:108B1000A9A7BAA78093810990938209A09383099A |
:108B2000B093840980910809E82EFF2400271127BB |
:108B300020912E0530912F0540913005509131053F |
:108B4000C801B7010E94786397FF02C00C94AC5A29 |
:108B5000672E782E892E992487FC9A9420912A05D5 |
:108B600030912B0540912C0550912D05C801B7017E |
:108B70000E94786397FF02C00C94A65AA72EB82EC5 |
:108B8000C92EDD24C7FCDA94D201C10186199709E8 |
:108B9000A809B90920912709E22EFF2400271127EF |
:108BA000BC01CD01A80197010E94EC6339014A0183 |
:108BB00064962CAF3DAF4EAF5FAF64978FA198A581 |
:108BC000A9A5BAA58A199B09AC09BD09BC01CD01AB |
:108BD000A80197010E94EC63D401C30197FE02C073 |
:108BE0000C94A05A892F9A2FAB2FBB27A7FDBA95BB |
:108BF000BC01DA01C90157FF02C00C94B85A892F91 |
:108C00009A2FAB2FBB27A7FDBA952C018091C704E3 |
:108C10009091C80481349105D4F48091C504909159 |
:108C2000C604813491059CF48091F508E82FFF2754 |
:108C3000EE0FFF1FE054F74F808191810190F0818A |
:108C4000E02DF7FF02C00C94065B7A9734F0809118 |
:108C5000250A8F3F11F40C94305A2A96ECACFDACE7 |
:108C60000EAD1FAD2A972E962CAD3DAD4EAD5FAD2E |
:108C70002E97E21AF30A040B150BE0927C05F09292 |
:108C80007D0500937E0510937F058FA998ADA9AD52 |
:108C9000BAADACACBDACCEACDFAC8A199B09AC09AB |
:108CA000BD098BA79CA7ADA7BEA780938005909315 |
:108CB0008105A0938205B0938305E0928405F0922C |
:108CC000850500938605109387058093880590930A |
:108CD0008905A0938A05B0938B0580911A05909120 |
:108CE0001B05A0911C05B0911D058E199F09A00BB5 |
:108CF000B10B80931A0590931B05A0931C05B093AC |
:108D00001D058091120590911305A0911405B09155 |
:108D100015052BA53CA54DA55EA5821B930BA40BA9 |
:108D2000B50B8093120590931305A0931405B0938F |
:108D3000150521963FAD2197332371F12091FC0455 |
:108D40003091FD042138310594F0809152059091C5 |
:108D500053050196909353058093520580918509A0 |
:108D600090918609019690938609809385092058F1 |
:108D70003F4F94F480915205909153050197909341 |
:108D8000530580935205809185099091860901973A |
:108D900090938609809385091092FD041092FC043B |
:108DA00081E090E0A2969FAF8EAFA297D801C70155 |
:108DB00017FF02C00C94925A81509240A040B040DC |
:108DC00034F024E030E0A2963FAF2EAFA29780911E |
:108DD000A7059091A805A091A905B091AA05A0901A |
:108DE0007A09B0907B09C0907C09D0907D098A19DE |
:108DF0009B09AC09BD09815E914BAF4FBF4F8F53AB |
:108E00009C49A040B04010F40C94C8593090260AF8 |
:108E100048E1431514F00C94465AA2968EAD9FADCE |
:108E2000A2979093A2058093A105B1E0EB16B0E163 |
:108E3000FB06B0E00B07B0E01B0714F40C94F659E6 |
:108E40008091A305882311F40C949B5A7093DE043F |
:108E50006093DD04D801C70117FF02C00C945B5B6F |
:108E60009C01AD01B7FF02C00C94555BB9E055956C |
:108E7000479537952795BA95D1F78091A10590919F |
:108E8000A205820F931F9093A2058093A105A801CC |
:108E9000970117FF02C00C94FC5A39014A01A3E064 |
:108EA0009594879477946794AA95D1F764966CAE5D |
:108EB0007DAE8EAE9FAE6497E9E86E16E3E17E0666 |
:108EC000E0E08E06E0E09E0664F0F8E86F2EF3E145 |
:108ED0007F2E812C912C64966CAE7DAE8EAE9FAEB3 |
:108EE0006497D401C30197FE02C00C94F65A892FEF |
:108EF0009A2FAB2FBB27A7FDBA95680F791FF0E01B |
:108F0000EF16F0EFFF06FFEF0F07FFEF1F0714F05C |
:108F10000C94E4598091A405882311F40C94715A9F |
:108F20007093DE046093DD04D801C70117FF02C00F |
:108F30000C942E5B9C01AD01B7FF02C00C94285B22 |
:108F400069E055954795379527956A95D1F78091B2 |
:108F5000A1059091A205820F931F9093A205809383 |
:108F6000A105A801970117FF02C00C94225B3901EB |
:108F70004A0143E095948794779467944A95D1F792 |
:108F800028E762162CEE72062FEF82062FEF92066C |
:108F900044F438E7632E3CEE732E3FEF832E3FEF11 |
:108FA000932E609295057092960580929705909207 |
:108FB0009805D401C30197FE02C00C941C5B892F55 |
:108FC0009A2FAB2FBB27A7FDBA956091DD04709156 |
:108FD000DE04680F791F21965FAD2197252F332777 |
:108FE0008091A1059091A2052817390724F43093A8 |
:108FF000A2052093A105332079F0232D332727FDE7 |
:1090000030958091A1059091A2052817390724F485 |
:109010003093A2052093A10581E8E816F10401052B |
:10902000110574F080915605909157052091A10586 |
:109030003091A205820F931F909357058093560598 |
:1090400090E8E9169FEFF9069FEF09079FEF1907D0 |
:1090500074F480915605909157052091A1053091A7 |
:10906000A205821B930B9093570580935605A1E0B0 |
:10907000B0E0A296BFAFAEAFA2978BA59CA5ADA561 |
:10908000BEA5B7FF02C00C94895A81509240A040FF |
:10909000B04034F004E010E0A2961FAF0EAFA297EC |
:1090A00020E030E040E050E06090AB057090AC050F |
:1090B0008090AD059090AE05E0908109F090820916 |
:1090C00000918309109184096E187F08800A910A23 |
:1090D0008FE19EE4A0E0B0E0680E791E8A1E9B1E20 |
:1090E0009FE369169CE9790690E0890690E099066D |
:1090F00028F0A8E1A31514F00C941C5AA296EEAD2A |
:10910000FFADA297F093A205E093A1058BA59CA5C6 |
:10911000ADA5BEA581509041A040B04014F40C9480 |
:10912000D8598091A505882311F40C94645A509263 |
:10913000E0044092DF048BA59CA5ADA5BEA5B7FFBA |
:1091400002C00C94ED5AB7FF02C00C94E75AF9E044 |
:10915000B595A79597958795FA95D1F7A2962EADD7 |
:109160003FADA297280F391F3093A2052093A10588 |
:109170002BA53CA54DA55EA557FF02C00C94E15A56 |
:10918000E3E05595479537952795EA95D1F7293826 |
:1091900083E1380780E0480780E0580714F40C9416 |
:1091A000D75A88E893E1A0E0B0E0809399059093C6 |
:1091B0009A05A0939B05B0939C0580919905909189 |
:1091C0009A05A0919B05B0919C05B7FF02C00C9435 |
:1091D0004C5B892F9A2FAB2FBB27A7FDBA954090E8 |
:1091E000DF045090E004480E591E2BA53CA54DA568 |
:1091F0005EA5203080EF38078FEF48078FEF5807C4 |
:1092000014F00C94D4598091A605882311F40C9481 |
:10921000845A5092E0044092DF04DA01C90157FFFA |
:1092200002C00C943D5B9C01AD01B7FF02C00C94E1 |
:10923000165BB9E05595479537952795BA95D1F7BF |
:109240008091A1059091A205820F931F9093A20592 |
:109250008093A1052BA53CA54DA55EA557FF02C097 |
:109260000C94105BA3E05595479537952795AA95E3 |
:10927000D1F728379CEE39079FEF49079FEF590731 |
:1092800014F00C94CB5A88E79CEEAFEFBFEF8093BD |
:10929000990590939A05A0939B05B0939C058091A6 |
:1092A000990590919A05A0919B05B0919C05B7FFF7 |
:1092B00002C00C94375B892F9A2FAB2FBB27A7FDD9 |
:1092C000BA954090DF045090E004480E591E219654 |
:1092D000BFAD21972B2F33278091A1059091A20537 |
:1092E0002817390724F43093A2052093A1053320D1 |
:1092F00079F0232D332727FD30958091A10590919A |
:10930000A2052817390724F43093A2052093A1055C |
:109310002BA53CA54DA55EA521383105410551057C |
:1093200074F080915405909155052091A1053091DC |
:10933000A205820F931F90935505809354058BA52A |
:109340009CA5ADA5BEA580589F4FAF4FBF4F0CF059 |
:10935000FCC280915405909155052091A105309152 |
:10936000A205821B930B9093550580935405EDC283 |
:109370009090250A6FEF961611F40C946856809120 |
:109380000809A82EBB24CC24DD242E966CAD7DAD1F |
:109390008EAD9FAD2E97A60195010E94EC637901D9 |
:1093A0008A018091A4099091A509AA2797FDA0950B |
:1093B000BA2FE81AF90A0A0B1B0B6CAD7DAD8EAD06 |
:1093C0009FADA60195010E94EC6359016A0180914D |
:1093D000C0099091C109AA2797FDA095BA2FA81A94 |
:1093E000B90ACA0ADB0A292C332427FC3094432CFF |
:1093F000532CC201B101A80197010E94786397FD27 |
:1094000087C23B014C01F9E0959487947794679467 |
:10941000FA95D1F7C201B101A60195010E947863C6 |
:1094200097FF02C00C94E1575B016C01E9E0D59411 |
:10943000C794B794A794EA95D1F78091C704909107 |
:10944000C804813491053CF48091C5049091C60410 |
:1094500081349105C4F0D401C30197FE02C00C947D |
:10946000CE583C014D019594879477946794D6012A |
:10947000C501D7FE02C00C94C9585C016D01D5949A |
:10948000C794B794A7948091F508E82FFF27EE0FB3 |
:10949000FF1FE054F74F808191810190F081E02D12 |
:1094A000F7FF02C00C94E7577A97A4F0C401B30108 |
:1094B00023E030E040E050E00E94EC6339014A01D3 |
:1094C000C601B50123E030E040E050E00E94EC63CB |
:1094D00059016A018091270A282F332727FD3095EB |
:1094E000432F532F261537054805590514F4390124 |
:1094F0004A01992787FD9095909581959F4FAA27BE |
:1095000097FDA095BA2F681679068A069B0614F473 |
:109510003C014D012A153B054C055D0514F459012C |
:109520006A01A816B906CA06DB0614F45C016D01CF |
:1095300080911E0590911F05A0912005B0912105F5 |
:1095400086199709A809B90980931E0590931F05EC |
:10955000A0932005B09321058091160590911705E1 |
:10956000A0911805B09119058A199B09AC09BD098C |
:109570008093160590931705A0931805B0931905CD |
:1095800080912A0490912B048F3F910511F008F0EF |
:1095900059CA6C96ACACBDACCEACDFAC6C97A092AB |
:1095A0006F09B0927009C0927109D09272096896E1 |
:1095B000CCACDDACEEACFFAC6897C0926109D09248 |
:1095C0006209E0926309F0926409D090870960967D |
:1095D000DFAE60970091FE0424960FAF24970091B0 |
:1095E000EC041091ED04C80117FF13C288279927D6 |
:1095F000801B910B0EC210922E0510922F05109217 |
:1096000030051092310510922A0510922B05109208 |
:109610002C0510922D0510927A0910927B09109258 |
:109620007C0910927D091092810910928209109292 |
:1096300083091092840968961CAE1DAE1EAE1FAE43 |
:10964000689720E030E040E050E06C962CAF3DAFF2 |
:109650004EAF5FAF6C9780911E0590911F05A09152 |
:109660002005B091210580931A0590931B05A093C6 |
:109670001C05B0931D058091160590911705A091CA |
:109680001805B09119058093120590931305A093C6 |
:109690001405B093150510922B0410922A04109211 |
:1096A000DE041092DD041092E0041092DF0425968F |
:1096B0003FAD2597332309F0BCC92F964FAD2F97A7 |
:1096C000442309F0B6C9A8C93091770926963FAF5F |
:1096D0002697FCC83FEF8E3F93070CF0E9C0029637 |
:1096E0000C94B540B901615070404091EE04509126 |
:1096F000EF04CA0157FF02C00C944141959587952C |
:109700009595879597FF02C00C944A412091C50416 |
:109710003091C6042817390714F00C945641CA0139 |
:1097200057FF02C00C948E5797FF02C00C949357BA |
:109730009C0135952795359527952536310514F4E7 |
:109740000C94584124E630E08091C20484FF02C0AA |
:109750000C945E413093C6042093C5047093C804F2 |
:109760006093C7040C946641609387094091F004AC |
:109770005091F104CA0157FD02C00C9412410396A6 |
:10978000959587959595879597FD02C00C941A41FC |
:10979000909581959F4F0C941A411092E9040C9476 |
:1097A000FF3F1092E9048091C2048F7E8093C2042F |
:1097B0002A3011F00C94BA3F289A0C94BF3F809144 |
:1097C0009407992787FD90954D2D5527849FD001AB |
:1097D000859FB00D949FB00D1124CD012091F00410 |
:1097E0003091F104820F931F9093F1048093F00461 |
:1097F00080919507992787FD9095849FF001859F1B |
:10980000F00D949FF00D1124CF012091EE043091C2 |
:10981000EF04820F931F9093EF048093EE048091E6 |
:109820009607992787FD90952091EC043091ED04DF |
:10983000820F931F9093ED048093EC04809198071E |
:10984000282F332727FD30958091FF089927289FDF |
:109850005001299FB00C389FB00C1124B0928B039B |
:10986000A0928A038091970799278017910714F097 |
:109870000C94F4409093EB048093EA040C94F84029 |
:10988000982F0C941D4281E08093D8040C941242CE |
:1098900081E08093D704582F0C94E54181E08093B8 |
:1098A000D9040C94BB4181E08093DA040C948E417E |
:1098B0001092ED041092EC040C94B9409093DB04E8 |
:1098C0008093DC040C942A448091E904882311F4E9 |
:1098D0000C944B428091C3049091C404FFEF8F3FDE |
:1098E0009F0711F40C944F4201969093C404809307 |
:1098F000C3040C944F421092D9040C94BB411092B3 |
:10990000D8040C9412421092D70450E00C94E54114 |
:1099100061507E4F8F4F9F4F74CD60E070E02B0100 |
:109920001092FE0424961FAE2497A0907A09B0905E |
:109930007B09C0907C09D0907D09E0908109F0906E |
:1099400082090091830910918409F091870960963A |
:10995000FFAF6097FF2311F00C94F8551092E004CC |
:109960001092DF041092DE041092DD04A092A7058D |
:10997000B092A805C092A905D092AA05E092AB05C5 |
:10998000F092AC050093AD051093AE0510922E0534 |
:1099900010922F05109230051092310510922A0571 |
:1099A00010922B0510922C0510922D051092260571 |
:1099B00010922705109228051092290510927A0915 |
:1099C00010927B0910927C0910927D0910928109F6 |
:1099D00010928209109283091092840910926F09E3 |
:1099E0001092700910927109109272091092610917 |
:1099F00010926209109263091092640910922B046C |
:109A000010922A040091EC041091ED04C80117FD96 |
:109A1000EDCD409764F028EE33E03093A903209316 |
:109A2000A8033BAD34FD03C081E080939405B09062 |
:109A30000509CB2CDD24EE24FF24B801882777FD0F |
:109A40008095982F980117FF02C00C940B5644275D |
:109A500037FD4095542F0E9478639B01AC01C701EC |
:109A6000B6010E94786397FF02C00C940556E9E0A6 |
:109A70009595879577956795EA95D1F79B018B2DFD |
:109A80009927809FA001819F500D909F500D112418 |
:109A9000CA0157FF02C00C9402569595879595957B |
:109AA0008795280F391FC901AA2797FDA095BA2FBE |
:109AB0008093780590937905A0937A05B0937B0500 |
:109AC00020910E0530910F05409110055091110520 |
:109AD000281B390B4A0B5B0B213563EC360760E022 |
:109AE000460760E0560714F40C947E5580E593EC2D |
:109AF000A0E0B0E080930E0590930F05A0931005B1 |
:109B0000B093110580910E0590910F05A09110055D |
:109B1000B0911105805B9C43AF4FBF4F64F480EB65 |
:109B20009CE3AFEFBFEF80930E0590930F05A093DA |
:109B30001005B0931105A0900405B0900505A1147F |
:109B4000B10409F401C78BAD83FFFEC62E968CAD20 |
:109B50009DADAEADBFAD2E97B7FF02C00C94A6571A |
:109B600059E0B595A795979587955A95D1F76C01CA |
:109B700097FF02C00C94B2578CAD9DADAEADBFAD9A |
:109B8000B7FF02C00C94AC5749E0B595A7959795DF |
:109B900087954A95D1F7BC0197FF02C00C94C55731 |
:109BA000C616D7060CF46B01B601D7FE02C00C94A2 |
:109BB000C1571B01359427943594279435942794E5 |
:109BC0000894211C311CACE1B2E0AA0EBB1E750149 |
:109BD0000027F7FC0095102FE4EEFDEFAE0EBF1E40 |
:109BE0004090BC095090BD096090BE097090BF09BB |
:109BF0002091860330918703409188035091890317 |
:109C00002BAB3CAB4DAB5EABC301B2010E94EC632E |
:109C1000E21AF30A040B150BC801B70128E631E07C |
:109C200040E050E00E94EC63DC01CB018C01045B5E |
:109C300010408090B5099090B609C40197FE02C00B |
:109C40000C94BB578138910514F000E010E040916E |
:109C5000A8035091A90323965FAF4EAF2397452BDE |
:109C6000A1F459E1C516D10484F48091FC049091CB |
:109C7000FD04800F911F9093FD048093FC0480915C |
:109C80009405882311F00C941658C801880F991F69 |
:109C9000880F991F880F991FB1010E94B7639B011C |
:109CA000442737FD4095542F240D351D461D571D63 |
:109CB0002093BC093093BD094093BE095093BF095E |
:109CC000F09099036F2D77276C9DC0016D9D900DCD |
:109CD0007C9D900D112497FF02C00C94B8576C0125 |
:109CE000D594C794D594C794D594C794D594C79464 |
:109CF000D594C7946C197D096B0177FF02C00C9451 |
:109D00009E5723966EAD7FAD2397672B11F00C9471 |
:109D1000CA570091C7041091C8048091C50490915E |
:109D2000C604080F191F17FF02C00C94A0591595FF |
:109D300007951595079515950795005C1F4FCA0166 |
:109D4000B9012BA93CA94DA95EA90E94EC63DA01D7 |
:109D5000C9012091020530910305442737FD409544 |
:109D6000542F821B930BA40BB50B845E9D4FAF4FFA |
:109D7000BF4FBC01CD0128E631E040E050E00E9439 |
:109D8000EC63DC01CB01845B90408C9DD0018D9D08 |
:109D9000B00D9C9DB00D1124CD01B8010E94B76398 |
:109DA00083E0F89E60011124C616D70614F00C94C7 |
:109DB000D557B601CB01AA2797FDA095BA2F2091C0 |
:109DC0000E0530910F054091100550911105820F3D |
:109DD000931FA41FB51F80930E0590930F05A093AA |
:109DE0001005B09311058091930581508F3F09F4C0 |
:109DF000B4C5809393052496FFAD2497FF2381F08B |
:109E000010927405109275051092760510927705E0 |
:109E100010927005109271051092720510927305E0 |
:109E20002596AFAC2597AA2009F0A1C66096BFACD5 |
:109E300060978B2D9927AA27BB27BC01CD012E96B1 |
:109E40002CAD3DAD4EAD5FAD2E970E947863DC0129 |
:109E5000CB01BC01CD0128EF3AE240E050E00E9486 |
:109E6000EC633BA32AA32F960FAD2F97002309F095 |
:109E70007BC660961FAD6097812F9927AA27BB27C5 |
:109E8000BC01CD012CAD3DAD4EAD5FAD0E94786300 |
:109E9000DC01CB01BC01CD0128EF3AE240E050E00B |
:109EA0000E94EC633DA32CA300915B0910915C0917 |
:109EB000093C11050CF450C608EC10E010935C0945 |
:109EC00000935B09E0906609F090670939ECE316AE |
:109ED000F1040CF436C6A8ECEA2EF12CF0926709D6 |
:109EE000E09266098091680990916909AA2797FD17 |
:109EF000A095BA2F2091BA09A22EBB24CC24DD2430 |
:109F0000BC01CD01A60195010E9478639B01AC01C3 |
:109F1000C801AA2797FDA095BA2FE7E0880F991FDF |
:109F2000AA1FBB1FEA95D1F7280F391F4A1F5B1FD5 |
:109F300057FD84C676E055954795379527957A95D0 |
:109F4000D1F76AA07BA0620E731E2301809159098C |
:109F500090915A09AA2797FDA095BA2FBC01CD016F |
:109F6000A60195010E9478639B01AC01C701AA2755 |
:109F700097FDA095BA2F67E0880F991FAA1FBB1FF6 |
:109F80006A95D1F7280F391F4A1F5B1F57FD51C62D |
:109F900096E055954795379527959A95D1F72CA03A |
:109FA0003DA0220E331E6101880C991CC401AA2712 |
:109FB00097FDA095BA2F2091600933274427552794 |
:109FC000BC01CD010E9478637B018C0197FD3BC6EB |
:109FD00086E015950795F794E7948A95D1F726962C |
:109FE0007FAD2697872F9927AA27BB272091220587 |
:109FF000309123054091240550912505BC01CD01E8 |
:10A000000E947863DC01CB01BC01CD0120EF35E576 |
:10A0100040E050E00E94EC634701820E931EC401B1 |
:10A02000A1E06A16A0E47A0624F0612C10E4712EF7 |
:10A030002301B0E06B16B0EC7B060CF09BC5612CE5 |
:10A04000B0EC7B2E7092690960926809E1E02E16EF |
:10A05000E0E43E0624F0212CA0E43A2E6101F0E079 |
:10A060002F16F0EC3F060CF08FC5212CF0EC3F2EA4 |
:10A0700030925A092092590901E0801600E49006B6 |
:10A0800024F0812CE0E49E2EC40110E0811610EC37 |
:10A0900091060CF074C5812C70EC972E9092B60945 |
:10A0A0008092B509809160048823C1F08091C30437 |
:10A0B0009091C4040297C09788F428A139A1121680 |
:10A0C000130664F481E090E09093C4048093C30489 |
:10A0D00080916D09482F552759A348A3809100010D |
:10A0E000482F552780912703909128034817590737 |
:10A0F00094F4209127033091280368A179A1469F09 |
:10A10000C001479F900D569F900D1124B9010E94E8 |
:10A11000B76379A368A388A199A1880F991F880FB5 |
:10A12000991F99A388A3ABAD8A2F992780FFABC154 |
:10A1300081FF3AC580919C03823308F0ADC58091C0 |
:10A14000C70381508F3F09F450C78093C7038091A4 |
:10A15000C20484FF08C01092E1041092E20410923D |
:10A16000E3041092E404C090E504D090E604760184 |
:10A170000027F7FC0095102F2091E1043091E204B4 |
:10A180004091E3045091E4042E153F054007510728 |
:10A190000CF0FFC48091FF04882309F4FAC4E21A8A |
:10A1A000F30A040B150B80919B03282F33274427B8 |
:10A1B0005527C801B7010E94786397FF02C00C942D |
:10A1C0004C5954E095958795779567955A95D1F7B1 |
:10A1D000A8A0B9A0A61AB70A65018091C80381504A |
:10A1E0008F3F11F40C94E8588093C803E091C503A5 |
:10A1F000F091C603A090AF05B090B00538ECA3165F |
:10A20000B1043CF498ECA92EB12CB092B005A09208 |
:10A21000AF05F0936908E0936808B0926B08A092CC |
:10A220006A084090B1055090B20550926F08409274 |
:10A230006E0820912C0430912D0437FF02C00C943D |
:10A240004859359527953595279535952795293082 |
:10A2500031050CF443C628E030E0229FA001239F83 |
:10A26000500D329F500D11249A0157FF02C00C94DB |
:10A270008459359527953595279580912C04909193 |
:10A280002D04280F391F80919D039927AA27BB27EA |
:10A29000442737FD4095542FBC01CD010E947863BF |
:10A2A00097FF02C00C947B59B7E0959587957795F9 |
:10A2B0006795BA95D1F79B016F3F710509F00CF4D2 |
:10A2C000F8C52FEF30E0C21AD30AE0900605F090EF |
:10A2D0000705009108051091090517FF02C00C94AD |
:10A2E0007159A7E015950795F794E794AA95D1F7CA |
:10A2F00080919A03282F332744275527C801B70197 |
:10A300000E94786397FDE8C7F5E095958795779566 |
:10A310006795FA95D1F788279927861B970B909315 |
:10A320006508809364086F3F710509F00CF4CEC591 |
:10A330006FEF70E0C61AD70AAC14BD040CF0C0C5AC |
:10A340006501809198039927AA27BB272091290AA4 |
:10A35000332727FD3095432F532FBC01CD010E9499 |
:10A36000786397FDB4C7E7E09595879577956795EE |
:10A37000EA95D1F79B0188279927821B930B90932D |
:10A38000670880936608C21AD30A8E010F5F1F4FB9 |
:10A390008FE1E9ECF3E0D80101900D928A95E1F7A5 |
:10A3A0002E966CAD7DAD8EAD9FAD2E9797FD87C778 |
:10A3B0002CAD3DAD4EAD5FAD57FD79C7620F731F3C |
:10A3C000841F951F2CED35E040E050E00E94EC63C7 |
:10A3D0002E3131054105510524F02DE130E040E0FA |
:10A3E00050E0C601AA2797FDA095BA2F020F131FB0 |
:10A3F000F8012081332744275527BC01CD010E9455 |
:10A40000786397FD4FC757E0959587957795679542 |
:10A410005A95D1F76B0180919105909192059C011D |
:10A42000220F331F280F391F2C0D3D1D37FD69C723 |
:10A43000A9015595479555954795BA018091FB0817 |
:10A44000282F3327220F331F220F331F42175307A2 |
:10A450006CF4A8A0B9A0A216B3060CF093C6C8A0CD |
:10A46000D9A0C216D30614F4A601B601E8A0F9A03B |
:10A47000E416F5060CF0F7C4A701F0929205E092FD |
:10A48000910559A348A35090B409852D9927880FA9 |
:10A49000991F880F991F8055904028A139A18217D4 |
:10A4A000930714F499A388A348A159A15093450890 |
:10A4B000409344088091780590917905A0917A05A0 |
:10A4C000B0917B05880F991FAA1FBB1F880F991F8A |
:10A4D000AA1FBB1F8401081B190B413A51050CF43C |
:10A4E00023C3CA0157FDF2C395958795801791073D |
:10A4F0000CF48C01909581959F4F081719070CF467 |
:10A500008C01252D3327220F331F220F331FC90142 |
:10A5100068A179A1861B970B801791070CF48C0119 |
:10A5200068A179A1621B730B061717070CF48B0146 |
:10A530008091F0049091F1047301E81AF90AF09205 |
:10A540007909E092780960967FAD6097772309F4E6 |
:10A55000E5C2AAA1BBA1A81BB90BFD01CF01AA2787 |
:10A5600097FDA095BA2F209170053091710540910B |
:10A57000720550917305820F931FA41FB51F80931E |
:10A58000700590937105A0937205B0937305609167 |
:10A59000700570917105809172059091730561301D |
:10A5A000FAEF7F07F0E08F07F0E09F0774F080E09C |
:10A5B0009AEFA0E0B0E08093700590937105A093AE |
:10A5C0007205B0937305BC01CD01603026E07207BF |
:10A5D0002FEF82072FEF920774F480E096E0AFEF41 |
:10A5E000BFEF8093700590937105A0937205B093AF |
:10A5F0007305BC01CD01C0909E03D0909F039601CE |
:10A60000442737FD4095542F0E94EC635701A20E5A |
:10A61000B31E90908C03692D77278827992798017E |
:10A6200017FD1AC337FD02C33595279548A159A1D7 |
:10A63000240F351F442737FD4095542F0E9478631F |
:10A6400097FDEFC256E095958795779567955A9552 |
:10A65000D1F79B016A157B050CF45B016627772710 |
:10A66000621B730BA616B7060CF45B018091EE0417 |
:10A670009091EF047101E81AF90AF0925809E092FA |
:10A68000570960965FAD6097552309F441C26CA1EC |
:10A690007DA1681B790BCB01AA2797FDA095BA2F46 |
:10A6A000209174053091750540917605509177059C |
:10A6B000820F931FA41FB51F809374059093750597 |
:10A6C000A0937605B0937705609174057091750538 |
:10A6D00080917605909177056130AAEF7A07A0E026 |
:10A6E0008A07A0E09A0774F080E09AEFA0E0B0E05B |
:10A6F0008093740590937505A0937605B0937705C4 |
:10A70000BC01CD016030B6E07B07BFEF8B07BFEF28 |
:10A710009B0774F480E096E0AFEFBFEF8093740581 |
:10A7200090937505A0937605B0937705BC01CD0194 |
:10A730009601442737FD4095542F0E94EC63670132 |
:10A74000C20ED31E692D772788279927980117FDF8 |
:10A7500088C237FD8CC235952795E8A1F9A12E0F47 |
:10A760003F1F442737FD4095542F0E94786397FD83 |
:10A770008EC226E095958795779567952A95D1F7AE |
:10A780009B016C157D050CF46B0166277727621B16 |
:10A79000730BC616D7060CF46B019501442737FDE1 |
:10A7A0004095542F2FA738AB49AB5AAB80916D0918 |
:10A7B000482F55276E965FAF4EAF6E97652D772762 |
:10A7C000A0967FAF6EAFA097B7EAAB2EB9E0BB2ED5 |
:10A7D000A4EEEA2EA5E0FA2E1601442437FC40949C |
:10A7E000542C3801882477FC8094982C7BE07EA33D |
:10A7F000F8E8CF2EF9E0DF2EF701258512160CF0D0 |
:10A8000082C008A119A1C801AA2797FDA095BA2F57 |
:10A81000332727FD3095432F532FBC01CD010E94D4 |
:10A82000786397FD7CC0E6E0959587957795679569 |
:10A83000EA95D1F78B01F7018685282F332727FD6D |
:10A840003095432F532F6FA578A989A99AA90E9403 |
:10A85000786397FD74C056E09595879577956795D1 |
:10A860005A95D1F7060F171FF7018785282F332731 |
:10A8700027FD3095432F532FC201B1010E94786309 |
:10A8800097FD58C046E095958795779567954A95C9 |
:10A89000D1F7060F171FF7018089282F332727FDCF |
:10A8A0003095432F532FC401B3010E947863DC011C |
:10A8B000CB01B7FD3BC036E0B595A7959795879539 |
:10A8C0003A95D1F7F60160817181800F911F0E9446 |
:10A8D000902DD6018D939C9397FD26C08C011595E4 |
:10A8E0000795159507956E96EEADFFAD6E970E1711 |
:10A8F0001F0764F48F01D5010C93E6C6F701258587 |
:10A9000012160CF47ECFF5011082DEC6A0962EAD95 |
:10A910003FADA0972017310774F78901ECCF615C38 |
:10A920007F4F8F4F9F4F7FCF0396D8CFCF96A11DDC |
:10A93000B11DC1CF615C7F4F8F4F9F4FA3CF615C33 |
:10A940007F4F8F4F9F4F87CF8090B5099090B6096A |
:10A9500080919305815008F04CCA88E1809393055B |
:10A96000809108099927880F991F880F991F7C01EA |
:10A970000027F7FC0095102F2E966CAD7DAD8EADA7 |
:10A980009FAD2E97A80197010E94EC633093370882 |
:10A99000209336086CAD7DAD8EAD9FADA8019701BB |
:10A9A0000E94EC6330933908209338088091A40901 |
:10A9B0009091A50997FDB0C2959587959595879536 |
:10A9C00090933B0880933A088091C0099091C10907 |
:10A9D00097FDA0C2959587959595879590933D088D |
:10A9E00080933C0890923F0880923E088091E50455 |
:10A9F0009091E604A091E704B091E804BC01CD0178 |
:10AA000025E030E040E050E00E94EC6330934108E4 |
:10AA10002093400880917A0890917B089093430896 |
:10AA200080934208B0924708A0924608809127037D |
:10AA30009091280390934908809348088091F304EB |
:10AA4000992790934B0880934A088091BC09909174 |
:10AA5000BD09A091BE09B091BF0920918603309134 |
:10AA600087034091880350918903BC01CD010E9466 |
:10AA7000EC6330934D0820934C0880912C04909106 |
:10AA80002D0490935B0880935A0880918F07992733 |
:10AA900090935D0880935C08809113049091140456 |
:10AAA00090935F0880935E088091290A992787FD1B |
:10AAB000909590936308809362088091260A992765 |
:10AAC00087FD909590936D0880936C088091280A7B |
:10AAD000992790937108809370088091CB0590918D |
:10AAE000CC0590937308809372088091C90590916A |
:10AAF000CA0590937508809374087DC920930E054C |
:10AB000030930F0540931005509311050C94824D1E |
:10AB1000C701AA2797FDA095BA2FC2CDC701AA27C2 |
:10AB200097FDA095BA2F1FCD0135110514F000E552 |
:10AB300010E05FEF003B15070CF0E3CC00EB1FEFDC |
:10AB4000E0CC48E3E4164FEFF4060CF0CBC9F8E391 |
:10AB5000EF2EFFEFFF2EC2C92FEF083312070CF0C4 |
:10AB6000B1C908E31FEFAAC91DA21CA29DC91BA25F |
:10AB70001AA279C9509269094092680967CA9093EC |
:10AB8000B6098093B5098ECAD0925A09C092590964 |
:10AB900073CA08A119A11093C6030093C5031093AB |
:10ABA000B4050093B3056FCC20919C0380918A0378 |
:10ABB00090918B03820F911D2091FF083327829F74 |
:10ABC000F001839FF00D929FF00D1124CF01449767 |
:10ABD000AA2797FDA095BA2F8093E1049093E204F1 |
:10ABE000A093E304B093E40481E08093FF04AFCA30 |
:10ABF0005092E0044092DF047093DE046093DD0421 |
:10AC00000C94B64C03960C944D4D61507E4F8F4F73 |
:10AC10009F4F0C94374D22273327201B310B0C9468 |
:10AC2000274D615C7F4F8F4F9F4F0CCD2F5F3F4F64 |
:10AC3000FBCC215C3F4F4F4F5F4FAAC9215C3F4F78 |
:10AC40004F4F5F4F77C96FE370E080E090E0E60E12 |
:10AC5000F71E081F191FBCC922273327201B310BE1 |
:10AC6000E1CC22273327201B310B37FF74CD2F5F18 |
:10AC70003F4F35952795E8A1F9A12E0F3F1F442797 |
:10AC800037FD4095542F0E94786397FF72CD615C29 |
:10AC90007F4F8F4F9F4F6DCD81E08093FF0488ECF5 |
:10ACA00054CA8091C20482608093C2040C946A42A8 |
:10ACB0001092EB041092EA040C9400414D5F5F4F38 |
:10ACC0000C947D404D5F5F4F0C94334001960CCC4B |
:10ACD00080910809E82EFF24002711272E966CADDD |
:10ACE0007DAD8EAD9FAD2E97A80197010E94EC63BC |
:10ACF00039014A018091A4099091A509AA2797FDDD |
:10AD0000A095BA2F681A790A8A0A9B0A6CAD7DADA4 |
:10AD10008EAD9FADA80197010E94EC6359016A01B5 |
:10AD20008091C0099091C109AA2797FDA095BA2FDB |
:10AD3000A81AB90ACA0ADB0AD401C30197FC04C3E2 |
:10AD40003C014D0154E095948794779467945A950B |
:10AD5000D1F7D601C501D7FCFFC25C016D0144E00B |
:10AD6000D594C794B794A7944A95D1F78091C70416 |
:10AD70009091C804813491050CF42EC1C401B30133 |
:10AD800023E030E040E050E00E94EC6339014A01EA |
:10AD9000C601B50123E030E040E050E00E94EC63E2 |
:10ADA00059016A018091F508E82FFF27EE0FFF1F78 |
:10ADB000E054F74F808191810190F081E02DF7FD03 |
:10ADC000C7C27A97A4F0C401B30123E030E040E0A9 |
:10ADD00050E00E94EC6339014A01C601B50123E04D |
:10ADE00030E040E050E00E94EC6359016A0171E2FA |
:10ADF00067167104810491042CF030E2632E712CEB |
:10AE0000812C912C80EE68168FEF78068FEF8806E4 |
:10AE10008FEF980644F420EE622E2FEF722E2FEF64 |
:10AE2000822E2FEF922E91E2A916B104C104D10413 |
:10AE30002CF090E2A92EB12CC12CD12CA0EEAA1698 |
:10AE4000AFEFBA06AFEFCA06AFEFDA0614F00C9414 |
:10AE5000984A80EEA82E8FEFB82E8FEFC82E8FEF76 |
:10AE6000D82E0C94984A709392056093910559A33B |
:10AE700048A309CB10928F05ED2DFF27EE0FFF1F82 |
:10AE8000E054F74F808191818C3491050CF43EC0E1 |
:10AE9000809190058F5F893C08F477C11092E90496 |
:10AEA00088EC809390051092C4041092C3040C9413 |
:10AEB000FF3F61587F4F0CF006CA21E83FEF03CAFD |
:10AEC000C414D5040CF03DCA62013BCA8FEF61384F |
:10AED00078070CF02FCA61E87FEF2CCA1216130610 |
:10AEE0000CF4BBC9229FC001239F900D329F900D8F |
:10AEF000112497FD5AC3959587959595879520912F |
:10AF00002C0430912D04281B390BBDC910929005DB |
:10AF10000C94FF3F03965ECD03964ECD90958195A0 |
:10AF20009F4F0C94944B03960C94984B03960C945F |
:10AF30002C41909581959F4F0C94284184EF91E08E |
:10AF40009093A9038093A8030C94F34E81509E4FD5 |
:10AF5000AF4FBF4F0C94B04D81509E4FAF4FBF4F7E |
:10AF60000C94C44DD094C194D108D3940C94BC4D8E |
:10AF70004F960C946F4E88279927881999090C943D |
:10AF8000224E695F7F4F0C94D94D709561957F4F2C |
:10AF90000C94D04D2396EEADFFAD23973197F093EF |
:10AFA000A903E093A8030C94F34E882799278C19E2 |
:10AFB0009D096817790714F00C94DA4EBC010C94C3 |
:10AFC000DA4E61507E4F8F4F9F4F0C94144AF0958C |
:10AFD000E195FF4F0C94544A8091C5049091C604AA |
:10AFE000813491050CF4DECEC9CE80911D03909181 |
:10AFF0001E03895E934008F43BC187B5853F08F086 |
:10B0000037C180912E04815080932E049AE08902EA |
:10B010009001112480918408821B87BD8CE291E00D |
:10B0200090931804809317048AEF8FC888EC90E0FF |
:10B030009093180480931704C501AA2797FDA09543 |
:10B04000BA2FBC01CD012BA93CA94DA95EA90E9434 |
:10B0500078632B013C010E94EC633093030520933D |
:10B060000205109294050C94454E80938F0504CFF1 |
:10B0700080819181855B9F4F0CF086C180918E0508 |
:10B080008F5F80938E05893C10F40C9461432C30C3 |
:10B0900008F07FC22998A4E0B0E08FEF082E0E944C |
:10B0A00014641092E90410928E051092C404109258 |
:10B0B000C3040E94ED38A4E0B0E080914C0590916B |
:10B0C0004D0597FDE6C2892F990F990B082E0E9416 |
:10B0D0001464A5E0B0E080914C0590914D05082ED8 |
:10B0E0000E941464A6E0B0E080914A0590914B055F |
:10B0F00097FDCCC2892F990F990B082E0E941464DA |
:10B10000A7E0B0E080914A0590914B05082E0E947F |
:10B11000146408E010E08091440590914505A091E9 |
:10B120004605B0914705BC01CD010E94E162DC01FA |
:10B13000CB019C0197FDB6C2832F992787FD9A9575 |
:10B14000D801082E0E94146409E010E080914405A3 |
:10B1500090914505A0914605B0914705BC01CD01F0 |
:10B160000E94E162DC01CB01D801082E0E94146428 |
:10B170000E94300468E770E00E94A62D3091F40828 |
:10B180000C946143A901B9016AC9809390050C949C |
:10B19000FF3F0196A11DB11D0C943D4A0196A11DD2 |
:10B1A000B11D0C94314A81E080939405109278058A |
:10B1B0001092790510927A0510927B0510920E0577 |
:10B1C00010920F0510921005109211050C946A420E |
:10B1D00082E08093C8038091C5039091C6039C01CF |
:10B1E00022953295307F3227207F3227281B390B5A |
:10B1F0002A0D3B1D37FD65C1F901F595E795F595DC |
:10B20000E795F595E795F595E7958091B3059091CC |
:10B21000B405E8A0F9A0E81AF90AEE0DFF1D08A18F |
:10B2200019A11093B4050093B305EC15FD050CF0BE |
:10B23000A5C03196F093C603E093C50320910109A0 |
:10B24000222309F48DC03327CF01B9010E94B763CF |
:10B250005F01A60EB71EB092B005A092AF059F0188 |
:10B26000261B370B3093B2052093B1050C94FE508A |
:10B2700080911D0390911E038436910508F048C00B |
:10B2800087B58B3008F444C080912E048F5FBCCE0C |
:10B29000295F3F4F0C942151615F7F4F8F4F9F4F2C |
:10B2A0000C94E15061587F4F8F4F9F4FACC8509521 |
:10B2B0004095309521953F4F4F4F5F4F7FC89095F8 |
:10B2C0008095709561957F4F8F4F9F4F71C86158E2 |
:10B2D0007F4F8F4F9F4F47C8615E7F4F8F4F9F4F6C |
:10B2E00013C86FE770E080E090E0E60EF71E081FDD |
:10B2F000191F0C94715161587F4F8F4F9F4F0C94C1 |
:10B3000054512D5F3F4F94C82D5F3F4F0C943951DE |
:10B310008091E5049091E604A091E704B091E804DF |
:10B320004497A109B1098093E1049093E204A093AA |
:10B33000E304B093E4041092FF0481E00C94A55060 |
:10B34000095F1F4F0C94974E0F96A11DB11DF8CCAD |
:10B35000F095E195FF4F35CD0F96A11DB11DFDCCA8 |
:10B360002FEFA22E23E0B22EB092B005A092AF052F |
:10B370001092B2051092B1050C94FE5031975ACF3D |
:10B3800080938E050C94614340938E050C94614329 |
:10B39000A296AEADBFADA297B093A205A093A105B2 |
:10B3A0003090260A0C9415471092A6050C94674914 |
:10B3B0002093990530939A0540939B0550939C05E3 |
:10B3C0001092A5050C94F54864962CAD3DAD4EAD9C |
:10B3D0005FAD64972093950530939605409397054C |
:10B3E000509398051092A4050C94EB471092A30576 |
:10B3F0000C947F470E94300445E662EF78E00E949B |
:10B40000D8038091FA0880FF10C080911D039091AD |
:10B410001E03875B934038F480911D0390911E03B7 |
:10B420008E5E924010F40E94FB190E94ED3881E07C |
:10B4300080931504579A9CCE2093990530939A05D2 |
:10B4400040939B0550939C051092A2051092A10574 |
:10B45000A8EEB3E0B093A903A093A8030C946749A6 |
:10B460007093DE046093DD045092E0044092DF04A8 |
:10B47000CB0177FDC9C0BC0175956795C20157FC2A |
:10B48000C1C02C01559447940C942D4660929505AB |
:10B490007092960580929705909298051092A20559 |
:10B4A0001092A10548EE53E05093A9034093A803DE |
:10B4B0000C94EB47F090F3080C94C442299A0C9436 |
:10B4C0009842215F3F4F98CE2093990530939A057B |
:10B4D00040939B0550939C0581E08093A5050C94B7 |
:10B4E000F54864968CAD9DADAEADBFAD64978093CD |
:10B4F000950590939605A0939705B093980581E0E4 |
:10B500008093A4050C94EB4781E08093A6050C94EE |
:10B510006749B095A095909581959F4FAF4FBF4FCC |
:10B520000C94454888279927DC018E199F09A00BA8 |
:10B53000B10B0C94DC4681E08093A3050C947F470B |
:10B5400081509F4FAF4FBF4F0C94F24561507F4FDA |
:10B550008F4F9F4F0C94BE4561507F4F8F4F9F4F31 |
:10B560000C94A84581509F4FAF4FBF4F0C9480451E |
:10B5700081509F4FAF4FBF4F0C94FF4581509F4F5D |
:10B58000AF4FBF4F0C946645F095E195FF4F0C947B |
:10B590004343299A80CD2093990530939A0540938F |
:10B5A0009B0550939C050C944F490396A4CC209383 |
:10B5B000990530939A0540939B0550939C050C94F4 |
:10B5C000DD48295F3F4F4F4F5F4F0C94C04881507B |
:10B5D0009E4FAF4FBF4F0C94A748B095A095909544 |
:10B5E00081959F4FAF4FBF4F0C94A34881509F4F01 |
:10B5F000AF4FBF4F0C947747295F3F4F4F4F5F4F7F |
:10B600000C944D4701963DCF019635CFF095E195CD |
:10B61000FF4F0C942546F095E195FF4F0C94C042E6 |
:10B62000295F3F4F4F4F5F4F0C94324921503E4F9F |
:10B630004F4F5F4F0C94194981509F4FAF4FBF4FF1 |
:10B640000C94DF47295F3F4F4F4F5F4F0C94B74734 |
:10B6500021503E4F4F4F5F4F0C94A04788279927AA |
:10B66000DC018E199F09A00BB10B0C949A478150F5 |
:10B670009F4FAF4FBF4F0C945B49B095A0959095ED |
:10B6800081959F4FAF4FBF4F0C94134981509F4FEF |
:10B6900031CD81509F4F17CD81509F4FAF4FBF4F3E |
:10B6A0000C94E94821503F4F47CD21503E4F4F4F1A |
:10B6B0005F4F0C94364788279927DC018E199F0924 |
:10B6C000A00BB10B0C943047FEA1F150FEA302E099 |
:10B6D00010E0C00ED11E24E030E0E20EF31E08940C |
:10B6E000A11CB11CF7FF0AC9CF59DF4F0FB6F89460 |
:10B6F000DEBF0FBECDBFDF91CF911F910F91FF90A5 |
:10B70000EF90DF90CF90BF90AF909F908F907F9001 |
:10B710006F905F904F903F902F9008958091C1055A |
:10B720009091C205A091C305B091C4058093B9055D |
:10B730009093BA05A093BB05B093BC058091BD055D |
:10B740009091BE05A091BF05B091C0058093B5054D |
:10B750009093B605A093B705B093B80508951092DD |
:10B76000CC051092CB051092CA051092C905089518 |
:10B7700084B1806A84B93D9A82E58CBD1DBC459A2E |
:10B7800081E08093C6098AEA8093CA0983E880939E |
:10B79000CB098AE08093CC091092CE091092CD0992 |
:10B7A0001092D0091092CF091092280A1092EC0939 |
:10B7B0001092ED098BE48093EE0988E08093EF0905 |
:10B7C00089E08093F0090895EF92FF920F931F9301 |
:10B7D000F894809108099927880F991F880F991F5D |
:10B7E0007C010027F7FC0095102F80913E05909179 |
:10B7F0003F05A0914005B0914105BC01CD01A801D4 |
:10B8000097010E94EC633093CE092093CD0980917B |
:10B81000360590913705A0913805B0913905BC01E6 |
:10B82000CD01A80197010E94EC633093D0092093C9 |
:10B83000CF092091BC093091BD094091BE095091BA |
:10B84000BF09DA01C90173E0880F991FAA1FBB1F46 |
:10B850007A95D1F7820F931FA41FB51F820F931FF4 |
:10B86000A41FB51F20918603309187034091880360 |
:10B8700050918903BC01CD010E94EC633093D6093D |
:10B880002093D509E0914805F091490580917E0902 |
:10B8900090917F09BF010E94B763CB019B01220FEA |
:10B8A000331F220F331F280F391F280F391F37FD71 |
:10B8B00016C135952795359527953093D209209354 |
:10B8C000D1098091B8099091B909BF010E94B7636D |
:10B8D0009B01220F331F220F331F260F371F260F06 |
:10B8E000371F37FDF9C03595279535952795309346 |
:10B8F000D4092093D309109249051092480510925B |
:10B900007F0910927E091092B9091092B8098091AE |
:10B91000CC0999278C30910509F4B0C08D30910580 |
:10B920000CF06AC08A30910509F490C10B9709F4B4 |
:10B930000AC178948091EC09882309F496C020917B |
:10B94000F2093091F309C90181509E4F8F5F9340F6 |
:10B95000C8F44091F4095091F509CA0181509E4FF5 |
:10B960008F5F934078F48091FA0885FF0BC0309385 |
:10B97000CC052093CB055093CA054093C9058AEFA7 |
:10B980008093CE058091F8099091F90921E08936DC |
:10B9900092070CF041C19C0190930505809304052A |
:10B9A0008091020590910305281B390BC901845E23 |
:10B9B0009D4F68E671E00E94B763845B904090936E |
:10B9C0000105809300052091FC093091FD098091CB |
:10B9D0001704909118048217930740F480918F0701 |
:10B9E000882321F430931804209317048091F109DF |
:10B9F000873609F096C115C18E30910509F461C1F1 |
:10BA00008E3091050CF46EC00F9709F092CF8091A3 |
:10BA10001E098093DD09809146098093DE0980919B |
:10BA200092038093DF09809117098093E009809148 |
:10BA300018098093E109809119098093E2098091A6 |
:10BA400091038093E30980911B098093E40980911D |
:10BA50001C098093E50980911D098093E60978947B |
:10BA60008091EC09882309F06ACF1092CC051092DE |
:10BA7000CB051092CA051092C90553C180918F075A |
:10BA8000863018F010928F0785E08093DD09809151 |
:10BA9000E5049091E604A091E704B091E804BC01AC |
:10BAA000CD0125E030E040E050E00E94EC633093AF |
:10BAB000E0092093DF09809143098093DE0980919A |
:10BAC00039098093E10980913A098093E2098091D4 |
:10BAD0003B098093E3092DCF2D5F3F4F04CF2D5FAE |
:10BAE0003F4FE7CE809134098093DD09809135097D |
:10BAF0008093DE09809136098093DF0980913709B0 |
:10BB00008093E009809138098093E10980913C0994 |
:10BB10008093E20980913D098093E30980913E0979 |
:10BB20008093E409809141098093E50980913F0960 |
:10BB30008093E609809140098093E709809142094A |
:10BB40008093E809F6CE8091F408E82FFF27EE0FE6 |
:10BB5000FF1FE054F74F0190F081E02DE038F10530 |
:10BB60000CF0C4C02FEFE138F20714F4E1E8FFEF66 |
:10BB7000E093DD098091F508E82FFF27EE0FFF1F06 |
:10BB8000E054F74F0190F081E02DE038F1050CF41E |
:10BB9000C0C0EFE7F0E0E093DE098091F308E82F02 |
:10BBA000FF27EE0FFF1FE054F74F0190F081E02DCB |
:10BBB000E038F1050CF4A5C0EFE7F0E0E093DF0911 |
:10BBC0008091F208E82FFF27EE0FFF1FE054F74F98 |
:10BBD0000190F081E02DE038F1050CF48AC0EFE728 |
:10BBE000F0E0E093E0098091FA048093E10980910C |
:10BBF000F8048093E2098091F6048093E309809130 |
:10BC0000F4048093E4098091F3048093E509809122 |
:10BC1000F2048093E60923CF2091040530910505B5 |
:10BC2000BFCE8091FE098093250A8091FF09809301 |
:10BC3000270A8091000A8093260A8091010A809346 |
:10BC4000280A8091020A8093290A6BC08091D60449 |
:10BC50008093DD098091D5048093DE098091D4041E |
:10BC60008093DF098091D3048093E0098091D2040E |
:10BC70008093E1098091D1048093E2098091D004FE |
:10BC80008093E3098091CF048093E4098091C204FA |
:10BC90008093E5098091C204837F8093C2048091E0 |
:10BCA0002703909128038093E609809100018093F7 |
:10BCB000E709A2E0B0E00E940764802D8093E809C4 |
:10BCC00038CE8091ED098093DD098091EE09809353 |
:10BCD000DE098091EF098093DF098091F00980935C |
:10BCE000E009809102018093E10923CEEFE7F0E0C3 |
:10BCF0003FCF8FEFE138F8070CF073CFE1E8FFEFAB |
:10BD000070CF6FEFE138F6070CF058CFE1E8FFEFA6 |
:10BD100055CF4FEFE138F4070CF03DCFE1E8FFEFEE |
:10BD20003ACF1F910F91FF90EF9008958091C6092F |
:10BD3000882309F43BC045988AEC99E09093C809A0 |
:10BD40008093C7098091CD05E82FFF27E851FC4F6C |
:10BD5000982F9F5F80818093CC09973008F027C08F |
:10BD60009093CD051092C6090E94E45B81E0809318 |
:10BD7000C9090000000000000000000000000000F1 |
:10BD800000000000000000000000000000000000B3 |
:10BD900000000000000000000000000000000000A3 |
:10BDA00000008091CA098093E9098EBD0895109220 |
:10BDB000CD05D8CF2091C609222309F045C00DB486 |
:10BDC00007FE42C084E080931604459A3EB58091F8 |
:10BDD000CF0599278130910509F437C0823091054C |
:10BDE0000CF451C0029709F439C02091C9092032DE |
:10BDF00008F030C04598000000000000000000007E |
:10BE00000000000000000000000000000000000032 |
:10BE10000000000000000000000000000000000022 |
:10BE2000000000000000E091C709F091C809E20F8E |
:10BE3000F11D80818EBD8091E9099081890F8093E9 |
:10BE4000E9092F5F2093C9090895353551F12093F1 |
:10BE5000CF05CBCF81E08093C609F3CF8091EB096A |
:10BE6000E82FFF27E55FF54F30838F5F8093EB0965 |
:10BE70008A3100F18091D005381711F12093EC0937 |
:10BE80001092CF05B2CF892B09F0AFCF2093EB09E9 |
:10BE90003093D005313809F0A8CF81E08093CF05E9 |
:10BEA000A4CF8091D005830F8093D00582E080934A |
:10BEB000CF059BCF8091D005830F8093D00595CF80 |
:10BEC0008AE1EBE0FAE0A1EFB9E001900D928A95EA |
:10BED000E1F781E08093EC091092CF0586CF87B11E |
:10BEE0008C6087B9429843981092D20580E880937D |
:10BEF000F0031092D1058093EF0308958091D70548 |
:10BF000081508F3F19F08093D705089584E0809386 |
:10BF1000D7058091C20485FF2FC02091320920935C |
:10BF2000D805309133093093D90590912F099B3F63 |
:10BF300020F080918009873E40F48091450984FF7C |
:10BF400034C08091E904882381F527FD3EC04298E2 |
:10BF5000909131099B3F20F08091B309873E40F4D6 |
:10BF60008091450984FF13C08091E904882379F406 |
:10BF700037FD2FC0439808958091F30488236CF611 |
:10BF800020912E092093D80530913009CCCF9B3FCA |
:10BF900020F08091B3098A30D0F08091D105815092 |
:10BFA0008F3FC9F08093D10508959B3F20F0809189 |
:10BFB00080098A3040F08091D20581508F3FE1F0B6 |
:10BFC0008093D205C5CF27FDC2CF429AC1CF37FD9E |
:10BFD000D1CF439A08958091B30981508093D105C0 |
:10BFE0008091EF038130C9F086958093EF0383231E |
:10BFF00009F4C0CF439A08958091800981508093BD |
:10C00000D2058091F003813051F086958093F00342 |
:10C01000822309F49CCF429A9BCF80E8E6CF80E848 |
:10C02000F5CF8091C9008F778093C9008091C900B6 |
:10C030008F7B8093C9008091C9008F7D8093C90058 |
:10C040005A9A52981092CD0084E190E08093CC00EF |
:10C050008091C80082608093C80080E18093C9000D |
:10C060008091CA008F778093CA008091CA008F7B2D |
:10C070008093CA008091CA008F7D8093CA0080910E |
:10C08000CA008F7E8093CA008091CA00877F809308 |
:10C09000CA008091C9008B7F8093C9008091CA003B |
:10C0A00084608093CA008091CA0082608093CA0035 |
:10C0B0008091C80087FF0CC08091CE008091C8009D |
:10C0C000882334F48091CE008091C8008823A4F3A3 |
:10C0D0008091C90080688093C90008951F93CF9311 |
:10C0E000DF9380E197E20E948115EC0110E08091DE |
:10C0F000C9008F778093C9008091C9008F7E80939B |
:10C10000C9005A988EE297E09F938F931F930E94E5 |
:10C1100009120F900F900F90CE010E948A1588236C |
:10C1200009F066C04A9BF8CF8AE590E00E9481152D |
:10C13000EC0184E697E09F938F931F920E9409126F |
:10C14000529A0F900F900F90CE010E948A1588236B |
:10C15000D9F383E690E05A9A019797FFFCCF8FE8D6 |
:10C1600091E05A98019797FFFCCF89E090E05A9AA6 |
:10C17000019797FFFCCF89E090E05A98019797FFCD |
:10C18000FCCF8FE891E05A9A019797FFFCCF8FE898 |
:10C1900091E05A98019797FFFCCF89E090E05A9A76 |
:10C1A000019797FFFCCF89E090E05A98019797FF9D |
:10C1B000FCCF8FE891E05A9A019797FFFCCF8FE868 |
:10C1C00091E05A98019797FFFCCF89E090E05A9A46 |
:10C1D000019797FFFCCF89E090E05A98019797FF6D |
:10C1E000FCCF8FE891E05A9A019797FFFCCF0AC0E5 |
:10C1F0008AE697E09F938F931F930E9409120F90F6 |
:10C200000F900F9052985A980E941160DF91CF9131 |
:10C210001F9108951F920F920FB60F921124EF9263 |
:10C22000FF920F931F932F933F934F935F936F93BF |
:10C230007F938F939F93AF93BF93CF93DF93EF93AE |
:10C24000FF930091CE008091F1039091F20301974A |
:10C2500009F45EC08091E2059091E3050E948A1581 |
:10C26000482F55276091DA057091DB05611571053E |
:10C27000E9F16130710509F4EAC06230710509F431 |
:10C28000EDC06330710509F45CC081E090E09093EB |
:10C29000F2038093F1031092DD051092DC051092F9 |
:10C2A000E1051092E0058091DC059091DD05409755 |
:10C2B000A0F08091E0059091E105892B11F4109296 |
:10C2C00084031092DD051092DC051092E1051092B6 |
:10C2D000E0051092DB051092DA0587E090E00E94FD |
:10C2E00081159093E3058093E20504C1452BD9F2B3 |
:10C2F00081E090E09093DB058093DA058091DC0586 |
:10C300009091DD0501969093DD058093DC05CBCF00 |
:10C310001092F2031092F10387E090E00E948115E1 |
:10C320009093E3058093E2051092DD051092DC0501 |
:10C330001092DB051092DA051092DF051092DE05EF |
:10C34000D9C0452B09F0A1CF82E090E09093DB05A6 |
:10C350008093DA058091DC059091DD05019690933C |
:10C36000DD058093DC058091DE059091DF05FC0101 |
:10C37000F695E795F695E795EF70F0703196982F62 |
:10C380008827202F3327822B932B93708050924045 |
:10C390000E94B763EB30F10508F085CF7F01EE0E08 |
:10C3A000FF1EF701E054F74F808191819B01281B0C |
:10C3B000390BC90137FD97C0069754F48091F304F7 |
:10C3C000883C08F087C08091F304865F8093F30473 |
:10C3D000F701E054F74F808191819C01220F331FB8 |
:10C3E000280F391F260F371F37FD81C0E901D5956A |
:10C3F000C795D595C795CB0101968C179D070CF075 |
:10C400005CC021978091F304843B08F450C08701FD |
:10C410000A52174FF701E054F74F80819181FE01D6 |
:10C42000E81BF90BCF0163E070E00E94B763CB011A |
:10C43000880F991F860F971FF8019183808320EC46 |
:10C4400038E0E20EF31EF701D183C0832CCF4115F3 |
:10C45000510509F012CF82E090E04CCF4115510513 |
:10C4600009F00FCF802F99279093DF058093DE0589 |
:10C470002091DC053091DD052230310569F083E043 |
:10C4800090E09093DB058093DA052F5F3F4F309368 |
:10C49000DD052093DC0507CF8091DE0587FF15C001 |
:10C4A00081E090E09093E1058093E005E8CFF7010B |
:10C4B000EA52F74F11821082C2CF61507040C61706 |
:10C4C000D7070CF09FCF21969DCF5093E105409365 |
:10C4D000E005D5CF88EC8093F30480916F008F7DC9 |
:10C4E00080936F0075CF909581959F4F65CF2D5F9D |
:10C4F0003F4F7CCFFF91EF91DF91CF91BF91AF91F3 |
:10C500009F918F917F916F915F914F913F912F916B |
:10C510001F910F91FF90EF900F900FBE0F901F9003 |
:10C520001895FC014150504030F001900616D1F7AB |
:10C530003197CF0108958827992708955058192ECB |
:10C54000A6D001D08CC0BA1762077307840795077D |
:10C55000B1F188F40EF410940B2EBA2FA02D062EF4 |
:10C56000622F202D072E732F302D082E842F402D63 |
:10C57000092E952F502DFF275523B9F0591B49F04F |
:10C58000573E98F0469537952795A795F0405395D7 |
:10C59000C9F776F0BA0F621F731F841F30F48795B6 |
:10C5A00077956795B795F040939517FA0F2E0895F4 |
:10C5B000BF1BBB27BA0B620B730B840BF6CFDEF6E7 |
:10C5C00092C097FB70D09F3738F0FEE9F91B982F87 |
:10C5D000872F762F6B2F05C083C09695879577950B |
:10C5E0006795F150D0F73EF49095809570956195E0 |
:10C5F0007F4F8F4F9F4F0895E89403C097FB0EF431 |
:10C60000F3DFB62F672F782F892F9EE9002427C0EC |
:10C610000ED05EF004C00BD026F001C008D019F097 |
:10C6200020F48FEF089580E0089581E0089597FB4E |
:10C63000092E052600F868942DD0E89407FC07C061 |
:10C64000621773078407950721F008F40094079494 |
:10C65000989408959A95BB0F661F771F881F112421 |
:10C660009923A1F08823B2F79F3F59F0BB0F48F4FC |
:10C6700021F4002011F460FF04C06F5F7F4F8F4FE3 |
:10C680009F4F881F9795879597F9089529C0052E84 |
:10C69000092607FA440F551F5F3F79F0AA27A5170F |
:10C6A00008F051E04795880F991F9F3F31F0BB2755 |
:10C6B000B91708F091E0879508959F919F911124F3 |
:10C6C00014C097FB880F991F9F3F31F0BB27B91704 |
:10C6D00008F091E0879508959F919F91112405C0DE |
:10C6E000662777278827992708959FEF80EC08957C |
:10C6F000629FD001739FF001829FE00DF11D649F46 |
:10C70000E00DF11D929FF00D839FF00D749FF00DD1 |
:10C71000659FF00D9927729FB00DE11DF91F639F72 |
:10C72000B00DE11DF91FBD01CF0111240895991B22 |
:10C7300079E004C0991F961708F0961B881F7A9518 |
:10C74000C9F780950895AA1BBB1B51E107C0AA1F1A |
:10C75000BB1FA617B70710F0A61BB70B881F991FA2 |
:10C760005A95A9F780959095BC01CD01089597FB46 |
:10C77000092E07260AD077FD04D0E5DF06D0002079 |
:10C780001AF4709561957F4F0895F6F7909581950D |
:10C790009F4F0895A1E21A2EAA1BBB1BFD010DC0DD |
:10C7A000AA1FBB1FEE1FFF1FA217B307E407F50761 |
:10C7B00020F0A21BB30BE40BF50B661F771F881F3D |
:10C7C000991F1A9469F760957095809590959B01D3 |
:10C7D000AC01BD01CF01089597FB092E05260ED0AF |
:10C7E00057FD04D0D7DF0AD0001C38F4509540958F |
:10C7F000309521953F4F4F4F5F4F0895F6F7909535 |
:10C800008095709561957F4F8F4F9F4F0895F9994F |
:10C81000FECFB2BDA1BDF89A119600B40895F7DF1E |
:10C8200001921A94E1F70895F999FECFB2BDA1BD26 |
:10C8300000BC11960FB6F894FA9AF99A0FBE0895B3 |
:0AC840000190F2DF1A94E1F7089569 |
:10C84A005E010A0151756164726F0000416E676C86 |
:10C85A00654E69636B20202020202020416E676C82 |
:10C86A0065526F6C6C202020202020204163634E8B |
:10C87A0069636B20202020202020202041636352FE |
:10C88A006F6C6C2020202020202020204779726F96 |
:10C89A004769657220202020202020204869676887 |
:10C8AA00742056616C756520202020204163635AEC |
:10C8BA0020202020202020202020202047617320B3 |
:10C8CA00202020202020202020202020436F6D704F |
:10C8DA006173732056616C7565202020566F6C74E5 |
:10C8EA00616765202020202020202020456D706669 |
:10C8FA00616E672020202020202020204779726F37 |
:10C90A00204B6F6D70617373202020204D6F746F00 |
:10C91A00722046726F6E7420202020204D6F746F33 |
:10C92A007220526561722020202020204D6F746F82 |
:10C93A0072204C6566742020202020204D6F746F71 |
:10C94A00722052696768742020202020202020202D |
:10C95A0020202020202020202020202020202020CD |
:10C96A0020202020202020202020202056617269AB |
:10C97A006F4D657465722020202020204D4B334D69 |
:10C98A0061672043616C53746174652053657276E4 |
:10C99A006F2020202020202020202020202020203E |
:10C9AA002020202020202020202020204770732DA6 |
:10C9BA005A20202020202020202020204143432DBF |
:10C9CA004420202020202020202020204750532DA2 |
:10C9DA00442020202020202020202020686F6F76ED |
:10C9EA006572676173202020202020206D6178689D |
:10C9FA006F6F766572202020202020204B616C6D9D |
:10CA0A00616E5F4D61784472696674206D696E6803 |
:10CA1A006F6F766572202020202020204E61766973 |
:10CA2A002053657269616C20446174614750535F99 |
:10CA3A004E69636B20202020202020204750535F1E |
:10CA4A00526F6C6C2020202020202020C800016416 |
:10CA5A00FF01FFFF01FC01FC0101737373FF030077 |
:10CA6A007D0000C409C40964000D48616C6C6F2024 |
:10CA7A0057656C7400000000000000000000000010 |
:10CA8A00000000000000000000000000000000009C |
:10CA9A00000000000000000000000000000000008C |
:10CAAA00000000000000000000000000000000007C |
:10CABA000000000000000000000001020304050657 |
:10CACA000708090A01040B050000ECFF6440415AFB |
:10CADA004664640A0296960840403A10FB303801D0 |
:10CAEA0090D0030090D00300F401640053706F7279 |
:10CAFA007400004E6F726D616C0000426567696E6A |
:10CB0A006E65720000900164018080808181828359 |
:10CB1A00848587888A8C8E9194979A9EA2A7ACB2B4 |
:10CB2A00B8BFC7D0DAE5F1FF0A0B0D0B0C0E0F01E7 |
:04CB3A0001010000F5 |
:00000001FF |
/beta/FC_075i_MartinR/Hex-Files/Flight-Ctrl_MEGA644_V0_75i_MartinR.hex |
---|
0,0 → 1,3226 |
:100000000C94BB030C94D6030C94D6030C94D60327 |
:100010000C94D6030C94D6030C94D6030C94D603FC |
:100020000C94D6030C9403160C94D6030C94D603AC |
:100030000C947E280C94D6030C94D6030C94D6030F |
:100040000C94D6030C94D6030C949E140C94D603F3 |
:100050000C94A2090C94D6030C9469090C94D60351 |
:100060000C94271B0C94D6030C9439270C94D603BC |
:100070000C9457600C94D6030C94D603D31BC61B68 |
:10008000BA1BA01B861B621B741B2A1E031E001EAC |
:10009000621BED1DD31DB31D931D411DEF1CDF1B06 |
:1000A000AE27A127EE27D227C6275F277027702704 |
:1000B000772793278E2773277B2777278A279727EA |
:1000C00073277B27772786279C27732700280A0D0D |
:1000D000426174743A0020332043656C6C732020B5 |
:1000E0000020342043656C6C73202000204C6F7717 |
:1000F000207761726E696E67206C6576656C3A2058 |
:1001000025642E2564000A0D3D3D3D3D3D3D3D3DB0 |
:100110003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D0F |
:100120003D3D3D3D3D3D3D3D3D3D3D000A0D466C67 |
:1001300069676874436F6E74726F6C0A0D48617200 |
:1001400064776172653A25642E25640A0D536F66E3 |
:1001500074776172653A5625642E25642563200004 |
:100160000A0D47656E65726174696E672064656625 |
:1001700061756C74204D69786572205461626C659C |
:10018000000A0D4D697865722D436F6E6669673A96 |
:10019000202725732720282575204D6F746F7273D3 |
:1001A00029000A0D466F756E6420424C2D4374720F |
:1001B0006C3A2000256420000A0D0A0D2121204DF3 |
:1001C000495353494E4720424C2D4354524C3A20F8 |
:1001D0002564202121000A0D3D3D3D3D3D3D3D3D35 |
:1001E0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3F |
:1001F0003D3D3D3D3D3D3D3D3D3D3D000A0D496E92 |
:1002000069742E20454550524F4D003A2047656E87 |
:1002100065726174696E672044656661756C742DE2 |
:10022000506172616D65746572207573696E6720C7 |
:100230006F6C6420537469636B2053657474696ECA |
:100240006773000A0D414343206E6F742063616C35 |
:10025000696272617465642021000A0D5573696ECC |
:100260006720706172616D657465727365742025B5 |
:1002700064000A0D43616C6962726174696E672083 |
:1002800070726573737572652073656E736F722E0D |
:100290002E004F4B0A0D000A0D436F6E74726F6C87 |
:1002A0003A200048656164696E67486F6C64004E6F |
:1002B0006F726D616C20284143432D4D6F64652939 |
:1002C000000A0D3D3D3D3D3D3D3D3D3D3D3D3D3DFE |
:1002D0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D4E |
:1002E0003D3D3D3D3D3D0A0D002E000A0D2044419F |
:1002F00043206F7220493243204552524F522120F1 |
:10030000436865636B204932432C2033567265661F |
:100310002C2044414320616E6420424C2D43747272 |
:100320006C005B25695D005B25695D002B204D69D4 |
:100330006B726F4B6F70746572202B0048573A5682 |
:1003400025642E25642053573A25642E25642563A1 |
:100350000053657474696E673A25642025730049FB |
:100360003243204552524F52212121004D6973736F |
:10037000696E6720424C2D4374726C3A25642121CA |
:100380000028632920486F6C67657220427573737B |
:1003900000486F6568653A202020202025356900D7 |
:1003A000536F6C6C486F6568653A20253569004C61 |
:1003B000756674647275636B3A20253569004F6603 |
:1003C000662020202020203A20253569004B6569D1 |
:1003D0006E65200048F668656E726567656C756EBF |
:1003E0006700616B742E204C616765004E69636B1A |
:1003F0003A20202020202025356900526F6C6C3A6D |
:10040000202020202020253569004B6F6D706173FE |
:10041000733A202020253569004B313A2534692074 |
:10042000204B323A25346920004B333A2534692079 |
:10043000204B343A25346920004B353A2534692065 |
:10044000204B363A25346920004B373A2534692051 |
:10045000204B383A25346920004E693A253469200A |
:1004600020526F3A253469200047733A25346920B9 |
:100470002047693A253469200050313A25346920F3 |
:100480002050323A253469200050333A253469200F |
:100490002050343A25346920004779726F202D208E |
:1004A00053656E736F72004E69636B20253469204B |
:1004B000282533692E25692900526F6C6C2025345C |
:1004C0006920282533692E2569290047696572202E |
:1004D000253469202825336929004E69636B20255E |
:1004E000346920282533692E25782900526F6C6CD9 |
:1004F0002025346920282533692E2578290047696D |
:10050000657220253469202825336929004E6963E6 |
:100510006B2025346920282533692928253369294A |
:1005200000526F6C6C2025346920282533692928F6 |
:1005300025336929004769657220253469202825FB |
:10054000336929282533692900414343202D20534D |
:10055000656E736F72004E69636B202534692028C5 |
:100560002533692900526F6C6C20253469202825B9 |
:1005700033692900486F63682025346920282533B2 |
:10058000692900566F6C746167653A202020253513 |
:10059000690052432D4C6576656C3A2020253569FB |
:1005A0000052432D4368616E6E656C733A25346961 |
:1005B000004B6F6D7061737320202020202020007D |
:1005C0005269636874756E673A2020253569004D5D |
:1005D000657373776572743A20202535690053740A |
:1005E0006172743A202020202025356900506F74F4 |
:1005F00069313A202025336900506F7469323A20FE |
:100600002025336900506F7469333A2020253369FF |
:1006100000506F7469343A202025336900536572A5 |
:10062000766F202000536574706F696E74202025EA |
:100630003369005374656C6C756E673A20253369B5 |
:100640000052616E67653A2533692D25336900458F |
:10065000787465726E436F6E74726F6C2020004EFA |
:10066000693A2534692020526F3A253469200047C1 |
:10067000733A253469202047693A253469200048B7 |
:10068000693A253469202043663A253469200042BE |
:100690004C2D4374726C204572726F72732000206F |
:1006A0002533642020253364202025336420202531 |
:1006B0003364200020253364202025336420202546 |
:1006C0003364202025336420002025336420202536 |
:1006D0003364202025336420202533642000424CDD |
:1006E0002D4374726C20666F756E64200020256344 |
:1006F0002020202563202020256320202025632022 |
:100700000020256320202025632020202563202031 |
:1007100020256320002025632020202D2020202D4F |
:100720002020202D003130003131003132000A0DFF |
:10073000506C6561736520636F6E6E6563742053E2 |
:1007400070656B7472756D2072656365697665722C |
:1007500020666F722062696E64696E67204E4F5723 |
:100760002E2E2E006F6B2E0A0D0054696D656F756D |
:10077000742E0A0D000011241FBECFEFD0E1DEBFA2 |
:10078000CDBF13E0A0E0B1E0E0EAF6EC02C00590D6 |
:100790000D92A03FB107D9F71AE0A0EFB3E001C076 |
:1007A0001D92A034B107E1F70C940E050C940000E3 |
:1007B000282FFB018150853008F023E0842F9927F2 |
:1007C000332721503040829FD001839FB00D929FEC |
:1007D000B00D1124AC59BF4F019724F00E94326331 |
:1007E0000192FACF0E94BC5E0895863038F085E011 |
:1007F000A2E0B0E0082E0E943F6308958823C1F76D |
:100800000895582F863048F155E0842F9927252FD9 |
:10081000332721503040829FD001839FB00D929F9B |
:10082000B00D1124AC59BF4FFB01019724F001908A |
:100830000E943F63FACFA2E6B0E0042E0E943F631D |
:10084000A0E5B0E088E0FB01182E0E944B63852FE5 |
:100850000E94F5030E94BC5E08958823B1F60895B6 |
:10086000CF93A2E0B0E00E943263802DC82F815068 |
:10087000853020F0C3E08C2F0E94F5038C2F992740 |
:10088000CF9108958091FA08E82FFF27EE0FFF1F00 |
:10089000E853F74F808191818D5E9F4F14F0109245 |
:1008A0000301808191818A5B9F4F24F48091030131 |
:1008B000882319F02091920717C081E080930301EB |
:1008C00020919207280F20939207253038F088EE68 |
:1008D00093E0909314048093130406C066E970E0DB |
:1008E000822F0E94B02CE6CF822F99279093600828 |
:1008F00080935F0808951F93CF93DF93182F882369 |
:1009000089F4809115098233D8F080930001809199 |
:1009100000018D3518F48DE580930001112309F451 |
:1009200079C038C08EEC90E09F938F931F920E9405 |
:1009300009120F900F900F9080911509823328F7BC |
:1009400084EF91E00E948115EC01112309F042C06F |
:100950008091270390912803823891050CF046C0BE |
:100960008091150923E0829FC0011124809300012A |
:10097000112369F268EC70E0822F0E94B02C86EDA2 |
:1009800090E09F938F931F920E9409120F900F90F7 |
:100990000F90BDCF809100016AE00E94C262892F52 |
:1009A00099279F938F93809100010E94C26299279B |
:1009B0009F938F938CEE90E09F938F931F920E9452 |
:1009C00009128DB79EB707960FB6F8949EBF0FBE5B |
:1009D0008DBF20C0CE010E948A15882309F0B8CFB0 |
:1009E000CE010E948A158823A9F3B2CF8091150900 |
:1009F0009927880F991F880F991F80930001112351 |
:100A000009F485CF68EC70E084E00E94B02C81EEA0 |
:100A100090E0B7CFDF91CF911F910895CFEFD0E154 |
:100A2000DEBFCDBF14B815B8C7EED3E0E297D7FF4D |
:100A3000FDCF189B53C1199B5CC12DE0209302018F |
:100A400081E887B93E9A8FEF88B98BE184B981E05C |
:100A500085B98EE38AB987E48BB9469A84B7877FD4 |
:100A600084BF809160008861809360001092600074 |
:100A700080ED97E090931404809313041092F30494 |
:100A80001092F2041092CD081092CC081092F50446 |
:100A90001092F4041092F7041092F604243108F432 |
:100AA00023C188E894E0A0E0B0E0809386039093AF |
:100AB0008703A0938803B09389032A3009F449C1BE |
:100AC000243109F446C1289A0E94EC150E94BD15F4 |
:100AD0000E94DE0E0E9469280E94F5190E94F826E5 |
:100AE0000E94145B789486E091E09F938F931F920D |
:100AF0000E9409120F900F900F9089E690E09F934B |
:100B00008F938BE490E09F938F931F921F9280911D |
:100B100002016AE00E94C262892F99279F938F93F6 |
:100B2000809102010E94C26299279F938F938CE269 |
:100B300091E09F938F931F920E9409128091C800A9 |
:100B40002DB73EB7235F3F4F0FB6F8943EBF0FBEA1 |
:100B50002DBF803209F4F5C0809102018C3008F07D |
:100B6000C1C0299A49E06AEF78E083E00E94D80387 |
:100B7000C8EED3E0DE010E943263802D813009F49B |
:100B8000BAC080E691E09F938F931F920E94091252 |
:100B90000F900F900F9027EE35E0F9018FE015864A |
:100BA00016861786108A8150349687FFF8CF80E426 |
:100BB0008093F4058093F5051092F6058093F70570 |
:100BC0008093F80590EC9093F9051092FA058093C4 |
:100BD000FB058093FC051092FD059093FE05909314 |
:100BE000FF05809300061092010680930206909301 |
:100BF000030681E08093E70548EE55E08BE0E4E0F2 |
:100C0000F1E0DA0101900D928A95E1F78DE4DE01C1 |
:100C1000F901182E0E944B638091850399279F93B9 |
:100C20008F935F934F9381E891E09F938F931F92EF |
:100C30000E9409122DB73EB7295F3F4F0FB6F894B7 |
:100C40003EBF0FBE2DBF82EA91E09F938F931F920C |
:100C50000E94091210925F04109217040E94653AD4 |
:100C60000F900F900F90809117048823E1F310925A |
:100C70005F0480ED97E00E948115EC01EE24FF24D3 |
:100C800004EBC02E01E0D02E109217040E94653AAA |
:100C9000809117048823E1F3F701EE0FFF1FEE0F99 |
:100CA000FF1FE951FA4F858518160CF054C08701D3 |
:100CB0000554174FCE010E948A15882309F04EC0B3 |
:100CC000D8018C91882309F049C0809317040E94B1 |
:100CD000653A809117048823E1F3ECCF199B2FC06C |
:100CE00024E1ACCE29983ECF8BE095E0A0E0B0E0C7 |
:100CF000DCCE2BE0A3CEA1E0B0E00E943263802DD9 |
:100D00008F3F09F43ECF1092850327EE35E08DE446 |
:100D1000DE01F901182E0E943A6390918503F901D2 |
:100D20003D962FE08081349618160CF49F5F215079 |
:100D300027FFF8CF9093850348EE55E06DCF2AE06A |
:100D40007DCE8091CA00863009F006CF0E945E5F9A |
:100D500003CF2898B9CE87010554174FF801808139 |
:100D60008823E1F587010F5F1F4F78010C301105D3 |
:100D700008F48ACFEE24FF24B8EBCB2EB1E0DB2EB3 |
:100D800023C0F701EE0FFF1FEE0FFF1FE951FA4FCF |
:100D900085851816FCF487010F5F1F4F1F930F9373 |
:100DA000DF92CF929F930E9409120F900F900F90A5 |
:100DB0000F900F902FE938E0E20EF31ED7011C923E |
:100DC00078010C301105D0F4F701E554F74F90810C |
:100DD0009923B9F287010F5F1F4FECCF87010F5F97 |
:100DE0001F4F1F930F93DF92CF921F920E94091201 |
:100DF0000F900F900F900F900F90B7CF86ED91E06E |
:100E00009F938F931F920E9409120F900F900F9043 |
:100E1000A1E0B0E00E943263802D8E3409F066C1FB |
:100E2000A4E0B0E00E943263802D853008F046C215 |
:100E30000E94300445E66AEF78E00E94D8030E94E1 |
:100E4000300499279F938F938AE592E09F938F9325 |
:100E50001F920E940912809102090F900F900F902B |
:100E60000F900F9080FD06C20E94D737809102013B |
:100E70008A3009F4FDC1843109F4FAC1289A80ED61 |
:100E800097E0909314048093130485E5809394076E |
:100E900087E992E09F938F931F920E94091280919D |
:100EA00002090F900F900F9082FF05C283EA92E033 |
:100EB0009F938F931F920E9409120F900F900F9093 |
:100EC0000E94B71E88E893E19093AB038093AA0336 |
:100ED00081E0809393070E947B0481EC92E09F93D2 |
:100EE0008F931F920E9409120F900F900F90809184 |
:100EF0001704882309F495C080911903882309F405 |
:100F000090C01092170480919207882309F4A6C01C |
:100F10000E9442040E94653A209102012A3009F49D |
:100F2000A6C0243109F4A3C0289A80910F03882316 |
:100F300009F485C0815080930F038091F9048823C0 |
:100F400009F477C08091F90481508093F90480916D |
:100F5000D105882369F081508093D105882341F41D |
:100F60001092CF051092CE051092CD051092CC05AF |
:100F70008091AA039091AB0301979093AB03809368 |
:100F8000AA038091AA039091AB03892B29F0809149 |
:100F90005E04882309F473C08091AA039091AB0387 |
:100FA000892B09F472C080911203909113038F5F13 |
:100FB0009F4F09F47AC080911704882321F0809113 |
:100FC000EF04882311F40E941A0F0E94030CCE0133 |
:100FD0000E948A15882319F180910001282F332758 |
:100FE0008091270390912803821793070CF041C04A |
:100FF0008091C00480628093C0048091120390911C |
:1010000013038F5F9F4F09F464C00E94E35D84E087 |
:101010008093120484E190E00E948115EC010E940B |
:10102000CB5E80911204882309F061CF0E94275E75 |
:101030005ECF80916F00806280936F0088CF809335 |
:101040009E071092CC041092CB041092CA04109206 |
:10105000C9041092C8041092C7046FCF0E94453E85 |
:101060000E94653A209102012A3009F05ACF28984F |
:101070005CCF8091C0048F7D8093C004C6CF2A309E |
:1010800031F1243121F1289A96CF0E940E2785E074 |
:1010900090E09093AB038093AA0380911203909108 |
:1010A00013038F5F9F4F09F086CF8091EF04882351 |
:1010B00009F481CF80E197E29093140480931304A4 |
:1010C00080E890E0909313038093120374CF2898E4 |
:1010D00072CF80E797E1909314048093130480E02B |
:1010E00093E090931303809312038FCF0E94562AAC |
:1010F0008CEF91E09F938F931F920E940912E1E081 |
:101100009E2E0F900F900F9000E510E0780108944C |
:10111000E11CF11C72E0C72ED12CC00ED11E63E081 |
:10112000A62EB12CA00EB11E54E0652E712C600EBF |
:10113000711E45E0442E512C400E511E36E0232EE8 |
:10114000312C200E311EE2E09E1609F48BC0F3E034 |
:101150009F1609F48AC023E0291508F483C0809102 |
:101160000201843168F085E08093140910923009FF |
:101170008BE1809310098EE480932D0980932E09D2 |
:10118000D8010E943263802D8C3008F068C0D701EE |
:101190000E943263802D8C3008F061C0D6010E941D |
:1011A0003263802D8C3008F05AC0D5010E94326322 |
:1011B000802D8C3008F053C0D8010E943263802DFE |
:1011C0008093FA08D7010E943263802D8093FB0838 |
:1011D000D6010E943263802D8093FC08D5010E94C5 |
:1011E0003263802D8093FD08D3010E943263802DED |
:1011F0008093FE08D2010E943263802D8093FF0805 |
:10120000D1010E943263802D80930009A7E5B0E0F0 |
:101210000E943263802D8093010931E0931651F4CE |
:101220008BE092E09F938F931F920E9409120F9080 |
:101230000F900F9045E66AEF78E0892D0E94010437 |
:10124000939495E0991508F07ECF83E00E94F50312 |
:101250008EE4A1E0B0E0082E0E943F63E1CD0E9441 |
:101260003D2AE8CF0E941B2B7ACF0E94DD2B77CF3F |
:10127000289805CE82E792E09F938F931F920E9459 |
:10128000091288EE93E00E948115EC010E94FB197F |
:101290000F900F900F90CE010E948A158823D9F3EA |
:1012A00082E992E09F938F931F920E9409120F9000 |
:1012B0000F900F90D9CD8FEA92E0FACD83E492E0BF |
:1012C0009F938F931F920E9409120F900F900F907F |
:1012D000AFCD1F920F920FB60F9211248F939F9351 |
:1012E000EF93FF93809111038823A9F48091030465 |
:1012F000909104040196FC01EC5BF94FE081ED3024 |
:1013000079F08639910561F0909304048093030489 |
:10131000E093C6000EC0109204041092030409C0AA |
:10132000109204041092030481E080931103E0936F |
:10133000C600FF91EF919F918F910F900FBE0F907C |
:101340001F9018951F920F920FB60F9211242F9392 |
:101350003F934F935F938F939F93AF93BF93EF937D |
:10136000FF9390E08091C6008093FB0350910904A5 |
:10137000563910F090930A048091FB038D3091F060 |
:1013800020910A04822F99278130910509F46CC0BD |
:10139000823091050CF48EC0029709F47FC0109240 |
:1013A0000A04A8C020910A04223061F790930A042D |
:1013B000852F99278F55984FFC01329740812091B6 |
:1013C000050430910604241B3109DC0111978C912E |
:1013D000281B3109C9019F7090930604809305046E |
:1013E0000024880F991F001C880F991F001C892F4B |
:1013F000902D982F935C909307042F733070235C8B |
:10140000209308048081891709F46EC090E08091D0 |
:10141000F8038F5F8093F8033091FA03332309F0C8 |
:1014200069C0992309F466C081E08093FA03580FDC |
:101430005093F7035150E52FFF27EF55F84F8DE0FC |
:1014400080838091A307823509F054C088E190E041 |
:101450002CE00FB6F894A895809360000FBE2093FF |
:1014600060003093110446C02F5F20930A04E52FDB |
:10147000FF27EF55F84F8091FB0380835F5F509308 |
:1014800009042091FB038091050490910604820FCA |
:10149000911D90930604809305042CC0E52FFF272F |
:1014A000EF55F84F8091FB038083563938F3109243 |
:1014B0000A04E7CF892B09F072CF8091FB038332B6 |
:1014C00059F08091FB038093A10781E08093090488 |
:1014D0008091FB039927DDCF8091FA03882389F758 |
:1014E00081E080930A04EDCF8C91821709F08ECFB2 |
:1014F00091E092CFFF91EF91BF91AF919F918F912A |
:101500005F914F913F912F910F900FBE0F901F90C1 |
:101510001895AC01A0E0B0E09D01A817B90748F408 |
:10152000E4E4F6E08191280F311D1196A417B50768 |
:10153000C8F33F70FD01EC5BF94FC9010024880F2F |
:10154000991F001C880F991F001C892F902D835C08 |
:1015500080831196FD01EC5BF94F2F733070822F61 |
:10156000835C8083AB5BB94F8DE08C931092110349 |
:10157000809144068093C6000895BF92CF92DF9277 |
:10158000EF92FF920F931F93CF93DF93CDB7DEB708 |
:101590002C859D857E85BB2483E2809344069F59DC |
:1015A000909345062093460603E010E0772309F464 |
:1015B000ADC0CF84D88843E1E42EF12CEC0EFD1EA3 |
:1015C000A989BA897150109709F4A0C0109709F43D |
:1015D0003CC0F601EB0DF11DB3949081119789F495 |
:1015E0007723A1F1F70122E030E0E20EF31ED701EC |
:1015F000C080D180E20EF31E0D90BC91A02DBB24C3 |
:101600007150109719F1F601EB0DF11DB394408163 |
:10161000119709F466C01097D1F0F601EB0DF11D9A |
:10162000B39460811197A1F4772391F0F70132967A |
:10163000D701CD90DC9032E0E32EF12CEE0EFF1EB0 |
:10164000A081B181BB24715003C090E040E060E014 |
:10165000F801EC5BF94F892F86958695835C808332 |
:101660000F5F1F4FF801EC5BF94F892F99278370AB |
:10167000907082959295907F9827807F9827552724 |
:101680009A01329522952F7023273F702327822BB2 |
:10169000835C80830F5F1F4FF801EC5BF94F4F7045 |
:1016A0005070440F551F440F551F862F9927002453 |
:1016B000880F991F001C880F991F001C892F902DDF |
:1016C000842B835C80830F5F1F4FF801EC5BF94F25 |
:1016D0006F73635C60830F5F1F4F109709F076CFC5 |
:1016E00015C0772309F4B3CFF701A2E0B0E0EA0E0A |
:1016F000FB1ED701C080D18022E030E0E20EF31E55 |
:101700000D90BC91A02DBB24715085CFC8010E94C3 |
:10171000890ADF91CF911F910F91FF90EF90DF9099 |
:10172000CF90BF900895A3E07A2F4091F7034650E1 |
:1017300009F45FC0E72FFF27EF55F84F80818D53E5 |
:101740007F5FE72FFF27EF55F84F20812D537F5FF5 |
:10175000E72FFF27EF55F84F30813D537F5FE72F8D |
:10176000FF27EF55F84F60816D537F5F9927880FF2 |
:10177000991F880F991F522F52955F70582B822FF7 |
:1017800099278F70907082959295907F9827807F8F |
:101790009827232F26952695282B832F992783700A |
:1017A0009070002496958795079496958795079451 |
:1017B000982F802D682B41504F3FD9F0EA2FFF27FB |
:1017C000EF55F84F5083AF5F41504F3F91F0EA2FF4 |
:1017D000FF27EF55F84F2083AF5F41504F3F49F04F |
:1017E000EA2FFF27EF55F84F6083AF5F442309F0DE |
:1017F000A1CF84EA97E09093F6038093F503A3507A |
:10180000A093F4030895CF93DF93CDB7DEB722976B |
:101810000FB6F894DEBF0FBECDBF8091FA038823C8 |
:1018200009F4AFC20E94930B8091A207823609F49B |
:1018300071C08091A30799278436910509F457C098 |
:101840008536910584F58136910509F44EC18236BD |
:1018500091050CF4C2C08236910509F49AC1833611 |
:101860009105C1F48091F0039091F103892B09F067 |
:101870004FC2A091F503B091F6039C91992309F012 |
:101880003DC29C918AE0989FC00111249093F1037E |
:101890008093F0031092FA031092F6031092F5036E |
:1018A0001092F4036EC28C36910509F410C18D3686 |
:1018B00091050CF0B3C08736910509F42BC1883629 |
:1018C000910541F78FEF80930F03E091F503F091BD |
:1018D000F603808190915904892B809359048823C1 |
:1018E00011F01092FC0381E080930004D3CFE091CB |
:1018F000F503F091F60390818AE0989FC0011124CE |
:1019000090930D0380930C03892B21F281E0809347 |
:10191000FF03C0CF8091A30799278037910509F471 |
:10192000F2C0813791050CF485C08337910509F425 |
:101930005BC1843791050CF03CC18137910509F0FA |
:1019400078CFA091F503B091F6038C918F3F09F405 |
:101950000CC28C91882309F003C281E08C93A09182 |
:10196000F503B091F60345E66AEF78E08C910E94AA |
:10197000D803809111038823E1F3E091F503F091FE |
:10198000F603808189838EE48A8385E690E09F93C5 |
:101990008F938AEF98E09F938F9321E030E03F93FD |
:1019A0002F93CE0102969F938F933F932F93CE0157 |
:1019B000820F931F9F938F9383E08F9381E08F9388 |
:1019C00081E58F930E94BD0AADB7BEB71F960FB6D3 |
:1019D000F894BEBF0FBEADBF2CCF8B34910509F07C |
:1019E00059CFE091F503F091F603808191819093B6 |
:1019F0000B0580930A052091080530910905821B8B |
:101A0000930B845E9D4F68E671E00E94E262845B06 |
:101A1000904090930705809306053CCF843791054D |
:101A200009F47CC08637910509F034CF81E08093BA |
:101A3000FE0330CF8D36910529F18E3691050CF0DD |
:101A400093C08B34910509F0F4CEA091F503B091C9 |
:101A5000F6038D919C9190930B0580930A0520913C |
:101A6000080530910905821B930B845E9D4F68E643 |
:101A700071E00E94E262845B90409093070580933E |
:101A80000605D7CE809111038823E1F3A091F503D9 |
:101A9000B091F6039C91913009F43FC1198281E025 |
:101AA00090E09F938F93CE0101969F938F9381E057 |
:101AB0008F938F938DE48F930E94BD0A8DB79EB74D |
:101AC00007960FB6F8949EBF0FBE8DBFB2CE8FEFB4 |
:101AD00080930F03E091F503F091F60380818093EA |
:101AE0005A0481E080930104D5CEE091F503F09192 |
:101AF000F603E081E03258F08FE1809310038FEF1E |
:101B000080930F03C7CE81E08093FD0392CEE093D4 |
:101B10001003F5CF81E080930204BCCE8091F703DF |
:101B2000853108F4DAC0E091F503F091F60380E125 |
:101B3000ACE7B7E001900D928A95E1F7809111032F |
:101B40008823E1F31F9280910E038F9384E58F9396 |
:101B50000E94BD0A8AEF8093F2038FEF80930F03F8 |
:101B60000F900F900F9096CE8E36910509F061CEB2 |
:101B7000809111038823E1F38DE490E09F938F938C |
:101B800087EE95E09F938F9381E08F938F938EE400 |
:101B900092CFA091F503B091F6038BE0E4E9F7E072 |
:101BA0000D9001928A95E1F780919D0780937908C5 |
:101BB000A6CF8437910509F03CCE8091F70385319B |
:101BC00008F4BCC0A091F503B091F60380E1ECE706 |
:101BD000F7E00D9001928A95E1F780EF8093F20390 |
:101BE0008FEF80930F0325CE2091F5033091F603FC |
:101BF000F90180818150853018F481818E34E9F0BB |
:101C00001982809111038823E1F381E090E09F9392 |
:101C10008F93CE0101969F938F9381E08F938F9343 |
:101C200083E58F930E94BD0AEDB7FEB737960FB6D6 |
:101C3000F894FEBF0FBEEDBFFCCD6AEF78E085E6FD |
:101C40002E5F3F4FDB01F901982F01900D929A957D |
:101C5000E1F722503040482FD9018C910E940104B5 |
:101C600080912D099927AA27BB27BC01CD0124EC1F |
:101C700039E040E050E00E94A362DC01CB01809398 |
:101C8000A4039093A503A093A603B093A703809108 |
:101C90002E099927AA27BB27BC01CD010E94A36268 |
:101CA000DC01CB018093A0039093A103A093A20336 |
:101CB000B093A303E091F503F091F60380810E94B5 |
:101CC000F5030E943004898380E00E947B046EE665 |
:101CD00070E089810E94B02C94CFE091F503F091DF |
:101CE000F60380819181A281B38180937C079093D8 |
:101CF0007D07A0937E07B0937F0720CF8AE0989F4F |
:101D0000C00111240E9481159093430680934206DE |
:101D1000A091F503B091F603B4CD47EE55E08DE404 |
:101D2000FA01282F0D9001922A95E1F7A8EEB3E071 |
:101D3000FA01182E0E944B639983B1CEA091F5034E |
:101D4000B091F6038D919D910D90BC91A02D809343 |
:101D50007C0790937D07A0937E07B0937F073DCFCC |
:101D6000863008F400CE85E0F9CD0E943004E09181 |
:101D7000F503F091F6038083A091F503B091F6038B |
:101D8000E8CD22960FB6F894DEBF0FBECDBFDF912F |
:101D9000CF910895CF93C82F8A3029F08091C00049 |
:101DA00085FFFCCF04C08DE00E94CA0EF7CFC09320 |
:101DB000C60080E090E0CF910895089588E1809377 |
:101DC000C1008091C00082608093C0008091C100FA |
:101DD00080688093C1008091C10080648093C100BD |
:101DE0008AE28093C40080910C0390910D030E94BD |
:101DF000811590937107809370078CED90E00E949D |
:101E000081159093A00780939F07109272078BE42F |
:101E10008093730788E0809376078AE08093740745 |
:101E200081E0809375071092F6031092F5031092EB |
:101E3000F4030895EF92FF920F931F938091110383 |
:101E4000882309F478C280910004882309F082C0B5 |
:101E500080910104882329F080911103882309F0DF |
:101E60007FC18091FE03882329F08091110388238C |
:101E700009F05BC180910204882329F0809111034D |
:101E8000882309F036C180919F079091A0070E9496 |
:101E90008A15882329F080911103882309F0C8C08E |
:101EA00080910C0390910D03892B09F084C18091DE |
:101EB000FF03882329F080911103882309F00FC2C2 |
:101EC0008091F0039091F103892B09F07EC120915C |
:101ED00010032F3F59F180E190E09F938F93822F61 |
:101EE000992782959295907F9827807F9827845F85 |
:101EF0009E4F9F938F9381E090E09F938F9380E11B |
:101F000093E09F938F9382E08F9381E08F9381E49E |
:101F10008F930E94BD0A8FEF809310038DB79EB7F9 |
:101F20000B960FB6F8949EBF0FBE8DBF80917908B7 |
:101F3000882329F080911103882309F05EC08091E5 |
:101F4000FD03882309F4F7C180911103882309F464 |
:101F5000F2C139C080911103882309F479CF0E941E |
:101F6000C01E84E190E09F938F939091FC0384E1E5 |
:101F7000989FC0011124865D9C4F9F938F9381E0B1 |
:101F800090E09F938F938CEF93E09F938F9382E0E9 |
:101F90008F9381E08F9388E48F930E94BD0A809194 |
:101FA000FC038F5F2DB73EB7255F3F4F0FB6F89408 |
:101FB0003EBF0FBE2DBF843008F4B8C11092FC03A1 |
:101FC0001092000445CF86E190E09F938F9388ECB8 |
:101FD00098E09F938F9381E08F938F9380E58F9309 |
:101FE0000E94BD0A1092FD038DB79EB707960FB6EB |
:101FF000F8949EBF0FBE8DBF9EC181E090E09F937D |
:102000008F9389E798E09F938F9381E08F938F93CD |
:1020100082E48F930E94BD0A109279082DB73EB7D3 |
:10202000295F3F4F0FB6F8943EBF0FBE2DBF87CF3D |
:10203000809110099927880F991F880F991F7C019B |
:102040000027F7FC0095102F8091440590914505DD |
:10205000A0914605B0914705BC01CD01A8019701AB |
:102060000E94176330938D0720938C0780913C0565 |
:1020700090913D05A0913E05B0913F05BC01CD0179 |
:10208000A80197010E94176330938F0720938E0752 |
:102090008091D404809390078091D304809391071A |
:1020A00088E090E09F938F938CE897E09F938F93C5 |
:1020B00081E08F9383E08F9387E78F930E94BD0A1F |
:1020C000809192072DB73EB7295F3F4F0FB6F89426 |
:1020D0003EBF0FBE2DBF853018F086E0809392077B |
:1020E00083E690E00E9481159093A00780939F075C |
:1020F000D7CE8BE090E09F938F9384E997E09F93F6 |
:102100008F9381E08F9380910E038F9387E48F9359 |
:102110000E94BD0A109202048DB79EB707960FB6B3 |
:10212000F8949EBF0FBE8DBFAECE8AE090E09F9325 |
:102130008F9382E797E09F938F9381E08F938F93A4 |
:1021400086E58F930E94BD0A1092FE032DB73EB71D |
:10215000295F3F4F0FB6F8943EBF0FBE2DBF8ACE0A |
:102160000E94C01E80E590E09F938F938AE293E0E7 |
:102170009F938F9321E030E03F932F9389E293E088 |
:102180009F938F933F932F938AE594E09F938F9330 |
:1021900083E08F9381E08F938CE48F930E94BD0A3C |
:1021A000109201048DB79EB70F960FB6F8949EBF9C |
:1021B0000FBE8DBF56CE80917007909171070E941F |
:1021C0008A15882309F077CE72CE809142069091CD |
:1021D00043060E948A15882309F479CE8091110361 |
:1021E000882309F474CE809110099927880F991FCC |
:1021F000880F991F7C010027F7FC0095102F809114 |
:10220000440590914505A0914605B0914705BC0154 |
:10221000CD01A80197010E941763309335062093E2 |
:10222000340680913C0590913D05A0913E05B0910A |
:102230003F05BC01CD01A80197010E9417633093AF |
:102240003706209336062091D0093091D10940916C |
:10225000D2095091D309DA01C90103E0880F991F0F |
:10226000AA1FBB1F0A95D1F7820F931FA41FB51F8A |
:10227000820F931FA41FB51F2091860330918703FF |
:102280004091880350918903BC01CD010E941763DE |
:1022900030933906209338068EE090E09F938F9319 |
:1022A00084E396E09F938F9381E08F938F9383E4F1 |
:1022B0008F930E94BD0A8091F0039091F1030E94D8 |
:1022C000811590934306809342062DB73EB7295F50 |
:1022D0003F4F0FB6F8943EBF0FBE2DBFF8CD82E43E |
:1022E00090E09F938F9387E398E09F938F9381E093 |
:1022F0008F938F9384E48F930E94BD0A1092FF0303 |
:102300008DB79EB707960FB6F8949EBF0FBE8DBFD0 |
:1023100080910C0390910D03009709F4D1CD0E9498 |
:1023200081159093710780937007CACD8093FC0349 |
:10233000109200048DCD1F910F91FF90EF900895A2 |
:10234000982F80917A08813031F0892F0E94CA0E2F |
:10235000282F33270CC080915B04E82FFF27E65D10 |
:10236000FC4F90838F5F80935B0421E030E0C901D4 |
:1023700008950F931F93CF93DF938C01EB01672B8D |
:1023800071F0F80181918F010E94A011219739F01D |
:10239000F80181918F010E94A011219791F7DF919F |
:1023A000CF911F910F9108950F931F93CF93DF93B8 |
:1023B0008C01EB01672B81F0F8010F5F1F4F8491B7 |
:1023C0000E94A011219741F0F8010F5F1F4F8491E7 |
:1023D0000E94A011219781F7DF91CF911F910F915A |
:1023E0000895CF93C82F181634F480E20E94A011EC |
:1023F000C1501C16D4F3CF910895CF93C82F18164F |
:1024000034F480E30E94A011C1501C16D4F3CF9184 |
:1024100008952F923F924F925F926F927F928F9288 |
:102420009F92AF92BF92CF92DF92EF92FF920F9363 |
:102430001F93CF93DF93CDB7DEB7E0970FB6F89435 |
:10244000DEBF0FBECDBF26968FAD26972896EEAD88 |
:10245000FFAD289788249924540180937A0848E492 |
:10246000C42ED12CCC0EDD1E7F01C701F7011491C3 |
:10247000112331F0153221F00894E11CF11CF6CF44 |
:10248000B701681B790B09F095C0112309F43DC20F |
:102490000894E11CF11C1FA63FA4232C0FEF39A6C2 |
:1024A000F7010894E11CF11C14911537C9F1812F33 |
:1024B00080628837A9F1103209F440C0133209F460 |
:1024C0008DC01A3209F479C01D3209F476C01B326E |
:1024D000C9F11E32C9F1103309F48AC0812F81532A |
:1024E000893008F07EC060E070E0CB01880F991F52 |
:1024F000880F991F880F991F860F971F680F791FE4 |
:10250000610F711D60537040F7010894E11CF11CCC |
:102510001491812F80538A3040F3262E153739F6D7 |
:1025200030FE3DC0F60184E090E0C80ED91E8080E8 |
:102530009180A280B380103209F0C0CF89A5882392 |
:1025400009F0AECF19A7ACCFF7010894E11CF11C3C |
:1025500014911A3209F451C060E070E014C0CB014C |
:10256000880F991F880F991F880F991F860F971F33 |
:10257000680F791F610F711D60537040F701089457 |
:10258000E11CF11C1491812F80538A3040F3EFEF4E |
:102590006F3F7E0714F46FEF7FEF062F86CFF601B3 |
:1025A00082E090E0C80ED91E808191814C01AA245E |
:1025B000BB2481CF0E94D41168CF1A3251F4F601A6 |
:1025C00082E090E0C80ED91E208022200CF068CF57 |
:1025D000219490E1392AEFED3E2262CF98E0392A2A |
:1025E0005FCF1836C9F01C36D1F481E0382A58CFB5 |
:1025F00034FC56CFF0E23F2A53CFF60182E090E060 |
:10260000C80ED91E608171819FEF6F3F790714F466 |
:102610006FEF7FEF062F44CF24E0322A41CF1336ED |
:1026200009F44DC1143409F41FC1143609F41CC156 |
:10263000193609F419C11F3409F40FC11F3609F402 |
:102640000CC1103709F4F9C0133709F4B2C01535BD |
:1026500009F4ECC0153709F4E9C0183509F444C091 |
:10266000183709F441C0112309F44FC1CE01019676 |
:102670009DA78CA7198381E0482E19A6632C772487 |
:10268000042D5FA4541857FC2DC029A5222331F135 |
:102690000F5F050DC30180739070892B09F42FC162 |
:1026A000222309F027C166FC1BC1C301807390700F |
:1026B000809709F410C1852D0E94FD11842D992762 |
:1026C00087FD9095BC018CA59DA50E94B91164FE63 |
:1026D000CCCE822D801B0E94F111C7CE66FED9CFD1 |
:1026E0000E5FD7CF5524D1CFE0E1EEA733FE07C070 |
:1026F00081149104A104B10411F0F0E43F2A19A659 |
:102700000FA707FD02C02FED3222CE0189969DA7AB |
:102710008CA781149104A104B10419F49FA59923F5 |
:1027200061F1EEA54E2E55246624772418AA841450 |
:102730009504A604B70410F0F1E0F8ABC501B401AC |
:10274000A30192010E94F562DC01CB01082F8A30BF |
:10275000F0F4005DECA5FDA50293FDA7ECA7C50173 |
:10276000B401A30192010E94F56249015A01F8A93E |
:10277000FF23E1F62EA5283079F0632C7724CE01D3 |
:102780000196482EFCA54F1A28E2420E79CF095A2D |
:10279000183501F70F7DDECF632C772463FEEFCF72 |
:1027A000003369F380E3ECA5FDA58293FDA7ECA7B8 |
:1027B000E6CFF60182E090E0C80ED91E0190F081CC |
:1027C000E02DFDA7ECA7EF2B81F4FE013196FDA7CC |
:1027D000ECA788E289838EE6818385E78B838CE68C |
:1027E0008C838D8389E28E831F8207FD15C0802F25 |
:1027F000992787FD9095AC0160E070E08CA59DA5C0 |
:102800000E94DE61009731F0482EFCA54F1A041596 |
:102810000CF033CF402E31CFECA5FDA50190002068 |
:10282000E9F731974E2E2CA5421A27CF153511F412 |
:1028300081E0382A9AE09EA762CFF60182E090E01C |
:10284000C80ED91E808191814C01AA24BB2490E13D |
:102850009EA7E0E43E2A18E752CF1F3411F4E1E0CE |
:102860003E2AF8E0FEA74BCF143411F491E0392A48 |
:1028700030FE18C0F60184E090E0C80ED91E8080BA |
:102880009180A280B380B7FE0AC0B094A0949094C7 |
:102890008094811C911CA11CB11C8DE289A79AE037 |
:1028A0009EA72ECFF60182E090E0C80ED91E80814F |
:1028B00091814C01AA2497FCA094BA2CE4CFFE018C |
:1028C0003196FDA7ECA7F60182E090E0C80ED91E74 |
:1028D00080818983D0CE822D801B0E94FD11EBCE9A |
:1028E00080E38AA71BA762E070E0CE018A960E946F |
:1028F000B911DBCE61E070E0CE018996F8CF822D70 |
:10290000801B0E94F11129A5CBCEE0960FB6F8945A |
:10291000DEBF0FBECDBFDF91CF911F910F91FF9012 |
:10292000EF90DF90CF90BF90AF909F908F907F906F |
:102930006F905F904F903F902F9008951F920F924D |
:102940000FB60F9211242F933F935F936F937F9352 |
:102950008F939F93AF93BF93EF93FF938091120454 |
:10296000882329F080911204815080931204809171 |
:102970001A0481508F3F09F493C080931A04809108 |
:10298000130490911404892B01F180911304909108 |
:1029900014040197909314048093130480911304FA |
:1029A00090911404209112033091130382239323F6 |
:1029B000892B89F0809102018A3009F48BC0479AF3 |
:1029C0008091020983FF8DC010C08FEF9FEF90931D |
:1029D000130380931203809102018A3009F478C0B6 |
:1029E00047988091020983FF7CC086B19927FC013A |
:1029F000E071F07084FF0AC0809115049091160474 |
:102A0000019690931604809315046BC08091150471 |
:102A100090911604892B49F1809115049091160428 |
:102A20008A56914010F5809115049091160469E240 |
:102A300070E00E94CE628091150490911604860F7A |
:102A4000971F90931604809315048091150490911C |
:102A500016040B9708F440C0809115049091160459 |
:102A60000A9790930B0580930A0580910A0590912F |
:102A70000B052091080530910905821B930B845E9C |
:102A80009D4F68E671E00E94E262845B9040909303 |
:102A9000070580930605109216041092150421C0B4 |
:102AA00089E080931A04809114038F5F8170809372 |
:102AB0001403882319F481E080931704809118048B |
:102AC000909119040196909319048093180457CF9C |
:102AD0005A9887CF5A9A85CFF0930B05E0930A0551 |
:102AE000C4CFFF91EF91BF91AF919F918F917F9153 |
:102AF0006F915F913F912F910F900FBE0F901F909C |
:102B000018952091180430911904280F391FC90114 |
:102B1000019608952091180430911904821B930B9B |
:102B2000892F99278695807490700895CF93DF93AD |
:102B30000E948115EC01CE010E948A158823D9F3E9 |
:102B4000DF91CF9108951F93CF93DF930E9481155A |
:102B5000EC011FEC08C080911903882321F09093A9 |
:102B6000190310937A00CE010E948A15982F8823AA |
:102B700091F3DF91CF911F9108959FB7F8945F98DB |
:102B80003E9A469A8091B0008F708093B0008091F9 |
:102B9000B00083608093B0008091B1008B7380930C |
:102BA000B1008091B1008B608093B1001092B200AF |
:102BB0008FEF8093B3008091B00080688093B00065 |
:102BC000809170008A7F8093700080917000826095 |
:102BD000809370009FBF08958AE090E00E94811565 |
:102BE000909322048093210482E085BD83EA84BD12 |
:102BF00017BC88E788BD86E086BD80916E00816045 |
:102C000080936E0008951F920F920FB60F921124B9 |
:102C10002F933F934F935F936F937F938F939F93E4 |
:102C2000AF93BF93EF93FF93809102018431C0F47F |
:102C300080911B04882309F446C020911C04309124 |
:102C40001D0441E02F37340708F49CC08FEF8093B8 |
:102C5000B3002F5F304030931D0420931C04B4C395 |
:102C600080911B04882349F78091B00086FFADC096 |
:102C70008091B0008F7B8093B000E0912004EE2320 |
:102C800009F0EFC080912609282F33278DED96E0BB |
:102C9000289FA001299F500D389F500D1124CA0173 |
:102CA00020911E0430911F04821B930B90931D04EE |
:102CB00080931C0410921F0410921E04469A81E017 |
:102CC00080931B04BACF8091B00086FFA8C080918A |
:102CD000B0008F7B8093B00089EA93E090931D044D |
:102CE00080931C0480911503909116039C01220F80 |
:102CF000331F280F391F809192039927880F991F3E |
:102D0000880F991F280F391F37FD35C2C9019595C6 |
:102D100087959595879590931603809315039093C7 |
:102D20000E0480930D0480914E0980FFDDC08091D8 |
:102D30001F09682F7727882799272091440530910C |
:102D40004505409146055091470557FDF9C1A7E05B |
:102D50005595479537952795AA95D1F70E94A36277 |
:102D60009B01AC0197FD0AC2F6E055954795379552 |
:102D70002795FA95D1F780910D0490910E04820F5A |
:102D8000931FDCC02F3F310569F060F0A9014F5F50 |
:102D900050404F37510588F480E88093B3002058A5 |
:102DA000304059CF80911C048093B30010921D04D1 |
:102DB00010921C0410921B0407C38FEF8093B30082 |
:102DC00050931D0440931C04FFC28091B0008064A6 |
:102DD0008093B0008CEB90E090931D0480931C04D2 |
:102DE00080911E0490911F0484549F4F90931F0460 |
:102DF00080931E0480911104882329F08091F904A6 |
:102E0000853B08F0FAC0469A909120049F5F80911C |
:102E10002609891708F0EEC01092200450CF809147 |
:102E2000B00080648093B00080912609282F33275A |
:102E30008DED96E0289FA001299F500D389F500DE1 |
:102E40001124CA0120911E0430911F04821B930B90 |
:102E500090931D0480931C049C0181E080931B04CB |
:102E6000F0CE89EA93E090931D0480931C048E2F8A |
:102E700099278130910509F4C2C0029709F488C1ED |
:102E8000FF27EE0FFF1FE853F74F80819181880FD6 |
:102E9000991F20911C0430911D04820F931F909361 |
:102EA0001D0480931C0420911C0430911D0455E0E6 |
:102EB0002D3D350708F450C18CED95E090931D042D |
:102EC00080931C049C012C5B304030931D042093A4 |
:102ED0001C0480911E0490911F04820F931F9093F5 |
:102EE0001F0480931E04EBCE80911F09682F772763 |
:102EF0008827992720914405309145054091460542 |
:102F00005091470557FD17C1E7E05595479537950F |
:102F10002795EA95D1F70E94A3629B01AC0197FD2A |
:102F200032C176E055954795379527957A95D1F733 |
:102F300080910D0490910E04821B930B90930E04CC |
:102F400080930D0480912009282F3327220F331FEF |
:102F5000220F331F80910D0490910E048217930766 |
:102F60007CF080912109282F3327220F331F220F55 |
:102F7000331F80910D0490910E042817390724F413 |
:102F800030930E0420930D0420910D0430910E0413 |
:102F900080911C0490911D04280F391F205032404D |
:102FA00080910D0490910E0497FDE3C0959587954F |
:102FB0009595879590930E0480930D0480910D0450 |
:102FC00090910E04909362088093610845E02D3D36 |
:102FD000340708F4BAC08CED95E090931D048093FB |
:102FE0001C0420911C0430911D0430931F04209375 |
:102FF0001E0433CF9093200462CE469805CF809173 |
:103000001503909116039C01220F331F280F391FBF |
:10301000809192039927880F991F880F991F280F75 |
:10302000391F37FDA1C1C90195958795959587955C |
:10303000909316038093150390930E0480930D04D0 |
:1030400080914E0980FF38C180911F09682F772732 |
:1030500088279927209144053091450540914605E0 |
:103060005091470557FD8DC1E7E055954795379538 |
:103070002795EA95D1F70E94A3629B01AC0197FDC9 |
:103080007BC1B6E05595479537952795BA95D1F709 |
:1030900080910D0490910E04820F931F90930E0463 |
:1030A00080930D0480912009282F3327220F331F8E |
:1030B000220F331F80910D0490910E048217930705 |
:1030C0007CF080912109282F3327220F331F220FF4 |
:1030D000331F80910D0490910E042817390724F4B2 |
:1030E00030930E0420930D0480910D0490910E04F2 |
:1030F00020911C0430911D04820F931F8050924038 |
:1031000090931D0480931C0480910D0490910E04F3 |
:1031100097FD28C1959587959595879590930E0471 |
:1031200080930D0480910D0490910E049093620899 |
:1031300080936108B8CE21583F4F4F4F5F4FE4CE88 |
:1031400021583F4F4F4F5F4F02CE51E02737350791 |
:1031500058F487E791E041CF81E02737380708F03E |
:10316000B2CE87E791E0AACE30931D0420931C04D1 |
:1031700038CF03961BCF2D5F3F4FC8CD215C3F4F0B |
:103180004F4F5F4FF1CD215C3F4F4F4F5F4FC9CE47 |
:1031900080911703909118039C01220F331F280F71 |
:1031A000391F809191039927880F991F880F991FC4 |
:1031B000280F391F37FDDBC0C90195958795959577 |
:1031C0008795909318038093170390930C04809332 |
:1031D0000B0480914E0981FF9AC080912309682FCA |
:1031E00077278827992720913C0530913D0540910C |
:1031F0003E0550913F0557FDE2C0A7E05595479524 |
:1032000037952795AA95D1F70E94A3629B01AC013F |
:1032100097FDD0C0F6E05595479537952795FA95D7 |
:10322000D1F780910B0490910C04820F931F90931F |
:103230000C0480930B0480912409282F3327220F3C |
:10324000331F220F331F80910B0490910C048217BF |
:1032500093077CF080912509282F3327220F331FF5 |
:10326000220F331F80910B0490910C04281739070B |
:1032700024F430930C0420930B0480910B04909160 |
:103280000C0420911C0430911D04820F931F805068 |
:10329000924090931D0480931C0480910B049091A4 |
:1032A0000C0497FD67C095958795959587959093A4 |
:1032B0000C0480930B04F7CD80911F09682F7727AA |
:1032C000882799272091440530914505409146056E |
:1032D0005091470557FD5FC0A7E055954795379535 |
:1032E0002795AA95D1F70E94A3629B01AC0197FD97 |
:1032F0004DC0F6E05595479537952795FA95D1F746 |
:1033000080910D0490910E04821B930BC7CE809187 |
:103310002309682F77278827992720913C0530912A |
:103320003D0540913E0550913F0557FD3EC0E7E009 |
:103330005595479537952795EA95D1F70E94A36251 |
:103340009B01AC0197FD2CC066E0559547953795DC |
:1033500027956A95D1F780910B0490910C04821BFC |
:10336000930B65CF0396D6CE2D5F3F4F5CCE2D5F7E |
:103370003F4F22CF039697CF215C3F4F4F4F5F4F78 |
:1033800080CE21583F4F4F4F5F4F6ECE215C3F4F55 |
:103390004F4F5F4FAECF21583F4F4F4F5F4F9CCFA6 |
:1033A000215C3F4F4F4F5F4FCFCF21583F4F4F4F83 |
:1033B0005F4FBDCF215C3F4F4F4F5F4F2BCF215809 |
:1033C0003F4F4F4F5F4F19CFFF91EF91BF91AF919B |
:1033D0009F918F917F916F915F914F913F912F912D |
:1033E0000F900FBE0F901F90189510927C008FECDD |
:1033F00080937A000895EF92FF920F931F93CF93DB |
:10340000DF9303E010E0D8010E943263802DC82FC3 |
:10341000DD27C531D10508F02A97C7BD10922C04CD |
:1034200084E690E00E94A31580911D0390911E03F5 |
:103430008255934010F4C0E0D0E0CA3FD105E0F4DB |
:1034400089EEE82E82E0F82EC7BD82E390E00E946C |
:10345000A315FF92EF921F920E94091280911D0303 |
:1034600090911E030F900F900F908255934020F083 |
:103470002196CA3FD10540F3D8010C2E0E943F632C |
:10348000C09388088CE291E00E94A315DF91CF9150 |
:103490001F910F91FF90EF900895EF92FF920F937D |
:1034A0001F93CF93DF9300E000932504009324043F |
:1034B0000093230480ED97E00E948115EC011CE845 |
:1034C00021E0F22E95EFE92E033009F4ABC000E0C5 |
:1034D00080913804909139048C5F93400CF091C036 |
:1034E00080911C03815080931C038091360490913D |
:1034F00037048C5F93400CF079C080911B0381509E |
:1035000080931B0380913404909135048C5F934029 |
:103510000CF04AC080911A03815080931A0388E00E |
:10352000809361040E94FE2680911C038A3008F07B |
:1035300055C0F09225048AE080931C0380911B0300 |
:103540008A3008F043C0F09224048AE080931B0381 |
:1035500080911A038A3098F5F09223048AE08093D0 |
:103560001A0380916104882379F0CE010E948A15A4 |
:103570008823B9F38BEE92E09F938F931F920E9462 |
:1035800009120F900F900F90109219038FEC8093F7 |
:103590007A00809119038823E1F31A3008F447C0B8 |
:1035A000115009F091CF48C08091340490913504B6 |
:1035B000875094408CF180911A038F5FAECF863F85 |
:1035C00080F2F0922304E0921A03CBCF863F08F4F6 |
:1035D000BFCFF0922404E0921B03BACF863F08F4D9 |
:1035E000ADCFF0922504E0921C03A8CF8091360461 |
:1035F00090913704875094408CF080911B038F5F2B |
:103600007FCF80913804909139048750944044F0E2 |
:1036100080911C038F5F67CF0F5F81CF0F5F72CFE9 |
:1036200001E063CF1B3008F452CF19E050CF8AE09D |
:1036300090E00E94A315B4CF86E490E00E94A31509 |
:10364000DF91CF911F910F91FF90EF9008951F92FE |
:103650000F920FB60F921124EF92FF920F931F93C8 |
:103660002F933F934F935F936F937F938F939F938A |
:10367000AF93BF93CF93DF93EF93FF9320914104D8 |
:10368000822F9927AA27BB272F5FFC01429740F47E |
:10369000E25CFF4FEE0FFF1F0590F491E02D0994BF |
:1036A0001092410482E08093400480914004809312 |
:1036B0007C0080914104882309F442C38FEC8093FD |
:1036C0007A003EC320934104809178009091790064 |
:1036D0002091460430914704820F931F9093470432 |
:1036E0008093460481E0DFCF2093410480917800ED |
:1036F000909179002091440430914504820F931FEA |
:10370000909345048093440484E0CDCF20934104FA |
:103710008091780090917900209151053091520567 |
:10372000821B930B9093870880938608809186086C |
:103730009091870890934F0480934E0482E0B3CF1A |
:103740002093410480914F0590915005209178007D |
:1037500030917900821B930B90937C0880937B08B7 |
:1037600080917B0890917C0890934D0480934C0449 |
:1037700087E099CF2093410480917800909179005F |
:10378000909343048093420486E08DCF20934104BC |
:1037900020917800309179003093450420934404BF |
:1037A0001092400482CF2093410420917800309100 |
:1037B0007900309347042093460481E074CF10923F |
:1037C000410481E08093190380912604909127049D |
:1037D000019690932704809326048091780090911D |
:1037E000790090931E0380931D0380911D03909197 |
:1037F0001E037C01002711278091500490915104F1 |
:10380000A0915204B0915304E80EF91E0A1F1B1F29 |
:10381000809154048F5F863008F43BC280912C0461 |
:10382000992787FD9095A92FB92FBC01CD0123E4DD |
:103830003CE040E050E00E94A362DC01CB01E81ACA |
:10384000F90A0A0B1B0BF801E70117FD42C2F595B7 |
:10385000E795D795C79580911F0390912003A0917C |
:103860002103B09122039C01AD0163E0220F331FBD |
:10387000441F551F6A95D1F7281B390B4A0B5B0B68 |
:103880002C0F3D1F4E1F5F1F57FD3CC203E0559597 |
:103890004795379527950A95D1F720931F033093C5 |
:1038A0002003409321035093220380917F0890913D |
:1038B0008008EC01EE27D7FDE095FE2F80911F03D5 |
:1038C00090912003A0912103B0912203C81BD90B32 |
:1038D000EA0BFB0BC093EB04D093EC04E093ED04F4 |
:1038E000F093EE048091550490915604A0915704F2 |
:1038F000B09158049C01AD01B7FDFFC114E055958E |
:103900004795379527951A95D1F7821B930BA40BF2 |
:10391000B50B8C0F9D1FAE1FBF1F80935504909356 |
:103920005604A0935704B093580420912A04309170 |
:103930002B04A90142955295507F5427407F54276C |
:10394000421B530BB7FDCEC174E0B595A795979573 |
:1039500087957A95D1F72091EB043091EC04281BE0 |
:10396000390B220F331F220F331F220F331F240F57 |
:10397000351F37FDB4C13595279535952795359574 |
:1039800027953595279530932B0420932A04109280 |
:103990005404109250041092510410925204109248 |
:1039A000530480912D04282F332780918B08909108 |
:1039B0008C08B9010E94E262CB0120914B05309145 |
:1039C0004C05821B930B90932F0480932E0410922E |
:1039D0002D0410928C0810928B0882E064CE209304 |
:1039E00041042091780030917900809144049091B5 |
:1039F0004504280F391F809102018A3009F455C10E |
:103A0000220F331F220F331F3093450420934404A9 |
:103A1000C90137FD62C195958795959587959595CF |
:103A20008795909337048093360480914A0490914F |
:103A30004B04820F931F97FD6DC1959587959093C9 |
:103A40004B0480934A042091590530915A05821BFA |
:103A5000930B909324038093230320913C04309193 |
:103A60003D048091230390912403280F391F37FDD3 |
:103A70004EC13595279530933D0420933C0483E057 |
:103A800012CE2093410420917800309179008091EA |
:103A9000460490914704280F391F809102018A3013 |
:103AA00009F414C1220F331F220F331F3093470430 |
:103AB00020934604C90137FD19C1959587959595C1 |
:103AC00087959595879590933904809338048091D4 |
:103AD000480490914904820F931F97FD0CC195955E |
:103AE0008795909349048093480420915B05309119 |
:103AF0005C05821B930B90932603809325032091F2 |
:103B00003E0430913F048091250390912603280FB5 |
:103B1000391F37FDEDC03595279530933F0420932D |
:103B20003E0481E0C0CD20934104809178009091C3 |
:103B300079002091510530915205821B930B90938F |
:103B40008708809386088091860890918708209145 |
:103B50004E0430914F04820F931F90933104809351 |
:103B6000300482E0A0CD2093410480914F059091D4 |
:103B700050052091780030917900821B930B90932F |
:103B80007C0880937B0880917B0890917C08209131 |
:103B90004C0430914D04820F931F90933304809313 |
:103BA000320487E080CD20934104809102018A3065 |
:103BB00009F47EC0843109F4AFC0809178009091FF |
:103BC00079002091420430914304820F931F909317 |
:103BD00035048093340486E066CD209341048091BF |
:103BE0007800909179002091440430914504820F2F |
:103BF000931F90934504809344041092400455CD44 |
:103C000020934104EACD2093410480917800909163 |
:103C1000790020917D0830917E08820F931F969540 |
:103C2000879590937E0880937D0880912D048F5F07 |
:103C300080932D0480918B0890918C0820917D08B1 |
:103C400030917E08820F931F90938C0880938B088D |
:103C500083E029CD2093410480912703909128038C |
:103C60009C01220F331F280F391F809178009091FB |
:103C7000790063E070E00E94CE62260F371F369510 |
:103C8000279536952795309328032093270385E0C1 |
:103C90000ACD80935404E0925004F09251040093B2 |
:103CA00052041093530482E0FECC220F331FACCE9B |
:103CB00080917800909179002091420430914304E2 |
:103CC000820F931F01969695879581CF220F331F00 |
:103CD000EDCE2196E11DF11DBACD07969CCE215F58 |
:103CE0003F4F49CE0F96A11DB11D2ECE0796E5CEB2 |
:103CF0002F5F3F4F10CF0196F2CE215F3F4F4F4FC6 |
:103D00005F4FFCCD295F3F4F4F4F5F4FBFCD2F5FC0 |
:103D10003F4FAFCE019691CE80917800909179007F |
:103D20002091420430914304820F931F2FEF37E01C |
:103D3000281B390B309335042093340486E0B3CC30 |
:103D4000FF91EF91DF91CF91BF91AF919F918F91B3 |
:103D50007F916F915F914F913F912F911F910F91A3 |
:103D6000FF90EF900F900FBE0F901F90189590E26C |
:103D7000EAE2F3E08FE49193815087FFFCCF08954E |
:103D80001F93CF93DF9380915A0420912903281722 |
:103D900010F420935A049091590490FF08C0809128 |
:103DA0005A04882309F421C1815080935A0491FF59 |
:103DB00008C080915A04821709F4BFC18F5F8093B5 |
:103DC0005A04892F992780FF02C081FD0BC10E94F0 |
:103DD000B71E90915A049A3008F0ABC081E18093ED |
:103DE0005B04892F99279F938F9382E293E09F939F |
:103DF0008F9381E08F930E9409120F900F900F9084 |
:103E00000F900F9080915A04C82FDD27C630D1053E |
:103E100009F496C1C730D1050CF095C0C230D10568 |
:103E200009F43EC2C330D1050CF4E2C0C430D10560 |
:103E300009F45BC525970CF075C310925B04809163 |
:103E4000CC089091CD089F938F938091CA08909150 |
:103E5000CB089F938F9389E194E09F938F9311E018 |
:103E60001F930E94091284E180935B046DB77EB7B3 |
:103E7000695F7F4F0FB6F8947EBF0FBE6DBF809114 |
:103E8000D0089091D1089F938F938091CE08909104 |
:103E9000CF089F938F9389E294E09F938F931F9312 |
:103EA0000E94091288E280935B048DB79EB7079643 |
:103EB0000FB6F8949EBF0FBE8DBF8091D40890912D |
:103EC000D5089F938F938091D2089091D3089F93A8 |
:103ED0008F9389E394E09F938F931F930E9409121D |
:103EE0008CE380935B042DB73EB7295F3F4F0FB63D |
:103EF000F8943EBF0FBE2DBF8091D8089091D9088D |
:103F00009F938F938091D6089091D7089F938F931A |
:103F100089E494E09F938F931F930E9409126DB7D9 |
:103F20007EB7695F7F4F0FB6F8947EBF0FBE6DBF3F |
:103F300059C780E180935B04892F99279F938F93C2 |
:103F400087E293E054CFCA30D10509F463C1CB3086 |
:103F5000D1050CF059C0C830D10509F471C52997B5 |
:103F60000CF095C384E180935B04809127039091CA |
:103F700028039F938F9383E895E09F938F9311E09D |
:103F80001F930E94091288E280935B040F900F90A8 |
:103F90000F900F900F908091F90499279F938F9322 |
:103FA00082E995E09F938F931F930E9409128CE3FF |
:103FB00080935B040F900F900F900F900F90809163 |
:103FC000C708992701979F938F9381EA95E09F9364 |
:103FD0008F931F930E9409120F900F900F900F90D4 |
:103FE0000F9000C710925A04F2CE20935A04DFCEED |
:103FF000209709F4C0C1219709F494C3815080939C |
:10400000290310925A04EEC6CC30D10509F4F0C34E |
:10401000CC30D1050CF428C22D9781F710925B04A7 |
:104020008EED96E09F938F93C1E0CF930E9409128B |
:1040300084E180935B040F900F900F908091BE08F5 |
:1040400099278D969F938F938091BD0899278D9680 |
:104050009F938F938091BC0899278D969F938F9300 |
:104060008091BB0899278D969F938F938DEE96E054 |
:104070009F938F93CF930E94091288E280935B04F1 |
:104080008DB79EB70B960FB6F8949EBF0FBE8DBF2F |
:104090008091C20899278D969F938F938091C10834 |
:1040A00099278D969F938F938091C00899278D961D |
:1040B0009F938F938091BF0899278D969F938F939D |
:1040C00081E097E09F938F93CF930E9409128CE336 |
:1040D00080935B042DB73EB7255F3F4F0FB6F89432 |
:1040E0003EBF0FBE2DBF8091C30899278D969F9329 |
:1040F0008F9385E197E09F938F93CF930E9409124E |
:104100000F900F900F900F900F908091C40888230C |
:1041100009F038C68091C508882309F025C680912A |
:10412000C608882309F45EC688E480935B048BE2AA |
:1041300097E09F938F93CF9391C110925A0441CEF1 |
:1041400010925B0489E495E09F938F9311E01F9395 |
:104150000E94091284E180935B040F900F900F90EE |
:1041600080915105909152059F938F9380913004D7 |
:10417000909131049F938F9386E595E09F938F9361 |
:104180001F930E94091288E280935B046DB77EB78B |
:10419000695F7F4F0FB6F8947EBF0FBE6DBF8091F1 |
:1041A0004F05909150059F938F9380913204909189 |
:1041B00033049F938F9385E695E09F938F931F938E |
:1041C0000E9409128CE380935B048DB79EB707961B |
:1041D0000FB6F8949EBF0FBE8DBF80914B05909196 |
:1041E0004C059F938F9380917F09909180099F93B5 |
:1041F0008F9384E795E09F938F931F930E940912FA |
:104200002DB73EB7295F3F4F0FB6F8943EBF0FBEA4 |
:104210002DBFE8C510925B048DE196E09F938F93CC |
:1042200011E01F930E94091284E180935B040F90B8 |
:104230000F900F908091920399279F938F9385E21F |
:1042400096E09F938F931F930E94091288E28093B8 |
:104250005B040F900F900F900F900F9080910F04C0 |
:10426000909110049F938F9383E396E09F938F9395 |
:104270001F930E9409128CE380935B040F900F90B0 |
:104280000F900F900F908091210999279F938F9302 |
:104290008091200999279F938F9381E496E03ACEED |
:1042A00010925B0482EE93E09F938F93C1E0CF93D3 |
:1042B0000E94091284E180935B040F900F900F908D |
:1042C0008091440590914505A0914605B091470520 |
:1042D000B7FD45C53AE0B595A795979587953A9569 |
:1042E000D1F7BF93AF939F938F938CEE93E09F93FF |
:1042F0008F93CF930E94091288E280935B048DB75D |
:104300009EB707960FB6F8949EBF0FBE8DBF8091E3 |
:104310003C0590913D05A0913E05B0913F05B7FD4C |
:1043200019C52AE0B595A795979587952A95D1F750 |
:10433000BF93AF939F938F938BEF93E09F938F9354 |
:10434000CF930E9409128CE380935B042DB73EB794 |
:10435000295F3F4F0FB6F8943EBF0FBE2DBF80912F |
:104360000A0590910B059F938F938AE094E09F93A9 |
:104370008F93CF932FCE10925B048CE293E09F93A8 |
:104380008F9311E01F930E94091284E180935B04D4 |
:104390000F900F900F9089E690E09F938F938BE49E |
:1043A00090E09F938F93DF93CF93809102016AE017 |
:1043B0000E94C262892F99279F938F938091020157 |
:1043C0000E94C26299279F938F938CE393E09F93FF |
:1043D0008F931F930E94091288E280935B042DB78C |
:1043E0003EB7235F3F4F0FB6F8943EBF0FBE2DBFC1 |
:1043F00088EE95E09F938F930E94300499279F93B6 |
:104400008F9381E593E09F938F931F930E940912EE |
:104410008091AA039091AB036DB77EB7695F7F4F20 |
:104420000FB6F8947EBF0FBE6DBF069778F09091DF |
:104430005E04992309F447C38CE380935B04892FBE |
:1044400099279F938F938CE693E0C1CD8CE3809363 |
:104450005B048FE593E09F938F931F930E94091253 |
:104460000F900F900F90BEC410925B048FE496E003 |
:104470009F938F9311E01F930E94091284E1809310 |
:104480005B040F900F900F9080919807992787FDFC |
:1044900090959F938F9380919707992787FD90958B |
:1044A0009F938F938FE596E09F938F931F930E9426 |
:1044B000091288E280935B048DB79EB707960FB60A |
:1044C000F8949EBF0FBE8DBF80919907992787FDF5 |
:1044D00090959F938F9380919A0799279F938F939D |
:1044E0008FE696E09F938F931F930E9409128CE3AF |
:1044F00080935B042DB73EB7295F3F4F0FB6F8940A |
:104500003EBF0FBE2DBF80919E0799279F938F932B |
:1045100080919B07992787FD90959F938F938FE7B5 |
:1045200096E0F8CC10925B0489E994E09F938F9316 |
:10453000C1E0CF930E940912809102010F900F9069 |
:104540000F908A3009F481C38B3009F4D6C28431CC |
:1045500009F4D3C28D3009F045C484E180935B0433 |
:1045600080911C0399279F938F9340915B055091F5 |
:104570005C05CA0157FD34C4959587959595879537 |
:1045800095958795959587959F938F939A0157FD5C |
:1045900024C4359527953595279535952795809190 |
:1045A000380490913904821B930B9F938F938DE075 |
:1045B00095E09F938F93CF930E94091288E2809396 |
:1045C0005B046DB77EB7675F7F4F0FB6F8947EBF11 |
:1045D0000FBE6DBF80911B0399279F938F934091CE |
:1045E000590550915A05CA0157FDF5C39595879510 |
:1045F0009595879595958795959587959F938F9395 |
:104600009A0157FDE5C3359527953595279535953D |
:1046100027958091360490913704821B930B9F93CA |
:104620008F9381E295E09F938F93CF930E9409121D |
:104630008CE380935B048DB79EB709960FB6F89410 |
:104640009EBF0FBE8DBF80911A0399279F938F93B2 |
:104650002091570530915805C90137FDB7C395958D |
:1046600087959F938F938091340490913504281BF4 |
:10467000390B3F932F9385E395E09F938F93CF93CF |
:104680000E9409122DB73EB7275F3F4FBDCD109254 |
:104690005B0480910005909101059F938F938DEEAF |
:1046A00095E09F938F9311E01F930E94091284E17C |
:1046B00080935B040F900F900F900F900F9080915C |
:1046C000FE049091FF049F938F9389EF95E09F9351 |
:1046D0008F931F930E94091288E280935B040F90CE |
:1046E0000F900F900F900F908091FC049091FD041B |
:1046F0009F938F9385E096E09F938F931F930E94E3 |
:1047000009128CE380935B040F900F900F900F9031 |
:104710000F908091FA049091FB049F938F9381E115 |
:1047200096E055CC8091020980FFD3C110925B04C2 |
:104730008091EB049091EC04A091ED04B091EE0413 |
:10474000BC01CD0125E030E040E050E00E9417635D |
:104750003F932F9381E993E09F938F9311E01F93F1 |
:104760000E94091284E180935B040F900F900F90D8 |
:104770000F900F908091DF049091E004A091E104EC |
:10478000B091E204BC01CD0125E030E040E050E012 |
:104790000E9417633F932F9380EA93E09F938F9338 |
:1047A0001F930E94091288E280935B040F900F9080 |
:1047B0000F900F900F9080911D0390911E039F9377 |
:1047C0008F938FEA93E09F938F931F930E94091218 |
:1047D0008CE380935B040F900F900F900F900F90DD |
:1047E0008091880899279F938F938EEB93E0EFCB6E |
:1047F00010925B048FE896E09F938F9311E01F93D4 |
:104800000E94091284E180935B040F900F900F9037 |
:104810008091A20899279F938F938091A10899274F |
:104820009F938F938091A00899279F938F93809156 |
:104830009F0899279F938F938FE996E09F938F937B |
:104840001F930E94091288E280935B048DB79EB784 |
:104850000B960FB6F8949EBF0FBE8DBF8091A60831 |
:1048600099279F938F938091A50899279F938F9362 |
:104870008091A40899279F938F938091A3089927EB |
:104880009F938F9384EB96E09F938F931F930E9447 |
:1048900009128CE380935B042DB73EB7255F3F4F31 |
:1048A0000FB6F8943EBF0FBE2DBF8091AA0899277E |
:1048B0009F938F938091A90899279F938F938091BD |
:1048C000A80899279F938F938091A70899279F9372 |
:1048D0008F9389EC96E09F938F931F930E94091208 |
:1048E0006DB77EB7655F7F4F1ECB10925B048091E2 |
:1048F000FB08E82FFF27EE0FFF1FE853F74F8081DB |
:1049000091819F938F938091FA08E82FFF27EE0FF4 |
:10491000FF1FE853F74F808191819F938F9389E523 |
:1049200094E09F938F9311E01F930E94091284E1FA |
:1049300080935B048DB79EB707960FB6F8949EBF21 |
:104940000FBE8DBF8091FD08E82FFF27EE0FFF1FE0 |
:10495000E853F74F808191819F938F938091FC085A |
:10496000E82FFF27EE0FFF1FE853F74F808191815B |
:104970009F938F9389E694E09F938F931F930E9458 |
:10498000091288E280935B042DB73EB7295F3F4F41 |
:104990000FB6F8943EBF0FBE2DBF8091FF08E82FE1 |
:1049A000FF27EE0FFF1FE853F74F808191819F9300 |
:1049B0008F938091FE08E82FFF27EE0FFF1FE8532B |
:1049C000F74F808191819F938F9389E794E09F9324 |
:1049D0008F931F930E9409128CE380935B046DB741 |
:1049E0007EB7695F7F4F0FB6F8947EBF0FBE6DBF75 |
:1049F00080910109E82FFF27EE0FFF1FE853F74FC3 |
:104A0000808191819F938F9380910009E82FFF27E8 |
:104A1000EE0FFF1FE853F74F808191819F938F9393 |
:104A200089E894E09F938F931F930E9409128DB79A |
:104A30009EB707960FB6F8949EBF0FBE8DBFD2C12A |
:104A400010925B0481EB95E09F938F9311E01F938D |
:104A50000E94091284E180935B040F900F900F90E5 |
:104A600080910605909107059F938F9380EC95E0C8 |
:104A70009F938F931F930E94091288E280935B0497 |
:104A80000F900F900F900F900F9080910A059091CA |
:104A90000B059F938F938FEC95E09F938F931F93BC |
:104AA0000E9409128CE380935B040F900F900F908B |
:104AB0000F900F9080910805909109059F938F9317 |
:104AC0008EED95E084CA8CE380935B0481E893E0EB |
:104AD000C2CC84E180935B048DEC93E09F938F9331 |
:104AE00011E01F930E94091288E280935B040F90EB |
:104AF0000F900F9084ED93E0AECC84E180935B0443 |
:104B000040915B0550915C05CA0157FD57C19C015E |
:104B1000359527953595279535952795359527957D |
:104B2000C90182959295907F9827807F9827BA0136 |
:104B3000681B790BCB0177FD3FC1959587959F93B6 |
:104B40008F933F932F939A0157FD33C13595279546 |
:104B5000359527953595279580913804909139049E |
:104B6000821B930B9F938F938AED94E09F938F9377 |
:104B7000CF930E94091288E280935B048DB79EB7A1 |
:104B800009960FB6F8949EBF0FBE8DBF4091590590 |
:104B900050915A05CA0157FD0AC19C0135952795C8 |
:104BA000359527953595279535952795C901829592 |
:104BB0009295907F9827807F9827BA01681B790B80 |
:104BC000CB0177FDF2C0959587959F938F933F9387 |
:104BD0002F939A0157FDE6C0359527953595279572 |
:104BE000359527958091360490913704821B930B5D |
:104BF0009F938F938CEE94E09F938F93CF930E941B |
:104C000009128CE380935B048DB79EB709960FB6AB |
:104C1000F8949EBF0FBE8DBF209157053091580567 |
:104C2000C90137FDBDC0959587959F938F9380915E |
:104C3000340490913504281B390B3F932F938EEF4A |
:104C400094E09F938F93CF93D9CA84E180935B04C0 |
:104C500040915B0550915C059A0157FDB4C03595B4 |
:104C600027953595279535952795C901880F991F63 |
:104C7000880F991F880F991F481B590B5F934F93FB |
:104C80003F932F938091380490913904821B930BAA |
:104C90009F938F9387EA94E09F938F93CF930E9483 |
:104CA000091288E280935B042DB73EB7275F3F4F20 |
:104CB0000FB6F8943EBF0FBE2DBF409159055091DD |
:104CC0005A059A0157FD7CC035952795359527954E |
:104CD00035952795C901880F991F880F991F880F4F |
:104CE000991F481B590B5F934F933F932F938091CC |
:104CF000360490913704821B930B9F938F9389EB1B |
:104D000094E09F938F93CF930E9409128CE380933A |
:104D10005B046DB77EB7675F7F4F0FB6F8947EBFB9 |
:104D20000FBE6DBF80915705909158059F938F934B |
:104D300080915705909158052091340430913504A5 |
:104D4000821B930B9F938F938BEC94E09F938F9395 |
:104D5000CF936BCE81509C4FAF4FBF4FE2CA815073 |
:104D60009C4FAF4FBF4FB6CA84E480935B0488E288 |
:104D700097E09F938F93CF930E9409120F900F900B |
:104D80000F90CDC980E480935B0485E297E09F9308 |
:104D90008F93CF930E9409120F900F900F90BAC972 |
:104DA000019641CF295F3F4F17CF01960CCF0F9649 |
:104DB000F4CE295F3F4FCACE0196BFCE0F96A7CE45 |
:104DC000295F3F4F81CF295F3F4F49CF019647CCA5 |
:104DD000295F3F4F18CC0F9609CC295F3F4FD9CBA5 |
:104DE0000F96CACB10925904DF91CF911F9108956D |
:104DF0001092B9008AE28093B800089585EA809302 |
:104E0000BC00089584E98093BC0008951092B90015 |
:104E10008093BB0085E88093BC0008950E94022720 |
:104E2000109261048091BB001092600480E880932E |
:104E3000BC001092BD001092BA001092BB001092FC |
:104E4000B9001092B8000E94F8260E94FE2680E069 |
:104E50000E94062708958093BB0085E88093BC00DC |
:104E6000089585EC8093BC00089585E88093BC008C |
:104E700008951F920F920FB60F9211242F933F9314 |
:104E80004F935F936F937F938F939F93AF93BF9352 |
:104E9000EF93FF9380916104282F332744275527F0 |
:104EA0008F5F80936104F90127313105C8F4E05B1D |
:104EB000FF4FEE0FFF1F0590F491E02D09948091B4 |
:104EC0005F04E82FFF27E157F74F9091BB009083D5 |
:104ED0008F5F8C3008F49DC010925F040E940227FF |
:104EE00010926104E0C080E80E940627DCC088E9D7 |
:104EF0000E940627D8C00E9402278AE090E0909383 |
:104F0000AB038093AA030E94FE26CDC084E10E94D9 |
:104F10000627C9C082E10E940627C5C080911C03F4 |
:104F20000E940627C0C080E10E940627BCC0809175 |
:104F30001B030E940627B7C080911A030E94062710 |
:104F4000B2C080916004E82FFF27E554F64F8F5FD1 |
:104F50008093600480810E940627A5C09091600420 |
:104F6000292FE92FFF27EE0FFF1FEE0FFF1FE9513B |
:104F7000FA4F858518160CF054C09C3009F467C0B0 |
:104F8000990F892F8E5A0E9406278DC080915F0449 |
:104F9000E82FFF27E555F74F8091BB0080830E94E3 |
:104FA000352781C08091B900803409F46EC08091AA |
:104FB0005F04E82FFF27E554F74F10828F5F8C3096 |
:104FC00068F110925F040E940227109261048091A0 |
:104FD000620480935E041092620465C08091B900FF |
:104FE000803309F440C00E9402278AE090E0909349 |
:104FF000AB038093AA03109261040E94FE2653C063 |
:105000000E9402278AE090E09093AB038093AA036A |
:1050100067CF80935F040E94022762CF80935F0472 |
:10502000D2CF9C3008F0A9CF922F9F5FE92FFF27A6 |
:10503000EE0FFF1FEE0FFF1FE951FA4F858518167F |
:105040001CF0292F9C3080F39093600496CF10922F |
:10505000600483E08093610480915F04880F8D5A1F |
:105060000E94062720C0809162048823C9F4909191 |
:10507000600490936204E92FFF27E256F74F808186 |
:105080008F5F09F48FEF8083AECF80915F04E82FAC |
:10509000FF27E554F74F8C5F80830E94312797CF1D |
:1050A00090916004E8CF8091BC0080688093BC0040 |
:1050B000FF91EF91BF91AF919F918F917F916F91F0 |
:1050C0005F914F913F912F910F900FBE0F901F90C6 |
:1050D000189583EC8093810080916F0080628093AB |
:1050E0006F00109258051092570510925A051092B1 |
:1050F000590510925C0510925B0508951F920F925E |
:105100000FB60F921124FF920F931F932F933F938B |
:105110004F935F936F937F938F939F93AF93BF93BF |
:10512000CF93DF93EF93FF934091860050918700D8 |
:105130008091640490916504481B590B809186000E |
:10514000909187009093650480936404CA018D5404 |
:105150009440835F9A4140F58091BE04809363043C |
:1051600080916304843070F58091BF04853608F423 |
:10517000BDC08AE08093BF04809102018A3009F4A7 |
:10518000BCC0843109F4B9C02898F090BF0481E014 |
:105190008093BE048091EF04882309F04AC1809176 |
:1051A00063048093C70845C1C091BE04CA3008F4A7 |
:1051B0005AC0F090BF04C43108F076C0CF5FC093EE |
:1051C000BE0437C19091C70880916304981761F6B7 |
:1051D000F090BF043AE03F1508F016C11092840326 |
:1051E0001092BE043AC0C091BE04EC2FFF27EE0F10 |
:1051F000FF1F9F012E563B4FDF01A853B74F8D91E4 |
:105200009C91D9018D939C93DF01A252B74F8D9150 |
:105210009C91E855FB4F91838083EC2FFF27EE0F85 |
:10522000FF1F9F012853374FDF01AA59BB4F8D91B4 |
:105230009C91D90111969C938E93DF01A458BB4F8A |
:105240008D919C91E252F74F91838083EC2FEF5F19 |
:10525000EB3008F0D9C0E093BE048EE18F1518F250 |
:10526000C091BE04DACFCA018B5F9040845B91404D |
:1052700008F445C0809102018A3009F4D5C0843118 |
:1052800009F4D2C02898F090BF04C53009F460C07A |
:105290005D98C63009F4B5C05C98C73009F456C0B3 |
:1052A0005B98C43108F48ACFC43109F0C2C0809140 |
:1052B00002018A3009F4B6C0843109F4B3C02898D9 |
:1052C0008EE18093BE042AE0CEEDD8E0A2E9B4E0FE |
:1052D000E8ECF8E08D919D9191838083329619825C |
:1052E00018822296215027FFF5CFA3C01092BF0449 |
:1052F000809102018A3009F044CF289A46CF425D5E |
:105300005140EC2FFF27EE0FFF1FEA59FB4F808122 |
:105310009181DA01A81BB90BCD0105960B97D0F44A |
:10532000F090BF04B9E1BF1508F478C02AE02F154A |
:1053300028F48091F9048E5F8093F9048091F90438 |
:10534000893C50F088EC8093F90406C05B9A36CF14 |
:105350005D9AA2CFF090BF04EC2FFF27EE0FFF1F46 |
:10536000EA59FB4F808191819C01220F331F280F46 |
:10537000391F240F351F37FD59C089011595079531 |
:1053800015950795CA010196801791074CF50150B4 |
:1053900010408091F9048E3B58F1EC2FFF27EE0F5F |
:1053A000FF1FDF01AA59BB4F8D919C91D801A81B0B |
:1053B000B90BCD0163E070E00E94E262CB01880F7F |
:1053C000991F860F971FE458FB4F91838083EC2F22 |
:1053D000FF27EE0FFF1FEA59FB4F1183008355CFC4 |
:1053E0004150504004171507A4F60F5F1F4FD1CF4F |
:1053F000EC2FFF27EE0FFF1FE458FB4F11821082A6 |
:10540000E6CF5C9A5B984DCFBFEFFB1609F4BFCE99 |
:105410008F2D8F5F8093BF04F82EB9CE8091F90451 |
:10542000865F8ACF289A4CCF289A2DCF2D5F3F4F89 |
:10543000A4CF8F2D992790935A0880935908809173 |
:10544000CC089091CD0890935C0880935B08FF9105 |
:10545000EF91DF91CF91BF91AF919F918F917F910C |
:105460006F915F914F913F912F911F910F91FF90FD |
:105470000F900FBE0F901F90189581E08093FC084D |
:1054800082E08093FB0883E08093FA0884E08093B5 |
:10549000FD0885E08093FE0886E08093FF0887E0A2 |
:1054A0008093000988E08093010908951F9388E69E |
:1054B000809302093EE1309303098BEF8093050945 |
:1054C0008AE080930609309304093093080985E047 |
:1054D0008093090980E480930A0984E18093070995 |
:1054E0008EE080930B0970E170930C091CE010931F |
:1054F0000D09E8E0E0930E0986EE80930F093093E2 |
:10550000100980E88093110960E56093120986E92B |
:105510008093130943E04093140981E280931509B5 |
:1055200083E280931609309317091092180950E20C |
:105530005093190910921A0910921B0910921C0914 |
:1055400010921D09109232091092330910923409F9 |
:105550001092350924E620931E0998E290931F09C2 |
:1055600010924E09109220098AEF809321094093EE |
:1055700026092093220990932309109224098093ED |
:10558000250982E3809327099AE59093280980935F |
:10559000290910924D0990932A0960932B0981E003 |
:1055A00080932C0985E580932D0980932E097093B3 |
:1055B0002F0950933009209331098FE580933609E4 |
:1055C00083EF809338098AEA80933A0980933B09F4 |
:1055D0008FE080933709809339098CEF80933C09E1 |
:1055E00020933D0990933E0990933F099093400981 |
:1055F0008BE4809341098093420980934309109280 |
:10560000440986E080934509E09346099093470951 |
:10561000309348092093490920934A0984E08093F4 |
:105620004B09ACEAB3E0E3E5F9E00D9001921A957D |
:10563000E1F71F91089588E6809302095EE1509397 |
:1056400003098BEF809305099AE090930609509324 |
:1056500004095093080985E08093090980E4809348 |
:105660000A098FE08093070990930B0980E18093EA |
:105670000C09E6E0E0930D0978E070930E0986EEE0 |
:1056800080930F095093100980E8809311092AE54F |
:105690002093120988E78093130963E0609314094B |
:1056A00081E28093150983E28093160950931709CC |
:1056B0001092180940E24093190910921A091092A9 |
:1056C0001B0910921C0910921D09109232091092A8 |
:1056D0003309109234091092350934E630931E09CB |
:1056E00098E290931F0910924E09109220098AEFB8 |
:1056F000809321096093260930932209909323090E |
:10570000109224098093250982E38093270920932E |
:1057100028098093290910924D0920932A0980E5D0 |
:1057200080932B098CE380932C0985E580932D09C8 |
:1057300080932E0940932F09409330099BE4909366 |
:1057400031098FE58093360983EF809338098AEA1F |
:1057500080933A0980933B0984E1809337098093D1 |
:1057600039098CEF80933C0930933D0920933E0921 |
:1057700020933F0920934009909341099093420957 |
:105780009093430910924409E093450970934609A8 |
:1057900020934709509348093093490930934A09A7 |
:1057A00084E080934B098CE0A3EBB3E0E3E5F9E000 |
:1057B0000D9001928A95E1F7089588EE8093020991 |
:1057C0003EE1309303098BEF809305098AE08093D3 |
:1057D0000609309304093093080985E0809309098C |
:1057E00080E480930A098FE08093070958E0509382 |
:1057F0000B0990E190930C0966E060930D095093BA |
:105800000E0986EE80930F093093100980E880938B |
:10581000110944E64093120988E78093130923E0B5 |
:105820002093140981E28093150983E2809316097D |
:1058300084E1809317091092180990931909109226 |
:105840001A0910921B0910921C0910921D0910923E |
:10585000320910923309109234091092350940939D |
:105860001E0998E290931F0910924E091092200988 |
:105870008AEF80932109209326094093220990936F |
:105880002309109224098093250992E39093270914 |
:105890002AE5209328099093290910924D09209315 |
:1058A0002A0980E580932B0986E480932C0985E5FD |
:1058B00080932D0980932E0980E280932F09809395 |
:1058C0003009909331098FE58093360983EF8093F7 |
:1058D00038098AEA80933A0980933B093093370963 |
:1058E000309339098CEF80933C0940933D09209314 |
:1058F0003E0920933F09209340098BE4809341099E |
:1059000080934209809343091092440960934509AA |
:105910005093460920934709309348094093490919 |
:1059200040934A0984E080934B098CE0ABEBB3E0F1 |
:10593000E3E5F9E00D9001928A95E1F70895681783 |
:1059400079073CF4680F791F77FD04C0CB0195956A |
:10595000879508956F5F7F4FCB0195958795F9CF18 |
:10596000EF92FF920F931F93CF93C82F8B018091DB |
:10597000EF048823A9F4C150CF3F91F07B01E60EDC |
:10598000F71E109314040093130480911304909154 |
:105990001404892BD1F7C7010E949615C15088F7CE |
:1059A000CF911F910F91FF90EF9008952F923F920A |
:1059B0004F925F926F927F928F929F92AF92BF921F |
:1059C000CF92DF92EF92FF920F931F93CF93DF93CB |
:1059D000CDB7DEB7ED970FB6F894DEBF0FBECDBFE3 |
:1059E00020915705309158058091340490913504E9 |
:1059F000281B390B3A8729873093CA092093C90994 |
:105A000020913E0430913F0437FDB4C7359527956A |
:105A1000359527953595279538A72FA33C872B8754 |
:105A2000790120913C0430913D0437FDA0C73595A4 |
:105A3000279535952795359527953DA72CA73E8722 |
:105A40002D87F0928209E0928109309378092093A2 |
:105A500077098091B8099091B909AA2797FDA09577 |
:105A6000BA2F7C018D01EE0CFF1C001F111FE80EE8 |
:105A7000F91E0A1F1B1F80913004909131049C0174 |
:105A8000442737FD4095542FDA01C901880F991F2B |
:105A9000AA1FBB1F880F991FAA1FBB1F820F931F2E |
:105AA000A41FB51F820F931FA41FB51FE80EF91E78 |
:105AB0000A1F1B1F17FD7CC715950795F794E794E0 |
:105AC00015950795F794E794F092B909E092B80913 |
:105AD0008091D4099091D509AA2797FDA095BA2F56 |
:105AE0007C018D01EE0CFF1C001F111FE80EF91E3A |
:105AF0000A1F1B1F80913204909133049C0144279C |
:105B000037FD4095542FDA01C901880F991FAA1F4C |
:105B1000BB1F880F991FAA1FBB1F820F931FA41FB3 |
:105B2000B51F820F931FA41FB51FE80EF91E0A1F91 |
:105B30001B1F17FD34C715950795F794E794159526 |
:105B40000795F794E794F092D509E092D4098091F3 |
:105B50007F0990918009AA2797FDA095BA2F9C01F3 |
:105B6000AD01220F331F441F551F280F391F4A1F35 |
:105B70005B1F80912E0490912F04AA2797FDA0957A |
:105B8000BA2F280F391F4A1F5B1F57FDF6C65595C0 |
:105B90004795379527955595479537952795309390 |
:105BA000800920937F092091300430913104C9018C |
:105BB000880F991F880F991F820F931F820F931FC1 |
:105BC000AA2797FDA095BA2F20913405309135056D |
:105BD0004091360550913705820F931FA41FB51FC2 |
:105BE0008093340590933505A0933605B09337051F |
:105BF0002091320430913304C901880F991F880F16 |
:105C0000991F820F931F820F931FAA2797FDA095BC |
:105C1000BA2F2091300530913105409132055091D5 |
:105C20003305820F931FA41FB51F809330059093F7 |
:105C30003105A0933205B093330580918C09909182 |
:105C40008D092091300430913104820F931F90937D |
:105C50008D0980938C098091CC099091CD09209178 |
:105C6000320430913304820F931F9093CD098093B7 |
:105C7000CC0980914D0590914E05019690934E056B |
:105C800080934D0580917D0890917E0820914B0571 |
:105C900030914C05821B930BAA2797FDA095BA2F34 |
:105CA00020912C0530912D0540912E0550912F0506 |
:105CB000820F931FA41FB51F80932C0590932D0571 |
:105CC000A0932E05B0932F058FEC80937A0010924D |
:105CD000190320901C0530901D0540901E05509022 |
:105CE0001F0539E423163BE6330631E0430630E076 |
:105CF00053060CF414C188E49BE6A1E0B0E08D8368 |
:105D00009E83AF83B88760902405709025058090AE |
:105D100026059090270539E463163BE6730631E0CB |
:105D2000830630E093060CF4DCC488E49BE6A1E033 |
:105D3000B0E089839A83AB83BC8349855A85CA01C5 |
:105D4000AA2797FDA095BA2F20911405309115052B |
:105D50004091160550911705280F391F4A1F5B1FE8 |
:105D60002BA33CA34DA35EA3A090D009B090D10972 |
:105D7000C090D209D090D309A80EB91ECA1EDB1E4E |
:105D8000860175013091DA043AA7332309F0DAC0AD |
:105D90008091D904882309F0C2C44091020949A71F |
:105DA00046FF13C6ECA5FDA5CF01AA2797FDA09538 |
:105DB000BA2FBC01CD0129813A814B815C810E94BF |
:105DC000A3629B01AC0197FD2CC7BBE0559547959D |
:105DD00037952795BA95D1F780918E03E82EFF2449 |
:105DE00000271127C801B7010E94A36297FD14C7BD |
:105DF000ACE09595879577956795AA95D1F76F87CC |
:105E0000788B898B9A8B6093650570936605809378 |
:105E10006705909368052FA138A5C901AA2797FDAA |
:105E2000A095BA2FBC01CD012D813E814F815885AF |
:105E30000E94A3629B01AC0197FD01C7FBE0559551 |
:105E4000479537952795FA95D1F7C801B7010E9474 |
:105E5000A36297FDEFC6DC01CB01ECE0B595A795F9 |
:105E600097958795EA95D1F78093690590936A0590 |
:105E7000A0936B05B0936C05209165053091660584 |
:105E80003093F5082093F4082091690530916A0554 |
:105E90003093F9082093F8082F85388949895A8961 |
:105EA000821B930BA40BB50B8AAF9BAFACAFBDAFFE |
:105EB0008093690590936A05A0936B05B0936C0578 |
:105EC000A80EB91ECA1EDB1E8601750130918D0316 |
:105ED0003BA7332309F0A3C58EA79FA7A8ABB9ABF7 |
:105EE000B7FD61C62EA53FA548A959A95595479567 |
:105EF000379527958BA19CA1ADA1BEA1821B930BC9 |
:105F0000A40BB50B8BA39CA3ADA3BEA380931405D8 |
:105F100090931505A0931605B09317058CC598EBC3 |
:105F2000291694E939069EEF49069FEF59060CF0B1 |
:105F3000F1C328EB34E94EEF5FEF2D833E834F83AF |
:105F40005887E1CE2BA13CA14DA15EA12093140561 |
:105F500030931505409316055093170530910209AB |
:105F600039A71092F9081092F8081092F5081092CB |
:105F7000F408109261051092620510926305109268 |
:105F8000640510925D0510925E0510925F051092F7 |
:105F9000600530918D033BA780916105909162056A |
:105FA000A0916305B0916405BC01CD0124E630E009 |
:105FB00040E050E00E941763DA01C90140915D059D |
:105FC00050915E05481B590B58A34F8F80915D057A |
:105FD00090915E05A0915F05B0916005BC01CD0177 |
:105FE00024E630E040E050E00E941763DA01C90186 |
:105FF0002091610530916205821B930B9AA389A3BE |
:106000008091860390918703A0918803B0918903C2 |
:10601000BC01CD0128E631E040E050E00E94A362DF |
:10602000E616F7060807190744F057016801A61A93 |
:10603000B70AC80AD90A8601750117FDA3C4A09240 |
:10604000D009B092D109C092D209D092D3092CA51F |
:106050003DA58F8D98A1280F391F79010027F7FCE6 |
:106060000095102F8091180590911905A0911A059F |
:10607000B0911B05E80EF91E0A1F1B1F570168018E |
:106080008091DD049091DE04281B390BC901AA27F9 |
:1060900097FDA095BA2F280E391E4A1E5B1E20912F |
:1060A000A0033091A1034091A2035091A3032215B4 |
:1060B00033054405550574F4A8EAEA2EA1E6FA2E44 |
:1060C000012D112DE21AF30A040B150B17012801FB |
:1060D0005701680188279927DC01821B930BA40BC9 |
:1060E000B50B281639064A065B060CF0E9C2F8E53E |
:1060F0002F2EFEE93F2EFFEF4F2EFFEF5F2E220ED9 |
:10610000331E441E551E20921C0530921D054092E0 |
:106110001E0550921F0582017101209218053092D0 |
:10612000190540921A0550921B052FA138A5A9A167 |
:10613000BAA12A0F3B1FA901662757FD6095762F4C |
:106140008091200590912105A0912205B091230511 |
:10615000480F591F6A1F7B1F5A016B018091DB0496 |
:106160009091DC04281B390BC901AA2797FDA09543 |
:10617000BA2F680E791E8A1E9B1E8091A4039091EF |
:10618000A503A091A603B091A7038EAB9FABA8AFC8 |
:10619000B9AF86159705A805B90564F448EA51E634 |
:1061A00060E070E0481B590B6A0B7B0B3A014B0116 |
:1061B0005A016B018EA99FA9A8ADB9ADB095A09564 |
:1061C000909581959F4FAF4FBF4F681679068A060D |
:1061D0009B060CF064C2E8E56E2EEEE97E2EEFEF32 |
:1061E0008E2EEFEF9E2E2EA93FA948AD59AD620E1F |
:1061F000731E841E951E6092240570922505809260 |
:10620000260590922705B401A301609220057092A3 |
:10621000210580922205909223058BA19CA1ADA11E |
:10622000BEA18093280590932905A0932A05B093D9 |
:106230002B05609244057092450580924605909228 |
:10624000470520923C0530923D0540923E05509214 |
:106250003F0540934005509341056093420570937C |
:106260004305E0923805F092390500933A05109302 |
:106270003B05809125039091260397FDA4C37C01E3 |
:10628000F594E794F594E794F594E794F8A6EFA2D3 |
:10629000809123039091240397FD93C38C0115955E |
:1062A000079515950795159507951DA70CA780913E |
:1062B0003804909139040F9734F458E1E52E5CEFDF |
:1062C000F52EF8A6EFA28091380490913904079733 |
:1062D00034F440E3E42E48EFF42EF8A6EFA2209128 |
:1062E00002012A3009F46BC280913804909139047C |
:1062F000815D97400CF007C2809138049091390479 |
:10630000805E974034F080EDE82E87E0F82EF8A606 |
:10631000EFA280913604909137040F9724F408E19E |
:106320001CEF1DA70CA780913604909137040797A6 |
:1063300024F400E318EF1DA70CA72A3009F455C276 |
:106340008091360490913704815D974024F008EEE7 |
:1063500013E01DA70CA78091360490913704805E4E |
:10636000974024F000ED17E01DA70CA7A09197031C |
:10637000AA2309F497C060912503709126038091A8 |
:106380006D0590916E05681B790B20912503309166 |
:106390002603280F391F37FD3FC3359527953093C6 |
:1063A0006E0520936D05613871050CF43AC260E802 |
:1063B00070E070937405609373058A2F9927869F08 |
:1063C000F001879FF00D969FF00D1124CF01F7FD8E |
:1063D00021C37C01F594E794F594E794F594E79450 |
:1063E000F594E7942FA138A5E20EF31EF8A6EFA2CC |
:1063F000409123035091240380916F059091700583 |
:10640000481B590B2091230330912403280F391F77 |
:1064100037FDFDC2359527953093700520936F05A4 |
:10642000413851050CF4F5C140E850E05093720535 |
:10643000409371058A2F9927849FD001859FB00DC5 |
:10644000949FB00D1124AD019D01B7FDDDC28901FE |
:106450001595079515950795159507951595079524 |
:10646000ECA5FDA50E0F1F1F1DA70CA7869F900171 |
:10647000879F300D969F300D1124C901209125036F |
:1064800030912603820F931F909326038093250358 |
:106490008091230390912403480F591F50932403A4 |
:1064A000409323034D855E85141615060CF0C1C17B |
:1064B0008091F4089091F50897FDA2C2AA2797FD54 |
:1064C000A095BA2F6BA5262F332744275527BC014B |
:1064D000CD010E94A36297FD8EC2E6E09595879557 |
:1064E00077956795EA95D1F7AF8DB8A1A60FB71F3D |
:1064F000B0937309A09372094B855C851416150639 |
:106500000CF0C1C18091F8089091F90897FD6FC215 |
:10651000AA2797FDA095BA2F6BA5262F33274427CE |
:106520005527BC01CD010E94A36297FD5BC246E0E6 |
:1065300095958795779567954A95D1F7A9A1BAA1C1 |
:10654000A60FB71FB0936409A093630939A537FD5F |
:10655000C1C11093620900936109F0927509E0923C |
:1065600074098091FE08E82FFF27EE0FFF1FE85304 |
:10657000F74F8081918182599F4FA0910005B09182 |
:106580000105A817B9070CF0EEC0CD010196909354 |
:10659000010580930005DC018091FF08E82FFF27AB |
:1065A000EE0FFF1FE853F74F8081918182599F4F73 |
:1065B0006091FE047091FF04681779070CF0C4C065 |
:1065C000CB0101969093FF048093FE04BC0180915F |
:1065D0000009E82FFF27EE0FFF1FE853F74F8081D8 |
:1065E000918182599F4F4091FC045091FD044817BE |
:1065F00059070CF0D5C0CA0101969093FD04809311 |
:10660000FC04AC0180910109E82FFF27EE0FFF1F6A |
:10661000E853F74F8081918182599F4F2091FA046E |
:106620003091FB04281739070CF0ABC0C901019663 |
:106630009093FB048093FA049C01B7FD93C1AF3F94 |
:10664000B10539F034F08FEF90E09093010580931D |
:10665000000577FD76C16F3F710539F034F08FEF9B |
:1066600090E09093FF048093FE0457FD70C14F3F6C |
:10667000510539F034F08FEF90E09093FD04809352 |
:10668000FC0437FD6AC12F3F310509F00CF4EEC25E |
:106690008FEF90E09093FB048093FA04E7C260923E |
:1066A0002405709225058092260590922705A092D8 |
:1066B0002005B0922105C0922205D0922305ADCDD0 |
:1066C00020921C0530921D0540921E0550921F0518 |
:1066D000A0921805B0921905C0921A05D0921B0518 |
:1066E00024CD98EB691694E979069EEF89069FEF11 |
:1066F00099062CF528EB34E94EEF5FEF29833A83B6 |
:106700004B835C831ACB98EEE92E93E0F92EF8A622 |
:10671000EFA2F2CD2D823E824F825886F4CA8BA121 |
:106720009CA1ADA1BEA18093140590931505A093E3 |
:106730001605B09317059091020999A712CC6982AA |
:106740007A828B829C82F9CA8081918182599F4F83 |
:10675000861797070CF03BCF6115710509F437CF09 |
:10676000CB0101972FCF8081918182599F4F8A174A |
:106770009B070CF011CF109709F40ECFCD010197B4 |
:1067800006CF8081918182599F4F821793070CF029 |
:1067900054CF2115310509F450CFC901019748CFD5 |
:1067A0008081918182599F4F841795070CF02ACFE1 |
:1067B0004115510509F426CFCA0101971ECF8091DA |
:1067C000380490913904835F934034F038EEE32E1F |
:1067D00033E0F32EF8A6EFA28091380490913904AB |
:1067E0008A5F93400CF495CD8ECD809136049091C4 |
:1067F0003704835F934024F008EE13E01DA70CA735 |
:1068000080913604909137048A5F93400CF4AECDAA |
:10681000A9CD3FEF403853070CF008CE40E85FEFBA |
:1068200005CE8FEF603878070CF0C3CD60E87FEFBE |
:10683000C0CD8091F4089091F50897FD9BC1AA27DF |
:1068400097FDA095BA2FEBA52E2F33274427552768 |
:10685000BC01CD010E94A36297FDADC156E09595A4 |
:106860008795779567955A95D1F72F8D38A1261B77 |
:10687000370B30937309209372094B855C8514168E |
:1068800015060CF43FCE8091F8089091F90897FD19 |
:106890006DC1AA2797FDA095BA2FEBA52E2F332700 |
:1068A00044275527BC01CD010E94A36297FD88C1F2 |
:1068B00036E095958795779567953A95D1F729A113 |
:1068C0003AA1261B370B309364092093630939A53D |
:1068D00037FF3FCE4AA5442309F03BCE8091D9042F |
:1068E000882309F036CE8B859C85A1E081309A07FC |
:1068F0000CF044C12B853C854FEF203034070CF061 |
:10690000A3C18FA198A5280F391F3C872B87205042 |
:106910003F4F3093750920937409AD85BE85E1E042 |
:10692000A130BE070CF465C12CA53DA5A20FB31F75 |
:10693000BE87AD87A050B140B0936209A0936109B2 |
:1069400010CE1092FF041092FE0457FF90CE1092CA |
:10695000FD041092FC0437FF96CE1092FB041092B7 |
:10696000FA0484C1109201051092000572CE295FCD |
:106970003F4F5DC8295F3F4F49C82D5F3F4F4F4F85 |
:106980005F4F05C9E60EF71E081F191FE092D009D8 |
:10699000F092D1090093D2091093D30958CB23E088 |
:1069A00030E040E050E0E20EF31E041F151FC3C8A4 |
:1069B00083E090E0A0E0B0E0E80EF91E0A1F1B1F84 |
:1069C0007BC807966BCC07965ACC2BA13CA14DA156 |
:1069D0005EA120931405309315054093160550933E |
:1069E0001705BFCA615C7F4F8F4F9F4FA0CD909519 |
:1069F00081959F4F8DCD615C7F4F8F4F9F4F6DCDA8 |
:106A0000909581959F4F5ACD215F3F4F20CD2F5FAD |
:106A10003F4F00CD0F96DDCC2F5F3F4FBECC2BA15B |
:106A20003CA14DA15EA12093140530931505409320 |
:106A300016055093170589859A85AA2797FDA09575 |
:106A4000BA2F2AAD3BAD4CAD5DAD820F931FA41F95 |
:106A5000B51F8B8B9C8BAD8BBE8BBC01CD0129816F |
:106A60003A814B815C810E94A3629B01AC0197FD3E |
:106A7000BBC06BE055954795379527956A95D1F73B |
:106A800060918F03862F9927AA27BB278F8B988F1A |
:106A9000A98FBA8FBC01CD010E94A36297FD9FC050 |
:106AA0002CE095958795779567952A95D1F76B8F0B |
:106AB0007C8F8D8F9E8F60935D0570935E058093B4 |
:106AC0005F05909360056B897C898D899E892D81F6 |
:106AD0003E814F8158850E94A3629B01AC0197FDC6 |
:106AE00079C08BE055954795379527958A95D1F7CD |
:106AF0006F89788D898D9A8D0E94A36297FD65C0FC |
:106B0000BCE09595879577956795BA95D1F76AAB6F |
:106B10007BAB8CAB9DAB60936105709362058093FA |
:106B200063059093640529853A8537FD7FC021343C |
:106B300031050CF431CA6B8D7C8D8D8D9E8D97FD4A |
:106B40002AC0613871058105910564F46AA97BA9A1 |
:106B50008CA99DA997FD82C06138710581059105B9 |
:106B60000CF41ACA81E08093040516CA90958195A9 |
:106B70009F4F8FCE909581959F4F61CEEFA1F8A545 |
:106B80008E0F9F1F9C878B87805091409093750933 |
:106B900080937409C2CE90958095709561957F4FD2 |
:106BA0008F4F9F4FCECF0196A11DB11D8EA79FA7DE |
:106BB000A8ABB9AB97C9615C7F4F8F4F9F4F4ECE4B |
:106BC000615C7F4F8F4F9F4F73CE6150704F8F4FDF |
:106BD0009F4F96CF2150384F4F4F5F4F82CF61501C |
:106BE000704F8F4F9F4F5CCF2150384F4F4F5F4FAB |
:106BF00040CF4D855E856FEF4030560754F58CA52C |
:106C00009DA5480F591F5E874D8740505F4F509399 |
:106C1000620940936109A5CC6150704F8F4F9F4F1F |
:106C2000E7C82150384F4F4F5F4FCFC8309521955F |
:106C30003F4F7DCF6150704F8F4F9F4F0CC92150F8 |
:106C4000384F4F4F5F4FFAC8F0927509E0927409C0 |
:106C500064CE109362090093610983CC909580956E |
:106C6000709561957F4F8F4F9F4F76CFED960FB602 |
:106C7000F894DEBF0FBECDBFDF91CF911F910F9172 |
:106C8000FF90EF90DF90CF90BF90AF909F908F904C |
:106C90007F906F905F904F903F902F9008958091DC |
:106CA00002018D3009F455C110927A0080913804A8 |
:106CB00090913904909375098093740980913604FA |
:106CC0009091370490936209809361098091340414 |
:106CD000909135049093CA098093C909809130043A |
:106CE000909131049C01442737FD4095542FDA01DF |
:106CF000C901880F991FAA1FBB1F880F991FAA1FC0 |
:106D0000BB1F820F931FA41FB51F820F931FA41FC9 |
:106D1000B51F9093B9098093B8098091320490917E |
:106D200033049C01442737FD4095542FDA01C901F3 |
:106D3000880F991FAA1FBB1F880F991FAA1FBB1F6F |
:106D4000820F931FA41FB51F820F931FA41FB51F8F |
:106D50009093D5098093D40980912E0490912F04AB |
:106D60009093800980937F098FEC80937A008091C3 |
:106D7000FE08E82FFF27EE0FFF1FE853F74F808133 |
:106D8000918182599F4FA0910005B0910105A817EC |
:106D9000B9070CF085C0CD01019690930105809351 |
:106DA0000005DC018091FF08E82FFF27EE0FFF1F91 |
:106DB000E853F74F8081918182599F4F6091FE0483 |
:106DC0007091FF04681779070CF096C0CB0101960B |
:106DD0009093FF048093FE04BC0180910009E82F8A |
:106DE000FF27EE0FFF1FE853F74F808191818259F3 |
:106DF0009F4F4091FC045091FD04481759070CF037 |
:106E00006CC0CA0101969093FD048093FC04AC0110 |
:106E100080910109E82FFF27EE0FFF1FE853F74F7E |
:106E20008081918182599F4F2091FA043091FB0417 |
:106E3000281739070CF042C0C90101969093FB0452 |
:106E40008093FA049C01B7FD7FC0AF3FB10511F0FC |
:106E50000CF061C077FD67C06F3F710539F034F009 |
:106E60008FEF90E09093FF048093FE0457FD61C084 |
:106E70004F3F510539F034F08FEF90E09093FD04CF |
:106E80008093FC0437FD5BC02F3F310509F00CF403 |
:106E900063C08FEF90E09093FB048093FA045CC092 |
:106EA0008081918182599F4F8A179B070CF07ACF7E |
:106EB000109709F477CFCD0101976FCF8081918131 |
:106EC00082599F4F821793070CF0BDCF21153105D2 |
:106ED00009F4B9CFC9010197B1CF8081918182595D |
:106EE0009F4F841795070CF093CF4115510509F476 |
:106EF0008FCFCA01019787CF8081918182599F4F9F |
:106F0000861797070CF069CF6115710509F465CFF5 |
:106F1000CB0101975DCF8FEF90E0909301058093B7 |
:106F2000000577FF99CF1092FF041092FE0457FFDF |
:106F30009FCF1092FD041092FC0437FFA5CF109252 |
:106F4000FB041092FA0408C010920105109200058B |
:106F500081CF0E944D1AA8CE80912D099927AA278A |
:106F6000BB27BC01CD0124EC39E040E050E00E9499 |
:106F7000A362DC01CB018093A4039093A503A093AB |
:106F8000A603B093A70380912E099927AA27BB27B0 |
:106F9000BC01CD010E94A362DC01CB018093A00360 |
:106FA0009093A103A093A203B093A30308956F92BB |
:106FB0007F928F929F92AF92BF92CF92DF92EF9289 |
:106FC000FF920F931F93CF9300E010E078016801C8 |
:106FD00010921104469A1093520500935105109394 |
:106FE000500500934F0510934C0500934B051093EB |
:106FF0005C0500935B0510935A05009359051093A7 |
:10700000580500935705109396090093950910921F |
:107010008F0310928E0310922C040E944F3684E648 |
:1070200090E00E94A3150E944F368091020980FFD4 |
:1070300010C080911D0390911E03875B934008F060 |
:107040007BC080911D0390911E038E5E924008F4D8 |
:1070500073C0CFE18AE090E00E94A31580913404D0 |
:1070600090913504080F191F8091380490913904CC |
:10707000E80EF91E8091360490913704C80ED91E8F |
:10708000C150C7FFE7CFA701405F5F4F56954795B7 |
:107090005695479550935C0540935B059601205F9C |
:1070A0003F4F369527953695279530935A0520936F |
:1070B0005905C801409696958795929582958F704F |
:1070C00089279F708927909358058093570590933F |
:1070D0009609809395093093560520935505509352 |
:1070E00054054093530544E050E0DA010E943263B6 |
:1070F000802D853020F18091D4099091D50997FD9C |
:1071000053C06CE070E00E94E2627093500560939F |
:107110004F058091B8099091B90997FD56C06CE070 |
:1071200070E00E94E2627093520560935105809175 |
:107130007D0890917E084DC00E94FB198ACFDA012C |
:107140000E943263802D9927982F8827DA011196A3 |
:107150000E943263202D820F911D909352058093DF |
:107160005105DA0112960E943263802D9927982FDB |
:107170008827DA0113960E943263202D820F911D19 |
:107180009093500580934F05DA0114960E94326364 |
:10719000802D9927982F8827DA0115960E9432634F |
:1071A000202D820F911D15C0909581959F4F6CE009 |
:1071B00070E00E94E2627093500560934F058091E9 |
:1071C000B8099091B90997FFAACF909581959F4FE3 |
:1071D000A6CF90934C0580934B05109275091092A1 |
:1071E000740910926209109261091092CA091092F2 |
:1071F000C90984E690E00E94A31580913004909123 |
:107200003104AA2797FDA095BA2F9C01AD01220F4A |
:10721000331F441F551F220F331F441F551F280FB4 |
:10722000391F4A1F5B1F280F391F4A1F5B1F3093EE |
:10723000B9092093B8098091320490913304AA27A8 |
:1072400097FDA095BA2F7C018D01EE0CFF1C001F4D |
:10725000111FEE0CFF1C001F111FE80EF91E0A1F64 |
:107260001B1FE80EF91E0A1F1B1FF092D509E092A2 |
:10727000D40980911009682E772488249924C901A3 |
:107280009C01442737FD4095542FC401B3010E944F |
:10729000A3625B016C016093440570934505809384 |
:1072A0004605909347059701442737FD4095542F95 |
:1072B000C401B3010E94A362DC01CB0180933C05B1 |
:1072C00090933D05A0933E05B0933F05A092200505 |
:1072D000B0922105C0922205D09223058093180513 |
:1072E00090931905A0931A05B0931B0510921405ED |
:1072F00010921505109216051092170580911F0324 |
:1073000090912003A0912103B091220390938008D3 |
:1073100080937F08109229041092280410922B0465 |
:1073200010922A0410920C0510920D0510920E0571 |
:1073300010920F0580910A0590910B059093090515 |
:10734000809308050E94EA5A82E390E09093140427 |
:107350008093130480912D099927AA27BB27BC018C |
:10736000CD0124EC39E040E050E00E94A362DC0152 |
:10737000CB018856954CAF4FBF4F8093A403909399 |
:10738000A503A093A603B093A70380912E09992784 |
:10739000AA27BB27BC01CD010E94A362DC01CB015F |
:1073A0008856954CAF4FBF4F8093A0039093A10395 |
:1073B000A093A203B093A30310928B0310928A03AD |
:1073C00080910A0590910B05AA2797FDA095BA2FE9 |
:1073D000209186033091870340918803509189035F |
:1073E000BC01CD010E94A362DC01CB018093D009D6 |
:1073F0009093D109A093D209B093D30910920305B9 |
:107400001092020581E0809301010E94BC5E809190 |
:10741000C00484608093C0048FEF80933B0A109275 |
:107420003C0A80E280933D0A8091FE08E82FFF2706 |
:10743000EE0FFF1FE853F74F8081918182599F4FD4 |
:1074400090930105809300058091FF08E82FFF27A6 |
:10745000EE0FFF1FE853F74F8081918182599F4FB4 |
:107460009093FF048093FE0480910009E82FFF278A |
:10747000EE0FFF1FE853F74F8081918182599F4F94 |
:107480009093FD048093FC0480910109E82FFF276D |
:10749000EE0FFF1FE853F74F8081918182599F4F74 |
:1074A0009093FB048093FA0484E68093F904CF91CF |
:1074B0001F910F91FF90EF90DF90CF90BF90AF9012 |
:1074C0009F908F907F906F9008959091EF049923F3 |
:1074D00081F58091C0048C7F8093C00410C0A92FD7 |
:1074E000BB27FD01E458F84F8083FD01E458F84FB5 |
:1074F0008081A554B64F8C939F5F9C3080F480911F |
:10750000F203882361F3A92FBB27FD01E458F84F4C |
:107510008081A554B64F8C939F5F9C3080F38091FF |
:10752000F203882359F08091F20381508093F20393 |
:1075300005C08091C00481608093C0048091BB0924 |
:10754000992790935208809351088091BC099927FC |
:1075500090935408809353088091BE099927909383 |
:107560005608809355088091BD0999279093580833 |
:107570008093570810926104109260040E94FE26C6 |
:107580000895809105098B3F68F08B3F09F48AC20A |
:107590008C3F09F423C38D3F09F4D5C28E3F21F4FB |
:1075A0008091FA0480939C03809104098B3F08F436 |
:1075B00013C28B3F09F40EC28C3F09F4FDC28D3F0C |
:1075C00009F4D3C28E3F09F448C380919D038823F8 |
:1075D00009F007C280939D03809106098B3F08F450 |
:1075E00007C28B3F09F402C28C3F09F4FAC28D3FF7 |
:1075F00009F4BEC28E3F09F42AC380919B038823FD |
:1076000009F0FBC180939B03809108098B3F68F0D0 |
:107610008B3F09F44AC28C3F09F4D1C28D3F09F473 |
:1076200095C28E3F21F48091FA0480939A03809151 |
:107630000A098B3F68F08B3F09F42BC28C3F09F499 |
:10764000CAC28D3F09F47CC28E3F21F48091FA04B6 |
:1076500080939803809111098B3F68F08B3F09F468 |
:107660001BC28C3F09F4B1C28D3F09F475C28E3F35 |
:1076700021F48091FA0480939903809112098B3F41 |
:1076800008F4C2C18B3F09F4BDC18C3F09F488C224 |
:107690008D3F09F464C28E3F09F4D6C280919603EF |
:1076A0008B3008F4B6C18F3F11F48093960380911C |
:1076B00013098B3F68F08B3F09F4F1C18C3F09F44B |
:1076C0006CC28D3F09F457C28E3F21F48091FA04B9 |
:1076D00080939503809114098B3F68F08B3F09F4E8 |
:1076E000CFC18C3F09F45FC28D3F09F447C28E3F82 |
:1076F00021F48091FA0480939703209119092B3F7C |
:1077000008F48BC12B3F09F486C12C3F09F442C217 |
:107710002D3F09F439C22E3F09F49CC220919303F6 |
:1077200080911A098B3F08F07FC18093D404809127 |
:107730001B098B3F68F08B3F09F4A8C18C3F09F40B |
:1077400038C28D3F09F40EC28E3F21F48091FA04B5 |
:107750008093D30480911C098B3F68F08B3F09F420 |
:10776000A7C18C3F09F42EC28D3F09F4F2C18E3FB0 |
:1077700021F48091FA048093D20480911D098B3FFB |
:1077800068F08B3F09F497C18C3F09F40FC28D3F1D |
:1077900009F4F7C18E3F21F48091FA048093D1045B |
:1077A000809132098B3F68F08B3F09F487C18C3F91 |
:1077B00009F42FC28D3F09F4A5C18E3F21F48091B9 |
:1077C000FA048093D004809133098B3F68F08B3F9B |
:1077D00009F477C18C3F09F41FC28D3F09F495C1AC |
:1077E0008E3F21F48091FA048093CF048091340974 |
:1077F0008B3F68F08B3F09F46DC18C3F09F40FC2D9 |
:107800008D3F09F479C18E3F21F48091FA04809371 |
:10781000CE04809135098B3F68F08B3F09F45DC140 |
:107820008C3F09F4FFC18D3F09F469C18E3F21F4FB |
:107830008091FA048093CD0480911E098B3F68F0FB |
:107840008B3F09F44DC18C3F09F4D1C18D3F09F440 |
:107850006BC18E3F21F48091FA0480939203809152 |
:1078600022098B3F68F08B3F09F43DC18C3F09F43E |
:10787000C1C18D3F09F45BC18E3F21F48091FA04B0 |
:1078800080939103809127098B3F68F08B3F09F427 |
:10789000EBC08C3F09F4B1C18D3F09F43FC18E3F6D |
:1078A00021F48091FA048093900380912A098B3F00 |
:1078B00068F08B3F09F4DBC08C3F09F4A1C18D3F18 |
:1078C00009F42FC18E3F21F48091FA0480938F0335 |
:1078D00080912B098B3F68F08B3F09F4CBC08C3F24 |
:1078E00009F491C18D3F09F413C18E3F21F48091B9 |
:1078F000FA0480938E0380912C098B3F68F08B3FB4 |
:1079000009F4BBC08C3F09F481C18D3F09F403C168 |
:107910008E3F21F48091FA0480938D038091310988 |
:107920008B3F68F08B3F09F4CFC08C3F09F47DC1D9 |
:107930008D3F09F4DBC08E3F21F48091FA048093DF |
:107940008C03809137098B3F08F47EC08B3F09F48C |
:1079500079C08C3F09F448C18D3F09F4EBC08E3FDC |
:1079600009F46CC180918E09823008F472C08F3F97 |
:1079700011F480938E09809139098B3F08F46DC012 |
:107980008B3F09F468C08C3F09F455C18D3F09F461 |
:10799000D4C08E3F09F455C18091C709823008F4E4 |
:1079A00061C08F3F11F48093C70980914C098B3FD0 |
:1079B00070F08B3F09F48BC08C3F09F439C18D3FC7 |
:1079C00009F497C08E3F09F04BC18091FA0480936F |
:1079D000D90946C18091000580939D03882309F44D |
:1079E000F9CD843608F4F8CD84E6F4CD8091000515 |
:1079F00080939B03882309F405CE843608F404CED3 |
:107A000084E600CE80910005809396038B3008F0C9 |
:107A10004ACE8AE04ACE20910005209393038091BC |
:107A20001A098B3F08F481CE8B3F69F18C3F09F432 |
:107A3000CFC08D3F09F4ABC08E3F09F078CE809166 |
:107A4000FA0473CE8091000580938E09823008F08D |
:107A50008ECF81E08ECF809100058093C709823060 |
:107A600008F09FCF81E09FCF809100051CCF8091CF |
:107A700000052CCF809100053CCF809100054CCFB4 |
:107A80008091000538CE809100054FCE8091000591 |
:107A90005FCE80910005DCCD80910005ECCD80911A |
:107AA000000516CE809100057DCD80910005BDCDED |
:107AB0008091000560CE8091000570CE8091000518 |
:107AC00080CE8091000590CE8091000538CF8091C6 |
:107AD00000057DCF809100059ACE80910005AACE49 |
:107AE00080910005BACE80910005CACE8091FC0439 |
:107AF00026CF8091FC046BCF8091FC0488CE8091CE |
:107B0000FC0498CE8091FC045CCE8091FC046CCE89 |
:107B10008091FC04EECE8091FC04FECE8091FC04AA |
:107B2000C2CE8091FC04D2CE8091FC0496CE80918E |
:107B3000FC04A6CE8091FC0487CF8091FC048DCFFD |
:107B40008091FC0485CD8091FC042CCD8091FC04B7 |
:107B50006CCD8091FC040FCE8091FC048CCD809183 |
:107B6000FC0452CF8091FC04F3CD8091FC0434CF0F |
:107B70008091FC043DCF8091FC04AACD8091FC044F |
:107B8000BACD8091FC040ACE2091FC0446CF8091AE |
:107B9000FC04CBCD2091FE0440CF8091FE0498CD13 |
:107BA0008091FE0431CF8091FE04A5CD8091FE042A |
:107BB000F5CD8091FE04CCCD8091FE040DCF809157 |
:107BC000FE0433CD8091FE04D6CD8091FE0453CDCA |
:107BD0008091FE04AACD8091FE043ACD8091FE04EE |
:107BE000E1CC8091FE0404CF8091FE042DCF8091E2 |
:107BF000FE0433CE8091FE0443CE8091FE0453CE2A |
:107C00008091FE0463CE8091FE0473CE8091FE04C9 |
:107C100083CE8091FE04D5CD8091FE04E5CD809188 |
:107C2000FE04F5CD8091FE0405CE8091FE0487CE42 |
:107C30008091FE04CCCE8091FE040FCF8091FA0497 |
:107C400003CF8091FA0409CF8091FA04DDCE8091B0 |
:107C5000FA04CECE2091FA04E0CE8091FA04BCCE94 |
:107C600033272F5F3F4F8CE398E2B9010E94E26215 |
:107C700070939F0360939E0380910F098093C809BE |
:107C800080910E098093790908952F923F924F9227 |
:107C90005F926F927F928F929F92AF92BF92CF929C |
:107CA000DF92EF92FF920F931F93CF93DF93CDB7A5 |
:107CB000DEB7C856D0400FB6F894DEBF0FBECDBFBA |
:107CC0000E94D62C209102012C3008F0A2C2299AE1 |
:107CD000A090F004B090F104B9A2A8A28091790913 |
:107CE00099270A96A816B90614F499A388A3809137 |
:107CF000F904843608F08FC280910F03882309F4B9 |
:107D00006FC48091910590919205009711F40C94A5 |
:107D1000AB4A019790939205809391052A3011F414 |
:107D20000C94B64A243111F40C94B64A28988091E8 |
:107D3000C1049091C204895E934010F40C94A74A48 |
:107D400080911609282F332739A328A38091C004D6 |
:107D500080618093C0048091FA08A82FBB27AA0FE6 |
:107D6000BB1FFD01E252F74F118210828091FB0888 |
:107D7000282F3327220F331FC9018252974FFC014E |
:107D800011821082A853B74F11961C921E9228534D |
:107D9000374FD90111961C921E928091FD08E82F51 |
:107DA000FF27EE0FFF1FE853F74F118210828091DB |
:107DB0008403815080938403809184038F3F21F05A |
:107DC0008091C00484FF21C40E94C13A8091A20521 |
:107DD0009091A305AC01440F551F480F591FE09027 |
:107DE000FA08AE2DBB27AA0FBB1FFD01E853F74FC2 |
:107DF000D0900B090D2D112780819181809FF0017A |
:107E0000819FF00D909FF00D11244E0F5F1F57FFC3 |
:107E100002C00C949A565595479555954795A25290 |
:107E2000B74F80910C09682F77278D919C91869F81 |
:107E30009001879F300D969F300D1124240F351F20 |
:107E40003093A3052093A2058091CE059091CF0594 |
:107E50004091CA055091CB05840F951F281B390B03 |
:107E60003093F7042093F6048091A4059091A50522 |
:107E7000AC01440F551F480F591FF090FB08AF2D60 |
:107E8000BB27AA0FBB1FFD01E853F74F80819181EB |
:107E9000809F5001819FB00C909FB00C11244A0D1F |
:107EA0005B1D57FF02C00C94965655954795559506 |
:107EB0004795A252B74F8D919C91869F9001879FC5 |
:107EC000300D969F300D1124240F351F3093A505DA |
:107ED0002093A4058091CC059091CD054091C805D3 |
:107EE0005091C905840F951F281B390B3093F50459 |
:107EF0002093F4048091FD08E82FFF27EE0FFF1F69 |
:107F0000E853F74F80819181909581959F4F833001 |
:107F1000910514F40C94444A02979093F3048093CF |
:107F2000F2048091FC08E82FFF27EE0FFF1FE853B3 |
:107F3000F74F0081118108581F4F809196039927B0 |
:107F4000AA2797FDA095BA2FBC01CD010E944B62D4 |
:107F5000DC01CB0120E030E040E251E4BC01CD0186 |
:107F60000E94EC61DC01CB01BC01CD010E942E62BC |
:107F7000DC01CB018093CE096091950380936C095D |
:107F80006093830980919E0780FF06C08091D90984 |
:107F9000813810F00C94B94A1093F1040093F00466 |
:107FA0008091F0049091F10497FF02C00C949056D8 |
:107FB000F09102096196FFAF6197F2FD02C00C9447 |
:107FC0008E4A109297094091F6045091F704CA0125 |
:107FD00057FF02C00C94994A95958795959587957A |
:107FE00097FF02C00C94A24A2091C5043091C604A8 |
:107FF0002817390714F00C944C4ACA0157FF02C0E5 |
:108000000C94BE5797FF02C00C94BB57BC017595EA |
:108010006795759567956536710514F40C944F4A0C |
:1080200064E670E04091F4045091F504CA0157FDF4 |
:1080300002C00C94584A0396959587959595879517 |
:1080400097FD02C00C94604A909581959F4F2091B6 |
:10805000C3043091C4042817390714F40C94694AF6 |
:10806000215030408091C00484FD02C00C94844AA9 |
:108070001092C6041092C5041092C4041092C30456 |
:10808000EF2DFF27EE0FFF1FE853F74F4091280910 |
:10809000242F3327808191812817390734F4809168 |
:1080A0004D0982FF02C00C942D4BEF2DFF27EE0FE0 |
:1080B000FF1FE853F74F842F992720912909821B2E |
:1080C0009109208131812817390714F41092D804BE |
:1080D000EF2DFF27EE0FFF1FE853F74F842F99274F |
:1080E00022273327281B390B808191818217930720 |
:1080F00034F480914D0983FF02C00C94284B809189 |
:10810000D704882391F0EF2DFF27EE0FFF1FE853D0 |
:10811000F74F809129099927841B9109208131818A |
:108120008217930714F40C94554BEE2DFF27EE0F96 |
:10813000FF1FE853F74F242F3327808191812817A1 |
:10814000390734F480914D0980FF02C00C94224B12 |
:108150005091D504552399F0EE2DFF27EE0FFF1F08 |
:10816000E853F74F842F992720912909821B910901 |
:10817000208131812817390714F40C945D4BEE2DC2 |
:10818000FF27EE0FFF1FE853F74F842F9927222771 |
:108190003327281B390B808191818217930734F490 |
:1081A00080914D0981FF02C00C941D4B8091D60433 |
:1081B000882391F0EE2DFF27EE0FFF1FE853F74FB6 |
:1081C000809129099927841B910920813181821787 |
:1081D000930714F40C94594B8091D804882331F4FC |
:1081E0008091D704882311F40C941A4B91E0552305 |
:1081F00031F48091D604882311F40C94384B81E03B |
:108200008093DA041092D9041092D8041092D70403 |
:1082100001C229985DCD8091F9048D3808F4C7CD4D |
:108220008091C0048F7E8093C0049091170982E3EF |
:10823000989FC00111249093920580939105E8A125 |
:10824000F9A1B99714F00C943E4B8091C104909120 |
:10825000C2048F3F910519F010F00C9484561092CF |
:108260007505109276051092770510927805109298 |
:10827000790510927A0510927B0510927C058A3F51 |
:10828000910511F40C94EB583091FC08E32FFF2773 |
:10829000EE0FFF1FE853F74F8081918181359105E3 |
:1082A0000CF4E9C04091EF04442309F0E4C080914C |
:1082B000FD08E82FFF27EE0FFF1FE853F74F8081DF |
:1082C00091818C34910514F40C9428588091930575 |
:1082D0008F5F893C10F40C9425592C3010F00C94CD |
:1082E000915929981092EF04109293051092C204AC |
:1082F0001092C104E090FA08EE2DFF27EE0FFF1F49 |
:10830000E853F74F808191818734910514F00C94E4 |
:108310009459F090FB08EF2DFF27EE0FFF1FE85355 |
:10832000F74F808191810190F081E02DF7FF02C02D |
:108330000C944F5AE734F1050CF470C021E0AF2DD6 |
:10834000BB27AA0FBB1FA853B74F8D919C911197C4 |
:108350008734910544F0EE2DFF27EE0FFF1FE85301 |
:10836000F74F808191818D919C918734910564F0C4 |
:10837000EE2DFF27EE0FFF1FE853F74F808191810D |
:10838000873491050CF022E0EF2DFF27EE0FFF1F41 |
:10839000E853F74F808191818634910564F4EE2D86 |
:1083A000FF27EE0FFF1FE853F74F8081918187343D |
:1083B00091050CF023E0EF2DFF27EE0FFF1FE85390 |
:1083C000F74F808191818A5B9F4F64F4EE2DFF27E8 |
:1083D000EE0FFF1FE853F74F80819181873491059D |
:1083E0000CF024E0EF2DFF27EE0FFF1FE853F74FAF |
:1083F000808191818A5B9F4F64F4EE2DFF27EE0F01 |
:10840000FF1FE853F74F80819181863491050CF46A |
:1084100025E0822F0E94F503F090FB08EF2DFF2747 |
:10842000EE0FFF1FE853F74F808191810190F0819B |
:10843000E02DF7FF02C00C94245A7E9714F00C94A0 |
:108440005B598091FA08E82FFF27EE0FFF1FE853D2 |
:10845000F74F808191818A5B9F4F14F00C945B5998 |
:1084600081E08093920788EE93E0909314048093C8 |
:1084700013043091FC08E32FFF27EE0FFF1FE85392 |
:10848000F74F808191818B5A9F4F0CF090CCD09008 |
:10849000FD08ED2DFF27EE0FFF1FE853F74F8081FA |
:1084A0009181855B9F4F14F00C94905780919405B7 |
:1084B0008F5F893C10F40C94BB5888EC8093940532 |
:1084C00081E090E09093C2048093C10481E08093A6 |
:1084D000EF0410927D0510927E0510927F05109298 |
:1084E0008005109214051092150510921605109231 |
:1084F0001705109210051092110510921205109296 |
:10850000130580911009E82EFF2400271127809180 |
:10851000B8099091B9099C01442737FD4095542F23 |
:10852000C801B7010E94A362DC01CB01809324053E |
:1085300090932505A0932605B09327058091D40933 |
:108540009091D5099C01442737FD4095542FC801CF |
:10855000B7010E94A362DC01CB0180931C059093BC |
:108560001D05A0931E05B0931F05809144059091B1 |
:108570004505A0914605B09147058093200590934D |
:108580002105A0932205B093230580913C0590918D |
:108590003D05A0913E05B0913F058093180590934D |
:1085A0001905A0931A05B0931B051092750510923A |
:1085B0007605109277051092780510927905109241 |
:1085C0007A0510927B0510927C051092D8091092C2 |
:1085D000D7098091C00488608093C0040C9492579E |
:1085E00080911203909113038F5F9F4F09F089CB05 |
:1085F00088E99AE3909314048093130480E09CE04C |
:1086000090931303809312037CCBA0900209619690 |
:10861000AFAE61970091D90466960FAF66970023BD |
:1086200021F48091DA04882369F080912709992741 |
:1086300028A139A18217930714F499A388A381E094 |
:10864000809304058091C00484FF18C71092F3043E |
:108650001092F2041092F7041092F6041092F504AE |
:108660001092F4049AE59093CE0988E780939709D5 |
:1086700090936C0960968FAF6097809383091092F6 |
:10868000D9041092DA0466961FAE66972091880985 |
:108690003091890940918A0950918B098091440554 |
:1086A00090914505A0914605B09147058FAB98AFD5 |
:1086B000A9AFBAAF280F391F4A1F5B1F80918F09DE |
:1086C00090919009A0919109B0919209A0903C05D8 |
:1086D000B0903D05C0903E05D0903F05ABAEBCAE1E |
:1086E000CDAEDEAE8A0D9B1DAC1DBD1DC0907B09BD |
:1086F000D0907C09E0907D09F0907E09A396CCAEE5 |
:10870000DDAEEEAEFFAEA397E0904005F0904105E0 |
:1087100000914205109143052496ECAEFDAE0EAFDC |
:108720001FAF2497A396ACACBDACCEACDFACA39787 |
:10873000AE0CBF1CC01ED11EA396ACAEBDAECEAE5D |
:10874000DFAEA397C0906D09D0906E09E0906F09DD |
:10875000F09070096F96CCAEDDAEEEAEFFAE6F97C7 |
:10876000E0903805F090390500913A0510913B05ED |
:108770002F96ECAEFDAE0EAF1FAF2F976F96ACAC41 |
:10878000BDACCEACDFAC6F97AE0CBF1CC01ED11E13 |
:108790006F96ACAEBDAECEAEDFAE6F97B090DA04E2 |
:1087A0006596BFAE6597BB2009F0FFC566960FAD15 |
:1087B0006697002309F0F9C580938F09909390097B |
:1087C000A0939109B0939209209388093093890965 |
:1087D00040938A0950938B0980917D0890917E087F |
:1087E000815092400CF0A0C48091EF04882309F0DE |
:1087F0009BC480912604909127048F3F910509F036 |
:1088000008F4A1C56596EFAD6597EE2309F05FC743 |
:108810006696FFAD6697FF2309F059C700910405DE |
:1088200067960FAF6797002309F051C71091300981 |
:1088300062961FAF6297112309F449C7A3962CAD26 |
:108840003DAD4EAD5FADA39720937B0930937C097E |
:1088500040937D0950937E096F968CAD9DADAEAD72 |
:10886000BFAD6F9780936D0990936E09A0936F09C8 |
:10887000B09370098091880990918909A0918A0923 |
:10888000B0918B09B7FF02C00C94E959292E3A2EFA |
:108890004B2E552447FC5A9420928809309289091E |
:1088A00040928A0950928B0980918F09909190098A |
:1088B000A0919109B0919209B7FF02C00C94D659CA |
:1088C000892F9A2FAB2FBB27A7FDBA958FA398A707 |
:1088D000A9A7BAA780938F0990939009A0939109B3 |
:1088E000B093920980911009E82EFF2400271127E8 |
:1088F000209134053091350540913605509137056A |
:10890000C801B7010E94A36297FF02C00C94D0591E |
:10891000672E782E892E992487FC9A942091300511 |
:10892000309131054091320550913305C801B701AE |
:108930000E94A36297FF02C00C941C5AA72EB82E67 |
:10894000C92EDD24C7FCDA94D201C101861997092A |
:10895000A809B90920912F09E22EFF240027112729 |
:10896000BC01CD01A80197010E94176339014A019A |
:108970006B962CAF3DAF4EAF5FAF6B978FA198A5B5 |
:10898000A9A5BAA58A199B09AC09BD09BC01CD01ED |
:10899000A80197010E941763D401C30197FE02C08A |
:1089A0000C94165A892F9A2FAB2FBB27A7FDBA9587 |
:1089B000BC01DA01C90157FF02C00C94105A892F7B |
:1089C0009A2FAB2FBB27A7FDBA952C018091C50428 |
:1089D0009091C60481349105D4F48091C3049091A0 |
:1089E000C404813491059CF48091FD08E82FFF2791 |
:1089F000EE0FFF1FE853F74F808191810190F081C6 |
:108A0000E02DF7FF02C00C94545A7A9734F080910D |
:108A10003B0A8F3F11F40C9498592496ECACFDACB2 |
:108A20000EAD1FAD2497AFA8B8ACC9ACDAACEA184C |
:108A3000FB080C091D09E0928105F0928205009364 |
:108A40008305109384052F962CAD3DAD4EAD5FADE3 |
:108A50002F978BAD9CADADADBEAD281B390B4A0B2E |
:108A60005B0B2BA73CA74DA75EA7209385053093F2 |
:108A700086054093870550938805E0928905F0921A |
:108A80008A0500938B0510938C0520938D053093F8 |
:108A90008E0540938F05509390058091200590910D |
:108AA0002105A0912205B09123058E199F09A00BE5 |
:108AB000B10B8093200590932105A0932205B093DC |
:108AC00023058091180590911905A0911A05B09180 |
:108AD0001B05821B930BA40BB50B80931805909379 |
:108AE0001905A0931A05B0931B0562969FAD629776 |
:108AF000992371F120910205309103052138310548 |
:108B000094F08091570590915805019690935805DF |
:108B100080935705809195099091960901969093BD |
:108B200096098093950920583F4F94F480915705FA |
:108B3000909158050197909358058093570580911F |
:108B400095099091960901979093960980939509BC |
:108B50001092030510920205E1E0F0E0A996FFAF44 |
:108B6000EEAFA997D801C70117FF02C00C94075AAE |
:108B700081509240A040B04034F024E030E0A9960B |
:108B80003FAF2EAFA9978091AC059091AD05A09114 |
:108B9000AE05B091AF05A0908809B0908909C0904A |
:108BA0008A09D0908B098A199B09AC09BD09815E9D |
:108BB000914BAF4FBF4F8F539C49A040B04010F432 |
:108BC0000C94295930903C0A48E1431514F00C9458 |
:108BD0007D59A9968EAD9FADA9979093A7058093D7 |
:108BE000A605B1E0EB16B0E1FB06B0E00B07B0E084 |
:108BF0001B0714F40C9435598091A805882311F4AF |
:108C00000C94CB597093DC046093DB04D801C7014A |
:108C100017FF02C00C94B75A9C01AD01B7FF02C008 |
:108C20000C94B15AB9E05595479537952795BA9563 |
:108C3000D1F78091A6059091A705820F931F90937D |
:108C4000A7058093A605A801970117FF02C00C9401 |
:108C5000AB5A39014A01A3E09594879477946794BD |
:108C6000AA95D1F76B966CAE7DAE8EAE9FAE6B972C |
:108C7000E9E86E16E3E17E06E0E08E06E0E09E069F |
:108C800064F0F8E86F2EF3E17F2E812C912C6B9627 |
:108C90006CAE7DAE8EAE9FAE6B97D401C30197FED6 |
:108CA00002C00C94A55A892F9A2FAB2FBB27A7FD82 |
:108CB000BA95680F791FF0E0EF16F0EFFF06FFEFAF |
:108CC0000F07FFEF1F0714F00C9439598091A90585 |
:108CD000882311F40C94EF597093DC046093DB0447 |
:108CE000D801C70117FF02C00C949C5A9C01AD012A |
:108CF000B7FF02C00C94965A69E055954795379591 |
:108D000027956A95D1F78091A6059091A705820FC6 |
:108D1000931F9093A7058093A605A801970117FFBD |
:108D200002C00C947D5A39014A0143E0959487941E |
:108D3000779467944A95D1F728E762162CEE72066D |
:108D40002FEF82062FEF920644F438E7632E3CEEB5 |
:108D5000732E3FEF832E3FEF932E60929A05709211 |
:108D60009B0580929C0590929D05D401C30197FEBE |
:108D700002C00C94775A892F9A2FAB2FBB27A7FDDF |
:108D8000BA956091DB047091DC04680F791F6296DC |
:108D90005FAD6297252F33278091A6059091A70597 |
:108DA0002817390724F43093A7052093A60533200C |
:108DB00079F0232D332727FD30958091A6059091DA |
:108DC000A7052817390724F43093A7052093A60593 |
:108DD00081E8E816F1040105110574F080915B0546 |
:108DE00090915C052091A6053091A705820F931FF5 |
:108DF00090935C0580935B0590E8E9169FEFF90678 |
:108E00009FEF09079FEF190774F480915B0590911C |
:108E10005C052091A6053091A705821B930B9093CA |
:108E20005C0580935B05A1E0B0E0A996BFAFAEAF53 |
:108E3000A9978BA59CA5ADA5BEA5B7FF02C00C94B4 |
:108E4000C25981509240A040B04034F004E010E09C |
:108E5000A9961FAF0EAFA99720E030E040E050E0A8 |
:108E60006090B0057090B1058090B2059090B30508 |
:108E7000E0908F09F090900900919109109192096A |
:108E80006E187F08800A910A8FE19EE4A0E0B0E0AE |
:108E9000680E791E8A1E9B1E9FE369169CE979065F |
:108EA00090E0890690E0990628F0A8E1A31514F057 |
:108EB0000C94AE59A996EEADFFADA997F093A70516 |
:108EC000E093A6058BA59CA5ADA5BEA581509041BC |
:108ED000A040B04014F40C944F598091AA05882307 |
:108EE00011F40C94DC595092DE044092DD048BA501 |
:108EF0009CA5ADA5BEA5B7FF02C00C948D5AB7FFC7 |
:108F000002C00C94875AF9E0B595A7959795879577 |
:108F1000FA95D1F7A9962EAD3FADA997280F391F25 |
:108F20003093A7052093A6052BA53CA54DA55EA5CE |
:108F300057FF02C00C94685AE3E055954795379562 |
:108F40002795EA95D1F7293883E1380780E048076B |
:108F500080E0580714F40C94295A88E893E1A0E0C3 |
:108F6000B0E080939E0590939F05A093A005B093D9 |
:108F7000A10580919E0590919F05A091A005B091BB |
:108F8000A105B7FF02C00C94715A892F9A2FAB2FFD |
:108F9000BB27A7FDBA954090DD045090DE04480E33 |
:108FA000591E2BA53CA54DA55EA5203080EF3807A6 |
:108FB0008FEF48078FEF580714F00C944B598091AE |
:108FC000AB05882311F40C94025A5092DE044092AF |
:108FD000DD04DA01C90157FF02C00C945F5A9C01FD |
:108FE000AD01B7FF02C00C94495AB9E055954795B9 |
:108FF00037952795BA95D1F78091A6059091A70549 |
:10900000820F931F9093A7058093A6052BA53CA5DF |
:109010004DA55EA557FF02C00C94435AA3E0559599 |
:10902000479537952795AA95D1F728379CEE3907AC |
:109030009FEF49079FEF590714F00C94335A88E7C4 |
:109040009CEEAFEFBFEF80939E0590939F05A0939A |
:10905000A005B093A10580919E0590919F05A091D8 |
:10906000A005B091A105B7FF02C00C943D5A892F0D |
:109070009A2FAB2FBB27A7FDBA954090DD045090E7 |
:10908000DE04480E591E6296BFAD62972B2F332720 |
:109090008091A6059091A7052817390724F43093ED |
:1090A000A7052093A605332079F0232D332727FD2C |
:1090B00030958091A6059091A7052817390724F4CB |
:1090C0003093A7052093A6052BA53CA54DA55EA52D |
:1090D000213831054105510574F080915905909171 |
:1090E0005A052091A6053091A705820F931F9093F2 |
:1090F0005A05809359058BA59CA5ADA5BEA58058A2 |
:109100009F4FAF4FBF4F0CF0FAC28091590590911D |
:109110005A052091A6053091A705821B930B9093C9 |
:109120005A0580935905EBC290903B0A6FEF961653 |
:1091300011F40C94C75680911009A82EBB24CC249E |
:10914000DD246FA978AD89AD9AADA60195010E9485 |
:10915000176379018A018091B8099091B909AA270A |
:1091600097FDA095BA2FE81AF90A0A0B1B0B6BADF5 |
:109170007CAD8DAD9EADA60195010E94176359018E |
:109180006A018091D4099091D509AA2797FDA095ED |
:10919000BA2FA81AB90ACA0ADB0A292C332427FCD9 |
:1091A0003094432C532CC201B101A80197010E94B5 |
:1091B000A36297FD87C23B014C01F9E09594879427 |
:1091C00077946794FA95D1F7C201B101A601950190 |
:1091D0000E94A36297FF02C00C9401585B016C01CE |
:1091E000E9E0D594C794B794A794EA95D1F7809114 |
:1091F000C5049091C604813491053CF48091C30468 |
:109200009091C40481349105C4F0D401C30197FE48 |
:1092100002C00C94C7583C014D01959487947794F3 |
:109220006794D601C501D7FE02C00C94C2585C01F8 |
:109230006D01D594C794B794A7948091FD08E82F49 |
:10924000FF27EE0FFF1FE853F74F808191810190B8 |
:10925000F081E02DF7FF02C00C94FC577A97A4F040 |
:10926000C401B30123E030E040E050E00E94176306 |
:1092700039014A01C601B50123E030E040E050E089 |
:109280000E94176359016A0180913D0A282F3327F4 |
:1092900027FD3095432F532F2615370548055905CF |
:1092A00014F439014A01992787FD9095909581958D |
:1092B0009F4FAA2797FDA095BA2F681679068A06B0 |
:1092C0009B0614F43C014D012A153B054C055D0538 |
:1092D00014F459016A01A816B906CA06DB0614F48B |
:1092E0005C016D018091240590912505A0912605D2 |
:1092F000B091270586199709A809B9098093240513 |
:1093000090932505A0932605B093270580911C0511 |
:1093100090911D05A0911E05B0911F058A199B090A |
:10932000AC09BD0980931C0590931D05A0931E05F3 |
:10933000B0931F0580912604909127048F3F9105DB |
:1093400011F008F05FCAA396ACACBDACCEACDFACFC |
:10935000A397A0927B09B0927C09C0927D09D0921C |
:109360007E096F96CCACDDACEEACFFAC6F97C092D3 |
:109370006D09D0926E09E0926F09F0927009D09059 |
:1093800097092B96DFAE2B970091040567960FAFD8 |
:1093900067970091F2041091F304C80117FF13C2FC |
:1093A00088279927801B910B0EC2109234051092CA |
:1093B000350510923605109237051092300510923F |
:1093C00031051092320510923305109288091092DF |
:1093D000890910928A0910928B0910928F091092B4 |
:1093E000900910929109109292096F961CAE1DAED1 |
:1093F0001EAE1FAE6F9720E030E040E050E0A39635 |
:109400002CAF3DAF4EAF5FAFA397809124059091F5 |
:109410002505A0912605B0912705809320059093FE |
:109420002105A0932205B093230580911C059091FE |
:109430001D05A0911E05B0911F05809318059093FE |
:109440001905A0931A05B0931B05109227041092DA |
:1094500026041092DC041092DB041092DE041092B9 |
:10946000DD0465963FAD6597332309F0C2C9669662 |
:109470004FAD6697442309F0BCC9AEC9309183094A |
:1094800060963FAF609702C90FEF8E3F90070CF0D8 |
:10949000E9C002960C948D3FB90161507040409133 |
:1094A000F4045091F504CA0157FF02C00C941B400C |
:1094B000959587959595879597FF02C00C942440C4 |
:1094C0002091C3043091C4042817390714F00C9478 |
:1094D0003040CA0157FF02C00C94B65797FF02C034 |
:1094E0000C94C3579C0135952795359527952536BE |
:1094F000310514F40C94324024E630E08091C0042D |
:1095000084FF02C00C9438403093C4042093C304F9 |
:109510007093C6046093C5040C944040609397090F |
:109520004091F6045091F704CA0157FD02C00C9413 |
:10953000EC3F0396959587959595879597FD02C085 |
:109540000C94F43F909581959F4F0C94F43F1092AA |
:10955000EF040C94D73E1092EF048091C0048F7EEC |
:109560008093C0042A3011F00C94923E289A0C94F7 |
:10957000973E80919707992787FD90954D2D552708 |
:10958000849F9001859F300D949F300D1124C90157 |
:109590002091F6043091F704820F931F9093F70403 |
:1095A0008093F60480919807992787FD9095849F72 |
:1095B000D001859FB00D949FB00D1124CD01209155 |
:1095C000F4043091F504820F931F9093F504809377 |
:1095D000F40480919907992787FD90952091F204D2 |
:1095E0003091F304820F931F9093F3048093F2045D |
:1095F00080919B07282F332727FD309580910709FD |
:109600009927289FF001299FF00D389FF00D112414 |
:10961000F0938B03E0938A0380919A079927801730 |
:10962000910714F00C94CC3F9093F1048093F004D4 |
:109630000C94D03F982F0C94F74081E08093D6048F |
:109640000C94EC4081E08093D504582F0C94BF40DB |
:1096500081E08093D7040C94954081E08093D804F6 |
:109660000C9468401092F3041092F2040C94913F11 |
:109670009093D9048093DA040C940A438091EF0408 |
:10968000882311F40C9425418091C1049091C20467 |
:10969000FFEF8F3F9F0711F40C942941019690939F |
:1096A000C2048093C1040C9429411092D7040C94F5 |
:1096B00095401092D6040C94EC401092D50450E0E2 |
:1096C0000C94BF4061507E4F8F4F9F4F74CD60E030 |
:1096D00070E02B011092040567961FAE6797A0906B |
:1096E0008809B0908909C0908A09D0908B09E090D0 |
:1096F0008F09F09090090091910910919209F091D1 |
:1097000097092B96FFAF2B97FF2311F00C941C5653 |
:109710001092DE041092DD041092DC041092DB043F |
:10972000A092AC05B092AD05C092AE05D092AF0547 |
:10973000E092B005F092B1050093B2051093B30525 |
:1097400010923405109235051092360510923705A7 |
:1097500010923005109231051092320510923305A7 |
:1097600010922C0510922D0510922E0510922F05A7 |
:10977000109288091092890910928A0910928B0917 |
:1097800010928F09109290091092910910929209EB |
:1097900010927B0910927C0910927D0910927E092B |
:1097A00010926D0910926E0910926F091092700953 |
:1097B00010922704109226040091F2041091F304F1 |
:1097C000C80117FDEDCD409774F028EE33E03093DB |
:1097D000A9032093A80361963FAD619734FD03C0B0 |
:1097E00081E080939905B0900D09CB2CDD24EE2407 |
:1097F000FF24B801882777FD8095982F980117FFDF |
:1098000002C00C946A56442737FD4095542F0E949D |
:10981000A3629B01AC01C701B6010E94A36297FF3E |
:1098200002C00C946456E9E0959587957795679505 |
:10983000EA95D1F79B018B2D9927809FA001819FED |
:10984000500D909F500D1124CA0157FF02C00C9477 |
:109850005C569595879595958795280F391FC90171 |
:10986000AA2797FDA095BA2F80937D0590937E053A |
:10987000A0937F05B09380052091140530911505C4 |
:109880004091160550911705281B390B4A0B5B0BAD |
:10989000213563EC360760E0460760E0560714F4B4 |
:1098A0000C94805580E593ECA0E0B0E08093140523 |
:1098B00090931505A0931605B09317058091140594 |
:1098C00090911505A0911605B0911705805B9C43FA |
:1098D000AF4FBF4F64F480EB9CE3AFEFBFEF8093DB |
:1098E000140590931505A0931605B0931705609085 |
:1098F0000A0570900B056114710411F40C94A354C3 |
:109900006196FFAD6197F3FD02C00C94A3548FA93B |
:1099100098ADA9ADBAADB7FF02C00C94C65769E0C7 |
:10992000B595A795979587956A95D1F76C0197FF9F |
:1099300002C00C94EC578BAD9CADADADBEADB7FF86 |
:1099400002C00C94E65759E0B595A7959795879571 |
:109950005A95D1F7BC0197FF02C00C94D957C6168F |
:10996000D7060CF46B01B601D7FE02C00C94D55794 |
:109970001B013594279435942794359427940894A3 |
:10998000211C311C3CE1A32E32E0B32E6A0C7B1C5F |
:1099900073010027F7FC0095102F24EE3DEF620EB7 |
:1099A000731E8090D0099090D109A090D209B090F8 |
:1099B000D3098091860390918703A0918803B09189 |
:1099C000890328968CAF9DAFAEAFBFAF2897C50176 |
:1099D000B40128962CAD3DAD4EAD5FAD28970E94E9 |
:1099E0001763E21AF30A040B150BC801B70128E646 |
:1099F00031E040E050E00E941763DC01CB018C01B4 |
:109A0000045B10404090C9095090CA09C20157FE3A |
:109A100002C00C94CF578138910514F000E010E09B |
:109A2000A091A803B091A9036496BFAFAEAF6497AD |
:109A3000AB2BA1F4B9E1CB16D10484F480910205DB |
:109A400090910305800F911F909303058093020569 |
:109A500080919905882311F00C949A58C801880FB9 |
:109A6000991F880F991F880F991FB1010E94E26208 |
:109A70009B01442737FD4095542F280D391D4A1D61 |
:109A80005B1D2093D0093093D1094093D2095093A4 |
:109A9000D309F09099036F2D77276C9DC0016D9DC0 |
:109AA000900D7C9D900D112497FF02C00C94CC5713 |
:109AB0006C01D594C794D594C794D594C794D59484 |
:109AC000C794D594C7946C197D096B0177FF02C0C8 |
:109AD0000C94DE576496EEADFFAD6497EF2B11F05A |
:109AE0000C9407580091C5041091C6048091C304DA |
:109AF0009091C404080F191F17FF02C00C9412594B |
:109B0000159507951595079515950795005C1F4FB9 |
:109B1000CA01B90128962CAD3DAD4EAD5FAD289779 |
:109B20000E941763DA01C9012091080530910905E7 |
:109B3000442737FD4095542F821B930BA40BB50B84 |
:109B4000845E9D4FAF4FBF4FBC01CD0128E631E091 |
:109B500040E050E00E941763DC01CB01845B904041 |
:109B60008C9D50018D9DB00C9C9DB00C1124C501A5 |
:109B7000B8010E94E26283E0F89E60011124C616DB |
:109B8000D70614F00C941358B601CB01AA2797FD01 |
:109B9000A095BA2F20911405309115054091160516 |
:109BA00050911705820F931FA41FB51F80931405B2 |
:109BB00090931505A0931605B0931705809198050D |
:109BC00081508F3F09F4C8C68093980567961FADF2 |
:109BD0006797112381F01092790510927A051092FF |
:109BE0007B0510927C0510927505109276051092F7 |
:109BF00077051092780565962FAD6597222309F0B9 |
:109C0000AEC72B963FAD2B97832F9927AA27BB274B |
:109C1000BC01CD012FA938AD49AD5AAD0E94A36258 |
:109C2000DC01CB01BC01CD0128EF3AE240E050E07D |
:109C30000E9417633BA32AA366964FAD6697442301 |
:109C400009F08AC72B965FAD2B97852F9927AA27F6 |
:109C5000BB27BC01CD012BAD3CAD4DAD5EAD0E942F |
:109C6000A362DC01CB01BC01CD0128EF3AE240E068 |
:109C700050E00E9417633DA32CA30091630910914B |
:109C80006409093C11050CF45FC708EC10E010935F |
:109C9000640900936309E0907209F090730989ECFC |
:109CA000E816F1040CF445C7E8ECEE2EF12CF09226 |
:109CB0007309E09272098091740990917509AA273D |
:109CC00097FDA095BA2F2091CE09A22EBB24CC24BB |
:109CD000DD24BC01CD01A60195010E94A3629B0178 |
:109CE000AC01C801AA2797FDA095BA2F67E0880F9D |
:109CF000991FAA1FBB1F6A95D1F7280F391F4A1F4A |
:109D00005B1F57FDB1C786E0559547953795279559 |
:109D10008A95D1F72AA03BA0220E331E41018091E3 |
:109D2000610990916209AA2797FDA095BA2FBC01FD |
:109D3000CD01A60195010E94A3629B01AC01C70160 |
:109D4000AA2797FDA095BA2F07E0880F991FAA1F91 |
:109D5000BB1F0A95D1F7280F391F4A1F5B1F57FDFC |
:109D60007EC716E055954795379527951A95D1F7F3 |
:109D7000ACA1BDA1A20FB31F2A96BFAFAEAF2A9769 |
:109D80006D01440C551CC201AA2797FDA095BA2F5E |
:109D900020916C09332744275527BC01CD010E942F |
:109DA000A3627B018C0197FD51C7B6E0159507951D |
:109DB000F794E794BA95D1F760963FAD6097832FFB |
:109DC0009927AA27BB272091280530912905409182 |
:109DD0002A0550912B05BC01CD010E94A362DC0134 |
:109DE000CB01BC01CD0120EF35E540E050E00E9401 |
:109DF00017632701420E531EC20141E0241640E4BE |
:109E0000340624F0212CA0E43A2E410150E025161E |
:109E100050EC35060CF088C6212CF0EC3F2E309229 |
:109E20007509209274092A96AEADBFAD2A97A1504C |
:109E3000B0443CF000E010E42A961FAF0EAF2A9722 |
:109E400068012A962EAD3FAD2A972050304C0CF079 |
:109E500066C6A0E0B0EC2A96BFAFAEAF2A97B0932B |
:109E60006209A0936109B1E04B16B0E45B0624F0EF |
:109E7000412CE0E45E2EC201E0E04E16E0EC5E060E |
:109E80000CF048C6412C70EC572E5092CA094092F3 |
:109E9000C90980915E048823C1F08091C10490912A |
:109EA000C2040297C09788F4A8A0B9A01A141B0492 |
:109EB00064F481E090E09093C2048093C1048091A7 |
:109EC0007909C82EDD24D9A2C8A2E8A0F9A0EE0C19 |
:109ED000FF1CEE0CFF1CF9A2E8A28091CE04282FF3 |
:109EE000332780912E0490912F04289F8001299F71 |
:109EF000100D389F100D1124C80164E670E00E9417 |
:109F0000E262CB01AA2797FDA095BA2F6090EB04DF |
:109F10007090EC048090ED049090EE04681A790A39 |
:109F20008A0A9B0A609266097092670980926809A2 |
:109F30009092690961961FAD619710FFA0C26E01F2 |
:109F40000894C11CD11C8FE1E6ECF3E0D60101902E |
:109F50000D928A95E1F7EFA8F8AC09AD1AAD17FD9F |
:109F60000BC72BAD3CAD4DAD5EAD57FDF8C6E20E57 |
:109F7000F31E041F151F9091CD0484E6989FC00125 |
:109F800011249C01442737FD4095542FC801B70187 |
:109F90000E9417632E3131054105510524F02DE152 |
:109FA00030E040E050E0C20ED31EF6018081A82EC2 |
:109FB000BB24CC24DD24AFA6B8AAC9AADAAA809112 |
:109FC000CF04082F1127000F111F000F111F8091C0 |
:109FD0004B0590914C05801B910BAA2797FDA095EE |
:109FE000BA2F47E0880F991FAA1FBB1F4A95D1F7C8 |
:109FF000BC01CD01A60195010E94176360912E045A |
:10A0000070912F0480914B0590914C05680F791F3A |
:10A01000621B730B601B710B77FD9EC6161617062D |
:10A0200014F461507040CB01AA2797FDA095BA2F78 |
:10A0300020910C0530910D0540910E0550910F05B2 |
:10A04000820F931FA41FB51F80930C0590930D05DD |
:10A05000A0930E05B0930F0580910C0590910D050E |
:10A06000A0910E05B0910F05B7FD81C6892F9A2FDB |
:10A07000AB2FBB27A7FDBA9520910C0530910D059C |
:10A0800040910E0550910F05281B390B4A0B5B0BB5 |
:10A0900020930C0530930D0540930E0550930F054A |
:10A0A00080910C0590910D05A0910E05B0910F05C2 |
:10A0B0008058914CAF4FBF4F0CF07FC580E891ECBA |
:10A0C000AFEFBFEF80930C0590930D05A0930E05A5 |
:10A0D000B0930F05709372086093710880912A0401 |
:10A0E00090912B0480912A0490912B0420919D0340 |
:10A0F0002FAFE090E304F090E4040091E5041091A8 |
:10A10000E604E60CF71C081D191D20918609309104 |
:10A1100087092F5F3F4F8091D0049927880F991F9F |
:10A12000281739070CF435C5442737FD4095542FBF |
:10A13000C801B7010E94176359016A013FADE32EC0 |
:10A14000FF24002711278091E7049091E804A09153 |
:10A15000E904B091EA04A4019301281B390B4A0BCE |
:10A160005B0BC801B7010E94A362DC01CB01909395 |
:10A170002904809328041092870910928609A092DE |
:10A18000E704B092E804C092E904D092EA04109285 |
:10A19000E3041092E4041092E5041092E604809126 |
:10A1A00028049091290497FD06C56C01D594C794A5 |
:10A1B000D594C794D594C794D594C794E0900C05D2 |
:10A1C000F0900D0500910E0510910F0517FDBBC510 |
:10A1D00087E015950795F794E7948A95D1F78091D4 |
:10A1E0009A03282F332744275527C801B7010E9417 |
:10A1F000A36297FDA3C505E095958795779567952B |
:10A200000A95D1F7693C71050CF40EC568EC70E055 |
:10A21000C60ED71ED0929409C09293097093680815 |
:10A2200060936708809128049091290490936A08AC |
:10A23000809369086196AFAD6197A1FFD1C4809109 |
:10A240009C03823308F04CC58091C50381508F3F39 |
:10A2500009F4A2C78093C5036092DF047092E00402 |
:10A260008092E1049092E204109205058091C0046E |
:10A2700084FF08C01092DF041092E0041092E10401 |
:10A280001092E20480910505882309F46BC42091A3 |
:10A29000DF043091E0048091660990916709281BE2 |
:10A2A000390B3093B4092093B30980919B0399270C |
:10A2B000829F5001839FB00C929FB00C1124C50166 |
:10A2C000B7FC90C65C01B594A794B594A794B092DE |
:10A2D000B209A092B109E090B405F090B5050091E3 |
:10A2E000B6051091B705E114F1040105110509F057 |
:10A2F000FEC428A139A13093D8092093D7098091B1 |
:10A30000D7099091D8098A0D9B1D8C199D09AA2700 |
:10A3100097FDA095BA2FBC01CD012FA538A949A959 |
:10A320005AA90E94A36297FD62C6B7E095958795EA |
:10A3300077956795BA95D1F79B0180919605909195 |
:10A340009705AC01440F551F440F551F440F551F6F |
:10A35000481B590B420F531F57FD46C6559547954D |
:10A360005595479555954795BA0180910309282F32 |
:10A370003327220F331F220F331F4217530774F462 |
:10A3800088A199A18217930714F0A901B901A8A186 |
:10A39000B9A1A217B30714F4AD01BD01E8A1F9A159 |
:10A3A000E417F5070CF0B7C4AF01F0939705E093FD |
:10A3B000960559A348A38091C00481FF54C0E114BD |
:10A3C000F10401051105C9F4E8A0F9A0C701AA2705 |
:10A3D00097FDA095BA2FBC01CD0120E630E140E009 |
:10A3E00050E00E94A3627B018C016093B4057093DE |
:10A3F000B5058093B6059093B70527E030E0C20E0F |
:10A40000D31E3FE0C316D10470F5C801B70120E6A2 |
:10A4100030E140E050E00E94F562E21AF30A040BDA |
:10A42000150B48A159A1CA01AA2797FDA095BA2FDB |
:10A4300027E0880F991FAA1FBB1F2A95D1F7BC01DF |
:10A44000CD012FA538A949A95AA90E941763E20E88 |
:10A45000F31E041F151FE092B405F092B50500939A |
:10A46000B6051093B705C801B70120E630E140E01A |
:10A4700050E00E94F56230936C0820936B08809046 |
:10A48000C809882D9927880F991F880F991F805513 |
:10A490009040A8A1B9A18A179B0714F499A388A397 |
:10A4A000E8A1F9A1F0934808E093470880917D0561 |
:10A4B00090917E05A0917F05B0918005880F991F2E |
:10A4C000AA1FBB1F880F991FAA1FBB1F8201081B51 |
:10A4D000190BE13AF1050CF406C3CF01F7FD55C4A1 |
:10A4E00095958795801791070CF48C01909581952F |
:10A4F0009F4F081719070CF48C01282D3327220FC2 |
:10A50000331F220F331FC901A8A0B9A08A199B09C4 |
:10A51000801791070CF48C0168A179A1621B730B61 |
:10A52000061717070CF48B018091F6049091F7043D |
:10A530007101E81AF90AF0928509E09284092B96D4 |
:10A54000BFAC2B97BB2009F4C8C2CAA0DBA0C81AB5 |
:10A55000D90AC601AA2797FDA095BA2F20917505A3 |
:10A56000309176054091770550917805820F931FC1 |
:10A57000A41FB51F8093750590937605A09377056A |
:10A58000B093780560917505709176058091770597 |
:10A590009091780561302AEF720720E0820720E071 |
:10A5A000920774F080E09AEFA0E0B0E08093750528 |
:10A5B00090937605A0937705B0937805BC01CD0103 |
:10A5C000603036E073073FEF83073FEF930774F483 |
:10A5D00080E096E0AFEFBFEF80937505909376052E |
:10A5E000A0937705B0937805BC01CD01C0909E0380 |
:10A5F000D0909F039601442737FD4095542F0E9429 |
:10A6000017635701A20EB31E90908C03692D772714 |
:10A6100088279927980117FD52C337FD4AC33595FE |
:10A62000279548A159A1240F351F442737FD409590 |
:10A63000542F0E94A36297FD37C356E095958795E6 |
:10A64000779567955A95D1F79B016A157B050CF4B0 |
:10A650005B0166277727621B730BA616B7060CF4FF |
:10A660005B018091F4049091F5042A96EEACFFAC66 |
:10A670002A97E81AF90AF0926009E0925F092B968E |
:10A680005FAD2B97552309F422C2ACA1BDA1A81B35 |
:10A69000B90BFD01CF01AA2797FDA095BA2F2091F4 |
:10A6A000790530917A0540917B0550917C05820FA8 |
:10A6B000931FA41FB51F8093790590937A05A093EB |
:10A6C0007B05B0937C056091790570917A05809146 |
:10A6D0007B0590917C056130FAEF7F07F0E08F07F2 |
:10A6E000F0E09F0774F080E09AEFA0E0B0E0809384 |
:10A6F000790590937A05A0937B05B0937C05BC0106 |
:10A70000CD01603026E072072FEF82072FEF92070E |
:10A7100074F480E096E0AFEFBFEF809379059093FB |
:10A720007A05A0937B05B0937C05BC01CD01960111 |
:10A73000442737FD4095542F0E9417636701C20ECE |
:10A74000D31E692D772788279927980117FD91C275 |
:10A7500037FD95C23595279548A159A1240F351F7E |
:10A76000442737FD4095542F0E94A36297FD97C25E |
:10A7700026E095958795779567952A95D1F79B0162 |
:10A780006C157D050CF46B0166277727621B730B34 |
:10A79000C616D7060CF46B01C501AA2797FDA09534 |
:10A7A000BA2F8BAB9CABADABBEAB80917909A82F18 |
:10A7B000BB27A596BFAFAEAFA597E82DFF27A796FD |
:10A7C000FFAFEEAFA797BBEBAB2EB9E0BB2EA7EE6A |
:10A7D000EA2EA5E0FA2E1601442437FC4094542CAE |
:10A7E0003801882477FC8094982CFBE0FEA3F8E9DC |
:10A7F000CF2EF9E0DF2EF701258512160CF082C06E |
:10A8000008A119A1C801AA2797FDA095BA2F33273F |
:10A8100027FD3095432F532FBC01CD010E94A36229 |
:10A8200097FD7CC0E6E09595879577956795EA95C5 |
:10A83000D1F78B01F7018685282F332727FD309527 |
:10A84000432F532F6BA97CA98DA99EA90E94A362B7 |
:10A8500097FD74C056E095958795779567955A95BD |
:10A86000D1F7060F171FF7018785282F332727FDFC |
:10A870003095432F532FC201B1010E94A36297FD6F |
:10A8800058C046E095958795779567954A95D1F795 |
:10A89000060F171FF7018089282F332727FD3095D2 |
:10A8A000432F532FC401B3010E94A362DC01CB01EB |
:10A8B000B7FD3BC036E0B595A795979587953A9536 |
:10A8C000D1F7F60160817181800F911F0E949F2C4A |
:10A8D000D6018D939C9397FD26C08C011595079505 |
:10A8E00015950795A596EEADFFADA5970E171F0719 |
:10A8F00064F48F01D5010C9343C6F7012585121628 |
:10A900000CF47ECFF50110823BC6A7962EAD3FAD6D |
:10A91000A7972017310774F78901ECCF615C7F4F4F |
:10A920008F4F9F4F7FCF0396D8CFCF96A11DB11DDC |
:10A93000C1CF615C7F4F8F4F9F4FA3CF615C7F4F33 |
:10A940008F4F9F4F87CF4090C9095090CA0980917F |
:10A950009805815008F038C988E180939805809166 |
:10A9600010099927880F991F880F991F7C010027CC |
:10A97000F7FC0095102F6FA978AD89AD9AADA801AD |
:10A9800097010E94176330933A08209339086BAD02 |
:10A990007CAD8DAD9EADA80197010E9417633093E9 |
:10A9A0003C0820933B088091B8099091B90997FD24 |
:10A9B000DBC2959587959595879590933E088093F2 |
:10A9C0003D088091D4099091D50997FDCBC295950A |
:10A9D0008795959587959093400880933F0850926E |
:10A9E00042084092410880916609909167099093CE |
:10A9F00044088093430880917D0890917E0890934D |
:10AA000046088093450870924A08609249088091F0 |
:10AA100027039091280390934C0880934B088091D2 |
:10AA2000F904992790934E0880934D088091D0099E |
:10AA30009091D109A091D209B091D30920918603B8 |
:10AA4000309187034091880350918903BC01CD0167 |
:10AA50000E9417633093500820934F0880912A0476 |
:10AA600090912B0490935E0880935D0880919207EB |
:10AA700099279093600880935F0880913F0A9927F7 |
:10AA800087FD9095909366088093650880913C0AB5 |
:10AA9000992787FD90959093700880936F08809117 |
:10AAA0003E0A992790937408809373088091CE058D |
:10AAB0009091CF0590937608809375088091CC058E |
:10AAC0009091CD0590937808809377087FC8C7014F |
:10AAD000AA2797FDA095BA2FE2CDC701AA2797FD17 |
:10AAE000A095BA2F3BCD0135110514F000E510E01B |
:10AAF000FFEF003B1F070CF000CD00EB1FEFFDCC7C |
:10AB000020931405309315054093160550931705AF |
:10AB10000C945E4C9093CA098093C909BAC9D0922B |
:10AB20006209C09261099FC9909275098092740967 |
:10AB30007AC998E3E9169FEFF9060CF0BCC878E3F0 |
:10AB4000E72E7FEFF72EB3C86FEF083316070CF030 |
:10AB5000A2C808E31FEF9BC81DA21CA28EC81BA29F |
:10AB60001AA26AC810920C0510920D0510920E05DB |
:10AB700010920F05A8A0B9A0B0929705A0929605D3 |
:10AB8000E090B405F090B5050091B6051091B705B9 |
:10AB900012CC3093870920938609E092E304F09267 |
:10ABA000E4040093E5041093E60480912804909156 |
:10ABB000290497FFFACA0F96F8CA80910C05909164 |
:10ABC0000D05A0910E05B0910F0581589E43A04040 |
:10ABD000B0400CF47FCA80E89EE3A0E0B0E072CA07 |
:10ABE00081E08093050520919C0380918A039091D8 |
:10ABF0008B03820F911D209107093327829FF0015B |
:10AC0000839FF00D929FF00D1124CF014497AA2746 |
:10AC100097FDA095BA2F8093DF049093E004A09352 |
:10AC2000E104B093E20422CB9FEF683379070CF084 |
:10AC3000EFCA68E37FEFECCA5092DE044092DD0475 |
:10AC40007093DC046093DB040C94904B2FE330E0B2 |
:10AC500040E050E0E20EF31E041F151FA6C8215C61 |
:10AC60003F4F4F4F5F4F7DC8215C3F4F4F4F5F4F6E |
:10AC70004AC822273327201B310B37FF6BCD2F5FAC |
:10AC80003F4F3595279548A159A1240F351F4427DB |
:10AC900037FD4095542F0E94A36297FF69CD615CF8 |
:10ACA0007F4F8F4F9F4F64CD615C7F4F8F4F9F4F82 |
:10ACB000C4CC2F5F3F4FB3CC03960C94294C222772 |
:10ACC0003327201B310BA9CC61507E4F8F4F9F4FF4 |
:10ACD0000C94134C22273327201B310B0C94034C6C |
:10ACE00081E08093050588EC8093C503BFCAC80145 |
:10ACF000B70120E630E140E050E00E94F562309379 |
:10AD0000D8092093D709FBCA8091C0048260809340 |
:10AD1000C0040C944441709397056093960549CB09 |
:10AD20001092F1041092F0040C94D83F4D5F5F4FE5 |
:10AD30000C94553F4D5F5F4F0C940B3F615E7F4F0E |
:10AD40008F4F9F4F58CA8FE790E0A0E0B0E0E80E29 |
:10AD5000F91E0A1F1B1F3CCA6F5F7F4F5FC95095CA |
:10AD60004095309521953F4F4F4F5F4F00C981501F |
:10AD70009F4FAF4FBF4F7AC910950095F094E09464 |
:10AD8000E11CF11C011D111DECC80196A9CB80919D |
:10AD90001009E82EFF24002711276FA978AD89AD8F |
:10ADA0009AADA80197010E94176339014A01809169 |
:10ADB000B8099091B909AA2797FDA095BA2F681AEA |
:10ADC000790A8A0A9B0A6BAD7CAD8DAD9EADA80158 |
:10ADD00097010E94176359016A018091D4099091EB |
:10ADE000D509AA2797FDA095BA2FA81AB90ACA0AA9 |
:10ADF000DB0AD401C30197FC19C23C014D0154E0A8 |
:10AE000095948794779467945A95D1F7D601C501A4 |
:10AE1000D7FC10C25C016D0144E0D594C794B7948F |
:10AE2000A7944A95D1F78091C5049091C6048134C6 |
:10AE300091050CF404C1C401B30123E030E040E00B |
:10AE400050E00E94176339014A01C601B50123E0B1 |
:10AE500030E040E050E00E94176359016A018091A0 |
:10AE6000FD08E82FFF27EE0FFF1FE853F74F808103 |
:10AE700091810190F081E02DF7FDD0C17A97A4F087 |
:10AE8000C401B30123E030E040E050E00E941763CA |
:10AE900039014A01C601B50123E030E040E050E04D |
:10AEA0000E94176359016A0181E2681671048104E6 |
:10AEB00091042CF030E2632E712C812C912C90EEB9 |
:10AEC00069169FEF79069FEF89069FEF990644F474 |
:10AED00020EE622E2FEF722E2FEF822E2FEF922E6A |
:10AEE000A1E2AA16B104C104D1042CF090E2A92E6B |
:10AEF000B12CC12CD12CB0EEAB16BFEFBB06BFEF0F |
:10AF0000CB06BFEFDB0614F00C94724980EEA82E3E |
:10AF10008FEFB82E8FEFC82E8FEFD82E0C9472497A |
:10AF200010929405ED2DFF27EE0FFF1FE853F74F0A |
:10AF3000808191818C3491058CF0809195058F5F93 |
:10AF4000893C08F41BC11092EF0488EC80939505AE |
:10AF50001092C2041092C1040C94D73E1092950531 |
:10AF60000C94D73E039633CD039623CD90958195CF |
:10AF70009F4F0C946E4A03960C94064090958195D1 |
:10AF80009F4F0C94024003960C94724A81509E4F3E |
:10AF9000AF4FBF4F0C948F4C4F960C94584D882751 |
:10AFA0009927841995090C940B4D695F7F4F0C9478 |
:10AFB000B84C709561957F4F0C94AF4C84EF91E045 |
:10AFC0009093A9038093A8030C94DE4D81509E4F6B |
:10AFD000AF4FBF4F0C94A34CD094C194D108D394DD |
:10AFE0000C949B4C03966EC9495F5F4FB7C961587B |
:10AFF0007F4F8F4F9F4F99C9F095E195FF4F0C946C |
:10B000002E4961507E4F8F4F9F4F0C94EE486496AF |
:10B010000EAD1FAD6497015010401093A90300932B |
:10B02000A8030C94DE4D882799278C199D09681771 |
:10B03000790714F00C94C54DBC010C94C54D80915A |
:10B04000C3049091C404813491050CF408CFF3CE6D |
:10B0500080819181855B9F4F0CF0F3C080919305B7 |
:10B060008F5F80939305893C10F40C943B422C3005 |
:10B0700008F0E8C12998A4E0B0E08FEF082E0E9404 |
:10B080003F631092EF04109293051092C204109245 |
:10B09000C1040E94D737A4E0B0E08091510590919F |
:10B0A000520597FD09C2892F990F990B082E0E940E |
:10B0B0003F63A5E0B0E08091510590915205082EC4 |
:10B0C0000E943F63A6E0B0E080914F05909150054B |
:10B0D00097FDEFC1892F990F990B082E0E943F63AE |
:10B0E000A7E0B0E080914F0590915005082E0E9496 |
:10B0F0003F63A8E0B0E080914B0590914C0597FD2F |
:10B10000EDC1892F990F990B082E0E943F63A9E08A |
:10B11000B0E080914B0590914C05082E0E943F6352 |
:10B120000E94300468E770E00E94B02C3091FC0867 |
:10B130000C943B4288EC90E09093140480931304A9 |
:10B14000C301AA2797FDA095BA2FBC01CD0128966F |
:10B150002CAD3DAD4EAD5FAD28970E94A3624B0173 |
:10B160005C010E9417633093090520930805109233 |
:10B1700099050C942E4D80939405D4CE809395051B |
:10B180000C94D73E0196A11DB11D0C941749019650 |
:10B19000A11DB11D0C940B4980911D0390911E03BC |
:10B1A000895E934068F187B5853F50F580912C0406 |
:10B1B000815080932C049AE089029001112480919F |
:10B1C0008808821B87BD8CE291E0909314048093E1 |
:10B1D00013048AEF3FC881E08093990510927D05A2 |
:10B1E00010927E0510927F05109280051092140532 |
:10B1F0001092150510921605109217050C944441F3 |
:10B2000080911D0390911E0384369105B8F487B593 |
:10B210008B30A0F080912C048F5FCBCFF095E1951F |
:10B22000FF4F2CCE095F1F4F0C94804D0F96A11D30 |
:10B23000B11DE3CD0F96A11DB11DECCD81E00C94A5 |
:10B240002A51409393050C943B42809393050C94B0 |
:10B250003B42A996AEADBFADA997B093A705A09309 |
:10B26000A60530903C0A0C94F1451092A8050C9468 |
:10B270005B466B962CAD3DAD4EAD5FAD6B972093AD |
:10B280009A0530939B0540939C0550939D05109221 |
:10B29000A9050C94C7461092AB050C944348209323 |
:10B2A0009E0530939F054093A0055093A1051092F1 |
:10B2B000AA050C94D1470E94300445E66AEF78E075 |
:10B2C0000E94D8038091020980FF10C080911D0365 |
:10B2D00090911E03875B934038F480911D039091F9 |
:10B2E0001E038E5E924010F40E94FB190E94D73715 |
:10B2F00081E080931104579A13CF60929A0570925F |
:10B300009B0580929C0590929D051092A705109236 |
:10B31000A60548EE53E05093A9034093A8030C946C |
:10B32000C746299A0C947241F090FB080C949E41F8 |
:10B330007093DC046093DB045092DE044092DD04E1 |
:10B34000CB0177FDE2C0BC0175956795C20157FC42 |
:10B35000DAC02C01559447940C940D4520939E051A |
:10B3600030939F054093A0055093A1051092A70527 |
:10B370001092A605A8EEB3E0B093A903A093A8038A |
:10B380000C944348B095A095909581959F4FAF4FF1 |
:10B39000BF4F0C94214781E08093A8050C945B4635 |
:10B3A00061507F4F8F4F9F4F0C94884481509F4F27 |
:10B3B000AF4FBF4F0C94604420939E0530939F0580 |
:10B3C0004093A0055093A10581E08093AA050C94B9 |
:10B3D000D14781509F4FAF4FBF4F0C9446446B965F |
:10B3E0008CAD9DADAEADBFAD6B9780939A0590933C |
:10B3F0009B05A0939C05B0939D0581E08093A905D2 |
:10B400000C94C74681E08093AB050C944348882791 |
:10B410009927DC018E199F09A00BB10B0C94B8453C |
:10B4200081509F4FAF4FBF4F0C94DF4481509F4FCF |
:10B43000AF4FBF4F0C94D24461507F4F8F4F9F4FFF |
:10B440000C949E44299A17CEF095E195FF4F0C94E9 |
:10B450001D4220939E0530939F054093A005509375 |
:10B46000A1050C94B94720939E0530939F05409306 |
:10B47000A0055093A1050C942B4881509F4FAF4FCE |
:10B48000BF4F0C943748295F3F4F4F4F5F4F0C948D |
:10B490000E4821503E4F4F4F5F4F0C94F547F095AB |
:10B4A000E195FF4F0C949A41F095E195FF4F0C9474 |
:10B4B000054581509F4F0ECE81509F4FF4CDB095E2 |
:10B4C000A095909581959F4FAF4FBF4F0C94EF473C |
:10B4D000295F3F4F4F4F5F4F0C949C4781509F4FC8 |
:10B4E00010CE81509F4FAF4FBF4F0C94C547815036 |
:10B4F0009F4FAF4FBF4F0C94BB46295F3F4F4F4FFD |
:10B500005F4F0C949346019624CF01961CCF815037 |
:10B510009E4FAF4FBF4F0C948347B095A095909529 |
:10B5200081959F4FAF4FBF4F0C947F4721503E4FA7 |
:10B530004F4F5F4F0C947C4688279927DC018E196A |
:10B540009F09A00BB10B0C94764681509F4FAF4FD3 |
:10B55000BF4F0C945346295F3F4F4F4F5F4F0C94A2 |
:10B56000294621503E4F4F4F5F4F0C94124688277B |
:10B570009927DC018E199F09A00BB10B0C940C4686 |
:10B58000FEA1F150FEA302E010E0C00ED11E24E0A7 |
:10B5900030E0E20EF31E0894A11CB11CF7FFADC908 |
:10B5A000C859DF4F0FB6F894DEBF0FBECDBFDF9195 |
:10B5B000CF911F910F91FF90EF90DF90CF90BF90B0 |
:10B5C000AF909F908F907F906F905F904F903F9043 |
:10B5D0002F9008958091C4059091C505A091C6054E |
:10B5E000B091C7058093BC059093BD05A093BE059F |
:10B5F000B093BF058091C0059091C105A091C2058F |
:10B60000B091C3058093B8059093B905A093BA058E |
:10B61000B093BB0508951092CF051092CE051092FD |
:10B62000CD051092CC05089584B1806A84B93D9A05 |
:10B6300082E58CBD1DBC459A81E08093DC098AEAD5 |
:10B640008093E00983E88093E1098AE08093E2092E |
:10B650001092E4091092E3091092E6091092E509AC |
:10B6600010923E0A1092020A1092030A8BE4809311 |
:10B67000040A88E08093050A89E08093060A089509 |
:10B68000EF92FF920F931F93809110099927880FD3 |
:10B69000991F880F991F7C010027F7FC0095102F38 |
:10B6A0008091440590914505A0914605B0914705CC |
:10B6B000BC01CD01A80197010E9417633093E409F2 |
:10B6C0002093E30980913C0590913D05A0913E05B2 |
:10B6D000B0913F05BC01CD01A80197010E941763FD |
:10B6E0003093E6092093E5092091D0093091D109E2 |
:10B6F0004091D2095091D309DA01C90173E0880F52 |
:10B70000991FAA1FBB1F7A95D1F7820F931FA41F01 |
:10B71000B51F820F931FA41FB51F20918603309180 |
:10B7200087034091880350918903BC01CD010E9499 |
:10B7300017633093EC092093EB09E0914D05F091EC |
:10B740004E0580918C0990918D09BF010E94E262A3 |
:10B75000CB019B01220F331F220F331F280F391FEC |
:10B76000280F391F37FD08C1359527953595279541 |
:10B770003093E8092093E7098091CC099091CD0995 |
:10B78000BF010E94E2629B01220F331F220F331F71 |
:10B79000260F371F260F371F37FDEBC0359527952E |
:10B7A000359527953093EA092093E90910924E05C3 |
:10B7B00010924D0510928D0910928C091092CD09AE |
:10B7C0001092CC098091E20999278C30910509F4F7 |
:10B7D000AEC08D3091050CF069C08A30910509F436 |
:10B7E00082C10B9709F4FCC08091020A882309F4F6 |
:10B7F00095C02091080A3091090AC90181509E4FD5 |
:10B800008F5F9340C8F440910A0A50910B0ACA0115 |
:10B8100081509E4F8F5F934078F48091020985FF9D |
:10B820000BC03093CF052093CE055093CD054093A8 |
:10B83000CC058AEF8093D10580910E0A90910F0A72 |
:10B8400021E0893692070CF034C19C0190930B05DE |
:10B8500080930A058091080590910905281B390BF2 |
:10B86000C901845E9D4F68E671E00E94E262845BDC |
:10B87000904090930705809306052091120A30911D |
:10B88000130A80911304909114048217930740F4D3 |
:10B8900080919207882321F4309314042093130499 |
:10B8A0008091070A873609F089C108C18E30910559 |
:10B8B00009F454C18E3091050CF461C00F9709F062 |
:10B8C00093CF809126098093F30980914E0980934C |
:10B8D000F409809192038093F50980911F09809368 |
:10B8E000F609809120098093F709809121098093BE |
:10B8F000F809809191038093F9098091230980933D |
:10B90000FA09809124098093FB098091250980938D |
:10B91000FC098091020A882309F06BCF1092CF05B1 |
:10B920001092CE051092CD051092CC0547C18091A2 |
:10B930009207863018F01092920785E08093F30901 |
:10B940008091EB049091EC049093F6098093F509B3 |
:10B9500080914B098093F409809141098093F70904 |
:10B96000809142098093F809809143098093F909F5 |
:10B970003BCF2D5F3F4F12CF2D5F3F4FF5CE8091D4 |
:10B980003C098093F30980913D098093F4098091EB |
:10B990003E098093F50980913F098093F6098091D3 |
:10B9A00040098093F709809144098093F8098091B8 |
:10B9B00045098093F909809146098093FA0980919D |
:10B9C00049098093FB09809147098093FC09809184 |
:10B9D00048098093FD0980914A098093FE0904CFAC |
:10B9E0008091FC08E82FFF27EE0FFF1FE853F74F69 |
:10B9F0000190F081E02DE038F1050CF0C4C02FEF8C |
:10BA0000E138F20714F4E1E8FFEFE093F3098091E5 |
:10BA1000FD08E82FFF27EE0FFF1FE853F74F0190B7 |
:10BA2000F081E02DE038F1050CF4C0C0EFE7F0E064 |
:10BA3000E093F4098091FB08E82FFF27EE0FFF1F2A |
:10BA4000E853F74F0190F081E02DE038F1050CF458 |
:10BA5000A5C0EFE7F0E0E093F5098091FA08E82F40 |
:10BA6000FF27EE0FFF1FE853F74F0190F081E02D05 |
:10BA7000E038F1050CF48AC0EFE7F0E0E093F60956 |
:10BA8000809100058093F7098091FE048093F80966 |
:10BA90008091FC048093F9098091FA048093FA095B |
:10BAA0008091F9048093FB098091F8048093FC094C |
:10BAB00030CF20910A0530910B05CCCE8091140A2D |
:10BAC00080933B0A8091150A80933D0A8091160A63 |
:10BAD00080933C0A8091170A80933E0A8091180A4D |
:10BAE00080933F0A6BC08091D4048093F3098091C6 |
:10BAF000D3048093F4098091D2048093F509809156 |
:10BB0000D1048093F6098091D0048093F709809145 |
:10BB1000CF048093F8098091CE048093F909809135 |
:10BB2000CD048093FA098091C0048093FB09809131 |
:10BB3000C004837F8093C0048091270390912803E1 |
:10BB40008093FC09809100018093FD09A2E0B0E0A0 |
:10BB50000E943263802D8093FE0946CE8091030AB5 |
:10BB60008093F3098091040A8093F4098091050A77 |
:10BB70008093F5098091060A8093F609809102016D |
:10BB80008093F70931CEEFE7F0E03FCF8FEFE13858 |
:10BB9000F8070CF073CFE1E8FFEF70CF6FEFE138FB |
:10BBA000F6070CF058CFE1E8FFEF55CF4FEFE13843 |
:10BBB000F4070CF03DCFE1E8FFEF3ACF1F910F9172 |
:10BBC000FF90EF9008958091DC09882309F43BC031 |
:10BBD000459880EE99E09093DE098093DD0980918D |
:10BBE000D005E82FFF27EB51FC4F982F9F5F8081F6 |
:10BBF0008093E209973008F027C09093D005109207 |
:10BC0000DC090E94405B81E08093DF0900000000B6 |
:10BC10000000000000000000000000000000000024 |
:10BC20000000000000000000000000000000000014 |
:10BC30000000000000000000000000008091E0090A |
:10BC40008093FF098EBD08951092D005D8CF209122 |
:10BC5000DC09222309F045C00DB407FE42C084E090 |
:10BC600080931204459A3EB58091D2059927813080 |
:10BC7000910509F437C0823091050CF451C0029748 |
:10BC800009F439C02091DF09203208F030C045980E |
:10BC900000000000000000000000000000000000A4 |
:10BCA0000000000000000000000000000000000094 |
:10BCB0000000000000000000000000000000000084 |
:10BCC000E091DD09F091DE09E20FF11D80818EBD6A |
:10BCD0008091FF099081890F8093FF092F5F209346 |
:10BCE000DF090895353551F12093D205CBCF81E09E |
:10BCF0008093DC09F3CF8091010AE82FFF27EF5DE5 |
:10BD0000F54F30838F5F8093010A8A3100F1809173 |
:10BD1000D305381711F12093020A1092D205B2CF41 |
:10BD2000892B09F0AFCF2093010A3093D305313826 |
:10BD300009F0A8CF81E08093D205A4CF8091D305EC |
:10BD4000830F8093D30582E08093D2059BCF8091AF |
:10BD5000D305830F8093D30595CF8AE1E1E2FAE022 |
:10BD6000A7E0BAE001900D928A95E1F781E0809317 |
:10BD7000020A1092D20586CF87B18C6087B94298AB |
:10BD800043981092D50580E88093ED031092D40576 |
:10BD90008093EC0308958091DA0581508F3F19F06C |
:10BDA0008093DA05089584E08093DA058091C004D9 |
:10BDB00085FF2FC020913A092093DB0530913B0984 |
:10BDC0003093DC05909137099B3F20F080918E09DC |
:10BDD000873E40F480914D0984FF34C08091EF0488 |
:10BDE000882381F527FD3EC04298909139099B3FF9 |
:10BDF00020F08091C709873E40F480914D0984FF6F |
:10BE000013C08091EF04882379F437FD2FC0439845 |
:10BE100008958091F90488236CF6209136092093C7 |
:10BE2000DB0530913809CCCF9B3F20F08091C709CA |
:10BE30008A30D0F08091D40581508F3FC9F0809333 |
:10BE4000D40508959B3F20F080918E098A3040F000 |
:10BE50008091D50581508F3FE1F08093D505C5CF06 |
:10BE600027FDC2CF429AC1CF37FDD1CF439A089563 |
:10BE70008091C70981508093D4058091EC03813073 |
:10BE8000C9F086958093EC03832309F4C0CF439ACD |
:10BE9000089580918E0981508093D5058091ED039E |
:10BEA000813051F086958093ED03822309F49CCF75 |
:10BEB000429A9BCF80E8E6CF80E8F5CF8091C90019 |
:10BEC0008F778093C9008091C9008F7B8093C900D0 |
:10BED0008091C9008F7D8093C9005A9A5298109220 |
:10BEE000CD0084E190E08093CC008091C800826016 |
:10BEF0008093C80080E18093C9008091CA008F7749 |
:10BF00008093CA008091CA008F7B8093CA00809181 |
:10BF1000CA008F7D8093CA008091CA008F7E809373 |
:10BF2000CA008091CA00877F8093CA008091C900AF |
:10BF30008B7F8093C9008091CA0084608093CA007F |
:10BF40008091CA0082608093CA008091C80087FFF8 |
:10BF50000CC08091CE008091C800882334F4809179 |
:10BF6000CE008091C8008823A4F38091C900806826 |
:10BF70008093C90008951F93CF93DF9380E197E2E8 |
:10BF80000E948115EC0110E08091C9008F778093A9 |
:10BF9000C9008091C9008F7E8093C9005A988EE2B3 |
:10BFA00097E09F938F931F930E9409120F900F9019 |
:10BFB0000F90CE010E948A15882309F066C04A9B23 |
:10BFC000F8CF8AE590E00E948115EC0184E697E0C5 |
:10BFD0009F938F931F920E940912529A0F900F9075 |
:10BFE0000F90CE010E948A158823D9F383E690E052 |
:10BFF0005A9A019797FFFCCF8FE891E05A980197E2 |
:10C0000097FFFCCF89E090E05A9A019797FFFCCF09 |
:10C0100089E090E05A98019797FFFCCF8FE891E074 |
:10C020005A9A019797FFFCCF8FE891E05A980197B1 |
:10C0300097FFFCCF89E090E05A9A019797FFFCCFD9 |
:10C0400089E090E05A98019797FFFCCF8FE891E044 |
:10C050005A9A019797FFFCCF8FE891E05A98019781 |
:10C0600097FFFCCF89E090E05A9A019797FFFCCFA9 |
:10C0700089E090E05A98019797FFFCCF8FE891E014 |
:10C080005A9A019797FFFCCF0AC08AE697E09F93E0 |
:10C090008F931F930E9409120F900F900F90529848 |
:10C0A0005A980E945E5FDF91CF911F9108951F9271 |
:10C0B0000F920FB60F921124EF92FF920F931F93DE |
:10C0C0002F933F934F935F936F937F938F939F93A0 |
:10C0D000AF93BF93CF93DF93EF93FF930091CE0085 |
:10C0E0008091EE039091EF03019709F45EC0809177 |
:10C0F000E5059091E6050E948A15482F5527609125 |
:10C10000DD057091DE0561157105E9F1613071059C |
:10C1100009F4EAC06230710509F4EDC063307105BD |
:10C1200009F45CC081E090E09093EF038093EE030C |
:10C130001092E0051092DF051092E4051092E305DD |
:10C140008091DF059091E0054097A0F08091E30594 |
:10C150009091E405892B11F4109284031092E0056C |
:10C160001092DF051092E4051092E3051092DE05AF |
:10C170001092DD0587E090E00E9481159093E6051E |
:10C180008093E50504C1452BD9F281E090E09093BE |
:10C19000DE058093DD058091DF059091E005019635 |
:10C1A0009093E0058093DF05CBCF1092EF031092C0 |
:10C1B000EE0387E090E00E9481159093E60580935E |
:10C1C000E5051092E0051092DF051092DE05109251 |
:10C1D000DD051092E2051092E105D9C0452B09F06A |
:10C1E000A1CF82E090E09093DE058093DD05809101 |
:10C1F000DF059091E00501969093E0058093DF05BF |
:10C200008091E1059091E205FC01F695E795F695A0 |
:10C21000E795EF70F0703196982F8827202F3327FD |
:10C22000822B932B9370805092400E94E262EB30FD |
:10C23000F10508F085CF7F01EE0EFF1EF701E853F0 |
:10C24000F74F808191819B01281B390BC90137FD74 |
:10C2500097C0069754F48091F904883C08F087C091 |
:10C260008091F904865F8093F904F701E853F74F52 |
:10C27000808191819C01220F331F280F391F260FC7 |
:10C28000371F37FD81C0E901D595C795D595C7956D |
:10C29000CB0101968C179D070CF05CC02197809113 |
:10C2A000F904843B08F450C087010252174FF7018C |
:10C2B000E853F74F80819181FE01E81BF90BCF0114 |
:10C2C00063E070E00E94E262CB01880F991F860F45 |
:10C2D000971FF8019183808328EC38E0E20EF31E6B |
:10C2E000F701D183C0832CCF4115510509F012CF3E |
:10C2F00082E090E04CCF4115510509F00FCF802F1F |
:10C3000099279093E2058093E1052091DF05309114 |
:10C31000E0052230310569F083E090E09093DE057E |
:10C320008093DD052F5F3F4F3093E0052093DF05BD |
:10C3300007CF8091E10587FF15C081E090E09093E1 |
:10C34000E4058093E305E8CFF701E252F74F11824D |
:10C350001082C2CF61507040C617D7070CF09FCF34 |
:10C3600021969DCF5093E4054093E305D5CF88EC0B |
:10C370008093F90480916F008F7D80936F0075CF5B |
:10C38000909581959F4F65CF2D5F3F4F7CCFFF915B |
:10C39000EF91DF91CF91BF91AF919F918F917F915D |
:10C3A0006F915F914F913F912F911F910F91FF904E |
:10C3B000EF900F900FBE0F901F901895FC01415009 |
:10C3C000504030F001900616D1F73197CF01089513 |
:10C3D0008827992708955058192E84D001D06AC013 |
:10C3E000BA176207730784079507B1F188F40EF452 |
:10C3F00010940B2EBA2FA02D062E622F202D072E63 |
:10C40000732F302D082E842F402D092E952F502D5F |
:10C41000FF275523B9F0591B49F0573E98F0469530 |
:10C4200037952795A795F0405395C9F776F0BA0F41 |
:10C43000621F731F841F30F4879577956795B795B2 |
:10C44000F040939517FA0F2E0895BF1BBB27BA0B28 |
:10C45000620B730B840BF6CFDEF670C097FB4ED0E9 |
:10C460009F3738F0FEE9F91B982F872F762F6B2F17 |
:10C4700005C061C09695879577956795F150D0F77F |
:10C480003EF490958095709561957F4F8F4F9F4FAB |
:10C490000895E89403C097FB0EF4F3DFB62F672FDF |
:10C4A000782F892F9EE9002405C09A95BB0F661F3F |
:10C4B000771F881F11249923A1F08823B2F79F3F8B |
:10C4C00059F0BB0F48F421F4002011F460FF04C0C0 |
:10C4D0006F5F7F4F8F4F9F4F881F9795879597F975 |
:10C4E000089529C0052E092607FA440F551F5F3FFE |
:10C4F00079F0AA27A51708F051E04795880F991FF2 |
:10C500009F3F31F0BB27B91708F091E08795089558 |
:10C510009F919F91112414C097FB880F991F9F3FF3 |
:10C5200031F0BB27B91708F091E0879508959F91E6 |
:10C530009F91112405C0662777278827992708959A |
:10C540009FEF80EC0895629FD001739FF001829F5E |
:10C55000E00DF11D649FE00DF11D929FF00D839F92 |
:10C56000F00D749FF00D659FF00D9927729FB00D2F |
:10C57000E11DF91F639FB00DE11DF91FBD01CF0142 |
:10C5800011240895991B79E004C0991F961708F0AB |
:10C59000961B881F7A95C9F780950895AA1BBB1B27 |
:10C5A00051E107C0AA1FBB1FA617B70710F0A61BB3 |
:10C5B000B70B881F991F5A95A9F780959095BC01D4 |
:10C5C000CD01089597FB092E07260AD077FD04D0E8 |
:10C5D000E5DF06D000201AF4709561957F4F08952D |
:10C5E000F6F7909581959F4F0895A1E21A2EAA1B08 |
:10C5F000BB1BFD010DC0AA1FBB1FEE1FFF1FA21713 |
:10C60000B307E407F50720F0A21BB30BE40BF50B0F |
:10C61000661F771F881F991F1A9469F76095709598 |
:10C62000809590959B01AC01BD01CF01089597FBCA |
:10C63000092E05260ED057FD04D0D7DF0AD0001CE6 |
:10C6400038F450954095309521953F4F4F4F5F4FAF |
:10C650000895F6F790958095709561957F4F8F4F6F |
:10C660009F4F0895F999FECFB2BDA1BDF89A1196DA |
:10C6700000B40895F7DF01921A94E1F70895F9994B |
:10C68000FECFB2BDA1BD00BC11960FB6F894FA9AC8 |
:10C69000F99A0FBE08950190F2DF1A94E1F7089518 |
:10C6A0005E010A0151756164726F0000416E676C32 |
:10C6B000654E69636B20202020202020416E676C2E |
:10C6C00065526F6C6C202020202020204163634E37 |
:10C6D00069636B20202020202020202041636352AA |
:10C6E0006F6C6C2020202020202020204779726F42 |
:10C6F0004769657220202020202020204869676833 |
:10C70000742056616C756520202020204163635A97 |
:10C71000202020202020202020202020476173205E |
:10C72000202020202020202020202020436F6D70FA |
:10C730006173732056616C7565202020566F6C7490 |
:10C74000616765202020202020202020456D706614 |
:10C75000616E672020202020202020204779726FE2 |
:10C76000204B6F6D70617373202020204D6F746FAC |
:10C77000722046726F6E7420202020204D6F746FDF |
:10C780007220526561722020202020204D6F746F2E |
:10C7900072204C6566742020202020204D6F746F1D |
:10C7A00072205269676874202020202020202020D9 |
:10C7B0002020202020202020202020202020202079 |
:10C7C0002020202020202020202020205661726957 |
:10C7D0006F4D657465722020202020204D4B334D15 |
:10C7E00061672043616C5374617465205365727690 |
:10C7F0006F202020202020202020202020202020EA |
:10C800002020202020202020202020204770732D51 |
:10C810005A20202020202020202020204143432D6A |
:10C820004420202020202020202020204750532D4D |
:10C83000442020202020202020202020686F6F7698 |
:10C840006572676173202020202020206D61786848 |
:10C850006F6F766572202020202020204B616C6D48 |
:10C86000616E5F4D61784472696674206D696E68AF |
:10C870006F6F766572202020202020204E6176691F |
:10C880002053657269616C20446174614750535F45 |
:10C890004E69636B20202020202020204750535FCA |
:10C8A000526F6C6C2020202020202020C8000164C2 |
:10C8B000FF01FFFF01FC01FC0101737373FF030023 |
:10C8C0007D0000C409C40964000D48616C6C6F20D0 |
:10C8D00057656C74000000000000000000000000BC |
:10C8E0000000000000000000000000000000000048 |
:10C8F0000000000000000000000000000000000038 |
:10C900000000000000000000000000000000000027 |
:10C910000000000000000000000001020304050602 |
:10C920000708090A01040B050000ECFF6440415AA6 |
:10C930004664640A0296960840403A10FB3038017B |
:10C9400090D0030090D00300F401640053706F7224 |
:10C950007400004E6F726D616C0000426567696E15 |
:10C960006E65720000648080808181828384858707 |
:10C97000888A8C8E9194979A9EA2A7ACB2B8BFC7B2 |
:10C98000D0DAE5F1FF0A0B0D0B0C0E0F01010100CF |
:00000001FF |
/beta/FC_075i_MartinR/Hex-Files/WasIstWas.txt |
---|
0,0 → 1,51 |
+++++++++++++++++++++++++ |
+ Flight-Ctrl: |
+++++++++++++++++++++++++ |
BootLoader_MEGA644_20MHZ_V0_1.hex |
Der Bootloader wird per ISP eingespielt |
Der Bootloader nur dann eingespielt werden, wenn noch nie ein Bootloader eingespielt wurde! |
Danach können Softwareupdates seriell eingespielt werden. |
Flight-Ctrl_MEGA644_Vx_yy.hex |
Aktuelle Firmware |
Wird per serielle Schnittstelle (durch den Bootloader) eingespielt |
//+++++++++++ |
// Quadro: |
// 1 |
// 4 3 |
// 2 |
//+++++++++++ |
// Reverse Props on 1 2 |
//+++++++++++ |
// Octo: |
// 1 2 |
// 8 3 |
// 7 4 |
// 6 5 |
//+++++++++++ |
//+++++++++++ |
// Octo2: |
// 1 |
// 8 2 |
// 7 3 |
// 6 4 |
// 5 |
//+++++++++++ |
//+++++++++++ |
// Octo3: |
// 1 |
// 2 |
// 8 7 3 4 |
// 5 |
// 6 |
//+++++++++++ |
// Reverse Props on octo: 1 3 5 7 |
/beta/FC_075i_MartinR/License.txt |
---|
0,0 → 1,52 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten und nichtkommerziellen Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt und genannt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-profit use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet, our webpage (http://www.MikroKopter.de) must be |
// + clearly linked and named as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
/beta/FC_075i_MartinR/Settings.h |
---|
--- beta/FC_075i_MartinR/Spectrum.c (nonexistent) |
+++ beta/FC_075i_MartinR/Spectrum.c (revision 1291) |
@@ -0,0 +1,318 @@ |
+/*####################################################################################### |
+Decodieren eines RC Summen Signals oder Spektrum Empfänger-Satellit |
+#######################################################################################*/ |
+ |
+#include "Spectrum.h" |
+#include "main.h" |
+ |
+//--------------------------------------------------------------// |
+ |
+//--------------------------------------------------------------// |
+void SpektrumBinding(void) |
+{ |
+ unsigned int timerTimeout = SetDelay(10000); // Timeout 10 sec. |
+ unsigned char connected = 0; |
+ unsigned int delaycounter; |
+ |
+ UCSR1B &= ~(1 << RXCIE1); // disable rx-interrupt |
+ UCSR1B &= ~(1<<RXEN1); // disable Uart-Rx |
+ PORTD &= ~(1 << PORTD2); // disable pull-up |
+ |
+ printf("\n\rPlease connect Spektrum receiver for binding NOW..."); |
+ |
+ while(!CheckDelay(timerTimeout)) |
+ { |
+ if (PIND & (1 << PORTD2)) { timerTimeout = SetDelay(90); connected = 1; break; } |
+ } |
+ |
+ if (connected) |
+ { |
+ |
+ printf("ok.\n\r"); |
+ DDRD |= (1 << DDD2); // Rx as output |
+ |
+ while(!CheckDelay(timerTimeout)); // delay after startup of RX |
+ for (delaycounter = 0; delaycounter < 100; delaycounter++) PORTD |= (1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 400; delaycounter++) PORTD &= ~(1 << PORTD2); |
+ |
+ for (delaycounter = 0; delaycounter < 10; delaycounter++) PORTD |= (1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 10; delaycounter++) PORTD &= ~(1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 400; delaycounter++) PORTD |= (1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 400; delaycounter++) PORTD &= ~(1 << PORTD2); |
+ |
+ for (delaycounter = 0; delaycounter < 10; delaycounter++) PORTD |= (1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 10; delaycounter++) PORTD &= ~(1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 400; delaycounter++) PORTD |= (1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 400; delaycounter++) PORTD &= ~(1 << PORTD2); |
+ |
+ for (delaycounter = 0; delaycounter < 10; delaycounter++) PORTD |= (1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 10; delaycounter++) PORTD &= ~(1 << PORTD2); |
+ for (delaycounter = 0; delaycounter < 400; delaycounter++) PORTD |= (1 << PORTD2); |
+ |
+ } |
+ else |
+ { printf("Timeout.\n\r"); |
+ |
+ |
+ } |
+ |
+ DDRD &= ~(1 << DDD2); // RX as input |
+ PORTD &= ~(1 << PORTD2); |
+ |
+ Uart1Init(); // init Uart again |
+} |
+ |
+//############################################################################ |
+// zum Decodieren des Spektrum Satelliten wird USART1 benutzt. |
+// USART1 initialisation from killagreg |
+void Uart1Init(void) |
+//############################################################################ |
+ { |
+ // -- Start of USART1 initialisation for Spekturm seriell-mode |
+ // USART1 Control and Status Register A, B, C and baud rate register |
+ uint16_t ubrr = (uint16_t) ((uint32_t) SYSCLK/(8 * 115200) - 1); |
+ // disable RX-Interrupt |
+ UCSR1B &= ~(1 << RXCIE1); |
+ // disable TX-Interrupt |
+ UCSR1B &= ~(1 << TXCIE1); |
+ // disable DRE-Interrupt |
+ UCSR1B &= ~(1 << UDRIE1); |
+ // set direction of RXD1 and TXD1 pins |
+ // set RXD1 (PD2) as an input pin |
+ PORTD |= (1 << PORTD2); |
+ DDRD &= ~(1 << DDD2); |
+ // USART0 Baud Rate Register |
+ // set clock divider |
+ |
+ UBRR1H = (uint8_t)(ubrr>>8); |
+ UBRR1L = (uint8_t)ubrr; |
+ // enable double speed operation |
+ UCSR1A |= (1 << U2X1); |
+ // enable receiver and transmitter |
+ //UCSR1B = (1<<RXEN1)|(1<<TXEN1); |
+ |
+ |
+ |
+ |
+ UCSR1B = (1<<RXEN1); |
+ // set asynchronous mode |
+ UCSR1C &= ~(1 << UMSEL11); |
+ UCSR1C &= ~(1 << UMSEL10); |
+ // no parity |
+ UCSR1C &= ~(1 << UPM11); |
+ UCSR1C &= ~(1 << UPM10); |
+ // 1 stop bit |
+ UCSR1C &= ~(1 << USBS1); |
+ // 8-bit |
+ UCSR1B &= ~(1 << UCSZ12); |
+ UCSR1C |= (1 << UCSZ11); |
+ UCSR1C |= (1 << UCSZ10); |
+ // flush receive buffer explicit |
+ while(UCSR1A & (1<<RXC1)) UDR1; |
+ // enable RX-interrupts at the end |
+ UCSR1B |= (1 << RXCIE1); |
+ // -- End of USART1 initialisation |
+ return; |
+ } |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Copyright (c) Rainer Walther |
+// + RC-routines from original MK rc.c (c) H&I |
+// + Useful infos from Walter: http://www.rcgroups.com/forums/showthread.php?t=714299&page=2 |
+// + only for non-profit use |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// |
+// 20080808 rw Modified for Spektrum AR6100 (PPM) |
+// 20080823 rw Add Spektrum satellite receiver on USART1 (644P only) |
+// 20081213 rw Add support for Spektrum DS9 Air-Tx-Module (9 channels) |
+// Replace AR6100-coding with original composit-signal routines |
+// |
+// --- |
+// Entweder Summensignal ODER Spektrum-Receiver anschließen. Nicht beides gleichzeitig betreiben! |
+// Binding is not implemented. Bind with external Receiver. |
+// Servo output J3, J4, J5 not serviced |
+// |
+// Anschuß Spektrum Receiver |
+// Orange: 3V von der FC (keinesfalls an 5V anschließen!) |
+// Schwarz: GND |
+// Grau: RXD1 (Pin 3) auf 10-Pol FC-Stecker |
+// |
+// --- |
+// Satellite-Reciever connected on USART1: |
+// |
+// DX7/DX6i: One data-frame at 115200 baud every 22ms. |
+// DX7se: One data-frame at 115200 baud every 11ms. |
+// byte1: unknown |
+// byte2: unknown |
+// byte3: and byte4: channel data (FLT-Mode) |
+// byte5: and byte6: channel data (Roll) |
+// byte7: and byte8: channel data (Nick) |
+// byte9: and byte10: channel data (Gier) |
+// byte11: and byte12: channel data (Gear Switch) |
+// byte13: and byte14: channel data (Gas) |
+// byte15: and byte16: channel data (AUX2) |
+// |
+// DS9 (9 Channel): One data-frame at 115200 baud every 11ms, alternating frame 1/2 for CH1-7 / CH8-9 |
+// 1st Frame: |
+// byte1: unknown |
+// byte2: unknown |
+// byte3: and byte4: channel data |
+// byte5: and byte6: channel data |
+// byte7: and byte8: channel data |
+// byte9: and byte10: channel data |
+// byte11: and byte12: channel data |
+// byte13: and byte14: channel data |
+// byte15: and byte16: channel data |
+// 2nd Frame: |
+// byte1: unknown |
+// byte2: unknown |
+// byte3: and byte4: channel data |
+// byte5: and byte6: channel data |
+// byte7: and byte8: 0xffff |
+// byte9: and byte10: 0xffff |
+// byte11: and byte12: 0xffff |
+// byte13: and byte14: 0xffff |
+// byte15: and byte16: 0xffff |
+// |
+// Each channel data (16 bit= 2byte, first msb, second lsb) is arranged as: |
+// |
+// Bits: F 0 C3 C2 C1 C0 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 |
+// |
+// 0 means a '0' bit |
+// F: 1 = indicates beginning of 2nd frame for CH8-9 (DS9 only) |
+// C3 to C0 is the channel number. 0 to 9 (4 bit, as assigned in the transmitter) |
+// D9 to D0 is the channel data (10 bit) 0xaa..0x200..0x356 for 100% transmitter-travel |
+// |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+//############################################################################ |
+//Diese Routine startet und inizialisiert den USART1 für seriellen Spektrum satellite reciever |
+SIGNAL(USART1_RX_vect) |
+//############################################################################ |
+{ |
+static unsigned int Sync=0, FrameCnt=0, ByteHigh=0, ReSync=1, Frame2=0, FrameTimer; |
+ unsigned int Channel, index; |
+ signed int signal, tmp; |
+ int bCheckDelay; |
+ uint8_t c; |
+ |
+ c = UDR1; // get data byte |
+ |
+ if (ReSync == 1) |
+ { |
+ // wait for beginning of new frame |
+ ReSync = 0; |
+ |
+ FrameTimer = SetDelay(7); // minimum 7ms zwischen den frames |
+ FrameCnt = 0; |
+ Sync = 0; |
+ ByteHigh = 0; |
+ } |
+ else |
+ { |
+ bCheckDelay = CheckDelay(FrameTimer); |
+ if ( Sync == 0 ) |
+ { |
+ if(bCheckDelay) |
+ { |
+ // nach einer Pause von mind. 7ms erstes Sync-Character gefunden |
+ // Zeichen ignorieren, da Bedeutung unbekannt |
+ Sync = 1; |
+ FrameCnt ++; |
+ } |
+ else |
+ { |
+ // Zeichen kam vor Ablauf der 7ms Sync-Pause |
+ // warten auf erstes Sync-Zeichen |
+ } |
+ } |
+ else if((Sync == 1) && !bCheckDelay) |
+ { |
+ // zweites Sync-Character ignorieren, Bedeutung unbekannt |
+ Sync = 2; |
+ FrameCnt ++; |
+ } |
+ else if((Sync == 2) && !bCheckDelay) |
+ { |
+ // Datenbyte high |
+ ByteHigh = c; |
+ |
+ if (FrameCnt == 2) |
+ { |
+ // is 1st Byte of Channel-data |
+ // Frame 1 with Channel 1-7 comming next |
+ Frame2 = 0; |
+ if(ByteHigh & 0x80) |
+ { |
+ // DS9: Frame 2 with Channel 8-9 comming next |
+ Frame2 = 1; |
+ } |
+ } |
+ Sync = 3; |
+ FrameCnt ++; |
+ } |
+ else if((Sync == 3) && !bCheckDelay) |
+ { |
+ // Datenbyte low |
+ |
+ // High-Byte for next channel comes next |
+ Sync = 2; |
+ FrameCnt ++; |
+ |
+ index = (ByteHigh >> 2) & 0x0f; |
+ index ++; |
+ Channel = (ByteHigh << 8) | c; |
+ signal = Channel & 0x3ff; |
+ signal -= 0x200; // Offset, range 0x000..0x3ff? |
+ signal = signal/3; // scaling to fit PPM resolution |
+ |
+ if(index >= 0 && index <= 10) |
+ { |
+ // Stabiles Signal |
+ if(abs(signal - PPM_in[index]) < 6) |
+ { |
+ if(SenderOkay < 200) SenderOkay += 10; |
+ else |
+ { |
+ SenderOkay = 200; |
+ TIMSK1 &= ~_BV(ICIE1); // disable PPM-Input |
+ } |
+ } |
+ tmp = (3 * (PPM_in[index]) + signal) / 4; |
+ if(tmp > signal+1) tmp--; else |
+ if(tmp < signal-1) tmp++; |
+ if(SenderOkay >= 180) PPM_diff[index] = ((tmp - PPM_in[index]) / 3) * 3; |
+ else PPM_diff[index] = 0; |
+ PPM_in[index] = tmp; |
+ } |
+ } |
+ else |
+ { |
+ // hier stimmt was nicht: neu synchronisieren |
+ ReSync = 1; |
+ FrameCnt = 0; |
+ Frame2 = 0; |
+ } |
+ |
+ // 16 Bytes per frame |
+ if(FrameCnt >= 16) |
+ { |
+ // Frame complete |
+ if(Frame2 == 0) |
+ { |
+ // Null bedeutet: Neue Daten |
+ // nur beim ersten Frame (CH 0-7) setzen |
+ NewPpmData = 0; |
+ } |
+ |
+ // new frame next, nach fruehestens 7ms erwartet |
+ FrameCnt = 0; |
+ Frame2 = 0; |
+ Sync = 0; |
+ } |
+ // Zeit bis zum nächsten Zeichen messen |
+ FrameTimer = SetDelay(7); |
+ } |
+} |
+ |
+ |
/beta/FC_075i_MartinR/Spectrum.h |
---|
0,0 → 1,9 |
/*####################################################################################### |
Dekodieren eines Spectrum Signals |
#######################################################################################*/ |
#ifndef _SPECTRUM_H |
#define _SPECTRUM_H |
void Uart1Init(void); |
void SpektrumBinding(void); |
#endif //_RC_H |
/beta/FC_075i_MartinR/_Settings.h |
---|
0,0 → 1,43 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Abstimmung |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define ACC_AMPLIFY 6 |
#define FAKTOR_P 1 |
#define FAKTOR_I 0.0001 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Debug-Interface |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define SIO_DEBUG 1 // Soll der Debugger aktiviert sein? |
#define MIN_DEBUG_INTERVALL 250 // in diesem Intervall werden Degugdaten ohne Aufforderung gesendet |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Sender |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define K_NICK 0 |
#define K_ROLL 1 |
#define K_GAS 2 |
#define K_GIER 3 |
#define K_POTI1 4 |
#define K_POTI2 5 |
#define K_POTI3 6 |
#define K_POTI4 7 |
// +++++++++++++++++++++++++++++++ |
// + Getestete Settings: |
// +++++++++++++++++++++++++++++++ |
// Setting: Kamera |
// Stick_P:3 |
// Stick_D:0 |
// Gyro_P: 175 |
// Gyro_I: 175 |
// Ki_Anteil: 10 |
// +++++++++++++++++++++++++++++++ |
// + Getestete Settings: |
// +++++++++++++++++++++++++++++++ |
// Setting: Normal |
// Stick_P:2 |
// Stick_D:8 |
// Gyro_P: 80 |
// Gyro_I: 150 |
// Ki_Anteil: 5 |
/beta/FC_075i_MartinR/analog.c |
---|
0,0 → 1,501 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az, UBat = 100; |
volatile int AdWertNickFilter = 0, AdWertRollFilter = 0, AdWertGierFilter = 0; |
volatile int HiResNick = 2500, HiResRoll = 2500; |
volatile int AdWertNick = 0, AdWertRoll = 0, AdWertGier = 0; |
volatile int AdWertAccRoll = 0,AdWertAccNick = 0,AdWertAccHoch = 0; |
volatile char messanzahl_AccHoch = 0; |
volatile long Luftdruck = 32000; |
volatile int StartLuftdruck; |
volatile unsigned int MessLuftdruck = 1023; |
unsigned char DruckOffsetSetting; |
signed char ExpandBaro = 0; |
volatile int VarioMeter = 0; |
volatile int HoeheD = 0; // MartinR: für Höhenregler |
volatile char messanzahl_Druck; // MartinR: für Höhenregler |
volatile int tmpLuftdruck; // MartinR: für Höhenregler |
volatile int tmpAdWertAccHoch; // MartinR: für Höhenregler |
volatile unsigned int ZaehlMessungen = 0; |
unsigned char AnalogOffsetNick = 115,AnalogOffsetRoll = 115,AnalogOffsetGier = 115; |
unsigned char GyroDefektN = 0,GyroDefektR = 0,GyroDefektG = 0; |
volatile unsigned char AdReady = 1; |
//####################################################################################### |
// |
void ADC_Init(void) |
//####################################################################################### |
{ |
ADMUX = 0;//Referenz ist extern |
ANALOG_ON; |
} |
void SucheLuftruckOffset(void) |
{ |
unsigned int off; |
off = eeprom_read_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET]); |
if(off > 20) off -= 10; |
OCR0A = off; |
ExpandBaro = 0; |
Delay_ms_Mess(100); |
if(MessLuftdruck < 850) off = 0; |
for(; off < 250;off++) |
{ |
OCR0A = off; |
Delay_ms_Mess(50); |
printf("."); |
if(MessLuftdruck < 850) break; |
} |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET], off); |
DruckOffsetSetting = off; |
Delay_ms_Mess(300); |
} |
void SucheGyroOffset(void) |
{ |
unsigned char i, ready = 0; |
int timeout; |
GyroDefektN = 0; GyroDefektR = 0; GyroDefektG = 0; |
timeout = SetDelay(2000); |
for(i=140; i != 0; i--) |
{ |
if(ready == 3 && i > 10) i = 9; |
ready = 0; |
if(AdWertNick < 1020) AnalogOffsetNick--; else if(AdWertNick > 1030) AnalogOffsetNick++; else ready++; |
if(AdWertRoll < 1020) AnalogOffsetRoll--; else if(AdWertRoll > 1030) AnalogOffsetRoll++; else ready++; |
if(AdWertGier < 1020) AnalogOffsetGier--; else if(AdWertGier > 1030) AnalogOffsetGier++; else ready++; |
twi_state = 8; |
i2c_start(); |
if(AnalogOffsetNick < 10) { GyroDefektN = 1; AnalogOffsetNick = 10;}; if(AnalogOffsetNick > 245) { GyroDefektN = 1; AnalogOffsetNick = 245;}; |
if(AnalogOffsetRoll < 10) { GyroDefektR = 1; AnalogOffsetRoll = 10;}; if(AnalogOffsetRoll > 245) { GyroDefektR = 1; AnalogOffsetRoll = 245;}; |
if(AnalogOffsetGier < 10) { GyroDefektG = 1; AnalogOffsetGier = 10;}; if(AnalogOffsetGier > 245) { GyroDefektG = 1; AnalogOffsetGier = 245;}; |
while(twi_state) if(CheckDelay(timeout)) {printf("\n\r DAC or I2C ERROR! Check I2C, 3Vref, DAC and BL-Ctrl"); break;} |
AdReady = 0; |
ANALOG_ON; |
while(!AdReady); |
if(i<10) Delay_ms_Mess(10); |
} |
Delay_ms_Mess(70); |
} |
/* |
0 n |
1 r |
2 g |
3 y |
4 x |
5 n |
6 r |
7 u |
8 z |
9 L |
10 n |
11 r |
12 g |
13 y |
14 x |
15 n |
16 r |
17 L |
*/ |
//####################################################################################### |
// |
SIGNAL(SIG_ADC) |
//####################################################################################### |
{ |
static unsigned char kanal=0,state = 0; |
static signed int gier1, roll1, nick1, nick_filter, roll_filter; |
static signed int accy, accx; |
static long tmpLuftdruck = 0; |
static char messanzahl_Druck = 0; |
static long SummenHoehe = 0; |
switch(state++) |
{ |
case 0: |
nick1 = ADC; |
kanal = AD_ROLL; |
break; |
case 1: |
roll1 = ADC; |
kanal = AD_GIER; |
break; |
case 2: |
gier1 = ADC; |
kanal = AD_ACC_Y; |
break; |
case 3: |
Aktuell_ay = NeutralAccY - ADC; |
accy = Aktuell_ay; |
kanal = AD_ACC_X; |
break; |
case 4: |
Aktuell_ax = ADC - NeutralAccX; |
accx = Aktuell_ax; |
kanal = AD_NICK; |
break; |
case 5: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 6: |
roll1 += ADC; |
kanal = AD_UBAT; |
break; |
case 7: |
UBat = (3 * UBat + ADC / 3) / 4; |
kanal = AD_ACC_Z; |
break; |
case 8: |
// AdWertAccHoch = (signed int) ADC - NeutralAccZ; // MartinR: |
// MartinR: um AdWertAccHoch gleich zu Mitteln wie der Höhenwert, wird AdWertAccHoch bei case 9 berechnet |
/* // MartinR: deaktiviert |
if(AdWertAccHoch > 1) |
{ |
if(NeutralAccZ < 750) |
{ |
NeutralAccZ += 0.02; |
if(modell_fliegt < 500) NeutralAccZ += 0.1; |
} |
} |
else if(AdWertAccHoch < -1) |
{ |
if(NeutralAccZ > 550) |
{ |
NeutralAccZ-= 0.02; |
if(modell_fliegt < 500) NeutralAccZ -= 0.1; |
} |
} |
*/ // MartinR: deaktiviert Ende |
// messanzahl_AccHoch = 1; // MartinR: deaktiviert |
//Aktuell_az = ADC; // MartinR : so war es |
Aktuell_az = (Aktuell_az + ADC) / 2; // MartinR: geändert |
messanzahl_AccHoch ++ ; // MartinR: um AdWertAccHoch gleich zu Mitteln wie der Höhenwert |
tmpAdWertAccHoch += Aktuell_az ;// MartinR: um AdWertAccHoch gleich zu Mitteln wie der Höhenwert |
//Mess_Integral_Hoch += AdWertAccHoch; // Integrieren // MartinR: zu Höhenregler in fc.c verschoben |
//Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämfen // MartinR: zu Höhenregler in fc.c verschoben |
kanal = AD_DRUCK; |
break; |
// "case 8:" fehlt hier absichtlich |
case 10: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 11: |
roll1 += ADC; |
kanal = AD_GIER; |
break; |
case 12: |
if(PlatinenVersion == 10) AdWertGier = (ADC + gier1 + 1) / 2; |
else |
if(PlatinenVersion == 20) AdWertGier = 2047 - (ADC + gier1); |
else AdWertGier = (ADC + gier1); |
kanal = AD_ACC_Y; |
break; |
case 13: |
Aktuell_ay = NeutralAccY - ADC; |
AdWertAccRoll = (Aktuell_ay + accy); |
kanal = AD_ACC_X; |
break; |
case 14: |
Aktuell_ax = ADC - NeutralAccX; |
AdWertAccNick = (Aktuell_ax + accx); |
kanal = AD_NICK; |
break; |
case 15: |
nick1 += ADC; |
if(PlatinenVersion == 10) nick1 *= 2; else nick1 *= 4; |
AdWertNick = nick1 / 8; |
nick_filter = (nick_filter + nick1) / 2; |
HiResNick = nick_filter - AdNeutralNick; |
AdWertNickFilter = (AdWertNickFilter + HiResNick) / 2; |
kanal = AD_ROLL; |
break; |
case 16: |
roll1 += ADC; |
if(PlatinenVersion == 10) roll1 *= 2; else roll1 *= 4; |
AdWertRoll = roll1 / 8; |
roll_filter = (roll_filter + roll1) / 2; |
HiResRoll = roll_filter - AdNeutralRoll; |
AdWertRollFilter = (AdWertRollFilter + HiResRoll) / 2; |
kanal = AD_DRUCK; |
break; |
case 17: |
state = 0; |
AdReady = 1; |
ZaehlMessungen++; |
// "break" fehlt hier absichtlich |
case 9: |
MessLuftdruck = ADC; |
tmpLuftdruck += MessLuftdruck; |
#define SM_FILTER 16 |
/* // MartinR: so war es |
if(++messanzahl_Druck >= 18) |
{ |
Luftdruck = (7 * Luftdruck + tmpLuftdruck - (18 * 523) * (long)ExpandBaro + 4) / 8; // -523.19 counts per 10 counts offset step |
HoehenWert = StartLuftdruck - Luftdruck; |
SummenHoehe -= SummenHoehe/SM_FILTER; |
SummenHoehe += HoehenWert; |
VarioMeter = (15 * VarioMeter + 8 * (int)(HoehenWert - SummenHoehe/SM_FILTER))/16; |
tmpLuftdruck /= 2; |
messanzahl_Druck = 18/2; |
} |
*/ |
// MartinR: geänderte Version |
if(++messanzahl_Druck >= 6) |
{ |
tmpLuftdruck -= 3139L * ExpandBaro; // -523.19 counts per 10 counts offset step |
tmpLuftdruck /= 2; |
Luftdruck = (tmpLuftdruck + 7 * Luftdruck) / 8; |
HoehenWert = StartLuftdruck - Luftdruck; |
SummenHoehe -= SummenHoehe/SM_FILTER; |
SummenHoehe += HoehenWert; |
VarioMeter = (15 * VarioMeter + 8 * (int)(HoehenWert - SummenHoehe/SM_FILTER))/16; |
messanzahl_Druck = 0; |
tmpLuftdruck = 0; |
AdWertAccHoch = (tmpAdWertAccHoch / messanzahl_AccHoch) - NeutralAccZ; // MartinR: um AdWertAccHoch gleich zu Mitteln wie der Höhenwert |
messanzahl_AccHoch = 0; // MartinR: um AdWertAccHoch gleich zu Mitteln wie der Höhenwert |
tmpAdWertAccHoch = 0; // MartinR: um AdWertAccHoch gleich zu Mitteln wie der Höhenwert |
} |
kanal = AD_NICK; |
break; |
default: |
kanal = 0; state = 0; kanal = AD_NICK; |
break; |
} |
ADMUX = kanal; |
if(state != 0) ANALOG_ON; |
} |
/* |
//####################################################################################### |
// |
SIGNAL(SIG_ADC) |
//####################################################################################### |
{ |
static unsigned char kanal=0,state = 0; |
static signed int gier1, roll1, nick1; |
static signed long nick_filter, roll_filter; |
static signed int accy, accx; |
switch(state++) |
{ |
case 0: |
nick1 = ADC; |
kanal = AD_ROLL; |
break; |
case 1: |
roll1 = ADC; |
kanal = AD_GIER; |
break; |
case 2: |
gier1 = ADC; |
kanal = AD_ACC_Y; |
break; |
case 3: |
Aktuell_ay = NeutralAccY - ADC; |
accy = Aktuell_ay; |
kanal = AD_NICK; |
break; |
case 4: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 5: |
roll1 += ADC; |
kanal = AD_ACC_Z; |
break; |
case 6: |
AdWertAccHoch = (signed int) ADC - NeutralAccZ; |
if(AdWertAccHoch > 1) |
{ |
if(NeutralAccZ < 750) |
{ |
NeutralAccZ += 0.02; |
if(modell_fliegt < 500) NeutralAccZ += 0.1; |
} |
} |
else if(AdWertAccHoch < -1) |
{ |
if(NeutralAccZ > 550) |
{ |
NeutralAccZ-= 0.02; |
if(modell_fliegt < 500) NeutralAccZ -= 0.1; |
} |
} |
messanzahl_AccHoch = 1; |
Aktuell_az = ADC; |
Mess_Integral_Hoch += AdWertAccHoch; // Integrieren |
Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämfen |
kanal = AD_NICK; |
break; |
case 7: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 8: |
roll1 += ADC; |
kanal = AD_ACC_X; |
break; |
case 9: |
Aktuell_ax = ADC - NeutralAccX; |
accx = Aktuell_ax; |
kanal = AD_GIER; |
break; |
case 10: |
gier1 += ADC; |
kanal = AD_NICK; |
break; |
case 11: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 12: |
roll1 += ADC; |
kanal = AD_UBAT; |
break; |
case 13: |
UBat = (3 * UBat + ADC / 3) / 4;//(UBat + ((ADC * 39) / 256) + 19) / 2; |
kanal = AD_ACC_Y; |
break; |
case 14: |
Aktuell_ay = NeutralAccY - ADC; |
accy += Aktuell_ay; |
kanal = AD_NICK; |
break; |
case 15: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 16: |
roll1 += ADC; |
kanal = AD_ACC_X; |
break; |
case 17: |
Aktuell_ax = ADC - NeutralAccX; |
accx += Aktuell_ax; |
kanal = AD_NICK; |
break; |
case 18: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 19: |
roll1 += ADC; |
kanal = AD_GIER; |
break; |
case 20: |
gier1 += ADC; |
kanal = AD_ACC_Y; |
break; |
case 21: |
Aktuell_ay = NeutralAccY - ADC; |
accy += Aktuell_ay; |
kanal = AD_NICK; |
break; |
case 22: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 23: |
roll1 += ADC; |
kanal = AD_DRUCK; |
break; |
case 24: |
tmpLuftdruck += ADC; |
if(++messanzahl_Druck >= 5) |
{ |
MessLuftdruck = ADC; |
messanzahl_Druck = 0; |
HoeheD = (7 * HoeheD + (int) Parameter_Luftdruck_D * (int)(255 * ExpandBaro + StartLuftdruck - tmpLuftdruck - HoehenWert)) / 8; // D-Anteil = neuerWert - AlterWert |
Luftdruck = (tmpLuftdruck + 3 * Luftdruck) / 4; |
HoehenWert = 255 * ExpandBaro + StartLuftdruck - Luftdruck; |
tmpLuftdruck = 0; |
} |
kanal = AD_NICK; |
break; |
case 25: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 26: |
roll1 += ADC; |
kanal = AD_ACC_X; |
break; |
case 27: |
Aktuell_ax = ADC - NeutralAccX; |
accx += Aktuell_ax; |
kanal = AD_GIER; |
break; |
case 28: |
if(PlatinenVersion == 10) AdWertGier = (ADC + gier1 + 2) / 4; |
else |
if(PlatinenVersion == 20) AdWertGier = 2047 - (ADC + gier1 + 1) / 2; |
else AdWertGier = (ADC + gier1 + 1) / 2; |
kanal = AD_NICK; |
break; |
case 29: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 30: |
roll1 += ADC; |
kanal = AD_ACC_Y; |
break; |
case 31: |
Aktuell_ay = NeutralAccY - ADC; |
AdWertAccRoll = (Aktuell_ay + accy); |
kanal = AD_NICK; |
break; |
case 32: |
AdWertNick = (ADC + nick1 + 3) / 5; |
nick_filter = (long) (1 * (long) nick_filter + 4 * (long)(ADC + nick1) + 1) / 2; |
if(PlatinenVersion == 10) { AdWertNick /= 2;nick_filter /=2;} |
HiResNick = nick_filter - 20 * AdNeutralNick; |
AdWertNickFilter = (long)(3L * (long)AdWertNickFilter + HiResNick + 2) / 4; |
DebugOut.Analog[21] = AdWertNickFilter / 4; |
kanal = AD_ROLL; |
break; |
case 33: |
AdWertRoll = (ADC + roll1 + 3) / 5; |
roll_filter = (long)(1 * (long)roll_filter + 4 * (long)(ADC + roll1) + 1) / 2; |
if(PlatinenVersion == 10) { AdWertRoll /= 2;roll_filter /=2;} |
HiResRoll = roll_filter - 20 * AdNeutralRoll; |
AdWertRollFilter = (long)(3L * (long)AdWertRollFilter + HiResRoll + 2) / 4; |
DebugOut.Analog[22] = AdWertRollFilter / 4; |
kanal = AD_ACC_X; |
break; |
case 34: |
Aktuell_ax = ADC - NeutralAccX; |
AdWertAccNick = (Aktuell_ax + accx); |
kanal = AD_NICK; |
state = 0; |
AdReady = 1; |
ZaehlMessungen++; |
break; |
default: |
kanal = 0; |
state = 0; |
break; |
} |
ADMUX = kanal; |
if(state != 0) ANALOG_ON; |
} |
*/ |
/beta/FC_075i_MartinR/analog.h |
---|
0,0 → 1,46 |
#ifndef _ANALOG_H |
#define _ANALOG_H |
/*####################################################################################### |
#######################################################################################*/ |
extern volatile int UBat; |
extern volatile int AdWertNick, AdWertRoll, AdWertGier; |
extern volatile int AdWertAccRoll,AdWertAccNick,AdWertAccHoch; |
extern volatile int HiResNick, HiResRoll; |
extern volatile int AdWertNickFilter, AdWertRollFilter, AdWertGierFilter; |
extern volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az; |
extern volatile long Luftdruck; |
extern volatile char messanzahl_Druck; |
extern volatile unsigned int ZaehlMessungen; |
extern unsigned char DruckOffsetSetting; |
extern signed char ExpandBaro; |
extern volatile int VarioMeter; |
extern volatile int HoeheD;// MartinR: für Höhenregler |
extern volatile unsigned int MessLuftdruck; |
extern volatile int StartLuftdruck; |
extern volatile char MessanzahlNick; |
extern unsigned char AnalogOffsetNick,AnalogOffsetRoll,AnalogOffsetGier; |
extern volatile unsigned char AdReady; |
unsigned int ReadADC(unsigned char adc_input); |
void ADC_Init(void); |
void SucheLuftruckOffset(void); |
void SucheGyroOffset(void); |
#define AD_GIER 0 |
#define AD_ROLL 1 |
#define AD_NICK 2 |
#define AD_DRUCK 3 |
#define AD_UBAT 4 |
#define AD_ACC_Z 5 |
#define AD_ACC_Y 6 |
#define AD_ACC_X 7 |
#define ANALOG_OFF ADCSRA=0 |
#define ANALOG_ON ADCSRA=(1<<ADEN)|(1<<ADSC)|(0<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE) |
//Signle trigger Mode, Interrupt on |
#endif //_ANALOG_H |
/beta/FC_075i_MartinR/eeprom.c |
---|
0,0 → 1,260 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Konstanten |
// + 0-250 -> normale Werte |
// + 251 -> Poti1 |
// + 252 -> Poti2 |
// + 253 -> Poti3 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
void DefaultStickMapping(void) // mode 2 |
{ |
EE_Parameter.Kanalbelegung[K_GAS] = 1; |
EE_Parameter.Kanalbelegung[K_ROLL] = 2; |
EE_Parameter.Kanalbelegung[K_NICK] = 3; |
EE_Parameter.Kanalbelegung[K_GIER] = 4; |
EE_Parameter.Kanalbelegung[K_POTI1] = 5; |
EE_Parameter.Kanalbelegung[K_POTI2] = 6; |
EE_Parameter.Kanalbelegung[K_POTI3] = 7; |
EE_Parameter.Kanalbelegung[K_POTI4] = 8; |
} |
void DefaultKonstanten1(void) |
{ |
EE_Parameter.GlobalConfig = CFG_ACHSENKOPPLUNG_AKTIV | CFG_KOMPASS_AKTIV | CFG_GPS_AKTIV;//CFG_HOEHEN_SCHALTER |
EE_Parameter.Hoehe_MinGas = 30; |
EE_Parameter.MaxHoehe = 251; // Wert : 0-250 251 -> Poti1 |
EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
EE_Parameter.Luftdruck_D = 30; // Wert : 0-250 |
EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-250 |
EE_Parameter.Hoehe_HoverBand = 5; // Wert : 0-250 |
EE_Parameter.Hoehe_GPS_Z = 64; // Wert : 0-250 |
EE_Parameter.Hoehe_Verstaerkung = 20; // Wert : 0-50 |
EE_Parameter.Stick_P = 14; // Wert : 1-6 |
EE_Parameter.Stick_D = 16; // Wert : 0-64 |
EE_Parameter.Gier_P = 12; // Wert : 1-20 |
EE_Parameter.Gas_Min = 8; // Wert : 0-32 |
EE_Parameter.Gas_Max = 230; // Wert : 33-250 |
EE_Parameter.GyroAccFaktor = 30; // Wert : 1-64 |
EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
EE_Parameter.Gyro_P = 80; // Wert : 0-250 |
EE_Parameter.Gyro_I = 150; // Wert : 0-250 |
EE_Parameter.Gyro_D = 3; // Wert : 0-250 |
EE_Parameter.UnterspannungsWarnung = 33; // Wert : 0-250 ( Automatische Zellenerkennung bei < 50) |
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
EE_Parameter.NotGasZeit = 30; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
EE_Parameter.I_Faktor = 32; |
EE_Parameter.UserParam1 = 0; // zur freien Verwendung |
EE_Parameter.UserParam2 = 0; // zur freien Verwendung |
EE_Parameter.UserParam3 = 0; // zur freien Verwendung |
EE_Parameter.UserParam4 = 0; // zur freien Verwendung |
EE_Parameter.UserParam5 = 0; // zur freien Verwendung |
EE_Parameter.UserParam6 = 0; // zur freien Verwendung |
EE_Parameter.UserParam7 = 0; // zur freien Verwendung |
EE_Parameter.UserParam8 = 0; // zur freien Verwendung |
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
EE_Parameter.ServoCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
EE_Parameter.ServoNickMin = 0; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickMax = 250; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickRefresh = 3; |
EE_Parameter.ServoRollControl = 100; // Wert : 0-250 // Stellung des Servos |
EE_Parameter.ServoRollComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
EE_Parameter.ServoRollMin = 0; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoRollMax = 250; // Wert : 0-250 // Anschlag |
EE_Parameter.LoopGasLimit = 50; |
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
EE_Parameter.LoopHysterese = 50; |
EE_Parameter.BitConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
EE_Parameter.AchsKopplung1 = 90; |
EE_Parameter.AchsKopplung2 = 80; |
EE_Parameter.CouplingYawCorrection = 1; |
EE_Parameter.WinkelUmschlagNick = 85; |
EE_Parameter.WinkelUmschlagRoll = 85; |
EE_Parameter.GyroAccAbgleich = 16; // 1/k |
EE_Parameter.Driftkomp = 32; |
EE_Parameter.DynamicStability = 100; |
EE_Parameter.J16Bitmask = 95; |
EE_Parameter.J17Bitmask = 243; |
EE_Parameter.WARN_J16_Bitmask = 0xAA; |
EE_Parameter.WARN_J17_Bitmask = 0xAA; |
EE_Parameter.J16Timing = 15; |
EE_Parameter.J17Timing = 15; |
EE_Parameter.NaviGpsModeControl = 252; |
EE_Parameter.NaviGpsGain = 100; |
EE_Parameter.NaviGpsP = 90; |
EE_Parameter.NaviGpsI = 90; |
EE_Parameter.NaviGpsD = 90; |
EE_Parameter.NaviGpsPLimit = 75; |
EE_Parameter.NaviGpsILimit = 75; |
EE_Parameter.NaviGpsDLimit = 75; |
EE_Parameter.NaviGpsACC = 0; |
EE_Parameter.NaviGpsMinSat = 6; |
EE_Parameter.NaviStickThreshold = 8; |
EE_Parameter.NaviWindCorrection = 90; |
EE_Parameter.NaviSpeedCompensation = 30; |
EE_Parameter.NaviOperatingRadius = 100; |
EE_Parameter.NaviAngleLimitation = 100; |
EE_Parameter.NaviPH_LoginTime = 4; |
memcpy(EE_Parameter.Name, "Sport\0", 12); |
} |
void DefaultKonstanten2(void) |
{ |
EE_Parameter.GlobalConfig = CFG_ACHSENKOPPLUNG_AKTIV | CFG_KOMPASS_AKTIV | CFG_GPS_AKTIV;///*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV;//0x01; |
EE_Parameter.Hoehe_MinGas = 30; |
EE_Parameter.MaxHoehe = 251; // Wert : 0-250 251 -> Poti1 |
EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
EE_Parameter.Luftdruck_D = 30; // Wert : 0-250 |
EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-250 |
EE_Parameter.Hoehe_HoverBand = 5; // Wert : 0-250 |
EE_Parameter.Hoehe_GPS_Z = 64; // Wert : 0-250 |
EE_Parameter.Hoehe_Verstaerkung = 15; // Wert : 0-50 |
EE_Parameter.Stick_P = 10; // Wert : 1-6 |
EE_Parameter.Stick_D = 16; // Wert : 0-64 |
EE_Parameter.Gier_P = 6; // Wert : 1-20 |
EE_Parameter.Gas_Min = 8; // Wert : 0-32 |
EE_Parameter.Gas_Max = 230; // Wert : 33-250 |
EE_Parameter.GyroAccFaktor = 30; // Wert : 1-64 |
EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
EE_Parameter.Gyro_P = 90; // Wert : 0-250 |
EE_Parameter.Gyro_I = 120; // Wert : 0-250 |
EE_Parameter.Gyro_D = 3; // Wert : 0-250 |
EE_Parameter.UnterspannungsWarnung = 33; // Wert : 0-250 ( Automatische Zellenerkennung bei < 50) |
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
EE_Parameter.NotGasZeit = 30; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
EE_Parameter.I_Faktor = 32; |
EE_Parameter.UserParam1 = 0; // zur freien Verwendung |
EE_Parameter.UserParam2 = 0; // zur freien Verwendung |
EE_Parameter.UserParam3 = 0; // zur freien Verwendung |
EE_Parameter.UserParam4 = 0; // zur freien Verwendung |
EE_Parameter.UserParam5 = 0; // zur freien Verwendung |
EE_Parameter.UserParam6 = 0; // zur freien Verwendung |
EE_Parameter.UserParam7 = 0; // zur freien Verwendung |
EE_Parameter.UserParam8 = 0; // zur freien Verwendung |
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
EE_Parameter.ServoCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
EE_Parameter.ServoNickMin = 0; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickMax = 250; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickRefresh = 3; |
EE_Parameter.ServoRollControl = 100; // Wert : 0-250 // Stellung des Servos |
EE_Parameter.ServoRollComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
EE_Parameter.ServoRollMin = 0; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoRollMax = 250; // Wert : 0-250 // Anschlag |
EE_Parameter.LoopGasLimit = 50; |
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
EE_Parameter.LoopHysterese = 50; |
EE_Parameter.BitConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts |
EE_Parameter.AchsKopplung1 = 90; |
EE_Parameter.AchsKopplung2 = 80; |
EE_Parameter.CouplingYawCorrection = 60; |
EE_Parameter.WinkelUmschlagNick = 85; |
EE_Parameter.WinkelUmschlagRoll = 85; |
EE_Parameter.GyroAccAbgleich = 32; // 1/k |
EE_Parameter.Driftkomp = 32; |
EE_Parameter.DynamicStability = 75; |
EE_Parameter.J16Bitmask = 95; |
EE_Parameter.J17Bitmask = 243; |
EE_Parameter.WARN_J16_Bitmask = 0xAA; |
EE_Parameter.WARN_J17_Bitmask = 0xAA; |
EE_Parameter.J16Timing = 20; |
EE_Parameter.J17Timing = 20; |
EE_Parameter.NaviGpsModeControl = 252; |
EE_Parameter.NaviGpsGain = 100; |
EE_Parameter.NaviGpsP = 90; |
EE_Parameter.NaviGpsI = 90; |
EE_Parameter.NaviGpsD = 90; |
EE_Parameter.NaviGpsPLimit = 75; |
EE_Parameter.NaviGpsILimit = 75; |
EE_Parameter.NaviGpsDLimit = 75; |
EE_Parameter.NaviGpsACC = 0; |
EE_Parameter.NaviGpsMinSat = 6; |
EE_Parameter.NaviStickThreshold = 8; |
EE_Parameter.NaviWindCorrection = 90; |
EE_Parameter.NaviSpeedCompensation = 30; |
EE_Parameter.NaviOperatingRadius = 100; |
EE_Parameter.NaviAngleLimitation = 100; |
EE_Parameter.NaviPH_LoginTime = 4; |
memcpy(EE_Parameter.Name, "Normal\0", 12); |
} |
void DefaultKonstanten3(void) |
{ |
EE_Parameter.GlobalConfig = CFG_DREHRATEN_BEGRENZER | CFG_ACHSENKOPPLUNG_AKTIV | CFG_KOMPASS_AKTIV | CFG_GPS_AKTIV;///*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV;//0x01; |
EE_Parameter.Hoehe_MinGas = 30; |
EE_Parameter.MaxHoehe = 251; // Wert : 0-250 251 -> Poti1 |
EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
EE_Parameter.Luftdruck_D = 30; // Wert : 0-250 |
EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-250 |
EE_Parameter.Hoehe_HoverBand = 5; // Wert : 0-250 |
EE_Parameter.Hoehe_GPS_Z = 64; // Wert : 0-250 |
EE_Parameter.Hoehe_Verstaerkung = 15; // Wert : 0-50 |
EE_Parameter.Stick_P = 8; // Wert : 1-6 |
EE_Parameter.Stick_D = 16; // Wert : 0-64 |
EE_Parameter.Gier_P = 6; // Wert : 1-20 |
EE_Parameter.Gas_Min = 8; // Wert : 0-32 |
EE_Parameter.Gas_Max = 230; // Wert : 33-250 |
EE_Parameter.GyroAccFaktor = 30; // Wert : 1-64 |
EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
EE_Parameter.Gyro_P = 100; // Wert : 0-250 |
EE_Parameter.Gyro_I = 120; // Wert : 0-250 |
EE_Parameter.Gyro_D = 3; // Wert : 0-250 |
EE_Parameter.UnterspannungsWarnung = 33; // Wert : 0-250 ( Automatische Zellenerkennung bei < 50) |
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation |
EE_Parameter.I_Faktor = 16; |
EE_Parameter.UserParam1 = 0; // zur freien Verwendung |
EE_Parameter.UserParam2 = 0; // zur freien Verwendung |
EE_Parameter.UserParam3 = 0; // zur freien Verwendung |
EE_Parameter.UserParam4 = 0; // zur freien Verwendung |
EE_Parameter.UserParam5 = 0; // zur freien Verwendung |
EE_Parameter.UserParam6 = 0; // zur freien Verwendung |
EE_Parameter.UserParam7 = 0; // zur freien Verwendung |
EE_Parameter.UserParam8 = 0; // zur freien Verwendung |
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
EE_Parameter.ServoCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
EE_Parameter.ServoNickMin = 0; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickMax = 250; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoNickRefresh = 3; |
EE_Parameter.ServoRollControl = 100; // Wert : 0-250 // Stellung des Servos |
EE_Parameter.ServoRollComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
EE_Parameter.ServoRollMin = 0; // Wert : 0-250 // Anschlag |
EE_Parameter.ServoRollMax = 250; // Wert : 0-250 // Anschlag |
EE_Parameter.LoopGasLimit = 50; |
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
EE_Parameter.LoopHysterese = 50; |
EE_Parameter.BitConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts |
EE_Parameter.AchsKopplung1 = 90; |
EE_Parameter.AchsKopplung2 = 80; |
EE_Parameter.CouplingYawCorrection = 70; |
EE_Parameter.WinkelUmschlagNick = 85; |
EE_Parameter.WinkelUmschlagRoll = 85; |
EE_Parameter.GyroAccAbgleich = 32; // 1/k |
EE_Parameter.Driftkomp = 32; |
EE_Parameter.DynamicStability = 50; |
EE_Parameter.J16Bitmask = 95; |
EE_Parameter.J17Bitmask = 243; |
EE_Parameter.WARN_J16_Bitmask = 0xAA; |
EE_Parameter.WARN_J17_Bitmask = 0xAA; |
EE_Parameter.J16Timing = 30; |
EE_Parameter.J17Timing = 30; |
EE_Parameter.NaviGpsModeControl = 252; |
EE_Parameter.NaviGpsGain = 100; |
EE_Parameter.NaviGpsP = 90; |
EE_Parameter.NaviGpsI = 90; |
EE_Parameter.NaviGpsD = 90; |
EE_Parameter.NaviGpsPLimit = 75; |
EE_Parameter.NaviGpsILimit = 75; |
EE_Parameter.NaviGpsDLimit = 75; |
EE_Parameter.NaviGpsACC = 0; |
EE_Parameter.NaviGpsMinSat = 6; |
EE_Parameter.NaviStickThreshold = 8; |
EE_Parameter.NaviWindCorrection = 90; |
EE_Parameter.NaviSpeedCompensation = 30; |
EE_Parameter.NaviOperatingRadius = 100; |
EE_Parameter.NaviAngleLimitation = 100; |
EE_Parameter.NaviPH_LoginTime = 4; |
memcpy(EE_Parameter.Name, "Beginner\0", 12); |
} |
/beta/FC_075i_MartinR/fc.c |
---|
0,0 → 1,1763 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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 "main.h" |
#include "eeprom.c" |
unsigned char h,m,s; |
volatile unsigned int I2CTimeout = 100; |
int MesswertNick,MesswertRoll,MesswertGier,MesswertGierBias, RohMesswertNick,RohMesswertRoll; |
int TrimNick, TrimRoll; |
int AdNeutralGierBias; |
int AdNeutralNick = 0,AdNeutralRoll = 0,AdNeutralGier = 0,StartNeutralRoll = 0,StartNeutralNick = 0; |
int Mittelwert_AccNick, Mittelwert_AccRoll,Mittelwert_AccHoch, NeutralAccX=0, NeutralAccY=0; |
int NaviAccNick, NaviAccRoll,NaviCntAcc = 0; |
//volatile float NeutralAccZ = 0; // MartinR : so war es |
volatile int NeutralAccZ = 0; // MartinR geändert |
signed int h_p,h_d,h_delta; // MartinR: P,D Anteil beim eigenen Höhenregler |
signed int SchwebeGas; // MartinR: für neuen Höhenregler |
unsigned char delay_Hoehenregler = 0; // MartinR: zur Begrenzung der Sinkgeschwindigkeit |
unsigned char CosinusNickWinkel = 0, CosinusRollWinkel = 0; |
long IntegralNick = 0,IntegralNick2 = 0; |
long IntegralRoll = 0,IntegralRoll2 = 0; |
long IntegralAccNick = 0,IntegralAccRoll = 0,IntegralAccZ = 0; |
long Integral_Gier = 0; |
long Mess_IntegralNick = 0,Mess_IntegralNick2 = 0; |
long Mess_IntegralRoll = 0,Mess_IntegralRoll2 = 0; |
long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0; |
long MittelIntegralNick,MittelIntegralRoll,MittelIntegralNick2,MittelIntegralRoll2; |
volatile long Mess_Integral_Hoch = 0; |
int KompassValue = 0; |
int KompassStartwert = 0; |
int KompassRichtung = 0; |
unsigned int KompassSignalSchlecht = 500; |
unsigned char MAX_GAS,MIN_GAS; |
unsigned char HoehenReglerAktiv = 0; |
unsigned char TrichterFlug = 0; |
long Umschlag180Nick = 250000L, Umschlag180Roll = 250000L; |
long ErsatzKompass; |
int ErsatzKompassInGrad; // Kompasswert in Grad |
int GierGyroFehler = 0; |
char GyroFaktor,GyroFaktorGier; |
char IntegralFaktor,IntegralFaktorGier; |
int DiffNick,DiffRoll; |
int Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0; |
volatile unsigned char SenderOkay = 0; |
volatile unsigned char SenderRSSI = 0; |
int StickNick = 0,StickRoll = 0,StickGier = 0,StickGas = 0; |
char MotorenEin = 0; |
long HoehenWert = 0; |
long HoehenWertKorr; // MartinR: mit AccZ beschleunigungskompensierter Höhenwert |
long HoehenWertalt = 0; //MartinR: für neuen Höhenregler |
int iHoehe; // MartinR: Zähler für HoeheD |
long HoehenWertSumme = 0; // MartinR: für neuen Höhenregler D-Anteil |
long SollHoehe = 0; |
int LageKorrekturRoll = 0,LageKorrekturNick = 0; |
//float Ki = FAKTOR_I; |
int Ki = 10300 / 33; |
unsigned char Looping_Nick = 0,Looping_Roll = 0; |
unsigned char Looping_Links = 0, Looping_Rechts = 0, Looping_Unten = 0, Looping_Oben = 0; |
unsigned char Parameter_Luftdruck_D = 48; // Wert : 0-250 |
unsigned char Parameter_MaxHoehe = 251; // Wert : 0-250 |
unsigned char Parameter_Hoehe_P = 16; // Wert : 0-32 |
unsigned char Parameter_Hoehe_ACC_Wirkung = 58; // Wert : 0-250 |
unsigned char Parameter_KompassWirkung = 64; // Wert : 0-250 |
unsigned char Parameter_Hoehe_GPS_Z = 64; // Wert : 0-250 |
unsigned char Parameter_Gyro_D = 8; // Wert : 0-250 |
unsigned char Parameter_Gyro_P = 150; // Wert : 10-250 |
unsigned char Parameter_Gyro_I = 150; // Wert : 0-250 |
unsigned char Parameter_Gier_P = 2; // Wert : 1-20 |
unsigned char Parameter_I_Faktor = 10; // Wert : 1-20 |
unsigned char Parameter_UserParam1 = 0; |
unsigned char Parameter_UserParam2 = 0; |
unsigned char Parameter_UserParam3 = 0; |
unsigned char Parameter_UserParam4 = 0; |
unsigned char Parameter_UserParam5 = 0; |
unsigned char Parameter_UserParam6 = 0; |
unsigned char Parameter_UserParam7 = 0; |
unsigned char Parameter_UserParam8 = 0; |
unsigned char Parameter_ServoNickControl = 100; |
unsigned char Parameter_ServoRollControl = 100; |
unsigned char Parameter_LoopGasLimit = 70; |
unsigned char Parameter_AchsKopplung1 = 90; |
unsigned char Parameter_AchsKopplung2 = 65; |
unsigned char Parameter_CouplingYawCorrection = 64; |
//unsigned char Parameter_AchsGegenKopplung1 = 0; |
unsigned char Parameter_DynamicStability = 100; |
unsigned char Parameter_J16Bitmask; // for the J16 Output |
unsigned char Parameter_J16Timing; // for the J16 Output |
unsigned char Parameter_J17Bitmask; // for the J17 Output |
unsigned char Parameter_J17Timing; // for the J17 Output |
unsigned char Parameter_NaviGpsModeControl; // Parameters for the Naviboard |
unsigned char Parameter_NaviGpsGain; |
unsigned char Parameter_NaviGpsP; |
unsigned char Parameter_NaviGpsI; |
unsigned char Parameter_NaviGpsD; |
unsigned char Parameter_NaviGpsACC; |
unsigned char Parameter_NaviOperatingRadius; |
unsigned char Parameter_NaviWindCorrection; |
unsigned char Parameter_NaviSpeedCompensation; |
unsigned char Parameter_ExternalControl; |
struct mk_param_struct EE_Parameter; |
signed int ExternStickNick = 0,ExternStickRoll = 0,ExternStickGier = 0, ExternHoehenValue = -20; |
int MaxStickNick = 0,MaxStickRoll = 0; |
unsigned int modell_fliegt = 0; |
volatile unsigned char MikroKopterFlags = 0; |
long GIER_GRAD_FAKTOR = 1291; |
signed int KopplungsteilNickRoll,KopplungsteilRollNick; |
unsigned char RequiredMotors = 4; |
unsigned char Motor[MAX_MOTORS]; |
signed int tmp_motorwert[MAX_MOTORS]; |
int MotorSmoothing(int neu, int alt) |
{ |
int motor; |
if(neu > alt) motor = (1*(int)alt + neu) / 2; |
//else motor = neu - (alt - neu)*1; // MartinR: so war es |
else motor = neu; // MartinR: Entsprechend Vorschlag von MartinW geändert |
//if(Poti2 < 20) return(neu); |
return(motor); |
} |
void Piep(unsigned char Anzahl, unsigned int dauer) |
{ |
if(MotorenEin) return; //auf keinen Fall im Flug! |
while(Anzahl--) |
{ |
beeptime = dauer; |
while(beeptime); |
Delay_ms(dauer * 2); |
} |
} |
//############################################################################ |
// Nullwerte ermitteln |
void SetNeutral(void) |
//############################################################################ |
{ |
unsigned char i; |
unsigned int gier_neutral=0, nick_neutral=0, roll_neutral=0; |
ServoActive = 0; HEF4017R_ON; |
NeutralAccX = 0; |
NeutralAccY = 0; |
NeutralAccZ = 0; |
AdNeutralNick = 0; |
AdNeutralRoll = 0; |
AdNeutralGier = 0; |
AdNeutralGierBias = 0; |
Parameter_AchsKopplung1 = 0; |
Parameter_AchsKopplung2 = 0; |
ExpandBaro = 0; |
CalibrierMittelwert(); |
Delay_ms_Mess(100); |
CalibrierMittelwert(); |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
{ |
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
} |
#define NEUTRAL_FILTER 32 |
for(i=0; i<NEUTRAL_FILTER; i++) |
{ |
Delay_ms_Mess(10); |
gier_neutral += AdWertGier; |
nick_neutral += AdWertNick; |
roll_neutral += AdWertRoll; |
} |
AdNeutralNick= (nick_neutral+NEUTRAL_FILTER/2) / (NEUTRAL_FILTER / 8); |
AdNeutralRoll= (roll_neutral+NEUTRAL_FILTER/2) / (NEUTRAL_FILTER / 8); |
AdNeutralGier= (gier_neutral+NEUTRAL_FILTER/2) / (NEUTRAL_FILTER); |
AdNeutralGierBias = AdNeutralGier; |
StartNeutralRoll = AdNeutralRoll; |
StartNeutralNick = AdNeutralNick; |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) > 4) |
{ |
NeutralAccY = abs(Mittelwert_AccRoll) / (2*ACC_AMPLIFY); |
NeutralAccX = abs(Mittelwert_AccNick) / (2*ACC_AMPLIFY); |
NeutralAccZ = Aktuell_az; |
} |
else |
{ |
NeutralAccX = (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) * 256 + (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK+1]); |
NeutralAccY = (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_ROLL]) * 256 + (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_ROLL+1]); |
NeutralAccZ = (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_Z]) * 256 + (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_Z+1]); |
} |
MesswertNick = 0; |
MesswertRoll = 0; |
MesswertGier = 0; |
Delay_ms_Mess(100); |
Mittelwert_AccNick = ACC_AMPLIFY * (long)AdWertAccNick; |
Mittelwert_AccRoll = ACC_AMPLIFY * (long)AdWertAccRoll; |
IntegralNick = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccNick; |
IntegralRoll = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccRoll; |
Mess_IntegralNick2 = IntegralNick; |
Mess_IntegralRoll2 = IntegralRoll; |
Mess_Integral_Gier = 0; |
StartLuftdruck = Luftdruck; |
HoeheD = 0; // MartinR für Höhenregler |
VarioMeter = 0; |
Mess_Integral_Hoch = 0; |
KompassStartwert = KompassValue; |
GPS_Neutral(); |
beeptime = 50; |
Umschlag180Nick = ((long) EE_Parameter.WinkelUmschlagNick * 2500L) + 15000L; |
Umschlag180Roll = ((long) EE_Parameter.WinkelUmschlagRoll * 2500L) + 15000L; |
ExternHoehenValue = 0; |
ErsatzKompass = KompassValue * GIER_GRAD_FAKTOR; |
GierGyroFehler = 0; |
SendVersionToNavi = 1; |
LED_Init(); |
MikroKopterFlags |= FLAG_CALIBRATE; |
FromNaviCtrl_Value.Kalman_K = -1; |
FromNaviCtrl_Value.Kalman_MaxDrift = 0; |
FromNaviCtrl_Value.Kalman_MaxFusion = 32; |
Poti1 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110; |
Poti2 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110; |
Poti3 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110; |
Poti4 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110; |
// ServoActive = 1; |
SenderOkay = 100; |
} |
//############################################################################ |
// Bearbeitet die Messwerte |
void Mittelwert(void) |
//############################################################################ |
{ |
static signed long tmpl,tmpl2,tmpl3,tmpl4; |
static signed int oldNick, oldRoll, d2Roll, d2Nick; |
signed long winkel_nick, winkel_roll; |
MesswertGier = (signed int) AdNeutralGier - AdWertGier; |
// MesswertGierBias = (signed int) AdNeutralGierBias - AdWertGier; |
MesswertNick = (signed int) AdWertNickFilter / 8; |
MesswertRoll = (signed int) AdWertRollFilter / 8; |
RohMesswertNick = MesswertNick; |
RohMesswertRoll = MesswertRoll; |
//DebugOut.Analog[21] = MesswertNick; |
//DebugOut.Analog[22] = MesswertRoll; |
//DebugOut.Analog[22] = Mess_Integral_Gier; |
//DebugOut.Analog[21] = MesswertNick; |
//DebugOut.Analog[22] = MesswertRoll; |
// Beschleunigungssensor ++++++++++++++++++++++++++++++++++++++++++++++++ |
Mittelwert_AccNick = ((long)Mittelwert_AccNick * 3 + ((ACC_AMPLIFY * (long)AdWertAccNick))) / 4L; |
Mittelwert_AccRoll = ((long)Mittelwert_AccRoll * 3 + ((ACC_AMPLIFY * (long)AdWertAccRoll))) / 4L; |
Mittelwert_AccHoch = ((long)Mittelwert_AccHoch * 3 + ((long)AdWertAccHoch)) / 4L; |
IntegralAccNick += ACC_AMPLIFY * AdWertAccNick; |
IntegralAccRoll += ACC_AMPLIFY * AdWertAccRoll; |
NaviAccNick += AdWertAccNick; |
NaviAccRoll += AdWertAccRoll; |
NaviCntAcc++; |
IntegralAccZ += Aktuell_az - NeutralAccZ; |
//++++++++++++++++++++++++++++++++++++++++++++++++ |
// ADC einschalten |
ANALOG_ON; |
AdReady = 0; |
//++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Mess_IntegralRoll > 93000L) winkel_roll = 93000L; |
else if(Mess_IntegralRoll <-93000L) winkel_roll = -93000L; |
else winkel_roll = Mess_IntegralRoll; |
if(Mess_IntegralNick > 93000L) winkel_nick = 93000L; |
else if(Mess_IntegralNick <-93000L) winkel_nick = -93000L; |
else winkel_nick = Mess_IntegralNick; |
// Gier ++++++++++++++++++++++++++++++++++++++++++++++++ |
Mess_Integral_Gier += MesswertGier; |
ErsatzKompass += MesswertGier; |
// Kopplungsanteil +++++++++++++++++++++++++++++++++++++ |
if(!Looping_Nick && !Looping_Roll && (EE_Parameter.GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV)) |
{ |
tmpl3 = (MesswertRoll * winkel_nick) / 2048L; |
tmpl3 *= Parameter_AchsKopplung2; //65 |
tmpl3 /= 4096L; |
tmpl4 = (MesswertNick * winkel_roll) / 2048L; |
tmpl4 *= Parameter_AchsKopplung2; //65 |
tmpl4 /= 4096L; |
KopplungsteilNickRoll = tmpl3; |
KopplungsteilRollNick = tmpl4; |
tmpl4 -= tmpl3; |
ErsatzKompass += tmpl4; |
if(!Parameter_CouplingYawCorrection) Mess_Integral_Gier -= tmpl4/2; // Gier nachhelfen |
tmpl = ((MesswertGier + tmpl4) * winkel_nick) / 2048L; |
tmpl *= Parameter_AchsKopplung1; // 90 |
tmpl /= 4096L; |
tmpl2 = ((MesswertGier + tmpl4) * winkel_roll) / 2048L; |
tmpl2 *= Parameter_AchsKopplung1; |
tmpl2 /= 4096L; |
if(abs(MesswertGier) > 64) if(labs(tmpl) > 128 || labs(tmpl2) > 128) TrichterFlug = 1; |
//MesswertGier += (Parameter_CouplingYawCorrection * tmpl4) / 256; |
} |
else tmpl = tmpl2 = KopplungsteilNickRoll = KopplungsteilRollNick = 0; |
TrimRoll = tmpl - tmpl2 / 100L; |
TrimNick = -tmpl2 + tmpl / 100L; |
// Kompasswert begrenzen ++++++++++++++++++++++++++++++++++++++++++++++++ |
if(ErsatzKompass >= (360L * GIER_GRAD_FAKTOR)) ErsatzKompass -= 360L * GIER_GRAD_FAKTOR; // 360° Umschlag |
if(ErsatzKompass < 0) ErsatzKompass += 360L * GIER_GRAD_FAKTOR; |
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++ |
Mess_IntegralRoll2 += MesswertRoll + TrimRoll; |
Mess_IntegralRoll += MesswertRoll + TrimRoll - LageKorrekturRoll; |
if(Mess_IntegralRoll > Umschlag180Roll) |
{ |
Mess_IntegralRoll = -(Umschlag180Roll - 25000L); |
Mess_IntegralRoll2 = Mess_IntegralRoll; |
} |
if(Mess_IntegralRoll <-Umschlag180Roll) |
{ |
Mess_IntegralRoll = (Umschlag180Roll - 25000L); |
Mess_IntegralRoll2 = Mess_IntegralRoll; |
} |
// Nick ++++++++++++++++++++++++++++++++++++++++++++++++ |
Mess_IntegralNick2 += MesswertNick + TrimNick; |
Mess_IntegralNick += MesswertNick + TrimNick - LageKorrekturNick; |
if(Mess_IntegralNick > Umschlag180Nick) |
{ |
Mess_IntegralNick = -(Umschlag180Nick - 25000L); |
Mess_IntegralNick2 = Mess_IntegralNick; |
} |
if(Mess_IntegralNick <-Umschlag180Nick) |
{ |
Mess_IntegralNick = (Umschlag180Nick - 25000L); |
Mess_IntegralNick2 = Mess_IntegralNick; |
} |
Integral_Gier = Mess_Integral_Gier; |
IntegralNick = Mess_IntegralNick; |
IntegralRoll = Mess_IntegralRoll; |
IntegralNick2 = Mess_IntegralNick2; |
IntegralRoll2 = Mess_IntegralRoll2; |
#define D_LIMIT 128 |
MesswertNick = HiResNick / 8; |
MesswertRoll = HiResRoll / 8; |
if(AdWertNick < 15) MesswertNick = -1000; if(AdWertNick < 7) MesswertNick = -2000; |
if(PlatinenVersion == 10) { if(AdWertNick > 1010) MesswertNick = +1000; if(AdWertNick > 1017) MesswertNick = +2000; } |
else { if(AdWertNick > 2000) MesswertNick = +1000; if(AdWertNick > 2015) MesswertNick = +2000; } |
if(AdWertRoll < 15) MesswertRoll = -1000; if(AdWertRoll < 7) MesswertRoll = -2000; |
if(PlatinenVersion == 10) { if(AdWertRoll > 1010) MesswertRoll = +1000; if(AdWertRoll > 1017) MesswertRoll = +2000; } |
else { if(AdWertRoll > 2000) MesswertRoll = +1000; if(AdWertRoll > 2015) MesswertRoll = +2000; } |
if(Parameter_Gyro_D) |
{ |
d2Nick = HiResNick - oldNick; |
oldNick = (oldNick + HiResNick)/2; |
if(d2Nick > D_LIMIT) d2Nick = D_LIMIT; |
else if(d2Nick < -D_LIMIT) d2Nick = -D_LIMIT; |
MesswertNick += (d2Nick * (signed int) Parameter_Gyro_D) / 16; |
d2Roll = HiResRoll - oldRoll; |
oldRoll = (oldRoll + HiResRoll)/2; |
if(d2Roll > D_LIMIT) d2Roll = D_LIMIT; |
else if(d2Roll < -D_LIMIT) d2Roll = -D_LIMIT; |
MesswertRoll += (d2Roll * (signed int) Parameter_Gyro_D) / 16; |
HiResNick += (d2Nick * (signed int) Parameter_Gyro_D); |
HiResRoll += (d2Roll * (signed int) Parameter_Gyro_D); |
} |
if(RohMesswertRoll > 0) TrimRoll += ((long) abs(KopplungsteilNickRoll) * Parameter_CouplingYawCorrection) / 64L; |
else TrimRoll -= ((long) abs(KopplungsteilNickRoll) * Parameter_CouplingYawCorrection) / 64L; |
if(RohMesswertNick > 0) TrimNick += ((long) abs(KopplungsteilRollNick) * Parameter_CouplingYawCorrection) / 64L; |
else TrimNick -= ((long) abs(KopplungsteilRollNick) * Parameter_CouplingYawCorrection) / 64L; |
if(EE_Parameter.GlobalConfig & CFG_DREHRATEN_BEGRENZER && !Looping_Nick && !Looping_Roll) |
{ |
if(RohMesswertNick > 256) MesswertNick += 1 * (RohMesswertNick - 256); |
else if(RohMesswertNick < -256) MesswertNick += 1 * (RohMesswertNick + 256); |
if(RohMesswertRoll > 256) MesswertRoll += 1 * (RohMesswertRoll - 256); |
else if(RohMesswertRoll < -256) MesswertRoll += 1 * (RohMesswertRoll + 256); |
} |
if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255; |
if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255; |
if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255; |
if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255; |
} |
//############################################################################ |
// Messwerte beim Ermitteln der Nullage |
void CalibrierMittelwert(void) |
//############################################################################ |
{ |
if(PlatinenVersion == 13) SucheGyroOffset(); |
// ADC auschalten, damit die Werte sich nicht während der Berechnung ändern |
ANALOG_OFF; |
MesswertNick = AdWertNick; |
MesswertRoll = AdWertRoll; |
MesswertGier = AdWertGier; |
Mittelwert_AccNick = ACC_AMPLIFY * (long)AdWertAccNick; |
Mittelwert_AccRoll = ACC_AMPLIFY * (long)AdWertAccRoll; |
Mittelwert_AccHoch = (long)AdWertAccHoch; |
// ADC einschalten |
ANALOG_ON; |
if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255; |
if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255; |
if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255; |
if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255; |
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L; |
} |
//############################################################################ |
// Senden der Motorwerte per I2C-Bus |
void SendMotorData(void) |
//############################################################################ |
{ |
unsigned char i; |
if(!MotorenEin) |
{ |
MikroKopterFlags &= ~(FLAG_MOTOR_RUN | FLAG_FLY); |
for(i=0;i<MAX_MOTORS;i++) |
{ |
if(!PC_MotortestActive) MotorTest[i] = 0; |
Motor[i] = MotorTest[i]; |
} |
if(PC_MotortestActive) PC_MotortestActive--; |
} |
else MikroKopterFlags |= FLAG_MOTOR_RUN; |
DebugOut.Analog[12] = Motor[0]; |
DebugOut.Analog[13] = Motor[1]; |
DebugOut.Analog[14] = Motor[3]; |
DebugOut.Analog[15] = Motor[2]; |
//Start I2C Interrupt Mode |
twi_state = 0; |
motor = 0; |
i2c_start(); |
} |
//############################################################################ |
// Trägt ggf. das Poti als Parameter ein |
void ParameterZuordnung(void) |
//############################################################################ |
{ |
#define CHK_POTI_MM(b,a,min,max) { if(a > 250) { if(a == 251) b = Poti1; else if(a == 252) b = Poti2; else if(a == 253) b = Poti3; else if(a == 254) b = Poti4;} else b = a; if(b <= min) b = min; else if(b >= max) b = max;} |
#define CHK_POTI(b,a,min,max) { if(a > 250) { if(a == 251) b = Poti1; else if(a == 252) b = Poti2; else if(a == 253) b = Poti3; else if(a == 254) b = Poti4;} else b = a; } |
CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe,0,255); |
CHK_POTI_MM(Parameter_Luftdruck_D,EE_Parameter.Luftdruck_D,0,100); |
CHK_POTI_MM(Parameter_Hoehe_P,EE_Parameter.Hoehe_P,0,100); |
CHK_POTI(Parameter_Hoehe_ACC_Wirkung,EE_Parameter.Hoehe_ACC_Wirkung,0,255); |
CHK_POTI(Parameter_Hoehe_GPS_Z,EE_Parameter.Hoehe_GPS_Z,0,255); |
CHK_POTI(Parameter_KompassWirkung,EE_Parameter.KompassWirkung,0,255); |
CHK_POTI_MM(Parameter_Gyro_P,EE_Parameter.Gyro_P,10,255); |
CHK_POTI(Parameter_Gyro_I,EE_Parameter.Gyro_I,0,255); |
CHK_POTI(Parameter_Gyro_D,EE_Parameter.Gyro_D,0,255); |
CHK_POTI(Parameter_I_Faktor,EE_Parameter.I_Faktor,0,255); |
CHK_POTI(Parameter_UserParam1,EE_Parameter.UserParam1,0,255); |
CHK_POTI(Parameter_UserParam2,EE_Parameter.UserParam2,0,255); |
CHK_POTI(Parameter_UserParam3,EE_Parameter.UserParam3,0,255); |
CHK_POTI(Parameter_UserParam4,EE_Parameter.UserParam4,0,255); |
CHK_POTI(Parameter_UserParam5,EE_Parameter.UserParam5,0,255); |
CHK_POTI(Parameter_UserParam6,EE_Parameter.UserParam6,0,255); |
CHK_POTI(Parameter_UserParam7,EE_Parameter.UserParam7,0,255); |
CHK_POTI(Parameter_UserParam8,EE_Parameter.UserParam8,0,255); |
CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
CHK_POTI(Parameter_ServoRollControl,EE_Parameter.ServoRollControl,0,255); |
CHK_POTI(Parameter_LoopGasLimit,EE_Parameter.LoopGasLimit,0,255); |
CHK_POTI(Parameter_AchsKopplung1, EE_Parameter.AchsKopplung1,0,255); |
CHK_POTI(Parameter_AchsKopplung2, EE_Parameter.AchsKopplung2,0,255); |
CHK_POTI(Parameter_CouplingYawCorrection,EE_Parameter.CouplingYawCorrection,0,255); |
// CHK_POTI(Parameter_AchsGegenKopplung1,EE_Parameter.AchsGegenKopplung1,0,255); |
CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability,0,255); |
CHK_POTI_MM(Parameter_J16Timing,EE_Parameter.J16Timing,1,255); |
CHK_POTI_MM(Parameter_J17Timing,EE_Parameter.J17Timing,1,255); |
CHK_POTI(Parameter_ExternalControl,EE_Parameter.ExternalControl,0,255); |
Ki = 10300 / (Parameter_I_Faktor + 1); |
MAX_GAS = EE_Parameter.Gas_Max; |
MIN_GAS = EE_Parameter.Gas_Min; |
} |
//############################################################################ |
// |
void MotorRegler(void) |
//############################################################################ |
{ |
int pd_ergebnis_nick,pd_ergebnis_roll,h,tmp_int; |
int GierMischanteil,GasMischanteil; |
static long SummeNick=0,SummeRoll=0; |
static long sollGier = 0,tmp_long,tmp_long2; |
static long IntegralFehlerNick = 0; |
static long IntegralFehlerRoll = 0; |
static unsigned int RcLostTimer; |
static unsigned char delay_neutral = 0; |
static unsigned char delay_einschalten = 0,delay_ausschalten = 0; |
static int hoehenregler = 0; |
static char TimerWerteausgabe = 0; |
static char NeueKompassRichtungMerken = 0; |
static long ausgleichNick, ausgleichRoll; |
int IntegralNickMalFaktor,IntegralRollMalFaktor; |
unsigned char i; |
Mittelwert(); |
GRN_ON; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gaswert ermitteln |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
GasMischanteil = StickGas; |
if(GasMischanteil < MIN_GAS + 10) GasMischanteil = MIN_GAS + 10; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Empfang schlecht |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(SenderOkay < 100) |
{ |
if(!PcZugriff) |
{ |
if(BeepMuster == 0xffff) |
{ |
beeptime = 15000; |
BeepMuster = 0x0c00; |
} |
} |
if(RcLostTimer) RcLostTimer--; |
else |
{ |
MotorenEin = 0; |
MikroKopterFlags &= ~FLAG_NOTLANDUNG; |
} |
ROT_ON; |
if(modell_fliegt > 1000) // wahrscheinlich in der Luft --> langsam absenken |
{ |
GasMischanteil = EE_Parameter.NotGas; |
MikroKopterFlags |= FLAG_NOTLANDUNG; |
PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] = 0; |
PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] = 0; |
PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] = 0; |
PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] = 0; |
PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] = 0; |
} |
else MotorenEin = 0; |
} |
else |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Emfang gut |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(SenderOkay > 140) |
{ |
MikroKopterFlags &= ~FLAG_NOTLANDUNG; |
RcLostTimer = EE_Parameter.NotGasZeit * 50; |
if(GasMischanteil > 40 && MotorenEin) |
{ |
if(modell_fliegt < 0xffff) modell_fliegt++; |
} |
if((modell_fliegt < 256)) |
{ |
SummeNick = 0; |
SummeRoll = 0; |
if(modell_fliegt == 250) |
{ |
NeueKompassRichtungMerken = 1; |
sollGier = 0; |
Mess_Integral_Gier = 0; |
// Mess_Integral_Gier2 = 0; |
} |
} else MikroKopterFlags |= FLAG_FLY; |
if((PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 80) && MotorenEin == 0) |
{ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// auf Nullwerte kalibrieren |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) // Neutralwerte |
{ |
if(++delay_neutral > 200) // nicht sofort |
{ |
GRN_OFF; |
MotorenEin = 0; |
delay_neutral = 0; |
modell_fliegt = 0; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > 70) |
{ |
unsigned char setting=1; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 1; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 2; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5; |
SetActiveParamSetNumber(setting); // aktiven Datensatz merken |
} |
// else |
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) < 30 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70) |
{ |
WinkelOut.CalcState = 1; |
beeptime = 1000; |
} |
else |
{ |
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
{ |
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
} |
SetNeutral(); |
ServoActive = 1; |
DDRD |=0x80; // enable J7 -> Servo signal |
Piep(GetActiveParamSetNumber(),120); |
} |
} |
} |
else |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) // ACC Neutralwerte speichern |
{ |
if(++delay_neutral > 200) // nicht sofort |
{ |
GRN_OFF; |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_NICK],0xff); // Werte löschen |
MotorenEin = 0; |
delay_neutral = 0; |
modell_fliegt = 0; |
SetNeutral(); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_NICK],NeutralAccX / 256); // ACC-NeutralWerte speichern |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_NICK+1],NeutralAccX % 256); // ACC-NeutralWerte speichern |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_ROLL],NeutralAccY / 256); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_ROLL+1],NeutralAccY % 256); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_Z],(int)NeutralAccZ / 256); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_Z+1],(int)NeutralAccZ % 256); |
Piep(GetActiveParamSetNumber(),120); |
} |
} |
else delay_neutral = 0; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gas ist unten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] < 35-120) |
{ |
// Starten |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) |
{ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Einschalten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(++delay_einschalten > 200) |
{ |
delay_einschalten = 200; |
modell_fliegt = 1; |
MotorenEin = 1; |
sollGier = 0; |
Mess_Integral_Gier = 0; |
Mess_Integral_Gier2 = 0; |
Mess_IntegralNick = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccNick; |
Mess_IntegralRoll = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccRoll; |
Mess_IntegralNick2 = IntegralNick; |
Mess_IntegralRoll2 = IntegralRoll; |
SummeNick = 0; |
SummeRoll = 0; |
SchwebeGas = 0; // MartinR: für neuen Höhenregler |
MikroKopterFlags |= FLAG_START; |
} |
} |
else delay_einschalten = 0; |
//Auf Neutralwerte setzen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Auschalten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) |
{ |
if(++delay_ausschalten > 200) // nicht sofort |
{ |
MotorenEin = 0; |
delay_ausschalten = 200; |
modell_fliegt = 0; |
} |
} |
else delay_ausschalten = 0; |
} |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// neue Werte von der Funke |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!NewPpmData-- || (MikroKopterFlags & FLAG_NOTLANDUNG)) |
{ |
static int stick_nick,stick_roll; |
ParameterZuordnung(); |
stick_nick = (stick_nick * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P) / 4; |
stick_nick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; |
StickNick = stick_nick - (GPS_Nick + GPS_Nick2); |
stick_roll = (stick_roll * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P) / 4; |
stick_roll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; |
StickRoll = stick_roll - (GPS_Roll + GPS_Roll2); |
StickGier = -PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]; |
if(StickGier > 2) StickGier -= 2; else |
if(StickGier < -2) StickGier += 2; else StickGier = 0; |
StickGas = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 120; |
GyroFaktor = (Parameter_Gyro_P + 10.0); |
IntegralFaktor = Parameter_Gyro_I; |
GyroFaktorGier = (Parameter_Gyro_P + 10.0); |
IntegralFaktorGier = Parameter_Gyro_I; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ Analoge Steuerung per Seriell |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(ExternControl.Config & 0x01 && Parameter_ExternalControl > 128) |
{ |
StickNick += (int) ExternControl.Nick * (int) EE_Parameter.Stick_P; |
StickRoll += (int) ExternControl.Roll * (int) EE_Parameter.Stick_P; |
StickGier += ExternControl.Gier; |
ExternHoehenValue = (int) ExternControl.Hight * (int)EE_Parameter.Hoehe_Verstaerkung; |
if(ExternControl.Gas < StickGas) StickGas = ExternControl.Gas; |
} |
if(StickGas < 0) StickGas = 0; |
if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor = 0; |
if(GyroFaktor < 0) GyroFaktor = 0; |
if(IntegralFaktor < 0) IntegralFaktor = 0; |
if(abs(StickNick/STICK_GAIN) > MaxStickNick) |
{ |
MaxStickNick = abs(StickNick)/STICK_GAIN; |
if(MaxStickNick > 100) MaxStickNick = 100; |
} |
else MaxStickNick--; |
if(abs(StickRoll/STICK_GAIN) > MaxStickRoll) |
{ |
MaxStickRoll = abs(StickRoll)/STICK_GAIN; |
if(MaxStickRoll > 100) MaxStickRoll = 100; |
} |
else MaxStickRoll--; |
if(MikroKopterFlags & FLAG_NOTLANDUNG) {MaxStickNick = 0; MaxStickRoll = 0;} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Looping? |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & CFG_LOOP_LINKS) Looping_Links = 1; |
else |
{ |
{ |
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Links = 0; |
} |
} |
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < -EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & CFG_LOOP_RECHTS) Looping_Rechts = 1; |
else |
{ |
if(Looping_Rechts) // Hysterese |
{ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > -(EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese)) Looping_Rechts = 0; |
} |
} |
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & CFG_LOOP_OBEN) Looping_Oben = 1; |
else |
{ |
if(Looping_Oben) // Hysterese |
{ |
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Oben = 0; |
} |
} |
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & CFG_LOOP_UNTEN) Looping_Unten = 1; |
else |
{ |
if(Looping_Unten) // Hysterese |
{ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > -(EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese)) Looping_Unten = 0; |
} |
} |
if(Looping_Links || Looping_Rechts) Looping_Roll = 1; else Looping_Roll = 0; |
if(Looping_Oben || Looping_Unten) { Looping_Nick = 1; Looping_Roll = 0; Looping_Links = 0; Looping_Rechts = 0;} else Looping_Nick = 0; |
} // Ende neue Funken-Werte |
if(Looping_Roll || Looping_Nick) |
{ |
if(GasMischanteil > EE_Parameter.LoopGasLimit) GasMischanteil = EE_Parameter.LoopGasLimit; |
TrichterFlug = 1; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Bei Empfangsausfall im Flug |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(MikroKopterFlags & FLAG_NOTLANDUNG) |
{ |
StickGier = 0; |
StickNick = 0; |
StickRoll = 0; |
GyroFaktor = 90; |
IntegralFaktor = 120; |
GyroFaktorGier = 90; |
IntegralFaktorGier = 120; |
Looping_Roll = 0; |
Looping_Nick = 0; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Integrale auf ACC-Signal abgleichen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define ABGLEICH_ANZAHL 256L |
MittelIntegralNick += IntegralNick; // Für die Mittelwertbildung aufsummieren |
MittelIntegralRoll += IntegralRoll; |
MittelIntegralNick2 += IntegralNick2; |
MittelIntegralRoll2 += IntegralRoll2; |
if(Looping_Nick || Looping_Roll) |
{ |
IntegralAccNick = 0; |
IntegralAccRoll = 0; |
MittelIntegralNick = 0; |
MittelIntegralRoll = 0; |
MittelIntegralNick2 = 0; |
MittelIntegralRoll2 = 0; |
Mess_IntegralNick2 = Mess_IntegralNick; |
Mess_IntegralRoll2 = Mess_IntegralRoll; |
ZaehlMessungen = 0; |
LageKorrekturNick = 0; |
LageKorrekturRoll = 0; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!Looping_Nick && !Looping_Roll && (Aktuell_az > 512 || MotorenEin)) |
{ |
long tmp_long, tmp_long2; |
if(FromNaviCtrl_Value.Kalman_K != -1 /*&& !TrichterFlug*/) |
{ |
tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick); |
tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll); |
tmp_long = (tmp_long * FromNaviCtrl_Value.Kalman_K) / (32 * 16); |
tmp_long2 = (tmp_long2 * FromNaviCtrl_Value.Kalman_K) / (32 * 16); |
if((MaxStickNick > 64) || (MaxStickRoll > 64)) |
{ |
tmp_long /= 2; |
tmp_long2 /= 2; |
} |
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25) |
{ |
tmp_long /= 3; |
tmp_long2 /= 3; |
} |
if(tmp_long > (long) FromNaviCtrl_Value.Kalman_MaxFusion) tmp_long = (long) FromNaviCtrl_Value.Kalman_MaxFusion; |
if(tmp_long < (long)-FromNaviCtrl_Value.Kalman_MaxFusion) tmp_long = (long)-FromNaviCtrl_Value.Kalman_MaxFusion; |
if(tmp_long2 > (long) FromNaviCtrl_Value.Kalman_MaxFusion) tmp_long2 = (long) FromNaviCtrl_Value.Kalman_MaxFusion; |
if(tmp_long2 < (long)-FromNaviCtrl_Value.Kalman_MaxFusion) tmp_long2 = (long)-FromNaviCtrl_Value.Kalman_MaxFusion; |
} |
else |
{ |
tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick); |
tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll); |
tmp_long /= 16; |
tmp_long2 /= 16; |
if((MaxStickNick > 64) || (MaxStickRoll > 64)) |
{ |
tmp_long /= 3; |
tmp_long2 /= 3; |
} |
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25) |
{ |
tmp_long /= 3; |
tmp_long2 /= 3; |
} |
#define AUSGLEICH 32 |
if(tmp_long > AUSGLEICH) tmp_long = AUSGLEICH; |
if(tmp_long < -AUSGLEICH) tmp_long =-AUSGLEICH; |
if(tmp_long2 > AUSGLEICH) tmp_long2 = AUSGLEICH; |
if(tmp_long2 <-AUSGLEICH) tmp_long2 =-AUSGLEICH; |
} |
//if(Poti2 > 20) { tmp_long = 0; tmp_long2 = 0;} |
Mess_IntegralNick -= tmp_long; |
Mess_IntegralRoll -= tmp_long2; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(ZaehlMessungen >= ABGLEICH_ANZAHL) |
{ |
static int cnt = 0; |
static char last_n_p,last_n_n,last_r_p,last_r_n; |
static long MittelIntegralNick_Alt,MittelIntegralRoll_Alt; |
if(!Looping_Nick && !Looping_Roll && !TrichterFlug && EE_Parameter.Driftkomp) |
{ |
MittelIntegralNick /= ABGLEICH_ANZAHL; |
MittelIntegralRoll /= ABGLEICH_ANZAHL; |
IntegralAccNick = (EE_Parameter.GyroAccFaktor * IntegralAccNick) / ABGLEICH_ANZAHL; |
IntegralAccRoll = (EE_Parameter.GyroAccFaktor * IntegralAccRoll) / ABGLEICH_ANZAHL; |
IntegralAccZ = IntegralAccZ / ABGLEICH_ANZAHL; |
#define MAX_I 0//(Poti2/10) |
// Nick ++++++++++++++++++++++++++++++++++++++++++++++++ |
IntegralFehlerNick = (long)(MittelIntegralNick - (long)IntegralAccNick); |
ausgleichNick = IntegralFehlerNick / EE_Parameter.GyroAccAbgleich; |
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++ |
IntegralFehlerRoll = (long)(MittelIntegralRoll - (long)IntegralAccRoll); |
ausgleichRoll = IntegralFehlerRoll / EE_Parameter.GyroAccAbgleich; |
LageKorrekturNick = ausgleichNick / ABGLEICH_ANZAHL; |
LageKorrekturRoll = ausgleichRoll / ABGLEICH_ANZAHL; |
if(((MaxStickNick > 64) || (MaxStickRoll > 64) || (abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25)) && (FromNaviCtrl_Value.Kalman_K == -1)) |
{ |
LageKorrekturNick /= 2; |
LageKorrekturRoll /= 2; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gyro-Drift ermitteln |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
MittelIntegralNick2 /= ABGLEICH_ANZAHL; |
MittelIntegralRoll2 /= ABGLEICH_ANZAHL; |
tmp_long = IntegralNick2 - IntegralNick; |
tmp_long2 = IntegralRoll2 - IntegralRoll; |
//DebugOut.Analog[25] = MittelIntegralRoll2 / 26; |
IntegralFehlerNick = tmp_long; |
IntegralFehlerRoll = tmp_long2; |
Mess_IntegralNick2 -= IntegralFehlerNick; |
Mess_IntegralRoll2 -= IntegralFehlerRoll; |
// IntegralFehlerNick = (IntegralFehlerNick * 1 + tmp_long) / 2; |
// IntegralFehlerRoll = (IntegralFehlerRoll * 1 + tmp_long2) / 2; |
if(EE_Parameter.Driftkomp) |
{ |
if(GierGyroFehler > ABGLEICH_ANZAHL/2) { AdNeutralGier++; AdNeutralGierBias++; } |
if(GierGyroFehler <-ABGLEICH_ANZAHL/2) { AdNeutralGier--; AdNeutralGierBias--; } |
} |
//DebugOut.Analog[22] = MittelIntegralRoll / 26; |
//DebugOut.Analog[24] = GierGyroFehler; |
GierGyroFehler = 0; |
/*DebugOut.Analog[17] = IntegralAccNick / 26; |
DebugOut.Analog[18] = IntegralAccRoll / 26; |
DebugOut.Analog[19] = IntegralFehlerNick;// / 26; |
DebugOut.Analog[20] = IntegralFehlerRoll;// / 26; |
*/ |
//DebugOut.Analog[21] = MittelIntegralNick / 26; |
//MittelIntegralRoll = MittelIntegralRoll; |
//DebugOut.Analog[28] = ausgleichNick; |
/* |
DebugOut.Analog[29] = ausgleichRoll; |
DebugOut.Analog[30] = LageKorrekturRoll * 10; |
*/ |
#define FEHLER_LIMIT (ABGLEICH_ANZAHL / 2) |
#define FEHLER_LIMIT1 (ABGLEICH_ANZAHL * 2) //4 |
#define FEHLER_LIMIT2 (ABGLEICH_ANZAHL * 16) //16 |
#define BEWEGUNGS_LIMIT 20000 |
// Nick +++++++++++++++++++++++++++++++++++++++++++++++++ |
cnt = 1;// + labs(IntegralFehlerNick) / 4096; |
if(labs(IntegralFehlerNick) > FEHLER_LIMIT1) cnt = 4; |
if(labs(MittelIntegralNick_Alt - MittelIntegralNick) < BEWEGUNGS_LIMIT || (FromNaviCtrl_Value.Kalman_MaxDrift > 3*8)) |
{ |
if(IntegralFehlerNick > FEHLER_LIMIT2) |
{ |
if(last_n_p) |
{ |
cnt += labs(IntegralFehlerNick) / (FEHLER_LIMIT2 / 8); |
ausgleichNick = IntegralFehlerNick / 8; |
if(ausgleichNick > 5000) ausgleichNick = 5000; |
LageKorrekturNick += ausgleichNick / ABGLEICH_ANZAHL; |
} |
else last_n_p = 1; |
} else last_n_p = 0; |
if(IntegralFehlerNick < -FEHLER_LIMIT2) |
{ |
if(last_n_n) |
{ |
cnt += labs(IntegralFehlerNick) / (FEHLER_LIMIT2 / 8); |
ausgleichNick = IntegralFehlerNick / 8; |
if(ausgleichNick < -5000) ausgleichNick = -5000; |
LageKorrekturNick += ausgleichNick / ABGLEICH_ANZAHL; |
} |
else last_n_n = 1; |
} else last_n_n = 0; |
} |
else |
{ |
cnt = 0; |
KompassSignalSchlecht = 1000; |
} |
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp; |
if(FromNaviCtrl_Value.Kalman_MaxDrift) if(cnt > FromNaviCtrl_Value.Kalman_MaxDrift) cnt = FromNaviCtrl_Value.Kalman_MaxDrift; |
if(IntegralFehlerNick > FEHLER_LIMIT) AdNeutralNick += cnt; |
if(IntegralFehlerNick < -FEHLER_LIMIT) AdNeutralNick -= cnt; |
// Roll +++++++++++++++++++++++++++++++++++++++++++++++++ |
cnt = 1;// + labs(IntegralFehlerNick) / 4096; |
if(labs(IntegralFehlerRoll) > FEHLER_LIMIT1) cnt = 4; |
ausgleichRoll = 0; |
if(labs(MittelIntegralRoll_Alt - MittelIntegralRoll) < BEWEGUNGS_LIMIT || (FromNaviCtrl_Value.Kalman_MaxDrift > 3*8)) |
{ |
if(IntegralFehlerRoll > FEHLER_LIMIT2) |
{ |
if(last_r_p) |
{ |
cnt += labs(IntegralFehlerRoll) / (FEHLER_LIMIT2 / 8); |
ausgleichRoll = IntegralFehlerRoll / 8; |
if(ausgleichRoll > 5000) ausgleichRoll = 5000; |
LageKorrekturRoll += ausgleichRoll / ABGLEICH_ANZAHL; |
} |
else last_r_p = 1; |
} else last_r_p = 0; |
if(IntegralFehlerRoll < -FEHLER_LIMIT2) |
{ |
if(last_r_n) |
{ |
cnt += labs(IntegralFehlerRoll) / (FEHLER_LIMIT2 / 8); |
ausgleichRoll = IntegralFehlerRoll / 8; |
if(ausgleichRoll < -5000) ausgleichRoll = -5000; |
LageKorrekturRoll += ausgleichRoll / ABGLEICH_ANZAHL; |
} |
else last_r_n = 1; |
} else last_r_n = 0; |
} else |
{ |
cnt = 0; |
KompassSignalSchlecht = 1000; |
} |
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp; |
if(FromNaviCtrl_Value.Kalman_MaxDrift) if(cnt > FromNaviCtrl_Value.Kalman_MaxDrift) cnt = FromNaviCtrl_Value.Kalman_MaxDrift; |
if(IntegralFehlerRoll > FEHLER_LIMIT) AdNeutralRoll += cnt; |
if(IntegralFehlerRoll < -FEHLER_LIMIT) AdNeutralRoll -= cnt; |
} |
else |
{ |
LageKorrekturRoll = 0; |
LageKorrekturNick = 0; |
TrichterFlug = 0; |
} |
if(!IntegralFaktor) { LageKorrekturRoll = 0; LageKorrekturNick = 0;} // z.B. bei HH |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++ |
MittelIntegralNick_Alt = MittelIntegralNick; |
MittelIntegralRoll_Alt = MittelIntegralRoll; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++ |
IntegralAccNick = 0; |
IntegralAccRoll = 0; |
IntegralAccZ = 0; |
MittelIntegralNick = 0; |
MittelIntegralRoll = 0; |
MittelIntegralNick2 = 0; |
MittelIntegralRoll2 = 0; |
ZaehlMessungen = 0; |
} // ZaehlMessungen >= ABGLEICH_ANZAHL |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gieren |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// if(GasMischanteil < 35) { if(StickGier > 10) StickGier = 10; else if(StickGier < -10) StickGier = -10;}; |
if(abs(StickGier) > 15) // war 35 |
{ |
KompassSignalSchlecht = 1000; |
if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX)) |
{ |
NeueKompassRichtungMerken = 1; |
}; |
} |
tmp_int = (long) EE_Parameter.Gier_P * ((long)StickGier * abs(StickGier)) / 512L; // expo y = ax + bx² |
tmp_int += (EE_Parameter.Gier_P * StickGier) / 4; |
sollGier = tmp_int; |
Mess_Integral_Gier -= tmp_int; |
if(Mess_Integral_Gier > 50000) Mess_Integral_Gier = 50000; // begrenzen |
if(Mess_Integral_Gier <-50000) Mess_Integral_Gier =-50000; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Kompass |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//DebugOut.Analog[16] = KompassSignalSchlecht; |
if(KompassValue && (EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV)) |
{ |
int w,v,r,fehler,korrektur; |
w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln |
v = abs(IntegralRoll /512); |
if(v > w) w = v; // grösste Neigung ermitteln |
korrektur = w / 8 + 1; |
fehler = ((540 + KompassValue - (ErsatzKompass/GIER_GRAD_FAKTOR)) % 360) - 180; |
if(abs(MesswertGier) > 128) |
{ |
fehler = 0; |
} |
if(!KompassSignalSchlecht && w < 25) |
{ |
GierGyroFehler += fehler; |
if(NeueKompassRichtungMerken) |
{ |
beeptime = 200; |
// KompassStartwert = KompassValue; |
ErsatzKompass = KompassValue * GIER_GRAD_FAKTOR; |
KompassStartwert = (ErsatzKompass/GIER_GRAD_FAKTOR); |
NeueKompassRichtungMerken = 0; |
} |
} |
ErsatzKompass += (fehler * 8) / korrektur; |
w = (w * Parameter_KompassWirkung) / 32; // auf die Wirkung normieren |
w = Parameter_KompassWirkung - w; // Wirkung ggf drosseln |
if(w >= 0) |
{ |
if(!KompassSignalSchlecht) |
{ |
v = 64 + ((MaxStickNick + MaxStickRoll)) / 8; |
r = ((540 + (ErsatzKompass/GIER_GRAD_FAKTOR) - KompassStartwert) % 360) - 180; |
// r = KompassRichtung; |
v = (r * w) / v; // nach Kompass ausrichten |
w = 3 * Parameter_KompassWirkung; |
if(v > w) v = w; // Begrenzen |
else |
if(v < -w) v = -w; |
Mess_Integral_Gier += v; |
} |
if(KompassSignalSchlecht) KompassSignalSchlecht--; |
} |
else KompassSignalSchlecht = 500; // so lange das Signal taub stellen --> ca. 1 sek |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Debugwerte zuordnen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!TimerWerteausgabe--) |
{ |
TimerWerteausgabe = 24; |
DebugOut.Analog[0] = IntegralNick / (EE_Parameter.GyroAccFaktor * 4); |
DebugOut.Analog[1] = IntegralRoll / (EE_Parameter.GyroAccFaktor * 4); |
DebugOut.Analog[2] = Mittelwert_AccNick / 4; |
DebugOut.Analog[3] = Mittelwert_AccRoll / 4; |
DebugOut.Analog[4] = MesswertGier; |
//DebugOut.Analog[5] = HoehenWert/5; // MartinR: so war es |
DebugOut.Analog[5] = HoehenWertKorr; // MartinR : geändert |
DebugOut.Analog[6] = Aktuell_az;//(Mess_Integral_Hoch / 512);//Aktuell_az; |
DebugOut.Analog[8] = KompassValue; |
DebugOut.Analog[9] = UBat; |
DebugOut.Analog[10] = SenderOkay; |
DebugOut.Analog[11] = ErsatzKompass / GIER_GRAD_FAKTOR; |
//DebugOut.Analog[16] = Mittelwert_AccHoch; |
//DebugOut.Analog[17] = FromNaviCtrl_Value.Distance; |
DebugOut.Analog[18] = VarioMeter; |
DebugOut.Analog[19] = WinkelOut.CalcState; |
//DebugOut.Analog[20] = ServoValue; // MartinR: DebugOut.Analog[20] wird in timer0.c ausgegeben!! |
DebugOut.Analog[22] = FromNaviCtrl_Value.GpsZ; |
// DebugOut.Analog[24] = MesswertNick/2; |
// DebugOut.Analog[25] = MesswertRoll/2; |
DebugOut.Analog[27] = (int)FromNaviCtrl_Value.Kalman_MaxDrift; |
// DebugOut.Analog[28] = (int)FromNaviCtrl_Value.Kalman_MaxFusion; |
// DebugOut.Analog[29] = (int)FromNaviCtrl_Value.Kalman_K; |
DebugOut.Analog[29] = FromNaviCtrl_Value.SerialDataOkay; |
DebugOut.Analog[30] = GPS_Nick; |
DebugOut.Analog[31] = GPS_Roll; |
// DebugOut.Analog[19] -= DebugOut.Analog[19]/128; |
// if(DebugOut.Analog[19] > 0) DebugOut.Analog[19]--; else DebugOut.Analog[19]++; |
/* DebugOut.Analog[16] = motor_rx[0]; |
DebugOut.Analog[17] = motor_rx[1]; |
DebugOut.Analog[18] = motor_rx[2]; |
DebugOut.Analog[19] = motor_rx[3]; |
DebugOut.Analog[20] = motor_rx[0] + motor_rx[1] + motor_rx[2] + motor_rx[3]; |
DebugOut.Analog[20] /= 14; |
DebugOut.Analog[21] = motor_rx[4]; |
DebugOut.Analog[22] = motor_rx[5]; |
DebugOut.Analog[23] = motor_rx[6]; |
DebugOut.Analog[24] = motor_rx[7]; |
DebugOut.Analog[25] = motor_rx[4] + motor_rx[5] + motor_rx[6] + motor_rx[7]; |
*/ |
// DebugOut.Analog[9] = MesswertNick; |
// DebugOut.Analog[9] = SollHoehe; |
// DebugOut.Analog[10] = Mess_Integral_Gier / 128; |
// DebugOut.Analog[11] = KompassStartwert; |
// DebugOut.Analog[10] = Parameter_Gyro_I; |
// DebugOut.Analog[10] = EE_Parameter.Gyro_I; |
// DebugOut.Analog[9] = KompassRichtung; |
// DebugOut.Analog[10] = GasMischanteil; |
// DebugOut.Analog[3] = HoeheD * 32; |
// DebugOut.Analog[4] = hoehenregler; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Drehgeschwindigkeit und -winkel zu einem Istwert zusammenfassen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(TrichterFlug) { SummeRoll = 0; SummeNick = 0;}; |
if(!Looping_Nick) IntegralNickMalFaktor = (IntegralNick * IntegralFaktor) / (44000 / STICK_GAIN); else IntegralNickMalFaktor = 0; |
if(!Looping_Roll) IntegralRollMalFaktor = (IntegralRoll * IntegralFaktor) / (44000 / STICK_GAIN); else IntegralRollMalFaktor = 0; |
#define TRIM_MAX 200 |
if(TrimNick > TRIM_MAX) TrimNick = TRIM_MAX; else if(TrimNick <-TRIM_MAX) TrimNick =-TRIM_MAX; |
if(TrimRoll > TRIM_MAX) TrimRoll = TRIM_MAX; else if(TrimRoll <-TRIM_MAX) TrimRoll =-TRIM_MAX; |
MesswertNick = IntegralNickMalFaktor + (long)((long)MesswertNick * GyroFaktor + (long)TrimNick * 128L) / (256L / STICK_GAIN); |
MesswertRoll = IntegralRollMalFaktor + (long)((long)MesswertRoll * GyroFaktor + (long)TrimRoll * 128L) / (256L / STICK_GAIN); |
MesswertGier = (long)(MesswertGier * 2 * (long)GyroFaktorGier) / (256L / STICK_GAIN) + (long)(Integral_Gier * IntegralFaktorGier) / (2 * (44000 / STICK_GAIN)); |
// Maximalwerte abfangen |
// #define MAX_SENSOR (4096*STICK_GAIN) |
#define MAX_SENSOR (4096*4) |
if(MesswertNick > MAX_SENSOR) MesswertNick = MAX_SENSOR; |
if(MesswertNick < -MAX_SENSOR) MesswertNick = -MAX_SENSOR; |
if(MesswertRoll > MAX_SENSOR) MesswertRoll = MAX_SENSOR; |
if(MesswertRoll < -MAX_SENSOR) MesswertRoll = -MAX_SENSOR; |
if(MesswertGier > MAX_SENSOR) MesswertGier = MAX_SENSOR; |
if(MesswertGier < -MAX_SENSOR) MesswertGier = -MAX_SENSOR; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// all BL-Ctrl connected? |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(MissingMotor) if(modell_fliegt > 1 && modell_fliegt < 50 && GasMischanteil > 0) |
{ |
modell_fliegt = 1; |
GasMischanteil = MIN_GAS; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Höhenregelung |
// Die Höhenregelung schwächt lediglich das Gas ab, erhöht es allerdings nicht |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// MartinR: so war es: Original- Höhenregler Anfang |
/* |
if(UBat > BattLowVoltageWarning) GasMischanteil = (GasMischanteil * BattLowVoltageWarning) / UBat; // Gas auf das aktuelle Spannungvieveau beziehen |
GasMischanteil *= STICK_GAIN; |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung |
{ |
int tmp_int; |
long tmp_long_h; |
static int hoover = 400, maxhoover,minhoover,gas_old; |
static char delay = 100; |
unsigned char angle_gas = 0; |
if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER) // Regler wird über Schalter gesteuert |
{ |
if(Parameter_MaxHoehe < 50) |
{ |
if(!delay--) |
{ |
#define OPA_OFFSET_STEP 10 |
if((MessLuftdruck > 1000) && (OCR0A < (255 - OPA_OFFSET_STEP)) ) |
{ |
ExpandBaro -= 1; |
OCR0A = DruckOffsetSetting - OPA_OFFSET_STEP * ExpandBaro; |
beeptime = 300; |
delay = 250; |
} |
else if((MessLuftdruck < 100) && (OCR0A > OPA_OFFSET_STEP)) |
{ |
ExpandBaro += 1; |
OCR0A = DruckOffsetSetting - OPA_OFFSET_STEP * ExpandBaro; |
beeptime = 300; |
delay = 250; |
} |
else |
{ |
SollHoehe = HoehenWert - 20; // Parameter_MaxHoehe ist der PPM-Wert des Schalters |
HoehenReglerAktiv = 0; |
delay = 1; |
} |
} |
} |
else |
{ |
HoehenReglerAktiv = 1; |
delay = 200; |
} |
} |
else |
{ |
SollHoehe = ((int) ExternHoehenValue + (int) Parameter_MaxHoehe) * (int)EE_Parameter.Hoehe_Verstaerkung - 20; |
HoehenReglerAktiv = 1; |
} |
if(MikroKopterFlags & FLAG_NOTLANDUNG) SollHoehe = 0; |
h = HoehenWert; |
if((h > SollHoehe) && HoehenReglerAktiv) // zu hoch --> drosseln |
{ |
int vario; |
static char delay = 1; |
// + P-Part ++++++++++++++++++++++++++ |
h = ((h - SollHoehe) * (int) Parameter_Hoehe_P) / 16; // Differenz bestimmen --> P-Anteil |
h = GasMischanteil - h; // vom Gas abziehen |
if(!delay--) |
{ |
delay = 2; |
hoover = (15*hoover + h) / 16 + (GasMischanteil - gas_old); |
gas_old = GasMischanteil; |
if(hoover < h) hoover++; else hoover--; |
if(EE_Parameter.Hoehe_HoverBand) |
{ |
unsigned int band; |
band = hoover / EE_Parameter.Hoehe_HoverBand; |
maxhoover = hoover + band; // max. 16% |
minhoover = hoover - band; // max. 16% |
} |
else |
{ |
maxhoover = 1023; |
minhoover = 0; |
} |
} |
if(maxhoover < 200) maxhoover = 200; |
DebugOut.Analog[25] = hoover; |
DebugOut.Analog[26] = maxhoover; |
DebugOut.Analog[28] = minhoover; |
// + D1-Part - Vario ++++++++++++++++++++++++++ |
vario = VarioMeter / 8; |
if(vario > 8) vario = 8; |
if(vario > 0) vario = VarioMeter + (vario * vario) / 4; |
else vario = VarioMeter - (vario * vario) / 4; |
vario = (Parameter_Luftdruck_D * (long)vario)/128L; // D-Anteil |
DebugOut.Analog[24] = -vario; |
if(vario > 255) vario = 255; |
else if(vario < -127) vario = -127; |
h -= vario; |
// + D2-Part - ACC ++++++++++++++++++++++++++ |
// tmp_int = (((Mess_Integral_Hoch / 128) +AdWertAccHoch) * (signed long) Parameter_Hoehe_ACC_Wirkung) / (32); |
tmp_int = ((Mess_Integral_Hoch / 128) * (signed long) Parameter_Hoehe_ACC_Wirkung) / (128 / STICK_GAIN); |
DebugOut.Analog[23] = -tmp_int; |
if(tmp_int > 255) tmp_int = 255; |
else if(tmp_int < -127) tmp_int = -127; |
h -= tmp_int; |
if(h > maxhoover) h = maxhoover; |
else |
if(h < minhoover) h = minhoover; |
// + D3-Part - GPS ++++++++++++++++++++++++++ |
vario = (Parameter_Hoehe_GPS_Z * (long)FromNaviCtrl_Value.GpsZ)/128L; // D-Anteil |
DebugOut.Analog[24] = -vario; |
// if(vario > 127) vario = 127; |
// else |
// if(vario < -63) vario = -63; |
h -= vario; |
// + 1/cos(angle) ++++++++++++++++++++++++++ |
const unsigned char GAS_TAB[31] = {128,128,128,129,129,130,131,132,133,135,136,138,140,142,145,148,151,154,158,162,167,172,178,184,191,199,208,218,229,241,255}; |
tmp_long_h = labs(IntegralNick) + labs(IntegralRoll); |
tmp_long_h /= 1500;//1024 * 2; |
if(tmp_long_h > 29) tmp_long_h = 29; |
h = ((long) h * GAS_TAB[tmp_long_h]) / 128L; |
// + Begrenzung ++++++++++++++++++++++++++ |
hoehenregler = (hoehenregler*3 + h) / 4; |
if(hoehenregler < EE_Parameter.Hoehe_MinGas * STICK_GAIN) // nicht unter MIN |
{ |
if(GasMischanteil >= EE_Parameter.Hoehe_MinGas * STICK_GAIN) hoehenregler = EE_Parameter.Hoehe_MinGas * STICK_GAIN; |
if(GasMischanteil < EE_Parameter.Hoehe_MinGas * STICK_GAIN) hoehenregler = GasMischanteil; |
} |
if(hoehenregler > GasMischanteil) hoehenregler = GasMischanteil; // nicht mehr als Gas |
GasMischanteil = hoehenregler; |
} |
else |
{ |
hoover = GasMischanteil; |
gas_old = GasMischanteil; |
} |
} |
if(GasMischanteil > (MAX_GAS - 20) * STICK_GAIN) GasMischanteil = (MAX_GAS - 20) * STICK_GAIN; |
*/ |
// MartinR: so war es: Original- Höhenregler Ende |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Höhenregelung von MartinR: |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
GasMischanteil *= STICK_GAIN; |
HoehenWertKorr = HoehenWert -(AdWertAccHoch * Parameter_UserParam7 / 100); // Acc-Z Korrigierter Höhenwert |
// Anfang Höhenwert- Hysterese von +/-8 |
//tmp_int = HoehenWert -(AdWertAccHoch * Parameter_UserParam7 / 100); // neuer Höhenwert |
//if ((tmp_int +8) < HoehenWertKorr || (tmp_int -8) > HoehenWertKorr) HoehenWertKorr = tmp_int; //Übernahme neuer Wert |
// Ende Höhenwert-Hysterese von +/-8 |
if (EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) // Höhenregelung |
{ |
int tmp_int; |
long tmp_long_h; |
long Cos_128; |
static char delay = 100; |
int vario; |
#define HOOVER_GAS_AVERAGE 4192 // 4192 * 2ms = 8.2s averaging |
#define HEIGHT_CONTROL_GAS_AVERAGE 16 |
static uint32_t HooverGasEstimation = 0; |
// cos(angle) ++++++++++++++++++++++++++ |
const unsigned char GAS_TAB[31] = {128,128,128,129,129,130,131,132,133,135,136,138,140,142,145,148,151,154,158,162,167,172,178,184,191,199,208,218,229,241,255}; |
tmp_long_h = labs(IntegralNick) + labs(IntegralRoll); |
//tmp_long_h /= 1500;//1024 * 2; |
tmp_long_h /= 100*Parameter_UserParam8; //test |
if(tmp_long_h > 29) tmp_long_h = 29; |
Cos_128 = (GAS_TAB[tmp_long_h]); |
// Beispiele: |
// h/Cos = ((long) h * Cos_128) / 128L; |
// GasMischanteil*Cos = ((long) GasMischanteil * 128L) / Cos_128 ; |
// Neigungskorrektur ACCHoch: |
tmp_long_h = (long) ((NeutralAccZ-(Parameter_UserParam6*4)) * 128L) / Cos_128 ; // Erdbeschleunigungsanteil von NeutralAccZ Neigungskorrigiert |
tmp_int = (int16_t) (AdWertAccHoch + NeutralAccZ - tmp_long_h - (Parameter_UserParam6*4)); // NeutralAccZ: Neigungskorrigiert |
if (tmp_int < 0) tmp_int ++ ; // MartinR: Digitalisierungsrauschen abmindern |
if (tmp_int > 0) tmp_int -- ; // MartinR: entspricht - 1 Bit |
Mess_Integral_Hoch += tmp_int; // Integrieren // MartinR: mit Neigungskorrektur |
Mess_Integral_Hoch -= Mess_Integral_Hoch / 256; // dämfen // MartinR: zu Höhenregler in fc.c verschoben |
CHECK_MIN_MAX(Mess_Integral_Hoch, -16000, 16000); // limit |
//DebugOut.Analog[26] = Cos_128; |
DebugOut.Analog[28] = tmp_int; |
// + D1-Part - Vario ++++++++++++++++++++++++++ |
vario = VarioMeter / 8; |
if(vario > 8) vario = 8; |
if(vario > 0) vario = VarioMeter + (vario * vario) / 4; |
else vario = VarioMeter - (vario * vario) / 4; |
vario = (Parameter_Luftdruck_D * (long)vario)/128L; // D-Anteil |
//DebugOut.Analog[24] = -vario; |
if(vario > 63) vario = 63; |
else if(vario < -63) vario = -63; |
// HoeheD: |
HoehenWertSumme += HoehenWertKorr ; |
//if (++ iHoehe >= 120) // MartinR: Wartezeit um auch kleine Änderungsgeschwindigkeiten erkennen zu können |
if (++ iHoehe >= 2 * Parameter_UserParam5) // MartinR: Wartezeit einstellbar |
{ |
//HoehenWertSumme = (long) HoehenWertSumme / iHoehe ; // MartinR: Mittelwert während der Wartezeit |
HoehenWertSumme /= iHoehe ; // MartinR: Mittelwert während der Wartezeit |
HoeheD = Parameter_Luftdruck_D * (HoehenWertKorr - HoehenWertalt) ; |
//HoeheD = (long) (HoehenWertKorr - HoehenWertalt) * Parameter_Luftdruck_D ; |
//HoeheD = Parameter_Luftdruck_D * (HoehenWertSumme - HoehenWertalt) ; |
iHoehe = 0 ; |
HoehenWertalt = HoehenWertSumme ; |
HoehenWertSumme = 0 ; |
} |
// D-Anteil berechnen: |
h_d = (int) (HoeheD)/(64/STICK_GAIN); // D-Anteil (8*8=64) |
// ACC-D-Anteil |
tmp_int = ((Mess_Integral_Hoch / 128) * (signed long) Parameter_Hoehe_ACC_Wirkung) / (128 / STICK_GAIN); |
if(tmp_int > 50*STICK_GAIN) tmp_int = 50*STICK_GAIN; |
else if(tmp_int < -(50*STICK_GAIN)) tmp_int = -(50*STICK_GAIN); |
h_d += tmp_int; // positiver D-Anteil bedeutet Steigen |
DebugOut.Analog[23] = tmp_int; |
DebugOut.Analog[24] = HoeheD; |
//DebugOut.Analog[26] = HoeheD; |
if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER) // Regler wird über Schalter gesteuert |
{ |
if(Parameter_MaxHoehe < 50) // MartinR :so war es |
//if(Parameter_MaxHoehe < 50 || (Parameter_UserParam1 > 140) ) // MartinR: Schalter aus oder HH über UsererParam1 an |
{ |
// Höhenregler nicht aktiv |
if(!delay--) |
{ |
#define OPA_OFFSET_STEP 10 |
if((MessLuftdruck > 1000) && (OCR0A < (255 - OPA_OFFSET_STEP)) ) |
{ |
ExpandBaro -= 1; |
OCR0A = DruckOffsetSetting - OPA_OFFSET_STEP * ExpandBaro; |
beeptime = 300; |
delay = 250; |
} |
else if((MessLuftdruck < 100) && (OCR0A > OPA_OFFSET_STEP)) |
{ |
ExpandBaro += 1; |
OCR0A = DruckOffsetSetting - OPA_OFFSET_STEP * ExpandBaro; |
beeptime = 300; |
delay = 250; |
} |
else |
{ |
SollHoehe = HoehenWertKorr; // MartinR : geändert |
HoehenReglerAktiv = 0; |
delay = 1; |
} |
} |
SollHoehe = HoehenWertKorr; // MartinR: SollHoehe wird nachgeführt bis HoehenreglerAktiv = 1 |
//SchwebeGas = GasMischanteil; // MartinR: SchwebeGas wird nachgeführt bis HoehenreglerAktiv = 1 |
// Deaktiv wegen HooverGasEstimation/HOOVER_GAS_AVERAGE |
HoehenReglerAktiv = 0; // MartinR: zur Sicherheit |
} |
else // Schalter an und kein HH über Schalter |
{ |
HoehenReglerAktiv = 1; |
delay = 200; |
} |
} |
else // Sollhöhe über Poti |
{ |
//SollHoehe = ((int) ExternHoehenValue + (int) Parameter_MaxHoehe) * (int)EE_Parameter.Hoehe_Verstaerkung - 20; // MartinR : so war es |
//HoehenReglerAktiv = 1; // MartinR : so war es |
/* |
if(Parameter_UserParam1 > 140) // HH über Schalter: Höhenregler abgeschaltet, Nachführen von Parametern |
{ |
SollHoehe = HoehenWertKorr; // SollHoehe wird nachgeführt bis HoehenreglerAktiv = 1 |
HoehenReglerAktiv = 0; |
} |
else // Höhenregler mit Sollhöhe über Poti aktiv |
*/ |
{ |
// SchwebeGas = GasMischanteil; // SchwebeGas zunächst = Gasmischanteil bis bessere Lösung |
// Deaktiv wegen HooverGasEstimation/HOOVER_GAS_AVERAGE |
HoehenReglerAktiv = 1; |
SollHoehe = ((int) ExternHoehenValue + (int) Parameter_MaxHoehe) * (int)EE_Parameter.Hoehe_Verstaerkung - 20; |
// MartinR: Versuch Höhenregler zu verlangsamen. Steig- / Sinkrate im MK-Tool über UserParam4 einstellbar |
/* //vorerst deaktiviert |
if (((int) ExternHoehenValue + (int) Parameter_MaxHoehe) * (int)EE_Parameter.Hoehe_Verstaerkung - 20 > SollHoehe) |
{ |
if(++delay_Hoehenregler > (Parameter_UserParam4 / 4)) |
{ |
delay_Hoehenregler = 0; |
SollHoehe ++ ; //MartinR: Höhenänderung begrenzen. |
} |
} |
else |
{ |
if (((int) ExternHoehenValue + (int) Parameter_MaxHoehe) * (int)EE_Parameter.Hoehe_Verstaerkung - 20 < SollHoehe) |
{ |
if(++delay_Hoehenregler > (Parameter_UserParam4 / 4)) |
{ |
delay_Hoehenregler = 0; |
SollHoehe -- ; //MartinR: Höhenänderung begrenzen. |
} |
} |
} |
*/ |
} |
} |
if(MikroKopterFlags & FLAG_NOTLANDUNG) SollHoehe = 0; |
//if(HoehenReglerAktiv && !(Parameter_UserParam1 > 140)) // kein HH |
if(HoehenReglerAktiv) // |
{ |
h_delta = (int) SollHoehe - (int) HoehenWertKorr; // positiver Wert: MK ist unterhalb der Sollhöhe |
h_p = (h_delta * (int) Parameter_Hoehe_P) / (16 / STICK_GAIN); // Differenz bestimmen --> P-Anteil |
/* an Anfang Höhenregler verschoben, da h_d für Schwebegas- Abschätzung verwendet wird |
h_d = (int) (HoeheD)/(64/STICK_GAIN); // D-Anteil (8*8=64) |
// ACC-D-Anteil |
tmp_int = ((Mess_Integral_Hoch / 128) * (signed long) Parameter_Hoehe_ACC_Wirkung) / (128 / STICK_GAIN); |
if(tmp_int > 50*STICK_GAIN) tmp_int = 50*STICK_GAIN; |
else if(tmp_int < -(50*STICK_GAIN)) tmp_int = -(50*STICK_GAIN); |
h_d += tmp_int; // positiver D-Anteil bedeutet Steigen |
*/ |
if(HooverGasEstimation == 0) SchwebeGas = GasMischanteil; |
else |
{ |
SchwebeGas = (int16_t)(HooverGasEstimation/HOOVER_GAS_AVERAGE); // take hoover point |
} |
h = SchwebeGas + h_p - h_d ; |
// + 1/cos(angle) ++++++++++++++++++++++++++ |
h = ((long) h * Cos_128) / 128L; |
hoehenregler = (hoehenregler*7 + h) / 8; |
if(hoehenregler < EE_Parameter.Hoehe_MinGas * STICK_GAIN) // nicht unter MIN |
{ |
if(GasMischanteil >= EE_Parameter.Hoehe_MinGas * STICK_GAIN) hoehenregler = EE_Parameter.Hoehe_MinGas * STICK_GAIN; |
if(GasMischanteil < EE_Parameter.Hoehe_MinGas * STICK_GAIN) hoehenregler = GasMischanteil; |
} |
if(hoehenregler > GasMischanteil) hoehenregler = GasMischanteil; // nicht mehr als Gas |
//else hoehenregler += (GasMischanteil-hoehenregler)/16 ; // um die Höhe noch leicht mit Gas korrigieren zu können |
//if(SchwebeGas < 20) SchwebeGas = 20; // nicht unter 20 |
GasMischanteil = hoehenregler; |
} |
else // Integratoren auf Null halten |
{ |
Mess_Integral_Hoch = 0; |
hoehenregler = GasMischanteil; |
// h_p = 0 ; |
// h_d = 0 ; |
} |
// Hoover gas estimation by averaging gas control output on small z-velocities |
// this is done only if height contol option is selected in global config and aircraft is flying |
if(MikroKopterFlags & FLAG_FLY) //MikroKopterFlags FLAG_FLY |
{ |
if(HooverGasEstimation == 0) HooverGasEstimation = HOOVER_GAS_AVERAGE * (uint32_t)GasMischanteil; // init estimation |
// HOOVER_GAS_AVERAGE= 4192 |
if(abs(h_d) < 8) // wenn Höhenregler D-Anteil <8 |
{ |
// Hoovergas = GasMischanteil * cos(angle) ++++++++++++++++++++++++++ |
HooverGasEstimation -= HooverGasEstimation/HOOVER_GAS_AVERAGE; |
HooverGasEstimation += ((long) GasMischanteil * 128L) / Cos_128 ; |
} |
} |
DebugOut.Analog[25] = HooverGasEstimation/HOOVER_GAS_AVERAGE; |
//DebugOut.Analog[26] = maxhoover; |
//DebugOut.Analog[28] = minhoover; |
} // EOF: EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG |
if(GasMischanteil > (MAX_GAS - 20) * STICK_GAIN) GasMischanteil = (MAX_GAS - 20) * STICK_GAIN; |
// MartinR: Ende neuer Höhenregler |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Mischer und PI-Regler |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DebugOut.Analog[7] = GasMischanteil; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gier-Anteil |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define MUL_G 1.0 |
GierMischanteil = MesswertGier - sollGier * STICK_GAIN; // Regler für Gier |
// GierMischanteil = 0; |
#define MIN_GIERGAS (40*STICK_GAIN) // unter diesem Gaswert trotzdem Gieren |
if(GasMischanteil > MIN_GIERGAS) |
{ |
if(GierMischanteil > (GasMischanteil / 2)) GierMischanteil = GasMischanteil / 2; |
if(GierMischanteil < -(GasMischanteil / 2)) GierMischanteil = -(GasMischanteil / 2); |
} |
else |
{ |
if(GierMischanteil > (MIN_GIERGAS / 2)) GierMischanteil = MIN_GIERGAS / 2; |
if(GierMischanteil < -(MIN_GIERGAS / 2)) GierMischanteil = -(MIN_GIERGAS / 2); |
} |
tmp_int = MAX_GAS*STICK_GAIN; |
if(GierMischanteil > ((tmp_int - GasMischanteil))) GierMischanteil = ((tmp_int - GasMischanteil)); |
if(GierMischanteil < -((tmp_int - GasMischanteil))) GierMischanteil = -((tmp_int - GasMischanteil)); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Nick-Achse |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DiffNick = MesswertNick - StickNick; // Differenz bestimmen |
if(IntegralFaktor) SummeNick += IntegralNickMalFaktor - StickNick; // I-Anteil bei Winkelregelung |
else SummeNick += DiffNick; // I-Anteil bei HH |
if(SummeNick > (STICK_GAIN * 16000L)) SummeNick = (STICK_GAIN * 16000L); |
if(SummeNick < -(16000L * STICK_GAIN)) SummeNick = -(16000L * STICK_GAIN); |
pd_ergebnis_nick = DiffNick + SummeNick / Ki; // PI-Regler für Nick |
// Motor Vorn |
tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64; |
if(pd_ergebnis_nick > tmp_int) pd_ergebnis_nick = tmp_int; |
if(pd_ergebnis_nick < -tmp_int) pd_ergebnis_nick = -tmp_int; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Roll-Achse |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DiffRoll = MesswertRoll - StickRoll; // Differenz bestimmen |
if(IntegralFaktor) SummeRoll += IntegralRollMalFaktor - StickRoll;// I-Anteil bei Winkelregelung |
else SummeRoll += DiffRoll; // I-Anteil bei HH |
if(SummeRoll > (STICK_GAIN * 16000L)) SummeRoll = (STICK_GAIN * 16000L); |
if(SummeRoll < -(16000L * STICK_GAIN)) SummeRoll = -(16000L * STICK_GAIN); |
pd_ergebnis_roll = DiffRoll + SummeRoll / Ki; // PI-Regler für Roll |
tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64; |
if(pd_ergebnis_roll > tmp_int) pd_ergebnis_roll = tmp_int; |
if(pd_ergebnis_roll < -tmp_int) pd_ergebnis_roll = -tmp_int; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Universal Mixer |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
for(i=0; i<MAX_MOTORS; i++) |
{ |
signed int tmp_int; |
if(Mixer.Motor[i][0] > 0) |
{ |
tmp_int = ((long)GasMischanteil * Mixer.Motor[i][0]) / 64L; |
tmp_int += ((long)pd_ergebnis_nick * Mixer.Motor[i][1]) / 64L; |
tmp_int += ((long)pd_ergebnis_roll * Mixer.Motor[i][2]) / 64L; |
tmp_int += ((long)GierMischanteil * Mixer.Motor[i][3]) / 64L; |
tmp_motorwert[i] = MotorSmoothing(tmp_int,tmp_motorwert[i]); // Filter |
tmp_int = tmp_motorwert[i] / STICK_GAIN; |
CHECK_MIN_MAX(tmp_int,MIN_GAS,MAX_GAS); |
Motor[i] = tmp_int; |
} |
else Motor[i] = 0; |
} |
/* |
if(Poti1 > 20) Motor1 = 0; |
if(Poti1 > 90) Motor6 = 0; |
if(Poti1 > 140) Motor2 = 0; |
//if(Poti1 > 200) Motor7 = 0; |
*/ |
} |
/beta/FC_075i_MartinR/fc.h |
---|
0,0 → 1,199 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
#ifndef _FC_H |
#define _FC_H |
//#define GIER_GRAD_FAKTOR 1291L // Abhängigkeit zwischen GyroIntegral und Winkel |
//#define GIER_GRAD_FAKTOR 1160L |
extern long GIER_GRAD_FAKTOR; // Abhängigkeit zwischen GyroIntegral und Winkel |
#define STICK_GAIN 4 |
#define FLAG_MOTOR_RUN 1 |
#define FLAG_FLY 2 |
#define FLAG_CALIBRATE 4 |
#define FLAG_START 8 |
#define FLAG_NOTLANDUNG 16 |
#define FLAG_LOWBAT 32 |
#define MAX_MOTORS 12 |
#define CHECK_MIN_MAX(wert,min,max) {if(wert < min) wert = min; else if(wert > max) wert = max;} |
extern volatile unsigned char MikroKopterFlags; |
extern volatile unsigned int I2CTimeout; |
extern unsigned char Sekunde,Minute; |
extern long IntegralNick,IntegralNick2; |
extern long IntegralRoll,IntegralRoll2; |
//extern int IntegralNick,IntegralNick2; |
//extern int IntegralRoll,IntegralRoll2; |
extern long Mess_IntegralNick,Mess_IntegralNick2; |
extern long Mess_IntegralRoll,Mess_IntegralRoll2; |
extern long IntegralAccNick,IntegralAccRoll; |
extern volatile long Mess_Integral_Hoch; |
extern long Integral_Gier,Mess_Integral_Gier,Mess_Integral_Gier2; |
extern int KompassValue; |
extern int KompassStartwert; |
extern int KompassRichtung; |
extern int TrimNick, TrimRoll; |
extern long ErsatzKompass; |
extern int ErsatzKompassInGrad; // Kompasswert in Grad |
extern long HoehenWert; |
extern long SollHoehe; |
extern int MesswertNick,MesswertRoll,MesswertGier; |
extern int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll; |
extern int NeutralAccX, NeutralAccY,Mittelwert_AccHoch; |
extern unsigned char HoehenReglerAktiv; |
// extern volatile float NeutralAccZ; // MartinR : so war es |
extern volatile int NeutralAccZ; // MartinR : geändert |
extern long Umschlag180Nick, Umschlag180Roll; |
extern signed int ExternStickNick,ExternStickRoll,ExternStickGier; |
extern unsigned char Parameter_UserParam1,Parameter_UserParam2,Parameter_UserParam3,Parameter_UserParam4,Parameter_UserParam5,Parameter_UserParam6,Parameter_UserParam7,Parameter_UserParam8; |
extern int NaviAccNick,NaviAccRoll,NaviCntAcc; |
extern unsigned int modell_fliegt; |
void MotorRegler(void); |
void SendMotorData(void); |
void CalibrierMittelwert(void); |
void Mittelwert(void); |
void SetNeutral(void); |
void Piep(unsigned char Anzahl, unsigned int dauer); |
extern unsigned char h,m,s; |
extern volatile unsigned char Timeout ; |
extern unsigned char CosinusNickWinkel, CosinusRollWinkel; |
extern int DiffNick,DiffRoll; |
extern int Poti1, Poti2, Poti3, Poti4; |
extern volatile unsigned char SenderOkay; |
extern volatile unsigned char SenderRSSI; |
extern unsigned char RequiredMotors; |
extern int StickNick,StickRoll,StickGier; |
extern char MotorenEin; |
extern void DefaultKonstanten1(void); |
extern void DefaultKonstanten2(void); |
extern void DefaultKonstanten3(void); |
extern void DefaultStickMapping(void); |
#define STRUCT_PARAM_LAENGE sizeof(EE_Parameter) |
struct mk_param_struct |
{ |
unsigned char Kanalbelegung[8]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3 |
unsigned char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv |
unsigned char Hoehe_MinGas; // Wert : 0-100 |
unsigned char Luftdruck_D; // Wert : 0-250 |
unsigned char MaxHoehe; // Wert : 0-32 |
unsigned char Hoehe_P; // Wert : 0-32 |
unsigned char Hoehe_Verstaerkung; // Wert : 0-50 |
unsigned char Hoehe_ACC_Wirkung; // Wert : 0-250 |
unsigned char Hoehe_HoverBand; // Wert : 0-250 |
unsigned char Hoehe_GPS_Z; // Wert : 0-250 |
unsigned char Stick_P; // Wert : 1-6 |
unsigned char Stick_D; // Wert : 0-64 |
unsigned char Gier_P; // Wert : 1-20 |
unsigned char Gas_Min; // Wert : 0-32 |
unsigned char Gas_Max; // Wert : 33-250 |
unsigned char GyroAccFaktor; // Wert : 1-64 |
unsigned char KompassWirkung; // Wert : 0-32 |
unsigned char Gyro_P; // Wert : 10-250 |
unsigned char Gyro_I; // Wert : 0-250 |
unsigned char Gyro_D; // Wert : 0-250 |
unsigned char UnterspannungsWarnung; // Wert : 0-250 |
unsigned char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
unsigned char UfoAusrichtung; // X oder + Formation |
unsigned char I_Faktor; // Wert : 0-250 |
unsigned char UserParam1; // Wert : 0-250 |
unsigned char UserParam2; // Wert : 0-250 |
unsigned char UserParam3; // Wert : 0-250 |
unsigned char UserParam4; // Wert : 0-250 |
unsigned char ServoNickControl; // Wert : 0-250 // Stellung des Servos |
unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
//--- Seit V0.75 |
unsigned char ServoRollControl; // Wert : 0-250 // Stellung des Servos |
unsigned char ServoRollComp; // Wert : 0-250 |
unsigned char ServoRollMin; // Wert : 0-250 |
unsigned char ServoRollMax; // Wert : 0-250 |
//--- |
unsigned char ServoNickRefresh; // |
unsigned char LoopGasLimit; // Wert: 0-250 max. Gas während Looping |
unsigned char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag |
unsigned char LoopHysterese; // Wert: 0-250 Hysterese für Stickausschlag |
unsigned char AchsKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung) |
unsigned char AchsKopplung2; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
unsigned char CouplingYawCorrection; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
unsigned char WinkelUmschlagNick; // Wert: 0-250 180°-Punkt |
unsigned char WinkelUmschlagRoll; // Wert: 0-250 180°-Punkt |
unsigned char GyroAccAbgleich; // 1/k (Koppel_ACC_Wirkung) |
unsigned char Driftkomp; |
unsigned char DynamicStability; |
unsigned char UserParam5; // Wert : 0-250 |
unsigned char UserParam6; // Wert : 0-250 |
unsigned char UserParam7; // Wert : 0-250 |
unsigned char UserParam8; // Wert : 0-250 |
//---Output --------------------------------------------- |
unsigned char J16Bitmask; // for the J16 Output |
unsigned char J16Timing; // for the J16 Output |
unsigned char J17Bitmask; // for the J17 Output |
unsigned char J17Timing; // for the J17 Output |
// seit version V0.75c |
unsigned char WARN_J16_Bitmask; // for the J16 Output |
unsigned char WARN_J17_Bitmask; // for the J17 Output |
//---NaviCtrl--------------------------------------------- |
unsigned char NaviGpsModeControl; // Parameters for the Naviboard |
unsigned char NaviGpsGain; |
unsigned char NaviGpsP; |
unsigned char NaviGpsI; |
unsigned char NaviGpsD; |
unsigned char NaviGpsPLimit; |
unsigned char NaviGpsILimit; |
unsigned char NaviGpsDLimit; |
unsigned char NaviGpsACC; |
unsigned char NaviGpsMinSat; |
unsigned char NaviStickThreshold; |
unsigned char NaviWindCorrection; |
unsigned char NaviSpeedCompensation; |
unsigned char NaviOperatingRadius; |
unsigned char NaviAngleLimitation; |
unsigned char NaviPH_LoginTime; |
//---Ext.Ctrl--------------------------------------------- |
unsigned char ExternalControl; // for serial Control |
//------------------------------------------------ |
unsigned char BitConfig; // (war Loop-Cfg) Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
unsigned char ServoCompInvert; // // 0x01 = Nick, 0x02 = Roll 0 oder 1 // WICHTIG!!! am Ende lassen |
unsigned char Reserved[4]; |
char Name[12]; |
}; |
struct |
{ |
char Revision; |
char Name[12]; |
signed char Motor[16][4]; |
} Mixer; |
extern struct mk_param_struct EE_Parameter; |
extern unsigned char Parameter_Luftdruck_D; |
extern unsigned char Parameter_MaxHoehe; |
extern unsigned char Parameter_Hoehe_P; |
extern unsigned char Parameter_Hoehe_ACC_Wirkung; |
extern unsigned char Parameter_KompassWirkung; |
extern unsigned char Parameter_Gyro_P; |
extern unsigned char Parameter_Gyro_I; |
extern unsigned char Parameter_Gier_P; |
extern unsigned char Parameter_ServoNickControl; |
extern unsigned char Parameter_ServoRollControl; |
extern unsigned char Parameter_AchsKopplung1; |
extern unsigned char Parameter_AchsKopplung2; |
//extern unsigned char Parameter_AchsGegenKopplung1; |
extern unsigned char Parameter_J16Bitmask; // for the J16 Output |
extern unsigned char Parameter_J16Timing; // for the J16 Output |
extern unsigned char Parameter_J17Bitmask; // for the J17 Output |
extern unsigned char Parameter_J17Timing; // for the J17 Output |
extern signed char MixerTable[MAX_MOTORS][4]; |
extern unsigned char Motor[MAX_MOTORS]; |
#endif //_FC_H |
/beta/FC_075i_MartinR/flight.pnproj |
---|
0,0 → 1,0 |
<Project name="Flight-Ctrl"><File path="uart.h"></File><File path="main.c"></File><File path="main.h"></File><File path="makefile"></File><File path="uart.c"></File><File path="printf_P.h"></File><File path="printf_P.c"></File><File path="timer0.c"></File><File path="timer0.h"></File><File path="old_macros.h"></File><File path="twimaster.c"></File><File path="version.txt"></File><File path="twimaster.h"></File><File path="rc.c"></File><File path="rc.h"></File><File path="fc.h"></File><File path="menu.h"></File><File path="menu.c"></File><File path="_Settings.h"></File><File path="analog.c"></File><File path="analog.h"></File><File path="GPS.c"></File><File path="gps.h"></File><File path="License.txt"></File><File path="eeprom.c"></File><File path="spi.h"></File><File path="spi.c"></File><File path="led.h"></File><File path="led.c"></File><File path="fc.c"></File><File path="Spectrum.c"></File><File path="Spectrum.h"></File></Project> |
/beta/FC_075i_MartinR/flight.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="Flight-Ctrl" x="true"></e></ViewState></pd> |
/beta/FC_075i_MartinR/gps.h |
---|
0,0 → 1,7 |
extern signed int GPS_Nick; |
extern signed int GPS_Roll; |
extern signed int GPS_Nick2; |
extern signed int GPS_Roll2; |
void GPS_Neutral(void); |
void GPS_BerechneZielrichtung(void); |
/beta/FC_075i_MartinR/led.c |
---|
0,0 → 1,66 |
#include <inttypes.h> |
#include "main.h" |
uint16_t LED1_Timing = 0; |
uint16_t LED2_Timing = 0; |
unsigned char J16Blinkcount = 0, J16Mask = 1; |
unsigned char J17Blinkcount = 0, J17Mask = 1; |
// initializes the LED control outputs J16, J17 |
void LED_Init(void) |
{ |
// set PC2 & PC3 as output (control of J16 & J17) |
DDRC |= (1<<DDC2)|(1<<DDC3); |
J16_OFF; |
J17_OFF; |
J16Blinkcount = 0; J16Mask = 128; |
J17Blinkcount = 0; J17Mask = 128; |
} |
// called in UpdateMotors() every 2ms |
void LED_Update(void) |
{ |
static char delay = 0; |
static unsigned char J16Bitmask = 0; |
static unsigned char J17Bitmask = 0; |
if(!delay--) // 10ms Intervall |
{ |
delay = 4; |
if(MikroKopterFlags & FLAG_LOWBAT || SenderOkay < 128) |
{ |
J16Bitmask = EE_Parameter.WARN_J16_Bitmask; |
J17Bitmask = EE_Parameter.WARN_J17_Bitmask; |
} |
else |
{ |
J16Bitmask = EE_Parameter.J16Bitmask; |
J17Bitmask = EE_Parameter.J17Bitmask; |
} |
//if((EE_Parameter.J16Timing > 250) && (Parameter_J16Timing > 230) || (EE_Parameter.BitConfig & CFG_MOTOR_BLINK && !MotorenEin)) {if(J16Bitmask & 128) J16_ON; else J16_OFF;} // MartinR: so war es |
if(((EE_Parameter.J16Timing > 250) && (Parameter_J16Timing > 230)) || (EE_Parameter.BitConfig & CFG_MOTOR_BLINK && !MotorenEin)) {if(J16Bitmask & 128) J16_ON; else J16_OFF;} // MartinR : Klammer hinzugefügt |
else |
if((EE_Parameter.J16Timing > 250) && (Parameter_J16Timing < 10)) {if(J16Bitmask & 128) J16_OFF; else J16_ON;} |
else |
if(!J16Blinkcount--) |
{ |
J16Blinkcount = Parameter_J16Timing-1; |
if(J16Mask == 1) J16Mask = 128; else J16Mask /= 2; |
if(J16Mask & J16Bitmask) J16_ON; else J16_OFF; |
} |
//if((EE_Parameter.J17Timing > 250) && (Parameter_J17Timing > 230) || (EE_Parameter.BitConfig & CFG_MOTOR_BLINK && !MotorenEin)) {if(J17Bitmask & 128) J17_ON; else J17_OFF;} // MartinR: so war es |
if(((EE_Parameter.J17Timing > 250) && (Parameter_J17Timing > 230)) || (EE_Parameter.BitConfig & CFG_MOTOR_BLINK && !MotorenEin)) {if(J17Bitmask & 128) J17_ON; else J17_OFF;} // MartinR : Klammer hinzugefügt |
else |
if((EE_Parameter.J17Timing > 250) && (Parameter_J17Timing < 10)) {if(J17Bitmask & 128) J17_OFF; else J17_ON;} |
else |
if(!J17Blinkcount--) |
{ |
J17Blinkcount = Parameter_J17Timing-1; |
if(J17Mask == 1) J17Mask = 128; else J17Mask /= 2; |
if(J17Mask & J17Bitmask) J17_ON; else J17_OFF; |
} |
} |
} |
/beta/FC_075i_MartinR/led.h |
---|
0,0 → 1,11 |
#include <avr/io.h> |
#define J16_ON PORTC |= (1<<PORTC2) |
#define J16_OFF PORTC &= ~(1<<PORTC2) |
#define J16_TOGGLE PORTC ^= (1<<PORTC2) |
#define J17_ON PORTC |= (1<<PORTC3) |
#define J17_OFF PORTC &= ~(1<<PORTC3) |
#define J17_TOGGLE PORTC ^= (1<<PORTC3) |
extern void LED_Init(void); |
extern void LED_Update(void); |
/beta/FC_075i_MartinR/main.c |
---|
0,0 → 1,407 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + Nur für den privaten Gebrauch |
// + www.MikroKopter.com |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
// + dass eine Nutzung (auch auszugsweise) nur für den privaten und nicht-kommerziellen Gebrauch zulässig ist. |
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
// + bzgl. der Nutzungsbedingungen aufzunehmen. |
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
// + Verkauf von Luftbildaufnahmen, usw. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
// + auf anderen Webseiten oder Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt und genannt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Redistributions of source code (with or without modifications) must retain the above copyright notice, |
// + this list of conditions and the following disclaimer. |
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived |
// + from this software without specific prior written permission. |
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet |
// + for non-commercial use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be |
// + clearly linked as origin |
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed |
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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 "main.h" |
unsigned char EEPromArray[E2END+1] EEMEM; |
unsigned char PlatinenVersion = 10; |
unsigned char SendVersionToNavi = 1; |
unsigned char BattLowVoltageWarning = 94; |
// -- Parametersatz aus EEPROM lesen --- |
// number [1..5] |
void ReadParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if((number > 5)||(number < 1)) number = 3; |
eeprom_read_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * (number - 1)], length); |
LED_Init(); |
} |
// -- Parametersatz ins EEPROM schreiben --- |
// number [1..5] |
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if(number > 5) number = 5; |
if(number < 1) return; |
eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * (number - 1)], length); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_PARAM_LENGTH], length); // Länge der Datensätze merken |
eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_CHANNELS], 8); // 8 Kanäle merken |
SetActiveParamSetNumber(number); |
LED_Init(); |
} |
unsigned char GetActiveParamSetNumber(void) |
{ |
unsigned char set; |
set = eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET]); |
if((set > 5) || (set < 1)) |
{ |
set = 3; |
SetActiveParamSetNumber(set); // diesen Parametersatz als aktuell merken |
} |
return(set); |
} |
void SetActiveParamSetNumber(unsigned char number) |
{ |
if(number > 5) number = 5; |
if(number < 1) return; |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number); // diesen Parametersatz als aktuell merken |
} |
void CalMk3Mag(void) |
{ |
static unsigned char stick = 1; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > -20) stick = 0; |
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70) && !stick) |
{ |
stick = 1; |
WinkelOut.CalcState++; |
if(WinkelOut.CalcState > 4) |
{ |
// WinkelOut.CalcState = 0; // in Uart.c |
beeptime = 1000; |
} |
else Piep(WinkelOut.CalcState,150); |
} |
DebugOut.Analog[19] = WinkelOut.CalcState; |
} |
void LipoDetection(unsigned char print) |
{ |
unsigned int timer; |
if(print) printf("\n\rBatt:"); |
if(EE_Parameter.UnterspannungsWarnung < 50) // automatische Zellenerkennung |
{ |
timer = SetDelay(500); |
if(print) while (!CheckDelay(timer)); |
if(UBat < 130) |
{ |
BattLowVoltageWarning = 3 * EE_Parameter.UnterspannungsWarnung; |
if(print) |
{ |
Piep(3,200); |
printf(" 3 Cells "); |
} |
} |
else |
{ |
BattLowVoltageWarning = 4 * EE_Parameter.UnterspannungsWarnung; |
if(print) |
{ |
Piep(4,200); |
printf(" 4 Cells "); |
} |
} |
} |
else BattLowVoltageWarning = EE_Parameter.UnterspannungsWarnung; |
if(BattLowVoltageWarning < 93) BattLowVoltageWarning = 93; |
if(print) printf(" Low warning level: %d.%d",BattLowVoltageWarning/10,BattLowVoltageWarning%10); |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
unsigned int timer,i; |
DDRB = 0x00; |
PORTB = 0x00; |
for(timer = 0; timer < 1000; timer++); // verzögern |
if(PINB & 0x01) |
{ |
if(PINB & 0x02) PlatinenVersion = 13; |
else PlatinenVersion = 11; |
} |
else |
{ |
if(PINB & 0x02) PlatinenVersion = 20; |
else PlatinenVersion = 10; |
} |
DDRC = 0x81; // SCL |
DDRC |=0x40; // HEF4017 Reset |
PORTC = 0xff; // Pullup SDA |
DDRB = 0x1B; // LEDs und Druckoffset |
PORTB = 0x01; // LED_Rot |
DDRD = 0x3E; // Speaker & TXD & J3 J4 J5 |
PORTD = 0x47; // LED |
HEF4017R_ON; |
MCUSR &=~(1<<WDRF); |
WDTCSR |= (1<<WDCE)|(1<<WDE); |
WDTCSR = 0; |
beeptime = 2000; |
StickGier = 0; PPM_in[K_GAS] = 0;StickRoll = 0; StickNick = 0; |
if(PlatinenVersion >= 20) GIER_GRAD_FAKTOR = 1160; else GIER_GRAD_FAKTOR = 1291; // unterschiedlich für ME und ENC |
ROT_OFF; |
Timer_Init(); |
TIMER2_Init(); |
UART_Init(); |
rc_sum_init(); |
ADC_Init(); |
i2c_init(); |
SPI_MasterInit(); |
sei(); |
printf("\n\r==================================="); |
printf("\n\rFlightControl\n\rHardware:%d.%d\n\rSoftware:V%d.%d%c ",PlatinenVersion/10,PlatinenVersion%10, VERSION_MAJOR, VERSION_MINOR,VERSION_PATCH + 'a'); |
if(UCSR1A == 0x20 && UCSR1C == 0x06) // initial Values for 644P |
{ |
Uart1Init(); |
} |
GRN_ON; |
ReadParameterSet(3, (unsigned char *) &EE_Parameter.Kanalbelegung[0], 9); // read only the first bytes |
if((eeprom_read_byte(&EEPromArray[EEPROM_ADR_MIXER_TABLE]) == MIXER_REVISION) && // Check Revision in the first Byte |
(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != 0xff)) // Settings reset via Koptertool |
{ |
unsigned char i; |
RequiredMotors = 0; |
eeprom_read_block(&Mixer, &EEPromArray[EEPROM_ADR_MIXER_TABLE], sizeof(Mixer)); |
for(i=0; i<16;i++) { if(Mixer.Motor[i][0] > 0) RequiredMotors++;} |
} |
else // default |
{ |
unsigned char i; |
printf("\n\rGenerating default Mixer Table"); |
for(i=0; i<16;i++) { Mixer.Motor[i][0] = 0;Mixer.Motor[i][1] = 0;Mixer.Motor[i][2] = 0;Mixer.Motor[i][3] = 0;}; |
// default = Quadro |
Mixer.Motor[0][0] = 64; Mixer.Motor[0][1] = +64; Mixer.Motor[0][2] = 0; Mixer.Motor[0][3] = +64; |
Mixer.Motor[1][0] = 64; Mixer.Motor[1][1] = -64; Mixer.Motor[1][2] = 0; Mixer.Motor[1][3] = +64; |
Mixer.Motor[2][0] = 64; Mixer.Motor[2][1] = 0; Mixer.Motor[2][2] = -64; Mixer.Motor[2][3] = -64; |
Mixer.Motor[3][0] = 64; Mixer.Motor[3][1] = 0; Mixer.Motor[3][2] = +64; Mixer.Motor[3][3] = -64; |
Mixer.Revision = MIXER_REVISION; |
memcpy(Mixer.Name, "Quadro\0", 11); |
eeprom_write_block(&Mixer, &EEPromArray[EEPROM_ADR_MIXER_TABLE], sizeof(Mixer)); |
} |
printf("\n\rMixer-Config: '%s' (%u Motors)",Mixer.Name,RequiredMotors); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Check connected BL-Ctrls |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
printf("\n\rFound BL-Ctrl: "); |
motorread = 0; UpdateMotor = 0; SendMotorData(); while(!UpdateMotor); motorread = 0; // read the first I2C-Data |
timer = SetDelay(2000); |
for(i=0; i < MAX_MOTORS; i++) |
{ |
UpdateMotor = 0; |
SendMotorData(); |
while(!UpdateMotor); |
if(Mixer.Motor[i][0] > 0) // wait max 2 sec for the BL-Ctrls to wake up |
{ |
while(!CheckDelay(timer) && !MotorPresent[i]) {UpdateMotor = 0; SendMotorData(); while(!UpdateMotor);}; |
} |
if(MotorPresent[i]) printf("%d ",i+1); |
} |
for(i=0; i < MAX_MOTORS; i++) |
{ |
if(!MotorPresent[i] && Mixer.Motor[i][0] > 0) printf("\n\r\n\r!! MISSING BL-CTRL: %d !!",i+1); |
MotorError[i] = 0; |
} |
printf("\n\r==================================="); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Check Settings |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != EE_DATENREVISION) |
{ |
DefaultKonstanten1(); |
printf("\n\rInit. EEPROM"); |
for (unsigned char i=1;i<6;i++) |
{ |
if(i==2) DefaultKonstanten2(); // Kamera |
if(i==3) DefaultKonstanten3(); // Beginner |
if(i>3) DefaultKonstanten2(); // Kamera |
if(PlatinenVersion >= 20) |
{ |
EE_Parameter.Gyro_D = 5; |
EE_Parameter.Driftkomp = 0; |
EE_Parameter.GyroAccFaktor = 27; |
EE_Parameter.WinkelUmschlagNick = 78; |
EE_Parameter.WinkelUmschlagRoll = 78; |
} |
// valid Stick-Settings? |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS]) < 12 && eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+1]) < 12 && eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+2]) < 12 && eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+3]) < 12) |
{ |
EE_Parameter.Kanalbelegung[0] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+0]); |
EE_Parameter.Kanalbelegung[1] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+1]); |
EE_Parameter.Kanalbelegung[2] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+2]); |
EE_Parameter.Kanalbelegung[3] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+3]); |
EE_Parameter.Kanalbelegung[4] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+4]); |
EE_Parameter.Kanalbelegung[5] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+5]); |
EE_Parameter.Kanalbelegung[6] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+6]); |
EE_Parameter.Kanalbelegung[7] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+7]); |
if(i==1) printf(": Generating Default-Parameter using old Stick Settings"); |
} else DefaultStickMapping(); |
WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
} |
SetActiveParamSetNumber(3); // default-Setting |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], EE_DATENREVISION); |
} |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) > 4) |
{ |
printf("\n\rACC not calibrated !"); |
} |
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
printf("\n\rUsing parameterset %d", GetActiveParamSetNumber()); |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
printf("\n\rCalibrating pressure sensor.."); |
timer = SetDelay(1000); |
SucheLuftruckOffset(); |
while (!CheckDelay(timer)); |
printf("OK\n\r"); |
} |
SetNeutral(); |
ROT_OFF; |
beeptime = 2000; |
ExternControl.Digital[0] = 0x55; |
printf("\n\rControl: "); |
if (EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) printf("HeadingHold"); |
else printf("Normal (ACC-Mode)"); |
LcdClear(); |
I2CTimeout = 5000; |
WinkelOut.Orientation = 1; |
LipoDetection(1); |
printf("\n\r===================================\n\r"); |
while (1) |
{ |
if(UpdateMotor && AdReady) // ReglerIntervall |
{ |
UpdateMotor=0; |
if(WinkelOut.CalcState) CalMk3Mag(); |
else MotorRegler(); |
SendMotorData(); |
ROT_OFF; |
if(PcZugriff) PcZugriff--; |
else |
{ |
ExternControl.Config = 0; |
ExternStickNick = 0; |
ExternStickRoll = 0; |
ExternStickGier = 0; |
} |
if(SenderOkay) SenderOkay--; |
else |
{ |
TIMSK1 |= _BV(ICIE1); // enable PPM-Input |
} |
//if(HoehenReglerAktiv && NaviDataOkay && SenderOkay < 160 && SenderOkay > 10 && FromNaviCtrl_Value.SerialDataOkay > 220) SenderOkay = 160; |
//if(HoehenReglerAktiv && NaviDataOkay && SenderOkay < 101 && SenderOkay > 10 && FromNaviCtrl_Value.SerialDataOkay > 1) SenderOkay = 101; |
if(NaviDataOkay) |
{ |
if(--NaviDataOkay == 0) |
{ |
GPS_Nick = 0; |
GPS_Roll = 0; |
} |
} |
if(!--I2CTimeout || MissingMotor) |
{ |
if(!I2CTimeout) |
{ |
i2c_reset(); |
I2CTimeout = 5; |
} |
if((BeepMuster == 0xffff) && MotorenEin) |
{ |
beeptime = 10000; |
BeepMuster = 0x0080; |
} |
} |
else |
{ |
ROT_OFF; |
} |
if(SIO_DEBUG && (!UpdateMotor || !MotorenEin)) |
{ |
DatenUebertragung(); |
BearbeiteRxDaten(); |
} |
else BearbeiteRxDaten(); |
if(CheckDelay(timer)) |
{ |
if(UBat < BattLowVoltageWarning) |
{ |
MikroKopterFlags |= FLAG_LOWBAT; |
if(BeepMuster == 0xffff) |
{ |
beeptime = 6000; |
BeepMuster = 0x0300; |
} |
} |
else MikroKopterFlags &= ~FLAG_LOWBAT; |
SPI_StartTransmitPacket(); |
SendSPI = 4; |
timer = SetDelay(20); |
} |
LED_Update(); |
} |
if(!SendSPI) { SPI_TransmitByte(); } |
} |
return (1); |
} |
/beta/FC_075i_MartinR/main.h |
---|
0,0 → 1,129 |
#ifndef _MAIN_H |
#define _MAIN_H |
#define QUADRO |
//Hier die Quarz Frequenz einstellen |
#if defined (__AVR_ATmega32__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
#endif |
#if defined (__AVR_ATmega644__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
#endif |
#if defined (__AVR_ATmega644P__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
#endif |
// neue Hardware |
#define ROT_OFF {if((PlatinenVersion == 10)||(PlatinenVersion == 20)) PORTB &=~0x01; else PORTB |= 0x01;} |
#define ROT_ON {if((PlatinenVersion == 10)||(PlatinenVersion == 20)) PORTB |= 0x01; else PORTB &=~0x01;} |
#define ROT_FLASH PORTB ^= 0x01 |
#define GRN_OFF {if((PlatinenVersion < 12)) PORTB &=~0x02; else PORTB |= 0x02;} |
#define GRN_ON {if((PlatinenVersion < 12)) PORTB |= 0x02; else PORTB &=~0x02;} |
#define GRN_FLASH PORTB ^= 0x02 |
#define F_CPU SYSCLK |
//#ifndef F_CPU |
//#error ################## F_CPU nicht definiert oder ungültig ############# |
//#endif |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define EE_DATENREVISION 78 // wird angepasst, wenn sich die EEPROM-Daten geändert haben |
#define MIXER_REVISION 1 // wird angepasst, wenn sich die Mixer-Daten geändert haben |
#define EEPROM_ADR_VALID 1 |
#define EEPROM_ADR_ACTIVE_SET 2 |
#define EEPROM_ADR_LAST_OFFSET 3 |
#define EEPROM_ADR_ACC_NICK 4 |
#define EEPROM_ADR_ACC_ROLL 6 |
#define EEPROM_ADR_ACC_Z 8 |
#define EEPROM_ADR_CHANNELS 80 |
#define EEPROM_ADR_PARAM_LENGTH 98 |
#define EEPROM_ADR_PARAM_BEGIN 100 |
#define EEPROM_ADR_MIXER_TABLE 1000 // 1001 - 1100 |
#define CFG_HOEHENREGELUNG 0x01 |
#define CFG_HOEHEN_SCHALTER 0x02 |
#define CFG_HEADING_HOLD 0x04 |
#define CFG_KOMPASS_AKTIV 0x08 |
#define CFG_KOMPASS_FIX 0x10 |
#define CFG_GPS_AKTIV 0x20 |
#define CFG_ACHSENKOPPLUNG_AKTIV 0x40 |
#define CFG_DREHRATEN_BEGRENZER 0x80 |
#define CFG_LOOP_OBEN 0x01 |
#define CFG_LOOP_UNTEN 0x02 |
#define CFG_LOOP_LINKS 0x04 |
#define CFG_LOOP_RECHTS 0x08 |
#define CFG_MOTOR_BLINK 0x10 |
#define CFG_RES2 0x20 |
#define CFG_RES3 0x40 |
#define CFG_RES4 0x80 |
#define J3High PORTD |= 0x20 |
#define J3Low PORTD &= ~0x20 |
#define J4High PORTD |= 0x10 |
#define J4Low PORTD &= ~0x10 |
#define J5High PORTD |= 0x08 |
#define J5Low PORTD &= ~0x08 |
//#define SYSCLK |
//extern unsigned long SYSCLK; |
extern volatile unsigned char SenderOkay; |
extern unsigned char BattLowVoltageWarning; |
extern unsigned char CosinusNickWinkel, CosinusRollWinkel; |
extern unsigned char PlatinenVersion; |
extern unsigned char SendVersionToNavi; |
void ReadParameterSet (unsigned char number, unsigned char *buffer, unsigned char length); |
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length); |
extern unsigned char GetActiveParamSetNumber(void); |
void SetActiveParamSetNumber(unsigned char number); |
void LipoDetection(unsigned char print); |
extern unsigned char EEPromArray[]; |
#include <stdlib.h> |
#include <string.h> |
#include <avr/io.h> |
#include <avr/pgmspace.h> |
#include <avr/interrupt.h> |
#include <avr/eeprom.h> |
#include <avr/boot.h> |
#include <avr/wdt.h> |
#include "old_macros.h" |
#include "_Settings.h" |
#include "printf_P.h" |
#include "timer0.h" |
#include "uart.h" |
#include "analog.h" |
#include "twimaster.h" |
#include "menu.h" |
#include "rc.h" |
#include "fc.h" |
#include "gps.h" |
#include "spi.h" |
#include "led.h" |
#ifndef EEMEM |
#define EEMEM __attribute__ ((section (".eeprom"))) |
#endif |
#define DEBUG_DISPLAY_INTERVALL 123 // in ms |
#define DELAY_US(x) ((unsigned int)( (x) * 1e-6 * F_CPU )) |
#endif //_MAIN_H |
/beta/FC_075i_MartinR/makefile |
---|
0,0 → 1,449 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega644p |
F_CPU = 20000000 |
#------------------------------------------------------------------- |
VERSION_MAJOR = 0 |
VERSION_MINOR = 75 |
VERSION_PATCH = 8 |
VERSION_SERIAL_MAJOR = 10 # Serial Protocol |
VERSION_SERIAL_MINOR = 1 # Serial Protocol |
NC_SPI_COMPATIBLE = 9 # Navi-Kompatibilität |
#------------------------------------------------------------------- |
ifeq ($(MCU), atmega32) |
# FUSE_SETTINGS= -u -U lfuse:w:0xff:m -U hfuse:w:0xcf:m |
HEX_NAME = MEGA32 |
endif |
ifeq ($(MCU), atmega644) |
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
#FUSE_SETTINGS = -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
# -u bei neuen Controllern wieder einspielen |
HEX_NAME = MEGA644 |
endif |
ifeq ($(MCU), atmega644p) |
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
HEX_NAME = MEGA644 |
endif |
ifeq ($(F_CPU), 16000000) |
QUARZ = 16MHZ |
endif |
ifeq ($(F_CPU), 20000000) |
QUARZ = 20MHZ |
endif |
# Output format. (can be srec, ihex, binary) |
FORMAT = ihex |
# Target file name (without extension). |
ifeq ($(VERSION_PATCH), 0) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)a |
endif |
ifeq ($(VERSION_PATCH), 1) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)b |
endif |
ifeq ($(VERSION_PATCH), 2) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)c |
endif |
ifeq ($(VERSION_PATCH), 3) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)d |
endif |
ifeq ($(VERSION_PATCH), 4) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)e |
endif |
ifeq ($(VERSION_PATCH), 5) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)f |
endif |
ifeq ($(VERSION_PATCH), 6) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)g |
endif |
ifeq ($(VERSION_PATCH), 7) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)h |
endif |
ifeq ($(VERSION_PATCH), 8) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)i_MartinR |
endif |
ifeq ($(VERSION_PATCH), 9) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)j |
endif |
ifeq ($(VERSION_PATCH), 10) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)k |
endif |
ifeq ($(VERSION_PATCH), 11) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)L |
endif |
ifeq ($(VERSION_PATCH), 12) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)m |
endif |
ifeq ($(VERSION_PATCH), 13) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)n |
endif |
ifeq ($(VERSION_PATCH), 14) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)o |
endif |
ifeq ($(VERSION_PATCH), 15) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)p |
endif |
ifeq ($(VERSION_PATCH), 16) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)q |
endif |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = 2 |
########################################################################################################## |
# List C source files here. (C dependencies are automatically generated.) |
SRC = main.c uart.c printf_P.c timer0.c analog.c menu.c |
SRC += twimaster.c rc.c fc.c GPS.c spi.c led.c Spectrum.c |
########################################################################################################## |
# List Assembler source files here. |
# Make them always end in a capital .S. Files ending in a lowercase .s |
# will not be considered source files but generated files (assembler |
# output from the compiler), and will be deleted upon "make clean"! |
# Even though the DOS/Win* filesystem matches both .s and .S the same, |
# it will preserve the spelling of the filenames, and gcc itself does |
# care about how the name is spelled on its command-line. |
ASRC = |
# List any extra directories to look for include files here. |
# Each directory must be seperated by a space. |
EXTRAINCDIRS = |
# Optional compiler flags. |
# -g: generate debugging information (for GDB, or for COFF conversion) |
# -O*: optimization level |
# -f...: tuning, see gcc manual and avr-libc documentation |
# -Wall...: warning level |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create assembler listing |
CFLAGS = -O$(OPT) \ |
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
-Wall -Wstrict-prototypes \ |
-Wa,-adhlns=$(<:.c=.lst) \ |
$(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_MAJOR=$(VERSION_MAJOR) -DVERSION_MINOR=$(VERSION_MINOR) -DVERSION_PATCH=$(VERSION_PATCH) -DVERSION_SERIAL_MAJOR=$(VERSION_SERIAL_MAJOR) -DVERSION_SERIAL_MINOR=$(VERSION_SERIAL_MINOR) -DNC_SPI_COMPATIBLE=$(NC_SPI_COMPATIBLE) |
# Optional assembler flags. |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create listing |
# -gstabs: have the assembler create line number information; note that |
# for use in COFF files, additional information about filenames |
# and function names needs to be present in the assembler source |
# files -- see avr-libc docs [FIXME: not yet described there] |
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs |
# Optional linker flags. |
# -Wl,...: tell GCC to pass this to linker. |
# -Map: create map file |
# --cref: add cross reference to map file |
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref |
# Additional libraries |
# Minimalistic printf version |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
# Floating point printf version (requires -lm below) |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
# -lm = math library |
LDFLAGS += -lm |
##LDFLAGS += -T./linkerfile/avr5.x |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
#AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = stk200 |
#AVRDUDE_PROGRAMMER = ponyser |
AVRDUDE_PROGRAMMER = avrispv2 |
#falls Ponyser ausgewählt wird, muss sich unsere avrdude-Configdatei im Bin-Verzeichnis des Compilers befinden |
#AVRDUDE_PORT = com1 # programmer connected to serial device |
#AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
AVRDUDE_PORT = usb # programmer connected to USB |
#AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex $(FUSE_SETTINGS) |
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
#avrdude -c avrispv2 -P usb -p m32 -U flash:w:blink.hex |
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
# Uncomment the following if you want avrdude's erase cycle counter. |
# Note that this counter needs to be initialized first using -Yn, |
# see avrdude manual. |
#AVRDUDE_ERASE += -y |
# Uncomment the following if you do /not/ wish a verification to be |
# performed after programming the device. |
AVRDUDE_FLAGS += -V |
# Increase verbosity level. Please use this when submitting bug |
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> |
# to submit bug reports. |
#AVRDUDE_FLAGS += -v -v |
# --------------------------------------------------------------------------- |
# Define directories, if needed. |
DIRAVR = c:/winavr |
DIRAVRBIN = $(DIRAVR)/bin |
DIRAVRUTILS = $(DIRAVR)/utils/bin |
DIRINC = . |
DIRLIB = $(DIRAVR)/avr/lib |
# Define programs and commands. |
SHELL = sh |
CC = avr-gcc |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
SIZE = avr-size |
# Programming support using avrdude. |
AVRDUDE = avrdude |
REMOVE = rm -f |
COPY = cp |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -A $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
MSG_BEGIN = -------- begin -------- |
MSG_END = -------- end -------- |
MSG_SIZE_BEFORE = Size before: |
MSG_SIZE_AFTER = Size after: |
MSG_COFF = Converting to AVR COFF: |
MSG_EXTENDED_COFF = Converting to AVR Extended COFF: |
MSG_FLASH = Creating load file for Flash: |
MSG_EEPROM = Creating load file for EEPROM: |
MSG_EXTENDED_LISTING = Creating Extended Listing: |
MSG_SYMBOL_TABLE = Creating Symbol Table: |
MSG_LINKING = Linking: |
MSG_COMPILING = Compiling: |
MSG_ASSEMBLING = Assembling: |
MSG_CLEANING = Cleaning project: |
# Define all object files. |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
# Define all listing files. |
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
# Combine all necessary flags and optional flags. |
# Add target processor to flags. |
#ALL_CFLAGS = -mmcu=$(MCU) -DF_CPU=$(F_CPU) -I. $(CFLAGS) |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).lss $(TARGET).sym sizeafter finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo Size before:; $(ELFSIZE); $(HEXSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo Size after:; $(ELFSIZE); $(HEXSIZE); echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
# Convert ELF to COFF for use in debugging / simulating in |
# AVR Studio or VMLAB. |
COFFCONVERT=$(OBJCOPY) --debugging \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 |
coff: $(TARGET).elf |
@echo |
@echo $(MSG_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof |
extcoff: $(TARGET).elf |
@echo |
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof |
# Program the device. |
program: $(TARGET).hex $(TARGET).eep |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
@echo $(MSG_FLASH) $@ |
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ |
%.eep: %.elf |
@echo |
@echo $(MSG_EEPROM) $@ |
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ |
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ |
# Create extended listing file from ELF output file. |
%.lss: %.elf |
@echo |
@echo $(MSG_EXTENDED_LISTING) $@ |
$(OBJDUMP) -h -S $< > $@ |
# Create a symbol table from ELF output file. |
%.sym: %.elf |
@echo |
@echo $(MSG_SYMBOL_TABLE) $@ |
avr-nm -n $< > $@ |
# Link: create ELF output file from object files. |
.SECONDARY : $(TARGET).elf |
.PRECIOUS : $(OBJ) |
%.elf: $(OBJ) |
@echo |
@echo $(MSG_LINKING) $@ |
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) |
# Compile: create object files from C source files. |
%.o : %.c |
@echo |
@echo $(MSG_COMPILING) $< |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
# Compile: create assembler files from C source files. |
%.s : %.c |
$(CC) -S $(ALL_CFLAGS) $< -o $@ |
# Assemble: create object files from assembler source files. |
%.o : %.S |
@echo |
@echo $(MSG_ASSEMBLING) $< |
$(CC) -c $(ALL_ASFLAGS) $< -o $@ |
# Target: clean project. |
clean: begin clean_list finished end |
clean_list : |
@echo |
@echo $(MSG_CLEANING) |
# $(REMOVE) $(TARGET).hex |
$(REMOVE) $(TARGET).eep |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).cof |
$(REMOVE) $(TARGET).elf |
$(REMOVE) $(TARGET).map |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).a90 |
$(REMOVE) $(TARGET).sym |
$(REMOVE) $(TARGET).lnk |
$(REMOVE) $(TARGET).lss |
$(REMOVE) $(OBJ) |
$(REMOVE) $(LST) |
$(REMOVE) $(SRC:.c=.s) |
$(REMOVE) $(SRC:.c=.d) |
# Automatically generate C source code dependencies. |
# (Code originally taken from the GNU make user manual and modified |
# (See README.txt Credits).) |
# |
# Note that this will work with sh (bash) and sed that is shipped with WinAVR |
# (see the SHELL variable defined above). |
# This may not work with other shells or other seds. |
# |
%.d: %.c |
set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
[ -s $@ ] || rm -f $@ |
# Remove the '-' if you want to see the dependency files generated. |
-include $(SRC:.c=.d) |
# Listing of phony targets. |
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
clean clean_list program |
/beta/FC_075i_MartinR/menu.c |
---|
0,0 → 1,168 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned int TestInt = 0; |
#define ARRAYGROESSE 10 |
unsigned char Array[ARRAYGROESSE] = {1,2,3,4,5,6,7,8,9,10}; |
char DisplayBuff[80] = "Hallo Welt"; |
unsigned char DispPtr = 0; |
unsigned char MaxMenue = 13; |
unsigned char MenuePunkt = 0; |
unsigned char RemoteKeys = 0; |
#define KEY1 0x01 |
#define KEY2 0x02 |
#define KEY3 0x04 |
#define KEY4 0x08 |
#define KEY5 0x10 |
void LcdClear(void) |
{ |
unsigned char i; |
for(i=0;i<80;i++) DisplayBuff[i] = ' '; |
} |
void Menu(void) |
{ |
if(MenuePunkt > MaxMenue) MenuePunkt = MaxMenue; |
if(RemoteKeys & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue;} |
if(RemoteKeys & KEY2) { if(MenuePunkt == MaxMenue) MenuePunkt = 0; else MenuePunkt++;} |
if((RemoteKeys & KEY1) && (RemoteKeys & KEY2)) MenuePunkt = 0; |
LcdClear(); |
if(MenuePunkt < 10) {LCD_printfxy(17,0,"[%i]",MenuePunkt);} |
else {LCD_printfxy(16,0,"[%i]",MenuePunkt);}; |
switch(MenuePunkt) |
{ |
case 0: |
LCD_printfxy(0,0,"+ MikroKopter +"); |
LCD_printfxy(0,1,"HW:V%d.%d SW:%d.%d%c",PlatinenVersion/10,PlatinenVersion%10, VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH +'a'); |
LCD_printfxy(0,2,"Setting:%d %s",GetActiveParamSetNumber(),Mixer.Name); |
if(I2CTimeout < 6) LCD_printfxy(0,3,"I2C ERROR!!!") |
else |
if(MissingMotor) LCD_printfxy(0,3,"Missing BL-Ctrl:%d!!",MissingMotor) |
else LCD_printfxy(0,3,"(c) Holger Buss"); |
// if(RemoteTasten & KEY3) TestInt--; |
// if(RemoteTasten & KEY4) TestInt++; |
break; |
case 1: |
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
{ |
LCD_printfxy(0,0,"Hoehe: %5i",(int)(HoehenWert/5)); |
LCD_printfxy(0,1,"SollHoehe: %5i",(int)(SollHoehe/5)); |
LCD_printfxy(0,2,"Luftdruck: %5i",MessLuftdruck); |
LCD_printfxy(0,3,"Off : %5i",DruckOffsetSetting); |
} |
else |
{ |
LCD_printfxy(0,1,"Keine "); |
LCD_printfxy(0,2,"Höhenregelung"); |
} |
break; |
case 2: |
LCD_printfxy(0,0,"akt. Lage"); |
LCD_printfxy(0,1,"Nick: %5i",IntegralNick/1024); |
LCD_printfxy(0,2,"Roll: %5i",IntegralRoll/1024); |
LCD_printfxy(0,3,"Kompass: %5i",KompassValue); |
break; |
case 3: |
LCD_printfxy(0,0,"K1:%4i K2:%4i ",PPM_in[1],PPM_in[2]); |
LCD_printfxy(0,1,"K3:%4i K4:%4i ",PPM_in[3],PPM_in[4]); |
LCD_printfxy(0,2,"K5:%4i K6:%4i ",PPM_in[5],PPM_in[6]); |
LCD_printfxy(0,3,"K7:%4i K8:%4i ",PPM_in[7],PPM_in[8]); |
break; |
case 4: |
LCD_printfxy(0,0,"Ni:%4i Ro:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_NICK]],PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]); |
LCD_printfxy(0,1,"Gs:%4i Gi:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_GAS]],PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]); |
LCD_printfxy(0,2,"P1:%4i P2:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]],PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]]); |
LCD_printfxy(0,3,"P3:%4i P4:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]],PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]]); |
break; |
case 5: |
LCD_printfxy(0,0,"Gyro - Sensor"); |
if(PlatinenVersion == 10) |
{ |
LCD_printfxy(0,1,"Nick %4i (%3i.%i)",AdWertNick - AdNeutralNick/8, AdNeutralNick/8, AdNeutralNick%8); |
LCD_printfxy(0,2,"Roll %4i (%3i.%i)",AdWertRoll - AdNeutralRoll/8, AdNeutralRoll/8, AdNeutralRoll%8); |
LCD_printfxy(0,3,"Gier %4i (%3i)",AdNeutralGier - AdWertGier, AdNeutralGier); |
} |
else |
if((PlatinenVersion == 11) || (PlatinenVersion == 20)) |
{ |
LCD_printfxy(0,1,"Nick %4i (%3i.%x)",AdWertNick - AdNeutralNick/8, AdNeutralNick/16, (AdNeutralNick%16)/2); |
LCD_printfxy(0,2,"Roll %4i (%3i.%x)",AdWertRoll - AdNeutralRoll/8, AdNeutralRoll/16, (AdNeutralRoll%16)/2); |
LCD_printfxy(0,3,"Gier %4i (%3i)",AdNeutralGier - AdWertGier, AdNeutralGier/2); |
} |
else |
if(PlatinenVersion == 13) |
{ |
LCD_printfxy(0,1,"Nick %4i (%3i)(%3i)",AdWertNick - AdNeutralNick/8, AdNeutralNick/16,AnalogOffsetNick); |
LCD_printfxy(0,2,"Roll %4i (%3i)(%3i)",AdWertRoll - AdNeutralRoll/8, AdNeutralRoll/16,AnalogOffsetRoll); |
LCD_printfxy(0,3,"Gier %4i (%3i)(%3i)",AdNeutralGier - AdWertGier, AdNeutralGier/2,AnalogOffsetGier); |
} |
break; |
case 6: |
LCD_printfxy(0,0,"ACC - Sensor"); |
LCD_printfxy(0,1,"Nick %4i (%3i)",AdWertAccNick,NeutralAccX); |
LCD_printfxy(0,2,"Roll %4i (%3i)",AdWertAccRoll,NeutralAccY); |
LCD_printfxy(0,3,"Hoch %4i (%3i)",Mittelwert_AccHoch/*accumulate_AccHoch / messanzahl_AccHoch*/,(int)NeutralAccZ); |
break; |
case 7: |
LCD_printfxy(0,1,"Voltage: %5i",UBat); |
LCD_printfxy(0,2,"RC-Level: %5i",SenderOkay); |
LCD_printfxy(0,3,"RC-Channels:%4i",Channels-1); |
break; |
case 8: |
LCD_printfxy(0,0,"Kompass "); |
LCD_printfxy(0,1,"Richtung: %5i",KompassRichtung); |
LCD_printfxy(0,2,"Messwert: %5i",KompassValue); |
LCD_printfxy(0,3,"Start: %5i",KompassStartwert); |
break; |
case 9: |
LCD_printfxy(0,0,"Poti1: %3i",Poti1); |
LCD_printfxy(0,1,"Poti2: %3i",Poti2); |
LCD_printfxy(0,2,"Poti3: %3i",Poti3); |
LCD_printfxy(0,3,"Poti4: %3i",Poti4); |
break; |
case 10: |
LCD_printfxy(0,0,"Servo " ); |
LCD_printfxy(0,1,"Setpoint %3i",Parameter_ServoNickControl); |
LCD_printfxy(0,2,"Stellung: %3i",ServoValue); |
LCD_printfxy(0,3,"Range:%3i-%3i",EE_Parameter.ServoNickMin,EE_Parameter.ServoNickMax); |
break; |
case 11: |
LCD_printfxy(0,0,"ExternControl " ); |
LCD_printfxy(0,1,"Ni:%4i Ro:%4i ",ExternControl.Nick,ExternControl.Roll); |
LCD_printfxy(0,2,"Gs:%4i Gi:%4i ",ExternControl.Gas,ExternControl.Gier); |
LCD_printfxy(0,3,"Hi:%4i Cf:%4i ",ExternControl.Hight,ExternControl.Config); |
break; |
case 12: |
LCD_printfxy(0,0,"BL-Ctrl Errors " ); |
LCD_printfxy(0,1," %3d %3d %3d %3d ",MotorError[0],MotorError[1],MotorError[2],MotorError[3]); |
LCD_printfxy(0,2," %3d %3d %3d %3d ",MotorError[4],MotorError[5],MotorError[6],MotorError[7]); |
LCD_printfxy(0,3," %3d %3d %3d %3d ",MotorError[8],MotorError[9],MotorError[10],MotorError[11]); |
break; |
case 13: |
LCD_printfxy(0,0,"BL-Ctrl found " ); |
LCD_printfxy(0,1," %c %c %c %c ",MotorPresent[0] + '-',MotorPresent[1] + '-',MotorPresent[2] + '-',MotorPresent[3] + '-'); |
LCD_printfxy(0,2," %c %c %c %c ",MotorPresent[4] + '-',MotorPresent[5] + '-',MotorPresent[6] + '-',MotorPresent[7] + '-'); |
LCD_printfxy(0,3," %c - - -",MotorPresent[8] + '-'); |
if(MotorPresent[9]) LCD_printfxy(4,3,"10"); |
if(MotorPresent[10]) LCD_printfxy(8,3,"11"); |
if(MotorPresent[11]) LCD_printfxy(12,3,"12"); |
break; |
default: MaxMenue = MenuePunkt - 1; |
MenuePunkt = 0; |
break; |
} |
RemoteKeys = 0; |
} |
/beta/FC_075i_MartinR/menu.h |
---|
0,0 → 1,9 |
extern void Menu(void); |
extern void LcdClear(void); |
extern char DisplayBuff[80]; |
extern unsigned char DispPtr; |
extern unsigned char MaxMenue; |
extern unsigned char MenuePunkt; |
extern unsigned char RemoteKeys; |
/beta/FC_075i_MartinR/old_macros.h |
---|
0,0 → 1,47 |
/* |
For backwards compatibility only. |
Ingo Busker ingo@mikrocontroller.com |
*/ |
#ifndef cbi |
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) |
#endif |
#ifndef sbi |
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) |
#endif |
#ifndef inb |
#define inb(sfr) _SFR_BYTE(sfr) |
#endif |
#ifndef outb |
#define outb(sfr, val) (_SFR_BYTE(sfr) = (val)) |
#endif |
#ifndef inw |
#define inw(sfr) _SFR_WORD(sfr) |
#endif |
#ifndef outw |
#define outw(sfr, val) (_SFR_WORD(sfr) = (val)) |
#endif |
#ifndef outp |
#define outp(val, sfr) outb(sfr, val) |
#endif |
#ifndef inp |
#define inp(sfr) inb(sfr) |
#endif |
#ifndef BV |
#define BV(bit) _BV(bit) |
#endif |
#ifndef PRG_RDB |
#define PRG_RDB pgm_read_byte |
#endif |
/beta/FC_075i_MartinR/printf_P.c |
---|
0,0 → 1,480 |
// Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist nicht von der Lizenz für den MikroKopter-Teil unterstellt |
/* |
Copyright (C) 1993 Free Software Foundation |
This file is part of the GNU IO Library. This library is free |
software; you can redistribute it and/or modify it under the |
terms of the GNU General Public License as published by the |
Free Software Foundation; either version 2, or (at your option) |
any later version. |
This library is distributed in the hope that it will be useful, |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
GNU General Public License for more details. |
You should have received a copy of the GNU General Public License |
along with this library; see the file COPYING. If not, write to the Free |
Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
As a special exception, if you link this library with files |
compiled with a GNU compiler to produce an executable, this does not cause |
the resulting executable to be covered by the GNU General Public License. |
This exception does not however invalidate any other reasons why |
the executable file might be covered by the GNU General Public License. */ |
/* |
* Copyright (c) 1990 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. [rescinded 22 July 1999] |
* 4. 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. |
*/ |
/****************************************************************************** |
This file is a patched version of printf called _printf_P |
It is made to work with avr-gcc for Atmel AVR MCUs. |
There are some differences from standard printf: |
1. There is no floating point support (with fp the code is about 8K!) |
2. Return type is void |
3. Format string must be in program memory (by using macro printf this is |
done automaticaly) |
4. %n is not implemented (just remove the comment around it if you need it) |
5. If LIGHTPRINTF is defined, the code is about 550 bytes smaller and the |
folowing specifiers are disabled : |
space # * . - + p s o O |
6. A function void uart_sendchar(char c) is used for output. The UART must |
be initialized before using printf. |
Alexander Popov |
sasho@vip.orbitel.bg |
******************************************************************************/ |
/* |
* Actual printf innards. |
* |
* This code is large and complicated... |
*/ |
#include <string.h> |
#ifdef __STDC__ |
#include <stdarg.h> |
#else |
#include <varargs.h> |
#endif |
#include "main.h" |
//#define LIGHTPRINTF |
char PrintZiel; |
char Putchar(char zeichen) |
{ |
if(PrintZiel == OUT_LCD) { DisplayBuff[DispPtr++] = zeichen; return(1);} |
else return(uart_putchar(zeichen)); |
} |
void PRINT(const char * ptr, unsigned int len) |
{ |
for(;len;len--) Putchar(*ptr++); |
} |
void PRINTP(const char * ptr, unsigned int len) |
{ |
for(;len;len--) Putchar(pgm_read_byte(ptr++)); |
} |
void PAD_SP(signed char howmany) |
{ |
for(;howmany>0;howmany--) Putchar(' '); |
} |
void PAD_0(signed char howmany) |
{ |
for(;howmany>0;howmany--) Putchar('0'); |
} |
#define BUF 40 |
/* |
* Macros for converting digits to letters and vice versa |
*/ |
#define to_digit(c) ((c) - '0') |
#define is_digit(c) ((c)<='9' && (c)>='0') |
#define to_char(n) ((n) + '0') |
/* |
* Flags used during conversion. |
*/ |
#define LONGINT 0x01 /* long integer */ |
#define LONGDBL 0x02 /* long double; unimplemented */ |
#define SHORTINT 0x04 /* short integer */ |
#define ALT 0x08 /* alternate form */ |
#define LADJUST 0x10 /* left adjustment */ |
#define ZEROPAD 0x20 /* zero (as opposed to blank) pad */ |
#define HEXPREFIX 0x40 /* add 0x or 0X prefix */ |
void _printf_P (char ziel,char const *fmt0, ...) /* Works with string from FLASH */ |
{ |
va_list ap; |
register const char *fmt; /* format string */ |
register char ch; /* character from fmt */ |
register int n; /* handy integer (short term usage) */ |
register char *cp; /* handy char pointer (short term usage) */ |
const char *fmark; /* for remembering a place in fmt */ |
register unsigned char flags; /* flags as above */ |
signed char width; /* width from format (%8d), or 0 */ |
signed char prec; /* precision from format (%.3d), or -1 */ |
char sign; /* sign prefix (' ', '+', '-', or \0) */ |
unsigned long _ulong=0; /* integer arguments %[diouxX] */ |
#define OCT 8 |
#define DEC 10 |
#define HEX 16 |
unsigned char base; /* base for [diouxX] conversion */ |
signed char dprec; /* a copy of prec if [diouxX], 0 otherwise */ |
signed char dpad; /* extra 0 padding needed for integers */ |
signed char fieldsz; /* field size expanded by sign, dpad etc */ |
/* The initialization of 'size' is to suppress a warning that |
'size' might be used unitialized. It seems gcc can't |
quite grok this spaghetti code ... */ |
signed char size = 0; /* size of converted field or string */ |
char buf[BUF]; /* space for %c, %[diouxX], %[eEfgG] */ |
char ox[2]; /* space for 0x hex-prefix */ |
PrintZiel = ziel; // bestimmt, LCD oder UART |
va_start(ap, fmt0); |
fmt = fmt0; |
/* |
* Scan the format for conversions (`%' character). |
*/ |
for (;;) { |
for (fmark = fmt; (ch = pgm_read_byte(fmt)) != '\0' && ch != '%'; fmt++) |
/* void */; |
if ((n = fmt - fmark) != 0) { |
PRINTP(fmark, n); |
} |
if (ch == '\0') |
goto done; |
fmt++; /* skip over '%' */ |
flags = 0; |
dprec = 0; |
width = 0; |
prec = -1; |
sign = '\0'; |
rflag: ch = PRG_RDB(fmt++); |
reswitch: |
#ifdef LIGHTPRINTF |
if (ch=='o' || ch=='u' || (ch|0x20)=='x') { |
#else |
if (ch=='u' || (ch|0x20)=='x') { |
#endif |
if (flags&LONGINT) { |
_ulong=va_arg(ap, unsigned long); |
} else { |
register unsigned int _d; |
_d=va_arg(ap, unsigned int); |
_ulong = flags&SHORTINT ? (unsigned long)(unsigned short)_d : (unsigned long)_d; |
} |
} |
#ifndef LIGHTPRINTF |
if(ch==' ') { |
/* |
* ``If the space and + flags both appear, the space |
* flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
if (!sign) |
sign = ' '; |
goto rflag; |
} else if (ch=='#') { |
flags |= ALT; |
goto rflag; |
} else if (ch=='*'||ch=='-') { |
if (ch=='*') { |
/* |
* ``A negative field width argument is taken as a |
* - flag followed by a positive field width.'' |
* -- ANSI X3J11 |
* They don't exclude field widths read from args. |
*/ |
if ((width = va_arg(ap, int)) >= 0) |
goto rflag; |
width = -width; |
} |
flags |= LADJUST; |
flags &= ~ZEROPAD; /* '-' disables '0' */ |
goto rflag; |
} else if (ch=='+') { |
sign = '+'; |
goto rflag; |
} else if (ch=='.') { |
if ((ch = PRG_RDB(fmt++)) == '*') { |
n = va_arg(ap, int); |
prec = n < 0 ? -1 : n; |
goto rflag; |
} |
n = 0; |
while (is_digit(ch)) { |
n = n*10 + to_digit(ch); |
ch = PRG_RDB(fmt++); |
} |
prec = n < 0 ? -1 : n; |
goto reswitch; |
} else |
#endif /* LIGHTPRINTF */ |
if (ch=='0') { |
/* |
* ``Note that 0 is taken as a flag, not as the |
* beginning of a field width.'' |
* -- ANSI X3J11 |
*/ |
if (!(flags & LADJUST)) |
flags |= ZEROPAD; /* '-' disables '0' */ |
goto rflag; |
} else if (ch>='1' && ch<='9') { |
n = 0; |
do { |
n = 10 * n + to_digit(ch); |
ch = PRG_RDB(fmt++); |
} while (is_digit(ch)); |
width = n; |
goto reswitch; |
} else if (ch=='h') { |
flags |= SHORTINT; |
goto rflag; |
} else if (ch=='l') { |
flags |= LONGINT; |
goto rflag; |
} else if (ch=='c') { |
*(cp = buf) = va_arg(ap, int); |
size = 1; |
sign = '\0'; |
} else if (ch=='D'||ch=='d'||ch=='i') { |
if(ch=='D') |
flags |= LONGINT; |
if (flags&LONGINT) { |
_ulong=va_arg(ap, long); |
} else { |
register int _d; |
_d=va_arg(ap, int); |
_ulong = flags&SHORTINT ? (long)(short)_d : (long)_d; |
} |
if ((long)_ulong < 0) { |
_ulong = -_ulong; |
sign = '-'; |
} |
base = DEC; |
goto number; |
} else |
/* |
if (ch=='n') { |
if (flags & LONGINT) |
*va_arg(ap, long *) = ret; |
else if (flags & SHORTINT) |
*va_arg(ap, short *) = ret; |
else |
*va_arg(ap, int *) = ret; |
continue; // no output |
} else |
*/ |
#ifndef LIGHTPRINTF |
if (ch=='O'||ch=='o') { |
if (ch=='O') |
flags |= LONGINT; |
base = OCT; |
goto nosign; |
} else if (ch=='p') { |
/* |
* ``The argument shall be a pointer to void. The |
* value of the pointer is converted to a sequence |
* of printable characters, in an implementation- |
* defined manner.'' |
* -- ANSI X3J11 |
*/ |
/* NOSTRICT */ |
_ulong = (unsigned int)va_arg(ap, void *); |
base = HEX; |
flags |= HEXPREFIX; |
ch = 'x'; |
goto nosign; |
} else if (ch=='s') { // print a string from RAM |
if ((cp = va_arg(ap, char *)) == NULL) { |
cp=buf; |
cp[0] = '('; |
cp[1] = 'n'; |
cp[2] = 'u'; |
cp[4] = cp[3] = 'l'; |
cp[5] = ')'; |
cp[6] = '\0'; |
} |
if (prec >= 0) { |
/* |
* can't use strlen; can only look for the |
* NUL in the first `prec' characters, and |
* strlen() will go further. |
*/ |
char *p = (char*)memchr(cp, 0, prec); |
if (p != NULL) { |
size = p - cp; |
if (size > prec) |
size = prec; |
} else |
size = prec; |
} else |
size = strlen(cp); |
sign = '\0'; |
} else |
#endif /* LIGHTPRINTF */ |
if(ch=='U'||ch=='u') { |
if (ch=='U') |
flags |= LONGINT; |
base = DEC; |
goto nosign; |
} else if (ch=='X'||ch=='x') { |
base = HEX; |
/* leading 0x/X only if non-zero */ |
if (flags & ALT && _ulong != 0) |
flags |= HEXPREFIX; |
/* unsigned conversions */ |
nosign: sign = '\0'; |
/* |
* ``... diouXx conversions ... if a precision is |
* specified, the 0 flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
number: if ((dprec = prec) >= 0) |
flags &= ~ZEROPAD; |
/* |
* ``The result of converting a zero value with an |
* explicit precision of zero is no characters.'' |
* -- ANSI X3J11 |
*/ |
cp = buf + BUF; |
if (_ulong != 0 || prec != 0) { |
register unsigned char _d,notlastdigit; |
do { |
notlastdigit=(_ulong>=base); |
_d = _ulong % base; |
if (_d<10) { |
_d+='0'; |
} else { |
_d+='a'-10; |
if (ch=='X') _d&=~0x20; |
} |
*--cp=_d; |
_ulong /= base; |
} while (notlastdigit); |
#ifndef LIGHTPRINTF |
// handle octal leading 0 |
if (base==OCT && flags & ALT && *cp != '0') |
*--cp = '0'; |
#endif |
} |
size = buf + BUF - cp; |
} else { //default |
/* "%?" prints ?, unless ? is NUL */ |
if (ch == '\0') |
goto done; |
/* pretend it was %c with argument ch */ |
cp = buf; |
*cp = ch; |
size = 1; |
sign = '\0'; |
} |
/* |
* All reasonable formats wind up here. At this point, |
* `cp' points to a string which (if not flags&LADJUST) |
* should be padded out to `width' places. If |
* flags&ZEROPAD, it should first be prefixed by any |
* sign or other prefix; otherwise, it should be blank |
* padded before the prefix is emitted. After any |
* left-hand padding and prefixing, emit zeroes |
* required by a decimal [diouxX] precision, then print |
* the string proper, then emit zeroes required by any |
* leftover floating precision; finally, if LADJUST, |
* pad with blanks. |
*/ |
/* |
* compute actual size, so we know how much to pad. |
*/ |
fieldsz = size; |
dpad = dprec - size; |
if (dpad < 0) |
dpad = 0; |
if (sign) |
fieldsz++; |
else if (flags & HEXPREFIX) |
fieldsz += 2; |
fieldsz += dpad; |
/* right-adjusting blank padding */ |
if ((flags & (LADJUST|ZEROPAD)) == 0) |
PAD_SP(width - fieldsz); |
/* prefix */ |
if (sign) { |
PRINT(&sign, 1); |
} else if (flags & HEXPREFIX) { |
ox[0] = '0'; |
ox[1] = ch; |
PRINT(ox, 2); |
} |
/* right-adjusting zero padding */ |
if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD) |
PAD_0(width - fieldsz); |
/* leading zeroes from decimal precision */ |
PAD_0(dpad); |
/* the string or number proper */ |
PRINT(cp, size); |
/* left-adjusting padding (always blank) */ |
if (flags & LADJUST) |
PAD_SP(width - fieldsz); |
} |
done: |
va_end(ap); |
} |
/beta/FC_075i_MartinR/printf_P.h |
---|
0,0 → 1,19 |
#ifndef _PRINTF_P_H_ |
#define _PRINTF_P_H_ |
#include <avr/pgmspace.h> |
#define OUT_V24 0 |
#define OUT_LCD 1 |
void _printf_P (char, char const *fmt0, ...); |
extern char PrintZiel; |
#define printf_P(format, args...) _printf_P(OUT_V24,format , ## args) |
#define printf(format, args...) _printf_P(OUT_V24,PSTR(format) , ## args) |
#define LCD_printfxy(x,y,format, args...) { DispPtr = y * 20 + x; _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#define LCD_printf(format, args...) { _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#endif |
/beta/FC_075i_MartinR/rc.c |
---|
0,0 → 1,217 |
/*####################################################################################### |
Decodieren eines RC Summen Signals |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "rc.h" |
#include "main.h" |
volatile int PPM_in[11]; |
volatile int PPM_diff[11]; // das diffenzierte Stick-Signal |
volatile char Channels,tmpChannels = 0; |
volatile unsigned char NewPpmData = 1; |
//############################################################################ |
//zum decodieren des PPM-Signals wird Timer1 mit seiner Input |
//Capture Funktion benutzt: |
void rc_sum_init (void) |
//############################################################################ |
{ |
TCCR1B=(1<<CS11)|(1<<CS10)|(1<<ICES1)|(1<<ICNC1);//|(1 << WGM12); //timer1 prescale 64 |
// TCCR1B=(1<<CS11)|(0<<CS10)|(1<<ICES1)|(1<<ICNC1); //timer1 prescale 64 |
TIMSK1 |= _BV(ICIE1); |
AdNeutralGier = 0; |
AdNeutralRoll = 0; |
AdNeutralNick = 0; |
return; |
} |
/* |
//############################################################################ |
//Diese Routine startet und inizialisiert den Timer für RC |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int AltICR=0; |
signed int signal = 0,tmp; |
static int index; |
signal = (unsigned int) ICR1 - AltICR; |
AltICR = ICR1; |
//Syncronisationspause? (3.52 ms < signal < 25.6 ms) |
if((signal > 1100) && (signal < 8000)) |
{ |
if(index >= 4) NewPpmData = 0; // Null bedeutet: Neue Daten |
index = 1; |
} |
else |
{ |
if(index < 10) |
{ |
if((signal > 250) && (signal < 687)) |
{ |
signal -= 466; |
// Stabiles Signal |
if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10; else SenderOkay = 200;} |
tmp = (3 * (PPM_in[index]) + signal) / 4; |
if(tmp > signal+1) tmp--; else |
if(tmp < signal-1) tmp++; |
if(SenderOkay >= 195) PPM_diff[index] = ((tmp - PPM_in[index]) / 3) * 3; |
else PPM_diff[index] = 0; |
PPM_in[index] = tmp; |
} |
index++; |
if(index == 5) J3High; else J3Low; // Servosignal an J3 anlegen |
if(index == 6) J4High; else J4Low; // Servosignal an J4 anlegen |
if(index == 7) J5High; else J5Low; // Servosignal an J5 anlegen |
} |
} |
} |
*/ |
//############################################################################ |
//Diese Routine startet und inizialisiert den Timer für RC |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int AltICR=0; |
static int ppm_in[11]; |
static int ppm_diff[11]; |
static int old_ppm_in[11]; |
static int old_ppm_diff[11]; |
signed int signal = 0,tmp; |
static unsigned char index, okay_cnt = 0; |
signal = (unsigned int) ICR1 - AltICR; |
AltICR = ICR1; |
//Syncronisationspause? (3.52 ms < signal < 25.6 ms) |
if((signal > 1100) && (signal < 8000)) |
{ |
tmpChannels = index; |
if(tmpChannels >= 4 && Channels == tmpChannels) |
{ |
if(okay_cnt > 10) |
{ |
NewPpmData = 0; // Null bedeutet: Neue Daten |
for(index = 0; index < 11; index++) |
{ |
if(okay_cnt > 30) |
{ |
old_ppm_in[index] = PPM_in[index]; |
old_ppm_diff[index] = PPM_diff[index]; |
} |
PPM_in[index] = ppm_in[index]; |
PPM_diff[index] = ppm_diff[index]; |
} |
} |
if(okay_cnt < 255) okay_cnt++; |
} |
else |
{ |
if(okay_cnt > 100) okay_cnt = 10; else okay_cnt = 0; |
ROT_ON; |
} |
index = 1; |
if(!MotorenEin) Channels = tmpChannels; |
} |
else |
{ |
if(index < 10) |
{ |
if((signal > 250) && (signal < 687)) |
{ |
signal -= 466; |
// Stabiles Signal |
if((abs(signal - ppm_in[index]) < 6)) |
{ |
if(okay_cnt > 25) SenderOkay += 10; |
else |
if(okay_cnt > 10) SenderOkay += 2; |
if(SenderOkay > 200) SenderOkay = 200; |
} |
tmp = (3 * (ppm_in[index]) + signal) / 4; |
if(tmp > signal+1) tmp--; else |
if(tmp < signal-1) tmp++; |
if(SenderOkay >= 190) ppm_diff[index] = ((tmp - ppm_in[index]) / 3) * 3; |
else ppm_diff[index] = 0; |
ppm_in[index] = tmp; |
} |
else ROT_ON; |
if(index == 5) J3High; else J3Low; // Servosignal an J3 anlegen |
if(index == 6) J4High; else J4Low; // Servosignal an J4 anlegen |
if(index == 7) J5High; else J5Low; // Servosignal an J5 anlegen |
} |
if(index < 20) index++; |
else |
if(index == 20) |
{ |
unsigned char i; |
ROT_ON; |
index = 30; |
for(i=0;i<11;i++) // restore from older data |
{ |
PPM_in[i] = old_ppm_in[i]; |
PPM_diff[i] = 0; |
// okay_cnt /= 2; |
} |
} |
} |
DebugOut.Analog[16] = okay_cnt; |
DebugOut.Analog[17] = PPM_in[2]; |
} |
/* |
//############################################################################ |
//Diese Routine startet und inizialisiert den Timer für RC |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int AltICR=0; |
signed int signal = 0,tmp; |
static int index; |
signal = (unsigned int) ICR1 - AltICR; |
DebugOut.Analog[16] = signal; |
signal /= 2; |
AltICR = ICR1; |
//Syncronisationspause? |
if((signal > 1100*2) && (signal < 8000*2)) |
{ |
if(index >= 4) NewPpmData = 0; // Null bedeutet: Neue Daten |
index = 1; |
} |
else |
{ |
if(index < 10) |
{ |
if((signal > 250) && (signal < 687*2)) |
{ |
signal -= 962; |
// Stabiles Signal |
if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10;} |
tmp = (3 * (PPM_in[index]) + signal) / 4; |
if(tmp > signal+1) tmp--; else |
if(tmp < signal-1) tmp++; |
if(SenderOkay >= 195) PPM_diff[index] = ((tmp - PPM_in[index]) / 3) * 3; |
else PPM_diff[index] = 0; |
PPM_in[index] = tmp; |
} |
index++; |
if(index == 5) J3High; else J3Low; // Servosignal an J3 anlegen |
if(index == 2) J4High; else J4Low; // Servosignal an J4 anlegen |
if(index == 7) J5High; else J5Low; // Servosignal an J5 anlegen |
} |
} |
} |
*/ |
/beta/FC_075i_MartinR/rc.h |
---|
0,0 → 1,31 |
/*####################################################################################### |
Derkodieren eines RC Summen Signals |
#######################################################################################*/ |
#ifndef _RC_H |
#define _RC_H |
#if defined (__AVR_ATmega32__) |
#define TIMER_TEILER CK64 |
#define TIMER_RELOAD_VALUE 250 |
#endif |
#if defined (__AVR_ATmega644__) |
#define TIMER_RELOAD_VALUE 250 |
#endif |
#if defined (__AVR_ATmega644P__) |
#define TIMER_RELOAD_VALUE 250 |
#endif |
#define GAS PPM_in[2] |
extern void rc_sum_init (void); |
extern volatile int PPM_in[11]; |
extern volatile int PPM_diff[11]; // das diffenzierte Stick-Signal |
extern volatile unsigned char NewPpmData; |
extern volatile char Channels,tmpChannels; |
#endif //_RC_H |
/beta/FC_075i_MartinR/spi.c |
---|
0,0 → 1,301 |
// ######################## SPI - FlightCtrl ################### |
#include "main.h" |
//struct str_ToNaviCtrl_Version ToNaviCtrl_Version; |
//struct str_FromNaviCtrl_Version FromNaviCtrl_Version; |
struct str_ToNaviCtrl ToNaviCtrl; |
struct str_FromNaviCtrl FromNaviCtrl; |
struct str_FromNaviCtrl_Value FromNaviCtrl_Value; |
struct str_SPI_VersionInfo SPI_VersionInfo; |
unsigned char SPI_BufferIndex; |
unsigned char SPI_RxBufferIndex; |
volatile unsigned char SPI_Buffer[sizeof(FromNaviCtrl)]; |
unsigned char *SPI_TX_Buffer; |
unsigned char SPITransferCompleted, SPI_ChkSum; |
unsigned char SPI_RxDataValid,NaviDataOkay = 0; |
unsigned char SPI_CommandSequence[] = { SPI_CMD_USER, SPI_CMD_STICK, SPI_CMD_PARAMETER1, SPI_CMD_STICK, SPI_CMD_MISC, SPI_CMD_VERSION, SPI_CMD_SERVOS }; |
unsigned char SPI_CommandCounter = 0; |
#ifdef USE_SPI_COMMUNICATION |
//------------------------------------------------------ |
void SPI_MasterInit(void) |
{ |
DDR_SPI |= (1<<DD_MOSI)|(1<<DD_SCK); // Set MOSI and SCK output, all others input |
SLAVE_SELECT_DDR_PORT |= (1 << SPI_SLAVE_SELECT); |
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR1)|(0<<SPR0)|(0<<SPIE); // Enable SPI, Master, set clock rate fck/64 |
SPSR = 0;//(1<<SPI2X); |
SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); |
SPITransferCompleted = 1; |
//SPDR = 0x00; // dummy write |
ToNaviCtrl.Sync1 = 0xAA; |
ToNaviCtrl.Sync2 = 0x83; |
ToNaviCtrl.Command = SPI_CMD_USER; |
ToNaviCtrl.IntegralNick = 0; |
ToNaviCtrl.IntegralRoll = 0; |
FromNaviCtrl_Value.SerialDataOkay = 0; |
SPI_RxDataValid = 0; |
SPI_VersionInfo.Major = VERSION_MAJOR; |
SPI_VersionInfo.Minor = VERSION_MINOR; |
SPI_VersionInfo.Patch = VERSION_PATCH; |
SPI_VersionInfo.Compatible = NC_SPI_COMPATIBLE; |
} |
//------------------------------------------------------ |
void SPI_StartTransmitPacket(void) |
{ |
//if ((SLAVE_SELECT_PORT & (1 << SPI_SLAVE_SELECT)) == 0) return; // transfer of prev. packet not completed |
if (!SPITransferCompleted) return; |
// _delay_us(30); |
SLAVE_SELECT_PORT &= ~(1 << SPI_SLAVE_SELECT); // SelectSlave |
SPI_TX_Buffer = (unsigned char *) &ToNaviCtrl; |
ToNaviCtrl.Command = SPI_CommandSequence[SPI_CommandCounter++]; |
if (SPI_CommandCounter >= sizeof(SPI_CommandSequence)) SPI_CommandCounter = 0; |
SPITransferCompleted = 0; |
UpdateSPI_Buffer(); // update buffer |
SPI_BufferIndex = 1; |
//ebugOut.Analog[16]++; |
// -- Debug-Output --- |
//---- |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
ToNaviCtrl.Chksum = ToNaviCtrl.Sync1; |
SPDR = ToNaviCtrl.Sync1; // Start transmission |
// SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // DeselectSlave |
} |
//------------------------------------------------------ |
//SIGNAL(SIG_SPI) |
void SPI_TransmitByte(void) |
{ |
static unsigned char SPI_RXState = 0; |
unsigned char rxdata; |
static unsigned char rxchksum; |
if (SPITransferCompleted) return; |
if (!(SPSR & (1 << SPIF))) return; |
SendSPI = 4; |
// _delay_us(30); |
SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // DeselectSlave |
rxdata = SPDR; |
switch ( SPI_RXState) |
{ |
case 0: |
SPI_RxBufferIndex = 0; |
//DebugOut.Analog[17]++; |
rxchksum = rxdata; |
if (rxdata == 0x81 ) { SPI_RXState = 1; } // 1. Syncbyte ok |
break; |
case 1: |
if (rxdata == 0x55) { rxchksum += rxdata; SPI_RXState = 2; } // 2. Syncbyte ok |
else SPI_RXState = 0; |
//DebugOut.Analog[18]++; |
break; |
case 2: |
SPI_Buffer[SPI_RxBufferIndex++]= rxdata; // get data |
//DebugOut.Analog[19]++; |
if (SPI_RxBufferIndex >= sizeof(FromNaviCtrl)) |
{ |
if (rxdata == rxchksum) |
{ |
unsigned char *ptr = (unsigned char *)&FromNaviCtrl; |
memcpy(ptr, (unsigned char *) SPI_Buffer, sizeof(SPI_Buffer)); |
SPI_RxDataValid = 1; |
} |
else SPI_RxDataValid = 0; |
SPI_RXState = 0; |
} |
else rxchksum += rxdata; |
break; |
} |
if (SPI_BufferIndex < sizeof(ToNaviCtrl)) |
{ |
SLAVE_SELECT_PORT &= ~(1 << SPI_SLAVE_SELECT); // SelectSlave |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
SPDR = SPI_TX_Buffer[SPI_BufferIndex]; |
ToNaviCtrl.Chksum += SPI_TX_Buffer[SPI_BufferIndex]; |
// SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // DeselectSlave |
} |
else SPITransferCompleted = 1; |
SPI_BufferIndex++; |
} |
//------------------------------------------------------ |
void UpdateSPI_Buffer(void) |
{ |
signed int tmp; |
// cli(); // MartinR: Interrupt wird zu lange abgeschaltet (130us). Daher deaktiviert |
ToNaviCtrl.IntegralNick = (int) (IntegralNick / (long)(EE_Parameter.GyroAccFaktor * 4)); |
ToNaviCtrl.IntegralRoll = (int) (IntegralRoll / (long)(EE_Parameter.GyroAccFaktor * 4)); |
ToNaviCtrl.GyroCompass = (10 * ErsatzKompass) / GIER_GRAD_FAKTOR; |
ToNaviCtrl.AccNick = ((int) ACC_AMPLIFY * (NaviAccNick / NaviCntAcc))/4; |
ToNaviCtrl.AccRoll = ((int) ACC_AMPLIFY * (NaviAccRoll / NaviCntAcc))/4; |
NaviCntAcc = 0; NaviAccNick = 0; NaviAccRoll = 0; |
// ToNaviCtrl.User8 = Parameter_UserParam8; |
// ToNaviCtrl.CalState = WinkelOut.CalcState; |
switch(ToNaviCtrl.Command) // |
{ |
case SPI_CMD_USER: |
ToNaviCtrl.Param.Byte[0] = Parameter_UserParam1; |
ToNaviCtrl.Param.Byte[1] = Parameter_UserParam2; |
ToNaviCtrl.Param.Byte[2] = Parameter_UserParam3; |
ToNaviCtrl.Param.Byte[3] = Parameter_UserParam4; |
ToNaviCtrl.Param.Byte[4] = Parameter_UserParam5; |
ToNaviCtrl.Param.Byte[5] = Parameter_UserParam6; |
ToNaviCtrl.Param.Byte[6] = Parameter_UserParam7; |
ToNaviCtrl.Param.Byte[7] = Parameter_UserParam8; |
ToNaviCtrl.Param.Byte[8] = (unsigned char) MikroKopterFlags; |
MikroKopterFlags &= ~(FLAG_CALIBRATE | FLAG_START); |
ToNaviCtrl.Param.Byte[9] = (unsigned char) UBat; |
ToNaviCtrl.Param.Byte[10] =(unsigned char) BattLowVoltageWarning; |
ToNaviCtrl.Param.Byte[11] =(unsigned char) eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET]); |
break; |
case SPI_CMD_PARAMETER1: |
ToNaviCtrl.Param.Byte[0] = EE_Parameter.NaviGpsModeControl; // Parameters for the Naviboard |
ToNaviCtrl.Param.Byte[1] = EE_Parameter.NaviGpsGain; |
ToNaviCtrl.Param.Byte[2] = EE_Parameter.NaviGpsP; |
ToNaviCtrl.Param.Byte[3] = EE_Parameter.NaviGpsI; |
ToNaviCtrl.Param.Byte[4] = EE_Parameter.NaviGpsD; |
ToNaviCtrl.Param.Byte[5] = EE_Parameter.NaviGpsACC; |
ToNaviCtrl.Param.Byte[6] = EE_Parameter.NaviGpsMinSat; |
ToNaviCtrl.Param.Byte[7] = EE_Parameter.NaviStickThreshold; |
ToNaviCtrl.Param.Byte[8] = EE_Parameter.NaviOperatingRadius; |
ToNaviCtrl.Param.Byte[9] = EE_Parameter.NaviWindCorrection; |
ToNaviCtrl.Param.Byte[10] = EE_Parameter.NaviSpeedCompensation; |
ToNaviCtrl.Param.Byte[11] = EE_Parameter.NaviAngleLimitation; |
break; |
case SPI_CMD_STICK: |
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127; |
ToNaviCtrl.Param.Byte[0] = (char) tmp; |
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127; |
ToNaviCtrl.Param.Byte[1] = (char) tmp; |
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127; |
ToNaviCtrl.Param.Byte[2] = (char) tmp; |
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_NICK]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127; |
ToNaviCtrl.Param.Byte[3] = (char) tmp; |
ToNaviCtrl.Param.Byte[4] = (unsigned char) Poti1; |
ToNaviCtrl.Param.Byte[5] = (unsigned char) Poti2; |
ToNaviCtrl.Param.Byte[6] = (unsigned char) Poti3; |
ToNaviCtrl.Param.Byte[7] = (unsigned char) Poti4; |
ToNaviCtrl.Param.Byte[8] = (unsigned char) SenderOkay; |
ToNaviCtrl.Param.Byte[9] = (unsigned char) SenderRSSI; |
break; |
case SPI_CMD_MISC: |
if(WinkelOut.CalcState > 5) |
{ |
WinkelOut.CalcState = 0; |
ToNaviCtrl.Param.Byte[0] = 5; |
} |
else ToNaviCtrl.Param.Byte[0] = WinkelOut.CalcState; |
//ToNaviCtrl.Param.Int[1] = (int)(HoehenWert/5); // MartinR: so war es |
ToNaviCtrl.Param.Int[1] = (int)(HoehenWert); // MartinR: wegen Änderungen in der analog.c |
ToNaviCtrl.Param.Byte[1] = EE_Parameter.NaviPH_LoginTime; |
ToNaviCtrl.Param.Byte[4] = EE_Parameter.NaviGpsPLimit; |
ToNaviCtrl.Param.Byte[5] = EE_Parameter.NaviGpsILimit; |
ToNaviCtrl.Param.Byte[6] = EE_Parameter.NaviGpsDLimit; |
break; |
case SPI_CMD_VERSION: |
ToNaviCtrl.Param.Byte[0] = SPI_VersionInfo.Major; |
ToNaviCtrl.Param.Byte[1] = SPI_VersionInfo.Minor; |
ToNaviCtrl.Param.Byte[2] = SPI_VersionInfo.Patch; |
ToNaviCtrl.Param.Byte[3] = SPI_VersionInfo.Compatible; |
ToNaviCtrl.Param.Byte[4] = PlatinenVersion; |
break; |
case SPI_CMD_SERVOS: |
ToNaviCtrl.Param.Byte[0] = EE_Parameter.ServoNickRefresh; // Parameters for the Servo Control |
ToNaviCtrl.Param.Byte[1] = EE_Parameter.ServoCompInvert; |
ToNaviCtrl.Param.Byte[2] = Parameter_ServoNickControl; |
ToNaviCtrl.Param.Byte[3] = EE_Parameter.ServoNickComp; |
ToNaviCtrl.Param.Byte[4] = EE_Parameter.ServoNickMin; |
ToNaviCtrl.Param.Byte[5] = EE_Parameter.ServoNickMax; |
ToNaviCtrl.Param.Byte[6] = Parameter_ServoRollControl; |
ToNaviCtrl.Param.Byte[7] = EE_Parameter.ServoRollComp; |
ToNaviCtrl.Param.Byte[8] = EE_Parameter.ServoRollMin; |
ToNaviCtrl.Param.Byte[9] = EE_Parameter.ServoRollMax; |
break; |
} |
//sei(); // MartinR: Interrupt wird zu lange abgeschaltet (130us). Daher deaktiviert |
if(SPI_RxDataValid) |
{ |
if(abs(FromNaviCtrl.GPS_Nick) < 512 && abs(FromNaviCtrl.GPS_Roll) < 512 && (EE_Parameter.GlobalConfig & CFG_GPS_AKTIV)) |
{ |
GPS_Nick = FromNaviCtrl.GPS_Nick; |
GPS_Roll = FromNaviCtrl.GPS_Roll; |
NaviDataOkay = 250; |
} |
if(FromNaviCtrl.CompassValue <= 360) KompassValue = FromNaviCtrl.CompassValue; |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
if(FromNaviCtrl.BeepTime > beeptime && !WinkelOut.CalcState) beeptime = FromNaviCtrl.BeepTime; |
switch (FromNaviCtrl.Command) |
{ |
case SPI_KALMAN: |
FromNaviCtrl_Value.Kalman_K = FromNaviCtrl.Param.sByte[0]; |
FromNaviCtrl_Value.Kalman_MaxFusion = FromNaviCtrl.Param.sByte[1]; |
FromNaviCtrl_Value.Kalman_MaxDrift = FromNaviCtrl.Param.sByte[2]; |
FromNaviCtrl_Value.SerialDataOkay = FromNaviCtrl.Param.Byte[3]; |
FromNaviCtrl_Value.GpsZ = FromNaviCtrl.Param.Byte[4]; |
break; |
default: |
break; |
} |
} |
else |
{ |
// KompassValue = 0; |
// KompassRichtung = 0; |
GPS_Nick = 0; |
GPS_Roll = 0; |
} |
} |
#endif |
/beta/FC_075i_MartinR/spi.h |
---|
0,0 → 1,144 |
// ######################## SPI - FlightCtrl ################### |
#ifndef _SPI_H |
#define _SPI_H |
#include <util/delay.h> |
#define USE_SPI_COMMUNICATION |
//----------------------------------------- |
#define DDR_SPI DDRB |
#define DD_SS PB4 |
#define DD_SCK PB7 |
#define DD_MOSI PB5 |
#define DD_MISO PB6 |
// for compatibility reasons gcc3.x <-> gcc4.x |
#ifndef SPCR |
#define SPCR SPCR0 |
#endif |
#ifndef SPE |
#define SPE SPE0 |
#endif |
#ifndef MSTR |
#define MSTR MSTR0 |
#endif |
#ifndef SPR1 |
#define SPR1 SPR01 |
#endif |
#ifndef SPR0 |
#define SPR0 SPR00 |
#endif |
#ifndef SPIE |
#define SPIE SPIE0 |
#endif |
#ifndef SPDR |
#define SPDR SPDR0 |
#endif |
#ifndef SPIF |
#define SPIF SPIF0 |
#endif |
#ifndef SPSR |
#define SPSR SPSR0 |
#endif |
// ------------------------- |
#define SLAVE_SELECT_DDR_PORT DDRC |
#define SLAVE_SELECT_PORT PORTC |
#define SPI_SLAVE_SELECT PC5 |
#define SPI_CMD_USER 10 |
#define SPI_CMD_STICK 11 |
#define SPI_CMD_MISC 12 |
#define SPI_CMD_PARAMETER1 13 |
#define SPI_CMD_VERSION 14 |
#define SPI_CMD_SERVOS 15 |
struct str_ToNaviCtrl |
{ |
unsigned char Sync1, Sync2; |
unsigned char Command; |
signed int IntegralNick; |
signed int IntegralRoll; |
signed int AccNick; |
signed int AccRoll; |
signed int GyroCompass; |
signed int GyroNick; |
signed int GyroRoll; |
signed int GyroGier; |
union |
{ |
char sByte[12]; |
unsigned char Byte[12]; |
int Int[6]; |
long Long[3]; |
float Float[3]; |
} Param; |
unsigned char Chksum; |
}; |
#define SPI_KALMAN 103 |
struct str_FromNaviCtrl |
{ |
unsigned char Command; |
signed int GPS_Nick; |
signed int GPS_Roll; |
signed int GPS_Gier; |
signed int CompassValue; |
signed int Status; |
unsigned int BeepTime; |
union |
{ |
char sByte[12]; |
unsigned char Byte[12]; |
int Int[6]; |
long Long[3]; |
float Float[3]; |
} Param; |
unsigned char Chksum; |
}; |
struct str_FromNaviCtrl_Value |
{ |
signed char Kalman_K; |
signed char Kalman_MaxDrift; |
signed char Kalman_MaxFusion; |
unsigned char SerialDataOkay; |
signed char GpsZ; |
}; |
struct str_SPI_VersionInfo |
{ |
unsigned char Major; |
unsigned char Minor; |
unsigned char Patch; |
unsigned char Compatible; |
}; |
#ifdef USE_SPI_COMMUNICATION |
extern struct str_FromNaviCtrl_Value FromNaviCtrl_Value; |
extern struct str_ToNaviCtrl ToNaviCtrl; |
extern struct str_FromNaviCtrl FromNaviCtrl; |
extern unsigned char SPI_CommandCounter,NaviDataOkay; |
//#define SPI_CMD_VALUE 0x03 |
extern void SPI_MasterInit(void); |
extern void SPI_StartTransmitPacket(void); |
extern void UpdateSPI_Buffer(void); |
extern void SPI_TransmitByte(void); |
#else |
// -------------------------------- Dummy ----------------------------------------- |
#define SPI_MasterInit() ; |
#define SPI_StartTransmitPacket() ; |
#define UpdateSPI_Buffer() ; |
#define SPI_TransmitByte() ; |
#endif |
#endif |
/beta/FC_075i_MartinR/timer0.c |
---|
0,0 → 1,402 |
#include "main.h" |
volatile unsigned int CountMilliseconds = 0; |
volatile static unsigned int tim_main; |
volatile unsigned char UpdateMotor = 0; |
volatile unsigned int cntKompass = 0; |
volatile unsigned int beeptime = 0; |
volatile unsigned char SendSPI = 0, ServoActive = 0; |
unsigned int BeepMuster = 0xffff; |
int ServoValue = 0; |
volatile int16_t ServoNickValue = 0; |
volatile int16_t ServoRollValue = 0; |
enum { |
STOP = 0, |
CK = 1, |
CK8 = 2, |
CK64 = 3, |
CK256 = 4, |
CK1024 = 5, |
T0_FALLING_EDGE = 6, |
T0_RISING_EDGE = 7 |
}; |
SIGNAL (SIG_OVERFLOW0) // 8kHz |
{ |
static unsigned char cnt_1ms = 1,cnt = 0; |
unsigned char pieper_ein = 0; |
// TCNT0 -= 250;//TIMER_RELOAD_VALUE; |
if(SendSPI) SendSPI--; |
if(!cnt--) |
{ |
cnt = 9; |
cnt_1ms++; |
cnt_1ms %= 2; |
if(!cnt_1ms) UpdateMotor = 1; |
CountMilliseconds++; |
} |
if(beeptime >= 1) |
{ |
beeptime--; |
if(beeptime & BeepMuster) |
{ |
pieper_ein = 1; |
} |
else pieper_ein = 0; |
} |
else |
{ |
pieper_ein = 0; |
BeepMuster = 0xffff; |
} |
if(pieper_ein) |
{ |
if(PlatinenVersion == 10) PORTD |= (1<<2); // Speaker an PORTD.2 |
else PORTC |= (1<<7); // Speaker an PORTC.7 |
} |
else |
{ |
if(PlatinenVersion == 10) PORTD &= ~(1<<2); |
else PORTC &= ~(1<<7); |
} |
if(EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV) |
{ |
if(PINC & 0x10) |
{ |
cntKompass++; |
} |
else |
{ |
if((cntKompass) && (cntKompass < 362)) |
{ |
cntKompass += cntKompass / 41; |
if(cntKompass > 10) KompassValue = cntKompass - 10; else KompassValue = 0; |
} |
// if(cntKompass < 10) cntKompass = 10; |
// KompassValue = (unsigned long)((unsigned long)(cntKompass-10)*720L + 1L) / 703L; |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
cntKompass = 0; |
} |
} |
} |
// ----------------------------------------------------------------------- |
unsigned int SetDelay (unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(CountMilliseconds + t + 1); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
char CheckDelay(unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(((t - CountMilliseconds) & 0x8000) >> 9); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
} |
void Delay_ms_Mess(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)) if(AdReady) {AdReady = 0; ANALOG_ON;} |
} |
/*****************************************************/ |
/* Initialize Timer 2 */ |
/*****************************************************/ |
// The timer 2 is used to generate the PWM at PD7 (J7) |
// to control a camera servo for nick compensation. |
void TIMER2_Init(void) |
{ |
uint8_t sreg = SREG; |
// disable all interrupts before reconfiguration |
cli(); |
PORTD &= ~(1<<PORTD7); // set PD7 to low |
DDRC |= (1<<DDC6); // set PC6 as output (Reset for HEF4017) |
HEF4017R_ON; |
// Timer/Counter 2 Control Register A |
// Timer Mode is FastPWM with timer reload at OCR2A (Bits: WGM22 = 1, WGM21 = 1, WGM20 = 1) |
// PD7: Normal port operation, OC2A disconnected, (Bits: COM2A1 = 0, COM2A0 = 0) |
// PD6: Normal port operation, OC2B disconnected, (Bits: COM2B1 = 0, COM2B0 = 0) |
TCCR2A &= ~((1<<COM2A1)|(1<<COM2A0)|(1<<COM2B1)|(1<<COM2B0)); |
TCCR2A |= (1<<WGM21)|(1<<WGM20); |
// Timer/Counter 2 Control Register B |
// Set clock divider for timer 2 to SYSKLOCK/32 = 20MHz / 32 = 625 kHz |
// The timer increments from 0x00 to 0xFF with an update rate of 625 kHz or 1.6 us |
// hence the timer overflow interrupt frequency is 625 kHz / 256 = 2.44 kHz or 0.4096 ms |
// divider 32 (Bits: CS022 = 0, CS21 = 1, CS20 = 1) |
TCCR2B &= ~((1<<FOC2A)|(1<<FOC2B)|(1<<CS22)); |
TCCR2B |= (1<<CS21)|(1<<CS20)|(1<<WGM22); |
// Initialize the Timer/Counter 2 Register |
TCNT2 = 0; |
// Initialize the Output Compare Register A used for PWM generation on port PD7. |
OCR2A = 255; |
TCCR2A |= (1<<COM2A1); // set or clear at compare match depends on value of COM2A0 |
// Timer/Counter 2 Interrupt Mask Register |
// Enable timer output compare match A Interrupt only |
TIMSK2 &= ~((1<<OCIE2B)|(1<<TOIE2)); |
TIMSK2 |= (1<<OCIE2A); |
SREG = sreg; |
} |
//---------------------------- |
void Timer_Init(void) |
{ |
tim_main = SetDelay(10); |
TCCR0B = CK8; |
TCCR0A = (1<<COM0A1)|(1<<COM0B1)|3;//fast PWM |
OCR0A = 0; |
OCR0B = 120; |
TCNT0 = (unsigned char)-TIMER_RELOAD_VALUE; // reload |
//OCR1 = 0x00; |
TIMSK0 |= _BV(TOIE0); |
} |
/*****************************************************/ |
/* Control Servo Position */ |
/*****************************************************/ |
ISR(TIMER2_COMPA_vect) |
{ |
// frame len 22.5 ms = 14063 * 1.6 us |
// stop pulse: 0.3 ms = 188 * 1.6 us |
// min servo pulse: 0.6 ms = 375 * 1.6 us |
// max servo pulse: 2.4 ms = 1500 * 1.6 us |
// resolution: 1500 - 375 = 1125 steps |
#define IRS_RUNTIME 127 |
#define PPM_STOPPULSE 188 |
// #define PPM_FRAMELEN (14063 |
#define PPM_FRAMELEN (1757 * EE_Parameter.ServoNickRefresh) |
#define MINSERVOPULSE 375 |
#define MAXSERVOPULSE 1500 |
#define SERVORANGE (MAXSERVOPULSE - MINSERVOPULSE) |
static uint8_t PulseOutput = 0; |
static uint16_t RemainingPulse = 0; |
static uint16_t ServoFrameTime = 0; |
static uint8_t ServoIndex = 0; |
#define MULTIPLYER 4 |
static int16_t ServoNickOffset = (255 / 2) * MULTIPLYER; // initial value near center positon |
static int16_t ServoRollOffset = (255 / 2) * MULTIPLYER; // initial value near center positon |
if(PlatinenVersion < 20) |
{ |
//--------------------------- |
// Nick servo state machine |
//--------------------------- |
if(!PulseOutput) // pulse output complete |
{ |
if(TCCR2A & (1<<COM2A0)) // we had a low pulse |
{ |
TCCR2A &= ~(1<<COM2A0);// make a high pulse |
RemainingPulse = MINSERVOPULSE + SERVORANGE/2; // center position ~ 1.5ms |
ServoNickOffset = (ServoNickOffset * 3 + (int16_t)Parameter_ServoNickControl * MULTIPLYER) / 4; // lowpass offset |
ServoNickValue = ServoNickOffset; // offset (Range from 0 to 255 * 3 = 765) |
if(EE_Parameter.ServoCompInvert & 0x01) |
{ // inverting movement of servo |
ServoNickValue += (int16_t)( ( (int32_t)EE_Parameter.ServoNickComp * MULTIPLYER * (IntegralNick / 128L ) ) / (256L) ); |
} |
else |
{ // non inverting movement of servo |
ServoNickValue -= (int16_t)( ( (int32_t)EE_Parameter.ServoNickComp * MULTIPLYER * (IntegralNick / 128L ) ) / (256L) ); |
} |
// limit servo value to its parameter range definition |
if(ServoNickValue < ((int16_t)EE_Parameter.ServoNickMin * MULTIPLYER) ) |
{ |
ServoNickValue = (int16_t)EE_Parameter.ServoNickMin * MULTIPLYER; |
} |
else |
if(ServoNickValue > ((int16_t)EE_Parameter.ServoNickMax * MULTIPLYER) ) |
{ |
ServoNickValue = (int16_t)EE_Parameter.ServoNickMax * MULTIPLYER; |
} |
RemainingPulse += ServoNickValue - (256 / 2) * MULTIPLYER; // shift ServoNickValue to center position |
ServoNickValue /= MULTIPLYER; |
DebugOut.Analog[20] = ServoNickValue; |
// range servo pulse width |
if(RemainingPulse > MAXSERVOPULSE ) RemainingPulse = MAXSERVOPULSE; // upper servo pulse limit |
else if(RemainingPulse < MINSERVOPULSE ) RemainingPulse = MINSERVOPULSE; // lower servo pulse limit |
// accumulate time for correct update rate |
ServoFrameTime = RemainingPulse; |
} |
else // we had a high pulse |
{ |
TCCR2A |= (1<<COM2A0); // make a low pulse |
RemainingPulse = PPM_FRAMELEN - ServoFrameTime; |
} |
// set pulse output active |
PulseOutput = 1; |
} |
} // EOF Nick servo state machine |
else |
{ |
//----------------------------------------------------- |
// PPM state machine, onboard demultiplexed by HEF4017 |
//----------------------------------------------------- |
if(!PulseOutput) // pulse output complete |
{ |
if(TCCR2A & (1<<COM2A0)) // we had a low pulse |
{ |
TCCR2A &= ~(1<<COM2A0);// make a high pulse |
if(ServoIndex == 0) // if we are at the sync gap |
{ |
RemainingPulse = PPM_FRAMELEN - ServoFrameTime; // generate sync gap by filling time to full frame time |
ServoFrameTime = 0; // reset servo frame time |
HEF4017R_ON; // enable HEF4017 reset |
} |
else // servo channels |
{ |
RemainingPulse = MINSERVOPULSE + SERVORANGE/2; // center position ~ 1.5ms |
switch(ServoIndex) // map servo channels |
{ |
case 1: // Nick Compensation Servo |
ServoNickOffset = (ServoNickOffset * 3 + (int16_t)Parameter_ServoNickControl * MULTIPLYER) / 4; // lowpass offset |
ServoNickValue = ServoNickOffset; // offset (Range from 0 to 255 * 3 = 765) |
if(EE_Parameter.ServoCompInvert & 0x01) |
{ // inverting movement of servo |
ServoNickValue += (int16_t)( ( (int32_t)EE_Parameter.ServoNickComp * MULTIPLYER * (IntegralNick / 128L ) ) / (256L) ); |
} |
else |
{ // non inverting movement of servo |
ServoNickValue -= (int16_t)( ( (int32_t)EE_Parameter.ServoNickComp * MULTIPLYER * (IntegralNick / 128L ) ) / (256L) ); |
} |
// limit servo value to its parameter range definition |
if(ServoNickValue < ((int16_t)EE_Parameter.ServoNickMin * MULTIPLYER) ) |
{ |
ServoNickValue = (int16_t)EE_Parameter.ServoNickMin * MULTIPLYER; |
} |
else |
if(ServoNickValue > ((int16_t)EE_Parameter.ServoNickMax * MULTIPLYER) ) |
{ |
ServoNickValue = (int16_t)EE_Parameter.ServoNickMax * MULTIPLYER; |
} |
RemainingPulse += ServoNickValue - (256 / 2) * MULTIPLYER; // shift ServoNickValue to center position |
ServoNickValue /= MULTIPLYER; |
DebugOut.Analog[20] = ServoNickValue; |
break; |
case 2: // Roll Compensation Servo |
ServoRollOffset = (ServoRollOffset * 3 + (int16_t) Parameter_ServoRollControl * MULTIPLYER) / 4; // lowpass offset |
ServoRollValue = ServoRollOffset; // offset (Range from 0 to 255 * 3 = 765) |
if(EE_Parameter.ServoCompInvert & 0x02) |
{ // inverting movement of servo |
ServoRollValue += (int16_t)( ( (int32_t) EE_Parameter.ServoRollComp * MULTIPLYER * (IntegralRoll / 128L ) ) / (256L) ); |
} |
else |
{ // non inverting movement of servo |
ServoRollValue -= (int16_t)( ( (int32_t) EE_Parameter.ServoRollComp * MULTIPLYER * (IntegralRoll / 128L ) ) / (256L) ); |
} |
// limit servo value to its parameter range definition |
if(ServoRollValue < ((int16_t)EE_Parameter.ServoRollMin * MULTIPLYER) ) |
{ |
ServoRollValue = (int16_t)EE_Parameter.ServoRollMin * MULTIPLYER; |
} |
else |
if(ServoRollValue > ((int16_t)EE_Parameter.ServoRollMax * MULTIPLYER) ) |
{ |
ServoRollValue = (int16_t)EE_Parameter.ServoRollMax * MULTIPLYER; |
} |
RemainingPulse += ServoRollValue - (256 / 2) * MULTIPLYER; // shift ServoNickValue to center position |
ServoRollValue /= MULTIPLYER; |
//DebugOut.Analog[20] = ServoRollValue; |
break; |
default: // other servo channels |
RemainingPulse += 2 * PPM_in[ServoIndex]; // add channel value, factor of 2 because timer 1 increments 3.2µs |
break; |
} |
// range servo pulse width |
if(RemainingPulse > MAXSERVOPULSE ) RemainingPulse = MAXSERVOPULSE; // upper servo pulse limit |
else if(RemainingPulse < MINSERVOPULSE ) RemainingPulse = MINSERVOPULSE; // lower servo pulse limit |
// substract stop pulse width |
RemainingPulse -= PPM_STOPPULSE; |
// accumulate time for correct sync gap |
ServoFrameTime += RemainingPulse; |
} |
} |
else // we had a high pulse |
{ |
TCCR2A |= (1<<COM2A0); // make a low pulse |
// set pulsewidth to stop pulse width |
RemainingPulse = PPM_STOPPULSE; |
// accumulate time for correct sync gap |
ServoFrameTime += RemainingPulse; |
if(ServoActive && SenderOkay > 180) HEF4017R_OFF; // disable HEF4017 reset |
else HEF4017R_ON; |
ServoIndex++; // change to next servo channel |
if(ServoIndex > EE_Parameter.ServoNickRefresh) ServoIndex = 0; // reset to the sync gap |
} |
// set pulse output active |
PulseOutput = 1; |
} |
} // EOF PPM state machine |
// General pulse output generator |
if(RemainingPulse > (255 + IRS_RUNTIME)) |
{ |
OCR2A = 255; |
RemainingPulse -= 255; |
} |
else |
{ |
if(RemainingPulse > 255) // this is the 2nd last part |
{ |
if((RemainingPulse - 255) < IRS_RUNTIME) |
{ |
OCR2A = 255 - IRS_RUNTIME; |
RemainingPulse -= 255 - IRS_RUNTIME; |
} |
else // last part > ISR_RUNTIME |
{ |
OCR2A = 255; |
RemainingPulse -= 255; |
} |
} |
else // this is the last part |
{ |
OCR2A = RemainingPulse; |
RemainingPulse = 0; |
PulseOutput = 0; // trigger to stop pulse |
} |
} // EOF general pulse output generator |
} |
/beta/FC_075i_MartinR/timer0.h |
---|
0,0 → 1,20 |
#define TIMER_TEILER CK8 |
#define TIMER_RELOAD_VALUE 250 |
#define HEF4017R_ON PORTC |= (1<<PORTC6) |
#define HEF4017R_OFF PORTC &= ~(1<<PORTC6) |
void Timer_Init(void); |
void TIMER2_Init(void); |
void Delay_ms(unsigned int); |
void Delay_ms_Mess(unsigned int); |
unsigned int SetDelay (unsigned int t); |
char CheckDelay (unsigned int t); |
extern volatile unsigned int CountMilliseconds; |
extern volatile unsigned char UpdateMotor; |
extern volatile unsigned int beeptime; |
extern volatile unsigned int cntKompass; |
extern int ServoValue; |
extern unsigned int BeepMuster; |
extern volatile unsigned char SendSPI, ServoActive; |
/beta/FC_075i_MartinR/twimaster.c |
---|
0,0 → 1,216 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
volatile unsigned char twi_state = 0; |
unsigned char motor = 0; |
unsigned char motorread = 0,MissingMotor = 0; |
unsigned char motor_rx[16],motor_rx2[16]; |
unsigned char MotorPresent[MAX_MOTORS]; |
unsigned char MotorError[MAX_MOTORS]; |
//############################################################################ |
//Initzialisieren der I2C (TWI) Schnittstelle |
void i2c_init(void) |
//############################################################################ |
{ |
TWSR = 0; |
TWBR = ((SYSCLK/SCL_CLOCK)-16)/2; |
} |
//############################################################################ |
//Start I2C |
void i2c_start(void) |
//############################################################################ |
{ |
TWCR = (1<<TWSTA) | (1<<TWEN) | (1<<TWINT) | (1<<TWIE); |
} |
//############################################################################ |
void i2c_stop(void) |
//############################################################################ |
{ |
TWCR = (1<<TWEN) | (1<<TWSTO) | (1<<TWINT); |
} |
void i2c_reset(void) |
//############################################################################ |
{ |
i2c_stop(); |
twi_state = 0; |
motor = TWDR; |
motor = 0; |
TWCR = 0x80; |
TWAMR = 0; |
TWAR = 0; |
TWDR = 0; |
TWSR = 0; |
TWBR = 0; |
i2c_init(); |
i2c_start(); |
i2c_write_byte(0); |
} |
//############################################################################ |
void i2c_write_byte(char byte) |
//############################################################################ |
{ |
TWSR = 0x00; |
TWDR = byte; |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE); |
} |
/****************************************/ |
/* Write to I2C */ |
/****************************************/ |
void I2C_WriteByte(int8_t byte) |
{ |
// move byte to send into TWI Data Register |
TWDR = byte; |
// clear interrupt flag (TWINT = 1) |
// enable i2c bus (TWEN = 1) |
// enable interrupt (TWIE = 1) |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE); |
} |
/****************************************/ |
/* Receive byte and send ACK */ |
/****************************************/ |
void I2C_ReceiveByte(void) |
{ |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA); |
} |
/****************************************/ |
/* I2C receive last byte and send no ACK*/ |
/****************************************/ |
void I2C_ReceiveLastByte(void) |
{ |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE); |
} |
//############################################################################ |
SIGNAL (TWI_vect) |
//############################################################################ |
{ |
static unsigned char missing_motor; |
switch(twi_state++) |
{ |
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Writing the Data |
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
case 0: |
while(Mixer.Motor[motor][0] <= 0 && motor < MAX_MOTORS) motor++; // skip if not used |
if(motor == MAX_MOTORS) // writing finished -> now read |
{ |
motor = 0; |
twi_state = 3; |
i2c_write_byte(0x53+(motorread*2)); |
} |
else i2c_write_byte(0x52+(motor*2)); |
break; |
case 1: |
i2c_write_byte(Motor[motor++]); |
break; |
case 2: |
if(TWSR == 0x30) { if(!missing_motor) missing_motor = motor; if(++MotorError[motor-1] == 0) MotorError[motor-1] = 255;} |
i2c_stop(); |
I2CTimeout = 10; |
twi_state = 0; |
i2c_start(); |
break; |
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Reading Data |
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
case 3: |
//Transmit 1st byte for reading |
if(TWSR != 0x40) // Error? |
{ |
MotorPresent[motorread] = 0; |
motorread++; |
if(motorread >= MAX_MOTORS) motorread = 0; |
i2c_stop(); |
twi_state = 0; |
} |
else |
{ |
MotorPresent[motorread] = ('1' - '-') + motorread; |
I2C_ReceiveByte(); |
} |
MissingMotor = missing_motor; |
missing_motor = 0; |
break; |
case 4: //Read 1st byte and transmit 2nd Byte |
motor_rx[motorread] = TWDR; |
I2C_ReceiveLastByte(); //nack |
break; |
case 5: |
//Read 2nd byte |
motor_rx2[motorread++] = TWDR; |
if(motorread >= MAX_MOTORS) motorread = 0; |
i2c_stop(); |
twi_state = 0; |
break; |
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// writing Gyro-Offset |
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
case 8: |
i2c_write_byte(0x98); // Address of the DAC |
break; |
case 9: |
i2c_write_byte(0x10); // Update Channel A |
break; |
case 10: |
i2c_write_byte(AnalogOffsetNick); // Value |
break; |
case 11: |
i2c_write_byte(0x80); // Value |
break; |
case 12: |
i2c_stop(); |
I2CTimeout = 10; |
i2c_start(); |
break; |
case 13: |
i2c_write_byte(0x98); // Address of the DAC |
break; |
case 14: |
i2c_write_byte(0x12); // Update Channel B |
break; |
case 15: |
i2c_write_byte(AnalogOffsetRoll); // Value |
break; |
case 16: |
i2c_write_byte(0x80); // Value |
break; |
case 17: |
i2c_stop(); |
I2CTimeout = 10; |
i2c_start(); |
break; |
case 18: |
i2c_write_byte(0x98); // Address of the DAC |
break; |
case 19: |
i2c_write_byte(0x14); // Update Channel C |
break; |
case 20: |
i2c_write_byte(AnalogOffsetGier); // Value |
break; |
case 21: |
i2c_write_byte(0x80); // Value |
break; |
case 22: |
i2c_stop(); |
I2CTimeout = 10; |
twi_state = 0; |
break; |
default: twi_state = 0; |
break; |
} |
TWCR |= 0x80; |
} |
/beta/FC_075i_MartinR/twimaster.h |
---|
0,0 → 1,35 |
/*############################################################################ |
############################################################################*/ |
#ifndef _I2C_MASTER_H |
#define _I2C_MASTER_H |
//############################################################################ |
// I2C Konstanten |
#define SCL_CLOCK 200000L |
#define I2C_TIMEOUT 30000 |
#define I2C_START 0x08 |
#define I2C_REPEATED_START 0x10 |
#define I2C_TX_SLA_ACK 0x18 |
#define I2C_TX_DATA_ACK 0x28 |
#define I2C_RX_SLA_ACK 0x40 |
#define I2C_RX_DATA_ACK 0x50 |
//############################################################################ |
extern volatile unsigned char twi_state; |
extern unsigned char motor,MissingMotor; |
extern unsigned char motorread; |
extern unsigned char motor_rx[]; |
extern unsigned char MotorPresent[]; |
extern unsigned char MotorError[]; |
void i2c_reset(void); |
extern void i2c_init (void); // I2C initialisieren |
extern void i2c_start (void); // Start I2C |
extern void i2c_stop (void); // Stop I2C |
extern void i2c_write_byte (char byte); // 1 Byte schreiben |
extern void i2c_reset(void); |
#endif |
/beta/FC_075i_MartinR/uart.c |
---|
0,0 → 1,570 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include <stdarg.h> |
#include <string.h> |
#include "main.h" |
#include "uart.h" |
#define FC_ADDRESS 1 |
#define NC_ADDRESS 2 |
#define MK3MAG_ADDRESS 3 |
unsigned char GetExternalControl = 0,DebugDisplayAnforderung1 = 0, DebugDisplayAnforderung = 0,DebugDataAnforderung = 0,GetVersionAnforderung = 0, GetPPMChannelAnforderung = 0; |
unsigned char DisplayLine = 0; |
unsigned volatile char SioTmp = 0; |
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NMEABuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char NeueKoordinateEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned volatile char CntCrcError = 0; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
unsigned char *pRxData = 0; |
unsigned char RxDataLen = 0; |
unsigned volatile char PC_DebugTimeout = 0; |
unsigned volatile char PC_MotortestActive = 0; |
unsigned char DebugTextAnforderung = 255; |
unsigned char PcZugriff = 100; |
unsigned char MotorTest[16]; |
unsigned char MeineSlaveAdresse = 1; // Flight-Ctrl |
unsigned char ConfirmFrame; |
struct str_DebugOut DebugOut; |
struct str_ExternControl ExternControl; |
struct str_VersionInfo VersionInfo; |
struct str_WinkelOut WinkelOut; |
struct str_Data3D Data3D; |
int Debug_Timer,Kompass_Timer,Timer3D; |
unsigned int DebugDataIntervall = 200, Intervall3D = 0; |
const unsigned char ANALOG_TEXT[32][16] = |
{ |
//1234567890123456 |
"AngleNick ", //0 |
"AngleRoll ", |
"AccNick ", |
"AccRoll ", |
"GyroGier ", |
"Hight Value ", //5 |
"AccZ ", |
"Gas ", |
"Compass Value ", |
"Voltage ", |
"Empfang ", //10 |
"Gyro Kompass ", |
"Motor Front ", |
"Motor Rear ", |
"Motor Left ", |
"Motor Right ", //15 |
" ", |
" ", |
"VarioMeter ", |
"MK3Mag CalState ", |
"Servo ", //20 |
" ", |
"Gps-Z ", |
"ACC-D ", |
"GPS-D ", |
"hoovergas ", //25 |
"maxhoover ", |
"Kalman_MaxDrift ", |
"minhoover ", |
"Navi Serial Data", |
"GPS_Nick ", //30 |
"GPS_Roll " |
}; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Sende-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_TX) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = SendeBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
UDR = tmp_tx; |
} |
else ptr = 0; |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung, incl. CRC-Auswertung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
SioTmp = UDR; |
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0; |
if(SioTmp == '\r' && UartState == 2) |
{ |
UartState = 0; |
crc -= RxdBuffer[buf_ptr-2]; |
crc -= RxdBuffer[buf_ptr-1]; |
crc %= 4096; |
crc1 = '=' + crc / 64; |
crc2 = '=' + crc % 64; |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; CntCrcError++;}; |
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet |
{ |
NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr + 1; |
RxdBuffer[buf_ptr] = '\r'; |
if(RxdBuffer[2] == 'R') |
{ |
wdt_enable(WDTO_250MS); // Reset-Commando |
ServoActive = 0; |
} |
} |
} |
else |
switch(UartState) |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc = SioTmp; |
break; |
case 1: // Adresse auswerten |
UartState++; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++; |
else UartState = 0; |
crc += SioTmp; |
break; |
default: |
UartState = 0; |
break; |
} |
} |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += SendeBuffer[i]; |
} |
tmpCRC %= 4096; |
SendeBuffer[i++] = '=' + tmpCRC / 64; |
SendeBuffer[i++] = '=' + tmpCRC % 64; |
SendeBuffer[i++] = '\r'; |
UebertragungAbgeschlossen = 0; |
UDR = SendeBuffer[0]; |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char address, unsigned char BufferAnzahl, ...) //unsigned char *snd, unsigned char len) |
{ |
va_list ap; |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
unsigned char *snd = 0; |
int len = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = 'a' + address; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
va_start(ap, BufferAnzahl); |
if(BufferAnzahl) |
{ |
snd = va_arg(ap, unsigned char*); |
len = va_arg(ap, int); |
ptr = 0; |
BufferAnzahl--; |
} |
while(len) |
{ |
if(len) |
{ |
a = snd[ptr++]; |
len--; |
if((!len) && BufferAnzahl) |
{ |
snd = va_arg(ap, unsigned char*); |
len = va_arg(ap, int); |
ptr = 0; |
BufferAnzahl--; |
} |
} |
else a = 0; |
if(len) |
{ |
b = snd[ptr++]; |
len--; |
if((!len) && BufferAnzahl) |
{ |
snd = va_arg(ap, unsigned char*); |
len = va_arg(ap, int); |
ptr = 0; |
BufferAnzahl--; |
} |
} |
else b = 0; |
if(len) |
{ |
c = snd[ptr++]; |
len--; |
if((!len) && BufferAnzahl) |
{ |
snd = va_arg(ap, unsigned char*); |
len = va_arg(ap, int); |
ptr = 0; |
BufferAnzahl--; |
} |
} |
else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
} |
va_end(ap); |
AddCRC(pt); |
} |
// -------------------------------------------------------------------------- |
void Decode64(void) // die daten werden im rx buffer dekodiert, das geht nur, weil aus 4 byte immer 3 gemacht werden. |
{ |
unsigned char a,b,c,d; |
unsigned char x,y,z; |
unsigned char ptrIn = 3; // start at begin of data block |
unsigned char ptrOut = 3; |
unsigned char len = AnzahlEmpfangsBytes - 6; // von der Gesamtbytezahl eines Frames gehen 3 Bytes des Headers ('#',Addr, Cmd) und 3 Bytes des Footers (CRC1, CRC2, '\r') ab. |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) RxdBuffer[ptrOut++] = x; else break; |
if(len--) RxdBuffer[ptrOut++] = y; else break; |
if(len--) RxdBuffer[ptrOut++] = z; else break; |
} |
pRxData = (unsigned char*)&RxdBuffer[3]; // decodierte Daten beginnen beim 4. Byte |
RxDataLen = ptrOut - 3; // wie viele Bytes wurden dekodiert? |
} |
// -------------------------------------------------------------------------- |
void BearbeiteRxDaten(void) |
{ |
if(!NeuerDatensatzEmpfangen) return; |
unsigned char tempchar1, tempchar2; |
Decode64(); // dekodiere datenblock im Empfangsbuffer |
switch(RxdBuffer[1]-'a') // check for Slave Address |
{ |
case FC_ADDRESS: // FC special commands |
switch(RxdBuffer[2]) |
{ |
case 'K':// Kompasswert |
memcpy((unsigned char *)&KompassValue , (unsigned char *)pRxData, sizeof(KompassValue)); |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
break; |
case 't':// Motortest |
if(AnzahlEmpfangsBytes > 20) memcpy(&MotorTest[0], (unsigned char *)pRxData, sizeof(MotorTest)); |
else memcpy(&MotorTest[0], (unsigned char *)pRxData, 4); |
PC_MotortestActive = 240; |
//while(!UebertragungAbgeschlossen); |
//SendOutData('T', MeineSlaveAdresse, 0); |
PcZugriff = 255; |
break; |
case 'n':// "Get Mixer |
while(!UebertragungAbgeschlossen); |
SendOutData('N', FC_ADDRESS, 1, (unsigned char *) &Mixer,sizeof(Mixer)); |
break; |
case 'm':// "Write Mixer |
while(!UebertragungAbgeschlossen); |
if(pRxData[0] == MIXER_REVISION) |
{ |
memcpy(&Mixer, (unsigned char *)pRxData, sizeof(Mixer)); |
eeprom_write_block(&Mixer, &EEPromArray[EEPROM_ADR_MIXER_TABLE], sizeof(Mixer)); |
tempchar1 = 1; |
} |
else tempchar1 = 0; |
SendOutData('M', FC_ADDRESS, 1, &tempchar1, sizeof(tempchar1)); |
break; |
case 'p': // get PPM Channels |
GetPPMChannelAnforderung = 1; |
break; |
case 'q':// "Get"-Anforderung für Settings |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
if(pRxData[0] == 0xFF) |
{ |
pRxData[0] = GetActiveParamSetNumber(); |
} |
// limit settings range |
if(pRxData[0] < 1) pRxData[0] = 1; // limit to 5 |
else if(pRxData[0] > 5) pRxData[0] = 5; // limit to 5 |
// load requested parameter set |
ReadParameterSet(pRxData[0], (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
while(!UebertragungAbgeschlossen); |
tempchar1 = pRxData[0]; |
tempchar2 = EE_DATENREVISION; |
SendOutData('Q', FC_ADDRESS, 3, &tempchar1, sizeof(tempchar1), &tempchar2, sizeof(tempchar2), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
break; |
case 's': // Parametersatz speichern |
if((1 <= pRxData[0]) && (pRxData[0] <= 5) && (pRxData[1] == EE_DATENREVISION)) // check for setting to be in range |
{ |
memcpy((unsigned char *) &EE_Parameter.Kanalbelegung[0], (unsigned char *)&pRxData[2], STRUCT_PARAM_LAENGE); |
WriteParameterSet(pRxData[0], (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L; |
SetActiveParamSetNumber(pRxData[0]); |
tempchar1 = GetActiveParamSetNumber(); |
LipoDetection(0); |
Piep(tempchar1,110); |
} |
else |
{ |
tempchar1 = 0; // mark in response an invlid setting |
} |
while(!UebertragungAbgeschlossen); |
SendOutData('S', FC_ADDRESS, 1, &tempchar1, sizeof(tempchar1)); |
break; |
} // case FC_ADDRESS: |
default: // any Slave Address |
switch(RxdBuffer[2]) |
{ |
// 't' comand placed here only for compatibility to BL |
case 't':// Motortest |
if(AnzahlEmpfangsBytes > 20) memcpy(&MotorTest[0], (unsigned char *)pRxData, sizeof(MotorTest)); |
else memcpy(&MotorTest[0], (unsigned char *)pRxData, 4); |
while(!UebertragungAbgeschlossen); |
SendOutData('T', MeineSlaveAdresse, 0); |
PC_MotortestActive = 250; |
PcZugriff = 255; |
break; |
// 'K' comand placed here only for compatibility to old MK3MAG software, that does not send the right Slave Address |
case 'K':// Kompasswert |
memcpy((unsigned char *)&KompassValue , (unsigned char *)pRxData, sizeof(KompassValue)); |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
break; |
case 'a':// Texte der Analogwerte |
DebugTextAnforderung = pRxData[0]; |
if (DebugTextAnforderung > 31) DebugTextAnforderung = 31; |
PcZugriff = 255; |
break; |
case 'b': |
memcpy((unsigned char *)&ExternControl, (unsigned char *)pRxData, sizeof(ExternControl)); |
ConfirmFrame = ExternControl.Frame; |
PcZugriff = 255; |
break; |
case 'c': // Poll the 3D-Data |
if(!Intervall3D) { if(pRxData[0]) Timer3D = SetDelay(pRxData[0] * 10);} |
Intervall3D = pRxData[0] * 10; |
break; |
case 'd': // Poll the debug data |
DebugDataIntervall = pRxData[0] * 10; |
if(DebugDataIntervall > 0) DebugDataAnforderung = 1; |
break; |
case 'h':// x-1 Displayzeilen |
PcZugriff = 255; |
RemoteKeys |= pRxData[0]; |
if(RemoteKeys) DisplayLine = 0; |
DebugDisplayAnforderung = 1; |
break; |
case 'l':// x-1 Displayzeilen |
PcZugriff = 255; |
MenuePunkt = pRxData[0]; |
DebugDisplayAnforderung1 = 1; |
break; |
case 'v': // Version-Anforderung und Ausbaustufe |
GetVersionAnforderung = 1; |
break; |
case 'g':// |
GetExternalControl = 1; |
break; |
} |
break; // default: |
} |
NeuerDatensatzEmpfangen = 0; |
pRxData = 0; |
RxDataLen = 0; |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
if (c == '\n') |
uart_putchar('\r'); |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
//Ausgabe des Zeichens |
UDR = c; |
return (0); |
} |
// -------------------------------------------------------------------------- |
void WriteProgramData(unsigned int pos, unsigned char wert) |
{ |
//if (ProgramLocation == IN_RAM) Buffer[pos] = wert; |
// else eeprom_write_byte(&EE_Buffer[pos], wert); |
// Buffer[pos] = wert; |
} |
//############################################################################ |
//INstallation der Seriellen Schnittstelle |
void UART_Init (void) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); |
// TX-Interrupt Freigabe |
UCSRB |= (1<<TXCIE); |
//Teiler wird gesetzt |
UBRR=(SYSCLK / (BAUD_RATE * 8L) - 1); |
//UBRR = 33; |
//öffnet einen Kanal für printf (STDOUT) |
//fdevopen (uart_putchar, 0); |
//sbi(PORTD,4); |
Debug_Timer = SetDelay(DebugDataIntervall); |
Kompass_Timer = SetDelay(220); |
VersionInfo.SWMajor = VERSION_MAJOR; |
VersionInfo.SWMinor = VERSION_MINOR; |
VersionInfo.SWPatch = VERSION_PATCH; |
VersionInfo.ProtoMajor = VERSION_SERIAL_MAJOR; |
VersionInfo.ProtoMinor = VERSION_SERIAL_MINOR; |
pRxData = 0; |
RxDataLen = 0; |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
if(!UebertragungAbgeschlossen) return; |
if(DebugDisplayAnforderung && UebertragungAbgeschlossen) |
{ |
Menu(); |
SendOutData('H', FC_ADDRESS, 2, &DisplayLine, sizeof(DisplayLine), &DisplayBuff[DisplayLine * 20], 20); |
DisplayLine++; |
if(DisplayLine >= 4) DisplayLine = 0; |
DebugDisplayAnforderung = 0; |
} |
if(DebugDisplayAnforderung1 && UebertragungAbgeschlossen) |
{ |
Menu(); |
SendOutData('L', FC_ADDRESS, 3, &MenuePunkt, sizeof(MenuePunkt), &MaxMenue, sizeof(MaxMenue), DisplayBuff, sizeof(DisplayBuff)); |
DebugDisplayAnforderung1 = 0; |
} |
if(GetVersionAnforderung && UebertragungAbgeschlossen) |
{ |
SendOutData('V', FC_ADDRESS, 1, (unsigned char *) &VersionInfo, sizeof(VersionInfo)); |
GetVersionAnforderung = 0; |
} |
if(GetExternalControl && UebertragungAbgeschlossen) // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
{ |
SendOutData('G',MeineSlaveAdresse, 1, (unsigned char *) &ExternControl, sizeof(ExternControl)); |
GetExternalControl = 0; |
} |
if((CheckDelay(Kompass_Timer)) && UebertragungAbgeschlossen) |
{ |
WinkelOut.Winkel[0] = (int) (IntegralNick / (EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad |
WinkelOut.Winkel[1] = (int) (IntegralRoll / (EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad |
WinkelOut.UserParameter[0] = Parameter_UserParam1; |
WinkelOut.UserParameter[1] = Parameter_UserParam2; |
SendOutData('w', MK3MAG_ADDRESS, 1, (unsigned char *) &WinkelOut,sizeof(WinkelOut)); |
if(WinkelOut.CalcState > 4) WinkelOut.CalcState = 6; // wird dann in SPI auf Null gesetzt |
Kompass_Timer = SetDelay(99); |
} |
if(((DebugDataIntervall>0 && CheckDelay(Debug_Timer)) || DebugDataAnforderung) && UebertragungAbgeschlossen) |
{ |
//if(Poti3 > 64) |
SendOutData('D', FC_ADDRESS, 1, (unsigned char *) &DebugOut,sizeof(DebugOut)); |
DebugDataAnforderung = 0; |
if(DebugDataIntervall>0) Debug_Timer = SetDelay(DebugDataIntervall); |
} |
if(Intervall3D > 0 && CheckDelay(Timer3D) && UebertragungAbgeschlossen) |
{ |
Data3D.Winkel[0] = (int) (IntegralNick / (EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad |
Data3D.Winkel[1] = (int) (IntegralRoll / (EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad |
Data3D.Winkel[2] = (int) ((10 * ErsatzKompass) / GIER_GRAD_FAKTOR); |
SendOutData('C', FC_ADDRESS, 1, (unsigned char *) &Data3D,sizeof(Data3D)); |
Timer3D = SetDelay(Intervall3D); |
} |
if(DebugTextAnforderung != 255) // Texte für die Analogdaten |
{ |
SendOutData('A', FC_ADDRESS, 2, (unsigned char *)&DebugTextAnforderung, sizeof(DebugTextAnforderung),(unsigned char *) ANALOG_TEXT[DebugTextAnforderung], 16); |
DebugTextAnforderung = 255; |
} |
if(ConfirmFrame && UebertragungAbgeschlossen) // Datensatz bestätigen |
{ |
SendOutData('B', FC_ADDRESS, 1, (uint8_t*)&ConfirmFrame, sizeof(ConfirmFrame)); |
ConfirmFrame = 0; |
} |
if(GetPPMChannelAnforderung && UebertragungAbgeschlossen) |
{ |
SendOutData('P', FC_ADDRESS, 1, (unsigned char *) &PPM_in, sizeof(PPM_in)); |
GetPPMChannelAnforderung = 0; |
} |
} |
/beta/FC_075i_MartinR/uart.h |
---|
0,0 → 1,136 |
#ifndef _UART_H |
#define _UART_H |
#define MAX_SENDE_BUFF 150 |
#define MAX_EMPFANGS_BUFF 150 |
void BearbeiteRxDaten(void); |
extern unsigned char DebugGetAnforderung; |
extern unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
extern unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
extern unsigned volatile char UebertragungAbgeschlossen; |
extern unsigned volatile char PC_DebugTimeout; |
extern unsigned volatile char NeueKoordinateEmpfangen; |
extern unsigned volatile char PC_MotortestActive; |
extern unsigned char MeineSlaveAdresse; |
extern unsigned char PcZugriff; |
extern unsigned char RemotePollDisplayLine; |
extern int Debug_Timer,Kompass_Timer; |
extern void UART_Init (void); |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void DatenUebertragung(void); |
extern void Uart1Init(void); |
extern void BearbeiteRxDaten(void); |
extern unsigned char MotorTest[16]; |
struct str_DebugOut |
{ |
unsigned char Digital[2]; |
signed int Analog[32]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
struct str_WinkelOut |
{ |
signed int Winkel[2]; |
unsigned char UserParameter[2]; |
unsigned char CalcState; |
unsigned char Orientation; |
}; |
extern struct str_WinkelOut WinkelOut; |
struct str_Data3D |
{ |
signed int Winkel[3]; // nick, roll, compass in 0,1° |
signed char reserve[8]; |
}; |
extern struct str_Data3D Data3D; |
struct str_ExternControl |
{ |
unsigned char Digital[2]; |
unsigned char RemoteTasten; |
signed char Nick; |
signed char Roll; |
signed char Gier; |
unsigned char Gas; |
signed char Hight; |
unsigned char free; |
unsigned char Frame; |
unsigned char Config; |
}; |
extern struct str_ExternControl ExternControl; |
struct str_VersionInfo |
{ |
unsigned char SWMajor; |
unsigned char SWMinor; |
unsigned char ProtoMajor; |
unsigned char ProtoMinor; |
unsigned char SWPatch; |
unsigned char Reserved[5]; |
}; |
extern struct str_VersionInfo VersionInfo; |
//Die Baud_Rate der Seriellen Schnittstelle ist 9600 Baud |
//#define BAUD_RATE 9600 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 14400 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 28800 //Baud Rate für die Serielle Schnittstelle |
//#define BAUD_RATE 38400 //Baud Rate für die Serielle Schnittstelle |
#define BAUD_RATE 57600 //Baud Rate für die Serielle Schnittstelle |
//Anpassen der seriellen Schnittstellen Register wenn ein ATMega128 benutzt wird |
#if defined (__AVR_ATmega128__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICRB |
#endif |
#if defined (__AVR_ATmega32__) |
# define USR UCSRA |
# define UCR UCSRB |
# define UBRR UBRRL |
# define EICR EICRB |
# define INT_VEC_RX SIG_UART_RECV |
# define INT_VEC_TX SIG_UART_TRANS |
#endif |
#if defined (__AVR_ATmega644__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICR0B |
# define TXEN TXEN0 |
# define RXEN RXEN0 |
# define RXCIE RXCIE0 |
# define TXCIE TXCIE0 |
# define U2X U2X0 |
# define UCSRB UCSR0B |
# define UDRE UDRE0 |
# define INT_VEC_RX SIG_USART_RECV |
# define INT_VEC_TX SIG_USART_TRANS |
#endif |
#if defined (__AVR_ATmega644P__) |
# define USR UCSR0A |
# define UCR UCSR0B |
# define UDR UDR0 |
# define UBRR UBRR0L |
# define EICR EICR0B |
# define TXEN TXEN0 |
# define RXEN RXEN0 |
# define RXCIE RXCIE0 |
# define TXCIE TXCIE0 |
# define U2X U2X0 |
# define UCSRB UCSR0B |
# define UDRE UDRE0 |
# define INT_VEC_RX SIG_USART_RECV |
# define INT_VEC_TX SIG_USART_TRANS |
#endif |
#endif //_UART_H |
/beta/FC_075i_MartinR/version.txt |
---|
0,0 → 1,331 |
------- |
V0.53 27.04.2007 H.Buss |
- erste öffentliche Version |
V0.53b 29.04.2007 H.Buss |
- der FAKTOR_I war versehentlich auf Null, dann liegt der MikroKopter nicht so hart in der Luft |
V0.53c 29.04.2007 H.Buss |
- es gib ein Menü, in dem die Werte der Kanäle nach Nick, Roll, Gas,... sortiert sind. |
Die angezeigten Werte waren nicht die Werte der Funke |
V0.54 01.05.2007 H.Buss |
- die Paramtersätze können jetzt vor dem Start ausgewählt werden |
Dazu wird beim Kalibrieren der Messwerte (Gashebel oben links) der Nick-Rollhebel abgefragt: |
2 3 4 |
1 x 5 |
- - - |
Bedeutet: Nick-Rollhebel Links Mitte = Setting:1 Links Oben = Setting:2 usw. |
- der Faktor_I für den Hauptregler ist hinzugekommen. Im Heading-Hold-Modus sollte er vergössert werden, was Stabilität bringt |
V0.55 14.05.2007 H.Buss |
- es können nun Servos an J3,J4,J5 mit den Kanälen 5-7 gesteuert werden |
V0.56 14.05.2007 H.Buss |
- es gab Probleme mit Funken, die mehr als 8 Kanäle haben, wenn mehrere Kanäle dann auf Null waren |
- Funken, die nicht bis +-120 aussteuern können, sollten jetzt auch gehen |
V0.57 24.05.2007 H.Buss |
- Der Höhenregler kann nun auch mittels Schalter bedient werden |
- Bug im Gier-Algorithmus behoben; Schnelles Gieren fürhrte dazu, dass der MK zu weit gedreht hat |
- Kompass-Einfluss dämpfen bei Neigung |
- Man kann zwischen Kompass FIX (Richtung beim Kalibrieren) und Variabel (einstellbar per Gier) wählen |
- Der Motortest vom Kopter-Tool geht jetzt |
- Man kann den Parametersätzen einen Namen geben |
- Das Kamerasetting ist unter Setting 2 defaultmässig integriert |
V0.58 30.05.2007 H.Buss |
- Der Höhenregler-Algorithmus wird nun umgangen, wenn der Höhenreglerschalter aus ist |
V0.60 17.08.2007 H.Buss |
- "Schwindel-Bug" behoben |
- Die Poti-Werte werden jetzt auf Unterlauf (<0) überprüft |
- Poti4 zugefügt |
- Es werden jetzt 8 Kanäle ausgewertet |
- Kamera-Servo (an J7) |
- Die Settings müssen überschrieben werden |
V0.61 - V0.63 H.Buss 27.09.2007 |
- Poti 4 und Kanal 8 werden im Menü angezeigt |
- ein paar Kleinigkeiten bei den DefaultKonstanten2 bereinigt |
- Analog.c: Aktuell_ax korrigiert |
- auf 32 Debug-Kanäle erweitert |
- Loopings sind jetzt möglich und einzeln im KopterTool freischaltbar |
- leichte Anpassungen im Gier - Geschwindigkeit und Drift |
- die Hardwareversion V1.1 wird erkannt und das Programm stellt sich auf die geänderte Gyroverstärkung und die geänderten Portpins ein |
- die Software startet nach dem Einschalten schneller, weil der Luftdruckoffset schneller gefunden wird |
- die PPM-Ausgänge liegen wieder an den Pins an |
- Details an der Sensordatenverarbeitung -> es fliegt sich geringfügig anders |
- der MK ist bei wenig Gas nicht mehr so giftig -> soll das Landen vereinfachen |
- I2C-Bus läuft jetzt sicher nach einer Störung wieder an |
- Sticksignale werden präziser ausgewertet |
- Stick-Kanäle werden ans Kopter-Tool übertragen |
- Es muss die Version V1.47 des Kopter-Tool verwendet werden |
- Die Settings werden auf Default zurückgesetzt |
- am Piepen kann man die Fehlerart unterscheiden |
1. einzelnes Piepen beim Einschalten und Kalibrieren |
2. langsames Intervall mindestens 1 Sek -> Empfangsausfall |
3. schnelleres Intervall mindestens 1 Sek -> Akku |
4. sehr schnelles Intervall mindestens 1 Sek -> Kommunikation zu den Reglern gestört |
V0.64 H.Buss 30.09.2007 |
- beim Gieren wurden die Achsen nicht hart genug geregelt |
V0.65a H.Buss 15.10.2007 |
- Integral im Mischer wieder integriert |
- Feinabstimmung im ACC/Gyro Abgleich -> 1/32 & 100 |
- ACC/Gyro Abgleich auch bei HH |
V0.66a H.Buss 3.11.2007 |
- Messwertverarbeitung aus dem Analog-Interrupt entfernt |
- Analogmessung hängt jetzt am FC-Timing |
- Looping-Stick-Hysterese eingebaut |
- Looping-180°-Umschlag einstellbar |
- Achsenkopplung: Gierbewegung verkoppelt Nick und Roll |
- Lageregelung nach ACC-Sensor verbessert |
- zusätzlicher I-Anteil in der Lageregelung verbessert die Neutrallage |
- Gyrodriftkompensation überarbeitet |
- Bug in der Gier-Stick-Berechnung behoben |
- Gyro-Messung auf 1kHz beschleunigt |
V0.67a H.Buss 16.11.2007 |
- der Hauptregler-I-Anteil wirkt jetzt nur noch auf den Winkel (ausser im HH-Mode) |
- Gyro-Acc-Abgleich jetzt wieder in jedem Zyklus |
- Feinabstimmung |
- Beim HH-Modus gab es noch Bugs |
V0.67e H.Buss 29.11.2007 |
- Parameter: Dynamic Stability und Driftfaktor eingeführt |
- Die Namen der Analogwerte werden jetzt zum Koptertool übertragen |
- Kompatibilität zum Koptertool erhöht |
V0.67f H.Buss 04.12.2007 |
- Das Integral des Hauptreglers wird jetzt linear entladen und nicht mehr proportional |
- Schub für Gier wird jetzt auf den Gaswert begrenzt, dadurch steigt der MK nicht mehr beim Gieren. Gier ist allerdings nicht mehr so agressiv |
- Die ACC-Nullwerte können jetzt dauerhaft im EEPROM gespeichert werden (Stick:Vollgas und Gier rechts) |
V0.68a I.Busker 28.12.2007 |
- SPI.c & SPI.h ins Projekt aufgenommen |
SPI-Kommuikation kann in SPI.h aktiviert/deaktivert werden |
V0.68c H.Buss 05.01.2008 |
- Stickauswertung verbessert -> träger und präziser |
- Alle Settings angepasst |
V0.69e H.Buss 05.05.2008 |
- kleinere Bugs beseitigt |
- Schneller Sinkflug jetzt möglich |
- Min- und Maxgas in den Settings geändert |
- Lagewinkel wird jetzt in 0,1 Grad an Kompass und Navi gesendet |
- Kalibrierung für MK3Mag -> Nick unten beim Kalibrieren |
- Kompassroutine um den Ersatzkompass (Gyro unterstützt Kompasswert) erweitert |
V0.69h H.Buss 21.05.2008 |
- STICK_GAIN = 4 eingeführt. Das erhöht die Auflösung der Sollwerte. Stick_P und Stick_I müssen nun um Faktor 4 erhöht werden |
- SenderOkay auch an das Naviboard übertragen |
- Bessere Parameter bei Senderausfall |
V0.69j H.Buss 30.05.2008 |
- Höhere Präzision der Achsenkopplung |
V0.69k H.Buss 31.05.2008 |
- Bug in SPI.C behoben |
- in 0.69h war ein Bug, der zu ungewollten Loopings führen konnte |
V0.69L H.Buss 14.06.2008 |
- feinere Cam-Servo-Auflösung |
V0.70a H.Buss 01.07.2008 |
- Unterstützung der V1.3-Hardware mit automatischem Hardware-Gyro-Abgleich |
V0.70b H.Buss 14.07.2008 |
- flexible Einstellungsmöglichkeit von J16 und J17 (Transistorausgänge) |
- eigene Parameter für GPS-Naviboard |
- eigener Parameter für ExternalControl (war vorher UserParameter1 bzw. 8) |
- neue Parameter im EEPROM-Datensatz: J16Bitmask, J16Timing, ExternalControl, Navi... |
- MikroKopterFlags eingeführt, damit das Navi den Status des MKs kennt |
- KopterTool-Kompatibilität auf 8 erhöht |
V0.70c H.Buss 30.07.2008 |
- Parameter der Datenfusion leicht modifiziert |
- EEPROM-Parameter für Looping-Umschlag angepasst (von 100 auf 85) |
- MaxStick wird auf 100 begrenzt |
V0.70d H.Buss 02.08.2008 |
- Transistorausgänge: das oberste Bit der Blinkmaske (im KopterTool linkes Bit) gibt nun den Zustand des Ausgangs im Schalterbetrieb an |
0.71b: H.Buss 19.10.2008 |
Kommunikation zum Navi erweitert: |
- Beeptime jetzt 32Bit |
- Datenfusion und Driftkopensation wird durch NaviBoard unterstützt |
0.71c: H.Buss 20.10.2008 |
- LoopConfig heisst jetzt BitConfig |
- 3-Fach-Schalter für Höhensteuerung möglich -> kann man mit GPS-Schalter zusammenlegen |
- bei den Settings wurde Setting[0] mit abgespeichert, welches es nicht gab. |
- in Zukunft werden bei neuen EEPROM-Settings die Kanäle von Setting 1 übernommen |
- Variablen NaviWindCorrection, NaviSpeedCompensation, NaviOperatingRadius eingeführt |
0.71f: H.Buss 15.11.2008 |
- Ausschalten der Höhenregelung per Schalter um 0,3 sek verzögert |
- bei der seriellen Übertragung hat die FC jetzt als SlaveAdresse die 1 |
- VersionInfo.NaviKompatibel eingeführt |
- wenn manuell gegiert wird, wird der GyroKompass-Wert auf den Kompasswert gesetzt |
- Luftdruckwert wird an das Navi übertragen |
- Der Baro-Offset wird jetzt nachgeführt, um den Messbereich zu erweitern. Geht nur bei Höhenregler mit Schalter |
- Debugdaten können jetzt mit 'f' gepollt werden |
0.71g: Gregor 09.12.2008 |
- Kommunikation überarbeitet |
Infos hier: http://www.mikrokopter.de/ucwiki/en/SerialCommands |
0.71h: H.Buss 15.12.2008 |
- Freigegebene Version |
- NaviAngleLimitation als Parameter zum Navi implementiert |
- Antwort auf CMD: 't' entfernt |
0.72d: H.Buss 22.01.2009 |
- OCTO als Compilerschalter |
- Unterstützung der FC 2.0 (ME) |
- GYRO_D eingeführt |
- Achsenkopplung jetzt auch auf Nick/Roll-Bewegung |
0.72e: H.Buss 27.01.2009 |
- die 0.72d hatte kein Integral im Gier |
- Parameter eingeführt: |
EE_Parameter.NaviGpsPLimit |
EE_Parameter.NaviGpsILimit |
EE_Parameter.NaviGpsDLimit |
EE_Parameter.NaviPH_LoginTime |
EE_Parameter.AchsKopplung2 |
EE_Parameter.CouplingYawCorrection |
0.72f: H.Buss 28.01.2009 |
- Bug im Ersatzkompass entfernt |
0.72h: H.Buss 05.02.2009 |
- Algorithmen beschleunigt -> Floats durch Fixkomma ersetzt |
- Achsentkopplung weiter verbessert |
- Nick- und Roll im Octo-Mischer auf jeweils vier Motoren aufgeteilt |
0.72i: H.Buss 07.02.2009 |
- Abtastrate von 1kHz auf 2kHz erhöht |
0.72j: H.Buss 09.02.2009 |
- neue Implementierung der Servoausgänge |
0.72k: H.Buss 10.02.2009 |
- Abtastrate auf 5kHz erhöht |
0.72L: H.Buss 13.02.2009 |
- Signalfilterung überarbeitet |
- OCTO2 implementiert |
0.72M: H.Buss 13.02.2009 |
- Code Cleanup |
0.72o: H.Buss 24.02.2009 |
- Abtastrate auf 2kHz |
- HW-Version an Navi |
- neuer Datensatz 'c' -> Lagedaten für 3D-Grafik |
- Auswerteroutine für Spectrum-Satteliten implementiert |
- Kanalsettings werden beim Parameterreset nicht mehr gelöscht |
- die Driftkompensation wird jetzt feiner aufgelöst --> EE_Parameter.Driftkomp muss mal 8 genommen werden |
- die Integrale und ACC-Werte werden jetzt im Scope in ca. 0,1° angezeigt (wie beim NaviBrd) |
0.72p: H.Buss 01.03.2009 |
- Octo3 erstellt |
- Analogwerte umbenannt |
0.73a-d: H.Buss 05.04.2009 |
- MixerTabelle implementiert |
- I2C-Bus auf bis zu 12 Motoren erweitert |
- die Busfehler der BL-Regler werden im Menü angezeigt |
- Revision der MixerTabelle eingeführt |
- MixerTabelle wird bei Parameterreset neu initialisiert |
- Motortest auf [12] erweitert |
- Motorschalter nicht mehr 3-Stufig |
0.74a |
- Datenfusion im Flug auch, wenn ACC-Z < 512 |
- Wert für die Luftdruck-Messbereichserweiterung abgefangen |
0.74d |
- Die Driftkompensation ist jetzt dreistufig -> 0,5% pro sekunde zusätzlich eingeführts |
0.75a G.Stobrawa 22.5.2009 |
- Extern Control also received from NC via SPI |
0.75b H.Buss 27.05.2009 |
- Spektrum-Singale schalten den PPM-Eingang aus |
- max. 2 Sekunden nach dem Start auf die BL-Regler warten |
- Automatische Zellenerkennung, wenn Spannungswarnung < 5,0V |
- Bei automatischer Zellenerkennung piept es je nach Zellenzahl |
- EE_DATENREVISION auf 76 erhöht |
- Servo: |
- Roll-Servo für FC ME implementiert |
- Update-Cmd stoppt Servos |
- Servos werden erst nach dem ersten Kalibrieren aktiviert |
0.75c G.Stobrawa 25.7.2009 |
- Übertragung der Servo-Settings zur NC |
- RSSI wird an NC gesendet, derzeit wird der Wert nicht gesetzt |
- Bugfix Messbereichsumschaltung des Luftdrucksensors springt |
- Auflösung des Luftdrucks nun bis auf 1 cm (5mal feiner) zur genaueren Berechnung des D-Anteils |
- Unterstützung von Warnings-Bitmasks für die J16, J17-Outputs bei Unterspannung |
- Unterspannung für einezelne Zelle´n von 3.2V auf 3.3V angehoben (9.6V --> 9.9V für 3S) |
0.75d H.Buss 13.8.2009 |
- RC-Routine: Empfangsausfall soll sicherer erkannt werden |
- Zellenerkennung nun auch beim Speichern der Settings |
- Warnungs-Blinkmaske auch bei Empfangsausfall |
0.75e H.Buss 18.8.2009 |
- LED-Blinken kann an die Motoren gekoppelt werden |
- Feinabstimmung des Höhenreglers |
0.75f H.Buss 27.8.2009 |
- D-Anteil des Höhenreglers jetzt mit Quadratischer Komponente |
- Lagewinkel wirkt jetzt mit 1/Cos(x) mit in den Höhenregler |
- leichte Modifikation der RC-Empfangroutine |
0.75g H.Buss 31.08.2009 |
- die Akkuspannung geht jetzt antiproportional ins Gas ein |
0.75h H.Buss 3.09.2009 |
- im Höhenregler werden jetzt die Stellwerte begrenzt --> max +- 16% vom geschätzten Schwebegas |
0.75i H.Buss 7.09.2009 |
- GpsZ vom Navi zur FC für den Höhenregler |
- "hoovergas-Variation" als Parameter |
- Kompatibilität zu NC und PC erhöht |
0.75i_MartinR 12.09.2009 |
- DebugOut.Analog[20] war doppelt belegt in timer.c |
- NeutralAccZ von float in int geändert |
- in led.c haben Klammern gefehlt |
- in spi.c cli() und sei() deaktiviert |
- diverse Änderungen in der analog.c und fc.c um den Höhenregler zu modifizieren: |
WICHTIG !!!! UserParameter5 - 8 haben nun folgende Funktion: |
UserParam5: Wartezeit bei Ermittlung von HoeheD hier z.B. 60 eintragen |
UserParam6: ist der Neutralwert des ACC-Z-Sensors ohne Erdbeschleunigung / 4 (wird für die Neigungskorrektur benötigt) |
Vorgehensweise: im MK-Tool den Wert von ACC-Z ablesen, wenn der MK senkrecht steht (an einem Arm festhalten). |
Diesen Wert /4 als UserParam6 eintragen (bei mir: 115..136). |
UserParam7 : für Beschleunigungskompensation des Luftdrucksensors |
Vorgehensweise: Den Wert so einstellen, daß sich der Höhenwert sich möglichst wenig ändert, wenn der MK geneigt wird (ausprobieren, bei mir 4..12) |
UserParam8 : Kalibrierung der Neigungskompensation |
Vorgehensweise: Den Wert so einstellen, daß DebugOut.Analog[28](minhoover) sich möglichst wenig ändert, wenn der MK geneigt wird (bei mir: 27..31). |
(minhoover wird zwar angezeigt, jedoch wird hier der neigungskorrigierte ACCHoch dargestellt) |
Der Wert für Höhe P-Anteil kann etwas verringert werden, hier z.B. 8 eintragen |
Die Wirkung von Luftdruck D-Anteil hat sich geändert, hier z.B. 70 eintragen |
Die Wirkung von Z-ACC-Wirkung hat sich geändert, hier z.B. 30 eintragen |
Die Einstellungen für "Hoover variation" und "GPS Z" sind ohne Funktion |
Beim Höhenregler gibt es nun keinen Offset mehr, allerdings muß dafür nach dem Umschalten etwas Gas gegeben werden, damit der Höhenregler arbeiten kann. |
Vor dem Aktivieren der Höhenregelung sollte der MK einige Sekunden konstant schweben, damit sich das Schwebefluggas angleichen kann. |
/beta/FC_075i_MartinR |
---|
Property changes: |
Added: tsvn:logminsize |
+8 |
\ No newline at end of property |