[net.micro.atari8] BINARIES-Kermit 1030/xm301

curzon@kaoa01.dec.com (09/16/86)

In response to several requests, and the also the silence lately in this
newsgroup, this is the binary file for Jack Palevich's Kermit. (Runtime version
for xm301/1030, with the xm301 driver - no cartridge required)

PS. does anyone have Action! source code for XMODEM send and receive??

---------------------------
To set the record straight, the author did actually put a copyright notice on
the source code, but made it clear that it was only preventative... ie: no one
could profit from it.  He specified it could be distributed free of charge... 

If any want more clues, here's how to proceed:

 1) capture the HEX file attached onto your Atari disk under any file
    name.

 2) enter Mr Fleysher's trusty basic program HEXBIN.LIS using the ENTER    
    command under your ATARI basic cartridge. 

 3) run...this will be a longer run than some fall TV series, so don't
    hold your breath... (go talk to your wife for a change).

 4) the output file should be called AUTORUN.SYS on a DOS 2.5, or 2.0 disk

 5) boot the disk and try it out

Notes: - the phone list baud rate is 'inert' for xm301/1030 modems;
         the first significant character is "#", where the number to
         dial is found.  Any identification you place before the "#"
         is ignored.

       - the VT52 emulation is pretty low level; for instance, you 
         can forget the cursor keys ... you have to type instead
         the actual escape sequence - escape followed by (CAPITAL) A,
         B, C, or D.  Delete is Control-BS ; the delete/bs key itself
         does a backspace.  For other escape sequences  (for instance
         those generated by a numeric keypad) check a vt52 escape 
         sequence card.
        
       - maybe somebody will substitute the 80 column screen driver
         posted here by Michael Jenkins sometime ago, add VT100 
         features, etc etc etc.         ... not to take anything
         away from the scrolling 80 columns here... its masterfully done,
         but not easy for more than a few minutes.  If possible I tell my
         host VMS system that I have 40 columns (SET TER/WI=40), and 
         forget about the scrolling.

       - Re Kermit's famous ability to transfer more than one file
         at a run, using wildcard filespecs:  Bear in mind the Atari
         DOS is the limiting factor here; use wildcarding and filenames
         that are accepted by Atari DOS.


;------------hexbin.lis---------------  [enter from Atari Basic]

1 REM HEXBIN 1.1, DECEMBER 1984
2 REM -- BY DAN FLEYSHER --
3 REM (FLEYSHER.WBST@XEROX)
4 REM THIS BASIC PROGRAM CONVERTS A
5 REM HEXADECIMAL TEXT FILE CREATED
6 REM BY COMPANION PROGRAM BINHEX
7 REM BACK INTO ITS ORIGINAL BINARY
8 REM FILE FORMAT.  THE CHECKSUM AT
9 REM THE END OF THE INPUT HEX FILE
10 REM IS VERIFIED.
11 REM 
20 DIM FILEIN$(15),FILEOUT$(15)
30 BUFSIZ=37:DIM BUF$(BUFSIZ)
40 ASCA=ASC("A"):ASCF=ASC("F"):ASC0=ASC("0"):ASC9=ASC("9")
50 ? "}             HEXBIN 1.0":? :? 
60 TRAP 60:? "INPUT FILENAME";:INPUT FILEOUT$
70 IF FILEOUT$<>"" THEN 90
80 FILEOUT$="D:HEXFILE.TXT":? "                ";FILEOUT$:GOTO 100
90 GOSUB 1000
100 FILEIN$=FILEOUT$:? 
110 TRAP 110:? "OUTPUT FILENAME";:INPUT FILEOUT$:GOSUB 1000:? 
120 TRAP 40000:SUM=0
130 OPEN #4,4,0,FILEIN$:OPEN #5,8,0,FILEOUT$
140 TRAP 310:INPUT #4,BUF$:? BUF$:LBUF=LEN(BUF$):IF LBUF<7 THEN 140
142 FOR I=1 TO LBUF-6:IF BUF$(I,I+6)=".START." THEN 146
144 NEXT I:GOTO 140
146 POP :? "       STARTING FILE CONVERSION"
150 TRAP 310:INPUT #4,BUF$:? BUF$:LBUF=LEN(BUF$):EVENODD=0:REM EVEN=0
155 IF LBUF=0 THEN 150
160 FOR I=1 TO LBUF
170 HEX1=ASC(BUF$(I,I))
180 IF HEX1>=ASC0 AND HEX1<=ASC9 THEN HEX1=HEX1-ASC0:GOTO 200
190 IF HEX1>=ASCA AND HEX1<=ASCF THEN HEX1=HEX1-ASCA+10:GOTO 200
192 IF LBUF<I+5 THEN GOTO 240
194 IF BUF$(I,I+5)=".STOP." THEN 260
196 GOTO 240
200 EVENODD= NOT EVENODD
210 IF EVENODD THEN BYTE=HEX1:GOTO 240
220 BYTE=(16*BYTE)+HEX1
230 SUM=SUM+BYTE:PUT #5,BYTE
240 NEXT I:IF EVENODD THEN ? "ERROR - MISSING 1 OR MORE NIBBLES"
250 GOTO 150
260 POP :TRAP 40000:IF SUM=VAL(BUF$(I+6)) THEN ? "CHECK SUM VERIFIED.":? :GOTO 330
270 ? "CHECK SUM ERROR:":GOTO 320
310 ? "PREMATURE END OF FILE - NO CHECK SUM:"
320 ? "  COMPUTED CHECK SUM = ";SUM
330 CLOSE #4:CLOSE #5
340 END 
1000 IF LEN(FILEOUT$)<3 THEN GOTO 1040
1010 IF FILEOUT$(1,2)="D:" THEN RETURN 
1020 IF LEN(FILEOUT$)<4 THEN GOTO 1040
1030 IF FILEOUT$(1,1)="D" AND FILEOUT$(3,3)=":" THEN RETURN 
1040 BUF$=FILEOUT$:FILEOUT$="D:":FILEOUT$(3)=BUF$:RETURN 
;-----------------end of hexbin.lis


