從網上搜集整理,直接調用函數RunFuckCAD屏蔽Ctrl+Alt+Del,一般在程序創建時調用,在程序退出時調用StopFuckCAD ,取消屏蔽Ctrl+Alt+Del。
{-----------------------------------------------------------------------------
Unit Name: Fuck_CAD_Unit
Author: liubin
Date: 2010-11-04
Purpose: 屏蔽系統熱鍵ctrl+alt+del、 WIN 、ALT+TAB等
Memo:
History:
-----------------------------------------------------------------------------}
unit Fuck_CAD_Unit;
interface
uses Windows, TLHelp32,SysUtils,Messages;
type
{按鍵消息的結構,Delphi中也沒有,自己定義吧。這也就是我為什麼說用C寫
這樣的程序更好的原因之一。還必須注意的是這個結構在Windows NT 4 sp3以上系統中才能使用}
tagKBDLLHOOKSTRUCT = packed record
vkCode: DWORD;//虛擬鍵值
scanCode: DWORD;//掃描碼值(沒有用過,我也不懂^_^)
{一些擴展標志,這個值比較麻煩,MSDN上說得也不太明白,但是
根據這個程序,這個標志值的第六位數(二進制)為1時,Alt鍵按下為0}
flags: DWORD;
time: DWORD;//消息時間戳
dwExtraInfo: DWORD;//和消息相關的擴展信息
end;
KBDLLHOOKSTRUCT = tagKBDLLHOOKSTRUCT;
PKBDLLHOOKSTRUCT = ^KBDLLHOOKSTRUCT;
//這個是低級鍵盤鉤子的索引值,Delphi中沒有,必須自己定義
const
WH_KEYBOARD_LL = 13;
//定義一個常量好和上面那個結構中的flags比較而得出Alt鍵是否按下
LLKHF_ALTDOWN = $20; //屏蔽熱鍵用www.2cto.com
MyKernel='SnowmanLockScreenHook.Dll'; //釋放完得文件名,可以自己改
Winlogon='winlogon.exe';
MyKernelSize=9216;
MyKernelBuf:Array [0..9215] of Byte =
(
$4D,$5A,$50,$00,$02,$00,$00,$00,$04,$00,$0F,$00,$FF,$FF,$00,$00,
$B8,$00,$00,$00,$00,$00,$00,$00,$40,$00,$1A,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$00,$00,
$BA,$10,$00,$0E,$1F,$B4,$09,$CD,$21,$B8,$01,$4C,$CD,$21,$90,$90,
$54,$68,$69,$73,$20,$70,$72,$6F,$67,$72,$61,$6D,$20,$6D,$75,$73,
$74,$20,$62,$65,$20,$72,$75,$6E,$20,$75,$6E,$64,$65,$72,$20,$57,
$69,$6E,$33,$32,$0D,$0A,$24,$37,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$50,$45,$00,$00,$4C,$01,$03,$00,$19,$5E,$42,$2A,$00,$00,$00,$00,
$00,$00,$00,$00,$E0,$00,$8E,$A1,$0B,$01,$02,$19,$00,$20,$00,$00,
$00,$10,$00,$00,$00,$80,$00,$00,$70,$AB,$00,$00,$00,$90,$00,$00,
$00,$B0,$00,$00,$00,$00,$40,$00,$00,$10,$00,$00,$00,$02,$00,$00,
$04,$00,$00,$00,$00,$00,$00,$00,$04,$00,$00,$00,$00,$00,$00,$00,
$00,$C0,$00,$00,$00,$10,$00,$00,$00,$00,$00,$00,$02,$00,$01,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$10,$00,$00,$10,$00,$00,
$00,$00,$00,$00,$10,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$B0,$B0,$00,$00,$C8,$00,$00,$00,$00,$B0,$00,$00,$B0,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$78,$B1,$00,$00,$0C,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$55,$50,$58,$30,$00,$00,$00,$00,
$00,$80,$00,$00,$00,$10,$00,$00,$00,$00,$00,$00,$00,$04,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$00,$E0,
$55,$50,$58,$31,$00,$00,$00,$00,$00,$20,$00,$00,$00,$90,$00,$00,
$00,$1E,$00,$00,$00,$04,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$40,$00,$00,$E0,$2E,$72,$73,$72,$63,$00,$00,$00,
$00,$10,$00,$00,$00,$B0,$00,$00,$00,$02,$00,$00,$00,$22,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$40,$00,$00,$C0,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$31,$2E,$32,$34,$00,
$55,$50,$58,$21,$0C,$09,$02,$0A,$0A,$EF,$82,$AC,$83,$03,$D2,$AA,
$E7,$85,$00,$00,$66,$1B,$00,$00,$00,$36,$00,$00,$26,$00,$00,$B1,
$C8,$20,$63,$FF,$FF,$25,$00,$00,$50,$C8,$8B,$C0,$07,$C4,$C0,$20,
$83,$0C,$32,$BC,$B8,$B4,$83,$0C,$32,$C8,$D4,$B0,$AC,$A8,$0C,$32,
$C8,$20,$A4,$A0,$E4,$32,$C8,$20,$83,$E0,$DC,$9C,$BB,$B7,$BF,$0C,
$98,$53,$83,$C4,$BC,$BB,$0A,$0B,$00,$54,$E8,$04,$4C,$F6,$06,$7B,
$FB,$FF,$44,$24,$2C,$01,$74,$05,$0F,$B7,$5C,$24,$30,$8B,$C3,$1B,
$44,$5B,$C3,$63,$94,$19,$64,$90,$41,$90,$8C,$88,$64,$90,$41,$06,
$84,$80,$7C,$E5,$FF,$B6,$19,$78,$56,$BE,$6C,$45,$D0,$83,$3E,$00,
$75,$3A,$68,$44,$06,$DD,$F6,$DF,$CE,$6A,$00,$B5,$C8,$85,$C9,$75,
$05,$33,$C0,$5E,$64,$A1,$20,$CC,$FF,$FF,$FF,$F7,$89,$01,$89,$0D,
$07,$33,$D2,$8B,$C2,$03,$C0,$8D,$44,$C1,$04,$8B,$1E,$89,$18,$89,
$06,$42,$83,$FA,$64,$75,$EC,$8B,$DF,$BF,$BF,$FB,$06,$8B,$10,$89,
$16,$2B,$90,$89,$00,$89,$40,$04,$C3,$57,$8B,$F2,$8B,$D8,$4A,$E8,
$F6,$ED,$3F,$D8,$85,$C0,$48,$8B,$16,$89,$50,$08,$8B,$56,$04,$05,
$0C,$8B,$13,$89,$30,$BF,$7D,$6F,$DB,$58,$09,$42,$02,$03,$B0,$01,
$1B,$50,$50,$08,$89,$0A,$89,$51,$DF,$BE,$ED,$6D,$06,$15,$90,$1E,
$A3,$06,$C3,$47,$57,$55,$51,$8B,$DD,$BA,$F7,$FF,$F1,$89,$14,$24,
$8B,$E8,$8B,$5D,$00,$8B,$04,$24,$69,$2D,$89,$47,$8B,$3B,$F6,$AE,
$F0,$DF,$77,$53,$08,$03,$53,$0C,$3B,$C2,$75,$14,$12,$6D,$01,$70,
$8B,$43,$46,$EC,$B6,$FC,$DB,$06,$04,$0C,$01,$46,$04,$EB,$15,$03,
$3B,$0F,$75,$0D,$1B,$FB,$BD,$FD,$97,$16,$8B,$DF,$3B,$EB,$75,$70,
$D6,$8B,$C5,$14,$40,$84,$9E,$C2,$73,$6F,$65,$04,$33,$5A,$5D,$5F,
$87,$6F,$5A,$ED,$ED,$EE,$DB,$F8,$BA,$8B,$FB,$8B,$32,$4B,$3B,$F0,
$72,$36,$CE,$03,$4A,$35,$B5,$ED,$ED,$ED,$E8,$03,$6B,$67,$CD,$77,
$62,$11,$75,$1B,$8B,$B7,$01,$1B,$0E,$B6,$F0,$D6,$05,$29,$51,$83,
$7B,$0C,$3B,$48,$61,$EB,$3F,$6F,$5B,$B0,$DF,$2C,$8B,$7A,$04,$03,
$CF,$2E,$F9,$29,$1E,$EB,$2A,$8B,$FF,$AD,$6D,$BB,$0A,$41,$89,$0C,
$BB,$7B,$AD,$0F,$2B,$F9,$89,$7C,$24,$04,$2B,$F0,$C2,$C9,$DE,$C2,
$89,$73,$07,$D4,$38,$85,$EB,$0C,$0C,$DD,$D9,$F6,$DB,$EB,$57,$1B,
$3B,$FB,$75,$81,$0D,$59,$92,$90,$93,$8B,$FB,$F6,$7E,$FB,$DA,$8B,
$F0,$81,$FE,$28,$10,$00,$7D,$07,$BE,$06,$29,$81,$C6,$FF,$FF,$09,
$96,$BF,$B5,$76,$81,$E6,$03,$07,$49,$04,$6A,$01,$68,$00,$20,$56,
$86,$FF,$1B,$13,$BF,$9D,$F8,$89,$3B,$85,$FF,$74,$23,$8B,$D3,$B8,
$47,$EF,$87,$ED,$B0,$D4,$63,$13,$24,$80,$E3,$8B,$03,$50,$26,$BD,
$E1,$C3,$BA,$C0,$F8,$03,$63,$55,$8B,$D9,$B3,$E8,$C7,$43,$04,$07,
$EC,$1B,$FB,$60,$6A,$04,$4F,$68,$0B,$55,$52,$75,$1F,$DB,$6C,$72,
$64,$78,$04,$24,$4E,$83,$43,$B2,$04,$D8,$3B,$00,$76,$DB,$6F,$77,
$A3,$A1,$70,$EC,$89,$4C,$10,$E3,$C7,$E2,$08,$FF,$00,$ED,$86,$F6,
$0D,$65,$89,$54,$24,$0C,$8B,$EE,$03,$C5,$89,$14,$FE,$42,$C3,$EF,
$10,$8B,$1D,$4E,$EB,$51,$F2,$73,$93,$EE,$77,$46,$8B,$C6,$03,$6E,
$6B,$EF,$16,$7A,$3B,$19,$77,$3B,$3B,$74,$34,$86,$89,$05,$06,$73,
$ED,$61,$14,$0C,$76,$0E,$05,$74,$56,$AE,$E0,$6E,$3E,$85,$C0,$0A,
$C7,$05,$45,$61,$0E,$B7,$FD,$7D,$18,$10,$DF,$81,$FB,$58,$75,$A7,
$8B,$2F,$04,$75,$46,$FB,$B6,$76,$10,$83,$7C,$37,$BF,$19,$0E,$8B,
$82,$4A,$7B,$38,$D7,$B5,$79,$48,$2B,$96,$0D,$AE,$AB,$7F,$B0,$01,
$63,$14,$27,$F4,$B7,$8B,$D0,$8B,$EA,$81,$E5,$BD,$86,$6F,$DB,$00,
$F0,$B9,$03,$0C,$81,$C2,$FF,$0F,$1F,$E2,$0E,$C1,$EE,$9A,$CD,$C6,
$39,$44,$28,$05,$08,$2B,$C5,$45,$DF,$F8,$F6,$D8,$8B,$35,$CE,$3C,
$8B,$5E,$1D,$7E,$0C,$03,$FB,$90,$76,$02,$8B,$DD,$E1,$82,$DB,$B6,
$3B,$7B,$08,$B9,$8B,$05,$FF,$76,$1E,$57,$C3,$CE,$F7,$E5,$10,$2B,
$FB,$57,$53,$C0,$B8,$A5,$CE,$D6,$3D,$B6,$EB,$09,$36,$0E,$B9,$BC,
$91,$0C,$67,$E8,$38,$9D,$73,$2B,$B9,$F3,$A1,$81,$43,$90,$DB,$C8,
$E6,$34,$9D,$EB,$03,$4F,$87,$75,$1B,$25,$C8,$F7,$2B,$06,$41,$84,
$38,$B7,$BD,$FD,$24,$1C,$24,$73,$03,$8B,$04,$3B,$EF,$73,$8C,$FD,
$82,$19,$12,$26,$5B,$1C,$80,$40,$41,$02,$A9,$9D,$31,$99,$80,$C0,
$A5,$8D,$2A,$3B,$BA,$EF,$6E,$0C,$44,$F8,$BD,$1A,$E4,$81,$C7,$FF,
$3F,$86,$E7,$74,$E3,$25,$D7,$3A,$79,$BB,$EB,$33,$3B,$FB,$7F,$2C,
$7A,$D7,$CE,$D4,$20,$D7,$58,$52,$04,$20,$76,$74,$50,$8B,$46,$E9,
$90,$49,$46,$4C,$46,$3E,$35,$09,$F4,$B3,$6B,$BA,$DD,$75,$C9,$AA,
$C7,$2E,$02,$8C,$21,$8B,$CC,$75,$B9,$ED,$87,$BA,$88,$83,$3C,$24,
$2D,$A5,$10,$0B,$06,$4C,$98,$74,$DA,$11,$03,$68,$C8,$36,$0F,$04,
$56,$7A,$7A,$5B,$77,$FA,$3E,$92,$DF,$8D,$05,$DE,$02,$61,$53,$3B,
$54,$75,$F5,$04,$57,$6B,$33,$74,$77,$A2,$0F,$8E,$96,$DF,$8D,$D9,
$A8,$2B,$5B,$D2,$F1,$39,$5C,$AB,$55,$7F,$F0,$1C,$04,$8F,$61,$86,
$DD,$33,$1A,$0C,$8D,$C8,$85,$32,$43,$2C,$08,$DF,$75,$B1,$15,$8B,
$EE,$8B,$6C,$35,$66,$B7,$07,$AB,$E9,$0B,$06,$DF,$4D,$9F,$C7,$07,
$C8,$80,$46,$34,$0F,$85,$66,$FE,$36,$B6,$8E,$30,$4A,$EB,$66,$6B,
$1B,$F5,$D7,$15,$0E,$05,$A9,$48,$1C,$D7,$D7,$3C,$1E,$D8,$76,$86,
$48,$20,$83,$38,$53,$28,$1F,$40,$90,$49,$78,$11,$4E,$08,$51,$10,
$9C,$86,$11,$EC,$07,$49,$C6,$7F,$C8,$08,$3B,$36,$22,$8B,$F9,$C4,
$8D,$98,$1B,$E3,$EB,$BF,$AD,$8D,$35,$03,$70,$E6,$0A,$3B,$DE,$73,
$5B,$8B,$CF,$7B,$9A,$1D,$7B,$D6,$2B,$D3,$44,$04,$B4,$CB,$DF,$E4,
$B8,$B3,$C9,$BE,$1D,$8B,$5C,$0F,$85,$DB,$74,$1F,$B5,$C3,$B3,$B3,
$A6,$73,$4D,$38,$89,$C0,$07,$10,$08,$F5,$EE,$81,$93,$BD,$14,$F1,
$3B,$F8,$EB,$7A,$07,$8D,$BF,$6B,$DB,$7A,$8C,$80,$EC,$9B,$55,$71,
$08,$2E,$64,$FF,$32,$64,$DB,$ED,$8F,$DD,$89,$22,$0A,$45,$B4,$7B,
$C8,$80,$3D,$04,$40,$35,$3E,$0A,$92,$4D,$D6,$64,$12,$D0,$60,$38,
$4E,$4D,$06,$8F,$FC,$09,$46,$10,$68,$F8,$0F,$CB,$A3,$76,$6F,$6F,
$C1,$15,$07,$3D,$05,$41,$2F,$B8,$03,$13,$8B,$15,$03,$D7,$2F,$7D,
$33,$C9,$BF,$82,$F4,$40,$3D,$01,$F1,$C4,$5F,$03,$07,$5F,$46,$F4,
$BD,$C2,$30,$00,$7D,$DB,$DB,$8F,$C6,$EA,$AC,$01,$9F,$5A,$59,$59,
$8B,$10,$96,$35,$FB,$BE,$E1,$95,$86,$D8,$C3,$DF,$19,$84,$EB,$E5,
$A0,$2D,$5D,$C3,$CC,$5D,$68,$EF,$53,$25,$0B,$CB,$84,$CC,$20,$D1,
$67,$01,$6C,$F2,$09,$12,$C7,$67,$00,$C5,$CA,$08,$BC,$A1,$90,$1D,
$B0,$B1,$E0,$08,$D6,$60,$F3,$12,$C6,$87,$C2,$60,$35,$26,$3C,$B2,
$B4,$E6,$02,$B8,$14,$89,$45,$B7,$B4,$74,$17,$1D,$6C,$F6,$9A,$31,
$15,$0B,$5D,$16,$75,$E9,$64,$01,$E4,$80,$D9,$09,$19,$E3,$7C,$78,
$3B,$C8,$E0,$DB,$5B,$DF,$53,$3B,$05,$1C,$75,$09,$D7,$9F,$78,$4F,
$82,$15,$0A,$B9,$48,$08,$81,$F9,$AC,$0D,$B6,$68,$E2,$7F,$38,$89,
$17,$39,$79,$05,$B2,$3F,$10,$FB,$C1,$03,$C1,$F9,$02,$D4,$CC,$88,
$F4,$EB,$24,$16,$6E,$F1,$D6,$DE,$D9,$17,$15,$8B,$F4,$8B,$2E,$02,
$89,$84,$D7,$CC,$D4,$40,$AD,$08,$47,$9C,$2D,$F1,$F2,$C6,$EC,$10,
$8B,$4A,$C1,$72,$07,$3A,$0C,$B5,$FB,$5E,$C2,$06,$F3,$12,$81,$FA,
$17,$75,$92,$0F,$67,$7F,$C7,$0B,$B3,$84,$03,$8D,$C3,$8B,$CA,$83,
$E9,$04,$8D,$1C,$36,$6F,$7F,$8B,$01,$8B,$10,$7C,$0F,$C7,$03,$07,
$26,$80,$8B,$D1,$0B,$80,$40,$F7,$F6,$D6,$4F,$13,$04,$7C,$0C,$20,
$81,$C9,$02,$15,$89,$45,$A1,$C3,$B6,$D0,$0B,$12,$FF,$71,$67,$43,
$B7,$B1,$BB,$F4,$EA,$04,$54,$E2,$FC,$E3,$7F,$0A,$01,$23,$D3,$DF,
$5C,$DF,$A0,$5C,$F0,$3B,$36,$0C,$7C,$0E,$83,$CA,$02,$2A,$BF,$64,
$EC,$53,$C0,$83,$09,$DC,$49,$0A,$03,$C2,$83,$20,$9C,$2E,$98,$83,
$FE,$07,$47,$18,$E1,$9E,$41,$E0,$2B,$08,$05,$74,$29,$04,$DA,$99,
$FE,$F6,$95,$53,$63,$2B,$56,$C8,$33,$11,$F7,$C2,$FE,$E1,$BD,$85,
$36,$87,$1F,$05,$F6,$01,$D5,$20,$45,$E6,$B0,$6F,$B0,$A6,$72,$22,
$C6,$3B,$70,$08,$1D,$06,$90,$04,$4A,$7F,$7B,$18,$03,$DE,$54,$63,
$FF,$7E,$2F,$2D,$E1,$33,$9F,$03,$A9,$00,$66,$0B,$25,$59,$03,$F8,
$03,$D8,$AF,$02,$25,$6E,$11,$A8,$02,$67,$FB,$63,$05,$FE,$16,$70,
$31,$4E,$08,$15,$83,$23,$FE,$3B,$AD,$07,$02,$06,$AF,$08,$C6,$02,
$DB,$28,$B5,$B3,$00,$25,$7C,$4A,$B8,$A6,$82,$A4,$DF,$5C,$AD,$D6,
$58,$4A,$E7,$87,$8D,$0C,$37,$2B,$6F,$B0,$DD,$BA,$D1,$FE,$7F,$D4,
$F8,$2B,$3D,$C6,$B4,$83,$F8,$0C,$96,$21,$57,$D3,$7D,$14,$DD,$01,
$04,$6E,$73,$D0,$8D,$5D,$60,$6F,$EB,$11,$13,$D7,$FE,$8D,$DF,$BA,
$1D,$2B,$BC,$12,$8B,$6C,$10,$85,$ED,$DA,$8B,$D5,$2B,$D6,$10,$5A,
$72,$67,$62,$AC,$55,$FC,$05,$A6,$57,$23,$B7,$FD,$73,$0A,$8D,$14,
$5E,$D0,$19,$D7,$09,$81,$6B,$77,$56,$01,$97,$F8,$92,$01,$8A,$C2,
$94,$70,$B0,$EC,$CA,$E7,$47,$A0,$C6,$C6,$BB,$5A,$61,$50,$03,$C6,
$83,$E8,$2F,$70,$65,$96,$8E,$DB,$C8,$FE,$37,$88,$85,$D2,$63,$C2,
$FA,$C7,$3A,$6E,$4D,$64,$90,$F4,$D3,$10,$0C,$89,$5C,$B6,$8E,$97,
$A5,$90,$C7,$5B,$1B,$EB,$3A,$FA,$43,$08,$13,$97,$6E,$A3,$8E,$A9,
$5A,$0E,$2C,$3E,$3C,$7C,$0D,$E3,$6C,$0F,$06,$50,$0A,$D0,$84,$32,
$17,$7C,$15,$6C,$60,$6F,$1D,$05,$2D,$87,$58,$98,$5D,$88,$36,$C5,
$7E,$40,$08,$08,$0C,$DC,$E2,$6D,$4E,$9A,$07,$EB,$2B,$3B,$12,$C8,
$02,$61,$8C,$35,$62,$B1,$5B,$8B,$08,$30,$98,$D4,$EC,$A4,$C6,$08,
$06,$13,$83,$0D,$16,$1A,$6B,$F0,$80,$8D,$B6,$A5,$B5,$39,$D2,$6C,
$60,$FC,$4C,$0C,$08,$08,$46,$10,$F0,$63,$54,$0E,$08,$0B,$52,$8B,
$07,$3B,$D8,$AE,$54,$F8,$AF,$30,$A8,$28,$29,$07,$01,$47,$8F,$0A,
$04,$5F,$61,$A1,$C5,$F3,$03,$E9,$49,$C6,$16,$18,$98,$71,$A1,$A3,
$61,$16,$95,$11,$23,$04,$BA,$36,$E6,$1E,$E1,$70,$77,$83,$6F,$04,
$19,$81,$8B,$1E,$10,$B6,$16,$B1,$82,$F9,$7E,$10,$5F,$36,$D1,$9E,
$D1,$E4,$D4,$8D,$F0,$4A,$05,$34,$C1,$E8,$BB,$71,$4D,$8B,$C4,$94,
$54,$8C,$44,$0C,$4A,$94,$02,$4B,$23,$F2,$35,$4B,$9C,$D5,$D8,$69,
$8D,$C3,$30,$C4,$14,$4A,$B3,$14,$5F,$99,$8E,$61,$57,$B8,$34,$A1,
$C0,$F8,$02,$39,$95,$7F,$16,$24,$41,$E0,$65,$C3,$A9,$54,$82,$D2,
$75,$08,$75,$7B,$38,$46,$A6,$EA,$C0,$7B,$F0,$BF,$81,$BD,$A7,$96,
$30,$31,$D6,$F8,$F8,$8E,$89,$84,$E1,$71,$A4,$3E,$9A,$1F,$87,$7E,
$7B,$0A,$D6,$DC,$0A,$6D,$5D,$17,$7F,$8D,$17,$45,$13,$1F,$74,$8E,
$31,$18,$2F,$AD,$1F,$EB,$63,$15,$0D,$D4,$0D,$40,$55,$9A,$ED,$7D,
$75,$4E,$0C,$99,$E0,$07,$63,$BB,$DD,$DE,$BF,$0E,$5B,$3B,$75,$23,
$A4,$29,$04,$83,$7D,$17,$7D,$8E,$38,$C2,$0E,$5A,$08,$7A,$45,$00,
$B2,$01,$35,$7A,$D6,$90,$46,$27,$D6,$F0,$21,$83,$EE,$1A,$A7,$F7,
$D9,$14,$35,$EB,$4C,$F4,$55,$C6,$7A,$97,$A9,$D4,$AF,$A2,$10,$53,
$D3,$03,$D6,$92,$B1,$15,$0A,$C4,$64,$A2,$1C,$8B,$75,$35,$D7,$A3,
$A3,$E4,$3C,$07,$AC,$18,$06,$86,$60,$30,$85,$4D,$5D,$EB,$54,$33,
$30,$83,$48,$CD,$2E,$52,$B0,$B7,$E9,$C6,$B2,$07,$74,$74,$E6,$FB,
$F8,$D5,$7E,$0A,$A0,$F9,$41,$83,$DD,$FC,$BB,$0F,$E3,$A9,$45,$0F,
$E0,$12,$07,$90,$65,$31,$21,$83,$C3,$45,$D0,$DC,$DB,$AD,$65,$83,
$FB,$D9,$05,$BB,$0C,$10,$42,$B0,$84,$18,$FD,$13,$0F,$8F,$93,$EC,
$8B,$5F,$53,$ED,$81,$84,$74,$79,$B7,$32,$C3,$AE,$42,$08,$4C,$D8,
$0B,$57,$D0,$75,$1A,$29,$0D,$BC,$19,$10,$78,$F9,$FF,$89,$7C,$81,
$26,$8B,$CB,$BE,$3D,$51,$2B,$BC,$1C,$44,$8F,$0A,$89,$4D,$8B,$02,
$1B,$76,$53,$EE,$4D,$05,$80,$8B,$52,$08,$F6,$BB,$83,$2C,$30,$98,
$F9,$EB,$5C,$1D,$1A,$29,$F6,$A7,$B1,$40,$CF,$3B,$6F,$04,$7F,$4A,
$29,$07,$5B,$42,$90,$62,$0F,$0D,$03,$0E,$31,$99,$E1,$50,$36,$72,
$1D,$D3,$54,$EB,$32,$A1,$72,$40,$C2,$1D,$0D,$6C,$1F,$B1,$0F,$E7,
$B1,$19,$DA,$40,$8B,$2A,$89,$2A,$5D,$A6,$17,$A1,$E1,$AF,$8F,$51,
$8D,$7C,$DF,$93,$0E,$72,$08,$94,$1F,$75,$16,$F7,$C9,$86,$D7,$9A,
$08,$C7,$38,$06,$98,$11,$89,$1B,$4A,$29,$E4,$11,$86,$AF,$F8,$8B,
$1E,$0F,$76,$B6,$C0,$F6,$C3,$9D,$0F,$42,$09,$3B,$59,$FF,$0D,$6B,
$8A,$40,$7B,$C8,$B8,$C3,$BC,$29,$1E,$C4,$EB,$06,$ED,$A0,$29,$0E,
$45,$8B,$F0,$0E,$B4,$7E,$B0,$59,$08,$86,$08,$F7,$E7,$EB,$DB,$C0,
$90,$C1,$3E,$0A,$9A,$C2,$3B,$22,$8C,$06,$4C,$59,$17,$03,$2B,$AD,
$50,$7A,$98,$41,$76,$E1,$8B,$4D,$27,$44,$D8,$E8,$62,$DF,$2C,$70,
$55,$04,$C4,$DA,$C0,$AC,$81,$DB,$12,$7E,$05,$8C,$17,$78,$13,$62,
$6F,$A4,$DB,$0E,$F6,$C2,$B0,$1C,$4C,$E2,$02,$74,$1C,$21,$FD,$FB,
$7A,$81,$DB,$E7,$0B,$37,$83,$45,$EB,$29,$47,$83,$78,$04,$09,$BB,
$7D,$E4,$07,$7C,$06,$0A,$08,$0C,$23,$74,$3A,$A9,$B9,$13,$C1,$8D,
$39,$D3,$90,$25,$2F,$84,$D7,$2C,$A1,$1D,$A5,$11,$8D,$B1,$2B,$49,
$5D,$5D,$CF,$89,$83,$C6,$85,$3F,$CD,$B2,$EC,$E6,$FE,$BE,$8B,$E8,
$83,$ED,$63,$85,$0E,$9E,$A9,$7D,$D7,$A9,$71,$C7,$C7,$B6,$DA,$E6,
$D2,$3B,$FE,$F8,$B0,$01,$13,$67,$0A,$48,$83,$3C,$1C,$2D,$75,$CE,
$D6,$E7,$7B,$70,$1C,$4C,$35,$0A,$38,$0A,$71,$5D,$14,$18,$30,$3A,
$7D,$05,$87,$0F,$94,$23,$DF,$B0,$06,$23,$15,$1E,$29,$8B,$9D,$0B,
$DE,$BE,$F7,$4E,$4E,$5B,$F6,$03,$02,$53,$DD,$01,$5E,$30,$10,$6B,
$4E,$DE,$0D,$A8,$1B,$8B,$DD,$68,$3B,$68,$26,$A8,$2D,$10,$89,$03,
$1E,$0D,$B3,$D9,$30,$07,$34,$3B,$B3,$C7,$C6,$60,$B0,$53,$14,$83,
$67,$40,$3B,$EC,$CD,$4E,$ED,$10,$7C,$53,$EC,$67,$09,$7A,$3D,$8B,
$1D,$D2,$18,$18,$27,$13,$03,$35,$42,$8C,$2F,$20,$23,$4F,$01,$36,
$27,$08,$D6,$FA,$E3,$00,$25,$26,$0B,$F0,$89,$D9,$F8,$50,$C3,$D7,
$45,$D4,$94,$DF,$B0,$4D,$82,$C2,$36,$B5,$19,$C0,$A9,$0E,$02,$3B,
$C4,$7D,$0E,$70,$AF,$45,$03,$AD,$9D,$DF,$71,$3E,$F7,$26,$94,$1E,
$A8,$86,$C3,$D0,$0E,$EA,$D7,$2B,$19,$4A,$D1,$E2,$E5,$3A,$03,$61,
$B1,$8B,$D7,$14,$E1,$53,$EB,$2E,$80,$E4,$80,$8E,$C8,$21,$61,$D8,
$DA,$C1,$EE,$75,$9D,$84,$0C,$C3,$09,$76,$84,$12,$57,$43,$80,$14,
$D6,$17,$19,$A6,$AB,$87,$E4,$60,$48,$7F,$65,$7A,$13,$52,$27,$81,
$21,$07,$14,$28,$4D,$CF,$44,$0A,$79,$14,$25,$DA,$83,$17,$C7,$F8,
$CD,$11,$94,$05,$89,$5D,$FC,$EB,$36,$77,$0E,$60,$4B,$18,$52,$23,
$53,$C3,$63,$67,$6D,$80,$85,$68,$37,$51,$7D,$02,$1B,$23,$11,$63,
$1B,$DB,$5D,$45,$CB,$91,$24,$14,$E8,$3B,$0F,$9A,$7D,$9E,$89,$01,
$C8,$03,$14,$2C,$53,$C8,$0D,$BE,$C0,$3C,$7E,$15,$FF,$15,$83,$30,
$24,$6B,$97,$F8,$DA,$0B,$DF,$55,$CC,$17,$33,$DB,$59,$E5,$B2,$3C,
$27,$5D,$1F,$74,$28,$74,$02,$1E,$FD,$78,$13,$89,$1A,$33,$1F,$58,
$57,$F7,$CC,$D7,$1E,$0A,$E3,$A9,$7B,$08,$D9,$3C,$5D,$BA,$D8,$B6,
$0C,$84,$5A,$0D,$2C,$23,$98,$04,$AF,$7B,$C3,$3F,$66,$0F,$80,$FB,
$18,$77,$24,$8A,$C3,$8A,$98,$41,$30,$09,$18,$1E,$E1,$6B,$2D,$5A,
$74,$5B,$83,$E0,$7F,$C4,$22,$63,$AD,$3D,$3F,$80,$57,$54,$3A,$89,
$06,$FE,$BF,$D0,$1D,$72,$89,$C6,$89,$D7,$89,$C8,$39,$F7,$77,$13,
$74,$2F,$DC,$F7,$6F,$ED,$FF,$78,$2A,$F3,$A5,$89,$C1,$83,$E1,$03,
$F3,$A4,$D8,$D5,$74,$31,$FC,$8D,$7C,$39,$FC,$18,$B9,$AD,$14,$EC,
$11,$FD,$19,$7E,$02,$C7,$1F,$EF,$E0,$02,$CF,$F9,$A7,$32,$F6,$66,
$FA,$66,$3D,$B1,$D7,$A5,$D6,$FE,$DB,$72,$2F,$05,$B3,$D7,$77,$29,
$66,$25,$B2,$D7,$09,$03,$82,$3E,$67,$B7,$76,$B3,$53,$1C,$8F,$85,
$F6,$0A,$24,$74,$1B,$FD,$AA,$C4,$11,$93,$14,$D8,$38,$C9,$40,$38,
$12,$B4,$98,$BB,$DC,$B8,$67,$8D,$13,$1A,$BB,$DF,$FE,$86,$6E,$98,
$50,$30,$6C,$31,$C0,$31,$DB,$BF,$CC,$00,$0C,$8A,$1E,$46,$CB,$DB,
$DB,$6F,$E8,$20,$74,$F8,$B5,$00,$06,$2D,$74,$62,$04,$2B,$74,$5F,
$24,$6B,$2C,$2F,$3F,$78,$74,$5A,$58,$74,$55,$30,$36,$27,$94,$2A,
$3C,$DD,$11,$48,$43,$2B,$5B,$7F,$DB,$E8,$1A,$29,$05,$2D,$C0,$30,
$11,$09,$77,$25,$39,$F8,$77,$35,$6E,$70,$FF,$21,$8D,$04,$80,$01,
$C0,$01,$D8,$29,$4B,$E6,$FE,$CD,$AE,$EE,$FE,$FF,$BF,$69,$7D,$54,
$EB,$09,$46,$EB,$06,$F7,$D8,$7E,$4B,$78,$49,$5B,$29,$DE,$EB,$47,
$FE,$C5,$20,$EB,$9C,$BF,$DB,$DB,$B1,$A6,$AF,$0F,$2A,$74,$DF,$41,
$61,$72,$03,$49,$20,$16,$5E,$B6,$67,$4C,$76,$0B,$07,$11,$05,$77,
$D0,$58,$0A,$B7,$CB,$61,$EF,$57,$C9,$C1,$E0,$04,$55,$D5,$75,$02,
$4C,$59,$31,$F2,$40,$41,$E8,$F6,$89,$32,$73,$73,$D0,$B7,$F8,$01,
$85,$EE,$99,$16,$54,$48,$07,$75,$42,$29,$5A,$EC,$1C,$6A,$01,$0B,
$1C,$55,$EC,$DC,$22,$B4,$83,$13,$74,$07,$31,$3E,$B3,$01,$DA,$F4,
$58,$7C,$16,$90,$2B,$F4,$0F,$B7,$40,$30,$0C,$AB,$AD,$6D,$5C,$09,
$F8,$8D,$73,$50,$34,$42,$68,$6E,$CA,$72,$D3,$79,$17,$28,$68,$29,
$00,$64,$85,$4D,$6C,$B0,$2C,$9F,$1F,$17,$01,$30,$20,$A8,$F4,$27,
$CB,$76,$3B,$E5,$2F,$F4,$50,$33,$F8,$00,$44,$2D,$E3,$03,$1C,$B4,
$0B,$6C,$E5,$F7,$60,$1C,$B2,$15,$08,$5C,$DB,$EF,$66,$A1,$70,$F7,
$FF,$C2,$85,$CB,$C0,$FF,$DF,$55,$F8,$66,$83,$E2,$3F,$66,$0B,$C2,
$66,$A3,$14,$FF,$FF,$46,$E3,$8B,$E5,$F1,$EF,$4F,$46,$54,$57,$41,
$52,$45,$5C,$42,$6F,$72,$6C,$61,$6E,$64,$FB,$7F,$EB,$FF,$5C,$44,
$65,$6C,$70,$68,$69,$5C,$52,$54,$4C,$9A,$50,$55,$4D,$61,$73,$6B,
$56,$61,$6C,$75,$65,$53,$DB,$60,$78,$BF,$00,$DB,$E3,$9B,$D9,$2D,
$39,$DB,$D5,$07,$B2,$DA,$77,$EF,$9F,$7E,$08,$FF,$51,$FC,$C3,$5A,
$30,$10,$01,$76,$11,$9C,$9E,$DF,$FA,$ED,$17,$66,$6D,$8C,$0E,$E5,
$10,$F7,$1B,$0E,$17,$50,$17,$92,$74,$B7,$50,$52,$6A,$02,$1D,$E4,
$10,$08,$58,$06,$A4,$D9,$0E,$53,$17,$01,$E0,$04,$BC,$DD,$87,$45,
$57,$07,$50,$53,$CD,$17,$A8,$13,$B7,$7F,$29,$5A,$C1,$D8,$41,$01,
$80,$39,$E9,$74,$0C,$04,$EB,$75,$DC,$5D,$FC,$02,$E8,$BE,$C0,$41,
$41,$EB,$D5,$05,$01,$C1,$97,$CE,$76,$B7,$C3,$33,$1D,$6E,$51,$E8,
$34,$D4,$51,$5D,$E1,$7E,$B3,$0B,$49,$2C,$5A,$58,$97,$27,$12,$52,
$C3,$DA,$49,$CE,$1F,$E2,$5A,$C3,$3A,$1D,$03,$EE,$B2,$B3,$10,$B2,
$E3,$1C,$58,$63,$5E,$DD,$C1,$0D,$F0,$F7,$40,$04,$D9,$0F,$85,$13,
$66,$81,$38,$DE,$2C,$2D,$D0,$C0,$21,$4A,$78,$48,$AE,$6E,$5E,$E8,
$DB,$4E,$7D,$EE,$8B,$2F,$0C,$A0,$0F,$84,$F1,$7A,$B0,$99,$EA,$27,
$FF,$4A,$09,$E7,$C0,$BE,$7F,$03,$06,$14,$B8,$81,$39,$CE,$FA,$EF,
$0E,$74,$37,$2C,$84,$21,$0E,$C2,$C7,$6F,$14,$00,$76,$29,$2E,$77,
$20,$A0,$6C,$37,$4A,$AF,$50,$C1,$4E,$60,$00,$58,$3B,$AB,$C9,$1A,
$DB,$DB,$89,$C2,$7A,$64,$0C,$B9,$0A,$A2,$71,$C8,$67,$3A,$01,$76,
$1E,$15,$27,$BF,$1B,$B6,$15,$A9,$FD,$50,$3C,$EF,$74,$70,$83,$48,
$04,$02,$67,$78,$13,$A5,$53,$84,$7D,$64,$8B,$1B,$53,$1C,$87,$C5,
$D8,$1D,$5B,$28,$DA,$50,$35,$19,$34,$52,$DC,$14,$7E,$DF,$63,$6D,
$B5,$28,$58,$FF,$B0,$00,$6D,$A0,$05,$8B,$6F,$46,$5D,$AB,$37,$54,
$5F,$04,$C7,$7E,$28,$60,$A1,$59,$31,$36,$DE,$05,$AF,$4C,$E3,$5E,
$C0,$70,$6C,$8B,$D8,$88,$26,$6A,$90,$07,$41,$08,$A0,$09,$06,$FA,
$AB,$5C,$B8,$A1,$2B,$DB,$56,$83,$70,$84,$2F,$74,$07,$4A,$4C,$42,
$9F,$E1,$58,$3D,$B8,$32,$6A,$08,$B9,$53,$F4,$6B,$07,$EC,$C1,$FF,
$D1,$46,$37,$30,$C7,$33,$65,$99,$A3,$73,$72,$1A,$0B,$90,$AB,$6D,
$7D,$DB,$13,$FE,$42,$0C,$83,$60,$04,$FD,$77,$74,$0D,$0E,$08,$42,
$5C,$A1,$35,$A2,$F5,$04,$68,$6B,$8A,$E4,$E7,$81,$39,$96,$7D,$8B,
$12,$89,$11,$52,$3B,$48,$C3,$54,$FE,$2C,$39,$5A,$8B,$64,$24,$2C,
$47,$92,$53,$18,$FE,$6E,$5D,$11,$18,$1C,$FF,$E2,$C3,$31,$D2,$A8,
$C0,$A0,$C5,$B6,$B9,$A3,$19,$02,$A1,$C2,$A9,$85,$78,$2B,$CD,$E7,
$4B,$17,$02,$3D,$92,$C9,$77,$33,$FF,$FD,$7F,$2C,$74,$5C,$3D,$8E,
$08,$15,$74,$57,$2D,$05,$0F,$2D,$87,$EA,$FF,$65,$83,$FF,$3D,$48,
$74,$4E,$EB,$60,$05,$71,$AA,$3F,$02,$72,$36,$74,$30,$EB,$52,$3D,
$D8,$B6,$E7,$BF,$96,$29,$11,$74,$3D,$2D,$93,$2E,$22,$13,$02,$24,
$4B,$BC,$7D,$97,$96,$2D,$FD,$0E,$2F,$27,$3D,$74,$26,$C4,$B0,$DF,
$FD,$97,$FA,$C8,$EB,$2A,$B0,$C9,$B0,$B0,$CD,$EB,$22,$B0,$CF,$EB,
$1E,$0F,$1A,$B0,$D7,$EB,$16,$F5,$2F,$B0,$C0,$B0,$CE,$6D,$B0,$71,
$0E,$B0,$DA,$EB,$0A,$B0,$D9,$7E,$5B,$05,$B8,$E7,$B0,$CA,$AE,$91,
$FF,$C8,$52,$0C,$09,$A3,$70,$0C,$2C,$5D,$C2,$33,$9F,$5C,$A1,$61,
$B8,$89,$05,$1A,$14,$19,$C7,$8C,$77,$32,$17,$74,$71,$28,$AD,$0D,
$E8,$38,$E4,$49,$08,$1B,$42,$5C,$A4,$3B,$70,$19,$DF,$C6,$D8,$53,
$0C,$43,$18,$74,$1D,$D2,$FA,$6B,$EE,$8C,$5B,$FF,$89,$D8,$D4,$EE,
$0B,$21,$7D,$06,$53,$7B,$F5,$18,$38,$6F,$78,$A3,$2B,$1C,$83,$BF,
$1F,$E4,$B8,$D9,$9A,$51,$14,$89,$BA,$1F,$64,$82,$AB,$70,$28,$61,
$87,$57,$CD,$A1,$FA,$09,$05,$C3,$0A,$52,$6E,$E4,$FC,$89,$68,$08,
$D7,$F5,$CE,$1E,$0C,$24,$1F,$A1,$0A,$62,$1C,$25,$E2,$05,$B7,$70,
$39,$C8,$75,$6B,$00,$2B,$79,$09,$83,$F9,$A7,$D8,$88,$5F,$EA,$08,
$39,$01,$75,$F5,$6A,$01,$A7,$D1,$BD,$03,$1A,$43,$73,$20,$8B,$47,
$08,$2E,$48,$93,$67,$71,$A9,$A9,$5B,$70,$04,$60,$1C,$2A,$CD,$B6,
$FB,$12,$A4,$7E,$12,$4B,$89,$18,$44,$DE,$99,$C0,$D0,$DB,$3D,$04,
$6E,$11,$7F,$EE,$35,$EB,$14,$98,$18,$58,$BD,$4D,$70,$6A,$B7,$1B,
$E0,$04,$19,$BC,$3A,$60,$5D,$71,$F3,$BD,$03,$B3,$5F,$8B,$28,$4B,
$8B,$30,$C2,$27,$87,$35,$E2,$78,$5D,$8A,$3B,$F3,$7E,$1C,$E4,$67,
$5F,$F0,$04,$DF,$43,$7C,$2C,$5F,$3B,$F3,$7F,$EC,$D4,$9F,$ED,$00,
$51,$BC,$BE,$8D,$7D,$C4,$B9,$C7,$3E,$5A,$E2,$6B,$9A,$8F,$1D,$40,
$05,$3C,$89,$A7,$78,$C7,$9A,$2D,$34,$57,$38,$A3,$83,$AA,$0E,$4A,
$FD,$FD,$30,$8D,$4D,$C4,$89,$0D,$35,$31,$C9,$83,$A8,$60,$1D,$DC,
$AF,$54,$72,$0F,$2C,$B8,$41,$43,$0D,$BE,$E7,$6B,$A4,$09,$10,$14,
$76,$98,$13,$02,$9F,$E9,$EE,$0C,$40,$A2,$21,$48,$48,$59,$A5,$44,
$44,$BB,$70,$0D,$8F,$FF,$3C,$03,$7D,$03,$FF,$14,$81,$51,$E1,$AF,
$08,$24,$38,$9B,$5B,$D8,$D3,$10,$B5,$59,$08,$1B,$7C,$AA,$2B,$B6,
$B1,$B5,$1C,$61,$0D,$DD,$40,$69,$A3,$FB,$58,$48,$D9,$45,$0C,$1F,
$48,$55,$21,$53,$3F,$17,$8E,$9D,$5C,$1C,$40,$6E,$3F,$C7,$30,$54,
$AB,$0D,$78,$A8,$B1,$E2,$30,$AB,$BF,$C8,$C9,$F6,$2F,$FE,$99,$F7,
$FF,$80,$C2,$C8,$C1,$88,$14,$06,$13,$BB,$07,$37,$B4,$C5,$FB,$6B,
$49,$57,$DB,$B1,$1C,$99,$74,$4B,$2C,$C5,$04,$33,$E2,$98,$92,$0A,
$74,$13,$0B,$DD,$2E,$5D,$8A,$D9,$29,$1E,$C1,$D6,$49,$06,$E2,$DD,
$98,$51,$E6,$53,$31,$87,$05,$53,$FB,$D6,$13,$5E,$85,$19,$C0,$40,
$EA,$5F,$18,$93,$14,$FF,$77,$1C,$02,$A4,$2D,$08,$5B,$0B,$37,$38,
$2C,$C9,$9B,$03,$5C,$46,$E8,$51,$E7,$34,$57,$66,$1A,$78,$0D,$17,
$25,$DE,$C0,$EC,$09,$A3,$65,$28,$D1,$FF,$EA,$19,$7B,$DE,$FF,$1E,
$A9,$F1,$42,$20,$ED,$0C,$6A,$1E,$68,$BA,$6A,$F5,$E8,$CA,$73,$D8,
$48,$8D,$E1,$C7,$1B,$1C,$1A,$02,$CE,$60,$92,$66,$1E,$80,$AF,$5A,
$EC,$18,$EF,$EC,$6B,$8E,$D9,$25,$39,$4C,$3E,$00,$1D,$35,$94,$A3,
$96,$2C,$00,$F9,$5A,$0D,$D1,$BD,$EF,$CB,$ED,$E0,$BB,$B2,$BE,$C1,
$BC,$40,$2D,$D8,$DE,$6E,$70,$7B,$28,$3A,$16,$83,$3F,$9F,$11,$FE,
$76,$B7,$5A,$A0,$D0,$56,$17,$F8,$FF,$D5,$10,$75,$EF,$FA,$76,$AE,
$F0,$A5,$10,$19,$4B,$1D,$68,$04,$F4,$C0,$52,$CE,$BD,$21,$13,$35,
$FB,$0A,$F1,$22,$53,$0D,$DF,$05,$46,$C8,$23,$D4,$02,$AE,$4D,$14,
$F5,$05,$4E,$43,$15,$4A,$BB,$8E,$10,$79,$1A,$16,$20,$7C,$8A,$85,
$63,$5D,$A1,$B6,$EB,$3B,$E6,$90,$13,$06,$B6,$34,$EA,$19,$FA,$7C,
$30,$B8,$75,$03,$BF,$84,$11,$2E,$D5,$57,$58,$60,$C4,$E8,$75,$17,
$E8,$59,$21,$52,$6B,$D2,$2C,$F8,$5D,$34,$10,$DE,$68,$A1,$E6,$03,
$17,$F0,$8B,$FB,$61,$F7,$22,$B5,$63,$5E,$C7,$1E,$C9,$E9,$93,$F0,
$1B,$3D,$1A,$85,$1B,$C3,$AB,$EF,$E9,$BB,$05,$05,$22,$73,$8F,$1C,
$C7,$2E,$41,$6B,$7F,$93,$F4,$4A,$F8,$49,$7C,$10,$F0,$FF,$06,$B8,
$4D,$99,$F8,$BA,$90,$42,$F8,$9C,$54,$77,$5E,$24,$46,$FD,$DF,$ED,
$50,$83,$C0,$CC,$E0,$FE,$65,$14,$34,$5A,$66,$C7,$44,$02,$85,$45,
$60,$EB,$B7,$13,$08,$5A,$89,$50,$FC,$0E,$F8,$AE,$F9,$A5,$1E,$75,
$29,$90,$3F,$50,$D6,$89,$CF,$89,$F8,$75,$83,$8E,$FE,$94,$89,$F9,
$89,$C7,$79,$09,$FB,$89,$F0,$67,$FC,$B5,$22,$EA,$82,$17,$70,$89,
$3B,$2B,$57,$A1,$5B,$A9,$12,$30,$06,$38,$F2,$AE,$B4,$EA,$F6,$6E,
$B1,$D1,$58,$0E,$58,$5F,$97,$48,$B0,$11,$75,$95,$84,$78,$37,$CC,
$AF,$89,$A1,$35,$50,$32,$0D,$87,$20,$43,$08,$39,$18,$FA,$E4,$09,
$72,$20,$4F,$8B,$5D,$F8,$47,$A7,$C9,$24,$2D,$28,$04,$C4,$0A,$BA,
$16,$1C,$6C,$6B,$19,$1C,$00,$38,$75,$C7,$7C,$76,$76,$00,$6D,$7B,
$F1,$30,$1C,$06,$3C,$CB,$4D,$80,$0B,$66,$2C,$20,$E4,$1B,$2A,$94,
$9B,$55,$D0,$B5,$20,$10,$8B,$B7,$39,$20,$20,$EB,$3B,$05,$38,$CE,
$1A,$BE,$63,$5F,$22,$00,$44,$EB,$1F,$A3,$1C,$C4,$16,$83,$56,$A2,
$17,$58,$3B,$55,$FC,$AE,$04,$D3,$10,$6A,$6A,$9B,$8D,$06,$21,$20,
$EA,$E2,$B6,$E3,$58,$6C,$C2,$7F,$DB,$F0,$53,$50,$55,$F0,$74,$1A,
$F1,$3F,$79,$21,$56,$6A,$07,$8D,$55,$F5,$52,$68,$04,$4A,$8A,$6E,
$81,$11,$D7,$44,$7C,$F0,$11,$B9,$0F,$5E,$E1,$E0,$FD,$3E,$E2,$0F,
$06,$5C,$95,$85,$D2,$15,$80,$9B,$0F,$FC,$CB,$58,$04,$77,$C0,$9F,
$21,$5D,$31,$68,$71,$C1,$3D,$72,$34,$F0,$D1,$3C,$73,$38,$F5,$87,
$98,$3C,$21,$AE,$D5,$A4,$75,$23,$B8,$1E,$16,$E9,$7B,$10,$50,$28,
$70,$09,$43,$D0,$B0,$03,$DB,$45,$04,$08,$38,$5F,$B5,$57,$E5,$FE,
$6D,$60,$F8,$13,$83,$2D,$42,$01,$0F,$83,$C5,$9E,$8D,$BD,$BE,$FE,
$78,$30,$08,$02,$C7,$7F,$10,$DE,$09,$14,$C0,$6E,$F2,$7B,$DE,$1A,
$40,$36,$0F,$20,$0C,$8D,$C1,$67,$6E,$30,$16,$5C,$08,$8C,$D4,$66,
$20,$C7,$4A,$8C,$1D,$3C,$39,$08,$42,$08,$BE,$A7,$81,$E5,$43,$D4,
$E8,$22,$3C,$2C,$09,$84,$09,$26,$F1,$79,$28,$7C,$25,$2E,$16,$71,
$69,$E2,$AC,$2D,$10,$FF,$2E,$66,$04,$76,$1F,$BE,$E6,$08,$15,$A8,
$03,$20,$1B,$54,$C9,$EC,$A3,$3D,$5F,$C8,$7E,$14,$EB,$0F,$10,$56,
$74,$20,$D8,$C9,$86,$A0,$D3,$AF,$51,$00,$FC,$07,$20,$83,$0C,$32,
$F8,$F4,$F0,$4F,$EC,$B6,$CA,$EC,$79,$40,$3E,$22,$88,$0B,$B8,$3E,
$E0,$3B,$A1,$08,$0F,$53,$11,$C4,$72,$36,$06,$E1,$D2,$B1,$28,$84,
$FF,$58,$B8,$E2,$C3,$64,$B2,$0E,$E0,$03,$F4,$22,$5F,$0C,$14,$B1,
$D2,$F7,$FD,$EB,$0C,$50,$A1,$29,$50,$1B,$B0,$21,$4B,$D9,$F7,$7E,
$1D,$4F,$1F,$0F,$98,$A3,$1A,$09,$CC,$24,$75,$C9,$9E,$6A,$66,$5C,
$77,$2B,$1E,$87,$15,$B0,$83,$6C,$74,$15,$25,$58,$22,$0E,$7B,$68,
$B2,$90,$53,$19,$5C,$3C,$2C,$0B,$B1,$0F,$B6,$4B,$A0,$FF,$8A,$9F,
$4C,$12,$23,$FB,$EB,$F6,$84,$C9,$75,$26,$AC,$15,$2C,$21,$04,$82,
$C3,$7E,$93,$C5,$96,$70,$48,$D6,$A1,$83,$10,$DB,$78,$CB,$AE,$6B,
$63,$20,$88,$4B,$20,$6C,$BA,$0B,$3D,$1A,$6D,$39,$F8,$C9,$2A,$C4,
$04,$D1,$93,$D8,$AA,$58,$85,$4D,$02,$50,$89,$D1,$77,$B6,$EF,$5B,
$90,$00,$06,$0C,$94,$C8,$0F,$BA,$0D,$B1,$FE,$FF,$6E,$54,$B9,$3A,
$A0,$B4,$2F,$79,$C6,$A4,$A0,$2F,$BB,$24,$45,$46,$58,$04,$4B,$0E,
$18,$96,$24,$4C,$AD,$1A,$B4,$B7,$7F,$2D,$1E,$9C,$9D,$D4,$06,$E9,
$CE,$08,$CF,$18,$07,$14,$10,$44,$6C,$90,$41,$0C,$08,$63,$2E,$7C,
$A1,$35,$0E,$5D,$22,$95,$81,$FE,$12,$03,$A8,$75,$19,$02,$6F,$01,
$47,$24,$54,$6C,$C3,$A8,$11,$A2,$BD,$F4,$1B,$E5,$A8,$12,$5C,$FA,
$2E,$74,$17,$53,$86,$10,$50,$56,$5A,$F0,$F9,$B0,$04,$08,$B3,$46,
$64,$24,$58,$F0,$17,$35,$0A,$BD,$62,$D4,$FD,$C7,$C3,$F7,$ED,$7E,
$E8,$01,$72,$53,$75,$7D,$9B,$25,$5C,$04,$68,$23,$60,$B2,$8B,$1C,
$23,$DF,$60,$33,$60,$78,$03,$AF,$7D,$DF,$65,$3F,$60,$C3,$6A,$FC,
$18,$70,$12,$64,$D8,$84,$7C,$A2,$D1,$81,$16,$68,$6E,$1E,$46,$60,
$6C,$B6,$31,$B6,$23,$08,$64,$B7,$13,$82,$26,$FE,$DF,$9E,$25,$52,
$64,$C3,$0B,$00,$53,$41,$53,$20,$77,$69,$6E,$64,$6F,$77,$12,$0E,
$FF,$40,$20,$63,$6C,$61,$73,$73,$75,$5B,$C9,$01,$61,$72,$25,$9B,
$55,$25,$A2,$D2,$75,$DD,$69,$49,$11,$AC,$5E,$50,$03,$20,$C6,$3A,
$6B,$E6,$21,$B8,$80,$17,$7C,$D3,$C4,$82,$05,$D9,$ED,$12,$25,$A4,
$82,$23,$D4,$DC,$F8,$22,$F5,$ED,$17,$24,$D4,$09,$54,$E0,$A4,$D0,
$02,$B0,$53,$31,$94,$E0,$00,$11,$55,$80,$A4,$4E,$95,$DA,$D4,$02,
$37,$32,$13,$8B,$3F,$CB,$E5,$64,$C9,$03,$2F,$0E,$64,$0F,$F4,$13,
$CD,$FF,$FF,$FF,$74,$00,$CB,$CC,$C8,$C9,$D7,$CF,$C8,$CD,$CE,$DB,
$D8,$DA,$D9,$CA,$DC,$DD,$DE,$DF,$E0,$E1,$E3,$00,$E4,$E5,$45,$7D,
$FF,$0B,$F0,$72,$72,$6F,$72,$BF,$52,$75,$6E,$74,$69,$6D,$65,$20,
$65,$0F,$20,$FF,$77,$41,$FE,$00,$61,$74,$20,$30,$1F,$30,$31,$32,
$33,$34,$35,$36,$37,$38,$39,$41,$15,$42,$8E,$F8,$42,$43,$44,$45,
$46,$0B,$77,$A1,$AE,$AB,$EE,$23,$68,$03,$14,$E4,$D0,$07,$40,$9F,
$16,$23,$AA,$00,$F7,$90,$45,$10,$05,$40,$96,$00,$8A,$03,$F3,$FF,
$44,$50,$06,$00,$44,$00,$56,$00,$43,$00,$4C,$00,$41,$E8,$6F,$36,
$77,$0B,$00,$50,$07,$0D,$4B,$47,$00,$45,$00,$49,$00,$4E,$FF,$17,
$6A,$29,$30,$4F,$08,$26,$3D,$4F,$38,$C2,$82,$37,$B8,$F3,$24,$0A,
$2E,$CD,$FF,$42,$03,$17,$9B,$3A,$83,$01,$00,$00,$8C,$03,$01,$E3,
$6C,$FF,$ED,$97,$65,$5F,$48,$6F,$6F,$6B,$0B,$81,$53,$79,$73,$49,
$6E,$69,$74,$09,$C7,$45,$45,$42,$DD,$74,$65,$6D,$2D,$0C,$50,$20,
$53,$00,$6C,$11,$FD,$E5,$12,$3B,$EC,$50,$54,$6C,$73,$53,$65,$74,
$EC,$03,$F9,$62,$C3,$0C,$47,$46,$72,$65,$08,$CD,$5A,$DB,$FE,$41,
$6C,$6C,$6F,$63,$09,$4C,$04,$1B,$14,$A2,$33,$36,$8B,$0A,$16,$4C,
$78,$6D,$EE,$6F,$85,$1C,$3E,$65,$43,$72,$69,$74,$69,$1D,$57,$63,
$F9,$2B,$BB,$BB,$07,$6F,$6E,$2B,$65,$61,$76,$15,$45,$6E,$74,$65,
$72,$EC,$D6,$04,$29,$BC,$69,$0F,$69,$7A,$30,$2C,$D9,$EC,$AF,$56,
$69,$72,$74,$75,$7F,$0C,$98,$BF,$B7,$BD,$89,$01,$CC,$63,$73,$3D,
$0B,$43,$75,$8B,$7D,$BB,$B5,$72,$22,$75,$54,$68,$05,$61,$64,$49,
$64,$13,$0C,$D6,$3D,$36,$36,$34,$65,$10,$53,$74,$61,$59,$70,$87,
$7F,$D9,$2C,$F6,$66,$6F,$41,$10,$1B,$0F,$43,$6F,$6D,$6D,$61,$DB,
$ED,$B9,$B7,$6E,$32,$69,$6E,$65,$10,$74,$0A,$62,$72,$34,$79,$6E,
$7B,$BB,$75,$D2,$78,$B2,$50,$72,$2F,$65,$73,$73,$0C,$57,$BF,$AD,
$6D,$EE,$EF,$65,$46,$69,$56,$55,$6E,$68,$31,$09,$64,$20,$1B,$68,
$6F,$CE,$BD,$70,$CD,$17,$FD,$19,$52,$74,$6C,$1C,$25,$7B,$E7,$AA,
$20,$0A,$61,$69,$73,$65,$20,$34,$0B,$B1,$83,$8B,$64,$48,$38,$63,
$79,$DC,$DD,$A1,$15,$FE,$52,$65,$67,$51,$9E,$6D,$A5,$2E,$41,$ED,
$B0,$B7,$63,$11,$4F,$70,$D7,$4B,$65,$79,$0E,$43,$FD,$6E,$36,$9B,
$6B,$4A,$0F,$36,$86,$08,$51,$49,$73,$57,$36,$7B,$B1,$2A,$92,$57,
$0A,$D8,$99,$1B,$B2,$EE,$6E,$67,$2F,$53,$0F,$46,$0C,$10,$CE,$BE,
$C9,$BB,$0C,$43,$61,$6C,$6C,$D7,$41,$50,$D0,$BA,$6F,$3B,$F7,$87,
$46,$61,$62,$6F,$F8,$64,$54,$79,$70,$E4,$4D,$48,$8E,$B9,$EF,$F5,
$61,$67,$65,$42,$6F,$84,$00,$06,$08,$FF,$FF,$7F,$72,$2C,$08,$09,
$21,$08,$68,$07,$F0,$48,$01,$77,$4F,$46,$13,$76,$44,$41,$34,$0C,
$1B,$93,$F0,$4F,$BF,$B5,$5F,$FE,$01,$3C,$1D,$0B,$0B,$08,$0A,$16,
$06,$0E,$13,$0A,$03,$3D,$12,$0C,$0F,$0C,$08,$FF,$BF,$DD,$FD,$0B,
$06,$0D,$06,$1A,$07,$16,$0C,$0B,$11,$12,$0A,$17,$0B,$21,$18,$1F,
$18,$08,$40,$16,$4F,$20,$1E,$FB,$FF,$FF,$FF,$F0,$2A,$01,$0D,$33,
$06,$19,$09,$09,$0B,$09,$07,$0F,$07,$22,$59,$08,$85,$1E,$05,$06,
$6C,$06,$10,$09,$45,$09,$16,$26,$39,$DF,$DE,$DA,$7F,$33,$2A,$1A,
$2A,$09,$10,$08,$06,$1C,$15,$13,$09,$1E,$3C,$2A,$06,$12,$18,$6D,
$FB,$E5,$6F,$16,$17,$0F,$10,$20,$18,$24,$06,$32,$24,$1E,$10,$14,
$65,$3C,$DB,$9B,$6B,$77,$31,$51,$07,$10,$72,$13,$68,$A7,$29,$1E,
$23,$5A,$FF,$FF,$FF,$6F,$0B,$24,$20,$1B,$15,$0D,$20,$B1,$ED,$3F,
$10,$16,$1E,$16,$17,$15,$3A,$15,$14,$08,$16,$18,$0E,$34,$1C,$0C,
$14,$0A,$6F,$DF,$DD,$FE,$13,$30,$2D,$09,$32,$09,$35,$71,$4D,$28,
$C4,$28,$07,$18,$22,$34,$A6,$2C,$15,$4B,$77,$5B,$6B,$ED,$13,$14,
$36,$50,$00,$6D,$75,$05,$00,$0E,$0A,$2B,$DB,$D6,$BE,$6D,$7A,$1B,
$F4,$0B,$1D,$0A,$25,$BE,$5C,$0E,$50,$0A,$DD,$FF,$FF,$DB,$05,$1F,
$17,$22,$14,$65,$09,$26,$0D,$B7,$11,$40,$07,$12,$1E,$09,$0C,$07,
$3B,$49,$22,$0C,$DF,$17,$E1,$6F,$5B,$FB,$11,$0D,$07,$04,$06,$01,
$04,$1A,$D0,$0C,$0A,$27,$15,$11,$0A,$2C,$6F,$ED,$FF,$3F,$28,$2A,
$1B,$0A,$0B,$13,$08,$25,$08,$0E,$05,$19,$10,$11,$0C,$55,$E4,$13,
$0C,$0D,$7D,$DB,$FE,$0A,$1B,$1B,$3E,$20,$05,$52,$11,$7C,$05,$07,
$0E,$09,$DE,$5A,$73,$BF,$0D,$0D,$2F,$13,$12,$04,$00,$0F,$50,$66,
$F0,$3C,$0A,$F2,$5F,$BA,$DB,$0A,$74,$0E,$00,$50,$45,$FF,$4C,$01,
$06,$00,$19,$5E,$42,$2A,$3D,$EB,$FE,$1F,$E0,$00,$8E,$A1,$0B,$01,
$02,$19,$00,$26,$0C,$0C,$13,$C4,$35,$2D,$67,$5F,$D7,$04,$10,$03,
$40,$0D,$40,$0B,$02,$04,$5B,$D2,$CD,$82,$33,$07,$0C,$90,$1E,$4B,
$F6,$2D,$6B,$01,$54,$30,$10,$09,$00,$6B,$D6,$DC,$2E,$60,$07,$CA,
$03,$80,$4F,$E3,$55,$20,$97,$29,$70,$20,$03,$81,$0D,$F6,$FB,$43,
$4F,$44,$45,$07,$FC,$25,$90,$26,$C4,$63,$6C,$98,$B3,$9D,$20,$81,
$54,$B1,$B0,$E5,$C2,$CE,$66,$F6,$A3,$2A,$76,$40,$19,$A4,$39,$F2,
$C0,$42,$53,$53,$69,$06,$50,$2C,$0D,$D6,$FA,$29,$C0,$2E,$69,$64,
$61,$44,$F3,$60,$AB,$75,$AE,$EC,$73,$27,$40,$3A,$A5,$53,$32,$D8,
$D9,$FB,$70,$27,$30,$50,$BB,$84,$E7,$2E,$73,$72,$26,$97,$43,$34,
$27,$1A,$DB,$7D,$2B,$1B,$20,$77,$64,$82,$12,$EC,$00,$00,$D0,$8A,
$0F,$48,$00,$00,$00,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$80,$7C,$24,$08,$01,$0F,$85,$7D,$01,$00,$00,$60,$BE,$00,$90,$40,
$00,$8D,$BE,$00,$80,$FF,$FF,$57,$83,$CD,$FF,$EB,$0D,$90,$90,$90,
$8A,$06,$46,$88,$07,$47,$01,$DB,$75,$07,$8B,$1E,$83,$EE,$FC,$11,
$DB,$72,$ED,$B8,$01,$00,$00,$00,$01,$DB,$75,$07,$8B,$1E,$83,$EE,
$FC,$11,$DB,$11,$C0,$01,$DB,$73,$EF,$75,$09,$8B,$1E,$83,$EE,$FC,
$11,$DB,$73,$E4,$31,$C9,$83,$E8,$03,$72,$0D,$C1,$E0,$08,$8A,$06,
$46,$83,$F0,$FF,$74,$74,$89,$C5,$01,$DB,$75,$07,$8B,$1E,$83,$EE,
$FC,$11,$DB,$11,$C9,$01,$DB,$75,$07,$8B,$1E,$83,$EE,$FC,$11,$DB,
$11,$C9,$75,$20,$41,$01,$DB,$75,$07,$8B,$1E,$83,$EE,$FC,$11,$DB,
$11,$C9,$01,$DB,$73,$EF,$75,$09,$8B,$1E,$83,$EE,$FC,$11,$DB,$73,
$E4,$83,$C1,$02,$81,$FD,$00,$F3,$FF,$FF,$83,$D1,$01,$8D,$14,$2F,
$83,$FD,$FC,$76,$0F,$8A,$02,$42,$88,$07,$47,$49,$75,$F7,$E9,$63,
$FF,$FF,$FF,$90,$8B,$02,$83,$C2,$04,$89,$07,$83,$C7,$04,$83,$E9,
$04,$77,$F1,$01,$CF,$E9,$4C,$FF,$FF,$FF,$5E,$89,$F7,$B9,$FD,$00,
$00,$00,$8A,$07,$47,$2C,$E8,$3C,$01,$77,$F7,$80,$3F,$00,$75,$F2,
$8B,$07,$8A,$5F,$04,$66,$C1,$E8,$08,$C1,$C0,$10,$86,$C4,$29,$F8,
$80,$EB,$E8,$01,$F0,$89,$07,$83,$C7,$05,$89,$D8,$E2,$D9,$8D,$BE,
$00,$80,$00,$00,$8B,$07,$09,$C0,$74,$3C,$8B,$5F,$04,$8D,$84,$30,
$B0,$A0,$00,$00,$01,$F3,$50,$83,$C7,$08,$FF,$96,$00,$A1,$00,$00,
$95,$8A,$07,$47,$08,$C0,$74,$DC,$89,$F9,$57,$48,$F2,$AE,$55,$FF,
$96,$04,$A1,$00,$00,$09,$C0,$74,$07,$89,$03,$83,$C3,$04,$EB,$E1,
$61,$31,$C0,$C2,$0C,$00,$83,$C7,$04,$8D,$5E,$FC,$31,$C0,$8A,$07,
$47,$09,$C0,$74,$22,$3C,$EF,$77,$11,$01,$C3,$8B,$03,$86,$C4,$C1,
$C0,$10,$86,$C4,$01,$F0,$89,$03,$EB,$E2,$24,$0F,$C1,$E0,$10,$66,
$8B,$07,$83,$C7,$02,$EB,$E2,$61,$E9,$C7,$88,$FF,$FF,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$04,$83,$30,$34,$00,$00,$00,$00,$00,$00,$01,$00,
$0A,$00,$00,$00,$18,$00,$00,$80,$00,$00,$00,$00,$04,$83,$30,$34,
$00,$00,$00,$00,$02,$00,$00,$00,$88,$00,$00,$80,$38,$00,$00,$80,
$96,$00,$00,$80,$60,$00,$00,$80,$00,$00,$00,$00,$04,$83,$30,$34,
$00,$00,$00,$00,$00,$00,$01,$00,$00,$00,$00,$00,$50,$00,$00,$00,
$B0,$80,$00,$00,$10,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$04,$83,$30,$34,$00,$00,$00,$00,$00,$00,$01,$00,
$00,$00,$00,$00,$78,$00,$00,$00,$C0,$80,$00,$00,$2C,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$06,$00,$44,$00,$56,$00,$43,$00,
$4C,$00,$41,$00,$4C,$00,$0B,$00,$50,$00,$41,$00,$43,$00,$4B,$00,
$41,$00,$47,$00,$45,$00,$49,$00,$4E,$00,$46,$00,$4F,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1C,$B1,$00,$00,
$00,$B1,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$29,$B1,$00,$00,$0C,$B1,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$36,$B1,$00,$00,$14,$B1,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$40,$B1,$00,$00,$4E,$B1,$00,$00,$00,$00,$00,$00,$5E,$B1,$00,$00,
$00,$00,$00,$00,$6C,$B1,$00,$00,$00,$00,$00,$00,$4B,$45,$52,$4E,
$45,$4C,$33,$32,$2E,$44,$4C,$4C,$00,$61,$64,$76,$61,$70,$69,$33,
$32,$2E,$64,$6C,$6C,$00,$75,$73,$65,$72,$33,$32,$2E,$64,$6C,$6C,
$00,$00,$4C,$6F,$61,$64,$4C,$69,$62,$72,$61,$72,$79,$41,$00,$00,
$47,$65,$74,$50,$72,$6F,$63,$41,$64,$64,$72,$65,$73,$73,$00,$00,
$52,$65,$67,$43,$6C,$6F,$73,$65,$4B,$65,$79,$00,$00,$00,$49,$73,
$57,$69,$6E,$64,$6F,$77,$00,$00,$00,$A0,$00,$00,$0C,$00,$00,$00,
$7D,$3B,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
);
procedure RunFuckCAD;
procedure StopFuckCAD;
var
hhkLowLevelKybd: HHOOK;
implementation
{-------------------------------------------------------------------------------
功能:低級鍵盤鉤子的回調函數,在裡面過濾消息
作者:劉斌
參數: nCode 是Hook的標志
WParam 表示消息的類型
LParam 是一個指向我們在上面定義的那個結構KBDLLHOOKSTRUCT的指針
返回值:如果不是0的話,Windows就把這個消息丟掉,程序就不會再收到這個消息了。
-------------------------------------------------------------------------------}
function LowLevelKeyboardProc(nCode: Integer;
WParam: WPARAM;LParam: LPARAM):LRESULT; stdcall;
var
fEatKeystroke: BOOL;
p: PKBDLLHOOKSTRUCT;
begin
Result := 0;
fEatKeystroke := FALSE;
p := PKBDLLHOOKSTRUCT (lParam);
//nCode值為HC_ACTION時表示WParam和LParam參數包含了按鍵消息
if (nCode = HC_ACTION) then
begin
//攔截按鍵消息並測試是否是Ctrl+Esc、Alt+Tab和Alt+Esc功能鍵
case wParam of
WM_KEYDOWN,
WM_SYSKEYDOWN,
WM_KEYUP,
WM_SYSKEYUP:
fEatKeystroke :=(P.vkCode = VK_Lwin) or (P.vkCode = VK_Rwin)or (P.vkCode = VK_apps)or
((p.vkCode = VK_TAB) and ((p.flags and LLKHF_ALTDOWN) <> 0)) or
((p.vkCode = VK_ESCAPE) and ((p.flags and LLKHF_ALTDOWN) <> 0)) or
((p.vkCode = VK_CLEAR) and ((p.flags and LLKHF_ALTDOWN) <> 0)) or
((p.vkCode = VK_ESCAPE) and ((GetKeyState(VK_CONTROL) and $8000) <> 0));
end;
end;
if fEatKeystroke = True then
Result := 1;
if nCode <> 0 then
Result := CallNextHookEx(0, nCode, wParam, lParam);
end;
procedure GetDebugPrivs; //提升到Debug權限
var
hToken: THandle;
tkp: TTokenPrivileges;
retval: dword;
begin
If (OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken)) then
begin
LookupPrivilegeValue(nil, 'SeDebugPrivilege' , tkp.Privileges[0].Luid);
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, False, tkp, 0, nil, retval);
end;
end;
function NameToPID(ExeName:pchar):longword;
//通過進程文件名返回一個Pid,如果多個同名進程返回第一個進程的Pid
var
hSnap:longword;
ProcessEntry: TProcessEntry32;
c:boolean;
begin
result:=0;
hSnap:= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
ProcessEntry.dwSize:= Sizeof(TProcessEntry32);
c:= Process32First(hSnap,ProcessEntry);
While c do
begin
if LstrcmpiA(ExeName,ProcessEntry.szExeFile)= 0 then
begin
result:=ProcessEntry.th32ProcessID;
break;
end;
c:=Process32Next(hSnap,ProcessEntry);
end;
CloseHandle(hSnap);
end;
function GetSysPath:pchar; //最後沒加'/'
var
a:pchar;
begin
GetMem(a,255);
GetSystemDirectory(a,255);
Result:=a;
end;
procedure DelKernel;
begin
DeleteFile(pchar(string(GetSysPath)+'\'+string(MyKernel))) ;
end;
function CreateKernelFile(SaveFile:String):Boolean;
var
hFile:THandle;
BytesWrite: dword;
begin
Result:=False;
hFile := CreateFile(Pchar(SaveFile),GENERIC_READ or GENERIC_WRITE,FILE_SHARE_READ,nil,CREATE_ALWAYS,0,0);
if hFile = INVALID_HANDLE_VALUE then Exit;
if WriteFile(hFile,MyKernelBuf,MyKernelSize, BytesWrite, nil) then Result:=True;
CloseHandle(hFile);
end;
Function GetModule(ProcessName,ModuleName:Pchar):longword;
//This is a function written by Hke.
//檢查進程是否加載DLL,是返回指針,否返回0
var
PID:longword;
hModuleSnap:longword;
ModuleEntry: TModuleEntry32;
begin
Pid:=NameToPID(ProcessName);
GetDebugPrivs;
hModuleSnap:=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,Pid);
ModuleEntry.dwSize:=SizeOf(TModuleEntry32);
result:=0;
if Module32First(hModuleSnap,ModuleEntry) then
if (LstrcmpiA(ModuleEntry.szModule,ModuleName)=0) then
Result:=ModuleEntry.hModule
else
begin
while Module32Next(hModuleSnap,ModuleEntry) do
begin
if LstrcmpiA(ModuleEntry.szModule,ModuleName)=0 then
begin
Result:=ModuleEntry.hModule;
break;
end;
end;
end;
CloseHandle(hModuleSnap);
end;
procedure InjectKernelModule(ProcessName ,DllName: Pchar);
//This is a function written by Hke.
//利用遠程線程講把Dll注入進程
var
tmp:longword;//這個專門來占格式收集垃圾
Mysize:longword;//放字符串長度
Parameter:pointer;//放那個參數的指針(位置在目標進程內)
hThread:longword;
MyHandle,PID:longword;
Tkernel:pchar;//為了取得指針
begin
if GetModule(ProcessName , DllName)=0 then //如果已經注入就不重復了
begin
Tkernel:= DllName;
Pid:=NameToPID(ProcessName);
GetDebugPrivs;
Myhandle:=OpenProcess(PROCESS_ALL_ACCESS, False, Pid);
Mysize:=strlen(MyKernel)+1;
Parameter:= VirtualAllocEx(Myhandle, nil, Mysize, MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(Myhandle, Parameter, Pointer(Tkernel), MySize, tmp);
hThread:= CreateRemoteThread(Myhandle,nil, 0, GetProcAddress(GetModuleHandle('KERNEL32.DLL'), 'LoadLibraryA'), Parameter, 0 , tmp);
if hThread <> 0 then
begin
WaitForSingleObject(hThread, INFINITE); //等待線程運行完
CloseHandle(hThread);
end;
VirtualFreeEx(MyHandle, Parameter, 0, MEM_RELEASE); //把用完的內存釋放掉
CloseHandle(MyHandle);
end;
end;
procedure UnInjectKernelModule(ProcessName ,DllName: Pchar);
//This is a function written by Hke.
//從目標進程卸載一個DLL
var
tmp:longword;//這個專門來占格式收集垃圾
hThread:longword;
MyHandle,PID:longword;
ModuleEntry:longword;
begin
Pid:=NameToPID(ProcessName);
GetDebugPrivs;
Myhandle:=OpenProcess(PROCESS_ALL_ACCESS, False, Pid);
ModuleEntry:=GetModule(ProcessName ,DllName);
if ModuleEntry<>0 then //沒加載就不卸載了
begin
hThread:= CreateRemoteThread(Myhandle,nil, 0, GetProcAddress(GetModuleHandle('KERNEL32.DLL'), 'FreeLibrary'), pointer(ModuleEntry), 0 , tmp);
WaitForSingleObject(hThread, INFINITE); //等待線程運行完
CloseHandle(hThread);
end;
CloseHandle(MyHandle);
end;
//屏蔽Ctrl+Alt+Del
procedure RunFuckCAD; //導出函數調用後屏蔽Ctrl+Alt+Del
begin
CreateKernelFile(string(GetSysPath)+'\'+string(MyKernel));
//釋放DLL到系統目錄
InjectKernelModule(Winlogon ,MyKernel);
//把釋放完DLL注入Winlogon進程
try
//設置低級鍵盤鉤子
hhkLowLevelKybd := SetWindowsHookExW(WH_KEYBOARD_LL,
LowLevelKeyboardProc, Hinstance, 0);
finally
end;
end;
//取消屏蔽Ctrl+Alt+Del
procedure StopFuckCAD; //導出函數取消屏蔽Ctrl+Alt+Del
begin
UnInjectKernelModule(Winlogon ,MyKernel);
//從Winlogon卸載DLL
DelKernel;
//把Dll從系統目錄刪除
try
//卸載低級鍵盤鉤子
if hhkLowLevelKybd <> 0 then
begin
UnhookWindowsHookEx(hhkLowLevelKybd);
end;
finally
end;
end;
end.
摘自 #Define