BiffExplorer: Fix LCLScaling on Windows. Fix storage of form size.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8905 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2023-07-30 15:04:48 +00:00
parent 67b5df031c
commit 4b91dd8900
4 changed files with 162 additions and 326 deletions

View File

@ -9,6 +9,7 @@
</Flags> </Flags>
<SessionStorage Value="InProjectDir"/> <SessionStorage Value="InProjectDir"/>
<Title Value="BIFFExplorer"/> <Title Value="BIFFExplorer"/>
<Scaled Value="True"/>
<ResourceType Value="res"/> <ResourceType Value="res"/>
<UseXPManifest Value="True"/> <UseXPManifest Value="True"/>
<XPManifest> <XPManifest>

View File

@ -14,6 +14,7 @@ uses
begin begin
RequireDerivedFormResource := True; RequireDerivedFormResource := True;
Application.Scaled:=True;
Application.Initialize; Application.Initialize;
Application.CreateForm(TMainForm, MainForm); Application.CreateForm(TMainForm, MainForm);
MainForm.BeforeRun; MainForm.BeforeRun;

View File

@ -5,35 +5,36 @@ object MainForm: TMainForm
Width = 1089 Width = 1089
AllowDropFiles = True AllowDropFiles = True
Caption = 'BIFF Explorer' Caption = 'BIFF Explorer'
ClientHeight = 556 ClientHeight = 576
ClientWidth = 1089 ClientWidth = 1089
Menu = MainMenu Menu = MainMenu
OnActivate = FormActivate
OnCloseQuery = FormCloseQuery OnCloseQuery = FormCloseQuery
OnCreate = FormCreate OnCreate = FormCreate
OnDestroy = FormDestroy OnDestroy = FormDestroy
OnDropFiles = FormDropFiles OnDropFiles = FormDropFiles
OnShow = FormShow OnShow = FormShow
ShowHint = True ShowHint = True
LCLVersion = '1.9.0.0' LCLVersion = '3.99.0.0'
object Splitter1: TSplitter object Splitter1: TSplitter
Left = 419 Left = 419
Height = 483 Height = 503
Top = 50 Top = 50
Width = 5 Width = 5
end end
object DetailPanel: TPanel object DetailPanel: TPanel
Left = 424 Left = 424
Height = 483 Height = 503
Top = 50 Top = 50
Width = 665 Width = 665
Align = alClient Align = alClient
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 483 ClientHeight = 503
ClientWidth = 665 ClientWidth = 665
TabOrder = 2 TabOrder = 2
object PageControl: TPageControl object PageControl: TPageControl
Left = 0 Left = 0
Height = 483 Height = 503
Top = 0 Top = 0
Width = 665 Width = 665
ActivePage = PgValues ActivePage = PgValues
@ -43,12 +44,12 @@ object MainForm: TMainForm
OnChange = PageControlChange OnChange = PageControlChange
object PgAnalysis: TTabSheet object PgAnalysis: TTabSheet
Caption = 'Analysis' Caption = 'Analysis'
ClientHeight = 480 ClientHeight = 475
ClientWidth = 657 ClientWidth = 657
object AnalysisDetails: TMemo object AnalysisDetails: TMemo
Left = 0 Left = 0
Height = 191 Height = 191
Top = 289 Top = 284
Width = 657 Width = 657
Align = alBottom Align = alBottom
Font.CharSet = ANSI_CHARSET Font.CharSet = ANSI_CHARSET
@ -65,7 +66,7 @@ object MainForm: TMainForm
Cursor = crVSplit Cursor = crVSplit
Left = 0 Left = 0
Height = 5 Height = 5
Top = 284 Top = 279
Width = 657 Width = 657
Align = alBottom Align = alBottom
ResizeAnchor = akBottom ResizeAnchor = akBottom
@ -73,12 +74,12 @@ object MainForm: TMainForm
end end
object PgValues: TTabSheet object PgValues: TTabSheet
Caption = 'Values' Caption = 'Values'
ClientHeight = 455 ClientHeight = 475
ClientWidth = 657 ClientWidth = 657
object ValueGrid: TStringGrid object ValueGrid: TStringGrid
Left = 0 Left = 0
Height = 158 Height = 158
Top = 297 Top = 317
Width = 657 Width = 657
Align = alBottom Align = alBottom
ColCount = 3 ColCount = 3
@ -113,14 +114,14 @@ object MainForm: TMainForm
Cursor = crVSplit Cursor = crVSplit
Left = 0 Left = 0
Height = 5 Height = 5
Top = 292 Top = 312
Width = 657 Width = 657
Align = alBottom Align = alBottom
ResizeAnchor = akBottom ResizeAnchor = akBottom
end end
object HexEditor: TKHexEditor object HexEditor: TKHexEditor
Left = 0 Left = 0
Height = 261 Height = 281
Top = 31 Top = 31
Width = 657 Width = 657
AddressPrefix = '$' AddressPrefix = '$'
@ -162,7 +163,7 @@ object MainForm: TMainForm
Left = 2 Left = 2
Height = 19 Height = 19
Top = 6 Top = 6
Width = 131 Width = 130
BorderSpacing.Left = 2 BorderSpacing.Left = 2
Caption = 'Hexadecimal address' Caption = 'Hexadecimal address'
Checked = True Checked = True
@ -174,7 +175,7 @@ object MainForm: TMainForm
AnchorSideLeft.Control = CbHexAddress AnchorSideLeft.Control = CbHexAddress
AnchorSideLeft.Side = asrBottom AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = HexEditorParamsPanel AnchorSideTop.Control = HexEditorParamsPanel
Left = 149 Left = 148
Height = 23 Height = 23
Top = 4 Top = 4
Width = 121 Width = 121
@ -197,10 +198,10 @@ object MainForm: TMainForm
AnchorSideLeft.Side = asrBottom AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = CbHexEditorLineSize AnchorSideTop.Control = CbHexEditorLineSize
AnchorSideTop.Side = asrCenter AnchorSideTop.Side = asrCenter
Left = 286 Left = 285
Height = 19 Height = 19
Top = 6 Top = 6
Width = 83 Width = 81
BorderSpacing.Left = 16 BorderSpacing.Left = 16
BorderSpacing.Right = 2 BorderSpacing.Right = 2
Caption = 'Single bytes' Caption = 'Single bytes'
@ -215,19 +216,19 @@ object MainForm: TMainForm
end end
object TreePanel: TPanel object TreePanel: TPanel
Left = 0 Left = 0
Height = 483 Height = 503
Top = 50 Top = 50
Width = 419 Width = 419
Align = alLeft Align = alLeft
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 483 ClientHeight = 503
ClientWidth = 419 ClientWidth = 419
Constraints.MinWidth = 275 Constraints.MinWidth = 275
TabOrder = 1 TabOrder = 1
object FindPanel: TPanel object FindPanel: TPanel
Left = 0 Left = 0
Height = 30 Height = 30
Top = 453 Top = 473
Width = 419 Width = 419
Align = alBottom Align = alBottom
BevelOuter = bvNone BevelOuter = bvNone
@ -242,6 +243,8 @@ object MainForm: TMainForm
Width = 23 Width = 23
Action = AcFindNext Action = AcFindNext
Flat = True Flat = True
Images = ImageList
ImageIndex = 4
end end
object BtnFindPrev: TSpeedButton object BtnFindPrev: TSpeedButton
Left = 216 Left = 216
@ -250,6 +253,8 @@ object MainForm: TMainForm
Width = 23 Width = 23
Action = AcFindPrev Action = AcFindPrev
Flat = True Flat = True
Images = ImageList
ImageIndex = 5
end end
object SpeedButton3: TSpeedButton object SpeedButton3: TSpeedButton
Left = 3 Left = 3
@ -258,6 +263,8 @@ object MainForm: TMainForm
Width = 23 Width = 23
Action = AcFindClose Action = AcFindClose
Flat = True Flat = True
Images = ImageList
ImageIndex = 3
end end
object CbFind: TComboBox object CbFind: TComboBox
Left = 28 Left = 28
@ -272,7 +279,7 @@ object MainForm: TMainForm
end end
object BIFFTree: TVirtualStringTree object BIFFTree: TVirtualStringTree
Left = 0 Left = 0
Height = 453 Height = 473
Top = 0 Top = 0
Width = 419 Width = 419
Align = alClient Align = alClient
@ -337,7 +344,7 @@ object MainForm: TMainForm
object StatusBar: TStatusBar object StatusBar: TStatusBar
Left = 0 Left = 0
Height = 23 Height = 23
Top = 533 Top = 553
Width = 1089 Width = 1089
Panels = < Panels = <
item item
@ -413,304 +420,120 @@ object MainForm: TMainForm
end end
end end
object ImageList: TImageList object ImageList: TImageList
left = 80 Left = 80
top = 64 Top = 64
Bitmap = { Bitmap = {
4C69090000001000000010000000FFFFFF00FFFFFF000088CC610088CC810088 4C7A0900000010000000100000000A0D00000000000078DAED987B548DF91AC7
CC810088CC810088CC810088CC810088CC810088CC810088CC810088CC810088 7F6B8DBB23D38C309D19162A0A293B2294904AA552B954BA2819731C975CC2E4
CC810088CC610087CB00FFFFFF00FFFFFF00FFFFFF000087CA8388DCF4FF60C0 7E8954D3559AEE9164120A13BABA4CA59776BA90222A5B92EBB853CF799E7757
E9FF5FBFEAFF80D3F4FF9CE3FDFFA2E6FFFFA2E6FFFFA2E6FFFFA2E6FFFFA6EA 67EFDA61CE9C3FCE9CA5B53EEBF77B7ECFF7F35EF67EDFB7BD37003040D82ECE
FFFF0087CA830087CA00FFFFFF00FFFFFF00FFFFFF000085C885ACF1FFFFABEF 19D9F2893833AF02DE6B81795DDAB6ABF2393865DF07C7AC7AD85CFC1C226A1A
FEFF95E2F8FF6EC9EDFF48A8D9FF98DCFEFF98DCFEFF98DCFEFF98DCFEFFA1E5 214E04521CACC7306611697F47DE8EA4A700BF3C6E8290EAD7B034FF21181D2A
FFFF0085C8850085C800FFFFFF00FFFFFF00FFFFFF000084C587A9EEFDFFA4E9 877D954D52C4DEC5306611697FFB45AFC4478D70E0FE7B9EC3389F125B04A115
FCFFA4E9FCFFAAEEFDFF42A1D1FF97DBFDFF97DBFDFF97DBFDFF97DBFDFF9FE3 8D5244D734016511697FEB39EF830FDE43ACE81D0FCD274616C2DE1BEFA588AA
FEFF0084C5870084C500FFFFFF00FFFFFF00FFFFFF000082C28AA6EBFCFFA1E6 6E04CA22D2FEA62CDFFD75EF20B2E60D0FCDC7045F84E0EB6FA508AF7A0F9465
FBFFA1E6FBFFA6EBFCFF3C9DCFFF96DAFCFF96DAFCFF96DAFCFF96DAFCFF9EE2 9B32A5FD0D67FDA3EEBE817D552F79683EDA3F1B02CB5E4B1176F32D50161148
FDFF0082C28A0082C200FFFFFF00FFFFFF00FFFFFF00007FBF8DA3E8FBFF9DE3 F93FA60587DF7905C115CF7968AEE19B0EFE252FA508AD78034D4D780E9897F2
F9FF9DE3F9FFA3E8FBFF3594C5FF94D8FAFF94D8FAFF94D8FAFF94D8FAFF9BDF D79E080DBD8599EBCF78683E72F7AFF053F10B2942CA5FC38B178F80F252FE9A
FCFF007FBF8D007FBE00FFFFFF00FFFFFF00FFFFFF00007DBB909EE5F9FF98DF 63E181379EC39E92273C341FBE23157C8B7E9722E8DA4B78F0E026505ECA5F99
F6FF98DFF6FF9EE5F9FF3290C0FF92D6F8FF92D6F8FF92D6F8FF92D6F8FF99DD 14E557F60CBC840F79683E6CEB51D853F8548A80D217D094AF0F9497F297251C
FAFF007DBB90007DBB33FFFFFF00FFFFFF00FFFFFF00007BB8949BE1F7FF94DB F02E7E025B2F3FE0A1B9CAC65FC0FBCA13297EC2EBF2F92975A0BC94EF1696E2
F4FF94DBF4FF9BE1F7FF308DBCFF90D4F6FF90D4F6FF90D4F6FF90D4F6FF97DB 55F418365DBACFE3257C0C2A1B12DB1DBF7FC90BA02C5B14AE2BE53BF8FA8D09
F9FFFEFEFDFF007BB894FFFFFF00FFFFFF00FFFFFF000078B49797DEF6FF90D8 C878BA38EDE6DB2D050DB0FD0ABE46F67B1EB3F93E99EDC02C6E43FAFD9FEFC3
F2FF90D8F2FF97DEF6FF2D89B7FF8FD3F5FF8FD3F5FF8FD3F5FF8FD3F5FF95D9 D8C2300BE61A1AF6EDFAC4EC59F1976F33BBDD39086B076565F9AEA18C2D08C2
F8FFF5F5EEFF0078B497FFFFFF00FFFFFF00FFFFFF000076B09B92DAF4FF8BD4 63F1D360F63E9E6C9E5720F2419FE9054910AC847833DD208E4D0EF91861123E
F0FF8BD4F0FF92DAF4FF2B85B3FF8DD1F3FF8DD1F3FF8DD1F3FF8DD1F3FF93D7 7A41DE722611C57A6BB21BE6FB9780606122C4C4C440626222CFE1C387212929
F6FFEBEBDDFF0076B09BFFFFFF00FFFFFF00FFFFFF000073AC9E8ED6F2FF87D0 09929393E1D8B16340FB68F6BDE5664414EBAECE6AB0F62A80B18B8FC090D93F
EDFF87D0EDFF8ED6F2FF2882AFFF8BCFF1FF8BCFF1FF8BCFF1FF8BCFF1FF91D5 83C0E520EFA5A7A743464606646565414E4E0E5CB87001727373814DF417FB93
F5FFFEC941FF0073AC9EFFFFFF00FFFFFF00FFFFFF00006FA7A48AD3F0FF82CD 0238DADF98EF9360985D34289A05C0348FB320703EC0FBB2DCFCFC7C603ABE62
EBFF82CDEBFF8AD3F0FF267EABFF8ACEF0FF8ACEF0FF8ACEF0FF8ACEF0FF8FD3 7F821F37774F21EF4D5D730646E371D328708CE58F5996CB711C30EDDD627FFC
F4FFF4B62EFF006FA7A4FFFFFF00FFFFFF00FFFFFF00006699B287D1EFFF7FCA 1ECE661707436DA3407F551A68BA1EE247C1FC28FE7C65B942A11098D60EB13F
E9FF7FCAE9FF87D0EFFF267DA9FF8DD1F3FF8DD1F3FF8DD1F3FF8DD1F3FF90D4 761767B5F312A8DAC7809EFB29D07049E04781EDCFFC6B25CB2D2E2E06A6B945
F5FF006699B200679B3EFFFFFF00FFFFFF00FFFFFF00005E8D8E3591BDF169B8 ECE3762CB6E5C27716C1FCB18F743A0093969F00C1DC50FE7596E59696960253
DDFA81CBECFF84CEEEFF005C8BEF005D8CBE005D8CBE005D8CBE005D8CBE005D DF20F6713BA69BCEC3D9B36761B0A50F8C70DC0F1396A680C0260852535365BA
8CBE005E8D8E00669900FFFFFF00FFFFFF00FFFFFF00005D8C00006599500064 D7AF5F07367CADD8C7ED187B664377C1321864E10FC31DE260FC92632098E50F
97991C7AA9C052A5CDE0005B89C1005B8900005B8900005B8900005B8900005B 274F9E94E9565454001BBA4AEC0F5FC719AECFE4F7ABFD4332EFD328B0F081B4
8900005D8C0000669900FFFFFF00FFFFFF00FFFFFF00005D8C00006497000062 B434996E65652530A565627FD86A8EDE6FF2E91A205FDD391E04265EFC39C972
9300005E8E30005C8C7C0059879200598700005B8900005B8900005B8900005B 6FDEC4E7CFC0EFC5BEF20A8EDE2FF2E9B5A36B8F7FFDF4D7416666A64C97F7BF
8900005D8C0000669900FFFFFF00003F9300003F9300003F9300003F9424003F 9A2BF607FF93A3F76BB04D18FFBA8DB0DCDBD0E35BA762D6D5F800EB62C47548
948A003E93CC004095CC004095CC004095CC004095CC004095CC004095CC0040 D719E2FBE7EFAEFCFED52C821B7A283A14B36E33BCB1AFC4BA1832D6C9A063BA
95CC004095CC00409599FFFFFF00003F9300003F9324003F938A0E4B9CD33F76 1889EFDF2F6D18EB698EDB33F6669DA72BB1CE867CEF53FD993367324B4B4B66
C0EC5D90D4FF3365A9FFA0A0A0FFA9A9A9FFA9A9A9FFAAAAAAFFACACACFFAEAE 6D6D2D6F63633319B14516368F93699DFA942354E70C659D1733D6750593F407
AEFFB0B0B0FF003E93CCFFFFFF00003F938A0E4A9CD33E75BFEC5487CBFF3669 B938392C38BE3F788FA8F4E2D1E7F555B90F6BCA4F9E4A8AF3A375EAB7F89290
ADFF23569AFF3363A6FFA9A9A9FFBCBCBCFFBDBDBDFFBFBFBFFFC1C1C1FFC4C4 6F666626EF38DFD6B5342739F6C1F50BE75E36545F7EF9B0F60A0FCECBF3D20E
C4FFC7C7C7FF003C90CCFFFFFF00003D91CC5D90D4FF3568ACFF285B9FFF1A4D 38CDB773A59CA9A92993847C6363E3A947A203FCEAAE9ECD7E5A539AD7EA36F3
91FF4477BBFF3361A4FFA9A9A9FFBDBDBDFFBFBFBFFFC1C1C1FFC4C4C4FFC7C7 ACB62CEFD881D000CA214C12F2A74E9DEA74BBE05412F91D515B9C9342398449
C7FFC9C9C9FF003A8DCCFFFFFF00003B8ECC588BCFFF1A4D91FF4376BAFF3265 42BEAEAEEEB2FB2599992DD9B6FB271E56E45DA41CC224217FDCB8710BEF14A6
A9FF4376BAFF335FA1FFAAAAAAFFBFBFBFFFC1C1C1FFC4C4C4FFC7C7C7FFC9C9 1FEFC825EE5DBF944639844942BEA6A6A6F1A1C8A0D0FAD2ACF32FEE5715B4F3
C9FFCCCCCCFF003789CCFFFFFF0000398BCC5588CCFF275A9EFF4174B8FF3164 1BAAAF1C3918154939844942BE8A8A4A9F093AE3565DCB4F3FFABBA85CCA7FF5
A8FF4174B8FF335D9EFFACACACFFC1C1C1FFC4C4C4FFC7C7C7FFC9C9C9FFCCCC 5854547BAB3CCF60DAD40D5A5A5A4AB4CFF1E3C7331D1D1D3671E244DE1F3060
CCFFD0D0D0FF003485CCFFFFFF00003688CC5386CAFF295CA0FF3F72B6FF3063 00939797571BA6A2BC21323420FE515DCD8537BF3F2C7B5C7FF7E2FE98A8C461
A7FF3F72B6FF335A9AFFAEAEAEFFC4C4C4FFC7C7C7FFC9C9C9FFCCCCCCFFD0D0 43877AD373505B5B7B353250962F2727C73A75EAD417998DAC43BC9A47AAD57A
D0FFD3D3D3FF003181CCFFFFFF00003485CC5083C7FF1D5094FF3265A9FF2D60 F7EEBD330D9F2553F4F537E231A875E07F08654545C59FF2F0596C6E66B60B8F
A4FF3D70B4FF335897FFB0B0B0FFC7C7C7FFC9C9C9FFCCCCCCFFD0D0D0FFD3D3 61DC1FF409019E4B58F9952BE0646F1F80C760F6077D62DA8471E3E2EAF07932
D3FFD5D5D5FF002E7DCCFFFFFF00003181CC4C7FC3FFBBBBBBFF22518CFF2C5F 7AF4E835FF814FD877EFDE7DB7B2B2F208C9FFFF7F75184B400EE383EB30271E
A3FF3B6EB2FF335593FFB3B3B3FFC9C9C9FFCCCCCCFFD0D0D0FFD3D3D3FFD5D5 A9DEDF4CFB9E0C9FD6390F0F2A123871DDEAF3BDE5CB5FB7F6DAFBFBB9356B9A
D5FFD8D8D8FF002B78CCFFFFFF00002E7DCC497CC0FF09336FFF215090FF2B5E C0D4B404DCDDF13336D6885133DC8205F57CCFDEBE96EFB5F7633117C32D5AF4
A2FF396CB0FF335290FFB5B5B5FFCCCCCCFFD0D0D0FFD3D3D3FFD5D5D5FFD8D8 18C68ECD04070711504D989B5FE3D70C0C2E37AFC5CAD87F0C1281DB08E7ACAC
D8FFDBDBDBFF002774CCFFFFFF00002B79CC477ABEFF2C5FA3FF376AAEFF2B5E 2A405DFD579834E937D0D43C030A0AD13060C021A09E3813C364FBE1C83EEC87
A2FF376AAEFF33508CFFB8B8B8FFD0D0D0FFD3D3D3FFD5D5D5FFD8D8D8FFDBDB 72CACA27405E3E8EA74F9F78A035712F9CC9F6F17322F345023013C829281C45
DBFFDCDCDCFF00246FCCFFFFFF00002875CC4477BBFF2C5FA3FF3568ACFF2B5E 37A9155A13F77CF9AC6CDF87FA9CBC7C1AC8827AE28C4C9FD6D1BD002D50DDC1
A2FF2E61A5FF334B87FFBBBBBBFFD3D3D3FFD5D5D5FFD8D8D8FFDBDBDBFFDCDC 9A8CD76F2BE684D002D58C6D3312D3BED7DE5F8D3977CCE1671B1CC5F55626A6
DCFFDDDDDDFF001F68CCFFFFFF00002571CC4174B8FF2C5FA3FF2D60A4FF2356 7DAFBDEF8E3863CE91138FEEECDF7EFBDEFFD3BDFB5747143E495017A9C7FD11
9AFF3D70B4FF334179FFBEBEBEFFD5D5D5FFD8D8D8FFDBDBDBFFDCDCDCFFDDDD C869F1AB437514AA82C7253FC9582C6ABA1508EFCBBCA529DDCDD378C30F1E9F
DDFFDDDDDDFF001258CCFFFFFF0000226DCC3F72B6FF225599FF3B6EB2FF2C51 711351961C099F95FB0914AE7AA927D79D7411BD2AD804F5475DE076FC3C280B
96EC0A1C60D3000749A4000648CC000648CC000648CC000648CC000648CC0006 3787A21063B899E40455F15622CA50969C363E2BD8ACAA707EDD90E44ACCD5A4
48CC000648CC00074A99FFFFFF00001B64CC4174B8FF2A5094EC0A1A5ED30008 CC87E290093C5589B3A0EC670311F52843D90E7C96BEE23B85933FF44F2E0BD5
4A8A000648240006470000044500000445000004450000044500000445000004 163D3D31169E1CD78092C091225AA31E653EE2B36497AF1412EC7B2517FB7E23
45000004450000064800FFFFFF0000105500000B4FCC0007498A000546240005 2AF6E92FA239AD51EF137D1663D35D21DCA2733241735AEBC8FFCC67FE0C787D
4700000648000006470000044500000445000004450000044500000445000004 32BCBE19DE1F0CEF2F86F727BB17A16B4FF7398D54D33AF52947F90FF9B782B4
45000004450000064800FFFFFF004E4E4E005151510054545411555555405555 C9E1E06E18D048F5A7FAC21D2329CB35DD0981D7B93F42233E4FA8A6F58FF939
555A555555655555555A5555554054545411515151004E4E4E004E4E4E002957 1E8329C3BD2BF78586D4457027C10EAE4558C0BDF4E540EBD4EFC84FFDBE1FF5
27000569000007710000FFFFFF004E4E4E005151512163605E62B1A3948BE6D5 B8D7859B4114AF0BB72247C1CD08F55644C986407DCAB5F5E36DFF466BDC9B7C
C5AFF4EADFC7EDE3D9B5B6ACA28E63605E62515151214E4E4E004E4E4E004E4E 37789B3614DEFDFA2DBC3BD91FDE9DE803EF52E5E15D4A6F440ED7FA02E5282F
4E004E4E4E004E4E4E00FFFFFF004D4D4D115F5D5A64D5C1AEA1EBD8C4C2F6EC E947587609C3FB9CFB5428FFF9BAFDEF606E6ECE2C2C2CD8AC59B398959515FD
E2CDF6EDE4CEF6EDE4CEF6ECE2CDD9C8B8A4605D5B644D4D4D114C4C4C004C4C 0EA080DFFB756DC47F2ECDD09F2EF528435972C895F0BB626FD2CA952BD7E6E5
4C004C4C4C004C4C4C00FFFFFF0049494943AD9F918EE8D2BBC0F1E3D5C8F6ED E55DADAFAF079148C443F3DCDCDCABEEEEEE6B2943D9367E574B4B4BB3E8E8E8
E4CEF6EDE4CEF6EDE4CEF6EDE4CEF2E4D6C8B0A4979149494943494949004949 58CA5F3BB61F843EABE1F212131E9A971D8D839ADA5A888C8C8CA52C39E436FF
49004949490049494900FFFFFF0043434360E0CBB6ACE8D2BBC0E8D2BBC0E8D2 96A087EB7155555550B0CE012AD6CF8547FE4BE1F9DE55F03C64253CF45B0237
BBC0E8D2BBC0E8D2BBC0E8D2BBC0E8D2BBC0E4D3C1B243434360434343004343 D6CE16F72A2B212C2C2C8E1C724D4C4CFA2D59B2C4B3EAF66DC85B6D0BD5DB9C
43004343430043434300FFFFFF003E3E3E6FE9D4BEBEE8D2BBC0E8D2BBC0F6ED A112FDB67FD5FB3641D5467B3E43BF072D5EBCD8935C2323A32999595925F971
E4CEF6EDE4CEF6EDE4CEF6EDE4CEF6EDE4CEEDDBC8C53E3E3E6F3E3E3E003E3E 2150BA6A16546F7184AB4B6640695C008FE8DC29DEBF7D2402AA3C6DA168A929
3E003E3E3E003E3E3E00FFFFFF0038383865E1CFBCB1E8D2BBC0F6EDE4CEF6ED E4C606434A6A6A09B9060606F6744CD99E0BA16AB303142E36E4B9E43A05B2E7
E4CEF6EDE4CEF6EDE4CEF6EDE4CEF6EDE4CEE7D8CAB838383865383838003838 69C339AFD5FC6F68E9BB3CE0C8742538EFA4CB670B708DDC2953A62C292C2C84
38003838380038383800FFFFFF0031313149A89D9397EAD5BFC3F5E9DFCBF6ED 74BB097073831DE42F980C19561A7062860AA4BBCF8322ECE526C7438A9112A4
E4CEF6EDE4CEF6EDE4CEF6EDE4CEF6ECE2CEADA69E9D31313149313131003131 1A2B4386CD683E7BFEFC792057575777296DFFF41C6D285D610659166A903173
31003131310031313100FFFFFF00262626143B3A3874D7C9BCAFF3E6D9CBF6ED 289C3651E17FF3224E9BAAF06B448EB53A9FCDCECE0672F17BB0B310F7717AD5
E4CEF6EDE4CEF6EDE4CEF7EFE6D1E4DED9C84544437D34343424383838003939 7C2874D5857C6BB556CE9A0DE5915CBB683D82CF9E439F5C6D6D6DC3A4C387AF
39003A3A3A003C3C3C00FFFFFF001E1E1E001111112A2826257D9D9791A5EEE8 6587EE86ACD99A70DD5100A5B623A100B38F1E3DE2A139AD11E9E6AA9015B20B
E3C4F9F3EDD6EFEAE5C5A3A09EA92827278AACACACFF373737753737371F3939 E2A2A3AF91ABA5A5F58D95A5E5CE12FC5E9EEA380DF2E78C823BCEA3A178DEC8
39003A3A3A003C3C3C00FFFFFF001E1E1E000E0E0E0004040416040404560404 569FE6771C3520CF4A8DCF08F3F3C1D2C26227B91A1A1A6CD4A851465B376E4C
04790404048704040479040404560404042A0F0F0F86B8B5B5FF4241417E3838 AA282A82A43913E1D4F48150364F0DEE2ED0E0A139AD51EF069EEB164FCF2472
382A3A3A3A003C3C3C00FFFFFF001E1E1E000E0E0E0004040400040404000404 C85557576723468CE8AEA2A262BF79DDBAA3B56565F0DBDEDD70C47526040BBE
040004040400040404000404040004040400040404251A1A1A8FC8C1C1FF4F4D E2A139ADD5606F1366284B0EB9CD3EFD0ED0BD5FBF7EE693747402530E1EAC7C
4D88393939383C3C3C00FFFFFF001E1E1E000E0E0E0004040400040404000404 70E30648426BD4A30C65C969E3B3AFBFFE9AF5EAD5EBBB9E3D7B5A23AB10AF66
040004040400040404000404040004040400040404000404043328272799D9CE 686E4D3DCA50B6C5FFFC0CFC73AC5FBF5EDED3D3D31A594423D51E1E1E0C9F97
CEFF605C5C913A3A3A4DFFFFFF001E1E1E000E0E0E0004040400040404000404 F89D2FAE9930E420FD0E3188B1433839C489C784410B172E9C73E9D2A5B4C6C6
0400040404000404040004040400040404000404040004040400040404443B38 46A0916A3B3B3BDEEFDBD70F9D68CC8609188BA279829E5E699DBB7B13D04835
38A2E8D8D8FF32323276FFFFFF001E1E1E000E0E0E0004040400040404000404 3E03963D7BF60C5AA01A5D3762F8F055E804A68ABFBB07D29C9B3DFB05B440B5
0400040404000404040004040400040404000404040004040400040404000404 B2B2B2033E77336AF1D94A23D5868686CDFBF740673BBA7B70FF3B699E307060
045C090909892525252CFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 669D96D603A0916A3939B93E786D39231E3452FDE5975F369FFFE666F6204B91
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 7FE0F92FC2F35EC489C77F0CFA7C0D7DBE7F3ABA7F5AA8DFBE803DD8E1A2DAB0
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF D35588008D5493FFA1FBA785754E7358B5A7ADF0D1A1007875250768A49A7C59
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF F70F7ECE716B4BC9323378927BA615AAC99775FFE036F8CF44A6A6A66E342EB5
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 3163179CF584D7027F84BAAC14A0916AF23BBA7FF4F5F509371A4FCFD6626936
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 02D553569A420468A49A7C7458972E5D5AA17AC890216CCC9831841B8D1ED3C7
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000A7000000AA480000 307458AA857A2B5477E40F1B36AC05371A976AABB0E3064358F2B4C1AD502DCB
AACC0000AA480000A7000000A3000000A3000000A7000000AA480000AACC0000 979797678A8A8A2DB8D1983A5D89A54C5752454788008D54B7F5BB75EBC67AF7
AA480000A700FFFFFF00FFFFFF00FFFFFF00FFFFFF000000A7480000A7CC7777 EE2D895B8F1E3D9856FFDE2CC3445558E1BF967FFF68A4BAADDFB56B572970CD
FFFF0000A7CC0000A7480000A3000000A3000000A7480000A7CC7070F8FF0000 AC73E7CE6E0487AF9BE4FB47F5C77CF4D8175F7CC17414E55985DD78616DC07A
A7CC0000A748FFFFFF00FFFFFF00FFFFFF00FFFFFF000000A3CC7676FEFF4C4C FEFDA391EA4FF5EF3AEBB17B0B26ABD6B9E80B11A091EAFF85FBEF5F6CA5657F
D4FF7272FAFF0000A3CC0000A3480000A3480000A3CC6262EAFF4C4CD4FF5C5C
E4FF0000A3CCFFFFFF00FFFFFF00FFFFFF00FFFFFF000000A1480000A0CC6767
EFFF3636BEFF5E5EE6FF0000A0CC0000A0CC4F4FD7FF3636BEFF4545CDFF0000
A0CC0000A148FFFFFF00FFFFFF00FFFFFF00FFFFFF000000A00000009C480000
9BCC5353DBFF2E2EB7FF3D3DC6FF3131BAFF15159FFF1E1EA8FF00009BCC0000
9C480000A000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000A00000009B000000
9848000097CC2525B4FF1111A2FF1111A2FF1414A5FF000097CC000098480000
9B000000A000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000870000008D000000
9148000092CC1515AFFF1111ACFF1111ACFF1111ACFF000092CC000091480000
8D0000008700FFFFFF00FFFFFF00FFFFFF00FFFFFF000000870000008C480000
8DCC1111B8FF1111B8FF1111B8FF1111B8FF1111B8FF1111B8FF00008DCC0000
8C4800008700FFFFFF00FFFFFF00FFFFFF00FFFFFF0000008748000087CC1111
C4FF1111C4FF1111C4FF000087CC000087CC1111C4FF1111C4FF1111C4FF0000
87CC00008748FFFFFF00FFFFFF00FFFFFF00FFFFFF00000082CC1111D0FF1111
D0FF1111D0FF000082CC0000834800008348000082CC1111D0FF1111D0FF1111
D0FF000082CCFFFFFF00FFFFFF00FFFFFF00FFFFFF0000007548000072CC1111
D8FF000072CC00007548000082000000820000007548000072CC1111D8FF0000
72CC00007548FFFFFF00FFFFFF00FFFFFF00FFFFFF0000007200000061480000
5FCC00006148000072000000820000008200000072000000614800005FCC0000
614800007200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E69B3D33E89D3FCCE89D3FCCE89D
3FCCE89D3FCCE89D3FCCE89D3FCCE89D3FCCE89D3FCCE89D3FCCE89D3FCCE89D
3FCCE89D3FCCE69B3D33FFFFFF00FFFFFF00E2973A15DF9438AEF0BD69E6FEDE
92FFFCD68AFFFCD68AFFFCD68AFFFCD68AFFFCD589FFFCD589FFFDDA8EFFEFBA
66E6DF9438AEE2973A15FFFFFF00FFFFFF00E2973A00D98E3315D2872EAEE8B5
63E6F7CB7FFFEAAF63FFE0A559FFD69B4FFFD19549FFDDAC60FFDFA553E6D287
2EAED98E3315E2973A00FFFFFF00FFFFFF00E2973A00D98E3300CB802915C379
23AEDCA553E6E3B25DFFD3953BFFD3953BFFDFA952FFD69A45E6C37923AECB80
2915D98E3300E2973A00FFFFFF00FFFFFF00E2973A00D98E3300CB802900BC71
1D15B56A18AED69737E6F1B436FFF0B130FFD4922DE6B56A18AEBC711D15CB80
2900D98E3300E2973A00FFFFFF00FFFFFF00E2973A00D98E3300CB802900BC71
1D00AE631215A75C0DAED38D19E6D38C18E6A75C0DAEAE631215BC711D00CB80
2900D98E3300E2973A00FFFFFF00FFFFFF00E2973A00D98E3300CB802900BC71
1D00AE631200A05509159B5005AE9B5005AEA0550915AE631200BC711D00CB80
2900D98E3300E2973A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A75C0D00B56A1800C3792300D287
2E00DF943800E79C3E5CE89D3FCCE79C3E5CDF943800D2872E00C3792300B56A
1800A75C0D00FFFFFF00FFFFFF00FFFFFF00A75C0D00B56A1800C3792300D287
2E00DE93375CDF9438CCFFE599FFDF9438CCDE93375CD2872E00C3792300B56A
1800A75C0D00FFFFFF00FFFFFF00FFFFFF00A75C0D00B56A1800C3792300D085
2D5CD2872ECCFEE195FFF8C77BFFFDDE92FFD2872ECCD0852D5CC3792300B56A
1800A75C0D00FFFFFF00FFFFFF00FFFFFF00A75C0D00B56A1800C177225CC379
23CCFBD98DFFECB367FFE1A75BFFD79C50FFE7BC70FFC37923CCC177225CB56A
1800A75C0D00FFFFFF00FFFFFF00FFFFFF00A75C0D00B368175CB56A18CCF8CF
80FFE6A53EFFDE9D2FFFDD9C2EFFDD9C2EFFDD9C2EFFE6AE47FFB56A18CCB368
175CA75C0D00FFFFFF00FFFFFF00FFFFFF00A55A0C5CA75C0DCCF9C966FFFAB8
27FFFBB71CFFFBB518FFFBB414FFFBB311FFFBB20FFFFBB20EFFFBB516FFA75C
0DCCA55A0C5CFFFFFF00FFFFFF00FFFFFF009C5106999B5005CC9B5005CC9B50
05CC9B5005CC9B5005CC9B5005CC9B5005CC9B5005CC9B5005CC9B5005CC9B50
05CC9C510699FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF004F4F4F005050500052525200535353005454
54155555553E555555555555556355555563555555555555553E545454155353
530052525200505050004F4F4F004F4F4F0050505000525252075353533D7373
7378C8C8C8D2EAEAEAFFE6E6E6FFE6E6E6FFEAEAEAFFC7C7C7D2727272785353
533D52525207505050004F4F4F004F4F4F00505050075151514D9F9F9FA1E6E6
E6FFD7B0A3FFD08C75FFCD6C4BFFCD6C4BFFD08C75FFD6AFA2FFE3E4E4FF9D9D
9DA15151514D505050074F4F4F004E4E4E004E4E4E3F9D9D9DA2DFDFDFFFCB79
5EFFDB7A58FFEE906EFFF49674FFF49573FFED8E6CFFDA7856FFCB795EFFDBDC
DCFF999999A24E4E4E3F4E4E4E004B4B4B176C6C6C7CDFE0E0FFC8755AFFE283
61FFDC7A58FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2987FFFDF7E5CFFC875
5AFFD8D8D8FF6969697C4B4B4B1748484842BEBFBFD4C9A295FFD57452FFE281
5FFFD26C4AFFD5A291FFD5A291FFE6C2B6FFFFFFFFFFE0AD9CFFDF7C5AFFD16E
4CFFC7A194FFB2B3B3D4484848424545455CDBDCDCFFC07C65FFDF805EFFCF69
47FFCF6947FFCA6442FFC05937FFC28775FFCCCCCCFFBC8877FFAD4624FFC360
3EFFC07C65FFCBCCCCFF4545455C4242426CCFCFCFFFBC5B3BFFDD7D5BFFC962
40FFBD5330FFB44A26FFBC7259FFD1CFCFFFC7AEA5FFB24824FFB34925FFBD55
32FFBC5B3BFFC3C3C3FF4242426C3E3E3E6ECCCCCCFFB95737FFD5714DFFBF50
2AFFBD4E27FFB94B26FFDBDBDBFFDBDBDBFFB94C26FFBD4E27FFBD4E27FFC154
2EFFB95737FFC0C0C0FF3E3E3E6E3A3A3A61D0CFCFFFB9745DFFCF643EFFC954
2AFFC9542AFFC9542AFFBB4D27FFBB4D27FFC9542AFFC9542AFFC9542AFFC554
2CFFB9745DFFC2C0C0FF3A3A3A6137373747ACAAAAD7C09789FFBF5631FFD85F
33FFD55A2DFFCB542AFFEEEEEEFFEEEEEEFFCB542AFFD55A2DFFD55A2DFFBC4F
29FFBF9588FFA29F9FD7373737473434341953515186D4CECEFFB35F44FFC957
2FFFE16132FFD3592DFFEEEEEEFFEEEEEEFFD3592DFFE15F30FFC8532AFFB35F
44FFD0C9C9FF5150508634343419303030002F2F2F48827E7EACDBD1D1FFAC57
3CFFB6461FFFD6592AFFE56230FFE56230FFD6592AFFB6461FFFAC573CFFDACF
CFFF817C7CAC2F2F2F48303030002E2E2E002C2C2C092626265C807979AFE4D6
D6FFC69689FFAD644EFF943312FF943312FFAD644EFFC69689FFE3D6D6FF7F79
79AF2626265C2C2C2C092E2E2E002E2E2E002C2C2C001E1E1E091717174F3D3A
3A92B2A6A6DCEBDADAFFEBDADAFFEBDADAFFEBDADAFFB2A6A6DC3D3A3A921717
174F1E1E1E092C2C2C002E2E2E002E2E2E002C2C2C001E1E1E00131313000D0D
0D1D0B0B0B540B0B0B740B0B0B870B0B0B870B0B0B740B0B0B540D0D0D1D1313
13001E1E1E002C2C2C002E2E2E00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF007A7A7A117C7C7C547C7C7C677C7C7C547A7A
7A1177777700555555000000A2000000A200000099000000A6000000A7210000
A8A60000A8CC0000A8A60000A72165656557CACACAB8FDFDFDFFCACACAB86565
65575B5B5B005555550016168E0000009FCC0000993300009E0000009FA73F3F
D5E87272FEFF3F3FD5E800009FA74545456FF2F2F2FFF2F2F2FFF2F2F2FF4545
456F55555566555555662B2B7400000092B3000092CC00009200000092CC5656
F5FF5656F5FF5656F5FF000092CC2525255E9F9F9FBDE4E4E4FF9F9F9FBD2525
255E474747005555550016167700000084CC00008B3300008600000084A71F1F
BEE83434EBFF1F1FBEE8000084A70E0E0E140B0B0B610B0B0B770B0B0B610E0E
0E141010100055555500000080000000800000008B0000006E0000006B210000
67A6000067CC000067A600006B21FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF007A7A7A117C7C7C547C7C7C677C7C7C547A7A
7A1177777700555555005555550055555500EA846200EB856329EC8664D0EC86
64FFEC8664D0EB856329FFFFFF0065656557CACACAB8FDFDFDFFCACACAB86565
65575B5B5B0055555500555555005555550079605700E27C5AD0EEA891FFF7CE
C1FFEEA891FFE27C5AD0FFFFFF004545456FF2F2F2FFF2F2F2FFF2F2F2FF4545
456F5454546654545466545454665454546654545466D46F4DFFF0C7BAFFF0C7
BAFFF0C7BAFFD46F4DFFFFFFFF002525255E9F9F9FBDE4E4E4FF9F9F9FBD2525
255E45454500505050004C4C4C66505050006E554D00C4613FD0D7927BFFE8BF
B2FFD7927BFFC4613FD0FFFFFF000E0E0E140B0B0B610B0B0B770B0B0B610E0E
0E1410101000414141004141416641414100B9563400B8553329B65331D0B653
31FFB65331D0B8553329FFFFFF000B0B0B000606060006060600060606000B0B
0B002323230035353500353535663535350077463500B6533100B3502E00B350
2E00B3502E00B6533100FFFFFF000B0B0B000606060006060600060606000B0B
0B00282828002828280028282866282828006E372600B1452300AE442200AE44
2200AE442200B1452300FFFFFF000B0B0B000606060006060600060606001111
11001A1A1A001A1A1A001A1A1A661A1A1A00B3462400B2462429B14523D0B145
23FFB14523D0B2462429FFFFFF000B0B0B000606060006060600080808000F0F
0F000F0F0F000F0F0F000F0F0F660A0A0A0034180F00BD4B29D0DB9078FFF7CE
C1FFDB9078FFBD4B29D0FFFFFF000B0B0B000606060006060600070707000707
070007070700070707000606064D0505056605050566CC5331FFF0C7BAFFF0C7
BAFFF0C7BAFFCC5331FFFFFFFF000B0B0B000606060006060600070707000707
0700070707000707070005050500030303003A1A1100DB5B39D0E4917AFFE8BF
B2FFE4917AFFDB5B39D0FFFFFF000B0B0B000606060006060600070707000707
070007070700070707000505050003030300E5613F00E7624029E86341D0E863
41FFE86341D0E7624029FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00
} }
end end
object MainMenu: TMainMenu object MainMenu: TMainMenu
Images = ImageList Images = ImageList
left = 168 Left = 168
top = 136 Top = 136
object MnuFile: TMenuItem object MnuFile: TMenuItem
Caption = 'File' Caption = 'File'
object MnuFileOpen: TMenuItem object MnuFileOpen: TMenuItem
@ -748,8 +571,8 @@ object MainForm: TMainForm
end end
object ActionList: TActionList object ActionList: TActionList
Images = ImageList Images = ImageList
left = 168 Left = 168
top = 64 Top = 64
object AcFileOpen: TAction object AcFileOpen: TAction
Caption = 'Open' Caption = 'Open'
Hint = 'Open xls file' Hint = 'Open xls file'
@ -811,20 +634,20 @@ object MainForm: TMainForm
object OpenDialog: TOpenDialog object OpenDialog: TOpenDialog
DefaultExt = '.xls' DefaultExt = '.xls'
Filter = 'Excel files (*.xls)|*.xls' Filter = 'Excel files (*.xls)|*.xls'
left = 160 Left = 160
top = 296 Top = 296
end end
object RecentFilesPopupMenu: TPopupMenu object RecentFilesPopupMenu: TPopupMenu
left = 160 Left = 160
top = 208 Top = 208
object MenuItem1: TMenuItem object MenuItem1: TMenuItem
Caption = 'New Item1' Caption = 'New Item1'
end end
end end
object TreePopupMenu: TPopupMenu object TreePopupMenu: TPopupMenu
Images = ImageList Images = ImageList
left = 160 Left = 160
top = 392 Top = 392
object MenuItem3: TMenuItem object MenuItem3: TMenuItem
Action = AcNodeExpand Action = AcNodeExpand
end end
@ -842,7 +665,7 @@ object MainForm: TMainForm
object SaveDialog: TSaveDialog object SaveDialog: TSaveDialog
DefaultExt = '.txt' DefaultExt = '.txt'
Filter = 'Text files (*.txt)|*.txt' Filter = 'Text files (*.txt)|*.txt'
left = 289 Left = 289
top = 296 Top = 296
end end
end end