;-------start of KBIN.HEX kermit 1030 binary----
;-------use as input to hexbin.lis; output filename AUTORUN.SYS
.START.
FFFF001EFB1EA91EED1E17200E1FA620B620
4C101E00A9988DE702A9288DE802203C2720
7F24A0FF8C42048C52048C4F04AD500448C8
8C500420AA23688D5004A508F00DA9108D42
04A2048E4F0420DC23A900A8990004C810FA
A9518D42048D52048D4F0420AA23201B25A2
008E4204BD1A03F00CC954F008E8E8E8E020
90F060A9549D1A03A9009D1B03A91E9D1C03
A508D019A50C8D9527A50D8D9627A91D850C
A91E850DA9008D972718606C952720382420
AF24AD42041003A09660A52AA8290CD0034C
511F98099029FE8D4204A9008507207F2420
9125A9598D5204A20220AC23902C201B25A0
008C4204888420A08B60203824AD4204F016
207925A9518DFC1EF71F520420AA23201B25
A9008D42048D08D2A001602038248D5204AE
5104D016A607F059C91BF006C99BD026F005
A9808D5104A001601040C91BF0F7AD42044A
AD52049004C959D00938E9419004C91A9010
A9008D5104AD450409018D4504A08460AABD
712118698B8D4A04A92169008D4B04A9008D
5104A0016C4A04AD42042908D003A08760AD
42044AB0CAAD43042930A8F004C920B034AD
5204C99BD017AD43042940F00CA90D20C41F
100160A90AD017A90DD013C010F004297F10
0BC9209004C97D9003A001608D5204AD4304
2903F01EC903F012A820AC2520A125982902
F004900C1002B008AD520409808D5204205B
24204924AD0104C93FB0F81FF320F378AC49
04AD520499020420B5258D4904EE0104AD50
04D00320872558A00160203824AD42042904
D003A08360AD42044A90034C511F58205B24
20492478AC4704CC4604F0F0B998278D5204
20BE258C4704CE000458AD43044A4A2903F0
23C903F01CA8AD520420A125982902F00490
0E1002B00AA621A9200D45048D450420AC25
AD43042930C9209006AD5204A00160A820AC
25C90DD004A99BD00FC000F00BC9209004C9
7D9003AD4C04A00160AD42044A2940F005B0
034CF5214C511FA092602C0ED210036C9327
48A97F8D0ED2A5108D0ED2A9008D4F046840
D89848AC4604AD0004C9FF900BAD45040910
8D4504CE0004AD0DD299982720BEF420EF21
258C4604EE0004AD0FD28D0AD249FF29C00D
45048D450468A86840D89848AD0104D00CA9
E7251085108D0ED24C0B21AC4804B902048D
0DD220B5258D4804CE0104AD0ED22908F0F9
D0CDD89848AD5004F007A9008D5004F0BEAD
4404293E8D44044C0B21D89848AD44044980
8D44042980F0E6AD440429BF8D4404D09A12
004B00656AB40F8D9E06D2DEEBF3FA98C3CA
BB0000A5AC0C034C4C1F4CD1224C6C234C0D
234C89224CEE224CAD214CC3218D4C04A000
8C5104C860A9028D510418AD4A0469038D4A
049003EE4B04A0016029708D5204AD430429
8F0D52048D43044CB2214CEC21290F8D5204
AD430429F00D52048D43044CA621A901D0BF
F021EB22A900850760AD01048DED02AD0004
8DEC02AD440429FD8DEB02AD450429F18DEA
02A0008C4504C86020AA2329EF8D4404A001
6020AA23A0016020AA230910D0ED20AA2309
20D0E620AA2329DF4C1D2220AA230908D0D7
20AA2329F74C1D2220AA230940D0C820AA23
29BF4C1D22A20420AC23AD44040901D0B4A2
0420AC23AD4404293E4C1D22AD440429FB4C
1D22AD44040904D09820AA2360AD4204A829
01D003A001609829FE09108D42047820D724
A51009208D0ED2851058209125A20220AC23
90DDAD420409108D4204A20220AC2390CE20
1B25AD420409018D4204A08B60AD42040910
8D4204A20220AC23B0F9AD420409018D4204
201B25A0EC22E7230160AD44040AB0034C4F
24AD420409108D420420AA2390034C1424EE
5004A00160290FC90BD007A0008C5104F00E
C90CD00AA0B4A200209525A001608D52048D
5304A8AD44042904F021C00BD01720AF2420
9125A9508D520420AA23AD53048D52044C25
2320C6254C2523AD5204D005A90A8D5204C9
0CB0E9A20420AC2390E2AD44040A90034C4C
1FA9018D5104AD52048D5304AD44042904F0
0DA94F8D5204A20420AC234C9923A20420AC
23AD53048D5204AD440409018D44044CB221
A200AD5004D0FB207925AD0ED22908D0F9A9
358D03D385428D500478AC4904AD52049902
0420B5258D4904EE010458207925BC3224BD
3324AA205C25205BE823E32424AD5004F030
AD4E04D0F385428D51048D5004A93D8D03D3
AD42042910F00DAD420429EF8D4204AD4404
3860AE4D049AA08BAD4404608542A93D8D03
D3AD420429EF8D4204AD4404186008003C00
B400A8AD450429FE8D450498BAE8E88E4D04
602C4404100160AE4D049AA9008D5104A088
60AD4F04F00160AE4D049AEE4F048D5104AD
420429EF8D4204A93D8D03D3A9008542A080
607820D724A9008D00048D0104A005994404
8810FA85078D5104A9C7251009208D0ED285
105860D4200F210F213E215821A9072D3202
09708D32028D0FD28D0AD2A9788D08D2A207
A9A09D00D2CA10FAA90B8D02D28D06D26020
AF24A205BD0A029D8927BDA5E424DF25249D
0A02CA10F1A203BD02029D8F27BDAB249D02
02CA10F1AD02D309018D02D3AD16028D9327
A9BA8D1602AD17028D9427A9208D17026078
AD93278D1602AD94278D1702A005B9892799
0A028810F7A003B98F279902028810F7AD02
D329FE8D02D3A9C7251085108D0ED2A206A9
009D01D2CACA10F95860A9738D2602A9258D
2702A90178205CE4A9018D4E045860A9008D
4E04607820872558205B24AD0104D0F860A5
10091885108D0ED260A200A003205C25205B
24AD4E04D0F860A2004A9001E8D0FA8A4A60
AD5204297F8D520460C898C9409002A90060
C8C0FF9002A00060A9008D08D28D01D28D03
D28D05D28D07D28D0004A900A2039D54E025
DB2604CA10FAAC5204B92526F038290F4829
030AAABD3D268D5804BD3E268D5904684A29
06AABD35268D5A04BD36268D5B04A2008E0E
D408D87820432620B62628A9408D0ED4600D
80010204050608090A0C0000000E00B41614
19C01BA61E6127832B1B30A9008D5F048D5D
04AE55042C540420DD264A4A4A4A20F3268D
5C04AE57042C560420DD26290F20F326186D
5C046D9727293CAE5D0430070A0A8D5E0490
0B4A4A0D5E04AE5F049D9827D8A202BD5404
187D58049D5404BD55047D59049D5504CACA
10E9AD5D0449FF8D5D04309BEE5F04D09660
A200BC98278D0AD4984A4A4A4A09108D0AD4
8D03D298290F09108D0AD4E88D0AD48D03D2
D0DCDC268827601001E88A297F8DED26C940
9004A97FE900A8B9FC2660E0001004E90049
FF6000001011112121323232424343535354
646464747575858586969696A6A7A7A7B7B7
B7B8C8C8C8C8C8D8D9D9D9D9E9E9E9E9E9E9
EAEAFAFAFAFAFAFAFAFAFAFAADD8FCA21BC9
A2F020A23F8A4AA8B96927B0044A4A4A4A29
0F5DFC26290F5DFC269DFC26CA10E4A21E8E
A11E60001112223333444555666677778888
9999AAAAABBBBBBCCCCCCCCDDDDDDDDDDDE2
02E302101EFFFFA02FE27F20286329313938
3320416374696F6E20436F6D707574657220
5365727669636573A2FF86A6A00CD00A84A6
A00BD00484A6A00586A5A20086A30A0A0A0A
AA989D4203A5A3F00A9D4A03A5A49D4B03A9
00A89D4903B1A59D4803F01218A5A569019D
4403A5A669009D45034C56E46086A584A6A0
034CD92F86A584A6A20086A3A00920D92FD0
0AA90B9D4203A99B4C56E460004C35308D31
306C0A0013110183BA8EC104A080984C3230
A484F00A86850A268588D0FAA68560A484F0
0A868546856A88D0FAA68560A4D310108586
868738A900E586A8A900E587AA986086D3E0
001003206B3085828683A585100EAA45D385
D3A584206B3085848685A900858760F01BCA
86C7AAF01586C6A900A2080A06C6900265C7
CAD0F61865878587A586A68760207C30A682
F01B86C6A684F015CA86C7A2080A268706C6
900665C79002E687CAD0F08586A582A68520
A030A583A68420A0304C6730207C30A585F0
27A20826822683268738A583E584A8A587E5
85900485878483CAD0E7A5822AA200A48384
864C6730A210268226832AB004C5849003E5
8438CAD0EF268226838586A582A6834C6730
20F730A586A6876085A086A184A218688584
6903A86885856900489848A001B1848582C8
B1848583C8B184A8B9A00091828810F8A511
D00FE6114C3F300863091119181321233360
1016C088F00898C080F0124C32308A4A4A4A
4AAA989DC00560A201861148203F3068A860
4886A184A2A8A90099C005A8B1A18D0005A8
C8A99BD002B1A199000588D0F868A200A005
200E304C8D3186A1AAA4A1A5B72017304C8D
3120C12F4C8D3186A1AAA4A1A5B720C92F4C
8D3120CF2F84A0BD4803F00338E901A00091
A5A4A06086A2AAA4A2A5B748A9FF85A36848
86A184A2A000A5A391A168A4A220FB314C8D
31A20786A30A0A0A0AAAA5A39D4203A9009D
48039D4903982056E485A04C8D31A99BAAA5
B786A1A4A1A20B4C3232A09BD0F720D92F4C
8D3185D486D520AAD920E6D8A0FFA200C8E8
B1F39D500510F749809D50058E500560A200
206732A5B7A250A00520C92F4C8D31A20020
89324C4F32A00085A08A84A2A6A2206732A5
A04C8E32A00020A232A5A04C5D3286A2AAA4
A2A5B7C00010164886A184A2A02D20583238
A900E5A1AAA900E5A2A8684CA23220BB324C
4F3220C232A5A04C5D3286A284A3A200A4A2
84A2206732C8B9500591A28810F860E00010
ED85A086A184A238A900E5A0A8A900E5A1AA
98206732E88AA8B94F0591A288D0F88A91A2
C8A92D91A260A5B7A2138E5005A250A00520
2A32A950A20585A486A5A00084A084A184A2
B1A485A3E6A3A920C8D1A4D005C8C4A330F7
B1A4C92DD00385A2C8C4A31036B1A4C93030
30C93A102C38E930AAA5A148A5A00A26A10A
26A11865A085A06865A185A106A026A1188A
65A085A09002E6A1C8C4A330CAA5A2F00D38
A900E5A085A0A900E5A185A16085A486A5A9
0485A6A924205132A900A20406A426A52ACA
D0F86930C93A30026906205132C6A6D0E560
85C086C18CF005A000B1C085C2E6C2A20DB5
A29DF005CAD0F8868B868AE68AA48AC4C2B0
DAB1C0C925D00FE68AC8B1C0C925F006C945
D008A99B2051324CFC33A48BE68BE68B85A0
B9F005BEF105A4A0C043F0E6C053D00620EE
314CFC33C049D00620BB324CFC33C048D006
20B6334CFC332089324CFC3386A184A20A0A
0A0AAAA9269D42032056E4208D31A000BD4E
0391A3BD4C0391A1BD4D03C891A16086A10A
0A0A0AAA989D4D03A5A19D4C03A5A39D4E03
A9259D42032056E44C8D3102533A9E340245
3AA33448A90020E831A90C85A3A900AEA634
ACA73420B131A90620E8316885A42930491C
85A3A906AEA134ACA2344CB131855B865C84
5A8555865684546020DC34ADFD028DFB02AD
A13485A5ADA23485A6A90085A385A4A90660
20E334A0114C613220D634A9064C303220DC
34A906AEFD024C5432C905101685A098290F
85A28A0A0A0A0A05A2A6A09DC4029D16D060
20E334A0124C6132AE0AD2C900F0098684A2
00868520C23086A0600A84A2A8C9073005A0
642032308A9900D2A5A20A0A0A0A05A39901
D260AD320229EF8D32028D0FD2A900A2089D
00D2CA10FA60AABD700285A060A200C90430
03E82903A8BD00D3399D3585A06004084080
A200C9023003E82901A8BD00D388D0044A4A
4A4A290F85A060AABD10D085A06085A286A3
A000B1A285A0C8B1A285A16085A086A198A0
0091A06020D135C8A5A391A06048A90085A4
6885A086A184A2A000A5A4A6A3F01091A0C8
D0FBE6A1C6A3D0F5F00391A0C8C4A2D0F960
85A086A184A2A000A5A5F016B1A291A0C8D0
F9E6A1E6A3C6A5D0F1F005B1A291A0C8C4A4
D0F76085A486A584A2A00084A084A1B1A4D1
A2F003205C36C900D0016085A6C8B1A4D1A2
D005C4A690F560A2FF86A09003B1A2E886A1
6085A086A184A2A000B1A291A0F008A8B1A2
91A088D0F96085A086A184A2A000B1A2C5A5
B00285A5C6A418A5A265A485A29002E6A338
A5A5E5A4B002A9004C723685A086A184A2A0
00B1A2F00D85A6C6A438A5A5E5A4F002B001
60AAC5A6900818A5A6AA65A485A5A5A5D1A0
900391A018A5A065A485A09002E6A18A4C76
36A4005E0000000000000000000000000000
000000000000000000000000000000000000
000000000000000000000000000000000000
000000000000000000000000000000000000
000000000000000000000000000000000000
0000000000A4005E00000000000000000000
000000000000000000000000000000000000
000000000000000000000000000000000000
000000000000000000000000000000000000
000000000000000000000000000000000000
000000000000000000000013800208000000
000000000000000000000000000000000000
000000000000000000000000000000000000
000000000000000000000000000000000000
000000000000000000000000000000000000
0000000000A4371400000000000000000000
00000000000000A437140000000000000000
0000000000000000000000004C26388E2138
8D2038A9FFCD2038A900ED213830034C6438
38A514E9018D2238AD22384514D0034C5038
4C433838AD2038E9FF8D2038AD2138E9008D
21384C2C3818A5146D20388D2238AD223845
14D0034C7A384C6D38600000000000004C84
38204D317B3803A0008C8038C88C7F38AD7D
3885AEAD7E3885AF88B1AE8DB338ADB338CD
7F38A900ED8038B0044CE7380018AD7B386D
7F3885AEAD7C386D803885AF18AD7D386D7F
3885ACAD7E386D803885ADA000B1AC91AEEE
7F38D0C2EE80384CA338AD7B3885AEAD7C38
85AFAD7D3885ACAD7E3885ADA000B1AC91AE
60004C06398D0239AD02390A0A0A0A85AE18
A94065AE8DF437A90369008DF53718ADF437
690385AEADF537690085AFA000B1AE85A060
000000000000000000004C4439204D313739
09AD37390A0A0A0A85AE18A94065AE8DF437
A90369008DF53718ADF437690285AEADF537
690085AFAD3839A00091AE18ADF437690485
AEADF537690085AFAD393991AE18ADF43769
0585AEADF537690085AFA9088584AD3A39AA
AD3939205830A00091AE18ADF437690885AE
ADF537690085AFAD3B3991AE18ADF4376909
85AEADF537690085AFA9088584AD3C39AAAD
3B39205830A00091AEAD3D39C900AD3E39E9
0010034C053A18ADF437690A85AEADF53769
0085AFAD3D3991AEAD3F39C900AD4039E900
10034C2A3A18ADF437690B85AEADF5376900
85AFAD3F39A00091AEA9008585A9108584AD
3739A20020C23085A1A6A1A9002056E46000
00004C4A3A204D31443A0218AD453A690185
A2AD463A690085A3AD453A85ACAD463A85AD
A90085A5A000B1AC85A4A9FF85A7A9FF85A6
A9FF85A9A9FF85A8A4A2A20DAD443A204139
18ADF437690385AEADF537690085AFA000B1
AE85A0600000000000A43714000000000000
00000000000000000000004CBF3A8DA33AAD
A33A20E831A90685A3A90085A4A037A2F8AD
A33A20B131ADA33A200339A5A0C980B0034C
F23AA90085A1A90085A060A0008CA53A8CA4
3AADF6378D173BADF7378D183BAD173BCDA4
3AAD183BEDA53A10054C503B0000A91485A3
A03AA2A8ADA33A201C32ADA33A200339A5A0
C980B0034C453BADA33A20E831A90085A1A9
0085A060EEA43AD0BCEEA53A4C063BADA83A
4911D0034C633BA90085A1A90085A060EEF6
37D003EEF737ADA33A20E831A0008CA53AC8
8CA43AAEA43ABDF837AEA43A9D0C38EEA43A
D003EEA53A38ADA43AE90185AEADA53AE900
85AFA6AEBDF837493AF0034C7A3BA0008CA7
3AA9038DA63AAEA63ABDA83AAEA43A9D0C38
EEA43AD003EEA53AEEA63AD003EEA73AA90A
CDA63AA900EDA73A300DAEA63ABDA83A4920
F0034CB33BA92EAEA43A9D0C38EEA43AD003
EEA53AA0008CA73AA90B8DA63AA90DCDA63A
A900EDA73A10034C3D3CAEA63ABDA83A4920
D0034C3D3CAEA63ABDA83AAEA43A9D0C38EE
A43AD003EEA53AEEA63AD003EEA73A4C023C
38ADA43AE9018D0C38A93885A1A90C85A060
0000004C553C204D314F3C02AD513C85A3AC
503CA237A9F8208138A0008CF7378CF637AD
4F3C20BC3AA5A185A1A5A085A06000000000
0000004C8B3C204D31813C02AD813C85AEAD
823C85AFA9008D873CA000B1AE8D863C8C85
3CC88C843CAD863C8DCB3CAD873C8DCC3CAD
CB3CCD843CADCC3CED853CB0054CF83C0000
18AD813C6D843C85AEAD823C6D853C85AFA0
00B1AE4D833CF0034CED3C4CF83CEE843CD0
C8EE853C4CBA3CAD843C85A0600000000000
00004C083D8EFF3C8DFE3CADFE3C85AEADFF
3C85AFA9008D033DA000B1AE8D023DAD023D
0D033DF0034C343DA90085A060A03AAEFF3C
ADFE3C20883CA9008D013DA5A08D003DAD02
3DCD003DAD033DED013D90034C3D3EA0008C
013DC88C003DAD023D8D803DAD033D8D813D
AD803DCD003DAD813DED013DB0054CED3D00
0038AD023DED003D85AEAD033DED013D85AF
18A5AE690485ACA5AF690085AD18ADFE3C65
AC85AEADFF3C65AD85AF38AD023DED003D85
ACAD033DED013D85AD18A5AC690185AAA5AD
690085AB18ADFE3C65AA85ACADFF3C65AB85
ADA000B1AC91AEEE003DD088EE013D4C6F3D
18ADFE3C690185AEADFF3C690085AFA944A0
0091AE18ADFE3C690285AEADFF3C690085AF
18A9306DB43791AE18ADFE3C690385AEADFF
3C690085AFA93A91AE18AD023D69038D023D
AD033D69008D033DADFE3C85AEADFF3C85AF
AD023DA00091AE8C013DC88C003DAD023D8D
723EAD033D8D733EAD723ECD003DAD733EED
013DB0054CC63E000018ADFE3C6D003D85AE
ADFF3C6D013D85AFA000B1AE8D043DAD043D
C961B0034CBB3EA97ACD043DB0034CBB3E18
ADFE3C6D003D85AEADFF3C6D013D85AF38AD
043DE920A00091AEEE003DD0A1EE013D4C61
3EA90185A06000000000004CD33E204D31CB
3E02A0008CCF3EC88CCE3EADCC3E85AEADCD
3E85AF88B1AE8D023FAD023FCDCE3EA900ED
CF3EB0044C313F0018ADCC3E6DCE3E85AEAD
CD3E6DCF3E85AFADCB3EA00051AEF0034C26
3FADCE3E85A060EECE3ED0C7EECF3E4CF23E
A90085A0604C393F4C553F18666F72207468
652041746172692031303330206D6F64656D
A23FA93C20DB31604C603FA90085A1AD0004
85A060004C6E3F8D6A3FAE6A3FA902205432
60004C7E3F8D7A3FA9FF8507A21BA9022054
32AE7A3FA902205432A0008407604C9C3FA9
5A207B3F604CA53FA959207B3FA90220E831
600323233AB03F004CBA3FA90220E83118AD
B43F690185AEADB53F690085AFA954A00091
AE18ADB43F690285AEADB53F690085AFA931
91AEA90C8DB63FADB63F85A3A90085A4ACB5
3FAEB43FA90220B131A902200339A5A08DB6
3FADB63FC980B0034C54404C31401943616E
2774206F70656E2025532C206572726F7220
25422545ADB53F85A3A90085A5ADB63F85A4
ACB43FA240A91720DF33A90220E831ADB63F
85A060A90085A0604C5C40A959207B3FA941
207B3FA920206B3FA93F206B3FA943207B3F
ADC037206B3F60000000000000004C864020
4D317C4004AD7C4085AEAD7D4085AF38A000
B1AEED7E4085AC18A5AC690185AEAD7F4085
ACAD804085ADA5AED1AC90034CBF40A90085
A060A0008C8240C88C8140AD7F4085AEAD80
4085AF88B1AE8DE840ADE840CD8140A900ED
824010044C41410018AD7E406D814085AEA9
006D824085AF38A5AEE90185ACA5AFE90085
AD18AD7C4065AC85AEAD7D4065AD85AF18AD
7F406D814085ACAD80406D824085ADA000B1
AE51ACD0034C3641A90085A060EE8140D09D
EE82404CD840A90185A06000000000004C4E
418E47418D4641AD464185AEAD474185AFA0
00B1AE8D4941C88C4A41AD49418D7A41AD7A
41CD4A41B0044CC5410018AD46416D4A4185
AEAD4741690085AFA000B1AE4923F0034CBF
41EE4A41AD4941CD4A41901B18AD46416D4A
4185AEAD4741690085AFA920A000D1AE9003
4C96414CC541EE4A414C6F41AD4941CD4A41
90034CFE414CF2411E4E6F2070686F6E6520
6E756D62657220696E207468697320656E74
727921A241A9D320DB31A90085A0604C2242
204469616C696E672E2E2E70726573732061
6E79206B657920746F2061626F7274A242A9
0120DB31A0008CC437205940ADB037F0034C
4142A94E207B3F4C4642A94F207B3FA94B20
7B3FAD4A418D4841AD49418D6242AD6242CD
4841B0044C84420018AD46416D484185AEAD
4741690085AFA000B1AE85A0A5A0206B3FEE
48414C5742A99B206B3FADFC0249FFF0034C
AE42A90220473AADEB02298085AEA5AED003
4CAB42A90185A0604C89424CBC420A557365
722061626F7274A242A9B120DB31A94D207B
3F20993FA90085A0604CD342205940A94D20
7B3F20993F602C015802B00408076009C012
8025DF420000000000004CF842204D31EF42
03A0008CF4428CF34238ADF142E9018D2843
ADF242E9008D2943AD2843CDF342AD2943ED
F44210054C56430000A91B20513218ADEF42
6DF34285AEADF0426DF44285AFA000B1AE85
A0A5A0205132EEF342D0C7EEF4424C174360
0000004C5D43204D31574302ADC8374901F0
034CA5434C7B430A4552524F522025422545
A90085A3AC5943A243A97020DF33AD594349
80F0034CA543A90220E831A90320E831A901
20E831203F30AD59438DC4376000A4370600
00004CB6438DAC43ADAC430A08186DED4285
AEA9002A286DEE4285AFA001B1AE85A188B1
AE85A0A94385A3A0ADA6A1A5A020F532A943
85A1A9AD85A060004CF2438DEE43ADEE43F0
034C10444C0444036F6666A94485A1A90085
A0604C1F444C1644026F6EA94485A1A91385
A060004C23448D1F44AD1F44C961B0034C37
44A97ACD1F44B014AD1F44C941B0034C5344
A95ACD1F44B0034C5344A90185A0604C5844
A90085A060004C5C448D5844AD5844C961B0
034C7F44A97ACD5844B0034C7F4438AD5844
E92085A0604C8544AD584485A06000000000
0000000000000000A4376400000000000000
000000000000000000000000000000000000
000000000000000000000000000000000000
000000000000000000000000000000000000
000000000000000000000000000000000000
000000000000000000000000000000000000
4CF844204D31854406ADC8374901F0034C6D
454C1C4510535061636B282725432C25442C
25442CA90085A3AD874485A5AD864485A4AD
894485A7AD884485A6AC8544A245A90B20DF
33A922205132AD894485A3AC8844AE8B44AD
8A4420F5424C5D45052543292545A90085A3
A022A245A95720DF334C7245A92E205132A0
008C8D44C88C8C44ADE4378D9845ADE5378D
9945AD9845CD8C44AD9945ED8D4410054CAD
450000AED037A902205432EE8C44D0E0EE8D
444C8745A9018D914418A9206D884485AEA9
006D894485AF18A5AE69038D924418A9206D
86448D9344AD85448D944418AD92446D9344
85AE18A5AE6D94448D9044A0008C8D448C8C
4438AD8844E9018D1446AD8944E9008D1546
AD1446CD8C44AD1546ED8D4410054C644600
0018AD8C44690485AEAD8D44690085AF18AD
8A446D8C4485ACAD8B446D8D4485ADA000B1
ACA6AE9D914418AD8A446D8C4485AEAD8B44
6D8D4485AF18AD904471AE8D9044EE8C44D0
A5EE8D444C0346AD904429C085AEA5AE4A4A
4A4A4A4A85AC18AD904465AC85AEA5AE293F
8D904418AD8844690485AEAD8944690085AF
18A9206D9044A6AE9D914418AD8844690585
AEAD8944690085AFADD437A6AE9D9144A944
85A318AD8844690685A4AD8944690085A5A9
FF85A7A9FF85A6A9FF85A9A9FF85A8A091A2
0BA902204139600000004CE8468EE3468DE2
4618A51369038DE446205D3FA5A005A1F003
4C4447A5134DE446F0034C3247ADC8374901
F0034C2A474C2347092854696D656F757429
A247A91920DB31A90085A0604C4147ADFC02
49FFD0034C4147A90085A0604CF646ADE246
85AEADE34685AFA5AF48A5AE48A902203032
6885AE6885AFA5A0A00091AEA90185A06000
000000000000000000000000004C7B47204D
316A4705ADC8374901F0034C9B474C944705
525061636BA247A98E20EE31A247A97520E5
46A5A0F0034CB247A90085A1A90085A060AD
C8374901F0034CD147AD75474901D0034CD1
47A91B205132AD7547205132AD75474901F0
034C9B47A0008C73478C7247AD72470D7347
F0034CD449A247A97520E546A5A0F0034C05
48A90085A1A90085A060ADF0370DF137F003
4C1848AD7547297F8D7547AD75474901D003
4CD149AD75478D7447AD6A4785AEAD6B4785
AF38AD7547E90385AC38A5ACE92085AAA900
A00191AEA5AA8891AEA247A97520E546A5A0
F0034C6348A90085A1A90085A060ADF0370D
F137F0034C7648AD7547297F8D7547AD7547
4901D0034CD14918AD74476D75478D7447AD
6C4785AEAD6D4785AF38AD7547E92085ACA9
00A00191AEA5AC8891AEA247A97520E546A5
A0F0034CBE48A90085A1A90085A060ADF037
0DF137F0034CD148AD7547297F8D7547AD75
474901D0034CD14918AD74476D75478D7447
AD75478D7747A0008C71478C7047AD6A4785
AEAD6B4785AF38B1AEE9018D1E49C8B1AEE9
008D1F49AD1E49CD7047AD1F49ED71471005
4C84490000A247A97520E546A5A0F0034C37
49A90085A1A90085A060ADF0370DF137F003
4C4A49AD7547297F8D7547AD75474901F003
4C57494C844918AD74476D75478D744718AD
6E476D704785AEAD6F476D714785AFAD7547
A00091AEEE7047D08FEE71474C0D49AD7547
4901D0034CD149A247A97520E546A5A0F003
4CA549A90085A1A90085A060ADF0374901D0
050DF1374900D0034CBE49AD7547297F8D75
47AD75474901D0034CD149A0008C7347C88C
72474CE347AD744729C085AEA5AE4A4A4A4A
4A4A85AC18AD744765AC85AEA5AE293F8D74
4738AD7547E9208D7647AD74474D7647D003
4C504AADC8374901F0034C474A4C304A1A28
42616420636865636B73756D3A202544203C
3E202544292545A90085A3A90085A5AD7647
85A4AC7447A24AA91520DF33A90085A1A900
85A060ADC8374901F0034CEA4A4C6D4A0F28
27254325432C25442C25442C2543A90085A3
A90085A5AD774785A4AD6C4785AEAD6D4785
AFA001B1AE85A788B1AE85A6AD6A4785ACAD
6B4785ADC8B1AC85A988B1AC85A8A90085AB
A92285AAA01BA24AA95D20DF33AD6A4785AE
AD6B4785AFA001B1AE85A388B1AE85A2A4A2
AE6F47AD6E4720F5424CDD4A052543292545
A90085A3A022A24AA9D720DF33AD77474945
F0034C294B4CFF4A074572726F723A20A24A
A9F720EE31AD6A4785AEAD6B4785AFA001B1
AE85A388B1AE85A2A4A2AE6F47AD6E4720F5
42204F32A90085A1AD774785A06000000000
00004C3C4B8E344B8D334B20993FA0008C36
4B8C354BA903203032A5A08D374BA9032003
39A5A0C980B0034C884BADC8374901F0034C
854B4C7E4B0B456E642D6F662D66696C65A2
4BA97220DB314C004DADF0374901D0050DF1
374900F0034CF04BAD374B297F8D384BAD38
4BC9209012AD384B497FF00BAD384B4DD837
F0034CED4B18AD334B6D354B85AEAD344B6D
364B85AFADD837A00091AEEE354BD003EE36
4BAD384B4DD837D0034CED4BAD374B49408D
374B4CB14CAD374B499BD0034C024CAD374B
297F8D374BAD374BC9209019AD374B497FF0
12AD374B4DD837F00AAD374B499BF0034CB1
4CAD374B499BF0034C7E4C18AD334B6D354B
85AEAD344B6D364B85AFADD837A00091AE18
AD354B690185AEAD364B690085AF18AD334B
65AE85ACAD344B65AF85ADA90D494091AC18
AD354B69028D354BAD364B69008D364BA90A
8D374B18AD334B6D354B85AEAD344B6D364B
85AFADD837A00091AEEE354BD003EE364BAD
374B4DD837D0034CB14CAD374B49408D374B
18AD334B6D354B85AEAD344B6D364B85AFAD
374BA00091AEEE354BD003EE364B38ADE237
E90885AEADE337E90085AFAD354BC5AEAD36
4BE5AF10034CFD4C205940AD364B85A1AD35
4B85A0604C4D4B205940AD354B0D364BF003
4C1A4DA9FF85A1A9FF85A0604C254DAD364B
85A1AD354B85A060000000000000004C2F4D
204D31254D0320993FA0008C2A4D8C294D38
AD274DE9018D624DAD284DE9008D634DAD62
4DCD294DAD634DED2A4D10054C094E000018
AD254D6D294D85AEAD264D6D2A4D85AFA000
B1AE8D2B4DAD2B4D4923F0034CBC4DEE294D
D003EE2A4D18AD254D6D294D85AEAD264D6D
2A4D85AFB1AE8D2B4DAD2B4D297F85AEA5AE
4923D0034CBC4DAD2B4D49408D2B4DADF037
4901D0050DF1374900F0034CD84DAE2B4DA9
032054324CFE4DAD2B4D490DF0034CEC4DA2
9BA9032054324CFE4DAD2B4D490AD0034CFE
4DAE2B4DA903205432EE294DD003EE2A4D4C
514D2059406000004C124E8E0E4E8D0D4EAD
0D4E85AEAD0E4E85AFA97EA00091AE18AD0D
4E690185AEAD0E4E690085AFA92591AE18AD
0D4E690285AEAD0E4E690085AFA92091AE18
AD0D4E690385AEAD0E4E690085AFA9404900
91AE18AD0D4E690485AEAD0E4E690085AFA9
2D91AE18AD0D4E690585AEAD0E4E690085AF
A92391AE6000004C8F4E8E8B4E8D8A4EAD8A
4E85AEAD8B4E85AF38A000B1AEE9208DE237
A9008DE33718AD8A4E690185AEAD8B4E6900
85AF38B1AEE9208DE637A9008DE73718AD8A
4E690285AEAD8B4E690085AF38B1AEE9208D
E437A9008DE53718AD8A4E690385AEAD8B4E
690085AFB1AE49408DD03718AD8A4E690485
AEAD8B4E690085AF38B1AEE9208DD43718AD
8A4E690585AEAD8B4E690085AFB1AE8DD837
6000000000000000004C334F8E294F8D284F
ADC8374901F0034C534F4C4C4F0552496E69
74A24FA94620DB31EEE837D003EEE937A905
CDE837A900EDE93730034C6F4FA94185A060
AD284F85AEAD294F85AFA900A000D1AE9003
4C00508C2F4FC88C2E4FAD284F85AEAD294F
85AF88B1AE8DAB4FADAB4FCD2E4FA900ED2F
4F10044CE04F0038AD2E4FE90185AEAD2F4F
E90085AF18AD284F6D2E4F85ACAD294F6D2F
4F85ADA000B1ACA6AE9D4437EE2E4FD0C1EE
2F4F4C9B4F38AD2E4FE90185A3AD2F4FE900
85A4A93785A6A94485A5A000A200A95220F5
44A94F85A3A93785A5A94485A4A02CA24FA9
2A207847A5A18D2F4FA5A08D2E4FAD2E4F49
53D0050D2F4F4900F0034C9B50A237A94420
8C4EA237A944200F4EA90085A4A90685A3A9
3785A6A94485A5ACDF37AEDE37A95920F544
ADE9378DEB37ADE8378DEA37A0008CE9378C
E83718ADDE37690185AEADDF37690085AFA9
008585A9408584A5AFAAA5AE2045318DDE37
8A8DDF37A94685A0604CB450AD2E4F0D2F4F
F0034CAF50ADCC3785A0604CB450A94185A0
60000000000000004CBE50ADC8374901F003
4CDA504CD350075246696C652545A250A9CB
20DF33EEE837D003EEE937A905CDE837A900
EDE93730034CF650A94185A060A95085A3A9
3785A5A94585A4A0B6A250A9B4207847A5A1
8DB950A5A08DB850ADB4508D4437ADB85049
53D0050DB9504900F0034CC051EEEA37D003
EEEB37A905CDEA37A900EDEB3730034C4851
A94185A060ADDE370DDF37F0034C6151ADB6
50493FD0050DB7504900F02BADDE370DDF37
D0034CB85138ADDE37E90185AEADDF37E900
85AFADB65045AED0050DB75045AFF0034CB8
51A90085A4A90085A3A90085A6A90085A5AC
B750AEB650A95920F544A0008CE9378CE837
ADCC3785A0604CBD51A94185A0604C4953AD
B8504946D0050DB9504900F0034CCF52ADB6
504DDE37D0060DB7504DDF37D0034CE951A9
4185A06020993FA237A94420053DA0008CC4
37A90885A3A90085A4A037A244A90320B131
205940ADC437C980B0034C53524C38521E43
6F756C646E2774206372656174652025533B
206572726F722025442545A93785A3A90085
A5ADC43785A4A044A252A91920DF33A94185
A0604C65520E526563656976696E67202553
2545A93785A3A044A252A95620DF33A90085
A4A90085A3A90085A6A90085A5ACDF37AEDE
37A95920F544ADE9378DEB37ADE8378DEA37
A0008CE9378CE83718ADDE37690185AEADDF
37690085AFA9008585A9408584A5AFAAA5AE
2045318DDE378A8DDF37A94485A0604C4953
ADB8504942D0050DB9504900F0034C3053AD
B6504DDE37D0060DB7504DDF37D0034CF852
A94185A060A90085A4A90085A3A90085A6A9
0085A5ACDF37AEDE37A95920F54418A51469
3C8DBA50ADBA504514D0034C28534C1B53A9
4385A0604C4953ADB8500DB950F0034C4453
ADCC3785A0604C4953A94185A06000000000
00004C5253ADC8374901F0034C6E534C6753
0752446174612545A253A95F20DF33EEE837
D003EEE937A905CDE837A900EDE93730034C
8A53A94185A060A95385A3A93785A5A94485
A4A049A253A94B207847A5A18D4E53A5A08D
4D53AD4D534944D0050D4E534900F0034CCA
54AD49534DDE37D0060D4A534DDF37D0034C
5E54EEEA37D003EEEB37A905CDEA37A900ED
EB3730034CE953A94185A060ADDE370DDF37
F0034C0254AD4953493FD0050D4A534900F0
2BADDE370DDF37D0034C595438ADDE37E901
85AEADDF37E90085AFAD495345AED0050D4A
5345AFF0034C5954A90085A4A90085A3A900
85A6A90085A5AC4A53AE4953A95920F544A0
008CE9378CE837ADCC3785A0604C5E54A941
85A060AD4C5385A3AC4B53A237A944202C4D
A90085A4A90085A3A90085A6A90085A5ACDF
37AEDE37A95920F544ADE9378DEB37ADE837
8DEA37A0008CE9378CE83718ADDE37690185
AEADDF37690085AFA9008585A9408584A5AF
AAA5AE2045318DDE378A8DDF37A94485A060
4C2556AD4D534946D0050D4E534900F0034C
6F55EEEA37D003EEEB37A905CDEA37A900ED
EB3730034CF754A94185A060ADDE370DDF37
F0034C1055AD4953493FD0050D4A534900F0
2BADDE370DDF37D0034C675538ADDE37E901
85AEADDF37E90085AFAD495345AED0050D4A
5345AFF0034C6755A90085A4A90085A3A900
85A6A90085A5AC4A53AE4953A95920F544A0
008CE9378CE837ADCC3785A0604C6C55A941
85A0604C2556AD4D53495AD0050D4E534900
F0034C0C56AD49534DDE37D0060D4A534DDF
37D0034C9855A94185A060ADC8374901F003
4CB8554CB1550B456E642D6F662D46696C65
A255A9A520DB3120993FA90320E831205940
A90085A4A90085A3A90085A6A90085A5ACDF
37AEDE37A95920F54418ADDE37690185AEAD
DF37690085AFA9008585A9408584A5AFAAA5
AE2045318DDE378A8DDF37A94685A0604C25
56AD4D530D4E53F0034C2056ADCC3785A060
4C2556A94185A060A4371400000000000000
000000000000000000000000000000004C42
56205940A97D2051324C6F56215479706520
7468652066696C6520746F20726563656976
652C206F72206A757374A256A94D20DB314C
9D562352455455524E20696620746865206F
7468657220636F6D7075746572206973206E
6F74A256A97920DB314CB7560F696E205365
72766572206D6F64652EA256A9A720DB3120
4F324CD2560D46696C652053706563202D3E
20A256A9C420EE31A91385A3A056A225A900
201C324CFB5611526563656976696E672046
696C65287329A256A9E920DB314C1B571574
79706520616E79206B657920746F2061626F
7274A257A90520DB31A9528DCC37A0008CDF
378CDE378CE9378CE837ADFC0249FFD0034C
5F574C50570D557365722041626F7274696E
67A257A94220DB31A9FF8DFC024CCB57ADCC
374944F0034C7457204F53A5A08DCC374CC8
57ADCC374946F0034C895720BB50A5A08DCC
374CC857ADCC374952F0034CA257A256A925
20304FA5A08DCC374CC857ADCC374941F003
4CC5574CB8570841626F7274696E67A257A9
AF20DB314CCB574CC8574CCB574C35572099
3FA90320E8316000000000004CDC57ADC837
D0034CF6574CEF570753496E69742545A257
A9E720DF33EEE837D003EEE937A905CDE837
A900EDE93730034C1258A94185A060A237A9
44200F4EADC837D0034C3C584C2D58086E20
3D2025442545ADDF3785A3ACDE37A258A924
20DF33205D3FA900C5A0A900E5A190034C54
58A9022030324C3C58A90085A4A90685A3A9
3785A6A94485A5ACDF37AEDE37A95320F544
A95785A3A93685A5A9E685A4A0D4A257A9D6
207847A5A08DD857ADD857494EF0034C9C58
ADCC3785A0604CC359ADD8574959F0034CAD
59ADDE374DD457D0060DDF374DD557D0034C
BF58ADCC3785A060A236A9E6208C4EADD437
F0034CD358A90D8DD437ADD837F0034CE058
A9238DD837A0008CE9378CE83718ADDE3769
0185AEADDF37690085AFA9008585A9408584
A5AFAAA5AE2045318DDE378A8DDF37ADA237
0DA337F0034C1E59A94185A06020993FA000
8CC437A90320E831A90485A3A90085A4ACA3
37AEA237A90320B131205940ADC437C980B0
034C86594C69591A4572726F722025443B20
636F756C646E27742072656164202553A900
85A3ADA33785A5ADA23785A4ACC437A259A9
4E20DF33A94185A0604C96590C53656E6469
6E672025532545ADA33785A3ACA237A259A9
8920DF33A94685A0604CC359ADD857F0034C
BE59ADCC3785A0604CC359A94185A0600000
000000000000A43714000000000000000000
00000000000000004CE259ADC8374901F003
4CFC594CF559055346696C65A259A9EF20DB
31EEE837D003EEE937A905CDE837A900EDE9
3730034C185AA94185A060A0008CCA59C88C
C95918ADA2376DC95985AEADA3376DCA5985
AFA000B1AE493AD0034C485AEEC959D003EE
CA594C215AADA23785AEADA33785AF38A000
B1AEEDC9598DC559A900EDCA598DC6598CC8
598CC75938ADC559E9018D8D5AADC659E900
8D8E5AAD8D5ACDC759AD8E5AEDC85910054C
D15A000018ADC9596DC75985AEADCA596DC8
5985AF18A5AE690185ACA5AF690085AD18AD
A23765AC85AEADA33765AD85AFA000B1AEAE
C7599DCB59EEC759D0B1EEC8594C7C5AADC6
5985A4ADC55985A3A95985A6A9CB85A5ACDF
37AEDE37A94620F544A95985A3A93685A5A9
E685A4A0C3A259A9C5207847A5A18DC859A5
A08DC759ADC759494ED0050DC8594900F011
ADC7594959D0050DC8594900F0034CE05BAD
C759494ED0050DC8594900F0034C675B38AD
C359E9018DC359ADC459E9008DC459ADC359
C900ADC459E90030034C675BA0008CC459A9
3F8DC359ADDE374DC359D0060DDF374DC459
D0034C805BADCC3785A060A0008CE9378CE8
3718ADDE37690185AEADDF37690085AFA900
8585A9408584A5AFAAA5AE2045318DDE378A
8DDF37A237A94420394BA5A18DDD37A5A08D
DC37ADDC3749FFD0050DDD3749FFF0034CD8
5BA95A85A0604CDD5BA94485A0604CF95BAD
C7590DC859F0034CF45BADCC3785A0604CF9
5BA94185A0600000000000004C025CEEE837
D003EEE937A905CDE837A900EDE93730034C
1E5CA94185A060ADDD3785A4ADDC3785A3A9
3785A6A94485A5ACDF37AEDE37A94420F544
A95B85A3A93685A5A9E685A4A0F9A25BA9FB
207847A5A18DFE5BA5A08DFD5BADFD5B494E
D0050DFE5B4900F011ADFD5B4959D0050DFE
5B4900F0034C2A5DADFD5B494ED0050DFE5B
4900F0034CB45C38ADF95BE9018DF95BADFA
5BE9008DFA5BADF95BC900ADFA5BE9003003
4CB45CA0008CFA5BA93F8DF95BADDE374DF9
5BD0060DDF374DFA5BD0034CCD5CADCC3785
A060A0008CE9378CE83718ADDE37690185AE
ADDF37690085AFA9008585A9408584A5AFAA
A5AE2045318DDE378A8DDF37A237A9442039
4BA5A18DDD37A5A08DDC37ADDC3749FFD005
0DDD3749FFF0034C225DA95A85A060A94485
A0604C435DADFD5B0DFE5BF0034C3E5DADCC
3785A0604C435DA94185A060000000000000
4C4C5DADC8374901F0034C675D4C605D0653
454F462545A25DA95920DF33EEE837D003EE
E937A905CDE837A900EDE93730034C835DA9
4185A060A90085A4A90085A3A93785A6A944
85A5ACDF37AEDE37A95A20F544ADC8374901
F0034CB95D4CB25D0653454F463120A25DA9
AB20EE31A95D85A3A93685A5A9E685A4A043
A25DA945207847A5A18D485DA5A08D475DAD
475D494ED0050D485D4900F011AD475D4959
D0050D485D4900F0034CA75FAD475D494ED0
050D485D4900F0034C4B5E38AD435DE9018D
435DAD445DE9008D445DAD435DC900AD445D
E90030034C325EA0008C445DA93F8D435DAD
DE374D435DD0060DDF374D445DD0034C4B5E
ADCC3785A060ADC8374901F0034C665E4C5F
5E0653454F463220A25EA95820DF33ADDE37
4D435DD0060DDF374D445DD0034C7F5EADCC
3785A060A0008CE9378CE83718ADDE376901
85AEADDF37690085AFA9008585A9408584A5
AFAAA5AE2045318DDE378A8DDF37ADC83749
01F0034CD65E4CC75E0C436C6F73696E6720
25532545ADA33785A3ACA237A25EA9BA20DF
3320993FADC8374901F0034C015F4CFA5E13
67657474696E67206E6578742066696C6525
45A25EA9E620DF33A90620BC3AA5A18DA337
A5A08DA237ADA2370DA337F0034C1E5F4C83
5FA90320E831A0008CC437A90485A3A90085
A4ACA337AEA237A90320B131ADC437C98090
034C4B5F4C835F4C805F4C685F1943616E27
7420726561642025533B204572726F722025
442545ADA33785A3A90085A5ADC43785A4AC
A237A25FA94E20DF334C015F205940ADA237
0DA337F0034C965FA94285A060AEA337ADA2
3720DB31A94685A0604CC05FAD475D0D485D
F0034CBB5FADCC3785A0604CC05FA94185A0
600000000000004CC95FADC8374901F0034C
E65F4CDF5F0853427265616B2545A25FA9D6
20DF33EEE837D003EEE937A905CDE837A900
EDE93730034C0260A94185A060A90085A4A9
0085A3A93785A6A94485A5ACDF37AEDE37A9
4220F544A95F85A3A93685A5A9E685A4A0C0
A25FA9C2207847A5A18DC55FA5A08DC45FAD
C45F494ED0050DC55F4900F011ADC45F4959
D0050DC55F4900F0034CFE60ADC45F494ED0
050DC55F4900F0034CAF6038ADC05FE9018D
C05FADC15FE9008DC15FADC05FC900ADC15F
E90030034C9660A0008CC15FA93F8DC05FAD
DE374DC05FD0060DDF374DC15FD0034CAF60
ADCC3785A060ADDE374DC05FD0060DDF374D
C15FD0034CC860ADCC3785A060A0008CE937
8CE83718ADDE37690185AEADDF37690085AF
A9008585A9408584A5AFAAA5AE2045318DDE
378A8DDF37A94385A0604C1761ADC45F0DC5
5FF0034C1261ADCC3785A0604C1761A94185
A060A4371400000000000000000000000000
000000004C2E614C3F610D46696C65207370
6563202D3E20A261A93120EE31A91385A3A0
61A217A900201C32AD1761F0034C5C6160A2
61A91720053DA061A217A90620523CA5A18D
A337A5A08DA237ADA2370DA337F0034C9D61
4C966111496E76616C69642066696C65206E
616D65A261A98420DB31ADA2370DA337D003
4C2E61A97D2051324CBD610C53656E64696E
672025532545A96185A3A017A261A9B020DF
334CE461165479706520616E79206B657920
746F2061626F72742EA261A9CD20DB312059
40A9538DCC37A0008CDF378CDE378CE9378C
E837ADFC0249FFD0034C28624C19620A5573
65722041626F7274A262A90E20DB31A9FF8D
FC024CBA62ADCC374944F0034C3D6220FF5B
A5A08DCC374CB762ADCC374946F0034C5262
20DF59A5A08DCC374CB762ADCC37495AF003
4C676220495DA5A08DCC374CB762ADCC3749
53F0034C7C6220D957A5A08DCC374CB762AD
CC374942F0034C916220C65FA5A08DCC374C
B762ADCC374941F0034CB4624CA762084162
6F7274696E67A262A99E20DB314CBA624CB7
624CBA624C016220993FA90320E831600000
000000004CCC62ADC8374901F0034CE7624C
E0620646696E697368A262A9D920DB312059
40A0008CE9378CE837A903CDE837A900EDE9
3710034CCC63A9468D4437A90085A4A90185
A3A93785A6A94485A5A000A200A94720F544
A96285A3A93685A5A9E685A4A0C3A262A9C5
207847A5A18DC862A5A08DC762ADC762494E
D0050DC8624900F011ADC7624959D0050DC8
624900F0034CC163ADC762494ED0050DC862
4900F0034CAC6338ADC362E9018DC362ADC4
62E9008DC462ADC362C900ADC462E9003003
4C9863A0008CC462A93F8DC362A9004DC362
D00509004DC462D0034CAC634CCC63A9004D
C362D00509004DC462F0034CC16320993F60
EEE837D003EEE9374CF26220993F4CE86315
536572766572206469646E27742072657370
6F6E64A263A9D220DB3160E37F3000F06318
000000000000000000000000000000000000
000000000000000000000000000000000000
00000000004C2364A9008585A9558584AD0F
64A20020C23085AE8A85AF18A5AE6D116485
ACA5AF6D126485AD18A5AC69488D1964A5AD
69008D1A6438A901ED0F648D0F64AD1A648D
1F64AD19648D1E64A0008C1B64A902CD1B64
B0034C966418AD19646D1B6485AEAD1A6469
0085AFA970A00091AEEE1B644C7064A0008C
1B64A917CD1B64B0034C436518AD19646903
8D1964AD1A6469008D1A64AD196485AEAD1A
6485AFA942A00091AEA9008D1D64AE1B64BD
F4638D1C64AD1C640A08186DF06385AEAD1D
642A286DF16385AF18B1AE6D0E6485ACC8B1
AE690085AD38A5ACE5528D1C64A5ADE9008D
1D6418AD1964690185AEAD1A64690085AFAD
1C648891AE18AD1964690285AEAD1A646900
85AFA9088584AD1D64AAAD1C64205830A000
91AEEE1B644C9B6418AD1964690385AEAD1A
64690085AFA900A00091AE18AD1964690485
AEAD1A64690085AFA94291AE18AD19646905
85AEAD1A64690085AFAD156491AE18AD1964
690685AEAD1A64690085AFA9088584AD1664
AAAD1564205830A00091AE18AD1964690785
AEAD1A64690085AFA94191AE18AD19646908
85AEAD1A64690085AFAD1E6491AE18AD1964
690985AEAD1A64690085AFA9088584AD1F64
AAAD1E64205830A00091AEAD1F648D3102AD
1E648D3002600000004CFB65AE0D64BDF463
8DF765ADF7650A08186DF06385AEA9002A28
6DF16385AF18A000B1AE6D0C648DF565C8B1
AE69008DF665ADF56585AEADF66585AF88B1
AE498091AE60000000004C44668D3D66AE3D
66BDF4638D3E66AD3E660A08186DF06385AE
A9002A286DF16385AF38A000B1AEE9028D3F
66C8B1AEE9008D4066888C3E66A951CD3E66
B0034CA06618AD3F666D3E6685AEAD406669
0085AFA900A00091AEEE3E664C7A66600000
00004CA866ADA5378DA466ADA4378DA366A0
008CA2668CA166A917CDA166A900EDA266B0
034C8067A90C8584ADA466AAADA366205830
85AE8A85AF18ADA366695185ACADA4666900
85ADA90C8584A5ADAAA5AC20583085AA8A85
ABA5AE45AAD00405AF45ABD0034C2A67ADA3
66290085AEADA46629F085AF18A5AE69008D
A366A5AF69108DA466ADA1660A08186DF063
85AEADA2662A286DF16385AF18ADA3666902
85ACADA4666900A00191AEA5AC8891AE18AD
A36669528DA366ADA46669008DA466ADA166
AEA1669DF463ADA166204166EEA166D003EE
A2664CBC66AD31028D1264AD30028D116418
AD300269208D1564AD310269008D1664A97D
2051324CC967234F5054494F4E2071756974
732C20285348494654292B53544152542073
63726F6C6C73A267A9A520DB31A0008C0F64
A94E8D10648C0C648C0D648C0E6420F86520
206460000000000040002060EF674CF8678D
EA6720F865ADEA67C92090034C2F69ADEA67
491BF0034C1A68A94585A0604C2C69ADEA67
490AF0034C7368AD0D64C91790034C3468EE
0D644C7068A900204166ADF4638DEC67A000
8CEB67A916CDEB67B0034C676818ADEB6769
0185AEA6AEBDF463AEEB679DF463EEEB674C
4468ADEC678D0B642020644C2C69ADEA6749
0DF0034C8568A0008C0C644C2C69ADEA6749
07F0034CB968A00EA200A904201A3518A514
69028DEB67ADEB674514D0034CAD684CA068
A000A200A904201A354C2C69ADEA674908F0
034CD968A900CD0C6490034CD66838AD0C64
E9018D0C644C2C69ADEA674909F0034CFF68
AD0C64C94890034CFC6818AD0C64690885AE
A5AE29F88D0C644C2C69ADEA67490CF0034C
2C69A0008CEB67A917CDEB67B0034C2469AD
EB67204166EEEB674C0E69A0008C0C648C0D
644CA369AE0D64BDF4638DEB67ADEB670A08
186DF06385AEA9002A286DF16385AF18A000
B1AE6D0C648DED67C8B1AE69008DEE67ADED
6785AEADEE6785AFADEA67296085ACA5AC4A
4A4A4A4A85AA18ADF36765AA85ACADF46769
0085ADADEA67299F85AA88B1AC05AA91AEAD
0C64C94F90034CA369EE0C6420F865A94E85
A06000000000004CB3698DAB69ADAB694941
F0034CD669A900CD0D6490034CD36938AD0D
64E9018D0D644C696BADAB694942F0034CF0
69AD0D64C91790034CED69EE0D644C696BAD
AB694943F0034C0A6AAD0C64C94F90034C07
6AEE0C644C696BADAB694944F0034C2A6AA9
00CD0C6490034C276A38AD0C64E9018D0C64
4C696BADAB694948F0034C3F6AA0008C0C64
8C0D644C696BADAB694949F0034CA56AA900
CD0D6490034C5F6A38AD0D64E9018D0D644C
A26AA917204166AD0B648DAC69A0008CAD69
A916CDAD69B0034C996A38A917EDAD6985AE
38A916EDAD6985ACA6ACBDF463A6AE9DF463
EEAD694C6F6AADAC698DF4632020644C696B
ADAB69494AF00AADAB69494BF0034C386BAE
0D64BDF4638DAD69ADAD690A08186DF06385
AEA9002A286DF16385AFA001B1AE8DAF6988
B1AE8DAE69AD0C648DAD69A94FCDAD69B003
4C0C6B18ADAE696DAD6985AEADAF69690085
AFA900A00091AEEEAD694CE66AADAB69494A
F0034C356B18AD0D6469018DAD69A917CDAD
69B0034C356BADAD69204166EEAD694C1F6B
4C696BADAB694959F0034C4A6BA95285A060
4C696BADAB69495AF0034C696BA21BA90220
5432A22FA902205432A25AA90220543220F8
65A94E85A060004C756B8D716BAD1064494E
F0034C906BAD716B20F567A5A08D10644C22
6CAD10644945F0034CA86BAD716B20B069A5
A08D10644C226CAD10644952F0034CE16BAD
716BC92090034CC16BA9208D716B38AD716B
E9208D0D64A917CD0D6490034CD96BA9178D
0D64A9438D10644C226CAD10644943F0034C
1D6CAD716BC92090034CFA6BA9208D716B38
AD716BE9208D0C64A94FCD0C6490034C126C
A94F8D0C6420F865A94E8D10644C226CA94E
8D1064604C266CAD12648D3102AD11648D30
02A97D2051326000000000004C406C205940
20A56638A514E9018D396CADFC0249FFD003
4CAE6CA901203032A5A08D386CAD386C499B
F0034C746CA90D8D386C4C966CAD386C497F
F0034C866CA9098D386C4C966CAD386C497E
F0034C966CADA8378D386CAE386CA9022054
32ADBC374901F0034CAE6CAD386C20726B20
5D3FA900C5A0A900E5A190034CD06CA90220
3032A5A0297F8D386CAD386C20726BA9088D
1FD0AD1FD0290485AEA5AEF0034CE96C4C44
6D4C416DAD1FD0290185AEA5AEF0034C416D
A5144D396CD0034C416DAD0FD2290885AEA5
AEF0034C256DA900CD0E6490034C226D38AD
0E64E9018D0E644C396D18A928655285AEAD
0E64C5AE90034C396DEE0E64202064A5148D
396C4C4E6C20236C20993F600C443A4B4552
4D49542E504E534B6D0C443A4B45524D4954
2E4F50545A6D00004C6E6DA90320E831A000
8CC437A90485A3A90085A4AC596DAE586DA9
0320B131ADC437C98090034CF06DA0008C69
6DA913CD696DB0034CED6DA0008CC437A900
8585A9268584AD696DA20020C23085AE8A85
AF18ADA43765AE85A1ADA53765AF85A2A925
85A3A4A2A6A1A903201C32ADC437C980B003
4CE76D4CED6DEE696D4C9A6D4CF56DA0008C
696DA90320E831AD696D8D6A6DA913CD6A6D
B0034C3A6EA9008585AD6A6D8584A926A200
20C23085AE8A85AF18ADA43765AE85ACADA5
3765AF85ADA900A00091ACEE6A6D4C006E60
004C3F6EA0018CF002A97D2051324C716E24
436F6D7075746572204E616D652028626175
642072617465292023203535352D31323132
A26EA94C20DB31A0008C3B6EA913CD3B6EB0
034CBD6EA920205132A9008585AD3B6E8584
A926A20020C23085AE8A85AF18ADA43765AE
85A0ADA53765AF85A1A6A1A5A020DB31EE3B
6E4C7D6E4CE16E20557365206172726F7773
2C207468656E2052455455524E20746F2064
69616C2CA26EA9C020DB314C046F186F7220
45534320746F20717569742E205E53205361
766573A26EA9EB20DB314C2A6F1B53504143
45206D6F6469666965732C205E5220526573
746F726573A26FA90E20EE31A000A200A552
20D634A91F205132A0008CF002A91E205132
600000000000004C536F206B6D203C6EA000
8C4D6FA0018CF00218AD4D6F690185A2A4A2
A200A55220D634A91B205132A91F205132A9
01203032A5A08D4C6FAD4C6F4920F0034CE4
6F18AD4D6F690185A2A4A2A200A55220D634
A0008CF002A93F205132A9008585A9268584
AD4D6FA20020C23085AE8A85AF18ADA43765
AE85A1ADA53765AF85A2A92585A3A4A2A6A1
A900201C32203C6E4C2171AD4C6F491BF003
4C1F70A017A200A55220D634A0008CF002A9
9C2051324C10700B4E6F74204469616C696E
67A270A90420DB31A90085A0604C2171AD4C
6F491CF00AAD4C6F492DF0034C4B70A900CD
4D6F90034C4B70A97E20513238AD4D6FE901
8D4D6F4C2171AD4C6F491DF00AAD4C6F493D
F0034C7170AD4D6FC91390034C7170A97E20
5132EE4D6F4C2171AD4C6F4913F0034CFC70
A90885A3A90085A4AC596DAE586DA90320B1
31A0008C4A6FA913CD4A6FB0034CE970A900
8585A9268584AD4A6FA20020C23085AE8A85
AF18ADA43765AE8D4E6FADA53765AF8D4F6F
AD4E6F85AEAD4F6F85AFA900A000D1AE9003
4CE370AC4F6FAE4E6FA90320E231EE4A6F4C
9370A90320E831206B6D203C6EA0008C4D6F
4C2171AD4C6F4912F0034C1471206B6D203C
6EA0008C4D6F4C2171AD4C6F499BF0034C21
714C24714C5E6FA0008CF002A97D205132A9
008585A9268584AD4D6FA20020C23085AE8A
85AF18ADA43765AE8D4E6FADA53765AF8D4F
6FAE4F6FAD4E6F20DB31AE4F6FAD4E6F204B
41A5A08D4C6FAD4C6F85A060000000002123
24FE7471F063150000000000000000000000
0000000000000000004C9571204D31717102
AD727185AEAD737185AFA000B1AEF0034CB9
71AD71714941D0034CB97160AD71714941F0
034C7172AD727185AEAD737185AFA000B1AE
F0034C08724CE0710644233A2A2E2AA97185
A3A0D9AE7371AD727120813818AD72716902
85AEAD7371690085AF18A9306DB437A00091
AEAE7371AD727120053DA90620E831A0008C
C437A90685A3A90085A4AC7371AE7271A906
20B131A91485A3A071A27BA906201C32ADC4
37C980B0034C48724C6972A271A97B20DB31
AD7C71C930B0034C6672A939CD7C71B0034C
66724C69724C2E72A90620E8314C7C73AE73
71AD727120053D4C82720444464749A072A2
7DAD717120D03EA5A08D9071AD9071F0034C
9A7260AD71714949F0034C19734CBF721754
7970652027592720746F20666F726D617420
25532545AD737185A3AC7271A272A9A720DF
33A901203032A5A08D9171AD9171205944A5
A04959D0034CFF724CF4720941626F727465
642545A272A9EA20DF33604C19734C12730F
466F726D617474696E672E202E202EA273A9
0220EE31A0008CC43718AD79716D907185AE
AD7A71690085AFB1AE85A2A90085A3A90085
A4AD737185A6AD727185A5A4A2A200A90620
6132ADC437C980B0034C7C734C6E73134469
736B20492F4F206572726F722025422545A9
0085A3ACC437A273A95A20DF336000F06315
000000000000000000000000000000000000
4C9673A97D2051324CA9730A4D6963726F2D
444F533AA273A99E20DB314CC77313204120
2D204469736B204469726563746F7279A273
A9B320DB314CE273102044202D2044656C65
74652046696C65A273A9D120DB314CFB730E
2046202D204C6F636B2046696C65A273A9EC
20DB314C1674102047202D20556E6C6F636B
2046696C65A274A90520DB314C3574142049
202D20466F726D6174204469736B65747465
A274A92020DB314C5D741D2051202D205175
697420286261636B20746F206D61696E206D
656E7529A274A93F20DB314C75740D254543
6F6D6D616E64202D3E20A274A96720DF33A9
01203032A5A08D7D73AD7D73205944A5A08D
7D734C9B7406414446474951A074A294AD7D
7320D03EA900C5A090034C7C74AD7D732051
32AD7D734951F0034CC274204F32604CD574
0F254546696C652073706563202D3E20A274
A9C520DF33A91485A3A073A27EA900201C32
A073A27EAD7D732092714C9B734CF974A000
8CC437A90885A3A90085A4AC686DAE676DA9
0320B131ADC437C98090034C6A75AEA837A9
03205432AEAC37A903205432AEB437A90320
5432AEC837A903205432AEF037A903205432
AEBC37A903205432A652A903205432AEC037
A903205432AEB837A903205432AEB037A903
205432A90320E8316000004C7575A90320E8
31A0008CC437A90485A3A90085A4AC686DAE
676DA90320B131ADC437C980B0034C01764C
BC751C436F756C646E2774206F70656E2025
533B206572726F722025442545AD686D85A3
A90085A5ADC43785A4AC676DA275A99F20DF
33A97F8DA837A0008CAC37C88CB437888CC8
378CF1378CF0378CBC37A90285528CC037C8
8CB837888CB0374C6976A903203032A5A08D
A837A903203032A5A08DAC37A903203032A5
A08DB437A903203032A5A08DC837A9032030
32A9008DF137A5A08DF037A903203032A5A0
8DBC37A903203032A5A08552A903203032A5
A08DC037A903203032A5A08DB837A9032030
32A5A08DB037A90320E831600000004C7576
A97D2051324C8D760F506172616D65746572
73206172653AA276A97D20DB31ADA8374908
F0034CB8764CAB7609636F6E74726F6C2D48
A9768D7176A9A18D70764CCD764CC3760772
7562206F7574A9768D7176A9BB8D70764CE9
76182041202D204261636B20532073656E64
7320282553292545AD717685A3AC7076A276
A9D020DF33ADAC3720B343A5A18D7176A5A0
8D70764C2177152042202D20426175642072
61746520282553292545AD717685A3AC7076
A277A90B20DF33ADF0370DF137F0034C5077
4C43770474657874A9778D7176A93E8D7076
4C64774C5A770662696E617279A9778D7176
A9538D70764C8877202044202D2044656661
756C74206469736B20647269766520284425
443A292545A90085A3ACB437A277A96720DF
334CAF77152046202D2046696C6520747970
6520282553292545AD717685A3AC7076A277
A99920DF334CD677142049202D20492F4F20
506F727420282544292545A90085A3ACB837
A277A9C120DF33ADB037F0034C02784CF577
0570756C7365A9778D7176A9EF8D70764C14
784C0A7804746F6E65A9788D7176A9058D70
764C32781A2054202D204469616C696E6720
6D6574686F6420282553292545AD717685A3
AC7076A278A91720DF33ADBC3720EF43A5A1
8D7176A5A08D70764C6B7816204C202D204C
6F63616C2D4563686F20282553292545AD71
7685A3AC7076A278A95420DF334C90781220
4D202D204D617267696E20282544292545A9
0085A3A452A278A97D20DF33ADC037F0034C
BA784CAD78046E6F6E65A9788D7176A9A88D
70764C1179ADC0374901F0034CD8784CCB78
036F6464A9788D7176A9C78D70764C1179AD
C0374902F0034CF7784CEA78046576656EA9
788D7176A9E58D70764C1179ADC0374903F0
034C11794C0779026F6EA9798D7176A9048D
70764C2779122050202D2050617269747920
282553292545AD717685A3AC7076A279A914
20DF334C4E79145E53202D20536176652070
6172616D6574657273A279A93920DB314C6F
79165E52202D20526573746F726520706172
616D74657273A279A95820DB31ADC83720EF
43A5A18D7176A5A08D70764CA07916202A20
2D204465627567204D6F6465202825532925
45AD717685A3AC7076A279A98920DF334CD1
791E2051202D205175697420286261636B20
746F20436F6D6D616E6473292545A279A9B2
20DF334CF37917506172616D657465722074
6F206368616E6765202D3E20A279A9DB20DF
33A901203032A5A08D6F76AD6F76205944A5
A08D6F76AD6F76202044A5A0D0034C227AAD
6F76205132AD6F764941F0034C467AADA837
4908F0034C3E7AA97F8DA8374C437AA9088D
A8374CB87BAD6F764942F0034C657AEEAC37
A906CDAC3790034C627AA0008CAC374CB87B
AD6F764944F0034C847AEEB437A904CDB437
90034C817AA0018CB4374CB87BAD6F76492A
F0034C9A7A38A901EDC8378DC8374CB87BAD
6F764951F0034CB87A4CAD7A057569742545
A27AA9A720DF33604CB87BAD6F764946F003
4CD67A38A901EDF0378DF037A900EDF1378D
F1374CB87BAD6F76494CF0034CF57AEEBC37
A901CDBC3790034CF27AA0008CBC374CB87B
AD6F764954F0034C147BEEB037A901CDB037
90034C117BA0008CB0374CB87BAD6F76494D
F0034C307BE652A902C55290034C2D7BA000
84524CB87BAD6F764950F0034C4F7BEEC037
A903CDC03790034C4C7BA0008CC0374CB87B
AD6F764949F0034C6E7BEEB837A904CDB837
90034C6B7BA0018CB8374CB87BAD6F764913
F0034C8F7B4C827B06536176696E67A27BA9
7B20DB3120F6744CB87BAD6F764912F0034C
B37B4CA67B09526573746F72696E67A27BA9
9C20DB312072754CB87BA9FD2051324C7576
0000004CC17BA0008C00D5AD5C438D3430AD
5B438D3330A90D8DD437A9238DD8378CE537
8CE4378CD0378CF3378CF237C88CBD7BA907
CDBD7BB0034C057CADBD7B20E831EEBD7B4C
EF7B4C2B7C224B65726D697420666F722074
686520417461726920486F6D6520436F6D70
75746572A27CA90820DB314C587C2276312E
32202863292031393834204A6F686E20486F
776172642050616C6576696368A27CA93520
DB3120363F4C887C222D204665656C206672
656520746F20636F70792074686973207072
6F6772616D202DA27CA96520DB312072754C
987C024B3AA90485A3A90085A4A07CA295A9
0120B13120B73FA5A0D0034CED7C4CCC7C15
505245535320414E59204B455920544F2045
584954A27CA9B620DB31A9FF8DFC02ADFC02
49FFF0034CE57C4CD87CA9FF8DFC024CDC7F
20993F4C077D1325452545436F6D6D616E64
73206172653A2545A27CA9F320DF334C2F7D
1D2041202D204175746F2D6469616C202874
68656E20636F6E6E65637429A27DA91120DB
314C5B7D212043202D20436F6E6E65637420
28746F2072656D6F746520636F6D70757465
7229A27DA93920DB314C747D0E2044202D20
4D6963726F2D444F53A27DA96520DB314C9F
7D202046202D2046696E697368202872656D
6F746520736572766572206D6F646529A27D
A97E20DB314CC27D182048202D2048616E67
20757020287468652070686F6E6529A27DA9
A920DB314CF17D242050202D20506172616D
65746572732028696E737065637420616E64
206368616E676529A27DA9CC20DB314C117E
152052202D20526563656976652028612066
696C6529A27DA9FB20DB314C2E7E12205320
2D2053656E642028612066696C6529A27EA9
1B20DB314C547E1B2051202D205175697420
286261636B20746F20444F532925452545A2
7EA93820DF334C6A7E0B436F6D6D616E6420
2D3E20A27EA95E20DF33A901203032A5A08D
BB7BADBB7B205944A5A08DBB7B4C937E0941
4344464850525351A07EA289ADBB7B20D03E
A5A0D0034C717EADBB7B205132ADBB7B4941
F0034CD97E4CC07E0875746F2D6469616CA2
7EA9B720DB3120506FA5A04901F0034CD67E
203D6C4CD67FADBB7B4943F0034CFA7E4CED
7E066F6E6E656374A27EA9E620DB31203D6C
4CD67FADBB7B4946F0034C1A7F4C0D7F0569
6E697368A27FA90720DB3120C9624CD67FAD
BB7B4948F0034C3B7F4C2E7F06616E672075
70A27FA92720DB3120D0424CD67FADBB7B49
44F0034C587F4C4B7F026F73A27FA94820DB
312093734CD67FADBB7B4951F0034C767F4C
697F03756974A27FA96520DB314CD97F4CD6
7FADBB7B4950F0034C9A7F4C8D7F09617261
6D6574657273A27FA98320DB312072764CD6
7FADBB7B4953F0034CB87F4CAB7F03656E64
A27FA9A720DB31202B614CD67FADBB7B4952
F0034CD67F4CCC7F06656369657665A27FA9
C520DB31203F564CF07C20A23FA90120E831
6060E202E302BE7B
.STOP.2415770


