更改内容:增加跟随充功能。

This commit is contained in:
Alex xu 2024-11-29 20:13:37 +08:00
parent fab81d0228
commit 81ca86199a
24 changed files with 1544 additions and 901 deletions

View File

@ -1,653 +0,0 @@
:0300000002194A98
:0F194A0075FE7275FF00758E007581B6021994D7
:0F23320053797374656D20496E69742E0D0A001E
:1022C200121F9A7BFF7A237932120466121AC612FF
:0422D2001EF280F880
:10106C004100CE0002B5000002AF000002AD00004E
:10107C0002AB000002B1000002A900004100CF0049
:10108C00029D000002A3000002B3000002A70000B2
:0C109C0002A50000029F000002A100005D
:10006E0075FE3175FF8175FE0E43FF107DAB7F303F
:0C007E001223B475FE3243FF03D2BD22F2
:1021B700900000EFF04408FD7F31122027900000C7
:0F21C700E09000CFF075A38175FE3275FF012205
:03006B00020EB8CA
:100EB800C0E0C0F0C083C082C0D075D000C000C000
:0D0EC80001C002C003C004C005C006C00781
:100ED500900048E4F0E5FEF0E5A420E003020FC829
:100EE5007F351223BB78AF760008A6077F3612231D
:100EF500BBEF540378AF46F608E6F618E6FE08E6BB
:100F0500FF7C097DC4120E8B780A120E2978AFA6D4
:100F15000608A6079000CFE0120E650F3C000F4FA4
:100F2500010F58020F6B030F7E040F91050FA406E6
:100F35000FB30700000FC878AFE6FE08E67802CECB
:100F4500C313CE13D8F9799E807578B0E625E0797C
:100F5500B6805378AFE6FE08E67803C333CE33CECA
:100F6500D8F979A4805978AFE6FE08E67802C3334C
:100F7500CE33CED8F979B4804678AFE6FE08E67868
:100F850002C333CE33CED8F979A8803378AFE6FEE5
:100F950008E67802C333CE33CED8F979A680207817
:100FA500B0E625E079A0F718E63319F7801578AF94
:100FB500E6FE08E67802CEC313CE13D8F979A2F778
:100FC500EE19F7E5A430E11B7F371223BB78AD7628
:100FD5000008A6077F381223BBEF540378AD46F609
:100FE50008E6F6E5A430E21B7F391223BB78AB7621
:100FF5000008A6077F3A1223BBEF540378AB46F6E9
:1010050008E6F6E5A430E31B7F3B1223BB78B176F7
:101015000008A6077F3C1223BBEF540378B146F6C0
:1010250008E6F6E5A430E41B7F3D1223BB78A976DC
:101035000008A6077F3E1223BBEF540378A946F6A6
:0C10450008E6F675A40F900048E0F5FEE8
:10105100D007D006D005D004D003D002D001D000F3
:0B106100D0D0D082D083D0F0D0E0329D
:0510A800C136010D033B
:10227D00E4780FF67811F6780DE67810F678127688
:08228D00047D207F40022027A0
:101D13009000C4E05463600CE4FF122153E4780E96
:101D2300F6C236229000C5E05407FFBF0607D2363D
:101D3300780E7602227810E6FD7F22122027781291
:101D4300E6FD7F21122027780FE6C454F078114670
:101D5300FD7F231220277F01122153780E7601C2C3
:021D6300362226
:0410AD00C12EC12F60
:101DB4009000C4E0FF30E603C22E22EF30E205C2F9
:101DC4002ED22F22303508E4FF122175C22E229024
:101DD40000C4E030E503C22E22D22E302F19780E33
:101DE400E6B40113C378B6E6941018E6940E4005E1
:081DF400D22EC22F22C22E22C2
:0810B100C130C1314100D1FF43
:101FFB009000C5E0FE5420FF9000D1E06F601CEE16
:10200B0030E5089000D07401F08005E49000D0F02A
:0B201B00D230D231D22A9000D1EFF079
:012026002297
:101F65006C6F6E672032732070726573730D0A0093
:101F7500737570706572206C6F6E67203873207092
:101F8500726573730D0A0073686F727420707265E1
:051F950073730D0A004A
:1010B900C11DC11CC11B0118004100C8004100C766
:0610C900004200C9000016
:10154F009000C5E030E4379000C9E475F001120E49
:10155F00029000C9E0FEA3E0FFC39464EE94004044
:10156F0007201914D2198010C3EF9490EE94014004
:10157F0007201A04D21AD21BD216C217803830167F
:10158F002EC216D217C21A9000C9E0FEA3E0FFD3F5
:10159F009419EE94005008D21DD218D22A8010C38D
:1015AF00EF94FAEE94005007301904C219D21CE4DC
:1015BF009000C9F0A3F030173FC217301C14C21CA3
:1015CF0078187602E49000C8F07BFF7A1F796512D5
:1015DF000466301B0FC21B781876037BFF7A1F79C6
:1015EF0075120466301815C218781876017BFF7AC9
:1015FF001F798C1204668004E47818F69000D0E00E
:10160F00640160030216CC7818E6640270769000CD
:10161F00C8E0C39401500F7D017F0112121EE478C0
:10162F009BF608F6804B9000C7E0D394054004E486
:10163F00F08032789CE6B4010DE4FD7F0212121E99
:10164F00789C7602802B789CE66402702418E66002
:10165F00197D017F0212121EE4789BF608F69000A6
:10166F00C8F07818F67F030219D9E4FD7F01121232
:10167F001E9000C8E0D3941440349000C7E004F0EB
:10168F00E4A3F0227818E6640370329000C8E0FFFC
:10169F00C3941E5020EF540125E060047D018009A2
:1016AF009000C8E030E007E4FD7F0312121E9000A7
:0D16BF00C8E004F022E47818F69000C8F0AE
:0116CC0022FB
:1010CF0041004B0041004A0041004C0041004900E3
:0F23410075FE0B75FF0FC290C291C293C292221C
:10224900EF14600D14600D14600D2403700BD2900F
:0A22590022D29122D29222D29322C7
:0521D600900000E0FF95
:1021DB00EF14600D14600D14600D2403700BC2908E
:0A21EB0022C29122C29222C2932266
:101BF800E4FF744D2FF582E43400F583E4F074516A
:101C08002FF582E43400F583E4F0EF25E02455F560
:101C180082E43400F583E4F0A3F0EF25E0245DF5D9
:101C280082E43400F583E4F0A3F0EF25E02465F5C1
:101C380082E43400F583E4F0A3F0EF25E0246DF5A9
:0F1C480082E43400F583E4F0A3F00FEFB404A3BB
:011C5700226A
:101B9500AC07744D2CF582E43400F583EDF0EAC30F
:101BA50013FEEB13FFEC25E02455F582E43400F534
:101BB50083EEF0A3EFF0AF03EC25E0245DF582E4BE
:101BC5003400F583EAF0A3EFF0900005E0FEA3E012
:101BD500FFEC25E02465F582E43400F583EEF0A3FF
:101BE500EFF0EC25E0246DF582E43400F583E4F0B4
:031BF500A3F02238
:101E7C00744D2FF582E43400F583EDF074512FF599
:101E8C0082E43400F583EBF0EF25E02455F582E491
:101E9C003400F583E4F0A37469F0EF25E0246DF5CC
:0B1EAC0082E43400F583E4F0A3F02290
:10008E00E4900000F0F0900000E0FFC39404400301
:10009E000203D0744D2FF582E43400F583E0602224
:1000AE0024FE602414700302019814700302020FE0
:1000BE002403600302036C900000E0FF1222490249
:1000CE00036C1221D602036C900000E0FF25E024A1
:1000DE0055F582E43400F583E0FCA3E0FDEF25E066
:1000EE00246DF582E43400F583E0FEA3E0C39DEEBB
:1000FE009C500512224980031221D6900000E0FF89
:10010E0025E0245DF582E43400F583E0FCA3E0FDF8
:10011E00EF25E0246DF582E43400F583E0FEA3E0E4
:10012E00C39DEE9C500302036C900000E025E0247A
:10013E006DF582E43400F583E4F0A3F0EF25E024BE
:10014E0065F582E43400F583E0FEA3E0D39400EE7F
:10015E0094004016900000E025E02465F582E4341A
:10016E0000F58374FFF5F0120E02900000E0FF25FB
:10017E00E02465F582E43400F583E0FCA3E04C60F6
:10018E000302036C744D2F02022B900000E0FF253A
:10019E00E02455F582E43400F583E0FCA3E0FDEFA6
:1001AE0025E0246DF582E43400F583E0FEA3E0D370
:1001BE009DEE9C500512224980031221D69000001C
:1001CE00E0FF25E0245DF582E43400F583E0FCA336
:1001DE00E0FDEF25E0246DF582E43400F583E0FECA
:1001EE00A3E0C39DEE9C500302036C900000E0253B
:1001FE00E0246DF582E43400F583E4F0A3F002030D
:10020E006C900000E0FF2451F582E43400F583E0A9
:10021E007017122197C237900000E0244DF582E44A
:10022E003400F583E4F002036C900000E0FF2451EB
:10023E00F582E43400F583E0FE6402704B2037143F
:10024E00D237EF25E02455F582E43400F583E4F04F
:10025E00A37469F0900000E0FF25E02455F582E4D8
:10026E003400F583E475F001120E02EF25E02455FB
:10027E00F582E43400F583E0FCA3E0C394FEEC9435
:10028E00005003020356804EEE6401705A20371759
:10029E00D237900000E025E02455F582E43400F5D5
:1002AE0083E4F0A374FEF0900000E0FF25E02455F7
:1002BE00F582E43400F58374FFF5F0120E02EF259B
:1002CE00E02455F582E43400F583E0FEA3E0D394F8
:1002DE0069EE94005072900000E02451F582E434EF
:1002EE0000F583E4F08061900000E0FF2451F58278
:1002FE00E43400F583E06403704EEF25E02455F5F9
:10030E0082E43400F583E0FEA3E0FFC394FEEE9496
:10031E00004004D237800BD3EF946AEE9400500263
:10032E00C237900000E025E0245530370DF582E409
:10033E003400F58374FFF5F0800BF582E43400F59C
:10034E0083E475F001120E02900000E0FF25E02418
:10035E0055F582E43400F583A3E0FD121D6590008F
:10036E0000E0FF7011744D2FF582E43400F583E048
:10037E0090004BF08043900000E0B40110244DF546
:10038E0082E43400F583E090004AF0802C90000067
:10039E00E0B40210244DF582E43400F583E09000C1
:1003AE004CF08015900000E0B4030E244DF582E46D
:1003BE003400F583E0900049F0900000E004F00274
:1003CE000094E4900000F0900000E0FFC39404500D
:1003DE001BEF25E0246DF582E43400F583E475F01F
:0C03EE0001120E02900000E004F080DB21
:0103FA0022E0
:101CB800456E74657220536869704D6F646521289C
:101CC8006C696E653A2564290D0A004E6F742047C9
:101CD800657420496E746F20536C6565702843687D
:101CE800675374617475733A25642C566F785F5620
:101CF8006F75743A25642C526573746172745F460B
:0B1D08006C61673A2564292E0D0A006B
:1010DF00C1334100B9004200BA00004100BC0F41CA
:0510EF0000B800C13251
:1022D600D2AC759A03D2BCD2BDD2A9D2AB75FE30B0
:0422E60043FF802210
:1022EA00C2ACE4F59AC2BCC2BDC2A9C2AB75FE308B
:0422FA0053FF7F22ED
:1000260030333730223DC2229000B8E004F0E0C3FE
:1000360094054010E4A3F07DAA7F4F122027E49098
:1000460000B8F0229000B8E0B404187BFF7A1C795F
:10005600B890000474DCF00204661222EA438702B8
:040066001222D6226A
:101EB700780EE6FF64016006200C0330322B7BFFAF
:101EC7007A1C79D3900004E4F0A3EFF0A20CE4FFAE
:101ED70033A3CFF0A3EFF0A232E4FF33A3CFF0A3F5
:0B1EE700EFF0120466C232C322D322C7
:101F9A0012207E12232212236D12006E7D087F7694
:101FAA001223B4D2A8D2AF12227D7D697F031222F6
:101FBA00AC122341121BF812000E121FCE9000AD74
:041FCA007401F0228C
:030003000223C213
:0623C200D23275E20F3279
:1010F4002040270000000000000000000000000065
:1011040000000000000000000000000000000000DB
:1011140000000000000000000000000000000000CB
:1011240000000000000000000000000000000000BB
:07113400000000C12DC12CD9
:10207E0075FE0443FF0C75FE0343FF0C75FE0E53F5
:10208E00FFF043FF09D2DF43878075BA0375AADCE0
:06209E00759852D2AC223D
:061F2C00900043120E5C60
:101F3200E4900046F05398EFF0900046E0C39FE42F
:101F42009E501C202BFDD22B900043E475F0011211
:101F52000E45120D88F599900046E004F080DA43B0
:021F62009810D5
:011F6400225A
:030023000216CDF5
:1016CD00C0E0C0F0C083C082C0D075D000C000C0E3
:0716DD0002C003C006C007B4
:1016E400309904C299C22B2098030217A2C298D23F
:1016F400329000BDE014602114604D2402600302A6
:1017040017A2E5999000BDB4550D7401F0A3E4F05F
:10171400A3F09000BE80138027AF997E00BE551DB4
:10172400BFAA1A9000BD7402F0A3A3E02427F8A670
:10173400999000BEE475F001120E0280619000BD24
:10174400E4F0A3F0A3F080569000BEA3E02427F8B1
:10175400A6999000BEE475F001120E029000BEE05E
:10176400FAA3E0FB64074A700D7829E62404FEE43A
:1017740033A3F0A3CEF09000C0E06A7003A3E06B43
:10178400600FD39000BFE094409000BEE09400400E
:0E1794000D9000BEE4F0A3F09000BDF0D22D49
:1017A200D007D006D003D002D000D0D0D082D083D0
:0517B200D0F0D0E03290
:0E235F00900029EFF012238F900029E0FF225A
:1023220075F10A759F03759EFD759692759A022244
:08238F00202CFDD22C8F9722B7
:03008B00022295B9
:10229500C0E0E59630E1055396FDC22CE59630E0A9
:0722A500035396FED0E03266
:1017B700506F776572204F6E2053746174652148AE
:1017C700616C6C28307825782920286C696E653A19
:1017D7002564290D0A004177616B65205374617494
:1017E7006520286C696E653A2564290D0A004E6FDD
:1017F700726D616C20537461746520286C696E6525
:101807003A2564290D0A00536C656570205374618D
:10181700746520286C696E653A2564290D0A0053A2
:101827005441303A307825782C535441313A307846
:1018370025782C535441323A307825782C436869FF
:10184700705F5354413A307825782C564F585F5380
:1018570054413A307825782E4465635F536C65654B
:10186700703A25640D0A004465636E745F536C65B6
:10187700657044656C61792052656C6F61642E0DEB
:101887000A00456E746572205374616E6462792034
:081897004D6F6465210D0A008C
:10113B004300AD0402024100AB00C12AC1294100AA
:0E114B00AC004100B0004100A9004100AA0024
:1020C800E4FB7D04FF121E7CE4FB7D047F01121EED
:1020D8007CE4FB7D047F02121E7CE4FB7D047F030D
:0320E800021E7C59
:10076000780EE66401600302086230365C202705DB
:10077000D2271220C8E4900005F0A3F0FBFA7D0117
:10078000FF121B95E4900005F0A3F0FBFA7D017FBA
:1007900001121B95E4900005F0A3F0FBFA7D017FA8
:1007A00002121B95E4900005F0A3F0FBFA7D017F97
:1007B00003121B9590004B7401F090004AF09000DA
:1007C0004CF0900049F002085920260CD226D22A7B
:1007D000E49000B0F00208599000ABE0C3940150DF
:1007E00057E004F09000B0E014601A146027146021
:1007F000342403706490004BE06404605C7B017DF2
:1008000004E4FF802E90004AE06404604C7B017D8C
:10081000047F01801E90004CE06404603C7B017DFD
:10082000047F02800E900049E06404602C7B017D0F
:10083000047F03121E7C80219000ABE0C3940F5014
:1008400005E004F08013E49000ABF09000B0E00409
:10085000F0E0C394044002E4F0C231C20AC21DD2E7
:10086000282230260AC2261220C8D22AD2292230B3
:100870002A49E49000ABF0C22A900005F0A3F0FBF7
:10088000FAFDFF121B95E4900005F0A3F0FBFAFDC2
:100890007F01121B95E4900005F0A3F0FBFAFD7FA9
:1008A00002121B95E4900005F0A3F0FBFAFD7F0314
:1008B000121B9590004B7402020A1A20310C20285A
:1008C00009200A06201D03020A329000ABE0FFC394
:1008D00094015004E004F022EFC394644003020A40
:1008E000289000ABE004F07814E6C39419503790D8
:1008F000004BE064037003020A32E4900005F0A3A9
:10090000F07B64FA7D03FF121B9590004B7404F09A
:10091000E4900005F0A3F0FBFAFD7F01121B959017
:10092000004A740280327814E6C394325041E49055
:100930000005F0A3F0FBFA7D01FF121B9590004B20
:100940007401F0E4900005F0A3F0FBFA7D017F0153
:10095000121B9590004A7401F0E4900005F0A3F09A
:10096000FBFAFD7F02121B9590004C7402804878C0
:1009700014E6C3944B5057E4900005F0A3F0FBFA43
:100980007D01FF121B9590004B7401F0E49000056F
:10099000F0A3F0FBFA7D017F01121B9590004A74D1
:1009A00001F0E4900005F0A3F0FBFA7D017F021254
:1009B0001B9590004C7401F0E4900005F0A3F0FB4F
:1009C000FAFD7F03121B959000497402F0227814FF
:1009D000E6C39464505CE4900005F0A3F0FBFA7D5C
:1009E00001FF121B95E4900005F0A3F0FBFA7D01D6
:1009F0007F01121B95E4900005F0A3F0FBFA7D0146
:100A00007F02121B95E4900005F0A3F0FBFA7D0134
:100A10007F03121B9590004B7401F090004AF090F8
:100A2000004CF0900049F022C231C228C20AC21D17
:020A3000D22AC8
:010A320022A1
:102213009000CEE0FF04F01221B79000CEE0C3940B
:0B222300084005E4F07F01227F00224C
:1021F500121D13121DB4121FFB12154F122053305E
:0E2205001E0BC21E12189F120760120A33220F
:092386007B017A0079C2021C58A7
:1013BB00E4900000F09000ADE0FFA3E0FE6F70033F
:1013CB00021467A3EEF09000ADE0A3F024FE605191
:1013DB0014605F1460732403600302154E900005C4
:1013EB00E4F0A37403F07B647A007D02E4FF121B2C
:1013FB0095900005E4F0A37403F07B647A007D0202
:10140B007F01121B957BFF7A1779B79000D0E0FF15
:10141B00900004E4F0A3EFF0A37401F0A374E88050
:10142B00377BFF7A1779DD9000047401F0A374F217
:10143B0080269000BC740FF07BFF7A1779F5900033
:10144B00047401F0A374FE800F7BFF7A18790E9061
:10145B0000047402F0A3740AF00215289000AEE0A9
:10146B0024FE603914603D147003021540240360A0
:10147B000302154E9000A9E004F0E0C3940850035A
:10148B0002154E9000AD7402F0E49000A9F07815AF
:10149B00E6600302154E9000AD7404F0229000AD8F
:1014AB007403F02220220302154EC2227BFF7A180E
:1014BB0079269000C2E0FF900004E4F0A3EFF090D7
:1014CB0000C3E0FF900006E4F0A3EFF09000C4E04F
:1014DB00FF900008E4F0A3EFF09000C5E0FF900050
:1014EB000AE4F0A3EFF09000C6E0FF90000CE4F0EC
:1014FB00A3EFF09000BCE0FF90000EE4F0A3EFF040
:10150B001204669000BCE0D394004014E014F03059
:10151B003231C232740FF07BFF7A18796E02046697
:10152B007BFF7A1879891204669000AD7404F0E49D
:10153B009000B8F022121EB750030200269000ADA7
:03154B007402F037
:01154E00227A
:101EF20030212EC2219000AAE0FF04F0EF14600FFF
:101F0200146011146013240370171222138012122A
:101F12002386800D1221F580081213BBE49000AADB
:0A1F2200F0302305C22312008E22C6
:101B2F00564F58204348472046756C6C2E0D0A00BF
:101B3F00564F582047657420496E746F20536C655B
:101B4F0065702E0D0A00000000000000000000006C
:101B5F000000000000000000000000000000000076
:101B6F000000000000000000000000000000000066
:101B7F000000000000000000000000000000000056
:061B8F0000000000000050
:10115900C10CC10AC10B4100A6FFC1094200A1008F
:1011690000029B00004200A300004200A7000010FB
:1011790067000000000000000000000000000000FF
:10118900002024770000000000000000000000009B
:101199000000000000000000000000000000000046
:0C11A90000000000000000004100A50054
:0519D900900043EFF057
:1019DE00E4A3F0A3F07F27121E3F900044EFF07FA8
:1019EE0037121E3F900045EFF0900043E024FD605B
:1019FE001B14602424FE602824057035900045E0F9
:101A0E004494F0900044E04498F08025900044E027
:101A1E004406F054E7F08019900045E054FD80092B
:101A2E00900045E04402F054FEF0900044E054E192
:101A3E00F0900044E0FD7F27122027900045E0FD46
:051A4E007F3702202794
:100A33009000C4E054186003D20922C209202E0397
:100A4300020C4E303045200B0D7F3C1222637F0198
:100A5300122175D20B227F031219D9E49000A0F062
:100A630090009EF0A3F0C2009000D0E07015C20A7F
:100A7300D201C202C206C207C208789BF608F6D2A8
:100A83000C8006C201D202C204C230200203020B50
:100A93003390009EE0C394055003020BF290009F35
:100AA300E0C39405500A7F061219D990009F802A4B
:100AB3002000409000A0E0FFD3940B5022EF75F08C
:100AC3000384E5F07003FD80099000A0E020E007B7
:100AD3007D017F0612121E9000A0E004F080517F7A
:100AE300041219D9E49000A0F0D200D203C20BC2C1
:100AF3000C803D30030EC2039000C6E0540C9000FE
:100B03009DF0802C9000C6E0540CFBE4FAF9F890B9
:100B1300009DE0FFE4FCFDFEC3120E18601290007E
:100B2300C6E0540CFF6004D20AD22A90009DEFF075
:100B3300200103020C4B302925200B197F011221C0
:100B430075D20BD20CE490009FF090009EF09000C1
:100B5300A0F0C206227F031219D9C2298035900062
:100B63009EE0D394035003020BF290009FE0FFD367
:100B7300940B501FEF75F00384E5F07003FD8009BB
:100B830090009FE020E0077D017F8112121E9000FC
:100B93009F805C9000A0E0FFD39432501FEF75F06C
:100BA3000384E5F07003FD80099000A0E020E007D6
:100BB3007D017F0712121E9000A08033200648900B
:100BC30000C6E05430FFE4FCFDFE7B30FAF9F8C3C5
:100BD300120E1860119000C6E0540CFFE4FCFDFEF9
:100BE300EF600330346290009EE0C394325004E01F
:100BF30004F0227BFF7A1B792F120466D206C20B04
:100C03007F041219D980419000A0E0FFD3940B50C8
:100C130022EF75F00384E5F07003FD80099000A0D6
:100C2300E020E0077D017F8012121E9000A0E00407
:100C3300F08015200712D2077F041219D9C20C7B4A
:100C4300FF7A1B793F120466C20522200514D205E0
:100C53007F041219D9C20C9000C6E0540C90009D79
:100C6300F0229000C6E0540CFBE4FAF9F890009DE2
:100C7300E0FFE4FCFDFEC3120E1860129000C6E014
:0E0C8300540CFF6004D20AD22A90009DEFF0BC
:010C91002240
:0B1DFC00900043120E5C900046EDF0DA
:101E0700E4FE900046E0FD14F0ED6029900043E405
:101E170075F001120E45120D886EFEE4FFEFC394B4
:101E27000850DFEE30E007C313648CFE8004EEC376
:071E370013FE0F80E8AF0667
:011E3E002281
:08121E00900000EFF0A3EDF0D9
:10122600E4A3F078037C007D017BFF7A1B7955FEF1
:101236007F40120D62E4900003F0A37455F0A3748E
:10124600AAF0900000E0FE900007F0900001E0FD9B
:101256009000A6F0EE120E6512770112A40212F3A8
:1012660003130006130007134580134D8100001376
:101276005B9000067402F0ED700D9000087402F0A9
:10128600E4789BF602135B900001E06401600302C0
:10129600135B90000804F0E4789CF602135B900060
:1012A60006741BF07F05900001E075F012A4247708
:1012B6002FF8E6FE74032FF582E43400F583EEF092
:1012C6000FEFB412E17F17EFC39408400302135BDC
:1012D600900001E075F008A424672FF8E6FE740379
:1012E6002FF582E43400F583EEF00F80DA900006E5
:1012F6007402F090000804F0805B9000067405F01C
:101306009000087401F07814E6A3F0A37420F0901E
:101316000001E0FF700D9000A3E07002800F9000C6
:10132600A48015EFB4012E9000A4E0700890000B85
:1013360074FFF080209000A3E090000BF0801690E0
:1013460000067401F0800E9000067402F09000A56D
:10135600E0900008F0900006E02404FF900002F000
:10136600FD7B017A007903121DFC900002E0240344
:10137600F582E43400F583EFF07F011219D990006D
:1013860001E0FF700B75FE0E53FFF043FF08800D62
:10139600EFB4010975FE0E53FFF043FF0190000202
:1013A600E02401FFE433FE7B017A007903121F2C4F
:0513B6007F030219D9BC
:101A5300EF24FA604D14604A24067066E4FE742B8A
:101A63002EF8E6FF9000A6E075F012A424772EF876
:101A7300A6070EEEB412E7E4FE743D2EF8E6FF90DF
:101A830000A6E075F008A424672EF8A6070EEEB4AE
:101A930008E79000A6E07005789B760122789C7693
:101AA3000122782BE6B4E30D9000A17401F008E65F
:101AB3009000A3F0229000A27401F0782CE690002D
:021AC300A4F08D
:011AC50022FE
:10205300E4FF900000F0302D21C22DFB7A00792798
:102063007829E62403FD121DFC7829E6242AF8E6E4
:0A207300B50707782AE6FF121A539A
:01207D002240
:1011B500011500011400C134C13501135060280028
:1011C500750BB80BEA0C1C0C800CB20CE40D160D5B
:1011D500480D7A0DAC0DF70E420E880ED80F0A0F8A
:0911E5003C0F870FD2101D1068A9
:10189F00E4FF780EE6B40122EF25E02475F582E42B
:1018AF003400F583E0FCA3E02432FDE43CFCC37874
:1018BF00B6E69D18E69C501B801EEF25E02475F5BB
:1018CF0082E43400F583E0FCA3E0D378B696EC18FD
:1018DF009650050FEFB414BA7815E6FEEFD39E7845
:1018EF00134003068001169000C5E030E30A781517
:1018FF00EFF675F005A418F67813E6FED39496501C
:10190F0006EEC3940A500D7815EFF675F005A4187E
:10191F00F61876507815E6FFD394005004D2358030
:10192F0008EFD394014002C235EFD394015003D294
:0A193F003422EFD394024002C234B8
:01194900227B
:1011EE004100B4004100B7004100B3004200B1001D
:1011FE00004100B500C120C121C123C11FC11EC1C4
:09120E00224100B600C124C125F3
:101AC6009000B6E06062E4F0D2209000B4E004F04A
:101AD600E0C394054004E4F0D2219000B7E004F09E
:101AE600E0C3940A4004E4F0D2239000B1E475F018
:101AF60001120E02C39000B2E094649000B1E0942B
:101B0600004006E4F0A3F0D21E9000B3E004F0E03B
:101B1600C394FA4013E4F0D21F9000B5E004F0E05D
:091B260094044004E4F0D22222F0
:03000B000220EBE5
:1020EB00C0E0C083C082C0D074FC258CF58C7466B4
:1020FB00258AF58A9000B67401F0D0D0D082D083B7
:03210B00D0E032EF
:0E236D00758901758CFC758A66D2A9D28C2206
:1021970075FE0FEF25E0FE7403A806088002C3331F
:1021A700D8FCF452FFEFB4040675FE0FE4F5FF22E6
:1022AC0075FE11EF5407F5FF75FE12AF058FFF7524
:0622BC00FE1075FF012277
:101D650075FE0FEF25E0FE7403A806088002C33355
:101D7500D8FCF452FF7401A806088002C333D8FCCE
:101D850042FF75FE0B7401A807088002C333D8FC17
:101D950042FFEF70038DCE22EFB401038DCF22EF0A
:0F1DA500B402038DDE22EFB40304AF058FDF22FB
:033FFD00010101BE
:06121700011600011700A2
:101FCE00D28075FE0443FF0175FE0343FF0175FECB
:101FDE000243FF01D28175FE0443FF0275FE0343E7
:0D1FEE00FF0275FE0243FF02781676012205
:0C22FE00C28012230AD28112230AD2806F
:05230A00E4FF0FDFFEFF
:01230F0022AB
:10222E00D281D28012230A2081037F0022C2811222
:0B223E00230A3081037F00227F012271
:0F235000C280C281122305D28112230A02230AFE
:10231000C28012230AC28112230512230AC280023C
:02232000230A8E
:082397001222FEC28002230A9B
:0B237B001222FE12230AC28002230A75
:02213100AE07F7
:102133007D08AF051DEF6015C280EE30E704D28144
:0F2143008002C281EE25E0FE12230580E5C280F6
:01215200226A
:10210E007E08E4FDD281AF061EEF6012ED25E0FDE4
:10211E00C2801223053081EEED4401FD80E8C280BD
:02212E00AF05FB
:01213000228C
:10000E007D087F351220277D0A7F761223B47D046A
:05001E007F20022027F5
:101C5800900000120E5C7F10121E3F900000120EC2
:101C68003CEF120DCE7F11121E3F900000120E3C69
:101C7800900001EF120DE07F12121E3F900000123B
:101C88000E3C900002EF120DE07F13121E3F9000F1
:101C980000120E3C900003EF120DE07F14121E3F5D
:101CA800900000120E3C900004EF120DE07F00221D
:05215300900000EFF018
:10215800E47F20121E3F900000E06006EF4401FF7C
:0D2168008004EF54FEFFAD077F200220270A
:05217500900000EFF0F6
:10217A00E47F27121E3F900000E06006EF4401FF53
:0D218A008004EF54FEFFAD077F27022027E1
:05226300900000EFF007
:10226800E47F25121E3FEF54C0FF900000E04FFDB1
:052278007F2502202774
:1020A4009000CB120E5C120D88FD7F271220279022
:1020B40000CB120E3C900001120DA1FD7F371220BF
:0420C400277F002250
:07239F007DAA7F4F022027F9
:0723A6007D117F4F0220278B
:0723AD007D337F4F02202762
:0723B4008FFEAF058FFF2231
:0623BB008FFEAEFFAF062D
:0123C10022F9
:10202700900046EFF0A3EDF012222E7F0C12213123
:1020370012237B900046E0FF12213112237B900090
:0C20470047E0FF12213112237B022350DE
:051E3F00900046EFF0E9
:101E4400E4A3F012222E7F0C12213112237B900086
:101E540046E0FF12213112237B12222E7F0D122124
:101E64003112237B12210E900047EFF012239712B8
:071E74002350900047E0FF3E
:011E7B002244
:101959000222C2E493A3F8E493A34003F68001F2C0
:1019690008DFF48029E493A3F85407240CC8C3338F
:10197900C4540F4420C8834004F456800146F6DF5E
:10198900E4800B010204081020408090106CE47E72
:10199900019360BCA3FF543F30E509541FFEE49353
:1019A900A360010ECF54C025E060A840B8E493A31A
:1019B900FAE493A3F8E493A3C8C582C8CAC583CA45
:1019C900F0A3C8C582C8CAC583CADFE9DEE780BEFD
:01121D0000D0
:100C9200E709F608DFFA8046E709F208DFFA803E44
:100CA20088828C83E709F0A3DFFA8032E309F60831
:100CB200DFFA8078E309F208DFFA807088828C8399
:100CC200E309F0A3DFFA806489828A83E0A3F6084D
:100CD200DFFA805889828A83E0A3F208DFFA804C27
:100CE20080D280FA80C680D4806980F280338010FE
:100CF20080A680EA809A80A880DA80E280CA803367
:100D020089828A83ECFAE493A3C8C582C8CCC583DE
:100D1200CCF0A3C8C582C8CCC583CCDFE9DEE780AE
:100D22000D89828A83E493A3F608DFF9ECFAA9F02D
:100D3200EDFB2289828A83ECFAE0A3C8C582C8CC83
:100D4200C583CCF0A3C8C582C8CCC583CCDFEADE9C
:100D5200E880DB89828A83E493A3F208DFF980CCFE
:100D620088F0EF60010E4E60C388F0ED2402B404F7
:100D72000050B9F582EB2402B4040050AF2323459E
:060D82008223900CE273D5
:100D8800BB010689828A83E0225002E722BBFE0269
:090D9800E32289828A83E493229C
:100DA100BB010CE58229F582E5833AF583E0225007
:100DB10006E92582F8E622BBFE06E92582F8E22251
:0D0DC100E58229F582E5833AF583E493226B
:100DCE00BB010689828A83F0225002F722BBFE0104
:020DDE00F322FE
:100DE000F8BB010DE58229F582E5833AF583E8F049
:100DF000225006E92582C8F622BBFE05E92582C8F5
:020E0000F222DC
:100E0200C5F0F8A3E028F0C5F0F8E582158270027B
:060E12001583E038F02218
:100E1800EB9FF5F0EA9E42F0E99D42F0E89C45F030
:010E280022A7
:100E2900E8600FECC313FCED13FDEE13FEEF13FFA7
:030E3900D8F122CB
:090E3C00E0FBA3E0FAA3E0F922B7
:100E4500F8E0FBA3A3E0F925F0F0E5821582700236
:070E55001583E0FA38F022DA
:090E5C00EBF0A3EAF0A3E9F02297
:100E6500D083D082F8E4937012740193700DA3A31C
:100E750093F8740193F5828883E473740293686030
:060E8500EFA3A3A380DF30
:100E8B00EC8EF0A4CCC5F0CCCDF8EFA4CEC5F02DF4
:100E9B00FDE43CFCE8A42EC8C5F03DFDE43CFCEFB2
:0D0EAB00A4FFE5F028FEE43DFDE43CFC2240
:1003FB00E5082404F582E43400F583E00508229037
:10040B000001301403900004E475F001120E450254
:10041B000D88200DE97F2ED20D8018EF540F2490FC
:10042B00D43440D4FF30110BEF24BFB41A00500367
:10043B002461FFE50960021509050CE50C70020546
:10044B000B30140E900001E475F001120E45EF0213
:10045B000DCE02235F7403D2148003E4C214F5089B
:10046B00900001120E5CE4F509F50BF50CE5096043
:10047B00077F2012043E80F5750AFFC20EC20DC223
:10048B000FC210C212C213C21512040AFF700D3034
:10049B0014057F0012044FAF0CAE0B22B4255FC2C4
:1004AB00D5C21112040AFF24D0B40A00501A75F0F9
:1004BB000A780930D50508B6FF0106C6A426F62032
:1004CB00D5047002D21080D924CFB41A00EF500497
:1004DB00C2E5D211020650D20E80C6D20D80C0D218
:1004EB000F80BCD2D580BAD21280B47F2012043ECA
:1004FB00200F077401B5090040F11203FBFF120432
:10050B003E020478D215D21380951203FBFB120323
:10051B00FBFA1203FBF94A4B700679217A077BFF32
:10052B00200F2EE509602A7E008E82758300120D46
:10053B00A160060EEE650A70F0C2D5EBC0E0EAC012
:10054B00E0E9C0E0EE120697D0E0F9D0E0FAD0E097
:10055B00FB120D88FF60AAEBC0E0EAC0E0E9C0E047
:10056B0012043ED0E02401F9D0E03400FAD0E0FBD5
:10057B00E50A0460DCD50AD980877BFF7A0679937C
:10058B00D20F809C791080027908C213C2158008A3
:10059B00D2D5790A8004790AC2D5E50A047002F52E
:1005AB000AE4FAFDFEFF1203FBFC7B08200E13127C
:1005BB0003FBFD7B10300D0A1203FBFE1203FBFF46
:1005CB007B20EC3382D592D55013C3E4300D069FBC
:1005DB00FFE49EFEE4200E039DFDE49CFCE4CBF8BF
:1005EB00C20EEC700CCFCECDCCE824F8F870F380B3
:1005FB0017C3EF33FFEE33FEED33FDEC33FCEB3380
:10060B00FB994002FB0FD8E9EB300E05F8D0E0C4A4
:10061B0048B20EC0E00AEC4D4E4F78207B0070C202
:10062B00EAB50A0040BCC0E0120699D0F0D0E02039
:10063B000E04C4C0E0C4B20EC0F0120427D0F0D533
:10064B00F0EB020478120E65051553058F5804E67E
:10065B004C04E24205934F059B44059B4904FB4325
:08066B0005A155058546058532
:100673004505854707415004EA2D04EE2E05112B4D
:1006830004F223050F20072A2A04AA4800000509BB
:100693003F3F3F00790AA2D5201014301209B91048
:1006A300020404B9080104A2D52013025001042056
:1006B3000F68920FB509005034C0E07F2030101945
:1006C3007F30A20F72137212500F1206F0C20FC2C4
:1006D30013C212C2157F30800F301203E9C0E0123B
:1006E300043E301203D0E0F9D0E0B509CC30121744
:1006F3007F30B9100C12043E7F583011077F788089
:1007030003B9080312043E300F057F2D02043E7F18
:10071300202015F87F2B2013F322920F80CF286E11
:10072300756C6C2900D20E1203FB300EF8C20E78E2
:100733000930D50108F60204AA2D50434958120383
:10074300FB2403B405004001E490073C9312042FFB
:0D075300743A12042FD21075090402058FAC
:00000001FF

