Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 1168 → Rev 1169

/branches/V0.71i_DSL_X_LED_MODE3/Flight-Ctrl_MEGA644_V0_71i_mode1.hex
0,0 → 1,2553
:100000000C94AA020C94C7020C94C7020C94C70269
:100010000C94C7020C94C7020C94C7020C94C7023C
:100020000C94C7020C94D7110C94C7020C94B8110D
:100030000C949A1E0C94C7020C94C7020C94C7022D
:100040000C94C7020C94C7020C9473100C94C70252
:100050000C949A060C94C7020C9464060C94C70284
:100060000C94E2120C94C7020C94CF1D0C94C7029E
:100070000C940D4B0C94C7020C94C702EC1DF31D9D
:10008000071E141E211E191E211E331E5D1E441E36
:10009000481E681E521E5D1E4B1E4F1E681E521EBD
:1000A0005D1E611E651E681E6C1E0A0A0D004E65EF
:1000B000757472616C0048656164696E67486F6C45
:1000C00064000A0D537465756572756E673A200099
:1000D0000A0D4F4B0A0D000A0D5573696E672050CB
:1000E000504D2E2E2E000A0D5573696E6720445315
:1000F0004C2E2E2E000A0D4162676C6569636820E4
:100100004C756674647275636B73656E736F722E73
:100110002E000A0D42656E75747A65205061726119
:100120006D657465727361747A202564000A0D41EF
:100130004343206E696368742061626765676C6918
:100140006368656E21000A0D496E69742E2045456D
:1001500050524F4D3A2047656E65726174696E6703
:100160002044656661756C742D506172616D6574B3
:100170006572207573696E67206F6C6420537469B3
:10018000636B2053657474696E6773000A0D496E62
:1001900069742E20454550524F4D3A2047656E6593
:1001A000726174696E672044656661756C742D5068
:1001B0006172616D6574657220616E64205374694B
:1001C000636B2D53657474696E67732E2E2E000A4F
:1001D0000D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D7F
:1001E0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D007C
:1001F0000A0D466C69676874436F6E74726F6C0A9F
:100200000D48617264776172653A25642E25640A2F
:100210000D536F6674776172653A5625642E2564B6
:10022000256320002E0048693A2534692020436662
:100230003A253469200047733A25346920204769FC
:100240003A25346920004E693A2534692020526FDE
:100250003A253469200045787465726E436F6E7478
:10026000726F6C20200052616E67653A2533692DEC
:10027000253369005374656C6C756E673A202533BD
:100280006900536574706F696E74202025336900AE
:10029000536572766F202000506F7469343A2020C5
:1002A00025336900506F7469333A20202533690083
:1002B000506F7469323A202025336900506F746999
:1002C000313A20202533690053746172743A20203A
:1002D000202020253569004D657373776572743A67
:1002E0002020253569005269636874756E673A206D
:1002F00020253569004B6F6D7061737320202020BD
:1003000020202000456D70662E506567656C3A258B
:100310003569005370616E6E756E673A2020253521
:100320006900486F636820253469202825336929CE
:1003300000526F6C6C202534692028253369290010
:100340004E69636B202534692028253369290041D3
:100350004343202D2053656E736F720047696572A9
:100360002025346920282533692928253369290067
:10037000526F6C6C20253469202825336929282583
:10038000336929004E69636B2025346920282533A1
:100390006929282533692900476965722025346950
:1003A00020282533692900526F6C6C202534692080
:1003B0002825336929004E69636B2025346920287C
:1003C000253369290047696572202534692028256D
:1003D00033692900526F6C6C20253469202825333D
:1003E0006929004E69636B2025346920282533690B
:1003F00029004779726F202D2053656E736F72004C
:1004000050333A253469202050343A25346920008D
:1004100050313A253469202050323A253469200081
:1004200047733A253469202047693A25346920000A
:100430004E693A2534692020526F3A2534692000EC
:100440004B373A25346920204B383A25346920004F
:100450004B353A25346920204B363A253469200043
:100460004B333A25346920204B343A253469200037
:100470004B313A25346920204B323A25346920002B
:100480004B6F6D706173733A2020202535690052DF
:100490006F6C6C3A202020202020253569004E69A1
:1004A000636B3A20202020202025356900616B7481
:1004B0002E204C6167650048F668656E7265676559
:1004C0006C756E67004B65696E6520004F6666202F
:1004D00020202020203A20253569004C7566746460
:1004E0007275636B3A2025356900536F6C6C486FE9
:1004F0006568653A2025356900486F6568653A206A
:10050000202020202535690028632920486F6C674A
:10051000657220427573730053657474696E673A2F
:10052000202564200048573A5625642E2564205320
:10053000573A25642E25642563002B204D696B7284
:100540006F4B6F70746572202B005B25695D005BDB
:1005500025695D0011241FBECFEFD0E1DEBFCDBF06
:1005600013E0A0E0B1E0E6EBFCE902C005900D92DB
:10057000A83BB107D9F718E0A8EBB3E001C01D9282
:10058000AD39B107E1F70E948F030C94594E0C94DA
:1005900000009C01F999FECF32BD21BDF89A80B5CB
:1005A00008959C01F999FECF1FBA32BD21BD60BDEF
:1005B0000FB6F894FA9AF99A0FBE0895F999FECFFA
:1005C00022E030E032BD21BDF89A90B5892F8150EC
:1005D000853068F0F999FECF1FBA32BD21BD83E0A6
:1005E00080BD0FB6F894FA9AF99A0FBE93E0892F5E
:1005F0000895282F863010F025E002C0882369F086
:10060000F999FECF1FBA82E090E092BD81BD20BD76
:100610000FB6F894FA9AF99A0FBE089580918C0754
:10062000A82FB0E0FD01EE0FFF1FE25AF84F8081C6
:1006300091818D5E9F4F14F010920201AA0FBB1F93
:10064000A25AB84F8D919C918A5B9F4FBCF48091C8
:100650000201882399F481E08093020180915B0676
:100660008F5F80935B06853038F088EE93E090933F
:10067000DA038093D90302C00E94482B80915B0665
:10068000809328071092290708951F93182F86300A
:1006900010F015E002C0882319F1812F90E0019736
:1006A000242F30E0FC01E29FC001E39F900DF29FF8
:1006B000900D11248C599F4F50E021ED32E00E94A3
:1006C0005C4BF999FECF1FBA82E090E092BD81BDEC
:1006D00010BD0FB6F894FA9AF99A0FBE0E9481489D
:1006E0001F910895982FFB018150853008F093E009
:1006F000892F90E00197242F30E0829FB001839FE3
:10070000700D929F700D11246C597F4FCF0150E0F6
:1007100029EC32E00E94404B0E94814808957F926C
:100720008F929F92AF92BF92CF92DF92EF92FF9201
:100730000F931F93CF93DF9314B815B8189B06C07F
:10074000199B02C08DE007C08BE005C0199B02C059
:1007500084E101C08AE08093000181E887B93E9A74
:100760008FEF88B98BE184B981E085B98EE38AB9CE
:10077000579A87E78BB984B7877F84BF80916000E1
:100780008861809360001092600080ED97E0909304
:10079000DA038093D90310927A04109279041092AC
:1007A00063071092620710927804109277041092F7
:1007B000760410927504809100018A3011F0843122
:1007C00011F4289801C0289A0E944B110E940E082B
:1007D0000E94DC120E94911D0E944E457894209147
:1007E00000018DB79EB70D970FB6F8949EBF0FBE50
:1007F0008DBFEDB7FEB73196ADB7BEB711961C925F
:1008000080EF91E092838183822F6AE00E94B24D53
:1008100083831482822F0E94B24D958316821086A4
:10082000178287E490E09287818789E690E0948739
:1008300083870E94B80DEDB7FEB73A960FB6F894CD
:10084000FEBF0FBEEDBF11828FEC91E093838283D8
:100850000E94B80D0F900F900F90809100018C3086
:1008600010F4299A01C0299883E06CE877E049E008
:100870000E947203F999FECFC1E0D0E0D2BDC1BDA4
:10088000F89A80B58F3FC1F0F999FECFD2BDC1BDB6
:10089000F89A80B5893480F080918C078A3060F4B2
:1008A00080918D078A3040F480918E078A3020F441
:1008B00080918F078A30A8F000D00F92ADB7BEB7F5
:1008C00011961C9211978CE891E013969C938E934D
:1008D00012970E94B80D0F900F900F900E94761FF4
:1008E00016C0F999FECFD2BDC1BDF89A80B5893442
:1008F00071F000D00F92EDB7FEB7118286E491E05F
:10090000938382830E94B80D0F900F900F90F999F6
:10091000FECFD2BDC1BDF89A80B5893409F431C08B
:100920000E94834411E0123039F0133019F40E9410
:100930003E4304C0143010F00E94DF43812F6CE866
:1009400077E046E50E9445031F5F163061F7F9998D
:10095000FECF1FBA82E090E092BD81BD83E080BDF2
:100960000FB6F894FA9AF99A0FBEF999FECF1FBA0A
:10097000D2BDC1BD89E480BD0FB6F894FA9AF99A48
:100980000FBEF999FECF84E090E092BD81BDF89A48
:1009900080B5853090F000D00F92ADB7BEB71196FC
:1009A0001C9211978DE291E013969C938E9312976F
:1009B0000E94B80D0F900F900F900E94DE026CE81D
:1009C00077E046E50E9472030E94DE0200D000D06C
:1009D0000F92EDB7FEB73196ADB7BEB711961C9228
:1009E00022E131E032832183838314820E94B80D97
:1009F000809194070F900F900F900F900F9080FDB3
:100A000003C0C8EED3E04BC000D00F92EDB7FEB7E5
:100A1000118285EF90E0938382830E94B80D0F903E
:100A20000F900F9088EE93E00E947311EC010E94EA
:100A30009216CE010E947D118823D9F38091BF07C1
:100A400082FF10C00E94F84900D00F92ADB7BEB728
:100A500011961C92119786EE90E013969C938E93BC
:100A600012970BC00E94851E00D00F92EDB7FEB703
:100A7000118287ED90E0938382830E94B80DADB719
:100A8000BEB711961C92119780ED90E013969C933F
:100A90008E9312970E94B80D0F900F900F900E94A6
:100AA0009629809100018A3011F0843111F4289840
:100AB00001C0289A80ED97E09093DA038093D903E0
:100AC00085E580935D0600D00F92EDB7FEB71182E9
:100AD00082EC90E0938382830E94B80D809194070A
:100AE0000F900F900F9082FF0EC000D00F92ADB705
:100AF000BEB711961C92119786EB90E013969C93CB
:100B00008E93129709C000D00F92EDB7FEB71182F5
:100B10008EEA90E0938382830E94B80DADB7BEB792
:100B200011961C9211978AEA90E013969C938E93EB
:100B300012970E94B80D0F900F900F900E94F1161F
:100B400088E893E1909392038093910381E08093EE
:100B50005C0664E0762E50E7852E57E1952EA12C99
:100B600043E0B42E35E0C32ED12C20E1E22E27E263
:100B7000F22E00E810E08091D603882309F49CC08F
:100B80001092D60380915B06882319F00E940E0311
:100B900002C00E94622B0E94D728809100018A30F7
:100BA00011F0843111F4289801C0289A8091050130
:100BB000882321F08150809305010EC010926706B2
:100BC000109297041092960410929904109298042F
:100BD00010929B0410929A0480917404882329F047
:100BE000809174048150809374048091910390915A
:100BF0009203892BD1F4D0929203C09291030E9468
:100C0000A01D80910B0390910C038F5F9F4FF9F40F
:100C100080917D048823D9F0F092DA03E092D90321
:100C200010930C0300930B0312C0809191039091D9
:100C30009203019790939203809391038091000116
:100C40008A3011F0843111F4289801C0289A8091DB
:100C5000D603882321F080917D04882311F40E941B
:100C6000FF080E944C0BCE010E947D11882311F1D8
:100C700020911103309112038091A40790E028176E
:100C800039077CF480910B0390910C038F5F9F4F89
:100C900041F49092DA038092D903B0920C03A092AF
:100CA0000B030E947F477092DB0384E190E00E9477
:100CB0007311EC010E949E488091DB03882309F0A8
:100CC0005ACF0E94C04757CF1F920F920FB60F9274
:100CD00011248F939F93EF93FF93809103018823B7
:100CE000E1F48091D2039091D30301969093D303C2
:100CF0008093D203FC01E35EFA4FE081ED3019F0FE
:100D00008639910539F41092D3031092D20381E011
:100D100080930301E093C60004C01092D3031092A5
:100D2000D203FF91EF919F918F910F900FBE0F9083
:100D30001F9018951F920F920FB60F9211242F93A8
:100D40003F934F938F939F93AF93BF93CF93DF9333
:100D5000EF93FF938091C6008093BF034091CD0332
:100D6000463910F01092CC038091BF038D3009F00A
:100D70005DC08091CC03823009F058C01092CC0342
:100D8000A42FB0E0FD01E859F94F3081ED01C759BA
:100D9000D94F28818091D0039091D103831B910971
:100DA000821B91099F709093D1038093D0039C0183
:100DB00096E0369527959A95E1F7235C2093CF032B
:100DC000982F9F73935C9093CE038081281729F40A
:100DD0008881981711F491E006C08091C2038F5F5B
:100DE0008093C20390E08091C003882309F06AC019
:100DF000992309F467C081E08093C0034F5F40935B
:100E0000C303A659B94F8DE08C9380916C0682354F
:100E100009F058C02CE088E190E00FB6F894A8954E
:100E2000809360000FBE209360004CC08091CC0383
:100E30008130F9F0813020F0823009F041C024C0C7
:100E40008091BF03833239F48091C003882319F461
:100E500081E08093CC038091BF0380936A0681E098
:100E60008093CD038091BF038093D0031092D10370
:100E700029C082E08093CC03E42FF0E08091BF038F
:100E8000E659F94F808309C0E42FF0E08091BF0359
:100E9000E659F94F8083463920F44F5F4093CD03E4
:100EA00002C01092CC032091BF038091D003909197
:100EB000D103820F911D9093D1038093D00302C080
:100EC0001092CC03FF91EF91DF91CF91BF91AF9141
:100ED0009F918F914F913F912F910F900FBE0F9047
:100EE0001F901895DC0120E030E040E050E008C0A1
:100EF000FA01E35EFA4F8081280F311D4F5F5F4F8B
:100F00004A175B07A8F33F70C90136E096958795AD
:100F10003A95E1F7835CFD01E35EFA4F8083119619
:100F20002F73235CFD01E35EFA4F2083A25EBA4F6C
:100F30008DE08C931092030180911D058093C60073
:100F400008955091C303565033E043E048C0E32F67
:100F5000F0E0E659F94F80813F5FE32FF0E0E6597A
:100F6000F94F20812D533F5FE32FF0E0E659F94F11
:100F700070813F5FE32FF0E03350E659F94F608115
:100F8000922F92959F708D53880F880F892BE42F95
:100F9000F0E0E659F94F8083E42FEF5F513081F0A4
:100FA000972F9D53F0E02295207F892F8695869577
:100FB000282BE659F94F2083E42FEE5F523011F4CD
:100FC0004E2F10C03C5F5350F0E09295990F990F4F
:100FD000907C6D53962BE659F94F90834D5F5523C6
:100FE00009F0B5CF8DE696E09093C5038093C403D6
:100FF00043504093C60308951F93182F8A3019F465
:101000008DE00E94FC078091C00085FFFCCF10930B
:10101000C60080E090E01F9108950895E1ECF0E0B3
:1010200088E18083A0ECB0E08C9182608C93808119
:10103000806880838081806480838AE28093C4009A
:1010400080910701909108010E94731190934A06C4
:10105000809349068CED90E00E947311909369068D
:101060008093680610924B0687E480934C0688E0D4
:1010700080934F068AE080934D0610924E061092A0
:10108000C5031092C4031092C6030895DF92EF9235
:10109000FF920F931F93DF93CF93CDB7DEB78B856E
:1010A0007C8593E290931D058F5980931E058A8558
:1010B00080931F05DE011D96772329F4EE24FF247B
:1010C00040E050E007C0ED84FE84DE0151964F857C
:1010D0005889715003E010E030E07EC0F701E30F63
:1010E000F11D90813F5F4150504091F4772309F406
:1010F00083C0FD013296ED90FC90DF0112960190C5
:10110000F081E02D7150309709F475C0AF0130E0E7
:10111000F701E30FF11DD0803F5F4150504099F43B
:10112000772311F460E023C0FD013296ED90FC902E
:10113000DF0112964081518171504115510511F422
:1011400060E014C030E0F701E30FF11D60813F5F04
:101150004150504061F4772351F0FD013296ED90FB
:10116000FC90DF01129640815181715030E0892F4F
:1011700086958695835CF801E35EFA4F80832D2D7A
:1011800022952F70892F90E083709070F4E0880F83
:10119000991FFA95E1F7282B235CF801E25EFA4FDC
:1011A00020838D2D90E08F709070880F991F880F8D
:1011B000991F262F2295269526952370282B235C90
:1011C000F801E15EFA4F20836F73635CF801E05E23
:1011D000FA4F60830C5F1F4F4115510509F07ECF18
:1011E000C8010E947207CF91DF911F910F91FF906C
:1011F000EF90DF90089530E060E0DD24B8CF80917B
:101200000301882309F447C28091BA03882309F4B3
:1012100048C080910301882309F443C00E94FA1654
:101220002DB73EB72B5030400FB6F8943EBF0FBEDF
:101230002DBFEDB7FEB7319688E4ADB7BEB71196B6
:101240008C9381E0818382E082838EEB93E09483B0
:10125000838381E090E0968385838091BE0324E1BF
:10126000829FC00111248A5D9C4F9087878384E10F
:1012700090E0928781870E9446088091BE038F5F2D
:101280008093BE032DB73EB7255F3F4F0FB6F8944E
:101290003EBF0FBE2DBF843010F01092BE031092DF
:1012A000BA038091B9038823E9F18091030188236F
:1012B000C9F10E94FA168DB79EB70F970FB6F89432
:1012C0009EBF0FBE8DBFEDB7FEB731968CE4ADB7B4
:1012D000BEB711968C9381E0818383E0828386E0A0
:1012E00094E09483838321E030E03683258386E78E
:1012F00093E0908787833287218786E293E0948703
:10130000838780E590E0968785870E944608109243
:10131000B9032DB73EB7215F3F4F0FB6F8943EBFDC
:101320000FBE2DBF8091BC03882361F18091030122
:10133000882341F18DB79EB707970FB6F8949EBFEB
:101340000FBE8DBFEDB7FEB7319686E5ADB7BEB720
:1013500011968C9381E0818382838BE496E0948361
:1013600083838AE090E0968385830E9446081092EA
:10137000BC032DB73EB7295F3F4F0FB6F8943EBF71
:101380000FBE2DBF8091B803882371F180910301B6
:10139000882351F18DB79EB707970FB6F8949EBF7B
:1013A0000FBE8DBFEDB7FEB7319687E4ADB7BEB7C0
:1013B00011968C9380910601818381E082838DE573
:1013C00096E0948383838BE090E0968385830E94EC
:1013D00046081092B8032DB73EB7295F3F4F0FB6AE
:1013E000F8943EBF0FBE2DBF8091680690916906AC
:1013F0000E947D11882309F467C08091030188232E
:1014000009F462C06091250470912604809127043C
:10141000909128042CE630E040E050E00E94074E16
:10142000309356062093550660912D0470912E043A
:1014300080912F04909130042CE630E040E050E0A1
:101440000E94074E309358062093570680918C04D3
:101450008093590680918D0480935A068DB79EB76C
:1014600007970FB6F8949EBF0FBE8DBFEDB7FEB7BE
:10147000319687E7ADB7BEB711968C9383E0818331
:1014800081E0828385E596E09483838388E090E021
:10149000968385830E9446082DB73EB7295F3F4F4C
:1014A0000FB6F8943EBF0FBE2DBF80915B0685300E
:1014B00018F086E080935B0683E690E00E9473114B
:1014C00090936906809368068091070190910801C6
:1014D000892B41F08091490690914A060E947D1126
:1014E000882321F48091BB038823C1F180910301FB
:1014F0008823A1F18DB79EB707970FB6F8949EBFCA
:101500000FBE8DBFEDB7FEB7319684E4ADB7BEB761
:1015100011968C9381E08183828380E097E09483AD
:10152000838382E490E0968385830E94460810922C
:10153000BB0380910701909108012DB73EB7295F49
:101540003F4F0FB6F8943EBF0FBE2DBF009731F04E
:101550000E94731190934A068093490620910401DA
:101560002F3FC9F18DB79EB70B970FB6F8949EBF6A
:101570000FBE8DBFEDB7FEB7319681E4ADB7BEB7F4
:1015800011968C9381E0818382E0828384E091E0F4
:101590009483838381E090E096838583822F90E01B
:1015A000A4E0880F991FAA95E1F7875F9E4F908767
:1015B000878380E190E0928781870E9446088FEFC1
:1015C000809304012DB73EB7255F3F4F0FB6F894C7
:1015D0003EBF0FBE2DBF80914207882361F18091ED
:1015E0000301882341F18DB79EB707970FB6F89492
:1015F0009EBF0FBE8DBFEDB7FEB7319682E4ADB78B
:10160000BEB711968C9381E08183828382E497E058
:101610009483838381E090E0968385830E944608CB
:10162000109242072DB73EB7295F3F4F0FB6F8948F
:101630003EBF0FBE2DBF8091BD03882361F1809115
:101640000301882341F18DB79EB707970FB6F89431
:101650009EBF0FBE8DBFEDB7FEB7319680E5ADB72B
:10166000BEB711968C9381E0818382838EE597E0EB
:101670009483838386E190E0968385830E94460865
:101680001092BD032DB73EB7295F3F4F0FB6F894B8
:101690003EBF0FBE2DBF08950F931F93DF93CF93CF
:1016A00000D0CDB7DEB78091C003882309F404C20F
:1016B0000E94A10780916B06823609F024C18091B7
:1016C0006C06813709F448C0823730F48B3459F006
:1016D000803709F018C13CC0833709F49CC08437B7
:1016E00009F011C121C0E091C403F091C5038081CC
:1016F0009181909362048093610480916104909140
:1017000062042091630430916404845E9D4F821BC7
:10171000930B68E671E00E94D24D845B90409093F9
:10172000660480936504EFC0E091C403F091C503A3
:1017300080819181A281B3818093C8039093C90372
:10174000A093CA03B093CB038FEF80930501DBC056
:1017500081E08093BD03D7C00091C4031091C503FD
:10176000D8018C918F3F21F40E94DE02F801808322
:10177000E091C403F091C5038081882311F481E0D6
:1017800003C0863010F085E08083E091C403F091BF
:10179000C50380816CE877E046E50E947203809182
:1017A00003018823E1F3E091C403F091C503808134
:1017B000898389E48A838DB79EB70F970FB6F89413
:1017C0009EBF0FBE8DBFEDB7FEB7319681E5ADB7B9
:1017D000BEB711968C9381E0818383E08283CE0132
:1017E00001969483838321E030E036832583CE0104
:1017F000029690878783328721878CE897E09487C9
:10180000838786E590E0968785870E944608EDB736
:10181000FEB73F9673C0E091C403F091C503808189
:101820008150853008F045C08181893409F041C07C
:10183000ACE8B7E0329686E501900D928150E1F771
:10184000E091C403F091C50380816CE877E046E540
:101850000E9445036091B70770E080E090E024ECBF
:1018600039E040E050E00E94934D609395037093FF
:10187000960380939703909398036091B80770E064
:1018800080E090E00E94934D6093990370939A03D7
:1018900080939B0390939C03E091C403F091C50354
:1018A00080810E94F9020E94DE0289830E94482BF7
:1018B00001C01982809103018823E1F38DB79EB79F
:1018C00007970FB6F8949EBF0FBE8DBFEDB7FEB75A
:1018D000319683E5ADB7BEB711968C9381E08183D5
:1018E0008283CE0101969483838381E090E0968386
:1018F00085830E944608EDB7FEB737960FB6F89479
:10190000FEBF0FBEEDBF80916C06873609F4C9C0DB
:10191000883680F4813609F468C0823620F48B342E
:1019200009F0C2C041C0823609F46CC0843609F0A7
:10193000BBC07DC08C3609F4A2C08D3620F4883639
:1019400009F0B2C087C0843721F0863709F0ACC0F7
:10195000A4C0E091C403F091C50380819181A2816C
:10196000B3818093C8039093C903A093CA03B09333
:10197000CB03809103018823E1F300D00F92EDB7F0
:10198000FEB7319684E5ADB7BEB711968C938091C2
:101990000601818312820E9446088FEF8093050121
:1019A0000F900F900F9080C0E091C403F091C50399
:1019B000808191819093620480936104809161049D
:1019C000909162042091630430916404845E9D4F81
:1019D000821B930B68E671E00E94D24D845B9040BD
:1019E00090936604809365045FC0E091C403F09116
:1019F000C5038081809304018032A8F08FE1809339
:101A0000040111C0ADE5B6E08091C4039091C50317
:101A10009C01F9018BE001900D928150E1F78091DA
:101A20006606809342078FEF809305013DC0E091E9
:101A3000C403F091C50380812AE0829FC001112474
:101A40009093080180930701892B71F181E08093C5
:101A5000BB032AC08FEF80930501E091C403F0918E
:101A6000C503808190910704892B80930704882304
:101A700011F01092BE0381E08093BA0315C08FEF7E
:101A800080930501E091C403F091C50380818093A8
:101A9000060481E08093B90307C081E08093BC0312
:101AA00003C081E08093B8031092C0031092C50375
:101AB0001092C4031092C6030F900F90CF91DF9144
:101AC0001F910F910895982F80914307813061F401
:101AD00080910504E82FF0E0EA5DFC4F90838F5F72
:101AE0008093050481E00895892F0E94FC070895E2
:101AF0001F93182F04C080E30E94630D115011162C
:101B0000D4F31F9108951F93182F04C080E20E9400
:101B1000630D11501116D4F31F9108950F931F9365
:101B2000CF93DF938C01EB0108C0F8010F5F1F4FCB
:101B3000E4918E2F0E94630D21972097B1F7DF91DA
:101B4000CF911F910F9108950F931F93CF93DF9320
:101B50008C01EB0106C0F80181918F010E94630D99
:101B600021972097C1F7DF91CF911F910F91089591
:101B70002F923F924F925F926F927F928F929F929D
:101B8000AF92BF92CF92DF92EF92FF920F931F938B
:101B9000DF93CF93CDB7DEB7E5970FB6F894DEBFEE
:101BA0000FBECDBF2C969FAD2C972D964FAD2D9788
:101BB0002B968FAD2B9780934307EDE4AE2EB12C7F
:101BC000AC0EBD1E292F342FC9019DA78CA71EA6C0
:101BD0001FA618AA19AA9E01245D3F4F3DAB2CAB4E
:101BE0000CA51DA502C00F5F1F4FF801F490FF2048
:101BF00019F0F5E2FF16B9F7B8012CA53DA5621B57
:101C0000730B19F0C9010E948E0DFF2009F452C216
:101C1000A8014F5F5F4F5DA74CA7198244241BAA00
:101C20005FEF5AAB02C0C5015C01ECA5FDA5CF0179
:101C300001969DA78CA76491A42DB0E0A170B0700F
:101C4000653721F0862F80628837F1F4109771F0A4
:101C5000F50120813181428153812EA73FA748ABF6
:101C600059AB24E030E0A20EB31E0EC0F501808116
:101C700091819C0140E050E02EA73FA748AB59ABB3
:101C800042E050E0A40EB51E603221F48981882321
:101C900051F61AC0633211F458E05AC06A3221F08A
:101CA0006D3281F4C50109C0C5010296D501BC9110
:101CB000BBABB7FFB9CFB195BBABE0E14E2AFFEDAF
:101CC0004F22B2CF6B3211F46983ADCF6E3209F07F
:101CD0003AC0ECA5FDA59F012F5F3F4F3DA72CA764
:101CE00084918A3221F0682F20E030E021C0C501C4
:101CF0000296D5014D915C9157FF02C04FEF5FEF07
:101D00004AAB92CFC90173E0880F991F7A95E1F72A
:101D1000220F331F280F391F260F311D205330404B
:101D2000ECA5FDA5AF014F5F5F4F5DA74CA7649188
:101D3000862F80538A3030F3A90137FF02C04FEF5E
:101D40005FEF4AAB7DCF603329F444FC6CCF50E2A7
:101D5000452A69CF862F81538930E8F420E030E0AE
:101D6000C90143E0880F991F4A95E1F7220F331FFD
:101D7000280F391F260F311D20533040ECA5FDA53B
:101D8000CF0101969DA78CA76491862F80538A303E
:101D900038F32BAB55CF683619F494E0492A43CF7A
:101DA0006C3619F4A1E04A2A3ECF562EF501B3E66F
:101DB0006B1741F422E030E0A20EB31E80818C83C9
:101DC000198225C134E4631739F044E6641731F011
:101DD00059E66517C1F502C081E0482A40FE09C0F6
:101DE000A4E0B0E0AA0EBB1E208131814281538164
:101DF0000BC042E050E0A40EB51E808191819C0191
:101E0000442737FD4095542F2EA73FA748AB59AB29
:101E10008EA59FA5A8A9B9A9B7FF11C02EA53FA55A
:101E200048A959A950954095309521953F4F4F4F5E
:101E30005F4F2EA73FA748AB59AB3DE23983562EE3
:101E40001AE0312E80C04FE4641721F05FE6651779
:101E500031F402C081E0482AB8E03B2E73C090E71D
:101E6000691791F4A2E0B0E0AA0EBB1E80819181B7
:101E70009C0140E050E02EA73FA748AB59AB30E4AF
:101E8000432AA8E75A2E5CC06337E1F5D501CD900F
:101E9000DC90C114D10489F4B8E2BC83EEE6ED8392
:101EA000F5E7FE832CE62F83288739E239871A86E7
:101EB000F4E0CF2ED12CCC0EDD1E4AA947FD10C078
:101EC000552747FD5095C60160E070E00E94334BF6
:101ED000009771F0182F1C195AA951174CF009C01E
:101EE000F60101900020E9F731971E2F1C1901C05F
:101EF0001AA982E090E0A80EB91E1982E3E75E2ECF
:101F000040E08CC0653521F0653739F4562E02C0AB
:101F100091E0492A7AE0372E15C0683519F0683704
:101F200009F06FC043FE0BC02EA53FA548A959A9D3
:101F3000211531054105510511F030E4432A562E93
:101F400060E1362E19824AA947FD02C05FED4522A5
:101F50008EA59FA5A8A9B9A90097A105B10549F427
:101F60009AA9992331F45CE2C52ED12CCC0EDD1E4A
:101F700044C04CE2C42ED12CCC0EDD1EEEA4FFA436
:101F800008A919A9632C772488249924C801B701CA
:101F9000A40193010E94E54D6A3020F430E3232E22
:101FA000260E08C027E5222E260EA8E55A1611F4A3
:101FB000BFED2B22F60122926F01C801B701A401E7
:101FC00093010E94E54DC901DA018EA79FA7A8AB36
:101FD000B9ABE614F7040805190518F07C018D016A
:101FE000D5CFF8E03F1649F443FE07C020E32216A0
:101FF00021F0D601E0E3EE936D011CA91C194AA95A
:102000000DC0662309F456C06C831982562E94E0E5
:10201000C92ED12CCC0EDD1E40E011E0042F011B97
:1020200007FD00E08981882319F0812F8F5F06C0AA
:1020300046FC02C0812F02C0812F8E5F782E700E69
:10204000E42CFF2480E3882E912C8E209F20811485
:10205000910421F48BA987190E94830D898188231B
:1020600029F0CE01019661E070E009C0E6FE09C0EA
:10207000F0E3FA835B82CE01029662E070E00E9498
:10208000A40D20E28216910421F48BA987190E94E5
:10209000780D802F0E94780D612F772767FD70954E
:1020A000C6010E94A40DE4FE9BCD8BA987190E9456
:1020B000830D96CDE5960FB6F894DEBF0FBECDBF6B
:1020C000CF91DF911F910F91FF90EF90DF90CF9014
:1020D000BF90AF909F908F907F906F905F904F9048
:1020E0003F902F9008951F920F920FB60F921124D8
:1020F0002F933F935F936F937F938F939F93AF93B0
:10210000BF938091DB03882329F08091DB0381500A
:102110008093DB038091DE0381508093DE038F5F29
:10212000C9F489E08093DE0390E080911003882356
:1021300009F491E090931003992319F481E08093BE
:10214000D6038091D4039091D50301969093D50343
:102150008093D4038091D9039091DA030297B8F069
:102160008091D9039091DA0301979093DA038093D9
:10217000D9038091D9039091DA0320910B03309118
:102180000C0382239323892B09F071C006C08FEFC3
:102190009FEF90930C0380930B03809100018A3092
:1021A00039F404C05A9A05C0479A03C05A9801C02E
:1021B00047988091940783FF60C0349B0AC0809148
:1021C000D7039091D80301969093D8038093D703B7
:1021D00054C08091D7039091D803892B69F18091E5
:1021E000D7039091D8038A56914030F52091D703B8
:1021F0003091D8038091D7039091D80369E270E0C1
:102200000E94BE4D260F371F3093D8032093D7036B
:102210008091D7039091D8030B9750F08091D7030A
:102220009091D8030A97909362048093610404C04C
:102230001092620410926104809161049091620492
:102240002091630430916404845E9D4F821B930B44
:1022500068E671E00E94D24D845B904090936604E2
:10226000809365041092D8031092D70306C0809122
:1022700000018A3009F098CF95CFBF91AF919F911F
:102280008F917F916F915F913F912F910F900FBE32
:102290000F901F9018958091D4039091D5030B96C1
:1022A0009093E0038093DF0382E085BD83EA84BDE1
:1022B00017BC88E788BD86E086BD83EC8093B000BC
:1022C00084E08093B100E0E7F0E080818260808369
:1022D000EEE6F0E08081816080838AE08093B30045
:1022E0001092B20008952091D4033091D5032F5F4E
:1022F0003F4F280F391FC90108952091D403309111
:10230000D503821B930B80709078892F8695089552
:102310002091D4033091D5032F5F3F4F280F391FF1
:102320008091D4039091D503A901481B590BCA0190
:1023300080709078892F869599F308952091D40321
:102340003091D5032F5F3F4F280F391F4FEE02C04A
:1023500040937A008091D4039091D503B901681B12
:10236000790BCB0180709078892F869589F3089539
:102370001F920F920FB60F9211248F939F9380910B
:10238000090390910A03892B11F05F9A01C05F98AD
:1023900083E08093B000809170008E7F8093700006
:1023A0009F918F910F900FBE0F901F9018951F92C5
:1023B0000F920FB60F9211242F933F934F935F9379
:1023C0006F937F938F939F93AF93BF93CF93DF933D
:1023D000EF93FF938091090390910A03049709F00A
:1023E0008DC08091AA0390E0880F991F40910D0342
:1023F00050910E039A01220F331F240F351F820FB5
:10240000931F64E070E00E94D24D70930E036093BE
:102410000D039B01205D3F4F3093DD032093DC03D0
:102420008091AF0743E0849FC0011124281739072A
:1024300040F08091B007849FC00111248217930758
:1024400020F49093DD038093DC038091D2072091E8
:102450002504309126044091270450912804C0910E
:10246000DC03D091DD0380FF0EC06091AE0770E009
:1024700080E090E00E94934D20E030E440E050E0A6
:102480000E94074E14C06091AE0770E080E090E0BB
:102490000E94934D20E030E440E050E00E94074E5F
:1024A00050954095309521953F4F4F4F5F4FC20F4C
:1024B000D31FD093DD03C093DC032091DC03309164
:1024C000DD0330932B0720932A07C9016FEF70E0DB
:1024D0000E94BE4D8D9740F4235B3F4F3093DD0348
:1024E0002093DC0383E101C080E680930F03809199
:1024F000DC0380958093B30083EC40C08091090396
:1025000090910A03892B39F18091090390910A0374
:10251000049708F52091DC033091DD032F3F31054E
:1025200061F058F05F9A83E08093B0002F5F3040F5
:102530003093DD032093DC0323C083E88093B00055
:1025400080910F038093B30081E090E090930A03A1
:102550008093090315C08091090390910A03892B88
:1025600079F48091B10790E0880F991F880F991F27
:1025700090930A03809309035F9883E08093B000EF
:102580008091090390910A03019790930A03809325
:102590000903FF91EF91DF91CF91BF91AF919F918F
:1025A0008F917F916F915F914F913F912F910F90FC
:1025B0000FBE0F901F90189510927C008FEE8093A5
:1025C0007A0008951F920F920FB60F921124CF92A6
:1025D000DF92EF92FF920F931F932F933F934F93AE
:1025E0005F936F937F938F939F93AF93BF93EF937B
:1025F000FF9310927A00809101048F5F8093010411
:102600008150853009F486C0863090F4823009F418
:1026100040C0833030F48823F1F0813009F09DC24E
:102620002FC0833009F441C0843009F096C25AC0EB
:10263000883009F4D5C0893038F4863009F483C075
:10264000873009F08AC2AFC0893009F4E6C08A3009
:1026500009F083C2D9C1809178009091790090935C
:1026600000048093FF0381E0809302048091F603CD
:102670009091F70301969093F7038093F60371C24C
:1026800080917800909179009093FE038093FD03F0
:10269000A5C080917800909179009093FC0380937D
:1026A000FB0384E0809302045CC2409111035091CB
:1026B000120380917800909179009A01220F331FC4
:1026C000240F351F63E070E00E94BE4D260F371FB8
:1026D000369527953695279530931203209311034D
:1026E00086E0E0CF209178003091790080911B0442
:1026F00090911C04821B930B909345078093440791
:1027000080914407909145079093E8038093E703F5
:1027100087E0C8CF809178009091790020911904CA
:1027200030911A04821B930B9093500780934F07AC
:1027300080914F07909150079093EA038093E903AB
:10274000109202040EC2809100018A3069F48091D7
:102750007800909179002091FF0330910004820F5E
:10276000931F9695879519C04091FF0350910004DF
:10277000843169F420917800309179008827992775
:10278000841B950B821B930B81509C4F06C080913C
:10279000780090917900840F951F9093E6038093C1
:1027A000E50381E07FCF809100012091FD0330910E
:1027B000FE038A3049F48091780090917900820F6D
:1027C000931F9695879506C0809178009091790027
:1027D000820F931F9093E4038093E30382E062CF20
:1027E000809100012091FB033091FC038A3049F471
:1027F0008091780090917900820F931F969587952C
:1028000006C08091780090917900820F931F909379
:10281000E2038093E10385E045CF609178007091F9
:102820007900E0901F04F0902004009121041091A1
:102830002204882777FD8095982F0E947C4CA80160
:1028400097010E94784B0E94494C7093EC0360936F
:10285000EB038091EB039091EC0302970CF43EC0E4
:1028600060911F04709120048091210490912204B2
:1028700020E030E84BE354E40E94DD4B88230CF069
:1028800078C060911F047091200480912104909180
:1028900022042AE037ED43EA5CE30E94794B60931F
:1028A0001F0470932004809321049093220480914C
:1028B000A0049091A104845F914008F05AC06091F7
:1028C0001F047091200480912104909122042DEC2A
:1028D0003CEC4CEC5DE30E94794B43C08091EB03F0
:1028E0009091EC038F5F9F4F0CF043C060911F04E9
:1028F00070912004809121049091220420E030E81E
:1029000049E054E40E942C4D18169CF560911F0478
:102910007091200480912104909122042AE037EDE7
:1029200043EA5CE30E94784B60931F047093200499
:1029300080932104909322048091A0049091A1049B
:10294000845F9140B0F460911F04709120048091E5
:102950002104909122042DEC3CEC4CEC5DE30E94B0
:10296000784B60931F04709320048093210490930C
:10297000220481E08093F2038091780090917900A5
:10298000909347078093460720915D0430915E0441
:1029900040915F04509160048091EB039091EC03AF
:1029A000AA2797FDA095BA2F820F931FA41FB51FCA
:1029B00080935D0490935E04A0935F04B0936004E1
:1029C000E0905D04F0905E0400915F04109160045B
:1029D00060915D0470915E0480915F049091600449
:1029E00020E034E040E050E00E94074EE21AF30A93
:1029F000040B150BE0925D04F0925E0400935F04FB
:102A00001093600483E04ECE809154079091550757
:102A10002091780030917900820F931F9093550791
:102A20008093540780914C078F5F80934C0780916F
:102A30004C07853008F491C080917800909179001E
:102A4000909318038093170310924C076091F4033E
:102A50007091F5038091F303992787FD90952FEFEF
:102A600030E0829F6001839FD00C929FD00C112494
:102A7000209148073091490780915407909155075C
:102A800040917E0450917F04281B390B241B350B89
:102A90002C0D3D1D8091A10390E0AC01249FC0014D
:102AA000259F900D349F900D11249B0153E0220F20
:102AB000331F5A95E1F7261B370B820F931F68E0EF
:102AC00070E00E94D24D7093F5036093F40320915F
:102AD000540730915507E0901303F09014030091D0
:102AE000150310911603C801B701660F771F881FE1
:102AF000991F6E0D7F1D801F911F442737FD409544
:102B0000542F620F731F841F951F24E030E040E0B4
:102B100050E00E94074EC901DA018093130390939D
:102B20001403A0931503B093160320914807309126
:102B300049078091130390911403A0911503B0915C
:102B40001603C20ED31EC81AD90AD0927F04C092AF
:102B50007E041092550710925407109202041092AE
:102B600001048091020480937C00809101048823F9
:102B700019F08FEE80937A00FF91EF91BF91AF91A2
:102B80009F918F917F916F915F914F913F912F9185
:102B90001F910F91FF90EF90DF90CF900F900FBE9D
:102BA0000F901F901895BF92CF92DF92EF92FF92F5
:102BB0000F931F931092F8031092F9031092FA03E7
:102BC0000CE8FF24F39498E0B92E8AE0D82E15EF94
:102BD000E12EBFEECB2E05C0133019F40B3008F0F8
:102BE00009E08091E1039091E2038C5F934024F42B
:102BF0008091190381500CC08091E1039091E20310
:102C00008750944014F411E006C0809119038F5F3F
:102C10008093190310E08091E3039091E4038C5FAB
:102C2000934024F480911A0381500AC08091E303F9
:102C30009091E4038750944034F080911A038F5FA1
:102C400080931A0301C01F5F8091E5039091E60312
:102C50008C5F934024F480911B0381500AC08091C3
:102C6000E5039091E6038750944034F080911B0374
:102C70008F5F80931B0301C01F5FB09208040E9406
:102C8000971D809119038A3020F4F092F803D092B6
:102C9000190380911903863F20F0F092F803E09227
:102CA000190380911A038A3020F4F092F903D0922C
:102CB0001A0380911A03863F20F0F092F903E09204
:102CC0001A0380911B038A3020F4F092FA03D09209
:102CD0001B0380911B03863F20F0F092FA03E092E1
:102CE0001B03809108048823E1F710924C07C092DF
:102CF0007A0080914C078823E1F30A3020F48AE0BF
:102D000090E00E949E11015009F066CF86E490E0A9
:102D10000E949E111F910F91FF90EF90DF90CF9036
:102D2000BF900895EF92FF920F931F93CF93DF937D
:102D3000F999FECF23E0E22E20E0F22EF2BCE1BCB6
:102D4000F89A80B5C82FD0E0C531D10508F02A9790
:102D5000C7BD1092F30384E690E00E949E1180911B
:102D600017039091180382559340E8F4C0E0D0E037
:102D70001AC0C7BD82E390E00E949E1100D00F925E
:102D8000EDB7FEB71182138302830E94B80D8091C4
:102D90001703909118030F900F900F908255934056
:102DA00038F0219602C004E212E0CA3FD10508F3D0
:102DB0008C2FF999FECF1FBAF2BCE1BC80BD0FB6D3
:102DC000F894FA9AF99A0FBE809351078CE291E039
:102DD0000E949E11DF91CF911F910F91FF90EF9074
:102DE0000895E6E2F3E080E2819393E0E637F907A5
:102DF000D9F70895FF920F931F9340917603809126
:102E00000604481710F44093060480910704282F05
:102E100030E080FF0AC090910604992321F0915080
:102E20009093060402C04093060421FF0AC09091CB
:102E30000604941719F41092060403C09F5F909340
:102E40000604237030702330310511F4109206040B
:102E5000E6E2F3E080E2819323E0E637F207D9F778
:102E6000209106042A3088F481E18093050400D083
:102E700000D00F92EDB7FEB7319681E0ADB7BEB787
:102E800011968C938FE495E010C080E18093050447
:102E900000D000D00F92EDB7FEB7319681E0ADB70C
:102EA000BEB711968C938AE495E092838183238345
:102EB00014820E94B80D0F900F900F900F900F90FA
:102EC00010910604153009F49DC2163090F41230AA
:102ED00009F40AC1133030F4112309F1113009F05B
:102EE00015C686C0133009F47BC1143009F00EC634
:102EF000EAC1183009F4A4C4193038F4163009F4C2
:102F0000F3C3173009F002C66EC41A3009F43EC587
:102F10001A3008F4E1C41B3009F0F8C586C51092D8
:102F2000050400D00F9211E0EDB7FEB711838AE3DC
:102F300095E0938382830E94B80D84E18093050419
:102F4000209100018DB79EB70A970FB6F8949EBFE7
:102F50000FBE8DBFEDB7FEB73196ADB7BEB71196B8
:102F60001C9385E295E092838183822F6AE00E9420
:102F7000B24D83831482822F0E94B24D95831682B4
:102F80001086178287E490E09287818789E690E037
:102F9000948783870E94B80D88E280930504EDB77B
:102FA000FEB73D960FB6F894FEBF0FBEEDBF0E9470
:102FB000DE0200D000D00F92EDB7FEB73196ADB76C
:102FC000BEB711961C9328E135E0328321838383B9
:102FD00014820E94B80D8CE3809305040F900F902B
:102FE000EDB7FEB7118388E095E09383828376C0C6
:102FF0008091940780FF56C01092050400D000D045
:103000000F92EDB7FEB73196ADB7BEB711961C93D0
:1030100089EF94E09283818380917E0490917F0474
:10302000948383830E94B80D84E180930504EDB7F7
:10303000FEB73196ADB7BEB711961C938AEE94E0F9
:10304000928381838091800490918104948383830F
:103050000E94B80D88E280930504209117033091F7
:103060001803EDB7FEB73196ADB7BEB711961C93F6
:103070008BED94E092838183348323830E94B80D87
:103080008CE380930504EDB7FEB73196ADB7BEB7BC
:1030900011961C938CEC94E092838183809151076C
:1030A0008383CCC384E18093050400D00F92EDB7F5
:1030B000FEB7118385EC94E0938382830E94B80D60
:1030C00088E280930504ADB7BEB711961C931197A3
:1030D00087EB94E013969C938E9312970E94B80D01
:1030E0000F900F900F9017C51092050400D00F920B
:1030F000FF24F394EDB7FEB7F1828DEA94E0938359
:1031000082830E94B80D84E18093050400D000D032
:103110000DB71EB70F5F1F4FADB7BEB71196FC922C
:103120008EE994E0F8019283818360912504709187
:103130002604809127049091280420E034E040E0A8
:1031400050E00E94074ED80113962D933D934D9366
:103150005C9316970E94B80D88E2809305040DB722
:103160001EB70F5F1F4FEDB7FEB7F1828FE894E0F7
:10317000D80112969C938E93119760912D047091B3
:103180002E0480912F049091300420E034E040E040
:1031900050E00E94074EF801238334834583568311
:1031A0000E94B80D8CE38093050420916104309156
:1031B00062040F900F90EDB7FEB73196ADB7BEB772
:1031C0001196FC9280E894E0928381833483238378
:1031D0000E94B80D0F900F900F900F900F909BC40E
:1031E00010920504209160073091610740916207B9
:1031F00050916307EDB7FEB737970FB6F894FEBF4F
:103200000FBEEDBF319611E0ADB7BEB711961C935E
:1032100080E794E0928381833483238356834583BC
:103220000E94B80D84E180930504209164073091D9
:1032300065074091660750916707EDB7FEB7319675
:10324000ADB7BEB711961C9380E694E0928381835C
:1032500034832383568345830E94B80D88E280938C
:103260000504209168073091690740916A075091E1
:103270006B07EDB7FEB73196ADB7BEB711961C938D
:1032800080E594E09283818334832383568345834E
:103290000E94B80D8CE38093050420916C07309157
:1032A0006D0740916E0750916F07EDB7FEB73196ED
:1032B000ADB7BEB711961C9380E494E092838183EE
:1032C0003483238316C110920504E0918C07F0E04B
:1032D000EE0FFF1FE25AF84F40815181E0918D07B8
:1032E000F0E0EE0FFF1FE25AF84F208131818DB7D9
:1032F0009EB707970FB6F8949EBF0FBE8DBFEDB770
:10330000FEB7319611E0ADB7BEB711961C9380E3BE
:1033100094E09283818354834383368325830E9480
:10332000B80D84E180930504E0918E07F0E0EE0F84
:10333000FF1FE25AF84F40815181E0918F07F0E082
:10334000EE0FFF1FE25AF84F20813181EDB7FEB733
:103350003196ADB7BEB711961C9380E294E092838C
:10336000818354834383368325830E94B80D88E28A
:1033700080930504E0919007F0E0EE0FFF1FE25A02
:10338000F84F40815181E0919107F0E0EE0FFF1F6F
:10339000E25AF84F20813181EDB7FEB73196ADB7D3
:1033A000BEB711961C9380E194E09283818354838D
:1033B0004383368325830E94B80D8CE380930504F4
:1033C000E0919207F0E0EE0FFF1FE25AF84F4081C4
:1033D0005181E0919307F0E0EE0FFF1FE25AF84FA2
:1033E00020813181EDB7FEB73196ADB7BEB71196EA
:1033F0001C9380E094E092838183548343833683DB
:10340000258379C31092050400D00F9211E0ADB767
:10341000BEB711961C93119782EF93E013969C937D
:103420008E9312970E94B80D809100010F900F901B
:103430000F908A3009F060C084E1809305042091E8
:10344000E1033091E20340910F0450911004EDB775
:10345000FEB737970FB6F894FEBF0FBEEDBF31969B
:10346000ADB7BEB711961C9383EE93E09283818330
:10347000241B350B34832383568345830E94B80D68
:1034800088E2809305042091E3033091E4034091A6
:10349000110450911204EDB7FEB73196ADB7BEB727
:1034A00011961C9384ED93E092838183241B350B4A
:1034B00034832383568345830E94B80D8CE3809325
:1034C000050440911304509114042091E5033091B8
:1034D000E603EDB7FEB73196ADB7BEB711961C93B4
:1034E00085EC93E092838183CA01821B930B9483C2
:1034F000838356834583FFC28B3019F0843109F0F2
:1035000070C084E1809305044091E1035091E2038F
:1035100080910F04909110042DB73EB72750304092
:103520000FB6F8943EBF0FBE2DBFEDB7FEB7319674
:1035300011E0ADB7BEB711961C9326EB33E0328392
:103540002183481B590B5483438362E070E00E943F
:10355000D24D768365830E94B80D88E2809305047E
:103560004091E3035091E40380911104909112047F
:10357000EDB7FEB73196ADB7BEB711961C9327EAEB
:1035800033E032832183481B590B5483438362E029
:1035900070E00E94D24D768365830E94B80D8CE363
:1035A0008093050480911304909114044091E503E5
:1035B0005091E603EDB7FEB73196ADB7BEB71196A1
:1035C0001C9328E933E0328321839C01241B350BB3
:1035D0003483238362E070E00E94D24D768365835A
:1035E0008AC28D3009F097C284E18093050440912E
:1035F000E1035091E20380910F04909110042DB7E4
:103600003EB7295030400FB6F8943EBF0FBE2DBFD5
:10361000EDB7FEB73196ADB7BEB711961C9324E84F
:1036200033E032832183481B590B5483438362E088
:1036300070E00E94D24D7683658380911903878361
:1036400010860E94B80D88E2809305044091E30340
:103650005091E4038091110490911204EDB7FEB7EC
:103660003196ADB7BEB711961C9320E733E0328395
:103670002183481B590B5483438362E070E00E940E
:10368000D24D7683658380911A03878310860E94CA
:10369000B80D8CE380930504809113049091140479
:1036A0004091E5035091E603EDB7FEB73196ADB713
:1036B000BEB711961C932CE533E0328321839C0125
:1036C000241B350B3483238362E070E00E94D24DCB
:1036D0007683658380911B03878310860E94B80DD3
:1036E000EDB7FEB739960CC21092050400D00F92C8
:1036F000FF24F394ADB7BEB71196FC9211978FE4F7
:1037000093E013969C938E9312970E94B80D84E1D8
:10371000809305042091E9033091EA0300D000D0A2
:10372000EDB7FEB73196ADB7BEB71196FC9280E407
:1037300093E0928381833483238380911904909151
:103740001A04968385830E94B80D88E2809305044D
:103750002091E7033091E803EDB7FEB73196ADB79E
:10376000BEB71196FC9281E393E092838183348308
:10377000238380911B0490911C04968385830E946F
:10378000B80D8CE38093050460911F0470912004B0
:1037900080912104909122040DB71EB70F5F1F4F37
:1037A000EDB7FEB7F18222E233E0D80112963C93E6
:1037B0002E9311972091FA073091FB0714963C93B2
:1037C0002E9313970E94494CF801768365830E94DB
:1037D000B80D2DB73EB7295F3F4F0FB6F8943EBFE7
:1037E0000FBE2DBF98C184E1809305042091110381
:1037F0003091120300D000D00F92EDB7FEB7319692
:1038000011E0ADB7BEB711961C9383E193E09283AC
:103810008183348323830E94B80D88E2809305045A
:1038200020917404EDB7FEB73196ADB7BEB71196CF
:103830001C9384E093E09283818323831482C8CC19
:103840001092050400D00F9211E0EDB7FEB711837E
:1038500085EF92E0938382830E94B80D84E1809388
:103860000504209165043091660400D0EDB7FEB7E1
:103870003196ADB7BEB711961C9386EE92E0928357
:103880008183348323830E94B80D88E280930504EA
:103890002091610430916204EDB7FEB73196ADB767
:1038A000BEB711961C9387ED92E092838183348397
:1038B00023830E94B80D8CE3809305042091630458
:1038C00030916404EDB7FEB73196ADB7BEB711962F
:1038D0001C9388EC92E078CC1092050400D000D0C4
:1038E0000F92EDB7FEB7319611E0ADB7BEB71196A6
:1038F0001C938CEB92E09283818380916C04909175
:103900006D04948383830E94B80D84E18093050441
:10391000EDB7FEB73196ADB7BEB711961C9380EBED
:1039200092E09283818380916E0490916F049483DE
:1039300083830E94B80D88E280930504EDB7FEB73B
:103940003196ADB7BEB711961C9384EA92E092838C
:1039500081838091700490917104948383830E9489
:10396000B80D8CE380930504EDB7FEB73196ADB783
:10397000BEB711961C9388E992E09283818380916F
:103980007204909173049483838322CC1092050473
:1039900000D00F9211E0EDB7FEB7118380E992E0FD
:1039A000938382830E94B80D84E18093050400D044
:1039B000EDB7FEB73196ADB7BEB711961C9382E84E
:1039C00092E0928381838091AA03838314820E9470
:1039D000B80D88E280930504EDB7FEB73196ADB718
:1039E000BEB711961C9384E792E092838183809105
:1039F000DC039091DD03948383830E94B80D8CE3F4
:103A00008093050400D0EDB7FEB73196ADB7BEB7D1
:103A100011961C9386E692E0928381838091AF0792
:103A2000838314828091B00764C01092050400D093
:103A30000F9211E0ADB7BEB711961C93119786E5B2
:103A400092E013969C938E9312970E94B80D84E196
:103A50008093050400D000D0EDB7FEB73196ADB726
:103A6000BEB711961C9386E492E092838183809185
:103A70006006992787FD90959483838380916106E2
:103A8000992787FD9095968385830E94B80D88E2DB
:103A900080930504EDB7FEB73196ADB7BEB711966A
:103AA0001C9386E392E092838183809163068383F3
:103AB000148280916206992787FD9095968385836D
:103AC0000E94B80D8CE380930504EDB7FEB73196E4
:103AD000ADB7BEB711961C9386E292E092838183C4
:103AE00080916406992787FD9095948383838091C4
:103AF0006706858316820E94B80DEDB7FEB737962C
:103B00000FB6F894FEBF0FBEEDBF05C01150109365
:103B1000760310920604109207041F910F91FF90F4
:103B200008951092B9008AE28093B800089585EA5A
:103B30008093BC0080E0089584E98093BC000895E0
:103B40004CEB50E084E9DA018C93109208042BEBE3
:103B500030E0F90180811092090480E88C93109282
:103B6000BD001092BA001082E9EBF0E01082A8EBE1
:103B7000B0E01C9210828AE28C9385EADA018C9381
:103B80001082F901108285E88C9308951092B90093
:103B90008093BB0085E88093BC0080E008951F926D
:103BA0000F920FB60F9211248F939F93EF93FF9371
:103BB000809108048F5F809308048150E82FF0E023
:103BC000E731F10508F093C0E25CFF4FEE0FFF1FF5
:103BD0000590F491E02D09948091090490E0899674
:103BE000880F991F0CC0809109048F5F809309048E
:103BF000815029C0833009F07AC080911408109256
:103C0000B9008093BB0085E88093BC0070C084E954
:103C10008093BC0080910904843018F41092080449
:103C20004AC01092090447C080910A04880F8D5A37
:103C3000E6CF8091BB00E0910A04F0E0EA5AF84F29
:103C4000808380910A04813041F0813018F0823005
:103C500089F606C08091E707D2CF8091F007CFCFD9
:103C600080911108CCCF80910A049091BB00E82F7D
:103C7000F0E0EA5AF84F94838F5F80930A0484300F
:103C800058F110920A0428C01092B90080E1B9CF0F
:103C900080911903B4CF1092B90082E1B2CF809124
:103CA0001A03ADCF84E98093BC008AE090E0909342
:103CB00092038093910385EAA7CF1092B90088E917
:103CC000A0CF1092B90084E19CCF80911B0397CFC5
:103CD0001092B90080E895CF84E98093BC008AE017
:103CE00090E0909392038093910310920804809146
:103CF000BC0080688093BC00FF91EF919F918F91F1
:103D00000F900FBE0F901F90189583EC8093810049
:103D1000EFE6F0E0808180628083109214041092BC
:103D200013041092120410921104109210041092B5
:103D30000F0408951F920F920FB60F9211240F9344
:103D40001F932F933F934F935F936F937F938F9323
:103D50009F93AF93BF93CF93DF93EF93FF93209104
:103D600086003091870080910D0490910E04281BED
:103D7000390B809186009091870090930E04809378
:103D80000D04C9018D54944000910B0410910C0452
:103D9000835F9A4160F40430110514F010927703A8
:103DA00081E090E090930C0480930B048AC00A3069
:103DB00011050CF086C0C9018B5F9040845B914077
:103DC00008F068C0E901C25DD140F801EE0FFF1FA5
:103DD000E25AF84F808191819E01281B390BC9015D
:103DE00037FF03C0909581959F4F06974CF48091C3
:103DF0007404883C28F480917404865F8093740472
:103E0000F801EE0FFF1FE25AF84F20813181C901FE
:103E1000880F991F820F931F8C0F9D1F64E070E025
:103E20000E94D24D9B01CE010196861797071CF484
:103E30002150304006C021976C177D0714F42F5F86
:103E40003F4F80917404E801CC0FDD1F833CB8F034
:103E5000FE01E25AF84F80819181A901481B590B5C
:103E6000CA0163E070E00E94D24DCB01880F991F18
:103E7000860F971FCC58D84F9983888304C0CC589D
:103E8000D84F19821882F801EE0FFF1FE25AF84F3F
:103E900031832083F8013196F0930C04E0930B04F6
:103EA000E530F10511F45D9A06C05D98E630F10544
:103EB00011F45C9A05C05C98379711F45B9A01C0C5
:103EC0005B98FF91EF91DF91CF91BF91AF919F915F
:103ED0008F917F916F915F914F913F912F911F91A2
:103EE0000F910F900FBE0F901F90189581E0809357
:103EF0008C0782E080938D0783E080938E0784E0B7
:103F000080938F0785E08093900786E080939107E8
:103F100087E08093920788E08093930708958091CB
:103F20009007E82FF0E0EE0FFF1FE25AF84F808174
:103F3000918120916C0430916D0484589F4F8217B9
:103F400093071CF02F5F3F4F0CC0808191818358F5
:103F50009F4F821793074CF42115310531F0215002
:103F6000304030936D0420936C0480919107E82FCA
:103F7000F0E0EE0FFF1FE25AF84F8081918120910F
:103F80006E0430916F0484589F4F821793071CF082
:103F90002F5F3F4F0CC08081918183589F4F8217C4
:103FA00093074CF42115310531F021503040309306
:103FB0006F0420936E0480919207E82FF0E0EE0FDB
:103FC000FF1FE25AF84F8081918120917004309157
:103FD000710484589F4F821793071CF02F5F3F4F47
:103FE0000CC08081918183589F4F821793074CF4B6
:103FF0002115310531F02150304030937104209368
:10400000700480919307E82FF0E0EE0FFF1FE25A53
:10401000F84F80819181209172043091730484580B
:104020009F4F821793071CF02F5F3F4F0CC080817A
:10403000918183589F4F821793074CF421153105C6
:1040400031F02150304030937304209372048091FA
:104050006C0490916D0497FF05C010926D0410924E
:104060006C040AC08F3F910539F034F08FEF90E077
:1040700090936D0480936C0480916E0490916F0412
:1040800097FF05C010926F0410926E040AC08F3F14
:10409000910539F034F08FEF90E090936F048093A6
:1040A0006E04809170049091710497FF05C0109286
:1040B0007104109270040AC08F3F910539F034F0FA
:1040C0008FEF90E09093710480937004809172045C
:1040D0009091730497FF05C01092730410927204BC
:1040E00008958F3F910539F034F08FEF90E0909371
:1040F00073048093720408952F923F924F925F92BF
:104100006F927F928F929F92AF92BF92CF92DF92E7
:10411000EF92FF920F931F93DF93CF93CDB7DEB74C
:1041200029970FB6F894DEBF0FBECDBF2091E503EF
:104130003091E6038091130490911404821B930B39
:1041400090931E0880931D082091E5033091E603AB
:1041500080910B0890910C08821B930B90938B0716
:1041600080938A078091E3039091E40320911104E6
:1041700030911204821B930B9093E6078093E5071E
:104180008091E1039091E20320910F04309110049B
:10419000821B930B9093F2078093F1078091E507C0
:1041A0009091E60790933B0780933A076091E9036B
:1041B0007091EA03882777FD8095982F2CE030E0F6
:1041C00040E050E00E94934D9B01AC0160911808C3
:1041D00070911908882777FD8095982F620F731FBB
:1041E000841F951F22E030E040E050E00E94074E1F
:1041F00030931908209318086091E7037091E80341
:10420000882777FD8095982F2CE030E040E050E043
:104210000E94934D9B01AC0160912B0870912C087A
:10422000882777FD8095982F620F731F841F951F35
:1042300022E030E040E050E00E94074E30932C082E
:1042400020932B086091EB037091EC03882777FD96
:104250008095982F2091FA073091FB07442737FD6E
:104260004095542F620F731F841F951F22E030E08A
:1042700040E050E00E94074E3093FB072093FA077E
:104280002091E9033091EA03C901880F991F820F39
:10429000931F880F991F880F991FAA2797FDA09534
:1042A000BA2F209135043091360440913704509153
:1042B0003804280F391F4A1F5B1F209335043093A1
:1042C000360440933704509338042091E70330912B
:1042D000E803C901880F991F820F931F880F991F48
:1042E000880F991FAA2797FDA095BA2F209139040E
:1042F00030913A0440913B0450913C04280F391FFF
:104300004A1F5B1F2093390430933A0440933B04C7
:1043100050933C042091E9033091EA038091040812
:1043200090910508820F931F9093050880930408CD
:104330002091E7033091E8038091200890912108B3
:10434000820F931F909321088093200880911D0471
:1043500090911E04019690931E0480931D04E0909A
:104360004607F0904707A0901F04B0902004C0902B
:104370002104D090220460913D0470913E0480910C
:104380003F04909140040E947C4C3B014C0100276B
:10439000F7FC0095102FC801B7010E947C4CA601C4
:1043A00095010E94784B9B01AC01C401B3010E94AE
:1043B000794B0E94494C60933D0470933E04809376
:1043C0003F049093400480911D0890911E089C0129
:1043D000442737FD4095542F809127089091280855
:1043E000A0912908B0912A08280F391F4A1F5B1F86
:1043F00020932708309328084093290850932A08CF
:1044000080911D0890911E087C010027F7FC009503
:10441000102F8091550490915604A0915704B091AB
:104420005804E80EF91E0A1F1B1FEE82FF82088740
:104430001987E0925504F0925604009357041093A4
:104440005804283707E1300707E0400700E050072D
:1044500064F0285737414740504020932708309355
:1044600028084093290850932A08809127089091A2
:104470002808A0912908B0912A08B7FF0CC08858D5
:10448000984EA84FBF4F8093270890932808A09379
:104490002908B0932A08109186041D83112309F07E
:1044A00094C080918704882309F08FC0809194077D
:1044B00086FF8BC060918A0770918B07E09094040F
:1044C000FF2400E010E0882777FD8095982F209149
:1044D00045043091460440914704509148040E949D
:1044E000934D20E038E040E050E00E94074ECA01C2
:1044F000B901A80197010E94934D20E030E140E00E
:1045000050E00E94074ED22EC32EB42EA52E20932B
:10451000EA043093EB044093EC045093ED04609173
:104520008A0770918B07882777FD8095982F2091B7
:104530004D0430914E0440914F04509150040E941C
:10454000934D20E038E040E050E00E94074ECA0161
:10455000B901A80197010E94934D20E030E140E0AD
:1045600050E00E94074EB901FA012093E6047093CF
:10457000E7044093E804F093E9042D2D3C2D4B2DE6
:104580005A2DC901DA01B7FF07C0B095A0959095E3
:1045900081959F4FAF4FBF4F81389105A105B10560
:1045A00084F4CB01DF01B7FF07C0B095A0959095CB
:1045B00081959F4FAF4FBF4F81389105A105B10540
:1045C000A4F081E08093690410C01092E604109278
:1045D000E7041092E8041092E9041092EA041092A1
:1045E000EB041092EC041092ED048091E507909199
:1045F000E6072091EA043091EB044091EC045091DD
:10460000ED0429833A834B835C83820F931F90933D
:10461000E6078093E5070091E5071091E6076090B3
:10462000E6047090E7048090E8049090E90480919B
:104630009504282E332444245524C201B101A40139
:1046400093010E94934D20E032E040E050E00E9450
:10465000074E020F131F1093E6070093E507209102
:10466000E5073091E607442737FD4095542F8091A8
:10467000510490915204A0915304B0915404820FBC
:10468000931FA41FB51F8093510490935204A093CD
:104690005304B09354048091E5079091E60720916C
:1046A000820430918304821B930BAA2797FDA09567
:1046B000BA2F20914D0430914E0440914F045091F7
:1046C0005004820F931FA41FB51F80934D04909335
:1046D0004E04A0934F04B0935004A0909903B0905F
:1046E0009A03C0909B03D0909C03A816B906CA06F3
:1046F000DB06C4F488EA91E6A0E0B0E08A199B09E1
:10470000AC09BD0980934D0490934E04A0934F04CF
:10471000B09350048093510490935204A093530497
:10472000B093540422273327A9012A193B094C09C5
:104730005D0980914D0490914E04A0914F04B09179
:10474000500482179307A407B507B4F4D601C50136
:10475000885A9146A040B04080934D0490934E04F7
:10476000A0934F04B093500480935104909352044B
:10477000A0935304B09354048091E3039091E40315
:104780000F9734F488E19CEF9093E6078093E50758
:104790008091E3039091E403079734F480E398EF6A
:1047A0009093E6078093E507E09000013AE0E31676
:1047B000A9F48091E3039091E403835F934034F084
:1047C00088EE93E09093E6078093E5078091E303FA
:1047D0009091E4038A5F9340DCF014C08091E3037E
:1047E0009091E403855E974034F088EE93E09093D7
:1047F000E6078093E5078091E3039091E403835FEC
:10480000974034F080ED97E09093E6078093E507BA
:104810008091F1079091F207861997099093F2071A
:104820008093F1070091F1071091F207C201B101E5
:1048300029813A814B815C810E94934D20E032E0D6
:1048400040E050E00E94074E5095409530952195EC
:104850003F4F4F4F5F4F020F131F1093F20700930C
:10486000F1072091F1073091F207442737FD409579
:10487000542F8091490490914A04A0914B04B09127
:104880004C04820F931FA41FB51F8093490490937B
:104890004A04A0934B04B0934C048091F10790918B
:1048A000F2072091840430918504821B930BAA2780
:1048B00097FDA095BA2F2091450430914604409170
:1048C000470450914804820F931FA41FB51F809383
:1048D000450490934604A0934704B0934804A090E5
:1048E0009503B0909603C0909703D0909803A816B4
:1048F000B906CA06DB06C4F488EA91E6A0E0B0E097
:104900008A199B09AC09BD0980934504909346041C
:10491000A0934704B09348048093490490934A04B9
:10492000A0934B04B0934C0422273327A9012A19E2
:104930003B094C095D098091450490914604A09182
:104940004704B091480482179307A407B507B4F44D
:10495000D601C501885A9146A040B04080934504D5
:1049600090934604A0934704B0934804809349046D
:1049700090934A04A0934B04B0934C048091E103BC
:104980009091E2030F9734F488E19CEF9093F20743
:104990008093F1078091E1039091E203079734F44B
:1049A00080E398EF9093F2078093F107EAE0EE1628
:1049B000A9F48091E1039091E203835F934034F086
:1049C00088EE93E09093F2078093F1078091E103E2
:1049D0009091E2038A5F9340DCF014C08091E10380
:1049E0009091E203855E974034F088EE93E09093D7
:1049F000F2078093F1078091E1039091E203835FD6
:104A0000974034F080ED97E09093F2078093F107A0
:104A10008FEE80937A008E819F81A885B9858093DF
:104A2000410490934204A0934304B09344048091C2
:104A3000450490914604A0914704B09148048093A6
:104A4000250490932604A0932704B0932804809112
:104A50004D0490914E04A0914F04B0915004809366
:104A60002D0490932E04A0932F04B09330048091D2
:104A7000490490914A04A0914B04B0914C04809356
:104A8000290490932A04A0932B04B0932C048091C2
:104A9000510490915204A0915304B0915404809316
:104AA000310490933204A0933304B0933404809182
:104AB000940787FF63C09D81992309F05FC08091AF
:104AC0008704882309F05AC08091F1079091F2077A
:104AD000893C91055CF02091F1073091F2078091BB
:104AE000F1079091F207885C904011C08091F10726
:104AF0009091F20788539F4FA4F42091F1073091D1
:104B0000F2078091F1079091F20788539F4F880F29
:104B1000991F880F991F820F931F9093F20780931C
:104B2000F1078091E5079091E607893C91055CF0DB
:104B30002091E5073091E6078091E5079091E6071F
:104B4000885C904011C08091E5079091E6078853FA
:104B50009F4FA4F42091E5073091E6078091E50787
:104B60009091E60788539F4F880F991F880F991FD0
:104B7000820F931F9093E6078093E5070E948F1F93
:104B800029960FB6F894DEBF0FBECDBFCF91DF914F
:104B90001F910F91FF90EF90DF90CF90BF90AF905B
:104BA0009F908F907F906F905F904F903F902F904D
:104BB0000895809197078B3F98F08B3F19F480916F
:104BC0006C040EC08C3F19F480916E0409C08D3FB7
:104BD00019F48091700404C08E3F21F48091720416
:104BE0008093A203809196078B3F98F08B3F19F436
:104BF00080916C040EC08C3F19F480916E0409C042
:104C00008D3F19F48091700404C08E3F21F480918F
:104C100072048093A1038091A103882319F4109258
:104C2000A10305C0843618F084E68093A103809127
:104C300098078B3F98F08B3F19F480916C040EC05D
:104C40008C3F19F480916E0409C08D3F19F4809156
:104C5000700404C08E3F21F4809172048093A303FA
:104C60008091A303882319F41092A30305C084360E
:104C700018F084E68093A30380919A078B3F98F005
:104C80008B3F19F480916C040EC08C3F19F4809115
:104C90006E0409C08D3F19F48091700404C08E3FEA
:104CA00021F4809172048093A4038091A1078B3F2B
:104CB00098F08B3F19F480916C040EC08C3F19F46E
:104CC00080916E0409C08D3F19F48091700404C076
:104CD0008E3F21F4809172048093A5038091A207F6
:104CE0008B3F98F08B3F19F480916C040EC08C3F81
:104CF00019F480916E0409C08D3F19F480917004FD
:104D000004C08E3F21F4809172048093A6038091A9
:104D1000A6038B3010F48AE002C08F3F11F4809319
:104D2000A6038091A3078B3F98F08B3F19F48091E5
:104D30006C040EC08C3F19F480916E0409C08D3F45
:104D400019F48091700404C08E3F21F480917204A4
:104D50008093A7038091A8078B3F98F08B3F19F4AD
:104D600080916C040EC08C3F19F480916E0409C0D0
:104D70008D3F19F48091700404C08E3F21F480911E
:104D800072048093A9038091A9078B3F98F08B3F11
:104D900019F480916C040EC08C3F19F480916E045C
:104DA00009C08D3F19F48091700404C08E3F21F436
:104DB0008091720480938C048091AA078B3F98F0B5
:104DC0008B3F19F480916C040EC08C3F19F48091D4
:104DD0006E0409C08D3F19F48091700404C08E3FA9
:104DE00021F48091720480938D048091AB078B3FF6
:104DF00098F08B3F19F480916C040EC08C3F19F42D
:104E000080916E0409C08D3F19F48091700404C034
:104E10008E3F21F48091720480938E048091AC07C0
:104E20008B3F98F08B3F19F480916C040EC08C3F3F
:104E300019F480916E0409C08D3F19F480917004BB
:104E400004C08E3F21F48091720480938F0490916E
:104E5000BC079B3FB0F09B3F19F480916C0404C0E9
:104E60009C3F29F480916E04809390040CC09D3F78
:104E700019F480917004F8CF9E3F29F48091720458
:104E8000F3CF909390042091BD072B3FB0F02B3FC0
:104E900019F480916C0404C02C3F29F480916E04B5
:104EA000809391040CC02D3F19F480917004F8CFC9
:104EB0002E3F29F480917204F3CF209391048091C6
:104EC000BE078B3F98F08B3F19F480916C040EC0A5
:104ED0008C3F19F480916E0409C08D3F19F48091C4
:104EE000700404C08E3F21F4809172048093920478
:104EF0008091BF078B3F98F08B3F19F480916C0431
:104F00000EC08C3F19F480916E0409C08D3F19F4D6
:104F10008091700404C08E3F21F4809172048093CC
:104F200093048091AD078B3F98F08B3F19F48091EB
:104F30006C040EC08C3F19F480916E0409C08D3F43
:104F400019F48091700404C08E3F21F480917204A2
:104F50008093AA038091B2078B3F98F08B3F19F49E
:104F600080916C040EC08C3F19F480916E0409C0CE
:104F70008D3F19F48091700404C08E3F21F480911C
:104F800072048093AB038091B5078B3F98F08B3F01
:104F900019F480916C040EC08C3F19F480916E045A
:104FA00009C08D3F19F48091700404C08E3F21F434
:104FB00080917204809394048091B6078B3F98F09F
:104FC0008B3F19F480916C040EC08C3F19F48091D2
:104FD0006E0409C08D3F19F48091700404C08E3FA7
:104FE00021F480917204809395048091BB078B3FDC
:104FF00098F08B3F19F480916C040EC08C3F19F42B
:1050000080916E0409C08D3F19F48091700404C032
:105010008E3F21F4809172048093AC038091C1078C
:105020008B3F98F08B3F19F480916C040EC08C3F3D
:1050300019F480916E0409C08D3F19F480917004B9
:1050400004C08E3F21F48091720480930608809101
:105050000608823010F481E002C08F3F11F4809383
:1050600006089B3FB0F09B3F19F480916C0404C08C
:105070009C3F29F480916E048093FC070CC09D3FF7
:1050800019F480917004F8CF9E3F29F48091720446
:10509000F3CF9093FC078091FC07882319F41092BA
:1050A000FC0705C08A3F18F08AEF8093FC078091C7
:1050B000C3078B3F98F08B3F19F480916C040EC0AE
:1050C0008C3F19F480916E0409C08D3F19F48091D2
:1050D000700404C08E3F21F48091720480931B08F9
:1050E00080911B08823010F481E002C08F3F11F4E0
:1050F00080931B082B3FB0F02B3F19F480916C0478
:1051000004C02C3F29F480916E048093FF070CC0EB
:105110002D3F19F480917004F8CF2E3F29F480912F
:105120007204F3CF2093FF078091FF07882319F4BF
:105130001092FF0705C08A3F18F08AEF8093FF079F
:105140008091D0078B3F98F08B3F19F480916C04CD
:105150000EC08C3F19F480916E0409C08D3F19F484
:105160008091700404C08E3F21F48091720480937A
:105170002E086091A90370E080E090E00E947A4CD4
:1051800027E137EB41ED58E30E94304D60939D03DA
:1051900070939E0380939F039093A00380919F0739
:1051A00080931C0880919E078093F4070895809156
:1051B0007D04882321F08091BF0783FF24C01092D3
:1051C000F0071092E70710921108109214088091CE
:1051D000C803882311F08093E7078091C9038823CF
:1051E00011F08093F0078091CA03882311F0809317
:1051F00014088091CB03882311F0809311088091CB
:10520000A2048C7F03C08091A20481608093A204D9
:105210008091E707EAE1F7E080931A0710921B07F5
:105220008091F00780931C0713828091140880936B
:105230001E07158280911108809320071782109213
:105240000804109209040E94971D0895809100019E
:105250008D3011F40E94D31510927A008091E103F1
:105260009091E2039093F2078093F1078091E3031A
:105270009091E4039093E6078093E5078091E5031E
:105280009091E60390931E0880931D086091E903B6
:105290007091EA03882777FD8095982F2CE030E005
:1052A00040E050E00E94934D7093190860931808F5
:1052B0006091E7037091E803882777FD8095982F28
:1052C0000E94934D70932C0860932B088091EB0300
:1052D0009091EC039093FB078093FA078FEE8093F5
:1052E0007A000E948F1F6091B70770E080E090E025
:1052F00024EC39E040E050E00E94934D6093950328
:105300007093960380939703909398036091B807E6
:1053100070E080E090E00E94934D60939903709359
:105320009A0380939B0390939C03089510921A0410
:105330001092190410921C0410921B0480E090E05B
:10534000A0E0B0E080931F0490932004A093210478
:10535000B09322041092100410920F0410921204C1
:1053600010921104109214041092130410920C085D
:1053700010920B0810929404109295041092F3036B
:105380000E94262984E690E00E949E110E94262910
:105390008091940780FF10C08091170390911803AB
:1053A000875B934038F480911703909118038E5EC9
:1053B000924010F40E9492164091E1035091E20352
:1053C0005093100440930F042091E3033091E403C1
:1053D00030931204209311048091E5039091E60329
:1053E00090931404809313048091E5039091E60355
:1053F00090930C0880930B083093160420931504A7
:105400005093180440931704F999FECF24E030E03C
:1054100032BD21BDF89A80B5853038F180912B08D6
:1054200090912C0897FF03C0909581959F4F6CE059
:1054300070E00E94D24D70931C0460931B04809115
:1054400018089091190897FF03C0909581959F4F78
:105450006CE070E00E94D24D70931A0460931904BE
:10546000609146077091470742C0F999FECF32BD5F
:1054700021BDF89A30B5F999FECF85E090E092BD54
:1054800081BDF89A20B5932F80E0820F911D9093F3
:105490001A0480931904F999FECF86E090E092BD3A
:1054A00081BDF89A30B5F999FECF87E090E092BDC2
:1054B00081BDF89A20B5932F80E0820F911D9093C3
:1054C0001C0480931B04F999FECF88E090E092BD04
:1054D00081BDF89A30B5F999FECF89E090E092BD90
:1054E00081BDF89A20B5732F60E0620F711D882787
:1054F00077FD8095982F0E947C4C60931F047093D9
:105500002004809321049093220410924504109269
:1055100046041092470410924804109249041092D5
:105520004A0410924B0410924C0410924D041092B5
:105530004E0410924F041092500410925104109295
:105540005204109253041092540410925504109275
:10555000560410925704109258041092F2071092B9
:10556000F1071092E6071092E50710921E081092BC
:105570001D0884E690E00E949E1180911303909193
:105580001403A0911503B0911603909349078093DB
:1055900048071092F5031092F40310925D041092E4
:1055A0005E0410925F0410926004809161049091F7
:1055B000620490936404809363040E94244582E310
:1055C00090E09093DA038093D9036091B70770E07D
:1055D00080E090E024EC39E040E050E00E94934D00
:1055E0006856754C8F4F9F4F609395037093960349
:1055F00080939703909398036091B80770E080E0E0
:1056000090E00E94934D6856754C8F4F9F4F60936A
:10561000990370939A0380939B0390939C03109239
:10562000AE031092AD03609161047091620488270B
:1056300077FD8095982F2BE035E040E050E00E9408
:10564000934D6093270870932808809329089093BE
:105650002A0810926B0410926A0481E08093010181
:105660000E9481488091A20484608093A2048FEFFD
:10567000809394088091BA0790E0A4E0880F991F66
:10568000AA95E1F78093950880E2809396080895A3
:105690001F93CF93DF93182FC4E6D0E00DC01150B5
:1056A00080917D04882351F4D093DA03C093D90309
:1056B0008AEF90E00E948811112389F7DF91CF9142
:1056C0001F9108952F923F924F925F926F927F9217
:1056D0008F929F92AF92BF92CF92DF92EF92FF9202
:1056E0000F931F93DF93CF93CDB7DEB766970FB6B7
:1056F000F894DEBF0FBECDBF0E947C2080910001D8
:105700008C3010F4299A01C0299820917B043091A3
:105710007C043E832D838091F407282F30E0C9015B
:1057200009964D815E818417950724F0C9010A9678
:105730009E838D8380917404843608F06EC08091BE
:105740000501882399F480910B0390910C038F5FDE
:105750009F4F61F488E99AE39093DA038093D90329
:1057600080E09CE090930C0380930B038091C8042D
:105770009091C904009731F001979093C9048093E8
:10578000C80404C010927D04109267048091000147
:105790008A3011F0843111F4289A01C02898809140
:1057A000A0049091A104895E9340A0F18091A50787
:1057B000E82FF0E0FE83ED8381E080936704A09101
:1057C0008C07B0E0AA0FBB1FFD01EC58F84F118207
:1057D0001082E0918D072E2F30E0220F331FC90178
:1057E0008C58984FFC0111821082A25AB84F119622
:1057F0001C921E92225A384FD90111961C921E9269
:10580000E0918F07F0E0EE0FFF1FE25AF84F118290
:105810001082F4C210927D04F1C2809174048D381C
:1058200008F4ECC2109267048091A60722E3829FDD
:10583000C00111249093C9048093C804ED81FE81B6
:10584000B9978CF080917D04882369F08091A00441
:105850009091A104FFEF8F3F9F0729F0019690934D
:10586000A1048093A0048091A0049091A1048F3F93
:10587000910509F038F51092E2041092E3041092B9
:10588000E4041092E5041092DE041092DF041092FA
:10589000E0041092E1048A3F9105C9F481E080930D
:1058A000C1041092DA041092DB041092DC0410920E
:1058B000DD04109255041092560410925704109271
:1058C000580405C08091A20482608093A204E091F4
:1058D0008E07F0E0EE0FFF1FE25AF84F80819181B2
:1058E000813591050CF4BEC180917D04882309F0B7
:1058F000B9C180918D07E82FF0E0EE0FFF1FE25A4B
:10590000F84F808191818C3491050CF4EBC080912B
:10591000C7048F5F8093C704893C08F4A3C18091BA
:1059200000018C3010F4299801C0299A10927D044E
:105930001092C7041092A1041092A00480918C07C9
:10594000482F50E0FA01EE0FFF1FE25AF84F808116
:105950009181873491059CF4E0918F07F0E0EE0F80
:10596000FF1FE25AF84F0190F081E02DF7FF03C0CE
:10597000F095E195FF4FE734F1050CF46EC080918E
:105980008F07A82FB0E0FD01EE0FFF1FE25AF84F7E
:10599000808191818734910544F0FA01EE0FFF1F59
:1059A000E25AF84F0190F081E02DFD01EE0FFF1F4C
:1059B000E25AF84F808191818734910564F0FA01B1
:1059C000EE0FFF1FE25AF84F8081918187349105D5
:1059D00014F022E001C021E0FD01EE0FFF1FE25AAA
:1059E000F84F80819181863491055CF4FA01EE0FC5
:1059F000FF1FE25AF84F80819181873491050CF0A6
:105A000023E0FD01EE0FFF1FE25AF84F80819181E4
:105A10008A5B9F4F5CF4FA01EE0FFF1FE25AF84FCA
:105A200080819181873491050CF024E0AA0FBB1F7F
:105A3000A25AB84F8D919C918A5B9F4F5CF4440FA2
:105A4000551F425A584FFA01808191818634910541
:105A50000CF425E0822F0E94F902E0918F07F0E01C
:105A6000EE0FFF1FE25AF84F0190F081E02DF7FF93
:105A700003C0F095E195FF4F7E97B4F4E0918C0759
:105A8000F0E0EE0FFF1FE25AF84F808191818A5BB0
:105A90009F4F54F481E080935B0688EE93E09093EF
:105AA000DA038093D903DEC00E94DE026CE877E05F
:105AB00046E50E9472038091940780FF10C0809198
:105AC000170390911803875B934038F48091170374
:105AD000909118038E5E924010F40E9492160E94DC
:105AE0009629B9C080819181855B9F4F0CF0B8C029
:105AF0008091C7048F5F8093C704893C08F4B2C0CB
:105B0000809100018C3010F4299801C0299AF999EC
:105B1000FECF1FBA04E010E012BD01BD8FEF80BDC3
:105B20000FB6F894FA9AF99A0FBE10927D0410926B
:105B3000C7041092A1041092A0040E9496292091FB
:105B4000190430911A04F999FECF1FBA12BD01BD94
:105B5000C90160E071E00E94D24D60BD0FB6F894BB
:105B6000FA9AF99A0FBEF999FECF1FBA85E090E034
:105B700092BD81BDC90160E071E00E94D24D80BD3F
:105B80000FB6F894FA9AF99A0FBE20911B0430913F
:105B90001C04F999FECF1FBA86E090E092BD81BD4A
:105BA000C90160E071E00E94D24D60BD0FB6F8946B
:105BB000FA9AF99A0FBEF999FECF1FBA87E090E0E2
:105BC00092BD81BDC90160E071E00E94D24D80BDEF
:105BD0000FB6F894FA9AF99A0FBE20911F043091EB
:105BE00020044091210450912204F999FECF1FBA5C
:105BF00088E090E092BD81BDCA01B9010E94494C84
:105C0000DC01CB0160E071E00E94D24D60BD0FB6B7
:105C1000F894FA9AF99A0FBE20911F04309120044B
:105C20004091210450912204F999FECF1FBA89E0D6
:105C300090E092BD81BDCA01B9010E94494CDC01CE
:105C4000CB0160E071E00E94D24D80BD0FB6F894A8
:105C5000FA9AF99A0FBE0E94DE020E94482B02C0F7
:105C60001092C704E0918E07F0E0EE0FFF1FE25A9A
:105C7000F84F808191818B5A9F4F0CF0BFC0E0910B
:105C80008D07F0E0EE0FFF1FE25AF84F80819181FF
:105C9000855B9F4F0CF091C080917D04882309F0B3
:105CA0008CC08091C6048F5F8093C604893C08F441
:105CB00086C088EC8093C60481E090E09093A104B4
:105CC0008093A00481E080937D041092DA04109206
:105CD000DB041092DC041092DD0410925504109243
:105CE00056041092570410925804109259041092BE
:105CF0005A0410925B0410925C04109245041092B6
:105D00004604109247041092480410924D041092D9
:105D10004E0410924F0410925004809125049091EB
:105D20002604A0912704B0912804809349049093FD
:105D30004A04A0934B04B0934C0480912D0490919D
:105D40002E04A0912F04B0913004809351049093BD
:105D50005204A0935304B09354041092E20410929E
:105D6000E3041092E4041092E5041092DE04109211
:105D7000DF041092E0041092E1048091A204886094
:105D80008093A2048091BF0781FF19C0809194077E
:105D900080FF10C08091170390911803875B934098
:105DA00038F480911703909118038E5E924010F49E
:105DB0000E9492160E94962902C01092C604E09199
:105DC0008D07F0E0EE0FFF1FE25AF84F80819181BE
:105DD0008C3491058CF08091C5048F5F8093C5044D
:105DE000893C60F010927D0488EC8093C504109289
:105DF000A1041092A00402C01092C5048091770300
:105E00008150809377038F5F29F080916704882306
:105E100009F4A8C30E94D925E0918C07F0E0EE0FA9
:105E2000FF1FE25AF84F808191819C01442737FD82
:105E30004095542F29833A834B835C83E0918D07EF
:105E4000F0E0EE0FFF1FE25AF84F808191812C01A4
:105E5000662457FC6094762C8091BF0780FF80C039
:105E6000EE24FF248701E418F50806091709CA0182
:105E7000B9012FE93BE140E050E00E94934D5B0106
:105E80006C01C801B7010E94934D7B018C01C601D2
:105E9000B5016E197F09800B910B20E137E240E0DC
:105EA00050E00E94074EC901AA2797FDA095BA2F7E
:105EB00089839A83AB83BC83EA0CFB1C0C1D1D1DDC
:105EC000C801B70120E137E240E050E00E94074EF0
:105ED000309521953F4F2901662457FC6094762C1C
:105EE00029813A814B815C812E373105410551056D
:105EF0004CF08DE790E0A0E0B0E089839A83AB831B
:105F0000BC8311C029813A814B815C8123583F4F6A
:105F10004F4F5F4F44F423E83FEF4FEF5FEF29838C
:105F20003A834B835C833EE743165104610471045A
:105F300034F0BDE74B2E512C612C712C11C043E87D
:105F400044164FEF54064FEF64064FEF740644F4C7
:105F5000A3E84A2EAFEF5A2EAFEF6A2EAFEF7A2E9C
:105F60008091B7049091B804AA2797FDA095BA2F05
:105F700029813A814B815C81281B390B4A0B5B0BD1
:105F8000CA01B90123E030E040E050E00E94074E32
:105F900079018A01EE0CFF1C001F111FE20EF31E97
:105FA000041F151F8091B5049091B604AA2797FD90
:105FB000A095BA2FA3019201281B390B4A0B5B0B4A
:105FC000CA01B90123E030E040E050E00E94074EF2
:105FD00059016A01AA0CBB1CCC1CDD1CA20EB31E0D
:105FE000C41ED51E29813A813093B8042093B7048A
:105FF00042015092B6044092B50480919B07682EEE
:106000007724269DC001279D900D369D900D11246B
:106010004091B3045091B4049A01220F331F240F0E
:10602000351F820F931F64E070E00E94D24DE09113
:106030009C07F0E0EE9EC001EF9E900DFE9E900D3D
:106040001124860F971F9093B4048093B30420917A
:10605000EE043091EF046C01C21AD30AD092760498
:10606000C0927504869CC001879C900D969C900DF3
:1060700011244091B1045091B2049A01220F331FB0
:10608000240F351F820F931F64E070E00E94D24DF1
:10609000AE9E9001AF9E300DBE9E300D1124260F96
:1060A000371F3093B2042093B1048091F004909193
:1060B000F1048901081B190B1093780400937704ED
:1060C000E0918F07F0E0EE0FFF1FE25AF84F80815A
:1060D0009181AA24BB24A81AB90AB0927A04A0928A
:1060E0007904E0918E07F0E0EE0FFF1FE25AF84FBF
:1060F000E080F18088E790E0E80EF91EF0927C04E1
:10610000E0927B046091A60370E080E090E00E9442
:106110007A4C20E030E040E251E40E94794B20E0EC
:1061200030E040E85CE30E94304D609322087093B9
:10613000230880932408909325086091A70370E0BA
:1061400080E090E00E947A4C20E030EE4BE256E492
:106150000E94E14B60930D0870930E0880930F0826
:10616000909310088091670680FF54C080912E089C
:10617000813808F44FC080916006992787FD90957B
:10618000DC016A9EC0016B9E900D7A9E900D1124D9
:10619000C80ED91ED0927604C09275048091610613
:1061A000992787FD9095FC016E9EC0016F9E900D12
:1061B0007E9E900D1124080F191F109378040093F0
:1061C000770480916206992787FD9095A80EB91EE5
:1061D000B0927A04A09279042091990730E08091DE
:1061E0006406992787FD9095AC01249FC001259FE7
:1061F000900D349F900D11249093AE038093AD03C6
:106200008091630690E08E159F0524F490937C04A2
:1062100080937B0480917B0490917C0497FF04C061
:1062200010927C0410927B048091940782FF0CC032
:1062300080E090E0A0E0B0E080930D0890930E081D
:10624000A0930F08B0931008609122087091230862
:10625000809124089091250820E030E040E050E053
:106260000E94DD4B882364F480E090E0A0E0B0E081
:106270008093220890932308A0932408B0932508C4
:1062800060910D0870910E0880910F089091100890
:1062900020E030E040E050E00E94DD4B882364F4D1
:1062A00080E090E0A0E0B0E080930D0890930E08AD
:1062B000A0930F08B09310084091750410917604D4
:1062C000E0919C04F0919D04842F912F64E070E094
:1062D0000E94D24DCB0177FF03C0909581959F4FCF
:1062E000E817F907DCF4842F912F9C0137FF03C0D6
:1062F000309521953F4FC90195958795959587953F
:1063000090939D0480939C048536910564F084E607
:1063100090E090939D0480939C0405C03197F09386
:106320009D04E0939C044091770410917804E091DF
:106330009E04F0919F04842F912F64E070E00E94EE
:10634000D24DCB0177FF03C0909581959F4FE81701
:10635000F907DCF4842F912F9C0137FF03C030959F
:1063600021953F4FC9019595879595958795909370
:106370009F0480939E048536910564F084E690E046
:1063800090939F0480939E0405C03197F0939F04DF
:10639000E0939E0480916704882341F010929D044D
:1063A00010929C0410929F0410929E0480918D077D
:1063B000A82FB0E0FD01EE0FFF1FE25AF84F208139
:1063C00031818091B307482F50E04217530744F4BE
:1063D0008091D10782FF04C081E0809388040FC0C0
:1063E000AA0FBB1FA25AB84F2D913C918091B407C0
:1063F000481B51092417350714F410928804809122
:106400008D07A82FB0E0FD01EE0FFF1FE25AF84FF5
:10641000208131818091B307482F50E08827992748
:10642000841B950B2817390744F48091D10783FF0B
:1064300004C081E08093890414C08091890488237A
:1064400081F0AA0FBB1FA25AB84F2D913C918091A9
:10645000B40790E0841B950B8217930714F41092F5
:10646000890480918C07A82FB0E0FD01EE0FFF1F7B
:10647000E25AF84F208131818091B307482F50E0D4
:106480004217530744F48091D10780FF04C081E094
:1064900080938B0413C080918B04882379F0AA0F1A
:1064A000BB1FA25AB84F2D913C918091B407481B55
:1064B00051092417350714F410928B0480918C072E
:1064C000A82FB0E0FD01EE0FFF1FE25AF84F208128
:1064D00031818091B307482F50E088279927841B8A
:1064E000950B2817390744F48091D10781FF04C028
:1064F00081E080938A0414C080918A04882381F00B
:10650000AA0FBB1FA25AB84F2D913C918091B4079E
:1065100090E0841B950B8217930714F410928A0461
:1065200080918804882321F480918904882321F0B4
:1065300081E08093870402C01092870480918B04CD
:10654000882321F480918A04882351F081E080938C
:10655000860410928704109288041092890402C065
:106560001092860480918704882321F48091860408
:10657000882351F08091B20790E0AD81BE818A17E7
:106580009B0714F49E838D8380916704882341F1D7
:1065900010927A0410927904109276041092750485
:1065A000109278041092770480E090E0A8ECBFE3AA
:1065B0008093220890932308A0932408B093250881
:1065C0008BE09CEBA2E3BCE380930D0890930E0854
:1065D000A0930F08B09310081092870410928604BD
:1065E0008091000890910108A0910208B0910308E1
:1065F00020912504309126044091270450912804CD
:10660000820F931FA41FB51F809300089093010869
:10661000A0930208B093030880910708909108089E
:10662000A0910908B0910A0820912D0430912E0400
:1066300040912F0450913004820F931FA41FB51F67
:106640008093070890930808A0930908B0930A085C
:106650008091F6079091F707A091F807B091F9079C
:106660002091290430912A0440912B0450912C044C
:10667000820F931FA41FB51F8093F6079093F7070F
:10668000A093F807B093F9078091EB079091EC077E
:10669000A091ED07B091EE072091310430913204C2
:1066A0004091330450913404820F931FA41FB51FEF
:1066B0008093EB079093EC07A093ED07B093EE0760
:1066C00080918604882329F480918704882309F423
:1066D0005CC0109235041092360410923704109268
:1066E00038041092390410923A0410923B0410922C
:1066F0003C041092000810920108109202081092B7
:1067000003081092070810920808109209081092C6
:106710000A081092F6071092F7071092F8071092E5
:10672000F9071092EB071092EC071092ED07109208
:10673000EE078091450490914604A0914704B091E2
:1067400048048093490490934A04A0934B04B09367
:106750004C0480914D0490914E04A0914F04B0914F
:1067600050048093510490935204A0935304B09327
:1067700054041092F7031092F603109285041092BD
:1067800084041092830410928204809186048823EA
:1067900009F000C280918704882309F0FBC1209191
:1067A00094086091250470912604809127049091AB
:1067B000280440902D0450902E0460902F04709077
:1067C0003004E0919C04F0919D04FC8BEB8B2090B5
:1067D00018083090190880902B0890902C082F3FB3
:1067E00009F4DCC0E090A007FF2400E010E0A22E36
:1067F000BB24A7FCB094CB2CDB2CA80197010E94F2
:10680000074EC101AA2797FDA095BA2F281B390B67
:106810004A0B5B0BCA01B901A60195010E94934D79
:1068200020E032E040E050E00E94074E2F87388B96
:10683000498B5A8B2B873C874D875E87C301B201FA
:10684000A80197010E94074EC401AA2797FDA095B1
:10685000BA2F281B390B4A0B5B0BCA01B901A601E1
:1068600095010E94934D20E032E040E050E00E940C
:10687000074E122F032FF42EE52E222E332E842EB8
:10688000952E2B893C89213431053CF480919E045E
:1068900090919F0481349105D4F06F85788989891E
:1068A0009A8922E030E040E050E00E94074E2B87BA
:1068B0003C874D875E87612F702F8F2D9E2D22E0A4
:1068C00030E040E050E00E94074E19014A01E0919B
:1068D0008F07F0E0EE0FFF1FE25AF84F0190F081B2
:1068E000E02DF7FF03C0F095E195FF4F7A97C4F0D4
:1068F0006B857C858D859E8523E030E040E050E00F
:106900000E94074E2B873C874D875E87B101C401EB
:1069100023E030E040E050E00E94074E19014A01B8
:1069200060919608A62EBB24A7FCB094CB2CDB2C40
:106930002B853C854D855E85C901DA019C01AD0141
:10694000A216B306C406D50614F4A6019501862F37
:10695000992787FD9095909581959F4F7C01002701
:10696000F7FC0095102F29013A012E153F0540072D
:10697000510714F427013801C101D401A816B90642
:10698000CA06DB0614F4D601C5018E159F05A007C3
:10699000B1070CF4D7C07C018D01D4C0E090A007F2
:1069A000FF2400E010E0A80197010E94074E590162
:1069B0006A01C101AA2797FDA095BA2FA81AB90AA2
:1069C000CA0ADB0AC301B201A80197010E94074E5F
:1069D00079018A01C401AA2797FDA095BA2FE81A68
:1069E000F90A0A0B1B0BC601B50120E130E040E0BB
:1069F00050E00E94074ED22EC32EB42EA52E822F19
:106A0000932FA42FB52F2C013D01C801B70120E120
:106A100030E040E050E00E94074E822E232E942E5C
:106A2000352E822F932FA42FB52F7C018D014B89FA
:106A30005C89413451053CF480919E0490919F04FF
:106A400081349105E4F06D2D7C2D8B2D9A2D23E062
:106A500030E040E050E00E94074EC901DA012C010D
:106A60003D01682D722D892D932D23E030E040E00B
:106A700050E00E94074EC901DA017C018D01E091CE
:106A80008F07F0E0EE0FFF1FE25AF84F0190F08100
:106A9000E02DF7FF03C0F095E195FF4F7A97C4F022
:106AA000C301B20123E030E040E050E00E94074E15
:106AB000C901DA012C013D01C801B70123E030E032
:106AC00040E050E00E94074EC901DA017C018D01CF
:106AD00051E2451651046104710434F0B0E24B2ECA
:106AE000512C612C712C11C080EE48168FEF580686
:106AF0008FEF68068FEF780644F4A0EE4A2EAFEFD2
:106B00005A2EAFEF6A2EAFEF7A2E91E2E916F1041A
:106B10000105110534F0F0E2EF2EF12C012D112DBD
:106B200011C0A0EEEA16AFEFFA06AFEF0A07AFEF1B
:106B30001A0744F4E0EEEE2EEFEFFE2EEFEF0E2FED
:106B4000EFEF1E2F8091450490914604A0914704D9
:106B5000B091480484199509A609B70980934504A2
:106B600090934604A0934704B093480480914D0449
:106B700090914E04A0914F04B09150048E199F093A
:106B8000A00BB10B80934D0490934E04A0934F043F
:106B9000B09350048091F6039091F7038F3F9105D5
:106BA00009F008F44BC580918604882309F0C8C415
:106BB00080918704882309F0C3C4809169048823E5
:106BC00009F0BEC46091000870910108809102082C
:106BD0009091030820E031E040E050E00E94074E31
:106BE00059016A012093000830930108409302087C
:106BF0005093030860910708709108088091090874
:106C000090910A0820E031E040E050E00E94074EF9
:106C100039014A0120930708309308084093090876
:106C200050930A08E090A007FF2400E010E02091B4
:106C30003504309136044091370450913804C8012E
:106C4000B7010E94934D20E031E040E050E00E9407
:106C5000074E2F83388749875A872093350430930E
:106C6000360440933704509338042091390430910E
:106C70003A0440913B0450913C04C801B7010E9482
:106C8000934D20E031E040E050E00E94074E1901B2
:106C90002A012093390430933A0440933B045093E3
:106CA0003C0460913D0470913E0480913F049091BA
:106CB000400420E031E040E050E00E94074E209385
:106CC0003D0430933E0440933F04509340042F8191
:106CD000388549855A85A21AB30AC40AD50AA092F2
:106CE000CE04B092CF04C092D004D092D104E090F0
:106CF000B907FF2400E010E0C601B501A801970123
:106D00000E94074E59016A012093BD043093BE04CE
:106D10004093BF045093C004621873088408950818
:106D20006092CA047092CB048092CC049092CD04FD
:106D3000C401B301A80197010E94074E79018A019D
:106D40002093B9043093BA044093BB045093BC041D
:106D5000C601B50120E031E040E050E00E94074E5E
:106D60003093850420938404C801B70120E031E00A
:106D700040E050E00E94074E309383042093820449
:106D800080919C0490919D0481349105C4F480917C
:106D90009E0490919F04813491058CF4E0918F07BB
:106DA000F0E0EE0FFF1FE25AF84F0190F081E02D66
:106DB000F7FF03C0F095E195FF4F7A97E4F08091DB
:106DC00094088F3FC1F4809184049091850462E01F
:106DD00070E00E94D24D709385046093840480918A
:106DE00082049091830462E070E00E94D24D70931F
:106DF000830460938204E0902904F0902A040091B7
:106E00002B0410912C048091250490912604A091CC
:106E10002704B0912804E81AF90A0A0B1B0BE09228
:106E2000D604F092D7040093D8041093D90420918B
:106E300031043091320440913304509134048091F4
:106E40002D0490912E04A0912F04B0913004281BA2
:106E5000390B4A0B5B0B2093D2043093D30440933D
:106E6000D4045093D504E092CE04F092CF04009362
:106E7000D0041093D1042093CA043093CB044093E0
:106E8000CC045093CD048091490490914A04A09180
:106E90004B04B0914C048E199F09A00BB10B809349
:106EA000490490934A04A0934B04B0934C048091FE
:106EB000510490915204A0915304B0915404821B48
:106EC000930BA40BB50B8093510490935204A093A1
:106ED0005304B093540480916A0490916B048138F8
:106EE000910594F08091130490911404019690936D
:106EF00014048093130480910B0890910C08019660
:106F000090930C0880930B0880916A0490916B0415
:106F100080589F4F94F4809113049091140401972A
:106F2000909314048093130480910B0890910C08A3
:106F3000019790930C0880930B086091070870915B
:106F400008088091090890910A082AE130E040E0A1
:106F500050E00E94074E30932F0720932E07109287
:106F60006B0410926A0481E090E09093B0048093E7
:106F7000AF048091A7049091A804A091A904B091B6
:106F8000AA04209100083091010840910208509114
:106F90000308821B930BA40BB50B815E914BAF4F83
:106FA000BF4F8F539C49A040B04028F08091950876
:106FB00081330CF4D7C02091CE043091CF0440919E
:106FC000D0045091D104213080E1380780E0480797
:106FD00080E058070CF453C08091AE04882309F474
:106FE0004AC0DA01C9016CE0B595A79597958795D8
:106FF0006A95D1F701969093B0048093AF04CA01CB
:10700000B90128E030E040E050E00E94074EC9019D
:10701000DA018093BD049093BE04A093BF04B093A3
:10702000C00489589341A040B04064F088E893E1DF
:10703000A0E0B0E08093BD049093BE04A093BF0491
:10704000B093C0046091BD047091BE048091BF04F0
:107050009091C00420E031E040E050E00E94074EF3
:107060008091840490918504820F931F90938504EE
:107070008093840406C081E08093AE0402C0109225
:10708000AE044091CE045091CF046091D004709131
:10709000D1044030F0EF5F07FFEF6F07FFEF7F078E
:1070A0000CF05DC08091AD04882309F454C088279A
:1070B0009927DC01841B950BA60BB70B3CE0B5951B
:1070C000A795979587953A95D1F72091AF04309180
:1070D000B004280F391F3093B0042093AF04CB01C4
:1070E000BA0128E030E040E050E00E94074EC901BC
:1070F000DA018093BD049093BE04A093BF04B093C3
:10710000C00488579C4EAF4FBF4F64F488E79CEE95
:10711000AFEFBFEF8093BD049093BE04A093BF0474
:10712000B093C0046091BD047091BE048091BF040F
:107130009091C00420E031E040E050E00E94074E12
:107140008091840490918504820F931F909385040D
:107150008093840411C081E08093AD040DC010922F
:10716000AD040AC01092B0041092AF0488EE93E010
:1071700090939403809393038091BA07282F30E073
:107180008091AF049091B0042817390724F430930C
:10719000B0042093AF04409195088091AF04909182
:1071A000B00424E0880F991F2A95E1F7242F332794
:1071B00027FD3095281739077CF4242F47FD215FE0
:1071C0002595259525952595822F992787FD9095BD
:1071D0009093B0048093AF048091CE049091CF043B
:1071E000A091D004B091D10481509440A040B0400F
:1071F00074F080910F04909110042091AF043091AD
:10720000B004820F931F9093100480930F04809119
:10721000CE049091CF04A091D004B091D1048050BD
:107220009C4FAF4FBF4F74F480910F0490911004A6
:107230002091AF043091B004821B930B9093100403
:1072400080930F0481E090E09093B0048093AF04AA
:107250001092B9041092BA041092BB041092BC04AC
:107260008091A3049091A404A091A504B091A604D8
:1072700020910708309108084091090850910A08A8
:10728000821B930BA40BB50B815E914BAF4FBF4F8D
:107290008F539C49A040B04028F0809195088133DD
:1072A0000CF4DDC0E090CA04F090CB040091CC0453
:1072B0001091CD0481E0E81680E1F80680E008072F
:1072C00080E018070CF458C08091AC04882309F4BE
:1072D0004FC0A80197018CE05595479537952795A4
:1072E0008A95D1F78091AF049091B004820F931FDB
:1072F0009093B0048093AF04C801B70128E030E058
:1073000040E050E00E94074EC901DA018093B904C1
:107310009093BA04A093BB04B093BC0489589341E2
:10732000A040B04064F088E893E1A0E0B0E0809332
:10733000B9049093BA04A093BB04B093BC046091C9
:10734000B9047091BA048091BB049091BC0420E010
:1073500031E040E050E00E94074E8091820490911D
:107360008304820F931F909383048093820406C04A
:1073700081E08093AC0402C01092AC044091CA0436
:107380005091CB046091CC047091CD044030F0EF6B
:107390005F07FFEF6F07FFEF7F070CF05DC0809185
:1073A000AB04882309F454C088279927DC01841B87
:1073B000950BA60BB70B1CE0B595A79597958795F0
:1073C0001A95D1F72091AF043091B004280F391FDE
:1073D0003093B0042093AF04CB01BA0128E030E031
:1073E00040E050E00E94074EC901DA018093B904E1
:1073F0009093BA04A093BB04B093BC0488579C4EEE
:10740000AF4FBF4F64F488E79CEEAFEFBFEF8093C0
:10741000B9049093BA04A093BB04B093BC046091E8
:10742000B9047091BA048091BB049091BC0420E02F
:1074300031E040E050E00E94074E8091820490913C
:107440008304820F931F909383048093820411C05E
:1074500081E08093AB040DC01092AB040AC010927F
:10746000B0041092AF0488EE93E09093940380935D
:1074700093038091BA07282F30E08091AF04909158
:10748000B0042817390724F43093B0042093AF04D4
:10749000409195088091AF049091B004B4E0880FBA
:1074A000991FBA95E1F7242F332727FD3095281728
:1074B00039077CF4242F47FD215F259525952595D7
:1074C0002595822F992787FD90959093B0048093FE
:1074D000AF048091CA049091CB04A091CC04B091E8
:1074E000CD0481509440A040B04074F080911104CC
:1074F000909112042091AF043091B004820F931F39
:1075000090931204809311048091CA049091CB044B
:10751000A091CC04B091CD0480509C4FAF4FBF4F91
:10752000CCF480911104909112042091AF04309119
:10753000B004821B930B90931204809311040AC031
:107540001092830410928204109285041092840495
:107550001092690460910D0870910E0880910F08D7
:107560009091100820E030E040E050E00E94DD4BB8
:10757000882341F4109283041092820410928504AF
:10758000109284048091000890910108A091020853
:10759000B09103088093A7049093A804A093A90432
:1075A000B093AA048091070890910808A091090857
:1075B000B0910A088093A3049093A404A093A50417
:1075C000B093A6041092350410923604109237043A
:1075D000109238041092390410923A0410923B042D
:1075E00010923C0410923D0410923E0410923F040D
:1075F00010924004109200081092010810920208A4
:1076000010920308109207081092080810920908B7
:1076100010920A081092F6071092F7071092F807D6
:107620001092F9071092EB071092EC071092ED07F9
:107630001092EE071092F7031092F60380917904EE
:1076400090917A0497FF03C0909581959F4F409742
:107650006CF088EE93E09093940380939303809171
:10766000940784FD03C081E08093C104D0909D07FE
:10767000E0907904F0907A04B701882777FD80952F
:10768000982F2D2D30E040E050E00E94934DF701FF
:10769000F7FE04C0EE27FF27EE19FF099F014427DC
:1076A00037FD4095542F0E94934D20E032E040E09A
:1076B00050E00E94074E89019A018D2D90E0DC0177
:1076C000AE9DC001AF9D900DBE9D900D112464E054
:1076D00070E00E94D24D600F711F882777FD809562
:1076E000982F6093DA047093DB048093DC0490930A
:1076F000DD04209155043091560440915704509177
:107700005804261B370B480B590B20935504309314
:10771000560440935704509358042155334C40402D
:10772000504064F080E593ECA0E0B0E08093550415
:1077300090935604A0935704B09358048091550435
:1077400090915604A0915704B0915804805B9C43DB
:10775000AF4FBF4F64F480EB9CE3AFEFBFEF80937C
:10776000550490935604A0935704B0935804809105
:10777000610490916204892B09F46EC18091940791
:1077800083FF6AC1609125047091260480912704CB
:107790009091280420E032E040E050E00E94074E43
:1077A000890137FF03C0109501951F4F60912D048B
:1077B00070912E0480912F049091300420E032E0EB
:1077C00040E050E00E94074E690137FF04C0D094AA
:1077D000C194D108D394C016D1060CF4680120914D
:1077E000610430916204409127085091280860910B
:1077F000290870912A088091C1048823F9F4245E35
:107800003D4F79010027F7FC0095102FCB01BA01FD
:1078100025EF3AEF4FEF5FEF0E94074EE20EF31EA7
:10782000041F151FC801B70128E631E040E050E011
:107830000E94074E8B01045B104018C060916104E8
:1078400070916204882777FD8095982F2BE035E0B2
:1078500040E050E00E94934D609327087093280801
:107860008093290890932A0800E010E08091930308
:1078700090919403892B61F5F9E1CF16D10444F579
:1078800080916A0490916B04800F911F90936B0418
:1078900080936A048091C1048823D1F088EC90E041
:1078A0009093DA038093D903609127087091280898
:1078B0008091290890912A082BE035E040E050E0C3
:1078C0000E94074E30936404209363041092C10415
:1078D000B601A3E075956795AA95E1F76F5F7F4FB5
:1078E000C801F3E0880F991FFA95E1F70E94D24D85
:1078F0002B01662457FC6094762C80912708909188
:107900002808A0912908B0912A08480E591E6A1E1D
:107910007B1E409227085092280860922908709296
:107920002A088091A503A82EBB24CA9CC001CB9C29
:10793000900DDA9C900D112460E270E00E94D24D0F
:107940004501861A970A97FC81C080919303909114
:107950009403892B09F072C080919E0490919F043A
:1079600020919C0430919D04820F931F68E070E089
:107970000E94D24D6B0120E430E0C20ED31E8091F4
:10798000630490916404AA2797FDA095BA2FECE1B7
:10799000EE2EE2E0FE2E012D112DE81AF90A0A0B57
:1079A0001B0BC301B2012BE035E040E050E00E9428
:1079B000074EE20EF31E041F151FC801B70128E68B
:1079C00031E040E050E00E94074E645B7040689DEB
:1079D000C001699D900D789D900D1124B6010E9403
:1079E000D24D9B01C501880F991F8A0D9B1D8217DF
:1079F000930714F4BC0109C044275527481B590BB1
:107A0000B901241735070CF4BA019B01442737FD4F
:107A10004095542F8091550490915604A09157049D
:107A2000B0915804820F931FA41FB51F8093550473
:107A300090935604A0935704B093580480919303F5
:107A400090919403009741F0019702C084EF91E078
:107A500090939403809393038091C2048150809308
:107A6000C2048F5F09F0C2C088E18093C204E09035
:107A7000A007FF2400E010E0609125047091260427
:107A80008091270490912804A80197010E94074E35
:107A9000309303072093020760912D0470912E0408
:107AA00080912F0490913004A80197010E94074E05
:107AB00030930507209304078091180890911908C6
:107AC000909307078093060780912B0890912C08CC
:107AD000909309078093080780911D0890911E08D4
:107AE00090930B0780930A0780917E0490917F0406
:107AF00090930D0780930C0760915D0470915E0474
:107B000080915F049091600420E032E040E050E01A
:107B10000E94074E30930F0720930E078091610457
:107B20009091620490931307809312078091110340
:107B30009091120390931507809314076091270882
:107B4000709128088091290890912A082BE035E04F
:107B500040E050E00E94074E309319072093180729
:107B600080917404809316071092170780919208F1
:107B70009091930890932507809324078091900813
:107B800090919108909327078093260780915B0638
:107B900080932807109229078091DC039091DD03E0
:107BA00090932B0780932A0780919508992787FD4A
:107BB000909590933907809338078091940899277E
:107BC00087FD909590933D0780933C078091EE044C
:107BD0009091EF0490933F0780933E078091F004CB
:107BE0009091F1049093410780934007809186041F
:107BF0008823A9F06091F1077091F207882777FD3B
:107C00008095982F0E947C4C209122083091230867
:107C100040912408509125080E94304D32C0E090D8
:107C2000F107F090F207609125047091260480918D
:107C30002704909128040E947C4C20910D083091DB
:107C40000E0840910F08509110080E94304D5B01C2
:107C50006C010027F7FC0095102FC801B7010E94A6
:107C60007C4C2091220830912308409124085091A7
:107C700025080E94304D9B01AC01C601B5010E9450
:107C8000794B0E94494C7093F2076093F107809101
:107C900087048823A9F06091E5077091E60788279B
:107CA00077FD8095982F0E947C4C2091220830917E
:107CB000230840912408509125080E94304D32C07D
:107CC000E090E507F090E60760912D0470912E0496
:107CD00080912F04909130040E947C4C20910D08DB
:107CE00030910E0840910F08509110080E94304DBD
:107CF0005B016C010027F7FC0095102FC801B7014C
:107D00000E947C4C20912208309123084091240845
:107D1000509125080E94304D9B01AC01C601B50170
:107D20000E94794B0E94494C7093E6076093E507E7
:107D300060911D0870911E08882777FD8095982F07
:107D40000E947C4C7B018C012091220830912308F9
:107D50004091240850912508CA01B9010E94794B2D
:107D60009B01AC01C801B7010E94304D7B018C0121
:107D700060914104709142048091430490914404C5
:107D80000E947C4C20910D0830910E0840910F0804
:107D9000509110080E94304D20E030E040E05FE359
:107DA0000E94304D9B01AC01C801B7010E94794B84
:107DB0000E94494C70931E0860931D088091F10742
:107DC0009091F20790932D0780932C078091E507FF
:107DD0009091E60790932F0780932E078091F107EB
:107DE0009091F2078150904434F080E090E49093B9
:107DF000F2078093F1078091F1079091F20780508C
:107E0000904C34F480E090EC9093F2078093F1076B
:107E10008091E5079091E6078150904434F080E02E
:107E200090E49093E6078093E5078091E5079091B1
:107E3000E6078050904C34F480E090EC9093E60795
:107E40008093E50780911D0890911E088150904411
:107E500034F080E090E490931E0880931D08809198
:107E60001D0890911E088050904C34F480E090ECF6
:107E700090931E0880931D08CD80DE80CC0CDD1C05
:107E8000CC0CDD1C8091940780FF12C181FF4BC098
:107E90008091D1079091A20384FF04C091559B3338
:107EA00018F03AC09233C0F58091AF0381508093AF
:107EB000AF038F5F09F052C08091170390911803B0
:107EC000895E934020F09091F3039A500AC080910C
:107ED0001703909118038436910588F49091F30369
:107EE000965F9093F30380915107891B87BD8CE2C5
:107EF00091E09093DA038093D9038AEF11C08091C7
:107F00007E0490917F044497909381048093800431
:107F10001092680481E004C081E08093680488ECDA
:107F20008093AF031BC08091A2032091AD033091D9
:107F3000AE03280F311D8091990790E0AC01249F7A
:107F4000C001259F900D349F900D1124449790936C
:107F500081048093800481E08093680480916704A9
:107F6000882321F0109281041092800420917E04D5
:107F700030917F044091800450918104421753074F
:107F80000CF096C080916804882309F491C0809118
:107F9000A30390E0241B350BDC01A29FC001A39F2B
:107FA000900DB29F900D112464E070E00E94D24DBC
:107FB0004B01A090F403B090F50360915D047091C3
:107FC0005E0480915F0490916004E090A403FF241C
:107FD00000E010E020E830E040E050E00E94074E72
:107FE000C801B7010E94934D20E230E040E050E02C
:107FF0000E94074EF901BEEF283E3B0714F4E8EE5D
:10800000FEEF8091C3049091C4049C0154E0220FC0
:10801000331F5A95E1F7281B390BC50162E070E068
:108020000E94D24D261B370B28193909CF01E1E0F8
:1080300089319E0714F088E191E0281B390BC901B2
:108040008C0D9D1D60E170E00E94D24D7093C404C0
:108050006093C3042091950730E0220F331F220F55
:10806000331F62177307ACF4C216D30624F03093A3
:10807000C4042093C3048091950790E0880F991F52
:10808000880F991FC816D90624F4D092C404C09250
:10809000C3048091C3049091C404C816D90624F483
:1080A000D092C404C092C304C090C304D090C4044E
:1080B00080911C0890E04497880F991F880F991FA2
:1080C00036018C159D050CF43C01709211076092ED
:1080D000100700911D0810911E086091DA0470913C
:1080E000DB048091DC049091DD042CEF3FEF4FEF37
:1080F0005FEF0E94934D060F171FF1EA6F16710490
:10810000A4F0930135952795021713070CF49801F5
:10811000C30162E070E00E94D24D709561957F4F7F
:10812000261737077CF49B010DC0C8012FEF003BD9
:10813000120714F480EB9FEF9C018135910514F038
:1081400020E530E080911C0890E0880F991F880F8F
:10815000991FAC0146195709421753070CF49A01AD
:10816000A301481B590B4901241735070CF44A0198
:108170008091F1079091F207409075045090760439
:10818000841995099093FE078093FD07E0900D08F0
:10819000F0900E0800910F0810911008C801B70167
:1081A00020E030E040E050E00E94DD4B8823D1F138
:1081B0006091E2047091E3048091E4049091E504FD
:1081C0000E947C4C5B016C01609125047091260437
:1081D00080912704909128040E947C4CA80197016B
:1081E0000E94304D7B018C01B201882777FD80957C
:1081F000982F0E947C4C9B01AC01C801B7010E94E2
:10820000784B9B01AC01C601B5010E94794B0E94DD
:10821000494C6093E2047093E3048093E4049093E8
:10822000E5041CC02091FD073091FE07442737FD6F
:108230004095542F8091E2049091E304A091E404CE
:10824000B091E504820F931FA41FB51F8093E20431
:108250009093E304A093E404B093E5048091E204D6
:108260009091E304A091E404B091E50481509A4F09
:10827000A040B04064F080E09AEFA0E0B0E08093CE
:10828000E2049093E304A093E404B093E5048091A6
:10829000E2049091E304A091E404B091E5048050DD
:1082A0009640AF4FBF4F64F480E096E0AFEFBFEF72
:1082B0008093E2049093E304A093E404B093E50474
:1082C0006091FD077091FE07882777FD8095982FB4
:1082D0000E947C4C7B018C016091E2047091E3046C
:1082E0008091E4049091E5040E947C4C20919D03D0
:1082F00030919E0340919F035091A0030E94304D06
:108300009B01AC01C801B7010E94794B0E94494C06
:108310008B01C40197FE04C0882799278819990901
:1083200095958795860D971D1C01442437FC409434
:10833000542C2091AC0330E040E050E0C201B10188
:108340000E94934D20E430E040E050E00E94074E50
:10835000A901622F232F041715071CF4C801602FF1
:10836000292FEE27FF27E41BF50B862F922F8C0178
:108370000E171F070CF48F01F401E60DF71DCF0156
:10838000800F911F64E070E00E94D24D77FF03C020
:1083900060E070E007C080911C0890E086179707A6
:1083A0000CF4BC018091F40790E0681779070CF495
:1083B000BC016093E707CF01801B910B64E070E084
:1083C0000E94D24D77FF03C060E070E007C080914B
:1083D0001C0890E0861797070CF4BC018091F40705
:1083E00090E0681779070CF4BC016093F007809166
:1083F000E5079091E60720917704309178043E8B51
:108400002D8B821B930B9093E4078093E307E090FE
:108410000D08F0900E0800910F0810911008C80187
:10842000B70120E030E040E050E00E94DD4B8823BF
:10843000E1F16091DE047091DF048091E00490919D
:10844000E1040E947C4C5B016C0160912D047091F1
:108450002E0480912F04909130040E947C4CA8013E
:1084600097010E94304D7B018C014D895E89BA01D4
:10847000882777FD8095982F0E947C4C9B01AC014A
:10848000C801B7010E94784B9B01AC01C601B50140
:108490000E94794B0E94494C6093DE047093DF0484
:1084A0008093E0049093E1041CC02091E307309195
:1084B000E407442737FD4095542F8091DE049091C6
:1084C000DF04A091E004B091E104820F931FA41F88
:1084D000B51F8093DE049093DF04A093E004B09373
:1084E000E1048091DE049091DF04A091E004B0915A
:1084F000E10481509A4FA040B04064F080E09AEFD0
:10850000A0E0B0E08093DE049093DF04A093E00449
:10851000B093E1048091DE049091DF04A091E00427
:10852000B091E10480509640AF4FBF4F64F480E0BB
:1085300096E0AFEFBFEF8093DE049093DF04A0934B
:10854000E004B093E1046091E3077091E4078827A9
:1085500077FD8095982F0E947C4C7B018C01609167
:10856000DE047091DF048091E0049091E1040E94A8
:108570007C4C20919D0330919E0340919F0350912C
:10858000A0030E94304D9B01AC01C801B7010E94BD
:10859000794B0E94494C7B018C012091AC0330E067
:1085A00040E050E0C201B1010E94934D20E430E070
:1085B00040E050E00E94074EC901E216F3060CF4B9
:1085C0009701EE27FF27E81BF90BE217F3070CF4DE
:1085D000F901C301881999098E0F9F1F64E070E0AB
:1085E0000E94D24D77FF03C060E070E007C0809129
:1085F0001C0890E0861797070CF4BC018091F407E3
:1086000090E0681779070CF4BC01609314086E1AA7
:108610007F0AC3018819990964E070E00E94D24D75
:1086200077FF03C060E070E007C080911C0890E015
:10863000861797070CF4BC018091F40790E0681747
:1086400079070CF4BC016093110866960FB6F89494
:10865000DEBF0FBECDBFCF91DF911F910F91FF9075
:10866000EF90DF90CF90BF90AF909F908F907F90D2
:108670006F905F904F903F902F90089588EE809379
:1086800094073EE1309395078BEF809397078AE03C
:10869000809398073093960730939A0783E08093EE
:1086A000990758E050939B0790E190939C0766E0F0
:1086B00060939D0750939E0786EE80939F073093AB
:1086C000A00780E88093A10744E64093A20788E7CB
:1086D0008093A3078EE58093A40783E28093A50788
:1086E00084E18093A6071092A7079093A8071092A1
:1086F000A9071092AA071092AB071092AC0710922C
:10870000BC071092BD071092BE071092BF0740939E
:10871000AD0788E28093AE071092D20792E3909360
:10872000AF0786E98093B00785E08093B107909307
:10873000B2072AE52093B3079093B4071092D107AC
:108740002093B5078093B60785E58093B70780939C
:10875000B80780E28093B90784E08093BA079093CA
:10876000BB078FE58093C00783EF8093C2073093E8
:10877000C1073093C3078DEF8093C4074093C507AB
:108780002093C6072093C7072093C8071092C907F4
:108790006093CA075093CB072093CC073093CD0743
:1087A0004093CE078CE38093CF07A7EDB7E0E8E7CF
:1087B000F3E08CE001900D928150E1F7089588E696
:1087C000809394074EE1409395078BEF8093970732
:1087D0008AE0809398074093960740939A0783E036
:1087E000809399078CE080939B0780E180939C079E
:1087F00076E070939D0768E060939E0786EE809315
:108800009F074093A00780E88093A10780E58093AD
:10881000A20788E78093A3078EE58093A40783E2ED
:108820008093A5074093A6071092A70750E25093A4
:10883000A8071092A9071092AA071092AB071092EE
:10884000AC071092BC071092BD071092BE071092A1
:10885000BF0734E63093AD0788E28093AE071092ED
:10886000D20792E39093AF0786E98093B00785E043
:108870008093B1079093B2072AE52093B3079093B2
:10888000B4071092D1072093B5078093B60785E50A
:108890008093B7078093B8075093B90784E080931B
:1088A000BA078BE48093BB078FE58093C00783EF03
:1088B0008093C20784E18093C1078093C3078DEF43
:1088C0008093C4073093C5072093C6072093C7073A
:1088D0002093C8071092C9077093CA076093CB070B
:1088E0002093CC074093CD073093CE078CE3809341
:1088F000CF07A7EDB7E0E2E8F3E08CE001900D923E
:108900008150E1F7089588E6809394073EE1309323
:1089100095078BEF809397078AE0809398073093B1
:10892000960730939A0764E0609399075FE050934D
:108930009B0730939C078CE080939D0778E07093B1
:108940009E0786EE80939F073093A00780E8809370
:10895000A10780E58093A20796E99093A3078EE58F
:108960008093A40783E28093A5073093A607109213
:10897000A70780E28093A8071092A9071092AA0780
:108980001092AB071092AC071092BC071092BD0773
:108990001092BE071092BF0744E64093AD0788E2ED
:1089A0008093AE071092D20782E38093AF07909333
:1089B000B00725E02093B1078093B2079AE5909322
:1089C000B3078093B4071092D1079093B507209313
:1089D000B60785E58093B7078093B80780E1809359
:1089E000B9076093BA074093BB078FE58093C00730
:1089F00083EF8093C2075093C1075093C3078DEF55
:108A00008093C4074093C5079093C6079093C70708
:108A10009093C8071092C90786E08093CA077093A5
:108A2000CB079093CC073093CD074093CE078CE3D0
:108A30008093CF07A7EDB7E0EAE8F3E08CE0019080
:108A40000D928150E1F708958091F6049091F7041A
:108A5000A091F804B091F9048093FE049093FF0470
:108A6000A0930005B09301058091FA049091FB0456
:108A7000A091FC04B091FD0480930205909303053E
:108A8000A0930405B093050508951092EF04109289
:108A9000EE041092F1041092F004089584B1806AFB
:108AA00084B93D9A82E58CBD1DBC459A81E08093D6
:108AB00031088AEA8093350883E8809336088AE093
:108AC00080933708109239081092380810923B08AA
:108AD00010923A08109257081092580887E4809331
:108AE000590888E080935A0883E080935B080895D2
:108AF000F894609125047091260480912704909148
:108B000028042CE630E040E050E00E94074E30930D
:108B100039082093380860912D0470912E048091BB
:108B20002F04909130042CE630E040E050E00E94A9
:108B3000074E30933B0820933A08609127087091C4
:108B400028088091290890912A082BE035E040E020
:108B500050E00E94074E3093410820934008209136
:108B60001D0430911E048091040890910508B901FC
:108B70000E94D24DCB01880F991F860F971F880F37
:108B8000991F880F991F90933D0880933C0880910E
:108B9000200890912108B9010E94D24DCB01880F85
:108BA000991F860F971F880F991F880F991F909301
:108BB0003F0880933E0810921E0410921D041092EC
:108BC0000508109204081092210810922008809144
:108BD00037088C3009F4EBC08D3030F48A3059F00E
:108BE0008B3009F006C172C08D3009F43EC08E3062
:108BF00009F0FFC0EEC080918C04809348088091FA
:108C00008D048093490880918E0480934A08809156
:108C10008F0480934B088091900480934C0880913E
:108C2000910480934D088091920480934E08809126
:108C3000930480934F088091A20480935008837F0F
:108C40008093A204809111039091120380935108A4
:108C50008091A40780935208F999FECF82E090E0BA
:108C600092BD81BDF89A80B52EC08091C4078093D3
:108C700048088091C507809349088091C607809372
:108C80004A088091C70780934B088091C80780935A
:108C90004C088091C90780934D088091CA07809342
:108CA0004E088091CB0780934F088091CE07809328
:108CB00050088091CC07809351088091CD07809314
:108CC00052088091CF078093530893C0E0918E079C
:108CD000F0E0EE0FFF1FE25AF84F0190F081E02D17
:108CE0002FEFE138F20714F4E1E8FFEFE038F10587
:108CF00014F0EFE7F0E0E0934808E0918F07F0E030
:108D0000EE0FFF1FE25AF84F0190F081E02D6FEF58
:108D1000E138F60714F4E1E8FFEFE038F10514F06C
:108D2000EFE7F0E0E0934908E0918D07F0E0EE0F07
:108D3000FF1FE25AF84F0190F081E02D8FEFE138EC
:108D4000F80714F4E1E8FFEFE038F10514F0EFE77D
:108D5000F0E0E0934A08E0918C07F0E0EE0FFF1F8F
:108D6000E25AF84F0190F081E02D2FEFE138F20741
:108D700014F4E1E8FFEFE038F10514F0EFE7F0E07C
:108D8000E0934B0880916C0480934C0880916E04B2
:108D900080934D088091700480934E0880917204F6
:108DA00080934F08809174048093500822C0809172
:108DB0005B06863018F010925B0685E080934808C9
:108DC00080917E0490917F0490934B0880934A0891
:108DD00010C080915808809348088091590880936A
:108DE000490880915A0880934A0880915B088093D3
:108DF0004B08789480915708882309F477C04091F4
:108E00005D0850915E08CA0181509E4F8F5F93406C
:108E1000B0F420915F0830916008C90181509E4FE5
:108E20008F5F934060F48091940785FF08C0509352
:108E3000EF044093EE043093F1042093F00480910A
:108E400063089091640821E08936920724F4909396
:108E50006204809361048091610490916204209186
:108E6000630430916404845E9D4F821B930B68E61B
:108E700071E00E94D24D845B904090936604809391
:108E8000650420916708309168088091D90390911A
:108E9000DA038217930740F480915B06882321F45C
:108EA0003093DA032093D90380915C08843679F0FB
:108EB000873621F5809169088093940880916A082B
:108EC0008093960880916B0880939508089580910F
:108ED0006908809390081092910880916B08909196
:108EE0006C08909393088093920808951092EF0471
:108EF0001092EE041092F1041092F0040895809103
:108F00003108882309F43BC0459885E398E09093A5
:108F100033088093320890910605E92FF0E0E05580
:108F2000FC4F8081809337089F5F909306059630B1
:108F300010F010920605109231080E94784581E0E9
:108F400080933408000000000000000000000000D2
:108F50000000000000000000000000000000000011
:108F60000000000000000000000000000000000001
:108F70000000000080913508809354088EBD08954C
:108F800080913108882309F07BC00DB407FE78C0BA
:108F900084E08093DB03459A2EB5809108058130EB
:108FA00069F0813018F08230C9F513C0109256086C
:108FB00020930705213891F581E008C0253541F55A
:108FC000809107058B5A8093070582E080930805FE
:108FD00025C080915608E82FF0E0EA58F74F20832B
:108FE0008F5F80935608909107058A31A0F029176A
:108FF00069F4ACE5B8E0E6E7F8E08AE101900D92AB
:109000008150E1F781E08093570802C01092570821
:109010001092080503C0920F909307052091340821
:10902000203208F027C04598000000000000000032
:109030000000000000000000000000000000000030
:109040000000000000000000000000000000000020
:109050000000000000000000E0913208F0913308A9
:10906000E20FF11D80818EBD90915408890F80938D
:10907000540803C081E0809331082F5F20933408A7
:109080000895882319F420E030E00AC090E0809130
:109090001005882309F491E081E09827292F30E01A
:1090A0008091BE0790E08870907043E09595879519
:1090B0004A95E1F72817390711F0429A0895429826
:1090C0000895882319F420E030E00AC090E08091F0
:1090D0001005882309F491E081E09827292F30E0DA
:1090E0008091BE0790E08071907054E095958795CF
:1090F0005A95E1F72817390711F0439A08954398D4
:10910000089587B18C6087B910920F0510921005F1
:109110008091BE0783FF02C0429A01C0429884FF3B
:1091200002C0439A01C043981092090580E88093D9
:10913000B60310920C058093B70308958091110532
:109140008150809311058F5F09F0E4C089E080931E
:10915000110520917D042223B1F58091BE0786FF81
:109160002FC080918E07E82FF0E0EE0FFF1FE25A2C
:10917000F84F808191818C5A9F4F2CF18081918191
:109180008535910504F580918F07A82FB0E0FD018A
:10919000EE0FFF1FE25AF84F80819181855B9F4F50
:1091A0001CF481E080930F05AA0FBB1FA25AB84F91
:1091B0008D919C918C34910534F010920F0503C071
:1091C00081E080930F058091BE07482F50E085FF16
:1091D00002C020930F0580910F0580931005BA01FE
:1091E0006370707061157105B9F0209111033091B1
:1091F00012038091A40790E0281739076CF442FF0E
:1092000003C081E0809310056F5F7F4F89E090E09D
:109210000E94D24D609311058091C1078B3FA0F051
:1092200080910608873E20F08091C007807809C0B1
:109230008A3050F410920B058091C00787FD2BC037
:1092400081E080930B0527C08091090581508093B0
:1092500009058F5F01F5809106088150809309050B
:109260008091B603813011F490E802C0982F969552
:109270009093B6038091C007892380930B058823C0
:1092800041F08091FC0767E10E94B24D80930A058E
:1092900002C010920A058091C3078B3FA0F0809115
:1092A0001B08873E20F08091C207807809C08A3071
:1092B00050F410920E058091C20787FD2BC081E00B
:1092C00080930E0527C080910C05815080930C057A
:1092D0008F5F01F580911B08815080930C05809170
:1092E000B703813011F490E802C0982F96959093BF
:1092F000B7038091C207892380930E05882341F02C
:109300008091FF0767E10E94B24D80930D0502C076
:1093100010920D0580910B058823B1F090911105F5
:1093200080910A05981798F020911103309112034B
:1093300040E050E08091A40790E02817390714F42A
:1093400041E050E0442319F420E030E00AC090E00E
:1093500080911005882309F491E081E09827292F56
:1093600030E08091BE07682F70E0CB01887090706C
:10937000F3E095958795FA95E1F72817390711F0ED
:10938000429A01C0429880910E058823B1F09091D5
:10939000110580910D05981798F0209111033091D7
:1093A000120340E050E08091A40790E028173907AD
:1093B00014F441E050E0442319F480E090E00AC046
:1093C00090E080911005882309F491E081E09827CE
:1093D000892F90E060717070E4E075956795EA956B
:1093E000E1F78617970711F0439A08954398089577
:1093F0002FB7F8948FE190E09093CD008093CC004C
:1094000088E98093C90086E08093CA008091CE00ED
:109410008091C80087FDFACF80EC8093C8002FBFF1
:109420000895EF92FF920F931F93DF93CF9300D095
:10943000CDB7DEB7482F4F5FCB0183539B4268E126
:1094400070E00E94D24D8B01E42EFF24F701EE0F55
:10945000FF1FE25AF84F20813181C901880F991FFF
:10946000820F931F800F911F64E070E00E94D24D25
:109470007A83698329813A81C8010196821793070B
:1094800024F489819A8101970AC089819A810150C7
:109490001040801791072CF489819A8101969A8354
:1094A0008983809174048701000F111F8936C0F0F1
:1094B00089819A81F801E25AF84F20813181821B1B
:1094C000930B63E070E00E94D24DCB01880F991F8F
:1094D000860F971F0C58184FF8019183808305C0A1
:1094E0000C58184FF8011182108289819A81EE0C74
:1094F000FF1C2EE537E0E20EF31EF7019183808317
:10950000443011F4109277030F900F90CF91DF91B8
:109510001F910F91FF90EF9008951F9390919708DE
:109520009F3161F4809198088093180580919A0882
:109530008093160580919B0880931705892F807F63
:10954000803119F5192F1F701A30F8F4809198089E
:1095500080931A05809199088093190580919A0843
:1095600080931C0580919B0880931B0560911905D1
:1095700070911A05812F0E94114A60911B0570910C
:109580001C05812F8F5F0E94114A1F9108951F9320
:10959000182F8F3F49F4809113058F3F29F41092C3
:1095A00012051092140537C080911205882339F4F2
:1095B0001F3111F485E001C084E08093150590917E
:1095C000120580911505209114058917A0F4822FAA
:1095D0008095809314058F3F19F48EEF80931405C6
:1095E00080911405181711F40E948D4A10921205EB
:1095F000109214050EC0E0911205F0E0E956F74F05
:109600001083210F20931405809112058F5F8093A2
:109610001205109313051F9108951F920F920FB614
:109620000F9211242F933F934F935F936F937F93E8
:109630008F939F93AF93BF93EF93FF938091CE004F
:109640000E94C74AFF91EF91BF91AF919F918F9177
:109650007F916F915F914F913F912F910F900FBE2E
:109660000F901F901895FC014150504030F0019030
:109670000616D1F73197CF010895882799270895C5
:10968000A0E0B0E0E6E4FBE40C942C4E7C01EB019E
:109690008A01690109C0CE012196F6010995F701F9
:1096A00081937F010150104001151105A1F7CDB73D
:1096B000DEB7E8E00C94484EA0E0B0E0E2E6FBE460
:1096C0000C942C4EEC017B018A01690109C0CE018A
:1096D0002196F70161917F01F60109950150104033
:1096E00001151105A1F7CDB7DEB7E8E00C94484E9F
:1096F0005058BB27AA270ED075C166D130F06BD168
:1097000020F031F49F3F11F41EF45BC10EF4E0959C
:10971000E7FB51C1E92F77D180F3BA1762077307CE
:109720008407950718F071F49EF58FC10EF4E0954B
:109730000B2EBA2FA02D0B01B90190010C01CA010B
:10974000A0011124FF27591B99F0593F50F4503EB6
:1097500068F11A16F040A22F232F342F4427585FA8
:10976000F3CF469537952795A795F0405395C9F7C0
:109770007EF41F16BA0B620B730B840BBAF0915078
:10978000A1F0FF0FBB1F661F771F881FC2F70EC017
:10979000BA0F621F731F841F48F4879577956795EA
:1097A000B795F7959E3F08F0B3CF9395880F08F0D3
:1097B0009927EE0F979587950895D9D008F481E001
:1097C00008950CD00FC107D140F0FED030F021F445
:1097D0005F3F19F0F0C0511139C1F3C014D198F3B3
:1097E0009923C9F35523B1F3951B550BBB27AA2722
:1097F00062177307840738F09F5F5F4F220F331F94
:10980000441FAA1FA9F333D00E2E3AF0E0E830D05F
:1098100091505040E695001CCAF729D0FE2F27D062
:10982000660F771F881FBB1F261737074807AB0730
:10983000B0E809F0BB0B802DBF01FF2793585F4FA5
:109840002AF09E3F510568F0B6C000C15F3FECF3BF
:10985000983EDCF3869577956795B795F7959F5F6A
:10986000C9F7880F911D9695879597F90895E1E0BE
:10987000660F771F881FBB1F621773078407BA071D
:1098800020F0621B730B840BBA0BEE1F88F7E09578
:10989000089504D06894B111D9C00895BCD088F05F
:1098A0009F5790F0B92F9927B751A0F0D1F0660FCC
:1098B000771F881F991F1AF0BA95C9F712C0B130E7
:1098C00081F0C3D0B1E00895C0C0672F782F8827FA
:1098D000B85F39F0B93FCCF3869577956795B39526
:1098E000D9F73EF490958095709561957F4F8F4F95
:1098F0009F4F0895E89409C097FB3EF4909580959A
:10990000709561957F4F8F4F9F4F9923A9F0F92F45
:1099100096E9BB279395F695879577956795B795C3
:10992000F111F8CFFAF4BB0F11F460FF1BC06F5FA9
:109930007F4F8F4F9F4F16C0882311F096E911C0BB
:10994000772321F09EE8872F762F05C0662371F0DC
:1099500096E8862F70E060E02AF09A95660F771FF0
:10996000881FDAF7880F9695879597F90895990FCC
:109970000008550FAA0BE0E8FEEF16161706E807D9
:10998000F907C0F012161306E407F50798F0621BFA
:10999000730B840B950B39F40A2661F0232B242BCF
:1099A000252B21F408950A2609F4A140A6958FEFEE
:1099B000811D811D089597F99F6780E870E060E040
:1099C00008959FEF80EC089500240A941616170658
:1099D00018060906089500240A94121613061406A0
:1099E00005060895092E0394000C11F4882352F003
:1099F000BB0F40F4BF2B11F460FF04C06F5F7F4FBB
:109A00008F4F9F4F089557FD9058440F551F59F0A1
:109A10005F3F71F04795880F97FB991F61F09F3F5B
:109A200079F087950895121613061406551FF2CF84
:109A30004695F1DF08C0161617061806991FF1CFD4
:109A400086957105610508940895E894BB276627FB
:109A50007727CB0197F908958ADF08F48FEF0895EF
:109A60000BD0C0CFB1DF28F0B6DF18F0952309F096
:109A7000A2CFA7CF1124EACFC6DFA0F3959FD1F3E1
:109A8000950F50E0551F629FF001729FBB27F00DAC
:109A9000B11D639FAA27F00DB11DAA1F649F662701
:109AA000B00DA11D661F829F2227B00DA11D621F50
:109AB000739FB00DA11D621F839FA00D611D221F0A
:109AC000749F3327A00D611D231F849F600D211DEE
:109AD000822F762F6A2F11249F5750408AF0E1F091
:109AE00088234AF0EE0FFF1FBB1F661F771F881FDA
:109AF00091505040A9F79E3F510570F05CCFA6CF22
:109B00005F3FECF3983EDCF3869577956795B795C4
:109B1000F795E7959F5FC1F7FE2B880F911D9695EE
:109B2000879597F90895629FD001739FF001829FF6
:109B3000E00DF11D649FE00DF11D929FF00D839FDC
:109B4000F00D749FF00D659FF00D9927729FB00D79
:109B5000E11DF91F639FB00DE11DF91FBD01CF018C
:109B600011240895991B79E004C0991F961708F0F5
:109B7000961B881F7A95C9F780950895AA1BBB1B71
:109B800051E107C0AA1FBB1FA617B70710F0A61BFD
:109B9000B70B881F991F5A95A9F780959095BC011E
:109BA000CD01089597FB092E07260AD077FD04D032
:109BB000E5DF06D000201AF4709561957F4F089577
:109BC000F6F7909581959F4F0895A1E21A2EAA1B52
:109BD000BB1BFD010DC0AA1FBB1FEE1FFF1FA2175D
:109BE000B307E407F50720F0A21BB30BE40BF50B5A
:109BF000661F771F881F991F1A9469F760957095E3
:109C0000809590959B01AC01BD01CF01089597FB14
:109C1000092E05260ED057FD04D0D7DF0AD0001C30
:109C200038F450954095309521953F4F4F4F5F4FF9
:109C30000895F6F790958095709561957F4F8F4FB9
:109C40009F4F08952F923F924F925F926F927F9213
:109C50008F929F92AF92BF92CF92DF92EF92FF923C
:109C60000F931F93CF93DF93CDB7DEB7CA1BDB0BE8
:109C70000FB6F894DEBF0FBECDBF09942A8839888D
:109C800048885F846E847D848C849B84AA84B98494
:109C9000C884DF80EE80FD800C811B81AA81B981A0
:109CA000CE0FD11D0FB6F894DEBF0FBECDBFED01B4
:069CB0000895F894FFCFB7
:109CB6000A010101FF6401C800496E74656772619B
:109CC6006C4E69636B20202020496E746567726153
:109CD6006C526F6C6C202020204163634E69636B6D
:109CE600202020202020202020416363526F6C6CAE
:109CF6002020202020202020204779726F47696588
:109D0600722020202020202020486F6568656E572D
:109D16006572742020202020204163635A20202071
:109D26002020202020202020204761732020202072
:109D36002020202020202020204B6F6D706173731F
:109D460056616C7565202020205370616E6E756EAD
:109D5600672020202020202020456D7066616E67D8
:109D660020202020202020202045727361747A6BE9
:109D76006F6D706173732020204D6F746F725F5624
:109D86006F726E6520202020204D6F746F725F48C1
:109D9600696E74656E202020204D6F746F725F4C63
:109DA600696E6B7320202020204D6F746F725F5296
:109DB6006563687473202020202020202020202026
:109DC60020202020202020202044697374616E63A7
:109DD6006520202020202020204F736442617220BD
:109DE6002020202020202020204D4B334D6167204D
:109DF60043616C537461746520536572766F2020DD
:109E06002020202020202020204E69636B20202047
:109E1600202020202020202020526F6C6C20202023
:109E2600202020202020202020202020202020202C
:109E3600202020202020202020202020202020201C
:109E4600202020202020202020202020202020200C
:109E560020202020202020202020202020202020FC
:109E66002020202020202020204B616C6D616E5F19
:109E76004D617844726966742020202020202020BD
:109E86002020202020202020204B616C6D616E2038
:109E96004B20202020202020204750535F4E69630E
:109EA6006B20202020202020204750535F526F6CCB
:109EB6006C20202020202020202800FFFF64008026
:109EC600016400007D0000FF037373730102030445
:109ED60005060708090A48616C6C6F2057656C74A3
:109EE600000000000000000000000000000000006C
:109EF600000000000000000000000000000000005C
:109F0600000000000000000000000000000000004B
:109F1600000000000000000000000000000000003B
:109F26000000000000000B01426567696E6E6572F5
:109F360000004E6F726D616C000053706F7274009A
:109F4600006400F40190D0030090D0030017B7D14D
:109F56003830FB103A409696020A644664ECFF6479
:089F66000A0B0D0B0C0E0101AA
:00000001FF
/branches/V0.71i_DSL_X_LED_MODE3/fc.c
0,0 → 1,1402
/*#######################################################################################
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"
#include "parameter.h"
 
unsigned char h,m,s;
volatile unsigned int I2CTimeout = 100;
volatile int MesswertNick,MesswertRoll,MesswertGier,MesswertGierBias;
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;
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;
volatile int KompassValue = 0;
volatile int KompassStartwert = 0;
volatile int KompassRichtung = 0;
unsigned int KompassSignalSchlecht = 500;
unsigned char MAX_GAS,MIN_GAS;
unsigned char Notlandung = 0;
unsigned char HoehenReglerAktiv = 0;
unsigned char TrichterFlug = 0;
long Umschlag180Nick = 250000L, Umschlag180Roll = 250000L;
long ErsatzKompass;
int ErsatzKompassInGrad; // Kompasswert in Grad
int GierGyroFehler = 0;
float GyroFaktor;
float IntegralFaktor;
volatile int DiffNick,DiffRoll;
int Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0;
volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count;
volatile unsigned char SenderOkay = 0;
int StickNick = 0,StickRoll = 0,StickGier = 0,StickGas = 0;
char MotorenEin = 0;
int HoehenWert = 0;
int SollHoehe = 0;
int LageKorrekturRoll = 0,LageKorrekturNick = 0;
float Ki = FAKTOR_I;
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_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_LoopGasLimit = 70;
unsigned char Parameter_AchsKopplung1 = 0;
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_J16Brightness; // for the J16 Output
unsigned char Parameter_J17Bitmask; // for the J17 Output
unsigned char Parameter_J17Timing; // for the J17 Output
unsigned char Parameter_J17Brightness; // 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;
unsigned char MikroKopterFlags = 0;
 
void Piep(unsigned char Anzahl)
{
while(Anzahl--)
{
if(MotorenEin) return; //auf keinen Fall im Flug!
beeptime = 100;
Delay_ms(250);
}
}
 
//############################################################################
// Nullwerte ermitteln
void SetNeutral(void)
//############################################################################
{
NeutralAccX = 0;
NeutralAccY = 0;
NeutralAccZ = 0;
AdNeutralNick = 0;
AdNeutralRoll = 0;
AdNeutralGier = 0;
AdNeutralGierBias = 0;
Parameter_AchsKopplung1 = 0;
Parameter_AchsGegenKopplung1 = 0;
ExpandBaro = 0;
CalibrierMittelwert();
Delay_ms_Mess(100);
CalibrierMittelwert();
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // H?henregelung aktiviert?
{
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset();
}
 
AdNeutralNick= AdWertNick;
AdNeutralRoll= AdWertRoll;
AdNeutralGier= AdWertGier;
AdNeutralGierBias = AdWertGier;
StartNeutralRoll = AdNeutralRoll;
StartNeutralNick = AdNeutralNick;
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) > 4)
{
NeutralAccY = abs(Mittelwert_AccRoll) / ACC_AMPLIFY;
NeutralAccX = abs(Mittelwert_AccNick) / 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]);
}
 
Mess_IntegralNick = 0;
Mess_IntegralNick2 = 0;
Mess_IntegralRoll = 0;
Mess_IntegralRoll2 = 0;
Mess_Integral_Gier = 0;
MesswertNick = 0;
MesswertRoll = 0;
MesswertGier = 0;
Delay_ms_Mess(100);
StartLuftdruck = Luftdruck;
HoeheD = 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 = EE_Parameter.Driftkomp * 16;
FromNaviCtrl_Value.Kalman_MaxFusion = 32;
}
 
static inline void LesePotis(void) {
/* Warum 110? Knüppel geht von -125 bis 125!
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 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 125) Poti1++;
else if (Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 125 && Poti1) Poti1--;
if (Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 125) Poti2++;
else if (Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 125 && Poti2) Poti2--;
if (Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 125) Poti3++;
else if (Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 125 && Poti3) Poti3--;
if (Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 125) Poti4++;
else if (Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 125 && 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;
}
 
//############################################################################
// Bearbeitet die Messwerte
void Mittelwert(void)
//############################################################################
{
static signed long tmpl,tmpl2;
MesswertGier = (signed int) AdNeutralGier - AdWertGier;
MesswertGierBias = (signed int) AdNeutralGierBias - AdWertGier;
MesswertRoll = (signed int) AdWertRoll - AdNeutralRoll;
MesswertNick = (signed int) AdWertNick - AdNeutralNick;
 
//DebugOut.Analog[26] = MesswertNick;
DebugOut.Analog[28] = MesswertRoll;
 
// Beschleunigungssensor ++++++++++++++++++++++++++++++++++++++++++++++++
Mittelwert_AccNick = ((long)Mittelwert_AccNick * 1 + ((ACC_AMPLIFY * (long)AdWertAccNick))) / 2L;
Mittelwert_AccRoll = ((long)Mittelwert_AccRoll * 1 + ((ACC_AMPLIFY * (long)AdWertAccRoll))) / 2L;
Mittelwert_AccHoch = ((long)Mittelwert_AccHoch * 1 + ((long)AdWertAccHoch)) / 2L;
IntegralAccNick += ACC_AMPLIFY * AdWertAccNick;
IntegralAccRoll += ACC_AMPLIFY * AdWertAccRoll;
NaviAccNick += AdWertAccNick;
NaviAccRoll += AdWertAccRoll;
NaviCntAcc++;
IntegralAccZ += Aktuell_az - NeutralAccZ;
// Gier ++++++++++++++++++++++++++++++++++++++++++++++++
ErsatzKompass += MesswertGier;
Mess_Integral_Gier += MesswertGier;
// Mess_Integral_Gier2 += MesswertGier;
if(ErsatzKompass >= (360L * GIER_GRAD_FAKTOR)) ErsatzKompass -= 360L * GIER_GRAD_FAKTOR; // 360? Umschlag
if(ErsatzKompass < 0) ErsatzKompass += 360L * GIER_GRAD_FAKTOR;
// Kopplungsanteil +++++++++++++++++++++++++++++++++++++
if(!Looping_Nick && !Looping_Roll && (EE_Parameter.GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV))
{
tmpl = (MesswertGierBias * Mess_IntegralNick) / 2048L;
tmpl *= Parameter_AchsKopplung1; //125
tmpl /= 4096L;
tmpl2 = (MesswertGierBias * Mess_IntegralRoll) / 2048L;
tmpl2 *= Parameter_AchsKopplung1;
tmpl2 /= 4096L;
if(labs(tmpl) > 128 || labs(tmpl2) > 128) TrichterFlug = 1;
}
else tmpl = tmpl2 = 0;
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++
MesswertRoll += tmpl;
MesswertRoll += (tmpl2*Parameter_AchsGegenKopplung1)/512L; //109
Mess_IntegralRoll2 += MesswertRoll;
Mess_IntegralRoll += MesswertRoll - 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;
}
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 > 2020) MesswertRoll = +1000;
if(AdWertRoll > 2034) MesswertRoll = +2000;
}
// Nick ++++++++++++++++++++++++++++++++++++++++++++++++
MesswertNick -= tmpl2;
MesswertNick -= (tmpl*Parameter_AchsGegenKopplung1)/512L;
Mess_IntegralNick2 += MesswertNick;
Mess_IntegralNick += MesswertNick - 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;
}
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 > 2020) MesswertNick = +1000;
if(AdWertNick > 2034) MesswertNick = +2000;
}
//++++++++++++++++++++++++++++++++++++++++++++++++
// ADC einschalten
ANALOG_ON;
//++++++++++++++++++++++++++++++++++++++++++++++++
 
Integral_Gier = Mess_Integral_Gier;
IntegralNick = Mess_IntegralNick;
IntegralRoll = Mess_IntegralRoll;
IntegralNick2 = Mess_IntegralNick2;
IntegralRoll2 = Mess_IntegralRoll2;
 
if(EE_Parameter.GlobalConfig & CFG_DREHRATEN_BEGRENZER && !Looping_Nick && !Looping_Roll)
{
if(MesswertNick > 200) MesswertNick += 4 * (MesswertNick - 200);
else if(MesswertNick < -200) MesswertNick += 4 * (MesswertNick + 200);
if(MesswertRoll > 200) MesswertRoll += 4 * (MesswertRoll - 200);
else if(MesswertRoll < -200) MesswertRoll += 4 * (MesswertRoll + 200);
}
 
LesePotis();
}
 
//############################################################################
// 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;
LesePotis();
 
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L;
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L;
}
 
//############################################################################
// Senden der Motorwerte per I2C-Bus
void SendMotorData(void)
//############################################################################
{
if (!(MotorenEin && !PARAM_ENGINE_DISABLED)) {
Motor_Hinten = 0;
Motor_Vorne = 0;
Motor_Rechts = 0;
Motor_Links = 0;
if(MotorTest[0]) Motor_Vorne = MotorTest[0];
if(MotorTest[1]) Motor_Hinten = MotorTest[1];
if(MotorTest[2]) Motor_Links = MotorTest[2];
if(MotorTest[3]) Motor_Rechts = MotorTest[3];
MikroKopterFlags &= ~(FLAG_MOTOR_RUN | FLAG_FLY);
} else MikroKopterFlags |= FLAG_MOTOR_RUN;
 
DebugOut.Analog[12] = Motor_Vorne;
DebugOut.Analog[13] = Motor_Hinten;
DebugOut.Analog[14] = Motor_Links;
DebugOut.Analog[15] = Motor_Rechts;
 
//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_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_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_LoopGasLimit,EE_Parameter.LoopGasLimit,0,255);
CHK_POTI(Parameter_AchsKopplung1, EE_Parameter.AchsKopplung1,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_J16Brightness, PARAM_LED_BRIGHTNESS_J16, 0, 250);
CHK_POTI_MM(Parameter_J17Timing, EE_Parameter.J17Timing, 1, 255);
CHK_POTI_MM(Parameter_J17Brightness, PARAM_LED_BRIGHTNESS_J17, 0, 250);
 
// CHK_POTI(Parameter_NaviGpsModeControl,EE_Parameter.NaviGpsModeControl,0,255);
//CHK_POTI(Parameter_NaviGpsGain,EE_Parameter.NaviGpsGain,0,255);
// CHK_POTI(Parameter_NaviGpsP,EE_Parameter.NaviGpsP,0,255);
// CHK_POTI(Parameter_NaviGpsI,EE_Parameter.NaviGpsI,0,255);
// CHK_POTI(Parameter_NaviGpsD,EE_Parameter.NaviGpsD,0,255);
// CHK_POTI(Parameter_NaviGpsACC,EE_Parameter.NaviGpsACC,0,255);
// CHK_POTI_MM(Parameter_NaviOperatingRadius,EE_Parameter.NaviOperatingRadius,10,255);
// CHK_POTI(Parameter_NaviWindCorrection,EE_Parameter.NaviWindCorrection,0,255);
// CHK_POTI(Parameter_NaviSpeedCompensation,EE_Parameter.NaviSpeedCompensation,0,255);
 
CHK_POTI(Parameter_ExternalControl,EE_Parameter.ExternalControl,0,255);
 
Ki = (float) Parameter_I_Faktor * 0.0001;
MAX_GAS = EE_Parameter.Gas_Max;
MIN_GAS = EE_Parameter.Gas_Min;
}
 
 
 
//############################################################################
//
void MotorRegler(void)
//############################################################################
{
int motorwert,pd_ergebnis,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;
 
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;
Notlandung = 0;
}
ROT_ON;
if(modell_fliegt > 1000) // wahrscheinlich in der Luft --> langsam absenken
{
GasMischanteil = EE_Parameter.NotGas;
Notlandung = 1;
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)
{
Notlandung = 0;
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)
{
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// auf Nullwerte kalibrieren (für MODE 1 K_Nick und K_ROLL vertauscht)
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(!MotorenEin && PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 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_GIER]]) > 70)
{
unsigned char setting=1;
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 1;
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 2;
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3;
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4;
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] <-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_GIER]]) < 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();
Piep(GetActiveParamSetNumber());
}
}
}
else
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < -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());
}
}
else delay_neutral = 0;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Gas ist unten (für MODE 1 K_Nick und K_ROLL vertauscht)
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] < 35-120)
{
// Starten
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < -75) && !MotorenEin)
{
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Einschalten (für MODE 1 K_Nick und K_ROLL vertauscht)
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(++delay_einschalten > 200)
{
delay_einschalten = 200;
modell_fliegt = 1;
MotorenEin = 1;
sollGier = 0;
Mess_Integral_Gier = 0;
Mess_Integral_Gier2 = 0;
Mess_IntegralNick = 0;
Mess_IntegralRoll = 0;
Mess_IntegralNick2 = IntegralNick;
Mess_IntegralRoll2 = IntegralRoll;
SummeNick = 0;
SummeRoll = 0;
MikroKopterFlags |= FLAG_START;
 
// Beim Einschalten automatisch kalibrieren
if (PARAM_CAL_ON_START) {
if ((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) {
if ((MessLuftdruck > 950) || (MessLuftdruck < 750)) {
SucheLuftruckOffset();
}
}
 
SetNeutral();
}
}
}
else delay_einschalten = 0;
//Auf Neutralwerte setzen
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Ausschalten (für MODE 1 K_Nick und K_ROLL vertauscht)
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 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-- || Notlandung)
{
static int chanNickPrev = 0;
static int chanRollPrev = 0;
static int stick_nick,stick_roll;
 
ParameterZuordnung();
 
#define MAX_CHAN_VAL 125L
#define COS45 7071L // cos( -45 ) * 10000
 
long chanNick = PPM_in[EE_Parameter.Kanalbelegung[K_NICK]];
long chanRoll = PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]];
 
int chanNickDiff;
int chanRollDiff;
 
/* Über Parameter läßt sich zwischen "+" und "X" - Formations
* umschalten (sh. parameter.h)
*/
if (PARAM_X_FORMATION) {
 
chanRoll = -chanRoll;
 
// Stick-Koordinatensystem um -45° (rechts) drehen
chanNick *= COS45;
chanRoll *= COS45;
 
int chanNickTemp = (chanNick - chanRoll) / 10000L;
int chanRollTemp = (chanRoll + chanNick) / 10000L;
 
chanNick = chanNickTemp;
chanRoll = -chanRollTemp;
 
if (chanNick > MAX_CHAN_VAL)
chanNick = MAX_CHAN_VAL;
if (chanNick < -MAX_CHAN_VAL)
chanNick = -MAX_CHAN_VAL;
if (chanRoll > MAX_CHAN_VAL)
chanRoll = MAX_CHAN_VAL;
if (chanRoll < -MAX_CHAN_VAL)
chanRoll = -MAX_CHAN_VAL;
}
 