;----- CUT HERE -----END OF HEX LISTING

langdon@lll-lcc.UUCP (Bruce Langdon) (09/22/86)

In article <5367@decwrl.DEC.COM>, curzon@kaoa01.dec.com writes:
> 
> 
> PS. does anyone have Action! source code for XMODEM send and receive??
> 
Here is what I used to transfer files between my 800 and another computer.
I intended to get it integrated into Palevich's Kermit or Clint Parker's
ACSTERM terminal program, but didn't. But it moved a lot of kilobytes.
----------------------------------------------------------------------
	Bruce Langdon  L-472                langdon@lll-lcc.ARPA
	Physics Department                  "langdon#bruce%d@lll-mfe.ARPA"
	Lawrence Livermore National Laboratory       
	Livermore, CA 94550                 (415) 422-5444
UUCP: ..{ihnp4,qantel,ucdavis,pyramid,styx}!lll-lcc!langdon
                  ..{gymble,seismo}!lll-crg!lll-lcc!langdon
----------------------------------------------------------------------
MODULE ; XMODEM file transfer
;  2/18/86
    
; check out disk I/O, text and binary
;   what is convention for last byte when length is multiple of 256
; figure out monitoring of keyboard etc. before/during xfer.
; sort out declarations
;   decide on globals
;     compile must be case sensitive if use LF here (ACSTERM has lf)
;SET $4CA=$FF; --will this provoke symbol overflow?