Binary file not shown.

View File

@ -0,0 +1,857 @@
:030000000226E6EF
:0F26E60075FE7275FF00758E007581B502273085
:0B2FF900122BFA122865122B5280F8F0
:101DFB004100F40002B4000002AE000002AC00008F
:101E0B0002AA000002B0000002A800004100F50089
:101E1B00029C000002A2000002B2000002A6000019
:0C1E2B0002A40000029E000002A00000C3
:10006E0075FE3175FF8175FE0E43FF107DAB7F303F
:0C007E0012303D75FE3243FF03D2BD225C
:102E4500900000EFF04408FD7F31122CB590000092
:0F2E5500E09000F5F075A38175FE3275FF012244
:03006B00021FB3BE
:101FB300C0E0C0F0C083C082C0D075D000C000C0F4
:0D1FC30001C002C003C004C005C006C00775
:101FD000900048E4F0E5FEF0E5A420E0030220C311
:101FE0007F3512304478AE760008A6077F3612306F
:101FF00044EF540378AE46F608E6F618E6FE08E627
:10200000FF7C097DC412184F780A1217ED78AEA62E
:102010000608A6079000F5E0121829203700204A8C
:1020200001205302206603207904208C05209F069E
:1020300020AE07000020C378AEE6FE08E67802CEA8
:10204000C313CE13D8F9799D807578AFE625E07972
:10205000B5805378AEE6FE08E67803C333CE33CEC0
:10206000D8F979A3805978AEE6FE08E67802C33342
:10207000CE33CED8F979B3804678AEE6FE08E6785E
:1020800002C333CE33CED8F979A7803378AEE6FEDB
:1020900008E67802C333CE33CED8F979A58020780C
:1020A000AFE625E0799FF718E63319F7801578AE8B
:1020B000E6FE08E67802CEC313CE13D8F979A1F76D
:1020C000EE19F7E5A430E11B7F3712304478AC7687
:1020D0000008A6077F38123044EF540378AC46F668
:1020E00008E6F6E5A430E21B7F3912304478AA7680
:1020F0000008A6077F3A123044EF540378AA46F648
:1021000008E6F6E5A430E31B7F3B12304478B07656
:102110000008A6077F3C123044EF540378B046F61F
:1021200008E6F6E5A430E41B7F3D12304478A8763B
:102130000008A6077F3E123044EF540378A846F605
:0C21400008E6F675A40F900048E0F5FEDC
:10214C00D007D006D005D004D003D002D001D000E7
:0B215C00D0D0D082D083D0F0D0E03291
:051E3700C137010D039D
:102F0B00E4780FF67811F6780DE67810F6781276ED
:082F1B00047D207F40022CB56B
:1029F1009000EAE05463600CE4FF122DE1E4780EEC
:102A0100F6C237229000EBE05407FFBF0607D2372A
:102A1100780E7602227810E6FD7F22122CB578120C
:102A2100E6FD7F21122CB5780FE6C454F0781146EB
:102A3100FD7F23122CB57F01122DE1780E7601C2A4
:022A410037223A
:041E3C00C12FC130C1
:102A92009000EAE0FF30E603C22F22EF30E205C2E7
:102AA2002FD23022303608E4FF122E03C22F22909A
:102AB20000EAE030E503C22F22D22F303019780E1F
:102AC200E6B40113C378B5E6941018E6940E4005F7
:082AD200D22FC23022C22F22D4
:081E4000C131C1324100F7FF7E
:102C89009000EBE0FE5420FF9000F7E06F601CEE2F
:102C990030E5089000F67401F08005E49000F6F044
:0B2CA900D231D232D22B9000F7EFF0B6
:012CB40022FD
:102BC5006C6F6E672032732070726573730D0A0027
:102BD500737570706572206C6F6E67203873207026
:102BE500726573730D0A0073686F72742070726575
:052BF50073730D0A00DE
:101E4800C11EC11DC11C0118004100EE004100ED7A
:061E5800004200EF000053
:102306009000EBE030E4379000EFE475F001121630
:10231600F59000EFE0FEA3E0FFC39464EE94004066
:1023260007201A14D21A8010C3EF9490EE9401403D
:1023360007201B04D21BD21CD217C21880383017B4
:102346002EC217D218C21B9000EFE0FEA3E0FFD307
:102356009419EE94005008D21ED219D22B8010C3C5
:10236600EF94FAEE94005007301A04C21AD21DE414
:102376009000EFF0A3F030183FC218301D14C21DB4
:1023860078187602E49000EEF07BFF7A2B79C5127E
:102396001236301C0FC21C781876037BFF7A2B7915
:1023A600D5121236301915C219781876017BFF7AC4
:1023B6002B79EC1212368004E47818F69000F6E0D9
:1023C6006401600302248E7818E664026003022426
:1023D600559000EEE0C3940150107D017F0112215B
:1023E60067E4900075F0A3F080529000EDE0D3947E
:1023F600054004E4F08039900076E0B4010FE4FD76
:102406007F021221679000767402F0802F9000768A
:10241600E064027027900075E0601A7D017F021269
:102426002167E4900075F0A3F09000EEF07818F6BE
:102436007F03022775E4FD7F011221679000EEE01D
:10244600D3941440349000EDE004F0E4A3F0227835
:1024560018E6640370329000EEE0FFC3941E50202D
:10246600EF540125E060047D0180099000EEE03024
:10247600E007E4FD7F031221679000EEE004F022FE
:08248600E47818F69000EEF076
:01248E00222B
:101E5E0041007D0041007C0041007E0041007B007E
:0F2FBF0075FE0B75FF0FC290C291C293C2922292
:102ED700EF14600D14600D14600D2403700BD29075
:0A2EE70022D29122D29222D293222D
:052E6400900000E0FFFA
:102E6900EF14600D14600D14600D2403700BC290F3
:0A2E790022C29122C29222C29322CB
:10293100E4FF747F2FF582E43400F583E4F07483BF
:102941002FF582E43400F583E4F0EF25E02487F5E8
:1029510082E43400F583E4F0A3F0EF25E0248FF561
:1029610082E43400F583E4F0A3F0EF25E02497F549
:1029710082E43400F583E4F0A3F0EF25E0249FF531
:0F29810082E43400F583E4F0A3F00FEFB404A375
:012990002224
:1028CE00AC07747F2CF582E43400F583EDF0EAC397
:1028DE0013FEEB13FFEC25E02487F582E43400F5BC
:1028EE0083EEF0A3EFF0AF03EC25E0248FF582E446
:1028FE003400F583EAF0A3EFF0900005E0FEA3E0CC
:10290E00FFEC25E02497F582E43400F583EEF0A386
:10291E00EFF0EC25E0249FF582E43400F583E4F03B
:03292E00A3F022F1
:102B1700747F2FF582E43400F583EDF074832FF58D
:102B270082E43400F583EBF0EF25E02487F582E4B7
:102B37003400F583E4F0A37469F0EF25E0249FF5F2
:0B2B470082E43400F583E4F0A3F022E8
:100E5E00E4900000F0F0900000E0FFC39404400323
:100E6E000211A0747F2FF582E43400F583E0602236
:100E7E0024FE6024147003020F68147003020FDF47
:100E8E002403600302113C900000E0FF122ED702F3
:100E9E00113C122E6402113C900000E0FF25E0246C
:100EAE0087F582E43400F583E0FCA3E0FDEF25E056
:100EBE00249FF582E43400F583E0FEA3E0C39DEEAB
:100ECE009C5005122ED78003122E64900000E0FF76
:100EDE0025E0248FF582E43400F583E0FCA3E0FDE9
:100EEE00EF25E0249FF582E43400F583E0FEA3E0D5
:100EFE00C39DEE9C500302113C900000E025E024BF
:100F0E009FF582E43400F583E4F0A3F0EF25E024AE
:100F1E0097F582E43400F583E0FEA3E0D39400EE6F
:100F2E0094004016900000E025E02497F582E4340A
:100F3E0000F58374FFF5F01216F5900000E0FF2522
:100F4E00E02497F582E43400F583E0FCA3E04C60E6
:100F5E000302113C747F2F020FFB900000E0FF256F
:100F6E00E02487F582E43400F583E0FCA3E0FDEF96
:100F7E0025E0249FF582E43400F583E0FEA3E0D360
:100F8E009DEE9C5005122ED78003122E6490000009
:100F9E00E0FF25E0248FF582E43400F583E0FCA326
:100FAE00E0FDEF25E0249FF582E43400F583E0FEBA
:100FBE00A3E0C39DEE9C500302113C900000E0257F
:100FCE00E0249FF582E43400F583E4F0A3F00211EF
:100FDE003C900000E0FF2483F582E43400F583E0CA
:100FEE007017122E25C238900000E0247FF582E49F
:100FFE003400F583E4F002113C900000E0FF2483FE
:10100E00F582E43400F583E0FE6402704B20381460
:10101E00D238EF25E02487F582E43400F583E4F03E
:10102E00A37469F0900000E0FF25E02487F582E4C8
:10103E003400F583E475F0011216F5EF25E02487F0
:10104E00F582E43400F583E0FCA3E0C394FEEC9457
:10105E00005003021126804EEE6401705A2038179C
:10106E00D238900000E025E02487F582E43400F5C4
:10107E0083E4F0A374FEF0900000E0FF25E02487E7
:10108E00F582E43400F58374FFF5F01216F5EF25C2
:10109E00E02487F582E43400F583E0FEA3E0D394E8
:1010AE0069EE94005072900000E02483F582E434DF
:1010BE0000F583E4F08061900000E0FF2483F58268
:1010CE00E43400F583E06403704EEF25E02487F5E9
:1010DE0082E43400F583E0FEA3E0FFC394FEEE94B9
:1010EE00004004D238800BD3EF946AEE9400500285
:1010FE00C238900000E025E0248730380DF582E4F8
:10110E003400F58374FFF5F0800BF582E43400F5BE
:10111E0083E475F0011216F5900000E0FF25E0243F
:10112E0087F582E43400F583A3E0FD122A43900094
:10113E0000E0FF7011747F2FF582E43400F583E038
:10114E0090007DF08043900000E0B40110247FF504
:10115E0082E43400F583E090007CF0802C90000057
:10116E00E0B40210247FF582E43400F583E09000B1
:10117E007EF08015900000E0B4030E247FF582E42B
:10118E003400F583E090007BF0900000E004F00264
:10119E000E64E4900000F0900000E0FFC394045051
:1011AE001BEF25E0249FF582E43400F583E475F00F
:0C11BE00011216F5900000E004F080DB48
:0111CA002202
:101E6E00C1344100DF004200E000004100E20F41BA
:051E7E0000DE00C1338D
:102F5000D2AC759A03D2BCD2BDD2A9D2AB75FE3029
:042F600043FF802289
:102F6400C2ACE4F59AC2BCC2BDC2A9C2AB75FE3004
:042F740053FF7F2266
:102C2E00303421302327C2239000DEE004F0E0C3CD
:102C3E0094054019E4A3F07DAA7F4F122CB5E490C1
:0E2C4E0000DEF022122F64438702122F502264
:102F7800780EE664016006200D03303304C233C3C3
:032F880022D3222F
:102BFA00122D0C122FAF122FEB12006E7D087F766A
:102C0A0012303DD2A8D2AF122F0B7D697F03122F4B
:102C1A003A122FBF12293112000E122C5C9000D3E7
:042C2A007401F0221F
:0300030002304B7D
:06304B00D23375E20F32E2
:101E830020402800000000000000000000000000C7
:101E9300000000000000000000000000000000003F
:101EA300000000000000000000000000000000002F
:101EB300000000000000000000000000000000001F
:071EC300000000C12EC12D3B
:102D0C0075FE0443FF0C75FE0343FF0C75FE0E535A
:102D1C00FFF043FF09D2DF43878075BA0375AADC45
:062D2C00759852D2AC22A2
:062B8C0090004312182026
:102B9200E4900046F05398EFF0900046E0C39FE4C3
:102BA2009E501C202CFDD22C900043E475F00112A3
:102BB2001809121626F599900046E004F080DA43CF
:022BC200981069
:012BC40022EE
:0300230002248F25
:10248F00C0E0C0F0C083C082C0D075D000C000C013
:07249F0002C003C006C007E4
:1024A600309904C299C22C209803022564C298D29E
:1024B600339000E3E014602114604D2402600302AF
:1024C6002564E5999000E3B4550D7401F0A3E4F09A
:1024D600A3F09000E480138027AF997E00BE551DBF
:1024E600BFAA1A9000E37402F0A3A3E02428F8A67A
:1024F600999000E4E475F0011216F580619000E30E
:10250600E4F0A3F0A3F080569000E4A3E02428F8BA
:10251600A6999000E4E475F0011216F59000E4E047
:10252600FAA3E0FB64074A700D782AE62404FEE469
:1025360033A3F0A3CEF09000E6E06A7003A3E06B4D
:10254600600FD39000E5E094409000E4E0940040F2
:0E2556000D9000E4E4F0A3F09000E3F0D22E2C
:10256400D007D006D003D002D000D0D0D082D08300
:05257400D0F0D0E032C0
:0E2FDD0090002BEFF012301890002BE0FF2236
:102FAF0075F10A759F03759EFD759692759A0222AB
:08301800202DFDD22D8F97221F
:03008B00022F231E
:102F2300C0E0E59630E1055396FDC22DE59630E00D
:072F3300035396FED0E032CB
:101ECA004300D30402024100D100C12BC12A4100C0
:0E1EDA00D2004100D6004100CF004100D000F0
:102D5600E4FB7D04FF122B17E4FB7D047F01122B9D
:102D660017E4FB7D047F02122B17E4FB7D047F032F
:032D7600022B1716
:10187C00780EE66401600302197E30375C2028057F
:10188C00D228122D56E4900005F0A3F0FBFA7D014E
:10189C00FF1228CEE4900005F0A3F0FBFA7D017F47
:1018AC00011228CEE4900005F0A3F0FBFA7D017F35
:1018BC00021228CEE4900005F0A3F0FBFA7D017F24
:1018CC00031228CE90007D7401F090007CF0900003
:1018DC007EF090007BF002197520270CD227D22BBA
:1018EC00E49000D6F00219759000D1E0C394015039
:1018FC0057E004F09000D6E014601A1460271460CE
:10190C00342403706490007DE06404605C7B017D92
:10191C0004E4FF802E90007CE06404604C7B017D2D
:10192C00047F01801E90007EE06404603C7B017D9E
:10193C00047F02800E90007BE06404602C7B017DB0
:10194C00047F03122B1780219000D1E0C3940F5019
:10195C0005E004F08013E49000D1F09000D6E00490
:10196C00F0E0C394044002E4F0C232C20BC21ED2B7
:10197C00292230270AC227122D56D22BD22A2230E6
:10198C002B49E49000D1F0C22B900005F0A3F0FBA2
:10199C00FAFDFF1228CEE4900005F0A3F0FBFAFD4F
:1019AC007F011228CEE4900005F0A3F0FBFAFD7F36
:1019BC00021228CEE4900005F0A3F0FBFAFD7F03A1
:1019CC001228CE90007D7402021B3620320C202986
:1019DC0009200B06201E03021B4E9000D1E0FFC312
:1019EC0094015004E004F022EFC394644003021B02
:1019FC00449000D1E004F07814E6C3941950379069
:101A0C00007DE064037003021B4EE4900005F0A31C
:101A1C00F07B64FA7D03FF1228CE90007D7404F0F5
:101A2C00E4900005F0A3F0FBFAFD7F011228CE90A4
:101A3C00007C740280327814E6C394325041E490F6
:101A4C000005F0A3F0FBFA7D01FF1228CE90007D7B
:101A5C007401F0E4900005F0A3F0FBFA7D017F0126
:101A6C001228CE90007C7401F0E4900005F0A3F0F5
:101A7C00FBFAFD7F021228CE90007E74028048781B
:101A8C0014E6C3944B5057E4900005F0A3F0FBFA16
:101A9C007D01FF1228CE90007D7401F0E4900005CA
:101AAC00F0A3F0FBFA7D017F011228CE90007C742C
:101ABC0001F0E4900005F0A3F0FBFA7D017F021227
:101ACC0028CE90007E7401F0E4900005F0A3F0FBAA
:101ADC00FAFD7F031228CE90007B7402F02278145A
:101AEC00E6C39464505CE4900005F0A3F0FBFA7D2F
:101AFC0001FF1228CEE4900005F0A3F0FBFA7D0163
:101B0C007F011228CEE4900005F0A3F0FBFA7D01D2
:101B1C007F021228CEE4900005F0A3F0FBFA7D01C1
:101B2C007F031228CE90007D7401F090007CF09021
:101B3C00007EF090007BF022C232C229C20BC21E82
:021B4C00D22B9A
:011B4E002274
:102EA1009000F4E0FF04F0122E459000F4E0C3948A
:0B2EB100084005E4F07F01227F0022B2
:102E83001229F1122A92122C89122306122CE130F4
:0E2E93001F0BC21F12263B12187C121B4F226F
:09300F007B017A0079E8022991A5
:10257900E4900000F09000D3E0FFA3E0FE6F60411B
:10258900A3EEF09000D3E0A3F024FD602F240260B5
:102599000302263A900005E4F0A37403F07B647A01
:1025A900007D02E4FF1228CE900005E4F0A3740335
:1025B900F07B647A007D027F010228CE9000E280E0
:1025C900529000D4E024FE602D146031146054242C
:1025D90003705E9000CFE004F0E0C394084052908D
:1025E90000D37402F0E49000CFF07815E6704290C1
:1025F90000D37404F0229000D37403F02230233105
:10260900C2239000E2E0D39400400CE014F0303390
:1026190020C233740FF0229000D37404F0E49000C8
:10262900DEF022122F785003022C2E9000D3740270
:01263900F0B0
:01263A00227D
:102B520030222EC2229000D0E0FF04F0EF14600F6A
:102B620014601114601324037017122EA180121224
:102B7200300F800D122E838008122579E49000D048
:0A2B8200F0302405C224120E5E227A
:10091C00426F7820436C6F73652E0D0A00426F781E
:10092C00204F70656E2E0D0A004F70656E20426F61
:10093C007820434D44205458204F7665722E0D0A72
:10094C00004F70656E20426F7820416E64204561C7
:10095C007270686F6E6520476574496E2E0D0A00C3
:10096C00436C6F736520426F7820416E6420466F34
:10097C0072636520566F6C746167652055702E0D1F
:10098C000A00564F58204348472046756C6C2E0D74
:10099C000A00564F582047657420496E746F2053D7
:1009AC006C6565702E0D0A00466F6C6C6F7720437A
:1009BC00484720496E697453746120536574204D07
:1009CC0061782056706D69642E28566F785F737449
:1009DC00613A3078257829286C696E653A25642946
:1009EC000D0A00466F6C6C6F772043484720496EA8
:1009FC0069745374612E28566F785F7374613A3042
:100A0C0078257829286C696E653A2564290D0A00C9
:100A1C00466F6C6C6F772043484720537461312CC0
:100A2C004E6F2045617250686F6E6520496E204292
:100A3C006F782E286C696E653A2564290D0A00467C
:100A4C006F6C6C6F772043484720537461312C5680
:100A5C004F5220436867696E672849766F723A2552
:100A6C0064292E286C696E653A2564290D0A0046A6
:100A7C006F6C6C6F772043484720537461312C5650
:100A8C004F4C20436867696E672849766F6C3A252E
:100A9C0064292E286C696E653A2564290D0A004676
:100AAC006F6C6C6F772043484720537461322C472E
:100ABC0065742049564F522E286C696E653A256430
:100ACC00290D0A00466F6C6C6F7720434847205302
:100ADC007461322C4765742049564F4C2E286C6932
:100AEC006E653A2564290D0A00466F6C6C6F772091
:100AFC0043484720537461332C564F582043686742
:100B0C00205265496E69742E286C696E653A2564AD
:100B1C00290D0A00466F6C6C6F77204348472053B1
:100B2C00746133284356292C564F522056706D69E8
:100B3C0064204164645374612E286C696E653A2597
:100B4C0064290D0A00466F6C6C6F77204348472070
:100B5C0053746133284356292C564F522056706DCE
:100B6C006964205375625374612E286C696E653A02
:100B7C002564290D0A00466F6C6C6F77204348473B
:100B8C002053746133284343292C564F52205670FE
:100B9C006D6964205375625374612E286C696E659F
:100BAC003A2564290D0A00466F6C6C6F7720434818
:100BBC00472053746133284343292C564F522056F7
:100BCC00706D6964204164645374612E286C696E85
:100BDC00653A2564290D0A00466F6C6C6F772043CB
:100BEC0048472053746133284356292C564F4C20C8
:100BFC0056706D6964204164645374612E286C696D
:100C0C006E653A2564290D0A00466F6C6C6F77206F
:100C1C004348472053746133284356292C564F4C74
:100C2C002056706D6964205375625374612E286C64
:100C3C00696E653A2564290D0A00466F6C6C6F77F6
:100C4C00204348472053746133284343292C564F83
:100C5C004C2056706D6964205375625374612E2854
:100C6C006C696E653A2564290D0A00466F6C6C6FD1
:100C7C0077204348472053746133284343292C562B
:100C8C004F4C2056706D6964204164645374612E1E
:100C9C00286C696E653A2564290D0A00466F6C6CE8
:100CAC006F772043484720537461342C564F5220A1
:100CBC0056706D696420416464537461286C696E6C
:100CCC00653A2564292E0D0A00466F6C6C6F7720EF
:100CDC0043484720537461342C564F522043686963
:100CEC006E67286C696E653A2564292E0D0A0046DC
:100CFC006F6C6C6F772043484720537461342C56CB
:100D0C004F4C2056706D69642041646453746128A3
:100D1C006C696E653A2564292E0D0A00466F6C6C61
:100D2C006F772043484720537461342C564F4C2026
:100D3C004368696E67286C696E653A2564292E0DC7
:100D4C000A00466F6C6C6F772043484720537562DE
:100D5C005374612C564F4C2F564F52286C696E654C
:100D6C003A2564292E0D0A00466F6C6C6F77204370
:100D7C004847205375625374612C564F52286C6946
:100D8C006E653A2564292E0D0A00466F6C6C6F77E0
:100D9C0020434847205375625374612C564F4C289E
:100DAC006C696E653A2564292E0D0A00466F6C6CD1
:100DBC006F7720434847205375625374612C285336
:100DCC0054413A307825782C56706D69643A3078F5
:100DDC00257829286C696E653A2564290D0A004628
:100DEC006F6C6C6F77204348472041646453746187
:100DFC002C285354413A307825782C56706D696400
:100E0C003A3078257829286C696E653A2564290D65
:100E1C000A000000000000000000000000000000BC
:100E2C0000000000000000000000000000000000B6
:100E3C0000000000000000000000000000000000A6
:100E4C000000000000000000000000000000000096
:020E5C00000094
:101EE800C10DC10BC10C410077FFC10A42004F0070
:101EF8000042004D000042007500004200720000E0
:101F08004200780000106800000000000000000097
:101F180000000000000000202478000000000000FD
:101F280000000000000000000000000000000000A9
:101F38000000000000000000000000000000410058
:021F4800740023
:05277500900043EFF0AD
:10277A00E4A3F0A3F07F27122ADA900044EFF07F57
:10278A0037122ADA900045EFF0900043E024FD600A
:10279A001B14602424FE602824057035900045E04F
:1027AA004494F0900044E04498F08025900044E07E
:1027BA004406F054E7F08019900045E054FD800982
:1027CA00900045E04402F054FEF0900044E054E1E9
:1027DA00F0900044E0FD7F27122CB5900045E0FD03
:0527EA007F37022CB551
:101B4F009000EAE054186003D20A22C20A202F0341
:101B5F00021DB7303161200C0D7F3C122EF17F0139
:101B6F00122E03D20C227F03122775E490004CF043
:101B7F0090004AF0A3F0C2009000F6E07028C20B6C
:101B8F00D201C202C206C207C208900075F0A3F0CC
:101B9F00D20DC22A900070F0A3F090007AF07BFF74
:101BAF007A09791C800CC201D202C2047BFF7A0928
:101BBF007929121236C231200203021C7790004A93
:101BCF00E0C394055003021D5B90004BE0C39405E6
:101BDF00500A7F0612277590004B802A20004990EB
:101BEF00004CE0FFD3940B5022EF75F00384E5F027
:101BFF007003FD800990004CE020E0077D017F0617
:101C0F0012216790004CE004F0805D7F041227756D
:101C1F00E490004CF0D200D203C20CC20D7BFF7ACD
:101C2F000979351212368040300304C203802F9099
:101C3F0000ECE0540CFBE4FAF9F8900049E0FFE403
:101C4F00FCFDFEC31217DC601F9000ECE0540C602B
:101C5F000DD20BD22B7BFF7A09794D1212369000E1
:101C6F00ECE0540C900049F0200103021DB4302A1F
:101C7F0038200C237F01122E03D20CD20DE49000DA
:101C8F0070F0A3F090007AF090004BF090004AF0C3
:101C9F0090004CF0C206227F031227757BFF7A0952
:101CAF00796C121236C22A803590004AE0D3940321
:101CBF005003021D5B90004BE0FFD3940B501FEFBE
:101CCF0075F00384E5F07003FD800990004BE02070
:101CDF00E0077D017F8112216790004B806E90009D
:101CEF004CE0FFD39432501FEF75F00384E5F07092
:101CFF0003FD800990004CE020E0077D017F071273
:101D0F00216790004C8045900071E0700C7B017A48
:101D1F0000795112008E021DB42006489000ECE0AD
:101D2F005430FFE4FCFDFE7B30FAF9F8C31217DCE8
:101D3F0060119000ECE0540CFFE4FCFDFEEF60033B
:101D4F0030356290004AE0C394325004E004F02230
:101D5F007BFF7A09798E121236D206C20C7F0412DB
:101D6F002775804190004CE0FFD3940B5022EF7504
:101D7F00F00384E5F07003FD800990004CE020E053
:101D8F00077D017F8012216790004CE004F08015E1
:101D9F00200712D2077F04122775C20D7BFF7A0925
:101DAF00799E121236C20522200514D2057F041225
:101DBF002775C20D9000ECE0540C900049F0229072
:101DCF0000ECE0540CFBE4FAF9F8900049E0FFE472
:101DDF00FCFDFEC31217DC60129000ECE0540CFF08
:0B1DEF006004D20BD22B900049EFF0F3
:011DFA0022C6
:06008E0090000012182092
:1000940090007AE014700302019E1470030202CFF0
:1000A40014700302036D14700302056B24046003CF
:1000B40002069A90000012180090002012163F6069
:1000C4000302069AD3900050E0940390004FE0940A
:1000D40000504AE475F0011216F590001BE475F027
:1000E4003C1217AF30090302069A90000012180060
:1000F40090001B12170BFF122EF17BFF7A0979B4C3
:100104009000ECE0FF900006E4F0A3EFF0A374038A
:10011400F0A3743FF0121236D20902069AE490005A
:100124004FF0A3F0C209900000121800900016E4EA
:1001340012167E900015E412167E900013E4121637
:100144007E900012E412167E900011E412167E9046
:100154000010E412167E900018E412167E90001728
:10016400E412167E900019E4F5F01217AF90001D0A
:10017400E475F03C1217AF90007A7401F07BFF7ABB
:100184000979EF9000ECE0FF900006E4F0A3EFF0B3
:10019400A37403F0A374600205109000ECE0FB5418
:1001A40020FFE4FCFDFEEF602BEB5410FF60259074
:1001B4000000121800900020740112167EE49000D2
:1001C4007AF07BFF7A0A791C9000067403F0A3741A
:1001D4006F0205109000ECE05420FFE4FCEF706225
:1001E40078A0E6FE08E6FF900000121800900002D6
:1001F400EE8FF01217AF7D051216A0EF7802C3330D
:10020400CE33CED8F9FF900000121800900006EE0D
:100214008FF01217AF78A0E6FC08E6FD25E0FFECAE
:100224003390000A8FF01217AF7BFF7A0A794B9054
:100234000006ECF0A3EDF0A37403F0A3747DF012B8
:1002440012369000ECE05410FFE4FCFDEF7065788A
:100254009CE6FE08E6FF900000121800EE8FF012F4
:10026400179018E6FE08E6FF7D051216A0EF780247
:10027400C333CE33CED8F9FF90000012180090009B
:1002840004EE8FF01217AF789CE6FC08E6FD25E03B
:10029400FFEC339000088FF01217AF7BFF7A0A79D6
:1002A4007B900006ECF0A3EDF0A37403F0A3748A32
:1002B400F012123690000012180090001F74011200
:1002C400167E90007A7402F002069AD3900050E0F1
:1002D400940590004FE09400500302037CE49000E6
:1002E4004FF0A3F09000ECE05420FFE4FCFDEF702D
:1002F4003178A0E6FE08E6FF900000121800900096
:100304000EEE8FF01217AF900018740112167E7B58
:10031400FF7A0A79AB9000067403F0A374A6F01276
:1003240012369000ECE05410FFE4FCFDEF703178DD
:100334009CE6FE08E6FF90000012180090000CEE08
:100344008FF01217AF900017740112167E7BFF7A9C
:100354000A79D09000067403F0A374B0F012123638
:1003640090007A7403F002069AD3900050E094024D
:1003740090004FE09400500AE475F0011216F50263
:10038400069AE490004FF0A3F09000001218009039
:10039400000A12170BFFAEF090000E12170BD39F3A
:1003A400E5F09E501C9000001218009000081217EF
:1003B4000BFFAEF090000C12170BD39FE5F09E409C
:1003C40024E490007AF090000012180090001FE4DA
:1003D40012167E7BFF7A0A79F59000067403F0A367
:1003E40074CA0206969000001218009000181216A3
:1003F4003F640160030204AA90000E12170BD39409
:1004040014E5F0940050469000ECE030E5209000B4
:1004140016740112167E900018E412167E7BFF7A81
:100424000B79209000067403F0A374D980749000B3
:1004340000121800900013740112167E7BFF7A0BD1
:1004440079519000067403F0A374E0805590000085
:1004540012180090000612170BFFAEF090000E1257
:10046400170BD39FE5F09E900000401C12180090DB
:100474000013740112167E7BFF7A0B7982900006BA
:100484007403F0A374EA801A121800900016740121
:1004940012167E7BFF7A0B79B39000067403F0A3E7
:1004A40074F1F01212369000001218009000171226
:1004B400163F6401600302069A90000C12170BD3D6
:1004C4009414E5F0940050479000ECE030E4209060
:1004D4000015740112167E900017E412167E7BFF3D
:1004E4007A0B79E49000067404F0A37401801D90E3
:1004F4000000121800900012740112167E7BFF7A1D
:100504000C79159000067404F0A374080206969002
:10051400000012180090000412170BFFAEF09000B8
:100524000C12170BD39FE5F09E900000401C12188C
:1005340000900012740112167E7BFF7A0C794690AB
:1005440000067404F0A37412801A121800900015A7
:10055400740112167E7BFF7A0C797790000674047E
:10056400F0A37419020696D3900050E094149000FE
:100574004FE09400502FE475F0011216F578A0E6D0
:10058400FE08E6FF90000012180090000EEE8FF0B7
:100594001217AF789CE6FF08E690000CCF8FF0129C
:1005A40017AF02069AE490004FF0A3F090000012F7
:1005B400180090001812163F64017065900006122E
:1005C400170BFFAEF090000E12170BFDACF0C39F9B
:1005D400EC9E401590000012180090000A12170BB0
:1005E400FFD3ED9FEC95F040259000001218009089
:1005F4000016740112167E90007A7402F07BFF7A62
:100604000C79A89000067404F0A3743E800F7BFF5D
:100614007A0C79D59000067404F0A37444F0121295
:100624003690000012180090001712163F640170F3
:100634006590000812170BFFAEF090000C12170B18
:10064400FDACF0D39FEC9E50159000001218009062
:10065400000412170BFFC3ED9FEC95F0502590009A
:1006640000121800900015740112167E90007A741E
:1006740002F07BFF7A0C79FB9000067404F0A374FB
:1006840052800F7BFF7A0D79289000067404F0A342
:100694007458F012123690000012180090001812CC
:1006A400163FFF6401600D90001712163F6401604D
:1006B4000302090290001312163FFE6401600D90BC
:1006C400001212163F64016003020837EF640170E0
:1006D4003190001712163FB40128EEB401249000A3
:1006E4001312163FB4011B900014740112167E7B82
:1006F400FF7A0D794E9000067404F0A3746FF01223
:10070400123690000012180090001812163F64016F
:10071400702A90001712163F702290001312163F91
:10072400640170539000140412167E7BFF7A0D79D5
:10073400749000067404F0A374798037900000125A
:10074400180090001812163F702D90001712163FD3
:10075400B4012490001212163FB4011B90001474CB
:100764000112167E7BFF7A0D79969000067404F0D0
:10077400A37484F012123690000012180090001333
:10078400E412167E900012E412167E9000141216E3
:100794003F6401600302091B9000001218009000DE
:1007A4001B12170BD39400E5F09400400B90001B30
:1007B40074FF75F0FE12174390001912170BFFAE69
:1007C400F090001B12170BD39FE5F09E501790007A
:1007D4000012180090001BEE8FF01217AF90007AF1
:1007E4007404F0800690007A7402F0E490004FF0F4
:1007F400A3F0900000121800900014E412167E90EA
:10080400007AE0FF900006E4F0A3EFF090000012FD
:10081400180090001B12170BFF900008E5F0F0A3DE
:10082400EFF0A37404F0A374A3F07BFF7A0D79B8FE
:100834000208EF90000012180090001612163F6490
:1008440001600D90001512163F6401600302091B3C
:10085400900016E412167E900015E412167E9000A5
:100864001B12170BC3943CE5F09400501090000049
:1008740012180090001BE475F00212174390007ADE
:100884007404F090000012180090001D12170BFF62
:10089400AEF090001B12170BC39FE5F09E401B9017
:1008A400000012180090001BEE8FF01217AFE490B6
:1008B400007AF09000200412167E90007AE0FF90F7
:1008C4000006E4F0A3EFF090000012180090001B63
:1008D40012170BFF900008E5F0F0A3EFF0A37404E7
:1008E400F0A374C2F07BFF7A0D79EB1212369000FC
:1008F4000012180090001B12170BFF022EF190003B
:100904007AE0D394024010E4F090000012180090B2
:070914000020740112167EA1
:01091B0022B9
:0B002600900043121820900046EDF0FF
:10003100E4FE900046E0FD14F0ED6029900043E4F9
:1000410075F0011218091216266EFEE4FFEFC39433
:100051000850DFEE30E007C313648CFE8004EEC36A
:0700610013FE0F80E8AF065B
:010068002275
:08216700900000EFF0A3EDF081
:10216F00E4A3F078037C007D017BFF7A0E791EFEDD
:10217F007F40121600E4900003F0A37455F0A3748F
:10218F00AAF0900000E0FE900007F0900001E0FD43
:10219F00900077F0EE12182921C00121EF02223EA4
:1021AF0003224B06224B07229080229881000022A7
:1021BF00A69000067402F0ED700E9000087402F005
:1021CF00E4900075F00222A6900001E06401600324
:1021DF000222A690000804F0E4900076F00222A6F6
:1021EF00900006741BF07F05900001E075F012A4BB
:1021FF0024782FF8E6FE74032FF582E43400F5837C
:10220F00EEF00FEFB412E17F17EFC3940840030213
:10221F0022A6900001E075F008A424682FF8E6FECE
:10222F0074032FF582E43400F583EEF00F80DA901B
:10223F0000067402F090000804F0805B90000674B2
:10224F0005F09000087401F07814E6A3F0A3742051
:10225F00F0900001E0FF700D900072E07002800FAF
:10226F009000738015EFB4012E900073E07008900A
:10227F00000B74FFF08020900072E090000BF08054
:10228F00169000067401F0800E9000067402F09014
:10229F000074E0900008F0900006E02404FF900026
:1022AF0002F0FD7B017A007903120026900002E014
:1022BF002403F582E43400F583EFF07F01122775D4
:1022CF00900001E0FF700B75FE0E53FFF043FF0807
:1022DF00800DEFB4010975FE0E53FFF043FF01901F
:1022EF000002E02401FFE433FE7B017A0079031240
:0722FF002B8C7F0302277501
:1027EF00EF24FA605014604D24067069E4FE742CD7
:1027FF002EF8E6FF900077E075F012A424782EF8FB
:10280F00A6070EEEB412E7E4FE743E2EF8E6FF9034
:10281F000077E075F008A424682EF8A6070EEEB432
:10282F0008E7900077E0700690007504F0229000A2
:10283F00767401F022782CE6B4E30D90004D74010C
:10284F00F008E6900072F02290004E7401F0782D9F
:05285F00E6900073F09B
:012864002251
:102CE100E4FF900000F0302E21C22EFB7A007928FB
:102CF100782AE62403FD120026782AE6242BF8E63A
:0A2D0100B50707782BE6FF1227EF55
:012D0B0022A5
:101F4A00011500011400C135C13601135060280083
:101F5A00A70BB80BEA0C1C0C800CB20CE40D160D86
:101F6A00480D7A0DAC0DF70E420E880ED80F0A0FE7
:091F7A003C0F870FD2101D106806
:10263B00E4FF780EE6B40122EF25E024A7F582E44F
:10264B003400F583E0FCA3E02432FDE43CFCC378CA
:10265B00B5E69D18E69C501B801EEF25E024A7F5E0
:10266B0082E43400F583E0FCA3E0D378B596EC1854
:10267B009650050FEFB414BA7815E6FEEFD39E789B
:10268B00134003068001169000EBE030E30A781547
:10269B00EFF675F005A418F67813E6FED394965072
:1026AB0006EEC3940A500D7815EFF675F005A418D5
:1026BB00F61876507815E6FFD394005004D2368086
:1026CB0008EFD394014002C236EFD394015003D2EA
:0A26DB003522EFD394024002C2350D
:0126E50022D2
:101F83004100DA004100DD004100D9004200D700E2
:101F9300004100DB00C121C122C124C120C11FC1F6
:091FA300234100DC00C125C12628
:102865009000DCE06062E4F0D2219000DAE004F050
:10287500E0C394054004E4F0D2229000DDE004F0CA
:10288500E0C3940A4004E4F0D2249000D7E475F044
:10289500011216F5C39000D8E094649000D7E09437
:1028A500004006E4F0A3F0D21F9000D9E004F0E068
:1028B500C394FA4013E4F0D2209000DBE004F0E08A
:0928C50094044004E4F0D2232243
:03000B00022D794A
:102D7900C0E0C083C082C0D074FC258CF58C746619
:102D8900258AF58A9000DC7401F0D0D0D082D083F6
:032D9900D0E03255
:0E2FEB00758901758CFC758A66D2A9D28C227C
:102E250075FE0FEF25E0FE7403A806088002C33384
:102E3500D8FCF452FFEFB4040675FE0FE4F5FF224B
:102F3A0075FE11EF5407F5FF75FE12AF058FFF7589
:062F4A00FE1075FF0122DC
:102A430075FE0FEF25E0FE7403A806088002C3336A
:102A5300D8FCF452FF7401A806088002C333D8FCE3
:102A630042FF75FE0B7401A807088002C333D8FC2C
:102A730042FFEF70038DCE22EFB401038DCF22EF1F
:0F2A8300B402038DDE22EFB40304AF058FDF2210
:033FFD00010101BE
:061FAC0001160001170000
:102C5C00D28075FE0443FF0175FE0343FF0175FE30
:102C6C000243FF01D28175FE0443FF0275FE03434C
:0D2C7C00FF0275FE0243FF0278167601226A
:0C2F8B00C280122F97D281122F97D280A3
:052F9700E4FF0FDFFE66
:012F9C002212
:102EBC00D281D280122F972081037F0022C28112EF
:0B2ECC002F973081037F00227F01223E
:0F2FCE00C280C281122F92D281122F97022F97A9
:102F9D00C280122F97C281122F92122F97C28002D8
:022FAD002F975C
:08302000122F8BC280022F97D2
:0B300400122F8B122F97C280022F9713
:022DBF00AE075D
:102DC1007D08AF051DEF6015C280EE30E704D281AA
:0F2DD1008002C281EE25E0FE122F9280E5C280C3
:012DE00022D0
:102D9C007E08E4FDD281AF061EEF6012ED25E0FD4A
:102DAC00C280122F923081EEED4401FD80E8C2808A
:022DBC00AF0561
:012DBE0022F2
:10000E007D087F35122CB57D0A7F7612303D7D043A
:05001E007F20022CB55B
:102991009000001218207F10122ADA9000001218FD
:1029A10000EF12166C7F11122ADA90000012180043
:1029B100900001EF12167E7F12122ADA90000012A7
:1029C1001800900002EF12167E7F13122ADA90008F
:1029D10000121800900003EF12167E7F14122ADAFB
:1029E100900000121800900004EF12167E7F002262
:052DE100900000EFF07E
:102DE600E47F20122ADA900000E06006EF4401FF3B
:0D2DF6008004EF54FEFFAD077F20022CB5D6
:052E0300900000EFF05B
:102E0800E47F27122ADA900000E06006EF4401FF11
:0D2E18008004EF54FEFFAD077F27022CB5AC
:052EF100900003EFF06A
:102EF600E47F25122ADAEF54C0FF900003E04FFD6D
:052F06007F25022CB53F
:102D32009000F1121820121626FD7F27122CB59052
:102D420000F112180090000112163FFD7F37122C7D
:042D5200B57F002227
:073028007DAA7F4F022CB5C9
:07302F007D117F4F022CB55B
:073036007D337F4F022CB532
:07303D008FFEAF058FFF229B
:063044008FFEAEFFAF0697
:01304A002263
:102CB500900046EFF0A3EDF0122EBC7F0C122DBF55
:102CC500123004900046E0FF122DBF123004900030
:0C2CD50047E0FF122DBF123004022FCE8A
:052ADA00900046EFF042
:102ADF00E4A3F0122EBC7F0C122DBF123004900015
:102AEF0046E0FF122DBF123004122EBC7F0D122DA7
:102AFF00BF123004122D9C900047EFF012302012BD
:072B0F002FCE900047E0FF0C
:012B1600229C
:1026F500022FF9E493A3F8E493A34003F68001F2D3
:1027050008DFF48029E493A3F85407240CC8C333E5
:10271500C4540F4420C8834004F456800146F6DFB4
:10272500E4800B0102040810204080901DFBE47E2C
:10273500019360BCA3FF543F30E509541FFEE493A9
:10274500A360010ECF54C025E060A840B8E493A370
:10275500FAE493A3F8E493A3C8C582C8CAC583CA9B
:10276500F0A3C8C582C8CAC583CADFE9DEE780BE53
:011FB200002E
:10153000E709F608DFFA8046E709F208DFFA803E9D
:1015400088828C83E709F0A3DFFA8032E309F6088A
:10155000DFFA8078E309F208DFFA807088828C83F2
:10156000E309F0A3DFFA806489828A83E0A3F608A6
:10157000DFFA805889828A83E0A3F208DFFA804C80
:1015800080D280FA80C680D4806980F28033801057
:1015900080A680EA809A80A880DA80E280CA8033C0
:1015A00089828A83ECFAE493A3C8C582C8CCC58338
:1015B000CCF0A3C8C582C8CCC583CCDFE9DEE78008
:1015C0000D89828A83E493A3F608DFF9ECFAA9F087
:1015D000EDFB2289828A83ECFAE0A3C8C582C8CCDD
:1015E000C583CCF0A3C8C582C8CCC583CCDFEADEF6
:1015F000E880DB89828A83E493A3F208DFF980CC58
:1016000088F0EF60010E4E60C388F0ED2402B40450
:101610000050B9F582EB2402B4040050AF232345F7
:0616200082239015807387
:10162600BB010689828A83E0225002E722BBFE02C2
:09163600E32289828A83E49322F5
:10163F00BB010CE58229F582E5833AF583E0225060
:10164F0006E92582F8E622BBFE06E92582F8E222AA
:0D165F00E58229F582E5833AF583E49322C4
:10166C00BB010689828A83F0225002F722BBFE015D
:02167C00F32257
:10167E00F8BB010DE58229F582E5833AF583E8F0A2
:10168E00225006E92582C8F622BBFE05E92582C84E
:02169E00F22236
:1016A000BC000BBE0029EF8DF084FFADF022E4CC2E
:1016B000F875F008EF2FFFEE33FEEC33FCEE9DECF7
:1016C000984005FCEE9DFE0FD5F0E9E4CEFD22ED3D
:1016D000F8F5F0EE8420D21CFEADF075F008EF2F87
:1016E000FFED33FD4007985006D5F0F222C398FD78
:0516F0000FD5F0EA2215
:1016F500C5F0F8A3E028F0C5F0F8E5821582700280
:061705001583E038F0221C
:10170B00BB0110E58229F582E5833AF583E0F5F01C
:10171B00A3E0225009E92582F886F008E622BBFEF9
:10172B000AE92582F8E2F5F008E222E5832AF5833F
:08173B00E993F5F0A3E9932204
:10174300BB010DC58229C582C5833AC5830216F53F
:101753005011C58229F808E5F026F618F5F0E58260
:1017630036F622BBFE11C58229F808E225F0F5F012
:10177300F218E23582F222F8E58229F582E5832A1E
:0D178300F58374019325F0F5F0E49338220E
:10179000BB010A89828A83F0E5F0A3F0225006F7A4
:0F17A00009A7F01922BBFE06F3E5F009F31922A1
:1017AF00F8BB0111E58229F582E5833AF583E8F06C
:1017BF00E5F0A3F0225009E92582C8F608A6F02229
:0D17CF00BBFE09E92582C8F2E5F008F22210
:1017DC00EB9FF5F0EA9E42F0E99D42F0E89C45F063
:0117EC0022DA
:1017ED00E8600FECC313FCED13FDEE13FEEF13FFDA
:0317FD00D8F122FE
:09180000E0FBA3E0FAA3E0F922E9
:10180900F8E0FBA3A3E0F925F0F0E5821582700268
:071819001583E0FA38F0220C
:09182000EBF0A3EAF0A3E9F022C9
:10182900D083D082F8E4937012740193700DA3A34E
:1018390093F8740193F5828883E473740293686062
:06184900EFA3A3A380DF62
:10184F00EC8EF0A4CCC5F0CCCDF8EFA4CEC5F02D26
:10185F00FDE43CFCE8A42EC8C5F03DFDE43CFCEFE4
:0D186F00A4FFE5F028FEE43DFDE43CFC2272
:1011CB00E5082406F582E43400F583E00508229057
:1011DB000003301503900006E475F00112180902A4
:1011EB001626200EE97F2ED20E8018EF540F249076
:1011FB00D43440D4FF30120BEF24BFB41A00500389
:10120B002461FFE50960021509050CE50C70020568
:10121B000B30150E900003E475F001121809EF0264
:10122B00166C022FDD7403D2158003E4C215F5088A
:10123B00900003121820E4F509F50BF50CE5096095
:10124B00077F2012120E80F5750AFFC20FC20EC265
:10125B0010C211C213C214C2161211DAFF700D3074
:10126B0015057F0012121FAF0CAE0B22B4255FC207
:10127B00D5C2121211DAFF24D0B40A00501A75F03D
:10128B000A780930D50508B6FF0106C6A426F62054
:10129B00D5047002D21180D924CFB41A00EF5004B8
:1012AB00C2E5D212021420D20F80C6D20E80C0D259
:1012BB001080BCD2D580BAD21380B47F2012120E0C
:1012CB002010077401B5090040F11211CBFF121267
:1012DB000E021248D216D21480951211CBFB1211AA
:1012EB00CBFA1211CBF94A4B700679F17A147BFFCA
:1012FB0020102EE509602A7E008E8275830012165F
:10130B003F60060EEE650A70F0C2D5EBC0E0EAC096
:10131B00E0E9C0E0EE121467D0E0F9D0E0FAD0E0DB
:10132B00FB121626FF60AAEBC0E0EAC0E0E9C0E0C2
:10133B0012120ED0E02401F9D0E03400FAD0E0FB19
:10134B00E50A0460DCD50AD980877BFF7A147963C0
:10135B00D210809C791080027908C214C2168008C2
:10136B00D2D5790A8004790AC2D5E50A047002F550
:10137B000AE4FAFDFEFF1211CBFC7B08200F1312BF
:10138B0011CBFD7B10300E0A1211CBFE1211CBFFCD
:10139B007B20EC3382D592D55013C3E4300E069FDD
:1013AB00FFE49EFEE4200F039DFDE49CFCE4CBF8E0
:1013BB00C20FEC700CCFCECDCCE824F8F870F380D4
:1013CB0017C3EF33FFEE33FEED33FDEC33FCEB33A2
:1013DB00FB994002FB0FD8E9EB300F05F8D0E0C4C6
:1013EB0048B20FC0E00AEC4D4E4F78207B0070C224
:1013FB00EAB50A0040BCC0E0121469D0F0D0E0207E
:10140B000F04C4C0E0C4B20FC0F01211F7D0F0D576
:10141B00F0EB02124812182912E553135F5812B65B
:10142B004C12B24213634F136B44136B4912CB43F1
:08143B001371551355461355BA
:101443004513554715115012BA2D12BE2E12E12B1A
:1014530012C22312DF2014FA2A127A48000012D98A
:101463003F3F3F00790AA2D5201114301309B91068
:10147300020404B9080104A2D52014025001042077
:1014830010689210B509005034C0E07F2030111964
:101493007F30A21072147213500F1214C0C210C204
:1014A30014C213C2167F30800F301303E9C0E01259
:1014B300120E301303D0E0F9D0E0B509CC30131786
:1014C3007F30B9100C12120E7F583012077F7880CC
:1014D30003B9080312120E3010057F2D02120E7F7E
:1014E300202016F87F2B2014F322921080CF286E31
:1014F300756C6C2900D20F1211CB300FF8C20F7824
:101503000930D50108F602127A2D504349581211B9
:10151300CB2403B405004001E490150C931211FF92
:0D152300743A1211FFD21175090402135F12
:00000001FF

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

