!C99Shell v. 1.0 pre-release build #13!

Software: Apache. PHP/5.5.15 

uname -a: Windows NT SVR-DMZ 6.1 build 7600 (Windows Server 2008 R2 Enterprise Edition) i586 

SYSTEM 

Safe-mode: OFF (not secure)

C:\dmz\src\xampp-control-panel\   drwxrwxrwx
Free 4.13 GB of 39.52 GB (10.45%)
Detected drives: [ a ] [ c ] [ d ] [ e ] [ f ]
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     VersInfo.pas (42.97 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
Information:
Path C:\dmz\src\xampp-control-panel\VersInfo.pas
Size 42.97 KB
MD5 d90810107c4a4292f1a3b5266c456655
Perms-rw-rw-rw-
Create time 28/11/2017 14:33:40
Access time 14/07/2020 11:06:59
MODIFY time 15/10/2011 15:29:02

FULL HEXDUMP
00000000
00000018
00000030
00000048
00000060
00000078
00000090
000000A8
000000C0
000000D8
000000F0
00000108
00000120
00000138
00000150
00000168
00000180
00000198
000001B0
000001C8
000001E0
000001F8
00000210
00000228
00000240
00000258
00000270
00000288
000002A0
000002B8
000002D0
000002E8
00000300
00000318
00000330
00000348
00000360
00000378
00000390
000003A8
000003C0
000003D8
000003F0
00000408
00000420
00000438
00000450
00000468
00000480
00000498
000004B0
000004C8
000004E0
000004F8
00000510
00000528
00000540
00000558
00000570
00000588
000005A0
000005B8
000005D0
000005E8
00000600
00000618
00000630
00000648
00000660
00000678
00000690
000006A8
000006C0
000006D8
000006F0
00000708
00000720
00000738
00000750
00000768
00000780
00000798
000007B0
000007C8
000007E0
000007F8
00000810
00000828
00000840
00000858
00000870
00000888
000008A0
000008B8
000008D0
000008E8
00000900
00000918
00000930
00000948
00000960
00000978
00000990
000009A8
000009C0
000009D8
000009F0
00000A08
00000A20
00000A38
00000A50
00000A68
00000A80
00000A98
00000AB0
00000AC8
00000AE0
00000AF8
00000B10
00000B28
00000B40
00000B58
00000B70
00000B88
00000BA0
00000BB8
00000BD0
00000BE8
00000C00
00000C18
00000C30
00000C48
00000C60
00000C78
00000C90
00000CA8
00000CC0
00000CD8
00000CF0
00000D08
00000D20
00000D38
00000D50
00000D68
00000D80
00000D98
00000DB0
00000DC8
00000DE0
00000DF8
00000E10
00000E28
00000E40
00000E58
00000E70
00000E88
00000EA0
00000EB8
00000ED0
00000EE8
00000F00
00000F18
00000F30
00000F48
00000F60
00000F78
00000F90
00000FA8
00000FC0
00000FD8
00000FF0
00001008
00001020
00001038
00001050
00001068
00001080
00001098
000010B0
000010C8
000010E0
000010F8
00001110
00001128
00001140
00001158
00001170
00001188
000011A0
000011B8
000011D0
000011E8
00001200
00001218
00001230
00001248
00001260
00001278
00001290
000012A8
000012C0
000012D8
000012F0
00001308
00001320
00001338
00001350
00001368
00001380
00001398
000013B0
000013C8
000013E0
000013F8
00001410
00001428
00001440
00001458
00001470
00001488
000014A0
000014B8
000014D0
000014E8
00001500
00001518
00001530
00001548
00001560
00001578
00001590
000015A8
000015C0
000015D8
000015F0
00001608
00001620
00001638
00001650
00001668
00001680
00001698
000016B0
000016C8
000016E0
000016F8
00001710
00001728
00001740
00001758
00001770
00001788
000017A0
000017B8
000017D0
000017E8
00001800
00001818
00001830
00001848
00001860
00001878
00001890
000018A8
000018C0
000018D8
000018F0
00001908
00001920
00001938
00001950
00001968
00001980
00001998
000019B0
000019C8
000019E0
000019F8
00001A10
00001A28
00001A40
00001A58
00001A70
00001A88
00001AA0
00001AB8
00001AD0
00001AE8
00001B00
00001B18
00001B30
00001B48
00001B60
00001B78
00001B90
00001BA8
00001BC0
00001BD8
00001BF0
00001C08
00001C20
00001C38
00001C50
00001C68
00001C80
00001C98
00001CB0
00001CC8
00001CE0
00001CF8
00001D10
00001D28
00001D40
00001D58
00001D70
00001D88
00001DA0
00001DB8
00001DD0
00001DE8
00001E00
00001E18
00001E30
00001E48
00001E60
00001E78
00001E90
00001EA8
00001EC0
00001ED8
00001EF0
00001F08
00001F20
00001F38
00001F50
00001F68
00001F80
00001F98
00001FB0
00001FC8
00001FE0
00001FF8
00002010
00002028
00002040
00002058
00002070
00002088
000020A0
000020B8
000020D0
000020E8
00002100
00002118
00002130
00002148
00002160
00002178
00002190
000021A8
000021C0
000021D8
000021F0
00002208
00002220
00002238
00002250
00002268
00002280
00002298
000022B0
000022C8
000022E0
000022F8
00002310
00002328
00002340
00002358
00002370
00002388
000023A0
000023B8
000023D0
000023E8
00002400
00002418
00002430
00002448
00002460
00002478
00002490
000024A8
000024C0
000024D8
000024F0
00002508
00002520
00002538
00002550
00002568
00002580
00002598
000025B0
000025C8
000025E0
000025F8
00002610
00002628
00002640
00002658
00002670
00002688
000026A0
000026B8
000026D0
000026E8
00002700
00002718
00002730
00002748
00002760
00002778
00002790
000027A8
000027C0
000027D8
000027F0
00002808
00002820
00002838
00002850
00002868
00002880
00002898
000028B0
000028C8
000028E0
000028F8
00002910
00002928
00002940
00002958
00002970
00002988
000029A0
000029B8
000029D0
000029E8
00002A00
00002A18
00002A30
00002A48
00002A60
00002A78
00002A90
00002AA8
00002AC0
00002AD8
00002AF0
00002B08
00002B20
00002B38
00002B50
00002B68
00002B80
00002B98
00002BB0
00002BC8
00002BE0
00002BF8
00002C10
00002C28
00002C40
00002C58
00002C70
00002C88
00002CA0
00002CB8
00002CD0
00002CE8
00002D00
00002D18
00002D30
00002D48
00002D60
00002D78
00002D90
00002DA8
00002DC0
00002DD8
00002DF0
00002E08
00002E20
00002E38
00002E50
00002E68
00002E80
00002E98
00002EB0
00002EC8
00002EE0
00002EF8
00002F10
00002F28
00002F40
00002F58
00002F70
00002F88
00002FA0
00002FB8
00002FD0
00002FE8
00003000
00003018
00003030
00003048
00003060
00003078
00003090
000030A8
000030C0
000030D8
000030F0
00003108
00003120
00003138
00003150
00003168
00003180
00003198
000031B0
000031C8
000031E0
000031F8
00003210
00003228
00003240
00003258
00003270
00003288
000032A0
000032B8
000032D0
000032E8
00003300
00003318
00003330
00003348
00003360
00003378
00003390
000033A8
000033C0
000033D8
000033F0
00003408
00003420
00003438
00003450
00003468
00003480
00003498
000034B0
000034C8
000034E0
000034F8
00003510
00003528
00003540
00003558
00003570
00003588
000035A0
000035B8
000035D0
000035E8
00003600
00003618
00003630
00003648
00003660
00003678
00003690
000036A8
000036C0
000036D8
000036F0
00003708
00003720
00003738
00003750
00003768
00003780
00003798
000037B0
000037C8
000037E0
000037F8
00003810
00003828
00003840
00003858
00003870
00003888
000038A0
000038B8
000038D0
000038E8
00003900
00003918
00003930
00003948
00003960
00003978
00003990
000039A8
000039C0
000039D8
000039F0
00003A08
00003A20
00003A38
00003A50
00003A68
00003A80
00003A98
00003AB0
00003AC8
00003AE0
00003AF8
00003B10
00003B28
00003B40
00003B58
00003B70
00003B88
00003BA0
00003BB8
00003BD0
00003BE8
00003C00
00003C18
00003C30
00003C48
00003C60
00003C78
00003C90
00003CA8
00003CC0
00003CD8
00003CF0
00003D08
00003D20
00003D38
00003D50
00003D68
00003D80
00003D98
00003DB0
00003DC8
00003DE0
00003DF8
00003E10
00003E28
00003E40
00003E58
00003E70
00003E88
00003EA0
00003EB8
00003ED0
00003EE8
00003F00
00003F18
00003F30
00003F48
00003F60
00003F78
00003F90
00003FA8
00003FC0
00003FD8
00003FF0
00004008
00004020
00004038
00004050
00004068
00004080
00004098
000040B0
000040C8
000040E0
000040F8
00004110
00004128
00004140
00004158
00004170
00004188
000041A0
000041B8
000041D0
000041E8
00004200
00004218
00004230
00004248
00004260
00004278
00004290
000042A8
000042C0
000042D8
000042F0
00004308
00004320
00004338
00004350
00004368
00004380
00004398
000043B0
000043C8
000043E0
000043F8
00004410
00004428
00004440
00004458
00004470
00004488
000044A0
000044B8
000044D0
000044E8
00004500
00004518
00004530
00004548
00004560
00004578
00004590
000045A8
000045C0
000045D8
000045F0
00004608
00004620
00004638
00004650
00004668
00004680
00004698
000046B0
000046C8
000046E0
000046F8
00004710
00004728
00004740
00004758
00004770
00004788
000047A0
000047B8
000047D0
000047E8
00004800
00004818
00004830
00004848
00004860
00004878
00004890
000048A8
000048C0
000048D8
000048F0
00004908
00004920
00004938
00004950
00004968
00004980
00004998
000049B0
000049C8
000049E0
000049F8
00004A10
00004A28
00004A40
00004A58
00004A70
00004A88
00004AA0
00004AB8
00004AD0
00004AE8
00004B00
00004B18
00004B30
00004B48
00004B60
00004B78
00004B90
00004BA8
00004BC0
00004BD8
00004BF0
00004C08
00004C20
00004C38
00004C50
00004C68
00004C80
00004C98
00004CB0
00004CC8
00004CE0
00004CF8
00004D10
00004D28
00004D40
00004D58
00004D70
00004D88
00004DA0
00004DB8
00004DD0
00004DE8
00004E00
00004E18
00004E30
00004E48
00004E60
00004E78
00004E90
00004EA8
00004EC0
00004ED8
00004EF0
00004F08
00004F20
00004F38
00004F50
00004F68
00004F80
00004F98
00004FB0
00004FC8
00004FE0
00004FF8
00005010
00005028
00005040
00005058
00005070
00005088
000050A0
000050B8
000050D0
000050E8
00005100
00005118
00005130
00005148
00005160
00005178
00005190
000051A8
000051C0
000051D8
000051F0
00005208
00005220
00005238
00005250
00005268
00005280
00005298
000052B0
000052C8
000052E0
000052F8
00005310
00005328
00005340
00005358
00005370
00005388
000053A0
000053B8
000053D0
000053E8
00005400
00005418
00005430
00005448
00005460
00005478
00005490
000054A8
000054C0
000054D8
000054F0
00005508
00005520
00005538
00005550
00005568
00005580
00005598
000055B0
000055C8
000055E0
000055F8
00005610
00005628
00005640
00005658
00005670
00005688
000056A0
000056B8
000056D0
000056E8
00005700
00005718
00005730
00005748
00005760
00005778
00005790
000057A8
000057C0
000057D8
000057F0
00005808
00005820
00005838
00005850
00005868
00005880
00005898
000058B0
000058C8
000058E0
000058F8
00005910
00005928
00005940
00005958
00005970
00005988
000059A0
000059B8
000059D0
000059E8
00005A00
00005A18
00005A30
00005A48
00005A60
00005A78
00005A90
00005AA8
00005AC0
00005AD8
00005AF0
00005B08
00005B20
00005B38
00005B50
00005B68
00005B80
00005B98
00005BB0
00005BC8
00005BE0
00005BF8
00005C10
00005C28
00005C40
00005C58
00005C70
00005C88
00005CA0
00005CB8
00005CD0
00005CE8
00005D00
00005D18
00005D30
00005D48
00005D60
00005D78
00005D90
00005DA8
00005DC0
00005DD8
00005DF0
00005E08
00005E20
00005E38
00005E50
00005E68
00005E80
00005E98
00005EB0
00005EC8
00005EE0
00005EF8
00005F10
00005F28
00005F40
00005F58
00005F70
00005F88
00005FA0
00005FB8
00005FD0
00005FE8
00006000
00006018
00006030
00006048
00006060
00006078
00006090
000060A8
000060C0
000060D8
000060F0
00006108
00006120
00006138
00006150
00006168
00006180
00006198
000061B0
000061C8
000061E0
000061F8
00006210
00006228
00006240
00006258
00006270
00006288
000062A0
000062B8
000062D0
000062E8
00006300
00006318
00006330
00006348
00006360
00006378
00006390
000063A8
000063C0
000063D8
000063F0
00006408
00006420
00006438
00006450
00006468
00006480
00006498
000064B0
000064C8
000064E0
000064F8
00006510
00006528
00006540
00006558
00006570
00006588
000065A0
000065B8
000065D0
000065E8
00006600
00006618
00006630
00006648
00006660
00006678
00006690
000066A8
000066C0
000066D8
000066F0
00006708
00006720
00006738
00006750
00006768
00006780
00006798
000067B0
000067C8
000067E0
000067F8
00006810
00006828
00006840
00006858
00006870
00006888
000068A0
000068B8
000068D0
000068E8
00006900
00006918
00006930
00006948
00006960
00006978
00006990
000069A8
000069C0
000069D8
000069F0
00006A08
00006A20
00006A38
00006A50
00006A68
00006A80
00006A98
00006AB0
00006AC8
00006AE0
00006AF8
00006B10
00006B28
00006B40
00006B58
00006B70
00006B88
00006BA0
00006BB8
00006BD0
00006BE8
00006C00
00006C18
00006C30
00006C48
00006C60
00006C78
00006C90
00006CA8
00006CC0
00006CD8
00006CF0
00006D08
00006D20
00006D38
00006D50
00006D68
00006D80
00006D98
00006DB0
00006DC8
00006DE0
00006DF8
00006E10
00006E28
00006E40
00006E58
00006E70
00006E88
00006EA0
00006EB8
00006ED0
00006EE8
00006F00
00006F18
00006F30
00006F48
00006F60
00006F78
00006F90
00006FA8
00006FC0
00006FD8
00006FF0
00007008
00007020
00007038
00007050
00007068
00007080
00007098
000070B0
000070C8
000070E0
000070F8
00007110
00007128
00007140
00007158
00007170
00007188
000071A0
000071B8
000071D0
000071E8
00007200
00007218
00007230
00007248
00007260
00007278
00007290
000072A8
000072C0
000072D8
000072F0
00007308
00007320
00007338
00007350
00007368
00007380
00007398
000073B0
000073C8
000073E0
000073F8
00007410
00007428
00007440
00007458
00007470
00007488
000074A0
000074B8
000074D0
000074E8
00007500
00007518
00007530
00007548
00007560
00007578
00007590
000075A8
000075C0
000075D8
000075F0
00007608
00007620
00007638
00007650
00007668
00007680
00007698
000076B0
000076C8
000076E0
000076F8
00007710
00007728
00007740
00007758
00007770
00007788
000077A0
000077B8
000077D0
000077E8
00007800
00007818
00007830
00007848
00007860
00007878
00007890
000078A8
000078C0
000078D8
000078F0
00007908
00007920
00007938
00007950
00007968
00007980
00007998
000079B0
000079C8
000079E0
000079F8
00007A10
00007A28
00007A40
00007A58
00007A70
00007A88
00007AA0
00007AB8
00007AD0
00007AE8
00007B00
00007B18
00007B30
00007B48
00007B60
00007B78
00007B90
00007BA8
00007BC0
00007BD8
00007BF0
00007C08
00007C20
00007C38
00007C50
00007C68
00007C80
00007C98
00007CB0
00007CC8
00007CE0
00007CF8
00007D10
00007D28
00007D40
00007D58
00007D70
00007D88
00007DA0
00007DB8
00007DD0
00007DE8
00007E00
00007E18
00007E30
00007E48
00007E60
00007E78
00007E90
00007EA8
00007EC0
00007ED8
00007EF0
00007F08
00007F20
00007F38
00007F50
00007F68
00007F80
00007F98
00007FB0
00007FC8
00007FE0
00007FF8
00008010
00008028
00008040
00008058
00008070
00008088
000080A0
000080B8
000080D0
000080E8
00008100
00008118
00008130
00008148
00008160
00008178
00008190
000081A8
000081C0
000081D8
000081F0
00008208
00008220
00008238
00008250
00008268
00008280
00008298
000082B0
000082C8
000082E0
000082F8
00008310
00008328
00008340
00008358
00008370
00008388
000083A0
000083B8
000083D0
000083E8
00008400
00008418
00008430
00008448
00008460
00008478
00008490
000084A8
000084C0
000084D8
000084F0
00008508
00008520
00008538
00008550
00008568
00008580
00008598
000085B0
000085C8
000085E0
000085F8
00008610
00008628
00008640
00008658
00008670
00008688
000086A0
000086B8
000086D0
000086E8
00008700
00008718
00008730
00008748
00008760
00008778
00008790
000087A8
000087C0
000087D8
000087F0
00008808
00008820
00008838
00008850
00008868
00008880
00008898
000088B0
000088C8
000088E0
000088F8
00008910
00008928
00008940
00008958
00008970
00008988
000089A0
000089B8
000089D0
000089E8
00008A00
00008A18
00008A30
00008A48
00008A60
00008A78
00008A90
00008AA8
00008AC0
00008AD8
00008AF0
00008B08
00008B20
00008B38
00008B50
00008B68
00008B80
00008B98
00008BB0
00008BC8
00008BE0
00008BF8
00008C10
00008C28
00008C40
00008C58
00008C70
00008C88
00008CA0
00008CB8
00008CD0
00008CE8
00008D00
00008D18
00008D30
00008D48
00008D60
00008D78
00008D90
00008DA8
00008DC0
00008DD8
00008DF0
00008E08
00008E20
00008E38
00008E50
00008E68
00008E80
00008E98
00008EB0
00008EC8
00008EE0
00008EF8
00008F10
00008F28
00008F40
00008F58
00008F70
00008F88
00008FA0
00008FB8
00008FD0
00008FE8
00009000
00009018
00009030
00009048
00009060
00009078
00009090
000090A8
000090C0
000090D8
000090F0
00009108
00009120
00009138
00009150
00009168
00009180
00009198
000091B0
000091C8
000091E0
000091F8
00009210
00009228
00009240
00009258
00009270
00009288
000092A0
000092B8
000092D0
000092E8
00009300
00009318
00009330
00009348
00009360
00009378
00009390
000093A8
000093C0
000093D8
000093F0
00009408
00009420
00009438
00009450
00009468
00009480
00009498
000094B0
000094C8
000094E0
000094F8
00009510
00009528
00009540
00009558
00009570
00009588
000095A0
000095B8
000095D0
000095E8
00009600
00009618
00009630
00009648
00009660
00009678
00009690
000096A8
000096C0
000096D8
000096F0
00009708
00009720
00009738
00009750
00009768
00009780
00009798
000097B0
000097C8
000097E0
000097F8
00009810
00009828
00009840
00009858
00009870
00009888
000098A0
000098B8
000098D0
000098E8
00009900
00009918
00009930
00009948
00009960
00009978
00009990
000099A8
000099C0
000099D8
000099F0
00009A08
00009A20
00009A38
00009A50
00009A68
00009A80
00009A98
00009AB0
00009AC8
00009AE0
00009AF8
00009B10
00009B28
00009B40
00009B58
00009B70
00009B88
00009BA0
00009BB8
00009BD0
00009BE8
00009C00
00009C18
00009C30
00009C48
00009C60
00009C78
00009C90
00009CA8
00009CC0
00009CD8
00009CF0
00009D08
00009D20
00009D38
00009D50
00009D68
00009D80
00009D98
00009DB0
00009DC8
00009DE0
00009DF8
00009E10
00009E28
00009E40
00009E58
00009E70
00009E88
00009EA0
00009EB8
00009ED0
00009EE8
00009F00
00009F18
00009F30
00009F48
00009F60
00009F78
00009F90
00009FA8
00009FC0
00009FD8
00009FF0
0000A008
0000A020
0000A038
0000A050
0000A068
0000A080
0000A098
0000A0B0
0000A0C8
0000A0E0
0000A0F8
0000A110
0000A128
0000A140
0000A158
0000A170
0000A188
0000A1A0
0000A1B8
0000A1D0
0000A1E8
0000A200
0000A218
0000A230
0000A248
0000A260
0000A278
0000A290
0000A2A8
0000A2C0
0000A2D8
0000A2F0
0000A308
0000A320
0000A338
0000A350
0000A368
0000A380
0000A398
0000A3B0
0000A3C8
0000A3E0
0000A3F8
0000A410
0000A428
0000A440
0000A458
0000A470
0000A488
0000A4A0
0000A4B8
0000A4D0
0000A4E8
0000A500
0000A518
0000A530
0000A548
0000A560
0000A578
0000A590
0000A5A8
0000A5C0
0000A5D8
0000A5F0
0000A608
0000A620
0000A638
0000A650
0000A668
0000A680
0000A698
0000A6B0
0000A6C8
0000A6E0
0000A6F8
0000A710
0000A728
0000A740
0000A758
0000A770
0000A788
0000A7A0
0000A7B8
0000A7D0
0000A7E8
0000A800
0000A818
0000A830
0000A848
0000A860
0000A878
0000A890
0000A8A8
0000A8C0
0000A8D8
0000A8F0
0000A908
0000A920
0000A938
0000A950
0000A968
0000A980
0000A998
0000A9B0
0000A9C8
0000A9E0
0000A9F8
0000AA10
0000AA28
0000AA40
0000AA58
0000AA70
0000AA88
0000AAA0
0000AAB8
0000AAD0
0000AAE8
0000AB00
0000AB18
0000AB30
0000AB48
0000AB60
0000AB78
0000AB90
0000ABA8
0000ABC0
0000ABD8
28 2A 20 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A
2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A
2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A
2A 2A 2A 2A 2A 2A 2A 20 2A 29 0D 0A 28 2A 20 44 65 6C 70 68 69 20 46 72
65 65 20 53 74 75 66 66 20 49 6E 63 6C 75 64 65 20 46 69 6C 65 2E 20 20
54 68 69 73 20 66 69 6C 65 20 69 73 20 75 73 65 64 20 66 6F 72 20 61 6C
6C 20 6D 79 20 63 6F 6D 70 6F 6E 65 6E 74 73 20 2A 29 0D 0A 28 2A 20 74
6F 20 63 72 65 61 74 65 20 73 6F 6D 65 20 73 74 61 6E 64 61 72 64 20 64
65 66 69 6E 65 73 2E 20 20 54 68 69 73 20 77 69 6C 6C 20 68 65 6C 70 20
72 65 64 75 63 65 20 68 65 61 64 61 63 68 65 73 20 77 68 65 6E 20 6E 65
77 20 2A 29 0D 0A 28 2A 20 76 65 72 73 69 6F 6E 73 20 6F 66 20 44 65 6C
70 68 69 20 61 6E 64 20 43 2B 2B 42 75 69 6C 64 65 72 20 61 72 65 20 72
65 6C 65 61 73 65 64 2C 20 61 6D 6F 6E 67 20 6F 74 68 65 72 20 74 68 69
6E 67 73 2E 20 2A 29 0D 0A 28 2A 20 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A
2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A
2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A
2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 20 2A 29 0D 0A 28 2A 20
42 72 61 64 20 53 74 6F 77 65 72 73 3A 20 62 73 74 6F 77 65 72 73 40 70
6F 62 6F 78 2E 63 6F 6D 20 2A 29 0D 0A 28 2A 20 44 65 6C 70 68 69 20 46
72 65 65 20 53 74 75 66 66 3A 20 68 74 74 70 3A 2F 2F 77 77 77 2E 64 65
6C 70 68 69 66 72 65 65 73 74 75 66 66 2E 63 6F 6D 2F 20 2A 29 0D 0A 28
2A 20 4A 75 6E 65 20 32 37 2C 20 32 30 30 31 20 2A 29 0D 0A 28 2A 20 2A
2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A
2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A
2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A
2A 2A 2A 20 2A 29 0D 0A 28 2A 20 55 73 61 67 65 3A 20 20 20 41 64 64 20
74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 6C 69 6E 65 20 74 6F 20 74 68
65 20 74 6F 70 20 6F 66 20 79 6F 75 72 20 75 6E 69 74 20 66 69 6C 65 3A
20 2A 29 0D 0A 28 2A 20 7B 24 49 20 44 46 53 2E 49 4E 43 7D 20 2A 29 0D
0A 28 2A 20 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A
2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A
2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A
2A 2A 2A 2A 2A 2A 2A 2A 20 2A 29 0D 0A 28 2A 20 2A 29 0D 0A 28 2A 20 43
6F 6D 70 6C 65 74 65 20 42 6F 6F 6C 65 61 6E 20 45 76 61 6C 75 61 74 69
6F 6E 20 63 6F 6D 70 69 6C 65 72 20 64 69 72 65 63 74 69 76 65 20 69 73
20 74 75 72 6E 65 64 20 6F 66 66 20 62 79 20 69 6E 63 6C 75 64 69 6E 67
20 2A 29 0D 0A 28 2A 20 74 68 69 73 20 66 69 6C 65 2E 20 2A 29 0D 0A 28
2A 20 54 68 65 20 24 4F 62 6A 45 78 70 6F 72 74 41 6C 6C 20 64 69 72 65
63 74 69 76 65 20 69 73 20 74 75 72 6E 65 64 20 6F 6E 20 69 66 20 63 6F
6D 70 69 6C 69 6E 67 20 77 69 74 68 20 43 2B 2B 42 75 69 6C 64 65 72 20
33 20 6F 72 20 2A 29 0D 0A 28 2A 20 68 69 67 68 65 72 2E 20 20 54 68 69
73 20 69 73 20 72 65 71 75 69 72 65 64 20 66 6F 72 20 44 65 6C 70 68 69
20 63 6F 6D 70 6F 6E 65 6E 74 73 20 62 75 69 6C 74 20 69 6E 20 42 75 69
6C 64 65 72 20 77 69 74 68 20 2A 29 0D 0A 28 2A 20 72 75 6E 2D 74 69 6D
65 20 70 61 63 6B 61 67 65 73 2E 20 2A 29 0D 0A 28 2A 20 2A 29 0D 0A 28
2A 20 48 65 72 65 20 69 73 20 61 20 62 72 69 65 66 20 65 78 70 6C 61 6E
61 74 69 6F 6E 20 6F 66 20 77 68 61 74 20 65 61 63 68 20 6F 66 20 74 68
65 20 64 65 66 69 6E 65 73 20 6D 65 61 6E 3A 20 2A 29 0D 0A 28 2A 20 44
45 4C 50 48 49 5F 46 52 45 45 5F 53 54 55 46 46 20 20 20 20 3A 20 41 6C
77 61 79 73 20 64 65 66 69 6E 65 64 20 77 68 65 6E 20 44 46 53 2E 49 4E
43 20 69 73 20 69 6E 63 6C 75 64 65 64 20 2A 29 0D 0A 28 2A 20 44 46 53
5F 57 49 4E 31 36 20 20 20 20 20 20 20 20 20 20 20 20 3A 20 43 6F 6D 70
69 6C 61 74 69 6F 6E 20 74 61 72 67 65 74 20 69 73 20 31 36 2D 62 69 74
20 57 69 6E 64 6F 77 73 20 2A 29 0D 0A 28 2A 20 44 46 53 5F 57 49 4E 33
32 20 20 20 20 20 20 20 20 20 20 20 20 3A 20 43 6F 6D 70 69 6C 61 74 69
6F 6E 20 74 61 72 67 65 74 20 69 73 20 33 32 2D 62 69 74 20 57 69 6E 64
6F 77 73 20 2A 29 0D 0A 28 2A 20 44 46 53 5F 55 53 45 44 45 46 53 48 4C
4F 42 4A 20 20 20 20 20 3A 20 54 68 65 20 53 48 4C 4F 42 4A 2E 50 41 53
20 76 65 72 73 69 6F 6E 20 63 6F 6E 74 61 69 6E 73 20 6E 6F 20 6E 6F 6E
65 20 65 72 72 6F 72 73 2E 20 2A 29 0D 0A 28 2A 20 44 65 6C 70 68 69 20
32 2E 30 78 20 61 6E 64 20 43 2B 2B 42 75 69 6C 64 65 72 20 31 2E 30 78
20 73 68 69 70 70 65 64 20 77 69 74 68 20 61 20 2A 29 0D 0A 28 2A 20 76
65 72 73 69 6F 6E 20 6F 66 20 53 48 4C 4F 42 4A 2E 50 41 53 20 74 68 61
74 20 68 61 64 20 6D 61 6E 79 20 6E 61 73 74 79 20 65 72 72 6F 72 73 2E
20 2A 29 0D 0A 28 2A 20 53 65 65 20 6D 79 20 77 65 62 20 73 69 74 65 20
69 6E 20 74 68 65 20 48 69 6E 74 73 20 73 65 63 74 69 6F 6E 20 66 6F 72
20 68 6F 77 20 74 6F 20 66 69 78 20 2A 29 0D 0A 28 2A 20 44 46 53 5F 4E
4F 5F 43 4F 4D 5F 43 4C 45 41 4E 55 50 20 20 20 3A 20 54 68 65 20 76 65
72 73 69 6F 6E 20 6F 66 20 74 68 65 20 63 6F 6D 70 69 6C 65 72 20 62 65
69 6E 67 20 75 73 65 64 20 64 6F 65 73 20 6E 6F 74 20 2A 29 0D 0A 28 2A
20 72 65 71 75 69 72 65 20 43 4F 4D 20 6F 62 6A 65 63 74 73 20 74 6F 20
62 65 20 72 65 6C 65 61 73 65 64 3B 20 69 74 20 69 73 20 64 6F 6E 65 20
2A 29 0D 0A 28 2A 20 61 75 74 6F 6D 61 74 69 63 61 6C 6C 79 20 77 68 65
6E 20 74 68 65 79 20 67 6F 20 22 6F 75 74 20 6F 66 20 73 63 6F 70 65 22
2E 20 2A 29 0D 0A 28 2A 20 44 46 53 5F 4E 4F 5F 44 53 47 4E 49 4E 54 46
20 20 20 20 20 20 3A 20 44 65 6C 70 68 69 20 36 20 70 72 65 74 74 79 20
6D 75 63 68 20 6B 69 6C 6C 73 20 6F 66 66 20 74 68 65 20 44 73 67 6E 49
6E 74 66 20 75 6E 69 74 20 2A 29 0D 0A 28 2A 20 66 6F 72 20 67 6F 6F 64
2E 20 53 70 6C 69 74 20 69 6E 74 6F 20 61 20 63 6F 75 70 6C 65 20 6F 66
20 6E 65 77 20 75 6E 69 74 73 2E 20 2A 29 0D 0A 28 2A 20 44 46 53 5F 44
45 53 49 47 4E 45 52 53 45 4C 45 43 54 49 4F 4E 53 3A 20 49 44 65 73 69
67 6E 65 72 53 65 6C 65 63 74 69 6F 6E 73 20 72 65 70 6C 61 63 65 64 20
54 44 65 73 69 67 6E 65 72 53 65 6C 65 63 74 69 6F 6E 4C 69 73 74 20 2A
29 0D 0A 28 2A 20 44 46 53 5F 49 50 52 4F 50 45 52 54 59 20 20 20 20 20
20 20 20 3A 20 49 50 72 6F 70 65 72 74 79 20 69 6E 74 72 6F 64 75 63 65
64 20 66 6F 72 20 64 65 73 69 67 6E 2D 74 69 6D 65 20 73 74 75 66 66 2E
20 2A 29 0D 0A 28 2A 20 44 46 53 5F 43 4F 4D 50 49 4C 45 52 5F 31 20 20
20 20 20 20 20 3A 20 44 65 6C 70 68 69 20 31 2E 30 20 69 73 20 74 68 65
20 63 6F 6D 70 69 6C 65 72 2E 20 20 4E 6F 74 65 20 74 68 61 74 20 43 2B
2B 42 20 31 2E 30 20 2A 29 0D 0A 28 2A 20 64 6F 65 73 20 4E 4F 54 20 63
61 75 73 65 20 74 68 69 73 20 74 6F 20 62 65 20 64 65 66 69 6E 65 64 2E
20 20 49 74 20 69 73 20 72 65 61 6C 6C 79 20 2A 29 0D 0A 28 2A 20 74 68
65 20 32 2E 30 20 63 6F 6D 70 69 6C 65 72 2E 20 2A 29 0D 0A 28 2A 20 44
46 53 5F 43 4F 4D 50 49 4C 45 52 5F 31 5F 55 50 20 20 20 20 3A 20 44 65
6C 70 68 69 20 31 2E 30 78 20 6F 72 20 68 69 67 68 65 72 2C 20 6F 72 20
43 2B 2B 42 20 31 2E 30 78 20 6F 72 20 68 69 67 68 65 72 20 69 73 20 2A
29 0D 0A 28 2A 20 74 68 65 20 63 6F 6D 70 69 6C 65 72 2E 20 2A 29 0D 0A
28 2A 20 44 46 53 5F 43 4F 4D 50 49 4C 45 52 5F 32 20 20 20 20 20 20 20
3A 20 44 65 6C 70 68 69 20 32 2E 30 78 20 6F 72 20 43 2B 2B 42 20 31 2E
30 78 20 69 73 20 74 68 65 20 63 6F 6D 70 69 6C 65 72 2E 20 2A 29 0D 0A
28 2A 20 44 46 53 5F 43 4F 4D 50 49 4C 45 52 5F 32 5F 55 50 20 20 20 20
3A 20 44 65 6C 70 68 69 20 32 2E 30 78 20 6F 72 20 68 69 67 68 65 72 2C
20 6F 72 20 43 2B 2B 42 20 31 2E 30 78 20 6F 72 20 68 69 67 68 65 72 20
69 73 20 2A 29 0D 0A 28 2A 20 74 68 65 20 63 6F 6D 70 69 6C 65 72 2E 20
2A 29 0D 0A 28 2A 20 44 46 53 5F 43 4F 4D 50 49 4C 45 52 5F 33 20 20 20
20 20 20 20 3A 20 44 65 6C 70 68 69 20 33 2E 30 78 20 6F 72 20 43 2B 2B
42 20 33 2E 30 78 20 69 73 20 74 68 65 20 63 6F 6D 70 69 6C 65 72 2E 20
2A 29 0D 0A 28 2A 20 44 46 53 5F 43 4F 4D 50 49 4C 45 52 5F 33 5F 55 50
20 20 20 20 3A 20 44 65 6C 70 68 69 20 33 2E 30 78 20 6F 72 20 68 69 67
68 65 72 2C 20 6F 72 20 43 2B 2B 42 20 33 2E 30 78 20 6F 72 20 68 69 67
68 65 72 20 69 73 20 2A 29 0D 0A 28 2A 20 74 68 65 20 63 6F 6D 70 69 6C
65 72 2E 20 2A 29 0D 0A 28 2A 20 44 46 53 5F 43 4F 4D 50 49 4C 45 52 5F
34 20 20 20 20 20 20 20 3A 20 44 65 6C 70 68 69 20 34 2E 30 78 20 6F 72
20 43 2B 2B 42 20 34 2E 30 78 20 69 73 20 74 68 65 20 63 6F 6D 70 69 6C
65 72 2E 20 2A 29 0D 0A 28 2A 20 44 46 53 5F 43 4F 4D 50 49 4C 45 52 5F
34 5F 55 50 20 20 20 20 3A 20 44 65 6C 70 68 69 20 34 2E 30 78 20 6F 72
20 68 69 67 68 65 72 2C 20 6F 72 20 43 2B 2B 42 20 34 2E 30 78 20 6F 72
20 68 69 67 68 65 72 20 69 73 20 2A 29 0D 0A 28 2A 20 74 68 65 20 63 6F
6D 70 69 6C 65 72 2E 20 2A 29 0D 0A 28 2A 20 44 46 53 5F 43 4F 4D 50 49
4C 45 52 5F 35 20 20 20 20 20 20 20 3A 20 44 65 6C 70 68 69 20 35 2E 30
78 20 6F 72 20 43 2B 2B 42 20 35 2E 30 78 20 69 73 20 74 68 65 20 63 6F
6D 70 69 6C 65 72 2E 20 2A 29 0D 0A 28 2A 20 44 46 53 5F 43 4F 4D 50 49
4C 45 52 5F 35 5F 55 50 20 20 20 20 3A 20 44 65 6C 70 68 69 20 35 2E 30
78 20 6F 72 20 68 69 67 68 65 72 2C 20 6F 72 20 43 2B 2B 42 20 35 2E 30
78 20 6F 72 20 68 69 67 68 65 72 20 69 73 20 2A 29 0D 0A 28 2A 20 74 68
65 20 63 6F 6D 70 69 6C 65 72 2E 20 2A 29 0D 0A 28 2A 20 44 46 53 5F 43
4F 4D 50 49 4C 45 52 5F 36 20 20 20 20 20 20 20 3A 20 44 65 6C 70 68 69
20 36 2E 30 78 20 6F 72 20 43 2B 2B 42 20 36 2E 30 78 20 69 73 20 74 68
65 20 63 6F 6D 70 69 6C 65 72 2E 20 2A 29 0D 0A 28 2A 20 44 46 53 5F 43
4F 4D 50 49 4C 45 52 5F 36 5F 55 50 20 20 20 20 3A 20 44 65 6C 70 68 69
20 36 2E 30 78 20 6F 72 20 68 69 67 68 65 72 2C 20 6F 72 20 43 2B 2B 42
20 36 2E 30 78 20 6F 72 20 68 69 67 68 65 72 20 69 73 20 2A 29 0D 0A 28
2A 20 74 68 65 20 63 6F 6D 70 69 6C 65 72 2E 20 2A 29 0D 0A 28 2A 20 44
46 53 5F 55 4E 4B 4E 4F 57 4E 5F 43 4F 4D 50 49 4C 45 52 20 3A 20 4E 6F
20 73 65 6E 73 65 20 63 6F 75 6C 64 20 62 65 20 6D 61 64 65 20 6F 66 20
74 68 65 20 63 6F 6D 70 69 6C 69 61 74 69 6F 6E 20 2A 29 0D 0A 28 2A 20
65 6E 76 69 72 6F 6E 6D 65 6E 74 2E 20 2A 29 0D 0A 28 2A 20 44 46 53 5F
43 50 50 42 20 20 20 20 20 20 20 20 20 20 20 20 20 3A 20 41 6E 79 20 76
65 72 73 69 6F 6E 20 6F 66 20 43 2B 2B 42 20 69 73 20 62 65 69 6E 67 20
75 73 65 64 2E 20 2A 29 0D 0A 28 2A 20 44 46 53 5F 43 50 50 42 5F 31 20
20 20 20 20 20 20 20 20 20 20 3A 20 43 2B 2B 42 20 76 31 2E 30 78 20 69
73 20 62 65 69 6E 67 20 75 73 65 64 2E 20 2A 29 0D 0A 28 2A 20 44 46 53
5F 43 50 50 42 5F 33 20 20 20 20 20 20 20 20 20 20 20 3A 20 43 2B 2B 42
20 76 33 2E 30 78 20 69 73 20 62 65 69 6E 67 20 75 73 65 64 2E 20 2A 29
0D 0A 28 2A 20 44 46 53 5F 43 50 50 42 5F 33 5F 55 50 20 20 20 20 20 20
20 20 3A 20 43 2B 2B 42 20 76 33 2E 30 78 20 6F 72 20 68 69 67 68 65 72
20 69 73 20 62 65 69 6E 67 20 75 73 65 64 2E 20 2A 29 0D 0A 28 2A 20 44
46 53 5F 43 50 50 42 5F 34 20 20 20 20 20 20 20 20 20 20 20 3A 20 43 2B
2B 42 20 76 34 2E 30 78 20 69 73 20 62 65 69 6E 67 20 75 73 65 64 2E 20
2A 29 0D 0A 28 2A 20 44 46 53 5F 43 50 50 42 5F 34 5F 55 50 20 20 20 20
20 20 20 20 3A 20 43 2B 2B 42 20 76 34 2E 30 78 20 6F 72 20 68 69 67 68
65 72 20 69 73 20 62 65 69 6E 67 20 75 73 65 64 2E 20 2A 29 0D 0A 28 2A
20 44 46 53 5F 43 50 50 42 5F 35 20 20 20 20 20 20 20 20 20 20 20 3A 20
43 2B 2B 42 20 76 35 2E 30 78 20 69 73 20 62 65 69 6E 67 20 75 73 65 64
2E 20 2A 29 0D 0A 28 2A 20 44 46 53 5F 43 50 50 42 5F 35 5F 55 50 20 20
20 20 20 20 20 20 3A 20 43 2B 2B 42 20 76 35 2E 30 78 20 6F 72 20 68 69
67 68 65 72 20 69 73 20 62 65 69 6E 67 20 75 73 65 64 2E 20 2A 29 0D 0A
28 2A 20 44 46 53 5F 44 45 4C 50 48 49 20 20 20 20 20 20 20 20 20 20 20
3A 20 41 6E 79 20 76 65 72 73 69 6F 6E 20 6F 66 20 44 65 6C 70 68 69 20
69 73 20 62 65 69 6E 67 20 75 73 65 64 2E 20 2A 29 0D 0A 28 2A 20 44 46
53 5F 44 45 4C 50 48 49 5F 31 20 20 20 20 20 20 20 20 20 3A 20 44 65 6C
70 68 69 20 76 31 2E 30 78 20 69 73 20 62 65 69 6E 67 20 75 73 65 64 2E
20 2A 29 0D 0A 28 2A 20 44 46 53 5F 44 45 4C 50 48 49 5F 32 20 20 20 20
20 20 20 20 20 3A 20 44 65 6C 70 68 69 20 76 32 2E 30 78 20 69 73 20 62
65 69 6E 67 20 75 73 65 64 2E 20 2A 29 0D 0A 28 2A 20 44 46 53 5F 44 45
4C 50 48 49 5F 32 5F 55 50 20 20 20 20 20 20 3A 20 44 65 6C 70 68 69 20
76 32 2E 30 78 20 6F 72 20 68 69 67 68 65 72 20 69 73 20 62 65 69 6E 67
20 75 73 65 64 2E 20 2A 29 0D 0A 28 2A 20 44 46 53 5F 44 45 4C 50 48 49
5F 33 20 20 20 20 20 20 20 20 20 3A 20 44 65 6C 70 68 69 20 76 33 2E 30
78 20 69 73 20 62 65 69 6E 67 20 75 73 65 64 2E 20 2A 29 0D 0A 28 2A 20
44 46 53 5F 44 45 4C 50 48 49 5F 33 5F 55 50 20 20 20 20 20 20 3A 20 44
65 6C 70 68 69 20 76 33 2E 30 78 20 6F 72 20 68 69 67 68 65 72 20 69 73
20 62 65 69 6E 67 20 75 73 65 64 2E 20 2A 29 0D 0A 28 2A 20 44 46 53 5F
44 45 4C 50 48 49 5F 34 20 20 20 20 20 20 20 20 20 3A 20 44 65 6C 70 68
69 20 76 34 2E 30 78 20 69 73 20 62 65 69 6E 67 20 75 73 65 64 2E 20 2A
29 0D 0A 28 2A 20 44 46 53 5F 44 45 4C 50 48 49 5F 34 5F 55 50 20 20 20
20 20 20 3A 20 44 65 6C 70 68 69 20 76 34 2E 30 78 20 6F 72 20 68 69 67
68 65 72 20 69 73 20 62 65 69 6E 67 20 75 73 65 64 2E 20 2A 29 0D 0A 28
2A 20 44 46 53 5F 44 45 4C 50 48 49 5F 35 20 20 20 20 20 20 20 20 20 3A
20 44 65 6C 70 68 69 20 76 35 2E 30 78 20 69 73 20 62 65 69 6E 67 20 75
73 65 64 2E 20 2A 29 0D 0A 28 2A 20 44 46 53 5F 44 45 4C 50 48 49 5F 35
5F 55 50 20 20 20 20 20 20 3A 20 44 65 6C 70 68 69 20 76 35 2E 30 78 20
6F 72 20 68 69 67 68 65 72 20 69 73 20 62 65 69 6E 67 20 75 73 65 64 2E
20 2A 29 0D 0A 28 2A 20 44 46 53 5F 44 45 4C 50 48 49 5F 36 20 20 20 20
20 20 20 20 20 3A 20 44 65 6C 70 68 69 20 76 36 2E 30 78 20 69 73 20 62
65 69 6E 67 20 75 73 65 64 2E 20 2A 29 0D 0A 28 2A 20 44 46 53 5F 44 45
4C 50 48 49 5F 36 5F 55 50 20 20 20 20 20 20 3A 20 44 65 6C 70 68 69 20
76 36 2E 30 78 20 6F 72 20 68 69 67 68 65 72 20 69 73 20 62 65 69 6E 67
20 75 73 65 64 2E 20 2A 29 0D 0A 28 2A 20 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A
2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A
2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A
2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 20 2A 29 0D 0A 0D
0A 7B 20 41 6C 6C 20 44 46 53 20 63 6F 6D 70 6F 6E 65 6E 74 73 20 72 65
6C 79 20 6F 6E 20 63 6F 6D 70 6C 65 74 65 20 62 6F 6F 6C 65 61 6E 20 65
76 61 6C 20 63 6F 6D 70 69 6C 65 72 20 64 69 72 65 63 74 69 76 65 20 73
65 74 20 6F 66 66 2E 20 7D 0D 0A 7B 24 42 2D 7D 0D 0A 7B 24 44 45 46 49
4E 45 20 44 45 4C 50 48 49 5F 46 52 45 45 5F 53 54 55 46 46 7D 0D 0A 7B
24 49 46 44 45 46 20 57 49 4E 33 32 7D 0D 0A 7B 24 44 45 46 49 4E 45 20
44 46 53 5F 57 49 4E 33 32 7D 0D 0A 7B 24 45 4C 53 45 7D 0D 0A 7B 24 44
45 46 49 4E 45 20 44 46 53 5F 57 49 4E 31 36 7D 0D 0A 7B 24 45 4E 44 49
46 7D 0D 0A 7B 24 49 46 44 45 46 20 56 45 52 31 34 30 7D 0D 0A 7B 24 44
45 46 49 4E 45 20 44 46 53 5F 43 4F 4D 50 49 4C 45 52 5F 36 7D 0D 0A 7B
24 44 45 46 49 4E 45 20 44 46 53 5F 44 45 4C 50 48 49 7D 0D 0A 7B 24 44
45 46 49 4E 45 20 44 46 53 5F 44 45 4C 50 48 49 5F 36 7D 0D 0A 7B 24 45
4E 44 49 46 7D 0D 0A 7B 24 49 46 44 45 46 20 56 45 52 31 33 30 7D 0D 0A
7B 24 44 45 46 49 4E 45 20 44 46 53 5F 43 4F 4D 50 49 4C 45 52 5F 35 7D
0D 0A 7B 24 49 46 44 45 46 20 42 43 42 7D 0D 0A 7B 24 44 45 46 49 4E 45
20 44 46 53 5F 43 50 50 42 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53
5F 43 50 50 42 5F 35 7D 0D 0A 7B 24 45 4C 53 45 7D 0D 0A 7B 24 44 45 46
49 4E 45 20 44 46 53 5F 44 45 4C 50 48 49 7D 0D 0A 7B 24 44 45 46 49 4E
45 20 44 46 53 5F 44 45 4C 50 48 49 5F 35 7D 0D 0A 7B 24 45 4E 44 49 46
7D 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 7B 24 49 46 44 45 46 20 56 45 52
31 32 35 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 43 4F 4D 50 49
4C 45 52 5F 34 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 43 50 50
42 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 43 50 50 42 5F 34 7D
0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 7B 24 49 46 44 45 46 20 56 45 52 31
32 30 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 43 4F 4D 50 49 4C
45 52 5F 34 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 44 45 4C 50
48 49 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 44 45 4C 50 48 49
5F 34 7D 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 7B 24 49 46 44 45 46 20 56
45 52 31 31 30 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 43 4F 4D
50 49 4C 45 52 5F 33 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 43
50 50 42 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 43 50 50 42 5F
33 7D 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 7B 24 49 46 44 45 46 20 56 45
52 31 30 30 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 43 4F 4D 50
49 4C 45 52 5F 33 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 44 45
4C 50 48 49 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 44 45 4C 50
48 49 5F 33 7D 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 7B 24 49 46 44 45 46
20 56 45 52 39 33 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 43 4F
4D 50 49 4C 45 52 5F 32 7D 20 20 7B 20 43 2B 2B 42 20 76 31 20 63 6F 6D
70 69 6C 65 72 20 69 73 20 72 65 61 6C 6C 79 20 76 32 20 7D 0D 0A 7B 24
44 45 46 49 4E 45 20 44 46 53 5F 43 50 50 42 7D 0D 0A 7B 24 44 45 46 49
4E 45 20 44 46 53 5F 43 50 50 42 5F 31 7D 0D 0A 7B 20 2E 24 44 45 46 49
4E 45 20 44 46 53 5F 55 53 45 44 45 46 53 48 4C 4F 42 4A 20 7D 20 7B 20
43 2B 2B 42 20 31 20 68 61 73 20 74 68 65 20 63 6F 72 72 65 63 74 20 53
48 4C 4F 42 4A 2E 48 2C 20 62 75 74 0D 0A 20 20 53 48 4C 4F 42 4A 2E 50
41 53 20 68 61 73 20 65 72 72 6F 72 73 20 73 6F 20 74 68 69 73 20 69 73
6E 27 74 20 64 65 66 69 6E 65 64 20 7D 0D 0A 7B 24 45 4E 44 49 46 7D 0D
0A 7B 24 49 46 44 45 46 20 56 45 52 39 30 7D 0D 0A 7B 24 44 45 46 49 4E
45 20 44 46 53 5F 43 4F 4D 50 49 4C 45 52 5F 32 7D 0D 0A 7B 24 44 45 46
49 4E 45 20 44 46 53 5F 44 45 4C 50 48 49 7D 0D 0A 7B 24 44 45 46 49 4E
45 20 44 46 53 5F 44 45 4C 50 48 49 5F 32 7D 0D 0A 7B 24 45 4E 44 49 46
7D 0D 0A 7B 24 49 46 44 45 46 20 56 45 52 38 30 7D 0D 0A 7B 24 44 45 46
49 4E 45 20 44 46 53 5F 43 4F 4D 50 49 4C 45 52 5F 31 7D 0D 0A 7B 24 44
45 46 49 4E 45 20 44 46 53 5F 44 45 4C 50 48 49 7D 0D 0A 7B 24 44 45 46
49 4E 45 20 44 46 53 5F 44 45 4C 50 48 49 5F 31 7D 0D 0A 7B 24 45 4E 44
49 46 7D 0D 0A 7B 24 49 46 4E 44 45 46 20 44 46 53 5F 43 50 50 42 7D 0D
0A 7B 24 49 46 4E 44 45 46 20 44 46 53 5F 44 45 4C 50 48 49 7D 0D 0A 7B
20 44 6F 6E 27 74 20 6B 6E 6F 77 20 77 68 61 74 20 74 68 65 20 68 65 6C
6C 20 69 74 20 69 73 2E 20 20 43 6F 75 6C 64 20 62 65 20 6E 65 77 20 76
65 72 73 69 6F 6E 2C 20 6F 72 20 63 6F 75 6C 64 20 62 65 20 6F 6C 64 20
42 50 2E 20 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 55 4E 4B 4E
4F 57 4E 5F 43 4F 4D 50 49 4C 45 52 7D 0D 0A 7B 24 45 4E 44 49 46 7D 0D
0A 7B 24 45 4E 44 49 46 7D 0D 0A 7B 24 49 46 44 45 46 20 44 46 53 5F 43
4F 4D 50 49 4C 45 52 5F 31 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53
5F 43 4F 4D 50 49 4C 45 52 5F 31 5F 55 50 7D 0D 0A 7B 24 45 4E 44 49 46
7D 0D 0A 7B 24 49 46 44 45 46 20 44 46 53 5F 43 4F 4D 50 49 4C 45 52 5F
32 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 43 4F 4D 50 49 4C 45
52 5F 31 5F 55 50 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 43 4F
4D 50 49 4C 45 52 5F 32 5F 55 50 7D 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A
7B 24 49 46 44 45 46 20 44 46 53 5F 43 4F 4D 50 49 4C 45 52 5F 33 7D 0D
0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 43 4F 4D 50 49 4C 45 52 5F 31
5F 55 50 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 43 4F 4D 50 49
4C 45 52 5F 32 5F 55 50 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F
43 4F 4D 50 49 4C 45 52 5F 33 5F 55 50 7D 0D 0A 7B 24 45 4E 44 49 46 7D
0D 0A 7B 24 49 46 44 45 46 20 44 46 53 5F 43 4F 4D 50 49 4C 45 52 5F 34
7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 43 4F 4D 50 49 4C 45 52
5F 31 5F 55 50 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 43 4F 4D
50 49 4C 45 52 5F 32 5F 55 50 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46
53 5F 43 4F 4D 50 49 4C 45 52 5F 33 5F 55 50 7D 0D 0A 7B 24 44 45 46 49
4E 45 20 44 46 53 5F 43 4F 4D 50 49 4C 45 52 5F 34 5F 55 50 7D 0D 0A 7B
24 45 4E 44 49 46 7D 0D 0A 7B 24 49 46 44 45 46 20 44 46 53 5F 43 4F 4D
50 49 4C 45 52 5F 35 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 43
4F 4D 50 49 4C 45 52 5F 31 5F 55 50 7D 0D 0A 7B 24 44 45 46 49 4E 45 20
44 46 53 5F 43 4F 4D 50 49 4C 45 52 5F 32 5F 55 50 7D 0D 0A 7B 24 44 45
46 49 4E 45 20 44 46 53 5F 43 4F 4D 50 49 4C 45 52 5F 33 5F 55 50 7D 0D
0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 43 4F 4D 50 49 4C 45 52 5F 34
5F 55 50 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 43 4F 4D 50 49
4C 45 52 5F 35 5F 55 50 7D 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 7B 24 49
46 44 45 46 20 44 46 53 5F 43 4F 4D 50 49 4C 45 52 5F 36 7D 0D 0A 7B 24
44 45 46 49 4E 45 20 44 46 53 5F 43 4F 4D 50 49 4C 45 52 5F 31 5F 55 50
7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 43 4F 4D 50 49 4C 45 52
5F 32 5F 55 50 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 43 4F 4D
50 49 4C 45 52 5F 33 5F 55 50 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46
53 5F 43 4F 4D 50 49 4C 45 52 5F 34 5F 55 50 7D 0D 0A 7B 24 44 45 46 49
4E 45 20 44 46 53 5F 43 4F 4D 50 49 4C 45 52 5F 35 5F 55 50 7D 0D 0A 7B
24 44 45 46 49 4E 45 20 44 46 53 5F 43 4F 4D 50 49 4C 45 52 5F 36 5F 55
50 7D 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 7B 24 49 46 44 45 46 20 44 46
53 5F 44 45 4C 50 48 49 5F 32 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46
53 5F 44 45 4C 50 48 49 5F 32 5F 55 50 7D 0D 0A 7B 24 45 4E 44 49 46 7D
0D 0A 7B 24 49 46 44 45 46 20 44 46 53 5F 44 45 4C 50 48 49 5F 33 7D 0D
0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 44 45 4C 50 48 49 5F 32 5F 55
50 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 44 45 4C 50 48 49 5F
33 5F 55 50 7D 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 7B 24 49 46 44 45 46
20 44 46 53 5F 44 45 4C 50 48 49 5F 34 7D 0D 0A 7B 24 44 45 46 49 4E 45
20 44 46 53 5F 44 45 4C 50 48 49 5F 32 5F 55 50 7D 0D 0A 7B 24 44 45 46
49 4E 45 20 44 46 53 5F 44 45 4C 50 48 49 5F 33 5F 55 50 7D 0D 0A 7B 24
44 45 46 49 4E 45 20 44 46 53 5F 44 45 4C 50 48 49 5F 34 5F 55 50 7D 0D
0A 7B 24 45 4E 44 49 46 7D 0D 0A 7B 24 49 46 44 45 46 20 44 46 53 5F 44
45 4C 50 48 49 5F 35 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 44
45 4C 50 48 49 5F 32 5F 55 50 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46
53 5F 44 45 4C 50 48 49 5F 33 5F 55 50 7D 0D 0A 7B 24 44 45 46 49 4E 45
20 44 46 53 5F 44 45 4C 50 48 49 5F 34 5F 55 50 7D 0D 0A 7B 24 44 45 46
49 4E 45 20 44 46 53 5F 44 45 4C 50 48 49 5F 35 5F 55 50 7D 0D 0A 7B 24
45 4E 44 49 46 7D 0D 0A 7B 24 49 46 44 45 46 20 44 46 53 5F 44 45 4C 50
48 49 5F 36 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 44 45 4C 50
48 49 5F 32 5F 55 50 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 44
45 4C 50 48 49 5F 33 5F 55 50 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46
53 5F 44 45 4C 50 48 49 5F 34 5F 55 50 7D 0D 0A 7B 24 44 45 46 49 4E 45
20 44 46 53 5F 44 45 4C 50 48 49 5F 35 5F 55 50 7D 0D 0A 7B 24 44 45 46
49 4E 45 20 44 46 53 5F 44 45 4C 50 48 49 5F 36 5F 55 50 7D 0D 0A 7B 24
45 4E 44 49 46 7D 0D 0A 7B 24 49 46 44 45 46 20 44 46 53 5F 43 50 50 42
5F 33 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 43 50 50 42 5F 33
5F 55 50 7D 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 7B 24 49 46 44 45 46 20
44 46 53 5F 43 50 50 42 5F 34 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46
53 5F 43 50 50 42 5F 33 5F 55 50 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44
46 53 5F 43 50 50 42 5F 34 5F 55 50 7D 0D 0A 7B 24 45 4E 44 49 46 7D 0D
0A 7B 24 49 46 44 45 46 20 44 46 53 5F 43 50 50 42 5F 35 7D 0D 0A 7B 24
44 45 46 49 4E 45 20 44 46 53 5F 43 50 50 42 5F 33 5F 55 50 7D 0D 0A 7B
24 44 45 46 49 4E 45 20 44 46 53 5F 43 50 50 42 5F 34 5F 55 50 7D 0D 0A
7B 24 44 45 46 49 4E 45 20 44 46 53 5F 43 50 50 42 5F 35 5F 55 50 7D 0D
0A 7B 24 45 4E 44 49 46 7D 0D 0A 7B 24 49 46 44 45 46 20 44 46 53 5F 43
4F 4D 50 49 4C 45 52 5F 33 5F 55 50 7D 0D 0A 7B 24 44 45 46 49 4E 45 20
44 46 53 5F 4E 4F 5F 43 4F 4D 5F 43 4C 45 41 4E 55 50 7D 0D 0A 7B 24 44
45 46 49 4E 45 20 44 46 53 5F 55 53 45 44 45 46 53 48 4C 4F 42 4A 7D 20
7B 20 4F 6E 6C 79 20 44 33 2B 20 61 6E 64 20 43 2B 2B 42 20 33 2B 20 68
61 76 65 20 6E 6F 20 65 72 72 6F 72 73 20 69 6E 20 53 48 4C 4F 42 4A 20
7D 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 7B 24 49 46 44 45 46 20 44 46 53
5F 43 50 50 42 5F 33 5F 55 50 7D 0D 0A 2F 2F 20 43 2B 2B 42 75 69 6C 64
65 72 20 72 65 71 75 69 72 65 73 20 74 68 69 73 20 69 66 20 79 6F 75 20
75 73 65 20 44 65 6C 70 68 69 20 63 6F 6D 70 6F 6E 65 6E 74 73 20 69 6E
20 72 75 6E 2D 74 69 6D 65 20 70 61 63 6B 61 67 65 73 2E 0D 0A 7B 24 4F
42 4A 45 58 50 4F 52 54 41 4C 4C 20 4F 6E 7D 0D 0A 7B 24 45 4E 44 49 46
7D 0D 0A 7B 24 49 46 44 45 46 20 44 46 53 5F 43 4F 4D 50 49 4C 45 52 5F
36 5F 55 50 7D 0D 0A 2F 2F 20 44 65 6C 70 68 69 20 36 20 70 72 65 74 74
79 20 6D 75 63 68 20 6B 69 6C 6C 73 20 6F 66 66 20 74 68 65 20 44 73 67
6E 49 6E 74 66 20 75 6E 69 74 20 66 6F 72 20 67 6F 6F 64 2E 0D 0A 7B 24
44 45 46 49 4E 45 20 44 46 53 5F 4E 4F 5F 44 53 47 4E 49 4E 54 46 7D 0D
0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 44 45 53 49 47 4E 45 52 53 45
4C 45 43 54 49 4F 4E 53 7D 0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F
49 50 52 4F 50 45 52 54 59 7D 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 7B 20
2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D
2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D
2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D
2D 2D 2D 2D 2D 2D 20 7D 0D 0A 7B 20 54 64 66 73 56 65 72 73 69 6F 6E 49
6E 66 6F 52 65 73 6F 75 72 63 65 20 76 32 2E 33 36 20 7D 0D 0A 7B 20 2D
2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D
2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D
2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D
2D 2D 2D 2D 2D 20 7D 0D 0A 7B 20 41 20 63 6F 6D 70 6F 6E 65 6E 74 20 74
6F 20 72 65 61 64 20 76 65 72 73 69 6F 6E 20 69 6E 66 6F 20 72 65 73 6F
75 72 63 65 73 2E 20 20 49 74 20 69 73 20 69 6E 74 65 6E 64 65 64 20 66
6F 72 20 44 65 6C 70 68 69 20 33 2C 20 7D 0D 0A 7B 20 62 75 74 20 73 68
6F 75 6C 64 20 77 6F 72 6B 20 77 69 74 68 20 61 6E 79 20 66 69 6C 65 20
74 68 61 74 20 63 6F 6E 74 61 69 6E 73 20 61 20 70 72 6F 70 65 72 6C 79
20 66 6F 72 6D 61 74 74 65 64 20 72 65 73 6F 75 72 63 65 2E 20 7D 0D 0A
7B 20 7D 0D 0A 7B 20 43 6F 70 79 72 69 67 68 74 20 32 30 30 30 2D 32 30
30 31 2C 20 42 72 61 64 20 53 74 6F 77 65 72 73 2E 20 20 41 6C 6C 20 52
69 67 68 74 73 20 52 65 73 65 72 76 65 64 2E 20 7D 0D 0A 7B 20 7D 0D 0A
7B 20 43 6F 70 79 72 69 67 68 74 3A 20 7D 0D 0A 7B 20 41 6C 6C 20 44 65
6C 70 68 69 20 46 72 65 65 20 53 74 75 66 66 20 28 68 65 72 65 61 66 74
65 72 20 22 44 46 53 22 29 20 73 6F 75 72 63 65 20 63 6F 64 65 20 69 73
20 63 6F 70 79 72 69 67 68 74 65 64 20 62 79 20 7D 0D 0A 7B 20 42 72 61
64 6C 65 79 20 44 2E 20 53 74 6F 77 65 72 73 20 28 68 65 72 65 61 66 74
65 72 20 22 61 75 74 68 6F 72 22 29 2C 20 61 6E 64 20 73 68 61 6C 6C 20
72 65 6D 61 69 6E 20 74 68 65 20 65 78 63 6C 75 73 69 76 65 20 7D 0D 0A
7B 20 70 72 6F 70 65 72 74 79 20 6F 66 20 74 68 65 20 61 75 74 68 6F 72
2E 20 7D 0D 0A 7B 20 7D 0D 0A 7B 20 44 69 73 74 72 69 62 75 74 69 6F 6E
20 52 69 67 68 74 73 3A 20 7D 0D 0A 7B 20 59 6F 75 20 61 72 65 20 67 72
61 6E 74 65 64 20 61 20 6E 6F 6E 2D 65 78 6C 75 73 69 76 65 2C 20 72 6F
79 61 6C 74 79 2D 66 72 65 65 20 72 69 67 68 74 20 74 6F 20 70 72 6F 64
75 63 65 20 61 6E 64 20 64 69 73 74 72 69 62 75 74 65 20 7D 0D 0A 7B 20
63 6F 6D 70 69 6C 65 64 20 62 69 6E 61 72 79 20 66 69 6C 65 73 20 28 65
78 65 63 75 74 61 62 6C 65 73 2C 20 44 4C 4C 73 2C 20 65 74 63 2E 29 20
74 68 61 74 20 61 72 65 20 62 75 69 6C 74 20 77 69 74 68 20 61 6E 79 20
6F 66 20 7D 0D 0A 7B 20 74 68 65 20 44 46 53 20 73 6F 75 72 63 65 20 63
6F 64 65 20 75 6E 6C 65 73 73 20 73 70 65 63 69 66 69 63 61 6C 6C 79 20
73 74 61 74 65 64 20 6F 74 68 65 72 77 69 73 65 2E 20 7D 0D 0A 7B 20 59
6F 75 20 61 72 65 20 66 75 72 74 68 65 72 20 67 72 61 6E 74 65 64 20 70
65 72 6D 69 73 73 69 6F 6E 20 74 6F 20 72 65 64 69 73 74 72 69 62 75 74
65 20 61 6E 79 20 6F 66 20 74 68 65 20 44 46 53 20 73 6F 75 72 63 65 20
7D 0D 0A 7B 20 63 6F 64 65 20 69 6E 20 73 6F 75 72 63 65 20 63 6F 64 65
20 66 6F 72 6D 2C 20 70 72 6F 76 69 64 65 64 20 74 68 61 74 20 74 68 65
20 6F 72 69 67 69 6E 61 6C 20 61 72 63 68 69 76 65 20 61 73 20 66 6F 75
6E 64 20 6F 6E 20 74 68 65 20 7D 0D 0A 7B 20 44 46 53 20 77 65 62 20 73
69 74 65 20 28 68 74 74 70 3A 2F 2F 77 77 77 2E 64 65 6C 70 68 69 66 72
65 65 73 74 75 66 66 2E 63 6F 6D 29 20 69 73 20 64 69 73 74 72 69 62 75
74 65 64 20 75 6E 6D 6F 64 69 66 69 65 64 2E 20 46 6F 72 20 7D 0D 0A 7B
20 65 78 61 6D 70 6C 65 2C 20 69 66 20 79 6F 75 20 63 72 65 61 74 65 20
61 20 64 65 73 63 65 6E 64 61 6E 74 20 6F 66 20 54 44 46 53 43 6F 6C 6F
72 42 75 74 74 6F 6E 2C 20 79 6F 75 20 6D 75 73 74 20 69 6E 63 6C 75 64
65 20 69 6E 20 7D 0D 0A 7B 20 74 68 65 20 64 69 73 74 72 69 62 75 74 69
6F 6E 20 70 61 63 6B 61 67 65 20 74 68 65 20 63 6F 6C 6F 72 62 74 6E 2E
7A 69 70 20 66 69 6C 65 20 69 6E 20 74 68 65 20 65 78 61 63 74 20 66 6F
72 6D 20 74 68 61 74 20 79 6F 75 20 7D 0D 0A 7B 20 64 6F 77 6E 6C 6F 61
64 65 64 20 69 74 20 66 72 6F 6D 20 68 74 74 70 3A 2F 2F 77 77 77 2E 64
65 6C 70 68 69 66 72 65 65 73 74 75 66 66 2E 63 6F 6D 2F 6D 69 6E 65 2F
66 69 6C 65 73 2F 63 6F 6C 6F 72 62 74 6E 2E 7A 69 70 2E 20 7D 0D 0A 7B
20 7D 0D 0A 7B 20 52 65 73 74 72 69 63 74 69 6F 6E 73 3A 20 7D 0D 0A 7B
20 57 69 74 68 6F 75 74 20 74 68 65 20 65 78 70 72 65 73 73 20 77 72 69
74 74 65 6E 20 63 6F 6E 73 65 6E 74 20 6F 66 20 74 68 65 20 61 75 74 68
6F 72 2C 20 79 6F 75 20 6D 61 79 20 6E 6F 74 3A 20 7D 0D 0A 7B 20 2A 20
44 69 73 74 72 69 62 75 74 65 20 6D 6F 64 69 66 69 65 64 20 76 65 72 73
69 6F 6E 73 20 6F 66 20 61 6E 79 20 44 46 53 20 73 6F 75 72 63 65 20 63
6F 64 65 20 62 79 20 69 74 73 65 6C 66 2E 20 59 6F 75 20 6D 75 73 74 20
7D 0D 0A 7B 20 69 6E 63 6C 75 64 65 20 74 68 65 20 6F 72 69 67 69 6E 61
6C 20 61 72 63 68 69 76 65 20 61 73 20 79 6F 75 20 66 6F 75 6E 64 20 69
74 20 61 74 20 74 68 65 20 44 46 53 20 73 69 74 65 2E 20 7D 0D 0A 7B 20
2A 20 53 65 6C 6C 20 6F 72 20 6C 65 61 73 65 20 61 6E 79 20 70 6F 72 74
69 6F 6E 20 6F 66 20 44 46 53 20 73 6F 75 72 63 65 20 63 6F 64 65 2E 20
59 6F 75 20 61 72 65 2C 20 6F 66 20 63 6F 75 72 73 65 2C 20 66 72 65 65
20 7D 0D 0A 7B 20 74 6F 20 73 65 6C 6C 20 61 6E 79 20 6F 66 20 79 6F 75
72 20 6F 77 6E 20 6F 72 69 67 69 6E 61 6C 20 63 6F 64 65 20 74 68 61 74
20 77 6F 72 6B 73 20 77 69 74 68 2C 20 65 6E 68 61 6E 63 65 73 2C 20 65
74 63 2E 20 7D 0D 0A 7B 20 44 46 53 20 73 6F 75 72 63 65 20 63 6F 64 65
2E 20 7D 0D 0A 7B 20 2A 20 44 69 73 74 72 69 62 75 74 65 20 44 46 53 20
73 6F 75 72 63 65 20 63 6F 64 65 20 66 6F 72 20 70 72 6F 66 69 74 2E 20
7D 0D 0A 7B 20 7D 0D 0A 7B 20 57 61 72 72 61 6E 74 79 3A 20 7D 0D 0A 7B
20 54 68 65 72 65 20 69 73 20 61 62 73 6F 6C 75 74 65 6C 79 20 6E 6F 20
77 61 72 72 61 6E 74 79 20 6F 66 20 61 6E 79 20 6B 69 6E 64 20 77 68 61
74 73 6F 65 76 65 72 20 77 69 74 68 20 61 6E 79 20 6F 66 20 74 68 65 20
44 46 53 20 7D 0D 0A 7B 20 73 6F 75 72 63 65 20 63 6F 64 65 20 28 68 65
72 65 61 66 74 65 72 20 22 73 6F 66 74 77 61 72 65 22 29 2E 20 54 68 65
20 73 6F 66 74 77 61 72 65 20 69 73 20 70 72 6F 76 69 64 65 64 20 74 6F
20 79 6F 75 20 22 41 53 2D 49 53 22 2C 20 7D 0D 0A 7B 20 61 6E 64 20 61
6C 6C 20 72 69 73 6B 73 20 61 6E 64 20 6C 6F 73 73 65 73 20 61 73 73 6F
63 69 61 74 65 64 20 77 69 74 68 20 69 74 27 73 20 75 73 65 20 61 72 65
20 61 73 73 75 6D 65 64 20 62 79 20 79 6F 75 2E 20 49 6E 20 6E 6F 20 7D
0D 0A 7B 20 65 76 65 6E 74 20 73 68 61 6C 6C 20 74 68 65 20 61 75 74 68
6F 72 20 6F 66 20 74 68 65 20 73 6F 66 74 61 72 65 2C 20 42 72 61 64 6C
65 79 20 44 2E 20 53 74 6F 77 65 72 73 2C 20 62 65 20 68 65 6C 64 20 7D
0D 0A 7B 20 61 63 63 6F 75 6E 74 61 62 6C 65 20 66 6F 72 20 61 6E 79 20
64 61 6D 61 67 65 73 20 6F 72 20 6C 6F 73 73 65 73 20 74 68 61 74 20 6D
61 79 20 6F 63 63 75 72 20 66 72 6F 6D 20 75 73 65 20 6F 72 20 6D 69 73
75 73 65 20 6F 66 20 7D 0D 0A 7B 20 74 68 65 20 73 6F 66 74 77 61 72 65
2E 20 7D 0D 0A 7B 20 7D 0D 0A 7B 20 53 75 70 70 6F 72 74 3A 20 7D 0D 0A
7B 20 53 75 70 70 6F 72 74 20 69 73 20 70 72 6F 76 69 64 65 64 20 76 69
61 20 74 68 65 20 44 46 53 20 53 75 70 70 6F 72 74 20 46 6F 72 75 6D 2C
20 77 68 69 63 68 20 69 73 20 61 20 77 65 62 2D 62 61 73 65 64 20 6D 65
73 73 61 67 65 20 7D 0D 0A 7B 20 73 79 73 74 65 6D 2E 20 20 59 6F 75 20
63 61 6E 20 66 69 6E 64 20 69 74 20 61 74 20 68 74 74 70 3A 2F 2F 77 77
77 2E 64 65 6C 70 68 69 66 72 65 65 73 74 75 66 66 2E 63 6F 6D 2F 64 69
73 63 75 73 2F 20 7D 0D 0A 7B 20 41 6C 6C 20 44 46 53 20 73 6F 75 72 63
65 20 63 6F 64 65 20 69 73 20 70 72 6F 76 69 64 65 64 20 66 72 65 65 20
6F 66 20 63 68 61 72 67 65 2E 20 41 73 20 73 75 63 68 2C 20 49 20 63 61
6E 20 6E 6F 74 20 67 75 61 72 61 6E 74 65 65 20 7D 0D 0A 7B 20 61 6E 79
20 73 75 70 70 6F 72 74 20 77 68 61 74 73 6F 65 76 65 72 2E 20 57 68 69
6C 65 20 49 20 64 6F 20 74 72 79 20 74 6F 20 61 6E 73 77 65 72 20 61 6C
6C 20 71 75 65 73 74 69 6F 6E 73 20 74 68 61 74 20 49 20 7D 0D 0A 7B 20
72 65 63 65 69 76 65 2C 20 61 6E 64 20 61 64 64 72 65 73 73 20 61 6C 6C
20 70 72 6F 62 6C 65 6D 73 20 74 68 61 74 20 61 72 65 20 72 65 70 6F 72
74 65 64 20 74 6F 20 6D 65 2C 20 79 6F 75 20 6D 75 73 74 20 7D 0D 0A 7B
20 75 6E 64 65 72 73 74 61 6E 64 20 74 68 61 74 20 49 20 73 69 6D 70 6C
79 20 63 61 6E 20 6E 6F 74 20 67 75 61 72 61 6E 74 65 65 20 74 68 61 74
20 74 68 69 73 20 77 69 6C 6C 20 61 6C 77 61 79 73 20 62 65 20 73 6F 2E
20 7D 0D 0A 7B 20 7D 0D 0A 7B 20 43 6C 61 72 69 66 69 63 61 74 69 6F 6E
73 3A 20 7D 0D 0A 7B 20 49 66 20 79 6F 75 20 6E 65 65 64 20 61 6E 79 20
66 75 72 74 68 65 72 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 2C 20 70 6C 65
61 73 65 20 66 65 65 6C 20 66 72 65 65 20 74 6F 20 63 6F 6E 74 61 63 74
20 6D 65 20 64 69 72 65 63 74 6C 79 2E 20 7D 0D 0A 7B 20 54 68 69 73 20
61 67 72 65 65 6D 65 6E 74 20 63 61 6E 20 62 65 20 66 6F 75 6E 64 20 6F
6E 6C 69 6E 65 20 61 74 20 6D 79 20 73 69 74 65 20 69 6E 20 74 68 65 20
22 4D 69 73 63 65 6C 6C 61 6E 65 6F 75 73 22 20 73 65 63 74 69 6F 6E 2E
20 7D 0D 0A 7B 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D
2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D
2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D
2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 7D 0D 0A 7B 20 54 68 65 20 6C 61
74 65 73 65 74 20 76 65 72 73 69 6F 6E 20 6F 66 20 6D 79 20 63 6F 6D 70
6F 6E 65 6E 74 73 20 61 72 65 20 61 6C 77 61 79 73 20 61 76 61 69 6C 61
62 6C 65 20 6F 6E 20 74 68 65 20 77 65 62 20 61 74 3A 20 7D 0D 0A 7B 20
68 74 74 70 3A 2F 2F 77 77 77 2E 64 65 6C 70 68 69 66 72 65 65 73 74 75
66 66 2E 63 6F 6D 2F 20 7D 0D 0A 7B 20 53 65 65 20 56 65 72 73 49 6E 66
6F 2E 74 78 74 20 66 6F 72 20 6E 6F 74 65 73 2C 20 6B 6E 6F 77 6E 20 69
73 73 75 65 73 2C 20 61 6E 64 20 72 65 76 69 73 69 6F 6E 20 68 69 73 74
6F 72 79 2E 20 7D 0D 0A 7B 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D
2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D
2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D
2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 7D 0D 0A 7B 20 44 61
74 65 20 6C 61 73 74 20 6D 6F 64 69 66 69 65 64 3A 20 20 4A 75 6E 65 20
32 38 2C 20 32 30 30 31 20 7D 0D 0A 7B 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D
2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D
2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D
2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 7D 0D 0A
0D 0A 7B 24 44 45 46 49 4E 45 20 44 46 53 5F 56 45 52 53 49 4F 4E 5F 49
4E 46 4F 5F 41 53 5F 43 4C 41 53 53 7D 0D 0A 7B 24 4D 2B 7D 0D 0A 75 6E
69 74 20 56 65 72 73 49 6E 66 6F 3B 0D 0A 0D 0A 69 6E 74 65 72 66 61 63
65 0D 0A 0D 0A 75 73 65 73 0D 0A 0D 0A 7B 24 49 46 44 45 46 20 44 46 53
5F 56 45 52 53 49 4F 4E 5F 49 4E 46 4F 5F 41 53 5F 43 4C 41 53 53 7D 0D
0A 7B 24 49 46 44 45 46 20 44 46 53 5F 57 49 4E 33 32 7D 0D 0A 20 20 57
69 6E 64 6F 77 73 2C 0D 0A 7B 24 45 4C 53 45 7D 0D 0A 20 20 57 69 6E 54
79 70 65 73 2C 20 57 69 6E 50 72 6F 63 73 2C 20 56 65 72 2C 0D 0A 7B 24
45 4E 44 49 46 7D 0D 0A 20 20 43 6C 61 73 73 65 73 2C 20 53 79 73 55 74
69 6C 73 3B 20 7B 20 49 20 72 65 61 6C 6C 79 20 68 61 74 65 20 46 6F 72
6D 73 20 7D 0D 0A 7B 24 45 4C 53 45 7D 0D 0A 7B 24 49 46 44 45 46 20 44
46 53 5F 57 49 4E 33 32 7D 0D 0A 57 69 6E 64 6F 77 73 2C 20 43 6F 6D 43
74 72 6C 73 2C 0D 0A 7B 24 45 4C 53 45 7D 0D 0A 20 20 57 69 6E 54 79 70
65 73 2C 20 57 69 6E 50 72 6F 63 73 2C 20 56 65 72 2C 20 47 72 69 64 73
2C 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 20 20 4D 65 73 73 61 67 65 73 2C
20 53 79 73 55 74 69 6C 73 2C 20 43 6C 61 73 73 65 73 2C 20 47 72 61 70
68 69 63 73 2C 20 46 6F 72 6D 73 2C 20 53 74 64 43 74 72 6C 73 3B 0D 0A
7B 24 45 4E 44 49 46 7D 0D 0A 0D 0A 63 6F 6E 73 74 0D 0A 20 20 7B 20 54
68 69 73 20 73 68 75 74 73 20 75 70 20 43 2B 2B 42 75 69 6C 64 65 72 20
33 20 61 62 6F 75 74 20 74 68 65 20 72 65 64 65 66 69 6E 69 74 6F 6E 20
62 65 69 6E 67 20 64 69 66 66 65 72 65 6E 74 2E 20 54 68 65 72 65 0D 0A
20 20 20 20 73 65 65 6D 73 20 74 6F 20 62 65 20 6E 6F 20 65 71 75 69 76
61 6C 65 6E 74 20 69 6E 20 43 31 2E 20 20 53 6F 72 72 79 2E 20 7D 0D 0A
7B 24 49 46 44 45 46 20 44 46 53 5F 43 50 50 42 5F 33 5F 55 50 7D 0D 0A
7B 24 45 58 54 45 52 4E 41 4C 53 59 4D 20 44 46 53 5F 43 4F 4D 50 4F 4E
45 4E 54 5F 56 45 52 53 49 4F 4E 7D 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A
20 20 44 46 53 5F 43 4F 4D 50 4F 4E 45 4E 54 5F 56 45 52 53 49 4F 4E 20
3D 20 27 54 64 66 73 56 65 72 73 69 6F 6E 49 6E 66 6F 52 65 73 6F 75 72
63 65 20 76 32 2E 33 36 27 3B 0D 0A 20 20 44 45 46 41 55 4C 54 5F 4C 41
4E 47 5F 49 44 20 3D 20 24 30 34 30 39 3B 0D 0A 20 20 44 45 46 41 55 4C
54 5F 43 48 41 52 5F 53 45 54 5F 49 44 20 3D 20 24 30 34 45 34 3B 0D 0A
20 20 44 45 46 41 55 4C 54 5F 4C 41 4E 47 5F 43 48 41 52 5F 53 45 54 20
3D 20 27 30 34 30 39 30 34 45 34 27 3B 0D 0A 0D 0A 7B 24 49 46 44 45 46
20 44 46 53 5F 43 4F 4D 50 49 4C 45 52 5F 33 5F 55 50 7D 0D 0A 0D 0A 72
65 73 6F 75 72 63 65 73 74 72 69 6E 67 0D 0A 7B 24 45 4C 53 45 7D 0D 0A
63 6F 6E 73 74 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 20 20 53 46 6C 61 67
44 65 62 75 67 20 3D 20 27 44 65 62 75 67 27 3B 0D 0A 20 20 53 46 6C 61
67 49 6E 66 6F 49 6E 66 65 72 72 65 64 20 3D 20 27 49 6E 66 6F 20 49 6E
66 65 72 72 65 64 27 3B 0D 0A 20 20 53 46 6C 61 67 50 61 74 63 68 65 64
20 3D 20 27 50 61 74 63 68 65 64 27 3B 0D 0A 20 20 53 46 6C 61 67 50 72
65 52 65 6C 65 61 73 65 20 3D 20 27 50 72 65 2D 52 65 6C 65 61 73 65 27
3B 0D 0A 20 20 53 46 6C 61 67 50 72 69 76 61 74 65 20 3D 20 27 50 72 69
76 61 74 65 27 3B 0D 0A 20 20 53 46 6C 61 67 53 70 65 63 69 61 6C 20 3D
20 27 53 70 65 63 69 61 6C 27 3B 0D 0A 20 20 53 48 65 61 64 65 72 52 65
73 6F 75 72 63 65 20 3D 20 27 52 65 73 6F 75 72 63 65 27 3B 0D 0A 20 20
53 48 65 61 64 65 72 56 61 6C 75 65 20 3D 20 27 56 61 6C 75 65 27 3B 0D
0A 0D 0A 20 20 7B 20 50 72 65 64 65 66 69 6E 65 64 20 72 65 73 6F 75 72
63 65 20 69 74 65 6D 20 63 61 70 74 69 6F 6E 73 2E 20 7D 0D 0A 20 20 53
52 65 73 43 61 70 43 6F 6D 70 61 6E 79 4E 61 6D 65 20 3D 20 27 43 6F 6D
70 61 6E 79 20 4E 61 6D 65 27 3B 0D 0A 20 20 53 52 65 73 43 61 70 46 69
6C 65 44 65 73 63 72 69 70 74 69 6F 6E 20 3D 20 27 46 69 6C 65 20 44 65
73 63 72 69 70 74 69 6F 6E 27 3B 0D 0A 20 20 53 52 65 73 43 61 70 46 69
6C 65 56 65 72 73 69 6F 6E 20 3D 20 27 46 69 6C 65 20 56 65 72 73 69 6F
6E 27 3B 0D 0A 20 20 53 52 65 73 43 61 70 49 6E 74 65 72 6E 61 6C 4E 61
6D 65 20 3D 20 27 49 6E 74 65 72 6E 61 6C 20 4E 61 6D 65 27 3B 0D 0A 20
20 53 52 65 73 43 61 70 4C 65 67 61 6C 43 6F 70 79 72 69 67 68 74 20 3D
20 27 4C 65 67 61 6C 20 43 6F 70 79 72 69 67 68 74 27 3B 0D 0A 20 20 53
52 65 73 43 61 70 4C 65 67 61 6C 54 72 61 64 65 6D 61 72 6B 73 20 3D 20
27 4C 65 67 61 6C 20 54 72 61 64 65 6D 61 72 6B 73 27 3B 0D 0A 20 20 53
52 65 73 43 61 70 4F 72 69 67 69 6E 61 6C 46 69 6C 65 6E 61 6D 65 20 3D
20 27 4F 72 69 67 69 6E 61 6C 20 46 69 6C 65 6E 61 6D 65 27 3B 0D 0A 20
20 53 52 65 73 43 61 70 50 72 6F 64 75 63 74 4E 61 6D 65 20 3D 20 27 50
72 6F 64 75 63 74 20 4E 61 6D 65 27 3B 0D 0A 20 20 53 52 65 73 43 61 70
50 72 6F 64 75 63 74 56 65 72 73 69 6F 6E 20 3D 20 27 50 72 6F 64 75 63
74 20 56 65 72 73 69 6F 6E 27 3B 0D 0A 20 20 53 52 65 73 43 61 70 43 6F
6D 6D 65 6E 74 73 20 3D 20 27 43 6F 6D 6D 65 6E 74 73 27 3B 0D 0A 20 20
53 52 65 73 43 61 70 42 75 69 6C 64 46 6C 61 67 73 20 3D 20 27 42 75 69
6C 64 20 46 6C 61 67 73 27 3B 0D 0A 0D 0A 20 20 7B 20 73 65 74 20 76 61
6C 75 65 73 20 74 6F 20 63 68 6F 6F 73 65 20 77 68 69 63 68 20 72 65 73
6F 75 72 63 65 73 20 61 72 65 20 73 65 65 6E 20 69 6E 20 74 68 65 20 67
72 69 64 2F 6C 69 73 74 76 69 65 77 20 7D 0D 0A 74 79 70 65 0D 0A 20 20
54 50 72 65 44 65 66 20 3D 20 28 70 64 43 6F 6D 70 61 6E 79 4E 61 6D 65
2C 20 70 64 46 69 6C 65 44 65 73 63 72 69 70 74 69 6F 6E 2C 20 70 64 46
69 6C 65 56 65 72 73 69 6F 6E 2C 20 70 64 49 6E 74 65 72 6E 61 6C 4E 61
6D 65 2C 20 70 64 4C 65 67 61 6C 43 6F 70 79 72 69 67 68 74 2C 20 70 64
4C 65 67 61 6C 54 72 61 64 65 6D 61 72 6B 73 2C 20 70 64 4F 72 69 67 69
6E 61 6C 46 69 6C 65 6E 61 6D 65 2C 20 70 64 50 72 6F 64 75 63 74 4E 61
6D 65 2C 0D 0A 20 20 20 20 70 64 50 72 6F 64 75 63 74 56 65 72 73 69 6F
6E 2C 20 70 64 43 6F 6D 6D 65 6E 74 73 2C 20 70 64 42 75 69 6C 64 46 6C
61 67 73 29 3B 0D 0A 20 20 54 50 72 65 44 65 66 73 20 3D 20 73 65 74 20
6F 66 20 54 50 72 65 44 65 66 3B 0D 0A 0D 0A 20 20 7B 20 62 75 74 20 74
6F 20 69 6E 64 65 78 20 70 72 6F 70 65 72 74 69 65 73 20 77 65 20 6E 65
65 64 20 69 6E 74 65 67 65 72 73 20 7D 0D 0A 63 6F 6E 73 74 0D 0A 20 20
49 44 58 5F 43 4F 4D 50 41 4E 59 4E 41 4D 45 20 3D 20 6F 72 64 28 70 64
43 6F 6D 70 61 6E 79 4E 61 6D 65 29 3B 0D 0A 20 20 49 44 58 5F 46 49 4C
45 44 45 53 43 52 49 50 54 49 4F 4E 20 3D 20 6F 72 64 28 70 64 46 69 6C
65 44 65 73 63 72 69 70 74 69 6F 6E 29 3B 0D 0A 20 20 49 44 58 5F 46 49
4C 45 56 45 52 53 49 4F 4E 20 3D 20 6F 72 64 28 70 64 46 69 6C 65 56 65
72 73 69 6F 6E 29 3B 0D 0A 20 20 49 44 58 5F 49 4E 54 45 52 4E 41 4C 4E
41 4D 45 20 3D 20 6F 72 64 28 70 64 49 6E 74 65 72 6E 61 6C 4E 61 6D 65
29 3B 0D 0A 20 20 49 44 58 5F 4C 45 47 41 4C 43 4F 50 59 52 49 47 48 54
20 3D 20 6F 72 64 28 70 64 4C 65 67 61 6C 43 6F 70 79 72 69 67 68 74 29
3B 0D 0A 20 20 49 44 58 5F 4C 45 47 41 4C 54 52 41 44 45 4D 41 52 4B 53
20 3D 20 6F 72 64 28 70 64 4C 65 67 61 6C 54 72 61 64 65 6D 61 72 6B 73
29 3B 0D 0A 20 20 49 44 58 5F 4F 52 49 47 49 4E 41 4C 46 49 4C 45 4E 41
4D 45 20 3D 20 6F 72 64 28 70 64 4F 72 69 67 69 6E 61 6C 46 69 6C 65 6E
61 6D 65 29 3B 0D 0A 20 20 49 44 58 5F 50 52 4F 44 55 43 54 4E 41 4D 45
20 3D 20 6F 72 64 28 70 64 50 72 6F 64 75 63 74 4E 61 6D 65 29 3B 0D 0A
20 20 49 44 58 5F 50 52 4F 44 55 43 54 56 45 52 53 49 4F 4E 20 3D 20 6F
72 64 28 70 64 50 72 6F 64 75 63 74 56 65 72 73 69 6F 6E 29 3B 0D 0A 20
20 49 44 58 5F 43 4F 4D 4D 45 4E 54 53 20 3D 20 6F 72 64 28 70 64 43 6F
6D 6D 65 6E 74 73 29 3B 0D 0A 20 20 49 44 58 5F 42 55 49 4C 44 46 4C 41
47 53 20 3D 20 6F 72 64 28 70 64 42 75 69 6C 64 46 6C 61 67 73 29 3B 0D
0A 0D 0A 63 6F 6E 73 74 0D 0A 20 20 49 44 58 5F 56 45 52 5F 4D 41 4A 4F
52 20 3D 20 30 3B 0D 0A 20 20 49 44 58 5F 56 45 52 5F 4D 49 4E 4F 52 20
3D 20 31 3B 0D 0A 20 20 49 44 58 5F 56 45 52 5F 52 45 4C 45 41 53 45 20
3D 20 32 3B 0D 0A 20 20 49 44 58 5F 56 45 52 5F 42 55 49 4C 44 20 3D 20
33 3B 0D 0A 0D 0A 74 79 70 65 0D 0A 7B 24 49 46 4E 44 45 46 20 44 46 53
5F 57 49 4E 33 32 7D 0D 0A 20 20 50 56 53 46 69 78 65 64 46 69 6C 65 49
6E 66 6F 20 3D 20 50 56 53 5F 46 69 78 65 64 46 69 6C 65 49 6E 66 6F 3B
0D 0A 20 20 44 57 4F 52 44 20 3D 20 6C 6F 6E 67 69 6E 74 3B 0D 0A 20 20
55 49 4E 54 20 3D 20 77 6F 72 64 3B 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A
20 20 54 46 69 78 65 64 46 69 6C 65 49 6E 66 6F 46 6C 61 67 20 3D 20 28
66 66 44 65 62 75 67 2C 20 66 66 49 6E 66 6F 49 6E 66 65 72 72 65 64 2C
20 66 66 50 61 74 63 68 65 64 2C 20 66 66 50 72 65 52 65 6C 65 61 73 65
2C 20 66 66 50 72 69 76 61 74 65 42 75 69 6C 64 2C 20 66 66 53 70 65 63
69 61 6C 42 75 69 6C 64 29 3B 0D 0A 20 20 54 46 69 78 65 64 46 69 6C 65
49 6E 66 6F 46 6C 61 67 73 20 3D 20 73 65 74 20 6F 66 20 54 46 69 78 65
64 46 69 6C 65 49 6E 66 6F 46 6C 61 67 3B 0D 0A 0D 0A 20 20 54 56 65 72
73 69 6F 6E 4F 70 65 72 61 74 69 6E 67 53 79 73 74 65 6D 46 6C 61 67 20
3D 20 28 76 6F 73 55 6E 6B 6E 6F 77 6E 2C 20 76 6F 73 44 4F 53 2C 20 76
6F 73 4F 53 32 5F 31 36 2C 20 76 6F 73 4F 53 32 5F 33 32 2C 20 76 6F 73
4E 54 2C 20 76 6F 73 57 69 6E 64 6F 77 73 31 36 2C 20 76 6F 73 50 72 65
73 65 6E 74 61 74 69 6F 6E 4D 61 6E 61 67 65 72 31 36 2C 20 76 6F 73 50
72 65 73 65 6E 74 61 74 69 6F 6E 4D 61 6E 61 67 65 72 33 32 2C 0D 0A 20
20 20 20 76 6F 73 57 69 6E 64 6F 77 73 33 32 29 3B 0D 0A 20 20 7B 20 54
68 69 73 20 69 73 20 73 75 70 70 6F 73 65 64 20 74 6F 20 62 65 20 6F 6E
65 20 6F 66 20 74 68 65 20 66 69 72 73 74 20 6C 69 6E 65 2C 20 61 6E 64
20 6F 6E 65 20 6F 66 20 74 68 65 20 73 65 63 6F 6E 64 20 6C 69 6E 65 2E
20 7D 0D 0A 20 20 54 56 65 72 73 69 6F 6E 4F 70 65 72 61 74 69 6E 67 53
79 73 74 65 6D 46 6C 61 67 73 20 3D 20 73 65 74 20 6F 66 20 54 56 65 72
73 69 6F 6E 4F 70 65 72 61 74 69 6E 67 53 79 73 74 65 6D 46 6C 61 67 3B
0D 0A 0D 0A 20 20 54 56 65 72 73 69 6F 6E 46 69 6C 65 54 79 70 65 20 3D
20 28 76 66 74 55 6E 6B 6E 6F 77 6E 2C 20 76 66 74 41 70 70 6C 69 63 61
74 69 6F 6E 2C 20 76 66 74 44 4C 4C 2C 20 76 66 74 44 72 69 76 65 72 2C
20 76 66 74 46 6F 6E 74 2C 20 76 66 74 56 58 44 2C 20 76 66 74 53 74 61
74 69 63 4C 69 62 29 3B 0D 0A 0D 0A 20 20 54 64 66 73 56 65 72 73 69 6F
6E 49 6E 66 6F 52 65 73 6F 75 72 63 65 20 3D 20 63 6C 61 73 73 3B 20 7B
20 66 6F 72 77 61 72 64 20 64 65 63 6C 61 72 61 74 69 6F 6E 20 7D 0D 0A
0D 0A 20 20 54 46 69 78 65 64 46 69 6C 65 56 65 72 73 69 6F 6E 49 6E 66
6F 20 3D 20 63 6C 61 73 73 0D 0A 20 20 70 72 69 76 61 74 65 0D 0A 20 20
20 20 46 50 61 72 65 6E 74 3A 20 54 64 66 73 56 65 72 73 69 6F 6E 49 6E
66 6F 52 65 73 6F 75 72 63 65 3B 0D 0A 20 20 20 20 46 44 61 74 61 3A 20
50 56 53 46 69 78 65 64 46 69 6C 65 49 6E 66 6F 3B 0D 0A 0D 0A 20 20 20
20 66 75 6E 63 74 69 6F 6E 20 47 65 74 53 69 67 6E 61 74 75 72 65 3A 20
44 57 4F 52 44 3B 0D 0A 20 20 20 20 66 75 6E 63 74 69 6F 6E 20 47 65 74
53 74 72 75 63 74 75 72 65 56 65 72 73 69 6F 6E 3A 20 44 57 4F 52 44 3B
0D 0A 20 20 20 20 66 75 6E 63 74 69 6F 6E 20 47 65 74 46 69 6C 65 56 65
72 73 69 6F 6E 4D 53 3A 20 44 57 4F 52 44 3B 0D 0A 20 20 20 20 66 75 6E
63 74 69 6F 6E 20 47 65 74 46 69 6C 65 56 65 72 73 69 6F 6E 4C 53 3A 20
44 57 4F 52 44 3B 0D 0A 20 20 20 20 66 75 6E 63 74 69 6F 6E 20 47 65 74
50 72 6F 64 75 63 74 56 65 72 73 69 6F 6E 4D 53 3A 20 44 57 4F 52 44 3B
0D 0A 20 20 20 20 66 75 6E 63 74 69 6F 6E 20 47 65 74 50 72 6F 64 75 63
74 56 65 72 73 69 6F 6E 4C 53 3A 20 44 57 4F 52 44 3B 0D 0A 20 20 20 20
66 75 6E 63 74 69 6F 6E 20 47 65 74 56 61 6C 69 64 46 6C 61 67 73 3A 20
54 46 69 78 65 64 46 69 6C 65 49 6E 66 6F 46 6C 61 67 73 3B 0D 0A 20 20
20 20 66 75 6E 63 74 69 6F 6E 20 47 65 74 46 6C 61 67 73 3A 20 54 46 69
78 65 64 46 69 6C 65 49 6E 66 6F 46 6C 61 67 73 3B 0D 0A 20 20 20 20 66
75 6E 63 74 69 6F 6E 20 47 65 74 46 69 6C 65 4F 70 65 72 61 74 69 6E 67
53 79 73 74 65 6D 3A 20 54 56 65 72 73 69 6F 6E 4F 70 65 72 61 74 69 6E
67 53 79 73 74 65 6D 46 6C 61 67 73 3B 0D 0A 20 20 20 20 66 75 6E 63 74
69 6F 6E 20 47 65 74 46 69 6C 65 54 79 70 65 3A 20 54 56 65 72 73 69 6F
6E 46 69 6C 65 54 79 70 65 3B 0D 0A 20 20 20 20 66 75 6E 63 74 69 6F 6E
20 47 65 74 46 69 6C 65 53 75 62 54 79 70 65 3A 20 44 57 4F 52 44 3B 0D
0A 20 20 20 20 66 75 6E 63 74 69 6F 6E 20 47 65 74 43 72 65 61 74 69 6F
6E 44 61 74 65 3A 20 54 44 61 74 65 54 69 6D 65 3B 0D 0A 20 20 70 75 62
6C 69 63 0D 0A 20 20 20 20 63 6F 6E 73 74 72 75 63 74 6F 72 20 43 72 65
61 74 65 28 41 50 61 72 65 6E 74 3A 20 54 64 66 73 56 65 72 73 69 6F 6E
49 6E 66 6F 52 65 73 6F 75 72 63 65 29 3B 0D 0A 0D 0A 20 20 20 20 70 72
6F 70 65 72 74 79 20 50 61 72 65 6E 74 3A 20 54 64 66 73 56 65 72 73 69
6F 6E 49 6E 66 6F 52 65 73 6F 75 72 63 65 20 72 65 61 64 20 46 50 61 72
65 6E 74 20 77 72 69 74 65 20 46 50 61 72 65 6E 74 3B 0D 0A 20 20 20 20
70 72 6F 70 65 72 74 79 20 44 61 74 61 3A 20 50 56 53 46 69 78 65 64 46
69 6C 65 49 6E 66 6F 20 72 65 61 64 20 46 44 61 74 61 20 77 72 69 74 65
20 46 44 61 74 61 3B 0D 0A 0D 0A 20 20 20 20 70 72 6F 70 65 72 74 79 20
53 69 67 6E 61 74 75 72 65 3A 20 44 57 4F 52 44 20 72 65 61 64 20 47 65
74 53 69 67 6E 61 74 75 72 65 3B 0D 0A 20 20 20 20 70 72 6F 70 65 72 74
79 20 53 74 72 75 63 74 75 72 65 56 65 72 73 69 6F 6E 3A 20 44 57 4F 52
44 20 72 65 61 64 20 47 65 74 53 74 72 75 63 74 75 72 65 56 65 72 73 69
6F 6E 3B 0D 0A 20 20 20 20 70 72 6F 70 65 72 74 79 20 46 69 6C 65 56 65
72 73 69 6F 6E 4D 53 3A 20 44 57 4F 52 44 20 72 65 61 64 20 47 65 74 46
69 6C 65 56 65 72 73 69 6F 6E 4D 53 3B 0D 0A 20 20 20 20 70 72 6F 70 65
72 74 79 20 46 69 6C 65 56 65 72 73 69 6F 6E 4C 53 3A 20 44 57 4F 52 44
20 72 65 61 64 20 47 65 74 46 69 6C 65 56 65 72 73 69 6F 6E 4C 53 3B 0D
0A 20 20 20 20 70 72 6F 70 65 72 74 79 20 50 72 6F 64 75 63 74 56 65 72
73 69 6F 6E 4D 53 3A 20 44 57 4F 52 44 20 72 65 61 64 20 47 65 74 50 72
6F 64 75 63 74 56 65 72 73 69 6F 6E 4D 53 3B 0D 0A 20 20 20 20 70 72 6F
70 65 72 74 79 20 50 72 6F 64 75 63 74 56 65 72 73 69 6F 6E 4C 53 3A 20
44 57 4F 52 44 20 72 65 61 64 20 47 65 74 50 72 6F 64 75 63 74 56 65 72
73 69 6F 6E 4C 53 3B 0D 0A 20 20 20 20 70 72 6F 70 65 72 74 79 20 56 61
6C 69 64 46 6C 61 67 73 3A 20 54 46 69 78 65 64 46 69 6C 65 49 6E 66 6F
46 6C 61 67 73 20 72 65 61 64 20 47 65 74 56 61 6C 69 64 46 6C 61 67 73
3B 0D 0A 20 20 20 20 70 72 6F 70 65 72 74 79 20 46 6C 61 67 73 3A 20 54
46 69 78 65 64 46 69 6C 65 49 6E 66 6F 46 6C 61 67 73 20 72 65 61 64 20
47 65 74 46 6C 61 67 73 3B 0D 0A 20 20 20 20 70 72 6F 70 65 72 74 79 20
46 69 6C 65 4F 70 65 72 61 74 69 6E 67 53 79 73 74 65 6D 3A 20 54 56 65
72 73 69 6F 6E 4F 70 65 72 61 74 69 6E 67 53 79 73 74 65 6D 46 6C 61 67
73 20 72 65 61 64 20 47 65 74 46 69 6C 65 4F 70 65 72 61 74 69 6E 67 53
79 73 74 65 6D 3B 0D 0A 20 20 20 20 70 72 6F 70 65 72 74 79 20 46 69 6C
65 54 79 70 65 3A 20 54 56 65 72 73 69 6F 6E 46 69 6C 65 54 79 70 65 20
72 65 61 64 20 47 65 74 46 69 6C 65 54 79 70 65 3B 0D 0A 20 20 20 20 70
72 6F 70 65 72 74 79 20 46 69 6C 65 53 75 62 54 79 70 65 3A 20 44 57 4F
52 44 20 72 65 61 64 20 47 65 74 46 69 6C 65 53 75 62 54 79 70 65 3B 0D
0A 20 20 20 20 70 72 6F 70 65 72 74 79 20 43 72 65 61 74 69 6F 6E 44 61
74 65 3A 20 54 44 61 74 65 54 69 6D 65 20 72 65 61 64 20 47 65 74 43 72
65 61 74 69 6F 6E 44 61 74 65 3B 0D 0A 20 20 65 6E 64 3B 0D 0A 0D 0A 20
20 54 56 65 72 73 69 6F 6E 4E 75 6D 62 65 72 49 6E 66 6F 72 6D 61 74 69
6F 6E 20 3D 20 63 6C 61 73 73 0D 0A 20 20 70 72 69 76 61 74 65 0D 0A 20
20 20 20 46 56 61 6C 69 64 3A 20 62 6F 6F 6C 65 61 6E 3B 0D 0A 20 20 20
20 46 4D 6F 73 74 53 69 67 6E 69 66 69 63 61 6E 74 3A 20 44 57 4F 52 44
3B 0D 0A 20 20 20 20 46 4C 65 61 73 74 53 69 67 6E 69 66 69 63 61 6E 74
3A 20 44 57 4F 52 44 3B 0D 0A 20 20 20 20 46 56 65 72 73 69 6F 6E 4E 75
6D 62 65 72 53 74 72 69 6E 67 3A 20 73 74 72 69 6E 67 3B 0D 0A 0D 0A 20
20 20 20 66 75 6E 63 74 69 6F 6E 20 47 65 74 56 65 72 73 69 6F 6E 4E 75
6D 62 65 72 28 49 6E 64 65 78 3A 20 69 6E 74 65 67 65 72 29 3A 20 77 6F
72 64 3B 0D 0A 20 20 20 20 66 75 6E 63 74 69 6F 6E 20 47 65 74 56 65 72
73 69 6F 6E 4E 75 6D 62 65 72 53 74 72 69 6E 67 3A 20 73 74 72 69 6E 67
3B 0D 0A 20 20 70 75 62 6C 69 63 0D 0A 20 20 20 20 63 6F 6E 73 74 72 75
63 74 6F 72 20 43 72 65 61 74 65 28 4D 53 56 65 72 2C 20 4C 53 56 65 72
3A 20 44 57 4F 52 44 29 3B 0D 0A 20 20 20 20 70 72 6F 70 65 72 74 79 20
56 61 6C 69 64 3A 20 62 6F 6F 6C 65 61 6E 20 72 65 61 64 20 46 56 61 6C
69 64 20 77 72 69 74 65 20 46 56 61 6C 69 64 3B 0D 0A 20 20 20 20 70 72
6F 70 65 72 74 79 20 4D 61 6A 6F 72 3A 20 77 6F 72 64 20 69 6E 64 65 78
20 49 44 58 5F 56 45 52 5F 4D 41 4A 4F 52 20 72 65 61 64 20 47 65 74 56
65 72 73 69 6F 6E 4E 75 6D 62 65 72 3B 0D 0A 20 20 20 20 70 72 6F 70 65
72 74 79 20 4D 69 6E 6F 72 3A 20 77 6F 72 64 20 69 6E 64 65 78 20 49 44
58 5F 56 45 52 5F 4D 49 4E 4F 52 20 72 65 61 64 20 47 65 74 56 65 72 73
69 6F 6E 4E 75 6D 62 65 72 3B 0D 0A 20 20 20 20 70 72 6F 70 65 72 74 79
20 52 65 6C 65 61 73 65 3A 20 77 6F 72 64 20 69 6E 64 65 78 20 49 44 58
5F 56 45 52 5F 52 45 4C 45 41 53 45 20 72 65 61 64 20 47 65 74 56 65 72
73 69 6F 6E 4E 75 6D 62 65 72 3B 0D 0A 20 20 20 20 70 72 6F 70 65 72 74
79 20 42 75 69 6C 64 3A 20 77 6F 72 64 20 69 6E 64 65 78 20 49 44 58 5F
56 45 52 5F 42 55 49 4C 44 20 72 65 61 64 20 47 65 74 56 65 72 73 69 6F
6E 4E 75 6D 62 65 72 3B 0D 0A 0D 0A 20 20 20 20 70 72 6F 70 65 72 74 79
20 41 73 53 74 72 69 6E 67 3A 20 73 74 72 69 6E 67 20 72 65 61 64 20 47
65 74 56 65 72 73 69 6F 6E 4E 75 6D 62 65 72 53 74 72 69 6E 67 3B 0D 0A
20 20 65 6E 64 3B 0D 0A 0D 0A 7B 24 49 46 44 45 46 20 44 46 53 5F 44 45
4C 50 48 49 5F 31 7D 0D 0A 0D 0A 20 20 54 56 65 72 73 69 6F 6E 46 69 6C
65 6E 61 6D 65 20 3D 20 73 74 72 69 6E 67 3B 0D 0A 7B 24 45 4C 53 45 7D
0D 0A 20 20 54 56 65 72 73 69 6F 6E 46 69 6C 65 6E 61 6D 65 20 3D 20 74
79 70 65 20 73 74 72 69 6E 67 3B 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 0D
0A 20 20 54 64 66 73 56 65 72 73 69 6F 6E 49 6E 66 6F 52 65 73 6F 75 72
63 65 20 3D 20 63 6C 61 73 73 7B 24 49 46 4E 44 45 46 20 44 46 53 5F 56
45 52 53 49 4F 4E 5F 49 4E 46 4F 5F 41 53 5F 43 4C 41 53 53 7D 28 54 43
6F 6D 70 6F 6E 65 6E 74 29 7B 24 45 4E 44 49 46 7D 0D 0A 20 20 70 72 69
76 61 74 65 0D 0A 20 20 20 20 46 56 65 72 73 69 6F 6E 49 6E 66 6F 3A 20
50 43 68 61 72 3B 0D 0A 20 20 20 20 46 56 65 72 73 69 6F 6E 49 6E 66 6F
53 69 7A 65 3A 20 44 57 4F 52 44 3B 0D 0A 20 20 20 20 46 46 69 6C 65 6E
61 6D 65 3A 20 54 56 65 72 73 69 6F 6E 46 69 6C 65 6E 61 6D 65 3B 0D 0A
20 20 20 20 46 54 72 61 6E 73 6C 61 74 69 6F 6E 49 44 73 3A 20 54 53 74
72 69 6E 67 4C 69 73 74 3B 0D 0A 20 20 20 20 46 54 72 61 6E 73 6C 61 74
69 6F 6E 49 44 49 6E 64 65 78 3A 20 69 6E 74 65 67 65 72 3B 0D 0A 20 20
20 20 46 46 69 78 65 64 49 6E 66 6F 3A 20 54 46 69 78 65 64 46 69 6C 65
56 65 72 73 69 6F 6E 49 6E 66 6F 3B 0D 0A 20 20 20 20 46 46 6F 72 63 65
45 58 45 3A 20 62 6F 6F 6C 65 61 6E 3B 0D 0A 20 20 20 20 46 46 69 6C 65
56 65 72 73 69 6F 6E 3A 20 54 56 65 72 73 69 6F 6E 4E 75 6D 62 65 72 49
6E 66 6F 72 6D 61 74 69 6F 6E 3B 0D 0A 20 20 20 20 46 50 72 6F 64 75 63
74 56 65 72 73 69 6F 6E 3A 20 54 56 65 72 73 69 6F 6E 4E 75 6D 62 65 72
49 6E 66 6F 72 6D 61 74 69 6F 6E 3B 0D 0A 7B 24 49 46 4E 44 45 46 20 44
46 53 5F 56 45 52 53 49 4F 4E 5F 49 4E 46 4F 5F 41 53 5F 43 4C 41 53 53
7D 0D 0A 20 20 20 20 46 46 69 6C 65 56 65 72 73 69 6F 6E 4C 61 62 65 6C
3A 20 54 4C 61 62 65 6C 3B 0D 0A 20 20 20 20 46 43 6F 70 79 72 69 67 68
74 4C 61 62 65 6C 3A 20 54 4C 61 62 65 6C 3B 0D 0A 7B 24 49 46 44 45 46
20 44 46 53 5F 57 49 4E 33 32 7D 0D 0A 20 20 20 20 46 56 65 72 73 69 6F
6E 4C 69 73 74 56 69 65 77 3A 20 54 4C 69 73 74 56 69 65 77 3B 0D 0A 7B
24 45 4C 53 45 7D 0D 0A 20 20 20 20 46 56 65 72 73 69 6F 6E 47 72 69 64
3A 20 54 53 74 72 69 6E 67 47 72 69 64 3B 0D 0A 7B 24 45 4E 44 49 46 7D
0D 0A 20 20 20 20 46 44 65 73 63 72 69 70 74 69 6F 6E 4C 61 62 65 6C 3A
20 54 4C 61 62 65 6C 3B 0D 0A 20 20 20 20 46 50 72 6F 64 75 63 74 4C 61
62 65 6C 3A 20 54 4C 61 62 65 6C 3B 0D 0A 20 20 20 20 46 53 68 6F 77 52
65 73 6F 75 72 63 65 3A 20 54 50 72 65 44 65 66 73 3B 0D 0A 7B 24 45 4E
44 49 46 7D 0D 0A 20 20 70 72 6F 74 65 63 74 65 64 0D 0A 20 20 20 20 70
72 6F 63 65 64 75 72 65 20 53 65 74 46 69 6C 65 6E 61 6D 65 28 63 6F 6E
73 74 20 56 61 6C 3A 20 54 56 65 72 73 69 6F 6E 46 69 6C 65 6E 61 6D 65
29 3B 0D 0A 20 20 20 20 70 72 6F 63 65 64 75 72 65 20 53 65 74 54 72 61
6E 73 6C 61 74 69 6F 6E 49 44 49 6E 64 65 78 28 56 61 6C 3A 20 69 6E 74
65 67 65 72 29 3B 0D 0A 20 20 20 20 66 75 6E 63 74 69 6F 6E 20 47 65 74
54 72 61 6E 73 6C 61 74 69 6F 6E 49 44 73 3A 20 54 53 74 72 69 6E 67 73
3B 0D 0A 20 20 20 20 70 72 6F 63 65 64 75 72 65 20 53 65 74 46 6F 72 63
65 45 58 45 28 56 61 6C 3A 20 62 6F 6F 6C 65 61 6E 29 3B 0D 0A 7B 24 49
46 4E 44 45 46 20 44 46 53 5F 56 45 52 53 49 4F 4E 5F 49 4E 46 4F 5F 41
53 5F 43 4C 41 53 53 7D 0D 0A 7B 24 49 46 44 45 46 20 44 46 53 5F 57 49
4E 33 32 7D 0D 0A 20 20 20 20 70 72 6F 63 65 64 75 72 65 20 53 65 74 56
65 72 73 69 6F 6E 4C 69 73 74 56 69 65 77 28 56 61 6C 75 65 3A 20 54 4C
69 73 74 56 69 65 77 29 3B 0D 0A 7B 24 45 4C 53 45 7D 0D 0A 20 20 20 20
70 72 6F 63 65 64 75 72 65 20 53 65 74 56 65 72 73 69 6F 6E 47 72 69 64
28 56 61 6C 75 65 3A 20 54 53 74 72 69 6E 67 47 72 69 64 29 3B 0D 0A 7B
24 45 4E 44 49 46 7D 0D 0A 20 20 20 20 70 72 6F 63 65 64 75 72 65 20 53
65 74 53 68 6F 77 52 65 73 6F 75 72 63 65 28 56 61 6C 75 65 3A 20 54 50
72 65 44 65 66 73 29 3B 0D 0A 20 20 20 20 70 72 6F 63 65 64 75 72 65 20
53 65 74 46 69 6C 65 56 65 72 73 69 6F 6E 4C 61 62 65 6C 28 56 61 6C 75
65 3A 20 54 4C 61 62 65 6C 29 3B 0D 0A 20 20 20 20 70 72 6F 63 65 64 75
72 65 20 53 65 74 43 6F 70 79 72 69 67 68 74 4C 61 62 65 6C 28 56 61 6C
75 65 3A 20 54 4C 61 62 65 6C 29 3B 0D 0A 20 20 20 20 70 72 6F 63 65 64
75 72 65 20 53 65 74 50 72 6F 64 75 63 74 4C 61 62 65 6C 28 56 61 6C 75
65 3A 20 54 4C 61 62 65 6C 29 3B 0D 0A 20 20 20 20 70 72 6F 63 65 64 75
72 65 20 53 65 74 44 65 73 63 72 69 70 74 69 6F 6E 4C 61 62 65 6C 28 56
61 6C 75 65 3A 20 54 4C 61 62 65 6C 29 3B 0D 0A 20 20 20 20 66 75 6E 63
74 69 6F 6E 20 47 65 74 56 65 72 73 69 6F 6E 3A 20 73 74 72 69 6E 67 3B
0D 0A 20 20 20 20 70 72 6F 63 65 64 75 72 65 20 53 65 74 56 65 72 73 69
6F 6E 28 63 6F 6E 73 74 20 56 61 6C 3A 20 73 74 72 69 6E 67 29 3B 0D 0A
7B 24 45 4E 44 49 46 7D 0D 0A 20 20 20 20 66 75 6E 63 74 69 6F 6E 20 47
65 74 52 65 73 6F 75 72 63 65 46 69 6C 65 6E 61 6D 65 3A 20 73 74 72 69
6E 67 3B 20 76 69 72 74 75 61 6C 3B 0D 0A 7B 24 49 46 4E 44 45 46 20 44
46 53 5F 56 45 52 53 49 4F 4E 5F 49 4E 46 4F 5F 41 53 5F 43 4C 41 53 53
7D 0D 0A 20 20 20 20 70 72 6F 63 65 64 75 72 65 20 50 6F 70 75 6C 61 74
65 43 6F 6E 74 72 6F 6C 73 3B 20 76 69 72 74 75 61 6C 3B 0D 0A 7B 24 49
46 44 45 46 20 44 46 53 5F 57 49 4E 33 32 7D 0D 0A 20 20 20 20 70 72 6F
63 65 64 75 72 65 20 42 75 69 6C 64 4C 69 73 74 56 69 65 77 3B 20 76 69
72 74 75 61 6C 3B 0D 0A 7B 24 45 4C 53 45 7D 0D 0A 20 20 20 20 70 72 6F
63 65 64 75 72 65 20 42 75 69 6C 64 47 72 69 64 3B 20 76 69 72 74 75 61
6C 3B 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 20 20 20 20 70 72 6F 63 65 64
75 72 65 20 4E 6F 74 69 66 69 63 61 74 69 6F 6E 28 41 43 6F 6D 70 6F 6E
65 6E 74 3A 20 54 43 6F 6D 70 6F 6E 65 6E 74 3B 20 4F 70 65 72 61 74 69
6F 6E 3A 20 54 4F 70 65 72 61 74 69 6F 6E 29 3B 20 6F 76 65 72 72 69 64
65 3B 0D 0A 20 20 20 20 70 72 6F 63 65 64 75 72 65 20 4C 6F 61 64 65 64
3B 20 6F 76 65 72 72 69 64 65 3B 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 20
20 20 20 66 75 6E 63 74 69 6F 6E 20 42 75 69 6C 64 46 6C 61 67 73 3A 20
73 74 72 69 6E 67 3B 20 76 69 72 74 75 61 6C 3B 0D 0A 20 20 20 20 70 72
6F 63 65 64 75 72 65 20 52 65 61 64 56 65 72 73 69 6F 6E 49 6E 66 6F 44
61 74 61 3B 20 76 69 72 74 75 61 6C 3B 0D 0A 0D 0A 20 20 20 20 66 75 6E
63 74 69 6F 6E 20 47 65 74 56 65 72 73 69 6F 6E 49 6E 66 6F 53 74 72 69
6E 67 28 49 6E 64 65 78 3A 20 69 6E 74 65 67 65 72 29 3A 20 73 74 72 69
6E 67 3B 0D 0A 20 20 20 20 66 75 6E 63 74 69 6F 6E 20 47 65 74 52 65 73
6F 75 72 63 65 53 74 72 28 49 6E 64 65 78 3A 20 73 74 72 69 6E 67 29 3A
20 73 74 72 69 6E 67 3B 0D 0A 20 20 70 75 62 6C 69 63 0D 0A 7B 24 49 46
44 45 46 20 44 46 53 5F 56 45 52 53 49 4F 4E 5F 49 4E 46 4F 5F 41 53 5F
43 4C 41 53 53 7D 0D 0A 20 20 20 20 63 6F 6E 73 74 72 75 63 74 6F 72 20
43 72 65 61 74 65 3B 20 76 69 72 74 75 61 6C 3B 0D 0A 7B 24 45 4C 53 45
7D 0D 0A 20 20 20 20 63 6F 6E 73 74 72 75 63 74 6F 72 20 43 72 65 61 74
65 28 41 4F 77 6E 65 72 3A 20 54 43 6F 6D 70 6F 6E 65 6E 74 29 3B 20 6F
76 65 72 72 69 64 65 3B 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 20 20 20 20
64 65 73 74 72 75 63 74 6F 72 20 44 65 73 74 72 6F 79 3B 20 6F 76 65 72
72 69 64 65 3B 0D 0A 0D 0A 20 20 20 20 70 72 6F 70 65 72 74 79 20 54 72
61 6E 73 6C 61 74 69 6F 6E 49 44 49 6E 64 65 78 3A 20 69 6E 74 65 67 65
72 20 72 65 61 64 20 46 54 72 61 6E 73 6C 61 74 69 6F 6E 49 44 49 6E 64
65 78 20 77 72 69 74 65 20 53 65 74 54 72 61 6E 73 6C 61 74 69 6F 6E 49
44 49 6E 64 65 78 3B 0D 0A 20 20 20 20 70 72 6F 70 65 72 74 79 20 54 72
61 6E 73 6C 61 74 69 6F 6E 49 44 73 3A 20 54 53 74 72 69 6E 67 73 20 72
65 61 64 20 47 65 74 54 72 61 6E 73 6C 61 74 69 6F 6E 49 44 73 3B 0D 0A
20 20 20 20 70 72 6F 70 65 72 74 79 20 46 69 78 65 64 49 6E 66 6F 3A 20
54 46 69 78 65 64 46 69 6C 65 56 65 72 73 69 6F 6E 49 6E 66 6F 20 72 65
61 64 20 46 46 69 78 65 64 49 6E 66 6F 3B 0D 0A 20 20 20 20 70 72 6F 70
65 72 74 79 20 55 73 65 72 52 65 73 6F 75 72 63 65 5B 49 6E 64 65 78 3A
20 73 74 72 69 6E 67 5D 3A 20 73 74 72 69 6E 67 20 72 65 61 64 20 47 65
74 52 65 73 6F 75 72 63 65 53 74 72 3B 0D 0A 0D 0A 20 20 20 20 70 72 6F
70 65 72 74 79 20 46 69 6C 65 56 65 72 73 69 6F 6E 3A 20 54 56 65 72 73
69 6F 6E 4E 75 6D 62 65 72 49 6E 66 6F 72 6D 61 74 69 6F 6E 20 72 65 61
64 20 46 46 69 6C 65 56 65 72 73 69 6F 6E 3B 0D 0A 20 20 20 20 70 72 6F
70 65 72 74 79 20 50 72 6F 64 75 63 74 56 65 72 73 69 6F 6E 3A 20 54 56
65 72 73 69 6F 6E 4E 75 6D 62 65 72 49 6E 66 6F 72 6D 61 74 69 6F 6E 20
72 65 61 64 20 46 50 72 6F 64 75 63 74 56 65 72 73 69 6F 6E 3B 0D 0A 20
20 70 75 62 6C 69 73 68 65 64 0D 0A 7B 24 49 46 4E 44 45 46 20 44 46 53
5F 56 45 52 53 49 4F 4E 5F 49 4E 46 4F 5F 41 53 5F 43 4C 41 53 53 7D 0D
0A 20 20 20 20 70 72 6F 70 65 72 74 79 20 56 65 72 73 69 6F 6E 3A 20 73
74 72 69 6E 67 20 72 65 61 64 20 47 65 74 56 65 72 73 69 6F 6E 20 77 72
69 74 65 20 53 65 74 56 65 72 73 69 6F 6E 20 73 74 6F 72 65 64 20 46 41
4C 53 45 3B 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 20 20 20 20 70 72 6F 70
65 72 74 79 20 46 69 6C 65 6E 61 6D 65 3A 20 54 56 65 72 73 69 6F 6E 46
69 6C 65 6E 61 6D 65 20 72 65 61 64 20 46 46 69 6C 65 6E 61 6D 65 20 77
72 69 74 65 20 53 65 74 46 69 6C 65 6E 61 6D 65 3B 0D 0A 20 20 20 20 70
72 6F 70 65 72 74 79 20 46 6F 72 63 65 45 58 45 3A 20 62 6F 6F 6C 65 61
6E 20 72 65 61 64 20 46 46 6F 72 63 65 45 58 45 20 77 72 69 74 65 20 53
65 74 46 6F 72 63 65 45 58 45 20 64 65 66 61 75 6C 74 20 46 41 4C 53 45
3B 0D 0A 0D 0A 20 20 20 20 70 72 6F 70 65 72 74 79 20 43 6F 6D 70 61 6E
79 4E 61 6D 65 3A 20 73 74 72 69 6E 67 20 69 6E 64 65 78 20 49 44 58 5F
43 4F 4D 50 41 4E 59 4E 41 4D 45 20 72 65 61 64 20 47 65 74 56 65 72 73
69 6F 6E 49 6E 66 6F 53 74 72 69 6E 67 3B 0D 0A 20 20 20 20 70 72 6F 70
65 72 74 79 20 46 69 6C 65 44 65 73 63 72 69 70 74 69 6F 6E 3A 20 73 74
72 69 6E 67 20 69 6E 64 65 78 20 49 44 58 5F 46 49 4C 45 44 45 53 43 52
49 50 54 49 4F 4E 20 72 65 61 64 20 47 65 74 56 65 72 73 69 6F 6E 49 6E
66 6F 53 74 72 69 6E 67 3B 0D 0A 20 20 20 20 70 72 6F 70 65 72 74 79 20
49 6E 74 65 72 6E 61 6C 4E 61 6D 65 3A 20 73 74 72 69 6E 67 20 69 6E 64
65 78 20 49 44 58 5F 49 4E 54 45 52 4E 41 4C 4E 41 4D 45 20 72 65 61 64
20 47 65 74 56 65 72 73 69 6F 6E 49 6E 66 6F 53 74 72 69 6E 67 3B 0D 0A
20 20 20 20 70 72 6F 70 65 72 74 79 20 4C 65 67 61 6C 43 6F 70 79 72 69
67 68 74 3A 20 73 74 72 69 6E 67 20 69 6E 64 65 78 20 49 44 58 5F 4C 45
47 41 4C 43 4F 50 59 52 49 47 48 54 20 72 65 61 64 20 47 65 74 56 65 72
73 69 6F 6E 49 6E 66 6F 53 74 72 69 6E 67 3B 0D 0A 20 20 20 20 70 72 6F
70 65 72 74 79 20 4C 65 67 61 6C 54 72 61 64 65 6D 61 72 6B 73 3A 20 73
74 72 69 6E 67 20 69 6E 64 65 78 20 49 44 58 5F 4C 45 47 41 4C 54 52 41
44 45 4D 41 52 4B 53 20 72 65 61 64 20 47 65 74 56 65 72 73 69 6F 6E 49
6E 66 6F 53 74 72 69 6E 67 3B 0D 0A 20 20 20 20 70 72 6F 70 65 72 74 79
20 4F 72 69 67 69 6E 61 6C 46 69 6C 65 6E 61 6D 65 3A 20 73 74 72 69 6E
67 20 69 6E 64 65 78 20 49 44 58 5F 4F 52 49 47 49 4E 41 4C 46 49 4C 45
4E 41 4D 45 20 72 65 61 64 20 47 65 74 56 65 72 73 69 6F 6E 49 6E 66 6F
53 74 72 69 6E 67 3B 0D 0A 20 20 20 20 70 72 6F 70 65 72 74 79 20 50 72
6F 64 75 63 74 4E 61 6D 65 3A 20 73 74 72 69 6E 67 20 69 6E 64 65 78 20
49 44 58 5F 50 52 4F 44 55 43 54 4E 41 4D 45 20 72 65 61 64 20 47 65 74
56 65 72 73 69 6F 6E 49 6E 66 6F 53 74 72 69 6E 67 3B 0D 0A 20 20 20 20
70 72 6F 70 65 72 74 79 20 43 6F 6D 6D 65 6E 74 73 3A 20 73 74 72 69 6E
67 20 69 6E 64 65 78 20 49 44 58 5F 43 4F 4D 4D 45 4E 54 53 20 72 65 61
64 20 47 65 74 56 65 72 73 69 6F 6E 49 6E 66 6F 53 74 72 69 6E 67 3B 0D
0A 0D 0A 7B 24 49 46 4E 44 45 46 20 44 46 53 5F 56 45 52 53 49 4F 4E 5F
49 4E 46 4F 5F 41 53 5F 43 4C 41 53 53 7D 0D 0A 20 20 20 20 70 72 6F 70
65 72 74 79 20 56 65 72 73 69 6F 6E 4C 61 62 65 6C 3A 20 54 4C 61 62 65
6C 20 72 65 61 64 20 46 46 69 6C 65 56 65 72 73 69 6F 6E 4C 61 62 65 6C
20 77 72 69 74 65 20 53 65 74 46 69 6C 65 56 65 72 73 69 6F 6E 4C 61 62
65 6C 3B 0D 0A 7B 24 49 46 44 45 46 20 44 46 53 5F 57 49 4E 33 32 7D 0D
0A 20 20 20 20 70 72 6F 70 65 72 74 79 20 56 65 72 73 69 6F 6E 4C 69 73
74 56 69 65 77 3A 20 54 4C 69 73 74 56 69 65 77 20 72 65 61 64 20 46 56
65 72 73 69 6F 6E 4C 69 73 74 56 69 65 77 20 77 72 69 74 65 20 53 65 74
56 65 72 73 69 6F 6E 4C 69 73 74 56 69 65 77 3B 0D 0A 7B 24 45 4C 53 45
7D 0D 0A 20 20 20 20 70 72 6F 70 65 72 74 79 20 56 65 72 73 69 6F 6E 47
72 69 64 3A 20 54 53 74 72 69 6E 67 47 72 69 64 20 72 65 61 64 20 46 56
65 72 73 69 6F 6E 47 72 69 64 20 77 72 69 74 65 20 53 65 74 56 65 72 73
69 6F 6E 47 72 69 64 3B 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 20 20 20 20
70 72 6F 70 65 72 74 79 20 44 65 73 63 72 69 70 74 69 6F 6E 4C 61 62 65
6C 3A 20 54 4C 61 62 65 6C 20 72 65 61 64 20 46 44 65 73 63 72 69 70 74
69 6F 6E 4C 61 62 65 6C 20 77 72 69 74 65 20 53 65 74 44 65 73 63 72 69
70 74 69 6F 6E 4C 61 62 65 6C 3B 0D 0A 20 20 20 20 70 72 6F 70 65 72 74
79 20 43 6F 70 79 72 69 67 68 74 4C 61 62 65 6C 3A 20 54 4C 61 62 65 6C
20 72 65 61 64 20 46 43 6F 70 79 72 69 67 68 74 4C 61 62 65 6C 20 77 72
69 74 65 20 53 65 74 43 6F 70 79 72 69 67 68 74 4C 61 62 65 6C 3B 0D 0A
20 20 20 20 70 72 6F 70 65 72 74 79 20 50 72 6F 64 75 63 74 4C 61 62 65
6C 3A 20 54 4C 61 62 65 6C 20 72 65 61 64 20 46 50 72 6F 64 75 63 74 4C
61 62 65 6C 20 77 72 69 74 65 20 53 65 74 50 72 6F 64 75 63 74 4C 61 62
65 6C 3B 0D 0A 20 20 20 20 70 72 6F 70 65 72 74 79 20 53 68 6F 77 52 65
73 6F 75 72 63 65 3A 20 54 50 72 65 44 65 66 73 20 72 65 61 64 20 46 53
68 6F 77 52 65 73 6F 75 72 63 65 20 77 72 69 74 65 20 53 65 74 53 68 6F
77 52 65 73 6F 75 72 63 65 3B 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 20 20
65 6E 64 3B 0D 0A 0D 0A 69 6D 70 6C 65 6D 65 6E 74 61 74 69 6F 6E 0D 0A
0D 0A 63 6F 6E 73 74 0D 0A 20 20 50 52 45 44 45 46 5F 52 45 53 4F 55 52
43 45 53 3A 20 61 72 72 61 79 20 5B 49 44 58 5F 43 4F 4D 50 41 4E 59 4E
41 4D 45 20 2E 2E 20 49 44 58 5F 42 55 49 4C 44 46 4C 41 47 53 5D 20 6F
66 20 73 74 72 69 6E 67 20 3D 20 28 27 43 6F 6D 70 61 6E 79 4E 61 6D 65
27 2C 20 27 46 69 6C 65 44 65 73 63 72 69 70 74 69 6F 6E 27 2C 20 27 46
69 6C 65 56 65 72 73 69 6F 6E 27 2C 20 27 49 6E 74 65 72 6E 61 6C 4E 61
6D 65 27 2C 0D 0A 20 20 20 20 27 4C 65 67 61 6C 43 6F 70 79 72 69 67 68
74 27 2C 20 27 4C 65 67 61 6C 54 72 61 64 65 6D 61 72 6B 73 27 2C 20 27
4F 72 69 67 69 6E 61 6C 46 69 6C 65 6E 61 6D 65 27 2C 20 27 50 72 6F 64
75 63 74 4E 61 6D 65 27 2C 20 27 50 72 6F 64 75 63 74 56 65 72 73 69 6F
6E 27 2C 20 27 43 6F 6D 6D 65 6E 74 73 27 2C 20 27 42 75 69 6C 64 46 6C
61 67 73 27 29 3B 0D 0A 0D 0A 20 20 50 52 45 44 45 46 5F 43 41 50 54 49
4F 4E 53 3A 20 61 72 72 61 79 20 5B 49 44 58 5F 43 4F 4D 50 41 4E 59 4E
41 4D 45 20 2E 2E 20 49 44 58 5F 42 55 49 4C 44 46 4C 41 47 53 5D 20 6F
66 20 73 74 72 69 6E 67 20 3D 20 28 53 52 65 73 43 61 70 43 6F 6D 70 61
6E 79 4E 61 6D 65 2C 20 53 52 65 73 43 61 70 46 69 6C 65 44 65 73 63 72
69 70 74 69 6F 6E 2C 20 53 52 65 73 43 61 70 46 69 6C 65 56 65 72 73 69
6F 6E 2C 0D 0A 20 20 20 20 53 52 65 73 43 61 70 49 6E 74 65 72 6E 61 6C
4E 61 6D 65 2C 20 53 52 65 73 43 61 70 4C 65 67 61 6C 43 6F 70 79 72 69
67 68 74 2C 20 53 52 65 73 43 61 70 4C 65 67 61 6C 54 72 61 64 65 6D 61
72 6B 73 2C 20 53 52 65 73 43 61 70 4F 72 69 67 69 6E 61 6C 46 69 6C 65
6E 61 6D 65 2C 20 53 52 65 73 43 61 70 50 72 6F 64 75 63 74 4E 61 6D 65
2C 20 53 52 65 73 43 61 70 50 72 6F 64 75 63 74 56 65 72 73 69 6F 6E 2C
0D 0A 20 20 20 20 53 52 65 73 43 61 70 43 6F 6D 6D 65 6E 74 73 2C 20 53
52 65 73 43 61 70 42 75 69 6C 64 46 6C 61 67 73 29 3B 0D 0A 0D 0A 7B 24
49 46 44 45 46 20 44 46 53 5F 44 45 4C 50 48 49 5F 32 7D 0D 0A 7B 24 44
45 46 49 4E 45 20 53 54 32 44 54 5F 55 4E 44 45 46 7D 0D 0A 7B 24 45 4E
44 49 46 7D 0D 0A 7B 24 49 46 44 45 46 20 44 46 53 5F 43 50 50 42 5F 31
7D 0D 0A 7B 24 44 45 46 49 4E 45 20 53 54 32 44 54 5F 55 4E 44 45 46 7D
0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 7B 24 49 46 44 45 46 20 53 54 32 44
54 5F 55 4E 44 45 46 7D 0D 0A 0D 0A 66 75 6E 63 74 69 6F 6E 20 53 79 73
74 65 6D 54 69 6D 65 54 6F 44 61 74 65 54 69 6D 65 28 63 6F 6E 73 74 20
53 79 73 74 65 6D 54 69 6D 65 3A 20 54 53 79 73 74 65 6D 54 69 6D 65 29
3A 20 54 44 61 74 65 54 69 6D 65 3B 0D 0A 62 65 67 69 6E 0D 0A 20 20 77
69 74 68 20 53 79 73 74 65 6D 54 69 6D 65 20 64 6F 0D 0A 20 20 20 20 52
65 73 75 6C 74 20 3A 3D 20 45 6E 63 6F 64 65 44 61 74 65 28 77 59 65 61
72 2C 20 77 4D 6F 6E 74 68 2C 20 77 44 61 79 29 20 2B 20 45 6E 63 6F 64
65 54 69 6D 65 28 77 48 6F 75 72 2C 20 77 4D 69 6E 75 74 65 2C 20 77 53
65 63 6F 6E 64 2C 20 77 4D 69 6C 6C 69 53 65 63 6F 6E 64 73 29 3B 0D 0A
65 6E 64 3B 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 7B 24 49 46 4E 44 45 46
20 44 46 53 5F 57 49 4E 33 32 7D 0D 0A 0D 0A 66 75 6E 63 74 69 6F 6E 20
49 73 4C 69 62 72 61 72 79 3A 20 62 6F 6F 6C 65 61 6E 3B 0D 0A 62 65 67
69 6E 0D 0A 20 20 52 65 73 75 6C 74 20 3A 3D 20 50 72 65 66 69 78 53 65
67 20 3D 20 30 3B 0D 0A 65 6E 64 3B 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A
0D 0A 63 6F 6E 73 74 72 75 63 74 6F 72 20 54 46 69 78 65 64 46 69 6C 65
56 65 72 73 69 6F 6E 49 6E 66 6F 2E 43 72 65 61 74 65 28 41 50 61 72 65
6E 74 3A 20 54 64 66 73 56 65 72 73 69 6F 6E 49 6E 66 6F 52 65 73 6F 75
72 63 65 29 3B 0D 0A 62 65 67 69 6E 0D 0A 20 20 69 6E 68 65 72 69 74 65
64 20 43 72 65 61 74 65 3B 0D 0A 20 20 46 50 61 72 65 6E 74 20 3A 3D 20
41 50 61 72 65 6E 74 3B 0D 0A 65 6E 64 3B 0D 0A 0D 0A 66 75 6E 63 74 69
6F 6E 20 54 46 69 78 65 64 46 69 6C 65 56 65 72 73 69 6F 6E 49 6E 66 6F
2E 47 65 74 53 69 67 6E 61 74 75 72 65 3A 20 44 57 4F 52 44 3B 0D 0A 62
65 67 69 6E 0D 0A 20 20 69 66 20 46 44 61 74 61 20 3D 20 6E 69 6C 20 74
68 65 6E 0D 0A 20 20 20 20 52 65 73 75 6C 74 20 3A 3D 20 30 0D 0A 20 20
65 6C 73 65 0D 0A 20 20 20 20 52 65 73 75 6C 74 20 3A 3D 20 46 44 61 74
61 5E 2E 64 77 53 69 67 6E 61 74 75 72 65 3B 0D 0A 65 6E 64 3B 0D 0A 0D
0A 66 75 6E 63 74 69 6F 6E 20 54 46 69 78 65 64 46 69 6C 65 56 65 72 73
69 6F 6E 49 6E 66 6F 2E 47 65 74 53 74 72 75 63 74 75 72 65 56 65 72 73
69 6F 6E 3A 20 44 57 4F 52 44 3B 0D 0A 62 65 67 69 6E 0D 0A 20 20 69 66
20 46 44 61 74 61 20 3D 20 6E 69 6C 20 74 68 65 6E 0D 0A 20 20 20 20 52
65 73 75 6C 74 20 3A 3D 20 30 0D 0A 20 20 65 6C 73 65 0D 0A 20 20 20 20
52 65 73 75 6C 74 20 3A 3D 20 46 44 61 74 61 5E 2E 64 77 53 74 72 75 63
56 65 72 73 69 6F 6E 3B 0D 0A 65 6E 64 3B 0D 0A 0D 0A 66 75 6E 63 74 69
6F 6E 20 54 46 69 78 65 64 46 69 6C 65 56 65 72 73 69 6F 6E 49 6E 66 6F
2E 47 65 74 46 69 6C 65 56 65 72 73 69 6F 6E 4D 53 3A 20 44 57 4F 52 44
3B 0D 0A 62 65 67 69 6E 0D 0A 20 20 69 66 20 46 44 61 74 61 20 3D 20 6E
69 6C 20 74 68 65 6E 0D 0A 20 20 20 20 52 65 73 75 6C 74 20 3A 3D 20 30
0D 0A 20 20 65 6C 73 65 0D 0A 20 20 20 20 52 65 73 75 6C 74 20 3A 3D 20
46 44 61 74 61 5E 2E 64 77 46 69 6C 65 56 65 72 73 69 6F 6E 4D 53 3B 0D
0A 65 6E 64 3B 0D 0A 0D 0A 66 75 6E 63 74 69 6F 6E 20 54 46 69 78 65 64
46 69 6C 65 56 65 72 73 69 6F 6E 49 6E 66 6F 2E 47 65 74 46 69 6C 65 56
65 72 73 69 6F 6E 4C 53 3A 20 44 57 4F 52 44 3B 0D 0A 62 65 67 69 6E 0D
0A 20 20 69 66 20 46 44 61 74 61 20 3D 20 6E 69 6C 20 74 68 65 6E 0D 0A
20 20 20 20 52 65 73 75 6C 74 20 3A 3D 20 30 0D 0A 20 20 65 6C 73 65 0D
0A 20 20 20 20 52 65 73 75 6C 74 20 3A 3D 20 46 44 61 74 61 5E 2E 64 77
46 69 6C 65 56 65 72 73 69 6F 6E 4C 53 3B 0D 0A 65 6E 64 3B 0D 0A 0D 0A
66 75 6E 63 74 69 6F 6E 20 54 46 69 78 65 64 46 69 6C 65 56 65 72 73 69
6F 6E 49 6E 66 6F 2E 47 65 74 50 72 6F 64 75 63 74 56 65 72 73 69 6F 6E
4D 53 3A 20 44 57 4F 52 44 3B 0D 0A 62 65 67 69 6E 0D 0A 20 20 69 66 20
46 44 61 74 61 20 3D 20 6E 69 6C 20 74 68 65 6E 0D 0A 20 20 20 20 52 65
73 75 6C 74 20 3A 3D 20 30 0D 0A 20 20 65 6C 73 65 0D 0A 20 20 20 20 52
65 73 75 6C 74 20 3A 3D 20 46 44 61 74 61 5E 2E 64 77 50 72 6F 64 75 63
74 56 65 72 73 69 6F 6E 4D 53 3B 0D 0A 65 6E 64 3B 0D 0A 0D 0A 66 75 6E
63 74 69 6F 6E 20 54 46 69 78 65 64 46 69 6C 65 56 65 72 73 69 6F 6E 49
6E 66 6F 2E 47 65 74 50 72 6F 64 75 63 74 56 65 72 73 69 6F 6E 4C 53 3A
20 44 57 4F 52 44 3B 0D 0A 62 65 67 69 6E 0D 0A 20 20 69 66 20 46 44 61
74 61 20 3D 20 6E 69 6C 20 74 68 65 6E 0D 0A 20 20 20 20 52 65 73 75 6C
74 20 3A 3D 20 30 0D 0A 20 20 65 6C 73 65 0D 0A 20 20 20 20 52 65 73 75
6C 74 20 3A 3D 20 46 44 61 74 61 5E 2E 64 77 50 72 6F 64 75 63 74 56 65
72 73 69 6F 6E 4C 53 3B 0D 0A 65 6E 64 3B 0D 0A 0D 0A 66 75 6E 63 74 69
6F 6E 20 54 46 69 78 65 64 46 69 6C 65 56 65 72 73 69 6F 6E 49 6E 66 6F
2E 47 65 74 56 61 6C 69 64 46 6C 61 67 73 3A 20 54 46 69 78 65 64 46 69
6C 65 49 6E 66 6F 46 6C 61 67 73 3B 0D 0A 62 65 67 69 6E 0D 0A 20 20 52
65 73 75 6C 74 20 3A 3D 20 5B 5D 3B 0D 0A 20 20 69 66 20 46 44 61 74 61
20 3C 3E 20 6E 69 6C 20 74 68 65 6E 0D 0A 20 20 62 65 67 69 6E 0D 0A 20
20 20 20 69 66 20 28 46 44 61 74 61 5E 2E 64 77 46 69 6C 65 46 6C 61 67
73 4D 61 73 6B 20 61 6E 64 20 56 53 5F 46 46 5F 44 45 42 55 47 29 20 3C
3E 20 30 20 74 68 65 6E 0D 0A 20 20 20 20 20 20 49 6E 63 6C 75 64 65 28
52 65 73 75 6C 74 2C 20 66 66 44 65 62 75 67 29 3B 0D 0A 20 20 20 20 69
66 20 28 46 44 61 74 61 5E 2E 64 77 46 69 6C 65 46 6C 61 67 73 4D 61 73
6B 20 61 6E 64 20 56 53 5F 46 46 5F 50 52 45 52 45 4C 45 41 53 45 29 20
3C 3E 20 30 20 74 68 65 6E 0D 0A 20 20 20 20 20 20 49 6E 63 6C 75 64 65
28 52 65 73 75 6C 74 2C 20 66 66 50 72 65 52 65 6C 65 61 73 65 29 3B 0D
0A 20 20 20 20 69 66 20 28 46 44 61 74 61 5E 2E 64 77 46 69 6C 65 46 6C
61 67 73 4D 61 73 6B 20 61 6E 64 20 56 53 5F 46 46 5F 50 41 54 43 48 45
44 29 20 3C 3E 20 30 20 74 68 65 6E 0D 0A 20 20 20 20 20 20 49 6E 63 6C
75 64 65 28 52 65 73 75 6C 74 2C 20 66 66 50 61 74 63 68 65 64 29 3B 0D
0A 20 20 20 20 69 66 20 28 46 44 61 74 61 5E 2E 64 77 46 69 6C 65 46 6C
61 67 73 4D 61 73 6B 20 61 6E 64 20 56 53 5F 46 46 5F 50 52 49 56 41 54
45 42 55 49 4C 44 29 20 3C 3E 20 30 20 74 68 65 6E 0D 0A 20 20 20 20 20
20 49 6E 63 6C 75 64 65 28 52 65 73 75 6C 74 2C 20 66 66 50 72 69 76 61
74 65 42 75 69 6C 64 29 3B 0D 0A 20 20 20 20 69 66 20 28 46 44 61 74 61
5E 2E 64 77 46 69 6C 65 46 6C 61 67 73 4D 61 73 6B 20 61 6E 64 20 56 53
5F 46 46 5F 49 4E 46 4F 49 4E 46 45 52 52 45 44 29 20 3C 3E 20 30 20 74
68 65 6E 0D 0A 20 20 20 20 20 20 49 6E 63 6C 75 64 65 28 52 65 73 75 6C
74 2C 20 66 66 49 6E 66 6F 49 6E 66 65 72 72 65 64 29 3B 0D 0A 20 20 20
20 69 66 20 28 46 44 61 74 61 5E 2E 64 77 46 69 6C 65 46 6C 61 67 73 4D
61 73 6B 20 61 6E 64 20 56 53 5F 46 46 5F 53 50 45 43 49 41 4C 42 55 49
4C 44 29 20 3C 3E 20 30 20 74 68 65 6E 0D 0A 20 20 20 20 20 20 49 6E 63
6C 75 64 65 28 52 65 73 75 6C 74 2C 20 66 66 53 70 65 63 69 61 6C 42 75
69 6C 64 29 3B 0D 0A 20 20 65 6E 64 3B 0D 0A 65 6E 64 3B 0D 0A 0D 0A 66
75 6E 63 74 69 6F 6E 20 54 46 69 78 65 64 46 69 6C 65 56 65 72 73 69 6F
6E 49 6E 66 6F 2E 47 65 74 46 6C 61 67 73 3A 20 54 46 69 78 65 64 46 69
6C 65 49 6E 66 6F 46 6C 61 67 73 3B 0D 0A 62 65 67 69 6E 0D 0A 20 20 52
65 73 75 6C 74 20 3A 3D 20 5B 5D 3B 0D 0A 20 20 69 66 20 46 44 61 74 61
20 3C 3E 20 6E 69 6C 20 74 68 65 6E 0D 0A 20 20 62 65 67 69 6E 0D 0A 20
20 20 20 69 66 20 28 46 44 61 74 61 5E 2E 64 77 46 69 6C 65 46 6C 61 67
73 20 61 6E 64 20 56 53 5F 46 46 5F 44 45 42 55 47 29 20 3C 3E 20 30 20
74 68 65 6E 0D 0A 20 20 20 20 20 20 49 6E 63 6C 75 64 65 28 52 65 73 75
6C 74 2C 20 66 66 44 65 62 75 67 29 3B 0D 0A 20 20 20 20 69 66 20 28 46
44 61 74 61 5E 2E 64 77 46 69 6C 65 46 6C 61 67 73 20 61 6E 64 20 56 53
5F 46 46 5F 50 52 45 52 45 4C 45 41 53 45 29 20 3C 3E 20 30 20 74 68 65
6E 0D 0A 20 20 20 20 20 20 49 6E 63 6C 75 64 65 28 52 65 73 75 6C 74 2C
20 66 66 50 72 65 52 65 6C 65 61 73 65 29 3B 0D 0A 20 20 20 20 69 66 20
28 46 44 61 74 61 5E 2E 64 77 46 69 6C 65 46 6C 61 67 73 20 61 6E 64 20
56 53 5F 46 46 5F 50 41 54 43 48 45 44 29 20 3C 3E 20 30 20 74 68 65 6E
0D 0A 20 20 20 20 20 20 49 6E 63 6C 75 64 65 28 52 65 73 75 6C 74 2C 20
66 66 50 61 74 63 68 65 64 29 3B 0D 0A 20 20 20 20 69 66 20 28 46 44 61
74 61 5E 2E 64 77 46 69 6C 65 46 6C 61 67 73 20 61 6E 64 20 56 53 5F 46
46 5F 50 52 49 56 41 54 45 42 55 49 4C 44 29 20 3C 3E 20 30 20 74 68 65
6E 0D 0A 20 20 20 20 20 20 49 6E 63 6C 75 64 65 28 52 65 73 75 6C 74 2C
20 66 66 50 72 69 76 61 74 65 42 75 69 6C 64 29 3B 0D 0A 20 20 20 20 69
66 20 28 46 44 61 74 61 5E 2E 64 77 46 69 6C 65 46 6C 61 67 73 20 61 6E
64 20 56 53 5F 46 46 5F 49 4E 46 4F 49 4E 46 45 52 52 45 44 29 20 3C 3E
20 30 20 74 68 65 6E 0D 0A 20 20 20 20 20 20 49 6E 63 6C 75 64 65 28 52
65 73 75 6C 74 2C 20 66 66 49 6E 66 6F 49 6E 66 65 72 72 65 64 29 3B 0D
0A 20 20 20 20 69 66 20 28 46 44 61 74 61 5E 2E 64 77 46 69 6C 65 46 6C
61 67 73 20 61 6E 64 20 56 53 5F 46 46 5F 53 50 45 43 49 41 4C 42 55 49
4C 44 29 20 3C 3E 20 30 20 74 68 65 6E 0D 0A 20 20 20 20 20 20 49 6E 63
6C 75 64 65 28 52 65 73 75 6C 74 2C 20 66 66 53 70 65 63 69 61 6C 42 75
69 6C 64 29 3B 0D 0A 20 20 65 6E 64 3B 0D 0A 65 6E 64 3B 0D 0A 0D 0A 66
75 6E 63 74 69 6F 6E 20 54 46 69 78 65 64 46 69 6C 65 56 65 72 73 69 6F
6E 49 6E 66 6F 2E 47 65 74 46 69 6C 65 4F 70 65 72 61 74 69 6E 67 53 79
73 74 65 6D 3A 20 54 56 65 72 73 69 6F 6E 4F 70 65 72 61 74 69 6E 67 53
79 73 74 65 6D 46 6C 61 67 73 3B 0D 0A 7B 24 49 46 4E 44 45 46 20 44 46
53 5F 57 49 4E 33 32 7D 0D 0A 76 61 72 0D 0A 20 20 46 69 6C 65 4F 53 3A
20 77 6F 72 64 3B 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 62 65 67 69 6E 0D
0A 20 20 52 65 73 75 6C 74 20 3A 3D 20 5B 5D 3B 0D 0A 20 20 69 66 20 46
44 61 74 61 20 3C 3E 20 6E 69 6C 20 74 68 65 6E 0D 0A 20 20 62 65 67 69
6E 0D 0A 20 20 20 20 63 61 73 65 20 48 69 57 6F 72 64 28 46 44 61 74 61
5E 2E 64 77 46 69 6C 65 4F 53 29 20 6F 66 0D 0A 20 20 20 20 20 20 56 4F
53 5F 44 4F 53 20 73 68 72 20 31 36 3A 0D 0A 20 20 20 20 20 20 20 20 49
6E 63 6C 75 64 65 28 52 65 73 75 6C 74 2C 20 76 6F 73 44 4F 53 29 3B 0D
0A 20 20 20 20 20 20 56 4F 53 5F 4F 53 32 31 36 20 73 68 72 20 31 36 3A
0D 0A 20 20 20 20 20 20 20 20 49 6E 63 6C 75 64 65 28 52 65 73 75 6C 74
2C 20 76 6F 73 4F 53 32 5F 31 36 29 3B 0D 0A 20 20 20 20 20 20 56 4F 53
5F 4F 53 32 33 32 20 73 68 72 20 31 36 3A 0D 0A 20 20 20 20 20 20 20 20
49 6E 63 6C 75 64 65 28 52 65 73 75 6C 74 2C 20 76 6F 73 4F 53 32 5F 33
32 29 3B 0D 0A 20 20 20 20 20 20 56 4F 53 5F 4E 54 20 73 68 72 20 31 36
3A 0D 0A 20 20 20 20 20 20 20 20 49 6E 63 6C 75 64 65 28 52 65 73 75 6C
74 2C 20 76 6F 73 4E 54 29 3B 0D 0A 20 20 20 20 65 6C 73 65 0D 0A 20 20
20 20 20 20 49 6E 63 6C 75 64 65 28 52 65 73 75 6C 74 2C 20 76 6F 73 55
6E 6B 6E 6F 77 6E 29 3B 0D 0A 20 20 20 20 65 6E 64 3B 0D 0A 0D 0A 7B 24
49 46 44 45 46 20 44 46 53 5F 57 49 4E 33 32 7D 0D 0A 20 20 20 20 63 61
73 65 20 4C 6F 57 6F 72 64 28 46 44 61 74 61 5E 2E 64 77 46 69 6C 65 4F
53 29 20 6F 66 0D 0A 20 20 20 20 20 20 4C 6F 57 6F 72 64 28 56 4F 53 5F
5F 57 49 4E 44 4F 57 53 31 36 29 3A 0D 0A 20 20 20 20 20 20 20 20 49 6E
63 6C 75 64 65 28 52 65 73 75 6C 74 2C 20 76 6F 73 57 69 6E 64 6F 77 73
31 36 29 3B 0D 0A 20 20 20 20 20 20 4C 6F 57 6F 72 64 28 56 4F 53 5F 5F
50 4D 31 36 29 3A 0D 0A 20 20 20 20 20 20 20 20 49 6E 63 6C 75 64 65 28
52 65 73 75 6C 74 2C 20 76 6F 73 50 72 65 73 65 6E 74 61 74 69 6F 6E 4D
61 6E 61 67 65 72 31 36 29 3B 0D 0A 20 20 20 20 20 20 4C 6F 57 6F 72 64
28 56 4F 53 5F 5F 50 4D 33 32 29 3A 0D 0A 20 20 20 20 20 20 20 20 49 6E
63 6C 75 64 65 28 52 65 73 75 6C 74 2C 20 76 6F 73 50 72 65 73 65 6E 74
61 74 69 6F 6E 4D 61 6E 61 67 65 72 33 32 29 3B 0D 0A 20 20 20 20 20 20
4C 6F 57 6F 72 64 28 56 4F 53 5F 5F 57 49 4E 44 4F 57 53 33 32 29 3A 0D
0A 20 20 20 20 20 20 20 20 49 6E 63 6C 75 64 65 28 52 65 73 75 6C 74 2C
20 76 6F 73 57 69 6E 64 6F 77 73 33 32 29 3B 0D 0A 20 20 20 20 65 6C 73
65 0D 0A 20 20 20 20 20 20 49 6E 63 6C 75 64 65 28 52 65 73 75 6C 74 2C
20 76 6F 73 55 6E 6B 6E 6F 77 6E 29 3B 0D 0A 20 20 20 20 65 6E 64 3B 0D
0A 7B 24 45 4C 53 45 7D 0D 0A 20 20 20 20 46 69 6C 65 4F 53 20 3A 3D 20
4C 6F 57 6F 72 64 28 46 44 61 74 61 5E 2E 64 77 46 69 6C 65 4F 53 29 3B
0D 0A 20 20 20 20 69 66 20 46 69 6C 65 4F 53 20 3D 20 4C 6F 57 6F 72 64
28 56 4F 53 5F 5F 57 49 4E 44 4F 57 53 31 36 29 20 74 68 65 6E 0D 0A 20
20 20 20 20 20 49 6E 63 6C 75 64 65 28 52 65 73 75 6C 74 2C 20 76 6F 73
57 69 6E 64 6F 77 73 31 36 29 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 20
46 69 6C 65 4F 53 20 3D 20 4C 6F 57 6F 72 64 28 56 4F 53 5F 5F 50 4D 31
36 29 20 74 68 65 6E 0D 0A 20 20 20 20 20 20 49 6E 63 6C 75 64 65 28 52
65 73 75 6C 74 2C 20 76 6F 73 50 72 65 73 65 6E 74 61 74 69 6F 6E 4D 61
6E 61 67 65 72 31 36 29 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 20 46 69
6C 65 4F 53 20 3D 20 4C 6F 57 6F 72 64 28 56 4F 53 5F 5F 50 4D 33 32 29
20 74 68 65 6E 0D 0A 20 20 20 20 20 20 49 6E 63 6C 75 64 65 28 52 65 73
75 6C 74 2C 20 76 6F 73 50 72 65 73 65 6E 74 61 74 69 6F 6E 4D 61 6E 61
67 65 72 33 32 29 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 20 46 69 6C 65
4F 53 20 3D 20 4C 6F 57 6F 72 64 28 56 4F 53 5F 5F 57 49 4E 44 4F 57 53
33 32 29 20 74 68 65 6E 0D 0A 20 20 20 20 20 20 49 6E 63 6C 75 64 65 28
52 65 73 75 6C 74 2C 20 76 6F 73 57 69 6E 64 6F 77 73 33 32 29 0D 0A 20
20 20 20 65 6C 73 65 0D 0A 20 20 20 20 20 20 49 6E 63 6C 75 64 65 28 52
65 73 75 6C 74 2C 20 76 6F 73 55 6E 6B 6E 6F 77 6E 29 3B 0D 0A 7B 24 45
4E 44 49 46 7D 0D 0A 20 20 65 6E 64 3B 0D 0A 65 6E 64 3B 0D 0A 0D 0A 66
75 6E 63 74 69 6F 6E 20 54 46 69 78 65 64 46 69 6C 65 56 65 72 73 69 6F
6E 49 6E 66 6F 2E 47 65 74 46 69 6C 65 54 79 70 65 3A 20 54 56 65 72 73
69 6F 6E 46 69 6C 65 54 79 70 65 3B 0D 0A 62 65 67 69 6E 0D 0A 20 20 52
65 73 75 6C 74 20 3A 3D 20 76 66 74 55 6E 6B 6E 6F 77 6E 3B 0D 0A 20 20
69 66 20 46 44 61 74 61 20 3C 3E 20 6E 69 6C 20 74 68 65 6E 0D 0A 20 20
62 65 67 69 6E 0D 0A 20 20 20 20 63 61 73 65 20 46 44 61 74 61 5E 2E 64
77 46 69 6C 65 54 79 70 65 20 6F 66 0D 0A 20 20 20 20 20 20 56 46 54 5F
41 50 50 3A 0D 0A 20 20 20 20 20 20 20 20 52 65 73 75 6C 74 20 3A 3D 20
76 66 74 41 70 70 6C 69 63 61 74 69 6F 6E 3B 0D 0A 20 20 20 20 20 20 56
46 54 5F 44 4C 4C 3A 0D 0A 20 20 20 20 20 20 20 20 52 65 73 75 6C 74 20
3A 3D 20 76 66 74 44 4C 4C 3B 0D 0A 20 20 20 20 20 20 56 46 54 5F 44 52
56 3A 0D 0A 20 20 20 20 20 20 20 20 52 65 73 75 6C 74 20 3A 3D 20 76 66
74 44 72 69 76 65 72 3B 0D 0A 20 20 20 20 20 20 56 46 54 5F 46 4F 4E 54
3A 0D 0A 20 20 20 20 20 20 20 20 52 65 73 75 6C 74 20 3A 3D 20 76 66 74
46 6F 6E 74 3B 0D 0A 20 20 20 20 20 20 56 46 54 5F 56 58 44 3A 0D 0A 20
20 20 20 20 20 20 20 52 65 73 75 6C 74 20 3A 3D 20 76 66 74 56 58 44 3B
0D 0A 20 20 20 20 20 20 56 46 54 5F 53 54 41 54 49 43 5F 4C 49 42 3A 0D
0A 20 20 20 20 20 20 20 20 52 65 73 75 6C 74 20 3A 3D 20 76 66 74 53 74
61 74 69 63 4C 69 62 3B 0D 0A 20 20 20 20 65 6E 64 3B 0D 0A 20 20 65 6E
64 3B 0D 0A 65 6E 64 3B 0D 0A 0D 0A 66 75 6E 63 74 69 6F 6E 20 54 46 69
78 65 64 46 69 6C 65 56 65 72 73 69 6F 6E 49 6E 66 6F 2E 47 65 74 46 69
6C 65 53 75 62 54 79 70 65 3A 20 44 57 4F 52 44 3B 0D 0A 62 65 67 69 6E
0D 0A 20 20 69 66 20 46 44 61 74 61 20 3D 20 6E 69 6C 20 74 68 65 6E 0D
0A 20 20 20 20 52 65 73 75 6C 74 20 3A 3D 20 30 0D 0A 20 20 65 6C 73 65
0D 0A 20 20 62 65 67 69 6E 0D 0A 20 20 20 20 52 65 73 75 6C 74 20 3A 3D
20 46 44 61 74 61 5E 2E 64 77 46 69 6C 65 53 75 62 74 79 70 65 3B 0D 0A
20 20 65 6E 64 3B 0D 0A 65 6E 64 3B 0D 0A 0D 0A 66 75 6E 63 74 69 6F 6E
20 54 46 69 78 65 64 46 69 6C 65 56 65 72 73 69 6F 6E 49 6E 66 6F 2E 47
65 74 43 72 65 61 74 69 6F 6E 44 61 74 65 3A 20 54 44 61 74 65 54 69 6D
65 3B 0D 0A 7B 24 49 46 44 45 46 20 44 46 53 5F 57 49 4E 33 32 7D 0D 0A
76 61 72 0D 0A 20 20 53 79 73 54 69 6D 65 3A 20 54 53 79 73 74 65 6D 54
69 6D 65 3B 0D 0A 20 20 46 69 6C 65 54 69 6D 65 3A 20 54 46 69 6C 65 54
69 6D 65 3B 0D 0A 62 65 67 69 6E 0D 0A 20 20 69 66 20 46 44 61 74 61 20
3D 20 6E 69 6C 20 74 68 65 6E 0D 0A 20 20 20 20 52 65 73 75 6C 74 20 3A
3D 20 30 0D 0A 20 20 65 6C 73 65 0D 0A 20 20 62 65 67 69 6E 0D 0A 20 20
20 20 46 69 6C 65 54 69 6D 65 2E 64 77 4C 6F 77 44 61 74 65 54 69 6D 65
20 3A 3D 20 46 44 61 74 61 5E 2E 64 77 46 69 6C 65 44 61 74 65 4C 53 3B
0D 0A 20 20 20 20 46 69 6C 65 54 69 6D 65 2E 64 77 48 69 67 68 44 61 74
65 54 69 6D 65 20 3A 3D 20 46 44 61 74 61 5E 2E 64 77 46 69 6C 65 44 61
74 65 4D 53 3B 0D 0A 20 20 20 20 69 66 20 46 69 6C 65 54 69 6D 65 54 6F
53 79 73 74 65 6D 54 69 6D 65 28 46 69 6C 65 54 69 6D 65 2C 20 53 79 73
54 69 6D 65 29 20 74 68 65 6E 0D 0A 20 20 20 20 62 65 67 69 6E 0D 0A 20
20 20 20 20 20 52 65 73 75 6C 74 20 3A 3D 20 53 79 73 74 65 6D 54 69 6D
65 54 6F 44 61 74 65 54 69 6D 65 28 53 79 73 54 69 6D 65 29 3B 0D 0A 20
20 20 20 65 6E 64 0D 0A 20 20 20 20 65 6C 73 65 0D 0A 20 20 20 20 20 20
52 65 73 75 6C 74 20 3A 3D 20 30 3B 0D 0A 20 20 65 6E 64 3B 0D 0A 7B 24
45 4C 53 45 7D 0D 0A 0D 0A 76 61 72 0D 0A 20 20 53 52 3A 20 54 53 65 61
72 63 68 52 65 63 3B 0D 0A 62 65 67 69 6E 0D 0A 20 20 7B 20 46 61 6B 65
20 69 74 20 75 6E 74 69 6C 20 49 20 63 61 6E 20 66 69 67 75 72 65 20 6F
75 74 20 68 6F 77 20 74 6F 20 63 6F 6E 76 65 72 74 20 64 77 46 69 6C 65
44 61 74 65 4D 53 20 61 6E 64 20 4C 53 20 7D 0D 0A 20 20 52 65 73 75 6C
74 20 3A 3D 20 30 3B 0D 0A 20 20 69 66 20 61 73 73 69 67 6E 65 64 28 46
50 61 72 65 6E 74 29 20 74 68 65 6E 0D 0A 20 20 62 65 67 69 6E 0D 0A 20
20 20 20 69 66 20 46 69 6E 64 46 69 72 73 74 28 46 50 61 72 65 6E 74 2E
47 65 74 52 65 73 6F 75 72 63 65 46 69 6C 65 6E 61 6D 65 2C 20 66 61 41
6E 79 46 69 6C 65 2C 20 53 52 29 20 3D 20 30 20 74 68 65 6E 0D 0A 20 20
20 20 62 65 67 69 6E 0D 0A 20 20 20 20 20 20 52 65 73 75 6C 74 20 3A 3D
20 46 69 6C 65 44 61 74 65 54 6F 44 61 74 65 54 69 6D 65 28 53 52 2E 54
69 6D 65 29 3B 0D 0A 20 20 20 20 20 20 46 69 6E 64 43 6C 6F 73 65 28 53
52 29 3B 0D 0A 20 20 20 20 65 6E 64 3B 0D 0A 20 20 65 6E 64 3B 0D 0A 20
20 28 2A 0D 0A 20 20 20 20 76 61 72 0D 0A 20 20 20 20 42 69 67 4E 75 6D
3A 20 63 6F 6D 70 3B 0D 0A 20 20 20 20 62 65 67 69 6E 0D 0A 20 20 20 20
69 66 20 46 44 61 74 61 20 3D 20 6E 69 6C 20 74 68 65 6E 0D 0A 20 20 20
20 52 65 73 75 6C 74 20 3A 3D 20 30 0D 0A 20 20 20 20 65 6C 73 65 20 62
65 67 69 6E 0D 0A 0D 0A 20 20 20 20 42 69 67 4E 75 6D 20 3A 3D 20 28 46
44 61 74 61 5E 2E 64 77 46 69 6C 65 44 61 74 65 4D 53 20 2A 20 4D 61 78
4C 6F 6E 67 49 6E 74 29 20 2B 20 46 44 61 74 61 5E 2E 64 77 46 69 6C 65
44 61 74 65 4C 53 3B 0D 0A 20 20 20 20 42 69 67 4E 75 6D 20 3A 3D 20 42
69 67 4E 75 6D 20 2F 20 31 30 30 30 30 30 30 30 3B 0D 0A 20 20 20 20 7B
20 4C 53 20 61 6E 64 20 4D 53 20 69 73 20 74 68 65 20 6E 75 6D 62 65 72
20 6F 66 20 31 30 30 20 6E 61 6E 6F 73 65 63 6F 6E 64 20 69 6E 74 65 72
76 61 6C 73 20 73 69 6E 63 65 20 31 2F 31 2F 31 36 30 31 20 7D 0D 0A 20
20 20 20 7B 20 31 30 2C 30 30 30 2C 30 30 30 73 20 6F 66 20 61 20 73 65
63 6F 6E 64 20 7D 0D 0A 20 20 20 20 52 65 73 75 6C 74 20 3A 3D 20 45 6E
63 6F 64 65 44 61 74 65 28 31 36 30 31 2C 20 31 2C 20 31 29 3B 0D 0A 20
20 20 20 52 65 73 75 6C 74 20 3A 3D 20 42 69 67 4E 75 6D 2E 2E 2E 2E 2E
0D 0A 20 20 20 20 65 6E 64 3B 0D 0A 20 20 2A 29 0D 0A 0D 0A 7B 24 45 4E
44 49 46 7D 0D 0A 65 6E 64 3B 0D 0A 0D 0A 63 6F 6E 73 74 72 75 63 74 6F
72 20 54 56 65 72 73 69 6F 6E 4E 75 6D 62 65 72 49 6E 66 6F 72 6D 61 74
69 6F 6E 2E 43 72 65 61 74 65 28 4D 53 56 65 72 2C 20 4C 53 56 65 72 3A
20 44 57 4F 52 44 29 3B 0D 0A 62 65 67 69 6E 0D 0A 20 20 69 6E 68 65 72
69 74 65 64 20 43 72 65 61 74 65 3B 0D 0A 0D 0A 20 20 46 56 61 6C 69 64
20 3A 3D 20 46 41 4C 53 45 3B 0D 0A 20 20 46 4D 6F 73 74 53 69 67 6E 69
66 69 63 61 6E 74 20 3A 3D 20 4D 53 56 65 72 3B 0D 0A 20 20 46 4C 65 61
73 74 53 69 67 6E 69 66 69 63 61 6E 74 20 3A 3D 20 4C 53 56 65 72 3B 0D
0A 65 6E 64 3B 0D 0A 0D 0A 66 75 6E 63 74 69 6F 6E 20 54 56 65 72 73 69
6F 6E 4E 75 6D 62 65 72 49 6E 66 6F 72 6D 61 74 69 6F 6E 2E 47 65 74 56
65 72 73 69 6F 6E 4E 75 6D 62 65 72 28 49 6E 64 65 78 3A 20 69 6E 74 65
67 65 72 29 3A 20 77 6F 72 64 3B 0D 0A 62 65 67 69 6E 0D 0A 20 20 52 65
73 75 6C 74 20 3A 3D 20 30 3B 0D 0A 20 20 69 66 20 46 56 61 6C 69 64 20
74 68 65 6E 0D 0A 20 20 20 20 63 61 73 65 20 49 6E 64 65 78 20 6F 66 0D
0A 20 20 20 20 20 20 49 44 58 5F 56 45 52 5F 4D 41 4A 4F 52 3A 0D 0A 20
20 20 20 20 20 20 20 52 65 73 75 6C 74 20 3A 3D 20 48 69 57 6F 72 64 28
46 4D 6F 73 74 53 69 67 6E 69 66 69 63 61 6E 74 29 3B 0D 0A 20 20 20 20
20 20 49 44 58 5F 56 45 52 5F 4D 49 4E 4F 52 3A 0D 0A 20 20 20 20 20 20
20 20 52 65 73 75 6C 74 20 3A 3D 20 4C 6F 57 6F 72 64 28 46 4D 6F 73 74
53 69 67 6E 69 66 69 63 61 6E 74 29 3B 0D 0A 20 20 20 20 20 20 49 44 58
5F 56 45 52 5F 52 45 4C 45 41 53 45 3A 0D 0A 20 20 20 20 20 20 20 20 52
65 73 75 6C 74 20 3A 3D 20 48 69 57 6F 72 64 28 46 4C 65 61 73 74 53 69
67 6E 69 66 69 63 61 6E 74 29 3B 0D 0A 20 20 20 20 20 20 49 44 58 5F 56
45 52 5F 42 55 49 4C 44 3A 0D 0A 20 20 20 20 20 20 20 20 52 65 73 75 6C
74 20 3A 3D 20 4C 6F 57 6F 72 64 28 46 4C 65 61 73 74 53 69 67 6E 69 66
69 63 61 6E 74 29 0D 0A 20 20 20 20 65 6E 64 0D 0A 65 6E 64 3B 0D 0A 0D
0A 66 75 6E 63 74 69 6F 6E 20 54 56 65 72 73 69 6F 6E 4E 75 6D 62 65 72
49 6E 66 6F 72 6D 61 74 69 6F 6E 2E 47 65 74 56 65 72 73 69 6F 6E 4E 75
6D 62 65 72 53 74 72 69 6E 67 3A 20 73 74 72 69 6E 67 3B 0D 0A 62 65 67
69 6E 0D 0A 20 20 69 66 20 46 56 61 6C 69 64 20 74 68 65 6E 0D 0A 20 20
62 65 67 69 6E 0D 0A 20 20 20 20 69 66 20 46 56 65 72 73 69 6F 6E 4E 75
6D 62 65 72 53 74 72 69 6E 67 20 3D 20 27 27 20 74 68 65 6E 0D 0A 20 20
20 20 20 20 52 65 73 75 6C 74 20 3A 3D 20 46 6F 72 6D 61 74 28 27 25 64
2E 25 64 2E 25 64 2E 25 64 27 2C 20 5B 4D 61 6A 6F 72 2C 20 4D 69 6E 6F
72 2C 20 52 65 6C 65 61 73 65 2C 20 42 75 69 6C 64 5D 29 0D 0A 20 20 20
20 65 6C 73 65 0D 0A 20 20 20 20 20 20 52 65 73 75 6C 74 20 3A 3D 20 46
56 65 72 73 69 6F 6E 4E 75 6D 62 65 72 53 74 72 69 6E 67 3B 0D 0A 20 20
65 6E 64 0D 0A 20 20 65 6C 73 65 0D 0A 20 20 20 20 52 65 73 75 6C 74 20
3A 3D 20 27 27 0D 0A 65 6E 64 3B 0D 0A 0D 0A 7B 24 49 46 44 45 46 20 44
46 53 5F 56 45 52 53 49 4F 4E 5F 49 4E 46 4F 5F 41 53 5F 43 4C 41 53 53
7D 0D 0A 0D 0A 63 6F 6E 73 74 72 75 63 74 6F 72 20 54 64 66 73 56 65 72
73 69 6F 6E 49 6E 66 6F 52 65 73 6F 75 72 63 65 2E 43 72 65 61 74 65 3B
0D 0A 62 65 67 69 6E 0D 0A 20 20 69 6E 68 65 72 69 74 65 64 20 43 72 65
61 74 65 3B 0D 0A 0D 0A 20 20 46 56 65 72 73 69 6F 6E 49 6E 66 6F 20 3A
3D 20 6E 69 6C 3B 0D 0A 20 20 46 56 65 72 73 69 6F 6E 49 6E 66 6F 53 69
7A 65 20 3A 3D 20 30 3B 0D 0A 20 20 46 46 69 6C 65 6E 61 6D 65 20 3A 3D
20 27 27 3B 0D 0A 20 20 46 54 72 61 6E 73 6C 61 74 69 6F 6E 49 44 49 6E
64 65 78 20 3A 3D 20 30 3B 0D 0A 20 20 46 46 6F 72 63 65 45 58 45 20 3A
3D 20 46 41 4C 53 45 3B 0D 0A 20 20 46 54 72 61 6E 73 6C 61 74 69 6F 6E
49 44 73 20 3A 3D 20 54 53 74 72 69 6E 67 4C 69 73 74 2E 43 72 65 61 74
65 3B 0D 0A 20 20 46 46 69 6C 65 56 65 72 73 69 6F 6E 20 3A 3D 20 54 56
65 72 73 69 6F 6E 4E 75 6D 62 65 72 49 6E 66 6F 72 6D 61 74 69 6F 6E 2E
43 72 65 61 74 65 28 30 2C 20 30 29 3B 0D 0A 20 20 46 50 72 6F 64 75 63
74 56 65 72 73 69 6F 6E 20 3A 3D 20 54 56 65 72 73 69 6F 6E 4E 75 6D 62
65 72 49 6E 66 6F 72 6D 61 74 69 6F 6E 2E 43 72 65 61 74 65 28 30 2C 20
30 29 3B 0D 0A 20 20 46 46 69 78 65 64 49 6E 66 6F 20 3A 3D 20 54 46 69
78 65 64 46 69 6C 65 56 65 72 73 69 6F 6E 49 6E 66 6F 2E 43 72 65 61 74
65 28 53 65 6C 66 29 3B 0D 0A 65 6E 64 3B 0D 0A 7B 24 45 4C 53 45 7D 0D
0A 0D 0A 63 6F 6E 73 74 72 75 63 74 6F 72 20 54 64 66 73 56 65 72 73 69
6F 6E 49 6E 66 6F 52 65 73 6F 75 72 63 65 2E 43 72 65 61 74 65 28 41 4F
77 6E 65 72 3A 20 54 43 6F 6D 70 6F 6E 65 6E 74 29 3B 0D 0A 62 65 67 69
6E 0D 0A 20 20 69 6E 68 65 72 69 74 65 64 20 43 72 65 61 74 65 28 41 4F
77 6E 65 72 29 3B 0D 0A 0D 0A 20 20 46 56 65 72 73 69 6F 6E 49 6E 66 6F
20 3A 3D 20 6E 69 6C 3B 0D 0A 20 20 46 56 65 72 73 69 6F 6E 49 6E 66 6F
53 69 7A 65 20 3A 3D 20 30 3B 0D 0A 20 20 46 46 69 6C 65 6E 61 6D 65 20
3A 3D 20 27 27 3B 0D 0A 20 20 46 54 72 61 6E 73 6C 61 74 69 6F 6E 49 44
49 6E 64 65 78 20 3A 3D 20 30 3B 0D 0A 20 20 46 46 6F 72 63 65 45 58 45
20 3A 3D 20 46 41 4C 53 45 3B 0D 0A 20 20 46 54 72 61 6E 73 6C 61 74 69
6F 6E 49 44 73 20 3A 3D 20 54 53 74 72 69 6E 67 4C 69 73 74 2E 43 72 65
61 74 65 3B 0D 0A 20 20 46 46 69 6C 65 56 65 72 73 69 6F 6E 20 3A 3D 20
54 56 65 72 73 69 6F 6E 4E 75 6D 62 65 72 49 6E 66 6F 72 6D 61 74 69 6F
6E 2E 43 72 65 61 74 65 28 30 2C 20 30 29 3B 0D 0A 20 20 46 50 72 6F 64
75 63 74 56 65 72 73 69 6F 6E 20 3A 3D 20 54 56 65 72 73 69 6F 6E 4E 75
6D 62 65 72 49 6E 66 6F 72 6D 61 74 69 6F 6E 2E 43 72 65 61 74 65 28 30
2C 20 30 29 3B 0D 0A 20 20 46 46 69 78 65 64 49 6E 66 6F 20 3A 3D 20 54
46 69 78 65 64 46 69 6C 65 56 65 72 73 69 6F 6E 49 6E 66 6F 2E 43 72 65
61 74 65 28 53 65 6C 66 29 3B 0D 0A 20 20 46 53 68 6F 77 52 65 73 6F 75
72 63 65 20 3A 3D 20 5B 4C 6F 77 28 54 50 72 65 44 65 66 29 20 2E 2E 20
48 69 67 68 28 54 50 72 65 44 65 66 29 5D 0D 0A 65 6E 64 3B 0D 0A 7B 24
45 4E 44 49 46 7D 0D 0A 0D 0A 64 65 73 74 72 75 63 74 6F 72 20 54 64 66
73 56 65 72 73 69 6F 6E 49 6E 66 6F 52 65 73 6F 75 72 63 65 2E 44 65 73
74 72 6F 79 3B 0D 0A 62 65 67 69 6E 0D 0A 20 20 46 46 69 6C 65 56 65 72
73 69 6F 6E 2E 46 72 65 65 3B 0D 0A 20 20 46 50 72 6F 64 75 63 74 56 65
72 73 69 6F 6E 2E 46 72 65 65 3B 0D 0A 20 20 46 46 69 78 65 64 49 6E 66
6F 2E 46 72 65 65 3B 0D 0A 20 20 46 54 72 61 6E 73 6C 61 74 69 6F 6E 49
44 73 2E 46 72 65 65 3B 0D 0A 20 20 69 66 20 46 56 65 72 73 69 6F 6E 49
6E 66 6F 20 3C 3E 20 6E 69 6C 20 74 68 65 6E 0D 0A 20 20 20 20 46 72 65
65 4D 65 6D 28 46 56 65 72 73 69 6F 6E 49 6E 66 6F 2C 20 46 56 65 72 73
69 6F 6E 49 6E 66 6F 53 69 7A 65 29 3B 0D 0A 0D 0A 20 20 69 6E 68 65 72
69 74 65 64 20 44 65 73 74 72 6F 79 3B 0D 0A 65 6E 64 3B 0D 0A 0D 0A 7B
24 49 46 4E 44 45 46 20 44 46 53 5F 56 45 52 53 49 4F 4E 5F 49 4E 46 4F
5F 41 53 5F 43 4C 41 53 53 7D 0D 0A 0D 0A 70 72 6F 63 65 64 75 72 65 20
54 64 66 73 56 65 72 73 69 6F 6E 49 6E 66 6F 52 65 73 6F 75 72 63 65 2E
4C 6F 61 64 65 64 3B 0D 0A 62 65 67 69 6E 0D 0A 20 20 69 6E 68 65 72 69
74 65 64 20 4C 6F 61 64 65 64 3B 0D 0A 0D 0A 20 20 52 65 61 64 56 65 72
73 69 6F 6E 49 6E 66 6F 44 61 74 61 3B 0D 0A 20 20 28 2A 0D 0A 20 20 20
20 7B 24 49 46 4E 44 45 46 20 44 46 53 5F 56 45 52 53 49 4F 4E 5F 49 4E
46 4F 5F 41 53 5F 43 4C 41 53 53 7D 0D 0A 20 20 20 20 50 6F 70 75 6C 61
74 65 43 6F 6E 74 72 6F 6C 73 3B 0D 0A 20 20 20 20 7B 24 45 4E 44 49 46
7D 0D 0A 20 20 2A 29 0D 0A 65 6E 64 3B 0D 0A 7B 24 45 4E 44 49 46 7D 0D
0A 0D 0A 70 72 6F 63 65 64 75 72 65 20 54 64 66 73 56 65 72 73 69 6F 6E
49 6E 66 6F 52 65 73 6F 75 72 63 65 2E 53 65 74 46 69 6C 65 6E 61 6D 65
28 63 6F 6E 73 74 20 56 61 6C 3A 20 54 56 65 72 73 69 6F 6E 46 69 6C 65
6E 61 6D 65 29 3B 0D 0A 62 65 67 69 6E 0D 0A 20 20 46 46 69 6C 65 6E 61
6D 65 20 3A 3D 20 56 61 6C 3B 0D 0A 20 20 52 65 61 64 56 65 72 73 69 6F
6E 49 6E 66 6F 44 61 74 61 3B 0D 0A 65 6E 64 3B 0D 0A 0D 0A 70 72 6F 63
65 64 75 72 65 20 54 64 66 73 56 65 72 73 69 6F 6E 49 6E 66 6F 52 65 73
6F 75 72 63 65 2E 52 65 61 64 56 65 72 73 69 6F 6E 49 6E 66 6F 44 61 74
61 3B 0D 0A 63 6F 6E 73 74 0D 0A 20 20 54 52 41 4E 53 4C 41 54 49 4F 4E
5F 49 4E 46 4F 20 3D 20 27 5C 56 61 72 46 69 6C 65 49 6E 66 6F 5C 54 72
61 6E 73 6C 61 74 69 6F 6E 27 3B 0D 0A 74 79 70 65 0D 0A 20 20 54 54 72
61 6E 73 6C 61 74 69 6F 6E 50 61 69 72 20 3D 20 70 61 63 6B 65 64 20 72
65 63 6F 72 64 0D 0A 20 20 20 20 4C 61 6E 67 2C 20 43 68 61 72 53 65 74
3A 20 77 6F 72 64 3B 0D 0A 20 20 65 6E 64 3B 0D 0A 0D 0A 20 20 50 54 72
61 6E 73 6C 61 74 69 6F 6E 49 44 4C 69 73 74 20 3D 20 5E 54 54 72 61 6E
73 6C 61 74 69 6F 6E 49 44 4C 69 73 74 3B 0D 0A 20 20 54 54 72 61 6E 73
6C 61 74 69 6F 6E 49 44 4C 69 73 74 20 3D 20 61 72 72 61 79 20 5B 30 20
2E 2E 20 4D 41 58 49 4E 54 20 64 69 76 20 53 69 7A 65 4F 66 28 54 54 72
61 6E 73 6C 61 74 69 6F 6E 50 61 69 72 29 20 2D 20 31 5D 20 6F 66 20 54
54 72 61 6E 73 6C 61 74 69 6F 6E 50 61 69 72 3B 0D 0A 76 61 72 0D 0A 20
20 51 75 65 72 79 4C 65 6E 3A 20 55 49 4E 54 3B 0D 0A 20 20 49 44 73 4C
65 6E 3A 20 55 49 4E 54 3B 0D 0A 20 20 44 75 6D 6D 79 3A 20 44 57 4F 52
44 3B 0D 0A 20 20 49 44 73 3A 20 50 54 72 61 6E 73 6C 61 74 69 6F 6E 49
44 4C 69 73 74 3B 0D 0A 20 20 49 44 43 6F 75 6E 74 3A 20 69 6E 74 65 67
65 72 3B 0D 0A 20 20 46 69 78 65 64 49 6E 66 6F 44 61 74 61 3A 20 50 56
53 46 69 78 65 64 46 69 6C 65 49 6E 66 6F 3B 0D 0A 20 20 54 65 6D 70 46
69 6C 65 6E 61 6D 65 3A 20 61 72 72 61 79 20 5B 30 20 2E 2E 20 32 35 35
5D 20 6F 66 20 63 68 61 72 3B 0D 0A 62 65 67 69 6E 0D 0A 20 20 46 54 72
61 6E 73 6C 61 74 69 6F 6E 49 44 73 2E 43 6C 65 61 72 3B 0D 0A 20 20 46
46 69 78 65 64 49 6E 66 6F 2E 44 61 74 61 20 3A 3D 20 6E 69 6C 3B 0D 0A
20 20 69 66 20 46 56 65 72 73 69 6F 6E 49 6E 66 6F 20 3C 3E 20 6E 69 6C
20 74 68 65 6E 0D 0A 20 20 20 20 46 72 65 65 4D 65 6D 28 46 56 65 72 73
69 6F 6E 49 6E 66 6F 2C 20 46 56 65 72 73 69 6F 6E 49 6E 66 6F 53 69 7A
65 29 3B 0D 0A 20 20 53 74 72 50 43 6F 70 79 28 54 65 6D 70 46 69 6C 65
6E 61 6D 65 2C 20 47 65 74 52 65 73 6F 75 72 63 65 46 69 6C 65 6E 61 6D
65 29 3B 0D 0A 0D 0A 20 20 7B 20 44 65 6E 69 73 20 4B 6F 70 70 72 61 73
63 68 3A 20 61 64 64 65 64 20 61 20 74 72 79 2D 45 78 63 65 70 74 20 62
65 63 61 75 73 65 20 47 65 74 46 69 6C 65 56 65 72 73 69 6F 6E 49 6E 66
6F 53 69 7A 65 20 63 61 6E 20 66 61 69 6C 0D 0A 20 20 20 20 77 69 74 68
20 61 6E 20 69 6E 76 61 6C 69 64 20 70 6F 69 6E 74 65 72 20 6F 72 20 73
6F 6D 65 74 68 69 6E 67 20 6C 69 6B 65 20 74 68 61 74 21 20 7D 0D 0A 20
20 74 72 79 0D 0A 20 20 20 20 46 56 65 72 73 69 6F 6E 49 6E 66 6F 53 69
7A 65 20 3A 3D 20 47 65 74 46 69 6C 65 56 65 72 73 69 6F 6E 49 6E 66 6F
53 69 7A 65 28 54 65 6D 70 46 69 6C 65 6E 61 6D 65 2C 20 44 75 6D 6D 79
29 3B 0D 0A 20 20 65 78 63 65 70 74 0D 0A 20 20 20 20 46 56 65 72 73 69
6F 6E 49 6E 66 6F 53 69 7A 65 20 3A 3D 20 30 3B 0D 0A 20 20 65 6E 64 3B
0D 0A 0D 0A 20 20 69 66 20 46 56 65 72 73 69 6F 6E 49 6E 66 6F 53 69 7A
65 20 3D 20 30 20 74 68 65 6E 0D 0A 20 20 62 65 67 69 6E 0D 0A 20 20 20
20 46 56 65 72 73 69 6F 6E 49 6E 66 6F 20 3A 3D 20 6E 69 6C 3B 0D 0A 20
20 20 20 46 46 69 6C 65 56 65 72 73 69 6F 6E 2E 56 61 6C 69 64 20 3A 3D
20 46 41 4C 53 45 3B 0D 0A 20 20 20 20 46 50 72 6F 64 75 63 74 56 65 72
73 69 6F 6E 2E 56 61 6C 69 64 20 3A 3D 20 46 41 4C 53 45 3B 0D 0A 20 20
65 6E 64 0D 0A 20 20 65 6C 73 65 0D 0A 20 20 62 65 67 69 6E 0D 0A 20 20
20 20 47 65 74 4D 65 6D 28 46 56 65 72 73 69 6F 6E 49 6E 66 6F 2C 20 46
56 65 72 73 69 6F 6E 49 6E 66 6F 53 69 7A 65 29 3B 0D 0A 20 20 20 20 47
65 74 46 69 6C 65 56 65 72 73 69 6F 6E 49 6E 66 6F 28 54 65 6D 70 46 69
6C 65 6E 61 6D 65 2C 20 44 75 6D 6D 79 2C 20 46 56 65 72 73 69 6F 6E 49
6E 66 6F 53 69 7A 65 2C 20 46 56 65 72 73 69 6F 6E 49 6E 66 6F 29 3B 0D
0A 0D 0A 20 20 20 20 56 65 72 51 75 65 72 79 56 61 6C 75 65 28 46 56 65
72 73 69 6F 6E 49 6E 66 6F 2C 20 27 5C 27 2C 20 70 6F 69 6E 74 65 72 28
46 69 78 65 64 49 6E 66 6F 44 61 74 61 29 2C 20 51 75 65 72 79 4C 65 6E
29 3B 0D 0A 20 20 20 20 46 46 69 78 65 64 49 6E 66 6F 2E 44 61 74 61 20
3A 3D 20 46 69 78 65 64 49 6E 66 6F 44 61 74 61 3B 0D 0A 20 20 20 20 69
66 20 56 65 72 51 75 65 72 79 56 61 6C 75 65 28 46 56 65 72 73 69 6F 6E
49 6E 66 6F 2C 20 54 52 41 4E 53 4C 41 54 49 4F 4E 5F 49 4E 46 4F 2C 20
70 6F 69 6E 74 65 72 28 49 44 73 29 2C 20 49 44 73 4C 65 6E 29 20 74 68
65 6E 0D 0A 20 20 20 20 62 65 67 69 6E 0D 0A 20 20 20 20 20 20 7B 20 44
65 6E 69 73 20 4B 6F 70 70 72 61 73 63 68 3A 20 69 66 20 49 44 43 6F 75
6E 74 20 3D 20 30 2C 20 74 68 65 20 66 6F 72 20 2E 2E 20 74 6F 20 2E 2E
2E 2D 53 74 61 74 65 6D 65 6E 74 20 69 73 20 65 78 65 63 75 74 65 64 0D
0A 20 20 20 20 20 20 20 20 73 65 76 65 72 61 6C 20 74 69 6D 65 73 20 28
6D 61 79 62 65 20 69 6E 66 69 6E 69 74 65 20 75 6E 74 69 6C 20 65 72 72
6F 72 29 20 69 66 20 72 61 6E 67 65 20 63 68 65 63 6B 69 6E 67 20 6F 66
66 20 7D 0D 0A 20 20 20 20 20 20 49 44 43 6F 75 6E 74 20 3A 3D 20 49 44
73 4C 65 6E 20 64 69 76 20 53 69 7A 65 4F 66 28 54 54 72 61 6E 73 6C 61
74 69 6F 6E 50 61 69 72 29 3B 0D 0A 20 20 20 20 20 20 69 66 20 28 49 44
43 6F 75 6E 74 20 3E 20 30 29 20 74 68 65 6E 0D 0A 20 20 20 20 20 20 62
65 67 69 6E 0D 0A 20 20 20 20 20 20 20 20 66 6F 72 20 44 75 6D 6D 79 20
3A 3D 20 30 20 74 6F 20 49 44 43 6F 75 6E 74 20 2D 20 31 20 64 6F 0D 0A
20 20 20 20 20 20 20 20 62 65 67 69 6E 0D 0A 20 20 20 20 20 20 20 20 20
20 7B 20 21 21 21 20 50 6F 74 65 6E 74 69 61 6C 20 70 72 6F 62 6C 65 6D
2E 20 20 53 6F 6D 65 20 6F 66 20 4D 53 27 73 20 73 74 75 66 66 20 64 6F
65 73 20 74 68 69 73 2C 20 73 6F 6D 65 20 64 6F 65 73 20 6E 6F 74 2E 20
20 4E 65 65 64 20 74 6F 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 66 69
67 75 72 65 20 61 20 77 61 79 20 74 6F 20 6D 61 6B 65 20 69 74 20 77 6F
72 6B 20 77 69 74 68 20 62 6F 74 68 2E 20 7D 0D 0A 20 20 20 20 20 20 20
20 20 20 28 2A 20 69 66 20 49 44 73 5E 5B 44 75 6D 6D 79 5D 2E 4C 61 6E
67 20 3D 20 30 20 74 68 65 6E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20
49 44 73 5E 5B 44 75 6D 6D 79 5D 2E 4C 61 6E 67 20 3A 3D 20 44 45 46 41
55 4C 54 5F 4C 41 4E 47 5F 49 44 3B 20 7B 20 53 6F 6D 65 20 6F 66 20 4D
69 63 72 6F 73 6F 66 74 27 73 20 73 74 75 66 66 20 64 6F 65 73 20 74 68
69 73 20 7D 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 49 44 73
5E 5B 44 75 6D 6D 79 5D 2E 43 68 61 72 53 65 74 20 3D 20 30 20 74 68 65
6E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 49 44 73 5E 5B 44 75 6D 6D
79 5D 2E 43 68 61 72 53 65 74 20 3A 3D 20 44 45 46 41 55 4C 54 5F 43 48
41 52 5F 53 45 54 5F 49 44 3B 20 2A 29 0D 0A 20 20 20 20 20 20 20 20 20
20 46 54 72 61 6E 73 6C 61 74 69 6F 6E 49 44 73 2E 41 64 64 28 46 6F 72
6D 61 74 28 27 25 2E 34 78 25 2E 34 78 27 2C 20 5B 49 44 73 5E 5B 44 75
6D 6D 79 5D 2E 4C 61 6E 67 2C 20 49 44 73 5E 5B 44 75 6D 6D 79 5D 2E 43
68 61 72 53 65 74 5D 29 29 3B 0D 0A 20 20 20 20 20 20 20 20 65 6E 64 3B
0D 0A 20 20 20 20 20 20 65 6E 64 0D 0A 20 20 20 20 20 20 65 6C 73 65 20
69 66 20 28 49 44 43 6F 75 6E 74 20 3D 20 30 29 20 61 6E 64 20 28 49 44
73 4C 65 6E 20 3E 20 30 29 20 74 68 65 6E 0D 0A 20 20 20 20 20 20 62 65
67 69 6E 0D 0A 20 20 20 20 20 20 20 20 7B 20 54 68 65 72 65 20 77 61 73
20 74 72 61 6E 73 6C 61 74 69 6F 6E 20 69 6E 66 6F 2C 20 62 75 74 20 74
68 65 72 65 20 77 61 73 20 6E 6F 74 20 61 20 66 75 6C 6C 20 73 65 74 2E
20 20 57 68 61 74 27 73 0D 0A 20 20 20 20 20 20 20 20 20 20 74 68 65 72
65 20 69 73 20 75 73 75 61 6C 6C 79 20 61 20 63 68 61 72 20 73 65 74 2C
20 73 6F 20 77 65 20 68 61 76 65 20 74 6F 20 73 77 61 70 20 74 68 69 6E
67 73 20 61 72 6F 75 6E 64 2E 20 7D 0D 0A 20 20 20 20 20 20 20 20 46 54
72 61 6E 73 6C 61 74 69 6F 6E 49 44 73 2E 41 64 64 28 46 6F 72 6D 61 74
28 27 25 2E 34 78 25 2E 34 78 27 2C 20 5B 44 45 46 41 55 4C 54 5F 4C 41
4E 47 5F 49 44 2C 20 49 44 73 5E 5B 44 75 6D 6D 79 5D 2E 4C 61 6E 67 5D
29 29 3B 0D 0A 20 20 20 20 20 20 65 6E 64 3B 0D 0A 20 20 20 20 65 6E 64
3B 0D 0A 0D 0A 20 20 20 20 69 66 20 46 54 72 61 6E 73 6C 61 74 69 6F 6E
49 44 49 6E 64 65 78 20 3E 3D 20 46 54 72 61 6E 73 6C 61 74 69 6F 6E 49
44 73 2E 43 6F 75 6E 74 20 74 68 65 6E 0D 0A 20 20 20 20 20 20 46 54 72
61 6E 73 6C 61 74 69 6F 6E 49 44 49 6E 64 65 78 20 3A 3D 20 30 3B 0D 0A
0D 0A 20 20 20 20 46 46 69 6C 65 56 65 72 73 69 6F 6E 2E 56 61 6C 69 64
20 3A 3D 20 74 72 75 65 3B 0D 0A 20 20 20 20 46 46 69 6C 65 56 65 72 73
69 6F 6E 2E 46 4D 6F 73 74 53 69 67 6E 69 66 69 63 61 6E 74 20 3A 3D 20
46 46 69 78 65 64 49 6E 66 6F 2E 47 65 74 46 69 6C 65 56 65 72 73 69 6F
6E 4D 53 3B 0D 0A 20 20 20 20 46 46 69 6C 65 56 65 72 73 69 6F 6E 2E 46
4C 65 61 73 74 53 69 67 6E 69 66 69 63 61 6E 74 20 3A 3D 20 46 46 69 78
65 64 49 6E 66 6F 2E 47 65 74 46 69 6C 65 56 65 72 73 69 6F 6E 4C 53 3B
0D 0A 20 20 20 20 46 46 69 6C 65 56 65 72 73 69 6F 6E 2E 46 56 65 72 73
69 6F 6E 4E 75 6D 62 65 72 53 74 72 69 6E 67 20 3A 3D 20 47 65 74 56 65
72 73 69 6F 6E 49 6E 66 6F 53 74 72 69 6E 67 28 49 44 58 5F 46 49 4C 45
56 45 52 53 49 4F 4E 29 3B 0D 0A 20 20 20 20 46 50 72 6F 64 75 63 74 56
65 72 73 69 6F 6E 2E 56 61 6C 69 64 20 3A 3D 20 74 72 75 65 3B 0D 0A 20
20 20 20 46 50 72 6F 64 75 63 74 56 65 72 73 69 6F 6E 2E 46 4D 6F 73 74
53 69 67 6E 69 66 69 63 61 6E 74 20 3A 3D 20 46 46 69 78 65 64 49 6E 66
6F 2E 47 65 74 50 72 6F 64 75 63 74 56 65 72 73 69 6F 6E 4D 53 3B 0D 0A
20 20 20 20 46 50 72 6F 64 75 63 74 56 65 72 73 69 6F 6E 2E 46 4C 65 61
73 74 53 69 67 6E 69 66 69 63 61 6E 74 20 3A 3D 20 46 46 69 78 65 64 49
6E 66 6F 2E 47 65 74 50 72 6F 64 75 63 74 56 65 72 73 69 6F 6E 4C 53 3B
0D 0A 20 20 20 20 46 50 72 6F 64 75 63 74 56 65 72 73 69 6F 6E 2E 46 56
65 72 73 69 6F 6E 4E 75 6D 62 65 72 53 74 72 69 6E 67 20 3A 3D 20 47 65
74 56 65 72 73 69 6F 6E 49 6E 66 6F 53 74 72 69 6E 67 28 49 44 58 5F 50
52 4F 44 55 43 54 56 45 52 53 49 4F 4E 29 3B 0D 0A 20 20 65 6E 64 3B 0D
0A 7B 24 49 46 4E 44 45 46 20 44 46 53 5F 56 45 52 53 49 4F 4E 5F 49 4E
46 4F 5F 41 53 5F 43 4C 41 53 53 7D 0D 0A 20 20 50 6F 70 75 6C 61 74 65
43 6F 6E 74 72 6F 6C 73 3B 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 65 6E 64
3B 0D 0A 0D 0A 7B 24 49 46 4E 44 45 46 20 44 46 53 5F 56 45 52 53 49 4F
4E 5F 49 4E 46 4F 5F 41 53 5F 43 4C 41 53 53 7D 0D 0A 0D 0A 70 72 6F 63
65 64 75 72 65 20 54 64 66 73 56 65 72 73 69 6F 6E 49 6E 66 6F 52 65 73
6F 75 72 63 65 2E 50 6F 70 75 6C 61 74 65 43 6F 6E 74 72 6F 6C 73 3B 0D
0A 62 65 67 69 6E 0D 0A 20 20 69 66 20 5B 63 73 44 65 73 69 67 6E 69 6E
67 2C 20 63 73 4C 6F 61 64 69 6E 67 5D 20 2A 20 43 6F 6D 70 6F 6E 65 6E
74 53 74 61 74 65 20 3C 3E 20 5B 5D 20 74 68 65 6E 0D 0A 20 20 20 20 65
78 69 74 3B 0D 0A 0D 0A 20 20 69 66 20 61 73 73 69 67 6E 65 64 28 46 46
69 6C 65 56 65 72 73 69 6F 6E 4C 61 62 65 6C 29 20 74 68 65 6E 0D 0A 20
20 20 20 46 46 69 6C 65 56 65 72 73 69 6F 6E 4C 61 62 65 6C 2E 43 61 70
74 69 6F 6E 20 3A 3D 20 46 69 6C 65 56 65 72 73 69 6F 6E 2E 41 73 53 74
72 69 6E 67 3B 0D 0A 20 20 69 66 20 61 73 73 69 67 6E 65 64 28 46 43 6F
70 79 72 69 67 68 74 4C 61 62 65 6C 29 20 74 68 65 6E 0D 0A 20 20 20 20
46 43 6F 70 79 72 69 67 68 74 4C 61 62 65 6C 2E 43 61 70 74 69 6F 6E 20
3A 3D 20 4C 65 67 61 6C 43 6F 70 79 72 69 67 68 74 3B 0D 0A 20 20 69 66
20 61 73 73 69 67 6E 65 64 28 46 50 72 6F 64 75 63 74 4C 61 62 65 6C 29
20 74 68 65 6E 0D 0A 20 20 20 20 46 50 72 6F 64 75 63 74 4C 61 62 65 6C
2E 43 61 70 74 69 6F 6E 20 3A 3D 20 50 72 6F 64 75 63 74 4E 61 6D 65 3B
0D 0A 20 20 69 66 20 61 73 73 69 67 6E 65 64 28 46 44 65 73 63 72 69 70
74 69 6F 6E 4C 61 62 65 6C 29 20 74 68 65 6E 0D 0A 20 20 20 20 46 44 65
73 63 72 69 70 74 69 6F 6E 4C 61 62 65 6C 2E 43 61 70 74 69 6F 6E 20 3A
3D 20 46 69 6C 65 44 65 73 63 72 69 70 74 69 6F 6E 3B 0D 0A 7B 24 49 46
44 45 46 20 44 46 53 5F 57 49 4E 33 32 7D 0D 0A 20 20 69 66 20 61 73 73
69 67 6E 65 64 28 46 56 65 72 73 69 6F 6E 4C 69 73 74 56 69 65 77 29 20
74 68 65 6E 0D 0A 20 20 20 20 42 75 69 6C 64 4C 69 73 74 56 69 65 77 3B
0D 0A 7B 24 45 4C 53 45 7D 0D 0A 20 20 69 66 20 61 73 73 69 67 6E 65 64
28 46 56 65 72 73 69 6F 6E 47 72 69 64 29 20 74 68 65 6E 0D 0A 20 20 20
20 42 75 69 6C 64 47 72 69 64 3B 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 65
6E 64 3B 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 0D 0A 66 75 6E 63 74 69 6F
6E 20 54 64 66 73 56 65 72 73 69 6F 6E 49 6E 66 6F 52 65 73 6F 75 72 63
65 2E 47 65 74 52 65 73 6F 75 72 63 65 46 69 6C 65 6E 61 6D 65 3A 20 73
74 72 69 6E 67 3B 0D 0A 7B 24 49 46 4E 44 45 46 20 44 46 53 5F 56 45 52
53 49 4F 4E 5F 49 4E 46 4F 5F 41 53 5F 43 4C 41 53 53 7D 0D 0A 76 61 72
0D 0A 20 20 54 65 6D 70 46 69 6C 65 6E 61 6D 65 3A 20 61 72 72 61 79 20
5B 30 20 2E 2E 20 32 35 35 5D 20 6F 66 20 63 68 61 72 3B 0D 0A 7B 24 45
4E 44 49 46 7D 0D 0A 62 65 67 69 6E 0D 0A 7B 24 49 46 4E 44 45 46 20 44
46 53 5F 56 45 52 53 49 4F 4E 5F 49 4E 46 4F 5F 41 53 5F 43 4C 41 53 53
7D 0D 0A 20 20 69 66 20 46 46 69 6C 65 6E 61 6D 65 20 3D 20 27 27 20 74
68 65 6E 0D 0A 20 20 62 65 67 69 6E 0D 0A 20 20 20 20 69 66 20 49 73 4C
69 62 72 61 72 79 20 61 6E 64 20 28 6E 6F 74 20 46 46 6F 72 63 65 45 58
45 29 20 74 68 65 6E 0D 0A 20 20 20 20 62 65 67 69 6E 0D 0A 20 20 20 20
20 20 47 65 74 4D 6F 64 75 6C 65 46 69 6C 65 4E 61 6D 65 28 48 49 6E 73
74 61 6E 63 65 2C 20 54 65 6D 70 46 69 6C 65 6E 61 6D 65 2C 20 53 69 7A
65 4F 66 28 54 65 6D 70 46 69 6C 65 6E 61 6D 65 29 20 2D 20 31 29 3B 0D
0A 20 20 20 20 20 20 52 65 73 75 6C 74 20 3A 3D 20 53 74 72 50 61 73 28
54 65 6D 70 46 69 6C 65 6E 61 6D 65 29 3B 0D 0A 20 20 20 20 65 6E 64 0D
0A 20 20 20 20 65 6C 73 65 0D 0A 20 20 20 20 20 20 52 65 73 75 6C 74 20
3A 3D 20 41 70 70 6C 69 63 61 74 69 6F 6E 2E 45 58 45 4E 61 6D 65 3B 0D
0A 20 20 65 6E 64 0D 0A 20 20 65 6C 73 65 0D 0A 7B 24 45 4E 44 49 46 7D
0D 0A 20 20 20 20 52 65 73 75 6C 74 20 3A 3D 20 46 46 69 6C 65 6E 61 6D
65 3B 0D 0A 65 6E 64 3B 0D 0A 0D 0A 66 75 6E 63 74 69 6F 6E 20 54 64 66
73 56 65 72 73 69 6F 6E 49 6E 66 6F 52 65 73 6F 75 72 63 65 2E 47 65 74
56 65 72 73 69 6F 6E 49 6E 66 6F 53 74 72 69 6E 67 28 49 6E 64 65 78 3A
20 69 6E 74 65 67 65 72 29 3A 20 73 74 72 69 6E 67 3B 0D 0A 62 65 67 69
6E 0D 0A 20 20 69 66 20 28 49 6E 64 65 78 20 3E 3D 20 4C 6F 77 28 50 52
45 44 45 46 5F 52 45 53 4F 55 52 43 45 53 29 29 20 61 6E 64 20 28 49 6E
64 65 78 20 3C 3D 20 48 69 67 68 28 50 52 45 44 45 46 5F 52 45 53 4F 55
52 43 45 53 29 29 20 74 68 65 6E 0D 0A 20 20 20 20 52 65 73 75 6C 74 20
3A 3D 20 47 65 74 52 65 73 6F 75 72 63 65 53 74 72 28 50 52 45 44 45 46
5F 52 45 53 4F 55 52 43 45 53 5B 49 6E 64 65 78 5D 29 0D 0A 20 20 65 6C
73 65 0D 0A 20 20 20 20 52 65 73 75 6C 74 20 3A 3D 20 27 27 0D 0A 65 6E
64 3B 0D 0A 0D 0A 66 75 6E 63 74 69 6F 6E 20 54 64 66 73 56 65 72 73 69
6F 6E 49 6E 66 6F 52 65 73 6F 75 72 63 65 2E 47 65 74 52 65 73 6F 75 72
63 65 53 74 72 28 49 6E 64 65 78 3A 20 73 74 72 69 6E 67 29 3A 20 73 74
72 69 6E 67 3B 0D 0A 76 61 72 0D 0A 20 20 52 65 73 53 74 72 3A 20 50 43
68 61 72 3B 0D 0A 20 20 53 74 72 4C 65 6E 3A 20 55 49 4E 54 3B 0D 0A 20
20 53 75 62 42 6C 6F 63 6B 3A 20 61 72 72 61 79 20 5B 30 20 2E 2E 20 32
35 35 5D 20 6F 66 20 63 68 61 72 3B 0D 0A 20 20 4C 61 6E 67 43 68 61 72
53 65 74 3A 20 73 74 72 69 6E 67 3B 0D 0A 62 65 67 69 6E 0D 0A 20 20 69
66 20 46 54 72 61 6E 73 6C 61 74 69 6F 6E 49 44 49 6E 64 65 78 20 3C 20
46 54 72 61 6E 73 6C 61 74 69 6F 6E 49 44 73 2E 43 6F 75 6E 74 20 74 68
65 6E 0D 0A 20 20 20 20 4C 61 6E 67 43 68 61 72 53 65 74 20 3A 3D 20 46
54 72 61 6E 73 6C 61 74 69 6F 6E 49 44 73 5B 46 54 72 61 6E 73 6C 61 74
69 6F 6E 49 44 49 6E 64 65 78 5D 0D 0A 20 20 65 6C 73 65 0D 0A 20 20 20
20 4C 61 6E 67 43 68 61 72 53 65 74 20 3A 3D 20 44 45 46 41 55 4C 54 5F
4C 41 4E 47 5F 43 48 41 52 5F 53 45 54 3B 0D 0A 20 20 53 74 72 50 43 6F
70 79 28 53 75 62 42 6C 6F 63 6B 2C 20 27 5C 53 74 72 69 6E 67 46 69 6C
65 49 6E 66 6F 5C 27 20 2B 20 4C 61 6E 67 43 68 61 72 53 65 74 20 2B 20
27 5C 27 20 2B 20 49 6E 64 65 78 29 3B 0D 0A 20 20 69 66 20 28 46 56 65
72 73 69 6F 6E 49 6E 66 6F 20 3C 3E 20 6E 69 6C 29 20 61 6E 64 20 56 65
72 51 75 65 72 79 56 61 6C 75 65 28 46 56 65 72 73 69 6F 6E 49 6E 66 6F
2C 20 53 75 62 42 6C 6F 63 6B 2C 20 70 6F 69 6E 74 65 72 28 52 65 73 53
74 72 29 2C 20 53 74 72 4C 65 6E 29 20 74 68 65 6E 0D 0A 20 20 20 20 52
65 73 75 6C 74 20 3A 3D 20 53 74 72 50 61 73 28 52 65 73 53 74 72 29 0D
0A 20 20 65 6C 73 65 0D 0A 20 20 20 20 52 65 73 75 6C 74 20 3A 3D 20 27
27 3B 0D 0A 65 6E 64 3B 0D 0A 0D 0A 70 72 6F 63 65 64 75 72 65 20 54 64
66 73 56 65 72 73 69 6F 6E 49 6E 66 6F 52 65 73 6F 75 72 63 65 2E 53 65
74 54 72 61 6E 73 6C 61 74 69 6F 6E 49 44 49 6E 64 65 78 28 56 61 6C 3A
20 69 6E 74 65 67 65 72 29 3B 0D 0A 62 65 67 69 6E 0D 0A 20 20 69 66 20
28 56 61 6C 20 3E 20 30 29 20 61 6E 64 20 28 56 61 6C 20 3C 20 46 54 72
61 6E 73 6C 61 74 69 6F 6E 49 44 73 2E 43 6F 75 6E 74 29 20 74 68 65 6E
0D 0A 20 20 20 20 46 54 72 61 6E 73 6C 61 74 69 6F 6E 49 44 49 6E 64 65
78 20 3A 3D 20 56 61 6C 3B 0D 0A 65 6E 64 3B 0D 0A 0D 0A 66 75 6E 63 74
69 6F 6E 20 54 64 66 73 56 65 72 73 69 6F 6E 49 6E 66 6F 52 65 73 6F 75
72 63 65 2E 47 65 74 54 72 61 6E 73 6C 61 74 69 6F 6E 49 44 73 3A 20 54
53 74 72 69 6E 67 73 3B 0D 0A 62 65 67 69 6E 0D 0A 20 20 52 65 73 75 6C
74 20 3A 3D 20 46 54 72 61 6E 73 6C 61 74 69 6F 6E 49 44 73 3B 0D 0A 65
6E 64 3B 0D 0A 0D 0A 70 72 6F 63 65 64 75 72 65 20 54 64 66 73 56 65 72
73 69 6F 6E 49 6E 66 6F 52 65 73 6F 75 72 63 65 2E 53 65 74 46 6F 72 63
65 45 58 45 28 56 61 6C 3A 20 62 6F 6F 6C 65 61 6E 29 3B 0D 0A 62 65 67
69 6E 0D 0A 20 20 69 66 20 46 46 6F 72 63 65 45 58 45 20 3C 3E 20 56 61
6C 20 74 68 65 6E 0D 0A 20 20 62 65 67 69 6E 0D 0A 20 20 20 20 46 46 6F
72 63 65 45 58 45 20 3A 3D 20 56 61 6C 3B 0D 0A 20 20 20 20 52 65 61 64
56 65 72 73 69 6F 6E 49 6E 66 6F 44 61 74 61 3B 0D 0A 20 20 65 6E 64 3B
0D 0A 65 6E 64 3B 0D 0A 0D 0A 7B 24 49 46 4E 44 45 46 20 44 46 53 5F 56
45 52 53 49 4F 4E 5F 49 4E 46 4F 5F 41 53 5F 43 4C 41 53 53 7D 0D 0A 0D
0A 70 72 6F 63 65 64 75 72 65 20 54 64 66 73 56 65 72 73 69 6F 6E 49 6E
66 6F 52 65 73 6F 75 72 63 65 2E 53 65 74 46 69 6C 65 56 65 72 73 69 6F
6E 4C 61 62 65 6C 28 56 61 6C 75 65 3A 20 54 4C 61 62 65 6C 29 3B 0D 0A
62 65 67 69 6E 0D 0A 20 20 46 46 69 6C 65 56 65 72 73 69 6F 6E 4C 61 62
65 6C 20 3A 3D 20 56 61 6C 75 65 3B 0D 0A 20 20 69 66 20 61 73 73 69 67
6E 65 64 28 46 46 69 6C 65 56 65 72 73 69 6F 6E 4C 61 62 65 6C 29 20 74
68 65 6E 0D 0A 20 20 62 65 67 69 6E 0D 0A 7B 24 49 46 44 45 46 20 44 46
53 5F 57 49 4E 33 32 7D 0D 0A 20 20 20 20 46 46 69 6C 65 56 65 72 73 69
6F 6E 4C 61 62 65 6C 2E 46 72 65 65 4E 6F 74 69 66 69 63 61 74 69 6F 6E
28 53 65 6C 66 29 3B 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 20 20 20 20 46
53 68 6F 77 52 65 73 6F 75 72 63 65 20 3A 3D 20 46 53 68 6F 77 52 65 73
6F 75 72 63 65 20 2D 20 5B 70 64 46 69 6C 65 56 65 72 73 69 6F 6E 5D 3B
0D 0A 20 20 20 20 50 6F 70 75 6C 61 74 65 43 6F 6E 74 72 6F 6C 73 3B 0D
0A 20 20 65 6E 64 3B 0D 0A 65 6E 64 3B 0D 0A 0D 0A 70 72 6F 63 65 64 75
72 65 20 54 64 66 73 56 65 72 73 69 6F 6E 49 6E 66 6F 52 65 73 6F 75 72
63 65 2E 53 65 74 43 6F 70 79 72 69 67 68 74 4C 61 62 65 6C 28 56 61 6C
75 65 3A 20 54 4C 61 62 65 6C 29 3B 0D 0A 62 65 67 69 6E 0D 0A 20 20 46
43 6F 70 79 72 69 67 68 74 4C 61 62 65 6C 20 3A 3D 20 56 61 6C 75 65 3B
0D 0A 20 20 69 66 20 61 73 73 69 67 6E 65 64 28 46 43 6F 70 79 72 69 67
68 74 4C 61 62 65 6C 29 20 74 68 65 6E 0D 0A 20 20 62 65 67 69 6E 0D 0A
7B 24 49 46 44 45 46 20 44 46 53 5F 57 49 4E 33 32 7D 0D 0A 20 20 20 20
46 43 6F 70 79 72 69 67 68 74 4C 61 62 65 6C 2E 46 72 65 65 4E 6F 74 69
66 69 63 61 74 69 6F 6E 28 53 65 6C 66 29 3B 0D 0A 7B 24 45 4E 44 49 46
7D 0D 0A 20 20 20 20 46 53 68 6F 77 52 65 73 6F 75 72 63 65 20 3A 3D 20
46 53 68 6F 77 52 65 73 6F 75 72 63 65 20 2D 20 5B 70 64 4C 65 67 61 6C
43 6F 70 79 72 69 67 68 74 5D 3B 0D 0A 20 20 20 20 50 6F 70 75 6C 61 74
65 43 6F 6E 74 72 6F 6C 73 3B 0D 0A 20 20 65 6E 64 3B 0D 0A 65 6E 64 3B
0D 0A 0D 0A 70 72 6F 63 65 64 75 72 65 20 54 64 66 73 56 65 72 73 69 6F
6E 49 6E 66 6F 52 65 73 6F 75 72 63 65 2E 53 65 74 50 72 6F 64 75 63 74
4C 61 62 65 6C 28 56 61 6C 75 65 3A 20 54 4C 61 62 65 6C 29 3B 0D 0A 62
65 67 69 6E 0D 0A 20 20 46 50 72 6F 64 75 63 74 4C 61 62 65 6C 20 3A 3D
20 56 61 6C 75 65 3B 0D 0A 20 20 69 66 20 61 73 73 69 67 6E 65 64 28 46
50 72 6F 64 75 63 74 4C 61 62 65 6C 29 20 74 68 65 6E 0D 0A 20 20 62 65
67 69 6E 0D 0A 7B 24 49 46 44 45 46 20 44 46 53 5F 57 49 4E 33 32 7D 0D
0A 20 20 20 20 46 50 72 6F 64 75 63 74 4C 61 62 65 6C 2E 46 72 65 65 4E
6F 74 69 66 69 63 61 74 69 6F 6E 28 53 65 6C 66 29 3B 0D 0A 7B 24 45 4E
44 49 46 7D 0D 0A 20 20 20 20 46 53 68 6F 77 52 65 73 6F 75 72 63 65 20
3A 3D 20 46 53 68 6F 77 52 65 73 6F 75 72 63 65 20 2D 20 5B 70 64 50 72
6F 64 75 63 74 4E 61 6D 65 5D 3B 0D 0A 20 20 20 20 50 6F 70 75 6C 61 74
65 43 6F 6E 74 72 6F 6C 73 3B 0D 0A 20 20 65 6E 64 3B 0D 0A 65 6E 64 3B
0D 0A 0D 0A 70 72 6F 63 65 64 75 72 65 20 54 64 66 73 56 65 72 73 69 6F
6E 49 6E 66 6F 52 65 73 6F 75 72 63 65 2E 53 65 74 44 65 73 63 72 69 70
74 69 6F 6E 4C 61 62 65 6C 28 56 61 6C 75 65 3A 20 54 4C 61 62 65 6C 29
3B 0D 0A 62 65 67 69 6E 0D 0A 20 20 46 44 65 73 63 72 69 70 74 69 6F 6E
4C 61 62 65 6C 20 3A 3D 20 56 61 6C 75 65 3B 0D 0A 20 20 69 66 20 61 73
73 69 67 6E 65 64 28 46 44 65 73 63 72 69 70 74 69 6F 6E 4C 61 62 65 6C
29 20 74 68 65 6E 0D 0A 20 20 62 65 67 69 6E 0D 0A 7B 24 49 46 44 45 46
20 44 46 53 5F 57 49 4E 33 32 7D 0D 0A 20 20 20 20 46 44 65 73 63 72 69
70 74 69 6F 6E 4C 61 62 65 6C 2E 46 72 65 65 4E 6F 74 69 66 69 63 61 74
69 6F 6E 28 53 65 6C 66 29 3B 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 20 20
20 20 46 53 68 6F 77 52 65 73 6F 75 72 63 65 20 3A 3D 20 46 53 68 6F 77
52 65 73 6F 75 72 63 65 20 2D 20 5B 70 64 46 69 6C 65 44 65 73 63 72 69
70 74 69 6F 6E 5D 3B 0D 0A 20 20 20 20 50 6F 70 75 6C 61 74 65 43 6F 6E
74 72 6F 6C 73 3B 0D 0A 20 20 65 6E 64 3B 0D 0A 65 6E 64 3B 0D 0A 0D 0A
70 72 6F 63 65 64 75 72 65 20 54 64 66 73 56 65 72 73 69 6F 6E 49 6E 66
6F 52 65 73 6F 75 72 63 65 2E 53 65 74 53 68 6F 77 52 65 73 6F 75 72 63
65 28 56 61 6C 75 65 3A 20 54 50 72 65 44 65 66 73 29 3B 0D 0A 62 65 67
69 6E 0D 0A 20 20 69 66 20 56 61 6C 75 65 20 3C 3E 20 46 53 68 6F 77 52
65 73 6F 75 72 63 65 20 74 68 65 6E 0D 0A 20 20 62 65 67 69 6E 0D 0A 20
20 20 20 46 53 68 6F 77 52 65 73 6F 75 72 63 65 20 3A 3D 20 56 61 6C 75
65 3B 0D 0A 20 20 20 20 50 6F 70 75 6C 61 74 65 43 6F 6E 74 72 6F 6C 73
3B 0D 0A 20 20 65 6E 64 0D 0A 65 6E 64 3B 0D 0A 0D 0A 7B 24 49 46 44 45
46 20 44 46 53 5F 57 49 4E 33 32 7D 0D 0A 0D 0A 70 72 6F 63 65 64 75 72
65 20 54 64 66 73 56 65 72 73 69 6F 6E 49 6E 66 6F 52 65 73 6F 75 72 63
65 2E 53 65 74 56 65 72 73 69 6F 6E 4C 69 73 74 56 69 65 77 28 56 61 6C
75 65 3A 20 54 4C 69 73 74 56 69 65 77 29 3B 0D 0A 62 65 67 69 6E 0D 0A
20 20 46 56 65 72 73 69 6F 6E 4C 69 73 74 56 69 65 77 20 3A 3D 20 56 61
6C 75 65 3B 0D 0A 20 20 69 66 20 61 73 73 69 67 6E 65 64 28 46 56 65 72
73 69 6F 6E 4C 69 73 74 56 69 65 77 29 20 74 68 65 6E 0D 0A 20 20 62 65
67 69 6E 0D 0A 20 20 20 20 46 56 65 72 73 69 6F 6E 4C 69 73 74 56 69 65
77 2E 46 72 65 65 4E 6F 74 69 66 69 63 61 74 69 6F 6E 28 53 65 6C 66 29
3B 0D 0A 20 20 20 20 50 6F 70 75 6C 61 74 65 43 6F 6E 74 72 6F 6C 73 3B
0D 0A 20 20 65 6E 64 3B 0D 0A 65 6E 64 3B 0D 0A 0D 0A 7B 24 45 4C 53 45
7D 0D 0A 0D 0A 70 72 6F 63 65 64 75 72 65 20 54 64 66 73 56 65 72 73 69
6F 6E 49 6E 66 6F 52 65 73 6F 75 72 63 65 2E 53 65 74 56 65 72 73 69 6F
6E 47 72 69 64 28 56 61 6C 75 65 3A 20 54 53 74 72 69 6E 67 47 72 69 64
29 3B 0D 0A 62 65 67 69 6E 0D 0A 20 20 46 56 65 72 73 69 6F 6E 47 72 69
64 20 3A 3D 20 56 61 6C 75 65 3B 0D 0A 20 20 69 66 20 61 73 73 69 67 6E
65 64 28 46 56 65 72 73 69 6F 6E 47 72 69 64 29 20 74 68 65 6E 0D 0A 20
20 62 65 67 69 6E 0D 0A 7B 24 49 46 44 45 46 20 44 46 53 5F 57 49 4E 33
32 7D 0D 0A 20 20 20 20 46 56 65 72 73 69 6F 6E 47 72 69 64 2E 46 72 65
65 4E 6F 74 69 66 69 63 61 74 69 6F 6E 28 53 65 6C 66 29 3B 0D 0A 7B 24
45 4E 44 49 46 7D 0D 0A 20 20 20 20 50 6F 70 75 6C 61 74 65 43 6F 6E 74
72 6F 6C 73 3B 0D 0A 20 20 65 6E 64 3B 0D 0A 65 6E 64 3B 0D 0A 7B 24 45
4E 44 49 46 7D 0D 0A 0D 0A 70 72 6F 63 65 64 75 72 65 20 54 64 66 73 56
65 72 73 69 6F 6E 49 6E 66 6F 52 65 73 6F 75 72 63 65 2E 4E 6F 74 69 66
69 63 61 74 69 6F 6E 28 41 43 6F 6D 70 6F 6E 65 6E 74 3A 20 54 43 6F 6D
70 6F 6E 65 6E 74 3B 20 4F 70 65 72 61 74 69 6F 6E 3A 20 54 4F 70 65 72
61 74 69 6F 6E 29 3B 0D 0A 62 65 67 69 6E 0D 0A 20 20 69 6E 68 65 72 69
74 65 64 20 4E 6F 74 69 66 69 63 61 74 69 6F 6E 28 41 43 6F 6D 70 6F 6E
65 6E 74 2C 20 4F 70 65 72 61 74 69 6F 6E 29 3B 0D 0A 20 20 69 66 20 4F
70 65 72 61 74 69 6F 6E 20 3D 20 6F 70 52 65 6D 6F 76 65 20 74 68 65 6E
0D 0A 20 20 62 65 67 69 6E 0D 0A 20 20 20 20 69 66 20 28 41 43 6F 6D 70
6F 6E 65 6E 74 20 3D 20 46 46 69 6C 65 56 65 72 73 69 6F 6E 4C 61 62 65
6C 29 20 74 68 65 6E 0D 0A 20 20 20 20 20 20 46 46 69 6C 65 56 65 72 73
69 6F 6E 4C 61 62 65 6C 20 3A 3D 20 6E 69 6C 0D 0A 20 20 20 20 65 6C 73
65 20 69 66 20 28 41 43 6F 6D 70 6F 6E 65 6E 74 20 3D 20 46 43 6F 70 79
72 69 67 68 74 4C 61 62 65 6C 29 20 74 68 65 6E 0D 0A 20 20 20 20 20 20
46 43 6F 70 79 72 69 67 68 74 4C 61 62 65 6C 20 3A 3D 20 6E 69 6C 0D 0A
20 20 20 20 65 6C 73 65 20 69 66 20 28 41 43 6F 6D 70 6F 6E 65 6E 74 20
3D 20 46 50 72 6F 64 75 63 74 4C 61 62 65 6C 29 20 74 68 65 6E 0D 0A 20
20 20 20 20 20 46 50 72 6F 64 75 63 74 4C 61 62 65 6C 20 3A 3D 20 6E 69
6C 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 20 28 41 43 6F 6D 70 6F 6E 65
6E 74 20 3D 20 46 44 65 73 63 72 69 70 74 69 6F 6E 4C 61 62 65 6C 29 20
74 68 65 6E 0D 0A 20 20 20 20 20 20 46 44 65 73 63 72 69 70 74 69 6F 6E
4C 61 62 65 6C 20 3A 3D 20 6E 69 6C 0D 0A 7B 24 49 46 44 45 46 20 44 46
53 5F 57 49 4E 33 32 7D 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 20 28 41
43 6F 6D 70 6F 6E 65 6E 74 20 3D 20 46 56 65 72 73 69 6F 6E 4C 69 73 74
56 69 65 77 29 20 74 68 65 6E 0D 0A 20 20 20 20 20 20 46 56 65 72 73 69
6F 6E 4C 69 73 74 56 69 65 77 20 3A 3D 20 6E 69 6C 3B 0D 0A 7B 24 45 4C
53 45 7D 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 20 28 41 43 6F 6D 70 6F
6E 65 6E 74 20 3D 20 46 56 65 72 73 69 6F 6E 47 72 69 64 29 20 74 68 65
6E 0D 0A 20 20 20 20 20 20 46 56 65 72 73 69 6F 6E 47 72 69 64 20 3A 3D
20 6E 69 6C 3B 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 20 20 65 6E 64 3B 0D
0A 65 6E 64 3B 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 0D 0A 66 75 6E 63 74
69 6F 6E 20 54 64 66 73 56 65 72 73 69 6F 6E 49 6E 66 6F 52 65 73 6F 75
72 63 65 2E 42 75 69 6C 64 46 6C 61 67 73 3A 20 73 74 72 69 6E 67 3B 0D
0A 63 6F 6E 73 74 0D 0A 20 20 46 4C 41 47 5F 53 54 52 49 4E 47 3A 20 61
72 72 61 79 20 5B 54 46 69 78 65 64 46 69 6C 65 49 6E 66 6F 46 6C 61 67
5D 20 6F 66 20 73 74 72 69 6E 67 20 3D 20 28 53 46 6C 61 67 44 65 62 75
67 2C 20 53 46 6C 61 67 49 6E 66 6F 49 6E 66 65 72 72 65 64 2C 20 53 46
6C 61 67 50 61 74 63 68 65 64 2C 20 53 46 6C 61 67 50 72 65 52 65 6C 65
61 73 65 2C 20 53 46 6C 61 67 50 72 69 76 61 74 65 2C 20 53 46 6C 61 67
53 70 65 63 69 61 6C 29 3B 0D 0A 76 61 72 0D 0A 20 20 41 46 6C 61 67 3A
20 54 46 69 78 65 64 46 69 6C 65 49 6E 66 6F 46 6C 61 67 3B 0D 0A 62 65
67 69 6E 0D 0A 20 20 52 65 73 75 6C 74 20 3A 3D 20 27 27 3B 0D 0A 20 20
66 6F 72 20 41 46 6C 61 67 20 3A 3D 20 4C 6F 77 28 54 46 69 78 65 64 46
69 6C 65 49 6E 66 6F 46 6C 61 67 29 20 74 6F 20 48 69 67 68 28 54 46 69
78 65 64 46 69 6C 65 49 6E 66 6F 46 6C 61 67 29 20 64 6F 0D 0A 20 20 20
20 69 66 20 41 46 6C 61 67 20 69 6E 20 46 69 78 65 64 49 6E 66 6F 2E 46
6C 61 67 73 20 74 68 65 6E 0D 0A 20 20 20 20 20 20 52 65 73 75 6C 74 20
3A 3D 20 52 65 73 75 6C 74 20 2B 20 46 4C 41 47 5F 53 54 52 49 4E 47 5B
41 46 6C 61 67 5D 20 2B 20 27 2C 20 27 3B 0D 0A 0D 0A 20 20 69 66 20 4C
65 6E 67 74 68 28 52 65 73 75 6C 74 29 20 3E 20 30 20 74 68 65 6E 0D 0A
20 20 20 20 52 65 73 75 6C 74 20 3A 3D 20 43 6F 70 79 28 52 65 73 75 6C
74 2C 20 31 2C 20 4C 65 6E 67 74 68 28 52 65 73 75 6C 74 29 20 2D 20 32
29 3B 0D 0A 65 6E 64 3B 0D 0A 0D 0A 7B 24 49 46 4E 44 45 46 20 44 46 53
5F 56 45 52 53 49 4F 4E 5F 49 4E 46 4F 5F 41 53 5F 43 4C 41 53 53 7D 0D
0A 7B 24 49 46 44 45 46 20 44 46 53 5F 57 49 4E 33 32 7D 0D 0A 0D 0A 70
72 6F 63 65 64 75 72 65 20 54 64 66 73 56 65 72 73 69 6F 6E 49 6E 66 6F
52 65 73 6F 75 72 63 65 2E 42 75 69 6C 64 4C 69 73 74 56 69 65 77 3B 0D
0A 0D 0A 20 20 70 72 6F 63 65 64 75 72 65 20 41 64 64 5F 49 74 65 6D 28
53 74 72 49 64 3A 20 69 6E 74 65 67 65 72 3B 20 63 6F 6E 73 74 20 53 74
72 3A 20 73 74 72 69 6E 67 29 3B 0D 0A 20 20 76 61 72 0D 0A 20 20 20 20
4E 65 77 49 74 65 6D 3A 20 54 4C 69 73 74 49 74 65 6D 3B 0D 0A 20 20 62
65 67 69 6E 0D 0A 20 20 20 20 69 66 20 28 53 74 72 20 3C 3E 20 27 27 29
20 61 6E 64 20 28 54 50 72 65 44 65 66 28 53 74 72 49 64 29 20 69 6E 20
46 53 68 6F 77 52 65 73 6F 75 72 63 65 29 20 74 68 65 6E 0D 0A 20 20 20
20 62 65 67 69 6E 0D 0A 20 20 20 20 20 20 4E 65 77 49 74 65 6D 20 3A 3D
20 56 65 72 73 69 6F 6E 4C 69 73 74 56 69 65 77 2E 49 74 65 6D 73 2E 41
64 64 3B 0D 0A 20 20 20 20 20 20 4E 65 77 49 74 65 6D 2E 43 61 70 74 69
6F 6E 20 3A 3D 20 50 52 45 44 45 46 5F 43 41 50 54 49 4F 4E 53 5B 53 74
72 49 64 5D 3B 0D 0A 20 20 20 20 20 20 4E 65 77 49 74 65 6D 2E 53 75 62
49 74 65 6D 73 2E 41 64 64 28 53 74 72 29 0D 0A 20 20 20 20 65 6E 64 0D
0A 20 20 65 6E 64 3B 0D 0A 0D 0A 20 20 70 72 6F 63 65 64 75 72 65 20 41
64 64 5F 43 6F 6C 75 6D 6E 28 63 6F 6E 73 74 20 53 74 72 3A 20 73 74 72
69 6E 67 29 3B 0D 0A 20 20 76 61 72 0D 0A 20 20 20 20 4E 65 77 43 6F 6C
75 6D 6E 3A 20 54 4C 69 73 74 43 6F 6C 75 6D 6E 3B 0D 0A 20 20 62 65 67
69 6E 0D 0A 20 20 20 20 4E 65 77 43 6F 6C 75 6D 6E 20 3A 3D 20 56 65 72
73 69 6F 6E 4C 69 73 74 56 69 65 77 2E 43 6F 6C 75 6D 6E 73 2E 41 64 64
3B 0D 0A 20 20 20 20 4E 65 77 43 6F 6C 75 6D 6E 2E 43 61 70 74 69 6F 6E
20 3A 3D 20 53 74 72 3B 0D 0A 20 20 20 20 4E 65 77 43 6F 6C 75 6D 6E 2E
57 69 64 74 68 20 3A 3D 20 2D 32 3B 20 7B 20 6E 69 66 74 79 21 20 7D 0D
0A 20 20 65 6E 64 3B 0D 0A 0D 0A 62 65 67 69 6E 0D 0A 20 20 69 66 20 61
73 73 69 67 6E 65 64 28 56 65 72 73 69 6F 6E 4C 69 73 74 56 69 65 77 29
20 74 68 65 6E 0D 0A 20 20 20 20 77 69 74 68 20 56 65 72 73 69 6F 6E 4C
69 73 74 56 69 65 77 20 64 6F 0D 0A 20 20 20 20 62 65 67 69 6E 0D 0A 20
20 20 20 20 20 43 6F 6C 75 6D 6E 73 2E 43 6C 65 61 72 3B 0D 0A 20 20 20
20 20 20 49 74 65 6D 73 2E 43 6C 65 61 72 3B 0D 0A 0D 0A 20 20 20 20 20
20 7B 20 6F 6E 6C 79 20 74 68 65 20 6D 69 6E 69 6D 75 6D 20 70 61 72 61
6D 65 74 65 72 73 20 69 6E 20 74 68 65 20 6C 69 73 74 76 69 65 77 20 61
72 65 20 66 6F 72 63 65 64 3A 20 7D 0D 0A 20 20 20 20 20 20 56 69 65 77
53 74 79 6C 65 20 3A 3D 20 76 73 52 65 70 6F 72 74 3B 0D 0A 20 20 20 20
20 20 52 65 61 64 4F 6E 6C 79 20 3A 3D 20 74 72 75 65 3B 0D 0A 20 20 20
20 20 20 43 6F 6C 75 6D 6E 43 6C 69 63 6B 20 3A 3D 20 46 41 4C 53 45 3B
0D 0A 20 20 20 20 20 20 41 64 64 5F 43 6F 6C 75 6D 6E 28 53 48 65 61 64
65 72 52 65 73 6F 75 72 63 65 29 3B 0D 0A 20 20 20 20 20 20 41 64 64 5F
43 6F 6C 75 6D 6E 28 53 48 65 61 64 65 72 56 61 6C 75 65 29 3B 0D 0A 0D
0A 20 20 20 20 20 20 41 64 64 5F 49 74 65 6D 28 49 44 58 5F 50 52 4F 44
55 43 54 4E 41 4D 45 2C 20 50 72 6F 64 75 63 74 4E 61 6D 65 29 3B 0D 0A
20 20 20 20 20 20 41 64 64 5F 49 74 65 6D 28 49 44 58 5F 50 52 4F 44 55
43 54 56 45 52 53 49 4F 4E 2C 20 50 72 6F 64 75 63 74 56 65 72 73 69 6F
6E 2E 41 73 53 74 72 69 6E 67 29 3B 0D 0A 20 20 20 20 20 20 41 64 64 5F
49 74 65 6D 28 49 44 58 5F 43 4F 4D 50 41 4E 59 4E 41 4D 45 2C 20 43 6F
6D 70 61 6E 79 4E 61 6D 65 29 3B 0D 0A 20 20 20 20 20 20 41 64 64 5F 49
74 65 6D 28 49 44 58 5F 4C 45 47 41 4C 43 4F 50 59 52 49 47 48 54 2C 20
4C 65 67 61 6C 43 6F 70 79 72 69 67 68 74 29 3B 0D 0A 20 20 20 20 20 20
41 64 64 5F 49 74 65 6D 28 49 44 58 5F 4C 45 47 41 4C 54 52 41 44 45 4D
41 52 4B 53 2C 20 4C 65 67 61 6C 54 72 61 64 65 6D 61 72 6B 73 29 3B 0D
0A 20 20 20 20 20 20 41 64 64 5F 49 74 65 6D 28 49 44 58 5F 46 49 4C 45
44 45 53 43 52 49 50 54 49 4F 4E 2C 20 46 69 6C 65 44 65 73 63 72 69 70
74 69 6F 6E 29 3B 0D 0A 20 20 20 20 20 20 41 64 64 5F 49 74 65 6D 28 49
44 58 5F 46 49 4C 45 56 45 52 53 49 4F 4E 2C 20 46 69 6C 65 56 65 72 73
69 6F 6E 2E 41 73 53 74 72 69 6E 67 29 3B 0D 0A 20 20 20 20 20 20 41 64
64 5F 49 74 65 6D 28 49 44 58 5F 49 4E 54 45 52 4E 41 4C 4E 41 4D 45 2C
20 49 6E 74 65 72 6E 61 6C 4E 61 6D 65 29 3B 0D 0A 20 20 20 20 20 20 41
64 64 5F 49 74 65 6D 28 49 44 58 5F 4F 52 49 47 49 4E 41 4C 46 49 4C 45
4E 41 4D 45 2C 20 4F 72 69 67 69 6E 61 6C 46 69 6C 65 6E 61 6D 65 29 3B
0D 0A 20 20 20 20 20 20 41 64 64 5F 49 74 65 6D 28 49 44 58 5F 42 55 49
4C 44 46 4C 41 47 53 2C 20 42 75 69 6C 64 46 6C 61 67 73 29 3B 0D 0A 20
20 20 20 20 20 41 64 64 5F 49 74 65 6D 28 49 44 58 5F 43 4F 4D 4D 45 4E
54 53 2C 20 43 6F 6D 6D 65 6E 74 73 29 3B 0D 0A 20 20 20 20 65 6E 64 0D
0A 65 6E 64 3B 0D 0A 0D 0A 7B 24 45 4C 53 45 7D 0D 0A 0D 0A 70 72 6F 63
65 64 75 72 65 20 54 64 66 73 56 65 72 73 69 6F 6E 49 6E 66 6F 52 65 73
6F 75 72 63 65 2E 42 75 69 6C 64 47 72 69 64 3B 0D 0A 63 6F 6E 73 74 0D
0A 20 20 46 4C 41 47 5F 53 54 52 49 4E 47 3A 20 61 72 72 61 79 20 5B 54
46 69 78 65 64 46 69 6C 65 49 6E 66 6F 46 6C 61 67 5D 20 6F 66 20 73 74
72 69 6E 67 20 3D 20 28 53 46 6C 61 67 44 65 62 75 67 2C 20 53 46 6C 61
67 49 6E 66 6F 49 6E 66 65 72 72 65 64 2C 20 53 46 6C 61 67 50 61 74 63
68 65 64 2C 20 53 46 6C 61 67 50 72 65 52 65 6C 65 61 73 65 2C 20 53 46
6C 61 67 50 72 69 76 61 74 65 2C 20 53 46 6C 61 67 53 70 65 63 69 61 6C
29 3B 0D 0A 0D 0A 20 20 70 72 6F 63 65 64 75 72 65 20 41 64 64 47 72 69
64 52 6F 77 28 76 61 72 20 52 6F 77 4E 75 6D 3A 20 69 6E 74 65 67 65 72
3B 20 53 74 72 49 64 3A 20 69 6E 74 65 67 65 72 3B 20 53 74 72 3A 20 73
74 72 69 6E 67 29 3B 0D 0A 20 20 76 61 72 0D 0A 20 20 20 20 69 3A 20 69
6E 74 65 67 65 72 3B 0D 0A 20 20 62 65 67 69 6E 0D 0A 20 20 20 20 69 66
20 28 53 74 72 20 3C 3E 20 27 27 29 20 61 6E 64 20 28 54 50 72 65 44 65
66 28 53 74 72 49 64 29 20 69 6E 20 46 53 68 6F 77 52 65 73 6F 75 72 63
65 29 20 74 68 65 6E 0D 0A 20 20 20 20 62 65 67 69 6E 0D 0A 20 20 20 20
20 20 77 69 74 68 20 56 65 72 73 69 6F 6E 47 72 69 64 20 64 6F 0D 0A 20
20 20 20 20 20 62 65 67 69 6E 0D 0A 20 20 20 20 20 20 20 20 43 65 6C 6C
73 5B 30 2C 20 52 6F 77 4E 75 6D 5D 20 3A 3D 20 50 52 45 44 45 46 5F 43
41 50 54 49 4F 4E 53 5B 53 74 72 49 64 5D 3B 0D 0A 20 20 20 20 20 20 20
20 43 65 6C 6C 73 5B 31 2C 20 52 6F 77 4E 75 6D 5D 20 3A 3D 20 53 74 72
3B 0D 0A 20 20 20 20 20 20 20 20 69 20 3A 3D 20 43 61 6E 76 61 73 2E 54
65 78 74 57 69 64 74 68 28 53 74 72 29 3B 0D 0A 20 20 20 20 20 20 20 20
69 66 20 69 20 3E 20 43 6F 6C 57 69 64 74 68 73 5B 31 5D 20 74 68 65 6E
0D 0A 20 20 20 20 20 20 20 20 20 20 43 6F 6C 57 69 64 74 68 73 5B 31 5D
20 3A 3D 20 69 20 2B 20 34 3B 0D 0A 20 20 20 20 20 20 20 20 69 6E 63 28
52 6F 77 4E 75 6D 29 3B 0D 0A 20 20 20 20 20 20 65 6E 64 3B 0D 0A 20 20
20 20 65 6E 64 3B 0D 0A 20 20 65 6E 64 3B 0D 0A 0D 0A 76 61 72 0D 0A 20
20 69 2C 20 46 52 6F 77 3A 20 69 6E 74 65 67 65 72 3B 0D 0A 0D 0A 62 65
67 69 6E 0D 0A 20 20 57 69 74 68 20 56 65 72 73 69 6F 6E 47 72 69 64 20
64 6F 0D 0A 20 20 62 65 67 69 6E 0D 0A 20 20 20 20 7B 20 53 65 74 20 44
65 66 61 75 6C 74 73 20 7D 0D 0A 20 20 20 20 46 69 78 65 64 43 6F 6C 73
20 3A 3D 20 30 3B 0D 0A 20 20 20 20 46 69 78 65 64 52 6F 77 73 20 3A 3D
20 30 3B 0D 0A 20 20 20 20 43 6F 6C 43 6F 75 6E 74 20 3A 3D 20 32 3B 0D
0A 20 20 20 20 52 6F 77 43 6F 75 6E 74 20 3A 3D 20 31 30 3B 0D 0A 20 20
20 20 43 61 6E 76 61 73 2E 46 6F 6E 74 2E 41 73 73 69 67 6E 28 46 6F 6E
74 29 3B 0D 0A 20 20 20 20 44 65 66 61 75 6C 74 52 6F 77 48 65 69 67 68
74 20 3A 3D 20 43 61 6E 76 61 73 2E 54 65 78 74 48 65 69 67 68 74 28 50
52 45 44 45 46 5F 43 41 50 54 49 4F 4E 53 5B 49 44 58 5F 4F 52 49 47 49
4E 41 4C 46 49 4C 45 4E 41 4D 45 5D 29 20 2B 20 32 3B 0D 0A 20 20 20 20
43 6F 6C 57 69 64 74 68 73 5B 30 5D 20 3A 3D 20 43 61 6E 76 61 73 2E 54
65 78 74 57 69 64 74 68 28 50 52 45 44 45 46 5F 43 41 50 54 49 4F 4E 53
5B 49 44 58 5F 4C 45 47 41 4C 54 52 41 44 45 4D 41 52 4B 53 5D 29 20 2B
20 34 3B 0D 0A 20 20 20 20 43 6F 6C 57 69 64 74 68 73 5B 31 5D 20 3A 3D
20 43 6C 69 65 6E 74 57 69 64 74 68 20 2D 20 43 6F 6C 57 69 64 74 68 73
5B 30 5D 20 2D 20 31 3B 0D 0A 20 20 20 20 7B 20 43 6C 65 61 72 20 7D 0D
0A 20 20 20 20 66 6F 72 20 69 20 3A 3D 20 30 20 74 6F 20 28 43 6F 6C 43
6F 75 6E 74 20 2D 20 31 29 20 64 6F 0D 0A 20 20 20 20 20 20 43 6F 6C 73
5B 69 5D 2E 43 6C 65 61 72 3B 0D 0A 0D 0A 20 20 20 20 46 52 6F 77 20 3A
3D 20 30 3B 0D 0A 20 20 20 20 41 64 64 47 72 69 64 52 6F 77 28 46 52 6F
77 2C 20 49 44 58 5F 50 52 4F 44 55 43 54 4E 41 4D 45 2C 20 50 72 6F 64
75 63 74 4E 61 6D 65 29 3B 0D 0A 20 20 20 20 41 64 64 47 72 69 64 52 6F
77 28 46 52 6F 77 2C 20 49 44 58 5F 50 52 4F 44 55 43 54 56 45 52 53 49
4F 4E 2C 20 50 72 6F 64 75 63 74 56 65 72 73 69 6F 6E 2E 41 73 53 74 72
69 6E 67 29 3B 0D 0A 20 20 20 20 41 64 64 47 72 69 64 52 6F 77 28 46 52
6F 77 2C 20 49 44 58 5F 43 4F 4D 50 41 4E 59 4E 41 4D 45 2C 20 43 6F 6D
70 61 6E 79 4E 61 6D 65 29 3B 0D 0A 20 20 20 20 41 64 64 47 72 69 64 52
6F 77 28 46 52 6F 77 2C 20 49 44 58 5F 4C 45 47 41 4C 43 4F 50 59 52 49
47 48 54 2C 20 4C 65 67 61 6C 43 6F 70 79 72 69 67 68 74 29 3B 0D 0A 20
20 20 20 41 64 64 47 72 69 64 52 6F 77 28 46 52 6F 77 2C 20 49 44 58 5F
4C 45 47 41 4C 54 52 41 44 45 4D 41 52 4B 53 2C 20 4C 65 67 61 6C 54 72
61 64 65 6D 61 72 6B 73 29 3B 0D 0A 20 20 20 20 41 64 64 47 72 69 64 52
6F 77 28 46 52 6F 77 2C 20 49 44 58 5F 46 49 4C 45 44 45 53 43 52 49 50
54 49 4F 4E 2C 20 46 69 6C 65 44 65 73 63 72 69 70 74 69 6F 6E 29 3B 0D
0A 20 20 20 20 41 64 64 47 72 69 64 52 6F 77 28 46 52 6F 77 2C 20 49 44
58 5F 46 49 4C 45 56 45 52 53 49 4F 4E 2C 20 46 69 6C 65 56 65 72 73 69
6F 6E 2E 41 73 53 74 72 69 6E 67 29 3B 0D 0A 20 20 20 20 41 64 64 47 72
69 64 52 6F 77 28 46 52 6F 77 2C 20 49 44 58 5F 49 4E 54 45 52 4E 41 4C
4E 41 4D 45 2C 20 49 6E 74 65 72 6E 61 6C 4E 61 6D 65 29 3B 0D 0A 20 20
20 20 41 64 64 47 72 69 64 52 6F 77 28 46 52 6F 77 2C 20 49 44 58 5F 4F
52 49 47 49 4E 41 4C 46 49 4C 45 4E 41 4D 45 2C 20 4F 72 69 67 69 6E 61
6C 46 69 6C 65 6E 61 6D 65 29 3B 0D 0A 20 20 20 20 41 64 64 47 72 69 64
52 6F 77 28 46 52 6F 77 2C 20 49 44 58 5F 42 55 49 4C 44 46 4C 41 47 53
2C 20 42 75 69 6C 64 46 6C 61 67 73 29 3B 0D 0A 20 20 20 20 41 64 64 47
72 69 64 52 6F 77 28 46 52 6F 77 2C 20 49 44 58 5F 43 4F 4D 4D 45 4E 54
53 2C 20 43 6F 6D 6D 65 6E 74 73 29 3B 0D 0A 20 20 20 20 52 6F 77 43 6F
75 6E 74 20 3A 3D 20 46 52 6F 77 3B 0D 0A 20 20 65 6E 64 3B 0D 0A 65 6E
64 3B 0D 0A 7B 24 45 4E 44 49 46 7D 0D 0A 0D 0A 66 75 6E 63 74 69 6F 6E
20 54 64 66 73 56 65 72 73 69 6F 6E 49 6E 66 6F 52 65 73 6F 75 72 63 65
2E 47 65 74 56 65 72 73 69 6F 6E 3A 20 73 74 72 69 6E 67 3B 0D 0A 62 65
67 69 6E 0D 0A 20 20 52 65 73 75 6C 74 20 3A 3D 20 44 46 53 5F 43 4F 4D
50 4F 4E 45 4E 54 5F 56 45 52 53 49 4F 4E 3B 0D 0A 65 6E 64 3B 0D 0A 0D
0A 70 72 6F 63 65 64 75 72 65 20 54 64 66 73 56 65 72 73 69 6F 6E 49 6E
66 6F 52 65 73 6F 75 72 63 65 2E 53 65 74 56 65 72 73 69 6F 6E 28 63 6F
6E 73 74 20 56 61 6C 3A 20 73 74 72 69 6E 67 29 3B 0D 0A 62 65 67 69 6E
0D 0A 20 20 7B 20 65 6D 70 74 79 20 77 72 69 74 65 20 6D 65 74 68 6F 64
2C 20 6A 75 73 74 20 6E 65 65 64 65 64 20 74 6F 20 67 65 74 20 69 74 20
74 6F 20 73 68 6F 77 20 75 70 20 69 6E 20 4F 62 6A 65 63 74 20 49 6E 73
70 65 63 74 6F 72 20 7D 0D 0A 65 6E 64 3B 0D 0A 7B 24 45 4E 44 49 46 7D
0D 0A 0D 0A 65 6E 64 2E 0D 0A
(* *********************
************************
************************
******* *)  (* Delphi Fr
ee Stuff Include File.  
This file is used for al
l my components *)  (* t
o create some standard d
efines.  This will help 
reduce headaches when ne
w *)  (* versions of Del
phi and C++Builder are r
eleased, among other thi
ngs. *)  (* ************
************************
************************
**************** *)  (* 
Brad Stowers: bstowers@p
obox.com *)  (* Delphi F
ree Stuff: http://www.de
lphifreestuff.com/ *)  (
* June 27, 2001 *)  (* *
************************
************************
************************
*** *)  (* Usage:   Add 
the following line to th
e top of your unit file:
 *)  (* {$I DFS.INC} *) 
 (* ********************
************************
************************
******** *)  (* *)  (* C
omplete Boolean Evaluati
on compiler directive is
 turned off by including
 *)  (* this file. *)  (
* The $ObjExportAll dire
ctive is turned on if co
mpiling with C++Builder 
3 or *)  (* higher.  Thi
s is required for Delphi
 components built in Bui
lder with *)  (* run-tim
e packages. *)  (* *)  (
* Here is a brief explan
ation of what each of th
e defines mean: *)  (* D
ELPHI_FREE_STUFF    : Al
ways defined when DFS.IN
C is included *)  (* DFS
_WIN16            : Comp
ilation target is 16-bit
 Windows *)  (* DFS_WIN3
2            : Compilati
on target is 32-bit Wind
ows *)  (* DFS_USEDEFSHL
OBJ     : The SHLOBJ.PAS
 version contains no non
e errors. *)  (* Delphi 
2.0x and C++Builder 1.0x
 shipped with a *)  (* v
ersion of SHLOBJ.PAS tha
t had many nasty errors.
 *)  (* See my web site 
in the Hints section for
 how to fix *)  (* DFS_N
O_COM_CLEANUP   : The ve
rsion of the compiler be
ing used does not *)  (*
 require COM objects to 
be released; it is done 
*)  (* automatically whe
n they go "out of scope"
. *)  (* DFS_NO_DSGNINTF
      : Delphi 6 pretty 
much kills off the DsgnI
ntf unit *)  (* for good
. Split into a couple of
 new units. *)  (* DFS_D
ESIGNERSELECTIONS: IDesi
gnerSelections replaced 
TDesignerSelectionList *
)  (* DFS_IPROPERTY     
   : IProperty introduce
d for design-time stuff.
 *)  (* DFS_COMPILER_1  
     : Delphi 1.0 is the
 compiler.  Note that C+
+B 1.0 *)  (* does NOT c
ause this to be defined.
  It is really *)  (* th
e 2.0 compiler. *)  (* D
FS_COMPILER_1_UP    : De
lphi 1.0x or higher, or 
C++B 1.0x or higher is *
)  (* the compiler. *)  
(* DFS_COMPILER_2       
: Delphi 2.0x or C++B 1.
0x is the compiler. *)  
(* DFS_COMPILER_2_UP    
: Delphi 2.0x or higher,
 or C++B 1.0x or higher 
is *)  (* the compiler. 
*)  (* DFS_COMPILER_3   
    : Delphi 3.0x or C++
B 3.0x is the compiler. 
*)  (* DFS_COMPILER_3_UP
    : Delphi 3.0x or hig
her, or C++B 3.0x or hig
her is *)  (* the compil
er. *)  (* DFS_COMPILER_
4       : Delphi 4.0x or
 C++B 4.0x is the compil
er. *)  (* DFS_COMPILER_
4_UP    : Delphi 4.0x or
 higher, or C++B 4.0x or
 higher is *)  (* the co
mpiler. *)  (* DFS_COMPI
LER_5       : Delphi 5.0
x or C++B 5.0x is the co
mpiler. *)  (* DFS_COMPI
LER_5_UP    : Delphi 5.0
x or higher, or C++B 5.0
x or higher is *)  (* th
e compiler. *)  (* DFS_C
OMPILER_6       : Delphi
 6.0x or C++B 6.0x is th
e compiler. *)  (* DFS_C
OMPILER_6_UP    : Delphi
 6.0x or higher, or C++B
 6.0x or higher is *)  (
* the compiler. *)  (* D
FS_UNKNOWN_COMPILER : No
 sense could be made of 
the compiliation *)  (* 
environment. *)  (* DFS_
CPPB             : Any v
ersion of C++B is being 
used. *)  (* DFS_CPPB_1 
          : C++B v1.0x i
s being used. *)  (* DFS
_CPPB_3           : C++B
 v3.0x is being used. *)
  (* DFS_CPPB_3_UP      
  : C++B v3.0x or higher
 is being used. *)  (* D
FS_CPPB_4           : C+
+B v4.0x is being used. 
*)  (* DFS_CPPB_4_UP    
    : C++B v4.0x or high
er is being used. *)  (*
 DFS_CPPB_5           : 
C++B v5.0x is being used
. *)  (* DFS_CPPB_5_UP  
      : C++B v5.0x or hi
gher is being used. *)  
(* DFS_DELPHI           
: Any version of Delphi 
is being used. *)  (* DF
S_DELPHI_1         : Del
phi v1.0x is being used.
 *)  (* DFS_DELPHI_2    
     : Delphi v2.0x is b
eing used. *)  (* DFS_DE
LPHI_2_UP      : Delphi 
v2.0x or higher is being
 used. *)  (* DFS_DELPHI
_3         : Delphi v3.0
x is being used. *)  (* 
DFS_DELPHI_3_UP      : D
elphi v3.0x or higher is
 being used. *)  (* DFS_
DELPHI_4         : Delph
i v4.0x is being used. *
)  (* DFS_DELPHI_4_UP   
   : Delphi v4.0x or hig
her is being used. *)  (
* DFS_DELPHI_5         :
 Delphi v5.0x is being u
sed. *)  (* DFS_DELPHI_5
_UP      : Delphi v5.0x 
or higher is being used.
 *)  (* DFS_DELPHI_6    
     : Delphi v6.0x is b
eing used. *)  (* DFS_DE
LPHI_6_UP      : Delphi 
v6.0x or higher is being
 used. *)  (* **********
************************
************************
****************** *)   
 { All DFS components re
ly on complete boolean e
val compiler directive s
et off. }  {$B-}  {$DEFI
NE DELPHI_FREE_STUFF}  {
$IFDEF WIN32}  {$DEFINE 
DFS_WIN32}  {$ELSE}  {$D
EFINE DFS_WIN16}  {$ENDI
F}  {$IFDEF VER140}  {$D
EFINE DFS_COMPILER_6}  {
$DEFINE DFS_DELPHI}  {$D
EFINE DFS_DELPHI_6}  {$E
NDIF}  {$IFDEF VER130}  
{$DEFINE DFS_COMPILER_5}
  {$IFDEF BCB}  {$DEFINE
 DFS_CPPB}  {$DEFINE DFS
_CPPB_5}  {$ELSE}  {$DEF
INE DFS_DELPHI}  {$DEFIN
E DFS_DELPHI_5}  {$ENDIF
}  {$ENDIF}  {$IFDEF VER
125}  {$DEFINE DFS_COMPI
LER_4}  {$DEFINE DFS_CPP
B}  {$DEFINE DFS_CPPB_4}
  {$ENDIF}  {$IFDEF VER1
20}  {$DEFINE DFS_COMPIL
ER_4}  {$DEFINE DFS_DELP
HI}  {$DEFINE DFS_DELPHI
_4}  {$ENDIF}  {$IFDEF V
ER110}  {$DEFINE DFS_COM
PILER_3}  {$DEFINE DFS_C
PPB}  {$DEFINE DFS_CPPB_
3}  {$ENDIF}  {$IFDEF VE
R100}  {$DEFINE DFS_COMP
ILER_3}  {$DEFINE DFS_DE
LPHI}  {$DEFINE DFS_DELP
HI_3}  {$ENDIF}  {$IFDEF
 VER93}  {$DEFINE DFS_CO
MPILER_2}  { C++B v1 com
piler is really v2 }  {$
DEFINE DFS_CPPB}  {$DEFI
NE DFS_CPPB_1}  { .$DEFI
NE DFS_USEDEFSHLOBJ } { 
C++B 1 has the correct S
HLOBJ.H, but    SHLOBJ.P
AS has errors so this is
n't defined }  {$ENDIF} 
 {$IFDEF VER90}  {$DEFIN
E DFS_COMPILER_2}  {$DEF
INE DFS_DELPHI}  {$DEFIN
E DFS_DELPHI_2}  {$ENDIF
}  {$IFDEF VER80}  {$DEF
INE DFS_COMPILER_1}  {$D
EFINE DFS_DELPHI}  {$DEF
INE DFS_DELPHI_1}  {$END
IF}  {$IFNDEF DFS_CPPB} 
 {$IFNDEF DFS_DELPHI}  {
 Don't know what the hel
l it is.  Could be new v
ersion, or could be old 
BP. }  {$DEFINE DFS_UNKN
OWN_COMPILER}  {$ENDIF} 
 {$ENDIF}  {$IFDEF DFS_C
OMPILER_1}  {$DEFINE DFS
_COMPILER_1_UP}  {$ENDIF
}  {$IFDEF DFS_COMPILER_
2}  {$DEFINE DFS_COMPILE
R_1_UP}  {$DEFINE DFS_CO
MPILER_2_UP}  {$ENDIF}  
{$IFDEF DFS_COMPILER_3} 
 {$DEFINE DFS_COMPILER_1
_UP}  {$DEFINE DFS_COMPI
LER_2_UP}  {$DEFINE DFS_
COMPILER_3_UP}  {$ENDIF}
  {$IFDEF DFS_COMPILER_4
}  {$DEFINE DFS_COMPILER
_1_UP}  {$DEFINE DFS_COM
PILER_2_UP}  {$DEFINE DF
S_COMPILER_3_UP}  {$DEFI
NE DFS_COMPILER_4_UP}  {
$ENDIF}  {$IFDEF DFS_COM
PILER_5}  {$DEFINE DFS_C
OMPILER_1_UP}  {$DEFINE 
DFS_COMPILER_2_UP}  {$DE
FINE DFS_COMPILER_3_UP} 
 {$DEFINE DFS_COMPILER_4
_UP}  {$DEFINE DFS_COMPI
LER_5_UP}  {$ENDIF}  {$I
FDEF DFS_COMPILER_6}  {$
DEFINE DFS_COMPILER_1_UP
}  {$DEFINE DFS_COMPILER
_2_UP}  {$DEFINE DFS_COM
PILER_3_UP}  {$DEFINE DF
S_COMPILER_4_UP}  {$DEFI
NE DFS_COMPILER_5_UP}  {
$DEFINE DFS_COMPILER_6_U
P}  {$ENDIF}  {$IFDEF DF
S_DELPHI_2}  {$DEFINE DF
S_DELPHI_2_UP}  {$ENDIF}
  {$IFDEF DFS_DELPHI_3} 
 {$DEFINE DFS_DELPHI_2_U
P}  {$DEFINE DFS_DELPHI_
3_UP}  {$ENDIF}  {$IFDEF
 DFS_DELPHI_4}  {$DEFINE
 DFS_DELPHI_2_UP}  {$DEF
INE DFS_DELPHI_3_UP}  {$
DEFINE DFS_DELPHI_4_UP} 
 {$ENDIF}  {$IFDEF DFS_D
ELPHI_5}  {$DEFINE DFS_D
ELPHI_2_UP}  {$DEFINE DF
S_DELPHI_3_UP}  {$DEFINE
 DFS_DELPHI_4_UP}  {$DEF
INE DFS_DELPHI_5_UP}  {$
ENDIF}  {$IFDEF DFS_DELP
HI_6}  {$DEFINE DFS_DELP
HI_2_UP}  {$DEFINE DFS_D
ELPHI_3_UP}  {$DEFINE DF
S_DELPHI_4_UP}  {$DEFINE
 DFS_DELPHI_5_UP}  {$DEF
INE DFS_DELPHI_6_UP}  {$
ENDIF}  {$IFDEF DFS_CPPB
_3}  {$DEFINE DFS_CPPB_3
_UP}  {$ENDIF}  {$IFDEF 
DFS_CPPB_4}  {$DEFINE DF
S_CPPB_3_UP}  {$DEFINE D
FS_CPPB_4_UP}  {$ENDIF} 
 {$IFDEF DFS_CPPB_5}  {$
DEFINE DFS_CPPB_3_UP}  {
$DEFINE DFS_CPPB_4_UP}  
{$DEFINE DFS_CPPB_5_UP} 
 {$ENDIF}  {$IFDEF DFS_C
OMPILER_3_UP}  {$DEFINE 
DFS_NO_COM_CLEANUP}  {$D
EFINE DFS_USEDEFSHLOBJ} 
{ Only D3+ and C++B 3+ h
ave no errors in SHLOBJ 
}  {$ENDIF}  {$IFDEF DFS
_CPPB_3_UP}  // C++Build
er requires this if you 
use Delphi components in
 run-time packages.  {$O
BJEXPORTALL On}  {$ENDIF
}  {$IFDEF DFS_COMPILER_
6_UP}  // Delphi 6 prett
y much kills off the Dsg
nIntf unit for good.  {$
DEFINE DFS_NO_DSGNINTF} 
 {$DEFINE DFS_DESIGNERSE
LECTIONS}  {$DEFINE DFS_
IPROPERTY}  {$ENDIF}  { 
------------------------
------------------------
------------------------
------ }  { TdfsVersionI
nfoResource v2.36 }  { -
------------------------
------------------------
------------------------
----- }  { A component t
o read version info reso
urces.  It is intended f
or Delphi 3, }  { but sh
ould work with any file 
that contains a properly
 formatted resource. }  
{ }  { Copyright 2000-20
01, Brad Stowers.  All R
ights Reserved. }  { }  
{ Copyright: }  { All De
lphi Free Stuff (hereaft
er "DFS") source code is
 copyrighted by }  { Bra
dley D. Stowers (hereaft
er "author"), and shall 
remain the exclusive }  
{ property of the author
. }  { }  { Distribution
 Rights: }  { You are gr
anted a non-exlusive, ro
yalty-free right to prod
uce and distribute }  { 
compiled binary files (e
xecutables, DLLs, etc.) 
that are built with any 
of }  { the DFS source c
ode unless specifically 
stated otherwise. }  { Y
ou are further granted p
ermission to redistribut
e any of the DFS source 
}  { code in source code
 form, provided that the
 original archive as fou
nd on the }  { DFS web s
ite (http://www.delphifr
eestuff.com) is distribu
ted unmodified. For }  {
 example, if you create 
a descendant of TDFSColo
rButton, you must includ
e in }  { the distributi
on package the colorbtn.
zip file in the exact fo
rm that you }  { downloa
ded it from http://www.d
elphifreestuff.com/mine/
files/colorbtn.zip. }  {
 }  { Restrictions: }  {
 Without the express wri
tten consent of the auth
or, you may not: }  { * 
Distribute modified vers
ions of any DFS source c
ode by itself. You must 
}  { include the origina
l archive as you found i
t at the DFS site. }  { 
* Sell or lease any port
ion of DFS source code. 
You are, of course, free
 }  { to sell any of you
r own original code that
 works with, enhances, e
tc. }  { DFS source code
. }  { * Distribute DFS 
source code for profit. 
}  { }  { Warranty: }  {
 There is absolutely no 
warranty of any kind wha
tsoever with any of the 
DFS }  { source code (he
reafter "software"). The
 software is provided to
 you "AS-IS", }  { and a
ll risks and losses asso
ciated with it's use are
 assumed by you. In no }
  { event shall the auth
or of the softare, Bradl
ey D. Stowers, be held }
  { accountable for any 
damages or losses that m
ay occur from use or mis
use of }  { the software
. }  { }  { Support: }  
{ Support is provided vi
a the DFS Support Forum,
 which is a web-based me
ssage }  { system.  You 
can find it at http://ww
w.delphifreestuff.com/di
scus/ }  { All DFS sourc
e code is provided free 
of charge. As such, I ca
n not guarantee }  { any
 support whatsoever. Whi
le I do try to answer al
l questions that I }  { 
receive, and address all
 problems that are repor
ted to me, you must }  {
 understand that I simpl
y can not guarantee that
 this will always be so.
 }  { }  { Clarification
s: }  { If you need any 
further information, ple
ase feel free to contact
 me directly. }  { This 
agreement can be found o
nline at my site in the 
"Miscellaneous" section.
 }  { ------------------
------------------------
------------------------
------------ }  { The la
teset version of my comp
onents are always availa
ble on the web at: }  { 
http://www.delphifreestu
ff.com/ }  { See VersInf
o.txt for notes, known i
ssues, and revision hist
ory. }  { --------------
------------------------
------------------------
---------------- }  { Da
te last modified:  June 
28, 2001 }  { ----------
------------------------
------------------------
-------------------- }  
  {$DEFINE DFS_VERSION_I
NFO_AS_CLASS}  {$M+}  un
it VersInfo;    interfac
e    uses    {$IFDEF DFS
_VERSION_INFO_AS_CLASS} 
 {$IFDEF DFS_WIN32}    W
indows,  {$ELSE}    WinT
ypes, WinProcs, Ver,  {$
ENDIF}    Classes, SysUt
ils; { I really hate For
ms }  {$ELSE}  {$IFDEF D
FS_WIN32}  Windows, ComC
trls,  {$ELSE}    WinTyp
es, WinProcs, Ver, Grids
,  {$ENDIF}    Messages,
 SysUtils, Classes, Grap
hics, Forms, StdCtrls;  
{$ENDIF}    const    { T
his shuts up C++Builder 
3 about the redefiniton 
being different. There  
    seems to be no equiv
alent in C1.  Sorry. }  
{$IFDEF DFS_CPPB_3_UP}  
{$EXTERNALSYM DFS_COMPON
ENT_VERSION}  {$ENDIF}  
  DFS_COMPONENT_VERSION 
= 'TdfsVersionInfoResour
ce v2.36';    DEFAULT_LA
NG_ID = $0409;    DEFAUL
T_CHAR_SET_ID = $04E4;  
  DEFAULT_LANG_CHAR_SET 
= '040904E4';    {$IFDEF
 DFS_COMPILER_3_UP}    r
esourcestring  {$ELSE}  
const  {$ENDIF}    SFlag
Debug = 'Debug';    SFla
gInfoInferred = 'Info In
ferred';    SFlagPatched
 = 'Patched';    SFlagPr
eRelease = 'Pre-Release'
;    SFlagPrivate = 'Pri
vate';    SFlagSpecial =
 'Special';    SHeaderRe
source = 'Resource';    
SHeaderValue = 'Value'; 
     { Predefined resour
ce item captions. }    S
ResCapCompanyName = 'Com
pany Name';    SResCapFi
leDescription = 'File De
scription';    SResCapFi
leVersion = 'File Versio
n';    SResCapInternalNa
me = 'Internal Name';   
 SResCapLegalCopyright =
 'Legal Copyright';    S
ResCapLegalTrademarks = 
'Legal Trademarks';    S
ResCapOriginalFilename =
 'Original Filename';   
 SResCapProductName = 'P
roduct Name';    SResCap
ProductVersion = 'Produc
t Version';    SResCapCo
mments = 'Comments';    
SResCapBuildFlags = 'Bui
ld Flags';      { set va
lues to choose which res
ources are seen in the g
rid/listview }  type    
TPreDef = (pdCompanyName
, pdFileDescription, pdF
ileVersion, pdInternalNa
me, pdLegalCopyright, pd
LegalTrademarks, pdOrigi
nalFilename, pdProductNa
me,      pdProductVersio
n, pdComments, pdBuildFl
ags);    TPreDefs = set 
of TPreDef;      { but t
o index properties we ne
ed integers }  const    
IDX_COMPANYNAME = ord(pd
CompanyName);    IDX_FIL
EDESCRIPTION = ord(pdFil
eDescription);    IDX_FI
LEVERSION = ord(pdFileVe
rsion);    IDX_INTERNALN
AME = ord(pdInternalName
);    IDX_LEGALCOPYRIGHT
 = ord(pdLegalCopyright)
;    IDX_LEGALTRADEMARKS
 = ord(pdLegalTrademarks
);    IDX_ORIGINALFILENA
ME = ord(pdOriginalFilen
ame);    IDX_PRODUCTNAME
 = ord(pdProductName);  
  IDX_PRODUCTVERSION = o
rd(pdProductVersion);   
 IDX_COMMENTS = ord(pdCo
mments);    IDX_BUILDFLA
GS = ord(pdBuildFlags); 
   const    IDX_VER_MAJO
R = 0;    IDX_VER_MINOR 
= 1;    IDX_VER_RELEASE 
= 2;    IDX_VER_BUILD = 
3;    type  {$IFNDEF DFS
_WIN32}    PVSFixedFileI
nfo = PVS_FixedFileInfo;
    DWORD = longint;    
UINT = word;  {$ENDIF}  
  TFixedFileInfoFlag = (
ffDebug, ffInfoInferred,
 ffPatched, ffPreRelease
, ffPrivateBuild, ffSpec
ialBuild);    TFixedFile
InfoFlags = set of TFixe
dFileInfoFlag;      TVer
sionOperatingSystemFlag 
= (vosUnknown, vosDOS, v
osOS2_16, vosOS2_32, vos
NT, vosWindows16, vosPre
sentationManager16, vosP
resentationManager32,   
   vosWindows32);    { T
his is supposed to be on
e of the first line, and
 one of the second line.
 }    TVersionOperatingS
ystemFlags = set of TVer
sionOperatingSystemFlag;
      TVersionFileType =
 (vftUnknown, vftApplica
tion, vftDLL, vftDriver,
 vftFont, vftVXD, vftSta
ticLib);      TdfsVersio
nInfoResource = class; {
 forward declaration }  
    TFixedFileVersionInf
o = class    private    
  FParent: TdfsVersionIn
foResource;      FData: 
PVSFixedFileInfo;       
 function GetSignature: 
DWORD;      function Get
StructureVersion: DWORD;
      function GetFileVe
rsionMS: DWORD;      fun
ction GetFileVersionLS: 
DWORD;      function Get
ProductVersionMS: DWORD;
      function GetProduc
tVersionLS: DWORD;      
function GetValidFlags: 
TFixedFileInfoFlags;    
  function GetFlags: TFi
xedFileInfoFlags;      f
unction GetFileOperating
System: TVersionOperatin
gSystemFlags;      funct
ion GetFileType: TVersio
nFileType;      function
 GetFileSubType: DWORD; 
     function GetCreatio
nDate: TDateTime;    pub
lic      constructor Cre
ate(AParent: TdfsVersion
InfoResource);        pr
operty Parent: TdfsVersi
onInfoResource read FPar
ent write FParent;      
property Data: PVSFixedF
ileInfo read FData write
 FData;        property 
Signature: DWORD read Ge
tSignature;      propert
y StructureVersion: DWOR
D read GetStructureVersi
on;      property FileVe
rsionMS: DWORD read GetF
ileVersionMS;      prope
rty FileVersionLS: DWORD
 read GetFileVersionLS; 
     property ProductVer
sionMS: DWORD read GetPr
oductVersionMS;      pro
perty ProductVersionLS: 
DWORD read GetProductVer
sionLS;      property Va
lidFlags: TFixedFileInfo
Flags read GetValidFlags
;      property Flags: T
FixedFileInfoFlags read 
GetFlags;      property 
FileOperatingSystem: TVe
rsionOperatingSystemFlag
s read GetFileOperatingS
ystem;      property Fil
eType: TVersionFileType 
read GetFileType;      p
roperty FileSubType: DWO
RD read GetFileSubType; 
     property CreationDa
te: TDateTime read GetCr
eationDate;    end;     
 TVersionNumberInformati
on = class    private   
   FValid: boolean;     
 FMostSignificant: DWORD
;      FLeastSignificant
: DWORD;      FVersionNu
mberString: string;     
   function GetVersionNu
mber(Index: integer): wo
rd;      function GetVer
sionNumberString: string
;    public      constru
ctor Create(MSVer, LSVer
: DWORD);      property 
Valid: boolean read FVal
id write FValid;      pr
operty Major: word index
 IDX_VER_MAJOR read GetV
ersionNumber;      prope
rty Minor: word index ID
X_VER_MINOR read GetVers
ionNumber;      property
 Release: word index IDX
_VER_RELEASE read GetVer
sionNumber;      propert
y Build: word index IDX_
VER_BUILD read GetVersio
nNumber;        property
 AsString: string read G
etVersionNumberString;  
  end;    {$IFDEF DFS_DE
LPHI_1}      TVersionFil
ename = string;  {$ELSE}
    TVersionFilename = t
ype string;  {$ENDIF}   
   TdfsVersionInfoResour
ce = class{$IFNDEF DFS_V
ERSION_INFO_AS_CLASS}(TC
omponent){$ENDIF}    pri
vate      FVersionInfo: 
PChar;      FVersionInfo
Size: DWORD;      FFilen
ame: TVersionFilename;  
    FTranslationIDs: TSt
ringList;      FTranslat
ionIDIndex: integer;    
  FFixedInfo: TFixedFile
VersionInfo;      FForce
EXE: boolean;      FFile
Version: TVersionNumberI
nformation;      FProduc
tVersion: TVersionNumber
Information;  {$IFNDEF D
FS_VERSION_INFO_AS_CLASS
}      FFileVersionLabel
: TLabel;      FCopyrigh
tLabel: TLabel;  {$IFDEF
 DFS_WIN32}      FVersio
nListView: TListView;  {
$ELSE}      FVersionGrid
: TStringGrid;  {$ENDIF}
      FDescriptionLabel:
 TLabel;      FProductLa
bel: TLabel;      FShowR
esource: TPreDefs;  {$EN
DIF}    protected      p
rocedure SetFilename(con
st Val: TVersionFilename
);      procedure SetTra
nslationIDIndex(Val: int
eger);      function Get
TranslationIDs: TStrings
;      procedure SetForc
eEXE(Val: boolean);  {$I
FNDEF DFS_VERSION_INFO_A
S_CLASS}  {$IFDEF DFS_WI
N32}      procedure SetV
ersionListView(Value: TL
istView);  {$ELSE}      
procedure SetVersionGrid
(Value: TStringGrid);  {
$ENDIF}      procedure S
etShowResource(Value: TP
reDefs);      procedure 
SetFileVersionLabel(Valu
e: TLabel);      procedu
re SetCopyrightLabel(Val
ue: TLabel);      proced
ure SetProductLabel(Valu
e: TLabel);      procedu
re SetDescriptionLabel(V
alue: TLabel);      func
tion GetVersion: string;
      procedure SetVersi
on(const Val: string);  
{$ENDIF}      function G
etResourceFilename: stri
ng; virtual;  {$IFNDEF D
FS_VERSION_INFO_AS_CLASS
}      procedure Populat
eControls; virtual;  {$I
FDEF DFS_WIN32}      pro
cedure BuildListView; vi
rtual;  {$ELSE}      pro
cedure BuildGrid; virtua
l;  {$ENDIF}      proced
ure Notification(ACompon
ent: TComponent; Operati
on: TOperation); overrid
e;      procedure Loaded
; override;  {$ENDIF}   
   function BuildFlags: 
string; virtual;      pr
ocedure ReadVersionInfoD
ata; virtual;        fun
ction GetVersionInfoStri
ng(Index: integer): stri
ng;      function GetRes
ourceStr(Index: string):
 string;    public  {$IF
DEF DFS_VERSION_INFO_AS_
CLASS}      constructor 
Create; virtual;  {$ELSE
}      constructor Creat
e(AOwner: TComponent); o
verride;  {$ENDIF}      
destructor Destroy; over
ride;        property Tr
anslationIDIndex: intege
r read FTranslationIDInd
ex write SetTranslationI
DIndex;      property Tr
anslationIDs: TStrings r
ead GetTranslationIDs;  
    property FixedInfo: 
TFixedFileVersionInfo re
ad FFixedInfo;      prop
erty UserResource[Index:
 string]: string read Ge
tResourceStr;        pro
perty FileVersion: TVers
ionNumberInformation rea
d FFileVersion;      pro
perty ProductVersion: TV
ersionNumberInformation 
read FProductVersion;   
 published  {$IFNDEF DFS
_VERSION_INFO_AS_CLASS} 
     property Version: s
tring read GetVersion wr
ite SetVersion stored FA
LSE;  {$ENDIF}      prop
erty Filename: TVersionF
ilename read FFilename w
rite SetFilename;      p
roperty ForceEXE: boolea
n read FForceEXE write S
etForceEXE default FALSE
;        property Compan
yName: string index IDX_
COMPANYNAME read GetVers
ionInfoString;      prop
erty FileDescription: st
ring index IDX_FILEDESCR
IPTION read GetVersionIn
foString;      property 
InternalName: string ind
ex IDX_INTERNALNAME read
 GetVersionInfoString;  
    property LegalCopyri
ght: string index IDX_LE
GALCOPYRIGHT read GetVer
sionInfoString;      pro
perty LegalTrademarks: s
tring index IDX_LEGALTRA
DEMARKS read GetVersionI
nfoString;      property
 OriginalFilename: strin
g index IDX_ORIGINALFILE
NAME read GetVersionInfo
String;      property Pr
oductName: string index 
IDX_PRODUCTNAME read Get
VersionInfoString;      
property Comments: strin
g index IDX_COMMENTS rea
d GetVersionInfoString; 
   {$IFNDEF DFS_VERSION_
INFO_AS_CLASS}      prop
erty VersionLabel: TLabe
l read FFileVersionLabel
 write SetFileVersionLab
el;  {$IFDEF DFS_WIN32} 
     property VersionLis
tView: TListView read FV
ersionListView write Set
VersionListView;  {$ELSE
}      property VersionG
rid: TStringGrid read FV
ersionGrid write SetVers
ionGrid;  {$ENDIF}      
property DescriptionLabe
l: TLabel read FDescript
ionLabel write SetDescri
ptionLabel;      propert
y CopyrightLabel: TLabel
 read FCopyrightLabel wr
ite SetCopyrightLabel;  
    property ProductLabe
l: TLabel read FProductL
abel write SetProductLab
el;      property ShowRe
source: TPreDefs read FS
howResource write SetSho
wResource;  {$ENDIF}    
end;    implementation  
  const    PREDEF_RESOUR
CES: array [IDX_COMPANYN
AME .. IDX_BUILDFLAGS] o
f string = ('CompanyName
', 'FileDescription', 'F
ileVersion', 'InternalNa
me',      'LegalCopyrigh
t', 'LegalTrademarks', '
OriginalFilename', 'Prod
uctName', 'ProductVersio
n', 'Comments', 'BuildFl
ags');      PREDEF_CAPTI
ONS: array [IDX_COMPANYN
AME .. IDX_BUILDFLAGS] o
f string = (SResCapCompa
nyName, SResCapFileDescr
iption, SResCapFileVersi
on,      SResCapInternal
Name, SResCapLegalCopyri
ght, SResCapLegalTradema
rks, SResCapOriginalFile
name, SResCapProductName
, SResCapProductVersion,
      SResCapComments, S
ResCapBuildFlags);    {$
IFDEF DFS_DELPHI_2}  {$D
EFINE ST2DT_UNDEF}  {$EN
DIF}  {$IFDEF DFS_CPPB_1
}  {$DEFINE ST2DT_UNDEF}
  {$ENDIF}  {$IFDEF ST2D
T_UNDEF}    function Sys
temTimeToDateTime(const 
SystemTime: TSystemTime)
: TDateTime;  begin    w
ith SystemTime do      R
esult := EncodeDate(wYea
r, wMonth, wDay) + Encod
eTime(wHour, wMinute, wS
econd, wMilliSeconds);  
end;  {$ENDIF}  {$IFNDEF
 DFS_WIN32}    function 
IsLibrary: boolean;  beg
in    Result := PrefixSe
g = 0;  end;  {$ENDIF}  
  constructor TFixedFile
VersionInfo.Create(APare
nt: TdfsVersionInfoResou
rce);  begin    inherite
d Create;    FParent := 
AParent;  end;    functi
on TFixedFileVersionInfo
.GetSignature: DWORD;  b
egin    if FData = nil t
hen      Result := 0    
else      Result := FDat
a^.dwSignature;  end;   
 function TFixedFileVers
ionInfo.GetStructureVers
ion: DWORD;  begin    if
 FData = nil then      R
esult := 0    else      
Result := FData^.dwStruc
Version;  end;    functi
on TFixedFileVersionInfo
.GetFileVersionMS: DWORD
;  begin    if FData = n
il then      Result := 0
    else      Result := 
FData^.dwFileVersionMS; 
 end;    function TFixed
FileVersionInfo.GetFileV
ersionLS: DWORD;  begin 
   if FData = nil then  
    Result := 0    else 
     Result := FData^.dw
FileVersionLS;  end;    
function TFixedFileVersi
onInfo.GetProductVersion
MS: DWORD;  begin    if 
FData = nil then      Re
sult := 0    else      R
esult := FData^.dwProduc
tVersionMS;  end;    fun
ction TFixedFileVersionI
nfo.GetProductVersionLS:
 DWORD;  begin    if FDa
ta = nil then      Resul
t := 0    else      Resu
lt := FData^.dwProductVe
rsionLS;  end;    functi
on TFixedFileVersionInfo
.GetValidFlags: TFixedFi
leInfoFlags;  begin    R
esult := [];    if FData
 <> nil then    begin   
   if (FData^.dwFileFlag
sMask and VS_FF_DEBUG) <
> 0 then        Include(
Result, ffDebug);      i
f (FData^.dwFileFlagsMas
k and VS_FF_PRERELEASE) 
<> 0 then        Include
(Result, ffPreRelease); 
     if (FData^.dwFileFl
agsMask and VS_FF_PATCHE
D) <> 0 then        Incl
ude(Result, ffPatched); 
     if (FData^.dwFileFl
agsMask and VS_FF_PRIVAT
EBUILD) <> 0 then       
 Include(Result, ffPriva
teBuild);      if (FData
^.dwFileFlagsMask and VS
_FF_INFOINFERRED) <> 0 t
hen        Include(Resul
t, ffInfoInferred);     
 if (FData^.dwFileFlagsM
ask and VS_FF_SPECIALBUI
LD) <> 0 then        Inc
lude(Result, ffSpecialBu
ild);    end;  end;    f
unction TFixedFileVersio
nInfo.GetFlags: TFixedFi
leInfoFlags;  begin    R
esult := [];    if FData
 <> nil then    begin   
   if (FData^.dwFileFlag
s and VS_FF_DEBUG) <> 0 
then        Include(Resu
lt, ffDebug);      if (F
Data^.dwFileFlags and VS
_FF_PRERELEASE) <> 0 the
n        Include(Result,
 ffPreRelease);      if 
(FData^.dwFileFlags and 
VS_FF_PATCHED) <> 0 then
        Include(Result, 
ffPatched);      if (FDa
ta^.dwFileFlags and VS_F
F_PRIVATEBUILD) <> 0 the
n        Include(Result,
 ffPrivateBuild);      i
f (FData^.dwFileFlags an
d VS_FF_INFOINFERRED) <>
 0 then        Include(R
esult, ffInfoInferred); 
     if (FData^.dwFileFl
ags and VS_FF_SPECIALBUI
LD) <> 0 then        Inc
lude(Result, ffSpecialBu
ild);    end;  end;    f
unction TFixedFileVersio
nInfo.GetFileOperatingSy
stem: TVersionOperatingS
ystemFlags;  {$IFNDEF DF
S_WIN32}  var    FileOS:
 word;  {$ENDIF}  begin 
   Result := [];    if F
Data <> nil then    begi
n      case HiWord(FData
^.dwFileOS) of        VO
S_DOS shr 16:          I
nclude(Result, vosDOS); 
       VOS_OS216 shr 16:
          Include(Result
, vosOS2_16);        VOS
_OS232 shr 16:          
Include(Result, vosOS2_3
2);        VOS_NT shr 16
:          Include(Resul
t, vosNT);      else    
    Include(Result, vosU
nknown);      end;    {$
IFDEF DFS_WIN32}      ca
se LoWord(FData^.dwFileO
S) of        LoWord(VOS_
_WINDOWS16):          In
clude(Result, vosWindows
16);        LoWord(VOS__
PM16):          Include(
Result, vosPresentationM
anager16);        LoWord
(VOS__PM32):          In
clude(Result, vosPresent
ationManager32);        
LoWord(VOS__WINDOWS32): 
         Include(Result,
 vosWindows32);      els
e        Include(Result,
 vosUnknown);      end; 
 {$ELSE}      FileOS := 
LoWord(FData^.dwFileOS);
      if FileOS = LoWord
(VOS__WINDOWS16) then   
     Include(Result, vos
Windows16)      else if 
FileOS = LoWord(VOS__PM1
6) then        Include(R
esult, vosPresentationMa
nager16)      else if Fi
leOS = LoWord(VOS__PM32)
 then        Include(Res
ult, vosPresentationMana
ger32)      else if File
OS = LoWord(VOS__WINDOWS
32) then        Include(
Result, vosWindows32)   
   else        Include(R
esult, vosUnknown);  {$E
NDIF}    end;  end;    f
unction TFixedFileVersio
nInfo.GetFileType: TVers
ionFileType;  begin    R
esult := vftUnknown;    
if FData <> nil then    
begin      case FData^.d
wFileType of        VFT_
APP:          Result := 
vftApplication;        V
FT_DLL:          Result 
:= vftDLL;        VFT_DR
V:          Result := vf
tDriver;        VFT_FONT
:          Result := vft
Font;        VFT_VXD:   
       Result := vftVXD;
        VFT_STATIC_LIB: 
         Result := vftSt
aticLib;      end;    en
d;  end;    function TFi
xedFileVersionInfo.GetFi
leSubType: DWORD;  begin
    if FData = nil then 
     Result := 0    else
    begin      Result :=
 FData^.dwFileSubtype;  
  end;  end;    function
 TFixedFileVersionInfo.G
etCreationDate: TDateTim
e;  {$IFDEF DFS_WIN32}  
var    SysTime: TSystemT
ime;    FileTime: TFileT
ime;  begin    if FData 
= nil then      Result :
= 0    else    begin    
  FileTime.dwLowDateTime
 := FData^.dwFileDateLS;
      FileTime.dwHighDat
eTime := FData^.dwFileDa
teMS;      if FileTimeTo
SystemTime(FileTime, Sys
Time) then      begin   
     Result := SystemTim
eToDateTime(SysTime);   
   end      else        
Result := 0;    end;  {$
ELSE}    var    SR: TSea
rchRec;  begin    { Fake
 it until I can figure o
ut how to convert dwFile
DateMS and LS }    Resul
t := 0;    if assigned(F
Parent) then    begin   
   if FindFirst(FParent.
GetResourceFilename, faA
nyFile, SR) = 0 then    
  begin        Result :=
 FileDateToDateTime(SR.T
ime);        FindClose(S
R);      end;    end;   
 (*      var      BigNum
: comp;      begin      
if FData = nil then     
 Result := 0      else b
egin        BigNum := (F
Data^.dwFileDateMS * Max
LongInt) + FData^.dwFile
DateLS;      BigNum := B
igNum / 10000000;      {
 LS and MS is the number
 of 100 nanosecond inter
vals since 1/1/1601 }   
   { 10,000,000s of a se
cond }      Result := En
codeDate(1601, 1, 1);   
   Result := BigNum.....
      end;    *)    {$EN
DIF}  end;    constructo
r TVersionNumberInformat
ion.Create(MSVer, LSVer:
 DWORD);  begin    inher
ited Create;      FValid
 := FALSE;    FMostSigni
ficant := MSVer;    FLea
stSignificant := LSVer; 
 end;    function TVersi
onNumberInformation.GetV
ersionNumber(Index: inte
ger): word;  begin    Re
sult := 0;    if FValid 
then      case Index of 
       IDX_VER_MAJOR:   
       Result := HiWord(
FMostSignificant);      
  IDX_VER_MINOR:        
  Result := LoWord(FMost
Significant);        IDX
_VER_RELEASE:          R
esult := HiWord(FLeastSi
gnificant);        IDX_V
ER_BUILD:          Resul
t := LoWord(FLeastSignif
icant)      end  end;   
 function TVersionNumber
Information.GetVersionNu
mberString: string;  beg
in    if FValid then    
begin      if FVersionNu
mberString = '' then    
    Result := Format('%d
.%d.%d.%d', [Major, Mino
r, Release, Build])     
 else        Result := F
VersionNumberString;    
end    else      Result 
:= ''  end;    {$IFDEF D
FS_VERSION_INFO_AS_CLASS
}    constructor TdfsVer
sionInfoResource.Create;
  begin    inherited Cre
ate;      FVersionInfo :
= nil;    FVersionInfoSi
ze := 0;    FFilename :=
 '';    FTranslationIDIn
dex := 0;    FForceEXE :
= FALSE;    FTranslation
IDs := TStringList.Creat
e;    FFileVersion := TV
ersionNumberInformation.
Create(0, 0);    FProduc
tVersion := TVersionNumb
erInformation.Create(0, 
0);    FFixedInfo := TFi
xedFileVersionInfo.Creat
e(Self);  end;  {$ELSE} 
   constructor TdfsVersi
onInfoResource.Create(AO
wner: TComponent);  begi
n    inherited Create(AO
wner);      FVersionInfo
 := nil;    FVersionInfo
Size := 0;    FFilename 
:= '';    FTranslationID
Index := 0;    FForceEXE
 := FALSE;    FTranslati
onIDs := TStringList.Cre
ate;    FFileVersion := 
TVersionNumberInformatio
n.Create(0, 0);    FProd
uctVersion := TVersionNu
mberInformation.Create(0
, 0);    FFixedInfo := T
FixedFileVersionInfo.Cre
ate(Self);    FShowResou
rce := [Low(TPreDef) .. 
High(TPreDef)]  end;  {$
ENDIF}    destructor Tdf
sVersionInfoResource.Des
troy;  begin    FFileVer
sion.Free;    FProductVe
rsion.Free;    FFixedInf
o.Free;    FTranslationI
Ds.Free;    if FVersionI
nfo <> nil then      Fre
eMem(FVersionInfo, FVers
ionInfoSize);      inher
ited Destroy;  end;    {
$IFNDEF DFS_VERSION_INFO
_AS_CLASS}    procedure 
TdfsVersionInfoResource.
Loaded;  begin    inheri
ted Loaded;      ReadVer
sionInfoData;    (*     
 {$IFNDEF DFS_VERSION_IN
FO_AS_CLASS}      Popula
teControls;      {$ENDIF
}    *)  end;  {$ENDIF} 
   procedure TdfsVersion
InfoResource.SetFilename
(const Val: TVersionFile
name);  begin    FFilena
me := Val;    ReadVersio
nInfoData;  end;    proc
edure TdfsVersionInfoRes
ource.ReadVersionInfoDat
a;  const    TRANSLATION
_INFO = '\VarFileInfo\Tr
anslation';  type    TTr
anslationPair = packed r
ecord      Lang, CharSet
: word;    end;      PTr
anslationIDList = ^TTran
slationIDList;    TTrans
lationIDList = array [0 
.. MAXINT div SizeOf(TTr
anslationPair) - 1] of T
TranslationPair;  var   
 QueryLen: UINT;    IDsL
en: UINT;    Dummy: DWOR
D;    IDs: PTranslationI
DList;    IDCount: integ
er;    FixedInfoData: PV
SFixedFileInfo;    TempF
ilename: array [0 .. 255
] of char;  begin    FTr
anslationIDs.Clear;    F
FixedInfo.Data := nil;  
  if FVersionInfo <> nil
 then      FreeMem(FVers
ionInfo, FVersionInfoSiz
e);    StrPCopy(TempFile
name, GetResourceFilenam
e);      { Denis Koppras
ch: added a try-Except b
ecause GetFileVersionInf
oSize can fail      with
 an invalid pointer or s
omething like that! }   
 try      FVersionInfoSi
ze := GetFileVersionInfo
Size(TempFilename, Dummy
);    except      FVersi
onInfoSize := 0;    end;
      if FVersionInfoSiz
e = 0 then    begin     
 FVersionInfo := nil;   
   FFileVersion.Valid :=
 FALSE;      FProductVer
sion.Valid := FALSE;    
end    else    begin    
  GetMem(FVersionInfo, F
VersionInfoSize);      G
etFileVersionInfo(TempFi
lename, Dummy, FVersionI
nfoSize, FVersionInfo); 
       VerQueryValue(FVe
rsionInfo, '\', pointer(
FixedInfoData), QueryLen
);      FFixedInfo.Data 
:= FixedInfoData;      i
f VerQueryValue(FVersion
Info, TRANSLATION_INFO, 
pointer(IDs), IDsLen) th
en      begin        { D
enis Kopprasch: if IDCou
nt = 0, the for .. to ..
.-Statement is executed 
         several times (
maybe infinite until err
or) if range checking of
f }        IDCount := ID
sLen div SizeOf(TTransla
tionPair);        if (ID
Count > 0) then        b
egin          for Dummy 
:= 0 to IDCount - 1 do  
        begin           
 { !!! Potential problem
.  Some of MS's stuff do
es this, some does not. 
 Need to              fi
gure a way to make it wo
rk with both. }         
   (* if IDs^[Dummy].Lan
g = 0 then              
IDs^[Dummy].Lang := DEFA
ULT_LANG_ID; { Some of M
icrosoft's stuff does th
is }              if IDs
^[Dummy].CharSet = 0 the
n              IDs^[Dumm
y].CharSet := DEFAULT_CH
AR_SET_ID; *)           
 FTranslationIDs.Add(For
mat('%.4x%.4x', [IDs^[Du
mmy].Lang, IDs^[Dummy].C
harSet]));          end;
        end        else 
