Marco Web Center |
|
Chapter 13 - Project Total |
Project Structure |
Total.dpr |
program Total; uses Forms, TotalF in 'TotalF.pas' {SearchForm}; {$R *.RES} begin Application.Initialize; Application.CreateForm(TSearchForm, SearchForm); Application.Run; end. |
TotalF.pas |
unit TotalF; interface uses SysUtils, Windows, Messages, Classes, Graphics, Controls, StdCtrls, Forms, DBCtrls, DB, Buttons, DBTables, Mask, ExtCtrls, Dialogs, Spin, DBActns, ActnList, ImgList, ComCtrls, ToolWin; type TSearchForm = class(TForm) DataSource1: TDataSource; Table1: TTable; Table1EmpNo: TIntegerField; Table1LastName: TStringField; Table1FirstName: TStringField; Table1PhoneExt: TStringField; Table1HireDate: TDateTimeField; Table1Salary: TCurrencyField; ScrollBox: TScrollBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; EditEmpNo: TDBEdit; EditLastName: TDBEdit; EditFirstName: TDBEdit; EditPhoneExt: TDBEdit; EditHireDate: TDBEdit; EditSalary: TDBEdit; ToolBar1: TToolBar; ToolButton1: TToolButton; ToolButton2: TToolButton; ToolButton3: TToolButton; ToolButton4: TToolButton; ToolButton5: TToolButton; EditName: TEdit; ToolButton7: TToolButton; ActionList: TActionList; DataSetFirst1: TDataSetFirst; DataSetLast1: TDataSetLast; DataSetNext1: TDataSetNext; DataSetPrior1: TDataSetPrior; ActionGoto: TAction; ImageList: TImageList; ToolButton8: TToolButton; SpinEdit1: TSpinEdit; ToolButton9: TToolButton; ToolButton10: TToolButton; ActionTotal: TAction; ActionIncrease: TAction; procedure FormCreate(Sender: TObject); procedure ActionIncreaseExecute(Sender: TObject); procedure ActionTotalExecute(Sender: TObject); procedure ActionGotoExecute(Sender: TObject); procedure ActionGotoUpdate(Sender: TObject); private { private declarations } public { public declarations } end; var SearchForm: TSearchForm; implementation {$R *.DFM} procedure TSearchForm.FormCreate(Sender: TObject); begin Table1.IndexFieldNames := 'LastName'; Table1.First; end; procedure TSearchForm.ActionIncreaseExecute(Sender: TObject); var Bookmark: TBookmarkStr; Total: Real; begin // store the current position in a bookmark Bookmark := Table1.Bookmark; Table1.DisableControls; Total := 0; try Table1.First; while not Table1.EOF do begin // start edit mode Table1.Edit; Table1Salary.Value := Round (Table1Salary.Value * SpinEdit1.Value) / 100; Total := Total + Table1Salary.Value; Table1.Next; end; finally // go back to the bookmark Table1.Bookmark := Bookmark; Table1.EnableControls; end; MessageDlg ('Sum of new salaries is ' + Format ('%m', [Total]), mtInformation, [mbOk], 0); end; procedure TSearchForm.ActionTotalExecute(Sender: TObject); var Bookmark: TBookmarkStr; Total: Real; begin // store the current position in a bookmark Bookmark := Table1.Bookmark; Table1.DisableControls; Total := 0; try Table1.First; while not Table1.EOF do begin Total := Total + Table1Salary.Value; Table1.Next; end; finally // go back to the bookmark Table1.Bookmark := Bookmark; Table1.EnableControls; end; MessageDlg ('Sum of new salaries is ' + Format ('%m', [Total]), mtInformation, [mbOk], 0); end; procedure TSearchForm.ActionGotoExecute(Sender: TObject); begin if not Table1.Locate ('LastName', EditName.Text, []) then MessageDlg ('Name not found', mtError, [mbOk], 0); end; procedure TSearchForm.ActionGotoUpdate(Sender: TObject); begin ActionGoto.Enabled := EditName.Text <> ''; end; end. |
TotalF.dfm |
object SearchForm: TSearchForm Left = 281 Top = 141 Width = 491 Height = 187 Caption = 'Table Search' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clBlack Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = True Position = poScreenCenter OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 13 object ScrollBox: TScrollBox Left = 0 Top = 27 Width = 483 Height = 133 HorzScrollBar.Margin = 6 VertScrollBar.Margin = 6 Align = alClient BorderStyle = bsNone TabOrder = 0 object Label1: TLabel Left = 230 Top = 17 Width = 60 Height = 13 Alignment = taRightJustify AutoSize = False Caption = '&Emp No' FocusControl = EditEmpNo end object Label2: TLabel Left = 14 Top = 15 Width = 60 Height = 13 Alignment = taRightJustify AutoSize = False Caption = '&Last Name' FocusControl = EditLastName end object Label3: TLabel Left = 14 Top = 36 Width = 60 Height = 13 Alignment = taRightJustify AutoSize = False Caption = '&First Name' FocusControl = EditFirstName end object Label4: TLabel Left = 14 Top = 58 Width = 60 Height = 13 Alignment = taRightJustify AutoSize = False Caption = '&Phone Ext' FocusControl = EditPhoneExt end object Label5: TLabel Left = 230 Top = 39 Width = 60 Height = 13 Alignment = taRightJustify AutoSize = False Caption = '&Hire Date' FocusControl = EditHireDate end object Label6: TLabel Left = 14 Top = 79 Width = 60 Height = 13 Alignment = taRightJustify AutoSize = False Caption = '&Salary' FocusControl = EditSalary end object EditEmpNo: TDBEdit Left = 296 Top = 14 Width = 57 Height = 21 Color = clWindow DataField = 'EmpNo' DataSource = DataSource1 TabOrder = 0 end object EditLastName: TDBEdit Left = 80 Top = 12 Width = 97 Height = 21 Color = clWindow DataField = 'LastName' DataSource = DataSource1 TabOrder = 1 end object EditFirstName: TDBEdit Left = 80 Top = 33 Width = 97 Height = 21 Color = clWindow DataField = 'FirstName' DataSource = DataSource1 TabOrder = 2 end object EditPhoneExt: TDBEdit Left = 80 Top = 55 Width = 97 Height = 21 Color = clWindow DataField = 'PhoneExt' DataSource = DataSource1 TabOrder = 3 end object EditHireDate: TDBEdit Left = 296 Top = 36 Width = 57 Height = 21 Color = clWindow DataField = 'HireDate' DataSource = DataSource1 TabOrder = 4 end object EditSalary: TDBEdit Left = 80 Top = 76 Width = 97 Height = 21 Color = clWindow DataField = 'Salary' DataSource = DataSource1 TabOrder = 5 end end object ToolBar1: TToolBar Left = 0 Top = 0 Width = 483 Height = 27 Caption = 'ToolBar1' Customizable = False EdgeBorders = [ebTop, ebBottom] Flat = True Images = ImageList ParentShowHint = False ShowHint = True TabOrder = 1 object ToolButton1: TToolButton Left = 0 Top = 0 Action = DataSetFirst1 end object ToolButton2: TToolButton Left = 23 Top = 0 Action = DataSetPrior1 end object ToolButton3: TToolButton Left = 46 Top = 0 Action = DataSetNext1 end object ToolButton4: TToolButton Left = 69 Top = 0 Action = DataSetLast1 end object ToolButton5: TToolButton Left = 92 Top = 0 Width = 8 Caption = 'ToolButton5' ImageIndex = 3 Style = tbsSeparator end object EditName: TEdit Left = 100 Top = 0 Width = 137 Height = 22 Color = clWindow Font.Charset = DEFAULT_CHARSET Font.Color = clBlack Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] ParentFont = False TabOrder = 0 Text = 'Williams' end object ToolButton7: TToolButton Left = 237 Top = 0 Action = ActionGoto end object ToolButton8: TToolButton Left = 260 Top = 0 Width = 8 Caption = 'ToolButton8' ImageIndex = 6 Style = tbsSeparator end object ToolButton10: TToolButton Left = 268 Top = 0 Action = ActionTotal end object SpinEdit1: TSpinEdit Left = 291 Top = 0 Width = 49 Height = 22 Color = clWindow Font.Charset = DEFAULT_CHARSET Font.Color = clBlack Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] Increment = 5 MaxValue = 200 MinValue = 50 ParentFont = False TabOrder = 1 Value = 105 end object ToolButton9: TToolButton Left = 340 Top = 0 Action = ActionIncrease end end object DataSource1: TDataSource DataSet = Table1 Left = 263 Top = 109 end object Table1: TTable Active = True DatabaseName = 'DBDEMOS' TableName = 'employee.db' Left = 316 Top = 109 object Table1EmpNo: TIntegerField FieldName = 'EmpNo' end object Table1LastName: TStringField FieldName = 'LastName' end object Table1FirstName: TStringField FieldName = 'FirstName' Size = 15 end object Table1PhoneExt: TStringField FieldName = 'PhoneExt' Size = 4 end object Table1HireDate: TDateTimeField FieldName = 'HireDate' end object Table1Salary: TCurrencyField FieldName = 'Salary' end end object ActionList: TActionList Images = ImageList Left = 214 Top = 111 object DataSetFirst1: TDataSetFirst Category = 'Dataset' Caption = '&First' Hint = 'First' ImageIndex = 0 end object DataSetLast1: TDataSetLast Category = 'Dataset' Caption = '&Last' Hint = 'Last' ImageIndex = 1 end object DataSetNext1: TDataSetNext Category = 'Dataset' Caption = '&Next' Hint = 'Next' ImageIndex = 2 end object DataSetPrior1: TDataSetPrior Category = 'Dataset' Caption = '&Prior' Hint = 'Prior' ImageIndex = 3 end object ActionGoto: TAction Caption = '&Goto' Hint = 'Goto' ImageIndex = 4 OnExecute = ActionGotoExecute OnUpdate = ActionGotoUpdate end object ActionTotal: TAction Caption = '&Total' Hint = 'Total' ImageIndex = 6 OnExecute = ActionTotalExecute end object ActionIncrease: TAction Caption = '&Increase' Hint = 'Increase' ImageIndex = 7 OnExecute = ActionIncreaseExecute end end object ImageList: TImageList Left = 24 Top = 112 Bitmap = { 494C010108000900040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 0000000000003600000028000000400000003000000001001000000000000018 000000000000000000000000000000000000112F6B457C610328B143982B0D7C 46433C754B0220225C752702202A5C75E2016041D80DFD470044BB331100DF68 9027DD480044B817DF0DDF09DF09DF05DF057D7EFF479B7DC14A3C7D46433C75 410220622B720B0B40451D62F17F5F292A3AA101DF6890277D4B0034E01B1972 A96B12001146FF7FAA5B11005146FF7FAA435633272A0B00C0110C624E043633 51253758991D321D00002E20EC40FA7FDF61DD31112200002C221F7EC0011700 00401F38017EC001EC02A627F00DC009F0034E30F07DC005110D18000000F005 C0150C3E1F38E23B4129DF11DF0D0D744300207E3D7C2E28AA017D0900449F7D C14A3C7D26433C755102E01B1A72A9431200E82B2C4A0000403540452928117C 12020030100730030044F27DFF2B2C265F452828517C4A311007D0020030F06A FF7F204014008045117FFF3327220000014600002C42F97F9F1D300100388F45 CA32471A0000CE313162FF7FEC440900C0312C42F87F9F1D300100388A45527F FF33472A00000E19B81BC16A2C466A7FFF07A95B1200112EFF7FAA4B1100512E FF7FAA3310000B628E7C2E74957F3F7EDF6490273D4A007C46433C754F022062 FD0300406F000E446A183906F00DC001110D4647027EC025317D8A4510000028 0D2851052A065F420000F133103B81411F1401460000513EFF7F8A45E92B1105 2A0A5F29713EFF7FFD0300401F04D0030044006201231D0000740762CE041615 AA01C16A407DAA3F04001007C12645351F00205818205E758B00006201231D00 0030E015EC239E45CA33476A00000112FF7FF075C009317D3142000011791146 00005D7CEE775C02607DCE775B026019782D2B720B070028B143787DFF2B4A45 4B444E18BF01DF6890271D4B0034E01B1972BE2B040010072647A94750020044 10020040D80D187500008045EA2B2A58E903E92B3D0200189F61C803A0670000 114A00007135C1223E5812690000A965076CC1223E5C103100000C3E04006E41 D819C12A4535205819245F759A0000622158A82846472A28C1662079AA5B0400 10077D041615CA6851052A5819245F75930017030040370300000E18B87F0000 F005DF05F03BC060BD030040170200002E40370200000E18B86700002C4A1F00 8045EA4751020030117E00002C229F45EB33607DC162AA3B13002B221F622E30 17105D020004562BED03007CEE7791000062017ECE04362BFD4C002C1179103B E23BBF1F13008B5D80740A0020585A35E03B0000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000009E41D8011177214E1200006E8E1B 782D6B2D18002A7610774A29D1050647C8470000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000EF3D000000000000EF3D 000000000000EF3D000000000000EF3D00000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000EF3D0000EF3D0000EF3D 0000EF3D0000EF3D0000EF3D0000EF3D00000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000EF3DEF3D00000000000000000000 000000000000000000000000000000000000FF0300000000E07FFF7FE07FFF7F E07F000000000000000000000000000000000000E07F00000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000FF030000E07FFF7FE07FFF7F0000 000000000000000000000000000000000000000000000000FF0300000000E07F FF7FE07FFF7FE07F000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000EF3D0000007C007C00000000 0000000000000000000000000000007C007CFF030000FF7FE07FFF7FE07FFF7F E07FFF7F0000000000000000000000000000000000000000FF030000E07FFF7F E07FFF7F00000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000007C0000 000000000000000000000000007C00000000FF030000E07FFF7FE07FFF7F0000 000000000000000000000000000000000000000000000000FF030000FF7FE07F FF7FE07FFF7FE07FFF7F00000000000000000000000000000000000000000000 000000000000000000000000000000000000EF3DEF3D0000EF3DEF3DEF3D007C EF3DEF3DEF3DEF3DEF3D007CEF3DEF3DEF3DFF030000FF7FE07FFF7FE07FFF7F E07FFF7FE07FFF7FE07F00000000007C007C000000000000FF030000E07FFF7F E07FFF7F00000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000007C 00000000000000000000007C000000000000FF030000E07FFF7F000000000000 0000000000000000000000000000007C007C000000000000FF030000FF7FE07F FF7FE07FFF7FE07FFF7FE07FFF7FE07F00000000000000000000000000000000 0000000000000000000000000000000000000000EF3D00000000000000000000 007C000000000000007C0000000000000000000000000000E07FFF7FE07F0000 000000000000000000000000000000000000000000000000FF030000E07FFF7F 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000007C007C007C000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000E07F FF7FE07F00000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000EF3DEF3D0000EF3DEF3DEF3DEF3D EF3DEF3DEF3DEF3DEF3DEF3DEF3DEF3DEF3D0000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000EF3D00000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000EF3DEF3D0000EF3DEF3DEF3DEF3D EF3DEF3DEF3DEF3DEF3DEF3DEF3DEF3DEF3D0000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000104200000000 0000000000000000104200000000000000000000000000000000104200000000 0000000000000000104200000000000000000000000000000000000000001042 0000000000000000000000000000000000000000000000000000000000000000 0000000010420000000000000000000000000000000000000000104200000000 0000000010420000000000000000000000000000000000000000000000001042 0000000000000000104200000000000000000000000000000000000000000000 0000104200000000000000000000000000000000000000000000000000000000 1042000000000000000000000000000000000000000000000000104200000000 1042000000000000000000000000000000000000000000000000000000000000 0000104200000000104200000000000000000000000000000000000000000000 0000000000001042000000000000000000000000000000000000000010420000 0000000000000000000000000000000000000000000000000000104210420000 0000000000000000000000000000000000000000000000000000000000000000 0000000000001042104200000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000104200000000 1042000000000000000000000000000000000000000000000000000000000000 0000104200000000104200000000000000000000000000000000000000000000 0000000000001042000000000000000000000000000000000000000010420000 0000000000000000000000000000000000000000000000000000104200000000 0000000010420000000000000000000000000000000000000000000000001042 0000000000000000104200000000000000000000000000000000000000000000 0000104200000000000000000000000000000000000000000000000000000000 1042000000000000000000000000000000000000000000000000104200000000 0000000000000000104200000000000000000000000000000000104200000000 0000000000000000104200000000000000000000000000000000000000001042 0000000000000000000000000000000000000000000000000000000000000000 0000000010420000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000424D3E000000000000003E000000 2800000040000000300000000100010000000000800100000000000000000000 000000000000000000000000FFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFF00000000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF0000FF0000FFFFFFFFFF0000FF0000FFFFFFFFFFFFDDDDFFF8FFFFFFFFD555 20F81FFFC0070000007F041FE7E7DFFF007C000FF3F787FC003C000FF9F7DBFB 000F0007FCFF000000040001FE7FDDF7000C0000FF3F9EEF01FF0001FE7FDF1F E3FC003FFCFF0000FFFCFC7FF9F7DFFFFFFFFFFFF3F79FFFFFF8FFFFE7E7DFFF FFF8FFFFC0070000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7E7F9FFFF9F E787E1E7F87FFE1FE607E067F81FF81FE007E007F80FF01FE607E067F81FF81F E787E1E7F87FFE1FE7E7E7E7F9FFFF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 000000000000} end end |