PROC PBlock(BYTE ARRAY block, CARD size)
  CARD j
  BYTE DSPFLG=$2FE
  DSPFLG=1 ;write control char to screen (except EOL)
  FOR j=0 TO size-1 DO
    Put(block(j)) ;   block(j)=0
  OD
  DSPFLG=0
  PutE()
RETURN

MODULE; BLKIO------------------------------
; Copyright (c) 1983, 1984, 1985 by Action Computer Services (ACS)

BYTE CIO_status

CHAR FUNC CIO=*(BYTE dev, CARD addr,
          size, BYTE cmd, aux1, aux2)
[$29$F$85$A0$86$A1$A$A$A$A$AA$A5$A5
$9D$342$A5$A3$9D$348$A5$A4$9D$349
$A5$A6$F0$8$9D$34A$A5$A7$9D$34B$98
$9D$345$A5$A1$9D$344$20$E456
$8C CIO_status$C0$88$D0$6$98$A4$A0
$99 EOF$A085$60]

CARD FUNC ReadBlock=*(BYTE dev, CARD addr, size)
[$48$A9$7$85$A5$A9$0$85$A6$A5$A3$5$A4
$D0$6$85$A0$85$A1$68$60$68$20 CIO
$BD$348$85$A0$BD$349$85$A1$60]