if (IDCount = 0) and (ID
sLen > 0) then        be
gin          { There was
 translation info, but t
here was not a full set.
  What's            ther
e is usually a char set,
 so we have to swap thin
gs around. }          FT
ranslationIDs.Add(Format
('%.4x%.4x', [DEFAULT_LA
NG_ID, IDs^[Dummy].Lang]
));        end;      end
;        if FTranslation
IDIndex >= FTranslationI
Ds.Count then        FTr
anslationIDIndex := 0;  
      FFileVersion.Valid
 := true;      FFileVers
ion.FMostSignificant := 
FFixedInfo.GetFileVersio
nMS;      FFileVersion.F
LeastSignificant := FFix
edInfo.GetFileVersionLS;
      FFileVersion.FVers
ionNumberString := GetVe
rsionInfoString(IDX_FILE
VERSION);      FProductV
ersion.Valid := true;   
   FProductVersion.FMost
Significant := FFixedInf
o.GetProductVersionMS;  
    FProductVersion.FLea
stSignificant := FFixedI
nfo.GetProductVersionLS;
      FProductVersion.FV
ersionNumberString := Ge
tVersionInfoString(IDX_P
RODUCTVERSION);    end; 
 {$IFNDEF DFS_VERSION_IN
FO_AS_CLASS}    Populate
Controls;  {$ENDIF}  end
;    {$IFNDEF DFS_VERSIO
N_INFO_AS_CLASS}    proc
edure TdfsVersionInfoRes
ource.PopulateControls; 
 begin    if [csDesignin
g, csLoading] * Componen
tState <> [] then      e
xit;      if assigned(FF
ileVersionLabel) then   
   FFileVersionLabel.Cap
