C# · 12月 28, 2021

ListView 百分比进度条(delphi版)

在看代码之前先给大家附上效果图:

废话不多说了,直接给大家贴代码了。

unit Unit1;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls,ComCtrls,ImgList;typeTForm1 = class(TForm)btn1: TButton;lv1: TListView;trckbr1: TTrackBar;il1: TImageList;procedure lv1CustomDraw(Sender: TCustomListView; const ARect: TRect; var DefaultDraw: Boolean);procedure lv1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);procedure btn1Click(Sender: TObject);procedure trckbr1Change(Sender: TObject);privatefunction ReDrawItem(HwndLV: HWND; ItemIndex: integer): boolean;{ Private declarations }public{ Public declarations }end;varForm1: TForm1;implementationusesCommCtrl;{$R *.dfm}//画状态条procedure DrawSubItem(LV: TListView; Item: TListItem; SubItem: Integer; Prosition: Single; Max,Style: Integer; IsShowProgress: Boolean; DrawColor: TColor = $00005B00; FrameColor: TColor = $00002F00);//获取SubItem的区域function GetItemRect(hWndLV: HWnd; iItem,iSubItem: Integer): TRect;varRect: TRect;beginListView_GetSubItemRect(hWndLV,iItem,iSubItem,@Rect);Result := Rect;end;varPaintRect,R: TRect;i,iWidth,x,y: Integer;S: string;beginwith lv dobeginPaintRect := GetItemRect(lv.Handle,Item.Index,SubItem);R := PaintRect;if Prosition >= Max thenProsition := 100elsebeginif Prosition <= 0 thenProsition := 0elseProsition := Round((Prosition / MAX) * 100);end;if (Prosition = 0) and (not IsShowProgress) thenCanvas.FillRect(r) //如果是0 ,直接显示空白elsebegin//先填充背景Canvas.FillRect(r);Canvas.Brush.Color := Color;//画一个外框InflateRect(R,-2,-2);Canvas.Brush.Color := FrameColor;Canvas.FrameRect(R);Canvas.Brush.Color := Color;InflateRect(R,-1,-1);//InflateRect(R,-1);//根据百分比计算出要花的进度条内容概述iWidth := R.Right – Round((R.Right – R.Left) * ((100 – Prosition) / 100));case Style of0: //实心beginCanvas.Brush.Color := DrawColor;R.Right := iWidth;Canvas.FillRect(R);end;1: //竖线填充begini := r.Left;while i < iWidth dobeginCanvas.Pen.Color := Color;Canvas.MoveTo(i,R.Top);Canvas.Pen.Color := DrawColor;Canvas.LineTo(i,R.Bottom);Inc(i,3);end;end;end; //case end//画好进度条后,现在要做的就是显示进度数字了Canvas.Brush.Style := bsClear;if Prosition = Round(Prosition) thenS := Format(‘%d%%’,[Round(Prosition)])elseS := FormatFloat(‘#0.0′,Prosition);with PaintRect dobeginx := Left + (Right – Left + 1 – Canvas.TextWidth(S)) div 2;y := Top + (Bottom – Top + 1 – Canvas.TextHeight(S)) div 2;end;SetBkMode(Canvas.Handle,TRANSPARENT);Canvas.TextRect(PaintRect,y,S);end;//画完恢复Canvas.Brush.Color := Color;end;end;procedure TForm1.lv1CustomDraw(Sender: TCustomListView; const ARect: TRect; var DefaultDraw: Boolean);beginend;//上面是画进度条的,现在要给TlistView处理Item重绘的消息,事件是OnCustomDrawItem,需要说明的是,如果想要随心所欲的自画Item,那么就要全部自己来完成,不再需要系统来处理:procedure TForm1.lv1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);varBoundRect,Rect: TRect;i: integer;TextFormat: Word;LV: TListView; //这个子过程是用来画Check@R_230_2419@和ImageList的procedure Draw_Check@R_230_2419@_ImageList(r: TRect; aCanvas: TCanvas; Checked: Boolean);varR1: TRect;i: Integer;beginif Sender.Check@R_230_2419@es thenbeginaCanvas.Pen.Color := clBlack;aCanvas.Pen.Width := 2;//画Check@R_230_2419@外框aCanvas.Rectangle(R.Left + 2,R.Top + 2,R.Left + 14,R.Bottom – 2);if Checked then //画Check@R_230_2419@的钩beginaCanvas.MoveTo(R.Left + 4,R.Top + 6);aCanvas.LineTo(R.Left + 6,R.Top + 11);aCanvas.LineTo(R.Left + 11,R.Top + 5);end;aCanvas.Pen.Width := 1;end;//开始画图标i := 2; //ImageIndex的值,可以任意if i > -1 thenbegin//获取图标的RECTif Boolean(ListView_GetSubItemRect(sender.Handle,item.Index,LVIR_ICON,@R1)) thenbegin//ImageList_Stats.Draw(LV.Canvas,R1.Left,R1.Top,i);if item.ImageIndex > -1 thenLV.SmallImages.Draw(LV.Canvas,R1.Right + 2,item.ImageIndex);end;end;end;beginLV := TListView(Sender);BoundRect := Item.DisplayRect(drBounds);InflateRect(BoundRect,0);//这个地方你可以根据自己的要求设置成想要的颜色,实现突出显示LV.Canvas.Font.Color := clBtnText;//查看是否被选中if Item.Selected thenbeginif cdsFocused in State thenbeginLV.Canvas.Brush.Color := $00ECCCB9; // //clHighlight;endelsebeginLV.Canvas.Brush.Color := $00F8ECE5; //clSilver;end;endelsebeginif (Item.Index mod 2) = 0 thenLV.Canvas.Brush.Color := clWhiteelseLV.Canvas.Brush.Color := $00F2F2F2;end;LV.Canvas.FillRect(BoundRect); // 初始化背景for i := 0 to LV.Columns.Count – 1 dobegin//获取SubItem的RectListView_GetSubItemRect(LV.Handle,i,LVIR_LABEL,@Rect);case LV.Columns[i].Alignment oftaLeftJustify:TextFormat := DT_LEFT;taRightJustify:TextFormat := DT_RIGHT;taCenter:TextFormat := DT_CENTER;elseTextFormat := DT_CENTER;end;case i of0: //画Caption,0表示Caption,不是Subitembegin//先画选择框和图标Draw_Check@R_230_2419@_ImageList(BoundRect,LV.Canvas,Item.Checked);//再画Caption的文字InflateRect(Rect,-(5 + il1.Width),0); //向后移3个像素,避免被后面画线框时覆盖//InflateRect(Rect,-(5),避免被后面画线框时覆盖DrawText(LV.Canvas.Handle,PAnsiChar(Item.Caption),Length(Item.Caption),Rect,DT_VCENTER or DT_SINGLELINE or DT_END_ELLIPSIS or TextFormat);end;1..MaxInt: //画SubItem[i]beginif (i – 1) = 1 then //显示状态条,本示例是第三栏显示,可以随便定beginDrawSubItem(LV,Item,StrToFloatDef(Item.SubItems[i – 1],0),100,True);endelsebegin//画SubItem的文字InflateRect(Rect,-2);if i – 1 <= Item.SubItems.Count – 1 thenDrawText(LV.Canvas.Handle,PCHAR(Item.SubItems[i – 1]),Length(Item.SubItems[i – 1]),DT_VCENTER or DT_SINGLELINE or DT_END_ELLIPSIS or TextFormat);end;end;end; //end caseend; //end forLV.Canvas.Brush.Color := clWhite;if Item.Selected then //画选中条外框beginif cdsFocused in State then//控件是否处于激活状态LV.Canvas.Brush.Color := $00DAA07A // $00E2B598; //clHighlight;elseLV.Canvas.Brush.Color := $00E2B598; //$00DAA07A // clHighlight;LV.Canvas.FrameRect(BoundRect); //end;DefaultDraw := False; //不让系统画了with Sender.Canvas doif Assigned(Font.OnChange) thenFont.OnChange(Font);end;function TForm1.ReDrawItem(HwndLV: HWND; ItemIndex: integer): boolean;beginResult := ListView_RedrawItems(HwndLV,ItemIndex,ItemIndex);end;procedure TForm1.btn1Click(Sender: TObject);varItem: TListItem;begin//使用:item := LV1.Items[1];if Item = nil thenExit;item.subitems[1] := ’30’; //设置为30%//然后刷新这个itemReDrawItem(LV1.handle,Item.Index);end;procedure TForm1.trckbr1Change(Sender: TObject);varItem: TListItem;begin//使用:item := LV1.Items[0];item.subitems[1] := IntToStr(trckbr1.Position);//然后刷新这个itemReDrawItem(LV1.handle,Item.Index);end;end. object Form1: TForm1Left = 416Top = 301Width = 494Height = 170Caption = ‘Form1’Color = clBtnFaceFont.Charset = DEFAULT_CHARSETFont.Color = clWindowTextFont.Height = -11Font.Name = ‘MS Sans Serif’Font.Style = []OldCreateOrder = FalsePixelsPerInch = 96TextHeight = 13object btn1: TButtonLeft = 272Top = 96Width = 75Height = 25Caption = ‘btn1’TabOrder = 0OnClick = btn1Clickendobject lv1: TListViewLeft = 16Top = 8Width = 457Height = 81Columns = <itemCaption = ‘名称’Width = 100enditemCaption = ‘分类’Width = 100enditemCaption = ‘进度’Width = 100enditemCaption = ‘资源’Width = 100end>GridLines = TrueItems.Data = {5B000000020000000200000000000000FFFFFFFF020000000000000006B4F3B8BBCECC04D3CECFB70333354D01000000FFFFFFFFFFFFFFFF020000000000000008446F7461B4ABC6E604D3CECFB7043130304DFFFFFFFFFFFFFFFF}ShowWorkAreas = TrueSmallImages = il1TabOrder = 1ViewStyle = vsReportOnCustomDrawItem = lv1CustomDrawItemendobject trckbr1: TTrackBarLeft = 16Top = 96Width = 233Height = 33Max = 100TabOrder = 2OnChange = trckbr1Changeendobject il1: TImageListLeft = 384Top = 96Bitmap = {494C010103000F00040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600000000000000360000002800000040000000400000000100200000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006600004D4D4D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006600004D4D4D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006600004D4D4D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006600004D4D4D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000660000006600004D4D4D004D4D4D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000660000006600004D4D4D004D4D4D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000660000006600004D4D4D004D4D4D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000660000006600004D4D4D004D4D4D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006600000D901A00026F0400165D0E004D4D4D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006600000D901A00026F0400165D0E004D4D4D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006600000D901A00026F0400165D0E004D4D4D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006600000D901A00026F0400165D0E004D4D4D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066000014A0270016AB2B0007840F00056303004D4D4D004D4D4D000000000000000000000000000000000000000000000000000000000000000000000000000066000014A0270016AB2B0007840F00056303004D4D4D004D4D4D000000000000000000000000000000000000000000000000000000000000000000000000000066000014A0270016AB2B0007840F00056303004D4D4D004D4D4D000000000000000000000000000000000000000000000000000000000000000000000000000066000014A0270016AB2B0007840F00056303004D4D4D004D4D4D000000000000000000000000000000000000000000000000000000000000000000000000000066000019A532001CB5360017B02D000C951700016A02001A5C11004D4D4D0000000000000000000000000000000000000000000000000000000000000000000066000019A532001CB5360017B02D000C951700016A02001A5C11004D4D4D0000000000000000000000000000000000000000000000000000000000000000000066000019A532001CB5360017B02D000C951700016A02001A5C11004D4D4D0000000000000000000000000000000000000000000000000000000000000000000066000019A532001CB5360017B02D000C951700016A02001A5C11004D4D4D000000000000000000000000000000000000000000000000000000000000000000006600001FAB3D0022BB44001CB5360017B02D000FA51E0003790600096105004D4D4D0000000000000000000000000000000000000000000000000000000000006600001FAB3D0022BB44001CB5360017B02D000FA51E0003790600096105004D4D4D0000000000000000000000000000000000000000000000000000000000006600001FAB3D0022BB44001CB5360017B02D000FA51E0003790600096105004D4D4D0000000000000000000000000000000000000000000000000000000000006600001FAB3D0022BB44001CB5360017B02D000FA51E0003790600096105004D4D4D00000000000000000000000000000000000000000000000000000000000066000023B0460029C2520022BB44001CB5360017B02D000FA91F0005880B00016A01004D4D4D004D4D4D0000000000000000000000000000000000000000000066000023B0460029C2520022BB44001CB5360017B02D000FA91F0005880B00016A01004D4D4D004D4D4D0000000000000000000000000000000000000000000066000023B0460029C2520022BB44001CB5360017B02D000FA91F0005880B00016A01004D4D4D004D4D4D0000000000000000000000000000000000000000000066000023B0460029C2520022BB44001CB5360017B02D000FA91F0005880B00016A01004D4D4D004D4D4D0000000000000000000000000000000000000000000066000026B34D0030C9600029C2520022BB44001CB5360017B02D000FA91F00089B10000271030011610B004D4D4D00000000000000000000000000000000000066000026B34D0030C9600029C2520022BB44001CB5360017B02D000FA91F00089B10000271030011610B004D4D4D00000000000000000000000000000000000066000026B34D0030C9600029C2520022BB44001CB5360017B02D000FA91F00089B10000271030011610B004D4D4D00000000000000000000000000000000000066000026B34D0030C9600029C2520022BB44001CB5360017B02D000FA91F00089B10000271030011610B004D4D4D00000000000000000000000000000000000066000027B34D0033CC660030C9600029C2520022BB44001CB5360017B02D000EA41D00037D0600066404004D4D4D00000000000000000000000000000000000066000027B34D0033CC660030C9600029C2520022BB44001CB5360017B02D000EA41D00037D0600066404004D4D4D00000000000000000000000000000000000066000027B34D0033CC660030C9600029C2520022BB44001CB5360017B02D000EA41D00037D0600066404004D4D4D00000000000000000000000000000000000066000027B34D0033CC660030C9600029C2520022BB44001CB5360017B02D000EA41D00037D0600066404004D4D4D0000000000000000000000000000000000006600002DB9530035CE680033CC660030C9600029C2520022BB440015A12800036F0500165D0E00000000000000000000000000000000000000000000000000006600002DB9530035CE680033CC660030C9600029C2520022BB440015A12800036F0500165D0E00000000000000000000000000000000000000000000000000006600002DB9530035CE680033CC660030C9600029C2520022BB440015A12800036F0500165D0E00000000000000000000000000000000000000000000000000006600002DB9530035CE680033CC660030C9600029C2520022BB440015A12800036F0500165D0E000000000000000000000000000000000000000000000000000066000032BE58003CD56F0035CE680033CC660030C96000149428000563030000000000000000000000000000000000000000000000000000000000000000000066000032BE58003CD56F0035CE680033CC660030C96000149428000563030000000000000000000000000000000000000000000000000000000000000000000066000032BE58003CD56F0035CE680033CC660030C96000149428000563030000000000000000000000000000000000000000000000000000000000000000000066000032BE58003CD56F0035CE680033CC660030C96000149428000563030000000000000000000000000000000000000000000000000000000000000000000066000036C25C0043DC76003CD56F002BBB55000A7913000F5F09000000000000000000000000000000000000000000000000000000000000000000000000000066000036C25C0043DC76003CD56F002BBB55000A7913000F5F09000000000000000000000000000000000000000000000000000000000000000000000000000066000036C25C0043DC76003CD56F002BBB55000A7913000F5F09000000000000000000000000000000000000000000000000000000000000000000000000000066000036C25C0043DC76003CD56F002BBB55000A7913000F5F0900000000000000000000000000000000000000000000000000000000000000000000000000006600003DC9630049E27C0025A84200046D07002D581E0000000000000000000000000000000000000000000000000000000000000000000000000000000000006600003DC9630049E27C0025A84200046D07002D581E0000000000000000000000000000000000000000000000000000000000000000000000000000000000006600003DC9630049E27C0025A84200046D07002D581E0000000000000000000000000000000000000000000000000000000000000000000000000000000000006600003DC9630049E27C0025A84200046D07002D581E0000000000000000000000000000000000000000000000000000000000000000000000000000000000006600003CC55F001587210009610500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006600003CC55F001587210009610500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006600003CC55F001587210009610500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006600003CC55F0015872100096105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066000000660000245E1900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066000000660000245E1900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066000000660000245E1900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066000000660000245E19000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000660000245E1900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000660000245E1900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000660000245E1900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000660000245E1900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BA877700CE7E6200D07E5D00D07E5D00CE7E6200C396880000000000000000000000000000000000006600004D4D4D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006600004D4D4D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B7A5A2008D6F6A008D6F6A008D6F6A008D6F6A00A28A8600BFAEAB0000000000000000000000000000000000000000000000000000000000000000000000000000000000CF795600EDB18D00F3BC9900F1BA9600F0B79400F0B79400E5A07D00CA71520000000000000000000000000000660000006600004D4D4D004D4D4D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000660000006600004D4D4D004D4D4D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C5B6B4009B817C0093757000B8979100DDB9B200C09E9800BD9E9800BD9D9700AA8B850091746F008D6F6A000000000000000000000000000000000000000000000000000000000000000000CD795D00F1A77B00EFA47800EDA07400EB9B7000DA835D00DD886000E4906600DA835D00E4BAAC000000000000000000006600000D901A00026F0400165D0E004D4D4D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006600000D901A00026F0400165D0E004D4D4D0000000000000000000000000000000000000000000000000000000000000000000000000000000000A9928E008D6F6A00AA8B8500D1AEA700F0CAC200F0CAC200F0CAC200E9C7C100F3D3CC00F3D3CC00F0CAC200D6B3AC008D6F6A00000000000000000000000000000000005D9D5F003B9E3500409F33003B9E3500C06F4400F4A17000F19C6C00ED956600E2875A00C56A4D00D06E4700E2845600E2845600E1B3A50000000000000000000066000014A0270016AB2B0007840F00056303004D4D4D004D4D4D000000000000000000000000000000000000000000000000000000000000000000000000000066000014A0270016AB2B0007840F00056303004D4D4D004D4D4D000000000000000000000000000000000000000000000000000000000000000000997A7500EAC4BD00F0CAC200F0CAC200F0CAC200F0CAC200F0CAC200EBCBC600F4D7D100F3D3CC00F3D3CC00D6B3AC008D6F6A000000000000000000000000002395240061B9510074C25F007AC9690080CF7200B47A4900F9AA7800F4A17000F19C6C00CA715200E7C7C100CB6A4700E88D5E00DF805500E6C0B40000000000000000000066000019A532001CB5360017B02D000C951700016A02001A5C11004D4D4D0000000000000000000000000000000000000000000000000000000000000000000066000019A532001CB5360017B02D000C951700016A02001A5C11004D4D4D0000000000000000000000000000000000000000000000000000000000A6868000F0CAC200F0CAC200F0CAC200F0CAC200F0CAC200F0CAC200D6B3AC00C5ADA900CDB5B000D7BDB700BD9E98008D6F6A000000000000000000000000000B99170018AB29000B9315001BA52A0033C850007A934700EC986A00F9AA7800D0734E00ECD0C800F4E7E500CE7E6200ED956600D3734B00000000000000000000000000006600001FAB3D0022BB44001CB5360017B02D000FA51E0003790600096105004D4D4D0000000000000000000000000000000000000000000000000000000000006600001FAB3D0022BB44001CB5360017B02D000FA51E0003790600096105004D4D4D00000000000000000000000000000000000