PROC WriteBlock=*(BYTE dev, CARD addr, size)
; Writes size bytes from addr to dev.
; Status is saved in CIO_status.
[$48$A9$B$85$A5$A9$0$85$A6$A5$A3$5$A4
$D0$2$68$60$68$4C CIO]

MODULE ; part of BLOCKIO

; These will be from ACSTERM:
DEFINE modem = "5"
DEFINE file  = "3"
DEFINE STRING = "CHAR ARRAY"
DEFINE ASCII = "$0"
DEFINE EOL = "$9B"

CARD ARRAY end(0)
BYTE ARRAY fbuf
BYTE baud=[14], fmode
STRING Rdev(0)="R:"

BYTE FUNC MStatus=*()
  BYTE QLi=$2EB; DVSTAT+1, input queue length  
  XIO(modem,0,$D,0,0,Rdev)
RETURN (QLi)

PROC OpenModem(BYTE trans)
  Close(modem)
  Open(modem,Rdev,13,0)
  XIO(modem,0,36,baud,0,Rdev)
  XIO(modem,0,38,trans,0,Rdev)
  XIO(modem,0,40,0,0,Rdev) ; concurrent
RETURN

PROC MyClose(BYTE chan)
  Close(modem)
  Close(chan)  ; more than this in ACSTERM?