tion := FileVersion.AsSt
ring;    if assigned(FCo
pyrightLabel) then      
FCopyrightLabel.Caption 
:= LegalCopyright;    if
 assigned(FProductLabel)
 then      FProductLabel
.Caption := ProductName;
    if assigned(FDescrip
tionLabel) then      FDe
scriptionLabel.Caption :
= FileDescription;  {$IF
DEF DFS_WIN32}    if ass
igned(FVersionListView) 
then      BuildListView;
  {$ELSE}    if assigned
(FVersionGrid) then     
 BuildGrid;  {$ENDIF}  e
nd;  {$ENDIF}    functio
n TdfsVersionInfoResourc
e.GetResourceFilename: s
tring;  {$IFNDEF DFS_VER
SION_INFO_AS_CLASS}  var
    TempFilename: array 
[0 .. 255] of char;  {$E
NDIF}  begin  {$IFNDEF D
FS_VERSION_INFO_AS_CLASS
}    if FFilename = '' t
hen    begin      if IsL
ibrary and (not FForceEX
E) then      begin      
  GetModuleFileName(HIns
tance, TempFilename, Siz
eOf(TempFilename) - 1); 
       Result := StrPas(
TempFilename);      end 
     else        Result 
:= Application.EXEName; 
   end    else  {$ENDIF}
      Result := FFilenam