View File

@ -33,7 +33,7 @@
#define CHG_CURRENT_400MA 0x05
#if 1
#if 0
#if 0
/*20uA 电流源下接 104K NTC(4250K) 电阻并联一个82K电阻后得到的电压值*/
#define T_N20C 1530 //-20℃(76.5KΩ * 20uA) NTC:1151K
@ -114,46 +114,46 @@
#endif
#else
/*20uA 电流源下接 104K NTC(3950K) 电阻并联一个82K电阻后得到的电压值*/
#define T_N20C 1500 //-20℃(75.5KΩ * 20uA) NTC:953K
/*2.5V上拉LDO下接 104K NTC(3950K) 电阻串联一个100K电阻后得到的电压值,Value=2500 * Rntc/(Rntc + 100k)*/
#define T_N20C 2263 //-20℃ NTC:953K
#define T_N17C 1488 //-17℃(74.4KΩ * 20uA) NTC:804K
#define T_N17C 2223 //-17℃ NTC:804K
#define T_N15C 1495 //-15℃(73.6KΩ * 20uA) NTC:719K
#define T_N15C 2195 //-15℃ NTC:719K
#define T_N13C 1454 //-13℃(72.7KΩ * 20uA) NTC:644K
#define T_N13C 2164 //-13℃ NTC:644K
#define T_N10C 1420 //-10℃(71KΩ * 20uA) NTC:547K
#define T_N10C 2114 //-10℃ NTC:547K
#define T_0C 1308 //-0℃(65.4KΩ * 20uA) NTC:325K
#define T_0C 1911 //-0℃ NTC:325K
#define T_3C 1282 //3℃(64.1KΩ * 20uA) NTC:293K
#define T_3C 1841 //3℃ NTC:293K
#define T_5C 1238 //5℃(61.9KΩ * 20uA) NTC:253K
#define T_5C 1792 //5℃ NTC:253K
#define T_8C 1192 //8℃(59.6KΩ * 20uA) NTC:218K
#define T_8C 1715 //8℃ NTC:218K
#define T_10C 1158 //10℃(57.9KΩ * 20uA) NTC:198K
#define T_10C 1663 //10℃ NTC:198K
#define T_12C 1126 //12℃(56.3KΩ * 20uA) NTC:180K
#define T_12C 1609 //12℃ NTC:180K
#define T_15C 1076 //15℃(53.8KΩ * 20uA) NTC:157K
#define T_15C 1527 //15℃ NTC:157K
#define T_18C 1026 //18℃(51.3KΩ * 20uA) NTC:137K
#define T_18C 1444 //18℃ NTC:137K
#define T_42C 612 //42℃(30.6KΩ * 20uA) NTC:49K
#define T_42C 823 //42℃ NTC:49K
#define T_45C 568 //45℃(28.4KΩ * 20uA) NTC:43.6K
#define T_45C 759 //45℃ NTC:43.6K
#define T_47C 538 //47℃(26.9KΩ * 20uA) NTC:40K
#define T_47C 718 //47℃ NTC:40K
#define T_57C 412 //57℃(20.6KΩ * 20uA) NTC:27.6K
#define T_57C 540 //57℃ NTC:27.6K
#define T_60C 380 //60℃(19KΩ * 20uA) NTC:24.7K
#define T_60C 495 //60℃ NTC:24.7K
#define T_75C 248 //75℃(12.4KΩ * 20uA) NTC:14.6K
#define T_75C 318 //75℃ NTC:14.6K
#define T_80C 216 //80℃(10.8KΩ * 20uA) NTC:12.4K
#define T_80C 275 //80℃ NTC:12.4K
#endif