chanNickDiff = ((chanNick - chanNickPrev) / 3) * 3;
chanRollDiff = ((chanRoll - chanRollPrev) / 3) * 3;
 
chanNickPrev = chanNick;
chanRollPrev = chanRoll;
 
stick_nick = (stick_nick * 3 + ((int) chanNick) * EE_Parameter.Stick_P) / 4;
stick_nick += chanNickDiff * EE_Parameter.Stick_D;
StickNick = stick_nick - GPS_Nick;
 
stick_roll = (stick_roll * 3 + ((int) chanRoll) * EE_Parameter.Stick_P) / 4;
stick_roll += chanRollDiff * EE_Parameter.Stick_D;
StickRoll = stick_roll - GPS_Roll;
 
 
StickGier = -PPM_in[EE_Parameter.Kanalbelegung[K_GIER]];
StickGas = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 120;
 
/* if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]]) > MaxStickNick)
MaxStickNick = abs(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]]); else MaxStickNick--;
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > MaxStickRoll)
MaxStickRoll = abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]); else MaxStickRoll--;
*/
GyroFaktor = ((float)Parameter_Gyro_P + 10.0) / (256.0/STICK_GAIN);
IntegralFaktor = ((float) Parameter_Gyro_I) / (44000 / STICK_GAIN);
 
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ 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(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;
}
 
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Bei Empfangsausfall im Flug
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(Notlandung)
{
StickGier = 0;
StickNick = 0;
StickRoll = 0;
GyroFaktor = (float) 100 / (256.0 / STICK_GAIN);
IntegralFaktor = (float) 120 / (44000 / STICK_GAIN);
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)
{
long tmp_long, tmp_long2;
if(FromNaviCtrl_Value.Kalman_K != -1)
{
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;
}
 
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)
{
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(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 * 4)
#define FEHLER_LIMIT2 (ABGLEICH_ANZAHL * 16)
#define BEWEGUNGS_LIMIT 20000
// Nick +++++++++++++++++++++++++++++++++++++++++++++++++
cnt = 1;// + labs(IntegralFehlerNick) / 4096;
if(labs(MittelIntegralNick_Alt - MittelIntegralNick) < BEWEGUNGS_LIMIT || (FromNaviCtrl_Value.Kalman_MaxDrift > 3*16))
{
if(IntegralFehlerNick > FEHLER_LIMIT2)
{
if(last_n_p)
{
cnt += labs(IntegralFehlerNick) / FEHLER_LIMIT2;
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;
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(cnt * 16 > FromNaviCtrl_Value.Kalman_MaxDrift) cnt = FromNaviCtrl_Value.Kalman_MaxDrift/16;
if(IntegralFehlerNick > FEHLER_LIMIT) AdNeutralNick += cnt;
if(IntegralFehlerNick < -FEHLER_LIMIT) AdNeutralNick -= cnt;
 
// Roll +++++++++++++++++++++++++++++++++++++++++++++++++
cnt = 1;// + labs(IntegralFehlerNick) / 4096;
 
ausgleichRoll = 0;
if(labs(MittelIntegralRoll_Alt - MittelIntegralRoll) < BEWEGUNGS_LIMIT || (FromNaviCtrl_Value.Kalman_MaxDrift > 3*16))
{
if(IntegralFehlerRoll > FEHLER_LIMIT2)
{
if(last_r_p)
{
cnt += labs(IntegralFehlerRoll) / FEHLER_LIMIT2;
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;
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(cnt * 16 > FromNaviCtrl_Value.Kalman_MaxDrift) cnt = FromNaviCtrl_Value.Kalman_MaxDrift/16;
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;
}
//DebugOut.Analog[31] = StickRoll / (26*IntegralFaktor);
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// 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[29] = (MaxStickNick + MaxStickRoll);
 
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(NeueKompassRichtungMerken)
{
fehler = 0;
ErsatzKompass = KompassValue * GIER_GRAD_FAKTOR;
}
if(!KompassSignalSchlecht && w < 25)
{
GierGyroFehler += fehler;
if(NeueKompassRichtungMerken)
{
beeptime = 200;
// KompassStartwert = KompassValue;
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;
DebugOut.Analog[1] = IntegralRoll / EE_Parameter.GyroAccFaktor;
DebugOut.Analog[2] = Mittelwert_AccNick;
DebugOut.Analog[3] = Mittelwert_AccRoll;
DebugOut.Analog[4] = MesswertGier;
DebugOut.Analog[5] = HoehenWert;
DebugOut.Analog[6] = (Mess_Integral_Hoch / 512);
DebugOut.Analog[8] = KompassValue;
DebugOut.Analog[9] = UBat;
DebugOut.Analog[11] = ErsatzKompass / GIER_GRAD_FAKTOR;
DebugOut.Analog[10] = SenderOkay;
//DebugOut.Analog[16] = Mittelwert_AccHoch;
DebugOut.Analog[17] = FromNaviCtrl_Value.Distance;
DebugOut.Analog[18] = (int)FromNaviCtrl_Value.OsdBar;
DebugOut.Analog[19] = WinkelOut.CalcState;
DebugOut.Analog[20] = ServoValue;
DebugOut.Analog[27] = (int)FromNaviCtrl_Value.Kalman_MaxDrift;
DebugOut.Analog[29] = (int)FromNaviCtrl_Value.Kalman_K;
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(Looping_Nick) MesswertNick = MesswertNick * GyroFaktor;
else MesswertNick = IntegralNick * IntegralFaktor + MesswertNick * GyroFaktor;
if(Looping_Roll) MesswertRoll = MesswertRoll * GyroFaktor;
else MesswertRoll = IntegralRoll * IntegralFaktor + MesswertRoll * GyroFaktor;
MesswertGier = MesswertGier * (2 * GyroFaktor) + Integral_Gier * IntegralFaktor / 2;
 
DebugOut.Analog[21] = MesswertNick;
DebugOut.Analog[22] = MesswertRoll;
 
// Maximalwerte abfangen
#define MAX_SENSOR (4096*STICK_GAIN)
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;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// H?henregelung
// Die H?henregelung schw?cht lediglich das Gas ab, erh?ht es allerdings nicht
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//OCR0B = 180 - (Poti1 + 120) / 4;
//DruckOffsetSetting = OCR0B;
GasMischanteil *= STICK_GAIN;
/*
if(Poti1 > 200) {OCR0A = DruckOffsetSetting - 16; ExpandBaro = 16; }else
if(Poti1 > 150) {OCR0A = DruckOffsetSetting - 8; ExpandBaro = 8; }else
if(Poti1 > 100) {OCR0A = DruckOffsetSetting - 4; ExpandBaro = 4; }else
if(Poti1 > 50) {OCR0A = DruckOffsetSetting - 2; ExpandBaro = 1; }else
{OCR0A = DruckOffsetSetting; ExpandBaro = 0;}
*/
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // H?henregelung
{
int tmp_int;
static char delay = 100;
if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER) // Regler wird ?ber Schalter gesteuert
{
if(((EE_Parameter.BitConfig & CFG_HIGHT_3SWITCH) && ((Parameter_MaxHoehe > 80) && (Parameter_MaxHoehe < 140))) ||
(!(EE_Parameter.BitConfig & CFG_HIGHT_3SWITCH) && (Parameter_MaxHoehe < 50)))
{
if(!delay--)
{
if(MessLuftdruck > 1000)
{
ExpandBaro -= 10;
OCR0A = DruckOffsetSetting - ExpandBaro;
beeptime = 300;
delay = 250;
}
else
if(MessLuftdruck < 100)
{
ExpandBaro += 10;
OCR0A = DruckOffsetSetting - 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(Notlandung) SollHoehe = 0;
h = HoehenWert;
if((h > SollHoehe) && HoehenReglerAktiv) // zu hoch --> drosseln
{
h = ((h - SollHoehe) * (int) Parameter_Hoehe_P) / (16 / STICK_GAIN); // Differenz bestimmen --> P-Anteil
h = GasMischanteil - h; // vom Gas abziehen
// h -= (HoeheD * Parameter_Luftdruck_D)/(8/STICK_GAIN); // D-Anteil
h -= (HoeheD)/(8/STICK_GAIN); // D-Anteil
tmp_int = ((Mess_Integral_Hoch / 128) * (signed long) Parameter_Hoehe_ACC_Wirkung) / (128 / STICK_GAIN);
if(tmp_int > 70*STICK_GAIN) tmp_int = 70*STICK_GAIN;
else if(tmp_int < -(70*STICK_GAIN)) tmp_int = -(70*STICK_GAIN);
h -= tmp_int;
hoehenregler = (hoehenregler*15 + h) / 16;
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;
}
}
if(GasMischanteil > (MAX_GAS - 20) * STICK_GAIN) GasMischanteil = (MAX_GAS - 20) * STICK_GAIN;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + 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 += IntegralNick * IntegralFaktor - 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 = DiffNick + Ki * SummeNick; // PI-Regler für Nick
// Motor Vorn
tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64;
if(pd_ergebnis > tmp_int) pd_ergebnis = tmp_int;
if(pd_ergebnis < -tmp_int) pd_ergebnis = -tmp_int;
 
motorwert = GasMischanteil + pd_ergebnis + GierMischanteil; // Mischer
motorwert /= STICK_GAIN;
if ((motorwert < 0)) motorwert = 0;
else if(motorwert > MAX_GAS) motorwert = MAX_GAS;
if (motorwert < MIN_GAS) motorwert = MIN_GAS;
Motor_Vorne = motorwert;
// Motor Heck
motorwert = GasMischanteil - pd_ergebnis + GierMischanteil;
motorwert /= STICK_GAIN;
if ((motorwert < 0)) motorwert = 0;
else if(motorwert > MAX_GAS) motorwert = MAX_GAS;
if (motorwert < MIN_GAS) motorwert = MIN_GAS;
Motor_Hinten = motorwert;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Roll-Achse
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DiffRoll = MesswertRoll - StickRoll; // Differenz bestimmen
if(IntegralFaktor) SummeRoll += IntegralRoll * IntegralFaktor - 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 = DiffRoll + Ki * SummeRoll; // PI-Regler für Roll
tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64;
if(pd_ergebnis > tmp_int) pd_ergebnis = tmp_int;
if(pd_ergebnis < -tmp_int) pd_ergebnis = -tmp_int;
// Motor Links
motorwert = GasMischanteil + pd_ergebnis - GierMischanteil;
motorwert /= STICK_GAIN;
if ((motorwert < 0)) motorwert = 0;
else if(motorwert > MAX_GAS) motorwert = MAX_GAS;
if (motorwert < MIN_GAS) motorwert = MIN_GAS;
Motor_Links = motorwert;
// Motor Rechts
motorwert = GasMischanteil - pd_ergebnis - GierMischanteil;
motorwert /= STICK_GAIN;
if ((motorwert < 0)) motorwert = 0;
else if(motorwert > MAX_GAS) motorwert = MAX_GAS;
if (motorwert < MIN_GAS) motorwert = MIN_GAS;
Motor_Rechts = motorwert;
// +++++++++++++++++++++++++++++++++++++++++++++++
}