e;  end;    function Tdf
sVersionInfoResource.Get
VersionInfoString(Index:
 integer): string;  begi
n    if (Index >= Low(PR
EDEF_RESOURCES)) and (In
dex <= High(PREDEF_RESOU
RCES)) then      Result 
:= GetResourceStr(PREDEF
_RESOURCES[Index])    el
se      Result := ''  en
d;    function TdfsVersi
onInfoResource.GetResour
ceStr(Index: string): st
ring;  var    ResStr: PC
har;    StrLen: UINT;   
 SubBlock: array [0 .. 2
55] of char;    LangChar
Set: string;  begin    i
f FTranslationIDIndex < 
FTranslationIDs.Count th
en      LangCharSet := F
TranslationIDs[FTranslat
ionIDIndex]    else     
 LangCharSet := DEFAULT_
LANG_CHAR_SET;    StrPCo
py(SubBlock, '\StringFil
eInfo\' + LangCharSet + 
'\' + Index);    if (FVe
rsionInfo <> nil) and Ve
rQueryValue(FVersionInfo
, SubBlock, pointer(ResS
tr), StrLen) then      R
esult := StrPas(ResStr) 
   else      Result := '
';  end;    procedure Td
fsVersionInfoResource.Se
tTranslationIDIndex(Val:
 integer);  begin    if 