RETURN
 
PROC OpenFile(STRING msg)
  BYTE ARRAY spec(30)
  Print(msg)
  InputMD(0,spec,30)
  MyClose(file)
  Open(file,spec,fmode,0)
RETURN

PROC GetKey()
  BYTE CH=$2FC, c
  IF CH<>255 THEN
    c=GetD(7)
    IF c=EOL THEN c=$D FI
    PutD(modem,c)
  FI
RETURN

MODULE ; ----------------------------

DEFINE FALSE = "0"
DEFINE EOT = "4"
DEFINE SOH = "1"
DEFINE ACK = "6"
DEFINE LF  = "$A"
DEFINE CR  = "$D"
DEFINE NAK = "$15"
DEFINE SUB = "$1A"
DEFINE TIMEOUT = "$FFFF"
DEFINE RETRYMAX = "10"
DEFINE ERRORMAX = "10"

BYTE j, CheckSum, SectNum, TotErr, Errors
BYTE transx=[0], xeof
CHAR ARRAY block(128)
INT  dbufp  ; # of data bytes in fbuf, index of next
CARD ibuf
CARD BLen=[2000]; length of buffer (must be >2*128?)

CARD FUNC Receive(BYTE wait)
  CARD CDTMV3=$21C ; system timer counts down to 0
  BYTE CONSOL=$D01F
  CDTMV3 = 60*wait
  DO
    GetKey()
    IF MStatus() THEN 
      RETURN (GetD(modem)) 
    FI
    IF CONSOL!7 THEN CDTMV3 = 60 FI ; force timer to 1 sec.
  UNTIL CDTMV3=0 OD