View File

@ -50,7 +50,7 @@
#define VOX_ENABLE 1 //1080Bytes
#define VOX_FOLLOW_CHG 0
#define VOX_FOLLOW_CHG 1
#if VOX_ENABLE
@ -88,7 +88,7 @@
#ifdef _DEBUG_ALL
#define _DEBUG_MAIN
// #define _DEBUG_MAIN
#define _DEBUG_PMU
#define _DEBUG_KEY
#define _DEBUG_VOX
@ -96,7 +96,7 @@
// #define _DEBUG_ADC
// #define _DEBUG_DISCHARGE
// #define _DEBUG_CHARGER
#define _DEBUG_SLEEP
// #define _DEBUG_SLEEP
#define _DEBUG_BAT
//#define TEST_MODE

View File

@ -23,6 +23,7 @@
/*_____ I N C L U D E S ____________________________________________________*/
#include "define.h"
#include "vox_module.h"
/******************************************************************************\
Macro definitions
@ -443,11 +444,12 @@ typedef enum
typedef enum
{
DISCHG_ON = 0,
CHG_ON,
}g_chg_type;
extern g_PMU_Info pmu_Info; //pmu状态信息
extern g_PMU_Info xdata pmu_Info; //pmu状态信息
extern g_PMU_Sys_Cfg pmu_Sys_Cfg;

View File

@ -35,31 +35,41 @@
#define FW_VER 0x001 //程序版本
extern bit Vox_Vout_Enable;
extern bit Earphone_Chg_Flag; //耳机出入盒标志位
extern bit Vox_Output_Short_Flag;
#define IVOX_THN 20 //耳机跟随充电流下降阈值
#define IVOX_THP 200 //耳机跟随充电流上升阈值
#define VOL_TYPE 0x00
#define VOR_TYPE 0x01
#if 1
/*耳机配对状态*/
typedef enum {
VOX_PAIR_NONE = 0, //无效
VOX_PAIR_ING, //配对中
VOX_PAIR_OK, //配对完成
VOX_PAIR_KEEP, //不处理,保持当前状态
}e_Vox_Pairing_State;
/*耳机配对记录*/
typedef enum {
VOX_PAIRED_NONE = 0, //无配对过
VOX_PAIRED_OK, //有配对记录
}e_Vox_Paired_State;
#endif
}e_Vox_Paired_State;
#if VOX_ENABLE
@ -123,33 +133,51 @@ SFRDATA |= (VOX_LIGHT_TO_HAVEY_128 << 2) | VOX_HAVEY_TO_LIGHT_8;
/*耳机通道选择*/
typedef enum {
VOL_CHAN = 0x00,
VOR_CHAN = 0x01,
VOL_CHAN = 0x00,
VOR_CHAN = 0x01,
VOX_MAX_CHAN = 0x02,
VOX_BOTH = 0xFF,
}e_Vox_Chan;
/*耳机和充电仓进行双向通讯的协议命令ID。*/
typedef enum _VOX_BES_COMMAND_E
{
VHOUSE_CMD_PAIR = 0x01, //充电仓发起的配对信息
VHOUSE_CMD_EXCH_TWS_BTADDR = 0x02, //交换对耳的蓝牙地址信息。
VHOUSE_CMD_CLEAR_PAIR = 0x03, //清配对信息
VHOUSE_CMD_OPEN_BOX = 0x06, //开盖获取电量包
VHOUSE_CMD_CLOSE_WIN_GET_VBAT = 0x07, //关盖获取电量包
VHOUSE_CMD_RST = 0x08, //
VHOUSE_CMD_PWROFF = 0x80, //关机消息
VHOUSE_CMD_CLOSE_BOX = 0x81,
BES_RESET = 0xE1,
}VOX_BES_COMMAND_E;
/* Vox Channel Select. */
typedef enum {
VOL_CHAN_SET = 0x00,
VOR_CHAN_SET = 0x01,
VOX_BOTH_SET = 0x02,
}e_Vox_Chan_Set;
/* Vox Follow Charge State. */
@ -160,6 +188,10 @@ typedef enum {
Vox_Follow_Chg_Sta1,
Vox_Follow_Chg_Sta2,
Vox_Follow_Chg_Sta3,
Vox_Follow_Chg_Sta4,
}e_Vox_Follow_Chg_Sta;
@ -183,19 +215,51 @@ typedef enum {
} VOX_Enable_Mode_e;
extern uint16_t Boost_Open_Atleast_Tim_Cnt;
extern bit Cover_Open_Flag;
#ifdef VOX_RX
extern uint8_t Vox_Get_Vbat_Flag[2]; //耳机配对状态VOL:低4bitVOR:高4bit。0是无效1是正在配对2是配对成功3不处理保持当前状态。
extern xdata uint8_t Vox_Get_Vbat_Flag[2]; //耳机配对状态VOL:低4bitVOR:高4bit。0是无效1是正在配对2是配对成功3不处理保持当前状态。
extern idata uint8_t Vox_Get_BES_Addr_Flag[2] ;
extern xdata uint8_t Vox_Get_BES_Addr_Flag[2] ;
#endif
typedef struct {
uint16_t IVox_Init[VOX_MAX_CHAN]; //跟随充Vox初始化电流值。
uint16_t IVox_Threshold_Neg[VOX_MAX_CHAN]; //Vox电流下降阈值
uint16_t IVox_Threshold_Pos[VOX_MAX_CHAN]; //Vox电流上升阈值
uint16_t IVox_At_Present[VOX_MAX_CHAN]; //Vox当前电流
uint8_t IVox_TC_Mode[VOX_MAX_CHAN]; //Vox CV_TC充电电流阈值
uint8_t Vpmid_SubSta[VOX_MAX_CHAN]; //Vox的Vpmid电压下降标志
uint8_t Vpmid_SubSta_Flag; //Vpmid电压下降标志
uint8_t Vpmid_AddSta[VOX_MAX_CHAN]; //Vpmid电压上升标志
uint8_t Vox_InBox_Sta[VOX_MAX_CHAN]; //耳机在盒标志
uint16_t Vpmid_Threshold_Neg; //Vpmid电压下降阈值
uint16_t Vpmid_Threshold_At_Present; //Vpmid电压当前值
uint16_t Vpmid_Threshold_Pos; //Vpmid电压上升阈值
uint8_t Vox_Follow_Start; //跟随充启动标志
uint8_t Vox_Follow_Stop; //跟随充结束标志
} g_Vox_Fllow_Chg_Cfg;
extern g_Vox_Fllow_Chg_Cfg xdata Vox_Fllow_Chg;
//extern uint8_t Box_To_Bes_Comm_Debounce;
/******************************************************************************\
@ -203,7 +267,11 @@ extern idata uint8_t Vox_Get_BES_Addr_Flag[2] ;
\******************************************************************************/
extern void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select);
extern void Vox_Det_Machine(void);
extern void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg );
extern void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode);
#ifdef VOX_RX