(Val > 0) and (Val < FTr
anslationIDs.Count) then
      FTranslationIDInde
x := Val;  end;    funct
ion TdfsVersionInfoResou
rce.GetTranslationIDs: T
Strings;  begin    Resul
t := FTranslationIDs;  e
nd;    procedure TdfsVer
sionInfoResource.SetForc
eEXE(Val: boolean);  beg
in    if FForceEXE <> Va
l then    begin      FFo
rceEXE := Val;      Read
VersionInfoData;    end;
  end;    {$IFNDEF DFS_V
ERSION_INFO_AS_CLASS}   
 procedure TdfsVersionIn
foResource.SetFileVersio
nLabel(Value: TLabel);  
begin    FFileVersionLab
el := Value;    if assig
ned(FFileVersionLabel) t
hen    begin  {$IFDEF DF
S_WIN32}      FFileVersi
onLabel.FreeNotification
(Self);  {$ENDIF}      F
ShowResource := FShowRes
ource - [pdFileVersion];
      PopulateControls; 
   end;  end;    procedu
re TdfsVersionInfoResour
ce.SetCopyrightLabel(Val
ue: TLabel);  begin    F
CopyrightLabel := Value;
    if assigned(FCopyrig
htLabel) then    begin  
{$IFDEF DFS_WIN32}      
FCopyrightLabel.FreeNoti
fication(Self);  {$ENDIF
}      FShowResource := 
FShowResource - [pdLegal
Copyright];      Populat
eControls;    end;  end;
    procedure TdfsVersio