View File

@ -115,6 +115,7 @@ type
procedure CbHexAddressChange(Sender: TObject); procedure CbHexAddressChange(Sender: TObject);
procedure CbHexEditorLineSizeChange(Sender: TObject); procedure CbHexEditorLineSizeChange(Sender: TObject);
procedure CbHexSingleBytesChange(Sender: TObject); procedure CbHexSingleBytesChange(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean); procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject); procedure FormDestroy(Sender: TObject);
@ -133,6 +134,7 @@ type
private private
MemStream: TMemoryStream; MemStream: TMemoryStream;
OLEStorage: TOLEStorage; OLEStorage: TOLEStorage;
FActivated: Boolean;
FFileName: String; FFileName: String;
FFormat: TsSpreadsheetFormat; FFormat: TsSpreadsheetFormat;
FBuffer: TBIFFBuffer; FBuffer: TBIFFBuffer;
@ -385,7 +387,7 @@ end;
procedure TMainForm.BeforeRun; procedure TMainForm.BeforeRun;
begin begin
ReadFromIni; // ReadFromIni;
ReadCmdLine; ReadCmdLine;
end; end;
@ -576,6 +578,15 @@ begin
HexEditor.DigitGrouping := IfThen(CbHexSingleBytes.Checked, 1, 2); HexEditor.DigitGrouping := IfThen(CbHexSingleBytes.Checked, 1, 2);
end; end;
procedure TMainForm.FormActivate(Sender: TObject);
begin
if not FActivated then
begin
ReadFromIni;
FActivated := true;
end;
end;
procedure TMainForm.DumpToFile(const AFileName: String); procedure TMainForm.DumpToFile(const AFileName: String);
var var
list: TStringList; list: TStringList;