View File

@ -128,7 +128,7 @@ uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
NTC_Adc = g_Vntc_Adc;
#endif
if( NTC_Adc >= 2000 ) ////屏蔽NTC功能NTC浮空屏蔽 NTC 功能,并锁定。
if( NTC_Adc >= 2500 ) ////屏蔽NTC功能NTC浮空屏蔽 NTC 功能,并锁定。
{
return FALSE;
}

View File

@ -20,6 +20,7 @@
/*_____ I N C L U D E S ____________________________________________________*/
#include "pmu.h"
#include "vox_module.h"
/******************************************************************************\
@ -30,7 +31,7 @@
Variables definitions
\******************************************************************************/
g_PMU_Info pmu_Info; //pmu状态信息
g_PMU_Info xdata pmu_Info; //pmu状态信息
#if 0
g_PMU_Sys_Cfg pmu_Sys_Cfg;

View File

@ -571,7 +571,7 @@ void SysTem_State_Machine(void)
if(F_sys_tim_1s)
{
F_sys_tim_1s = 0;
#ifdef _DEBUG_PMU
#ifdef _DEBUG_MAIN
printf("STA0:0x%x,STA1:0x%x,STA2:0x%x,Chip_STA:0x%x,VOX_STA:0x%x.Dec_Sleep:%d\r\n",(u16)(pmu_Info.pmu_Fault_STA0),(u16)(pmu_Info.pmu_Fault_STA1),(u16)(pmu_Info.pmu_Fault_STA2),(u16)(pmu_Info.pmu_Chip_STA),(u16)(pmu_Info.pmu_VOX_STA),(u16)Decnt_SleepDelay);
// printf("Chg Sta:0x%x.,batPec:%d.\r\n",(u16)ChgStatus,(u16)bat_level_Pec);
@ -590,7 +590,9 @@ void SysTem_State_Machine(void)
Enter_Sleep_Cnt_Restart_Flag = 0;
Decnt_SleepDelay = ENTER_STANDBYMODE_CNT;
#ifdef _DEBUG_MAIN
printf("Decnt_SleepDelay Reload.\r\n");
#endif
}
}
else