nInfoResource.SetProduct
Label(Value: TLabel);  b
egin    FProductLabel :=
 Value;    if assigned(F
ProductLabel) then    be
gin  {$IFDEF DFS_WIN32} 
     FProductLabel.FreeN
otification(Self);  {$EN
DIF}      FShowResource 
:= FShowResource - [pdPr
oductName];      Populat
eControls;    end;  end;
    procedure TdfsVersio
nInfoResource.SetDescrip
tionLabel(Value: TLabel)
;  begin    FDescription
Label := Value;    if as
signed(FDescriptionLabel
) then    begin  {$IFDEF
 DFS_WIN32}      FDescri
ptionLabel.FreeNotificat
ion(Self);  {$ENDIF}    
  FShowResource := FShow
Resource - [pdFileDescri
ption];      PopulateCon
trols;    end;  end;    
procedure TdfsVersionInf
oResource.SetShowResourc
e(Value: TPreDefs);  beg
in    if Value <> FShowR
esource then    begin   
   FShowResource := Valu
e;      PopulateControls
;    end  end;    {$IFDE
F DFS_WIN32}    procedur
e TdfsVersionInfoResourc
e.SetVersionListView(Val
ue: TListView);  begin  
  FVersionListView := Va
lue;    if assigned(FVer
sionListView) then    be
gin      FVersionListVie
w.FreeNotification(Self)
;      PopulateControls;
    end;  end;    {$ELSE
}    procedure TdfsVersi
onInfoResource.SetVersio
nGrid(Value: TStringGrid
);  begin    FVersionGri
d := Value;    if assign
ed(FVersionGrid) then   
 begin  {$IFDEF DFS_WIN3
2}      FVersionGrid.Fre
eNotification(Self);  {$
ENDIF}      PopulateCont
rols;    end;  end;  {$E
NDIF}    procedure TdfsV
ersionInfoResource.Notif
ication(AComponent: TCom
ponent; Operation: TOper
ation);  begin    inheri
ted Notification(ACompon
ent, Operation);    if O
peration = opRemove then
    begin      if (AComp
onent = FFileVersionLabe
l) then        FFileVers
ionLabel := nil      els
e if (AComponent = FCopy
rightLabel) then        
FCopyrightLabel := nil  
    else if (AComponent 
= FProductLabel) then   
     FProductLabel := ni