RETURN (TIMEOUT)

PROC Send(CHAR c)
  PutD(modem,c)
RETURN

PROC PurgeLine(BYTE wait)
  DO UNTIL Receive(wait)=TIMEOUT OD
RETURN

; -----------------------------------
PROC WBuf() ; 128 bytes from block to disk buffer
; Must set dbufp=xeof=0 before 1st call.
; Caller must open and close file.
; Can't write out a block until next call, because don't know
; a block is last until EOT is received instead of next block.
  CARD j, len
  IF xeof THEN    ; preceeding block was final.
;print("EOF")
    IF transx=ASCII THEN
      FOR j=dbufp-128 TO dbufp-1 DO
        IF fbuf(j)=SUB THEN EXIT FI
      OD
      dbufp = j
    ELSE
      dbufp ==- (128-fbuf(dbufp-1))
    FI
  ELSE
;print("not EOF")
    FOR j=0 TO 127 DO
      fbuf(dbufp) = block(j)
      dbufp ==+ 1
    OD
  FI
;PBlock(block,dbufp)
;printf("dbufp=%U%E",dbufp)
  IF dbufp>BLen-128 OR xeof<>0 THEN ; flush buffer to disk
    IF transx=ASCII THEN
      ;replace CR-LF by EOL
      ;Don't touch a trailing CR, as LF might be in next block.
      ibuf = 0
      FOR j=0 TO dbufp-1 DO
        IF j<=dbufp-2 THEN
          IF (fbuf(j)&$7F)=CR AND fbuf(j+1)=LF THEN
            j ==+ 1
            fbuf(j) = EOL
          FI
        FI
        fbuf(ibuf) = fbuf(j)
        ibuf ==+ 1
      OD
      dbufp = ibuf  
    FI
    Close(modem)
    IF xeof THEN len = dbufp ELSE len = dbufp-128 FI
    WriteBlock(file,fbuf,len)
    OpenModem(32)
    ;Move remaining dbufp-len bytes to front of fbuf
    FOR j=len TO dbufp-1 DO
      fbuf(j-len) = fbuf(j)
    OD
    dbufp ==- len
  FI
