diff --git a/.gitattributes b/.gitattributes index de39d42f40..a4c19d7ca8 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1863,6 +1863,20 @@ components/lazreport/source/addons/addfunction/lrAddFunctionLibrary.pas svneol=n components/lazreport/source/addons/addfunction/lr_add_function.lpk svneol=native#text/plain components/lazreport/source/addons/addfunction/lr_add_function.pas svneol=native#text/pascal components/lazreport/source/addons/addfunction/lr_add_function_const.pas svneol=native#text/pascal +components/lazreport/source/addons/imgexport/lr_e_extexp.lrs svneol=native#text/plain +components/lazreport/source/addons/imgexport/lr_e_extreg.pas svneol=native#text/pascal +components/lazreport/source/addons/imgexport/lr_e_htmldiv.pas svneol=native#text/pascal +components/lazreport/source/addons/imgexport/lr_e_img.pas svneol=native#text/pascal +components/lazreport/source/addons/imgexport/lr_extexp.lpk svneol=native#text/plain +components/lazreport/source/addons/imgexport/lr_extexp.pas svneol=native#text/pascal +components/lazreport/source/addons/imgexport/test/test.ico -text +components/lazreport/source/addons/imgexport/test/test.lpi svneol=native#text/plain +components/lazreport/source/addons/imgexport/test/test.lpr svneol=native#text/pascal +components/lazreport/source/addons/imgexport/test/test.res -text +components/lazreport/source/addons/imgexport/test/testunit1.lfm svneol=native#text/plain +components/lazreport/source/addons/imgexport/test/testunit1.pas svneol=native#text/pascal +components/lazreport/source/addons/imgexport/tfrhtmldivexport.png -text +components/lazreport/source/addons/imgexport/tfrimageexport.png -text components/lazreport/source/addons/lrcodereport/lr_codereport.lrs svneol=native#text/plain components/lazreport/source/addons/lrcodereport/lr_codereport.pas svneol=native#text/pascal components/lazreport/source/addons/lrcodereport/lr_codereport_pkg.lpk svneol=native#text/plain diff --git a/components/lazreport/doc/contributors.txt b/components/lazreport/doc/contributors.txt index 06dec2da72..aaa5b38d67 100644 --- a/components/lazreport/doc/contributors.txt +++ b/components/lazreport/doc/contributors.txt @@ -12,6 +12,7 @@ Junior Goncalves (br) Julio Jiménez B. (es) Luiz Americo (br) Mattias Gaertner (de) +Michel Gawrycki ( ) Olivier Guilbaud (fr) Petr Smolik (cz) Tony Whyman ( ) diff --git a/components/lazreport/source/addons/imgexport/lr_e_extexp.lrs b/components/lazreport/source/addons/imgexport/lr_e_extexp.lrs new file mode 100644 index 0000000000..1ad91cd5da --- /dev/null +++ b/components/lazreport/source/addons/imgexport/lr_e_extexp.lrs @@ -0,0 +1,53 @@ +LazarusResources.Add('tfrhtmldivexport','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#24#0#0#0#24#8#6#0#0#0#224'w='#248#0 + +#0#0#6'bKGD'#0#255#0#255#0#255#160#189#167#147#0#0#0#9'pHYs'#0#0#11#19#0#0#11 + +#19#1#0#154#156#24#0#0#0#7'tIME'#7#220#9#21#17#9''''#170#211'tM'#0#0#2#18'ID' + +'ATH'#199#213#148'?h'#19'a'#24#198#127#215#166#181#8#206#154#233#210'1'#224 + +'P'#28#180#174#130#161'!'#139#139'nf('#201#149#148#138'`n'#16#145' '#10#157 + +#226' '#13#25#218#155#130#22'*'#8'"'#132#11'w%E'#151'6'#224#191'E2'#137'w' + +#136#6#7#11#14#150'ZI'#206#161#220#245#254#165#185#180':'#248'L'#223#189'w' + +#239#247#188#207'='#207#247#193'?'#134#0' '#229#243'V'#212#134#229#149#21'!' + +#172#222#133#171#2#220#3'&'#129#15']('#142#193'+l'#130'('#144#242'y'#171#181 + +#185#25':L'#15#158#238#193#217#207'0'#209#133'\'#15#190#0#196#220#31#205#164 + +'R}''oh'#218#161#202'F'#224#154#189#222#133#141'q'#184#29' '#24#180'I'#20#252 + +#132'3'#227#176#214#131'['#1#130#147#23#238#0#176#211'Z'#12#168'ih'#26'SW' + +#238's'#243'I'#155#233#133#166#243#155#178#233'$'#243#153#184#0#240#27#206 + +#143#194#154#5'wc'#240'"@0'#140#154'l:'#9'@MmS'#173'w'#172#185'L\'#18#224'A' + +#15#174#199'@'#183#191#235'K'#16#166#224#253#243#18#143'fgy'#179#157#160#166 + +#182#201#166#147'd'#211'Ijj'#155#2','#3#140#130'f'#203#251#14#167'<'#4';'#173 + +#197'H'#10#230'3q'#161'Z'#239'Xn'#146#139'4'#217#170'\'#10'D'#248#175#165#8 + +#160'Z'#239'X'#182#31#161#4'QS4'#189#208't'#166'w{RS'#247#3#224'V2PAC'#211 + +#152'I'#165'<'#228#246'f'#253#204#223#170#12#169#192'_'#247'{`'#167#201#29 + +#217#0#193#156'$'#13'u'#160#220'$'#254#243#16#184#236#212#215#219#214'QO'#238 + +#167'o'#191#0#152'<}'#194'S/'#20'K'#24'/+'#130#163'`'#253#221#143'c]'#17#31 + +#191#238#134#214'='#30#148's'#9'd'#197'p'#214'oM8'''#30#188#183#159'M'#211'd' + +'I'#183#184'qY@'#20'Ed'#197#240#244#250'.'#193#254'X'#213#13#167'IV'#12'V' + +#245#253#181'('#138#206#230#131#16' ('#231#18#148's'#137'C'#155'd'#197'p&'#31 + +#154'@V'#140'H'#141#166'iF'#242'f'#228#168#166'.'#233#193#224#133#169'wbz' + +#220#20#249#241#236#241#195#131#152#22#138'%'#254'['#252#1'(D'#6'9'#2#1'OS'#0 + +#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('tfrimageexport','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#24#0#0#0#24#8#6#0#0#0#224'w='#248#0 + +#0#0#6'bKGD'#0#255#0#255#0#255#160#189#167#147#0#0#0#9'pHYs'#0#0#11#19#0#0#11 + +#19#1#0#154#156#24#0#0#0#7'tIME'#7#220#9#21#17#4'!'#246#30#175'5'#0#0#1#170 + +'IDATH'#199#181#149'!L'#195'@'#20#134#191'[V'#131'A`'#192'a'#235'p`'#8#4#209 + +#208'`'#176'lI'#5'I'''#22#18'<'#2#129#192#147#144#9'pMn'#179#24#178#165'b'#22 + +'&Hp'#19#16','#24'H0'#152#137#135#232#214'm'#165'+w'#11'\ry'#185'ww'#239#127 + +#255#187#191#175#240#207'C'#1#212#194'PL/\]_+k'#148'Z'#24#138#201#168#133#161 + +#244#238#238#196'&vyr'#177#235'y3'#15'v'#226'x'#174#18#149#255'"'#136'1'#192 + +#194#250#9#0'_'#189#243#31'l:q'#204#218#254#25#199#186#207#198'Q7-S'#224#187 + +#212#247'V'#148#17#128#13#155#192'w'#1#136#218'}'#26#183#175'2'#11'd&@'#30 + +#131#199#155'S.'#14#15'y'#248'X%j'#247#9'|'#151#192'w'#11'A'#166#0#190'z'#231 + +'F'#12#234'{+'#170'q'#251'*Y'#144#127'WQ'#30#139#185'T'#180'q'#212'M'#179#159 + +'|'#147#168#157#8#224#254'rG'#25'3'#232#196'1'#187#158'7'#5'^T'#146#192'w' + +#185#191#180'd'#144#245'g'#223'`'#164#166'<'#201#26#245#162#173#205#237'\' + +#255#231#210'N'#202'$'#240']'#22#223#187#233'^5'#168#170#20#0#160#168#199'' + + LineEnding + '' + + LineEnding + '' + LineEnding + + '' + + LineEnding + '%s' + LineEnding + '' + LineEnding + '' + LineEnding + '' + LineEnding; + HTML_REPORT_END = ''; + HTML_PAGE_START = + '
' + + LineEnding; + HTML_PAGE_END = '
' + LineEnding; + HTML_BOX = '
' + LineEnding; + HTML_IMG1 = '' + LineEnding; + HTML_TEXT = '
%s
' + LineEnding; + +type + + { TChunkStream } + + TChunkStream = class(TOwnerStream) + private + FPos: Integer; + FChunkSize: Integer; + FSeparator: String; + public + constructor Create(ASource: TStream); + function Write(const Buffer; Count: Longint): Longint; override; + property ChunkSize: Integer read FChunkSize write FChunkSize; + property Separator: String read FSeparator write FSeparator; + end; + +{ TChunkStream } + +constructor TChunkStream.Create(ASource: TStream); +begin + inherited Create(ASource); + FPos := 0; + FSeparator := LineEnding; + FChunkSize := 79; +end; + +function TChunkStream.Write(const Buffer; Count: Longint): Longint; +var + I: Integer; + J,K: Integer; +begin + Result := Count; + I := 0; + if FPos > 0 then + begin + I := FChunkSize - FPos; + if I > Count then + begin + Source.Write(Buffer, Count); + FPos := FPos + Count; + Exit; + end + else + begin + Source.Write(Buffer, I); + Source.Write(FSeparator[1], Length(FSeparator)); + FPos := 0; + end; + end; + if ((Count - I) > FChunkSize) then + J := (Count - I) div FChunkSize + else + begin + Source.Write(PChar(@Buffer)[I], Count - I); + FPos := (Count - I); + Exit; + end; + for K := 0 to J - 1 do + begin + Source.Write(PChar(@Buffer)[(K * FChunkSize)], FChunkSize); + Source.WriteBuffer(FSeparator[1], Length(FSeparator)); + end; + J := (Count - I) mod FChunkSize; + if J > 0 then + begin + Source.Write(PChar(@Buffer)[((K + 1) * FChunkSize)], J); + FPos := J; + end; +end; + +{ TfrHtmlDivExportFilter } + +function ColorToCSS(AColor: TColor): string; +begin + Result := Format('#%.2x%.2x%.2x', [Red(AColor), Green(AColor), Blue(AColor)]); +end; + +function SizeToCSS(X, Y, W, H: integer): string; +begin + Result := Format( + 'width:%dpx;min-width:%0:dpx;height:%dpx;min-height:%1:dpx;left:%dpx;top:%dpx;', + [W, H, X, Y]); +end; + +procedure TfrHtmlDivExportFilter.WriteString(AValue: string); +begin + Stream.Write(AValue[1], Length(AValue)); +end; + +constructor TfrHtmlDivExportFilter.Create(AStream: TStream); +begin + inherited Create(AStream); + FCurPage := 0; + FImgCnt := 0; + FPageStyle := ''; + FExportImages := True; + FEmbeddedImages := True; +end; + +procedure TfrHtmlDivExportFilter.OnBeginDoc; +begin + WriteString(Format(HTML_REPORT_HEADER, [CurReport.Title, FPageStyle])); +end; + +procedure TfrHtmlDivExportFilter.OnEndDoc; +begin + WriteString(HTML_REPORT_END); +end; + +procedure TfrHtmlDivExportFilter.OnBeginPage; +begin + Inc(FCurPage); + WriteString(Format(HTML_PAGE_START, [CurReport.EMFPages[FCurPage - 1]^.PrnInfo.Pgw, + CurReport.EMFPages[FCurPage - 1]^.PrnInfo.Pgh])); +end; + +procedure TfrHtmlDivExportFilter.OnEndPage; +begin + WriteString(HTML_PAGE_END); +end; + +procedure TfrHtmlDivExportFilter.OnData(x, y: integer; View: TfrView); + + function BorderStyleToCSS: string; + begin + case View.FrameStyle of + frsSolid, frsDouble: Result := 'solid'; + frsDash, frsDashDot, frsDashDotDot: Result := 'dashed'; + frsDot: Result := 'dotted'; + end; + end; + +var + W, H: integer; + BrdW: integer; + BLeft, BTop, BRight, BBottom: integer; + St: string; + B64: TBase64EncodingStream; + Png: TPortableNetworkGraphic; + BCBmp: TBitmap; + CS: TChunkStream; +begin + W := View.dx; + H := View.dy; + + BrdW := Round(View.FrameWidth); + + if frbLeft in View.Frames then + BLeft := BrdW + else + BLeft := 0; + if frbTop in View.Frames then + BTop := BrdW + else + BTop := 0; + if frbRight in View.Frames then + BRight := BrdW + else + BRight := 0; + if frbBottom in View.Frames then + BBottom := BrdW + else + BBottom := 0; + + if BLeft > 0 then + Dec(W, BrdW); + if BTop > 0 then + Dec(H, BrdW); + + St := SizeToCSS(X, Y, W, H); + + St := St + Format('border-left:%0:dpx %4:s %5:s;border-top:%1:dpx %4:s %5:s;' + + 'border-right:%2:dpx %4:s %5:s;border-bottom:%3:dpx %4:s %5:s;', + [BLeft, BTop, BRight, BBottom, BorderStyleToCSS, ColorToCSS(View.FrameColor)]); + + if View.FillColor <> clNone then + St := St + 'background-color:' + ColorToCSS(View.FillColor) + ';'; + + if ExportImages and ((View is TfrPictureView) or (View is TfrBarCodeView)) then + begin + WriteString(Format(HTML_IMG1, [St])); + Inc(FImgCnt); + if EmbeddedImages then + WriteString('data:image/png;base64,') + else + WriteString(ExtractFileName(TFileStream(Stream).FileName) + '_image_' + IntToStr(FImgCnt) + '.png'); + Png := TPortableNetworkGraphic.Create; + if EmbeddedImages then + begin + CS := TChunkStream.Create(Stream); + B64 := TBase64EncodingStream.Create(CS); + end; + if View is TfrBarCodeView then + begin + BCBmp := TfrBarCodeView(View).GenerateBitmap; + Png.Assign(BCBmp); + BCBmp.Free; + end + else + if View is TfrPictureView then + begin + Png.SetSize(View.dx, View.dy); + if TfrPictureView(View).Stretched then + Png.Canvas.StretchDraw(Rect(0, 0, View.dx, View.dy), TfrPictureView(View).Picture.Graphic) + else + Png.Canvas.Draw(0, 0, TfrPictureView(View).Picture.Graphic); + end; + if EmbeddedImages then + begin + Png.SaveToStream(B64); + B64.Flush; + B64.Free; + CS.Free; + end + else + Png.SaveToFile(TFileStream(Stream).FileName + '_image_' + IntToStr(FImgCnt) + '.png'); + Png.Free; + WriteString(HTML_IMG2); + end + else + WriteString(Format(HTML_BOX, [St])); +end; + +procedure TfrHtmlDivExportFilter.OnText(x, y: integer; const Text: string; View: TfrView); +var + St: string; +begin + if Trim(Text) = '' then + Exit; + St := SizeToCSS(X, Y, View.dx, View.dy); + if View is TfrMemoView then + begin + St := St + 'font-family:''' + TfrMemoView(View).Font.Name + + ''';font-size:' + IntToStr(TfrMemoView(View).Font.Size) + + 'pt;color:' + ColorToCSS(TfrMemoView(View).Font.Color) + ';'; + if fsBold in TfrMemoView(View).Font.Style then + St := St + 'font-weight:bold;'; + if fsItalic in TfrMemoView(View).Font.Style then + St := St + 'font-style:italic;'; + if fsUnderline in TfrMemoView(View).Font.Style then + St := St + 'text-decoration:underline;'; + end; + WriteString(Format(HTML_TEXT, [St, Text])); +end; + +initialization + frRegisterExportFilter(TfrHtmlDivExportFilter, 'HTML (div-based) (*.html)', '*.html'); + +end. diff --git a/components/lazreport/source/addons/imgexport/lr_e_img.pas b/components/lazreport/source/addons/imgexport/lr_e_img.pas new file mode 100644 index 0000000000..9b0c7f010d --- /dev/null +++ b/components/lazreport/source/addons/imgexport/lr_e_img.pas @@ -0,0 +1,104 @@ +{***** + + Copyright (c) 2012 Michał Gawrycki (michal.gawrycki(a.t.)gmsystems.pl + License: modified LGPL (see 'COPYING.modifiedLGPL.txt' in Lazarus directory) + +*****} + +unit LR_e_img; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, LR_Class, Graphics; + +type + TfrImageExport = class(TComponent) + + end; + + { TfrImageExportFilter } + + TfrImageExportFilter = class(TfrExportFilter) + private + FBmp: TFPImageBitmap; + FCurPage: Integer; + FFileName: String; + FFileExt: String; + FZoom: Extended; + FJQuality: TJPEGQualityRange; + FColor: TColor; + public + constructor Create(AStream: TStream); override; + destructor Destroy; override; + procedure OnBeginDoc; override; + procedure OnEndPage; override; + property Zoom: Extended read FZoom write FZoom; + property JPEGQuality: TJPEGQualityRange read FJQuality write FJQuality; + property BackgroundColor: TColor read FColor write FColor; + end; + +implementation + +{ TfrImageExportFilter } + +constructor TfrImageExportFilter.Create(AStream: TStream); +begin + inherited Create(AStream); + FFileName := TFileStream(AStream).FileName; + FFileExt := LowerCase(ExtractFileExt(FFileName)); + FFileName := ChangeFileExt(FFileName, ''); + FZoom := 1; + FCurPage := 0; + FJQuality := 75; + FColor := clWhite; + if FFileExt = '.jpg' then + FBmp := TJPEGImage.Create + else + if FFileExt = '.png' then + FBmp := TPortableNetworkGraphic.Create + else + FBmp := TBitmap.Create; +end; + +destructor TfrImageExportFilter.Destroy; +begin + FBmp.Free; + inherited Destroy; +end; + +procedure TfrImageExportFilter.OnBeginDoc; +begin + if FBmp is TJPEGImage then + TJPEGImage(FBmp).CompressionQuality := FJQuality; +end; + +procedure TfrImageExportFilter.OnEndPage; +var + TmpVisible: Boolean; +begin + Inc(FCurPage); + FBmp.SetSize(Round(CurReport.EMFPages[FCurPage - 1]^.PrnInfo.Pgw * FZoom), + Round(CurReport.EMFPages[FCurPage - 1]^.PrnInfo.Pgh * FZoom)); + FBmp.Canvas.Brush.Color := FColor; + FBmp.Canvas.Brush.Style := bsSolid; + FBmp.Canvas.FillRect(0, 0, FBmp.Width, FBmp.Height); + TmpVisible := CurReport.EMFPages[FCurPage - 1]^.Visible; + CurReport.EMFPages[FCurPage - 1]^.Visible := True; + CurReport.EMFPages.Draw(FCurPage - 1, FBmp.Canvas, Rect(0, 0, FBmp.Width, FBmp.Height)); + CurReport.EMFPages[FCurPage - 1]^.Visible := TmpVisible; + if FCurPage = 1 then + FBmp.SaveToStream(Stream) + else + FBmp.SaveToFile(FFileName + '_' + IntToStr(FCurPage) + FFileExt); +end; + +initialization + frRegisterExportFilter(TfrImageExportFilter, 'Bitmap file (*.bmp)', '*.bmp'); + frRegisterExportFilter(TfrImageExportFilter, 'JPEG file (*.jpg)', '*.jpg'); + frRegisterExportFilter(TfrImageExportFilter, 'PNG file (*.png)', '*.png'); + +end. + diff --git a/components/lazreport/source/addons/imgexport/lr_extexp.lpk b/components/lazreport/source/addons/imgexport/lr_extexp.lpk new file mode 100644 index 0000000000..94f71d8508 --- /dev/null +++ b/components/lazreport/source/addons/imgexport/lr_extexp.lpk @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/components/lazreport/source/addons/imgexport/lr_extexp.pas b/components/lazreport/source/addons/imgexport/lr_extexp.pas new file mode 100644 index 0000000000..5587a05bf6 --- /dev/null +++ b/components/lazreport/source/addons/imgexport/lr_extexp.pas @@ -0,0 +1,21 @@ +{ This file was automatically created by Lazarus. Do not edit! + This source is only used to compile and install the package. + } + +unit lr_extexp; + +interface + +uses + LR_e_img, LR_e_htmldiv, LR_e_extreg, LazarusPackageIntf; + +implementation + +procedure Register; +begin + RegisterUnit('LR_e_extreg', @LR_e_extreg.Register); +end; + +initialization + RegisterPackage('lr_extexp', @Register); +end. diff --git a/components/lazreport/source/addons/imgexport/test/test.ico b/components/lazreport/source/addons/imgexport/test/test.ico new file mode 100644 index 0000000000..0341321b5d Binary files /dev/null and b/components/lazreport/source/addons/imgexport/test/test.ico differ diff --git a/components/lazreport/source/addons/imgexport/test/test.lpi b/components/lazreport/source/addons/imgexport/test/test.lpi new file mode 100644 index 0000000000..c2f9c1d101 --- /dev/null +++ b/components/lazreport/source/addons/imgexport/test/test.lpi @@ -0,0 +1,97 @@ + + + + + + + + + + <ResourceType Value="res"/> + <UseXPManifest Value="True"/> + <Icon Value="0"/> + </General> + <i18n> + <EnableI18N LFM="False"/> + </i18n> + <VersionInfo> + <StringTable ProductVersion=""/> + </VersionInfo> + <BuildModes Count="1"> + <Item1 Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> + <ExcludeFileFilter Value="*.(bak|ppu|o|so);*~;backup"/> + </PublishOptions> + <RunParams> + <local> + <FormatVersion Value="1"/> + </local> + </RunParams> + <RequiredPackages Count="3"> + <Item1> + <PackageName Value="lr_extexp"/> + </Item1> + <Item2> + <PackageName Value="lazreport"/> + </Item2> + <Item3> + <PackageName Value="LCL"/> + </Item3> + </RequiredPackages> + <Units Count="2"> + <Unit0> + <Filename Value="test.lpr"/> + <IsPartOfProject Value="True"/> + <UnitName Value="test"/> + </Unit0> + <Unit1> + <Filename Value="testunit1.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="Form1"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + <UnitName Value="testunit1"/> + </Unit1> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <PathDelim Value="\"/> + <Target> + <Filename Value="test"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Linking> + <Options> + <Win32> + <GraphicApplication Value="True"/> + </Win32> + </Options> + </Linking> + <Other> + <CompilerMessages> + <MsgFileName Value=""/> + </CompilerMessages> + <CompilerPath Value="$(CompPath)"/> + </Other> + </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> +</CONFIG> diff --git a/components/lazreport/source/addons/imgexport/test/test.lpr b/components/lazreport/source/addons/imgexport/test/test.lpr new file mode 100644 index 0000000000..d3f24ef005 --- /dev/null +++ b/components/lazreport/source/addons/imgexport/test/test.lpr @@ -0,0 +1,21 @@ +program test; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX}{$IFDEF UseCThreads} + cthreads, + {$ENDIF}{$ENDIF} + Interfaces, // this includes the LCL widgetset + Forms, testunit1 + { you can add units after this }; + +{$R *.res} + +begin + RequireDerivedFormResource := True; + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. + diff --git a/components/lazreport/source/addons/imgexport/test/test.res b/components/lazreport/source/addons/imgexport/test/test.res new file mode 100644 index 0000000000..7c6cf3e4be Binary files /dev/null and b/components/lazreport/source/addons/imgexport/test/test.res differ diff --git a/components/lazreport/source/addons/imgexport/test/testunit1.lfm b/components/lazreport/source/addons/imgexport/test/testunit1.lfm new file mode 100644 index 0000000000..2a69898a9d --- /dev/null +++ b/components/lazreport/source/addons/imgexport/test/testunit1.lfm @@ -0,0 +1,1539 @@ +object Form1: TForm1 + Left = 463 + Height = 325 + Top = 226 + Width = 486 + Caption = 'Form1' + ClientHeight = 325 + ClientWidth = 486 + LCLVersion = '1.0.1.3' + object Button1: TButton + Left = 328 + Height = 23 + Top = 32 + Width = 85 + AutoSize = True + Caption = 'Show report' + OnClick = Button1Click + TabOrder = 0 + end + object Button2: TButton + Left = 328 + Height = 23 + Top = 72 + Width = 58 + AutoSize = True + Caption = 'Design' + OnClick = Button2Click + TabOrder = 1 + end + object GroupBox1: TGroupBox + Left = 19 + Height = 145 + Top = 18 + Width = 285 + Caption = 'Image export options' + ClientHeight = 127 + ClientWidth = 281 + TabOrder = 2 + object Label1: TLabel + Left = 16 + Height = 14 + Top = 19 + Width = 148 + Caption = 'Image export zoom (1=100%)' + ParentColor = False + end + object FloatSpinEdit1: TFloatSpinEdit + Left = 200 + Height = 21 + Top = 16 + Width = 58 + DecimalPlaces = 1 + Increment = 0.1 + MaxValue = 100 + MinValue = 0.1 + TabOrder = 0 + Value = 1 + end + object SpinEdit1: TSpinEdit + Left = 201 + Height = 21 + Top = 48 + Width = 55 + MinValue = 1 + TabOrder = 1 + Value = 75 + end + object Label3: TLabel + Left = 120 + Height = 14 + Top = 54 + Width = 59 + Caption = 'Jpeg quality' + ParentColor = False + end + object ColorButton1: TColorButton + Left = 187 + Height = 25 + Top = 86 + Width = 75 + BorderWidth = 2 + ButtonColorSize = 16 + ButtonColor = clWhite + end + object Label4: TLabel + Left = 83 + Height = 14 + Top = 94 + Width = 83 + Caption = 'Background color' + ParentColor = False + end + end + object GroupBox2: TGroupBox + Left = 16 + Height = 120 + Top = 184 + Width = 453 + Caption = 'HTML export options' + ClientHeight = 102 + ClientWidth = 449 + TabOrder = 3 + object Label2: TLabel + Left = 19 + Height = 14 + Top = 10 + Width = 117 + Caption = 'Page style (html export)' + ParentColor = False + end + object Edit1: TEdit + Left = 172 + Height = 21 + Top = 8 + Width = 233 + TabOrder = 0 + Text = 'border:1px solid #AAA;margin:10px;' + end + object CheckBox1: TCheckBox + Left = 172 + Height = 17 + Top = 40 + Width = 88 + Caption = 'Export images' + Checked = True + State = cbChecked + TabOrder = 1 + end + object CheckBox2: TCheckBox + Left = 172 + Height = 17 + Top = 72 + Width = 106 + Caption = 'Embedded images' + Checked = True + State = cbChecked + TabOrder = 2 + end + end + object frReport1: TfrReport + InitialZoom = pzDefault + Options = [] + PreviewButtons = [pbZoom, pbLoad, pbSave, pbPrint, pbFind, pbHelp, pbExit] + StoreInDFM = True + DataType = dtDataSet + OnExportFilterSetup = frReport1ExportFilterSetup + left = 304 + top = 120 + ReportForm = { + 1900000046A900001900000000170053616D73756E6720434C582D3231367820 + 53657269657300FF0D00546672506167655265706F7274000900000001000000 + 0100000000000000000000000000000000000000000000FFFF01000000000000 + 000000000000000000FF0D00546672506167655265706F727400080000000100 + 00000100000000000000000000000000000000000000010000FFFF0100000000 + 0000000000000000000000000005004D656D6F31002000000028000000600000 + 001200000003000000803F000000000F00000000000000FFFFFF1F2C02000000 + 00000100040061736466000000000100000000000500417269616C000A000000 + 0000000000000000020000000000FFFFFF000000000000000000000000000000 + 05004D656D6F32009800000070000000600000008E00000003000000803F0000 + 00000F00000000000000FFFFFF1F2C02000000000005000400617364660D0000 + 0D0400617364660D00000D040061736466000000000100000000000500417269 + 616C000A0000000000000000000000020000000000FFFFFF0000000002000000 + 0100000000000005004D656D6F33002401000040010000600000003200000003 + 000000803F000000000F00000000000000FF0000002C02000000000001000400 + 61616161000000000100000000000700436F7572696572000A00000000000000 + 00000000020000000000FFFFFF00000000020000000100000000000005004D65 + 6D6F34008401000040010000600000005600000003000000803F000000000F00 + 00000000000000FF00002C020000000000010004006262626200000000010000 + 0000000F0054696D6573204E657720526F6D616E000A00000002000000000000 + 00020000000000FFFFFF00000000020000000100000000000005004D656D6F35 + 00E401000040010000600000008600000003000000803F000000000F00000000 + 000000FFFF00002C020000000000010004006363636300000000010000000000 + 070056657264616E61000A0000000100000000000000020000000000FFFFFF00 + 000000020000000100000000040005004C696E6531004C0000009C0000000000 + 000084000000000000000040000000000100000000000000FFFFFF1F2C020000 + 000000000000000000010000000000010008005069637475726531003C000000 + 940100009C00000072000000050000004040000000000F00000000000000C0C0 + C0002C020000000000000000000000010000000000FF030000006A7067000000 + 009DA30000FFD8FFE000104A46494600010001009600960000FFFE001F4C4541 + 4420546563686E6F6C6F6769657320496E632E2056312E303100FFDB00840008 + 0506070605080707070909080A0C150E0C0B0B0C1A12130F151F1B20201E1B1E + 1D2226312A22242E251D1E2B3A2B2E333437383721293D413C36403136373501 + 0909090C0B0C190E0E1935231E23353535353535353535353535353535353535 + 3535353535353535353535353535353535353535353535353535353535353535 + FFC401A20000010501010101010100000000000000000102030405060708090A + 0B0100030101010101010101010000000000000102030405060708090A0B1000 + 02010303020403050504040000017D0102030004110512213141061351610722 + 7114328191A1082342B1C11552D1F02433627282090A161718191A2526272829 + 2A3435363738393A434445464748494A535455565758595A636465666768696A + 737475767778797A838485868788898A92939495969798999AA2A3A4A5A6A7A8 + A9AAB2B3B4B5B6B7B8B9BAC2C3C4C5C6C7C8C9CAD2D3D4D5D6D7D8D9DAE1E2E3 + E4E5E6E7E8E9EAF1F2F3F4F5F6F7F8F9FA110002010204040304070504040001 + 0277000102031104052131061241510761711322328108144291A1B1C1092333 + 52F0156272D10A162434E125F11718191A262728292A35363738393A43444546 + 4748494A535455565758595A636465666768696A737475767778797A82838485 + 868788898A92939495969798999AA2A3A4A5A6A7A8A9AAB2B3B4B5B6B7B8B9BA + C2C3C4C5C6C7C8C9CAD2D3D4D5D6D7D8D9DAE2E3E4E5E6E7E8E9EAF2F3F4F5F6 + F7F8F9FAFFC0001108016D01F203011100021101031101FFDA000C0301000211 + 0311003F00F59B9B628C65450C54FEF117ABAD004505CBDB619806B471FBBDA0 + EE4F6614015752F36DD0A89375B67CC8D91CEE18E48FF0A00C89AF248A76F3DD + FC8930564C952A7D78E3F5A00A53DD5C4243832C84BE3CC51F7C7BE3BFBFB500 + 316ECBC2FE4B4CCC793229CED3F8D002FF006BDE3C6B20976CAB90D1AC842483 + D80CE280207BE0F08CC9710BF277799829D7D2802943F6831836D78F3393D773 + 364FB83C5004EF15CCCB12DC5C3A6D2411E76DC7BE3BD00364D3FCA880173752 + C80E4056DEB83EDD3A7B50032EC315F251A754C648894654FE1C63F1A009ED66 + 7B868ADC2CB98881B9DB83FF008F66802D8B732A4BB2F1DA31F23A990EDFC318 + A0065BE97E448B340D249C61BE7E476043668023138F98369EE0B3F323B8C39F + 527340093EAA96CB25BFDA247240DB1BA8641EC302802A30B8B988C8B7325B82 + C7211447BBEA07F5A009AD912392369AE6772338532FCABD7B50026A9A8C4A88 + 801DCBD0A92001EB40145F5C9E35114A63951B0016DCC07AF04D00579351595A + 40EEEF13B7CA83851F85005493568639FCB4DAABB06D3180B80680223ADA952B + 25C4E551410BBF9E6802383C476D6808B72234CE708A319340120F18249BE567 + 731838F434005C78DA34650269172B919E9400C93C7904ADBF74BB80E476FE74 + 0118F1C232F97E6311BB8C9FFEBD0044FE37B79176CACE40E83FFD668019FF00 + 09EC7163CA72A08EAB806801F6FF0011C430A891DCF620367F1A00B31FC45B36 + 8D0AB3EEC1C96C75A0097FE12DD2E5DAFE58E7009DA0E6802EC5AD4171313108 + C464FCD80067FC6802CCD716938E1A454DBCE403FA1C8A0080D9C4D331865E08 + C150AA303F014012DBE9B6D1DCB9FB44A09E84372DF4C5004716906467796E65 + 66278242F1F8E334011B5A5C47703CB6040E18339C918FA50003482C4AB2C510 + 9390A067268029CFA3850A165959D39DCCC71EDC500666AF6860E6E2E1A4B77C + 02EC37153F8F6A00CD9E0860CBDBC8AB1C8461B1F237B11D334016BFB4526B56 + 8E50D3851CAC6067F1F5A00B76509B8B3DF00F2CAF28AB26037D4500412CF70B + AA2477CD200CA36EF5F3157E84E68027318924044C0C2C722350C838EF81DE80 + 2796778E27636F72E1401E686DD8FEB40135AEA31DC3347138523E63F36D39FA + 0EA2802E4D3433DACC0C6E48192237EBEE013400FD16F8EA96F1E9ED23C73440 + 91BC7250703EBDA802E6FB8DCAF2C885E0043820E5C63A1F7F43DE80332613C7 + 7DBE3882AEDDED13E70C0E41C7F9ED400ED3E69A3B1B88E650C91B1CA839C770 + 71401A3A3B0BEBA0D6D3C670A18C138C2F23AA7A1E2801BA45F46C2D27B68D96 + 570227563FC5C60FD0D005EBBBD8D6EAEA208C8632AF2C648CA02474FE74012E + A37290CD2A5C0652515E2B803385E9CFF5A00927558AEADE640C90FDDF2C74FA + 1FE9F8D00358ACB1E5409042772A1E4EC3C631EDCD0048E1E1BEB77C8D8EE06E + CF623BFBF4FCA803A88F2235017800638A00DDB985925F3A37F9D3F80F0187A5 + 0067B471CDBE5838919332C05B07F1F43EF40149E4898790CAFF00BC04191415 + 65F4C8FEB4018D25B5E69913853FDA56CCE4E5786407B6075A006DB1585330DB + ABC5FC285482BEA338E68022D4CD9DC0612982D9FB6701B3E9DA802B1F3B7F96 + BAA08D703920329E7AE73C500392E6D608B1717B6D24C09C374CF3E99F4A008A + 5B9872184709E0E0A123FA50055B0D85A74F3E2073F2AC93AE483FA8A00D196C + AE42064953CB0A3846C8A00465778B6C6B12377E0B1C7E940108D35245479AE1 + A7DBC9418551F519A009E7B9F2E204AA3AAE3054E00A00A726A219CB6EDA3AF5 + EFF5A00CCBCD45C4CFB71B4F6E83EB9A00A8FAABC5126361DA738538A00AD7DA + 8B64E3EEE322356EFE94019CDAB1339F9769EB9DDFD680226D4259158B4A8303 + 38CF14014E6D623B775CB158CF0097183401997FE2986375F276B955EA3B1CD0 + 0654FE259A5949D9951D03350067C9A9DD4BBB071BB934015C5DCDD7CC39F6A0 + 06BCCEFCB3393F5A006B31C72ADF5A00095381823F0A007C491670CD8CFAD004 + EB0DB11FEBD01F7E2801C60B6DE009D31DCD00595D3ED8F1E7A1E7038A007268 + 85C1003823A7CBD68010E8771E61401D5BA8CA914011A25EC0C194C9BB3C7CA6 + 802D8D6F528DC070DB97AE78CD005DB5F165C464174627EBC50069DB78D11140 + 72EC33920B60D005EB4F1744F905E3DD9E089303F2A00D68FC4B1BDBAA6EC8EF + F367F95006943ADC3751A2798888B81CBE3F0340124B751CEE36480A81C0CE68 + 02B4C1A5472013D32588C8A00C3BCD2E2E678DDE194F05D1B033EE280334E8E8 + D91298DDDBF8C7CA47EB4013D95888EE7FE3EE77C8C361F18FAD0074B652FD9E + 254560C07CBF31C9FCE80342268A58584A5481C056E307B10680236449556312 + 1529D3D4FF008D0057BDD26CE5DB232E261C8607183EB400FB482486361290D1 + 9C678C93CF6A008DE264B849D09283E565C74F43401AD7104774FE748764B190 + 14E720FAD004D2DABDDE9AD02954914868D81E53DBF1FEB401426B79ADE666B8 + 42CAE9B1B2707A7AF7A00CCD0AF6E2DE26745016DA52245DDCED3DF1DFA50068 + DC2A4965A7CD1A94043248CA7A01DCFF003C5006AC28D35D451A2C2667859307 + 80F8FF00114016EDD97EC304AB0078A11B24C658A7665FC0FF002A008E19098A + 681899D22CC6AE3A81E847E4450054B89CDAEA3048EE0A1F95B8032186338F63 + 8CD005C82DFED7A54B6ACE4BC4E4290BD30783401AB68973F648737084EC5CE5 + 79E9401D5DEDD86F3162605876230477A00A372D0C823B96668E465C061C020F + A9A00AB2DBCCB2A4AAA8CEB93FBBE381D883D68028DCDF2190FDA2078A4C901A + 346C118F6A00C72B1348E6D6FDC3C87246723F2C50032782599445706590A927 + E420E4FE3D280205D34272D2DC33460ED507803D3DE801247B000C0ED23CADC0 + 895416271F4A0072F862DE5104932155DDBC248771FC7181DFA50068896D7CC6 + F2218BCD070D84039F6A008E5F3BC96918040A7247F434010CB710EC60BF7BD5 + 7228028DEDEF96048A4164CEFE3B9A00C79F500D1320F95179C9EE68033E6BFF + 00358AEF1B464ABF607FCE68033AE3558D9026772EEC679E0D00559AE9618DF7 + 320C81819E7EA0FF008D00635DEB891481C4BBBD7AD00675CEB49E66F8C33E3B + 1E86802B4BA95EDC70836E4F1B7AD0040D6775295DC1893D01A00B516817920C + AC44293D4918A00BB6FE189DF61F2D98B7555C7140160784D910B4A4A127E519 + 072280206F0EFC81E25761BB07240A00B03C2F336DF29010DDBBD002DC785244 + 8C9E8475048A0024F0932A160C4BAF6C8A00A12F87E556C6DDC7191D3A500539 + F459631FEADB39EF40104BA44EA3210FE62801820BB83E65E36F3CF340172D35 + 9BDB62B98D1F69EF401B569E2E8BCD53756A63DA3EF28CF34017ECF5ED0A695C + CCC5373640707FC2802D247A26A1C47229623A8CF1400DBAF08A30CDB303CFCA + 490437F5A00C6D53C2B750A82911CF3B8123AFB500615CE9EF6EE564474FC280 + 1B12CF115314A78E809A009D753BFB624955273DC5005CB2F15DC452966039F6 + CD006C59F8B9D80562082724E3FA5005F3AF79B1158F6E0F5CE6801CB2A491B0 + 0020539CE396A00959D595A4B78F27DCE31ED400EB3BD649026D55032C5BAF38 + E9401A2B33602BB14E41033D6802F24CE858610A9E49F4A009DF2536990100E0 + 1C73C76A000CFBF6C6AC0050320D005B6B96706050B8C64E4609A00CF859E232 + 43764981C0589C9E49EFF8F4A00D1B78E78C47E4B79888BFC7C49F9F422802C0 + BDB7F34437C924231F24B8C86E3BE32334018D6579069FE26B8488A2C576007C + F23773D31D01CF7A00B76132CDA9C31C81964CB09E03FC3C61B1F95006AC0F0C + F29484B7DA2CDBF72338DEB8E73F81FCE801BE1FD405AEBD3DABC816DAF37483 + 3DA4247E8466802F5BD9AE93AACD13B1FB35D85D858FDD61C638EDC8A0083C4F + A72AE8F38084B23095076EB83FE3400BA0CF2AF970139578FEF1EA48E9FA1FD2 + 8037E3B02D1A9DCC3201E31401AFA922B4ECC819253D1C7F9E6803361D45E3D3 + 9D27B09A7F24F947CA0A4B63BE0918A0048E5511F9764248838E064103EA0934 + 0046B7A10191226238182467F0A00A37B6B119034A881F38263C641A00AA6CE3 + 133B5BC6E5BD4B7FF5E80294B671DCCCAE1155946DDCCE4E076E3A7E74016B4D + 16B6EE42046941F9E518249CFE43F0A00B777708C4A6E0172481E9F950065143 + B4042096C72BC734013F912796097C6171F30E4D0050BA582D976C6BFBC1FC42 + 8031F51B92A577B37538DBD09E28033AF1E20B95903B6015507BFD3BD00614D7 + 2E525121DA848C851FCE8032AE6F21863762C49CF39EFF00AD007397DA94F76C + 1573B17A1C500558E0799C0EE7819E6803774AF0E4D74AA594003D4F5A00E86C + BC391C72A050130796E491F4A00D66D2ACB6FC8034D8240EB40114F736365012 + 51CAFB50063CDE258A1C25AA6D63C6EC0C63BD0044BAF43E6C6F3664283A28E8 + 68026FF84995E311A5AC84019CAA81FD680241AFCD1C68E2C65DE7B8C73DBD68 + 021B9F115CB3366CC84E877633400D8BC49728F992C9F3EC334011CDE23FDE31 + 36728241E768E0D00306BB1380258654279CEC040A0082E757B3251F6E48EA36 + D00364D434E9768236332E0E578340159A5B0673D3E51DBA31A00045652C7B89 + 2B211C8F5FD68004D1D25524346303B13401149A24D1A0689B6B76E79A00741A + BEB1A71082E4ED8CFDD601B07F1A00E9346F8876D8DBAA5ABBB600F3100EBEB8 + ED401D018744D6AD54DBE0A05E4E7A7E1401CE6B1E178A367FB3A363191F374A + 00E6A5B6B98B72B8122E7A639FCE8033E783BC59C1EA0F7A002D91646555255B + 3C8CD005FC4D02654E3DA803421B9B86552CD8C28C7BD00682DEEE6055F8E307 + B50059B69C37F092E7D0706802ECF348876C87F79C02077E2802DC174ED10404 + 6477EB401A08F344E08CEC1D4F5CD0059B768CB3C841E4771D2802E045915412 + B955C8C1EB400B38495D55A26D80FDDC8E3F1A009166B98EE96194168DB186C0 + E07BD005E8CACB74C8A8D8DBC871DA802B6A9E1CB5730CF0C491C80FCEC831C7 + 6E3D68029EA7751E9FAA5A5F4F19914CA80C91AFDD6CFCD9F622803635A4169A + 9DA6A910FF004699C6E08707A633F973F850055F11E90BA538D4E16596DD8933 + 42F9E371C9652391CD005C565D4ACE27B9C3C8837C6C0905D7BA903A363B5006 + A6C9220143B4D6CE99C31CB8F6F7FCE8032A48C5ADA40BF7DA1BA1196271956C + E3F423F2A00EAA2849890FB0EF40166EAC671721E0B8645527F76DD1BFC28033 + F75F58DE9BA996599250119122E01FEF6467F977A0096E350B3993CC75DC3B14 + C1C0EF4015A6BED304263864D84FF7891CFD28032A7D42DEDD963111DC318C2F + 07DB34019BAAEACEB16233042E490BE649C919ECA3AD0050D925DE0DCC53CC9B + 865150A29FAD005D9A2B8B858E286510C4A30228867033EB4017F4CB22AAB192 + CC067E52393EF401B1169E919323904F51918E6802A5F4B1C50C8509014F3DC7 + 5A00E6355BF8D588085B19270DCD00739A96A2AE8CC85546EE411934018DF6F5 + 8E2918B8257901FAFE74018BAA6B68223147B6456EA8AD9C1EBD680318FDA2F2 + 52D265B3C8E381401A765A1CB2956915F6FB0A00E92C34AB7B69504C0602EEE7 + 8A00B37DAE69D60310B2F9A870155FFAD00604FAEDDDFCD88E2964E721172714 + 01A167A5EB97DB520B636CAD81B8AE4F3401753E1E5CCD1C8F7574E5938C6DFF + 00EBD0068C1E038235503764019F9793EF401A31F86215CC610321032FB7A014 + 00FF00F847936ECE339EA178A007DBE910796F1B9DCD9E8463340114DA6C0A83 + 784C29201539A00AA9A75B2C83729E0E7007047D680253656D1B8C88D073C81D + 0500645E58DBF98FFBDF90E30339A00A573A4DB00A78DAC49C91CE28033AF2D2 + 18EE729092187643C500507B781DB2D03E73C10302802A49676C32196400753B + 78A0084D82AA9F2EE94120E3E6C7E94015A417B6F18624B2FB500106A1222ED2 + 4671C86A006CFB6605CC614E3A81C1A00348D4A4D32E00270AC47CC0F4A00F44 + D3753CDAC65633731B290D2A77E6801B71611DD60260296C9423BFD68039CD43 + 48D91394CFCBD481C66803264D3E4C6E538707BF1401A1A4DF4465582ED02328 + E2424007EB9A00E925D1E1BB8A1684FCA0648519068033DF45785B3B8E338A00 + 67953472E4B094E718A009D0B34846E556033BB3D6802E0882AE44C1B71E3B01 + EBF5A00BB0CF91B8FCC8A738271B680342DEE8E30CCBB1B900FB1A00B3BF2E0B + 6006FE1271B45005D86558C6562DA1B041EB8A009FF7583B4124F3C9A0074522 + 8724295551F70B724F1401A36D72C09DE768CE01F6A008B52D3CDD5A4B12803C + E1CB28E99E33EF4019DE1E79AE74EBAD02E898EE61C98A4639DFCE463DFF00A1 + A00E9B42BC86FB4C4B461B27897CB704E48C71D2802B695612DBFEE41315C5B2 + ED653C0B953D093DBEBDA802DE873A0596D6ED0412EF26389DC1241EE3D467F9 + 50068FD8079D239C0DF82DC0EA3FCFE94013A70806F3C0F5A00D69BCA927DA7B + 1A0071215C0DB81D01ED401917CB0DAF98616F2F20961FC3EBD3B5007293DCBB + 1DA2685998E576AB1CD00287BB9401B1517FBEC87F9673400C8F4C8E39BCF9A3 + F32723866C71F41D85000F6ED1AA3212632002077340176C74E79E54C02A84F2 + 7383401B896D1DB28DF9DCA3927BD0061EA3AD2805C7183DFD68038DD5B5A6B9 + 9645552005E769C50064B4B95642C57D72DCF3401CFEB5ABDB584851486627E5 + 04671FE78A00E565BDBABD7C74DC7A2F7A00D4D27456946248F181961D0D006F + 5AE95F66DB83F741E4B0A006BEAEB6E0DBC6997C81F28393F8D003BFB135ED51 + 96536FE5465B1B8B0CE0F7EB401BBA7FC3689658D9DA596424E4484638A00EBB + 4EF09D9DAE245455607E65EDF5A00D6B2B28A32C9B5B0B8CE7D6801F2D991E63 + 05E7A007186140112DAB3CBBF6E3230411E9400C4B6DAF2129B723F302802A18 + A2FB41D93310A091B877A00A5712EC984846EC9CFA7E34014DA56F35994280CD + D09E28028BC926E25BCB0B92738C9A0086491A4690C83E5391C0E4F140159610 + 576EE38182B8E314010DD4131D87057078C1EA3BD00473459DCA58AFF1618FA5 + 0052BA81117CE182DDC638A00AF7904661E4821973CFAD0066BD8C138030475D + BDA8029DCE9CF1AB08C9F93EF2E78340193736EE397419F51DA8022596484E17 + E653D41A00748B04E76C2083CF0D4017745D76F74297CB19FB393F327F85007A + 0F87FC41A65F2A95204A40DCAFEB4017A4D3D5E46D9B4C7E8DCEEA00CDD63454 + 284228C63903AD00725AA69ED1C8C8B136060807B71400ED3358BAD20E51F729 + 5C1461D07B500757A778834FBF81234C0949E8DD9A802D49610CB112A4038E0A + 9EBEB40195756325BC2A5155949F9775003631345195C0CE06475FCA802C4448 + 88AC64EC393B8F5E05005B59C3B22FF085E4FBE05005C3212A1C2B118C0CFAD0 + 05CB49662E8858119E47B50068C51FEF02226DCF4F6A00B6616504222B381819 + FE7401592597CE28028C1C74A00D086E667455CAE723009E4500417B6F1C3A89 + D4BCC9001B448101C74C03F87F2A00BB6B6BF66BE1AADB0DCCF191281821B383 + 91F95006C5E209DE0D46D5897854EE51D2443D463D78A005115AEA3E4DDC6A8C + 87F74C18718EDC7AE680356CEDA3821F2C6EDA3A02738A008BCB8CF26219EF40 + 1AA6088CEC55486CF25491400CBE545882967049C0C391FCA8039BBFB7B70243 + 8760460EF6278FCE80332C8DBBCF208F2AD1B01BB68E3DA802D313232EEC63D8 + E0F51400C48DE59CB326E54276F38A00D0B6D3CBB3166DB8E7047140171A44B4 + 456550CDD0E3DBBD0073BACEB80B324721049F4195FAD0071DA95F163872CC87 + D3FAD0062CCF99F79FBBDC03CE3DA8030B5AD7D61431DA139E87E51401816D69 + 3DDCE6571BD99BBFAD00755A7E8B1C107DDFDE2B6491DE80243A8C16E5D82B89 + 7032A79CF22802D69DE16D5B58B94966FDC5B38DE3793B9BE9FF00D7A00EC34B + F07D95848AD1C4A668F1B99C9627F3FE9401BB66A55191610A39F980E01F5A00 + B0B1C8EE4872CCA7F87A74A00B76D0B4800604B28CE460F34013BC215886EE7F + 84924FFF005A8015226F3363E0B67A83C01400E78D14828A5467B739EF4014EF + 8FEE5C97C0070DDF8A00C5D451124658C3EEDA7F3A00CBBA1B98A92002A381D7 + B668028CA550B297181DB2314015C3C6E14763D4E3AD004BC4B1E14E71CF0314 + 00C48802C5D729B73B460D0056967B73136DDE36B918E3239A00ACAC8F11DC87 + 3C738CE7DE8029DC3A2233A64ED1C8618A00ABBD766F206D073F4FF39A00AEA0 + 433619081919E7EEFBD00326DA9197C00318DD8E739EB4019F736D1B41F2A33B + 8C1273C50063DC5B02C3E5DA738E7834014EE216865186E7FBC3A5002194C83C + B94827B1ED400E8CCD62E244247F5A00F46F0AF88E2D448532B79D1E0957C74F + 6A00DF9D518315429C83F31FD68031757B06943C92A86C0E083D4D0072579661 + 14A91CB1EBD850064DCDB4F6F212BF238C118EB401A1A3EBB7F0DC856937AE30 + 57D6803A48F5C8A58CA4C81371E7703C5005AB678678C900907A7AD00090CA91 + 6EDDC283400EB742705D86D3CB10706802E6F78DD86432EFF9467242FBD005DB + 69184E0C4C405EE45006AC2C4B2C8C7716F98953DA803415DC84C0CF3C9CE38A + 006DC47E64E769C1CF073401344B079C33F7D38FC6802E6F7901423F76782A83 + 19A0096CECE5B52424B9B7D842A11F329F6F518A00D28A192D995AD1805CFCF1 + 9E87E9E86802D40609E568D50C6E70CEA401F8F5F5A009E39366E8518798872E + 739E2802CA44C514893031D31FFD6A009AEC22333077439CE518F340199A879C + F132ACB2A9EA1B39C7340197358EF1933331CF2B938C7A50031D21B38F712B82 + 738E983CD0050D3AEA1D4EE9A2859898C03DF07F1FCE803AAB5B14D8142F27A9 + F4A002FEE61B48DC8DA58024E3BD00719ACEB5B7CC285B800E7A60D0072775A9 + AB34858003A97C71CD00605CEAC90C6F3603E09EFD3D28039ABED66EAF640212 + D10E99CF34013E8BA5497570449B8E39CB0E0F22803A9FB241656FBF68047390 + 7193C7FF005E802A5BCB7DACDFAD9D946479A40790744F524D0076FE1EF06E9D + A5CA935E30BCBA0792CBC29ED8CD007548A1C6142A2A0F9769A007F96255CF46 + 1C7D6802E4506D4DC880A7714016A3B7C4292AE067B76A007AC422D8C7037703 + FC2800CA4D34F022006203E6EBC9FF00F5500315D56DA59CA82467381E86802A + C7299F5076527C8855547A1C80C4FE44500666BD70CFA55C18D4619991703A73 + 8CD0066DEC82DE581DF949010D9F5A00C3BAB996E2094C4A4460FCB3A9F53D86 + 28028EB10C7A66972908CF2B2E32E7A93C5003EF4A240AEA848C8C738C738A00 + 91A6860F2E293E52ED8C11CF4A00AF777420942C6D8DC70AA4E38C7FFAA80332 + C6753216D883E772D90093C9A006B4B1EC70A982188041C74A00CD79D30D20DE + 1719186C8C7D6801256F32DC05914623F41CF4C7F3A00867859A22CB2EE3825C + 11C9C74CD0057176EB1B230037903A8C0A0082E5CCE362B8564E7767AD0067CC + BB8B0393E84500569235901F9B0474C8A00A52C20F033C77A009ADA5F258ACC9 + E646072A4F4FA5004F25AAC645C584E548E7AE08A00E8345F1DCF6988B5283CF + 3D3CD2DC81E98C500773A75F69BAC40934322796E31B4E320D0065F88B4658C9 + 687385C9C05E08ED401CCB69F95956424BE76FCFD47F9CD00645F58792DBA26D + ACB8036F7A00DBD00DBEA082DE60B15CA73BC8EBFE3401B2FA6C9678F2E5F34E + 33C2F4EB40162191DB20AAEE5192A0E0134010AF2CEF2B288F03A73CF5A00913 + 72E5F771CE4B74C7A5005DB6B94DA1639181707D80C7BD005BB277742DBC8C7F + 0F5E7BD006BD9CE268D54AF539C9A00D28FCB48CBCA01DB80063BD004B1DA32C + 987607033401344981215CA6C3C13CE68026837A28DCC7AF0075A00D08A4DACA + DD102E4E680243B5EFE0B95DC9B94C6557A1EE33F91FCE801CA04579BDDB19CC + 4FF5EAA7F2CD006CC414C48467054639A00A1ABCB0C9792C4E83CC523A0C3630 + 0E41A00AA9653470826690E541C381C1FCA802192D5DC1596E64239C6D50393F + 850050B4D0AD9A51E7ABC8D9E5E53B88A00DBB0B110E400A146082070680197F + 7B24113188AB15CF04D00729A85EBC92BA6E18C1033EFDCD00739AA5CC96F6ED + E663663828DDA803CEF59F10B8CC56C57258F4E40EBFE34019163633DDDC0DC1 + 989231401DD681E148774724FE60C64903A8FF0038A00BFACEA30E9D21822DA5 + 55411FE7FCF5A008FC3DE18BDF12C925CDE24D69660EE560B86933E99EDFE340 + 1E87A7E9D6DA65BC76F676BE5A29C92A383F5A00B70A79815DE36058E08C76A0 + 0D15B5448B280B82BF748F6A006DCC6D135B858BE46C06E3A1EDCD0068C48A53 + CB1B33B738CF3ED40115B4923EA7736F2B2840AAF1A93C81D0FEA28025D562CD + 911191E6210E9E991CD0041A7DEC1FD9D04F14BE6A4AD866CF393FFD7A008AD2 + F0C8B791145DC9295033D4601FEB4014B4B96486C5A2DC18A3B2820F61903F40 + 280313579CCBA75EAA901E221CF3CFA9E3F0A00A13BB6A48AE187D9236521761 + CBE0F273E98A0076A12F93A73CA5894F370DC1FEFE050063F8AE2DF656E841FD + EDC46300718CF4FF003E9400ED6228A3B62A572772F03B9C8A00CCD6C937D62C + 159543302AA3FD8340154442E2769C4A0A0E1003F99E7DE8020B43B2D481233A + CBB9C91CE32734019B14A2EA69E72A5C45FBB041E1987268033E2B8924855603 + 812677607DD009EFFE7AD004924A638D63DAA4E30077340114D3B2423CC44539 + F9400724F6EF4010B169159946D73C900640A00AE508C82C029EC3FC28019865 + C80400E46369A008E5CA80871D3231D2802BB0E04991D3B76A0063A6083D6802 + 3C35BC9BE162AC39522801ED38B9C89CE1FB1A0081925B6937A1231D0AD00759 + E1EF1BDDC4560BC64D80615C8FCC9A00EA751B7B7BF5499083C7186041A00E79 + ADA582E18B27EEC0E80704D001258C72329894A107EF03401A9A6EA452716D7A + 488871E6631C7B9A00DFB4B1B6963796375718E307F1A00892D1C45B89552C72 + 77773DB8A00A1725848439DAAC3BF1CD003BCD119D91A038E3711C62802D5BCE + E8CA5178EECB8F4A00D6B59D522DBB17A9F9411DFBD00694770248D4B6D01481 + F31C6680352297F72036318A00B76B2A793B220463A67F5A00591544248018F1 + 903B9A0075B3C8C84800E4F4C601A00B5324D73646189551C10EA7DC1EFF0095 + 002DC5BA49344EEC55655EA7F8645E9FD68036ADA45FB3C5BCE1B60C8CF438A0 + 076A36D15C973226EC30391C11D3A114019EE2FA3B92A4ADCDA9185030AEA3D3 + D0D0035EEE08F0AC1A138206F5386F5E718A00B56E9136D64903EF19CAF43400 + B752AC70E0638E3A638A00E4F519C72A1B07733633D68030EEA368E06326D032 + 707A50079B78E75DF99ACEDE52CDC0623B74C50060E93A2DC5D386F289279EBE + B401E93E1CD02D6DA2592E028553966E7279E2800F11EB315AC42DAC586E63B5 + 460927DE802CF83BC193DCCBF6FD762383F3430B37DEFAF3401E8B2058CA4518 + 088070ABC63E940091055014B1259B078EB4016ED2D89618CE17B5004F6AC7CF + 2AC408CB1453EAC3B7E87F2A00B7736E5EDD80F94E07E628028CB25BC91C5A94 + 0E7E44F9B00FCC9D718F5EA68023F3D24BA8AE612AD1CA8555BD7B8A0035469D + 74C99E20C5B693B89F6A00CD82C1B4B926B447F2A39C9680100E1BF8BF983401 + 2E9EFBA6BB0A40994AB48BD831183FCA802ADB4725AEA32C2E330CE5DD327EEB + 6791F88E68039FF1A2DDFCF6560A11EE5732C991F2A2E777E840FC68036DADED + A4B17488A03E5909838038A00C76920B8F0EACA537BBCA072DD7F79CFE58A008 + BC412A4D2E9C80E615BADC78E80293DA80337577B789222CA50B4C806791CB0A + 00C6D76206EAD6232EC79A43B76939C6DE7F4FE740115D08E2B090A06090A676 + FAE28033CB1B7D1634881FB4B46AAAA47F17714015C97D3AC5E2B78FE445259B + 77F177A00CDB4CD968EAE72266FE11CE324E07E39A00891E769DCCB195452403 + E8D9FE9D2801B2AA34E774998E004B1F53FE45002C3319AD8C830ADD0807F84D + 004320092ED009F404E2802398AEF1D31EFF00E34010C8370251B701C6718C8A + 0089801F77A771400D3B46E2A0F5FCA801D751BED18C302300FAD0052788AA8C + 03BB3400F86505824E7E4F5C74A008EE610B8287218F0280367C31E22974F952 + DE793FD1CB7DE3FC19EF401DFA416F7A819099518646D3D4FAD0051B9B57B5BB + 65553E5851C1E7D39A006476D1DEEF525542646D63401A3A7EFB49C2C5B84606 + EC13D3D4D005F7B8FB4464B0CAF4C7A1A00CEBB57994E157781C64E303FAD000 + A8FF00312018F3D5792280278646118CFCC83953802802C24A8AE58A9555E072 + 4FA5006843719452D9287A7CBDFD68037AD0B4912E000C1B0C571D2803523454 + 93CB5C975EA3BE3EB401722DB90180E4F20F6A00672918DDCE3A63F5A007C6ED + B58A9D808C723914012DF5B0BAB22B092B2261A373EA3A7F3A00D7B494FD961D + E537EC1BB8EF8A005D42D84F29433CC8ADCE11F6FF002A005834F48515977160 + 00C92493F9D004E2150082A08EE08E08A00AB7C52D602600A993D146280398D5 + 3502CDB448CA179271EDD28039FBC90BFEF1C9EA57EF72280385F1AF8A1E384D + BC3F7D970C33D3D0FD68039EF0BF87E4D5AF23924C912E4AEE19C9A00F59D1F4 + 0B7D3A20EDB432C5D97FCE680307C51ADC7045E5A05F336FEED17F8CF1D45006 + 9781FC2ACAD0EB5A91F32E1D72906DE1723A9F7E6803B3CC93CA4E30A9C00D40 + 16E2811892C3A1E063340165EDB7C08010A43A93C74E450069450846C920003D + 280285CC31CB6B3409298E56776475E0A1CF51F9D0047A5EA0F736FE548E1EE2 + 2FDDCC40E370EF8ED9C67F1A0092DACBCBBAF29BE58CAEF55C607B8C7F9EB400 + DB8B64D311FCB0BF672D95C2FF00AA3FE04FE59A006EA1A85BDCE932471FCA65 + 8F0074E48A00C3BCD620BDD3E39A297EF0F3226F461CE28039A97C4C2DB528AE + 8EE896E4795282DC2B0C9073FA7E540199AD7891E29AFE2333A9B695678DF71E + 415E9F89CFE74018B7FE2892EFC411C3BD904F6F846DD8EA33FAD0056B6F16C9 + 2D888A39C82901E4B7A0E6802B58F896E3CBB988DC7FA9567503A30C649C7D68 + 02EC1AF4B772F968CC0468B306DDC91D3A7E228020BBD4DD1A40F2B7971E5B2D + CE7B814015E3D49EE628A495B12B310A0FCC5140C8FD6801DA86A6B2AAC2C80B + 7018E71EE734015EF2E36488E54B4A46146EC85F5C500559CB3DA5DB09F6470E + 58907FD636385C5005081A5F292491CEF7C2C49FDDF7FAD00596B87B722146DE + 15371CB71E99FEB4014EEF10DBF92A41790900FF007BDCD00490466D62911904 + 8C471D89340112C6E437FCF563F328E481400871B4B4633B78E7DBF95003593F + D1F78C1C1C7A114015E4E0939E00009F4A00552986775DC08C28CFEB400F964D + E88CB840BC103B9A00AD200DDBBD0057B842BEDF85003607F9B63723D7D28012 + E21D8D8A00DAF0BF88E5D2E74866666B72707E6E57E9401EA76B25B6AB649229 + 8C2C83208E4D0066CF60B6E5A5870C01C32E28023F31FCF21E368C0EAB9EA3D2 + 802C0DBE4EEC1553D876E6802BCD2F96854A9273F78F248A009201B164943101 + 48CF1400AFF3070548418C2E280240B83B04995003006802F4173E6246163DA8 + AC40FA77FA5006F5A4EE4AA43B860EDE07E5401B31A9C870E59C1F9C9A00BE00 + CA876E1867039228002B9DCC06338C7A0F7A0062248A79F9B1E9401692EB6324 + 6620C738E4F1401B318428A76F51E94013B2C85D81C00381EB40132A103AE401 + D076A00AF7B308907A1A00E7756BE5FBA87231D73FA50073B7ED925971B4900E + 7AD0079F78C7C4C2D0F9306DF3B90C49E280395F0A68173AEEA6AE5643107196 + 03AFB5007B869DA241A45847230F9E31F748E073401CE78A3C4A235962864559 + 031E87A71400CF0178667B9BD3AB6A68D956061127183EB8FCA803D09E372FC3 + 1C7E5401345093B7703961D6802DD8AC73B3152A76360ED3D0F7CD005C748DA2 + 78C920B29071D79A00AF0DC3BB79470CCA769008DDF5C7D39A00C8D6ADB6445A + 42F13FDA81475FE1241C16F6CF1F8D005D59638ED92F6131C571B079B19230E4 + 75539E720E68033EEBC436FA95AB1B675F3226C8F9865587A8FE74019326B37D + 317DD0AA30FBE09CE0D00664974B097593CA74E4ED5232A7FC319FD28030E0B8 + 48D0DDE972A5D4770C588C8C2B138E9DC1E6802B6A7099AF65052358A2843A93 + C7CC72083ED8A00E1751BB3159181942382DB39C9DBBBEE9FD0E6801AF3DBDF0 + 8657959668C16042FCA1BFBA3DA8025369E5DB4A8B137972C65E490104267AF3 + E9401434C8165BB92EDE374B6D85647230A0630067D781400B67A8CB6B2BDCA0 + 0C1BE4755073B33DBF4A006DF248BE5C3BF747B8C8581E08CF140035CDC59234 + 6AAACCEC5D33C9C1181400E8AEA67B440644139C82CDD157D7EBD2802A5BCF32 + 198AB36380198F03EB40021692689DBE48613903AE79EA7DCD003C4B99DE60BF + BE6E110761EE2801243E502B090D2B9FDE31E8BF4A0002FD9EE18C24C8DB71D3 + 3F5FA0E9401774A529A8ACF339DEE181DA3A0208E3340104B1B464B3E000DF2A + 9A008A389AEE531AB089719CB301BBF3A0095A666015D087E808EA3DCD004336 + EC852A7EF1C1EC401400C88B06381839C9C50035F019BE56524F4C628019B1B7 + 0C704F5CF4A0089D79C6781EF4010CA99E7BD003ADE4DEBE439C0ED40104F194 + 6A00D8F0D6BF71A549B14EE88F543FD2803D4347BFB6D56CA396394B48172C14 + FDDCF6C5003EF2D96752DF26F518DB9E6802845F68B73B3637CBF7723AFBD004 + D17972EF72EAACD96FA1A00820059C860AAB9039EFEF4008CE433ED6076F00F7 + 3F4A00951FFE7B9DA5BD0722801D09507680C707383C8A00E874ABA0C77498CF + 4F97A50074B6B2B3C60B060C79EB8E3A5005A695CCCAB1A36DEA58F02802DA92 + C0F07A761D7EB4008A85496040391C1E28014448CE652E0760A0E00A00D98154 + C119F93EE8EFED401A5B3E6273400AD819C0A00C8D564568581383CED3401C9E + A33C650173F28E7278FE5401E7DE33D75ECE2304121C96183F866803CFADEDAE + B5CD4D6355691DCF3CF4A00FA03C1FE1AB4D0ACD3626C1BB71C9CE78A00A5E32 + D5D228E68E39305474CF4A00E4BC1DE193AFEA2751BE85DACD72CA4B6379ED40 + 1EA6F1AAC7B517181C0038A009ED62DD8DCA4E7919A00B7F6631C04A02597951 + 401564021FF4BD3A2DCD31CC814F27DF068026B567BF58AEE3CF4C1C71C7A500 + 33511169F2AEA71C9B23DDFE90A5492CBD338EB91C74A00CFD4F56B5BD244720 + 92DE688AE067E6F7FE7401C7DE5DDFB4BBADE367238922DC019173C3E4F7C75F + 5A00CBBFD72DE0BB49F49933232912C6064301C9DC0F20D0055BAF127DB8595D + D9129348A64922627903800F639A00A2354BAD3ED67BA6B494CD7127CE700AF2 + 0F1F414008916976F1466C66C6DC168BE6C07EC01FC680326EB5C688E2EF5458 + F2CDE6AA00E71D80E0D00635D6B1A6DEFF00ADBA9014C6C5784153F881914019 + 72DD4324C3F7D1471AF465DDC0FA0140113EB73C6E52D098A2230464B6EFAE7F + 9500569F53BB9601034A7CA5E76818140118D42E40C2BE0118E0500496FAA5D4 + 00842B83D41504500249A8493CBE64CA19BD7A5004A97F0291FB81827272C702 + 802492F0ABE73195238057008ED400E2A8EC45B13C9CF3C8CD004B6F88619B73 + A3CC4F5F6A008D65E2403E55E83D4D005CB52D1B2A42360618258726802D5AC4 + 60B92641B426493D7B74A00A92ABB9C100F39CE6800CC91964814339E3763851 + 4011884BDCF9503B4923606EE9CE6801F7EC915C3C11309110614E08E7BFEB9A + 00A48CC739C633CD0048E06D0C377BE4F3400CDECBF2E0FAE334011153B09C63 + DE8023451C9EA7F950042C983C0C1033401328FB44780BF381CD0056911A27F4 + 228037BC377D7F64CF71A7C848C0F3A303A8FC6803D3349D46CB54B7F36DE5DD + 20CEE006314012DC41239DE58105481D88A00CE16AD0B799F7813B40E9814008 + 77A98D4296F71F850047E56D2570031E720F3D680269B85C95F9B23396F6A009 + E36548810986CF5C9A00B7A7EC8F1F3B659F9DBD01A00E92CAEA52C1155422F4 + 627071401D0463CC452C78503E805005E7023242B71D47A9A008C00492C72776 + 3F0A008A6428A4A3640391814013C26E7CA4E7F847A500750073E9EB4010DCCB + E5AF51F89A00E6F51B95F258E327904F5A00E2BC43A9410DBC91A1653B4FDE00 + 722803C875FB99EE672EEC5874E4D007AAFC21F0A1B4D2C6A3731C64DCED6405 + 7240ED401D9F892F62B5B66C12AA01E87BE2803CBF49B39FC51E246894C86DF7 + 7CC5CF1C76FD2803D5AD614B1B68AD61548D15400AA318E3D2802CA8FDE2A9CA + 9CE78EE2802F4198994301E59E8D81C7B50024F2BDA5C0693E686560ABFEC363 + F950032D61F26F4A4A42ACBF3C4071FEF03F98A00ABA94F26957065B3F2842C3 + 32C27819FEF0F7A00E5EFB5A1AA5D992D2E5A39957324123E3EB91DA8039AD5E + F62B7B06B9D3276508C7CC85720609E48C1E0E7B8A00C7D67C4C0E842DDE3B85 + B808009E3E32303A9068032E075D6FED725B5ACA6668F6C730608A1B1CB139FF + 0038A00C79835A45197B911345C4A57EF7E1D38E6802A1D62568A48ACC5CCEB9 + C969391F5C670280285C6A6D15B3C6B3EFB89386318C2A01E87B93FD28031C96 + 279E4FBD002043D450048206C74C9FE5400E16AD902801FF0062709B8E3E9400 + 82CA4CE31D79A007C96122AE78FA50040D6EEAC01C50031D319E28025B7BB781 + 0A148E45EC245DD8FA7A5002CB792BAE142C43FBB10DA0FE54011C72BA9CE73F + 5A00D88A58EE2C023C18D833E6C63E6CFB9EF40134EE619D65810F96EFFEB376 + EDBFE1401244B3DCBBB956DC38C13F28F7A00735B92CE5DD703AEC6FD3340124 + 2A66FF008F4018290091DA802D18BFB2A12813FD2261CB039DA3BFE3401897A1 + 6305DB86FA7068021546560EFC6402131D7DCD004F88E3877CA8C33F736F7340 + 159D72F86E1BB500319BE5DA0648EF8A0063AF1C0DAD9A0085F21B070680085D + A1943E703B8A0096F955C0923E87AD0057B6B896D65DD1B32E7A807AD00753A6 + DC49114BDD3CBAA0FF005B186C73401D2E8FADA5EA95919FCCE8450068BBA8CE + E8F7027038A0065BAB33CBC9DA54E06381400A32A09DDBD87CB903340120DA9F + 3310431C631C8A0062ACB2CC228DF8C9E3D6802EDA2144F3303962785E87D280 + 366C6E0ABC6AE83A648C633F5A00EBED1FCDB68CED5C951C5005A889DBB994E3 + 8E0D003E645701939504E73EB4015EE622572BC67AD005B859842837FF0008ED + 401BE80E319C50051D46628307A0FD68038AD7F51586C9D00DC30DDF03A0A00F + 2CF12DF19666065C839C0073F91A00A9E10D124F1178860B2424247F3C840FE1 + 07FC4D007D0134916976488836AC68142E71C018A00F31F106A326A7A8C76F0F + FAD91B62A83904763401DCF8734C8747D222B4403CC032EDEA4F340178141329 + 906DC9DA18F434017EEEDE45449D738881DC8A392BEDEF400D92E258AD7E5097 + D037F778603D31CE7F4A008ED5043E64E1CBC647166EBB593E99FF003CD00666 + B3E20B4B2812D6E0E11F21493B1A2C74FAF5EA3D280302FB5C596E4A5CB008A0 + 1491795917D73DBBD00733ABDC25EEBAEAAF14B69E40658DDC615863BFF9EB40 + 1CD6B7258D9C02CE0BB52E4E645498322B1EB8C7A50066CD9D36CE268F507B71 + 2A82544986283DBB67D28032F57F13CD70AD040584440C976C93401909A8DE23 + 656E641FF02A0089A59A76219DDFEA73400F8ED6490FDDE4F418EB4013C565C6 + 76E3EB4013FD88A857DBC1EE05004C22484B861BB701B4E7A0A00D0862B78616 + 38DE79E9D45005485C49B768C139E077E680255F245DA44C8A3E4F99D9B8A00B + 45A09B2509564E9F2F5A00A175668B31DD2EF3804FA1A00A5716814E1718C9E3 + 1D3DE802A4F6E571C1FCA801A9097527A28E7A50042EB8E9D2802E6877E34FBC + 13326F1D08CE05007A14BA159EA7025C5B5C089F070C9D589FA500636A3A25DD + B59DD24B23CAA546241C9E08E3F2A00CFD1ED608D7CD575778C1256638F9738C + E3B75A00D2B7BBB70C36BC6C41C22E4E07AE3D6802B5CBC87F73854CA9396E5B + 9FF668029471416EE640C66B9E84771F876A0063D9CCF333CAAF18EA02FCCCD4 + 016AEF7CD3EC5458E303605EC47A0A00CD8E2CCDF28C95CE17BD0025C43E5310 + 5830EC450042C06D1CF34010C8A5B0C0606280216418DD9A009ACE70B989C646 + 38A0082EA328F92081DB8A009B4ABD92D270E84900FCCB9EA2803A48A2B6BE80 + 5DDA5CF9732F263EA45006BE8FADC676C17431B380E5BD2803A32E971E5EC618 + 93076A73C7BD0037C83FEACBE54293C9EBED40155ADA32B997B7439EB400E86E + 705D3CBDA01CFE1F5A00B9F6927688D81C2E38E83EB401A9A73334081B018727 + 1C679A00ECF499481C60657B9A00D0197D8BBB907AE2802551B11B3BB3FDEA00 + AEFF003FCC18E0738C5005B8E2631A9126320718A00D97278C74F5CD0061EB33 + 85C678F9B00FAF5A00F34F125DB98A5460C9B836403C371401E71A95CBB0C328 + DC471818C5007A8FC0CD05ADACE4D6E75F9AE94C699F407FFAD401D178D752F2 + 23F2C9500679EF40181F0EF4492EAE5B55BD0739DB1FD3AE6803BB9157CDD883 + 23A727AD004AD024C821946048C540F4C0273F5E2802CC374D0E21B950B3E0ED + E78703B8A00A82CE7B4BA6BDB74DD13B0325BFAFFB4B9E87FC28033F5CF10D94 + F68F1A6D739C3A302AC280390D60C72C2A1D83C7B73E5CCBBD7FC68038FF000D + 46CB72974EEE376F8FCB562CBB4753CFF2A00AD7F15BC52C9A818824ECE0AC7C + 038E808E0E3D71401C8EABABC7B5A14B787707387E59B1EE7A7E94018B713CB7 + 326F91B27B0A006A46CC7819F6A00D38FC3DA81D31F5136ACB6B1E0190F4C938 + 14012595AC6AB197CAEE3B49DB9E3D6803534F4C832320CAE369F4F5A002492D + D2EDDA28D96DFB93C8A0065C3C2D72CAAE3CB6DACB818078A00AD711F985C800 + ECFBA3B628020877AAE413D4E7D2801D144F0A99780CBC007A73DE8016522593 + 00E4E32C7A7340090348AE58B00AB9E7D7DA801AF91309247CE4F41401B509B6 + 658E32EAAFDF3DBBD005096DD2EEE2511306DA70B8FE2A006C9A73C70BE57E75 + 0415CF414019B35B2469CF2DCE47A50051785C02318FA500767F0F758FB34CF6 + 371B71211B58F507D2803BCBAB082F6CDA2C021B8E33401CCCBE1DFB34DBD54C + 91AA6D67230CC0F63FFEAA00E7DECA4B1BE3F650CE919F94C8C0919E9C71400C + BB82486EADBED2EEC67DACCA1828E4F4C0E680362DACFE6310B78D57190A38CD + 005C36664BA049206CC1E07A50066CF648B031B994E723695E493FD28032EE0F + 91BE18E34404E4BB72C7F1F4FA500674AAC07979040EC38C50057658FA82C4D0 + 022FCF8503BE28018F130CFCB80280216474F9C0C63BD00582BF69B7054FCCBD + 450051E6293D3140172CE796C5C5C420329E083D28037609ADEFEDD7CA6092F5 + 60781401ABA65EC9657004ADB90803767EED0074305DC6CA85483C60E79A008A + F24F2E50633B803F2EE19A0089AE190BA7C9B9B1BC114016ECE668A3316D5CAA + 924E39A00DDD2E5E1573F301FC43822803ACD30308D58E3691D48EF401B364A5 + 155987CC40039CD004EE1923DC541C1EBE9401047202C032A900E450069A08CA + 29C751E940135D48238DF20903AFA500729E24958C0AAAD9C1E33401E71E2595 + DFCD93CC0A4A9C82680387485AEAFE085897F318280BC77A00FA3BC3560BA4F8 + 76DAD10E1628F818FC4FF3A00E1FC5A27D5B5A8ECEDF2C779CF6C0EF9A00F408 + 228ECAC82C61630070A05004003F98B301918E540E4FD2802DCD2C6D6B05C2BA + 911481891E9820E7DF9A008E69E29EE963BC5317FCF3907DD27D8F634015356B + EBEB28CC41D278CFDD6C856FA7A50079978C35FB64B88277B2B8DDBCAC922719 + 183C020F3FFD6A00E56E3C52F05C4E116E82CB8116E032063DE8026D3F517D2F + 4D926BDE5DB2B0A2A81B57BB6703F0A00E3B58D72E2F267092304CF1EB4018E3 + 24D0049042F3481234666F41401EBDE05F85416E126D73CB605B11C6921C6EC0 + 3CF1401D3FC4FB28ACBC1E6D6D5552279154051D873CFE22803CDF4AB3470815 + 0A38EE47CA78E94015E62632F12448995C1CFF0017D28033C5B85B80A8B94273 + B5BAE2801BAADC5B58AF97228F373C6DEA075A00C67BFB9B873F671B57A72050 + 031A09D50179F03A15CD004133488A079CC71DB3400D8AEE68C9C3E41EB91401 + 720BF49BE4909427DB8340175955915FD0F0734011DDAAA3E1490075E7A50058 + D325F277E6179243828492028F7A00D99E2B858F74BB555872A3B9A00CC9602D + 23B187283EF1EF4015E54B4911963E4A8048C62802087CDB39E299018C870DC8 + EB8A00F5DF0EDFDADF59472866518E430EF8E6802CEA118232A4ED3D49FE2A00 + C5BDD0A3BF9F26DD003C127B9FE9401C7EAFA2DCC3321897ED0902FC9CFCC573 + 9C7D473400B6BA9949DE4440A020D818E4AE3AF068035EC7574BE4896490AAE3 + 3B178F9BF0A00B370BF6852D15BF98C060B28E99E879A00C8BCD3CC6E1D93B7D + C4E49FC7B500625E5BAA4ACC130A7A1C9C500406D5BE628A781939A00AC3E5C6 + 460F5A0063B95385C283CD00424A9E4F3EB8A006A3F92C180F94F51400977100 + 77283834009672E0981F947E3E86801EBBED6E3038607D78A00DED3F5586431A + 480F0C370F51401ACD7CB146BE56423755FC6802EDB5F79C4025588EB4012AB8 + 7B8C9396ECB40166DBCD00961BB9EB9E9401AFA7CAFE6C4A146F078CD00765A6 + CAC37337463F74FAD007430B30000604F4071DA802C05C464100F19EB4010491 + 3B36E5DA01EC45006842A0448098F3B450049A9201BDCAF61C83401C46B174A5 + E5024DAFF4CE4D0079EEB4E5165DD1900A9079CE3DE8033FE1A69CFA878D6D76 + 83E544CCE481C700E2803DDB5390C568C7058819200A00E7BC216A2E2FAEEF80 + C02DB471D3AE6803A4BE9A359D773818E327A50016B70D1CC04903087191329C + A8FAFA50041A95A5A6A4CCD0483CC74D864898720FAD0064DDF8A350B4D3910E + 902E9C82932A4BB5A33EEA477ED401C678875C490BC10C57D6739518589377FE + 3B401E7BA85DBAB496204F2C8EE180953CB39E727140124F711DA243712CC9E6 + C8BBB615DD8E0719A00E7B53BCB8BB7334DBB9E401DA80321B249A00D4F0EE83 + 7DAF5EFD96C20695F6E4E070071CFEB401EEDF0FFC089E1BB25BADBE7DDB8C4E + ACB829838381CFA9A00F41D2F4D8E38BAABC6092836E3033D0500709F1755AD6 + 5B208DE62124ECC723EA73FD2803CDF50D41ED5E168E1CA631807834014269A3 + BA99645240C8F9B8A00A1E23D492D2116B16D693A860FD28030AC2C64B926EA6 + 07CBCF53FC5401699D610E1187A6DC638A0063B799160B6DF6A00CC9C10E4638 + A008B0450021A00B56378D01D84E109E4FA5006D065BC9FCC27E5C72579CD006 + CD95EC7630958625394C386CEE3EF4011C3ADDC1692065F315DB76473B7E9401 + 6EF584D6AD23279728E3695FD680395B88BCBCB038E71807AD0049657025251C + 7960FDE63FC5401D9F822410DC1B72FF00296DC09E878E9401DF2A191149F917 + D03668020B8CC1C2ED3BBFD9E8280332FEC5A670DBB61EF918E28039FD4F4EB8 + 90BAC73F1904294DD8A00E7E2BDBAD36E24867B1490BE550A7CA73EA28035F4D + D56D96510C68519132F27999DC6802D343657A181B959188C98FCCC9FAF1ED40 + 142FD2DD3F7700E003B414381FFD7A00C6285725D0281EBFD6802A1B5E4923E5 + 20FE14014E4882A8E4007F8A802331E0E0039FA5003664F94640E94015D58AE5 + 1BEE9EFE94011CB1EC3C50059B72B731889885917A37AD003154AC9860558743 + 401ABA76A0F03A8906E1EB401B90DDC571217660A38273EA38A007CD704C9BC1 + F954F634016EC660D2921B08DD40E9401BFA54EAB72A59580E485F5E2803B9D0 + AE012A9147B98F24139C7B5007520380A411B54739E2800C856018123AF278A0 + 0686092827EEE30BC5005B8E27F2D700741DE8026D5DF6C4E4671C6450079FEB + D74A92BED214024608EA680381F134CA1D82BE49CE188FE7401D17C0BB40CF7D + 7EF90449B011D3A7FF005E803B9F13DDB436AD8521BEE923D2802CF866D96D34 + A4CF0CEA1DB3EFCD00134515CB34727009DBD3D7BD005D82EE3B502CE461E6AA + 654118DC3D680321ED205B87BA4DF6F2725BCA6C64FB8E9401CB78A3527B599A + 75BA58EE271B55587DF23A500705AB6AC750114C9707CD56218467664FE34018 + B74B0AD92EA4EE44F23B26CCEE247A93F850063BB497CEA08395E147A0FF0038 + A00835162916CDC703A2D0057D22D4DDDFC302A92CEE071E9DF8A00FA53C19E1 + 4B4D074F89ADD4A178CB338192E3230DC7F2A00EC608425C79F0E4891995F3EF + CE6802EDA45B13E5C85CE71E9ED401E75F183E5BEB0C2AE4A9C123826803CB75 + 2FF489102302F8DA57A00450066EA371169B69E7052B23938461FAF1401C87EF + 2FAF8024B348D8E6803A668561960B551858C7F09E7D4D00666A3088AE1B19DA + 4923775A008378D870A338238A00CF909DFCF6F5A008E801C7A50030D0068693 + 73B5BCA76C0C7CA738C5006CDB89436D561819CB74C8FAD0068E87369D6BBBCD + 6CCBBBE5DA0FF9C5005FBC02E63761284CFDD1CFD39A00E66F214B7762E4B63F + 0CFD28028BB20955A3CB0073CD00751E18BB41A8C336E0141C600EF8A00F50D3 + E43301B24DC8C3B826800B845791848E37A9C6DC1E050057960E0B48067EE814 + 0146E61C319372818C60D0066B6976FE7C33BAEF208E180C03DC8A00E3353D09 + F47B86952759206390FD3F314016F4BD62356779248514263E58C83E9400E69E + C6E304EA0C9BB9C02323F4A007470E9E012BBEE1B039604FFF005A8003642480 + E50AFF007450064DDDA0DFB533814014AE2DA4460A579C71CD0057DBB49F6ED4 + 015AE50990D004639F94F4F5A00632344FD3045005FDC3508BB2CB18C803BD00 + 25AF27CA93E439FCA802C26F826F91B703401A16976A31927729E82803574D68 + B24067E460E2803ABD224259541F954FCA7049A00ECB477D997042BE07047EB4 + 01D845F3C20E7271CE28018C39F99182E3AD0045B77C9B49C002802FC5066242 + 09C151DE80175DC049067A761401E77E2330462577186DDC64F18A00F33F115C + 1918C65FE71EFD6803D3BE11DA9B3F09EFDBB5A498B67F01FE1401AFAD4E9215 + 8E41BB7119E71401ACF3C70582C815BCB8D4038ED400960A2E01DDFDEE0FB8EF + 4015FC41712416BB2E8EC9232365C4601C7D7F950062DCEBEB3DA984156957EF + 321E1850079DDC6A13EA7B2DAEE206EBCD0AA42F0BCF5A00C896D6D6DAE4DC6A + 0DE5C218AAC2382DEA7E99A00E7F56BC17F704C2AD1C0BF713F4A009ACAC5C28 + 2A77337385CE5450067EBD9F390328040ED401A9F0EA264F1869722950DE77F1 + 0E0F078A00FA7AD1274B48406CA676EC4037467D07622802DE9C42A3C2CB30E8 + 795C73FE450069439D9CAE0F7A00F32F8EF0B0D3ECE703A12A3079CD0078E920 + DB28C1331239CF340187E2BBE92EAE92372498860F6A00A3A163FB5EDB238DDF + D280372FA53FDA5BD4055DE0100FB50054D557749950ABB491F85006595901E9 + 9C7A50043246C1B07AF5A008C8C1C77A003B500211814002B6C60CBC11401D04 + 5BDA249029F9901E0D0024247DA5099821C8E41E40A00EE34AB6B796D1953334 + 9FC4C41E680399D66C6512BA85F97191BF8C50073F344171B72B938249A00D5D + 102C394572C55B770338A00F58F0F5C7DA34D8A4552AECBC1C7BD005E1065F25 + 8B6E39200EE3D680164C4C550A600E9DC834014EF2D1E39760C1E79245005364 + FDE1323805781ED4019DA8DBDBDE466294745E8C3247BD0071DABE8AD62EED16 + 7CAC6EDA4638A006697756F0E33121623A11CD00749672C3345868F0C547DD14 + 01645B7991AB12778390A3A1A00A17D6B1A3E4A1098FBC3B50065496259F91B4 + 766E6803367B06F318053F29EB40146681BCC395031D734014EE630AC768FCA8 + 018A4C9C13C8140022BC4C1D38E680348451DE5B991485954E083C7140109678 + 24F9B85E808A00990EE90BA8F973D075A00D1B1B8D920011B9FBD401D9E833A8 + D85BA63A13D2803BED22484C68DB14965C06A00EBAC52416CA0B29E31C8C7E54 + 00B265576EF1F8F6A00AAE8432B23127BE3B8A00D6B78FFD1E3E3F847F17B500 + 52D7CED9A5210B1E38CE2803CD3C484FCDB9032EEDFF0030C8A00E0AE6117579 + 0AA286667C138E7AD007B568D0FF0067E8D15B9550547A500635EB04BF5989CA + EEFB8C73401D0C8E5EC53691829D31C628032B4FBABFD2E433C71C9796D9198C + B7CD18F51EBF4A009359D620BC42C8DBA3233CF18F6A00E4354D52DFE72B0C41 + 4023240EBF950071F76F35897BD33CCBC0F2A2DC46E723EBD071401CB5E5CCD3 + BF92EE5CAFDE25B39F6A0096DADF76D01460D0075FA569BB1615D88CE1012411 + 93400FF1BF80A7B0FB3DCB4CAC6540CA00C6DFAD0065780AD5A1F1A69DC7DD98 + 76C826803E9C4B50F6E9B1D91D4FDE5EFF005A00B8085C0279C7E74011FDA146 + 7DA803CFFE3124977E1A1203B3CA901E7B678A00F23B3B6122090C202C6BCB67 + 39FC280380BD91A5B979189249EA6801FA51297E8EBD5727F4A00D4B28CDF6A8 + 8ACC739DCC6802CEB37F6B6F72F19569D94E31D36D006625C8F259A35054FDE0 + 7F950043F6846566112838E9E94014B782E72280269A1214152197D4500563D2 + 80128036B4A12C969804ECCE0FF850045B0BCA321B39C702803BCF077DAC43B5 + 77226090CDEC3BD0051F11B8624ABB8987DE3BB00FD28038BB9618EE4D006978 + 5CFEFDB39C30C6D51D6803D6FC2819B4B8F66EC6085C1208E68035E52E5FCBE8 + 41C6ECD0057309867088E5941FCA801D730BAA2B920863CFFB340146F6DC900A + 8183CE07A500556887DA0A3C7B1D80DBF3751DF8A00C5D7E268DCC661F9060B9 + CF6CE07EB401C7EA164CBA96D818671BB2BD314011D86A3246D8695D581E9BB1 + 401D468BA90BAE4C9B1C93C73C7B8A00D29651E498F0B21232C48F7A008B31AB + 7EF94103AE46771A008CD98742CAA2343CF028030B54B48E28832E1989E768A0 + 0C4BCB501430E41EF8A00CE78F6927A5002C7C1DA4F3400233C4DB90953EC714 + 016BED0B3220600B74208A007BA344A195FAFF000FA5004F1B90C09607A6467A + D0075BE1C976C90B1456424E533C5007A5E88CDBA1253084657B827D2803B808 + 1A04600E319C7A5004328F9F23E5CF24500433021B258A8CF068035EDCAF911F + CC7EE8EDED4019DE25601A7049C80303F0A00F2EF12CB16D60778F9B963D09A0 + 0E634683CDD6A04F2C6D320249E839A00F59BD956DE1018A95000C0EF401CEDC + 48B25D0218205E704734017350BC6168B209D615881C67A3FD68029DAF8A20B2 + B9482E1D183302D22B038CFB50050F13DF0BB2ED69125CA48062463F2FF8D007 + 291D869ACD999A66915BE6541B5131DF27B7BD0061F89752FB4B34D960F20DA1 + 4FDD51ED40187A7DB99A5DA33F80A00EC349D2D8C6239237CF2724718A00F51F + 873A5A3D95FC1346CADE5AE199704F5E94016FC6F0C179A242C71948C2F3EDD6 + 803CA74D4FB06BF04E2455C48A4B37A03DFD2803E8F5B98C59C7309176BA8607 + 3C1CD004124C666E4A855E463AD002A28DE1CAF23F4A00E7FC7564753F0E5F44 + CA4FC994C72720E7FA50078AE94561578DAE234010A80C3A9A00F359C0DE7181 + CF4A007DA16490BAB6DDA39A00B11964B696E23CE72109FF003F4A00A3B98B67 + 926802EDB5BB4B2048CF078240A004BF8841334511C8C50051EF40176C918EF0 + 0FCBB0920500532BC9E302801B401A9A30211D943139FE11401B969752C0C5E1 + 9407DDBF0CB8E71401D96917BFDA5A5E5A3265CE1881C500735E208480E84246 + 33FDD239FAD00725330C9C0EDDCD006FF836365499F1D4F53D071401EA7E1B90 + FF0066C7F7BA1E49F7A00D0B9752A9B11994755538E7BD00311EE2E63F922923 + 1F75B7AF3F950040F1DEC1222AA46E8490C08DA45005AB586EEE235451044C49 + 2581CB0A0075E68D6CF1A97591D988CB775FD28032754D1EDD6CA58DB7BA60E7 + 7B7CD9F7A00E5A2D32DA270181E471CE483401CE6A7A533BE5432E093D28032A + 1B87B298C4E31F86322803A4D1B55C00A92F207049E07D6803A0B7B80E990033 + 1CE40EC2802F5AA6E42B18C803BD0066DD592920E0B0248DADD7EB40142FF4C5 + F215238C9427A8A00E6EEAC24883A104147E063B50065CD00248C119A0087634 + 64061C6339A004C95391D0D004824F95467EA6802CC6DBD81DCB9C6280377409 + 08B850C76E4F4271401EC1E1BF2911111C06603703FD2803D02301A34E09E319 + 3400C91557F889E280293A6242A5B83C5006B5BFFC7BC7CBFDC1FCA8031FC56D + B6E646624202381F4A00F35D7D66959F6265377623AE3AF5A009FC3BA2496914 + 52CC3712E19B27A0CF6A00DAD7644FBBB8E00E9D33401CDDBCA65BA72D9C83D4 + 1CD003EE2E229582C89BC8070A4E680196CD6D02195A18CCBBF3BB68E063AD00 + 64EAF7D23C6FB25553C6D181D28039CBC95E1B6558B218FDF73FC43D28039F9D + 649DA42A4B471F03DA80367C176C5B52465859C86E1793938E9C5007B8E88FA7 + 6A168B677D631DBCFB4955DB83F9D0074564F15BAC91470A858942823B8A00C0 + D734E946953C9232F94413CD00792EAE1629E46889213682DD88FF00F5D007AE + 7846FBFB5341B67690B7931AA10C3852063D28037E1DBBB85CD0059130584127 + 6B1E9C5004332ACD0B2382C18105477A00F9EFC5769F60D6AEA16511ED95B6EE + 51D0938E9401E777F198AE9D48EFC5004BA2BC49A8209CE216F95F8CF1401AD7 + F05A59B491C39D84E482783C5006508AD558BEF240ED8EF401A1E70B6B079E38 + F60FBA847F7B1D680319E472E4B751CE6801A4A9EDCD003E095E20DB4E030C1A + 006193E560475A008A8036F46568ED9BE6550F825B19C0A00B57370FE7EE46C0 + CF008EB401D4F85F5311C6607B7D8CE3EF804E4FFF00AA802A789ED6E47EF063 + 19CED1EF401C6DD29128CAE0E7A66803ABF0D3CD0D8948550B3BE0AB7A5007A4 + E87E67F6545B23DBC1EF9E3E94016E532344AAAA413CE40E94013DB0916DDC97 + 206EC824633C500344419564201DC70C7D79A00D2B5B72103138273B4A81D280 + 0794A842CCCCA4E092318A00C6D7EE061A32CADBFBE3A0A00E59A18E47223725 + 436580522802ADCDB44226663800F2013F8500739AAE962E662046413F74D006 + 37D9AF74F959CAEC55E8C31401ABA4EB61727CF25DB83C74F7A00E974DD4DA3C + 959F780A37605006943E65CAEE53801B34012DC4456262FDF18F4FD280336FAD + 1644041DA42F248A00E6EFB4EDD850877007273F9D0065DDE9CC30CAA719C628 + 02ACF66E880153BB3DA8033DD590B2B645003A39157EA68036B4BB929B3276EC + E83B73401EBDE04956F1D3780404F97239078A00F54854746C631C6280219CE5 + 58018FA500559CB46030519E809A00D6B703ECF1E49CED1FCA80317C5019AEE4 + 4040271D7A74A00E6D74E69A58D5917E4E49DBD6802CDE6DB67708403803691C + 62803075366798B3B039E300FA8A00AF35B811A848955F00707823D680326FB7 + 90AB115888F95982EECFF2A009F4ED22E2FAFA347BC29148429558F1FAE6803A + 7D5FC01628D19B7272000ECC3247B9A00E67C5BE188ACF4D8C82BE66FDB90BF7 + C63AD0043F09F41B7D5340F14594B046D2BC69E53B2825490F8FD450045E1FD1 + 6E3C37AA40F2043C9618E09E31401E87A85E8BED3E230C6A976AC18900703EB4 + 016ECC96CB02DB9B96F7A00ADAD4F28B71015C87F94A93EBDA803CE3C4F690DB + 3B94F2F8C031AF4A00D3F86DADCD6F7C6C26776468F720CF008205007A8A0C22 + 8247CDFCE80257859D4012107DA802BDC8F2631F3B60FA9E9401E65F16A080AC + 1711106E77ED2AA3EF2E0F7A00F1FD7E069516E51488D7E5E9D28030FA1E3AD0 + 05FB18CDE5BDC092660624DCA3AE4D005745DCA0F5C1C1A00B775722E205B755 + C7CDC60F028029CD018A568F39228020E8680141383400D26801F0C6659020EA + 6803A148BCA11A3468E36E383D2800B21324A1553CCC1FB8E3AD007696970916 + 9CAE96A91C8391818C7E3401CC6AFAD4A4C8BC1CB724F14019DA5B8BDBE8FCF5 + 4D8AC09007519E9401D7DB0B669447140376F01518FDDFD2803D1F49823B7B40 + 19B0BB32117820FA500343BBB6E8D78039E306802425F66D1F7F1B7E61CD003A + 21B5C96E4A9E549E05005E827318F9578C1C0CF4140105E5C62064C9E9D3A500 + 73F349E642D98D71FDE63C8A00CD484939443BB04E071FAD0057BB870CA3EEB0 + E707BD0044F6AD14A374580CDB48C7414015B56B1496CDD44119271B4103279A + 00F3736F20BC9921E0AE7E5A00B7A76A92DAC803EE047419C50075FA26BAF246 + B16796381DE803ABB7BC89E040572C0ED209E9400A6DC4CBBD555BAE477FAD00 + 52B8B7D9B8B229DC0E08E0D0050B9D2F302C8A83A67693401917D640AB0283E5 + FEE8C60D0063DDE90DBB181924FB50060C9132374A009ECE56538EF9A00F5EF8 + 5133C9751A9618DBC291D45007B405D884038C0E05005495D518F75C64FB5003 + 0B23853C32F63401A3091E4A75FBA280337C4499BD62781EA4FB76A00C3778E1 + 1924F9AB8DBBBBFB50060EA933492468E48C13CE739A002D6CC0DF71299301BE + 5C0ED8E2801978EDC138DAC7AF6E050065471CF35DEC1974CF271C28A00DBB18 + E18EDD5C0712A1C939C007B0A00BA6EEEEF9263E66C81B0483CF3FFEBA00C6F1 + 5DF996CE2B43FF002C8025B18A00C1F03EA73787FC4D0247B160BA7114F9EC33 + C1F6EB401E8D796E2E74AF3F92E931C1ED83FF00D7A00A46DDD0A7CAA77F0777 + 045007416A8AB1A4202E360EBDA8022F11D9F99A64EE83E6894BAE3AE40A00F3 + 9BC8C5C4124A5C938E8B8E4FD28039AB8965B09A39AD582B81CB13C03E98A00F + 5CF0CEB29A96916D22C8AD3045F3B9FBA71401BB04FB5319E77640DD40193E2C + D5174ED2A69A131C977FC309EE7D71D71401E15AA5D5EDEEA2F25E066CB9723A + 282734019B753FDA018A40C01FBDB9BF5A00E7F53D3DED243B4131F66A00B1E1 + 960B792AB3001A320FE9401500F2AF644FF688A0064EACAFD0E3AF4A004790F9 + A4EEDDC753401131EBDA80131B53AF5A0068049C0193401ADA6DB7963716C3E3 + 907A5004C0967DAB9E4F6E6803BFF0BD9C9E5F9F38468D4900B2E187E140157C + 4F7915ACDB50EE279DCBD31F5A00E16ED8CD31D83393D00CE28036F46B3FB0A8 + 2E5031C13401D0E810B5CEB31100B6CE411C63F4A00F46446F297664B8EC7AFE + 74016922558CC9B7231CE1B926802A8579274CE4018DC48E86802CA9C8218AE1 + BAF6A0066E689C8E818F200A00A97EFBB2B27CB9039E8B40149624688E5F7376 + DBD0D00509576CEC14856F4C7414015DA30D1F560C3EEF1902801F931C65A460 + 483800D004329462A631C7A75A00F27D74797A9CCCA31F39ED8A00A599666DCA + 0B15EB814013DB5DBDBCE36123073CF5CD00745A7EBCCB2C6D230DCBD7271401 + D469BE225698ED44CEDC5006BA5DA4CFE448A076041A00BB6CF1CDBA36520630 + 307AD002DC692A39F29B6375246334019B79E1956DCEA8CE173B40F7A00E56F7 + C36CA4AF9530239C11D680309B4A9A394A98DD467A91401EA1F0D992DAE608C0 + 3F7002D8EFC5007AF4330789B70DAC38FAD0042F208C9666017D2802351136D9 + 1C1FBF9C63A5006B44418D4853D077A00C9F12C886F278D949C63B9F41401CE5 + C40EEFBBCB3B09E0E73EBCD0066BD8A89D096DCF91C9CD005F9D523455419543 + CE3B9FC68032D9247B978B6F3BBEE1FD39A00B8FA69B688B449B64C7CF93C1A0 + 080080C985760C48CAF38F6A00E92CEDE2974A93F7786C67BD0079FEAEBBA496 + 2676F95C9CE3DFA50073DA8D84CAADB5B60E4821B91401EA3F0B9BFB63C1F343 + 75217952628581F400834012886537F2DBCAACBE49E4E7AFA73F4A00D382D576 + FC8BB641D0139CD006C792CF6EF1E01DC31401E45AD24BA5EBD3D8BC21632F90 + 7D7233C7A500616B56B13728155F3CF1D28023D035DBCD02E4C9E6660057CD8C + 01F38E7A5007A4378CB4C1A435EC5326E39112904966C70318A00E06E75A9AEF + 509A6BB9B7EF1D0291F874A00C1F13EA096F69B14C792D9C60E6803918272CD9 + 2D93B87CBD3228034925F363749A142ADDFF00A71401522D39CDF13671E5707E + 5F41F8D0056BD8961BB12321001F9D41E4500452E2621BCF38200391EF40151A + 355CE1C1340111F4A009562926216352DDA80366C34C8ADA0696E78987DDE722 + 801B2A092660300E325867028027D21D20BF8DA55050F5C771401E9FA9B47058 + 092D97E4D8581CF538A00E0355BD7BBB931BA0FF007475E9ED400B67A60B58C5 + C45CBB2E0AB0FBB9A002EE4789802846E3C1CE4E2803B9F0569B3A406EF6FCE4 + E3181C8C5007696AAEB282D92C57E6191C0A00749208D30B95C1C053DE801010 + CDB1500623939EF401194DDC19030E37763D6802ABDC45B8C6D9560C7A1ED401 + 59A6C85C12D21181B9783ED400B02057412C417703BF6F1CD0057BB11F985628 + 8123AE78E2802B380A1996304B740280295DDAB95F9970A4F209C714018B7371 + 769E72AC45D23C6C6CE38C7FFAE803CEF5994CB79231054139C139C50055B59D + E02DB1B19EBEF400A099AE63CF1920500757168767716724CD7612651C2ED3CD + 00632A5EC13B2C2CCDB78E0738A00D48BC412978C4A7063CF51401D5699AFA93 + 1CE9202E31B902E31401D7596B10DF2AAF2383F21EDF8D006D5905B8561BC060 + 3E60477A007DEE930DC2285C2FCBF337A1A00E62FF00405323AAA2BB2FF167B5 + 003F4EB216930F29194A1C16C1FF00F550077563A90B8DBE628518C67D4D005D + DD1B0018719E0FA0A007C5B776DC639CFB6280342376F2D70C31818A00ADAF22 + 35E4DBB072471DC71DA802A490C4B08F9F68DBC9ED401CF5D389A60224DAF9F4 + C50044D1BB191647DAC07CC73C1EF40068702CB74EC790AB9CD0049A9CED1B20 + 62CD8E0201B89FC280316EAE3FB3D4C93453B36720AC79C0ED9A00EBBC25AA5A + 6A1A5A247287720EE1D1873DC50050F12E87FBB92785D539CE1BA50070FA9C1B + 22658D95DC8E4919A0077827C503C25AA6DBADC6C6E31E608D7EE1C7071401E9 + 176C26BC375192F0CA15D3601C822802D5A161C6DCB0E868034D64D80027047A + 7A500713F1574437164352B753E6438276F56ED401E7F6B7B15F23C73868A54E + 18E339F6A00CCD46CDD3132E3047CAA4FF003A00C4512EE2048D951900E463E9 + 401A7A666701491B87538C9FFEBD0043AD68F2DF1531B6E6DD83BBA50054B6F0 + 7DD218DCBA0527039C96A006DD69935B13238F2D464203C64D004168E6DDCCAA + C777FB43A8A00DC56B0D4A3314B6D1099947CC54633DF14018779E1831825738 + EA31E94014E5F0ECCBB93E50D81D4D0016FA38886F953E41FC5EA6801DB57004 + 5181DF81400E3911C6CFC919031D6802FE8DA7CBA8BBAC480EDFBE01C6450069 + DA784AE6486555F2E39D4FC9B89A00EBADADAE2E74BFB33469B9472075E9CE28 + 0394BCB08ADAF24DF11575231C60F4A00ACEEC9B987C8806300F5FC28023D26D + 1B53D42DA18C900B8DD9EC33401EC9656D169F6C9101B17BB20E3A7F3A0091A3 + 6DF8898AA1048F5A00AB73234373103BC67D39E3D6802608A47981D4B673F2F5 + FA1A008DA4586024C40E4F5EF4019D9F3E70B17CAE09C6462801E417DA1D70F8 + C7DDE9F4A004773146FE61C91CE4AFCDD68033C4A8E643BCEF393B876A0060CB + 4214B0E8319EB400D638010847EEA0F4A00E575ED6A3826311521B6E0E2803CF + 2F9F7BB119EBDE80228D02C45987DEE9400420F9AA547422803D1BC25E08D5BC + 456BF6B8DE3B6B63D6591C81C7A50056F106943C2F72A6C7514B993EEB803A1F + EB401C99533BB3BA9DC5B39E9400914D7168DF2B385F4CE28035347F12CF633E + 3739046324D00773E1DF16C26E91A49B686C64127F1A00F55B7922741222FEED + 8F0718E680167B041324AA8BB4F534015AE6CD22666081549C1C0A004B5B3753 + F21403AE339FCA803621857608C2E09EE7A5003E58D6200E4E33D4722802F452 + C622405BF8450057D7A371A84AEA79C8C0238E94014658C9542071DD40C01C50 + 067DDC602E000015CE40E94019CF13B24AE0156271C8C9FAD0058D1048903960 + 63527392393EC280259EFADED6DE6725634C7CC49C64FBD0073970D7B7B2CC61 + 8DACED981C4B221DDF51D3140182DA759BB1167A84DF6D5604DC2397603B8C0A + 00EC7C3F7D6C2C5EC6F75CF3EE5F944B91E590074033D6802AEBFA535A9071BC + 152011C628038ED46CCB064E4E7D075C50077FF0AF578AEF4E8B47BBCA5CDA16 + 31B3B7322939FD33401D45F41F649C82711BF427A0A007C32174DA40203633F8 + 5005B4844B67E4CAA361520806803C47C75A0DC68DA93BA46C622E761DB80467 + D68033AD2F05EC72073FBC4C05F463ED40142EAC4B174F2D40C9C65B04FE1400 + CD3D7EC0C1E301DD7AE5B0280257D44226F503CD7725B6BE49068036FED70C71 + FD941C1C6FCE39A00E63C4CC6EA58EDE30E49E7A1E07AD006747652C76B2CB2C + 2C4A00373714015665782385F0C51FEE83C66803553C4B218D6375249006E51C + 8A0075E5F4970EBE5472B000E0A83F35005692D752D41466168A31C2AB291CFA + 5004234A9ED879AD3A818E571D28036BC35E1B92FA36B9946D466E148FBD401D + 0685A4C5A56AD2E587CCBB403C0ED40126A174CB3300DC6705874C0A00A6BAFC + 707EE955B9CF7EFF004A00A1A8DF8920322CA8C5C6197BD0073D1EF924D8B1B1 + 25B098A00F51F02F87E3B2B3F324F9667C6323A63B5007592489145CA80FD80A + 00A3757405A796176153F26C39C9FA50067949CDDAB4F3019071818C500342BC + 3106F31B0BD14F5A008E3B952E401876C75A005864C49265A3DF923271CD004D + 3DC2B9570155B041ED9F4A00A135F28DA015057820BF14019130FB5DD9092670 + 7EF2D006858BB441D0B805540E4E334014F51B80DF34AAA985C649E38A00F30F + 135F9BCD4A59176855C28C1F418A00C33F31EF4012E776D8C0C1E9F5A00F4BD0 + 3C00A7C3536B37172227B6CCA903AE0CBB402075E8791401635BF8913DF6926C + 1AD56DB0A0796A781401C6473A5E2BBCEFB76FDDE68021768D2D91011BC12410 + 6802D5BDFDB269B2ACE819F77CA0363F1A00C8B89AD9E42426DFC73400DB1559 + 6ED63F336AEEE0FA5007BD783F56736090CAA1D323F78A7A74A00ED209E39AD7 + 682A5568015504D118DD947718A007468589465CE0F04F19A00BA8A123F2CA8C + 76C5002B2168F231FEEE7A7BD005A8C1D8BF21E9E9400DD7187DB1C1E4023B74 + E050066DEC889B7030ADD8F140199E6331CA052A01037500417788D4B90A0003 + A5005A8B6FD9C3CECAA5C723A628039E8ED9B57BD7926564B385F36E41E26E71 + B8FB7031400EF1339DC61F3196109BA575EAA3D07B9C500605AC33C276585BC7 + 040872AD29E4FB9C7E3401B3A6E8AFAA4D2C3AC456CF6FB731C90BFCC0E7F4A0 + 0E96F3CA96D64823C48150824302578A00E1755B4962222750AA33C75A00C8F3 + AE74FBE82EED86C7B770EA73D71D8D007B2E89AAD8F89B47B798BAF9A571220E + A8F8E4734013490CB6AB871FBB5E840A009A190EF1C8C63AE280327C63A5C7AA + E9E21285A5270BB4F23AD00786EB1A2EA1A26A260943AAEE217073401058EA88 + EAA25FBD9C348C7AFD2801D7B73190E100099C819F6A00CE13B42CACB1210070 + B8A00B36DAAB4F3E5C06E30095C75EB401575AD661889580A17000CED39A00A3 + 69AC35CC7F6794E11CFCD8A00DD9A1D3A7484A051E4F0BD7041E99A009741D0A + 16D364971BA6121C679C018A00D4D1EC5AE668ED9A351B4B0C8001E991FAD004 + 775E7DBCA2268CFC8FE9DE8036EE7C19F6C0244976C5E9D850067CB31D202DAC + 67714EA4FB500531AC23CC4B39019C741D2802A5EEA3CB08A4201E836F5A00C6 + 47531C8E1B9EB9C77F4A00818BE0BB6378E83183CD00761E05F0D493CC2EEF22 + DB1EC0501600738E6803D17FD5C0A11547CA491C64500549E769F1B570A40C96 + 3D0D00322290866393BBB9E714015A43233E40C94E793DA80229AE639A6519C7 + 38CF38A008E664CA82171D0301D2802935E013B09718E99C50053BAD5D23425C + 8520F18C9A00C99F5752A42329CB6EE54E45005FB278A31F6819466520F3D38A + 004975316ACF2A05C3E194939C8FA50071FE22F10AC913C50B6E2C0862474CD0 + 072D1C324FB9FA2F72680192048F85EBEB400B63FF001F4AC464039A00EDEE75 + CBF062B19CF97BD5630A4E3E5CF0680317C5F0C163A8AC104EB33222972BD324 + 67140190A66753B57033CD004AB05C04073D7F1A00058DC392831C72680251A6 + 613FBCD401147632F9A362906803D3FC05AACF636C52EE10C81B7065E78C77FC + A803BFB2D52D678F74322C64F2528035ADDDA499098C118E083401A85181567C + 823A6318A007C7E6E0070171F9E3B500489B903023E622802DC4E7CB5F9BB0A0 + 087C44EB1CD2F383C1F5F6A00CA5883B02E410A32327B5005179424DB028DB92 + 3228018D0798C0726363939E94015F50C5E5E269EA708987971C657FBB9F7EBF + 85005CD40AD9C0046AAB1C49C8030001401CAEA17E058F9D244A269252B0A1EF + C0C67E849CD00642437778819C89493F3B484AC63E8075FC6802A4891582CAE9 + 71A848E492D25AA8D83E833401D87C39B48EDED2E8BC3B37BAB79A4B032019EA + 0F43F4A00D1F1259C4E4CB198C2ED01BFCFE5401C3DFC243B154439233401956 + 7AA6A3A5DF492C32B0895F2D1818CFA5007BCE91A8C5ADE8B1DD4072B2277F5A + 00CD12ECB978E41C0E983CE68027B6925CB3498638C0ED40187E30D062D6A144 + 946C931F230F5F4E2803C43C49A1DC68F7AF6B2A046E30474C648A00CCFB5BC3 + 84621C0EBC500219B852DF748F940A00943ADBC05D50157521467B50060DE46E + 4B1E39EF400DB212432EEC00718071401B2D7CDE5ED604900638C500769F0F25 + 692D26591891E6ED19EDC0CD0074F6AD05ADD6F05548CEE22801D3259CEBE73A + 93BDBE619EFDA8024B8D64C312DBC448C71EBC500709E27BF67D4C6C8C7CCBBB + 6B7AF7FE54018915CA9986576A03D0763400C7BA2D2C83683B4704B7BD005079 + 06E2A13AAF18A00EBFC1BE176BE68AF2E4623CF0AE4E48C5007A54691DB44B1C + 119185C2A81BBA5000B0B6E2CCEDF2024281D00EB40115DB2B1DF113820718A0 + 085A558DCA3101B18E477A00CEB9F30CE06F081B3934015667102001CED1DBFC + 2802BC973BE41F7B69190430E828030752BC266926126E4C90032FEB40193A8D + FC9DC8DADD303914014D2FFC990BB800F4DBDCD002DC6B6658886E496C803A74 + A00C7BCD4A6DE424CCBC9E33DBD28032DA4662724D004ED70CD188A304281D31 + 4010AC523B74C7D680264B591790D8FA5005E9526B99374D3B4920C0049E9400 + 25AE65C632FDB39CD005D82DCC67000DD8C9C8A009FEC9B406078EFEF4017F4E + B5F399625648F7F1BB19C9C5005EB8D04C107992140C4E19493CFD28014E9108 + 645C618AE7703D2803A6F0F69C2DA00471920B46475FC6803A04B58CDE092281 + 80C8C01FAD0074F6ACAD6FBC021D7AE4D00699F2CC4B8249C6464F4A009A2712 + FDD1F30C66801D34AE8307B7B5005842A514EDEDED40116B787BE9415190700E + 3DA80336E30624DAD8208C8EFD280218A36447565E083C91CD0032671696B238 + 048032140E49EC3F3A008B4AB06B62D3B9DD249CBFD739FF00EB50058D463867 + D8C5982E7240F5A00E76EF4E87ED5F6F9A41FE8F100A80FCA0FDE27DFA81F850 + 0636AD7265669A28DA49B70C5B0E8BEEDE9C500569A5BBBA919E7B94B6403EE2 + AE31FF00023FE1400DB0821BCBC8CB5848D1A103CCBA91B1F80A00E9346D2A2B + 3BD6B786CEDCDACDFEB674988D846481B4F5E7DFBD001E24D218227D9A366527 + 3B957A9A00E4AE2C98F9C5C7319C2823BFAFBD003742F10DCF87F52592D19BEC + 8650F2C43A30EE47E02803B8B6F12DB6B9A901A70DED2BF0A0FCC38E7228037D + E2BAB555122FCB8EB9E280268CDBB5BFEF19594F27DA8028EADA3DBEB364F6D3 + 639520385E6803C73C5DE03BFD2257B8895E6873D447FCE8038E92D9D1E4F948 + C70D9E314010BAB2C99DA401C8E78A006BFEF00129079E00A00472163550CCA0 + 75E280220E5942127AE0E3BD006F7842E4C723C20673F30E7041F5A00EABEDE5 + AE192621B8E1F771EB400E8AE5279FCA6709BC82181ED4019F7D7B0A4E1C5C02 + A8C71F37D28039CD6EF7ED13811B6E6518DCA38A00A058B360291F5A009B4F82 + 4B89591226620F619EB401DE685E0E3194BEBA701C1E56803ADFB3CB6D06E491 + 30BF746318A0078944B0A2B298D0F2594F3C7B5003A793C958E45657C9E554F6 + A00A73C83F84E086196F6A00CFBCB844B962ADBB1C0C9C668033751BC52A14AE + D6519393D680326E6F90C3B55B2C13AEE00FFF00AE8033A4D4810C03053F7719 + E828031EEAE932403804E7DA80334DCE090318A008FCC96625634773DB68A007 + 2585CCCAA59762FA9A00747A52313BA43DB18140165B4D8D369541C81EE47D68 + 0116D0A10AC182E7B8C0A0095ACF0768EA390C78045003DAC8B44B85381D1BD6 + 802C585AC4CA596421F38DA466802FAD8A18DD0300739C74FC6802F9D3CDC58C + 6F1C7B1D3BE3AE050058B18A0B9B731A8F2E450032839CD00450AFD9A529B776 + 5B7007F84D006C2DC433C4B9541B065896E01A00A2928339886300900838CE68 + 0376D65613C4EC31B0F23D450074D644B496C543057C93C74E6803A0581AD65D + E06E47E840E8680250CDBC05C75C1E6802CC2AE8C546EC3739E940006C005B18 + 07A93D6802C2942A0AE318E28025D44B8D5260CA36123934019A2D91E5936AB6 + E66DD91400DB7F98FCA0EE1C1CD0047710F9934206301B2FCF4C0C8FD7140164 + C01F0B2160A0F201E0D0050D4D3CD26DE3608AA099594F2076FCE80303C4B04B + 75A9C769680948C2B49CE36FB9F5381C0A008EDB4710C843968D704962792680 + 33EE61DAE6775DEAC3E5CF3DFAD00667DB8CCC7EC97291DAA82AD3BAE79C76FD + 79A006D85B4779134D6F249345925AE6EA66500E3B018FCE803A6D36FADA0D2E + 1B48AF2E6EEE18F21559C0CF60D8E9F8D0047A86853EEC8071F789F4F6A00E56 + EEC76C8D1AE327E52B8C6280285ABDD683ACC77F63FBB9A2CE01E54F07208A00 + F4AF0FFC4BD2B55B74B5D64ADA5CB2F5DA7631F6EB8FC68035EE0CB0796622AF + 6F212C926410476A009E3D401E415E30385EF401232C535BEDB80ADBC743401C + 3F8A3E1EDA5E8965B4256724B6D0700FF9CD0079D6AFE09D574E45F3A0768CE4 + 82181E28039BB9B4F264015181EC49E94015A62C17693F203DA8010A6DDCC320 + 76A007D8DC3DADC33C78FBBDFBD006836AD74D291B977F03007E14010CF3DCE7 + F7927DDE142B0A00710C43478C16C6DCD003EDF4EBC95FC8489B793C500745A5 + 7816EEE89F3C3C785C8C11CD00773A0786AC74BB663E5FEF001F3373F5A00D36 + 6DF6EBB954AE4B7D3FCE2802A4B32166540C1B8C7A1A00AE2525D820E8724377 + 3DE80295EDD85660B82FDC038A00CF92F8FCEDBB0FD40CF268031AF752CC6417 + 2645EABE9DE803227D4417CAB9DE06413E940199797AF92E0AB1DDC9E9CFD280 + 33A7B8CFCDBF049E71D68019B26B803621C2F3B8D005C8F4858F0D296638CF07 + 81F5A00B91AEC8CEC8D6361F7587A1A0092DEDDA5458D8127A900F4F7A00BBFD + 92EC9FEA9C360600C60D0048B60532D21D87767A8C1A00A9711426E3C869097C + F008C014012C891C96FB48F9837AE33401169D710F9F25BDD93B070A47418A00 + 8A3BCFB1DF3C6A89E5C9D4E3907DA802E4F7FF006778D400CC87ABFD28026B7D + 60B4EC8C06DDBB828CE33DE80221A935B6A5132676F42318C500685DCAD21276 + AE5B079FF3F4A0075807C489F29CFA76A00548192690A065E3E5C73401D3E916 + EAEE5B7960C83191FAD00761A55A491C302A648C73D875A00DD62DE5AC6E002A + 3A75CE38A00842A96C92300E78A00BA15BCB0C090BDB9A0089DA35E59BE61D54 + 5004812D4807CC233EF4017B546FF8993A8E391F9D0057DB90DC15627AFB5003 + 96358C1190718E9401032012E76E54F3DA801B772AC10967C81FCA80332F248A + CACA49661992E3A003A9EC280191DB471A3B46198CA3CC2CC724B11FCA8020B9 + 858C4449280F20F9BE828039EF11453C16C1606DAB23040570703AFF0021401C + B6A6F07DA0DA2122DA127CC0BD0F030B4016A04B8D4C2EF81E1B3E02C4C70A4F + BF7FC3A5006823DD5BC4106A36F670C441408BB987B0E3926803674DBFBA8F74 + 9343ACDF215E018A25539EE0641A009058DBEA1A74D7905B4D04818826E46D60 + 7E9CF1401CDCBA7B795841F39272F8CE68039DBFD30B005146465B918C73401A + 767E30D6347B45B12239ED36858D251CA8F63401BBA0F8AE0D4B68CB45312010 + F8191ED401D4DB6A22495803B93B71D2802C25FA3A852E141EFB7A7B5004978F + 0C81060156C0C1A00C2D4BC25A2DF9264B5018F42188FEB401CAEA9F0DAD1E46 + FB2BF97C64024E280306EFE1DEA28E1125864DDD073FE1401047F0EB55598063 + 1063D7E63FE14012AFC3ED4D6532168554F182C73FCA802EDB7C39B8DF99A48C + 02A3017D7F2A00DDD3BC0D689991D43163D589E07B5006FDB687696F031100F3 + 0630D401763DAA3380BB07CC2802A4D2A18CA64B024E07BD0050B9BF48D993EE + 26D2A50738F5A00AD717696FD1B2B8FBB4019925F18DCCC08C31E54F5C50061E + ABAAC524C3076EDEA41A00C7B8D5132D2A48C4F4E304E3FC68032A7D4836F3B4 + 86206707AF6E680334DC3CEE005676ED8A00B306937322AE4796B8C9A00D3834 + 6B448D1D55A461F7C9ED4012416AD249E5A153B4FB500324568E239DACA4919F + FF0055005DD32C61B88DA469572ADF753F8462802F7D9D238E4728708B91EA68 + 01BA76BD64CC629FCC0CBF777003140195AC5DC825692DE42623D5186481F5A0 + 049E686F6DA3931B08180C0F7A00CE7BA757525CB11C371D4500453B0FDE3267 + 0C72BEC2802213316562CDE6645005BB995DFF007CFF003607F4A002D55A4983 + 120719EB8E28034AEC3CAD0911A2E1B924D005F9402D18F988C1038E3F3A0020 + 90C60B80430E8077A00B5A7C8DBE56CBE700E319033401E83E1C48DB72888165 + F979F4A00EB6CF6496988C100139C8A0098A1EB20E38230680228DFCC2412090 + 71822802F1466840270723A50054B943CEC2BD79E680151902018EDDA8035F52 + 466BD65E3E63F950052933C22E01EE680114E63231C9F4A007AA00A170370E3A + 50055BF844FE5464ED5DF9618EB81D3F9500569A0F327C4A8AC8ABFBBC9E87D6 + 8028692CE74F80B9DCEA307F0E2801D7A1599893B5477EDD280398D66E374851 + 18FC8994523EF313814018905BC29782DA284298DB3293C9918F424FB7F5F6A0 + 0B0CD34526CD8460E037FF005A8028FDA56DEECDDDC39728C161876E79F5C7AF + 5A00D58355D5AE9F789D6D4119D87E7241FC80FA5004BA26A3777F2CCCFAD5CF + D9ED9B12068D40938EC7AE2802D4DAF6956E9259C40DD5D6372C30AEE627FA50 + 0437DA1CAF6905E22189A4883B42EB9299ED401CD5CE9C0B9926183D0A75FF00 + F5500661D1E419732B2103E50A3183DBA500745E17F135EF86E529709F6E8DC6 + DC48D8DB8F7E6803A1BBF1368D71125CC445ACCED8781B1C71DA8034ECD2EAEA + D85DC6A64847DD20E71400925F6C7DACEC71D71C11400BFDA30BC849E57A5005 + 8F3136ABA64ED0085F5A008A0B94DF83F3127827A8A00B0E536BCA8A36838C63 + 9A00AFE7A9DDB4F38E3B60D0030485626C360918EBFA50040F7A1360624A9E48 + ED4010DEDCAC4BE607215BA80719A00C8BED4592CCBAC984CF6ED4018D757A40 + DC461BBFCDC0A00C7D4F5BF2F728DC40E8C1B14018B75AC99595A36D9C7396EB + 40191F68967385466C1E40340172DF42BBB997E66110CF46E4FE54017D7C350C + 4B234B379AD8E41E31F850059B0B786362228E20368EA071400B78D2B4C638D3 + 6A8C74A008ADA177958E1D8765E99FAD0068DAD9240C19D3E77E0AE718CF3401 + 5EDBEC3756F75040184F064147182C79E7F4A00CDB454FDEED4B8B4BEFE1F2E4 + C06F7A00B565AA5E424DBCF6E2E957932E3E73FE34019F7924333ABE14AAE49F + 97914010AC9BA36857927952DD48F4CD005433CA09400888B602FA1A00125285 + 4940C48FA668026BB8445E5B0525651B957D050054FBCF8E7776A00BF6A3CC7D + ACC7E5E08EC78A009E1800CB855C87C6E0280352384EDDA13CC24E70C28025B7 + 6322491A92AE4E32380B4011B472C3726266078C641EBEF401BFA0DAAB195231 + 82CA371C673401E81E1BD3FCB9DDBCD0C0704500749027916C500C9F61D28019 + 23993E55CE4739F51400B1009C614639E9401315647033B94FBD0043711ABA02 + A4A96E060F4A009234DB1A824120004D006B6A21FF00B44E07CBD8FBD0057954 + 2A9001DC0F7EF40101554DC464B631F5A00545CE1B6E0FA50023C7F38C15EB9C + 7AD0041306F9957A8F5EF4019A229ACEDE458D55DF7975C8381F5A00A1A759B5 + C5A8BDB877F3D8B1C670A8327A0ED401892CAA9ACCC50A4B3A0089193D58E71F + D68024BAD22DECE2586D5D89C16DCCD92CD4018F777332BC7682205CFCE4E0E4 + 0FF228028D9C70DA196E1C03233603B756340101BBB8BB9DED6378E15DA7CD27 + AAFA7D09E7F2A0048ED24BA592337370968BF2EDFBBBC77C71D3B5004FA7369D + A35B4A965A8EAC254C9F2ED8AB01DCF6FE7401BD63ACA2684B7F7FAB9960971E + 5F9A00914FA71C31FA0A00BBA742BE2286E6E24B49ADA356055E61B7CC5FEF60 + 8E94015352D023B240172F16DCE7B034018F2E9DF6BE4424E3B60E31401567D1 + 838015580E9CE2800B0BAD4346924367712C783B820FBA7D88A009EE756D56E1 + DE568A005941236919FD680228351BC1B83C21891CAAFE7400ABAE4BE66C68F6 + F9631964340162D35A0E645C10EABD3A66802783C467C8F28B846CF1C75A0082 + E3C461804DCA01F4EA7EB4019527891B0BB51986D20E33C1A004935C90155586 + 4C63960A7AF5A00AF7FACEA334609B598BB1CE361E4500674E9AB489B23B7754 + 71D5F838A0065AE877B3C6CD348B082BCFBD00581E1281E4FDE4F2B76C2E01E9 + 40164689A742B188E062C9C36F39CD004C2DFCB3B12128011D0738A008668E45 + 99E684123770483906802158E4F39A59A3280F00BF00D004F6F62D23892504F7 + 1B4647D6803796DE15B4DCFB4B7AA91C50066DA5C436FAAAB8911633C06F4340 + 197AA6AF226A5224B0988231F2E423893F1F7A00C8BF925BAF2A771024C8C48D + 8F9C1F7FCA802A096568A6338DA5BA91F5ED401109DE340CAC4A8E0B5005C4F2 + B5242B23A5BCC806C278120F43EFEF4019936F85F0320A9E770C10476A00B25B + EDB6F26E18B80015C7F1E3FAE2802BDBB3872E14AE410C31DA80268E45961680 + 8276B6E4603F3A005B3B5627CD7C0191C7AD0069C5BCB3043827D4D005C83CC8 + DBFD4B6463E7C706801F220796172C01CFCCE3A0E6801C63F3AE1554A858DB91 + EB40131016F048AD9E9F26381401DAF8434C7BABE925914A9DA08006050076DA + 4C5F67BA655E0004FDD38A00D29E4755CA8DDD3A74A00AF30D83A0C11DB8C500 + 247B1416C107B7BD005B770622703207007734015180C0C292DDCFA5004D1897 + CB5C7A0EF401B57EB9BE20F4A00AF73F291D7EF600A0089F92008FE61DBD2801 + ABD58B8C35001C972430391D8500224591B89C9F4F4A006DC21DB90A01C73401 + 8F6D1CD1C46231FCC09E09EB9268039D86CE25F124F210D92848E3BEEE4FE1D2 + 8024D5BCB36CAEAA0C9BB6A8CFF11E9401423B782CADE5F3017232CD9EACE47A + D0064CD6B0C764DA8CEEAB34793E59CED8D7D07A9A00CDD3F4C4104973236D69 + 7F7B283D589E83F9D0031EF1AF1DEDD2455854FEFA419E78FBA3F0EF40150C91 + C45A2385D3A33808BD6463EFD7AD006F5A244D69119F32B22FC88CBC443D00E9 + C7AD004B2EB0D35BCE9712BA69B0A159769C79D8E31C7200C7E39A00B1A55D5D + 5C69F6F6B6D1868D8F9934F392A07A851D781F85006B4175A5DBDBCC3CC8D9ED + 07EFCE09033EF8E7A8A0090E9C2E956481C18E450CA0F6079FE5401866C13ED7 + 1AC1B1D5D80460739A00B73E8D3C736521257186CB500635D58F93301146DE68 + 6C3007D45004120B82AC860DC48C1381914002072E4CB160E38C633FA5004EBC + C1BDD576F4527B5002B2C12282AA871DF0062802111A18861100FF0039A00962 + 863111DC518E72AA077A00A93DD08420CF1BB18EE05004A93BC90094856443F2 + 950781DB39A0074B1BCE238E2DCBBDB6ECC0E9401661D1AECCBBA280AAC5C13B + B934015A5B1DB7262C18DCF1C739F5A0049228E1322339765E768E08A00A9613 + C06E59338639C03CF4140105DC96D796AE3CFD815B6E190820F3C6280326D35A + B9B485EDEF06792217181B87A7B500535F116A3344E90CEAAA3831BA7CC0FD68 + 032D6E6E7ED25DA4542C72467E5CD0069DF9B9934E13DDC21E2242ABA9E09EDD + 28032619F2D8918601E9D32280125B921BCDC663538653DC668037F4AB5B4D4E + 7516CB812A1125BE7A74C302680322F6D25B5BB92DA440191CAF5E460F7A00B5 + 7510D562F3E3DA2EA35FDEAE31BC0EFF005A00A65044BBC3159470BB68026B98 + D27B449A26C4A5B120F5EB40114103A4800077A9E108FF000A00BC9641886DFB + 429E99EB401A3656ADE780539C671EB401A5748C620818E71C0E9DA80290C203 + 17DE04004E7A50047179D1E015F9C12323BD006C585B99350B7050852C01E9CD + 007A7F862D025CDC055C05E07B5006E46AEAE4AF087F9D0032491B6942303D8D + 0000B98C0FE10703BD004B6EA23FF5B181EF9A007CCD1C20800B0F6ED4015022 + E1492554F4FAD005F4DA1142B1C01C71401A5A901F6A2491F4FC2802BBEDD800 + 39E79A0062E40CF51EB4010961B81E304D00488A0370A3A7E540049100A581C1 + 3400CF2DA443824023A7AD0067DD46D6E1A7C6E2BD0773DA80214B78B72CA230 + 5D50A938C139C13CFD680312EEDA2BABC768B88E018C762C7AFE54019372A676 + 9267511C6176AE4F0C73F7BFA500636A2BE7CB1405C08D0F9926DFE203B11401 + 53C47225ADADB88C9691941F4CB36300FD28020B3D3920B1912262402412CBD4 + 9EF40140C065BA16EA0AC56DC94032198F3FD734013DE5CDDBC221B68D8349F2 + 9C03903B9A00866B61F66585DD9FE7440A0F000EBF5FA9A00DBB99EE6E4FD922 + 9CA2000C9203D47F747BFBD0041A86A51E9BA6C1A6436C1D15FCC7503EF8CF19 + FA9C5001717D776F09861BA916F3516C16DE710A75217D874ED40165EFDEC51A + C74DB750C133B837FAA5EE47B9E7F2A00EB60BF8750D3ED960BCFDE5C2650670 + CC00E6802358A2B261E7C885CE40690F24E33FCA8032351BAB6566964BA8EDE1 + 5F98B85EA3B6077A00B2CB63A7DA40F31C9BB758E3047249EF8ED4019F7D269B + 693792EACD23F2631C118A007DA59C378C6404431803E407271401A56B69A75C + 5BC6F0B86DDF30C761F4A00E7AFEF162B862F69325BAB155B80C0A1FAFA7A500 + 496315B5D5F9836827CADF818E071CFEB401B1763ECBA746FA72C3320EB03F1E + 60F63D8D0073579E27B49352B43046CBB9BE64E854E68026D5BC52F0EA69F63B + 865904619EDDF943F88E8680282F8985EDD8C2149065E5427EEE3F847E740106 + B9A8DB6A518D46CCF912C6A4B6CE3781CED61401CCDADE5CDCDDFDB2390A0030 + A80F0B4005EDE99E432CB9F3384902375F47FAF6A00ACB3CA01B7BA7322F5463 + F7BF3A00872B1A146CF9A39F3738247F5A00496229147295F91F3838E33400FB + 6BF961C43F3984FF0001E548FA5005DBCB0B56823BDB42C6307E7461CA9F4CFB + FF004A00A20466293F77F21E727B5003ECA46B69B6A16561CA956C119A00E9B5 + AB64BD86CEE228C25C4B086739FF005A4704E7D6803054B4372B20663267EE8E + E2801B750F9B72EB042E1CF2A4718E39A00B1A75A7953FCF8248E4119C5005EB + 5B5559DF8C8ECD4017AD6C905C246482BBC66802DCD19B7BB7588AB11C6EE940 + 156F662C24F9B1B4673EF401140AE8C0919121C03ED40170C4519155B7E71CE3 + A500751E1FB2F31E19CC63A8CFCBC1E6803D134C81209A55438DDC918A00BAFC + 1C020A81401466E392339F7A002DB78623B13C7B500581C60963B7DE8009CB94 + 618DB8E3DCD00567272142FA0F5A00BF1C788D46E6E00ED401AD7CB9B93CFEB4 + 0159F03EF80141EB40116CF9B009DA473C5000CC117818CD0046AC7F8B3827B5 + 003965E1815385E99A004F336C879033C106801AE5523247CEC0F45A00AEC212 + 8338040CFE3401CECB6B24508B609BD586D663DB3DE8023B8B2610340B136CDB + C328E98A00C2834B56D4AE015397655193D46050050D6ACD67D723316764193C + 74CF41FC8D004B736FE5E988C4963239DBC76E280312C55A54DE1599E591B684 + 1D7071FD28025B86862BD7B681C90918F318FF007FD3340104CBE65ED92A2EF6 + 2CDC7E1D7DA8034DADE22A3CACAA8FBB9E3F1A00CDB7B47935D924911FCA8541 + 0E0F04E28024BC658EF25BA9320F95B2300F7273FD28016CA4162AE4B1769399 + 1C8C73E940153C37A8416175797792AF93E5237F70FA63D4E6801965A8DD5E6B + D7979758D9E5EC0AD9F9738E07E1D6803167BC9A291895490AB6CB4C8E02E48E + 3F4FD280371EEF6CC034BBDA28447097392ACDD48F7C500361BC0FAC5DDD4ED9 + 68E250093D401EB4014F449EE18DDBC0E10DC1324B31E768ECA3DE8034E1BEFE + CAB2B3B9D3F62B6E569F032581F5A0093ED714375711E552DEEDBCED857A9C60 + E3F214019563E458F8995A162892C64A2138C1C8E31400FD56E3CB9A58CA3086 + E5C9241C08DFD47A6680312677120BD9252B3A9DBB40C79883B8F7A00AF295BC + FB4CA198B654A39EA30050058B9BE290C5751468B280158F76079FE940152E24 + 3B7CE858665FF59F4F5340106F6FB664B001872C0600A001A1F3136A0666CF24 + 0EB4015909F28A3272A707D78A009EEACCAC6B2AA931EDDDB87407B8A00B9A2B + 477120B7B89498A5E382383D8FE74011EA56CB6D19390AF1BE0AF7183401774A + 00F9892361251B6403D0D0041169DF64BF6B79A46C0CB2678054F7A0095ECD96 + 68DD4B1182B95FCE8027BF6916CAD5403BA095D41C76207F8500579C09DD6520 + 866209C0E3EB400E8E099E40F85C1E38140176D6D9DE327CBDAC7A641ED4016A + DDE55F91FE7206142FF5A009EDA6459F1B18E0E4903A50031A58A374900724B1 + 39ED9A002EDE1746CB28079C13D7E940096D1BB245871B58F2076A00E92D74E8 + 9E5888DEA40CF26803B8D1ED1574BB7650DB95B033D7A9A00DB88499202E0E72 + 49A0059A57046573C60114010BA3338F9700FA0A00B291E36EE3F507A0A007AE + EDC48E171D31D680126C143B863EB401472D93E58047F0D0069C52FEED781D07 + 7A00D6BD51E7B12280284CC8CBB00C608041A008EE2524A841B73D680214791D + FE665000E05004B2F4E0E306801C4EE41C8ED9A00698832B648CD00566DD1B16 + FE1F6ED400C42B2485338F973CD005399594866CF1FA50019DB1B393DBAD0050 + 4B72B1891866503208E31401CA453EDBFBF693921957040EC0F1FAD005FD4A45 + FB3DBC522602C3BB00F4639E68032EDE08ACB458D638FF00D2864A924E515893 + F9907F5A00C711917B74582946453D7BD003DA58AC9A0CE14CE481D0E140FEBF + D2802692E254B769B6E1114B7CA3760500374CBAB84B6469B8F3324E579E4D00 + 413D94B2DC6E915B6239751BBA8E82802A6A56D21884319FF5C76E4F5F7FD280 + 2A2A98F50428A76C51ED627A123B50028944D0DC84500CB2107E5C1EC28033EF + 208679ADEDD1B2B0827A91823005002D8CD235E97B95113ED2C1410413802801 + BAB3B48EA91B8124E36B63D3340176D64FB3409042EA8A9F7A8033D2F49D1DD1 + C8DE232AB8E3A50069692639E5B5494EE7E8B93EA280337C4019753DC8ACB244 + 09273D0645003E59A2BEB611C4EC652C01CF734011CE21BEB498DBFCCD0B021B + A7CBDE8033627304833C47BBEB8A00B1A721BF8AED638B7BC7F3673B41F9BAFE + B401368F6CDE5DFDBB85C2C191903201EB4019967B2394A48F8553C0C6723D68 + 02CAB4D6B78307685208E9C50032F6D4C7AA48AAA19251BC007B75FC280352CE + 18EE746B88501495033A0C7078E47E228030ED4F964C41F632B7E5401AF731AD + E69DF6B013705F2E5C9C76E0FE38A00A96732F3215283031F51401A57D20D420 + B69F701345FBA200EAA791FD68021865CBED57F2CA0CE49EB400AD3FEEA48B39 + 3210467F8719E7F5A00BDA5D9C5205128C9073F4A00592D44770C54E141038A0 + 0B822F2E3E5B69C13CF6A00CDB5BA68AE8A860C0925B8A00A93DF2C575188D9B + 0C0161EBCD005D598CD2A1CFC9D429E05004E6C918169570FD8668034B44B269 + 142A8F994E466803D06C749740B2B8E767041E0D00745670ECB28972319A00B0 + CC23E7381DCD0040CFB94374C720500491CAA79230DF4E280258D1590A818279 + 34016181442A1B9C771401524705CAB1E31D7DE802345F946E6E3B605005F8D2 + 2F2D7287381DE8034AFB6FDA083D7B50052902AFCC141E324E3934011632142D + 00123287E1400A324D004419998B0C608E8680258C129BB38268018DF3A02ADB + 78E71400C3228421BA0F5A00A922990129F2FD3BD00549D9954FCC0923824500 + 084A00B2608FAD00367F2D548E4F6E2803065B08D4CAE5198194962383DA802B + 6AE526B941BD8C6AA0B2638603B50067D903258279926E6248603A1E4E28018F + A61BBD461862645DF111212BD1460E680337C416A7ED503C20794B2945C2F45E + 805003AF5D2DD63B64C832C8AB8E8307A83F85005B97CB448D48CA630429A009 + 6E0412471342851994E38F7EF4018BAAB1DD94501943741919A00AF6B6EC1006 + 00ED058919C834015EC6DB378C8F2312D2773401492356BE963257F7400C0E32 + 727FC2801789249E068904F028915B0318EF40142D1526D4ADDD9F689D99463B + 00A47F31401744690CCE85941276907B114019303AC4F790B2EEDFF771FC39A0 + 0BF69235A5C2BE72D1B838268024F16B2BEBB2CCA7092C01D57D3207F5A004D0 + 6D56DEEDE79595D638B7ED18F97EB401434476F36EA05C013075193C0C8A002C + 62F3E26524025C8009EE39A009BC3E989F530036E1193B73D791401269B23C37 + 377E60197B47CEEE9C0CD00625D491B4D1B06D83186205006A6A8EACF09420AC + 9121E4F1F771FD2801DAD3341FD9932C454B43B1F8E588E2802A4778CB7F14A5 + 1D76382C07A77A0066A7A718B5393CA60016C8E71C1191FCE802F69F6F23892D + 1DE30264C0273D7B50066FD9A72414910A8FBABBBA5002EEB88D88627B6406E0 + E28025B012DD3F5F917AE7BD006C5958B4E7CCC2E09DA01EA280366D847E5186 + 318907078C73EB4011DEE21545561E629E48A004D5A4DD144CDC653E6DBDE803 + 9E7BA48DB62464E49C9A00AF33AF9E2408A5B1800751401BD02ED309D809718C + 1A00D886D7CD0A1E33D7230381401D5E8BA70478762AF382C48E0D0076FE4ABA + 04078DBD00C5003B722E23E981DA801A7702016F94D0023851818DDCD0059488 + A6D76C63D0D004880ECF30851CE28015C0F5C0E8734015DD76B8C302076EF400 + 6D6390077E0E31401A9126224F947414016AFF000B293401518800860338A00A + 2EE236C63AF34010162A76E704F420F6A0090E48209C71CB5003E0CECDA180ED + C9A004955410703F3EF400D77620280147E74011CC4F0A0EE38E40A00AE205EB + BBE9ED400C7B249415071CE777A50051BCB59A2FBABB80E3701C500545B868B7 + 8680C83A9E30050066DFA44651E49DECFD4752B401976B6D26640ACCAA8C4AF6 + CF3E940124F95B437105C7953484292013C7539FC8500656A705DDD262125DB7 + 654AFA839A008EF21BA1728F2C6502FE18F7A007DF33C708656C128429C5004B + 6B37D9B4943E6AB306C11D0F4EB40195A834F3DF420C6420F989C71F4A008249 + D919C6C2ABB4F25B8CD00675BBBFDA9807518753BFA7A5005B9EC2EE7D62EA58 + 53786505587A64F34010DB58CE75531DCC823565553918C82718A00D0D43C3D6 + F6377691C7721B6B30185FBBC1F7A00D0BDB5B44B75B80BF33101F8EE050072D + A8DB470EA767F3391336D071DF228034CE976C1BCDDAD2303C86F4A00A7AC2C6 + 5AD50AEDCC2C8028CFF1D005FD3346820B2D4DC5C832322E0118C649A00C4B3B + 49EDF5AD91AC623720F3D0678A00759D92A349BE5DAEB213F28CD005FB4D9657 + 8F221CBDC1DC5BB608E94014220A93386932D2C6F1A9C6396522802B691A1497 + B11B8958AC6A718C7271401D38D3A25D2EDFE51C12A198E7B9A00ABE264DD69A + 6ED61FBB720B038C0E2802B9F215E40E9BB272188C7140106AEED028B88E20E8 + 500C01D483401496ECAB2DC28DA739DA7B1EBF8D0042EC24693CB462DBB231EF + 40166C745B9BC3B94EDE7D3A5005E834C36D3B09189207200A00DAB58560B08D + 915770F9BE63CD005369CB5E35C0E028F98034015752B9F3432A2EE39E450051 + D565211177019C0C2F6A00A595CE0BE08381BB9A00B9F678DEEE1E3D3A7AE680 + 3AA9ED614B68D84A0B6EFB98C11DA80346243F246B1FCA173D2803B8D32D5638 + E01C8C2E0FE9401AE42AF002E7A6471C500354AA2FCC7760F7A00552412EAC30 + 7B1A005CB49221C1E38CD005DC1CAAF5FE94012210A7057071C50057BA66DC06 + 463BFA5004409693E6E074EBD6802C2208CA853819E9DA802D2C8E140C8E0500 + 5EBE04CFC74FE54015266001E39ED40145E2126436700F18A008EE132001CFE8 + 6800519420020FBD00491868D570A3A0E6801590B0DAA071CD003442C3AFCC7F + 2A0080C722C8A718E3B500265B18DA323AF14010CA4A9053340024C4E036083D + 680193C69B0888800FB50063CB121B9DCC1573FC4AA450055D52CCC70F9D0A02 + 47F16314019F6E616454B88FEE9EDDE802412C5F3A22270780071C5002491895 + 11E4DD2A13F3646314014B56B7B6962112C450AF00E7B75FF1A006AAE9904610 + C04AF520B77A0024D5616B8602185630A0052BFAD00665F849632122427208C2 + E3033FFEBA00A56F6D66B733C2D182C08600714013C8FE433A8936AB718EE07A + 50065CCAD3EA114C032F923AF1838A009AF6E83496EFD5BA924FB114012D9CCB + 2EFB79A5210FCC33D9BB7340195AAE47D9C0450F092F93D4500125D4D6F19CB1 + DCE320F73401117328B7246E750C38E30339A00D4B399E3B2BB94819CA8F98E7 + D7B5006448C63D551D599D0A0E7D39CD0054CBA4D388C6433646E3CD005845B9 + B9108484C863E78A00D15D1C47E5DCCADB9E27122A6463AF34016207104D22C5 + C239DEA83B03EFF5CD003EEAF51EC614917E70CDCE78EA6803275399248238F0 + 00C963401425B9DB8E402B4002DDBCD1140C703B8ED40058D87DA251133BB0E8 + A4739A00DE934D8F4D50B1A12CC00208E68035ADE14B5B7DC8AD9719639E9C74 + A00A0E499246C72C0704D003AE1D76A20E58AF2BE868032525288C1C801DB181 + 4019B72E1259065B3DC500424C9752C6517FE039E280265B5267C14DAC5B27A6 + 2802F41020BBDBC8C1CFCB401D4C60CB1842997C83D7A0A00E92DAC94614060E + C8390783401D65B8109E1B77A83DA80257940384F4EA68023424F39CFAE4F4A0 + 096DC307240047614017205DB94EF40160636E1B3B8F6A00984640E30491CE7B + 50051B884B8518DBD4FD68023D8DC7008F5EF4016132A000012A2802E2952A09 + 519C5005ABF27ED0401DBAFA5005494903E61F2E6802BCDF2152A4AE7B1EB401 + 196C7CC48C8E38A005901206C239ED40091B6DC865C9005003D383BC8E7B6280 + 0DE5A4E18006801A51BE62AC08A001A3400E01C934015A684B395180319A00AA + 2228C4632450033859063E534019F731065DADC13C839E2801E853ECA11D8B47 + C8E94018D2E9CACAC627DD8E40CE3028033E55F25581C21EB8C50029BA942ED4 + 63B1B8C7A0A0049D11AD7CDFBE7F8867DE8033EE823440292BEEBC9FA5006680 + CD23BC8323036F34015E7BB784320C8FF7BA628028B48A65691D8F98FC12BDC0 + A00B22488B2E59D8E3201F7A00AF7431346412AB8E99A008DC892E32FC85FE2E + 940126E48C336016231C9CD00566B86BBB991A5046D8F6838EB9A00ACF2B7962 + 20FC8E013400D66658C467E66193B8668001792F9463880EB9239340172CF4BB + 9BC7F318ED8D4E18938E33CD00699D2B4F59376E90AF753C67F5A00B5E7C506D + 4842C71AF0428FEB401997373BDA4D8C42B2E173C50052479E21C38054751D28 + 02B5DDC7CC324F1D314014A6BA9378504AA74381934012DAD9BDCEE2A304F009 + EB401A765A58424DC29299E8381401BBA559C56E0CC21DA3F87DA8023BB6B995 + C6E651B4F4C638A00BAEFF00668B6361BE9EF4019378D12194AE776073401463 + BB97CADE360E31F30E680231246CBB76EE623834019B7A5D98901770A009B4D7 + 56DD201D3AAF6FC2802D470C85C124E18E40A00D38A0DB28720A80DC81DE803A + C8EDF6889881861D0D007470C64470858C2F420E7A71401B1136E191B40C739E + F400ADF3285C605003C4614001475ED401661385072011ED4016E28B0B839CF7 + 3401247B53181C2D0055BDBE9AD879988C27604F24FA5003833101E664CE380A + 78C50067DAEA68F7491968FE6DC7EF7614016ACEE44A249032952D855F4FAD00 + 69A16D8BF77A5005CBDFF8F838CE7140152563B47B1E6802AC9970305B83DA80 + 2195F0B9C16C773400D8A43BDB23F1CF0280241202DD4673C8CE28008C329249 + E45002632D9039F5C5002DB96DE63C60752738CD0049E5E50ED0300723D28012 + 1CAA9DC3241EBEA28012644E8A8BD79C76A00AF25BA302C8D83E940156F21CC2 + 411C9EB40197728E226445383C676E714019E77C6C146EC9E391D31401249233 + B18DE02E00C16DBD680295F69AA066CF6AE3A2EDA00CAFB35E3EE592DE42C0F5 + DBC50032EED2EE3405606C7FB2B40151AD2591762AC89C700A114019F73A7DC9 + 6F9B036D0041E5396E632C578F94119A008A7B7BA7C18EDE40A00380B8FD6802 + 9CD05C4720326405FE122801B18F2C33FDE1DF9FE940017190140E464E474A00 + 944324F92A8EC0AE30A3F4A00BF0787A79363C911893A90EB81401767D0AC624 + 0663B8631F2F7A00AF752DB411471DBC6113B9FF001A00A9717888E4AFCD91F9 + 0A00CF9B50FDE3E4E77719A00619D5DB0A3E5EA72D9FC2801B3DFBA90A830BC0 + 38A00AB1ACD7338DB13163F74E3818FAD0059B7D1A7966677232579603F4A00D + AB5D26D618F272CF8FBC475A0096D9232DE53C7941C8C1FBBF5A0075D4F193E5 + 10A06325FD68024F38A448510FCC0738E280285C3F98F1820920E4124D004D73 + 2B870C57683D71CD00654F2AEE973B8EEE9EB4019C56470B1AB1DA3A77A009E2 + 497792CAEA538C118CD00594B417117FABC1E9BA8025D22C945C4C1D3E551C1A + 00D8B5B455B88DE3040F41D28035E0B51260B950377009C60D006D342B6EBBD4 + F27D5781401AB0920A3B1DC08C00A3BD004C84C8A08257D462802DC4C7686209 + C71834013C4AC587CA401DE803462887C8DBCF4E062802CB1272B8FD7140003B + 7860303DA8031B570B25E287B944110DC176FDD3EA79A00B30DCC1B9599D3781 + 9FBB8A008E56825772678C3BA614311400EB2865322B34F11654DA163E7BF5A0 + 0B98238C35006ADFE7ED0547A7AD0055C119E31C631401559C2310A319EA0D00 + 23A2792430C63A6050042402A3006DEDEA680054463D41FAF6A009C977621557 + 6F734003A9563B53E622801AA8CA0EE0573DC1C5005CF942E477FC3340152E0E + 1B24E0628008E30541072C3BD002790724F6CD0012DB6472BF2E28028CB62549 + 542467DC500549AD91594ED0703953D334014AE24489D99957AFE54010CA6250 + 0890825786F7A00CE7B92C42FCB9CF503934010B48D1B65A46C673C77A00532C + 6878918B8F519A00AB24ADB991943027A95CE2802078D14B1276EE3F28C70050 + 055B8B90814296E32303A0A008EDC25D16321531918638FE540152E34BB440DE + 53301DC6450025B68B1BC446D6C91D5B1D2802D4625B15F2E18232CDF731D73F + 9D0057BDD42FA58D60781F7F4C7F8500517B7D52784AF92C1075CB8C8FD6802A + 2D9DFB068D0671EF8A00953C3D7B3C5E64AE23F5391C50037FE11E0913192E37 + B1ECA3AD002C5A1AEDEACA08E06EC50033FB01A38D7062543D18924D0038C06C + 5772B970BC038DB81401269722BAC8BBCEDDDC63AD004B33052A0BF3EFCD002C + 41BCA77F38E1F81818A00AEF1011EE565258E30DF5A00B4B954CAC980BD17B50 + 0664D7211C63E600F3CF4FA50033ED65C32AC85B3F777734011791231DE07183 + 97F5A00D08ED62862478D49C8E49ED400EFB2091CCC0678FC68026D3610F1903 + 2769E83BD005FD32D1BCC91F60C11C0A00D310B412C2A1003EFE94017AD63225 + 52113697C938CE28034C9C924AFCD9E94013471CC66050600181834017235902 + E41519F5140172DA39A4FF00578A00D3B78C840B211F85005855DBF280734012 + ECDD862791E9400A8A873D777BF6A00E6B5877FED89559645474DA182120F1ED + 400ED36F6255C4DE623797B77BA1EB9340049207BF472E642213B485D9CE7A73 + 4016749B866BD11CB80DB59B6E4160323A91C50068B38C9C6EC50078F4FF00B4 + 7F9B2171E14DA4FF00D4473FFB4A80223FB451FF00A15BFF002A1FFDAE80216F + DA0B32171E18C67FE9FF00FF00B5D0046DF1F8B633E1A3FF0081FF00FDAE8005 + F8FC41E7C35918E9F6FF00FED74008BF1F36EEC786B93D3FD3FA7FE43A0072FE + D0040C7FC23476FA7DBFFF00B5D00393F682D8495F0C119FFA887FF6BA000FED + 04C7AF86B3F5BFFF00ED740122FED0D8183E1727D33A874FFC87400B27ED0C1D + 707C2BCFAFF687FF006BA0045FDA1954617C2B8E3B6A1FFDAE80113F6852A4FF + 00C52FF9EA1FFDAE8014FED10C71FF0014C741FF003FFF00FDAE801A7F684CFF + 00CCAFFF0093FF00FDAE802BCBF1EB7924786B693FF4FD9FFDA74015A7F8DCB3 + 0C3787063FEBF7FF00B5D00547F8C1131FF917BE5CE71F6DFEBB2801B2FC5D85 + D547FC23B865E87EDBFF00D85004727C588DD40FEC1E9DCDDFFF006140083E2C + 22B061A11CFF00D7E7FF00614001F8AE84E7FB08838C7FC7DFFF00614014E7F8 + 94B336E6D21B8E9FE9678FFC7680219BE218940074A6031D3ED3FF00D8D00491 + FC4758E328BA3E38C7FC7CFF00F634010B7C41071FF12B230727FD23AFFE3B40 + 16DBE283BAAAB69430A31F2DC63FF65A008E5F8945CA95D2B6953D7ED19FFD96 + 801BFF000B21DA5591F4DDC57A7EFF0018FF00C768011FE2396763FD96406182 + 3ED3FF00D8D00463E21100E34CE7B7EFFA7FE3B4013C9F128BA2A8D276E0638B + 9FFEC6802BC9F109C83B34F28DEBE7E7FF0065A0044F880EBFF30F3D3FE7BE39 + FF00BE6801BFF09F36DC1D341FFB6E7FC28022B8F1B79C31FD9E55718C79FF00 + FD8D0025BF8D1608CA8D3793D4F9D8FF00D968011FC66ADCFF006773EF367FF6 + 5A00922F1C08A3D8BA69C7FD77FF00EC68013FE138FF0048121D3BE40384F3BF + FB1A0069F1B727669FB73D7F7D9FFD96802ACBE29DEF9FB2100F5025EBFF008E + D002C1E298E15C0D3F273907CEE9FA50059FF84D57CA319D3B20F6F3BFFB1A00 + 997C78446A9FD9C36A8C7FAEEBFF008ED0038F8F976EDFECAE318FF8F8FF00EC + 6801B67E3B4B5662BA5920F38FB474FF00C76802DDB7C49104A5CE925B23A7DA + 71FF00B25005897E29F98FB8E8D8E303FD2BA7FE39400F83E2C18B3FF1273F85 + DE3FF64A00993E2FB0186D14B7FDBDFF00F614013C3F19CC3B76684783FF003F + 9FFD850048BF1B5C312741C82791F6CFFEC2802CC5F1DBCA6CAF8708FF00B7FF + 00FED740129F8F87002F86B6F39FF8FF00FF00ED74012C7FB41B20C7FC2344FD + 6FFF00FB5D002FFC342B7CD9F0CF07B7DBFA7FE43A0055FDA136AE07860FFE0C + 3FFB5D00366FDA08C807FC530148EFF6ECFF00ED3A0069FDA049E0F86063FEBF + BFFB5D001FF0D007007FC23038FF00A7EFFED7400DFF0085FC03165F0BAAB118 + C8BDFF00ED7400F1FB40E0007C33FF0093FF00FDAE803FFFD90A0C0054667253 + 68617065566965770000060053686170653100B0000000D80100006000000072 + 000000010000004040000000000F00000000000000C0C0C0002C020000000000 + 000000000000010000000000020A1000546672526F756E645265637456696577 + 00000A00526F756E64526563743100E001000004020000600000005E00000003 + 0000004040000000000F00000000000000FFFFFF1F2C02000000000001000600 + 617361647366000000000100000000000500417269616C000A0000000300FF00 + 00000000020000000000FFFFFF00000000020000000100000000000000000080 + 80800006000000010A000000000000000A0E00546672426172436F6465566965 + 7700000400426172310088010000400000005F0000003E000000010000004040 + 000000000F00000000000000FFFFFF1F2C020000000000010008003132333435 + 363738000000000100000000000101000E00000002000000000000000000F03F + 0000000000000000000005004D656D6F390068000000C4020000600000004E00 + 000003000000803F000000000300000002000000FF0000002C02000000000001 + 00010041000000000100000000000500417269616C000A000000030000FF0000 + 0000020000000000FFFFFF00000000000000000000000000000006004D656D6F + 31300098000000D80200006000000052000000030000000040000000000C0000 + 0001000000FFFF00002C02000000000001000100420000000001000000000005 + 00417269616C000A0000000300FF0000000000020000000000FFFFFF00000000 + 000000000000000000000006004D656D6F31310088000000F802000060000000 + 52000000030000004040000000000A0000000000000000FF00002C0200000000 + 000100010043000000000100000000000500417269616C000A0000000300FFFF + 00000000020000000000FFFFFF000000000000000000000000000A0F00546672 + 436865636B426F785669657700000600436865636B310098010000AC00000014 + 00000012000000010000004040000000000F0000000000000000FF00002C0200 + 00000000000000000000010000000000010A0F00546672436865636B426F7856 + 69657700000600436865636B3200B0010000AC00000014000000120000000100 + 00004040000000000F00000000000000FF0000002C0200000000000000000100 + 1100436865636B6564203A3D2046616C73653B0001000000000000040005004C + 696E65320030000000E8000000EC000000000000000000000000400000000002 + 00000000000000FFFFFF1F2C0200000000000000000000000100000000000000 + 06004D656D6F3132004402000040010000600000009200000003000000404000 + 0000000F0000000000000000FF00002C02000000000001000400717171710000 + 000001000000000008004669786564737973000A0000000400FF000000000002 + 0000000000FFFFFF00000000020000000100000000000105004D656D6F360030 + 00000038000000600000001200000003000000803F000000000F000000020000 + 00FFFF00002C0200000000000100040061736466000000000100000000000500 + 417269616C000A0000000100000000000000020000000000FFFFFF0000000002 + 0000000100000000000105004D656D6F3700B4000000D8000000C40000003A00 + 0000030000000040000000000F00000000000000C0C0C0002C02000000000001 + 000F006173646620206173646620617364660000000001000000000005004172 + 69616C000A0000000100000000000000020000000000FFFFFF00000000020000 + 000100000000000105004D656D6F3800CC01000030010000A000000056000000 + 030000004040000000000F00000001000000C0C0C0002C020000000000010005 + 003433353433000000000100000000000500417269616C000A0000000300FF00 + 00000000020000000000FFFFFF00000000020000000100000000FE0000000000 + 00000A0C005466725368617065566965770000060053686170653100B0000000 + D80100006000000072000000010000004040000000000F00000000000000C0C0 + C0002C020000000000000000000000010000000000020A1000546672526F756E + 64526563745669657700000A00526F756E64526563743100E001000004020000 + 600000005E0A0C005466725368617065566965770000060053686170653100B0 + 000000D80100006000000072000000010000004040000000000F000000000000 + 00C0C0C0002C020000000000000000000000010000000000020A100054667252 + 6F756E64526563745669657700000A00526F756E64526563743100E001000004 + 020000600000005E000000030000004040000000000F00000000000000FFFFFF + 1F2C020000000000010006006173616473660000000001000000000005004172 + 69616C000A0000000300FF0000000000020000000000FFFFFF00000000020000 + 00010000000000000000008080800006000000010A000000000000000A0E0054 + 6672426172436F64655669657700000400426172310014020000780000005F00 + 00005A00000001000000803F000000000000000000000000FFFFFF1F2C020000 + 000000010008003132333435363738000000000100000000000101000E000000 + 02000000000000000000F03F0000000000000000000005004D656D6F39006800 + 0000C4020000600000004E00000003000000803F000000000300000002000000 + FF0000002C020000000000010001004100000000010000000000050041726961 + 6C000A000000030000FF00000000020000000000FFFFFF000000000000000000 + 00000000000006004D656D6F31300098000000D8020000600000005200000003 + 0000000040000000000C00000001000000FFFF00002C02000000000001000100 + 42000000000100000000000500417269616C000A0000000300FF000000000002 + 0000000000FFFFFF00000000000000000000000000000006004D656D6F313100 + 88000000F80200006000000052000000030000004040000000000A0000000000 + 000000FF00002C02000000000001000100430000000001000000000005004172 + 69616C000A0000000300FFFF00000000020000000000FFFFFF00000000000000 + 0000000000000A0F00546672436865636B426F78566965770000060043686563 + 6B310098010000AC0000001400000012000000010000004040000000000F0000 + 000000000000FF00002C020000000000000000000000010000000000010A0F00 + 546672436865636B426F785669657700000600436865636B3200B0010000AC00 + 00001400000012000000010000004040000000000F00000000000000FF000000 + 2C02000000000000000001001100436865636B6564203A3D2046616C73653B00 + 01000000000000040005004C696E65320030000000E8000000EC000000000000 + 00000000000040000000000200000000000000FFFFFF1F2C0200000000000000 + 00000000010000000000000006004D656D6F3132004402000040010000600000 + 0092000000030000004040000000000F0000000000000000FF00002C02000000 + 000001000400717171710000000001000000000008004669786564737973000A + 0000000400FF0000000000020000000000FFFFFF000000000200000001000000 + 00000105004D656D6F3600300000003800000060000000120000000300000080 + 3F000000000F00000002000000FFFF00002C0200000000000100040061736466 + 000000000100000000000500417269616C000A00000001000000000000000200 + 00000000FFFFFF00000000020000000100000000000105004D656D6F3700B400 + 0000D8000000C40000003A000000030000000040000000000F00000000000000 + C0C0C0002C02000000000001000F006173646620206173646620617364660000 + 00000100000000000500417269616C000A000000010000000000000002000000 + 0000FFFFFF00000000020000000100000000000105004D656D6F3800CC010000 + 30010000A000000056000000030000004040000000000F00000001000000C0C0 + C0002C0200000000000100050034333534330000000001000000000005004172 + 69616C000A0000000300FF0000000000020000000000FFFFFF00000000020000 + 000100000000FE00000000000000 + } + end + object frBarCodeObject1: TfrBarCodeObject + left = 346 + top = 127 + end + object frRoundRectObject1: TfrRoundRectObject + left = 381 + top = 122 + end + object frShapeObject1: TfrShapeObject + left = 416 + top = 127 + end + object frCheckBoxObject1: TfrCheckBoxObject + left = 448 + top = 123 + end + object frDesigner1: TfrDesigner + left = 308 + top = 173 + end + object frImageExport1: TfrImageExport + left = 350 + top = 171 + end + object frHtmlDivExport1: TfrHtmlDivExport + left = 388 + top = 170 + end + object SaveDialog1: TSaveDialog + left = 409 + top = 83 + end +end diff --git a/components/lazreport/source/addons/imgexport/test/testunit1.pas b/components/lazreport/source/addons/imgexport/test/testunit1.pas new file mode 100644 index 0000000000..e64f18b5b4 --- /dev/null +++ b/components/lazreport/source/addons/imgexport/test/testunit1.pas @@ -0,0 +1,91 @@ +unit testunit1; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, LR_Class, LR_BarC, LR_RRect, LR_Shape, LR_ChBox, + LR_Desgn, Forms, Controls, Graphics, Dialogs, StdCtrls, Spin, ComCtrls, + LR_e_htmldiv, LR_e_img; + +type + + { TForm1 } + + TForm1 = class(TForm) + Button1: TButton; + Button2: TButton; + CheckBox1: TCheckBox; + CheckBox2: TCheckBox; + ColorButton1: TColorButton; + Edit1: TEdit; + FloatSpinEdit1: TFloatSpinEdit; + frBarCodeObject1: TfrBarCodeObject; + frCheckBoxObject1: TfrCheckBoxObject; + frDesigner1: TfrDesigner; + frHtmlDivExport1: TfrHtmlDivExport; + frImageExport1: TfrImageExport; + frReport1: TfrReport; + frRoundRectObject1: TfrRoundRectObject; + frShapeObject1: TfrShapeObject; + GroupBox1: TGroupBox; + GroupBox2: TGroupBox; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + Label4: TLabel; + SaveDialog1: TSaveDialog; + SpinEdit1: TSpinEdit; + procedure Button1Click(Sender: TObject); + procedure Button2Click(Sender: TObject); + procedure frReport1ExportFilterSetup(Sender: TfrExportFilter); + private + { private declarations } + public + { public declarations } + end; + +var + Form1: TForm1; + +implementation + +uses + LCLIntf; + +{$R *.lfm} + +{ TForm1 } + +procedure TForm1.Button1Click(Sender: TObject); +begin + frReport1.ShowReport; +end; + +procedure TForm1.Button2Click(Sender: TObject); +begin + frReport1.DesignReport; +end; + +procedure TForm1.frReport1ExportFilterSetup(Sender: TfrExportFilter); +begin + if Sender is TfrImageExportFilter then + with TfrImageExportFilter(Sender) do + begin + Zoom := FloatSpinEdit1.Value; + JPEGQuality := SpinEdit1.Value; + BackgroundColor := ColorButton1.ButtonColor; + end + else + if Sender is TfrHtmlDivExportFilter then + with TfrHtmlDivExportFilter(Sender) do + begin + PageStyle := Edit1.Text; + ExportImages := CheckBox1.Checked; + EmbeddedImages := CheckBox2.Checked; + end; +end; + +end. + diff --git a/components/lazreport/source/addons/imgexport/tfrhtmldivexport.png b/components/lazreport/source/addons/imgexport/tfrhtmldivexport.png new file mode 100644 index 0000000000..c44fd82872 Binary files /dev/null and b/components/lazreport/source/addons/imgexport/tfrhtmldivexport.png differ diff --git a/components/lazreport/source/addons/imgexport/tfrimageexport.png b/components/lazreport/source/addons/imgexport/tfrimageexport.png new file mode 100644 index 0000000000..8f0e3c5092 Binary files /dev/null and b/components/lazreport/source/addons/imgexport/tfrimageexport.png differ