l      else if (ACompone
nt = FDescriptionLabel) 
then        FDescription
Label := nil  {$IFDEF DF
S_WIN32}      else if (A
Component = FVersionList
View) then        FVersi
onListView := nil;  {$EL
SE}      else if (ACompo
nent = FVersionGrid) the
n        FVersionGrid :=
 nil;  {$ENDIF}    end; 
 end;  {$ENDIF}    funct
ion TdfsVersionInfoResou
rce.BuildFlags: string; 
 const    FLAG_STRING: a
rray [TFixedFileInfoFlag
] of string = (SFlagDebu
g, SFlagInfoInferred, SF
lagPatched, SFlagPreRele
ase, SFlagPrivate, SFlag
Special);  var    AFlag:
 TFixedFileInfoFlag;  be
gin    Result := '';    
for AFlag := Low(TFixedF
ileInfoFlag) to High(TFi
xedFileInfoFlag) do     
 if AFlag in FixedInfo.F
lags then        Result 
:= Result + FLAG_STRING[
AFlag] + ', ';      if L
ength(Result) > 0 then  
    Result := Copy(Resul
t, 1, Length(Result) - 2
);  end;    {$IFNDEF DFS
_VERSION_INFO_AS_CLASS} 
 {$IFDEF DFS_WIN32}    p