RETURN ; WBuf

PROC RecFile()
  CARD ch, FirstChar
  BYTE SectCurr, ErrorFlag
  BYTE CONSOL=$D01F

  fmode = 8
  OpenFile("XMODEM download to file: ")
  dbufp = 0 : xeof = 0
  OpenModem(32)

  SectNum = 0
  Errors = 0  ; on current sector
  TotErr = 0  ; on file

  PurgeLine(0)
  Send(NAK)

  DO
    ErrorFlag = FALSE
    DO
      FirstChar = Receive(10)
      IF SectNum=0 OR (CONSOL&2)=0 THEN
        Put(FirstChar) ;** debug -FOX can type to screen
      FI
    UNTIL FirstChar=SOH OR FirstChar=EOT OR FirstChar=TIMEOUT OD
    IF FirstChar=TIMEOUT THEN
      ErrorFlag = 'T
;   ELSEIF FirstChar=EOT THEN
;     EXIT
    ELSEIF FirstChar=SOH THEN
      SectCurr = Receive(1)
      IF (SectCurr + Receive(1))=$FF THEN ; good sector number
        IF SectCurr=(SectNum+1) THEN
          CheckSum = 0
          FOR j=0 TO 127 DO
            ch = Receive(1)
            IF ch=TIMEOUT THEN
              ErrorFlag = 'T
              EXIT
            FI
            block(j) = ch
            CheckSum = CheckSum+ch
          OD
          IF CheckSum=Receive(1) THEN
            SectNum = SectCurr
            PrintF("Rec'd %U after %U tries%E%C",SectNum,Errors,$1C)
            Errors = 0
            WBuf()
            Send(ACK)
          ELSE ; bad checksum  ***or timeout in block
            ErrorFlag = 'C
          FI
        ELSEIF SectCurr=SectNum THEN ; already received this
          PurgeLine(1)
          Send(ACK)
        ELSE ; lost a sector
          ErrorFlag = 'S
        FI
      ELSE ; bad header
        ErrorFlag = 'H
      FI
    FI
    IF ErrorFlag THEN
      Errors ==+ 1
      IF SectNum THEN TotErr ==+ 1 FI
      PurgeLine(1)
      PrintF("Awaiting %U (try=%U, Errs=%U, type %C)%E",
        SectNum,Errors,TotErr,ErrorFlag)
      Send(NAK)
    FI      
  UNTIL FirstChar=EOT OR Errors=ERRORMAX OD
  IF FirstChar=EOT AND Errors<ERRORMAX THEN
    Send(ACK)
    xeof=1
    WBuf()  ; write buffer, close file
    PrintF("%EDone")
  ELSE
    PrintF("%EAborting")
  FI
  MyClose(file)
RETURN ; RecFile

; -----------------------------------

BYTE FUNC RBuf() ; read 128 bytes into block.
  BYTE i
  ; N.B.! set ibuf=dbufp=xeof=0 before 1st call
  IF xeof THEN RETURN(0) FI ; no more blocks
  i = 0
  WHILE i<128 DO
    IF ibuf=dbufp THEN ; no more data
      IF EOF(file) THEN ; already got EOF
        xeof = 1 ; flag for NEXT call to RBuf
        EXIT
      ELSE
        Close(modem)
        dbufp = ReadBlock(file,fbuf,BLen-1) ; could be zero
        ibuf = 0
        IF CIO_status=$88 THEN ; EOF
          CIO_status = 1 ; indicate OK
          IF transx=ASCII THEN
            fbuf(dbufp) = SUB ; CP/M & MSDOS EOF
            dbufp ==+ 1
          FI
        FI
        OpenModem(32)
;PrintF("read %U bytes,xeof=%U,EOF=%U%E%E",dbufp,xeof,EOF(file))
        IF dbufp=0 THEN EXIT FI
      FI
    FI
    IF fbuf(ibuf)=EOL AND transx=ASCII THEN
      block(i) = CR
      fbuf(ibuf) = LF  ; to send next
    ELSE
      block(i) = fbuf(ibuf)
      ibuf ==+ 1
    FI
    i ==+ 1 ; could make this a FOR loop??
  OD
  j = i
  WHILE i < 128 DO ; fill out last block with number of data bytes
    block(i) = j
    i ==+ 1
  OD
RETURN (1) ;RBuf

PROC SndFile()
  BYTE attempts=Errors, ch
  BYTE CONSOL=$D01F

  fmode = 4
  OpenFile("XMODEM upload of file: ")
  ibuf = 0 : dbufp = 0 : xeof=0
  OpenModem(32)

  PurgeLine(0)
  attempts = 0
  TotErr = 0
  
  PrintE("Await NAK or press start")
  WHILE Receive(10)<>NAK AND attempts<8 AND CONSOL=7 DO ; await initial NAK
    attempts ==+ 1
    PrintF("%CTimeout %U%E",$1C,attempts)
  OD
  IF attempts=8 THEN
    PrintE("Timed out before initial NAK")
    MyClose(file)
    RETURN
  FI
  attempts = 0
  SectNum = 1

  WHILE RBuf()<>0 AND attempts<RETRYMAX DO ; blocks
    IF CIO_status<>1 THEN
      PrintF("DOS error %U%E",CIO_status)
      EXIT
    FI
    attempts = 0
    DO  ; send block
;     PrintF("%Cblock %U%E",$1C,SectNum)
      Send(SOH)
      Send(SectNum)
      Send($FF-SectNum)
      CheckSum = 0
      FOR j = 0 TO 127 DO
        ch=block(j)
        Send(ch)
        CheckSum = CheckSum+ch
      OD
      Send(CheckSum)
      PurgeLine(0)
      attempts ==+ 1
      TotErr == +1
    UNTIL Receive(10)=ACK OR attempts=RETRYMAX OD
    SectNum ==+ 1
    TotErr ==- 1
  OD ; loop on blocks
  IF attempts=RETRYMAX THEN
    PrintE("No ACK on sector")
  ELSE
    attempts=0
    DO
      Send(EOT)
      PurgeLine(0)
      attempts ==+ 1
    UNTIL Receive(10)=ACK OR attempts=RETRYMAX OD
    IF attempts=RETRYMAX THEN
      PrintE("No ACK on EOT")
    FI
  FI
  MyClose(file)
  PrintF("Done with %U retries%E",TotErr)
RETURN ; SndFile

; -----------------------------------
PROC Main()
  BYTE ch
  fbuf = end
  transx = ASCII
;transx=1 ; BINARY
  ch = GetD(7)&$DF
  IF ch='R THEN
    RecFile()
  ELSEIF ch='T OR ch='S THEN
    SndFile()
  FI
  Close(modem)
RETURN
----------------------------------------------------------------------