View File

@ -65,34 +65,52 @@ bit Vox_Output_Short_Flag = 0;
#define VOX_FOLLOW_CHG_CNT 10
#define VOX_CLOSE_HOLD_CNT 50 //关盖发码前保持时间
/******************************************************************************\
Variables definitions
\******************************************************************************/
#define VOX_CLOSE_HOLD_CNT 50 //关盖发码前保持时间
#if VOX_FOLLOW_CHG
bit Vor_In_Box_Flag = 0;
bit Vol_In_Box_Flag = 0;
#define VOX_FOLLOW_CHG_INIT_CNT 3
bit Boost_VoxVout_Follow_Flag = 0;
int8 Boost_Vout_Value = 0;
bit Boost_Up_Flag = 0;
#define VOX_FOLLOW_CHG_NOWCURCHK_CNT 5
#define VOX_FOLLOW_CHG_VOLTAGE_ADJUST_CNT 2 //PMID调压周期
#define VOX_FOLLOW_CHG_PMID_UP_CNT 20 //PMID上升调节周期2s
#define VOX_FOLLOW_CHG_PMID_UP_STEPS 2 //PMID上升调节档位数。
#define VOX_FOLLOW_CHG_PMID_DOWN_STEPS 2 //PMID下降调节档位数。
#define VPMID_MAX_THD 0x3C
#define VPMID_MIN_THD 0x00
#define VOX_CV_TC_CURRENT 20 //耳机充电处于CV/TC阶段的电流值单位mA。
#endif
/******************************************************************************\
Variables definitions
\******************************************************************************/
#if VOX_FOLLOW_CHG
xdata uint16_t Vox_Follow_Chg_Debounce = 0;
g_Vox_Fllow_Chg_Cfg xdata Vox_Fllow_Chg;
e_Vox_Follow_Chg_Sta Follow_Chg_Sta;
#endif
#ifdef VOX_RX
uint8_t Vox_Get_Vbat_Flag[2] = {0}; //耳机配对状态VOL:低4bitVOR:高4bit。0是无效1是正在配对2是配对成功3不处理保持当前状态。
idata uint8_t Vox_Get_BES_Addr_Flag[2] = {0};
xdata uint8_t Vox_Get_Vbat_Flag[2] = {0}; //耳机配对状态VOL:低4bitVOR:高4bit。0是无效1是正在配对2是配对成功3不处理保持当前状态。
xdata uint8_t Vox_Get_BES_Addr_Flag[2] = {0};
//idata uint8_t BES_Addr[6] = {0}; //蓝牙耳机地址Vox_Bes_Addr[0][6]VOLVox_Bes_Addr[1][6]VOR
#endif
uint8_t Earphone_Vbat[2] = 0; //对耳电量
uint8_t Vox_Online_State[2] = {0}; //耳机在线标志位
xdata uint8_t Earphone_Vbat[2] = 0; //对耳电量
xdata uint8_t Vox_Online_State[2] = {0}; //耳机在线标志位
#define KEY_TWS_PAIR_TIMER 2
#define KEY_TWS_PAIR_CNT 6
@ -399,9 +417,6 @@ void Vox_Det_Machine(void)
static bit Vox_Getinto_Sleep_Flag;
static uint8_t CHIP_STA1_BK;
#if VOX_FOLLOW_CHG
static bit Follow_Chg_Start_Flag;
#endif
static uint8_t Vox_Voltage_Hold_Timer;
static uint8_t Vox_TX_Timer;
@ -422,20 +437,20 @@ void Vox_Det_Machine(void)
if( gBoost_Prepared_Flag )
{
if( CoverEvent_Flg ) //Hall事件触发。
if( CoverEvent_Flg ) //Hall事件触发。
{
if( !Boost_Open_Flag )
{
Set_PMU_Boost_Vout(BOOST_VPMID_5_2V); //开关盖Boost输出5.2V,保证耳机一定能被唤醒。
Set_PMU_Boost(ON); //Boost Enable异常时由硬件主动关闭。开启Boost开启Vox 5v会在开启Boost之后100ms延时
Set_PMU_Boost(ON); //Boost Enable异常时由硬件主动关闭。开启Boost开启Vox 5v会在开启Boost之后100ms延时
Boost_Open_Flag = 1;
return;
}
VOX_EN_Type(VOX_VOUT_Mode); //VOX Enable 5V
VOX_EN_Type(VOX_VOUT_Mode); //VOX Enable 5V
Vox_Output_Debounce = 0;
@ -456,11 +471,7 @@ void Vox_Det_Machine(void)
Vox_Chg_Full_Flag = 0;
Vox_Getinto_Sleep_Flag = 0;
#if VOX_FOLLOW_CHG
Follow_Chg_Start_Flag = 0;
Boost_VoxVout_Follow_Flag = 0;
#endif
Vox_Chn_Select = 0;
Vox_Get_BES_Addr_Flag[VOL_TYPE] = 0x00;
@ -468,6 +479,19 @@ void Vox_Det_Machine(void)
Vox_Get_BES_Addr_Flag[VOR_TYPE] = 0x00;
Vox_Vout_Enable = ON;
Wkup_Earphone_Flag = 0;
#if VOX_FOLLOW_CHG
Vox_Fllow_Chg.Vox_Follow_Start = OFF;
Vox_Fllow_Chg.Vox_Follow_Stop = OFF;
Follow_Chg_Sta = Vox_Follow_Chg_InitSta;
#endif
#ifdef _DEBUG_VOX
printf("Box Close.\r\n");
#endif
}
else //2、开盖处理5v 500ms 转0V 500ms后转ADT模式。
{
@ -475,7 +499,10 @@ void Vox_Det_Machine(void)
Cover_Open_Flag = 1;
Cover_Open_5V_Flag = 0;
Cover_Open_5V_Flag = 0;
#ifdef _DEBUG_VOX
printf("Box Open.\r\n");
#endif
}
CoverEvent_Flg = 0;
@ -533,7 +560,9 @@ void Vox_Det_Machine(void)
Boost_Open_Flag = 0;
Vox_Vout_Enable = OFF;
#ifdef _DEBUG_VOX
printf("Open Box CMD TX Over.\r\n");
#endif
}
}
else
@ -555,6 +584,10 @@ void Vox_Det_Machine(void)
#ifdef LED_DISPLAY
LED_On_Flag = 1;
#endif
#ifdef _DEBUG_VOX
printf("Open Box And Earphone GetIn.\r\n");
#endif
}
CHIP_STA1_BK = ( pmu_Info.pmu_VOX_STA & ( VOR_LoadOn | VOL_LoadOn ) );
@ -575,7 +608,13 @@ void Vox_Det_Machine(void)
Boost_Open_Flag = 1;
Vox_Vout_Enable = ON;
#if VOX_FOLLOW_CHG
Vox_Fllow_Chg.Vox_Follow_Start = OFF;
Vox_Fllow_Chg.Vox_Follow_Stop = OFF;
Follow_Chg_Sta = Vox_Follow_Chg_InitSta;
#endif
Vox_TX_Timer = 0;
Vox_Voltage_Hold_Timer = 0;
@ -588,6 +627,9 @@ void Vox_Det_Machine(void)
}
VOX_EN_Type(VOX_VOUT_Mode); //VOX Enable 5V
#ifdef _DEBUG_VOX
printf("Close Box And Force Voltage Up.\r\n");
#endif
Wkup_Earphone_Flag = 0;
}
@ -599,14 +641,6 @@ void Vox_Det_Machine(void)
return;
}
#if 0
/* 关盖后盒子里有耳机。则获取当前的Ivol和Ivor作为本轮PMID电压调整的初始化电量Init_Ivol和Init_Ivor。 */
if( pmu_Info.pmu_VOX_STA & ( VOR_LoadOn | VOL_LoadOn ) )
{
}
#endif
if( Vox_TX_Timer <= Vox_TX_Pattern_Tim ) //发送关盖指令。
{
@ -652,143 +686,72 @@ void Vox_Det_Machine(void)
}
#if VOX_FOLLOW_CHG
if( !F_batlevel_low && !Follow_Chg_Start_Flag )
{
//if( !Follow_Chg_Start_Flag )
{
/*跟随充逻辑*/
if( !Boost_VoxVout_Follow_Flag )
{
Boost_Vout_Value = 0x03;
Boost_Up_Flag = 0;
SFRADDR = VOX_CON0; //IOFF选择高电流档10/15/20/25mA
SFRDATA |= 0x20;
SFRADDR = VOX_CON2;
SFRDATA &= ~0xC0;
SFRDATA |= 0x80; //IOFF 20mA
Boost_VoxVout_Follow_Flag = 1;
}
else
{
if( Vox_Voltage_Hold_Timer < VOX_FOLLOW_CHG_CNT ) //等耳机抽电。
if ( Vox_Fllow_Chg.Vox_Follow_Stop == OFF )
{
Vox_Follow_Chg( &Vox_Fllow_Chg ); //跟随充处理。
}
else
#endif
{
if( !Vox_Chg_Full_Flag )
{
if( ( (pmu_Info.pmu_VOX_STA & ( VOR_Ioff | VOL_Ioff ) ) == ( VOR_Ioff | VOL_Ioff ) )|| !(pmu_Info.pmu_VOX_STA & ( VOL_LoadOn | VOR_LoadOn ) ) || F_batlevel_low ) //耳机充满、VOX无负载、盒子低电则关闭Vout输出通路关闭Boost。
{
if( Vox_Voltage_Hold_Timer < VOX_VOUT_5V_LEAST_CNT ) //重载转轻载延时5s后关闭Boost输出。
{
Vox_Voltage_Hold_Timer++;
return;
}
Vox_Voltage_Hold_Timer = 0;
if ( CHIP_STA1 & 0x0C ) //是否存在IOFF标志存在则Boost上升一个step否则Boost下降一个step。
{
Boost_Vout_Value += 1; //Boost 输出上升一个step
Boost_Up_Flag = 1;
if( Boost_Vout_Value >= BOOST_VOUT_MAX ) //Boost输出达到电压上限值则结束跟随充。
{
Boost_Vout_Value = BOOST_VOUT_MAX;
Boost_VoxVout_Follow_Flag = 0;
Follow_Chg_Start_Flag = 1;
SFRADDR = VOX_CON0; //IOFF选择低电流档2/3/4/5mA
SFRDATA &= ~0x20;
SFRADDR = VOX_CON2;
SFRDATA &= ~0xC0;
SFRDATA |= 0x40; //IOFF 3mA
}
}
else
{
if( !Boost_Up_Flag ) //只在初始化找最低轻载电压时执行
{
Boost_Vout_Value -= 1; //Boost 输出下降一个step
if( Boost_Vout_Value <= 0 )
{
Boost_Vout_Value = 0;
}
}
}
SFRADDR = OTP_KEY;
SFRDATA = 0x69;
SFRADDR = BST_CTL0; //Boost 输出
SFRDATA &= ~0x03;
SFRDATA |= Boost_Vout_Value;
SFRADDR = OTP_KEY;
SFRDATA = 0x01;
}
}
}
#endif
if( !Vox_Chg_Full_Flag )
{
if( ( (pmu_Info.pmu_VOX_STA & ( VOR_Ioff | VOL_Ioff ) ) == ( VOR_Ioff | VOL_Ioff ) )|| !(pmu_Info.pmu_VOX_STA & ( VOL_LoadOn | VOR_LoadOn ) ) || F_batlevel_low ) //耳机充满、VOX无负载、盒子低电则关闭Vout输出通路关闭Boost。
{
if( Vox_Voltage_Hold_Timer < VOX_VOUT_5V_LEAST_CNT ) //重载转轻载延时5s后关闭Boost输出。
{
Vox_Voltage_Hold_Timer++;
return;
}
#ifdef _DEBUG_VOX
printf("VOX CHG Full.\r\n");
printf("VOX CHG Full.\r\n");
#endif
Vox_Chg_Full_Flag = 1;
Vox_Chg_Full_Flag = 1;
Boost_Open_Flag = 0;
VOX_EN_Type(VOX_ADT_Mode); //VOX Enable ADT
}
}
else
{
if( Vox_Output_Debounce <= Vox_TX_Pattern_Tim )
{
if( (Vox_Output_Debounce % Vox_TX_Interval_2) == 0 ) //200ms发送一次
{
#ifdef VOX_TX
HandleTxCommand(VHOUSE_CMD_PWROFF,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
#endif
}
else
if( (Vox_Output_Debounce % Vox_TX_Interval) == 0 ) //200ms发送一次
{
#ifdef VOX_TX
HandleTxCommand(VHOUSE_CMD_PWROFF,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
#endif
}
Boost_Open_Flag = 0;
Vox_Output_Debounce++;
VOX_EN_Type(VOX_ADT_Mode); //VOX Enable ADT
}
}
else
{
if( !Vox_Getinto_Sleep_Flag )
{
Vox_Getinto_Sleep_Flag = 1;
VOX_EN_Type(VOX_ADT_Mode);
Vox_Vout_Enable = OFF;
#ifdef _DEBUG_VOX
printf("VOX Get Into Sleep.\r\n");
{
if( Vox_Output_Debounce <= Vox_TX_Pattern_Tim )
{
if( (Vox_Output_Debounce % Vox_TX_Interval_2) == 0 ) //200ms发送一次
{
#ifdef VOX_TX
HandleTxCommand(VHOUSE_CMD_PWROFF,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
#endif
}
else
if( (Vox_Output_Debounce % Vox_TX_Interval) == 0 ) //200ms发送一次
{
#ifdef VOX_TX
HandleTxCommand(VHOUSE_CMD_PWROFF,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
#endif
}
Vox_Output_Debounce++;
}
else
{
if( !Vox_Getinto_Sleep_Flag )
{
Vox_Getinto_Sleep_Flag = 1;
VOX_EN_Type(VOX_ADT_Mode);
Vox_Vout_Enable = OFF;
#ifdef _DEBUG_VOX
printf("VOX Get Into Sleep.\r\n");
#endif
}
}
}
}
}
}
Bat_Low_Pro_Flag = 0;
@ -825,46 +788,457 @@ void Vox_Det_Machine(void)
}
}
#if VOX_FOLLOW_CHG
#if 0
uint16_t Vox_Follow_Chg_Debounce = 0;
/*
*******************************************************************************
* void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *g_Vox_Fllow_Chg )
*
* Description : Vox (40ms调用周期)
*
* Arguments : NONE
#define VOX_FOLLOW_CHG_INIT_CNT 3
* Returns : NONE
void Vox_Follow_Chg( e_Vox_Chan_Set Vox_Chn, e_Vox_Follow_Chg_Sta Follow_Chg_Sta )
* Notes : NONE
*
*******************************************************************************
*/
void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
{
static bit nVpmid_Value_Setting;
#ifdef _DEBUG_VOX
//printf("Follow CHG Sta:0x%x.(Vox_sta:0x%x)(line:%d)\r\n",(u16)Follow_Chg_Sta,(u16)pmu_Info.pmu_VOX_STA, (u16)__LINE__);
#endif
switch (Follow_Chg_Sta)
{
case Vox_Follow_Chg_InitSta:
case Vox_Follow_Chg_InitSta: //STA0:PMID=5.2V可以保证耳机一定能进入充电状态,并持续一段时间保证耳机能开始抽电。
if( Vox_Follow_Chg_Debounce <= VOX_FOLLOW_CHG_INIT_CNT )
if( (n_Vox_Fllow_Chg->Vox_Follow_Stop == OFF) ) //启动跟随充
{
Vox_Follow_Chg_Debounce++;
Set_PMU_Boost_Vout(BOOST_VPMID_5_2V);
}
else
{
Vox_Follow_Chg_Debounce = 0;
if( Vox_Follow_Chg_Debounce <= VOX_FOLLOW_CHG_INIT_CNT )
{
Vox_Follow_Chg_Debounce++;
n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present = BOOST_VPMID_5_2V;
if( !nVpmid_Value_Setting )
{
Set_PMU_Boost_Vout(n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present);
#ifdef _DEBUG_VOX
printf("Follow CHG InitSta Set Max Vpmid.(Vox_sta:0x%x)(line:%d)\r\n",(u16)pmu_Info.pmu_VOX_STA, (u16)__LINE__);
#endif
nVpmid_Value_Setting = 1;
}
}
else
{
Vox_Follow_Chg_Debounce = 0;
Follow_Chg_Sta = Vox_Follow_Chg_Sta1;
nVpmid_Value_Setting = 0;
n_Vox_Fllow_Chg->Vpmid_AddSta[VOR_CHAN] = OFF;
n_Vox_Fllow_Chg->Vpmid_AddSta[VOL_CHAN] = OFF;
n_Vox_Fllow_Chg->Vpmid_SubSta[VOR_CHAN] = OFF;
n_Vox_Fllow_Chg->Vpmid_SubSta[VOL_CHAN] = OFF;
n_Vox_Fllow_Chg->IVox_TC_Mode[VOR_CHAN] = OFF;
n_Vox_Fllow_Chg->IVox_TC_Mode[VOL_CHAN] = OFF;
n_Vox_Fllow_Chg->Vox_InBox_Sta[VOR_CHAN] = OFF;
n_Vox_Fllow_Chg->Vox_InBox_Sta[VOL_CHAN] = OFF;
n_Vox_Fllow_Chg->Vpmid_Threshold_Neg = VPMID_MIN_THD;
n_Vox_Fllow_Chg->Vpmid_Threshold_Pos = VPMID_MAX_THD;
Follow_Chg_Sta = Vox_Follow_Chg_Sta1;
#ifdef _DEBUG_VOX
printf("Follow CHG InitSta.(Vox_sta:0x%x)(line:%d)\r\n",(u16)pmu_Info.pmu_VOX_STA, (u16)__LINE__);
#endif
}
}
break;
case Vox_Follow_Chg_Sta1:
$end$
break;
case Vox_Follow_Chg_Sta1: //STA1:获取耳机当前抽电电流和设置Vox上下限电流阈值。
default:
if ( ( pmu_Info.pmu_VOX_STA & VOR_Ioff ) && ( pmu_Info.pmu_VOX_STA & VOL_Ioff ) ) //VOL、VOR耳机无抽电则说明耳机已充满无需再继续跟随充。
{
n_Vox_Fllow_Chg->Vox_Follow_Stop = ON;
Follow_Chg_Sta = Vox_Follow_Chg_InitSta;
#ifdef _DEBUG_VOX
printf("Follow CHG Sta1,No EarPhone In Box.(line:%d)\r\n",(u16)__LINE__);
#endif
}
else
{
/*获取当前Ivox。Vox开启功率且Ioff处于重载状态。*/
if( !(pmu_Info.pmu_VOX_STA & VOR_Ioff) )
{
n_Vox_Fllow_Chg->IVox_Init[VOR_CHAN] = g_pmu_Adc_Ivor;
n_Vox_Fllow_Chg->IVox_Threshold_Neg[VOR_CHAN] = ( g_pmu_Adc_Ivor / 5 ) << 2; //Ivox_Threshold_Neg = IVox_Init * 80%
n_Vox_Fllow_Chg->IVox_Threshold_Pos[VOR_CHAN] = g_pmu_Adc_Ivor << 1; //Ivox_Threshold_Neg = IVox_Init * 2
#ifdef _DEBUG_VOX
printf("Follow CHG Sta1,VOR Chging(Ivor:%d).(line:%d)\r\n",g_pmu_Adc_Ivor,(u16)__LINE__);
#endif
}
if( !(pmu_Info.pmu_VOX_STA & VOL_Ioff) )
{
n_Vox_Fllow_Chg->IVox_Init[VOL_CHAN] = g_pmu_Adc_Ivol;
n_Vox_Fllow_Chg->IVox_Threshold_Neg[VOL_CHAN] = ( g_pmu_Adc_Ivol / 5 ) << 2; //Ivox_Threshold_Neg = IVox_Init * 80%
n_Vox_Fllow_Chg->IVox_Threshold_Pos[VOL_CHAN] = g_pmu_Adc_Ivol << 1; //Ivox_Threshold_Neg = IVox_Init * 2
#ifdef _DEBUG_VOX
printf("Follow CHG Sta1,VOL Chging(Ivol:%d).(line:%d)\r\n",g_pmu_Adc_Ivol,(u16)__LINE__);
#endif
}
n_Vox_Fllow_Chg->Vox_Follow_Start = ON;
Follow_Chg_Sta = Vox_Follow_Chg_Sta2;
}
break;
case Vox_Follow_Chg_Sta2: //STA2:获取当前Vox电流等待IVOX电流稳定检测当前电流IVox_At_Present。
if( Vox_Follow_Chg_Debounce <= VOX_FOLLOW_CHG_NOWCURCHK_CNT )
{
Vox_Follow_Chg_Debounce++;
}
else
{
Vox_Follow_Chg_Debounce = 0;
if ( !(pmu_Info.pmu_VOX_STA & VOR_Ioff) )
{
n_Vox_Fllow_Chg->IVox_At_Present[VOR_CHAN] = g_pmu_Adc_Ivor;
n_Vox_Fllow_Chg->Vox_InBox_Sta[VOR_CHAN] = ON; //判断VOR有耳机在盒正常抽电
#ifdef _DEBUG_VOX
printf("Follow CHG Sta2,Get IVOR.(line:%d)\r\n",(u16)__LINE__);
#endif
}
if ( !(pmu_Info.pmu_VOX_STA & VOL_Ioff) )
{
n_Vox_Fllow_Chg->IVox_At_Present[VOL_CHAN] = g_pmu_Adc_Ivol;
n_Vox_Fllow_Chg->Vox_InBox_Sta[VOL_CHAN] = ON; //判断VOL有耳机在盒正常抽电
#ifdef _DEBUG_VOX
printf("Follow CHG Sta2,Get IVOL.(line:%d)\r\n",(u16)__LINE__);
#endif
}
Follow_Chg_Sta = Vox_Follow_Chg_Sta3;
}
break;
case Vox_Follow_Chg_Sta3: //STA3:根据Ivox电流判断PMID是否需要降低。
if( Vox_Follow_Chg_Debounce <= VOX_FOLLOW_CHG_VOLTAGE_ADJUST_CNT )
{
Vox_Follow_Chg_Debounce++;
}
else
{
Vox_Follow_Chg_Debounce = 0;
if ( ( n_Vox_Fllow_Chg->IVox_At_Present[VOR_CHAN] > n_Vox_Fllow_Chg->IVox_Threshold_Pos[VOR_CHAN] ) || \
( n_Vox_Fllow_Chg->IVox_At_Present[VOL_CHAN] > n_Vox_Fllow_Chg->IVox_Threshold_Pos[VOL_CHAN] ) ) //当前电流大于THP阈值电流则说明耳机状态发生改变TC跳转到CC或Recharge复充需要重启跟随充。
{
Follow_Chg_Sta = Vox_Follow_Chg_InitSta;
n_Vox_Fllow_Chg->Vox_Follow_Start = OFF; //重启动跟随充
#ifdef _DEBUG_VOX
printf("Follow CHG Sta3,VOX Chg ReInit.(line:%d)\r\n",(u16)__LINE__);
#endif
}
else
{
if ( n_Vox_Fllow_Chg->Vox_InBox_Sta[VOR_CHAN] == ON )
{
if ( n_Vox_Fllow_Chg->IVox_At_Present[VOR_CHAN] <= VOX_CV_TC_CURRENT ) //检测到Ivor小于CV/TC电流阈值则说明耳机进入CV/TC阶段
{
if ( pmu_Info.pmu_VOX_STA & VOR_Ioff ) //检测到Ivor Ioff则VPMID升档。
{
n_Vox_Fllow_Chg->Vpmid_AddSta[VOR_CHAN] = ON;
n_Vox_Fllow_Chg->Vox_InBox_Sta[VOR_CHAN] = OFF;
#ifdef _DEBUG_VOX
printf("Follow CHG Sta3(CV),VOR Vpmid AddSta.(line:%d)\r\n",(u16)__LINE__);
#endif
}
else //未检测到Ivor Ioff则Vpmid降档
{
n_Vox_Fllow_Chg->Vpmid_SubSta[VOR_CHAN] = ON;
#ifdef _DEBUG_VOX
printf("Follow CHG Sta3(CV),VOR Vpmid SubSta.(line:%d)\r\n",(u16)__LINE__);
#endif
}
}
else
{
if ( n_Vox_Fllow_Chg->IVox_At_Present[VOR_CHAN] > n_Vox_Fllow_Chg->IVox_Threshold_Neg[VOR_CHAN] )
{
n_Vox_Fllow_Chg->Vpmid_SubSta[VOR_CHAN] = ON;
#ifdef _DEBUG_VOX
printf("Follow CHG Sta3(CC),VOR Vpmid SubSta.(line:%d)\r\n",(u16)__LINE__);
#endif
}
else
{
n_Vox_Fllow_Chg->Vpmid_AddSta[VOR_CHAN] = ON;
#ifdef _DEBUG_VOX
printf("Follow CHG Sta3(CC),VOR Vpmid AddSta.(line:%d)\r\n",(u16)__LINE__);
#endif
}
}
}
if ( n_Vox_Fllow_Chg->Vox_InBox_Sta[VOL_CHAN] == ON )
{
if ( n_Vox_Fllow_Chg->IVox_At_Present[VOL_CHAN] <= VOX_CV_TC_CURRENT ) //检测到Ivol小于CV/TC电流阈值则说明耳机进入CV/TC阶段
{
if ( pmu_Info.pmu_VOX_STA & VOL_Ioff ) //检测到Ivol Ioff则VPMID升档。
{
n_Vox_Fllow_Chg->Vpmid_AddSta[VOL_CHAN] = ON;
n_Vox_Fllow_Chg->Vox_InBox_Sta[VOL_CHAN] = OFF;
#ifdef _DEBUG_VOX
printf("Follow CHG Sta3(CV),VOL Vpmid AddSta.(line:%d)\r\n",(u16)__LINE__);
#endif
}
else //未检测到Ivol Ioff则Vpmid降档
{
n_Vox_Fllow_Chg->Vpmid_SubSta[VOL_CHAN] = ON;
#ifdef _DEBUG_VOX
printf("Follow CHG Sta3(CV),VOL Vpmid SubSta.(line:%d)\r\n",(u16)__LINE__);
#endif
}
}
else
{
if ( n_Vox_Fllow_Chg->IVox_At_Present[VOL_CHAN] > n_Vox_Fllow_Chg->IVox_Threshold_Neg[VOL_CHAN] )
{
n_Vox_Fllow_Chg->Vpmid_SubSta[VOL_CHAN] = ON;
#ifdef _DEBUG_VOX
printf("Follow CHG Sta3(CC),VOL Vpmid SubSta.(line:%d)\r\n",(u16)__LINE__);
#endif
}
else
{
n_Vox_Fllow_Chg->Vpmid_AddSta[VOL_CHAN] = ON;
#ifdef _DEBUG_VOX
printf("Follow CHG Sta3(CC),VOL Vpmid AddSta.(line:%d)\r\n",(u16)__LINE__);
#endif
}
}
}
}
}
break;
case Vox_Follow_Chg_Sta4: //STA4:根据IVOX电流判断PMID是否升高1、在此状态下每2s检测一次IVOX电流2、当检测到 IVOX < IVOX_THN or IVOX > IVOX_THP,则PMID 升高一个step或N个step根据实际测试设定。
if( Vox_Follow_Chg_Debounce <= VOX_FOLLOW_CHG_PMID_UP_CNT )
{
/* 每2s检测一次IVOX电流。 */
Vox_Follow_Chg_Debounce++;
n_Vox_Fllow_Chg->IVox_At_Present[VOR_CHAN] = g_pmu_Adc_Ivor;
n_Vox_Fllow_Chg->IVox_At_Present[VOL_CHAN] = g_pmu_Adc_Ivol;
}
else
{
Vox_Follow_Chg_Debounce = 0;
if ( n_Vox_Fllow_Chg->Vox_InBox_Sta[VOR_CHAN] == ON )
{
/* 当检测到 IVOX < IVOX_THN or IVOX > IVOX_THP,则PMID 升高一个step或N个step根据实际测试设定。 */
if ( ( n_Vox_Fllow_Chg->IVox_At_Present[VOR_CHAN] < n_Vox_Fllow_Chg->IVox_Threshold_Neg[VOR_CHAN] ) || \
( n_Vox_Fllow_Chg->IVox_At_Present[VOR_CHAN] > n_Vox_Fllow_Chg->IVox_Threshold_Pos[VOR_CHAN] ) )
{
n_Vox_Fllow_Chg->Vpmid_AddSta[VOR_CHAN] = ON;
Follow_Chg_Sta = Vox_Follow_Chg_Sta2;
#ifdef _DEBUG_VOX
printf("Follow CHG Sta4,VOR Vpmid AddSta(line:%d).\r\n",(u16)__LINE__);
#endif
}
#ifdef _DEBUG_VOX
else
{
printf("Follow CHG Sta4,VOR Ching(line:%d).\r\n",(u16)__LINE__);
}
#endif
}
if ( n_Vox_Fllow_Chg->Vox_InBox_Sta[VOL_CHAN] == ON )
{
if ( ( n_Vox_Fllow_Chg->IVox_At_Present[VOL_CHAN] > n_Vox_Fllow_Chg->IVox_Threshold_Pos[VOL_CHAN] ) || \
( n_Vox_Fllow_Chg->IVox_At_Present[VOL_CHAN] < n_Vox_Fllow_Chg->IVox_Threshold_Neg[VOL_CHAN] ) )
{
n_Vox_Fllow_Chg->Vpmid_AddSta[VOL_CHAN] = ON;
Follow_Chg_Sta = Vox_Follow_Chg_Sta2;
#ifdef _DEBUG_VOX
printf("Follow CHG Sta4,VOL Vpmid AddSta(line:%d).\r\n",(u16)__LINE__);
#endif
}
#ifdef _DEBUG_VOX
else
{
printf("Follow CHG Sta4,VOL Ching(line:%d).\r\n",(u16)__LINE__);
}
#endif
}
}
break;
default:
break;
}
if( ( n_Vox_Fllow_Chg->Vox_InBox_Sta[VOR_CHAN] == ON ) || ( n_Vox_Fllow_Chg->Vox_InBox_Sta[VOL_CHAN] == ON ) )
{
if( ( n_Vox_Fllow_Chg->Vpmid_SubSta[VOR_CHAN] == ON ) || ( n_Vox_Fllow_Chg->Vpmid_SubSta[VOL_CHAN] == ON ) ) //当需要降压Vpmid则每降一次档位都会充电至少2s。
{
if( ( n_Vox_Fllow_Chg->Vox_InBox_Sta[VOR_CHAN] == ON ) && ( n_Vox_Fllow_Chg->Vox_InBox_Sta[VOL_CHAN] == ON ) )
{
if( ( n_Vox_Fllow_Chg->Vpmid_SubSta[VOR_CHAN] == ON ) && ( n_Vox_Fllow_Chg->Vpmid_SubSta[VOR_CHAN] == ON ) )
{
n_Vox_Fllow_Chg->Vpmid_SubSta_Flag = ON;
#ifdef _DEBUG_VOX
printf("Follow CHG SubSta,VOL/VOR(line:%d).\r\n",(u16)__LINE__);
#endif
}
}
if( ( n_Vox_Fllow_Chg->Vox_InBox_Sta[VOR_CHAN] == ON ) && ( n_Vox_Fllow_Chg->Vox_InBox_Sta[VOL_CHAN] == OFF ) )
{
if( n_Vox_Fllow_Chg->Vpmid_SubSta[VOR_CHAN] == ON )
{
n_Vox_Fllow_Chg->Vpmid_SubSta_Flag = ON;
#ifdef _DEBUG_VOX
printf("Follow CHG SubSta,VOR(line:%d).\r\n",(u16)__LINE__);
#endif
}
}
else
if( ( n_Vox_Fllow_Chg->Vox_InBox_Sta[VOR_CHAN] == OFF ) && ( n_Vox_Fllow_Chg->Vox_InBox_Sta[VOL_CHAN] == ON ) )
{
if( n_Vox_Fllow_Chg->Vpmid_SubSta[VOL_CHAN] == ON )
{
n_Vox_Fllow_Chg->Vpmid_SubSta_Flag = ON;
#ifdef _DEBUG_VOX
printf("Follow CHG SubSta,VOL(line:%d).\r\n",(u16)__LINE__);
#endif
}
}
n_Vox_Fllow_Chg->Vpmid_SubSta[VOR_CHAN] = OFF;
n_Vox_Fllow_Chg->Vpmid_SubSta[VOL_CHAN] = OFF;
if ( n_Vox_Fllow_Chg->Vpmid_SubSta_Flag == ON )
{
if( n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present > VPMID_MIN_THD )
{
n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present = n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present - VOX_FOLLOW_CHG_PMID_DOWN_STEPS;
}
if( n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present <= n_Vox_Fllow_Chg->Vpmid_Threshold_Neg ) //当Vpmid降档到到下限阈值则开始升压。
{
n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present = n_Vox_Fllow_Chg->Vpmid_Threshold_Neg;
Follow_Chg_Sta = Vox_Follow_Chg_Sta4;
}
else
{
Follow_Chg_Sta = Vox_Follow_Chg_Sta2;
}
Vox_Follow_Chg_Debounce = 0;
n_Vox_Fllow_Chg->Vpmid_SubSta_Flag = OFF;
#ifdef _DEBUG_VOX
printf("Follow CHG SubSta,(STA:0x%x,Vpmid:0x%x)(line:%d)\r\n",(u16)Follow_Chg_Sta,(u16)n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,(u16)__LINE__);
#endif
Set_PMU_Boost_Vout( n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present );
}
}
else
{
/* PMID > PMID_THP且VOL和VOR的任意一支路电流超过阈值Ivol_THN > Ivol > Ivol_THP 或 Ivor_THN > Ivor > Ivor_THP。*/
if( ( n_Vox_Fllow_Chg->Vpmid_AddSta[VOR_CHAN] == ON ) || ( n_Vox_Fllow_Chg->Vpmid_AddSta[VOL_CHAN] == ON ) )
{
n_Vox_Fllow_Chg->Vpmid_AddSta[VOR_CHAN] = OFF;
n_Vox_Fllow_Chg->Vpmid_AddSta[VOL_CHAN] = OFF;
if( n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present < VPMID_MAX_THD )
{
n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present = n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present + VOX_FOLLOW_CHG_PMID_UP_STEPS;
}
Follow_Chg_Sta = Vox_Follow_Chg_Sta4; //当有需要升压Vpmid则需要重回Sta4。
/* 当VPMID 上升到上限阈值则说明本轮跟随充调整结束则重回StaInit。 */
if( n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present >= n_Vox_Fllow_Chg->Vpmid_Threshold_Pos )
{
n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present = n_Vox_Fllow_Chg->Vpmid_Threshold_Pos;
Follow_Chg_Sta = Vox_Follow_Chg_InitSta;
n_Vox_Fllow_Chg->Vox_Follow_Stop = ON;
}
#ifdef _DEBUG_VOX
printf("Follow CHG AddSta,(STA:0x%x,Vpmid:0x%x)(line:%d)\r\n",(u16)Follow_Chg_Sta,(u16)n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,(u16)__LINE__);
#endif
Set_PMU_Boost_Vout(n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present);
}
#if 0
else //当无需升压Vpmid则重回Sta3。
{
Follow_Chg_Sta = Vox_Follow_Chg_Sta3;
}
#endif
}
}
#if 1
else
{
if( Follow_Chg_Sta > Vox_Follow_Chg_Sta2 )
{
Follow_Chg_Sta = Vox_Follow_Chg_InitSta;
n_Vox_Fllow_Chg->Vox_Follow_Stop = ON;
}
}
#endif
}
#endif

View File

@ -1,11 +1,3 @@
---- POWER_CTRL_CMD Matches (14 in 4 files) ----
pmu.c (UsrSrc\pmu) line 135 : I2cSfr_Write( POWER_CTRL_CMD, n_PMU_Sys_Cfg->pmu_PWR_Ctrl_Cmd );
Set_PMU_Enter_ShipMode in pmu.c (UsrSrc\pmu) : I2cSfr_Write( POWER_CTRL_CMD, POWER_CTRL_CMD_ENTER_SHIPMODE );
Set_PMU_En_ReChg in pmu.c (UsrSrc\pmu) : I2cSfr_Write( POWER_CTRL_CMD, POWER_CTRL_CMD_RECHG_ENABLE );
Set_PMU_Rst in pmu.c (UsrSrc\pmu) : I2cSfr_Write( POWER_CTRL_CMD, POWER_CTRL_CMD_RST_VDD );
pmu.h (UsrInc\pmu) line 31 : #define POWER_CTRL_CMD_RECHG_ENABLE 0x11 //0x11:VIN正常是写入此命令IC将重新开启充电循环
pmu.h (UsrInc\pmu) line 33 : #define POWER_CTRL_CMD_RST_CMD 0x17 //0x17:CMD_RST此命令将复位I2CR<0x20>~<0x4F>、VDD
pmu.h (UsrInc\pmu) line 35 : #define POWER_CTRL_CMD_ENTER_SHIPMODE 0xAA //0xAA:EnterShipmode,当且仅当在standby mode状态下写入此命令IC进入ShipMode状态在Charge Mode状态时写入此命令无效
pmu.h (UsrInc\pmu) line 37 : #define POWER_CTRL_CMD_RST_VDD 0x33 //0x33:RstVDD在任意状态下关闭VSYS 200ms然后在重启VDD。
reg3315.h (UsrInc\inc) line 53 : #define POWER_CTRL_CMD 0x4F
Enter_Sleep in sleep.c (UsrSrc\sleep) : I2cSfr_Write(POWER_CTRL_CMD, POWER_CTRL_CMD_ENTER_SHIPMODE); //Enter ShipMode
---- VPMID_MIN_THD Matches (2 in 1 files) ----
vox_module.c (UsrSrc\vox) line 86 : #define VPMID_MIN_THD 0x00
Vox_Follow_Chg in vox_module.c (UsrSrc\vox) : n_Vox_Fllow_Chg->Vpmid_Threshold_Neg = VPMID_MIN_THD;