rocedure TdfsVersionInfo
Resource.BuildListView; 
     procedure Add_Item(
StrId: integer; const St
r: string);    var      
NewItem: TListItem;    b
egin      if (Str <> '')
 and (TPreDef(StrId) in 
FShowResource) then     
 begin        NewItem :=
 VersionListView.Items.A
dd;        NewItem.Capti
on := PREDEF_CAPTIONS[St
rId];        NewItem.Sub
Items.Add(Str)      end 
   end;      procedure A
dd_Column(const Str: str
ing);    var      NewCol
umn: TListColumn;    beg
in      NewColumn := Ver
sionListView.Columns.Add
;      NewColumn.Caption
 := Str;      NewColumn.
Width := -2; { nifty! } 
   end;    begin    if a
ssigned(VersionListView)
 then      with VersionL
istView do      begin   
     Columns.Clear;     
   Items.Clear;         
 { only the minimum para
meters in the listview a
re forced: }        View
Style := vsReport;      
  ReadOnly := true;     
   ColumnClick := FALSE;
        Add_Column(SHead
erResource);        Add_
Column(SHeaderValue);   
       Add_Item(IDX_PROD
UCTNAME, ProductName);  
      Add_Item(IDX_PRODU
CTVERSION, ProductVersio
n.AsString);        Add_
Item(IDX_COMPANYNAME, Co
mpanyName);        Add_I
tem(IDX_LEGALCOPYRIGHT, 
LegalCopyright);        
Add_Item(IDX_LEGALTRADEM
ARKS, LegalTrademarks); 
       Add_Item(IDX_FILE
DESCRIPTION, FileDescrip
tion);        Add_Item(I
DX_FILEVERSION, FileVers
ion.AsString);        Ad
d_Item(IDX_INTERNALNAME,
 InternalName);        A
dd_Item(IDX_ORIGINALFILE
NAME, OriginalFilename);
        Add_Item(IDX_BUI
LDFLAGS, BuildFlags);   
     Add_Item(IDX_COMMEN
TS, Comments);      end 
 end;    {$ELSE}    proc
edure TdfsVersionInfoRes
ource.BuildGrid;  const 
   FLAG_STRING: array [T
FixedFileInfoFlag] of st
ring = (SFlagDebug, SFla
gInfoInferred, SFlagPatc
hed, SFlagPreRelease, SF
lagPrivate, SFlagSpecial
);      procedure AddGri
dRow(var RowNum: integer
; StrId: integer; Str: s
tring);    var      i: i
nteger;    begin      if
 (Str <> '') and (TPreDe
f(StrId) in FShowResourc
e) then      begin      
  with VersionGrid do   
     begin          Cell
s[0, RowNum] := PREDEF_C
APTIONS[StrId];         
 Cells[1, RowNum] := Str
;          i := Canvas.T
extWidth(Str);          
if i > ColWidths[1] then
            ColWidths[1]
 := i + 4;          inc(
RowNum);        end;    
  end;    end;    var   
 i, FRow: integer;    be
gin    With VersionGrid 
do    begin      { Set D
efaults }      FixedCols
 := 0;      FixedRows :=
 0;      ColCount := 2; 
     RowCount := 10;    
  Canvas.Font.Assign(Fon
t);      DefaultRowHeigh
t := Canvas.TextHeight(P
REDEF_CAPTIONS[IDX_ORIGI
NALFILENAME]) + 2;      
ColWidths[0] := Canvas.T
extWidth(PREDEF_CAPTIONS
[IDX_LEGALTRADEMARKS]) +
 4;      ColWidths[1] :=
 ClientWidth - ColWidths
[0] - 1;      { Clear } 
     for i := 0 to (ColC
ount - 1) do        Cols
[i].Clear;        FRow :
= 0;      AddGridRow(FRo
w, IDX_PRODUCTNAME, Prod
uctName);      AddGridRo
w(FRow, IDX_PRODUCTVERSI
ON, ProductVersion.AsStr
ing);      AddGridRow(FR
ow, IDX_COMPANYNAME, Com
panyName);      AddGridR
ow(FRow, IDX_LEGALCOPYRI
GHT, LegalCopyright);   
   AddGridRow(FRow, IDX_
LEGALTRADEMARKS, LegalTr
ademarks);      AddGridR
ow(FRow, IDX_FILEDESCRIP
TION, FileDescription); 
     AddGridRow(FRow, ID
X_FILEVERSION, FileVersi
on.AsString);      AddGr
idRow(FRow, IDX_INTERNAL
NAME, InternalName);    
  AddGridRow(FRow, IDX_O
RIGINALFILENAME, Origina
lFilename);      AddGrid
Row(FRow, IDX_BUILDFLAGS
, BuildFlags);      AddG
ridRow(FRow, IDX_COMMENT
S, Comments);      RowCo
unt := FRow;    end;  en
d;  {$ENDIF}    function
 TdfsVersionInfoResource
.GetVersion: string;  be
gin    Result := DFS_COM
PONENT_VERSION;  end;   
 procedure TdfsVersionIn
foResource.SetVersion(co
nst Val: string);  begin
    { empty write method
, just needed to get it 
to show up in Object Ins
pector }  end;  {$ENDIF}
    end.  

HEXDUMP: [Full] [Preview]
Base64:
[Encode [+chunk [+chunk+quotes [Decode


:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 1.0 pre-release build #13 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.1872 ]--