1
0
Martin Prikryl 12 жил өмнө
parent
commit
2e4b4738f0
100 өөрчлөгдсөн 13807 нэмэгдсэн , 8084 устгасан
  1. 6 1
      build.bat
  2. 13 4
      deployment/licence.setup-chrome.txt
  3. 12 2
      deployment/licence.setup.txt
  4. 53 5
      deployment/licence.txt
  5. 3 2
      deployment/winscp.isl
  6. 78 51
      deployment/winscpsetup.iss
  7. 9 0
      dotnet/App.config
  8. 45 0
      dotnet/ChmodEventArgs.cs
  9. 17 0
      dotnet/CommandExecutionResult.cs
  10. 19 0
      dotnet/FailedEventArgs.cs
  11. 16 0
      dotnet/FileOperationEventArgs.cs
  12. 269 0
      dotnet/FilePermissions.cs
  13. 26 0
      dotnet/FileTransferProgressEventArgs.cs
  14. 141 0
      dotnet/GlobalSuppressions.cs
  15. 17 0
      dotnet/OperationEventArgs.cs
  16. 32 0
      dotnet/OperationResultBase.cs
  17. 23 0
      dotnet/OutputDataReceivedEventArgs.cs
  18. 22 0
      dotnet/RemoteDirectoryInfo.cs
  19. 29 0
      dotnet/RemoteFileInfo.cs
  20. 39 0
      dotnet/RemovalEventArgs.cs
  21. 22 0
      dotnet/RemovalOperationResult.cs
  22. 1472 0
      dotnet/Session.cs
  23. 17 0
      dotnet/SessionEvents.cs
  24. 25 0
      dotnet/SessionException.cs
  25. 27 0
      dotnet/SessionLocalException.cs
  26. 136 0
      dotnet/SessionOptions.cs
  27. 92 0
      dotnet/SessionRemoteException.cs
  28. 36 0
      dotnet/SynchronizationResult.cs
  29. 47 0
      dotnet/TouchEventArgs.cs
  30. 50 0
      dotnet/TransferEventArgs.cs
  31. 22 0
      dotnet/TransferOperationResult.cs
  32. 80 0
      dotnet/TransferOptions.cs
  33. 81 0
      dotnet/TransferResumeSupport.cs
  34. 111 0
      dotnet/WinSCPnet.csproj
  35. 9 0
      dotnet/WinSCPnet.ruleset
  36. 57 0
      dotnet/internal/Callstack.cs
  37. 22 0
      dotnet/internal/CallstackAndLock.cs
  38. 215 0
      dotnet/internal/ConsoleCommStruct.cs
  39. 9 0
      dotnet/internal/Constants.cs
  40. 126 0
      dotnet/internal/CustomLogReader.cs
  41. 85 0
      dotnet/internal/ElementLogReader.cs
  42. 642 0
      dotnet/internal/ExeSessionProcess.cs
  43. 17 0
      dotnet/internal/ISessionProcess.cs
  44. 54 0
      dotnet/internal/Job.cs
  45. 32 0
      dotnet/internal/Lock.cs
  46. 283 0
      dotnet/internal/Logger.cs
  47. 21 0
      dotnet/internal/OperationResultGuard.cs
  48. 22 0
      dotnet/internal/ProgressHandler.cs
  49. 90 0
      dotnet/internal/ReadOnlyInteropCollectionHelper.cs
  50. 249 0
      dotnet/internal/SessionLogReader.cs
  51. 88 0
      dotnet/internal/UnsafeNativeMethods.cs
  52. 88 0
      dotnet/interopcollections/RemoteFileInfoCollection.cs
  53. 88 0
      dotnet/interopcollections/RemovalEventArgsCollection.cs
  54. 88 0
      dotnet/interopcollections/SessionRemoteExceptionCollection.cs
  55. 88 0
      dotnet/interopcollections/StringCollection.cs
  56. 88 0
      dotnet/interopcollections/TransferEventArgsCollection.cs
  57. 373 0
      dotnet/licence-dotnet.txt
  58. 27 0
      dotnet/properties/AssemblyInfo.cs
  59. 0 304
      forms/Console.dfm
  60. 0 167
      forms/Copy.dfm
  61. 0 999
      forms/Editor.dfm
  62. 0 285
      forms/GeneralSettings.dfm
  63. 0 4284
      forms/Glyphs.dfm
  64. 0 165
      forms/ImportSessions.cpp
  65. 0 493
      forms/LocationProfiles.dfm
  66. 0 108
      forms/Log.dfm
  67. 0 524
      forms/Rights.dfm
  68. 0 690
      forms/SynchronizeChecklist.dfm
  69. 2 0
      libs/.gitignore
  70. 190 0
      libs/apr/CHANGES
  71. 341 0
      libs/apr/LICENSE
  72. 287 0
      libs/apr/Makefile.bcb
  73. 129 0
      libs/apr/Makefile.in
  74. 181 0
      libs/apr/Makefile.win
  75. 15 0
      libs/apr/NOTICE
  76. 430 0
      libs/apr/NWGNUmakefile
  77. 167 0
      libs/apr/README
  78. 251 0
      libs/apr/apr-config.in
  79. 558 0
      libs/apr/apr.dep
  80. 817 0
      libs/apr/apr.dsp
  81. 101 0
      libs/apr/apr.dsw
  82. 1779 0
      libs/apr/apr.mak
  83. 11 0
      libs/apr/apr.pc.in
  84. 100 0
      libs/apr/apr.spec
  85. 75 0
      libs/apr/atomic/netware/apr_atomic.c
  86. 137 0
      libs/apr/atomic/os390/atomic.c
  87. 81 0
      libs/apr/atomic/unix/builtins.c
  88. 127 0
      libs/apr/atomic/unix/ia32.c
  89. 205 0
      libs/apr/atomic/unix/mutex.c
  90. 207 0
      libs/apr/atomic/unix/ppc.c
  91. 155 0
      libs/apr/atomic/unix/s390.c
  92. 79 0
      libs/apr/atomic/unix/solaris.c
  93. 154 0
      libs/apr/atomic/win32/apr_atomic.c
  94. 319 0
      libs/apr/build-outputs.mk
  95. 28 0
      libs/apr/build.conf
  96. 41 0
      libs/apr/build/MakeEtags
  97. 344 0
      libs/apr/build/NWGNUenvironment.inc
  98. 94 0
      libs/apr/build/NWGNUhead.inc
  99. 83 0
      libs/apr/build/NWGNUmakefile
  100. 371 0
      libs/apr/build/NWGNUtail.inc

+ 6 - 1
build.bat

@@ -7,4 +7,9 @@ rem set DRAGEXT64INCL=<path to x64 includes>
 rem set DRAGEXT64LIB=<path to x64 libraries>
 if "%BUILD_TARGET%"=="" set BUILD_TARGET=Build
 if "%BUILD_CONFIG%"=="" set BUILD_CONFIG=Release
-C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe WinSCP.groupproj /t:clean,%BUILD_TARGET% /p:RELEASE_TYPE=%RELEASE_TYPE%;CONFIG=%BUILD_CONFIG%;INTERM_PATH=.;FINAL_PATH=.;LIB_PATH=lib
+
+cd libs
+call buildlibs.bat
+
+cd ..\source
+C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe WinSCP.groupproj /t:clean,%BUILD_TARGET% /p:RELEASE_TYPE=%RELEASE_TYPE%;CONFIG=%BUILD_CONFIG%;INTERM_PATH=.;FINAL_PATH=.

+ 13 - 4
deployment/licence.setup-chrome.txt

@@ -3,8 +3,10 @@ http://winscp.net/eng/docs/license
 
   
   A. GNU General Public License
-  B. Privacy Policy
-  C. Licenses and Distribution Terms of WinSCP Installation Package
+  B. License of WinSCP Icon Set
+  C. Privacy Policy
+  D. Licenses and Distribution Terms of WinSCP Installation Package
+
 
   A. GNU GENERAL PUBLIC LICENSE
   Version 3, 29 June 2007
@@ -264,7 +266,14 @@ You should also get your employer (if you work as a programmer) or school, if an
 The GNU General Public License does not permit incorporating your program into proprietary programs.  If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library.  If this is what you want to do, use the GNU Lesser General Public License instead of this License.  But first, please read <http://www.gnu.org/philosophy/why-not-lgpl.html>.
 
 
-  B. WinSCP Privacy Policy
+  B. License of WinSCP Icon Set
+  
+Note that all images distributed in or with WinSCP application are NOT published under the GNU General Public License. It means that it is not allowed to redistribute or reuse these images or parts of them or modifications of them without WinSCP separately or in or with another software.
+
+You agree that all ownership and copyright of the licensed stock icons remain the property of York Technologies Limited. WinSCP was granted a license to display this graphical media royalty-free in WinSCP software applications, web design, presentations, and multimedia projects that WinSCP creates and/or distributes.
+
+
+  C. WinSCP Privacy Policy
 
 Please take time to read WinSCP Privacy policy at http://winscp.net/eng/docs/privacy
 
@@ -277,7 +286,7 @@ If you still want to disable WinSCP Usage statistics already during installation
 Thank you!
 
 
-  C. Licenses and Distribution Terms of WinSCP Installation Package
+  D. Licenses and Distribution Terms of WinSCP Installation Package
 
 Note that GNU General Public License applies solely to WinSCP application. During WinSCP installation you might be offered to install also other application having own license agreement. While nothing will be installed without your consent be sure to read and understand the respective license conditions.
 

+ 12 - 2
deployment/licence.setup.txt

@@ -3,7 +3,9 @@ http://winscp.net/eng/docs/license
 
   
   A. GNU General Public License
-  B. Privacy Policy
+  B. License of WinSCP Icon Set
+  C. Privacy Policy
+
 
   A. GNU GENERAL PUBLIC LICENSE
   Version 3, 29 June 2007
@@ -263,7 +265,14 @@ You should also get your employer (if you work as a programmer) or school, if an
 The GNU General Public License does not permit incorporating your program into proprietary programs.  If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library.  If this is what you want to do, use the GNU Lesser General Public License instead of this License.  But first, please read <http://www.gnu.org/philosophy/why-not-lgpl.html>.
 
 
-  B. WinSCP Privacy Policy
+  B. License of WinSCP Icon Set
+  
+Note that all images distributed in or with WinSCP application are NOT published under the GNU General Public License. It means that it is not allowed to redistribute or reuse these images or parts of them or modifications of them without WinSCP separately or in or with another software.
+
+You agree that all ownership and copyright of the licensed stock icons remain the property of York Technologies Limited. WinSCP was granted a license to display this graphical media royalty-free in WinSCP software applications, web design, presentations, and multimedia projects that WinSCP creates and/or distributes.
+
+
+  C. WinSCP Privacy Policy
 
 Please take time to read WinSCP Privacy policy at http://winscp.net/eng/docs/privacy
 
@@ -274,3 +283,4 @@ Before disabling WinSCP Usage statistics, be so kind and consider that it plays
 If you still want to disable WinSCP Usage statistics already during installation, you may do so using Custom installation.
 
 Thank you!
+

+ 53 - 5
deployment/licence.txt

@@ -1,9 +1,14 @@
-                    GNU GENERAL PUBLIC LICENSE
-                       Version 3, 29 June 2007
+  A. GNU General Public License
+  B. License of WinSCP Icon Set
+  C. Privacy Policy
 
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
+  
+  A. GNU GENERAL PUBLIC LICENSE
+  Version 3, 29 June 2007
+
+  Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+  Everyone is permitted to copy and distribute verbatim copies
+  of this license document, but changing it is not allowed.
 
                             Preamble
 
@@ -672,3 +677,46 @@ may consider it more useful to permit linking proprietary applications with
 the library.  If this is what you want to do, use the GNU Lesser General
 Public License instead of this License.  But first, please read
 <http://www.gnu.org/philosophy/why-not-lgpl.html>.
+
+
+  B. License of WinSCP Icon Set
+  
+Note that all images distributed in or with WinSCP application are NOT
+published under the GNU General Public License. It means that it is not
+allowed to redistribute or reuse these images or parts of them or modifications
+of them without WinSCP separately or in or with another software.
+
+You agree that all ownership and copyright of the licensed stock icons remain
+the property of York Technologies Limited. WinSCP was granted a license to
+display this graphical media royalty-free in WinSCP software applications,
+web design, presentations, and multimedia projects that WinSCP creates and/or
+distributes.
+
+
+  C. WinSCP Privacy Policy
+
+Please take time to read WinSCP Privacy policy at
+http://winscp.net/eng/docs/privacy
+
+WinSCP includes functionality to collect and send non-personal WinSCP
+Usage statistics and to automatically check for application updates. The only
+potentially personal information sent to WinSCP is IP addresses. Users can
+opt-out from using this functionality in the installer or anytime later
+in WinSCP Preferences. WinSCP Usage statistics help improve future versions
+of WinSCP. Once sent, usage statistics are stored for analysis (except
+IP addresses) and made available to the core WinSCP team only.
+
+Before disabling WinSCP Usage statistics, be so kind and consider that it
+plays very important role in the WinSCP development. We work very hard
+to make WinSCP reliable and useful. We also love improving WinSCP with every
+release. And last but not least, we provide WinSCP application to you
+for free and we want this to stay so! However our resources and time are
+unfortunately very limited. We want to focus our effort on improving
+the right features for you. That is why we need to learn more about how you
+use WinSCP.
+
+If you still want to disable WinSCP Usage statistics already during
+installation, you may do so using Custom installation.
+
+Thank you!
+

+ 3 - 2
deployment/winscp.isl

@@ -61,11 +61,11 @@ CustomUpgradeType2=- new installation to different destination
 UserSettingsTitle=Initial user settings
 UserSettingsPrompt=Please, select your preferred user interface options.
 UserInterfaceStyle=User interface style
-NortonCommanderInterfaceB=&Commander interface
+NortonCommanderInterfaceC=&Commander
 NortonCommanderInterface1=- two panels (left for local directory, right for remote directory)
 NortonCommanderInterface2=- keyboard shortcuts like in Norton Commander (and other similar programs as Total Commander, Midnight Commander...)
 NortonCommanderInterface3=- drag && drop to/from both panels
-ExplorerInterfaceB=&Explorer interface
+ExplorerInterfaceC=&Explorer
 ExplorerInterface1=- only remote directory
 ExplorerInterface2=- keyboard shortcuts like in Windows Explorer
 ExplorerInterface3=- drag && drop
@@ -77,3 +77,4 @@ PleaseDonate=Please consider donating to support WinSCP development.
 AboutDonations=About donations
 Donate=Donate %s
 Currency=USD
+ImportSites=Looking for sites to import...

+ 78 - 51
deployment/winscpsetup.iss

@@ -20,10 +20,10 @@
   #define Status "unofficial"
 #endif
 #ifndef SourceDir
-  #define SourceDir ".."
+  #define SourceDir "..\source"
 #endif
 #ifndef BinariesDir
-  #define BinariesDir "..\Release"
+  #define BinariesDir SourceDir + "\Release"
 #endif
 #ifndef OutputSuffix
   #define OutputSuffix
@@ -67,6 +67,9 @@
 ; some path relative to CWD
 #define MessagesPathRel(L) TranslationDirRel + "\" + "WinSCP." + L + ".isl"
 
+#define ExplorerFile "explorer.bmp"
+#define CommanderFile "commander.bmp"
+
 #ifdef Chrome
 #define ChromeLogoFile "chromelogo.bmp"
 #define ChromeAdFile "chromead.bmp"
@@ -106,9 +109,12 @@ AppVersion={#Version}
 AppVerName=WinSCP {#Version}
 OutputBaseFilename=winscp{#Major}{#Minor}{#Rev}setup{#OutputSuffix}
 SolidCompression=yes
+WizardImageFile=compiler:WizModernImage-IS.bmp
+WizardSmallImageFile=compiler:WizModernSmallImage-IS.bmp
 ShowTasksTreeLines=yes
 PrivilegesRequired=none
 UsePreviousLanguage=yes
+MinVersion=0,5.1
 #ifdef Sign
 SignTool=sign $f "WinSCP Installer" http://winscp.net/eng/docs/installation
 #endif
@@ -210,26 +216,15 @@ Name: desktopicon\common; Description: {cm:DesktopIconCommonTask}; \
   Flags: exclusive
 ; No Quick Launch on Win7
 Name: quicklaunchicon; Description: {cm:QuickLaunchIconTask}; \
-  Flags: unchecked; OnlyBelowVersion: 0,6.1.7600
+  Flags: unchecked; OnlyBelowVersion: 6.1.7600
 Name: sendtohook; Description: {cm:SendToHookTask}
 Name: urlhandler; Description: {cm:RegisterAsUrlHandler}
 Name: searchpath; Description: {cm:AddSearchPath}; \
   Flags: unchecked; Check: IsAdminLoggedOn
 
 [Icons]
-; This is created always (unless user checks Don't create a Start menu folder,
-; Setup\AllowNoIcons=yes)
-Name: "{group}\WinSCP"; Filename: "{app}\WinSCP.exe"; Components: main; \
-  Comment: "{cm:ProgramComment}"; Check: not IsWin8
-; This is created when pageant/puttygen component is selected (unless user
-; checks Don't create a Start menu folder, Setup\AllowNoIcons=yes).
-Name: "{group}\{cm:RSAKeyTools}\PuTTYgen"; \
-  Filename: "{app}\PuTTY\puttygen.exe"; Components: puttygen; Check: not IsWin8
-Name: "{group}\{cm:RSAKeyTools}\Pageant"; \
-  Filename: "{app}\PuTTY\pageant.exe"; Components: pageant; Check: not IsWin8
-; On Windows 8, create just top-level icon
-Name: "{commonstartmenu}\Programs\WinSCP"; Filename: "{app}\WinSCP.exe"; Components: main; \
-  Comment: "{cm:ProgramComment}"; Check: IsWin8
+Name: "{commonprograms}\WinSCP"; Filename: "{app}\WinSCP.exe"; Components: main; \
+  Comment: "{cm:ProgramComment}"
 ; This is created when desktopicon task is selected
 Name: "{userdesktop}\WinSCP"; Filename: "{app}\WinSCP.exe"; \
   Tasks: desktopicon\user
@@ -265,6 +260,9 @@ Type: files; Name: "{userdesktop}\WinSCP3.lnk"
 Type: files; Name: "{commondesktop}\WinSCP3.lnk"
 Type: files; Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\WinSCP3.lnk"
 Type: files; Name: "{sendto}\{cm:SendToHook}.lnk"
+; Remove 
+Type: filesandordirs; Name: "{commonprograms}\WinSCP"
+Type: filesandordirs; Name: "{userprograms}\WinSCP"
 
 [Run]
 ; This is called when urlhandler task is selected
@@ -272,6 +270,8 @@ Filename: "{app}\WinSCP.exe"; Parameters: "/RegisterAsUrlHandler"; \
   StatusMsg: {cm:RegisteringAsUrlHandler}; Tasks: urlhandler
 Filename: "{app}\WinSCP.exe"; Parameters: "/AddSearchPath"; \
   StatusMsg: {cm:AddingSearchPath}; Tasks: searchpath
+Filename: "{app}\WinSCP.exe"; Parameters: "/ImportSitesIfAny"; \
+  StatusMsg: {cm:ImportSites}
 #ifdef Chrome
 Filename: "{tmp}\{#ChromeInstallerFile}"; \
   Parameters: "/r1:{#ChromeBrandCode1} /r2:{#ChromeBrandCode2} /b:1"; \
@@ -318,6 +318,8 @@ Source: "{#PuttySourceDir}\pageant.exe"; DestDir: "{app}\PuTTY"; \
   Components: pageant; Flags: ignoreversion
 Source: "{#PuttySourceDir}\puttygen.exe"; DestDir: "{app}\PuTTY"; \
   Components: puttygen; Flags: ignoreversion
+Source: "{#ExplorerFile}"; Flags: dontcopy
+Source: "{#CommanderFile}"; Flags: dontcopy
 #ifdef Donations
 Source: "{#PayPalCardImage}"; \
   Flags: dontcopy
@@ -575,6 +577,11 @@ begin
   WizardForm.ActiveControl := TLabel(Sender).FocusControl;
 end;
 
+procedure ImageClick(Sender: TObject);
+begin
+  WizardForm.ActiveControl := TWinControl(TControl(Sender).Tag);
+end;
+
 type
   TProcessTranslationEvent = procedure(Lang: string; FileName: string);
 
@@ -772,13 +779,13 @@ var
   InterfacePage: TWizardPage;
   SetupTypePage: TWizardPage;
   Caption: TLabel;
+  Image: TBitmapImage;
   HelpButton: TButton;
 #ifdef Donations
-  PayPalCardImagePath: string;
-  PayPalCardImage: TBitmapImage;
   P: Integer;
 #endif
   S: string;
+  I: Integer;
 #ifdef OpenCandy
   OpenCandyNewPageID: Integer;
 #endif
@@ -963,7 +970,7 @@ begin
   Caption.Parent := InterfacePage.Surface;
 
   CommanderRadioButton := TRadioButton.Create(InterfacePage);
-  CommanderRadioButton.Caption := ExpandConstant('{cm:NortonCommanderInterfaceB}');
+  CommanderRadioButton.Caption := ExpandConstant('{cm:NortonCommanderInterfaceC}');
   CommanderRadioButton.Checked := (UserInterface = 0);
   CommanderRadioButton.Left := ScaleX(4);
   CommanderRadioButton.Width := InterfacePage.SurfaceWidth -
@@ -971,22 +978,31 @@ begin
   CommanderRadioButton.Top := Caption.Top + Caption.Height + ScaleY(6);
   CommanderRadioButton.Parent := InterfacePage.Surface;
 
+  Image := TBitmapImage.Create(InterfacePage);
+  Image.Top := CommanderRadioButton.Top + CommanderRadioButton.Height + ScaleY(6);
+  Image.Left := CommanderRadioButton.Left + ScaleX(45);
+  Image.Parent := InterfacePage.Surface;
+  LoadEmbededBitmap(Image, '{#CommanderFile}');
+  Image.ReplaceColor := $FF00FF;
+  Image.ReplaceWithColor := InterfacePage.Surface.Color;
+  Image.OnClick := @ImageClick;
+  Image.Tag := Integer(CommanderRadioButton);
+
   Caption := TLabel.Create(InterfacePage);
   Caption.WordWrap := True;
   Caption.Caption :=
       ExpandConstant('{cm:NortonCommanderInterface1}') + NewLine +
       ExpandConstant('{cm:NortonCommanderInterface2}') + NewLine +
       ExpandConstant('{cm:NortonCommanderInterface3}');
-  Caption.Left := ScaleX(4) + ScaleX(20);
+  Caption.Left := CommanderRadioButton.Left + ScaleX(116);
   Caption.Width := InterfacePage.SurfaceWidth - Caption.Left;
-  Caption.Top := CommanderRadioButton.Top + CommanderRadioButton.Height +
-    ScaleY(6);
+  Caption.Top := CommanderRadioButton.Top;
   Caption.Parent := InterfacePage.Surface;
   Caption.FocusControl := CommanderRadioButton;
   Caption.OnClick := @CaptionClick;
 
   ExplorerRadioButton := TRadioButton.Create(InterfacePage);
-  ExplorerRadioButton.Caption := ExpandConstant('{cm:ExplorerInterfaceB}');
+  ExplorerRadioButton.Caption := ExpandConstant('{cm:ExplorerInterfaceC}');
   ExplorerRadioButton.Checked := (UserInterface <> 0);
   ExplorerRadioButton.Left := ScaleX(4);
   ExplorerRadioButton.Width := InterfacePage.SurfaceWidth -
@@ -994,24 +1010,39 @@ begin
   ExplorerRadioButton.Top := Caption.Top + Caption.Height + ScaleY(10);
   ExplorerRadioButton.Parent := InterfacePage.Surface;
 
+  Image := TBitmapImage.Create(InterfacePage);
+  Image.Top := ExplorerRadioButton.Top + ExplorerRadioButton.Height + ScaleY(6);
+  Image.Left := ExplorerRadioButton.Left + ScaleX(45);
+  Image.Parent := InterfacePage.Surface;
+  LoadEmbededBitmap(Image, '{#ExplorerFile}');
+  Image.ReplaceColor := $C020E0;
+  Image.ReplaceWithColor := InterfacePage.Surface.Color;
+  Image.OnClick := @ImageClick;
+  Image.Tag := Integer(ExplorerRadioButton);
+
+  I := CommanderRadioButton.Left + ScaleX(116);
   Caption := TLabel.Create(InterfacePage);
   Caption.WordWrap := True;
   Caption.Caption :=
       ExpandConstant('{cm:ExplorerInterface1}') + NewLine +
       ExpandConstant('{cm:ExplorerInterface2}') + NewLine +
       ExpandConstant('{cm:ExplorerInterface3}');
-  Caption.Left := ScaleX(4) + ScaleX(20);
+  Caption.Left := I;
   Caption.Width := InterfacePage.SurfaceWidth - Caption.Left;
-  Caption.Top := ExplorerRadioButton.Top + ExplorerRadioButton.Height +
-    ScaleY(6);
+  Caption.Top := ExplorerRadioButton.Top;
   Caption.Parent := InterfacePage.Surface;
   Caption.FocusControl := ExplorerRadioButton;
   Caption.OnClick := @CaptionClick;
 
+  if Caption.Top + Caption.Height > Image.Top + Image.Height then
+    I := Caption.Top + Caption.Height
+  else
+    I := Image.Top + Image.Height;
+
   AdditionalOptionsCaption := TLabel.Create(InterfacePage);
   AdditionalOptionsCaption.Caption := ExpandConstant('{cm:AdditionalOptions}');
   AdditionalOptionsCaption.Width := InterfacePage.SurfaceWidth;
-  AdditionalOptionsCaption.Top := Caption.Top + Caption.Height + ScaleY(10);
+  AdditionalOptionsCaption.Top := I + ScaleY(10);
   AdditionalOptionsCaption.Parent := InterfacePage.Surface;
 
   AdvancedTabsCheckbox := TCheckbox.Create(InterfacePage);
@@ -1081,21 +1112,17 @@ begin
   Caption.OnClick := @AboutDonationsLinkClick;
   LinkLabel(Caption);
 
-  PayPalCardImagePath := ExpandConstant('{tmp}\{#PayPalCardImage}');
-  ExtractTemporaryFile(ExtractFileName(PayPalCardImagePath));
-
-  PayPalCardImage := TBitmapImage.Create(DonationPanel);
-  PayPalCardImage.AutoSize := True;
-  PayPalCardImage.Bitmap.LoadFromFile(PayPalCardImagePath);
-  PayPalCardImage.Cursor := crHand;
-  PayPalCardImage.Parent := DonationPanel;
-  PayPalCardImage.Left := ScaleX(100);
-  PayPalCardImage.Top := P + ScaleX(8);
-  PayPalCardImage.ReplaceColor := $FCFE04;
-  PayPalCardImage.ReplaceWithColor := WizardForm.FinishedPage.Color;
-  PayPalCardImage.Hint := ExpandConstant('{cm:AboutDonations}');
-  PayPalCardImage.ShowHint := True;
-  PayPalCardImage.OnClick := @AboutDonationsLinkClick;
+  Image := TBitmapImage.Create(DonationPanel);
+  LoadEmbededBitmap(Image, '{#PayPalCardImage}');
+  Image.Cursor := crHand;
+  Image.Parent := DonationPanel;
+  Image.Left := ScaleX(100);
+  Image.Top := P + ScaleX(8);
+  Image.ReplaceColor := $FCFE04;
+  Image.ReplaceWithColor := WizardForm.FinishedPage.Color;
+  Image.Hint := ExpandConstant('{cm:AboutDonations}');
+  Image.ShowHint := True;
+  Image.OnClick := @AboutDonationsLinkClick;
 
 #endif
 
@@ -1356,6 +1383,7 @@ var
 begin
   if CurStep = ssPostInstall then
   begin
+    Log('Post install');
     if Length(MissingTranslations) > 0 then
     begin
       Log('Removing obsolete translations');
@@ -1363,11 +1391,16 @@ begin
         ExpandConstant('{cm:RemovingObsoleteTranslations}');
       ProcessMissingTranslations(@DeleteTranslation);
     end;
+    InstallationDone := True;
   end
     else
   if CurStep = ssDone then
   begin
-    if (not WizardSilent) and (not WillRestart) then
+    Log('Done');
+    // bug in InnoSetup causes it using ssDone even when
+    // setup failed because machine was not restarted to complete previous
+    // installation. double check that ssPostInstall was called
+    if (not WizardSilent) and (not WillRestart) and InstallationDone then
     begin
       OpenGettingStarted :=
         OpenGettingStartedCheckbox.Enabled and
@@ -1423,12 +1456,6 @@ begin
 #ifdef OpenCandy
   OpenCandyCurStepChanged(CurStep);
 #endif
-
-  if CurStep = ssDone then
-  begin
-    Log('Installation done');
-    InstallationDone := True;
-  end;
 end;
 
 function ShouldSkipPage(PageID: Integer): Boolean;
@@ -1479,8 +1506,8 @@ begin
 
   S := S + ExpandConstant('{cm:UserSettingsOverview}') + NewLine;
   S := S + Space;
-  if CommanderRadioButton.Checked then S2 := ExpandConstant('{cm:NortonCommanderInterfaceB}')
-    else S2 := ExpandConstant('{cm:ExplorerInterfaceB}');
+  if CommanderRadioButton.Checked then S2 := ExpandConstant('{cm:NortonCommanderInterfaceC}')
+    else S2 := ExpandConstant('{cm:ExplorerInterfaceC}');
   StringChange(S2, '&', '');
   S := S + S2;
   S := S + NewLine;

+ 9 - 0
dotnet/App.config

@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<configuration>
+	<startup useLegacyV2RuntimeActivationPolicy="true">
+		<supportedRuntime version="v2.0"/>
+		<supportedRuntime version="v3.0"/>
+		<supportedRuntime version="v3.5"/>
+		<supportedRuntime version="v4.0"/>
+	</startup>
+</configuration>

+ 45 - 0
dotnet/ChmodEventArgs.cs

@@ -0,0 +1,45 @@
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    [Guid("DFCA88E2-6A47-4290-AD66-A39C5682D610")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public sealed class ChmodEventArgs : FileOperationEventArgs
+    {
+        public FilePermissions FilePermissions { get; private set; }
+
+        internal const string Tag = "chmod";
+
+        private ChmodEventArgs()
+        {
+        }
+
+        internal static ChmodEventArgs Read(CustomLogReader areader)
+        {
+            ChmodEventArgs args = new ChmodEventArgs();
+
+            using (ElementLogReader reader = new ElementLogReader(areader))
+            {
+                while (reader.Read(0))
+                {
+                    string value;
+                    if (reader.GetEmptyElementValue("filename", out value))
+                    {
+                        args.FileName = value;
+                    }
+                    else if (reader.GetEmptyElementValue("permissions", out value))
+                    {
+                        args.FilePermissions = FilePermissions.CreateReadOnlyFromText(value);
+                    }
+                    else if (SessionRemoteException.IsResult(reader))
+                    {
+                        args.Error = SessionRemoteException.ReadResult(reader);
+                    }
+                }
+            }
+
+            return args;
+        }
+    }
+}

+ 17 - 0
dotnet/CommandExecutionResult.cs

@@ -0,0 +1,17 @@
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    [Guid("70C312F8-9A09-4D9B-B8EC-FB6ED753892B")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public sealed class CommandExecutionResult
+    {
+        public string Output { get; internal set; }
+        public string ErrorOutput { get; internal set; }
+        
+        internal CommandExecutionResult()
+        {
+        }
+    }
+}

+ 19 - 0
dotnet/FailedEventArgs.cs

@@ -0,0 +1,19 @@
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    [Guid("2C29B0BD-4F77-4743-A72A-B91F6D0EAD16")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public sealed class FailedEventArgs : OperationEventArgs
+    {
+        internal FailedEventArgs()
+        {
+        }
+
+        public override string ToString()
+        {
+            return (Error != null) ? Error.ToString() : "<no error>";
+        }
+    }
+}

+ 16 - 0
dotnet/FileOperationEventArgs.cs

@@ -0,0 +1,16 @@
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    [Guid("FF8D5772-2653-4C9B-870E-4C5EF8F55673")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public class FileOperationEventArgs : OperationEventArgs
+    {
+        public string FileName { get; internal set; }
+
+        internal FileOperationEventArgs()
+        {
+        }
+    }
+}

+ 269 - 0
dotnet/FilePermissions.cs

@@ -0,0 +1,269 @@
+using System;
+using System.Globalization;
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    [Guid("90A290B2-C8CE-4900-8C42-7736F9E435C6")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public sealed class FilePermissions
+    {
+        public int Numeric
+        {
+            get
+            {
+                return _numeric;
+            }
+
+            set
+            {
+                if (_readOnly)
+                {
+                    throw new InvalidOperationException("Cannot change read-only permissions");
+                }
+
+                if ((value < 0) || (value > 0xFFF))
+                {
+                    throw new ArgumentOutOfRangeException(string.Format(CultureInfo.CurrentCulture, "{0} is not valid numerical permissions", value));
+                }
+
+                _numeric = value;
+            }
+        }
+
+        public string Text
+        {
+            get
+            {
+                return NumericToText(Numeric);
+            }
+
+            set
+            {
+                Numeric = TextToNumeric(value);
+            }
+        }
+
+        public string Octal
+        {
+            get
+            {
+                string result = Convert.ToString(Numeric, 8);
+                return new string('0', Math.Max(3 - result.Length, 0)) + result;
+            }
+
+            set
+            {
+                if ((value == null) || ((value.Length != 3) && (value.Length != 4)))
+                {
+                    throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, "{0} is not valid octal permissions", value));
+                }
+
+                Numeric = Convert.ToInt16(value, 8);
+            }
+        }
+
+        public bool OtherExecute
+        {
+            get { return GetBit(0); }
+            set { SetBit(0, value); }
+        }
+
+        public bool OtherWrite
+        {
+            get { return GetBit(1); }
+            set { SetBit(1, value); }
+        }
+
+        public bool OtherRead
+        {
+            get { return GetBit(2); }
+            set { SetBit(2, value); }
+        }
+
+        public bool GroupExecute
+        {
+            get { return GetBit(3); }
+            set { SetBit(3, value); }
+        }
+
+        public bool GroupWrite
+        {
+            get { return GetBit(4); }
+            set { SetBit(4, value); }
+        }
+
+        public bool GroupRead
+        {
+            get { return GetBit(5); }
+            set { SetBit(5, value); }
+        }
+
+        public bool UserExecute
+        {
+            get { return GetBit(6); }
+            set { SetBit(6, value); }
+        }
+
+        public bool UserWrite
+        {
+            get { return GetBit(7); }
+            set { SetBit(7, value); }
+        }
+
+        public bool UserRead
+        {
+            get { return GetBit(8); }
+            set { SetBit(8, value); }
+        }
+
+        public bool Sticky
+        {
+            get { return GetBit(9); }
+            set { SetBit(9, value); }
+        }
+
+        public bool SetGid
+        {
+            get { return GetBit(10); }
+            set { SetBit(10, value); }
+        }
+
+        public bool SetUid
+        {
+            get { return GetBit(11); }
+            set { SetBit(11, value); }
+        }
+
+        public FilePermissions() :
+            this(0)
+        {
+        }
+
+        public FilePermissions(int numeric)
+        {
+            Numeric = numeric;
+        }
+
+        public override string ToString()
+        {
+            return Text;
+        }
+
+        private const string BasicSymbols = "rwxrwxrwx";
+        private const string CombinedSymbols = "--s--s--t";
+        private const string ExtendedSymbols = "--S--S--T";
+        private const char UnsetSymbol = '-';
+
+        internal static FilePermissions CreateReadOnlyFromText(string text)
+        {
+            FilePermissions result = new FilePermissions();
+            result.Numeric = TextToNumeric(text);
+            result._readOnly = true;
+            return result;
+        }
+
+        internal static int TextToNumeric(string text)
+        {
+            if (text.Length != BasicSymbols.Length)
+            {
+                throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, "{0} is not valid permissions string", text));
+            }
+
+            int result = 0;
+            int flag = 1;
+            int extendedFlag = 0x200;
+            for (int i = text.Length - 1; i >= 0; i--)
+            {
+                if (text[i] == UnsetSymbol)
+                {
+                    // noop
+                }
+                else if (text[i] == CombinedSymbols[i])
+                {
+                    result |= flag | extendedFlag;
+                }
+                else if (text[i] == ExtendedSymbols[i])
+                {
+                    result |= extendedFlag;
+                }
+                else
+                {
+                    result |= flag;
+                }
+
+                flag <<= 1;
+                if (i % 3 == 0)
+                {
+                    extendedFlag <<= 1;
+                }
+            }
+
+            return result;
+        }
+
+        private static string NumericToText(int numeric)
+        {
+            char[] buf = new char[BasicSymbols.Length];
+
+            int flag = 1;
+            int extendedFlag = 0x200;
+            bool extendedPos = true;
+            int i = BasicSymbols.Length - 1;
+            while (i >= 0)
+            {
+                char symbol;
+                if (extendedPos &&
+                    ((numeric & (flag | extendedFlag)) == (flag | extendedFlag)))
+                {
+                    symbol = CombinedSymbols[i];
+                }
+                else if ((numeric & flag) != 0)
+                {
+                    symbol = BasicSymbols[i];
+                }
+                else if (extendedPos && ((numeric & extendedFlag) != 0))
+                {
+                    symbol = ExtendedSymbols[i];
+                }
+                else
+                {
+                    symbol = UnsetSymbol;
+                }
+                
+                buf[i] = symbol;
+
+                flag <<= 1;
+                i--;
+                extendedPos = ((i % 3) == 2);
+                if (extendedPos)
+                {
+                    extendedFlag <<= 1;
+                }
+            }
+
+            return new string(buf);
+        }
+
+        private bool GetBit(int bit)
+        {
+            return (Numeric & (1 << bit)) != 0;
+        }
+
+        private void SetBit(int bit, bool value)
+        {
+            if (value)
+            {
+                Numeric |= (1 << bit);
+            }
+            else
+            {
+                Numeric &= ~(1 << bit);
+            }
+        }
+
+        private int _numeric;
+        private bool _readOnly;
+    }
+}

+ 26 - 0
dotnet/FileTransferProgressEventArgs.cs

@@ -0,0 +1,26 @@
+using System;
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    public enum ProgressOperation { Transfer };
+    public enum ProgressSide { Local, Remote };
+
+    [Guid("E421924E-87F0-433E-AF38-CE034DC8E8CB")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public sealed class FileTransferProgressEventArgs : EventArgs
+    {
+        public ProgressOperation Operation { get; internal set; }
+        public ProgressSide Side { get; internal set; }
+        public string FileName { get; internal set; }
+        public string Directory { get; internal set; }
+        public double OverallProgress { get; internal set; }
+        public double FileProgress { get; internal set; }
+        public int CPS { get; internal set; }
+
+        internal FileTransferProgressEventArgs()
+        {
+        }
+    }
+}

+ 141 - 0
dotnet/GlobalSuppressions.cs

@@ -0,0 +1,141 @@
+// This file is used by Code Analysis to maintain SuppressMessage 
+// attributes that are applied to this project.
+// Project-level suppressions either have no target or are given 
+// a specific target and scoped to a namespace, type, member, etc.
+//
+// To add a suppression to this file, right-click the message in the 
+// Error List, point to "Suppress Message(s)", and click 
+// "In Project Suppression File".
+// You do not need to add suppressions to this file manually.
+
+using System.Diagnostics.CodeAnalysis;
+
+[assembly: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "WinSCP.SessionException")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "WinSCP.SessionLocalException")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "WinSCP.SessionRemoteException")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "WinSCP.ElementLogReader.#Dispose()")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "WinSCP.Session.#Cleanup()")]
+[assembly: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "WinSCP.SynchronizationCriteria")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Session.#Cleanup()")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Session.#Open(WinSCP.SessionOptions)")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Session.#WriteCommand(System.String)")]
+[assembly: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "SCP")]
+[assembly: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "SCP", Scope = "namespace", Target = "WinSCP")]
+[assembly: SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Scope = "member", Target = "WinSCP.Session.#Open(WinSCP.SessionOptions)")]
+[assembly: SuppressMessage("Microsoft.Usage", "CA2237:MarkISerializableTypesWithSerializable", Scope = "type", Target = "WinSCP.SessionLocalException")]
+[assembly: SuppressMessage("Microsoft.Usage", "CA2237:MarkISerializableTypesWithSerializable", Scope = "type", Target = "WinSCP.SessionRemoteException")]
+[assembly: SuppressMessage("Microsoft.Usage", "CA2237:MarkISerializableTypesWithSerializable", Scope = "type", Target = "WinSCP.SessionException")]
+[assembly: SuppressMessage("Microsoft.Design", "CA2210:AssembliesShouldHaveValidStrongNames")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.ChmodEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.CommandExecutionResult")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.FailedEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.FileOperationEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.FilePermissions")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.OperationEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.OperationResultBase")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.RemoteFileInfo")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.RemovalEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.RemovalOperationResult")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.Session")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.SessionException")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.SessionLocalException")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.SessionOptions")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.SessionRemoteException")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.SynchronizationResult")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.TouchEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.TransferEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.TransferOperationResult")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.TransferOptions")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.ChmodEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.CommandExecutionResult")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.FailedEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.FileOperationEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.OperationEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.OperationResultBase")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.RemoteFileInfo")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.RemovalEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.RemovalOperationResult")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.SessionException")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.SessionLocalException")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.SessionRemoteException")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.SynchronizationResult")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.TouchEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.TransferEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.TransferOperationResult")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1003:UseGenericEventHandlerInstances", Scope = "type", Target = "WinSCP.FailedEventHandler")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1003:UseGenericEventHandlerInstances", Scope = "type", Target = "WinSCP.FileTransferredEventHandler")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.RemoteDirectoryInfo")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.RemoteDirectoryInfo")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.RemoteFileInfoCollection")]
+[assembly: SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "index", Scope = "member", Target = "WinSCP.ReadOnlyInteropCollectionHelper`1.#Item[System.Int32]")]
+[assembly: SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "value", Scope = "member", Target = "WinSCP.ReadOnlyInteropCollectionHelper`1.#Item[System.Int32]")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.RemovalEventArgsCollection")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.SessionRemoteExceptionCollection")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.StringCollection")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.TransferEventArgsCollection")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Session.#CheckVersion(System.String,System.Diagnostics.FileVersionInfo,System.String)")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Session.#CheckVersions(System.String)")]
+[assembly: SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope = "member", Target = "WinSCP.Logger.#WriteLine(System.String)")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Logger.#WriteEnvironmentInfo()")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ConsoleSessionProcess.#.ctor(System.String,System.String)")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1003:UseGenericEventHandlerInstances", Scope = "type", Target = "WinSCP.OutputDataReceivedEventHandler")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ExeSessionProcess.#.ctor(WinSCP.Session,System.String,System.String)")]
+[assembly: SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Scope = "member", Target = "WinSCP.ExeSessionProcess.#CreateEvent(System.String)")]
+[assembly: SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources", Scope = "member", Target = "WinSCP.ConsoleCommStruct.#_ptr")]
+[assembly: SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Scope = "member", Target = "WinSCP.ExeSessionProcess.#InitializeConsole()")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ExeSessionProcess.#InitializeChild()")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ExeSessionProcess.#InitializeConsole()")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ExeSessionProcess.#HasExited")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ExeSessionProcess.#ExitCode")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ExeSessionProcess.#Dispose()")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ExeSessionProcess.#Close()")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ConsoleCommStruct.#Size")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ConsoleCommStruct.#.ctor(WinSCP.Session,Microsoft.Win32.SafeHandles.SafeFileHandle)")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Session.#CheckVersion(System.String,System.Diagnostics.FileVersionInfo)")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "WinSCP.SECURITY_ATTRIBUTES.#lpSecurityDescriptor")]
+[assembly: SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources", Scope = "member", Target = "WinSCP.Job.#_handle")]
+[assembly: SuppressMessage("Microsoft.Usage", "CA1806:DoNotIgnoreMethodResults", MessageId = "WinSCP.UnsafeNativeMethods.CloseHandle(System.IntPtr)", Scope = "member", Target = "WinSCP.Job.#Close()")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Job.#.ctor()")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.OutputDataReceivedEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.OutputDataReceivedEventArgs")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ExeSessionProcess.#CheckVersion(System.String,System.Diagnostics.FileVersionInfo)")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ExeSessionProcess.#.ctor(WinSCP.Session)")]
+[assembly: SuppressMessage("Microsoft.Maintainability", "CA1506:AvoidExcessiveClassCoupling", Scope = "type", Target = "WinSCP.Session")]
+[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "WinSCP.Session.#System.Reflection.IReflect.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[])")]
+[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "WinSCP.ExeSessionProcess.#CheckVersion(System.String,System.Diagnostics.FileVersionInfo)")]
+[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "WinSCP.Session.#Cleanup()")]
+[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "WinSCP.Logger.#Dispose()")]
+[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "WinSCP.SessionLogReader.#OpenLog()")]
+[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "WinSCP.ExeSessionProcess.#Close()")]
+[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "WinSCP.SessionLogReader.#LogContents()")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "WinSCP.SessionLogReader.#LogContents()")]
+[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "WinSCP.ElementLogReader.#Dispose()")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "WinSCP.Logger.#.ctor()")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "WinSCP.Logger.#Dispose()")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ExeSessionProcess.#Abort()")]
+[assembly: SuppressMessage("Microsoft.Usage", "CA2201:DoNotRaiseReservedExceptionTypes", Scope = "member", Target = "WinSCP.Logger.#GetAssemblyFilePath()")]
+[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "WinSCP.ExeSessionProcess.#AbortedOrExited()")]
+[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "WinSCP.SessionLogReader.#DoRead()")]
+[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "WinSCP.SessionLogReader.#Cleanup()")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Session.#GetTempPath()")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Session.#SetupTempPath()")]
+[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "WinSCP.Logger.#GetAssemblyFilePath()")]
+[assembly: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "CPS", Scope = "member", Target = "WinSCP.FileTransferProgressEventArgs.#CPS")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.FileTransferProgressEventArgs")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1003:UseGenericEventHandlerInstances", Scope = "type", Target = "WinSCP.FileTransferProgressEventHandler")]
+[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "WinSCP.UnsafeNativeMethods.#CreateFileMapping(Microsoft.Win32.SafeHandles.SafeFileHandle,System.IntPtr,System.Int32,System.Int32,System.Int32,System.String)", Justification = "Warning is bogus.")]
+[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "WinSCP.UnsafeNativeMethods.#MapViewOfFile(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Int32,System.UInt32,System.UInt32,System.UIntPtr)", Justification = "Warning is bogus.")]
+[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "WinSCP.UnsafeNativeMethods.#UnmapViewOfFile(System.IntPtr)", Justification = "Warning is bogus.")]
+[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "WinSCP.UnsafeNativeMethods.#CloseHandle(System.IntPtr)", Justification = "Warning is bogus.")]
+[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "WinSCP.UnsafeNativeMethods.#CreateJobObject(System.IntPtr,System.String)", Justification = "Warning is bogus.")]
+[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "WinSCP.UnsafeNativeMethods.#SetInformationJobObject(System.IntPtr,WinSCP.JobObjectInfoType,System.IntPtr,System.UInt32)", Justification = "Warning is bogus.")]
+[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "WinSCP.UnsafeNativeMethods.#AssignProcessToJobObject(System.IntPtr,System.IntPtr)", Justification = "Warning is bogus.")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.TransferResumeSupport")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "WinSCP.Logger.#CreateCounters()")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "WinSCP.Logger.#WriteCounters()")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Logger.#WriteProcesses()")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "WinSCP.Logger.#WriteProcesses()")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Logger.#GetProcessStartTime(System.Diagnostics.Process)")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "WinSCP.Logger.#GetProcessStartTime(System.Diagnostics.Process)")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Logger.#GetTotalProcessorTime(System.Diagnostics.Process)")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "WinSCP.Logger.#GetTotalProcessorTime(System.Diagnostics.Process)")]

+ 17 - 0
dotnet/OperationEventArgs.cs

@@ -0,0 +1,17 @@
+using System;
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    [Guid("4D79C4F7-0FE2-428D-9908-AB2D38E96C53")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public class OperationEventArgs : EventArgs
+    {
+        public SessionRemoteException Error { get; internal set; }
+
+        internal OperationEventArgs()
+        {
+        }
+    }
+}

+ 32 - 0
dotnet/OperationResultBase.cs

@@ -0,0 +1,32 @@
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    [Guid("B4CC583A-B64E-4797-9967-0FCB2F07C977")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public class OperationResultBase
+    {
+        public SessionRemoteExceptionCollection Failures { get; private set; }
+
+        public bool IsSuccess { get { return (Failures.Count == 0); } }
+
+        internal OperationResultBase()
+        {
+            Failures = new SessionRemoteExceptionCollection();
+        }
+
+        public void Check()
+        {
+            if (!IsSuccess)
+            {
+                throw Failures[0];
+            }
+        }
+
+        internal void AddFailure(SessionRemoteException failure)
+        {
+            Failures.InternalAdd(failure);
+        }
+    }
+}

+ 23 - 0
dotnet/OutputDataReceivedEventArgs.cs

@@ -0,0 +1,23 @@
+using System;
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    [Guid("42861F26-1ECA-43BA-8A43-ADF3291D8C81")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public sealed class OutputDataReceivedEventArgs : EventArgs
+    {
+        public string Data { get; private set; }
+
+        internal OutputDataReceivedEventArgs(string data)
+        {
+            Data = data;
+        }
+
+        public override string ToString()
+        {
+            return Data;
+        }
+    }
+}

+ 22 - 0
dotnet/RemoteDirectoryInfo.cs

@@ -0,0 +1,22 @@
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    [Guid("FBE2FACF-F1D5-493D-9E41-4B9B7243A676")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public sealed class RemoteDirectoryInfo
+    {
+        public RemoteFileInfoCollection Files { get; private set; }
+
+        internal RemoteDirectoryInfo()
+        {
+            Files = new RemoteFileInfoCollection();
+        }
+
+        internal void AddFile(RemoteFileInfo file)
+        {
+            Files.InternalAdd(file);
+        }
+    }
+}

+ 29 - 0
dotnet/RemoteFileInfo.cs

@@ -0,0 +1,29 @@
+using System;
+using System.Globalization;
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    [Guid("17FF9C92-B8B6-4506-A7BA-8482D9B0AB07")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public sealed class RemoteFileInfo
+    {
+        public string Name { get; internal set; }
+        public char FileType { get; internal set; }
+        public long Length { get; internal set; }
+        public DateTime LastWriteTime { get; internal set; }
+        public FilePermissions FilePermissions { get; internal set; }
+
+        public bool IsDirectory { get { return (Char.ToUpper(FileType, CultureInfo.InvariantCulture) == 'D'); } }
+
+        internal RemoteFileInfo()
+        {
+        }
+
+        public override string ToString()
+        {
+            return Name;
+        }
+    }
+}

+ 39 - 0
dotnet/RemovalEventArgs.cs

@@ -0,0 +1,39 @@
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    [Guid("62FB0733-C24F-4DC2-8452-560148931927")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public sealed class RemovalEventArgs : FileOperationEventArgs
+    {
+        internal const string Tag = "rm";
+
+        private RemovalEventArgs()
+        {
+        }
+
+        internal static RemovalEventArgs Read(CustomLogReader areader)
+        {
+            RemovalEventArgs args = new RemovalEventArgs();
+
+            using (ElementLogReader reader = new ElementLogReader(areader))
+            {
+                while (reader.Read(0))
+                {
+                    string value;
+                    if (reader.GetEmptyElementValue("filename", out value))
+                    {
+                        args.FileName = value;
+                    }
+                    else if (SessionRemoteException.IsResult(reader))
+                    {
+                        args.Error = SessionRemoteException.ReadResult(reader);
+                    }
+                }
+            }
+
+            return args;
+        }
+    }
+}

+ 22 - 0
dotnet/RemovalOperationResult.cs

@@ -0,0 +1,22 @@
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    [Guid("3BCB18EC-6D98-4BFB-A9C2-893CBD13CDAB")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public sealed class RemovalOperationResult : OperationResultBase
+    {
+        public RemovalEventArgsCollection Removals { get; private set; }
+
+        internal RemovalOperationResult()
+        {
+            Removals = new RemovalEventArgsCollection();
+        }
+
+        internal void AddRemoval(RemovalEventArgs operation)
+        {
+            Removals.InternalAdd(operation);
+        }
+    }
+}

+ 1472 - 0
dotnet/Session.cs

@@ -0,0 +1,1472 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Reflection;
+using System.Globalization;
+using System.Runtime.InteropServices;
+using System.Threading;
+using System.Xml;
+using Microsoft.Win32;
+using System.Diagnostics;
+
+namespace WinSCP
+{
+    [Guid("38649D44-B839-4F2C-A9DC-5D45EEA4B5E9")]
+    [ComVisible(true)]
+    public enum SynchronizationMode
+    {
+        Local = 0,
+        Remote = 1,
+        Both = 2,
+    };
+
+    [Guid("3F770EC1-35F5-4A7B-A000-46A2F7A213D8")]
+    [ComVisible(true)]
+    [Flags]
+    public enum SynchronizationCriteria
+    {
+        None = 0x00,
+        Time = 0x01,
+        Size = 0x02,
+        Either = Time | Size,
+    };
+
+    public delegate void OutputDataReceivedEventHandler(object sender, OutputDataReceivedEventArgs e);
+    public delegate void FileTransferredEventHandler(object sender, TransferEventArgs e);
+    public delegate void FileTransferProgressEventHandler(object sender, FileTransferProgressEventArgs e);
+    public delegate void FailedEventHandler(object sender, FailedEventArgs e);
+
+    [Guid("56FFC5CE-3867-4EF0-A3B5-CFFBEB99EA35")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    [ComSourceInterfaces(typeof(ISessionEvents))]
+    public sealed class Session : IDisposable, IReflect
+    {
+        public string ExecutablePath { get { return _executablePath; } set { CheckNotOpened(); _executablePath = value; } }
+        public string AdditionalExecutableArguments { get { return _additionalExecutableArguments; } set { CheckNotOpened(); _additionalExecutableArguments = value; } }
+        public bool DefaultConfiguration { get { return _defaultConfiguration; } set { CheckNotOpened(); _defaultConfiguration = value; } }
+        public bool DisableVersionCheck { get { return _disableVersionCheck; } set { CheckNotOpened(); _disableVersionCheck = value; } }
+        public string IniFilePath { get { return _iniFilePath; } set { CheckNotOpened(); _iniFilePath = value; } }
+        public TimeSpan ReconnectTime { get { return _reconnectTime; } set { CheckNotOpened(); _reconnectTime = value; } }
+        public string DebugLogPath { get { CheckNotDisposed(); return Logger.LogPath; } set { CheckNotDisposed(); Logger.LogPath = value; } }
+        public string SessionLogPath { get { return _sessionLogPath; } set { CheckNotOpened(); _sessionLogPath = value; } }
+        public string XmlLogPath { get { return _xmlLogPath; } set { CheckNotOpened(); _xmlLogPath = value; } }
+
+        public TimeSpan Timeout { get; set; }
+
+        public StringCollection Output { get; private set; }
+        public bool Opened { get { CheckNotDisposed(); return (_process != null); } }
+
+        public event FileTransferredEventHandler FileTransferred;
+        public event FailedEventHandler Failed;
+        public event OutputDataReceivedEventHandler OutputDataReceived;
+
+        public event FileTransferProgressEventHandler FileTransferProgress
+        {
+            add
+            {
+                using (Logger.CreateCallstackAndLock())
+                {
+                    CheckNotOpened();
+                    _fileTransferProgress += value;
+                }
+            }
+
+            remove
+            {
+                using (Logger.CreateCallstackAndLock())
+                {
+                    CheckNotOpened();
+                    _fileTransferProgress -= value;
+                }
+            }
+        }
+
+        public Session()
+        {
+            Logger = new Logger();
+
+            using (Logger.CreateCallstackAndLock())
+            {
+                Timeout = new TimeSpan(0, 1, 0);
+                _reconnectTime = TimeSpan.MaxValue;
+                Output = new StringCollection();
+                _operationResults = new List<OperationResultBase>();
+                _events = new List<Action>();
+                _eventsEvent = new AutoResetEvent(false);
+                _disposed = false;
+                _defaultConfiguration = true;
+                _logUnique = 0;
+            }
+        }
+
+        ~Session()
+        {
+            using (Logger.CreateCallstack())
+            {
+                DoDispose();
+            }
+        }
+
+        public void Dispose()
+        {
+            using (Logger.CreateCallstackAndLock())
+            {
+                DoDispose();
+                GC.SuppressFinalize(this);
+            }
+        }
+
+        public void Abort()
+        {
+            using (Logger.CreateCallstack())
+            {
+                CheckOpened();
+
+                _aborted = true;
+
+                // double-check
+                if (_process != null)
+                {
+                    _process.Abort();
+                }
+            }
+        }
+
+        public void Open(SessionOptions sessionOptions)
+        {
+            using (Logger.CreateCallstackAndLock())
+            {
+                CheckNotDisposed();
+
+                if (Opened)
+                {
+                    throw new InvalidOperationException("Session is already opened");
+                }
+
+                try
+                {
+                    SetupTempPath();
+
+                    _process = new ExeSessionProcess(this);
+
+                    _process.OutputDataReceived += ProcessOutputDataReceived;
+
+                    _process.Start();
+
+                    GotOutput();
+
+                    // setup batch mode
+                    WriteCommand("option batch on");
+                    WriteCommand("option confirm off");
+
+                    if (ReconnectTime != TimeSpan.MaxValue)
+                    {
+                        WriteCommand(string.Format(CultureInfo.InvariantCulture, "option reconnecttime {0}", (int)ReconnectTime.TotalSeconds));
+                    }
+
+                    WriteCommand("open " + SessionOptionsToOpenArguments(sessionOptions));
+
+                    // Wait until the log file gets created or WinSCP terminates (in case of fatal error)
+                    do
+                    {
+                        if (_process.HasExited && !File.Exists(XmlLogPath))
+                        {
+                            string[] output = new string[Output.Count];
+                            Output.CopyTo(output, 0);
+                            Logger.WriteCounters();
+                            Logger.WriteProcesses();
+                            _process.WriteStatus();
+                            throw new SessionLocalException(this,
+                                string.Format(CultureInfo.CurrentCulture,
+                                    "WinSCP process terminated with exit code {0} and output \"{1}\", without creating a log file.",
+                                    _process.ExitCode, string.Join(Environment.NewLine, output)));
+                        }
+
+                        Thread.Sleep(50);
+
+                        CheckForTimeout(
+                            string.Format(CultureInfo.CurrentCulture,
+                                "Log file {0} was not created in time, please make sure WinSCP has write permissions to the folder",
+                                XmlLogPath));
+
+                    } while (!File.Exists(XmlLogPath));
+
+                    _logReader = new SessionLogReader(this);
+
+                    _reader = _logReader.WaitForNonEmptyElementAndCreateLogReader("session", LogReadFlags.ThrowFailures);
+
+                    using (ElementLogReader groupReader = _reader.WaitForGroupAndCreateLogReader())
+                    {
+                        ReadElement(groupReader, LogReadFlags.ThrowFailures);
+                    }
+                }
+                catch(Exception e)
+                {
+                    Logger.WriteLine("Exception: {0}", e);
+                    Cleanup();
+                    throw;
+                }
+            }
+        }
+
+        public RemoteDirectoryInfo ListDirectory(string path)
+        {
+            using (Logger.CreateCallstackAndLock())
+            {
+                CheckOpened();
+
+                WriteCommand(string.Format(CultureInfo.InvariantCulture, "ls -- \"{0}\"", ArgumentEscape(IncludeTrailingSlash(path))));
+
+                RemoteDirectoryInfo result = new RemoteDirectoryInfo();
+
+                using (ElementLogReader groupReader = _reader.WaitForGroupAndCreateLogReader())
+                using (ElementLogReader lsReader = groupReader.WaitForNonEmptyElementAndCreateLogReader("ls", LogReadFlags.ThrowFailures))
+                {
+                    if (lsReader.TryWaitForNonEmptyElement("files", 0))
+                    {
+                        using (ElementLogReader filesReader = lsReader.CreateLogReader())
+                        {
+                            while (filesReader.TryWaitForNonEmptyElement("file", 0))
+                            {
+                                RemoteFileInfo fileInfo = new RemoteFileInfo();
+
+                                using (ElementLogReader fileReader = filesReader.CreateLogReader())
+                                {
+                                    while (fileReader.Read(0))
+                                    {
+                                        string value;
+                                        if (fileReader.GetEmptyElementValue("filename", out value))
+                                        {
+                                            fileInfo.Name = value;
+                                        }
+                                        else
+                                        {
+                                            ReadFile(fileInfo, fileReader);
+                                        }
+                                    }
+
+                                    result.AddFile(fileInfo);
+                                }
+                            }
+                        }
+
+                        groupReader.ReadToEnd(LogReadFlags.ThrowFailures);
+                    }
+                    else
+                    {
+                        // "files" not found, keep reading, we expect "failure"
+                        groupReader.ReadToEnd(LogReadFlags.ThrowFailures);
+                        // only if not "failure", throw "files" not found
+                        throw SessionLocalException.CreateElementNotFound(this, "files");
+                    }
+                }
+
+                return result;
+            }
+        }
+
+        public TransferOperationResult PutFiles(string localPath, string remotePath, bool remove = false, TransferOptions options = null)
+        {
+            using (Logger.CreateCallstackAndLock())
+            {
+                if (options == null)
+                {
+                    options = new TransferOptions();
+                }
+
+                CheckOpened();
+
+                WriteCommand(
+                    string.Format(CultureInfo.InvariantCulture,
+                        "put {0} {1} -- \"{2}\" \"{3}\"",
+                        BooleanSwitch(remove, "delete"), options.ToSwitches(),
+                        ArgumentEscape(localPath), ArgumentEscape(remotePath)));
+
+                TransferOperationResult result = new TransferOperationResult();
+
+                using (ElementLogReader groupReader = _reader.WaitForGroupAndCreateLogReader())
+                using (RegisterOperationResult(result))
+                using (CreateProgressHandler())
+                {
+                    TransferEventArgs args = null;
+
+                    while (groupReader.Read(0))
+                    {
+                        if (groupReader.IsNonEmptyElement(TransferEventArgs.UploadTag))
+                        {
+                            if (args != null)
+                            {
+                                result.AddTransfer(args);
+                                RaiseFileTransferredEvent(args);
+                            }
+                            args = TransferEventArgs.Read(groupReader);
+                        }
+                        else if (groupReader.IsNonEmptyElement(ChmodEventArgs.Tag))
+                        {
+                            if (args == null)
+                            {
+                                throw new InvalidOperationException();
+                            }
+                            args.Chmod = ChmodEventArgs.Read(groupReader);
+                        }
+                        else if (groupReader.IsNonEmptyElement(TouchEventArgs.Tag))
+                        {
+                            if (args == null)
+                            {
+                                throw new InvalidOperationException();
+                            }
+                            args.Touch = TouchEventArgs.Read(groupReader);
+                        }
+                    }
+
+                    if (args != null)
+                    {
+                        result.AddTransfer(args);
+                        RaiseFileTransferredEvent(args);
+                    }
+                }
+
+                return result;
+            }
+        }
+
+        public TransferOperationResult GetFiles(string remotePath, string localPath, bool remove = false, TransferOptions options = null)
+        {
+            using (Logger.CreateCallstackAndLock())
+            {
+                if (options == null)
+                {
+                    options = new TransferOptions();
+                }
+
+                CheckOpened();
+
+                WriteCommand(
+                    string.Format(CultureInfo.InvariantCulture, "get {0} {1} -- \"{2}\" \"{3}\"",
+                        BooleanSwitch(remove, "delete"), options.ToSwitches(),
+                        ArgumentEscape(remotePath), ArgumentEscape(localPath)));
+
+                TransferOperationResult result = new TransferOperationResult();
+
+                using (ElementLogReader groupReader = _reader.WaitForGroupAndCreateLogReader())
+                using (RegisterOperationResult(result))
+                using (CreateProgressHandler())
+                {
+                    TransferEventArgs args = null;
+
+                    while (groupReader.Read(0))
+                    {
+                        if (groupReader.IsNonEmptyElement(TransferEventArgs.DownloadTag))
+                        {
+                            if (args != null)
+                            {
+                                result.AddTransfer(args);
+                                RaiseFileTransferredEvent(args);
+                            }
+                            args = TransferEventArgs.Read(groupReader);
+                        }
+                        else if (groupReader.IsNonEmptyElement(RemovalEventArgs.Tag))
+                        {
+                            if (args == null)
+                            {
+                                throw new InvalidOperationException();
+                            }
+                            args.Removal = RemovalEventArgs.Read(groupReader);
+                        }
+                    }
+
+                    if (args != null)
+                    {
+                        result.AddTransfer(args);
+                        RaiseFileTransferredEvent(args);
+                    }
+                }
+
+                return result;
+            }
+        }
+
+        public RemovalOperationResult RemoveFiles(string path)
+        {
+            using (Logger.CreateCallstackAndLock())
+            {
+                CheckOpened();
+
+                WriteCommand(string.Format(CultureInfo.InvariantCulture, "rm -- \"{0}\"", ArgumentEscape(path)));
+
+                RemovalOperationResult result = new RemovalOperationResult();
+
+                using (ElementLogReader groupReader = _reader.WaitForGroupAndCreateLogReader())
+                using (RegisterOperationResult(result))
+                {
+                    while (groupReader.Read(0))
+                    {
+                        if (groupReader.IsNonEmptyElement(RemovalEventArgs.Tag))
+                        {
+                            result.AddRemoval(RemovalEventArgs.Read(groupReader));
+                        }
+                    }
+                }
+
+                return result;
+            }
+        }
+
+        public SynchronizationResult SynchronizeDirectories(
+            SynchronizationMode mode, string localPath, string remotePath,
+            bool removeFiles, bool mirror = false, SynchronizationCriteria criteria = SynchronizationCriteria.Time,
+            TransferOptions options = null)
+        {
+            using (Logger.CreateCallstackAndLock())
+            {
+                if (options == null)
+                {
+                    options = new TransferOptions();
+                }
+
+                CheckOpened();
+
+                if (removeFiles && (mode == SynchronizationMode.Both))
+                {
+                    throw new ArgumentException("Cannot delete files in synchronization mode Both");
+                }
+
+                if (mirror && (mode == SynchronizationMode.Both))
+                {
+                    throw new ArgumentException("Cannot mirror files in synchronization mode Both");
+                }
+
+                if ((criteria != SynchronizationCriteria.Time) && (mode == SynchronizationMode.Both))
+                {
+                    throw new ArgumentException("Only Time criteria is allowed in synchronization mode Both");
+                }
+
+                string modeName;
+                switch (mode)
+                {
+                    case SynchronizationMode.Local:
+                        modeName = "local";
+                        break;
+                    case SynchronizationMode.Remote:
+                        modeName = "remote";
+                        break;
+                    case SynchronizationMode.Both:
+                        modeName = "both";
+                        break;
+                    default:
+                        throw new ArgumentOutOfRangeException("mode");
+                }
+
+                List<string> criteriaNames = new List<string>();
+                if ((criteria & SynchronizationCriteria.Time) == SynchronizationCriteria.Time)
+                {
+                    criteria -= SynchronizationCriteria.Time;
+                    criteriaNames.Add("time");
+                }
+
+                if ((criteria & SynchronizationCriteria.Size) == SynchronizationCriteria.Size)
+                {
+                    criteria -= SynchronizationCriteria.Size;
+                    criteriaNames.Add("size");
+                }
+
+                if (criteria != 0)
+                {
+                    throw new ArgumentOutOfRangeException("criteria");
+                }
+
+                WriteCommand(
+                    string.Format(CultureInfo.InvariantCulture,
+                        "synchronize {0} {1} {2} {3} {4} -- \"{5}\" \"{6}\"",
+                        modeName,
+                        BooleanSwitch(removeFiles, "delete"),
+                        BooleanSwitch(mirror, "mirror"),
+                        options.ToSwitches(),
+                        FormatSwitch("criteria", string.Join(",", criteriaNames.ToArray())),
+                        ArgumentEscape(localPath), ArgumentEscape(remotePath)));
+
+                return ReadSynchronizeDirectories();
+            }
+        }
+
+        private SynchronizationResult ReadSynchronizeDirectories()
+        {
+            using (Logger.CreateCallstack())
+            {
+                SynchronizationResult result = new SynchronizationResult();
+
+                using (ElementLogReader groupReader = _reader.WaitForGroupAndCreateLogReader())
+                using (RegisterOperationResult(result))
+                using (CreateProgressHandler())
+                {
+                    bool transferIsUpload = false;
+                    TransferEventArgs transfer = null;
+
+                    while (groupReader.Read(0))
+                    {
+                        bool transferWillBeUpload;
+                        if ((transferWillBeUpload = groupReader.IsNonEmptyElement(TransferEventArgs.UploadTag)) ||
+                            groupReader.IsNonEmptyElement(TransferEventArgs.DownloadTag))
+                        {
+                            if (transfer != null)
+                            {
+                                AddSynchronizationTransfer(result, transferIsUpload, transfer);
+                            }
+                            transfer = TransferEventArgs.Read(groupReader);
+                            transferIsUpload = transferWillBeUpload;
+                        }
+                        else if (groupReader.IsNonEmptyElement(RemovalEventArgs.Tag))
+                        {
+                            result.AddRemoval(RemovalEventArgs.Read(groupReader));
+                        }
+                        else if (groupReader.IsNonEmptyElement(ChmodEventArgs.Tag))
+                        {
+                            if (transfer == null)
+                            {
+                                throw new InvalidOperationException();
+                            }
+                            transfer.Chmod = ChmodEventArgs.Read(groupReader);
+                        }
+                        else if (groupReader.IsNonEmptyElement(TouchEventArgs.Tag))
+                        {
+                            if (transfer == null)
+                            {
+                                throw new InvalidOperationException();
+                            }
+                            transfer.Touch = TouchEventArgs.Read(groupReader);
+                        }
+                    }
+
+                    if (transfer != null)
+                    {
+                        AddSynchronizationTransfer(result, transferIsUpload, transfer);
+                    }
+                }
+                return result;
+            }
+        }
+
+        public CommandExecutionResult ExecuteCommand(string command)
+        {
+            using (Logger.CreateCallstackAndLock())
+            {
+                CheckOpened();
+
+                WriteCommand(string.Format(CultureInfo.InvariantCulture, "call {0}", command));
+
+                CommandExecutionResult result = new CommandExecutionResult();
+
+                using (ElementLogReader groupReader = _reader.WaitForGroupAndCreateLogReader())
+                using (ElementLogReader callReader = groupReader.WaitForNonEmptyElementAndCreateLogReader("call", LogReadFlags.ThrowFailures))
+                {
+                    while (callReader.Read(0))
+                    {
+                        string value;
+                        if (callReader.GetEmptyElementValue("output", out value))
+                        {
+                            result.Output = value;
+                        }
+                        if (callReader.GetEmptyElementValue("erroroutput", out value))
+                        {
+                            result.ErrorOutput = value;
+                        }
+                    }
+
+                    groupReader.ReadToEnd(LogReadFlags.ThrowFailures);
+                }
+
+                return result;
+            }
+        }
+
+        public RemoteFileInfo GetFileInfo(string path)
+        {
+            using (Logger.CreateCallstackAndLock())
+            {
+                CheckOpened();
+
+                return DoGetFileInfo(path);
+            }
+        }
+
+        public bool FileExists(string path)
+        {
+            using (Logger.CreateCallstackAndLock())
+            {
+                CheckOpened();
+
+                try
+                {
+                    DoGetFileInfo(path);
+                    return true;
+                }
+                catch (SessionRemoteException)
+                {
+                    return false;
+                }
+            }
+        }
+
+        public void CreateDirectory(string path)
+        {
+            using (Logger.CreateCallstackAndLock())
+            {
+                CheckOpened();
+
+                WriteCommand(string.Format(CultureInfo.InvariantCulture, "mkdir \"{0}\"", ArgumentEscape(path)));
+
+                using (ElementLogReader groupReader = _reader.WaitForGroupAndCreateLogReader())
+                using (ElementLogReader mkdirReader = groupReader.WaitForNonEmptyElementAndCreateLogReader("mkdir", LogReadFlags.ThrowFailures))
+                {
+                    ReadElement(mkdirReader, 0);
+                    groupReader.ReadToEnd(LogReadFlags.ThrowFailures);
+                }
+            }
+        }
+
+        public void MoveFile(string sourcePath, string targetPath)
+        {
+            using (Logger.CreateCallstackAndLock())
+            {
+                CheckOpened();
+
+                WriteCommand(string.Format(CultureInfo.InvariantCulture, "mv \"{0}\" \"{1}\"", ArgumentEscape(sourcePath), ArgumentEscape(targetPath)));
+
+                using (ElementLogReader groupReader = _reader.WaitForGroupAndCreateLogReader())
+                using (ElementLogReader mvReader = groupReader.WaitForNonEmptyElementAndCreateLogReader("mv", LogReadFlags.ThrowFailures))
+                {
+                    ReadElement(mvReader, 0);
+                    groupReader.ReadToEnd(LogReadFlags.ThrowFailures);
+                }
+            }
+        }
+
+        // This is not static method only to make it visible to COM
+        public string EscapeFileMask(string fileMask)
+        {
+            if (fileMask == null)
+            {
+                throw new ArgumentNullException("fileMask");
+            }
+            int lastSlash = fileMask.LastIndexOf('/');
+            string path = lastSlash > 0 ? fileMask.Substring(0, lastSlash + 1) : string.Empty;
+            string mask = lastSlash > 0 ? fileMask.Substring(lastSlash + 1) : fileMask;
+            mask = mask.Replace("[", "[[]").Replace("*", "[*]").Replace("?", "[?]");
+            return path + mask;
+        }
+
+        [ComRegisterFunction]
+        private static void ComRegister(Type t)
+        {
+            string subKey = GetTypeLibKey(t);
+            Assembly assembly = Assembly.GetAssembly(t);
+            object[] attributes = assembly.GetCustomAttributes(typeof(GuidAttribute), false);
+            if (attributes.Length == 0)
+            {
+                throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, "Cannot find {0} attribute for assembly {1}", typeof(GuidAttribute), assembly));
+            }
+            GuidAttribute guidAttribute = (GuidAttribute)attributes[0];
+            Registry.ClassesRoot.CreateSubKey(subKey).SetValue(null, guidAttribute.Value);
+        }
+
+        [ComUnregisterFunction]
+        private static void ComUnregister(Type t)
+        {
+            string subKey = GetTypeLibKey(t);
+            Registry.ClassesRoot.DeleteSubKey(subKey, false);
+        }
+
+        private void ReadFile(RemoteFileInfo fileInfo, CustomLogReader fileReader)
+        {
+            using (Logger.CreateCallstack())
+            {
+                string value;
+                if (fileReader.GetEmptyElementValue("type", out value))
+                {
+                    fileInfo.FileType = value[0];
+                }
+                else if (fileReader.GetEmptyElementValue("size", out value))
+                {
+                    fileInfo.Length = long.Parse(value, CultureInfo.InvariantCulture);
+                }
+                else if (fileReader.GetEmptyElementValue("modification", out value))
+                {
+                    fileInfo.LastWriteTime = XmlConvert.ToDateTime(value, XmlDateTimeSerializationMode.Local);
+                }
+                else if (fileReader.GetEmptyElementValue("permissions", out value))
+                {
+                    fileInfo.FilePermissions = FilePermissions.CreateReadOnlyFromText(value);
+                }
+            }
+        }
+
+        internal static string BooleanSwitch(bool flag, string name)
+        {
+            return flag ? string.Format(CultureInfo.InvariantCulture, "-{0}", name) : null;
+        }
+
+        internal static string BooleanSwitch(bool flag, string onName, string offName)
+        {
+            return flag ? string.Format(CultureInfo.InvariantCulture, "-{0}", onName) : string.Format(CultureInfo.InvariantCulture, "-{0}", offName);
+        }
+
+        private void AddSynchronizationTransfer(SynchronizationResult result, bool transferIsUpload, TransferEventArgs transfer)
+        {
+            if (transferIsUpload)
+            {
+                result.AddUpload(transfer);
+            }
+            else
+            {
+                result.AddDownload(transfer);
+            }
+            RaiseFileTransferredEvent(transfer);
+        }
+
+        private static string IncludeTrailingSlash(string path)
+        {
+            if (!string.IsNullOrEmpty(path) && !path.EndsWith("/", StringComparison.Ordinal))
+            {
+                path += '/';
+            }
+            return path;
+        }
+
+        private void DoDispose()
+        {
+            using (Logger.CreateCallstack())
+            {
+                _disposed = true;
+
+                Cleanup();
+                Logger.Dispose();
+
+                if (_eventsEvent != null)
+                {
+                    _eventsEvent.Close();
+                    _eventsEvent = null;
+                }
+            }
+        }
+
+        private void Cleanup()
+        {
+            using (Logger.CreateCallstack())
+            {
+                if (_process != null)
+                {
+                    Logger.WriteLine("Terminating process");
+                    try
+                    {
+                        try
+                        {
+                            WriteCommand("exit");
+                            _process.Close();
+                        }
+                        finally
+                        {
+                            _process.Dispose();
+                            _process = null;
+                        }
+                    }
+                    catch (Exception e)
+                    {
+                        Logger.WriteLine("Process cleanup Exception: {0}", e);
+                    }
+                }
+
+                Logger.WriteLine("Disposing log readers");
+
+                if (_reader != null)
+                {
+                    _reader.Dispose();
+                    _reader = null;
+                }
+
+                if (_logReader != null)
+                {
+                    _logReader.Dispose();
+                    _logReader = null;
+                }
+
+                // Cleanup log file
+                if ((XmlLogPath != null) && File.Exists(XmlLogPath))
+                {
+                    Logger.WriteLine("Deleting XML log file [{0}]", XmlLogPath);
+                    try
+                    {
+                        File.Delete(XmlLogPath);
+                    }
+                    catch (DirectoryNotFoundException e)
+                    {
+                        Logger.WriteLine("XML log cleanup DirectoryNotFoundException: {0}", e);
+                    }
+                    catch (IOException e)
+                    {
+                        Logger.WriteLine("XML log cleanup IOException: {0}", e);
+                    }
+                    catch (UnauthorizedAccessException e)
+                    {
+                        Logger.WriteLine("XML log cleanup UnauthorizedAccessException: {0}", e);
+                    }
+
+                    _xmlLogPath = null;
+                }
+            }
+        }
+
+        private void WriteCommand(string command)
+        {
+            Logger.WriteLine("Command: [{0}]", command);
+            _process.ExecuteCommand(command);
+            GotOutput();
+        }
+
+        private static void ReadElement(CustomLogReader reader, LogReadFlags flags)
+        {
+            while (reader.Read(flags))
+            {
+            }
+        }
+
+        private string SessionOptionsToOpenArguments(SessionOptions sessionOptions)
+        {
+            using (Logger.CreateCallstack())
+            {
+                string url;
+                switch (sessionOptions.Protocol)
+                {
+                    case Protocol.Sftp:
+                        url = "sftp://";
+                        break;
+
+                    case Protocol.Scp:
+                        url = "scp://";
+                        break;
+
+                    case Protocol.Ftp:
+                        url = "ftp://";
+                        break;
+
+                    default:
+                        throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, "{0} is not supported", sessionOptions.Protocol));
+                }
+
+                bool hasUsername = !string.IsNullOrEmpty(sessionOptions.UserName);
+                if (hasUsername)
+                {
+                    url += UriEscape(sessionOptions.UserName);
+                }
+
+                if (!string.IsNullOrEmpty(sessionOptions.Password))
+                {
+                    if (!hasUsername)
+                    {
+                        throw new ArgumentException("SessionOptions.Password is set, but SessionOptions.UserName is not.");
+                    }
+                    url += ":" + UriEscape(sessionOptions.Password);
+                }
+
+                if (hasUsername)
+                {
+                    url += "@";
+                }
+
+                if (string.IsNullOrEmpty(sessionOptions.HostName))
+                {
+                    throw new ArgumentException("SessionOptions.HostName is not set.");
+                }
+
+                url += UriEscape(sessionOptions.HostName);
+
+                if (sessionOptions.PortNumber != 0)
+                {
+                    url += ":" + sessionOptions.PortNumber.ToString(CultureInfo.InvariantCulture);
+                }
+
+                string arguments = SessionOptionsToOpenSwitches(sessionOptions);
+
+                arguments += (!string.IsNullOrEmpty(arguments) ? " " : "") + "\"" + ArgumentEscape(url) + "\"";
+
+                if (sessionOptions.RawSettings.Count > 0)
+                {
+                    arguments += " -rawsettings";
+                    foreach (KeyValuePair<string, string> rawSetting in sessionOptions.RawSettings)
+                    {
+                        arguments += string.Format(CultureInfo.InvariantCulture, " {0}=\"{1}\"", rawSetting.Key, ArgumentEscape(rawSetting.Value));
+                    }
+                }
+
+                return arguments;
+            }
+        }
+
+        private string SessionOptionsToOpenSwitches(SessionOptions sessionOptions)
+        {
+            using (Logger.CreateCallstack())
+            {
+                List<string> switches = new List<string>();
+
+                if (!string.IsNullOrEmpty(sessionOptions.SshHostKeyFingerprint) ||
+                    sessionOptions.GiveUpSecurityAndAcceptAnySshHostKey)
+                {
+                    if (!sessionOptions.IsSsh)
+                    {
+                        throw new ArgumentException("SessionOptions.SshHostKey or SessionOptions.GiveUpSecurityAndAcceptAnySshHostKey is set, but SessionOptions.Protocol is not Protocol.Sftp nor Protocol.Scp.");
+                    }
+                    string sshHostKeyFingerprint = sessionOptions.SshHostKeyFingerprint;
+                    if (sessionOptions.GiveUpSecurityAndAcceptAnySshHostKey)
+                    {
+                        Logger.WriteLine("WARNING! Giving up security and accepting any key as configured");
+                        sshHostKeyFingerprint = AddStarToList(sshHostKeyFingerprint);
+                    }
+                    switches.Add(FormatSwitch("hostkey", sshHostKeyFingerprint));
+                }
+                else
+                {
+                    if (sessionOptions.IsSsh && DefaultConfiguration)
+                    {
+                        throw new ArgumentException("SessionOptions.Protocol is Protocol.Sftp or Protocol.Scp, but SessionOptions.HostKey is not set.");
+                    }
+                }
+
+                if (!string.IsNullOrEmpty(sessionOptions.SshPrivateKeyPath))
+                {
+                    if (!sessionOptions.IsSsh)
+                    {
+                        throw new ArgumentException("SessionOptions.SshPrivateKey is set, but SessionOptions.Protocol is not Protocol.Sftp nor Protocol.Scp.");
+                    }
+                    switches.Add(FormatSwitch("privatekey", sessionOptions.SshPrivateKeyPath));
+                }
+
+                if (sessionOptions.FtpSecure != FtpSecure.None)
+                {
+                    if (sessionOptions.Protocol != Protocol.Ftp)
+                    {
+                        throw new ArgumentException("SessionOptions.FtpSecure is not FtpSecure.None, but SessionOptions.Protocol is not Protocol.Ftp.");
+                    }
+
+                    switch (sessionOptions.FtpSecure)
+                    {
+                        case FtpSecure.Implicit:
+                            switches.Add(FormatSwitch("implicit"));
+                            break;
+
+                        case FtpSecure.ExplicitSsl:
+                            switches.Add(FormatSwitch("explicitssl"));
+                            break;
+
+                        case FtpSecure.ExplicitTls:
+                            switches.Add(FormatSwitch("explicittls"));
+                            break;
+
+                        default:
+                            throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, "{0} is not supported", sessionOptions.FtpSecure));
+                    }
+                }
+
+                if (!string.IsNullOrEmpty(sessionOptions.SslHostCertificateFingerprint) ||
+                    sessionOptions.GiveUpSecurityAndAcceptAnySslHostCertificate)
+                {
+                    if (sessionOptions.FtpSecure == FtpSecure.None)
+                    {
+                        throw new ArgumentException("SessionOptions.SslHostCertificateFingerprint or SessionOptions.GiveUpSecurityAndAcceptAnySslHostCertificate is set, but SessionOptions.FtpSecure is FtpSecure.None.");
+                    }
+                    string sslHostCertificateFingerprint = sessionOptions.SslHostCertificateFingerprint;
+                    if (sessionOptions.GiveUpSecurityAndAcceptAnySslHostCertificate)
+                    {
+                        Logger.WriteLine("WARNING! Giving up security and accepting any certificate as configured");
+                        sslHostCertificateFingerprint = AddStarToList(sslHostCertificateFingerprint);
+                    }
+                    switches.Add(FormatSwitch("certificate", sslHostCertificateFingerprint));
+                }
+
+                if (sessionOptions.Protocol == Protocol.Ftp)
+                {
+                    switches.Add(FormatSwitch("passive", (sessionOptions.FtpMode == FtpMode.Passive)));
+                }
+
+                switches.Add(FormatSwitch("timeout", (int)sessionOptions.Timeout.TotalSeconds));
+
+                return string.Join(" ", switches.ToArray());
+            }
+        }
+
+        private static string AddStarToList(string list)
+        {
+            return (string.IsNullOrEmpty(list) ? string.Empty : list + ";") + "*";
+        }
+
+        private RemoteFileInfo DoGetFileInfo(string path)
+        {
+            using (Logger.CreateCallstack())
+            {
+                WriteCommand(string.Format(CultureInfo.InvariantCulture, "stat -- \"{0}\"", ArgumentEscape(path)));
+
+                RemoteFileInfo fileInfo = new RemoteFileInfo();
+
+                using (ElementLogReader groupReader = _reader.WaitForGroupAndCreateLogReader())
+                using (ElementLogReader statReader = groupReader.WaitForNonEmptyElementAndCreateLogReader("stat", LogReadFlags.ThrowFailures))
+                {
+                    while (statReader.Read(0))
+                    {
+                        string value;
+                        if (statReader.GetEmptyElementValue("filename", out value))
+                        {
+                            fileInfo.Name = value;
+                        }
+                        else if (statReader.IsNonEmptyElement("file"))
+                        {
+                            using (ElementLogReader fileReader = statReader.CreateLogReader())
+                            {
+                                while (fileReader.Read(0))
+                                {
+                                    ReadFile(fileInfo, fileReader);
+                                }
+                            }
+                        }
+                    }
+
+                    groupReader.ReadToEnd(LogReadFlags.ThrowFailures);
+                }
+
+                return fileInfo;
+            }
+        }
+
+        internal static string FormatSwitch(string key)
+        {
+            return string.Format(CultureInfo.InvariantCulture, "-{0}", key);
+        }
+
+        internal static string FormatSwitch(string key, string value)
+        {
+            return string.Format(CultureInfo.InvariantCulture, "-{0}=\"{1}\"", key, ArgumentEscape(value));
+        }
+
+        internal static string FormatSwitch(string key, int value)
+        {
+            return string.Format(CultureInfo.InvariantCulture, "-{0}={1}", key, value.ToString(CultureInfo.InvariantCulture));
+        }
+
+        internal static string FormatSwitch(string key, bool value)
+        {
+            return FormatSwitch(key, (value ? 1 : 0));
+        }
+
+        internal static string ArgumentEscape(string value)
+        {
+            int i = 0;
+            while (i < value.Length)
+            {
+                if (value[i] == '"')
+                {
+                    value = value.Insert(i, "\"");
+                    ++i;
+                }
+                ++i;
+            }
+            return value;
+        }
+
+        private static string UriEscape(string s)
+        {
+            return Uri.EscapeDataString(s);
+        }
+
+        internal void GotOutput()
+        {
+            _lastOutput = DateTime.Now;
+        }
+
+        private void ProcessOutputDataReceived(object sender, OutputDataReceivedEventArgs e)
+        {
+            Logger.WriteLine("Scheduling output: [{0}]", e.Data);
+            Output.InternalAdd(e.Data);
+            GotOutput();
+            ScheduleEvent(() => RaiseOutputDataReceived(e.Data));
+        }
+
+        private void ScheduleEvent(Action action)
+        {
+            lock (_events)
+            {
+                _events.Add(action);
+                _eventsEvent.Set();
+            }
+        }
+
+        internal void CheckForTimeout(string additional = null)
+        {
+            if (DateTime.Now - _lastOutput > Timeout)
+            {
+                string message = "Timeout waiting for WinSCP to respond";
+                if (additional != null)
+                {
+                    message += " - " + additional;
+                }
+                throw new TimeoutException(message);
+            }
+
+            if (_aborted)
+            {
+                throw new SessionLocalException(this, "Aborted.");
+            }
+        }
+
+        private void RaiseFileTransferredEvent(TransferEventArgs args)
+        {
+            Logger.WriteLine("FileTransferredEvent: [{0}]", args.FileName);
+
+            if (FileTransferred != null)
+            {
+                FileTransferred(this, args);
+            }
+        }
+
+        internal void RaiseFailed(SessionRemoteException e)
+        {
+            Logger.WriteLine("Failed: [{0}]", e);
+
+            if (Failed != null)
+            {
+                Failed(this, new FailedEventArgs { Error = e });
+            }
+
+            foreach (OperationResultBase operationResult in _operationResults)
+            {
+                operationResult.AddFailure(e);
+            }
+        }
+
+        private void CheckNotDisposed()
+        {
+            if (_disposed)
+            {
+                throw new InvalidOperationException("Object is disposed");
+            }
+
+            if (_aborted)
+            {
+                throw new InvalidOperationException("Session was aborted");
+            }
+        }
+
+        private void CheckOpened()
+        {
+            if (!Opened)
+            {
+                throw new InvalidOperationException("Session is not opened");
+            }
+        }
+
+        private void CheckNotOpened()
+        {
+            if (Opened)
+            {
+                throw new InvalidOperationException("Session is already opened");
+            }
+        }
+
+        private void RaiseOutputDataReceived(string data)
+        {
+            Logger.WriteLine("Output: [{0}]", data);
+
+            if (OutputDataReceived != null)
+            {
+                OutputDataReceived(this, new OutputDataReceivedEventArgs(data));
+            }
+        }
+
+        internal void DispatchEvents(int interval)
+        {
+            DateTime start = DateTime.Now;
+            while (_eventsEvent.WaitOne(interval, false))
+            {
+                lock (_events)
+                {
+                    foreach (Action action in _events)
+                    {
+                        action();
+                    }
+                    _events.Clear();
+                }
+
+                interval -= (int) (DateTime.Now - start).TotalMilliseconds;
+                if (interval < 0)
+                {
+                    break;
+                }
+                start = DateTime.Now;
+            }
+        }
+
+        private IDisposable RegisterOperationResult(OperationResultBase operationResult)
+        {
+            _operationResults.Add(operationResult);
+            return new OperationResultGuard(this, operationResult);
+        }
+
+        internal void UnregisterOperationResult(OperationResultBase operationResult)
+        {
+            _operationResults.Remove(operationResult);
+        }
+
+        internal bool WantsProgress
+        {
+            get
+            {
+                return (_fileTransferProgress != null);
+            }
+        }
+
+        private IDisposable CreateProgressHandler()
+        {
+            _progressHandling++;
+            return new ProgressHandler(this);
+        }
+
+        internal void DisableProgressHandling()
+        {
+            if (_progressHandling <= 0)
+            {
+                throw new InvalidOperationException();
+            }
+
+            // make sure we process all pending progress events
+            DispatchEvents(0);
+
+            _progressHandling--;
+        }
+
+        internal void ProcessProgress(FileTransferProgressEventArgs args)
+        {
+            ScheduleEvent(() => Progress(args));
+        }
+
+        private void Progress(FileTransferProgressEventArgs args)
+        {
+            if ((_progressHandling >= 0) && WantsProgress)
+            {
+                _fileTransferProgress(this, args);
+            }
+        }
+
+        private void SetupTempPath()
+        {
+            using (Logger.CreateCallstack())
+            {
+                if (!string.IsNullOrEmpty(_xmlLogPath))
+                {
+                    bool exists = File.Exists(_xmlLogPath);
+                    Logger.WriteLine("Configured temporary file: {0} - Exists [{1}]", _xmlLogPath, exists);
+                    if (exists)
+                    {
+                        throw new SessionLocalException(this, string.Format(CultureInfo.CurrentCulture, "Configured temporary file {0} already exists", _xmlLogPath));
+                    }
+                }
+                else
+                {
+                    string path = Path.GetTempPath();
+                    Logger.WriteLine("Temporary folder: {0}", path);
+                    string process = Process.GetCurrentProcess().Id.ToString("X4", CultureInfo.InvariantCulture);
+                    string instance = GetHashCode().ToString("X8", CultureInfo.InvariantCulture);
+                    string filename;
+                    bool exists;
+                    do
+                    {
+                        string uniqueStr = (_logUnique > 0 ? "." + _logUnique.ToString(CultureInfo.InvariantCulture) : string.Empty);
+                        ++_logUnique;
+                        filename = Path.Combine(path, "wscp" + process + "." + instance + uniqueStr + ".tmp");
+                        exists = File.Exists(filename);
+                        Logger.WriteLine("Temporary file [{0}] - Exists [{1}]", filename, exists);
+                    }
+                    while (exists);
+
+                    _xmlLogPath = filename;
+                }
+            }
+        }
+
+        private static string GetTypeLibKey(Type t)
+        {
+            return "CLSID\\{" + t.GUID.ToString().ToUpperInvariant() + "}\\TypeLib";
+        }
+
+        FieldInfo IReflect.GetField(string name, BindingFlags bindingAttr)
+        {
+            using (Logger.CreateCallstack())
+            {
+                Logger.WriteLine("Name [{0}]", name);
+                FieldInfo result = typeof(Session).GetField(name, bindingAttr);
+                Logger.WriteLine("Result [{0}]", result != null ? result.Name : "null");
+                return result;
+            }
+        }
+
+        FieldInfo[] IReflect.GetFields(BindingFlags bindingAttr)
+        {
+            using (Logger.CreateCallstack())
+            {
+                FieldInfo[] result = typeof(Session).GetFields(bindingAttr);
+                Logger.WriteLine("Fields [{0}]", result.Length);
+                return result;
+            }
+        }
+
+        MemberInfo[] IReflect.GetMember(string name, BindingFlags bindingAttr)
+        {
+            using (Logger.CreateCallstack())
+            {
+                Logger.WriteLine("Name [{0}]", name);
+                MemberInfo[] result = typeof(Session).GetMember(name, bindingAttr);
+                Logger.WriteLine("Result [{0}]", result.Length);
+                return result;
+            }
+        }
+
+        MemberInfo[] IReflect.GetMembers(BindingFlags bindingAttr)
+        {
+            using (Logger.CreateCallstack())
+            {
+                MemberInfo[] result = typeof(Session).GetMembers(bindingAttr);
+                Logger.WriteLine("Result [{0}]", result.Length);
+                return result;
+            }
+        }
+
+        MethodInfo IReflect.GetMethod(string name, BindingFlags bindingAttr)
+        {
+            using (Logger.CreateCallstack())
+            {
+                Logger.WriteLine("Name [{0}]", name);
+                MethodInfo result = typeof(Session).GetMethod(name, bindingAttr);
+                Logger.WriteLine("Result [{0}]", result != null ? result.Name : "null");
+                return result;
+            }
+        }
+
+        MethodInfo IReflect.GetMethod(string name, BindingFlags bindingAttr, Binder binder, Type[] types, ParameterModifier[] modifiers)
+        {
+            using (Logger.CreateCallstack())
+            {
+                Logger.WriteLine("Name [{0}]", name);
+                MethodInfo result = typeof(Session).GetMethod(name, bindingAttr, binder, types, modifiers);
+                Logger.WriteLine("Result [{0}]", result != null ? result.Name : "null");
+                return result;
+            }
+        }
+
+        MethodInfo[] IReflect.GetMethods(BindingFlags bindingAttr)
+        {
+            using (Logger.CreateCallstack())
+            {
+                MethodInfo[] result = typeof(Session).GetMethods(bindingAttr);
+                Logger.WriteLine("Result [{0}]", result.Length);
+                return result;
+            }
+        }
+
+        PropertyInfo[] IReflect.GetProperties(BindingFlags bindingAttr)
+        {
+            using (Logger.CreateCallstack())
+            {
+                PropertyInfo[] result = typeof(Session).GetProperties(bindingAttr);
+                Logger.WriteLine("Result [{0}]", result.Length);
+                return result;
+            }
+        }
+
+        PropertyInfo IReflect.GetProperty(string name, BindingFlags bindingAttr, Binder binder, Type returnType, Type[] types, ParameterModifier[] modifiers)
+        {
+            using (Logger.CreateCallstack())
+            {
+                Logger.WriteLine("Name [{0}]", name);
+                PropertyInfo result = typeof(Session).GetProperty(name, bindingAttr, binder, returnType, types, modifiers);
+                Logger.WriteLine("Result [{0}]", result != null ? result.Name : "null");
+                return result;
+            }
+        }
+
+        PropertyInfo IReflect.GetProperty(string name, BindingFlags bindingAttr)
+        {
+            using (Logger.CreateCallstack())
+            {
+                Logger.WriteLine("Name [{0}]", name);
+                PropertyInfo result = typeof(Session).GetProperty(name, bindingAttr);
+                Logger.WriteLine("Result [{0}]", result != null ? result.Name : "null");
+                return result;
+            }
+        }
+
+        object IReflect.InvokeMember(string name, BindingFlags invokeAttr, Binder binder, object target, object[] args, ParameterModifier[] modifiers, CultureInfo culture, string[] namedParameters)
+        {
+            using (Logger.CreateCallstack())
+            {
+                Logger.WriteLine("Name [{0}]", name);
+                object result;
+                try
+                {
+                    Logger.WriteLine("Target [{0}]", target);
+                    if (args != null)
+                    {
+                        Logger.WriteLine("Args [{0}] [{1}]", args.Length, modifiers != null ? modifiers.Length.ToString(CultureInfo.InvariantCulture) : "null");
+                        for (int i = 0; i < args.Length; ++i)
+                        {
+                            Logger.WriteLine("Arg [{0}] [{1}] [{2}]", i, args[i], (modifiers != null ? modifiers[i].ToString() : "null"));
+                        }
+                    }
+                    Logger.WriteLine("Culture [{0}]", culture);
+                    if (namedParameters != null)
+                    {
+                        foreach (string namedParameter in namedParameters)
+                        {
+                            Logger.WriteLine("NamedParameter [{0}]", namedParameter);
+                        }
+                    }
+
+                    Logger.WriteLine("Invoking");
+                    result = typeof(Session).InvokeMember(name, invokeAttr, binder, target, args, modifiers, culture, namedParameters);
+                    Logger.WriteLine("Result [{0}]", result);
+                }
+                catch (Exception e)
+                {
+                    Logger.WriteLine("Error [{0}]", e);
+                    throw;
+                }
+                return result;
+            }
+        }
+
+        Type IReflect.UnderlyingSystemType
+        {
+            get { return typeof(Session); }
+        }
+
+        internal const string Namespace = "http://winscp.net/schema/session/1.0";
+        internal Logger Logger { get; private set; }
+
+        private ExeSessionProcess _process;
+        private DateTime _lastOutput;
+        private ElementLogReader _reader;
+        private SessionLogReader _logReader;
+        private readonly IList<OperationResultBase> _operationResults;
+        private delegate void Action();
+        private readonly IList<Action> _events;
+        private AutoResetEvent _eventsEvent;
+        private bool _disposed;
+        private string _executablePath;
+        private string _additionalExecutableArguments;
+        private bool _defaultConfiguration;
+        private bool _disableVersionCheck;
+        private string _iniFilePath;
+        private TimeSpan _reconnectTime;
+        private string _sessionLogPath;
+        private bool _aborted;
+        private int _logUnique;
+        private string _xmlLogPath;
+        private FileTransferProgressEventHandler _fileTransferProgress;
+        private int _progressHandling;
+    }
+}

+ 17 - 0
dotnet/SessionEvents.cs

@@ -0,0 +1,17 @@
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    [ComVisible(true)]
+    [Guid("A1334E32-4EDF-4B51-A069-DA3FF1B19A5A")]
+    [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
+    public interface ISessionEvents
+    {
+        [DispId(1)]
+        void FileTransferred(object sender, TransferEventArgs e);
+        [DispId(2)]
+        void Failed(object sender, FailedEventArgs e);
+        [DispId(3)]
+        void OutputDataReceived(object sender, OutputDataReceivedEventArgs e);
+    }
+}

+ 25 - 0
dotnet/SessionException.cs

@@ -0,0 +1,25 @@
+using System;
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    [Guid("91109A4F-D81A-4326-BEC5-1AB26EBF89A6")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public class SessionException : Exception
+    {
+        public Session Session { get; private set; }
+
+        internal SessionException(Session session, string message) :
+            this(session, message, null)
+        {
+        }
+
+        internal SessionException(Session session, string message, Exception innerException) :
+            base(message, innerException)
+        {
+            Session = session;
+            session.Logger.WriteLine("Exception: {0}", this);
+        }
+    }
+}

+ 27 - 0
dotnet/SessionLocalException.cs

@@ -0,0 +1,27 @@
+using System;
+using System.Runtime.InteropServices;
+using System.Globalization;
+
+namespace WinSCP
+{
+    [Guid("59B362D6-7FD3-4EF0-A3B6-E3244F793778")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public sealed class SessionLocalException : SessionException
+    {
+        internal SessionLocalException(Session session, string message) :
+            base(session, message)
+        {
+        }
+
+        internal SessionLocalException(Session session, string message, Exception innerException) :
+            base(session, message, innerException)
+        {
+        }
+
+        internal static SessionLocalException CreateElementNotFound(Session session, string localName)
+        {
+            return new SessionLocalException(session, string.Format(CultureInfo.CurrentCulture, "Element \"{0}\" not found in the log file", localName));
+        }
+    }
+}

+ 136 - 0
dotnet/SessionOptions.cs

@@ -0,0 +1,136 @@
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using System.Text.RegularExpressions;
+using System.Globalization;
+
+namespace WinSCP
+{
+    [Guid("F25C49A5-74A6-4E8F-AEB4-5B4E0DDF0EF9")]
+    [ComVisible(true)]
+    public enum Protocol
+    {
+        Sftp = 0,
+        Scp = 1,
+        Ftp = 2,
+    }
+
+    [Guid("D924FAB9-FCE7-47B8-9F23-5717698384D3")]
+    [ComVisible(true)]
+    public enum FtpMode
+    {
+        Passive = 0,
+        Active = 1,
+    }
+
+    [Guid("F2FC81EB-4761-4A4E-A3EC-4AFDD474C18C")]
+    [ComVisible(true)]
+    public enum FtpSecure
+    {
+        None = 0,
+        Implicit = 1,
+        ExplicitSsl = 2,
+        ExplicitTls = 3,
+    }
+
+    [Guid("2D4EF368-EE80-4C15-AE77-D12AEAF4B00A")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public sealed class SessionOptions
+    {
+        public SessionOptions()
+        {
+            Timeout = new TimeSpan(0, 0, 15);
+            RawSettings = new Dictionary<string,string>();
+        }
+
+        public Protocol Protocol { get; set; }
+        public string HostName { get; set; }
+        public int PortNumber { get { return _portNumber; } set { SetPortNumber(value); } }
+        public string UserName { get; set; }
+        public string Password { get; set; }
+        public TimeSpan Timeout { get { return _timeout; } set { SetTimeout(value); } }
+
+        // SSH
+        public string SshHostKeyFingerprint { get { return _sshHostKeyFingerprint; } set { SetSshHostKeyFingerprint(value); } }
+        public bool GiveUpSecurityAndAcceptAnySshHostKey { get; set; }
+        public string SshPrivateKeyPath { get; set; }
+
+        // FTP
+        public FtpMode FtpMode { get; set; }
+        public FtpSecure FtpSecure { get; set; }
+        public string SslHostCertificateFingerprint { get { return _sslHostCertificateFingerprint; } set { SetHostSslCertificateFingerprint(value); } }
+        public bool GiveUpSecurityAndAcceptAnySslHostCertificate { get; set; }
+
+        public void AddRawSettings(string setting, string value)
+        {
+            RawSettings.Add(setting, value);
+        }
+
+        internal Dictionary<string, string> RawSettings { get; private set; }
+        internal bool IsSsh { get { return (Protocol == Protocol.Sftp) || (Protocol == Protocol.Scp); } }
+
+        private void SetSshHostKeyFingerprint(string s)
+        {
+            if (s != null)
+            {
+                Match match = _sshHostKeyRegex.Match(s);
+
+                if (!match.Success || (match.Length != s.Length))
+                {
+                    throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, "SSH host key fingerprint \"{0}\" does not match pattern /{1}/", s, _sshHostKeyRegex));
+                }
+            }
+
+            _sshHostKeyFingerprint = s;
+        }
+
+        private void SetHostSslCertificateFingerprint(string s)
+        {
+            if (s != null)
+            {
+                Match match = _sslCertificateRegex.Match(s);
+
+                if (!match.Success || (match.Length != s.Length))
+                {
+                    throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, "SSL host certificate fingerprint \"{0}\" does not match pattern /{1}/", s, _sslCertificateRegex));
+                }
+            }
+
+            _sslHostCertificateFingerprint = s;
+        }
+
+        private void SetTimeout(TimeSpan value)
+        {
+            if (value <= TimeSpan.Zero)
+            {
+                throw new ArgumentException("Timeout has to be positive non-zero value");
+            }
+
+            _timeout = value;
+        }
+
+        private void SetPortNumber(int value)
+        {
+            if (value < 0)
+            {
+                throw new ArgumentException("Port number cannot be negative");
+            }
+
+            _portNumber = value;
+        }
+
+        private string _sshHostKeyFingerprint;
+        private string _sslHostCertificateFingerprint;
+        private TimeSpan _timeout;
+        private int _portNumber;
+
+        private const string _listPattern = @"{0}(;{0})*";
+        private const string _sshHostKeyPattern = @"(ssh-rsa |ssh-dss )?\d+ ([0-9a-f]{2}:){15}[0-9a-f]{2}";
+        private static readonly Regex _sshHostKeyRegex =
+            new Regex(string.Format(CultureInfo.InvariantCulture, _listPattern, _sshHostKeyPattern));
+        private const string _sslCertificatePattern = @"([0-9a-f]{2}:){19}[0-9a-f]{2}";
+        private static readonly Regex _sslCertificateRegex =
+            new Regex(string.Format(CultureInfo.InvariantCulture, _listPattern, _sslCertificatePattern));
+    }
+}

+ 92 - 0
dotnet/SessionRemoteException.cs

@@ -0,0 +1,92 @@
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using System.Xml;
+
+namespace WinSCP
+{
+    [Guid("0E8BBC73-AF4D-4E7E-995C-EB89D0BFDE9A")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public sealed class SessionRemoteException : SessionException
+    {
+        internal SessionRemoteException(Session session, string message) :
+            base(session, message)
+        {
+        }
+
+        internal SessionRemoteException(Session session, string message, Exception innerException) :
+            base(session, message, innerException)
+        {
+        }
+
+        internal static bool IsResult(CustomLogReader reader)
+        {
+            return reader.IsNonEmptyElement("result");
+        }
+
+        internal static SessionRemoteException ReadResult(CustomLogReader areader)
+        {
+            SessionRemoteException e = null;
+
+            if (areader.GetAttribute("success") == "false")
+            {
+                e = ReadMessages(areader);
+            }
+
+            return e;
+        }
+
+        internal static SessionRemoteException ReadFailure(CustomLogReader reader)
+        {
+            return ReadMessages(reader);
+        }
+
+        private static SessionRemoteException ReadMessages(CustomLogReader areader)
+        {
+            using (ElementLogReader reader = new ElementLogReader(areader))
+            {
+                string error = null;
+                string message = null;
+                List<string> messages = new List<string>();
+                bool inMessage = false;
+
+                while (reader.Read(0))
+                {
+                    if (reader.IsNonEmptyElement("message"))
+                    {
+                        inMessage = true;
+                        message = null;
+                    }
+                    else if (inMessage &&
+                        (reader.NodeType == XmlNodeType.Text))
+                    {
+                        message += reader.Value;
+                    }
+                    else if (inMessage &&
+                        reader.IsEndElement("message"))
+                    {
+                        if (error == null)
+                        {
+                            error = message;
+                        }
+                        else
+                        {
+                            messages.Add(message);
+                        }
+                        message = null;
+                        inMessage = false;
+                    }
+                }
+
+                Exception inner = null;
+                if (messages.Count > 0)
+                {
+                    inner = new SessionRemoteException(reader.Session, string.Join(Environment.NewLine, messages.ToArray()));
+                }
+
+                return new SessionRemoteException(reader.Session, error, inner);
+            }
+        }
+    }
+}

+ 36 - 0
dotnet/SynchronizationResult.cs

@@ -0,0 +1,36 @@
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    [Guid("D0ADB4F7-47AE-43AC-AA41-9114650EA51A")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public sealed class SynchronizationResult : OperationResultBase
+    {
+        public TransferEventArgsCollection Uploads { get; private set; }
+        public TransferEventArgsCollection Downloads { get; private set; }
+        public RemovalEventArgsCollection Removals { get; private set; }
+
+        internal SynchronizationResult()
+        {
+            Uploads = new TransferEventArgsCollection();
+            Downloads = new TransferEventArgsCollection();
+            Removals = new RemovalEventArgsCollection();
+        }
+
+        internal void AddUpload(TransferEventArgs upload)
+        {
+            Uploads.InternalAdd(upload);
+        }
+
+        internal void AddDownload(TransferEventArgs download)
+        {
+            Downloads.InternalAdd(download);
+        }
+
+        internal void AddRemoval(RemovalEventArgs removal)
+        {
+            Removals.InternalAdd(removal);
+        }
+    }
+}

+ 47 - 0
dotnet/TouchEventArgs.cs

@@ -0,0 +1,47 @@
+using System;
+using System.Runtime.InteropServices;
+using System.Xml;
+
+namespace WinSCP
+{
+    [Guid("802FCEF7-E1D3-4205-B171-87A3724E85FA")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public sealed class TouchEventArgs : FileOperationEventArgs
+    {
+        public DateTime LastWriteTime { get; private set; }
+
+        internal const string Tag = "touch";
+
+        private TouchEventArgs()
+        {
+        }
+
+        internal static TouchEventArgs Read(CustomLogReader areader)
+        {
+            TouchEventArgs args = new TouchEventArgs();
+
+            using (ElementLogReader reader = new ElementLogReader(areader))
+            {
+                while (reader.Read(0))
+                {
+                    string value;
+                    if (reader.GetEmptyElementValue("filename", out value))
+                    {
+                        args.FileName = value;
+                    }
+                    else if (reader.GetEmptyElementValue("modification", out value))
+                    {
+                        args.LastWriteTime = XmlConvert.ToDateTime(value, XmlDateTimeSerializationMode.Local);
+                    }
+                    else if (SessionRemoteException.IsResult(reader))
+                    {
+                        args.Error = SessionRemoteException.ReadResult(reader);
+                    }
+                }
+            }
+
+            return args;
+        }
+    }
+}

+ 50 - 0
dotnet/TransferEventArgs.cs

@@ -0,0 +1,50 @@
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    [Guid("772FACCC-0786-42E1-B1C8-F08D13C9CD07")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public sealed class TransferEventArgs : FileOperationEventArgs
+    {
+        public string Destination { get; private set; }
+
+        public TouchEventArgs Touch { get; internal set; }
+        public ChmodEventArgs Chmod { get; internal set; }
+        public RemovalEventArgs Removal { get; internal set; }
+
+        internal const string UploadTag = "upload";
+        internal const string DownloadTag = "download";
+
+        internal TransferEventArgs()
+        {
+        }
+
+        internal static TransferEventArgs Read(CustomLogReader areader)
+        {
+            TransferEventArgs args = new TransferEventArgs();
+
+            using (ElementLogReader reader = new ElementLogReader(areader))
+            {
+                while (reader.Read(0))
+                {
+                    string value;
+                    if (reader.GetEmptyElementValue("filename", out value))
+                    {
+                        args.FileName = value;
+                    }
+                    else if (reader.GetEmptyElementValue("destination", out value))
+                    {
+                        args.Destination = value;
+                    }
+                    else if (SessionRemoteException.IsResult(reader))
+                    {
+                        args.Error = SessionRemoteException.ReadResult(reader);
+                    }
+                }
+            }
+
+            return args;
+        }
+    }
+}

+ 22 - 0
dotnet/TransferOperationResult.cs

@@ -0,0 +1,22 @@
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    [Guid("74F668E6-8EF2-4D01-84D8-DA2FE619C062")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public sealed class TransferOperationResult : OperationResultBase
+    {
+        public TransferEventArgsCollection Transfers { get; private set; }
+
+        internal TransferOperationResult()
+        {
+            Transfers = new TransferEventArgsCollection();
+        }
+
+        internal void AddTransfer(TransferEventArgs operation)
+        {
+            Transfers.InternalAdd(operation);
+        }
+    }
+}

+ 80 - 0
dotnet/TransferOptions.cs

@@ -0,0 +1,80 @@
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    [Guid("6B19CBFA-0D81-4B36-A587-E11AA6A06214")]
+    [ComVisible(true)]
+    public enum TransferMode
+    {
+        Binary = 0,
+        Ascii = 1,
+        Automatic = 2,
+    }
+
+    [Guid("155B841F-39D4-40C8-BA87-C79675E14CE3")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public sealed class TransferOptions
+    {
+        public bool PreserveTimestamp { get; set; }
+        public FilePermissions FilePermissions { get; set; }
+        public TransferMode TransferMode { get; set; }
+        public string FileMask { get; set; }
+        public TransferResumeSupport ResumeSupport { get; private set; }
+
+        public TransferOptions()
+        {
+            PreserveTimestamp = true;
+            TransferMode = TransferMode.Binary;
+            ResumeSupport = new TransferResumeSupport();
+        }
+
+        internal string ToSwitches()
+        {
+            List<string> switches = new List<string>();
+
+            if (FilePermissions != null)
+            {
+                switches.Add(Session.FormatSwitch("permissions", FilePermissions.Octal));
+            }
+            else
+            {
+                switches.Add("-nopermissions");
+            }
+
+            switches.Add(Session.BooleanSwitch(PreserveTimestamp, "preservetime", "nopreservetime"));
+
+            string transferModeName;
+            switch (TransferMode)
+            {
+                case TransferMode.Binary:
+                    transferModeName = "binary";
+                    break;
+                case TransferMode.Ascii:
+                    transferModeName = "ascii";
+                    break;
+                case TransferMode.Automatic:
+                    transferModeName = "automatic";
+                    break;
+                default:
+                    throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, "{0} is not supported", TransferMode));
+            }
+            switches.Add(Session.FormatSwitch("transfer", transferModeName));
+
+            if (!string.IsNullOrEmpty(FileMask))
+            {
+                switches.Add(Session.FormatSwitch("filemask", FileMask));
+            }
+
+            if (ResumeSupport.State != TransferResumeSupportState.Default)
+            {
+                switches.Add(Session.FormatSwitch("resumesupport", ResumeSupport.ToString()));
+            }
+
+            return string.Join(" ", switches.ToArray());
+        }
+    }
+}

+ 81 - 0
dotnet/TransferResumeSupport.cs

@@ -0,0 +1,81 @@
+using System.Runtime.InteropServices;
+using System;
+using System.Globalization;
+
+namespace WinSCP
+{
+    [Guid("0ADAAEBC-4A15-4A9C-8ED4-D85F5630035C")]
+    [ComVisible(true)]
+    public enum TransferResumeSupportState
+    {
+        Default,
+        On,
+        Off,
+        Smart
+    }
+
+    [Guid("6CED4579-0DF2-4E46-93E9-18780546B421")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public sealed class TransferResumeSupport
+    {
+        public TransferResumeSupportState State { get; set; }
+        public int Threshold { get { return GetThreshold(); } set { SetThreshold(value); } }
+
+        internal TransferResumeSupport()
+        {
+            State = TransferResumeSupportState.Default;
+            _threshold = 100; // (100 KiB)
+        }
+
+        public override string ToString()
+        {
+            string result;
+            switch (State)
+            {
+                case TransferResumeSupportState.Default:
+                    result = "default";
+                    break;
+                case TransferResumeSupportState.Off:
+                    result = "off";
+                    break;
+                case TransferResumeSupportState.On:
+                    result = "on";
+                    break;
+                case TransferResumeSupportState.Smart:
+                    result = Threshold.ToString(CultureInfo.InvariantCulture);
+                    break;
+                default:
+                    result = "unknown";
+                    break;
+            }
+            return result;
+        }
+
+        private int GetThreshold()
+        {
+            CheckSmart();
+            return _threshold;
+        }
+
+        private void SetThreshold(int threshold)
+        {
+            if (threshold <= 0)
+            {
+                throw new ArgumentOutOfRangeException("threshold", "Threshold must be possitive");
+            }
+            CheckSmart();
+            _threshold = threshold;
+        }
+
+        private void CheckSmart()
+        {
+            if (State != TransferResumeSupportState.Smart)
+            {
+                throw new InvalidOperationException("Threshold is undefined when state is not Smart");
+            }
+        }
+
+        private int _threshold;
+    }
+}

+ 111 - 0
dotnet/WinSCPnet.csproj

@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{DF44CF5D-6809-4557-A343-FEC46F14B3FF}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>WinSCP</RootNamespace>
+    <AssemblyName>WinSCP</AssemblyName>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <OutputPath>$(FINAL_PATH)\$(Configuration)</OutputPath>
+    <IntermediateOutputPath>$(INTERM_PATH)\$(Configuration)</IntermediateOutputPath>
+    <BaseIntermediateOutputPath>$(INTERM_PATH)\$(Configuration)</BaseIntermediateOutputPath>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>WinSCPnet.ruleset</CodeAnalysisRuleSet>
+    <RunCodeAnalysis>true</RunCodeAnalysis>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>WinSCPnet.ruleset</CodeAnalysisRuleSet>
+    <RunCodeAnalysis>true</RunCodeAnalysis>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+  </PropertyGroup>
+  <PropertyGroup />
+  <PropertyGroup>
+    <SignAssembly>false</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>
+    </AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <PropertyGroup>
+    <DelaySign>false</DelaySign>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="ChmodEventArgs.cs" />
+    <Compile Include="CommandExecutionResult.cs" />
+    <Compile Include="Internal\Callstack.cs" />
+    <Compile Include="Internal\CallstackAndLock.cs" />
+    <Compile Include="Internal\ConsoleCommStruct.cs" />
+    <Compile Include="Internal\ExeSessionProcess.cs" />
+    <Compile Include="Internal\Job.cs" />
+    <Compile Include="Internal\Lock.cs" />
+    <Compile Include="Internal\Logger.cs" />
+    <Compile Include="Internal\ProgressHandler.cs" />
+    <Compile Include="Internal\UnsafeNativeMethods.cs" />
+    <Compile Include="OutputDataReceivedEventArgs.cs" />
+    <Compile Include="FileTransferProgressEventArgs.cs" />
+    <Compile Include="RemoteDirectoryInfo.cs" />
+    <Compile Include="FailedEventArgs.cs" />
+    <Compile Include="FileOperationEventArgs.cs" />
+    <Compile Include="GlobalSuppressions.cs" />
+    <Compile Include="FilePermissions.cs" />
+    <Compile Include="Internal\Constants.cs" />
+    <Compile Include="Internal\ReadOnlyInteropCollectionHelper.cs" />
+    <Compile Include="InteropCollections\RemoteFileInfoCollection.cs" />
+    <Compile Include="InteropCollections\RemovalEventArgsCollection.cs" />
+    <Compile Include="InteropCollections\SessionRemoteExceptionCollection.cs" />
+    <Compile Include="InteropCollections\StringCollection.cs" />
+    <Compile Include="InteropCollections\TransferEventArgsCollection.cs" />
+    <Compile Include="RemovalEventArgs.cs" />
+    <Compile Include="RemovalOperationResult.cs" />
+    <Compile Include="SessionEvents.cs" />
+    <Compile Include="SynchronizationResult.cs" />
+    <Compile Include="TransferEventArgs.cs" />
+    <Compile Include="TransferOperationResult.cs" />
+    <Compile Include="TransferOptions.cs" />
+    <Compile Include="Internal\CustomLogReader.cs" />
+    <Compile Include="Internal\ElementLogReader.cs" />
+    <Compile Include="Internal\OperationResultGuard.cs" />
+    <Compile Include="OperationEventArgs.cs" />
+    <Compile Include="OperationResultBase.cs" />
+    <Compile Include="RemoteFileInfo.cs" />
+    <Compile Include="Session.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="SessionOptions.cs" />
+    <Compile Include="SessionException.cs" />
+    <Compile Include="SessionLocalException.cs" />
+    <Compile Include="SessionRemoteException.cs" />
+    <Compile Include="Internal\SessionLogReader.cs" />
+    <Compile Include="TouchEventArgs.cs" />
+    <Compile Include="TransferResumeSupport.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="App.config">
+      <SubType>Designer</SubType>
+    </None>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+</Project>

+ 9 - 0
dotnet/WinSCPnet.ruleset

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RuleSet Name="WinSCP rules (subset of Microsoft All Rules)" ToolsVersion="10.0">
+  <IncludeAll Action="Warning" />
+  <Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
+    <Rule Id="CA1026" Action="None" />
+    <Rule Id="CA1704" Action="None" />
+    <Rule Id="CA2204" Action="None" />
+  </Rules>
+</RuleSet>

+ 57 - 0
dotnet/internal/Callstack.cs

@@ -0,0 +1,57 @@
+using System;
+using System.Diagnostics;
+using System.Globalization;
+using System.Reflection;
+
+namespace WinSCP
+{
+    internal class Callstack : IDisposable
+    {
+        public Callstack(Logger logger)
+        {
+            _logger = logger;
+            if (_logger.Logging)
+            {
+                Type type = GetType();
+                StackTrace stackTrace = new StackTrace();
+                int i = 0;
+                MethodBase method;
+                do
+                {
+                    StackFrame frame = stackTrace.GetFrame(i);
+                    method = frame.GetMethod();
+                    if ((method.IsConstructor && method.DeclaringType.IsAssignableFrom(type)) ||
+                        ((method.MemberType == MemberTypes.Method) && ((MethodInfo)method).ReturnType.IsAssignableFrom(type)))
+                    {
+                        method = null;
+                    }
+                    else
+                    {
+                        break;
+                    }
+                    i++;
+                }
+                while (i < stackTrace.FrameCount);
+
+                if (method != null)
+                {
+                    _name = string.Format(CultureInfo.InvariantCulture, "{0}.{1}", method.DeclaringType.Name, method.Name);
+                    _logger.WriteLine("{0} entering", _name);
+                    _logger.Indent();
+                }
+            }
+        }
+
+        public virtual void Dispose()
+        {
+            if (_name != null)
+            {
+                _logger.Unindent();
+                _logger.WriteLine("{0} leaving", _name);
+            }
+        }
+
+        private readonly Logger _logger;
+        private readonly string _name;
+    }
+}

+ 22 - 0
dotnet/internal/CallstackAndLock.cs

@@ -0,0 +1,22 @@
+using System.Reflection;
+
+namespace WinSCP
+{
+    internal class CallstackAndLock : Callstack
+    {
+        public CallstackAndLock(Logger logger, Lock alock) :
+            base(logger)
+        {
+            _lock = alock;
+            _lock.Enter();
+        }
+
+        public override void Dispose()
+        {
+            _lock.Exit();
+            base.Dispose();
+        }
+
+        private readonly Lock _lock;
+    }
+}

+ 215 - 0
dotnet/internal/ConsoleCommStruct.cs

@@ -0,0 +1,215 @@
+using System.Runtime.InteropServices;
+using System;
+using Microsoft.Win32.SafeHandles;
+
+namespace WinSCP
+{
+    public enum ConsoleEvent { None, Print, Input, Choice, Title, Init, Progress }
+
+    [StructLayout(LayoutKind.Sequential)]
+    internal class ConsoleInitEventStruct
+    {
+        public uint InputType;
+        public uint OutputType;
+        public bool WantsProgress;
+    };
+
+    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
+    internal class ConsolePrintEventStruct
+    {
+        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10240)]
+        public string Message; // wide since version 4
+        [MarshalAs(UnmanagedType.I1)]
+        public bool FromBeginning;
+    };
+
+    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
+    internal class ConsoleInputEventStruct
+    {
+        [MarshalAs(UnmanagedType.I1)]
+        public bool Echo;
+        [MarshalAs(UnmanagedType.I1)]
+        public bool Result;
+        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10240)]
+        public string Str; // wide since version 4
+        public uint Timer; // since version 2
+    };
+
+    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
+    internal class ConsoleChoiceEventStruct
+    {
+        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
+        public string Options; // wide since version 4
+        public int Cancel;
+        public int Break;
+        public int Result;
+        public int Timeouted; // since version 2
+        public uint Timer; // since version 2
+        [MarshalAs(UnmanagedType.I1)]
+        public bool Timeouting; // since version 4
+    }
+
+    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
+    internal class ConsoleTitleEventStruct
+    {
+        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10240)]
+        public string Title; // wide since version 4
+    }
+
+    // Since version 6
+    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
+    internal class ConsoleProgressEventStruct
+    {
+        public enum ProgressOperation { Copy }
+        public enum ProgressSide { Local, Remote }
+
+        public ProgressOperation Operation;
+        public ProgressSide Side; 
+
+        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
+        public string FileName;
+
+        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
+        public string Directory;
+
+        public uint OverallProgress;
+        public uint FileProgress;
+        public uint CPS;
+    }
+
+    [StructLayout(LayoutKind.Sequential)]
+    internal class ConsoleCommHeader
+    {
+        public uint Size;
+
+        public int Version;
+
+        public ConsoleEvent Event;
+    }
+
+    internal class ConsoleCommStruct : IDisposable
+    {
+        public const int CurrentVersion = 0x0006;
+
+        public ConsoleCommStruct(Session session, SafeFileHandle fileMapping)
+        {
+            _session = session;
+            _fileMapping = fileMapping;
+            _ptr = UnsafeNativeMethods.MapViewOfFile(_fileMapping, 0x1F /*FILE_MAP_ALL_ACCESS*/, 0, 0, UIntPtr.Zero);
+            _payloadPtr = new IntPtr(_ptr.ToInt64() + 12);
+            _header = (ConsoleCommHeader)Marshal.PtrToStructure(_ptr, typeof(ConsoleCommHeader));
+        }
+
+        ~ConsoleCommStruct()
+        {
+            Dispose();
+        }
+
+        public void Dispose()
+        {
+            if (_ptr != IntPtr.Zero)
+            {
+                if (_headerInvalidated)
+                {
+                    Marshal.StructureToPtr(_header, _ptr, false);
+                }
+
+                if (_payload != null)
+                {
+                    if ((Event != ConsoleEvent.Print) && (Event != ConsoleEvent.Title))
+                    {
+                        Marshal.StructureToPtr(_payload, _payloadPtr, false);
+                    }
+                }
+
+                if (!UnsafeNativeMethods.UnmapViewOfFile(_ptr))
+                {
+                    throw new SessionLocalException(_session, "Cannot release file mapping");
+                }
+
+                _ptr = IntPtr.Zero;
+            }
+            GC.SuppressFinalize(this);
+        }
+
+        public ConsoleEvent Event
+        {
+            get
+            {
+                return _header.Event;
+            }
+        }
+
+        public ConsolePrintEventStruct PrintEvent { get { return UnmarshalPayload<ConsolePrintEventStruct>(ConsoleEvent.Print); } }
+
+        public ConsoleInitEventStruct InitEvent { get { return UnmarshalPayload<ConsoleInitEventStruct>(ConsoleEvent.Init); } }
+
+        public ConsoleInputEventStruct InputEvent { get { return UnmarshalPayload<ConsoleInputEventStruct>(ConsoleEvent.Input); } }
+
+        public ConsoleChoiceEventStruct ChoiceEvent { get { return UnmarshalPayload<ConsoleChoiceEventStruct>(ConsoleEvent.Choice); } }
+
+        public ConsoleTitleEventStruct TitleEvent { get { return UnmarshalPayload<ConsoleTitleEventStruct>(ConsoleEvent.Title); } }
+
+        public ConsoleProgressEventStruct ProgressEvent { get { return UnmarshalPayload<ConsoleProgressEventStruct>(ConsoleEvent.Progress); } }
+
+        private T UnmarshalPayload<T>(ConsoleEvent e)
+        {
+            CheckNotDisposed();
+
+            if (e != Event)
+            {
+                throw new InvalidOperationException();
+            }
+
+            if (_payload == null)
+            {
+                _payload = Marshal.PtrToStructure(_payloadPtr, typeof(T));
+            }
+
+            return (T)_payload;
+        }
+
+        private void CheckNotDisposed()
+        {
+            if (_ptr == IntPtr.Zero)
+            {
+                throw new InvalidOperationException();
+            }
+        }
+
+        public static int Size
+        {
+            get
+            {
+                Type[] types =
+                    new[] {
+                        typeof(ConsolePrintEventStruct), typeof(ConsoleInitEventStruct), typeof(ConsoleInputEventStruct),
+                        typeof(ConsoleChoiceEventStruct), typeof(ConsoleTitleEventStruct), typeof(ConsoleProgressEventStruct) };
+
+                int maxSize = 0;
+                foreach (Type type in types)
+                {
+                    maxSize = Math.Max(maxSize, Marshal.SizeOf(type));
+                }
+
+                return (Marshal.SizeOf(typeof(ConsoleCommHeader)) + maxSize);
+            }
+        }
+
+        public void InitHeader()
+        {
+            _headerInvalidated = true;
+            _header.Size = (uint) Size;
+            _header.Version = CurrentVersion;
+            _header.Event = ConsoleEvent.None;
+        }
+
+        private IntPtr _ptr;
+        private readonly ConsoleCommHeader _header;
+        private bool _headerInvalidated;
+        private readonly IntPtr _payloadPtr;
+        private object _payload;
+        private readonly SafeFileHandle _fileMapping;
+        private readonly Session _session;
+    }
+}

+ 9 - 0
dotnet/internal/Constants.cs

@@ -0,0 +1,9 @@
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    internal static class Constants
+    {
+        public const ClassInterfaceType ClassInterface = ClassInterfaceType.AutoDispatch;
+    }
+}

+ 126 - 0
dotnet/internal/CustomLogReader.cs

@@ -0,0 +1,126 @@
+using System;
+using System.Xml;
+
+namespace WinSCP
+{
+    [Flags]
+    internal enum LogReadFlags
+    {
+        ThrowFailures = 0x01
+    }
+
+    internal abstract class CustomLogReader : IDisposable
+    {
+        public Session Session { get; private set; }
+        public XmlNodeType NodeType { get { return Reader.NodeType; } }
+        public string NamespaceURI { get { return Reader.NamespaceURI; } }
+        public string LocalName { get { return Reader.LocalName; } }
+        public bool IsEmptyElement { get { return Reader.IsEmptyElement; } }
+        public int Depth { get { return Reader.Depth; } }
+        public string Value { get { return Reader.Value; } }
+
+        internal abstract XmlReader Reader { get; }
+
+        public abstract bool Read(LogReadFlags flags);
+
+        protected CustomLogReader(Session session)
+        {
+            Session = session;
+        }
+
+        public virtual void Dispose()
+        {
+        }
+
+        public bool IsElement()
+        {
+            return
+                (NodeType == XmlNodeType.Element) &&
+                (NamespaceURI == Session.Namespace);
+        }
+
+        public bool IsElement(string localName)
+        {
+            return
+                IsElement() &&
+                (LocalName == localName);
+        }
+
+        public bool IsNonEmptyElement(string localName)
+        {
+            return
+                IsElement(localName) &&
+                !IsEmptyElement;
+        }
+
+        public bool GetEmptyElementValue(string localName, out string value)
+        {
+            bool result =
+                IsElement(localName) &&
+                IsEmptyElement;
+
+            if (result)
+            {
+                value = GetAttribute("value");
+                result = (value != null);
+            }
+            else
+            {
+                value = null;
+            }
+
+            return result;
+        }
+
+        public bool IsEndElement(string localName)
+        {
+            return
+                (NodeType == XmlNodeType.EndElement) &&
+                (NamespaceURI == Session.Namespace) &&
+                (LocalName == localName);
+        }
+
+        public bool TryWaitForNonEmptyElement(string localName, LogReadFlags flags)
+        {
+            bool result = false;
+            while (!result && Read(flags))
+            {
+                if (IsNonEmptyElement(localName))
+                {
+                    result = true;
+                }
+            }
+            return result;
+        }
+
+        public void WaitForNonEmptyElement(string localName, LogReadFlags flags)
+        {
+            if (!TryWaitForNonEmptyElement(localName, flags))
+            {
+                throw SessionLocalException.CreateElementNotFound(Session, localName);
+            }
+        }
+
+        public ElementLogReader CreateLogReader()
+        {
+            return new ElementLogReader(this);
+        }
+
+        public ElementLogReader WaitForNonEmptyElementAndCreateLogReader(string localName, LogReadFlags flags)
+        {
+            WaitForNonEmptyElement(localName, flags);
+
+            return CreateLogReader();
+        }
+
+        public ElementLogReader WaitForGroupAndCreateLogReader()
+        {
+            return WaitForNonEmptyElementAndCreateLogReader("group", LogReadFlags.ThrowFailures);
+        }
+
+        public string GetAttribute(string name)
+        {
+            return Reader.GetAttribute(name);
+        }
+    }
+}

+ 85 - 0
dotnet/internal/ElementLogReader.cs

@@ -0,0 +1,85 @@
+using System;
+using System.Xml;
+
+namespace WinSCP
+{
+    internal class ElementLogReader : CustomLogReader
+    {
+        public ElementLogReader(CustomLogReader parentReader) :
+            base(parentReader.Session)
+        {
+            _parentReader = parentReader;
+
+            if ((NodeType != XmlNodeType.Element) ||
+                IsEmptyElement)
+            {
+                throw new InvalidOperationException();
+            }
+
+            _localName = _parentReader.Reader.LocalName;
+            _depth = _parentReader.Reader.Depth;
+            _read = false;
+        }
+
+        public override void Dispose()
+        {
+            using (Session.Logger.CreateCallstack())
+            {
+                try
+                {
+                    ReadToEnd(0);
+                }
+                catch (Exception)
+                {
+                    // swallow
+                    Session.Logger.WriteLine("Swallowing exception");
+                }
+            }
+
+            base.Dispose();
+        }
+
+        public override bool Read(LogReadFlags flags)
+        {
+            if (_read)
+            {
+                throw new InvalidOperationException("Element already read to the end");
+            }
+
+            bool result = _parentReader.Read(flags);
+
+            if (result &&
+                IsEndElement(_localName) &&
+                (Depth == _depth))
+            {
+                result = false;
+                _read = true;
+            }
+
+            return result;
+        }
+
+        public void ReadToEnd(LogReadFlags flags)
+        {
+            using (Session.Logger.CreateCallstack())
+            {
+                if (!_read)
+                {
+                    while (Read(flags))
+                    {
+                    }
+                }
+            }
+        }
+
+        internal override XmlReader Reader
+        {
+            get { return _parentReader.Reader; }
+        }
+
+        private readonly CustomLogReader _parentReader;
+        private readonly string _localName;
+        private readonly int _depth;
+        private bool _read;
+    }
+}

+ 642 - 0
dotnet/internal/ExeSessionProcess.cs

@@ -0,0 +1,642 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Globalization;
+using System.IO;
+using System.Threading;
+using Microsoft.Win32;
+using Microsoft.Win32.SafeHandles;
+
+namespace WinSCP
+{
+    internal class ExeSessionProcess : IDisposable
+    {
+        public event OutputDataReceivedEventHandler OutputDataReceived;
+
+        public bool HasExited { get { return _process.HasExited; } }
+        public int ExitCode { get { return _process.ExitCode; } }
+
+        public ExeSessionProcess(Session session)
+        {
+            _session = session;
+            _logger = session.Logger;
+            _incompleteLine = string.Empty;
+
+            using (_logger.CreateCallstack())
+            {
+                string executablePath = GetExecutablePath();
+
+                _logger.WriteLine("EXE executable path resolved to {0}", executablePath);
+
+                string assemblyFilePath = _logger.GetAssemblyFilePath();
+                FileVersionInfo assemblyVersion = null;
+                if (assemblyFilePath != null)
+                {
+                    assemblyVersion = FileVersionInfo.GetVersionInfo(assemblyFilePath);
+                }
+
+                CheckVersion(executablePath, assemblyVersion);
+
+                string configSwitch;
+                if (_session.DefaultConfiguration)
+                {
+                    configSwitch = "/ini=nul ";
+                }
+                else
+                {
+                    if (!string.IsNullOrEmpty(_session.IniFilePath))
+                    {
+                        configSwitch = string.Format(CultureInfo.InvariantCulture, "/ini=\"{0}\" ", _session.IniFilePath);
+                    }
+                    else
+                    {
+                        configSwitch = "";
+                    }
+                }
+
+                string logSwitch = null;
+                if (!string.IsNullOrEmpty(_session.SessionLogPath))
+                {
+                    logSwitch = string.Format(CultureInfo.InvariantCulture, "/log=\"{0}\" ", LogPathEscape(_session.SessionLogPath));
+                }
+
+                string xmlLogSwitch = string.Format(CultureInfo.InvariantCulture, "/xmllog=\"{0}\" ", LogPathEscape(_session.XmlLogPath));
+
+                string assemblyVersionStr =
+                    (assemblyVersion == null) ? "unk" :
+                    string.Format(CultureInfo.InvariantCulture, "{0}{1}{2} ", assemblyVersion.ProductMajorPart, assemblyVersion.ProductMinorPart, assemblyVersion.ProductBuildPart);
+
+                string assemblyVersionSwitch =
+                    string.Format(CultureInfo.InvariantCulture, "/dotnet={0} ", assemblyVersionStr);
+
+                string arguments =
+                    xmlLogSwitch + "/xmlgroups /nointeractiveinput " + assemblyVersionSwitch +
+                    configSwitch + logSwitch + _session.AdditionalExecutableArguments;
+
+                _process = new Process();
+                _process.StartInfo.FileName = executablePath;
+                _process.StartInfo.WorkingDirectory = Path.GetDirectoryName(executablePath);
+                _process.StartInfo.Arguments = arguments;
+                _process.StartInfo.UseShellExecute = false;
+                _process.Exited += ProcessExited;
+                if (_logger.Logging)
+                {
+                    _process.OutputDataReceived += ProcessOutputDataReceived;
+                    _process.ErrorDataReceived += ProcessErrorDataReceived;
+                }
+            }
+        }
+
+        private static string LogPathEscape(string path)
+        {
+            return Session.ArgumentEscape(path).Replace("!", "!!");
+        }
+
+        public void Abort()
+        {
+            using (_logger.CreateCallstack())
+            {
+                lock (_lock)
+                {
+                    if ((_process != null) && !_process.HasExited)
+                    {
+                        _process.Kill();
+                    }
+                }
+            }
+        }
+
+        public void Start()
+        {
+            using (_logger.CreateCallstack())
+            {
+                InitializeConsole();
+                InitializeChild();
+            }
+        }
+
+        private void InitializeChild()
+        {
+            using (_logger.CreateCallstack())
+            {
+                _process.StartInfo.Arguments += string.Format(CultureInfo.InvariantCulture, " /console /consoleinstance={0}", _instanceName);
+
+                _logger.WriteLine("Starting \"{0}\" {1}", _process.StartInfo.FileName, _process.StartInfo.Arguments);
+
+                _process.Start();
+
+                _logger.WriteLine("Started process {0}", _process.Id);
+
+                _job.AddProcess(_process.Handle);
+
+                _thread = new Thread(ProcessEvents);
+                _thread.IsBackground = true;
+                _thread.Start();
+            }
+        }
+
+        private void ProcessExited(object sender, EventArgs e)
+        {
+            _logger.WriteLine("Process {0} exited with exit code {1}", _process.Id, _process.ExitCode);
+        }
+
+        private void ProcessOutputDataReceived(object sender, DataReceivedEventArgs e)
+        {
+            _logger.WriteLine("Process output: {0}", e.Data);
+        }
+
+        private void ProcessErrorDataReceived(object sender, DataReceivedEventArgs e)
+        {
+            _logger.WriteLine("Process error output: {0}", e.Data);
+        }
+
+        private bool AbortedOrExited()
+        {
+            if (_abort)
+            {
+                _logger.WriteLine("Aborted");
+                return true;
+            }
+            else if (_process.HasExited)
+            {
+                _logger.WriteLine("Exited");
+                return true;
+            }
+            else
+            {
+                return false;
+            }
+        }
+
+        private void ProcessEvents()
+        {
+            using (_logger.CreateCallstack())
+            {
+                while (!AbortedOrExited())
+                {
+                    if (_requestEvent.WaitOne(100, false))
+                    {
+                        ProcessEvent();
+                    }
+                }
+            }
+        }
+
+        private void ProcessEvent()
+        {
+            using (_logger.CreateCallstack())
+            {
+                using (ConsoleCommStruct commStruct = AcquireCommStruct())
+                {
+                    switch (commStruct.Event)
+                    {
+                        case ConsoleEvent.Print:
+                            ProcessPrintEvent(commStruct.PrintEvent);
+                            break;
+
+                        case ConsoleEvent.Input:
+                            ProcessInputEvent(commStruct.InputEvent);
+                            break;
+
+                        case ConsoleEvent.Choice:
+                            ProcessChoiceEvent(commStruct.ChoiceEvent);
+                            break;
+
+                        case ConsoleEvent.Title:
+                            ProcessTitleEvent(commStruct.TitleEvent);
+                            break;
+
+                        case ConsoleEvent.Init:
+                            ProcessInitEvent(commStruct.InitEvent);
+                            break;
+
+                        case ConsoleEvent.Progress:
+                            ProcessProgressEvent(commStruct.ProgressEvent);
+                            break;
+
+                        default:
+                            throw new NotImplementedException();
+                    }
+                }
+
+                _responseEvent.Set();
+            }
+        }
+
+        private void ProcessChoiceEvent(ConsoleChoiceEventStruct e)
+        {
+            using (_logger.CreateCallstack())
+            {
+                if (e.Timeouting)
+                {
+                    Thread.Sleep((int)e.Timer);
+                    e.Result = e.Timeouted;
+                }
+                else
+                {
+                    e.Result = e.Break;
+                }
+            }
+        }
+
+        private void ProcessTitleEvent(ConsoleTitleEventStruct e)
+        {
+            using (_logger.CreateCallstack())
+            {
+                _logger.WriteLine("Not-supported title event [{0}]", e.Title);
+            }
+        }
+
+        private void ProcessInputEvent(ConsoleInputEventStruct e)
+        {
+            using (_logger.CreateCallstack())
+            {
+                while (!AbortedOrExited())
+                {
+                    lock (_input)
+                    {
+                        if (_input.Count > 0)
+                        {
+                            e.Str = _input[0];
+                            e.Result = true;
+                            _input.RemoveAt(0);
+                            Print(false, e.Str + "\n");
+                            return;
+                        }
+                    }
+
+                    _inputEvent.WaitOne(100, false);
+                }
+            }
+        }
+
+        private void Print(bool fromBeginning, string message)
+        {
+            if (fromBeginning && ((message.Length == 0) || (message[0] != '\n')))
+            {
+                _lastFromBeginning = message;
+                _logger.WriteLine("Buffered from-beginning message [{0}]", _lastFromBeginning);
+            }
+            else
+            {
+                if (!string.IsNullOrEmpty(_lastFromBeginning))
+                {
+                    AddToOutput(_lastFromBeginning);
+                    _lastFromBeginning = null;
+                }
+
+                if (fromBeginning && (message.Length > 0) && (message[0] == '\n'))
+                {
+                    AddToOutput("\n");
+                    _lastFromBeginning = message.Substring(1);
+                    _logger.WriteLine("Buffered from-beginning message [{0}]", _lastFromBeginning);
+                }
+                else
+                {
+                    AddToOutput(message);
+                }
+            }
+        }
+
+        private void AddToOutput(string message)
+        {
+            string[] lines = (_incompleteLine + message).Split(new[] { '\n' });
+
+            _incompleteLine = lines[lines.Length - 1];
+
+            for (int i = 0; i < lines.Length - 1; ++i)
+            {
+                if (OutputDataReceived != null)
+                {
+                    OutputDataReceived(this, new OutputDataReceivedEventArgs(lines[i]));
+                }
+            }
+        }
+
+        private void ProcessPrintEvent(ConsolePrintEventStruct e)
+        {
+            Print(e.FromBeginning, e.Message);
+        }
+
+        private void ProcessInitEvent(ConsoleInitEventStruct e)
+        {
+            using (_logger.CreateCallstack())
+            {
+                e.InputType = 3; // pipe
+                e.OutputType = 3; // pipe
+                e.WantsProgress = _session.WantsProgress;
+            }
+        }
+
+        private void ProcessProgressEvent(ConsoleProgressEventStruct e)
+        {
+            using (_logger.CreateCallstack())
+            {
+                FileTransferProgressEventArgs args = new FileTransferProgressEventArgs();
+
+                switch (e.Operation)
+                {
+                    case ConsoleProgressEventStruct.ProgressOperation.Copy:
+                        args.Operation = ProgressOperation.Transfer;
+                        break;
+
+                    default:
+                        throw new ArgumentOutOfRangeException("Unknown progress operation", (Exception)null);
+                }
+
+                switch (e.Side)
+                {
+                    case ConsoleProgressEventStruct.ProgressSide.Local:
+                        args.Side = ProgressSide.Local;
+                        break;
+
+                    case ConsoleProgressEventStruct.ProgressSide.Remote:
+                        args.Side = ProgressSide.Remote;
+                        break;
+
+                    default:
+                        throw new ArgumentOutOfRangeException("Unknown progress side", (Exception)null);
+                }
+
+                args.FileName = e.FileName;
+                args.Directory = e.Directory;
+                args.OverallProgress = ((double)e.OverallProgress) / 100;
+                args.FileProgress = ((double)e.FileProgress) / 100;
+                args.CPS = (int) e.CPS;
+                _session.ProcessProgress(args);
+            }
+        }
+
+        private void InitializeConsole()
+        {
+            using (_logger.CreateCallstack())
+            {
+                int attempts = 0;
+                Random random = new Random();
+                int process = Process.GetCurrentProcess().Id;
+
+                bool uniqEvent;
+
+                do
+                {
+                    if (attempts > MaxAttempts)
+                    {
+                        throw new SessionLocalException(_session, "Cannot find unique name for event object.");
+                    }
+
+                    int instanceNumber = random.Next(1000);
+
+                    _instanceName = string.Format(CultureInfo.InvariantCulture, "_{0}_{1}", process, instanceNumber);
+                    _requestEvent = new EventWaitHandle(false, EventResetMode.AutoReset, ConsoleEventRequest + _instanceName, out uniqEvent);
+                    if (!uniqEvent)
+                    {
+                        _requestEvent.Close();
+                        _requestEvent = null;
+                    }
+                    else
+                    {
+                        _responseEvent = CreateEvent(ConsoleEventResponse + _instanceName);
+                        _cancelEvent = CreateEvent(ConsoleEventCancel + _instanceName);
+                        string fileMappingName = ConsoleMapping + _instanceName;
+                        _fileMapping = UnsafeNativeMethods.CreateFileMapping(
+                            new SafeFileHandle(new IntPtr(-1), true), IntPtr.Zero, 0x04 /*readwrite*/, 0,
+                            ConsoleCommStruct.Size, fileMappingName);
+                        if (_fileMapping.IsInvalid)
+                        {
+                            throw new SessionLocalException(_session, string.Format(CultureInfo.InvariantCulture, "Cannot create file mapping {0}", fileMappingName));
+                        }
+                    }
+                    ++attempts;
+                }
+                while (!uniqEvent);
+
+                using (ConsoleCommStruct commStruct = AcquireCommStruct())
+                {
+                    commStruct.InitHeader();
+                }
+            }
+        }
+
+        private ConsoleCommStruct AcquireCommStruct()
+        {
+            return new ConsoleCommStruct(_session, _fileMapping);
+        }
+
+        private EventWaitHandle CreateEvent(string name)
+        {
+            bool createdNew;
+            EventWaitHandle ev = new EventWaitHandle(false, EventResetMode.AutoReset, name, out createdNew);
+            if (!createdNew)
+            {
+                throw new SessionLocalException(_session, string.Format(CultureInfo.InvariantCulture, "Event {0} already exists", name));
+            }
+            return ev;
+        }
+
+        public void ExecuteCommand(string command)
+        {
+            using (_logger.CreateCallstack())
+            {
+                lock (_input)
+                {
+                    _input.Add(command);
+                    _inputEvent.Set();
+                }
+            }
+        }
+
+        public void Close()
+        {
+            using (_logger.CreateCallstack())
+            {
+                _logger.WriteLine("Waiting for process to exit");
+
+                if (!_process.WaitForExit(1000))
+                {
+                    _logger.WriteLine("Killing process");
+                    _process.Kill();
+                }
+            }
+        }
+
+        public void Dispose()
+        {
+            using (_logger.CreateCallstack())
+            {
+                lock (_lock)
+                {
+                    _abort = true;
+                    if (_thread != null)
+                    {
+                        _thread.Join();
+                        _thread = null;
+                    }
+                    if (_process != null)
+                    {
+                        _process.Dispose();
+                        _process = null;
+                    }
+                    if (_requestEvent != null)
+                    {
+                        _requestEvent.Close();
+                    }
+                    if (_responseEvent != null)
+                    {
+                        _responseEvent.Close();
+                    }
+                    if (_cancelEvent != null)
+                    {
+                        _cancelEvent.Close();
+                    }
+                    if (_fileMapping != null)
+                    {
+                        _fileMapping.Dispose();
+                        _fileMapping = null;
+                    }
+                    if (_inputEvent != null)
+                    {
+                        _inputEvent.Close();
+                        _inputEvent = null;
+                    }
+                    if (_job != null)
+                    {
+                        _job.Dispose();
+                        _job = null;
+                    }
+                }
+            }
+        }
+
+        private string GetExecutablePath()
+        {
+            using (_logger.CreateCallstack())
+            {
+                string executablePath;
+                if (!string.IsNullOrEmpty(_session.ExecutablePath))
+                {
+                    executablePath = _session.ExecutablePath;
+                    if (!File.Exists(executablePath))
+                    {
+                        throw new SessionLocalException(_session, string.Format(CultureInfo.CurrentCulture, "{0} does not exists.", executablePath));
+                    }
+                }
+                else
+                {
+                    if (!TryFindExecutableInPath(GetAssemblyPath(), out executablePath) &&
+                        !TryFindExecutableInPath(GetInstallationPath(Registry.CurrentUser), out executablePath) &&
+                        !TryFindExecutableInPath(GetInstallationPath(Registry.LocalMachine), out executablePath) &&
+                        !TryFindExecutableInPath(GetDefaultInstallationPath(), out executablePath))
+                    {
+                        throw new SessionLocalException(_session,
+                            string.Format(CultureInfo.CurrentCulture,
+                                "The {0} executable was not found at location of the assembly ({1}), nor in an installation path. You may use Session.ExecutablePath property to explicitly set path to {0}.",
+                                ExeExecutableFileName, GetAssemblyPath()));
+                    }
+                }
+                return executablePath;
+            }
+        }
+
+        private static string GetDefaultInstallationPath()
+        {
+            return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "WinSCP");
+        }
+
+        private static string GetInstallationPath(RegistryKey rootKey)
+        {
+            RegistryKey key = rootKey.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Uninstall\winscp3_is1");
+            return (key != null) ? (string)key.GetValue("Inno Setup: App Path") : null;
+        }
+
+        private bool TryFindExecutableInPath(string path, out string result)
+        {
+            if (string.IsNullOrEmpty(path))
+            {
+                result = null;
+            }
+            else
+            {
+                string executablePath = Path.Combine(path, ExeExecutableFileName);
+                if (File.Exists(executablePath))
+                {
+                    result = executablePath;
+                    _logger.WriteLine("Executable found in {0}", executablePath);
+                }
+                else
+                {
+                    result = null;
+                    _logger.WriteLine("Executable not found in {0}", executablePath);
+                }
+            }
+            return (result != null);
+        }
+
+        private string GetAssemblyPath()
+        {
+            string codeBasePath = _logger.GetAssemblyFilePath();
+            string path = null;
+            if (!string.IsNullOrEmpty(codeBasePath))
+            {
+                path = Path.GetDirectoryName(codeBasePath);
+                Debug.Assert(path != null);
+            }
+            return path;
+        }
+
+        private void CheckVersion(string exePath, FileVersionInfo assemblyVersion)
+        {
+            using (_logger.CreateCallstack())
+            {
+                FileVersionInfo version = FileVersionInfo.GetVersionInfo(exePath);
+
+                _logger.WriteLine("Version of {0} is {1}, product {2} version is {3}", exePath, version.FileVersion, version.ProductName, version.ProductVersion);
+
+                if (_session.DisableVersionCheck)
+                {
+                    _logger.WriteLine("Version check disabled (not recommended)");
+                }
+                else if (assemblyVersion == null)
+                {
+                    _logger.WriteLine("Assembly version not known, cannot check version");
+                }
+                else if (assemblyVersion.ProductVersion != version.ProductVersion)
+                {
+                    throw new SessionLocalException(
+                        _session, string.Format(CultureInfo.CurrentCulture,
+                            "The version of {0} ({1}) does not match version of this assembly {2} ({3}). You can disable this check using Session.DisableVersionCheck (not recommended).",
+                            exePath, version.ProductVersion, _logger.GetAssemblyFilePath(), assemblyVersion.ProductVersion));
+                }
+            }
+        }
+
+        public void WriteStatus()
+        {
+            string executablePath = GetExecutablePath();
+            _logger.WriteLine("{0} - exists [{1}]", executablePath, File.Exists(executablePath));
+        }
+
+        private const int MaxAttempts = 10;
+        private const string ConsoleMapping = "WinSCPConsoleMapping";
+        private const string ConsoleEventRequest = "WinSCPConsoleEventRequest";
+        private const string ConsoleEventResponse = "WinSCPConsoleEventResponse";
+        private const string ConsoleEventCancel = "WinSCPConsoleEventCancel";
+        private const string ExeExecutableFileName = "winscp.exe";
+
+        private Process _process;
+        private readonly object _lock = new object();
+        private readonly Logger _logger;
+        private readonly Session _session;
+        private EventWaitHandle _requestEvent;
+        private EventWaitHandle _responseEvent;
+        private EventWaitHandle _cancelEvent;
+        private SafeFileHandle _fileMapping;
+        private string _instanceName;
+        private Thread _thread;
+        private bool _abort;
+        private string _lastFromBeginning;
+        private string _incompleteLine;
+        private readonly List<string> _input = new List<string>();
+        private AutoResetEvent _inputEvent = new AutoResetEvent(false);
+        private Job _job = new Job();
+    }
+}

+ 17 - 0
dotnet/internal/ISessionProcess.cs

@@ -0,0 +1,17 @@
+using System;
+using System.Diagnostics;
+
+namespace WinSCP
+{
+    internal interface ISessionProcess : IDisposable
+    {
+        event OutputDataReceivedEventHandler OutputDataReceived;
+        bool HasExited { get; }
+        int ExitCode { get; }
+
+        void Start();
+        void ExecuteCommand(string command);
+
+        void Close();
+    }
+}

+ 54 - 0
dotnet/internal/Job.cs

@@ -0,0 +1,54 @@
+using System;
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    internal class Job : IDisposable
+    {
+        public Job()
+        {
+            _handle = UnsafeNativeMethods.CreateJobObject(IntPtr.Zero, null);
+
+            JobObjectBasicLimitInformation info = new JobObjectBasicLimitInformation();
+            info.LimitFlags = 0x2000;
+
+            JobObjectExtendedLimitInformation extendedInfo = new JobObjectExtendedLimitInformation();
+            extendedInfo.BasicLimitInformation = info;
+
+            int length = Marshal.SizeOf(typeof(JobObjectExtendedLimitInformation));
+            IntPtr extendedInfoPtr = Marshal.AllocHGlobal(length);
+            Marshal.StructureToPtr(extendedInfo, extendedInfoPtr, false);
+
+            UnsafeNativeMethods.SetInformationJobObject(_handle, JobObjectInfoType.ExtendedLimitInformation, extendedInfoPtr, (uint)length);
+        }
+
+        ~Job()
+        {
+            DoDispose();
+        }
+
+        public void Dispose()
+        {
+            DoDispose();
+            GC.SuppressFinalize(this);
+        }
+
+        private void DoDispose()
+        {
+            Close();
+        }
+
+        public void Close()
+        {
+            UnsafeNativeMethods.CloseHandle(_handle);
+            _handle = IntPtr.Zero;
+        }
+
+        public bool AddProcess(IntPtr handle)
+        {
+            return UnsafeNativeMethods.AssignProcessToJobObject(_handle, handle);
+        }
+
+        private IntPtr _handle;
+    }
+}

+ 32 - 0
dotnet/internal/Lock.cs

@@ -0,0 +1,32 @@
+using System;
+using System.Threading;
+
+namespace WinSCP
+{
+    public class Lock
+    {
+        public void Enter()
+        {
+            Monitor.Enter(_lock);
+            if (_locked)
+            {
+                Monitor.Exit(_lock);
+                throw new InvalidOperationException("Recursive calls not allowed");
+            }
+            _locked = true;
+        }
+
+        public void Exit()
+        {
+            if (!_locked)
+            {
+                throw new InvalidOperationException("Not locked");
+            }
+            _locked = false;
+            Monitor.Exit(_lock);
+        }
+
+        private readonly object _lock = new object();
+        private bool _locked;
+    }
+}

+ 283 - 0
dotnet/internal/Logger.cs

@@ -0,0 +1,283 @@
+using System;
+using System.Globalization;
+using System.IO;
+using System.Threading;
+using System.Reflection;
+using System.Diagnostics;
+using System.Collections.Generic;
+
+namespace WinSCP
+{
+    internal class Logger : IDisposable
+    {
+        public string LogPath { get { return _logPath; } set { SetLogPath(value); } }
+        public bool Logging { get { return (_writter != null) && _writter.BaseStream.CanWrite; } }
+
+        public string GetAssemblyFilePath()
+        {
+            Assembly assembly = Assembly.GetExecutingAssembly();
+            string path = null;
+            string codeBase = assembly.CodeBase;
+            string location = assembly.Location;
+            // cannot use Uri.UnescapeDataString, because it treats some characters valid in
+            // local path (like #) specially
+            const string protocol = "file:///";
+            if (codeBase.StartsWith(protocol, StringComparison.OrdinalIgnoreCase))
+            {
+                path =
+                    codeBase.Substring(protocol.Length).Replace('/', '\\');
+            }
+
+            if ((path == null) || !File.Exists(path))
+            {
+                if (File.Exists(location))
+                {
+                    path = location;
+                }
+                else
+                {
+                    WriteLine(
+                        string.Format(
+                            CultureInfo.CurrentCulture,
+                            "Cannot locate path of assembly [{0}] neither from its code base [{1}], nor from its location [{2}]",
+                            assembly, codeBase, location));
+                    path = null;
+                }
+            }
+
+            return path;
+        }
+
+        private void CreateCounters()
+        {
+            try
+            {
+                PerformanceCounterCategory[] categories = PerformanceCounterCategory.GetCategories();
+                foreach (PerformanceCounterCategory category in categories)
+                {
+                    if (category.CategoryName == "Processor")
+                    {
+                        string[] instances = category.GetInstanceNames();
+                        foreach (string instance in instances)
+                        {
+                            AddCounter(new PerformanceCounter(category.CategoryName, "% Processor Time", instance));
+                        }
+                    }
+                }
+
+                AddCounter(new PerformanceCounter("Memory", "Available KBytes"));
+            }
+            catch (Exception e)
+            {
+                WriteLine("Error getting counters: {0}", e);
+            }
+        }
+
+        private void AddCounter(PerformanceCounter counter)
+        {
+            counter.NextValue();
+            _processorCounters.Add(counter);
+        }
+
+        public void WriteLine(string message)
+        {
+            lock (_logLock)
+            {
+                if (Logging)
+                {
+                    DoWriteLine(message);
+                }
+            }
+        }
+
+        public void WriteLine(string format, params object[] args)
+        {
+            lock (_logLock)
+            {
+                if (Logging)
+                {
+                    DoWriteLine(string.Format(CultureInfo.CurrentCulture, format, args));
+                }
+            }
+        }
+
+        private static int GetThread()
+        {
+            return Thread.CurrentThread.ManagedThreadId;
+        }
+
+        public void Indent()
+        {
+            lock (_logLock)
+            {
+                int threadId = GetThread();
+                int indent;
+                if (!_indents.TryGetValue(threadId, out indent))
+                {
+                    indent = 0;
+                }
+                _indents[threadId] = indent + 1;
+            }
+        }
+
+        public void Unindent()
+        {
+            lock (_logLock)
+            {
+                int threadId = GetThread();
+                _indents[threadId]--;
+            }
+        }
+
+        public void Dispose()
+        {
+            lock (_logLock)
+            {
+                if (Logging)
+                {
+                    WriteCounters();
+                    WriteProcesses();
+                    _writter.Dispose();
+                    _writter = null;
+                }
+            }
+        }
+
+        public void WriteCounters()
+        {
+            if (Logging)
+            {
+                try
+                {
+                    foreach (PerformanceCounter counter in _processorCounters)
+                    {
+                        WriteLine("{0}{1}{2} = [{3}]",
+                            counter.CounterName,
+                            (string.IsNullOrEmpty(counter.InstanceName) ? string.Empty : "/"),
+                            counter.InstanceName,
+                            counter.NextValue());
+                    }
+                }
+                catch (Exception e)
+                {
+                    WriteLine("Error reading counters: {0}", e);
+                }
+            }
+        }
+
+        public void WriteProcesses()
+        {
+            if (Logging)
+            {
+                try
+                {
+                    Process[] processes = Process.GetProcesses();
+
+                    foreach (Process process in processes)
+                    {
+                        WriteLine("{0}:{1} - {2} - {3}", process.Id, process.ProcessName, GetProcessStartTime(process), GetTotalProcessorTime(process));
+                    }
+                }
+                catch (Exception e)
+                {
+                    WriteLine("Error logging processes: {0}", e);
+                }
+            }
+        }
+
+        private static object GetProcessStartTime(Process process)
+        {
+            try
+            {
+                return process.StartTime;
+            }
+            catch
+            {
+                return "???";
+            }
+        }
+
+        private static object GetTotalProcessorTime(Process process)
+        {
+            try
+            {
+                return process.TotalProcessorTime;
+            }
+            catch
+            {
+                return "???";
+            }
+        }
+
+        public Callstack CreateCallstack()
+        {
+            return new Callstack(this);
+        }
+
+        public Callstack CreateCallstackAndLock()
+        {
+            return new CallstackAndLock(this, _lock);
+        }
+
+        private int GetIndent()
+        {
+            int indent;
+            if (!_indents.TryGetValue(GetThread(), out indent))
+            {
+                indent = 0;
+            }
+            return indent;
+        }
+
+        private void DoWriteLine(string message)
+        {
+            int indent = GetIndent();
+
+            string s =
+                string.Format(CultureInfo.InvariantCulture, "[{0:yyyy-MM-dd HH:mm:ss.fffZ}] [{1:x4}] {2}{3}",
+                DateTime.Now, Thread.CurrentThread.ManagedThreadId,
+                (indent > 0 ? new string(' ', indent * 2) : string.Empty), message);
+            _writter.WriteLine(s);
+        }
+
+        private void SetLogPath(string value)
+        {
+            lock (_logLock)
+            {
+                if (_logPath != value)
+                {
+                    Dispose();
+                    _logPath = value;
+                    if (!string.IsNullOrEmpty(_logPath))
+                    {
+                        _writter = File.CreateText(_logPath);
+                        _writter.AutoFlush = true;
+                        WriteEnvironmentInfo();
+                        CreateCounters();
+                    }
+                }
+            }
+        }
+
+        private void WriteEnvironmentInfo()
+        {
+            string path = GetAssemblyFilePath();
+            FileVersionInfo version = string.IsNullOrEmpty(path) ? null : FileVersionInfo.GetVersionInfo(path);
+            Assembly assembly = Assembly.GetExecutingAssembly();
+            WriteLine("Executing Assembly: {0}; Path: {1}; Location: {2}; Product: {3}", assembly, path, assembly.Location, ((version != null) ? version.ProductVersion : "unknown"));
+            WriteLine("Entry Assembly: {0}", Assembly.GetEntryAssembly());
+            WriteLine("Operating system: {0}", Environment.OSVersion);
+            WriteLine("User: {0}@{1}@{2}; Interactive: {3}", Environment.UserName, Environment.UserDomainName, Environment.MachineName, Environment.UserInteractive);
+            WriteLine("Runtime: {0}", Environment.Version);
+            WriteLine("Console encoding: Input: {0} ({1}); Output: {2} ({3})", Console.InputEncoding.EncodingName, Console.InputEncoding.CodePage, Console.OutputEncoding.EncodingName, Console.OutputEncoding.CodePage);
+            WriteLine("Working directory: {0}", Environment.CurrentDirectory);
+        }
+
+        private StreamWriter _writter;
+        private string _logPath;
+        private readonly Dictionary<int, int> _indents = new Dictionary<int, int>();
+        private readonly object _logLock = new object();
+        private readonly Lock _lock = new Lock();
+        private List<PerformanceCounter> _processorCounters = new List<PerformanceCounter>();
+    }
+}

+ 21 - 0
dotnet/internal/OperationResultGuard.cs

@@ -0,0 +1,21 @@
+using System;
+
+namespace WinSCP
+{
+    internal class OperationResultGuard : IDisposable
+    {
+        public OperationResultGuard(Session session, OperationResultBase operationResult)
+        {
+            _session = session;
+            _operationResult = operationResult;
+        }
+
+        public void Dispose()
+        {
+            _session.UnregisterOperationResult(_operationResult);
+        }
+        
+        private readonly Session _session;
+        private readonly OperationResultBase _operationResult;
+    }
+}

+ 22 - 0
dotnet/internal/ProgressHandler.cs

@@ -0,0 +1,22 @@
+using System;
+
+namespace WinSCP
+{
+    internal class ProgressHandler : IDisposable
+    {
+        public ProgressHandler(Session session)
+        {
+            _session = session;
+        }
+
+        public void Dispose()
+        {
+            using (_session.Logger.CreateCallstack())
+            {
+                _session.DisableProgressHandling();
+            }
+        }
+
+        private Session _session;
+    }
+}

+ 90 - 0
dotnet/internal/ReadOnlyInteropCollectionHelper.cs

@@ -0,0 +1,90 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+namespace WinSCP
+{
+    internal class ReadOnlyInteropCollectionHelper<T> : ICollection<T>
+    {
+        public void InternalAdd(T item)
+        {
+            _list.Add(item);
+        }
+
+        public T this[int index]
+        {
+            get
+            {
+                return _list[index];
+            }
+            set
+            {
+                throw CreateReadOnlyException();
+            }
+        }
+
+        #region ICollection<T> Members
+
+        public void Add(T item)
+        {
+            throw CreateReadOnlyException();
+        }
+
+        public void Clear()
+        {
+            throw CreateReadOnlyException();
+        }
+
+        public bool Contains(T item)
+        {
+            return _list.Contains(item);
+        }
+
+        public void CopyTo(T[] array, int arrayIndex)
+        {
+            _list.CopyTo(array, arrayIndex);
+        }
+
+        public int Count
+        {
+            get { return _list.Count; }
+        }
+
+        public bool IsReadOnly
+        {
+            get { return true; }
+        }
+
+        public bool Remove(T item)
+        {
+            throw CreateReadOnlyException();
+        }
+
+        #endregion
+
+        #region IEnumerable<T> Members
+
+        public IEnumerator<T> GetEnumerator()
+        {
+            return _list.GetEnumerator();
+        }
+
+        #endregion
+
+        #region IEnumerable Members
+
+        IEnumerator IEnumerable.GetEnumerator()
+        {
+            return _list.GetEnumerator();
+        }
+
+        #endregion
+
+        private static Exception CreateReadOnlyException()
+        {
+            return new InvalidOperationException("Collection is read-only.");
+        }
+
+        private readonly List<T> _list = new List<T>();
+    }
+}

+ 249 - 0
dotnet/internal/SessionLogReader.cs

@@ -0,0 +1,249 @@
+using System;
+using System.Diagnostics;
+using System.IO;
+using System.Xml;
+using System.Text;
+
+namespace WinSCP
+{
+    internal class SessionLogReader : CustomLogReader
+    {
+        public SessionLogReader(Session session) :
+            base(session)
+        {
+            _position = 0;
+        }
+
+        public override void Dispose()
+        {
+            using (Session.Logger.CreateCallstack())
+            {
+                Cleanup();
+            }
+            base.Dispose();
+        }
+
+        private void Cleanup()
+        {
+            if (_stream != null)
+            {
+                Session.Logger.WriteLine("Closing log");
+                _stream.Dispose();
+                _stream = null;
+            }
+
+            _reader = null;
+        }
+
+        public override bool Read(LogReadFlags flags)
+        {
+            using (Session.Logger.CreateCallstack())
+            {
+                bool result;
+                bool retry;
+
+                do
+                {
+                    result = DoRead();
+
+                    retry = false;
+
+                    if (result &&
+                        IsNonEmptyElement("failure"))
+                    {
+                        SessionRemoteException e = SessionRemoteException.ReadFailure(this);
+
+                        Session.RaiseFailed(e);
+
+                        if ((flags & LogReadFlags.ThrowFailures) == 0)
+                        {
+                            retry = true;
+                        }
+                        else
+                        {
+                            throw e;
+                        }
+                    }
+                }
+                while (retry);
+
+                return result;
+            }
+        }
+
+        private bool DoRead()
+        {
+            int interval = 125;
+            bool result;
+
+            do
+            {
+                if (_reader == null)
+                {
+                    OpenLog();
+                }
+
+                Debug.Assert(_reader != null);
+
+                try
+                {
+                    result = _reader.Read();
+                    if (result)
+                    {
+                        ++_position;
+                        Session.Logger.WriteLine("Read node {0}: {1} {2}{3}{4}",
+                            _position, _reader.NodeType, _reader.Name,
+                            (_reader.HasValue && !string.IsNullOrEmpty(_reader.Name) && !string.IsNullOrEmpty(_reader.Value) ? "=" : string.Empty),
+                            _reader.Value);
+                        Session.GotOutput();
+                    }
+                    else
+                    {
+                        Session.Logger.WriteLine("Cannot read");
+
+                        if (!_closed)
+                        {
+                            // this should not happen as when the log is not closed,
+                            // we should get XmlException on reaching the end
+                            _closed = true;
+                            Cleanup();
+                        }
+
+                        Session.CheckForTimeout();
+                    }
+                }
+                catch (XmlException e)
+                {
+                    Cleanup();
+
+                    if (!_closed)
+                    {
+                        // If log was not closed, it is likely the XML is not well-formed
+                        // (at least top-level <session/> tag is not closed),
+                        // so we swallow the parsing errors here.
+                        Session.Logger.WriteLine("Error parsing session log file, but it is not closed yet, will retry");
+                        result = false;
+                    }
+                    else
+                    {
+                        // check if the the root cause was session abort
+                        Session.CheckForTimeout();
+                        LogContents();
+                        throw new SessionLocalException(Session, "Error parsing session log file", e);
+                    }
+                }
+
+                if (!result && !_closed)
+                {
+                    Session.Logger.WriteLine("Waiting for log update and dispatching events for {0}", interval);
+                    Session.DispatchEvents(interval);
+                    if (interval < 500)
+                    {
+                        interval *= 2;
+                    }
+                }
+            }
+            while (!result && !_closed);
+
+            if (result)
+            {
+                LogContents();
+            }
+
+            return result;
+        }
+
+        private void LogContents()
+        {
+            if (Session.Logger.Logging)
+            {
+                try
+                {
+                    // alterative to File.ReadAllText with write-sharing
+                    // (note that the StreamReader disposes the Stream)
+                    using (StreamReader reader = new StreamReader(OpenLogFileWithWriteSharing(), Encoding.UTF8))
+                    {
+                        string contents = reader.ReadToEnd();
+                        if ((_logged == null) || (_logged != contents))
+                        {
+                            Session.Logger.WriteLine("Log contents:\n{0}", contents);
+                            _logged = contents;
+                        }
+                        else
+                        {
+                            Session.Logger.WriteLine("Log contents has not changed");
+                        }
+                    }
+                }
+                catch (Exception e)
+                {
+                    Session.Logger.WriteLine("Error logging log contents [{0}]", e.Message);
+                }
+            }
+        }
+
+        private void OpenLog()
+        {
+            Session.Logger.WriteLine("Opening log");
+
+            if (_closed)
+            {
+                throw new InvalidOperationException("Log was closed already");
+            }
+
+            try
+            {
+                // First try to open file without write sharing.
+                // This fails, if WinSCP is still writing to the log file.
+                // This is done only as a way to detect that log file is not complete yet.
+                _stream = File.Open(Session.XmlLogPath, FileMode.Open, FileAccess.Read, FileShare.Read);
+                _closed = true;
+                Session.Logger.WriteLine("Log opened without write sharing");
+                LogContents();
+            }
+            catch (IOException)
+            {
+                // If log file is still being written to, open it with write sharing
+                _stream = OpenLogFileWithWriteSharing();
+                _closed = false;
+                Session.Logger.WriteLine("Log opened with write sharing");
+            }
+
+            _reader = XmlReader.Create(_stream);
+
+            int skip = _position;
+            Session.Logger.WriteLine("Skipping {0} nodes", skip);
+            while (skip > 0)
+            {
+                if (!_reader.Read())
+                {
+                    throw new SessionLocalException(Session, "Read less nodes than in previous log parsing");
+                }
+                --skip;
+            }
+        }
+
+        private FileStream OpenLogFileWithWriteSharing()
+        {
+            return File.Open(Session.XmlLogPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
+        }
+
+        internal override XmlReader Reader
+        {
+            get
+            {
+                if (_reader == null)
+                {
+                    throw new SessionLocalException(Session, "Reading has not commenced yet");
+                }
+                return _reader;
+            }
+        }
+
+        private int _position;
+        private XmlReader _reader;
+        private FileStream _stream;
+        private bool _closed;
+        private string _logged;
+    }
+}

+ 88 - 0
dotnet/internal/UnsafeNativeMethods.cs

@@ -0,0 +1,88 @@
+using Microsoft.Win32.SafeHandles;
+using System;
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    internal enum JobObjectInfoType
+    {
+        AssociateCompletionPortInformation = 7,
+        BasicLimitInformation = 2,
+        BasicUIRestrictions = 4,
+        EndOfJobTimeInformation = 6,
+        ExtendedLimitInformation = 9,
+        SecurityLimitInformation = 5,
+        GroupInformation = 11
+    }
+
+    [StructLayout(LayoutKind.Sequential)]
+    internal struct SecurityAttributes
+    {
+        public int nLength;
+        public IntPtr lpSecurityDescriptor;
+        public int bInheritHandle;
+    }
+
+    [StructLayout(LayoutKind.Sequential)]
+    internal struct JobObjectBasicLimitInformation
+    {
+        public Int64 PerProcessUserTimeLimit;
+        public Int64 PerJobUserTimeLimit;
+        public Int16 LimitFlags;
+        public UInt32 MinimumWorkingSetSize;
+        public UInt32 MaximumWorkingSetSize;
+        public Int16 ActiveProcessLimit;
+        public Int64 Affinity;
+        public Int16 PriorityClass;
+        public Int16 SchedulingClass;
+    }
+
+    [StructLayout(LayoutKind.Sequential)]
+    internal struct IOCounters
+    {
+        public UInt64 ReadOperationCount;
+        public UInt64 WriteOperationCount;
+        public UInt64 OtherOperationCount;
+        public UInt64 ReadTransferCount;
+        public UInt64 WriteTransferCount;
+        public UInt64 OtherTransferCount;
+    }
+
+    [StructLayout(LayoutKind.Sequential)]
+    internal struct JobObjectExtendedLimitInformation
+    {
+        public JobObjectBasicLimitInformation BasicLimitInformation;
+        public IOCounters IoInfo;
+        public UInt32 ProcessMemoryLimit;
+        public UInt32 JobMemoryLimit;
+        public UInt32 PeakProcessMemoryUsed;
+        public UInt32 PeakJobMemoryUsed;
+    }
+
+    internal static class UnsafeNativeMethods
+    {
+        [DllImport("kernel32", CharSet = CharSet.Unicode, SetLastError = true)]
+        public static extern SafeFileHandle CreateFileMapping(SafeFileHandle hFile, IntPtr lpAttributes, int fProtect, int dwMaximumSizeHigh, int dwMaximumSizeLow, string lpName);
+
+        [DllImport("kernel32", SetLastError = true, ExactSpelling = true)]
+        public static extern IntPtr MapViewOfFile(SafeFileHandle handle, int dwDesiredAccess, uint dwFileOffsetHigh, uint dwFileOffsetLow, UIntPtr dwNumberOfBytesToMap);
+
+        [DllImport("kernel32", ExactSpelling = true)]
+        [return: MarshalAs(UnmanagedType.Bool)]
+        public static extern bool UnmapViewOfFile(IntPtr lpBaseAddress);
+
+        [DllImport("kernel32", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)]
+        public static extern int CloseHandle(IntPtr hObject);
+
+        [DllImport("kernel32", CharSet = CharSet.Unicode)]
+        public static extern IntPtr CreateJobObject(IntPtr a, string lpName);
+
+        [DllImport("kernel32")]
+        [return: MarshalAs(UnmanagedType.Bool)]
+        public static extern bool SetInformationJobObject(IntPtr hJob, JobObjectInfoType infoType, IntPtr lpJobObjectInfo, uint cbJobObjectInfoLength);
+
+        [DllImport("kernel32", SetLastError = true)]
+        [return: MarshalAs(UnmanagedType.Bool)]
+        public static extern bool AssignProcessToJobObject(IntPtr job, IntPtr process);
+    }
+}

+ 88 - 0
dotnet/interopcollections/RemoteFileInfoCollection.cs

@@ -0,0 +1,88 @@
+using System.Collections;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    [Guid("39AA3D00-578C-49AF-B3E4-16CE26C710C6")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public class RemoteFileInfoCollection : ICollection<RemoteFileInfo>
+    {
+        public RemoteFileInfo this[int index]
+        {
+            get
+            {
+                return _helper[index];
+            }
+            set
+            {
+                _helper[index] = value;
+            }
+        }
+
+        #region ICollection<RemoteFileInfo> Members
+
+        public void Add(RemoteFileInfo item)
+        {
+            _helper.Add(item);
+        }
+
+        public void Clear()
+        {
+            _helper.Clear();
+        }
+
+        public bool Contains(RemoteFileInfo item)
+        {
+            return _helper.Contains(item);
+        }
+
+        public void CopyTo(RemoteFileInfo[] array, int arrayIndex)
+        {
+            _helper.CopyTo(array, arrayIndex);
+        }
+
+        public int Count
+        {
+            get { return _helper.Count; }
+        }
+
+        public bool IsReadOnly
+        {
+            get { return _helper.IsReadOnly; }
+        }
+
+        public bool Remove(RemoteFileInfo item)
+        {
+            return _helper.Remove(item);
+        }
+
+        #endregion
+
+        #region IEnumerable<RemoteFileInfo> Members
+
+        IEnumerator<RemoteFileInfo> IEnumerable<RemoteFileInfo>.GetEnumerator()
+        {
+            return _helper.GetEnumerator();
+        }
+
+        #endregion
+
+        #region IEnumerable Members
+
+        public IEnumerator GetEnumerator()
+        {
+            return _helper.GetEnumerator();
+        }
+
+        #endregion
+
+        internal void InternalAdd(RemoteFileInfo item)
+        {
+            _helper.InternalAdd(item);
+        }
+
+        private readonly ReadOnlyInteropCollectionHelper<RemoteFileInfo> _helper = new ReadOnlyInteropCollectionHelper<RemoteFileInfo>();
+    }
+}

+ 88 - 0
dotnet/interopcollections/RemovalEventArgsCollection.cs

@@ -0,0 +1,88 @@
+using System.Collections;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    [Guid("574FF430-FD40-41F9-9A04-971D3CF844B7")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public class RemovalEventArgsCollection : ICollection<RemovalEventArgs>
+    {
+        public RemovalEventArgs this[int index]
+        {
+            get
+            {
+                return _helper[index];
+            }
+            set
+            {
+                _helper[index] = value;
+            }
+        }
+
+        #region ICollection<RemovalEventArgs> Members
+
+        public void Add(RemovalEventArgs item)
+        {
+            _helper.Add(item);
+        }
+
+        public void Clear()
+        {
+            _helper.Clear();
+        }
+
+        public bool Contains(RemovalEventArgs item)
+        {
+            return _helper.Contains(item);
+        }
+
+        public void CopyTo(RemovalEventArgs[] array, int arrayIndex)
+        {
+            _helper.CopyTo(array, arrayIndex);
+        }
+
+        public int Count
+        {
+            get { return _helper.Count; }
+        }
+
+        public bool IsReadOnly
+        {
+            get { return _helper.IsReadOnly; }
+        }
+
+        public bool Remove(RemovalEventArgs item)
+        {
+            return _helper.Remove(item);
+        }
+
+        #endregion
+
+        #region IEnumerable<RemovalEventArgs> Members
+
+        IEnumerator<RemovalEventArgs> IEnumerable<RemovalEventArgs>.GetEnumerator()
+        {
+            return _helper.GetEnumerator();
+        }
+
+        #endregion
+
+        #region IEnumerable Members
+
+        public IEnumerator GetEnumerator()
+        {
+            return _helper.GetEnumerator();
+        }
+
+        #endregion
+
+        internal void InternalAdd(RemovalEventArgs item)
+        {
+            _helper.InternalAdd(item);
+        }
+
+        private readonly ReadOnlyInteropCollectionHelper<RemovalEventArgs> _helper = new ReadOnlyInteropCollectionHelper<RemovalEventArgs>();
+    }
+}

+ 88 - 0
dotnet/interopcollections/SessionRemoteExceptionCollection.cs

@@ -0,0 +1,88 @@
+using System.Collections;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    [Guid("2309282F-B89B-4F6B-AEB1-D3E1629B7033")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public class SessionRemoteExceptionCollection : ICollection<SessionRemoteException>
+    {
+        public SessionRemoteException this[int index]
+        {
+            get
+            {
+                return _helper[index];
+            }
+            set
+            {
+                _helper[index] = value;
+            }
+        }
+
+        #region ICollection<SessionRemoteException> Members
+
+        public void Add(SessionRemoteException item)
+        {
+            _helper.Add(item);
+        }
+
+        public void Clear()
+        {
+            _helper.Clear();
+        }
+
+        public bool Contains(SessionRemoteException item)
+        {
+            return _helper.Contains(item);
+        }
+
+        public void CopyTo(SessionRemoteException[] array, int arrayIndex)
+        {
+            _helper.CopyTo(array, arrayIndex);
+        }
+
+        public int Count
+        {
+            get { return _helper.Count; }
+        }
+
+        public bool IsReadOnly
+        {
+            get { return _helper.IsReadOnly; }
+        }
+
+        public bool Remove(SessionRemoteException item)
+        {
+            return _helper.Remove(item);
+        }
+
+        #endregion
+
+        #region IEnumerable<SessionRemoteException> Members
+
+        IEnumerator<SessionRemoteException> IEnumerable<SessionRemoteException>.GetEnumerator()
+        {
+            return _helper.GetEnumerator();
+        }
+
+        #endregion
+
+        #region IEnumerable Members
+
+        public IEnumerator GetEnumerator()
+        {
+            return _helper.GetEnumerator();
+        }
+
+        #endregion
+
+        internal void InternalAdd(SessionRemoteException item)
+        {
+            _helper.InternalAdd(item);
+        }
+
+        private readonly ReadOnlyInteropCollectionHelper<SessionRemoteException> _helper = new ReadOnlyInteropCollectionHelper<SessionRemoteException>();
+    }
+}

+ 88 - 0
dotnet/interopcollections/StringCollection.cs

@@ -0,0 +1,88 @@
+using System.Collections;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    [Guid("E402CB1F-6219-4C79-9EDF-1914D9589909")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public class StringCollection : ICollection<string>
+    {
+        public string this[int index]
+        {
+            get
+            {
+                return _helper[index];
+            }
+            set
+            {
+                _helper[index] = value;
+            }
+        }
+
+        #region ICollection<string> Members
+
+        public void Add(string item)
+        {
+            _helper.Add(item);
+        }
+
+        public void Clear()
+        {
+            _helper.Clear();
+        }
+
+        public bool Contains(string item)
+        {
+            return _helper.Contains(item);
+        }
+
+        public void CopyTo(string[] array, int arrayIndex)
+        {
+            _helper.CopyTo(array, arrayIndex);
+        }
+
+        public int Count
+        {
+            get { return _helper.Count; }
+        }
+
+        public bool IsReadOnly
+        {
+            get { return _helper.IsReadOnly; }
+        }
+
+        public bool Remove(string item)
+        {
+            return _helper.Remove(item);
+        }
+
+        #endregion
+
+        #region IEnumerable<SessionRemoteException> Members
+
+        IEnumerator<string> IEnumerable<string>.GetEnumerator()
+        {
+            return _helper.GetEnumerator();
+        }
+
+        #endregion
+
+        #region IEnumerable Members
+
+        public IEnumerator GetEnumerator()
+        {
+            return _helper.GetEnumerator();
+        }
+
+        #endregion
+
+        internal void InternalAdd(string item)
+        {
+            _helper.InternalAdd(item);
+        }
+
+        private readonly ReadOnlyInteropCollectionHelper<string> _helper = new ReadOnlyInteropCollectionHelper<string>();
+    }
+}

+ 88 - 0
dotnet/interopcollections/TransferEventArgsCollection.cs

@@ -0,0 +1,88 @@
+using System.Collections;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+
+namespace WinSCP
+{
+    [Guid("0285917B-581A-4F6F-9A9D-1C34ABFB4E38")]
+    [ClassInterface(Constants.ClassInterface)]
+    [ComVisible(true)]
+    public class TransferEventArgsCollection : ICollection<TransferEventArgs>
+    {
+        public TransferEventArgs this[int index]
+        {
+            get
+            {
+                return _helper[index];
+            }
+            set
+            {
+                _helper[index] = value;
+            }
+        }
+
+        #region ICollection<TransferEventArgs> Members
+
+        public void Add(TransferEventArgs item)
+        {
+            _helper.Add(item);
+        }
+
+        public void Clear()
+        {
+            _helper.Clear();
+        }
+
+        public bool Contains(TransferEventArgs item)
+        {
+            return _helper.Contains(item);
+        }
+
+        public void CopyTo(TransferEventArgs[] array, int arrayIndex)
+        {
+            _helper.CopyTo(array, arrayIndex);
+        }
+
+        public int Count
+        {
+            get { return _helper.Count; }
+        }
+
+        public bool IsReadOnly
+        {
+            get { return _helper.IsReadOnly; }
+        }
+
+        public bool Remove(TransferEventArgs item)
+        {
+            return _helper.Remove(item);
+        }
+
+        #endregion
+
+        #region IEnumerable<SessionRemoteException> Members
+
+        IEnumerator<TransferEventArgs> IEnumerable<TransferEventArgs>.GetEnumerator()
+        {
+            return _helper.GetEnumerator();
+        }
+
+        #endregion
+
+        #region IEnumerable Members
+
+        public IEnumerator GetEnumerator()
+        {
+            return _helper.GetEnumerator();
+        }
+
+        #endregion
+
+        internal void InternalAdd(TransferEventArgs item)
+        {
+            _helper.InternalAdd(item);
+        }
+
+        private readonly ReadOnlyInteropCollectionHelper<TransferEventArgs> _helper = new ReadOnlyInteropCollectionHelper<TransferEventArgs>();
+    }
+}

+ 373 - 0
dotnet/licence-dotnet.txt

@@ -0,0 +1,373 @@
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+    means each individual or legal entity that creates, contributes to
+    the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+    means the combination of the Contributions of others (if any) used
+    by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+    means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+    means Source Code Form to which the initial Contributor has attached
+    the notice in Exhibit A, the Executable Form of such Source Code
+    Form, and Modifications of such Source Code Form, in each case
+    including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+    means
+
+    (a) that the initial Contributor has attached the notice described
+        in Exhibit B to the Covered Software; or
+
+    (b) that the Covered Software was made available under the terms of
+        version 1.1 or earlier of the License, but not also under the
+        terms of a Secondary License.
+
+1.6. "Executable Form"
+    means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+    means a work that combines Covered Software with other material, in 
+    a separate file or files, that is not Covered Software.
+
+1.8. "License"
+    means this document.
+
+1.9. "Licensable"
+    means having the right to grant, to the maximum extent possible,
+    whether at the time of the initial grant or subsequently, any and
+    all of the rights conveyed by this License.
+
+1.10. "Modifications"
+    means any of the following:
+
+    (a) any file in Source Code Form that results from an addition to,
+        deletion from, or modification of the contents of Covered
+        Software; or
+
+    (b) any new file in Source Code Form that contains any Covered
+        Software.
+
+1.11. "Patent Claims" of a Contributor
+    means any patent claim(s), including without limitation, method,
+    process, and apparatus claims, in any patent Licensable by such
+    Contributor that would be infringed, but for the grant of the
+    License, by the making, using, selling, offering for sale, having
+    made, import, or transfer of either its Contributions or its
+    Contributor Version.
+
+1.12. "Secondary License"
+    means either the GNU General Public License, Version 2.0, the GNU
+    Lesser General Public License, Version 2.1, the GNU Affero General
+    Public License, Version 3.0, or any later versions of those
+    licenses.
+
+1.13. "Source Code Form"
+    means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+    means an individual or a legal entity exercising rights under this
+    License. For legal entities, "You" includes any entity that
+    controls, is controlled by, or is under common control with You. For
+    purposes of this definition, "control" means (a) the power, direct
+    or indirect, to cause the direction or management of such entity,
+    whether by contract or otherwise, or (b) ownership of more than
+    fifty percent (50%) of the outstanding shares or beneficial
+    ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+    Licensable by such Contributor to use, reproduce, make available,
+    modify, display, perform, distribute, and otherwise exploit its
+    Contributions, either on an unmodified basis, with Modifications, or
+    as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+    for sale, have made, import, and otherwise transfer either its
+    Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+    or
+
+(b) for infringements caused by: (i) Your and any other third party's
+    modifications of Covered Software, or (ii) the combination of its
+    Contributions with other software (except as part of its Contributor
+    Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+    its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+    Form, as described in Section 3.1, and You must inform recipients of
+    the Executable Form how they can obtain a copy of such Source Code
+    Form by reasonable means in a timely manner, at a charge no more
+    than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+    License, or sublicense it under different terms, provided that the
+    license for the Executable Form does not attempt to limit or alter
+    the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+*                                                                      *
+*  6. Disclaimer of Warranty                                           *
+*  -------------------------                                           *
+*                                                                      *
+*  Covered Software is provided under this License on an "as is"       *
+*  basis, without warranty of any kind, either expressed, implied, or  *
+*  statutory, including, without limitation, warranties that the       *
+*  Covered Software is free of defects, merchantable, fit for a        *
+*  particular purpose or non-infringing. The entire risk as to the     *
+*  quality and performance of the Covered Software is with You.        *
+*  Should any Covered Software prove defective in any respect, You     *
+*  (not any Contributor) assume the cost of any necessary servicing,   *
+*  repair, or correction. This disclaimer of warranty constitutes an   *
+*  essential part of this License. No use of any Covered Software is   *
+*  authorized under this License except under this disclaimer.         *
+*                                                                      *
+************************************************************************
+
+************************************************************************
+*                                                                      *
+*  7. Limitation of Liability                                          *
+*  --------------------------                                          *
+*                                                                      *
+*  Under no circumstances and under no legal theory, whether tort      *
+*  (including negligence), contract, or otherwise, shall any           *
+*  Contributor, or anyone who distributes Covered Software as          *
+*  permitted above, be liable to You for any direct, indirect,         *
+*  special, incidental, or consequential damages of any character      *
+*  including, without limitation, damages for lost profits, loss of    *
+*  goodwill, work stoppage, computer failure or malfunction, or any    *
+*  and all other commercial damages or losses, even if such party      *
+*  shall have been informed of the possibility of such damages. This   *
+*  limitation of liability shall not apply to liability for death or   *
+*  personal injury resulting from such party's negligence to the       *
+*  extent applicable law prohibits such limitation. Some               *
+*  jurisdictions do not allow the exclusion or limitation of           *
+*  incidental or consequential damages, so this exclusion and          *
+*  limitation may not apply to You.                                    *
+*                                                                      *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+  This Source Code Form is subject to the terms of the Mozilla Public
+  License, v. 2.0. If a copy of the MPL was not distributed with this
+  file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+  This Source Code Form is "Incompatible With Secondary Licenses", as
+  defined by the Mozilla Public License, v. 2.0.

+ 27 - 0
dotnet/properties/AssemblyInfo.cs

@@ -0,0 +1,27 @@
+using System;
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("WinSCPnet")]
+[assembly: AssemblyDescription("WinSCP console interface .NET wrapper")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Martin Prikryl")]
+[assembly: AssemblyProduct("WinSCP")]
+[assembly: AssemblyCopyright("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("a0b93468-d98a-4845-a234-8076229ad93f")]
+
+[assembly: AssemblyVersion("1.1.0.0")]
+[assembly: AssemblyFileVersion("1.1.0.0")]
+[assembly: AssemblyInformationalVersionAttribute("5.2.0.0")]
+
+[assembly: CLSCompliant(true)]
+

+ 0 - 304
forms/Console.dfm

@@ -1,304 +0,0 @@
-object ConsoleDialog: TConsoleDialog
-  Left = 349
-  Top = 169
-  HelpType = htKeyword
-  HelpKeyword = 'ui_console'
-  BorderIcons = [biSystemMenu, biMaximize, biHelp]
-  Caption = 'Console'
-  ClientHeight = 393
-  ClientWidth = 551
-  Color = clBtnFace
-  Constraints.MinHeight = 250
-  Constraints.MinWidth = 380
-  ParentFont = True
-  OldCreateOrder = True
-  OnShow = FormShow
-  DesignSize = (
-    551
-    393)
-  PixelsPerInch = 96
-  TextHeight = 13
-  object Bevel1: TBevel
-    Left = 0
-    Top = 0
-    Width = 551
-    Height = 78
-    Align = alTop
-    Shape = bsBottomLine
-  end
-  object Label1: TLabel
-    Left = 13
-    Top = 13
-    Width = 78
-    Height = 13
-    Caption = 'Enter &command:'
-    FocusControl = CommandEdit
-  end
-  object Label2: TLabel
-    Left = 13
-    Top = 56
-    Width = 87
-    Height = 13
-    Caption = 'Current directory:'
-  end
-  object Label4: TLabel
-    Left = 13
-    Top = 34
-    Width = 452
-    Height = 13
-    Anchors = [akLeft, akTop, akRight]
-    AutoSize = False
-    Caption = 'Do not execute commands that require user-input or data transfer'
-  end
-  object DirectoryLabel: TPathLabel
-    Left = 120
-    Top = 56
-    Width = 337
-    Height = 13
-    IndentHorizontal = 0
-    IndentVertical = 0
-    Align = alNone
-    Anchors = [akLeft, akTop, akRight]
-    AutoSize = False
-  end
-  object OutputMemo: TMemo
-    Left = 0
-    Top = 78
-    Width = 551
-    Height = 315
-    TabStop = False
-    Align = alClient
-    Color = clBtnFace
-    PopupMenu = PopupMenu
-    ReadOnly = True
-    ScrollBars = ssBoth
-    TabOrder = 4
-    WantReturns = False
-    OnContextPopup = OutputMemoContextPopup
-  end
-  object CancelBtn: TButton
-    Left = 472
-    Top = 7
-    Width = 75
-    Height = 25
-    Anchors = [akTop, akRight]
-    Cancel = True
-    Caption = 'Close'
-    ModalResult = 2
-    TabOrder = 2
-  end
-  object CommandEdit: THistoryComboBox
-    Left = 120
-    Top = 9
-    Width = 251
-    Height = 21
-    AutoComplete = False
-    Anchors = [akLeft, akTop, akRight]
-    MaxLength = 250
-    TabOrder = 0
-    OnChange = CommandEditChange
-  end
-  object ExecuteButton: TButton
-    Left = 384
-    Top = 7
-    Width = 75
-    Height = 25
-    Anchors = [akTop, akRight]
-    Caption = '&Execute'
-    Default = True
-    TabOrder = 1
-    OnClick = ExecuteButtonClick
-  end
-  object HelpButton: TButton
-    Left = 472
-    Top = 42
-    Width = 75
-    Height = 25
-    Anchors = [akTop, akRight]
-    Caption = '&Help'
-    TabOrder = 3
-    OnClick = HelpButtonClick
-  end
-  object Images: TImageList
-    Left = 456
-    Top = 160
-    Bitmap = {
-      494C010103000400100010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
-      0000000000003600000028000000400000001000000001002000000000000010
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008080800080808000808080008080
-      8000808080008080800080808000808080008080800080808000808080008080
-      8000808080008080800080808000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000840000008400000084000000840000008400
-      000084000000840000008400000084000000000000000000000000000000BD00
-      00000000000000000000BD0000000000000000000000BD000000000000000000
-      0000BD0000000000000000000000000000008080800000000000000000000000
-      0000000000000000000000000000800000000000000000000000000000000000
-      0000000000000000000080808000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF008400000000000000BD000000000000000000
-      0000BD0000000000000000000000BD0000000000000000000000BD0000000000
-      000000000000BD00000000000000000000008080800000000000000000000000
-      0000000000000000000080000000800000008000000000000000000000000000
-      0000000000000000000080808000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000084000000FFFFFF0000000000000000000000
-      00000000000000000000FFFFFF00840000000000000000000000BD0000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000BD000000000000008080800000000000000000000000
-      0000000000008000000080000000800000008000000080000000000000000000
-      0000000000000000000080808000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF0084000000000000000000000000000000BD00
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000BD0000000000000000000000000000008080800000000000000000000000
-      0000000000000000000000000000800000000000000000000000000000000000
-      0000000000000000000080808000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF0084000000FFFFFF0000000000000000000000
-      00000000000000000000FFFFFF008400000000000000BD000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000BD00000000000000000000008080800000000000000000008000
-      0000000000000000000000000000800000000000000000000000000000008000
-      0000000000000000000080808000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF000000
-      000000000000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00840000000000000000000000BD0000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000BD000000000000008080800000000000800000008000
-      0000000000000000000000000000000000000000000000000000000000008000
-      0000800000000000000080808000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF0084000000FFFFFF000000000000000000FFFF
-      FF0084000000840000008400000084000000000000000000000000000000BD00
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000BD0000000000000000000000000000008080800080000000800000008000
-      0000800000008000000000000000000000000000000080000000800000008000
-      0000800000008000000080808000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF000000
-      000000000000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF0084000000FFFFFF00840000000000000000000000BD000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000BD00000000000000000000008080800000000000800000008000
-      0000000000000000000000000000000000000000000000000000000000008000
-      0000800000000000000080808000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF0084000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00840000008400000000000000000000000000000000000000BD0000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000BD000000000000008080800000000000000000008000
-      0000000000000000000000000000800000000000000000000000000000008000
-      0000000000000000000080808000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF000000
-      000000000000FFFFFF0000000000840000008400000084000000840000008400
-      000084000000000000000000000000000000000000000000000000000000BD00
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000BD0000000000000000000000000000008080800000000000000000000000
-      0000000000000000000000000000800000000000000000000000000000000000
-      0000000000000000000080808000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000FFFFFF000000000000000000000000000000
-      00000000000000000000000000000000000000000000BD000000000000000000
-      0000BD0000000000000000000000000000000000000000000000000000000000
-      000000000000BD00000000000000000000008080800000000000000000000000
-      0000000000008000000080000000800000008000000080000000000000000000
-      0000000000000000000080808000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000BD0000000000
-      000000000000BD0000000000000000000000BD0000000000000000000000BD00
-      00000000000000000000BD000000000000008080800000000000000000000000
-      0000000000000000000080000000800000008000000000000000000000000000
-      0000000000000000000080808000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000000000000BD00
-      00000000000000000000BD0000000000000000000000BD000000000000000000
-      0000BD0000000000000000000000000000008080800000000000000000000000
-      0000000000000000000000000000800000000000000000000000000000000000
-      0000000000000000000080808000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008080800080808000808080008080
-      8000808080008080800080808000808080008080800080808000808080008080
-      8000808080008080800080808000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000424D3E000000000000003E000000
-      2800000040000000100000000100010000000000800000000000000000000000
-      000000000000000000000000FFFFFF00FFFFFFFFFFFF0000FFFFFFFF00010000
-      FE00EDB77EFD0000FE00B6DB7C7D0000FE00DFFD783D00008000EC177EFD0000
-      8000B99B6EED00008000D99D4FE500008000EC97038100008001BE1B4FE50000
-      8003DB9D6EED00008007EC377EFD0000807FB7FB783D000080FFDB6D7C7D0000
-      81FFEDB77EFD0000FFFFFFFF0001000000000000000000000000000000000000
-      000000000000}
-  end
-  object PopupMenu: TPopupMenu
-    Images = Images
-    Left = 456
-    Top = 224
-    object CopyItem: TMenuItem
-      Action = EditCopy
-    end
-    object SelectAllItem: TMenuItem
-      Action = EditSelectAll
-    end
-    object N1: TMenuItem
-      Caption = '-'
-    end
-    object AdjustWindowItem: TMenuItem
-      Action = AdjustWindow
-    end
-  end
-  object ActionList: TActionList
-    Images = Images
-    OnExecute = ActionListExecute
-    OnUpdate = ActionListUpdate
-    Left = 456
-    Top = 192
-    object EditCopy: TEditCopy
-      Caption = '&Copy'
-      ImageIndex = 0
-      ShortCut = 16451
-    end
-    object EditSelectAll: TEditSelectAll
-      Caption = 'Select &All'
-      ImageIndex = 1
-      ShortCut = 16449
-    end
-    object AdjustWindow: TAction
-      Caption = 'Adjust &Window'
-      ImageIndex = 2
-      ShortCut = 16458
-    end
-  end
-end

+ 0 - 167
forms/Copy.dfm

@@ -1,167 +0,0 @@
-object CopyDialog: TCopyDialog
-  Left = 363
-  Top = 198
-  HelpType = htKeyword
-  HelpKeyword = 'ui_copy'
-  BorderIcons = [biSystemMenu, biMinimize, biMaximize, biHelp]
-  BorderStyle = bsDialog
-  Caption = 'CopyDialog'
-  ClientHeight = 189
-  ClientWidth = 511
-  Color = clBtnFace
-  Font.Charset = DEFAULT_CHARSET
-  Font.Color = clWindowText
-  Font.Height = -11
-  Font.Name = 'MS Sans Serif'
-  Font.Style = []
-  OldCreateOrder = False
-  Position = poOwnerFormCenter
-  OnCloseQuery = FormCloseQuery
-  OnShow = FormShow
-  DesignSize = (
-    511
-    189)
-  PixelsPerInch = 96
-  TextHeight = 13
-  object DirectoryLabel: TLabel
-    Left = 8
-    Top = 8
-    Width = 187
-    Height = 13
-    Caption = 'Copy 2 selected files to remote directory'
-  end
-  object LocalDirectoryEdit: THistoryComboBox
-    Left = 8
-    Top = 25
-    Width = 410
-    Height = 21
-    AutoComplete = False
-    Anchors = [akLeft, akTop, akRight]
-    TabOrder = 0
-    Text = 'LocalDirectoryEdit'
-    OnChange = ControlChange
-  end
-  object RemoteDirectoryEdit: THistoryComboBox
-    Left = 8
-    Top = 25
-    Width = 494
-    Height = 21
-    AutoComplete = False
-    Anchors = [akLeft, akTop, akRight]
-    MaxLength = 1000
-    TabOrder = 2
-    Text = 'RemoteDirectoryEdit'
-    OnChange = ControlChange
-  end
-  object CopyButton: TButton
-    Left = 260
-    Top = 159
-    Width = 75
-    Height = 25
-    Anchors = [akRight, akBottom]
-    Caption = 'Copy'
-    Default = True
-    ModalResult = 1
-    TabOrder = 9
-  end
-  object CancelButton: TButton
-    Left = 343
-    Top = 159
-    Width = 75
-    Height = 25
-    Anchors = [akRight, akBottom]
-    Cancel = True
-    Caption = 'Cancel'
-    ModalResult = 2
-    TabOrder = 10
-  end
-  object LocalDirectoryBrowseButton: TButton
-    Left = 427
-    Top = 23
-    Width = 75
-    Height = 25
-    Caption = 'B&rowse...'
-    TabOrder = 1
-    OnClick = LocalDirectoryBrowseButtonClick
-  end
-  object QueueCheck2: TCheckBox
-    Left = 8
-    Top = 135
-    Width = 301
-    Height = 17
-    Caption = 'Transfer on background (add to transfer &queue) X'
-    TabOrder = 6
-    OnClick = ControlChange
-  end
-  object QueueIndividuallyCheck: TCheckBox
-    Left = 312
-    Top = 135
-    Width = 193
-    Height = 17
-    Caption = '&Transfer each file individually'
-    TabOrder = 7
-    OnClick = ControlChange
-  end
-  object HelpButton: TButton
-    Left = 427
-    Top = 159
-    Width = 75
-    Height = 25
-    Anchors = [akRight, akBottom]
-    Caption = '&Help'
-    TabOrder = 11
-    OnClick = HelpButtonClick
-  end
-  object NewerOnlyCheck: TCheckBox
-    Left = 8
-    Top = 112
-    Width = 301
-    Height = 17
-    Caption = '&New and updated file(s) only'
-    TabOrder = 4
-  end
-  object NeverShowAgainCheck: TCheckBox
-    Left = 312
-    Top = 112
-    Width = 193
-    Height = 17
-    Caption = '&Do not show this dialog box again'
-    TabOrder = 5
-    OnClick = ControlChange
-  end
-  object TransferSettingsButton: TButton
-    Left = 8
-    Top = 159
-    Width = 129
-    Height = 25
-    Anchors = [akLeft, akBottom]
-    Caption = 'Transfer settin&gs...'
-    TabOrder = 8
-    OnClick = TransferSettingsButtonClick
-    OnDropDownClick = TransferSettingsButtonDropDownClick
-  end
-  object CopyParamGroup: TGroupBox
-    Left = 8
-    Top = 53
-    Width = 496
-    Height = 50
-    Caption = 'Transfer settings'
-    TabOrder = 3
-    OnClick = CopyParamGroupClick
-    OnContextPopup = CopyParamGroupContextPopup
-    DesignSize = (
-      496
-      50)
-    object CopyParamLabel: TLabel
-      Left = 7
-      Top = 15
-      Width = 482
-      Height = 26
-      Anchors = [akLeft, akTop, akRight, akBottom]
-      AutoSize = False
-      Caption = 'CopyParamLabel'
-      WordWrap = True
-      OnClick = CopyParamGroupClick
-    end
-  end
-end

+ 0 - 999
forms/Editor.dfm

@@ -1,999 +0,0 @@
-object EditorForm: TEditorForm
-  Left = 315
-  Top = 186
-  HelpType = htKeyword
-  HelpKeyword = 'ui_editor'
-  BorderIcons = [biSystemMenu, biMinimize, biMaximize, biHelp]
-  Caption = 'EditorForm'
-  ClientHeight = 381
-  ClientWidth = 609
-  Color = clBtnFace
-  Font.Charset = DEFAULT_CHARSET
-  Font.Color = clWindowText
-  Font.Height = -11
-  Font.Name = 'MS Sans Serif'
-  Font.Style = []
-  Icon.Data = {
-    0000010001001010100000000000280100001600000028000000100000002000
-    00000100040000000000C0000000000000000000000000000000000000000000
-    000000008000008000000080800080000000800080008080000080808000C0C0
-    C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000
-    000000000000000000000000000078888888888000007F8F8F8F8F80000078F8
-    F8F8088000007F8F8F8F008000007FF8F8F8000000007F8F8F8F7F8000007FF8
-    F8F8783000007FFF8F8F83B300007FFFF8F8F38B00007FFFFF8F883B30007FFF
-    FFF80038B0007FFFFFFF7F03A2007FFFFFFF700199007777777770001100FFFF
-    0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
-    000000070000000700000003000000030000000100000021000000730000}
-  KeyPreview = True
-  OldCreateOrder = False
-  OnActivate = FormActivate
-  OnClose = FormClose
-  OnCloseQuery = FormCloseQuery
-  OnShow = FormShow
-  PixelsPerInch = 96
-  TextHeight = 13
-  object TopDock: TTBXDock
-    Left = 0
-    Top = 0
-    Width = 609
-    Height = 26
-    AllowDrag = False
-    object ToolBar: TTBXToolbar
-      Left = 0
-      Top = 0
-      Caption = 'ToolBar'
-      Images = EditorImages
-      ParentShowHint = False
-      ShowHint = True
-      TabOrder = 0
-      object TBXItem1: TTBXItem
-        Action = CloseAction
-      end
-      object TBXItem2: TTBXItem
-        Action = SaveAction
-      end
-      object TBXItem16: TTBXItem
-        Action = ReloadAction
-      end
-      object TBXSeparatorItem1: TTBXSeparatorItem
-      end
-      object TBXItem3: TTBXItem
-        Action = EditCopy
-      end
-      object TBXItem4: TTBXItem
-        Action = EditCut
-      end
-      object TBXItem5: TTBXItem
-        Action = EditPaste
-      end
-      object TBXItem6: TTBXItem
-        Action = EditDelete
-      end
-      object TBXItem7: TTBXItem
-        Action = EditSelectAll
-      end
-      object TBXSeparatorItem2: TTBXSeparatorItem
-      end
-      object TBXItem8: TTBXItem
-        Action = EditUndo
-      end
-      object TBXItem17: TTBXItem
-        Action = EditRedo
-      end
-      object TBXSeparatorItem3: TTBXSeparatorItem
-      end
-      object TBXItem9: TTBXItem
-        Action = FindAction
-      end
-      object TBXItem10: TTBXItem
-        Action = ReplaceAction
-      end
-      object TBXItem11: TTBXItem
-        Action = FindNextAction
-      end
-      object TBXItem12: TTBXItem
-        Action = GoToLineAction
-      end
-      object TBXSeparatorItem4: TTBXSeparatorItem
-      end
-      object Encoding: TTBXSubmenuItem
-        Caption = 'Encoding'
-        Hint = 'Change file encoding'
-        object DefaultEncoding: TTBXItem
-          Action = DefaultEncodingAction
-          RadioItem = True
-        end
-        object UTF8Encoding: TTBXItem
-          Action = UTF8EncodingAction
-          RadioItem = True
-        end
-      end
-      object TBXItem13: TTBXItem
-        Action = PreferencesAction
-      end
-      object TBXSeparatorItem5: TTBXSeparatorItem
-      end
-      object TBXItem14: TTBXItem
-        Action = HelpAction
-      end
-    end
-  end
-  object StatusBar: TTBXStatusBar
-    Left = 0
-    Top = 359
-    Width = 609
-    Panels = <
-      item
-        Caption = 'Line: 2000/20000'
-        Size = 150
-        Tag = 0
-      end
-      item
-        Caption = 'Column: 20'
-        ViewPriority = 80
-        Size = 150
-        Tag = 0
-      end
-      item
-        Caption = 'Character: 132 (0x56)'
-        ViewPriority = 90
-        Size = 150
-        Tag = 0
-      end
-      item
-        Caption = 'Encoding: UTF-8 X'
-        ViewPriority = 90
-        Size = 150
-        Tag = 0
-      end
-      item
-        ViewPriority = 70
-        StretchPriority = 100
-        Tag = 0
-      end>
-    UseSystemFont = False
-  end
-  object EditorActions: TActionList
-    Images = EditorImages
-    OnExecute = EditorActionsExecute
-    OnUpdate = EditorActionsUpdate
-    Left = 480
-    Top = 56
-    object SaveAction: TAction
-      Caption = '&Save'
-      Hint = 'Save|Save file'
-      ImageIndex = 0
-      ShortCut = 16467
-      SecondaryShortCuts.Strings = (
-        'F2')
-    end
-    object EditCut: TEditCut
-      Caption = 'Cu&t'
-      Hint = 'Cut|Cuts the selection and puts it on the Clipboard'
-      ImageIndex = 1
-      ShortCut = 16472
-    end
-    object EditCopy: TEditCopy
-      Caption = '&Copy'
-      Hint = 'Copy|Copies the selection and puts it on the Clipboard'
-      ImageIndex = 2
-      ShortCut = 16451
-    end
-    object EditPaste: TEditPaste
-      Caption = '&Paste'
-      Hint = 'Paste|Inserts Clipboard contents'
-      ImageIndex = 3
-      ShortCut = 16470
-      SecondaryShortCuts.Strings = (
-        'Shift+Ins'
-        'Ctrl+Shift+Ins')
-    end
-    object EditSelectAll: TEditSelectAll
-      Caption = 'Select &All'
-      Hint = 'Select All|Selects the entire document'
-      ImageIndex = 6
-      ShortCut = 16449
-    end
-    object EditUndo: TEditUndo
-      Caption = '&Undo'
-      Hint = 'Undo|Reverts the last action'
-      ImageIndex = 4
-      ShortCut = 16474
-    end
-    object EditRedo: TAction
-      Caption = 'Re&do'
-      Hint = 'Redo|Reverts the effects of most recent Undo'
-      ImageIndex = 16
-      ShortCut = 16473
-    end
-    object EditDelete: TEditDelete
-      Caption = '&Delete'
-      Hint = 'Delete|Erases the selection'
-      ImageIndex = 5
-    end
-    object PreferencesAction: TAction
-      Caption = '&Preferences...'
-      Hint = 'Preferences|Show/change editor preferences'
-      ImageIndex = 7
-    end
-    object CloseAction: TAction
-      Caption = 'C&lose'
-      Hint = 'Close editor|Save file if necessary and close editor'
-      ImageIndex = 8
-      ShortCut = 27
-      SecondaryShortCuts.Strings = (
-        'F10')
-    end
-    object FindAction: TAction
-      Caption = '&Find...'
-      Hint = 'Find|Find the specified text'
-      ImageIndex = 9
-      ShortCut = 16454
-      SecondaryShortCuts.Strings = (
-        'F7')
-    end
-    object ReplaceAction: TAction
-      Caption = '&Replace...'
-      Hint = 'Replace|Replace the specified text with different text'
-      ImageIndex = 10
-      ShortCut = 16456
-      SecondaryShortCuts.Strings = (
-        'Ctrl+F7')
-    end
-    object FindNextAction: TAction
-      Caption = 'Find &Next'
-      Hint = 'Find next|Find the next occurrence of the specified text'
-      ImageIndex = 11
-      ShortCut = 114
-      SecondaryShortCuts.Strings = (
-        'Shift+F7')
-    end
-    object GoToLineAction: TAction
-      Caption = '&Go to Line Number...'
-      Hint = 'Go to line|Go to specific line number'
-      ImageIndex = 12
-      ShortCut = 16455
-      SecondaryShortCuts.Strings = (
-        'Alt+F8')
-    end
-    object HelpAction: TAction
-      Caption = '&Help'
-      Hint = 'Editor help'
-      ImageIndex = 13
-    end
-    object ReloadAction: TAction
-      Caption = '&Reload'
-      Hint = 'Reload|Reload file'
-      ImageIndex = 15
-      ShortCut = 16466
-    end
-    object DefaultEncodingAction: TAction
-      Caption = 'AnsiX'
-      Hint = 'Default|Default system encoding (%s)'
-    end
-    object UTF8EncodingAction: TAction
-      Caption = 'UTF-8'
-      Hint = 'UTF-8|UTF-8 encoding'
-    end
-  end
-  object EditorImages: TImageList
-    Left = 536
-    Top = 56
-    Bitmap = {
-      494C010111001300200010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
-      0000000000003600000028000000400000005000000001002000000000000050
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000008400
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000008400
-      0000000000000000000000000000000000000000000084000000840000008400
-      0000840000008400000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000840000000000
-      0000000000000000000000000000000000000000000000000000840000008400
-      0000840000008400000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000840000000000
-      0000000000000000000000000000000000000000000000000000000000008400
-      0000840000008400000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000840000000000
-      0000000000000000000000000000000000000000000000000000840000000000
-      0000840000008400000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000008400
-      0000000000000000000000000000000000008400000084000000000000000000
-      0000000000008400000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000840000008400000084000000840000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000660066000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000848484000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000066006600660066009300D6008000800000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000084848400CECECE00CECE
-      CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE
-      CE00CECECE000000000000000000000000000000000000000000000000000000
-      000084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000006600
-      6600660066009300D600CC66CC00D6E7E700CBCBCB0080008000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000084848400FFFFFF00FFFF
-      FF009CFFFF00FFFFFF009CFFFF00009C31009CFFFF00FFFFFF009CFFFF00FFFF
-      FF00CECECE000000000000000000000000000000000000000000000000000000
-      000084848400FFFFFF0084848400848484008484840084848400848484008484
-      84008484840084848400FFFFFF00000000000000000066006600660066009300
-      D600CC66CC00D6E7E700D6E7E700D6E7E700CBCBCB00CBCBCB00800080000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000840000008400
-      0000840000000000000000000000000000000000000084848400FFFFFF009CFF
-      FF00FFFFFF009CFFFF00009C3100009C3100FFFFFF009CFFFF00FFFFFF009CFF
-      FF00CECECE000000000000000000000000008400000000000000000000000000
-      000084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF0000000000800080009300D600CC66CC00D6E7
-      E700D6E7E700CBCBCB00CBCBCB00800080009999990090A9AD00CBCBCB008000
-      8000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000840000008400
-      0000840000000000000000000000000000000000000084848400FFFFFF00FFFF
-      FF009CFFFF00009C3100009C3100009C3100009C3100009C31009CFFFF00FFFF
-      FF00CECECE000000000000000000000000008400000084000000000000000000
-      000084848400FFFFFF0084848400848484008484840084848400848484008484
-      84008484840084848400FFFFFF00000000008000800099999900D6E7E700CBCB
-      CB0090A9AD00800080008000800099009900000000008686860099999900CBCB
-      CB00800080000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000084848400FFFFFF009CFF
-      FF00FFFFFF009CFFFF00009C3100009C3100FFFFFF00639C0000636300009CFF
-      FF00CECECE000000000000000000000000008400000084000000840000000000
-      00008484840000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF
-      FF0000FFFF0000FFFF0000FFFF00000000008000800099999900CBCBCB008000
-      800080008000CC00CC00CC00CC00CC00CC009900990000000000666666009999
-      990090A9AD008000800000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000840000008400
-      0000840000000000000000000000000000000000000084848400FFFFFF00FFFF
-      FF009CFFFF00FFFFFF009CFFFF00009C31009CFFFF00FFFFFF0063630000FFFF
-      FF00CECECE000000000000000000000000008400000084000000840000000000
-      00008484840000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF
-      FF0000FFFF0000FFFF0000FFFF0000000000800080008000800080008000CC00
-      CC00CC00CC009900990099009900CC00CC00CC00CC0099009900000000006666
-      6600999999008686860080008000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000840000008400
-      0000840000000000000000000000000000000000000084848400FFFFFF009CFF
-      FF00636300009CFFFF00FFFFFF009CFFFF00FFFFFF009CFFFF00636300009CFF
-      FF00CECECE000000000000000000000000008400000084000000000000000000
-      00008484840000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF
-      FF0000FFFF0000FFFF0000FFFF000000000080008000FF99FF00CC00CC00CC00
-      CC00CC00CC0000FFFF0033CCFF00336699009900990080008000990099000000
-      0000666666009999990080008000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000008400
-      0000840000008400000000000000000000000000000084848400FFFFFF00FFFF
-      FF0063630000FFFFFF009CFFFF00009C31009CFFFF00FFFFFF009CFFFF00FFFF
-      FF00CECECE000000000000000000000000008400000000000000000000000000
-      000084848400FFFFFF0084848400848484008484840084848400848484008484
-      84008484840084848400FFFFFF00000000000000000080008000FF99FF00CC00
-      CC00CC00CC00CC00CC00CC00CC0000FFFF0000FFFF0033CCFF00336699008000
-      8000000000006666660080008000D8E9EC000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000840000008400000084000000000000000000000084848400FFFFFF009CFF
-      FF0063630000639C0000FFFFFF00009C3100009C31009CFFFF00FFFFFF009CFF
-      FF00CECECE000000000000000000000000000000000000000000000000000000
-      000084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000000080008000FF99
-      FF00CC00CC00CC00CC00CC00CC00CC00CC00CC00CC0033CCFF0000FFFF006600
-      6600800080000000000080008000D8E9EC000000000000000000000000000000
-      0000000000000000000000000000840000008400000084000000000000000000
-      0000000000008400000084000000840000000000000084848400FFFFFF00FFFF
-      FF009CFFFF00009C3100009C3100009C3100009C3100009C31009CFFFF00FFFF
-      FF00CECECE000000000000000000000000000000000000000000000000000000
-      000084848400FFFFFF0084848400848484008484840084848400FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000008000
-      8000FF99FF00CC00CC00CC00CC0000FFFF0000FFFF0000FFFF003399CC006600
-      6600800080008000800000000000000000000000000000000000000000000000
-      0000000000000000000000000000840000008400000084000000000000000000
-      0000000000008400000084000000840000000000000084848400FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00009C3100009C31009CFFFF00FFFFFF00CECE
-      CE00CECECE000000000000000000000000000000000000000000000000000000
-      000084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
-      000080008000FF99FF00CC00CC00CC00CC003366990033669900660066008000
-      8000800080006600660000000000000000000000000000000000000000000000
-      0000000000000000000000000000840000008400000084000000000000000000
-      0000000000008400000084000000840000000000000084848400FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00009C31009CFFFF00FFFFFF00000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF0000000000FFFFFF0000000000000000000000000000000000000000000000
-      00000000000080008000FF99FF00CC00CC00CC00CC00CC00CC00990099006600
-      6600000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008400000084000000840000008400
-      0000840000008400000084000000000000000000000084848400FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF009CFFFF00FFFFFF009CFFFF0084848400FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
-      000084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000080008000FF99FF00CC00CC0066006600000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000084000000840000008400
-      0000840000008400000000000000000000000000000084848400FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00848484000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000848484008484840084848400848484008484840084848400848484008484
-      8400000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000800080000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000084848400848484008484
-      8400848484008484840084848400848484008484840084848400848484000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008484840084848400848484008484
-      8400848484008484840084848400848484008484840084848400FFFFFF000000
-      00008484840000000000FFFFFF00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008484840084848400848484008484
-      840084848400848484008484840084848400848484008484840084848400FFFF
-      FF0084848400FFFFFF0084848400848484000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008400000084000000840000008400
-      00000000000000000000848484008484840084848400FFFFFF00FFFFFF00FFFF
-      FF008400000084000000840000008400000000000000FFFFFF00000000000000
-      000000000000000000000000000000000000000000000000000000000000FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000008400
-      0000FF00000084000000000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF008400000000000000000000000000000000000000FFFFFF00000000000000
-      000000000000000000000000000000000000000000000000000000000000FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000008400
-      000084000000FF0000008400000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00840000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000008400
-      0000FF00000084000000FF00000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00840000000000000000000000000000000000000000000000FFFFFF000000
-      00000000000000000000000000000000000000000000FFFFFF00000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000000000000C6C6
-      C60000000000000000000000000000000000000000000000000000000000C6C6
-      C600000000000000000000000000000000000000000000000000000000008400
-      000084000000FF0000008400000000000000FFFFFF00FFFF0000FFFFFF00FFFF
-      0000840000000000000000000000000000000000000000000000FFFFFF000000
-      00000000000000000000C6C6C6000000000000000000FFFFFF00000000000000
-      000000000000000000000000000000000000000000000000000000000000C6C6
-      C60000000000000000000000000000000000000000000000000000000000C6C6
-      C600000000000000000000000000000000000000000000000000000000000000
-      0000000000008484840000000000000000000000000084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000008400
-      0000FF00000084000000FF00000000000000FFFF0000FFFFFF00FFFF0000FFFF
-      FF00840000000000000000000000000000000000000000000000FFFFFF000000
-      00000000000000000000C6C6C6000000000000000000FFFFFF00000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008484840000000000000000000000000084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000008400
-      000084000000FF0000008400000000000000FFFFFF00FFFF0000FFFFFF00FFFF
-      0000840000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000000000000C6C6
-      C60000000000000000000000000000000000C6C6C60000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000008400
-      0000FF00000084000000FF00000000000000FFFF0000FFFFFF00FFFF0000FFFF
-      FF0084000000000000000000000000000000000000000000000000000000FFFF
-      FF000000000000000000000000000000000000000000FFFFFF00000000000000
-      000000000000000000000000000000000000000000000000000000000000C6C6
-      C60000000000000000000000000000000000C6C6C60000000000000000000000
-      000000000000000000000000000000000000000000000000000000000000C6C6
-      C60000000000000000000000000000000000C6C6C60000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000008400
-      0000840000008400000084000000840000008400000084000000840000008400
-      0000840000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000000000000C6C6
-      C60000000000000000000000000000000000C6C6C60000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000848484000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000FFFFFF000000000000000000000000000000000000000000FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000848484000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000840000008400000084000000840000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000084848400848484008484840084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000000000000BD00
-      00000000000000000000BD0000000000000000000000BD000000000000000000
-      0000BD0000000000000000000000000000000000000000000000000000000000
-      0000848484000000000000000000000000000000000084848400000000008484
-      8400000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000BD000000000000000000
-      0000BD0000000000000000000000BD0000000000000000000000BD0000000000
-      000000000000BD00000000000000000000000000000000000000000000000000
-      0000000000008484840000000000000000000000000000000000848484000000
-      0000848484000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000BD0000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000BD000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008484840000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000840000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000000000000BD00
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000BD0000000000000000000000000000000000000000000000FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000840000008400
-      0000840000008400000084000000000000000000000000000000000000000000
-      0000840000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000BD000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000BD0000000000000000000000FFFFFF0084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008484840084848400000000000000000000000000840000008400
-      0000840000008400000000000000000000000000000000000000000000000000
-      0000000000008400000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000BD0000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000BD00000000000000FFFFFF0000000000000000000000
-      00000000000000000000C6C6C600C6C6C600C6C6C60000000000000000000000
-      0000000000000000000000000000000000000000000000000000840000008400
-      0000840000000000000000000000000000000000000000000000000000000000
-      0000000000008400000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000000000000BD00
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000BD000000000000000000000000000000FFFFFF0000000000000000000000
-      00000000000000000000C6C6C600C6C6C600C6C6C60000000000000000000000
-      0000000000000000000000000000000000000000000000000000840000008400
-      0000000000008400000000000000000000000000000000000000000000000000
-      0000000000008400000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000BD000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000BD0000000000000000000000FFFFFF0000000000000000000000
-      00000000000000000000C6C6C600C6C6C600C6C6C60000000000000000000000
-      0000000000000000000000000000000000000000000000000000840000000000
-      0000000000000000000084000000840000000000000000000000000000000000
-      0000840000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000BD0000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000BD000000000000000000000000000000FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008400000084000000840000008400
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000000000000BD00
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000BD0000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008484840000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000BD000000000000000000
-      0000BD0000000000000000000000000000000000000000000000000000000000
-      000000000000BD00000000000000000000000000000000000000FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000BD0000000000
-      000000000000BD0000000000000000000000BD0000000000000000000000BD00
-      00000000000000000000BD00000000000000000000000000000000000000FFFF
-      FF0000000000FFFFFF0000000000000000000000000000000000FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000000000000BD00
-      00000000000000000000BD0000000000000000000000BD000000000000000000
-      0000BD0000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000FFFFFF00FFFFFF00FFFFFF0084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008400000084000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000084000000840000008400000084000000840000008400
-      00008400000084000000840000008400000000000000B9C1C10081494900994E
-      4E0099474700B3B3B300B3B3B300B3B3B300B3B3B300B3B3B300B3B3B3009934
-      340099343400994E4E00994E4E00000000000000000000000000000000000000
-      0000840000000000000000000000840000000000000000000000840000008400
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000840000008400000084000000840000008400
-      0000840000008400000084000000840000000000000000000000000000000000
-      0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF008400000000000000B9867600CC676700CC67
-      6700994E4E00AF9C9C00C2767600DAB4B400FBFBFB00F0F0F000E4E4E4009934
-      340099343400CC676700994E4E00000000000000000000000000000000000000
-      0000840000000000000000000000840000000000000084000000000000000000
-      0000840000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00840000000000000084848400008484008484
-      8400008484008484840084000000FFFFFF000000000000000000000000000000
-      00000000000000000000FFFFFF008400000000000000B9867600CC676700CC67
-      6700994E4E00CFB6B600B7525200BF8C8C00D9D9D900FBFBFB00F0F0F0009934
-      340099343400CC676700994E4E00000000000000000000000000000000000000
-      0000840000000000000000000000840000000000000084000000000000000000
-      0000840000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000084000000FFFFFF0000000000000000000000
-      00000000000000000000FFFFFF00840000000000000000848400848484000084
-      8400848484000084840084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF008400000000000000B9867600CC676700CC67
-      6700994E4E00E1C7C700A8434300A9777700B3B3B300D9D9D900FBFBFB009934
-      340099343400CC676700994E4E00000000000000000000000000000000000000
-      0000000000008400000084000000840000000000000084000000000000000000
-      0000840000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00840000000000000084848400008484008484
-      8400008484008484840084000000FFFFFF00000000000000000000000000FFFF
-      FF008400000084000000840000008400000000000000B9867600CC676700CC67
-      6700994E4E00DCC8C800CA979700CAB1B100A9A9A900B3B3B300D6CFCF009934
-      34009C373700CC676700994E4E00000000000000000000000000000000000000
-      0000000000000000000000000000840000000000000084000000840000008400
-      0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF0084000000FFFFFF0000000000000000000000
-      00000000000000000000FFFFFF00840000000000000000848400848484000084
-      8400848484000084840084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF0084000000FFFFFF00840000000000000000000000B9867600CC676700CC67
-      6700CC676700CC676700CC676700CC676700CC676700CC676700CC676700CC67
-      6700CC676700CC676700994E4E00000000000000000000000000000000000000
-      0000000000000000000000000000840000000000000084000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF000000
-      000000000000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00840000000000000084848400008484008484
-      8400008484008484840084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF008400000084000000000000000000000000000000B9867600CC676700CC67
-      6700BF8C8C00BF8C8C00BF8C8C00BF8C8C00BF8C8C00BF8C8C00BF8C8C00BF8C
-      8C00CC676700CC676700994E4E00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF0084000000FFFFFF000000000000000000FFFF
-      FF00840000008400000084000000840000000000000000848400848484000084
-      8400848484000084840084000000840000008400000084000000840000008400
-      00008400000000000000000000000000000000000000B9867600CC676700BF8C
-      8C00FAFAFA00FAFAFA00FAFAFA00FAFAFA00FAFAFA00FAFAFA00FAFAFA00FAFA
-      FA00BF8C8C00CC676700994E4E00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF000000
-      000000000000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF0084000000FFFFFF0084000000000000000000000084848400008484008484
-      8400008484008484840000848400848484000084840084848400008484008484
-      84000084840000000000000000000000000000000000B9867600CC676700BF8C
-      8C00FAFAFA00C1C1C100C3C3C300C3C3C300C5C5C500C5C5C500C7C7C700FAFA
-      FA00BF8C8C00CC676700994E4E00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF0084000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00840000008400000000000000000000000000000000848400848484000000
-      0000000000000000000000000000000000000000000000000000000000008484
-      84008484840000000000000000000000000000000000B9867600CC676700BF8C
-      8C00FAFAFA00FAFAFA00FAFAFA00FAFAFA00FAFAFA00FAFAFA00FAFAFA00FAFA
-      FA00BF8C8C00CC676700994E4E00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF000000
-      000000000000FFFFFF0000000000840000008400000084000000840000008400
-      0000840000000000000000000000000000000000000084848400848484000000
-      0000000000000000000000000000000000000000000000000000000000008484
-      84000084840000000000000000000000000000000000B9867600CC676700BF8C
-      8C00FAFAFA00BFBFBF00C0C0C000C2C2C200C3C3C300C4C4C400C5C5C500FAFA
-      FA00BF8C8C00CC676700994E4E00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000FFFFFF000000000000000000000000000000
-      0000000000000000000000000000000000000000000000848400848484000084
-      84000000000000FFFF00000000000000000000FFFF0000000000848484000084
-      84008484840000000000000000000000000000000000B9867600CC676700BF8C
-      8C00FAFAFA00FAFAFA00FAFAFA00FAFAFA00FAFAFA00FAFAFA00FAFAFA00FAFA
-      FA00BF8C8C00CC676700994E4E00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000FFFF0000FFFF000000000000000000000000000000
-      00000000000000000000000000000000000000000000B9867600994E4E00BF8C
-      8C00C4C4C400C4C4C400C4C4C400C4C4C400C4C4C400C4C4C400C4C4C400C4C4
-      C400BF8C8C00994E4E00BEC4C300000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000424D3E000000000000003E000000
-      2800000040000000500000000100010000000000800200000000000000000000
-      000000000000000000000000FFFFFF00FFFF000000000000FFFF000000000000
-      FFFF000000000000FFFF000000000000FFFF000000000000EFFF000000000000
-      EF83000000000000DFC3000000000000DFE3000000000000DFD3000000000000
-      EF3B000000000000F0FF000000000000FFFF000000000000FFFF000000000000
-      FFFF000000000000FFFF000000000000FFFFFE7FFFFF8003F000F83FF9FF8003
-      F000E01FF9FF8003F000800FF3C780037000000773C780033000000327FF8003
-      1000000107C780031000000000C780033000000001E380037000800003F18003
-      F000C00006388003F000E0000E388003F000F0011E388003F001F8073F018007
-      F003FC1F7F83800FF007FE7FFFFF801FFFFFFFFFB6E7FFFF0015FFFFB76BFE49
-      000007C18427FE49000007C1B76BFFFFE00707C1CEE7FFFFE0070101FFFFC7C7
-      E0070001C7C7C7C7E0070001C7C7C387E0070001C387C007E0078003C007C007
-      E007C107C007C007E007C107C007C007FFFFE38FC007C007F81FE38FC007F39F
-      F81FE38FF39FF39FF81FFFFFF39FF39FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3F
-      FFFFEFFDEDB7F42FFFFFC7FFB6DBE007FFFFC3FBDFFDC003FFF7E3F7EC17C007
-      C1F7F1E7B99B0001C3FBF8CFD99D0001C7FBFC1FEC970001CBFBFE3FBE1B0001
-      DCF7FC1FDB9DC007FF0FF8CFEC37C003FFFFE1E7B7FBC007FFFFC3F3DB6DE00F
-      FFFFC7FDEDB7FC3FFFFFFFFFFFFFFC3FFFFFFFFFFFFFFFFFFFFFF9FFFFFFFC00
-      8001F6CFFE0080008001F6B7FE0000008001F6B7FE0000008001F8B780000000
-      8001FE8F800000018001FE3F800000038001FF7F800000038001FE3F80010003
-      8001FEBF800300038001FC9F80070FC38001FDDF807F00038001FDDF80FF8007
-      8001FDDF81FFF87FFFFFFFFFFFFFFFFF00000000000000000000000000000000
-      000000000000}
-  end
-  object EditorPopup: TTBXPopupMenu
-    Images = EditorImages
-    Left = 480
-    Top = 136
-    object Undo1: TTBXItem
-      Action = EditUndo
-    end
-    object TBXItem18: TTBXItem
-      Action = EditRedo
-    end
-    object N1: TTBXSeparatorItem
-    end
-    object Cut1: TTBXItem
-      Action = EditCut
-    end
-    object Copy1: TTBXItem
-      Action = EditCopy
-    end
-    object Paste1: TTBXItem
-      Action = EditPaste
-    end
-    object Delete1: TTBXItem
-      Action = EditDelete
-    end
-    object N2: TTBXSeparatorItem
-    end
-    object SelectAll1: TTBXItem
-      Action = EditSelectAll
-    end
-    object N3: TTBXSeparatorItem
-    end
-    object Find1: TTBXItem
-      Action = FindAction
-    end
-    object Replace1: TTBXItem
-      Action = ReplaceAction
-    end
-    object Findnext1: TTBXItem
-      Action = FindNextAction
-    end
-    object Gotolinenumber1: TTBXItem
-      Action = GoToLineAction
-    end
-    object TBXSeparatorItem6: TTBXSeparatorItem
-    end
-    object TBXItem15: TTBXItem
-      Action = PreferencesAction
-    end
-  end
-end

+ 0 - 285
forms/GeneralSettings.dfm

@@ -1,285 +0,0 @@
-object GeneralSettingsFrame: TGeneralSettingsFrame
-  Left = 0
-  Top = 0
-  Width = 306
-  Height = 202
-  TabOrder = 0
-  DesignSize = (
-    306
-    202)
-  object InterfaceGroup: TGroupBox
-    Left = 0
-    Top = 0
-    Width = 306
-    Height = 202
-    Anchors = [akLeft, akTop, akRight, akBottom]
-    Caption = 'Interface'
-    TabOrder = 0
-    DesignSize = (
-      306
-      202)
-    object CommanderDescriptionLabel2: TLabel
-      Left = 132
-      Top = 19
-      Width = 167
-      Height = 115
-      Anchors = [akLeft, akTop, akRight]
-      AutoSize = False
-      Caption = 
-        '- two panels (left for local directory, right for remote directo' +
-        'ry)'#13#10'- keyboard shortcuts like in Norton Commander (and other si' +
-        'milar programs as Total Commander, Midnight Commander...)'#13#10'- dra' +
-        'g && drop to/from both panels'
-      WordWrap = True
-      OnClick = CommanderClick
-    end
-    object ExplorerDescriptionLabel: TLabel
-      Left = 132
-      Top = 133
-      Width = 169
-      Height = 62
-      Anchors = [akLeft, akTop, akRight]
-      AutoSize = False
-      Caption = 
-        '- only remote directory'#13#10'- keyboard shortcuts like in Windows Ex' +
-        'plorer'#13#10'- drag && drop'
-      WordWrap = True
-      OnClick = ExplorerClick
-    end
-    object CommanderInterfacePicture: TImage
-      Left = 55
-      Top = 41
-      Width = 32
-      Height = 32
-      AutoSize = True
-      Picture.Data = {
-        07544269746D6170360C0000424D360C00000000000036000000280000002000
-        0000200000000100180000000000000C0000C40E0000C40E0000000000000000
-        0000000000000000000000000000000000000000000000000000000000000000
-        0000000000000000000000000000000000000000000000000000000000000000
-        0000000000000000000000000000000000000000000000000000000000000000
-        0000848484848484848484848484848484848484848484848484848484848484
-        8484848484848484848484848484848484848484848484848484848484848484
-        8484848484848484848484848484848484848484848484848484848484848400
-        0000848484C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6
-        C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6
-        C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C684848400
-        0000848484C6C6C6000000000000C6C6C6808080808080808080C6C6C6C6C6C6
-        C6C6C6000000000000C6C6C6808080808080808080808080C6C6C6C6C6C60000
-        00000000C6C6C6808080808080C6C6C6C6C6C6C6C6C6C6C6C6C6C6C684848400
-        0000848484C6C6C6848484848484848484848484848484848484848484848484
-        8484848484848484848484848484848484848484848484848484848484848484
-        84848484848484848484848484848484848484848484848484C6C6C684848400
-        0000848484C6C6C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF848484FFFFFFFFFFFFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C6C684848400
-        0000848484C6C6C6FFFFFF00FF0000FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF848484FFFFFFFFFFFFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C6C684848400
-        0000848484C6C6C6FFFFFF848484840000FFFFFF000000000000FFFFFFFFFFFF
-        FFFFFFFFFFFF000000000000FFFFFF848484FFFFFFFFFFFFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C6C684848400
-        0000848484C6C6C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF848484FFFFFFFFFFFFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C6C684848400
-        0000848484C6C6C6FFFFFF840000FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF848484FFFFFFFFFFFFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C6C684848400
-        0000848484C6C6C6FFFFFF848484FF00FFFFFFFF000000000000000000000000
-        FFFFFFFFFFFF000000000000FFFFFF848484FFFFFFFFFFFFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C6C684848400
-        0000848484C6C6C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF848484FFFFFFFFFFFFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C6C684848400
-        0000848484C6C6C6FFFFFF00FF00840000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF848484FFFFFFFF00FF840000FFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C6C684848400
-        0000848484C6C6C6FFFFFF848484840000FFFFFF000000000000000000FFFFFF
-        FFFFFFFFFFFF000000000000FFFFFF848484FFFFFF848484FF00FFFFFFFF0000
-        00000000000000FFFFFFFFFFFFFFFFFF000000000000FFFFFFC6C6C684848400
-        0000848484C6C6C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF848484FFFFFFFFFFFFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C6C684848400
-        0000848484C6C6C6FFFFFF8400000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF848484FFFFFF840000FF8000FFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C6C684848400
-        0000848484C6C6C6FFFFFF848484840000FFFFFF000000000000000000000000
-        000000FFFFFF000000000000FFFFFF848484FFFFFF848484840000FFFFFF0000
-        00000000000000000000000000FFFFFF000000000000FFFFFFC6C6C684848400
-        0000848484C6C6C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF848484FFFFFFFFFFFFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C6C684848400
-        0000848484C6C6C6FFFFFF00FFFF840000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF848484FFFFFF008080840000FFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C6C684848400
-        0000848484C6C6C6FFFFFF84848400FFFFFFFFFF000000000000000000000000
-        FFFFFFFFFFFF000000000000FFFFFF848484FFFFFF848484008080FFFFFF0000
-        00000000000000000000FFFFFFFFFFFF000000000000FFFFFFC6C6C684848400
-        0000848484C6C6C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF848484FFFFFFFFFFFFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C6C684848400
-        0000848484C6C6C6848484848484848484848484848484848484848484848484
-        8484848484848484848484848484848484848484848484848484848484848484
-        84848484848484848484848484848484848484848484848484C6C6C684848400
-        0000848484C6C6C6848484C6C6C600FFFF00FF00C6C6C600FFFF800000C6C6C6
-        4080FF808000404000C6C6C60000FF800080C6C6C680FF008000FFC6C6C64080
-        FFFF00FF0000FFC6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C684848400
-        0000848484C6C6C684848400FFFFC6C6C60000FFC6C6C6FF0000C6C6C68000FF
-        C6C6C6C6C6C680008080FF00C6C6C680800000FFFFC6C6C6FF8080004080C6C6
-        C600FF00C6C6C6FF8000C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C684848400
-        0000848484C6C6C6848484848484848484848484848484848484848484848484
-        8484848484848484848484848484848484848484848484848484848484848484
-        84848484848484848484848484848484848484848484848484C6C6C684848400
-        0000848484C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6
-        C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6
-        C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C684848400
-        0000848484C6C6C6840000840000840000840000840000840000840000840000
-        8400008400008400008400008400008400008400008400008400008400008400
-        0000000000000000000000000000000000000000000000000000000084848400
-        0000848484C6C6C6840000840000840000840000840000840000840000840000
-        8400008400008400008400008400008400008400008400008400008400008400
-        00C6C6C6C6C6C6000000C6C6C6C6C6C6000000C6C6C6C6C6C600000084848400
-        0000848484C6C6C6840000840000840000840000840000840000840000840000
-        8400008400008400008400008400008400008400008400008400008400008400
-        00C6C6C6C6C6C6000000C6C6C6C6C6C6000000C6C6C6C6C6C600000084848400
-        0000848484C6C6C6840000840000840000840000840000840000840000840000
-        8400008400008400008400008400008400008400008400008400008400008400
-        0084000084000084000084000084000084000084000084000084000084848400
-        0000848484C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6
-        C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6
-        C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C684848400
-        0000848484848484848484848484848484848484848484848484848484848484
-        8484848484848484848484848484848484848484848484848484848484848484
-        8484848484848484848484848484848484848484848484848484848484848400
-        0000}
-      OnClick = CommanderClick
-    end
-    object ExplorerInterfacePicture: TImage
-      Left = 55
-      Top = 155
-      Width = 32
-      Height = 32
-      AutoSize = True
-      Picture.Data = {
-        07544269746D6170360C0000424D360C00000000000036000000280000002000
-        0000200000000100180000000000000C0000C40E0000C40E0000000000000000
-        0000A5EA15A5EA15A5EA15A5EA15A5EA15000000000000000000000000000000
-        0000000000000000000000000000000000000000000000000000000000000000
-        0000000000000000000000000000000000000000000000000000000000000000
-        0000A5EA15A5EA15A5EA15A5EA15A5EA15848484848484848484848484848484
-        8484848484848484848484848484848484848484848484848484848484848484
-        8484848484848484848484848484848484848484848484848484848484848400
-        0000A5EA15A5EA15A5EA15A5EA15A5EA15848484C6C6C6C6C6C6C6C6C6C6C6C6
-        C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6
-        C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C684848400
-        0000A5EA15A5EA15A5EA15A5EA15A5EA15848484C6C6C6FFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C6C684848400
-        0000A5EA15A5EA15A5EA15A5EA15A5EA15848484C6C6C6FFFFFFFFFFFF000000
-        000000FFFF00FFFFFFFFFFFFFFFFFFFFFFFF404000FF0040404000FFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C6C684848400
-        0000A5EA15A5EA15A5EA15A5EA15A5EA15848484C6C6C6FFFFFFFFFFFF808000
-        808000808000FFFFFFFFFFFFFFFFFFFFFFFF4080FFFF0040404000FFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C6C684848400
-        0000A5EA15A5EA15A5EA15A5EA15A5EA15848484C6C6C6FFFFFFFFFFFFFF0000
-        008000000000FFFFFFFFFFFFFFFFFFFFFFFF4080FF4080FF4080FFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C6C684848400
-        0000000000000000000000000000000000848484C6C6C6FFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C6C684848400
-        0000848484848484848484848484848484848484C6C6C6FFFFFF808080808080
-        808080808080808080FFFFFFFFFFFF808080808080808080808080808080FFFF
-        FFFFFFFF808080808080808080808080808080FFFFFFFFFFFFC6C6C684848400
-        0000848484C6C6C6C6C6C6C6C6C6C6C6C6848484C6C6C6FFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C6C684848400
-        0000848484C6C6C6FFFFFFFFFFFFFFFFFF848484C6C6C6FFFFFFFFFFFF008000
-        FF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFF0080008000FFFF0040FFFFFFFFFF
-        FFFFFFFFFFFFFF8000FF80FF00000000FFFFFFFFFFFFFFFFFFC6C6C684848400
-        0000848484C6C6C6FFFFFFFFFFFF000000848484C6C6C6FFFFFFFFFFFF008000
-        000000FF00FFFFFFFFFFFFFFFFFFFFFFFFFF0080008000FFFF0040FFFFFFFFFF
-        FFFFFFFFFFFFFF8000FF80FF00000000FFFFFFFFFFFFFFFFFFC6C6C684848400
-        0000848484C6C6C6FFFFFFFFFFFF808000848484C6C6C6FFFFFFFFFFFF00FFFF
-        008000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF00FF0040FFFFFFFFFF
-        FFFFFFFFFFFFFF8000FF80FF0080FF00FFFFFFFFFFFFFFFFFFC6C6C684848400
-        0000848484C6C6C6FFFFFFFFFFFFFF0000848484C6C6C6FFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C6C684848400
-        0000848484C6C6C6FFFFFFFFFFFFFFFFFF848484C6C6C6848484848484848484
-        8484848484848484848484848484848484848484848484848484848484848484
-        84848484848484848484848484848484848484848484848484C6C6C684848400
-        0000848484C6C6C6FFFFFF808080808080848484C6C6C6848484C6C6C600FFFF
-        00FF00C6C6C600FFFF800000C6C6C64080FF8080004040008000FFC6C6C64080
-        FFFF00FF0000FFC6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C684848400
-        0000848484C6C6C6FFFFFFFFFFFFFFFFFF848484C6C6C684848400FFFFC6C6C6
-        0000FFC6C6C6FF0000C6C6C68000FFC6C6C6C6C6C6800080FF8080004080C6C6
-        C600FF00C6C6C6FF8000C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C684848400
-        0000848484C6C6C6FFFFFFFFFFFF008000848484C6C6C6848484848484848484
-        8484848484848484848484848484848484848484848484848484848484848484
-        84848484848484848484848484848484848484848484848484C6C6C684848400
-        0000848484C6C6C6FFFFFFFFFFFF008000848484C6C6C6C6C6C6C6C6C6C6C6C6
-        C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6
-        C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C684848400
-        0000848484C6C6C6FFFFFFFFFFFF00FFFF848484C6C6C6840000840000840000
-        8400008400008400008400008400008400008400008400008400008400008400
-        0000000000000000000000000000000000000000000000000000000084848400
-        0000848484C6C6C6FFFFFFFFFFFFFFFFFF848484C6C6C6840000840000840000
-        8400008400008400008400008400008400008400008400008400008400008400
-        00C6C6C6C6C6C6000000C6C6C6C6C6C6000000C6C6C6C6C6C600000084848400
-        0000848484C6C6C6848484848484848484848484C6C6C6840000840000840000
-        8400008400008400008400008400008400008400008400008400008400008400
-        00C6C6C6C6C6C6000000C6C6C6C6C6C6000000C6C6C6C6C6C600000084848400
-        0000848484C6C6C6848484C6C6C600FFFF848484C6C6C6840000840000840000
-        8400008400008400008400008400008400008400008400008400008400008400
-        0084000084000084000084000084000084000084000084000084000084848400
-        0000848484C6C6C684848400FFFFC6C6C6848484C6C6C6C6C6C6C6C6C6C6C6C6
-        C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6
-        C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C684848400
-        0000848484C6C6C6848484848484848484848484848484848484848484848484
-        8484848484848484848484848484848484848484848484848484848484848484
-        8484848484848484848484848484848484848484848484848484848484848400
-        0000848484C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6
-        C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6
-        C6C6C6C6C6C6C6C6C6C6C6C6C6848484000000A5EA15A5EA15A5EA15A5EA15A5
-        EA15848484C6C6C6840000840000840000840000840000840000840000840000
-        8400008400008400008400008400008400000000000000000000000000000000
-        00000000000000000000000000848484000000A5EA15A5EA15A5EA15A5EA15A5
-        EA15848484C6C6C6840000840000840000840000840000840000840000840000
-        840000840000840000840000840000840000C6C6C6C6C6C6000000C6C6C6C6C6
-        C6000000C6C6C6C6C6C6000000848484000000A5EA15A5EA15A5EA15A5EA15A5
-        EA15848484C6C6C6840000840000840000840000840000840000840000840000
-        840000840000840000840000840000840000C6C6C6C6C6C6000000C6C6C6C6C6
-        C6000000C6C6C6C6C6C6000000848484000000A5EA15A5EA15A5EA15A5EA15A5
-        EA15848484C6C6C6840000840000840000840000840000840000840000840000
-        8400008400008400008400008400008400008400008400008400008400008400
-        00840000840000840000840000848484000000A5EA15A5EA15A5EA15A5EA15A5
-        EA15848484C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6
-        C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6
-        C6C6C6C6C6C6C6C6C6C6C6C6C6848484000000A5EA15A5EA15A5EA15A5EA15A5
-        EA15848484848484848484848484848484848484848484848484848484848484
-        8484848484848484848484848484848484848484848484848484848484848484
-        84848484848484848484848484848484000000A5EA15A5EA15A5EA15A5EA15A5
-        EA15}
-      Transparent = True
-      OnClick = ExplorerClick
-    end
-    object CommanderInterfaceButton2: TRadioButton
-      Left = 16
-      Top = 19
-      Width = 117
-      Height = 17
-      Caption = '&Commander'
-      Checked = True
-      TabOrder = 0
-      TabStop = True
-    end
-    object ExplorerInterfaceButton2: TRadioButton
-      Left = 16
-      Top = 133
-      Width = 111
-      Height = 17
-      Caption = '&Explorer'
-      TabOrder = 1
-    end
-  end
-end

+ 0 - 4284
forms/Glyphs.dfm

@@ -1,4284 +0,0 @@
-object GlyphsModule: TGlyphsModule
-  OldCreateOrder = False
-  Height = 297
-  Width = 224
-  object ExplorerImages: TImageList
-    Left = 32
-    Top = 16
-    Bitmap = {
-      494C010161009C00480010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
-      0000000000003600000028000000400000009001000001002000000000000090
-      0100000000000000000000000000000000004545450045454500454545004545
-      4500454545004545450045454500454545004545450045454500000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000086868600CCCCCC00CCCCCC00CCCC
-      CC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC0045454500000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008686860099FFFF00FFFFFF00FFFF
-      FF0000000000FFFFFF00FFFFFF00FFFFFF00CCCCCC0045454500454545004545
-      4500454545000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000086868600FFFFFF0099FFFF0099FF
-      FF000000000000000000FFFFFF0099FFFF00CCCCCC0045454500CCCCCC00CCCC
-      CC00454545000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000086868600FFFFFF00FFFFFF00FFFF
-      FF000000000066CC330000000000FFFFFF00CCCCCC0045454500FFFFFF00CCCC
-      CC00454545004545450045454500454545000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000086868600FFFFFF0099FFFF0099FF
-      FF000066330066FF330066CC330000000000CCCCCC0045454500FFFFFF00CCCC
-      CC0045454500CCCCCC00CCCCCC00454545000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000086868600FFFFFF00FFFFFF00FFFF
-      FF000066330066FF330066FF330066CC33000000000045454500FFFFFF00CCCC
-      CC0045454500FFFFFF00CCCCCC00454545000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000086868600FFFFFF00FFFFFF00FFFF
-      FF000066330066FF330066FF330066FF330066CC330000000000FFFFFF00CCCC
-      CC0045454500FFFFFF00CCCCCC00454545000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000086868600FFFFFF00FFFFFF00FFFF
-      FF000066330099FFCC0066FF330066FF330066FF330066CC330000000000CCCC
-      CC0045454500FFFFFF00CCCCCC00454545000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000086868600FFFFFF00FFFFFF00FFFF
-      FF000066330099FFCC0099FFCC0066FF330066FF330000000000FFFFFF00CCCC
-      CC0045454500FFFFFF00CCCCCC00454545000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000086868600FFFFFF00FFFFFF00FFFF
-      FF0000663300FFFFFF0099FFCC0099FFCC000000000045454500454545004545
-      450045454500FFFFFF00CCCCCC00454545000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008686860086868600868686008686
-      860000663300FFFFFF00FFFFFF0000000000FFFFFF0086868600FFFFFF004545
-      4500FFFFFF00FFFFFF00CCCCCC00454545000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000008686
-      860000663300FFFFFF0000000000FFFFFF00FFFFFF008686860045454500FFFF
-      FF00454545004545450045454500454545000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000008686
-      8600006633000000000086868600868686008686860086868600FFFFFF00FFFF
-      FF0086868600FFFFFF0045454500000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000006633000000000086868600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00868686004545450000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000086868600868686008686860086868600868686008686
-      8600868686000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008484840084848400848484008484
-      8400848484008484840084848400848484008484840084848400000000000000
-      0000000000000000000000000000000000008484840084848400848484008484
-      8400848484008484840084848400848484008484840084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000C0C0C000C0C0C000C0C0C000C0C0
-      C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C00084848400000000000000
-      000000000000000000000000000000000000C0C0C000C0C0C000C0C0C000C0C0
-      C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C00084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000086868600CCCCCC00CCCCCC00CCCC
-      CC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCC
-      CC00CCCCCC00CCCCCC00CCCCCC0000000000C0C0C0009CFFFF00848484008484
-      840084848400848484008484840084848400C0C0C00084848400848484008484
-      840084848400000000000000000000000000C0C0C0009CFFFF00848484008484
-      840084848400848484008484840084848400C0C0C00084848400848484008484
-      8400848484000000000000000000000000000000000000000000000000000000
-      0000FFFFFF000000000000000000000000000000000000000000000000000000
-      0000FFFFFF0000000000000000000000000086868600FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000000000000000000000000000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CCCCCC0000000000C0C0C000FFFFFF009CFFFF009CFF
-      FF00FFFFFF009CFFFF00FFFFFF009CFFFF00C0C0C00084848400C0C0C000C0C0
-      C00084848400000000000000000000000000C0C0C000FFFFFF009CFFFF009CFF
-      FF00FFFFFF009CFFFF00FFFFFF009CFFFF00C0C0C00084848400C0C0C000C0C0
-      C000848484000000000000000000000000000000000000000000000000000000
-      0000FFFFFF000000000000000000000000000000000000000000000000000000
-      0000FFFFFF0000000000000000000000000086868600FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0086868600FFFFCC00FFCC330000000000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CCCCCC0000000000C0C0C000FFFFFF00848484008484
-      840084848400848484008484840084848400C0C0C00084848400FFFFFF00C0C0
-      C00084848400848484008484840084848400C0C0C000FFFFFF00848484008484
-      840084848400848484008484840084848400C0C0C00084848400FFFFFF00C0C0
-      C000848484008484840084848400848484000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF000000
-      00000000000000000000000000000000000086868600FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0086868600FFFFCC00FFCC330000000000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CCCCCC0000000000C0C0C000FFFFFF009CFFFF009CFF
-      FF00FFFFFF009CFFFF00FFFFFF00FFFFFF00C0C0C00084848400FFFFFF00C0C0
-      C00084848400C0C0C000C0C0C00084848400C0C0C000FFFFFF009CFFFF009CFF
-      FF00FFFFFF009CFFFF00FFFFFF00FFFFFF00C0C0C00084848400FFFFFF00C0C0
-      C00084848400C0C0C000C0C0C000848484000000000000000000000000000000
-      000000000000FFFFFF000000000000000000C0C0C00000000000FFFFFF000000
-      00000000000000000000000000000000000086868600FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0086868600FFFFCC00FFCC330000000000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CCCCCC0000000000C0C0C000FFFFFF00848484008484
-      8400848484008484840084848400FFFFFF00C0C0C00084848400FFFFFF00C0C0
-      C00084848400FFFFFF00C0C0C00084848400C0C0C000FFFFFF00848484008484
-      8400848484008484840084848400FFFFFF00C0C0C00084848400FFFFFF00C0C0
-      C00084848400FFFFFF00C0C0C000848484000000000000000000000000000000
-      000000000000000000000000000000000000C0C0C00000000000000000000000
-      00000000000000000000000000000000000086868600FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF0086868600FFFFCC00FFFFCC00FFFF9900FFCC330000000000FFFF
-      FF00FFFFFF00FFFFFF00CCCCCC0000000000C0C0C000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C0C0C00084848400FFFFFF00C0C0
-      C00084848400FFFFFF00C0C0C00084848400C0C0C000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C0C0C00084848400FFFFFF00C0C0
-      C00084848400FFFFFF00C0C0C000848484000000000000000000000000000000
-      000000000000FFFFFF0000000000000000000000000000000000FFFFFF000000
-      00000000000000000000000000000000000086868600FFFFFF00FFFFFF00FFFF
-      FF0086868600FFFFCC00FFFFCC00FFFFCC00FFFF9900FFFF9900FFCC33000000
-      0000FFFFFF00FFFFFF00CCCCCC0000000000C0C0C000FFFFFF00848484008484
-      8400848484009CFFFF0084848400848484008484840084848400FFFFFF00C0C0
-      C00084848400FFFFFF00C0C0C00084848400C0C0C000FFFFFF00848484008484
-      8400848484009CFFFF0084848400848484008484840084848400FFFFFF00C0C0
-      C00084848400FFFFFF00C0C0C000848484000066660099FFFF0000CCFF0000CC
-      FF00000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000086868600FFFFFF00FFFFFF008686
-      8600FFFFCC00FFFFFF00FFFFFF00FFFFCC00FFFF9900FFFF9900FFFF9900FFCC
-      330000000000FFFFFF00CCCCCC0000000000C0C0C000FFFFFF000000FF000000
-      9C0000009C0000009C00C0C0C000FFFFFF0084848400FFFFFF00FFFFFF00C0C0
-      C00084848400FFFFFF00C0C0C00084848400C0C0C000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00C0C0C000FFFFFF0084848400FFFFFF00FFFFFF00C0C0
-      C00084848400FFFFFF00C0C0C000848484000066660099FFFF0099FFFF0000CC
-      FF0000CCFF0000000000FFFFFF000000000000CCFF000099CC0000000000FFFF
-      FF000000000000000000000000000000000086868600FFFFFF00868686008686
-      8600868686008686860086868600868686008686860086868600868686008686
-      86008686860086868600CCCCCC0000000000C0C0C0000000FF0000009C00FFFF
-      FF00FFFFFF000000FF0000009C0084848400FFFFFF0084848400848484008484
-      840084848400FFFFFF00C0C0C00084848400C0C0C000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00C0C0C00084848400FFFFFF0084848400848484008484
-      840084848400FFFFFF00C0C0C000848484000066660099FFFF0000CCFF0099FF
-      FF0000CCFF000000000000000000000000000099CC000099CC00000000000000
-      00000000000000000000000000000000000086868600FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CCCCCC00000000000000FF0000009C00C0C0C000C0C0
-      C000C0C0C000C0C0C0000000FF0000009C00FFFFFF00C0C0C000FFFFFF008484
-      8400FFFFFF00FFFFFF00C0C0C00084848400C0C0C000C0C0C000C0C0C000C0C0
-      C000C0C0C000C0C0C000C0C0C000C0C0C000FFFFFF00C0C0C000FFFFFF008484
-      8400FFFFFF00FFFFFF00C0C0C000848484000066660099FFFF00FFFFFF0000CC
-      FF0099FFFF0000CCFF0000CCFF0000CCFF0000CCFF000099CC00000000000000
-      0000000000000000000000000000000000008000000080000000800000008000
-      0000800000008000000080000000800000008000000080000000800000008000
-      0000800000008000000080000000000000000000FF0000009C00000000000000
-      FF0000009C00FFFFFF000000FF0000009C00FFFFFF00C0C0C00084848400FFFF
-      FF0084848400848484008484840084848400000000000000000000000000C0C0
-      C000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C0C0C00084848400FFFF
-      FF00848484008484840084848400848484000066660099FFFF0000CCFF00FFFF
-      FF0000CCFF0099FFFF0000CCFF0000CCFF0000CCFF000099CC00000000000000
-      000000000000000000000000000000000000FF000000FF993300FF663300FF66
-      3300FF663300FF663300FF663300FF663300FF663300FF663300FF663300FF66
-      3300FF663300FF663300FF663300000000000000FF0000009C00000000000000
-      FF0000009C00C0C0C0000000FF0000009C00C0C0C000C0C0C000FFFFFF00FFFF
-      FF00C0C0C000FFFFFF008484840000000000000000000000000000000000C0C0
-      C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000FFFFFF00FFFF
-      FF00C0C0C000FFFFFF0084848400000000000066660099FFFF0099FFFF0099FF
-      FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF00000000000000
-      000000000000000000000000000000000000FF000000FF000000FF000000FF00
-      0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
-      0000FF000000FF000000FF00000000000000000000000000FF0000009C000000
-      FF0000009C000000FF0000009C00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00C0C0C0008484840000000000000000000000000000000000000000000000
-      00000000000000000000C0C0C000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00C0C0C0008484840000000000000000000066660099FFFF0099FFFF0099FF
-      FF00006666000066660000666600006666000066660000666600000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      FF0000009C0000000000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0
-      C000C0C0C0000000000000000000000000000000000000000000000000000000
-      00000000000000000000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0
-      C000C0C0C0000000000000000000000000000000000000666600006666000066
-      6600000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000CC330000CC330000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008000000080000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000008484
-      8400CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE
-      CE00CECECE00CECECE00CECECE00000000000000000000000000000000000000
-      000000000000000000000000000000000000CC330000CC330000800000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000800000008000000080000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008484840000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000008484
-      8400CECECE004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A
-      4A004A4A4A004A4A4A00CECECE000000000000000000CC330000CC3300000000
-      0000CC330000CC330000CC33000000000000CC330000CC330000CC3300008000
-      0000000000000000000000000000000000000000000000000000000000008000
-      0000800000008000000080000000000000008000000080000000800000000000
-      0000800000008000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000CECECE000000000000000000CC330000CC3300000000
-      0000CC330000CC330000CC33000000000000CC330000CC330000CC330000CC33
-      0000800000000000000000000000000000000000000000000000800000009933
-      0000993300009933000099330000000000009933000099330000993300000000
-      0000993300009933000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000848484000000
-      0000000000000000000000000000000000000000000084848400CECECE00CECE
-      CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE
-      CE00CECECE0000000000CECECE00000000000000000099330000993300000000
-      0000993300009933000099330000000000009933000099330000993300009933
-      0000993300008000000000000000000000000000000080000000993300009933
-      0000993300009933000099330000000000009933000099330000993300000000
-      0000993300009933000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000FFFF0000FFFF0000000000008484
-      8400000000000000000000000000000000000000000084848400CECECE004A4A
-      4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A
-      4A00CECECE0000000000CECECE00000000000000000099330000993300000000
-      0000993300009933000099330000000000009933000099330000993300009933
-      000080000000000000000000000000000000000000000000000080000000CC33
-      0000CC330000CC330000CC33000000000000CC330000CC330000CC3300000000
-      0000CC330000CC33000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000FFFF0000FFFF0000000000008484
-      8400848484000000000000000000000000000000000084848400CECECE00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00CECECE0000000000CECECE00000000000000000080000000800000000000
-      0000800000008000000080000000000000008000000080000000800000008000
-      0000000000000000000000000000000000000000000000000000000000008000
-      0000CC330000CC330000CC33000000000000CC330000CC330000CC3300000000
-      0000CC330000CC33000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000FFFF0000FFFF00000000
-      0000848484008484840000000000000000000000000084848400CECECE004A4A
-      4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A
-      4A00CECECE0000000000CECECE00000000000000000000000000000000000000
-      0000000000000000000000000000000000008000000080000000800000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000080000000CC330000CC330000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000FFFF0000000000000000
-      0000848484008484840000000000000000000000000084848400CECECE00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00CECECE000000000084848400000000000000000000000000000000000000
-      0000000000000000000000000000000000008000000080000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000CC330000CC330000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000084000000
-      8400000000000000000000000000000000000000000084848400CECECE00DEDE
-      DE00DEDEDE00DEDEDE00DEDEDE00CECECE00CECECE0000840000008400000084
-      0000CECECE000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000084848400CECECE00CECE
-      CE00CECECE00CECECE00CECECE00CECECE00CECECE0000FF000000FF000000FF
-      0000CECECE000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000084848400848484008484
-      8400848484008484840084848400848484008484840084848400848484008484
-      8400848484000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008484840084848400848484008484
-      8400848484008484840084848400848484008484840084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000004C4C
-      4C004C4C4C004C4C4C004C4C4C004C4C4C0000000000000000004C4C4C004C4C
-      4C004C4C4C004C4C4C004C4C4C00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000FF00000000000000FF0000000000
-      0000FF00000000000000FF00000000000000FF00000000000000FF0000000000
-      0000FF00000000000000FF00000000000000C0C0C000C0C0C000C0C0C000C0C0
-      C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C00084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000004C4C
-      4C009F705B009A705B009F705B004C4C4C0000000000000000004C4C4C009F70
-      5B009A705B009F705B004C4C4C00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000C0C0C0009CFFFF00848484008484
-      840084848400848484008484840084848400C0C0C00084848400848484008484
-      840084848400000000000000000000000000000000004C4C4C004C4C4C004C4C
-      4C00A4705B00A4705B00A4705B004C4C4C004C4C4C004C4C4C004C4C4C00A470
-      5B00A4705B00A4705B004C4C4C00000000000000000000000000000000000000
-      0000000000000000000066CC3300000000000000000000000000000000000000
-      000000000000000000000000000000000000FF00000000000000000000000000
-      0000000000000000000000008000000080000000800000000000000000000000
-      00000000000000000000FF00000000000000C0C0C000FFFFFF009CFFFF009CFF
-      FF00FFFFFF009CFFFF00FFFFFF009CFFFF00C0C0C00084848400C0C0C000C0C0
-      C00084848400000000000000000000000000000000004C4C4C009F705B004C4C
-      4C00AF755B00AF755B00AF755B004C4C4C004C4C4C009F705B004C4C4C00AF75
-      5B00AF755B00AF755B004C4C4C00000000000000000000000000000000000000
-      0000000000000066330066FF330066CC33000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000080000000800000000000000000000000000000008000000080000000
-      000000000000000000000000000000000000C0C0C000FFFFFF00848484008484
-      840084848400848484008484840084848400C0C0C00084848400FFFFFF00C0C0
-      C00084848400848484008484840084848400000000004C4C4C00A4705B004C4C
-      4C00BA7A5B00BA7A5B00BA7A5B004C4C4C004C4C4C00A4705B004C4C4C00BA7A
-      5B00BA7A5B00BA7A5B004C4C4C00000000000000000000000000000000000000
-      000066CC33000066330066FF330066FF330066CC330000000000000000000000
-      000000000000000000000000000000000000FF00000000000000000000000000
-      8000000000000000000000000000000000000000000000000000000000000000
-      80000000000000000000FF00000000000000C0C0C000FFFFFF009CFFFF009CFF
-      FF00FFFFFF009CFFFF00FFFFFF00FFFFFF00C0C0C00084848400FFFFFF00C0C0
-      C00084848400C0C0C000C0C0C00084848400000000004C4C4C00AF755B004C4C
-      4C00BA7A5B00BF7A5B00BA7A5B004C4C4C004C4C4C00AF755B004C4C4C00BA7A
-      5B00BF7A5B00BA7A5B004C4C4C00000000000000000000000000000000000066
-      330066FF33000066330066FF330066FF330066FF330066CC3300000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      8000000000000000000000000000000000000000000000000000000000000000
-      800000000000000000000000000000000000C0C0C000FFFFFF00848484008484
-      8400848484008484840084848400FFFFFF00C0C0C00084848400FFFFFF00C0C0
-      C00084848400FFFFFF00C0C0C00084848400000000004C4C4C00BA7A5B004C4C
-      4C00BA7A5B00BF7A5B00BA7A5B004C4C4C004C4C4C00BA7A5B004C4C4C00BA7A
-      5B00BF7A5B00BA7A5B004C4C4C00000000000000000000000000000000000066
-      330066FF33000066330099FFCC0066FF330066FF330066FF330066CC33000000
-      000000000000000000000000000000000000FF00000000000000000080000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000800000000000FF00000000000000C0C0C000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C0C0C00084848400FFFFFF00C0C0
-      C00084848400FFFFFF00C0C0C00084848400000000004C4C4C00BA7A5B004C4C
-      4C00BF7F6000BF7F6000BF7F60004C4C4C004C4C4C00BA7A5B004C4C4C00BF7F
-      6000BF7F6000BF7F60004C4C4C00000000000000000000000000000000000066
-      330066FF33000066330099FFCC0099FFCC0066FF330066FF3300000000000000
-      0000000000000000000000000000000000000000000000000000000080000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000008000000000000000000000000000C0C0C000FFFFFF00848484008484
-      8400848484009CFFFF0084848400848484008484840084848400FFFFFF00C0C0
-      C00084848400FFFFFF00C0C0C00084848400000000004C4C4C00BA7A5B004C4C
-      4C00C58A6A00C58A7000C58A6A004C4C4C004C4C4C00BA7A5B004C4C4C00C58A
-      6A00C58A7000C58A6A004C4C4C00000000000000000000000000000000000066
-      330099FFCC0000663300FFFFFF0099FFCC0099FFCC0000000000000000000000
-      000000000000000000000000000000000000FF00000000000000000080000000
-      0000000000000000000000000000000000000000000000008000000000000000
-      00000000800000000000FF00000000000000C0C0C000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00C0C0C000FFFFFF0084848400FFFFFF00FFFFFF00C0C0
-      C00084848400FFFFFF00C0C0C00084848400000000004C4C4C00BF7F60004C4C
-      4C00CA947500CF9A7F00CA947A004C4C4C004C4C4C00BF7F60004C4C4C00CA94
-      7500CF9A7F00CA947A004C4C4C00000000000000000000000000000000000066
-      330099FFCC0000663300FFFFFF00FFFFFF000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      8000000000000000000000000000000000000000000000008000000080000000
-      8000000000000000000000000000000000000000FF0000009C00FFFFFF00FFFF
-      FF000000FF0000009C00C0C0C00084848400FFFFFF0084848400848484008484
-      840084848400FFFFFF00C0C0C00084848400000000004C4C4C00C58A6A004C4C
-      4C00CF9F8500CF9F8500CF9F85004C4C4C004C4C4C00C58A6A004C4C4C00CF9F
-      8500CF9F8500CF9F85004C4C4C00000000000000000000000000000000000066
-      3300FFFFFF0000663300FFFFFF00000000000000000000000000000000000000
-      000000000000000000000000000000000000FF00000000000000000000000000
-      8000000000000000000000000000000000000000000000008000000080000000
-      80000000000000000000FF00000000000000C0C0C0000000FF0000009C000000
-      FF0000009C00C0C0C000C0C0C000FFFFFF00FFFFFF00C0C0C000FFFFFF008484
-      8400FFFFFF00FFFFFF00C0C0C00084848400000000004C4C4C00CA9475004C4C
-      4C00CF9F8500CF9F8500CF9F85004C4C4C004C4C4C00CA9475004C4C4C00CF9F
-      8500CF9F8500CF9F85004C4C4C00000000000000000000000000000000000066
-      3300FFFFFF000066330000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000080000000800000000000000000000000000000008000000080000000
-      80000000800000000000000000000000000000000000000000000000FF000000
-      9C00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C0C0C00084848400FFFF
-      FF0084848400848484008484840084848400000000004C4C4C00CF9F85004C4C
-      4C004C4C4C004C4C4C004C4C4C004C4C4C004C4C4C00CF9F85004C4C4C004C4C
-      4C004C4C4C004C4C4C004C4C4C00000000000000000000000000000000000066
-      3300FFFFFF000066330000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000FF00000000000000000000000000
-      0000000000000000000000008000000080000000000000000000000000000000
-      00000000000000000000FF00000000000000000000000000FF0000009C000000
-      FF0000009C00C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000FFFFFF00FFFF
-      FF00C0C0C000FFFFFF008484840000000000000000004C4C4C00CF9F8500CF9F
-      8500CF9F85004C4C4C0000000000000000004C4C4C00CF9F8500CF9F8500CF9F
-      85004C4C4C000000000000000000000000000000000000000000000000000066
-      3300000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000FF0000009C00000000000000
-      00000000FF0000009C00C0C0C000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00C0C0C000848484000000000000000000000000004C4C4C004C4C4C004C4C
-      4C004C4C4C004C4C4C0000000000000000004C4C4C004C4C4C004C4C4C004C4C
-      4C004C4C4C000000000000000000000000000000000000000000000000000066
-      3300000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000FF00000000000000FF0000000000
-      0000FF00000000000000FF00000000000000FF00000000000000FF0000000000
-      0000FF00000000000000FF000000000000000000000000000000000000000000
-      00000000000000000000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0
-      C000C0C0C0000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008080800000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008080800000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000808080008000000080000000808080000000000080808000800000008080
-      8000000000000000000000000000000000000000000000000000000000000000
-      0000808080008000000080000000808080000000000080808000800000008080
-      80000000000000000000000000000000000080808000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000C0C0C000C0C0C000C0C0C000C0C0C000C0C0
-      C000C0C0C00000000000000000000000000000000000000000004C4C4C004C4C
-      4C004C4C4C004C4C4C004C4C4C0000000000000000004C4C4C004C4C4C004C4C
-      4C004C4C4C004C4C4C0000000000000000000000000000000000000000008080
-      800080000000FF000000FF000000FF0000000000000000000000808080008000
-      0000808080000000000000000000000000000000000000000000000000008080
-      800080000000FF000000FF000000FF0000000000000000000000808080008000
-      00008080800000000000000000000000000080808000FFFFFF0000000000FFFF
-      FF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00C0C0C00000000000000000000000000000000000000000004C4C4C009F70
-      5B009A705B009F705B004C4C4C0000000000000000004C4C4C009F705B009A70
-      5B009F705B004C4C4C0000000000000000000000000000000000808080008000
-      0000FF000000FF000000FF000000FF000000000000000000FF00000000008080
-      8000800000008080800000000000000000000000000000000000808080008000
-      0000FF000000FF000000FF000000FF0000000000000080808000000000008080
-      80008000000080808000000000000000000080808000FFFFFF00000000008080
-      800000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000FF00FFFF
-      FF00C0C0C00000000000000000000000000000000000000000004C4C4C00A470
-      5B00A4705B00A4705B004C4C4C0000000000000000004C4C4C00A4705B00A470
-      5B00A4705B004C4C4C000000000000000000000000000000000080000000FF00
-      0000FF00000000808000000000000000000000000000000000000000FF000000
-      000080808000800000000000000000000000000000000000000080000000FF00
-      0000FF0000000080800000000000000000000000000000000000808080000000
-      00008080800080000000000000000000000080808000FFFFFF00FFFFFF000000
-      000000000000FFFFFF00000000000000FF000000FF000000FF000000FF00FFFF
-      FF00C0C0C00000000000000000000000000000000000000000004C4C4C00AF75
-      5B00AF755B00AF755B004C4C4C0000000000000000004C4C4C00AF755B00AF75
-      5B00AF755B004C4C4C0000000000000000000000000080808000FFFFFF000080
-      800000808000FFFFFF00000000000000FF000000FF008000FF000000FF000000
-      FF00000000008080800080808000000000000000000080808000FFFFFF000080
-      800000808000FFFFFF0000000000808080008080800080808000808080008080
-      80000000000080808000808080000000000080808000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000FFFFFF000000FF00FFFFFF000000FF00FFFF
-      FF00C0C0C00000000000000000000000000000000000000000004C4C4C00BA7A
-      5B00BA7A5B00BA7A5B004C4C4C0000000000000000004C4C4C00BA7A5B00BA7A
-      5B00BA7A5B004C4C4C0000000000000000000000000080808000FFFFFF00FFFF
-      FF00FFFFFF0000808000FF000000000000008000FF000000FF00000000000000
-      0000000000000000000080000000000000000000000080808000FFFFFF00FFFF
-      FF00FFFFFF0000808000FF000000000000008080800080808000000000000000
-      0000000000000000000080000000000000008080800080808000808080008080
-      8000808080008080800000000000FFFFFF00FFFFFF000000FF000000FF00FFFF
-      FF00C0C0C00000000000000000000000000000000000000000004C4C4C00BA7A
-      5B00BF7A5B00BA7A5B004C4C4C0000000000000000004C4C4C00BA7A5B00BF7A
-      5B00BA7A5B004C4C4C0000000000000000000000000080808000FFFFFF00FFFF
-      FF00FFFFFF0000808000FF000000000000000000FF008000FF000000FF000000
-      000080808000FFFFFF0080000000000000000000000080808000FFFFFF00FFFF
-      FF00FFFFFF0000808000FF000000000000008080800080808000808080000000
-      000080808000FFFFFF0080000000000000000000000080808000FFFFFF00FF00
-      0000FF000000FF000000FF000000FF000000FF000000FFFFFF000000FF00FFFF
-      FF00C0C0C00000000000000000000000000000000000000000004C4C4C00BA7A
-      5B00BF7A5B00BA7A5B004C4C4C0000000000000000004C4C4C00BA7A5B00BF7A
-      5B00BA7A5B004C4C4C0000000000000000000000000080808000FFFFFF00FFFF
-      FF0000000000000000000000000000000000000000000000FF008000FF000000
-      FF00000000008080800080000000000000000000000080808000FFFFFF00FFFF
-      FF00000000000000000000000000000000000000000080808000808080008080
-      8000000000008080800080000000000000000000000080808000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00C0C0C00000000000000000000000000000000000000000004C4C4C00BA7A
-      5B00BF7A5B00BA7A5B004C4C4C0000000000000000004C4C4C00BA7A5B00BF7A
-      5B00BA7A5B004C4C4C0000000000000000000000000080808000FFFFFF00FFFF
-      FF00000000008000FF000000FF008000FF000000FF008000FF000000FF008000
-      FF000000FF000000000080808000000000000000000080808000FFFFFF00FFFF
-      FF00000000008080800080808000808080008080800080808000808080008080
-      8000808080000000000080808000000000000000000080808000FFFFFF000000
-      00000000000000000000FFFFFF00FF000000FF000000FF000000FF000000FFFF
-      FF00C0C0C00000000000000000000000000000000000000000004C4C4C00BA7A
-      5B00BF7A5B00BA7A5B004C4C4C0000000000000000004C4C4C00BA7A5B00BF7A
-      5B00BA7A5B004C4C4C000000000000000000000000008080800080808000FFFF
-      FF00FFFFFF00000000008000FF000000FF008000FF000000FF00000000000000
-      000000000000000000008080800000000000000000008080800080808000FFFF
-      FF00FFFFFF000000000080808000808080008080800080808000000000000000
-      0000000000000000000080808000000000000000000080808000FFFFFF000000
-      FF000000FF0080808000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00C0C0C00000000000000000000000000000000000000000004C4C4C00BF7F
-      6000BF7F6000BF7F60004C4C4C0000000000000000004C4C4C00BF7F6000BF7F
-      6000BF7F60004C4C4C0000000000000000000000000000000000808080000080
-      800000808000000000000000FF008000FF000000FF008000FF000000FF000000
-      0000808080008000000000000000000000000000000000000000808080000080
-      8000008080000000000080808000808080008080800080808000808080000000
-      0000808080008000000000000000000000000000000080808000FFFFFF00FF00
-      0000FFFFFF0080808000FFFFFF00FF000000FF000000FF000000FF000000FFFF
-      FF00C0C0C00000000000000000000000000000000000000000004C4C4C00C58A
-      6A00C58A7000C58A6A004C4C4C0000000000000000004C4C4C00C58A6A00C58A
-      7000C58A6A004C4C4C0000000000000000000000000000000000808080008080
-      8000FF00000000808000000000000000FF008000FF000000FF008000FF000000
-      FF00000000008080800000000000000000000000000000000000808080008080
-      8000FF0000000080800000000000808080008080800080808000808080008080
-      8000000000008080800000000000000000000000000080808000FFFFFF00FF00
-      0000FFFFFF0080808000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
-      00000000000000000000000000000000000000000000000000004C4C4C00CA94
-      7500CF9A7F00CA947A004C4C4C0000000000000000004C4C4C00CA947500CF9A
-      7F00CA947A004C4C4C0000000000000000000000000000000000000000008080
-      800080808000FF000000000000008000FF008000FF008000FF000000FF008000
-      FF008000FF000000000080808000000000000000000000000000000000008080
-      800080808000FF00000000000000808080008080800080808000808080008080
-      8000808080000000000080808000000000000000000080808000FFFFFF008080
-      80008080800080808000FFFFFF00FFFFFF00FFFFFF00FFFFFF00C0C0C000FFFF
-      FF008080800000000000000000000000000000000000000000004C4C4C00CF9F
-      8500CF9F8500CF9F85004C4C4C0000000000000000004C4C4C00CF9F8500CF9F
-      8500CF9F85004C4C4C0000000000000000000000000000000000000000000000
-      0000808080008080800080808000000000008000FF000000FF008000FF008000
-      FF000000FF008000FF0000000000808080000000000000000000000000000000
-      0000808080008080800080808000000000008080800080808000808080008080
-      8000808080008080800000000000808080000000000080808000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C0C0C0008080
-      80000000000000000000000000000000000000000000000000004C4C4C00CF9F
-      8500CF9F8500CF9F85004C4C4C0000000000000000004C4C4C00CF9F8500CF9F
-      8500CF9F85004C4C4C0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000080808000808080008080
-      8000808080008080800080808000808080008080800080808000808080000000
-      00000000000000000000000000000000000000000000000000004C4C4C004C4C
-      4C004C4C4C004C4C4C004C4C4C0000000000000000004C4C4C004C4C4C004C4C
-      4C004C4C4C004C4C4C0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000660066000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000006363009CFFFF00CEFF
-      FF0000CEFF00009CCE0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000066006600660066009300D6008000800000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00004B4B4B004B4B4B004B4B4B004B4B4B0000000000006363009CFFFF0000CE
-      FF00CEFFFF00009CCE00000000000000000086868600CCCCCC00CCCCCC00CCCC
-      CC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00C0C0C0000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000006600
-      6600660066009300D600CC66CC00D6E7E700CBCBCB0080008000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00004B4B4B000000000000000000000000000000000000636300006363000063
-      63000063630000636300000000000000000086868600FFFFFF0099FFFF00FFFF
-      FF0099FFFF00FFFFFF0099FFFF00FFFFFF0099FFFF00FFFFFF00C0C0C0000000
-      0000000000000000000000000000000000000000000000000000FFFFFF000000
-      0000FFFFFF0000000000FFFFFF0000000000FFFFFF0000000000000000000000
-      0000000000000000000000000000000000000000000066006600660066009300
-      D600CC66CC00D6E7E700D6E7E700D6E7E700CBCBCB00CBCBCB00800080000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00004B4B4B000000000000000000000000000000000000636300006363000000
-      0000000000000000000000000000000000008686860099FFFF00FFFFFF0099FF
-      FF00FFFFFF0099FFFF00FFFFFF0099FFFF000000000099FFFF00C0C0C0000000
-      000000000000000000000000000000000000000000008686860000000000FFFF
-      FF0000000000FFFFFF0000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000800080009300D600CC66CC00D6E7
-      E700D6E7E700CBCBCB00CBCBCB00800080009999990090A9AD00CBCBCB008000
-      8000000000000000000000000000000000000000000000000000000000000000
-      00004B4B4B000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000086868600FFFFFF0099FFFF00FFFF
-      FF0099FFFF00FFFFFF0099FFFF00FFFFFF000000000000000000C0C0C0000000
-      0000000000000000000000000000000000000000000000000000FFFFFF000000
-      0000FFFFFF000000000086868600CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCC
-      CC00CCCCCC00CCCCCC0000000000000000008000800099999900D6E7E700CBCB
-      CB0090A9AD00800080008000800099009900000000008686860099999900CBCB
-      CB00800080000000000000000000000000000000000000000000000000000000
-      00004B4B4B000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000086868600FFFFFF00FFFFFF0099FF
-      FF00FFFFFF0099FFFF00FFFFFF0099FFFF000000000000000000000000000000
-      000000000000000000000000000000000000000000008686860000000000FFFF
-      FF0000000000FFFFFF008686860099FFFF00FF000000FF000000FF000000FF00
-      0000FF000000CCCCCC0000000000000000008000800099999900CBCBCB008000
-      800080008000CC00CC00CC00CC00CC00CC009900990000000000666666009999
-      990090A9AD008000800000000000000000000000000000000000000000000000
-      00004B4B4B004B4B4B004B4B4B004B4B4B0000000000006363009CFFFF00CEFF
-      FF009CFFFF009CFFFF00000000000000000086868600FFFFFF0099FFFF00FFFF
-      FF0099FFFF00FFFFFF0099FFFF00FFFFFF0066999900F8F8F80099CCCC000000
-      0000000000000000000000000000000000000000000000000000FFFFFF000000
-      0000FFFFFF000000000086868600FFFFFF0099FFFF00FFFFFF0099FFFF00FFFF
-      FF0099FFFF00CCCCCC000000000000000000800080008000800080008000CC00
-      CC00CC00CC009900990099009900CC00CC00CC00CC0099009900000000006666
-      6600999999008686860080008000000000000000000000000000000000000000
-      00004B4B4B0000000000000000000000000000000000006363009CFFFF009CFF
-      FF00CEFFFF009CFFFF00000000000000000086868600FFFFFF00FFFFFF0099FF
-      FF00FFFFFF0099FFFF00FFFFFF0099FFFF006699990099CCCC00006699000000
-      000000000000000000000000000000000000000000008686860000000000FFFF
-      FF0000000000FFFFFF008686860099FFFF00FF000000FF000000FF000000FF00
-      0000FF000000CCCCCC00000000000000000080008000FF99FF00CC00CC00CC00
-      CC00CC00CC0000FFFF0033CCFF00336699009900990080008000990099000000
-      0000666666009999990080008000000000000000000000000000000000000000
-      00004B4B4B000000000000000000000000000000000000636300006363000063
-      63000063630000636300000000000000000086868600FFFFFF00FFFFFF00FFFF
-      FF0099FFFF00FFFFFF0099FFFF00FFFFFF0099FFFF000066990000CCFF000066
-      9900000000000000000000000000000000000000000000000000FFFFFF000000
-      0000FFFFFF000000000086868600FFFFFF0099FFFF00FFFFFF0099FFFF00FFFF
-      FF00CCCCCC00CCCCCC0000000000000000000000000080008000FF99FF00CC00
-      CC00CC00CC00CC00CC00CC00CC0000FFFF0000FFFF0033CCFF00336699008000
-      8000000000006666660080008000D8E9EC000000000000000000000000000000
-      0000000000000000000000000000000000000000000000636300006363000000
-      00000000000000000000000000000000000086868600FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF0099FFFF00FFFFFF0099FFFF00FFFFFF000066990099FFFF0000CC
-      FF0000000000000000000000000000000000000000008686860000000000FFFF
-      FF0000000000FFFFFF0086868600FFFFFF00FF663300FF663300FFFFFF000000
-      000000000000000000000000000000000000000000000000000080008000FF99
-      FF00CC00CC00CC00CC00CC00CC00CC00CC00CC00CC0033CCFF0000FFFF006600
-      6600800080000000000080008000D8E9EC000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000086868600FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0099FFFF00FFFFFF0099FFFF00C0C0C0000066990000FF
-      FF00006699000000000000000000000000000000000000000000868686000000
-      0000868686000000000086868600FFFFFF00FFFFFF00FFFFFF0099FFFF008686
-      8600FFFFFF000000000000000000000000000000000000000000000000008000
-      8000FF99FF00CC00CC00CC00CC0000FFFF0000FFFF0000FFFF003399CC006600
-      66008000800080008000000000000000000000000000006363009CFFFF00CEFF
-      FF0000CEFF00009CCE0000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000086868600FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF0099FFFF0000000000000000000066990099FF
-      FF0000CCFF000000000000000000000000000000000000000000000000000000
-      0000000000000000000086868600FFFFFF00FFFFFF00FFFFFF00FFFFFF008686
-      8600000000000000000000000000000000000000000000000000000000000000
-      000080008000FF99FF00CC00CC00CC00CC003366990033669900660066008000
-      80008000800066006600000000000000000000000000006363009CFFFF0000CE
-      FF00CEFFFF00009CCE0000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000086868600FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0086868600FFFFFF00000000000066
-      990000FF00000080000000000000000000000000000000000000000000000000
-      0000000000000000000086868600868686008686860086868600868686008686
-      8600000000000000000000000000000000000000000000000000000000000000
-      00000000000080008000FF99FF00CC00CC00CC00CC00CC00CC00990099006600
-      6600000000000000000000000000000000000000000000636300006363000063
-      6300006363000063630000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000086868600FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008686860000000000000000000000
-      99006600FF006600FF0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000080008000FF99FF00CC00CC0066006600000000000000
-      0000000000000000000000000000000000000000000000636300006363000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008686860086868600868686008686
-      8600868686008686860086868600868686008686860000000000000000000000
-      0000000099000000990000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000800080000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000084848400CECECE00CECECE00CECE
-      CE00CECECE00CECECE00CECECE00CECECE00CECECE0000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000848484009CFFFF00FF000000FF00
-      0000FF000000FF000000FF000000FF000000CECECE0000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000086868600CCCCCC00CCCCCC00CCCCCC00CCCC
-      CC00CCCCCC00CCCCCC00CCCCCC00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000084848400FFFFFF009CFFFF009CFF
-      FF00FFFFFF009CFFFF00FFFFFF009CFFFF00CECECE0000000000C6C6C600C6C6
-      C600000000000000000000000000000000003366660066999900669999006699
-      990066999900669999006699990086868600FFFFFF00CC330000CC330000CC33
-      0000CC330000CC330000CCCCCC00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000FFFF80000000000000000000000000000000
-      00000000000000000000000000000000000084848400FFFFFF00FF000000FF00
-      0000FF000000FF000000FF000000FF000000CECECE0000000000FFFFFF00C6C6
-      C600000000000000000000000000000000003366660099CCCC0099CCCC006699
-      990099CCCC0066999900669999008686860099FFFF00FFFFFF0099FFFF00FFFF
-      FF0099FFFF00CCCCCC00CCCCCC00000000000000000000000000000000000000
-      0000000000000000000080800000808000008080000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000008080000080800000FFFF800000000000000000000000
-      00000000000000000000000000000000000084848400FFFFFF009CFFFF009CFF
-      FF00FFFFFF009CFFFF00FFFFFF00FFFFFF00CECECE0000000000FFFFFF00C6C6
-      C60000000000C6C6C600C6C6C6000000000033666600CCFFFF0099CCCC0099CC
-      CC0099CCCC0099CCCC006699990086868600FFFFFF00FF000000FF000000FFFF
-      FF00777777000000000000000000000000000000000000000000000000000000
-      0000000000000000000080800000808000008080000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000080800000808000008080000080800000FFFF8000000000000000
-      00000000000000000000000000000000000084848400FFFFFF00FF000000FF00
-      0000FF000000FF000000FF000000FFFFFF00CECECE0000000000FFFFFF00C6C6
-      C60000000000FFFFFF00C6C6C600000000003366660099CCCC00CCFFFF0099CC
-      CC0099CCCC006699990099CCCC0086868600FFFFFF0099FFFF00FFFFFF0099FF
-      FF0086868600FFFFFF0000000000000000000000000000000000000000000000
-      0000000000000000000080800000808000008080000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000808000008080000080800000808000008080000080800000FFFF80000000
-      00000000000000000000000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00CECECE0000000000FFFFFF00C6C6
-      C60000000000FFFFFF00C6C6C6000000000033666600CCFFFF0099CCCC00CCFF
-      FF0099CCCC0099CCCC0099CCCC0086868600FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00868686000000000000000000000000000000000000000000000000000000
-      0000000000000000000080800000808000008080000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000080800000808000008080000000000000000000000000
-      00000000000000000000000000000000000084848400FFFFFF00FF000000FF00
-      0000FF0000009CFFFF0000000000000000000000000000000000FFFFFF00C6C6
-      C60000000000FFFFFF00C6C6C6000000000033666600CCFFFF00CCFFFF0099CC
-      CC00CCFFFF0099CCCC0099CCCC00868686008686860086868600868686008686
-      8600868686000000000000000000000000000000000000000000000000000000
-      0000FFFF80008080000080800000808000008080000080800000808000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000080800000808000008080000000000000000000000000
-      00000000000000000000000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0084848400FFFFFF0000000000FFFFFF00FFFFFF00C6C6
-      C60000000000FFFFFF00C6C6C6000000000033666600CCFFFF00CCFFFF00CCFF
-      FF0099CCCC00CCFFFF0099CCCC0099CCCC006699990099CCCC006699990099CC
-      CC00669999000000000000000000000000000000000000000000000000000000
-      000000000000FFFF800080800000808000008080000080800000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000080800000808000008080000000000000000000000000
-      00000000000000000000000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF008484840000000000FFFFFF0000000000000000000000
-      000000000000FFFFFF00C6C6C6000000000033666600FFFFFF00CCFFFF000000
-      0000000000000000000000000000000000000000000000000000000000006699
-      9900669999000000000000000000000000000000000000000000000000000000
-      00000000000000000000FFFF8000808000008080000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000080800000808000008080000000000000000000000000
-      0000000000000000000000000000000000008484840084848400848484008484
-      8400848484008484840084848400FFFFFF00FFFFFF0084848400FFFFFF000000
-      0000FFFFFF00FFFFFF00C6C6C6000000000033666600FFFFFF00CCFFFF000099
-      CC0099FFFF0033CCFF0033CCFF0033CCFF000099CC0000669900000000006699
-      9900669999000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000FFFF80000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000008484
-      8400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008484840000000000FFFF
-      FF000000000000000000000000000000000033666600FFFFFF00FFFFFF00FFFF
-      FF000099CC0099FFFF0000666600006666000099CC00000000006699990099CC
-      CC00669999000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000008484
-      8400848484008484840084848400848484008484840084848400FFFFFF00FFFF
-      FF0084848400FFFFFF0000000000000000000000000033666600336666003366
-      6600336666000099CC00FFFFFF0099FFFF000000000033666600336666003366
-      6600336666000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00848484000000000000000000000000000000000000000000000000000000
-      0000000000000099CC000099CC000099CC000066990000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000084848400848484008484840084848400848484008484
-      8400848484000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000080808000808080008080800080808000808080000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000808080000000800000008000000080000000800000008000808080008080
-      8000808080000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000000009C000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000FF0000000000000000000000000000000000000000000000
-      8000000080000000FF000000FF000000FF000000FF000000FF00000080000000
-      8000808080008080800000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000003131CE000000FF000000
-      9C00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000080000000
-      FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
-      FF000000800080808000808080000000000086868600CCCCCC00CCCCCC00CCCC
-      CC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCC
-      CC00CCCCCC00CCCCCC00CCCCCC00000000000000000000000000000000000000
-      0000000000000099330000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000003131CE00319CFF000000
-      FF0000009C000000000000000000000000000000000000000000000000000000
-      00000000FF0000000000000000000000000000000000000080000000FF000000
-      FF00FFFFFF000000FF000000FF000000FF000000FF000000FF00FFFFFF000000
-      FF000000FF0000008000808080000000000086868600FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CCCCCC00000000000000000000000000000000000000
-      00000000000066CC330000993300000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000000000003131CE000063
-      FF000000CE000000000000000000000000000000000000000000000000000000
-      FF000000000000000000000000000000000000000000000080000000FF00FFFF
-      FF00FFFFFF00FFFFFF000000FF000000FF000000FF00FFFFFF00FFFFFF00FFFF
-      FF000000FF0000008000808080008080800086868600FFFFFF00FFFFFF009933
-      0000993300009933000099330000FFFFFF00FFFFFF0099330000993300009933
-      0000FFFFFF00FFFFFF00CCCCCC00000000000000000000000000000000000000
-      00000000000066CC330066CC3300009933000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      CE000000FF0000009C00000000000000000000000000000000000000FF000000
-      9C0000000000000000000000000000000000000080000000FF000000FF000000
-      FF00FFFFFF00FFFFFF00FFFFFF000000FF00FFFFFF00FFFFFF00FFFFFF000000
-      FF000000FF000000FF00000080008080800086868600FFFFFF00FF0000009933
-      0000FFFFFF00FF00000099330000FFFFFF00FF00000099330000FFFFFF009933
-      000099330000FFFFFF00CCCCCC00000000000000000000000000000000000000
-      00000066330066FF330066CC330066CC33000099330000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000CE000000FF0000009C0000000000000000000000FF0000009C000000
-      000000000000000000000000000000000000000080000000FF000000FF000000
-      FF000000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FF000000
-      FF000000FF000000FF00000080008080800086868600FFFFFF00FF0000009933
-      0000FFFFFF00FF00000099330000FFFFFF00FF00000099330000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CCCCCC00000000000000000000000000000000000000
-      00000066330066FF330066FF330066CC330066CC330000993300000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000CE000000FF0000009C000000FF0000009C00000000000000
-      000000000000000000000000000000000000000080000000FF000000FF000000
-      FF000000FF000000FF00FFFFFF00FFFFFF00FFFFFF000000FF000000FF000000
-      FF000000FF000000FF00000080008080800086868600FFFFFF00FFFFFF00FF00
-      0000FF000000FF00000099330000FFFFFF00FF00000099330000993300009933
-      000099330000FFFFFF00CCCCCC00000000000000000000000000000000000000
-      00000066330066FF330066FF330066FF330066CC330066CC3300009933000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000CE000000FF0000009C0000000000000000000000
-      000000000000000000000000000000000000000080000000FF000000FF000000
-      FF000000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FF000000
-      FF000000FF000000FF00000080008080800086868600FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FF00000099330000FFFFFF00FF00000099330000FFFFFF00FF00
-      000099330000FFFFFF00CCCCCC00000000000000000000000000000000000000
-      00000066330099FFCC0066FF330066FF330066FF330066CC3300000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000CE000000FF0000009C000000CE0000009C00000000000000
-      000000000000000000000000000000000000000080000000FF000000FF000000
-      FF00FFFFFF00FFFFFF00FFFFFF000000FF00FFFFFF00FFFFFF00FFFFFF000000
-      FF000000FF000000FF00000080000000000086868600FFFFFF00FFFFFF00FF00
-      0000FF000000FF000000FFFFFF00FFFFFF00FFFFFF00FF000000FF000000FF00
-      0000FFFFFF00FFFFFF00CCCCCC00000000000000000000000000000000000000
-      00000066330099FFCC0099FFCC0066FF330066FF330000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000CE000000FF0000009C0000000000000000000000CE0000009C000000
-      00000000000000000000000000000000000000000000000080000000FF00FFFF
-      FF00FFFFFF00FFFFFF000000FF000000FF000000FF00FFFFFF00FFFFFF00FFFF
-      FF000000FF0000008000808080000000000086868600FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CCCCCC00000000000000000000000000000000000000
-      000000663300FFFFFF0099FFCC0099FFCC000000000000000000000000000000
-      00000000000000000000000000000000000000000000000000000000CE000000
-      FF000000FF0000009C00000000000000000000000000000000000000CE000000
-      9C000000000000000000000000000000000000000000000080000000FF000000
-      FF00FFFFFF000000FF000000FF000000FF000000FF000000FF00FFFFFF000000
-      FF000000FF000000800000000000000000008000000080000000800000008000
-      0000800000008000000080000000800000008000000080000000800000008000
-      0000800000008000000080000000000000000000000000000000000000000000
-      000000663300FFFFFF00FFFFFF00000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000CE00319CFF000000
-      FF0000009C000000000000000000000000000000000000000000000000000000
-      CE0000009C000000000000000000000000000000000000000000000080000000
-      FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
-      FF0000008000000000000000000000000000FF000000FF993300FF663300FF66
-      3300FF663300FF663300FF663300FF663300FF663300FF663300FF663300FF66
-      3300FF663300FF663300FF663300000000000000000000000000000000000000
-      000000663300FFFFFF0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000063639C000000CE006363
-      9C00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000CE0000000000000000000000000000000000000000000000
-      8000000080000000FF000000FF000000FF000000FF000000FF00000080000000
-      800000000000000000000000000000000000FF000000FF000000FF000000FF00
-      0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
-      0000FF000000FF000000FF000000000000000000000000000000000000000000
-      0000006633000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000800000008000000080000000800000008000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000006633000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000DDE0DE00CFBFB200CFBFB200DDE1DE00000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000080808000808080000000
-      00000000000000000000000000000000000030303000C0C0C000808080008080
-      8000808080008080800080808000808080008080800000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000084000000840000008400000084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000DDE0DE00B77C5A00AF4A0100BC570100AF4A010099340100AB623C00D8D5
-      CF00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000808080000000
-      00000000000000000000000000000000000030303000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0080808000808080008080800080808000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008484840084000000840000000000000084000000000000000000
-      000000000000000000000000000000000000000000000000000000000000DDE0
-      DF00B0602D00C6610100B9540100B77D5A00CFBFB200E0ECEC00D8D5CF00CFBF
-      B200000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000FFFFFF0000000000808080000000
-      0000000000000000000000000000000000000000000030303000808080008080
-      8000808080008080800080808000808080008080800080808000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008400000084000000840000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000000000000B66C
-      3D00D16C0100C6610100C0917800000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000C0C0C0000000000000000000C0C0C000FFFFFF0000000000808080008080
-      8000C0C0C0000000000000000000000000000000000030303000C0C0C0008080
-      800080808000C0C0C000C0C0C000C0C0C0008080800000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008400000084000000840000008484840000000000000000000000
-      0000000000000000000000000000000000000000000000000000D7CBC200CA66
-      0100DC770100B6510100DBD6D10000000000000000000000000000000000E1E3
-      E000C09278000000000000000000000000000000000000000000000000000000
-      000000000000C0C0C000FFFFFF00FFFFFF00FFFFFF00C0C0C000000000000000
-      0000808080008080800000000000000000000000000030303000FFFFFF008000
-      000000FFFF0080000000FF000000C0C0C0008080800000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008484840084000000840000008484840000000000000000000000
-      0000000000000000000000000000000000000000000000000000C0917800E983
-      0100E07B0100B75201000000000000000000000000000000000000000000AF66
-      3D00A33E0100BA856A000000000000000000000000000000000000000000C0C0
-      C000FFFFFF00FFFFFF00FFFFFF00FF000000FF000000FFFFFF00FFFFFF00C0C0
-      C000000000008080800080808000000000000000000030303000FFFFFF00FF00
-      00008000000000FFFF0080000000808080008080800000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008484840084000000840000008400000000000000000000000000
-      000000000000000000000000000000000000A33E0100B6643100B6643100F690
-      0100E47F0100B7520100A33E0100A33E01000000000000000000BA866A00A33E
-      0100CC670100A33E0100C8A89500000000000000000080808000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF0080808000FF000000FFFFFF00FFFFFF00FFFF
-      FF00C0C0C0000000000080808000C0C0C0000000000030303000FFFFFF00FF00
-      0000800000008000000000FFFF0000FFFF000000000000000000808080008080
-      8000808080008080800000000000000000000000000000000000000000000000
-      0000000000000000000084848400840000008400000084848400000000000000
-      000000000000000000000000000000000000E4EEEE00A33E0100F29B2C00F993
-      0100E9840100D9740100A33E0100C49C860000000000C8A89500A33E0100CC67
-      0100CC670100CC670100A33E0100D7CBC20080808000C0C0C000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00C0C0C00000000000808080000000000030303000FFFFFF008080
-      800000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000000000808080008080
-      8000808080008080800080808000000000000000000000000000000000000000
-      0000000000000000000000000000840000008400000084000000000000000000
-      00000000000000000000000000000000000000000000E4E4E100A33E0100F791
-      0100ED880100D26D0100BA7E5B0000000000DACDC300A33E0100BF5A0100CC67
-      0100CC670100C9640100BF5A0100A33E010080808000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FF000000FF000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000808080000000000000000000303030003030
-      3000303030003030300000FFFF0000FFFF0000FFFF0000FFFF0000FFFF000000
-      0000808080008080800080808000000000000000000000000000000000000000
-      0000000000008400000000000000840000008400000084000000000000000000
-      0000000000000000000000000000000000000000000000000000DACDC300A33E
-      0100EC870100B1612E00E3E4E100000000000000000000000000C59D8700BF5A
-      0100CC670100B7520100000000000000000080808000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF0080808000FF000000FF000000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000808080000000000000000000000000000000
-      000000000000000000003030300000FFFF0000FFFF008080800080808000C0C0
-      C000C0C0C0008080800000000000000000000000000000000000000000000000
-      0000000000008484840084000000840000008400000084848400000000000000
-      000000000000000000000000000000000000000000000000000000000000D4C1
-      B400A3451000E3E4E10000000000000000000000000000000000D3C1B400BF5A
-      0100CC670100B7520100000000000000000080808000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0080808000FF00000080808000FFFF
-      FF00FFFFFF00FFFFFF0000000000808080000000000000000000000000000000
-      0000000000000000000030303000808080008000000000FFFF0080000000FF00
-      0000C0C0C0008080800000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000BB866A00C964
-      0100C9640100B46A3D00000000000000000080808000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FF000000FF000000FFFFFF00FFFFFF00FF000000FF000000FFFF
-      FF00FFFFFF00C0C0C00000000000000000000000000000000000000000000000
-      0000000000000000000030303000FFFFFF00FF0000008000000000FFFF008000
-      0000C0C0C0008080800000000000000000000000000000000000000000000000
-      0000000000000000000084848400840000008400000084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000C69D8700B14C0100CC67
-      0100B1521000DACDC30000000000000000000000000080808000FFFFFF00FFFF
-      FF00FFFFFF0080808000FF000000FFFFFF00FFFFFF00FF000000FF000000FFFF
-      FF00FFFFFF000000000080808000000000000000000000000000000000000000
-      0000000000000000000030303000FFFFFF00FF000000FF000000800000008000
-      0000C0C0C0008080800000000000000000000000000000000000000000000000
-      0000000000000000000084000000840000008400000084000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000BB866A00AD633D00C1784100BC5D1000D5710100CA650100AD55
-      1F00D9CDC3000000000000000000000000000000000080808000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FF000000FF000000FF000000FF000000FFFFFF00FFFF
-      FF00C0C0C0000000000000000000000000000000000000000000000000000000
-      0000000000000000000030303000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00C0C0C0008080800000000000000000000000000000000000000000000000
-      0000000000000000000084848400840000008400000084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000DACEC400C2937900C5814C00BC866A00CBAA97000000
-      0000000000000000000000000000000000000000000000000000808080008080
-      8000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000303030003030300030303000303030003030
-      3000303030003030300000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000808080008080800080808000808080008080800080808000808080000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008080800000000000000000000000
-      00000000000000000000000000000000000080808000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000C0C0C000C0C0C000C0C0C000C0C0C000C0C0
-      C000C0C0C0000000000000000000000000008484840084848400848484008484
-      8400848484008484840084848400848484008484840084848400FFFFFF000000
-      00008484840000000000FFFFFF00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000808080008000000080000000808080000000000080808000800000008080
-      80000000000000000000000000000000000080808000FFFFFF0000000000FFFF
-      FF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00C0C0C0000000000000000000000000008484840084848400848484008484
-      840084848400848484008484840084848400848484008484840084848400FFFF
-      FF0084848400FFFFFF0084848400848484000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000008080
-      800080000000FF000000FF000000FF0000000000000000000000808080008000
-      00008080800000000000000000000000000080808000FFFFFF00000000008080
-      800000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000FF00FFFF
-      FF00C0C0C0000000000000000000000000008400000084000000840000008400
-      00000000000000000000848484008484840084848400FFFFFF00FFFFFF00FFFF
-      FF00840000008400000084000000840000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000808080008000
-      0000FF000000FF000000FF000000FF0000000000000000FFFF00000000008080
-      80008000000080808000000000000000000080808000FFFFFF00FFFFFF000000
-      000000000000FFFFFF00000000000000FF000000FF000000FF000000FF00FFFF
-      FF00C0C0C0000000000000000000000000000000000000000000000000008400
-      0000FF00000084000000000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF00840000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000080000000FF00
-      0000FF000000008080000000000000000000000000000000000000FFFF000000
-      00008080800080000000000000000000000080808000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000FFFFFF000000FF00FFFFFF000000FF00FFFF
-      FF00C0C0C0000000000000000000000000000000000000000000000000008400
-      000084000000FF0000008400000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00840000000000000000000000000000000000000000000000000000008484
-      8400CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE
-      CE00CECECE00CECECE00CECECE00000000000000000080808000FFFFFF000080
-      800000808000FFFFFF000000000000FFFF0000FFFF00FFFFFF0000FFFF0000FF
-      FF00000000008080800080808000000000008080800080808000808080008080
-      8000808080008080800000000000FFFFFF00FFFFFF000000FF000000FF00FFFF
-      FF00C0C0C0000000000000000000000000000000000000000000000000008400
-      0000FF00000084000000FF00000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00840000000000000000000000000000008400000000000000000000008484
-      8400CECECE004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A
-      4A004A4A4A004A4A4A00CECECE00000000000000000080808000FFFFFF00FFFF
-      FF00FFFFFF0000808000FF00000000000000FFFFFF0000FFFF00000000000000
-      0000000000000000000080000000000000000000000080808000FFFFFF00FF00
-      0000FF000000FF000000FF000000FF000000FF000000FFFFFF000000FF00FFFF
-      FF00C0C0C0000000000000000000000000000000000000000000000000008400
-      000084000000FF0000008400000000000000FFFFFF00FFFF0000FFFFFF00FFFF
-      0000840000000000000000000000000000008400000084000000000000008484
-      8400CECECE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CECECE00000000000000000080808000FFFFFF00FFFF
-      FF00FFFFFF0000808000FF0000000000000000FFFF00FFFFFF0000FFFF000000
-      000080808000FFFFFF0080000000000000000000000080808000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00C0C0C0000000000000000000000000000000000000000000000000008400
-      0000FF00000084000000FF00000000000000FFFF0000FFFFFF00FFFF0000FFFF
-      FF00840000000000000000000000000000008400000084000000000000008484
-      8400FFFFFF004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A
-      4A004A4A4A004A4A4A00CECECE00000000000000000080808000FFFFFF00FFFF
-      FF00000000000000000000000000000000000000000000FFFF00FFFFFF0000FF
-      FF00000000008080800080000000000000000000000080808000FFFFFF000000
-      00000000000000000000FFFFFF00FF000000FF000000FF000000FF000000FFFF
-      FF00C0C0C0000000000000000000000000000000000000000000000000008400
-      000084000000FF0000008400000000000000FFFFFF00FFFF0000FFFFFF00FFFF
-      0000840000000000000000000000000000008400000000000000000000008484
-      8400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CECECE00000000000000000080808000FFFFFF00FFFF
-      FF0000000000FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
-      FF0000FFFF000000000080808000000000000000000080808000FFFFFF000000
-      FF000000FF0080808000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00C0C0C0000000000000000000000000000000000000000000000000008400
-      0000FF00000084000000FF00000000000000FFFF0000FFFFFF00FFFF0000FFFF
-      FF00840000000000000000000000000000000000000000000000000000008484
-      8400FFFFFF00DEDEDE00DEDEDE00DEDEDE00DEDEDE00CECECE00CECECE000084
-      00000084000000840000CECECE0000000000000000008080800080808000FFFF
-      FF00FFFFFF0000000000FFFFFF0000FFFF00FFFFFF0000FFFF00000000000000
-      0000000000000000000080808000000000000000000080808000FFFFFF00FF00
-      0000FFFFFF0080808000FFFFFF00FF000000FF000000FF000000FF000000FFFF
-      FF00C0C0C0000000000000000000000000000000000000000000000000008400
-      0000840000008400000084000000840000008400000084000000840000008400
-      0000840000000000000000000000000000000000000000000000000000008484
-      8400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DEDEDE00CECECE0000FF
-      000000FF000000FF0000CECECE00000000000000000000000000808080000080
-      8000008080000000000000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF000000
-      0000808080008000000000000000000000000000000080808000FFFFFF00FF00
-      0000FFFFFF0080808000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000008484
-      8400848484008484840084848400848484008484840084848400848484008484
-      8400848484008484840084848400000000000000000000000000808080008080
-      8000FF000000008080000000000000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
-      FF00000000008080800000000000000000000000000080808000FFFFFF008080
-      80008080800080808000FFFFFF00FFFFFF00FFFFFF00FFFFFF00C0C0C000FFFF
-      FF00808080000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000008080
-      800080808000FF00000000000000FFFFFF00FFFFFF00FFFFFF0000FFFF00FFFF
-      FF00FFFFFF000000000080808000000000000000000080808000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C0C0C0008080
-      8000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000840000008400000084000000840000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000080808000808080008080800000000000FFFFFF0000FFFF00FFFFFF00FFFF
-      FF0000FFFF00FFFFFF0000000000808080000000000080808000808080008080
-      8000808080008080800080808000808080008080800080808000808080000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000000000000FF00
-      0000FF00000000000000006363009CFFFF00CEFFFF0000CEFF0000CEFF00009C
-      CE0000CEFF00009CCE00009CCE000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000086868600CCCCCC00CCCCCC00CCCC
-      CC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00C0C0C0000000
-      0000000000000000000000000000000000000000000000000000000000001821
-      2100182121001821210018212100182121001821210018212100182121001821
-      2100182121001821210018212100182121000000000000000000FF0000000000
-      00000000000000000000006363009CFFFF0000CEFF00CEFFFF0000CEFF0000CE
-      FF00009CCE00009CCE00009CCE000000000000000000FFFFFF00000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000FFFFFF000000000086868600FFFFFF0099FFFF00FFFF
-      FF0099FFFF00FFFFFF0099FFFF00FFFFFF0099FFFF00FFFFFF00C0C0C0000000
-      0000000000000000000000000000000000000000000000000000006363000063
-      6300006363000063630000636300006363000063630000636300006363000063
-      630000636300006363001821210018212100FF000000FF000000FF000000FF00
-      0000FF00000000000000006363009CFFFF00CEFFFF0000CEFF00CEFFFF0000CE
-      FF0000CEFF00009CCE00009CCE000000000000000000FFFFFF00006363009CFF
-      FF00CEFFFF0000CEFF0000CEFF00009CCE0000CEFF00009CCE00009CCE00009C
-      CE00009CCE0000000000FFFFFF00000000008686860099FFFF00FFFFFF0099FF
-      FF00FFFFFF0099FFFF00FFFFFF0099FFFF000000000099FFFF00C0C0C0000000
-      0000000000000000000000000000000000000000000000000000006363009CFF
-      FF00009CCE0000CEFF00009CCE0000CEFF00009CCE00009CCE00009CCE00639C
-      9C00009CCE0000636300182121001821210000000000FF000000FF000000FF00
-      00000000000000000000006363009CFFFF0000CEFF00CEFFFF0000CEFF00CEFF
-      FF0000CEFF0000CEFF00009CCE000000000000000000FFFFFF00006363009CFF
-      FF0000CEFF00CEFFFF0000CEFF0000CEFF00009CCE0000CEFF00009CCE00009C
-      CE00009CCE0000000000FFFFFF000000000086868600FFFFFF0099FFFF00FFFF
-      FF0099FFFF00FFFFFF0099FFFF00FFFFFF000000000000000000C0C0C0000000
-      00000000000000000000000000000000000000000000006363009CFFFF0000CE
-      FF0000CEFF00009CCE0000CEFF00009CCE0000CEFF00009CCE00009CCE00009C
-      CE00639C9C001821210000636300182121000000000000000000FF0000000000
-      00000000000000000000006363009CFFFF009CFFFF009CFFFF009CFFFF009CFF
-      FF009CFFFF009CFFFF009CFFFF000000000000000000FFFFFF00006363009CFF
-      FF00CEFFFF0000CEFF00CEFFFF0000CEFF0000CEFF00009CCE0000CEFF00009C
-      CE00009CCE0000000000FFFFFF000000000086868600FFFFFF00FFFFFF0099FF
-      FF00FFFFFF0099FFFF00FFFFFF0099FFFF000000000000000000000000000000
-      00000000000000000000000000000000000000000000006363009CFFFF00FFFF
-      FF0000CEFF0000CEFF0000CEFF0000CEFF00009CCE0000CEFF00009CCE00009C
-      CE00009CCE001821210000636300182121000000000000000000000000000000
-      0000000000000000000000636300006363000063630000636300006363000063
-      63000063630000636300006363000000000000000000FFFFFF00006363009CFF
-      FF0000CEFF00CEFFFF0000CEFF00CEFFFF0000CEFF0000CEFF00009CCE0000CE
-      FF00009CCE0000000000FFFFFF000000000086868600FFFFFF0099FFFF00FFFF
-      FF0099FFFF00FFFFFF0099FFFF00FFFFFF0066999900F8F8F80099CCCC000000
-      000000000000000000000000000000000000006363009CFFFF00FFFFFF0000CE
-      FF00FFFFFF0000CEFF00009CCE0000CEFF0000CEFF00009CCE0000CEFF00009C
-      CE001821210000CEFF0000CEFF00182121000000000000000000000000000000
-      000000000000000000000000000000636300FFFFFF009CFFFF009CFFFF009CFF
-      FF000000000000000000000000000000000000000000FFFFFF00006363009CFF
-      FF009CFFFF009CFFFF009CFFFF009CFFFF009CFFFF009CFFFF009CFFFF009CFF
-      FF009CFFFF0000000000FFFFFF000000000086868600FFFFFF00FFFFFF0099FF
-      FF00FFFFFF0099FFFF00FFFFFF0099FFFF006699990099CCCC00006699000000
-      000000000000000000000000000000000000006363009CFFFF0000CEFF00FFFF
-      FF0000CEFF00FFFFFF0000CEFF0000CEFF00009CCE0000CEFF00009CCE0000CE
-      FF001821210000CEFF0000CEFF0018212100006363009CFFFF00CEFFFF0000CE
-      FF0000CEFF00009CCE0000CEFF00009CCE000063630000636300006363000063
-      63000000000000000000000000000000000000000000FFFFFF00006363000063
-      6300006363000063630000636300006363000063630000636300006363000063
-      63000063630000000000FFFFFF000000000086868600FFFFFF00FFFFFF00FFFF
-      FF0099FFFF00FFFFFF0099FFFF00FFFFFF0099FFFF000066990000CCFF000066
-      9900000000000000000000000000000000000063630000636300006363000063
-      6300006363000063630000636300006363000063630000636300006363000063
-      630000CEFF0000CEFF0000CEFF0018212100006363009CFFFF0000CEFF00CEFF
-      FF0000CEFF0000CEFF00009CCE00009CCE00009CCE0000000000000000000000
-      00000000000000000000000000000000000000000000FFFFFF00FFFFFF000063
-      6300FFFFFF009CFFFF009CFFFF009CFFFF0000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000086868600FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF0099FFFF00FFFFFF0099FFFF00FFFFFF000066990099FFFF0000CC
-      FF000000000000000000000000000000000000000000006363009CFFFF0000CE
-      FF0084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00CECECE000000
-      000000CEFF0000CEFF0000CEFF0018212100006363009CFFFF00CEFFFF0000CE
-      FF00CEFFFF0000CEFF0000CEFF00009CCE00009CCE0000000000000000000000
-      000000000000FF000000000000000000000000000000FFFFFF00FFFFFF00FFFF
-      FF0000636300006363000063630000636300FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000086868600FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0099FFFF00FFFFFF0099FFFF00C0C0C0000066990000FF
-      FF000066990000000000000000000000000000000000006363009CFFFF00FFFF
-      FF0084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00CECECE00CECECE000000
-      00009CFFFF009CFFFF009CFFFF0018212100006363009CFFFF0000CEFF00CEFF
-      FF0000CEFF00CEFFFF0000CEFF0000CEFF00009CCE0000000000000000000000
-      0000FF000000FF000000FF000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000086868600FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF0099FFFF0000000000000000000066990099FF
-      FF0000CCFF0000000000000000000000000000000000006363009CFFFF0000CE
-      FF0084848400FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
-      000000636300006363000063630000000000006363009CFFFF009CFFFF009CFF
-      FF009CFFFF009CFFFF009CFFFF009CFFFF009CFFFF000000000000000000FF00
-      0000FF000000FF000000FF000000FF0000000000000084000000840000008400
-      0000840000008400000084000000840000008400000084000000840000008400
-      00008400000084000000840000000000000086868600FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0086868600FFFFFF00000000000066
-      990000FF00000080000000000000000000000000000000000000006363009CFF
-      FF0084848400FFFFFF00FFFFFF00FFFFFF0084848400FFFFFF00000000000000
-      0000000000000000000000000000000000000063630000636300006363000063
-      6300006363000063630000636300006363000063630000000000000000000000
-      000000000000FF00000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000086868600FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008686860000000000000000000000
-      99006600FF006600FF0000000000000000000000000000000000000000000063
-      630084848400FFFFFF00FFFFFF00FFFFFF008484840000000000000000000000
-      0000000000000000000000000000000000000000000000636300FFFFFF009CFF
-      FF009CFFFF009CFFFF000000000000000000000000000000000000000000FF00
-      0000FF0000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008686860086868600868686008686
-      8600868686008686860086868600868686008686860000000000000000000000
-      0000000099000000990000000000000000000000000000000000000000000000
-      0000848484008484840084848400848484008484840000000000000000000000
-      0000000000000000000000000000000000000000000000000000006363000063
-      6300006363000063630000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000084848400CECECE00CECECE00CECE
-      CE00CECECE00CECECE00CECECE000000000084848400CECECE00CECECE00CECE
-      CE00CECECE00CECECE00CECECE00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CECECE000000000084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CECECE00000000000000000000000000000000000000
-      0000000000000000000084848400CECECE00CECECE00CECECE00CECECE00CECE
-      CE00CECECE00CECECE000000000000000000006363009CFFFF0000CEFF0000CE
-      FF0000CEFF0000CEFF00009CCE0000CEFF00009CCE0000CEFF00009CCE00009C
-      CE00639C9C00009CCE0000000000000000008484840000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000FFFFFF0084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CECECE000000000084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CECECE00000000000000000000000000000000000000
-      00000000000000000000848484009CFFFF00FF000000FF000000FF000000FF00
-      0000FF000000CECECE000000000000000000006363009CFFFF0000CEFF0000CE
-      FF0000CEFF0000CEFF0000CEFF00FF00000000CEFF00009CCE0000CEFF00009C
-      CE00009CCE00639C9C0000000000000000008484840000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000FFFFFF0084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CECECE000000000084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CECECE00000000000000000000000000000000000000
-      0000000000000000000084848400FFFFFF009CFFFF00FFFFFF009CFFFF00FFFF
-      FF009CFFFF00CECECE000000000000000000006363009CFFFF009CFFFF0000CE
-      FF0000CEFF00FF00000000CEFF00FF00000000CEFF00FF000000009CCE0000CE
-      FF00009CCE00009CCE0000000000000000008484840000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000FFFFFF0084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CECECE000000000084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CECECE000000000084848400CECECE00CECECE00CECE
-      CE00CECECE00CECECE00848484009CFFFF00FF000000FF000000FF000000FF00
-      0000FF000000CECECE000000000000000000006363009CFFFF0000CEFF009CFF
-      FF0000CEFF0000CEFF00FF000000FF000000FF00000000CEFF0000CEFF00009C
-      CE0000CEFF00009CCE0000000000000000008484840000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000FFFFFF0084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CECECE000000000084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CECECE000000000084848400FFFFFF009C3100009C31
-      00009C3100009C31000084848400FFFFFF009CFFFF00FFFFFF009CFFFF00FFFF
-      FF00CECECE00CECECE000000000000000000006363009CFFFF00FFFFFF0000CE
-      FF00FF000000FF000000FF00000000FFFF00FF000000FF000000FF00000000CE
-      FF00009CCE00009CCE0000000000000000008484840000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000FFFFFF00FF000000FF9C3100FF633100FF63
-      3100FF633100FF633100FF63310000000000FF000000FF9C3100FF633100FF63
-      3100FF633100FF633100FF63310000000000848484009CFFFF00FFFFFF009CFF
-      FF00FFFFFF009CFFFF0084848400FFFFFF00FF63310000840000008400000084
-      000000840000000000000000000000000000006363009CFFFF0000CEFF00FFFF
-      FF0000CEFF0000CEFF00FF000000FF000000FF00000000CEFF0000CEFF00009C
-      CE0000CEFF00009CCE000000000000000000848484000000000000000000FFFF
-      FF0000000000FFFFFF000000000000000000FFFFFF000000000000000000FFFF
-      FF0000000000FFFFFF0000000000FFFFFF00FF000000FF000000FF000000FF00
-      0000FF000000FF000000FF00000000000000FF000000FF000000FF000000FF00
-      0000FF000000FF000000FF0000000000000084848400FFFFFF009C3100009C31
-      00009C3100009C31000084848400FFFFFF0000FF000000FF000000FF000000FF
-      0000FFFFFF00008400000000000000000000006363009CFFFF00FFFFFF0000CE
-      FF00FFFFFF00FF00000000CEFF00FF00000000CEFF00FF00000000CEFF0000CE
-      FF00009CCE00009CCE000000000000000000848484000000000000000000FFFF
-      FF0000000000FFFFFF0000000000FFFFFF0000000000FFFFFF0000000000FFFF
-      FF0000000000FFFFFF0000000000FFFFFF000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000848484009CFFFF00FFFFFF009CFF
-      FF00FFFFFF009CFFFF000084000000FF00000084000000840000008400008484
-      840000FF0000000000000000000000000000006363009CFFFF0000CEFF00FFFF
-      FF0000CEFF00FFFFFF0000CEFF00FF00000000CEFF0000CEFF0000CEFF0000CE
-      FF0000CEFF00009CCE000000000000000000848484000000000000000000FFFF
-      FF00FFFFFF00FFFFFF0000000000FFFFFF0000000000FFFFFF0000000000FFFF
-      FF0000000000FFFFFF0000000000FFFFFF000000000000000000840000008400
-      0000840000008400000000000000000000000000000000000000840000008400
-      00008400000084000000000000000000000084848400FFFFFF009C3100009C31
-      0000FFFFFF0000FF000000FF000000FF000000FF000000FF0000848484008484
-      840000000000000084000000000000000000006363009CFFFF009CFFFF009CFF
-      FF009CFFFF009CFFFF009CFFFF009CFFFF009CFFFF009CFFFF009CFFFF009CFF
-      FF009CFFFF009CFFFF000000000000000000848484000000000000000000FFFF
-      FF0000000000FFFFFF0000000000FFFFFF0000000000FFFFFF0000000000FFFF
-      FF00FFFFFF00FFFFFF0000000000FFFFFF000000000000000000840000008400
-      0000840000000000000000000000000000000000000000000000000000008400
-      00008400000084000000000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF009CFFFF008484840000FF000000FF000000FF000000000000000000000000
-      00000000FF000000840000008400000000000063630000636300006363000063
-      6300006363000063630000636300006363000063630000636300006363000063
-      630000636300006363000000000000000000848484000000000000000000FFFF
-      FF0000000000FFFFFF000000000000000000FFFFFF000000000000000000FFFF
-      FF0000000000FFFFFF0000000000FFFFFF000000000000000000840000008400
-      0000840000000000000000000000000000000000000000000000000000008400
-      00008400000084000000000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00848484000000000000FF00000000000000000000000000000000
-      FF000000FF000000FF00000084000000840000000000006363009CFFFF009CFF
-      FF009CFFFF009CFFFF009CFFFF00000000000000000000000000000000000000
-      0000000000000000000000000000000000008484840000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000FFFFFF000000000000000000840000000000
-      0000000000008400000000000000000000000000000000000000840000000000
-      000000000000CE31000000000000000000008484840084848400848484008484
-      84008484840084848400000000000000000000008400000000000000FF000000
-      FF000000FF000000FF000000FF00000000000000000000000000006363000063
-      6300006363000063630000636300000000000000000000000000000000000000
-      0000000000000000000000000000000000008484840000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000FFFFFF000000000000000000000000000000
-      0000000000000000000084000000840000008400000084000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000FF000000000000008400000084000000
-      84000000FF000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008484840084848400848484008484
-      8400848484008484840084848400848484008484840084848400848484008484
-      8400848484008484840084848400848484000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000FF000000FF000000FF000000
-      FF00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000007B7B
-      00007B7B00007B7B000039390000000000005A5A00007B7B0000000000003921
-      5A00000000000000000000000000000000000000000000000000000000007B7B
-      00007B7B000039390000000000007B7B00000000000039003900000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000BDBD0000DEDE
-      0000FFFF00007B7B0000BDBD00007B7B0000BDBD00007B7B00007B7B0000217B
-      9C00000000000000000000000000000000000000000000000000BDBD0000DEDE
-      0000FFFF0000BDBD00007B7B00007B7B00007B7B0000007B7B00216363005A00
-      5A00420042000000000000000000000000000000000000000000000000008484
-      8400848484008484840084848400848484008484840084848400848484008484
-      840000000000000000000000000000000000000000000000000084848400CECE
-      CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE
-      CE000000000000000000000000000000000000000000000000005A5A0000BDBD
-      00007B7B00009C9C0000FFFF00005A5A210042424200393900007B7B00000000
-      00000000000000000000000000000000000000000000000000005A5A0000BDBD
-      00007B7B0000FFFF00005A5A2100393900007B7B000000BDBD008CADAD000000
-      0000000000000000000000000000000000000000000000000000000000008484
-      8400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008484
-      840000000000000000000000000000000000000000000000000084848400CEFF
-      FF00FFFFFF00CEFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
-      00005A5A0000DEDE00005A5A2100848484008484840042424200525252000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00005A5A00005A5A21008484840042424200525252009CBDBD00EFEFEF000000
-      0000000000000000000000000000000000000000000000000000000000008484
-      8400FFFFFF00FFFFFF00FF000000FFFFFF00FF000000FF000000FFFFFF008484
-      840000000000000000000000000000000000000000000000000084848400FFFF
-      FF00CE310000CE310000FFFFFF00FF633100FF633100FF633100FF633100FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
-      0000212100002121210084848400636363004242420000000000313131000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00002121000084848400636363000000000031313100DEDEDE009C9C9C007B7B
-      7B00212121000000000000000000000000000000000000000000000000008484
-      8400FFFFFF00FFFFFF00FF000000FFFFFF00FF000000FFFFFF00FFFFFF008484
-      840000000000000000000000000000000000000000000000000084848400FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
-      0000000000002121210063636300848484008484840084848400848484004242
-      4200000000000000000000000000000000000000000000000000000000000000
-      00000000000063636300848484008484840084848400DEDEDE00FFFFFF00FFFF
-      FF006B6B6B000000000000000000000000000000000000000000000000008484
-      8400FFFFFF00FF000000FF000000FFFFFF00FFFFFF00FF000000FFFFFF008484
-      840000000000000000000000000000000000000000000000000084848400FFFF
-      FF00CE310000CE310000FFFFFF00FF633100FF633100FF633100FF633100FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000042424200848484008484840084848400636363004242
-      4200000000000000000000000000000000000000000000000000000000000000
-      00000000000042424200848484008484840063636300DEDEDE00FFFFFF009C9C
-      9C00313131000000000000000000000000000000000000000000000000008484
-      8400FFFFFF00FFFFFF00FF000000FFFFFF00FF000000FF000000FFFFFF008484
-      840000000000000000000000000000000000000000000000000084848400FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009CFFFF00FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000063636300848484008484840084848400848484004242
-      4200000000000000000000000000000000000000000000000000000000000000
-      00000000000063636300848484008484840084848400CECECE00FFFFFF00BDBD
-      BD007B7B7B000000000000000000000000000000000000000000000000008484
-      8400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008484
-      840000000000000000000000000000000000000000000000000084848400FFFF
-      FF00FF313100FF313100FFFFFF00FF633100FF633100FF633100FF633100FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
-      0000000000004242420084848400848484008484840084848400848484004242
-      42006B6B6B000000000000000000000000000000000000000000000000000000
-      000000000000848484008484840084848400848484006B6B6B00FFFFFF00FFFF
-      FF00393939000000000000000000000000000000000000000000000000008400
-      0000840000008400000084000000840000008400000084000000840000008400
-      000000000000000000000000000000000000000000000000000084848400FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009CFFFF00FFFFFF009CFFFF00FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000042424200848484008484840021212100848484004242
-      4200000000000000000000000000000000000000000000000000000000000000
-      00000000000042424200848484002121210084848400CECECE00FFFFFF008484
-      840000000000000000000000000000000000000000000000000000000000FF00
-      0000FF9C3100FF633100FF633100FF633100FF633100FF633100FF6331008400
-      000000000000000000000000000000000000000000000000000084848400FFFF
-      FF00FF633100FF633100FFFFFF00FF633100FF633100FF633100FF6331009CFF
-      FF00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000424242008484840063636300000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000042424200636363000000000031737300EFEFEF00BDBD
-      BD0042636300000000000000000000000000000000000000000000000000FF00
-      0000FF000000FF000000FF000000FF000000FF000000FF000000FF0000008400
-      000000000000000000000000000000000000000000000000000084848400FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009CFFFF00FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000424242008484840084848400212121000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000042424200848484002121210031ADAD0000BDBD0000BD
-      BD0031EFEF000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000848484008484
-      8400848484008484840084848400848484008484840084848400848484008484
-      8400000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000063DEDE0000FFFF0000FF
-      FF00003939000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000039
-      3900000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000316B6B00007B7B000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000009C3100009C3100009C3100009C310000000000000000
-      0000000000000000000000000000000000000000000000000000000000009C31
-      00009C31000000000000000000009C3100009C3100009C3100009C3100000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000FF0000009C31000000000000000000009C3100009C3100000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000FF0000009C31000000000000000000009C3100009C31
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000008400
-      0000FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000FF0000009C310000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000FF0000009C3100000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000084848400CECE
-      CE00CECECE00CECECE00CECECE00CECECE00CECECE0000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000008400
-      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFCE9C000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000FF0000009C3100009C3100009C3100009C3100009C3100000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000FF0000009C3100009C3100009C3100009C3100009C31
-      000000000000000000000000000000000000000000000000000084848400FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00CECECE0000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000008400
-      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFCE9C000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000FF0000009C3100000000000000000000FF0000009C3100000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000FF0000009C3100000000000000000000FF0000009C31
-      000000000000000000000000000000000000000000000000000084848400FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00CECECE0000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000008400
-      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFCE9C000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000FF000000FF000000FF000000FF000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000FF000000FF000000FF000000FF0000000000
-      000000000000000000000000000000000000000000000000000084848400FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00CECECE0000000000CECECE00CECE
-      CE00000000000000000000000000000000000000000000000000000000008400
-      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFCE9C000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000084848400FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00CECECE00CECECE00000000009CFFFF00CECE
-      CE00000000000000000000000000000000000000000000000000000000008400
-      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFCE9C000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000084848400FFFF
-      FF00FFFFFF00FFFFFF00000000000000000000000000000000009CFFFF00CECE
-      CE00000000000000000000000000000000000000000000000000000000008400
-      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFCE9C000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000009C3100009C3100009C3100009C3100009C3100000000
-      0000000000000000000000000000000000000000000000000000000000009C31
-      00009C31000000000000000000009C3100009C3100009C3100009C3100009C31
-      000000000000000000000000000000000000000000000000000084848400FFFF
-      FF00FFFFFF00FFFFFF0084848400FFFFFF00000000009CFFFF009CFFFF00CECE
-      CE00000000000000000000000000000000000000000000000000000000008400
-      0000840000008400000084000000840000008400000084000000840000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000FF0000009C3100000000000000000000FF0000009C3100000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000FF0000009C3100000000000000000000FF0000009C31
-      000000000000000000000000000000000000000000000000000084848400FFFF
-      FF00FFFFFF00FFFFFF0084848400000000009CFFFF009CFFFF00CECECE00CECE
-      CE00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000FF0000009C3100000000000000000000FF0000009C3100000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000FF0000009C3100000000000000000000FF0000009C31
-      0000000000000000000000000000000000000000000000000000848484008484
-      84008484840084848400848484009CFFFF009CFFFF0000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000FF000000FF000000FF000000FF0000009C3100000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000FF000000FF000000FF000000FF0000009C31
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000084848400FFFFFF009CFFFF00FFFFFF0084848400FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000FF633100FFFFFF00FFCE9C000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000FF0000009C3100000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FF0000009C31
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000084848400FFFFFF00FFFFFF009CFFFF0084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000FF633100FFFFFF00FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000FF000000FF000000FF000000FF000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000FF000000FF000000FF000000FF0000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008484840084848400848484008484840084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000FF633100FF633100FF6331000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000009C31
-      00009C3100009C3100009C310000000000000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000009C31
-      00009C3100009C3100009C310000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000B5B5B5009C4A
-      4A009C4A4A009C4A4A00B5B5B500B5B5B500B5B5B500B5B5B500B5B5B500B5B5
-      B5009C3131009C3131009C4A4A009C4A4A000000000000000000FF0000009C31
-      000000000000000000009C3100009C3100000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000FF0000009C31
-      000000000000000000009C3100009C3100000000000000000000000000000000
-      00000000CE000000FF0000000000000000000000000000000000000000000000
-      000000000000C6A5840042210000422100008421000084632100000000000000
-      0000000000000000000000000000000000000000000000000000BD8C8400CE63
-      6300CE6363009C4A4A00BD9C9C00CE636300D6B5B500FFFFFF00FFFFFF00D6D6
-      CE009C3131009C313100CE6363009C4A4A000000000000000000FF0000009C31
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000FF0000009C31
-      0000000000000000000000000000000000000000000000000000000000000000
-      CE000000FF000000840000008400000000000000000000000000000000000000
-      0000422100004221000042210000422100008421000084210000006321000000
-      0000000000000000000000000000000000000000000000000000BD8C8400CE63
-      6300CE6363009C4A4A00D6B5B500B54A4A00BD8C8400D6D6CE00FFFFFF00FFFF
-      FF009C3131009C313100CE6363009C4A4A000000000000000000FF0000009C31
-      00009C3100009C3100009C3100009C3100000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000FF0000009C31
-      00009C3100009C3100009C3100009C3100000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000008421
-      0000842100008421000042210000422100004221000084210000004242004242
-      4200000000000000000000000000000000000000000000000000BD8C8400CE63
-      6300CE6363009C4A4A00D6D6CE00B54A4A00BD8C8400B5B5B500D6D6CE00FFFF
-      FF009C3131009C313100CE6363009C4A4A000000000000000000FF0000009C31
-      00000000000000000000FF0000009C3100000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000FF0000009C31
-      00000000000000000000FF0000009C3100000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000C6C6C6008421
-      0000842100008421000084210000422100004221000042424200006300000063
-      4200C64200000000000000000000000000000000000000000000BD8C8400CE63
-      6300CE6363009C4A4A00D6D6CE00BD9C9C00BD9C9C00B5B5B500B5B5B500D6D6
-      CE009C3131009C313100CE6363009C4A4A00000000000000000000000000FF00
-      0000FF000000FF000000FF000000000000000000000000000000000000000000
-      000000000000000084000000000000000000000000000000000000000000FF00
-      0000FF000000FF000000FF000000000000000000000000000000000000000000
-      000000000000000084000000000000000000000000000000000084630000C642
-      0000C6420000C621000084420000424221000042210042210000006342008442
-      0000842100000000000000000000000000000000000000000000BD8C8400CE63
-      6300CE636300CE636300CE636300CE636300CE636300CE636300CE636300CE63
-      6300CE636300CE636300CE6363009C4A4A000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000C6630000C663
-      0000C6630000C642000042638400844200008442000084210000842100008421
-      0000842100000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000CE636300CE6363009C4A4A000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000C6A54200C663
-      0000C684210084A5840042638400008442004263210084210000842100008442
-      00008421000000000000000000000000000084848400D6D6CE00D6D6CE00D6D6
-      CE00D6D6CE00D6D6CE00D6D6CE00D6D6CE00D6D6CE00D6D6CE00D6D6CE00D6D6
-      CE0000000000BD8C8400CE6363009C4A4A000000000000000000000000009C31
-      00009C3100009C3100009C3100009C3100000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000009C31
-      00009C3100009C3100009C3100009C3100000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000C6C6C600C663
-      0000C684210084A5840042E7E70000A5630000846300C6210000842100008421
-      0000C6A5840000000000000000000000000084848400D6D6CE004A4A4A004A4A
-      4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A00D6D6
-      CE0000000000BD8C8400CE6363009C4A4A000000000000000000FF0000009C31
-      00000000000000000000FF0000009C3100000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000FF0000009C31
-      00000000000000000000FF0000009C3100000000000000000000000000000000
-      000000000000000084000000000000000000000000000000000000000000C6A5
-      4200C684210042A5C60042E7A500C642000084632100C6210000844200004221
-      21000000000000000000000000000000000084848400D6D6CE00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D6D6
-      CE0000000000BD8C8400CE6363009C4A4A000000000000000000FF0000009C31
-      00000000000000000000FF0000009C3100000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000FF0000009C31
-      00000000000000000000FF0000009C3100000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      000084A56300C6630000C6630000424242000021A500C6420000426321000000
-      00000000000000000000000000000000000084848400D6D6CE004A4A4A004A4A
-      4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A00D6D6
-      CE0000000000BD8C8400CE6363009C4A4A00000000000000000000000000FF00
-      0000FF000000FF000000FF0000009C3100000000000000000000000000000000
-      000000008400000084000000FF000000CE00000000000000000000000000FF00
-      0000FF000000FF000000FF0000009C3100000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      000000000000C6C6C60084A54200C663000042A56300C6C6C600000000000000
-      00000000000000000000000000000000000084848400D6D6CE00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D6D6
-      CE0000000000BD8C8400CE6363009C4A4A000000000000000000000000000000
-      00000000000000000000FF0000009C3100000000000000000000000000000000
-      0000000000000000FF000000CE00000000000000000000000000000000000000
-      00000000000000000000FF0000009C3100000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000084848400D6D6CE00D6D6CE00D6D6
-      CE00FFFFFF00D6D6CE00D6D6CE00D6D6CE00008400000084000000840000D6D6
-      CE0000000000BD9C9C009C4A4A00B5B5B500000000000000000000000000FF00
-      0000FF000000FF000000FF000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000000000000FF00
-      0000FF000000FF000000FF000000000000000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000084848400D6D6CE00D6D6CE00D6D6
-      CE00D6D6CE00D6D6CE00D6D6CE00D6D6CE0000FF000000FF000000FF0000D6D6
-      CE00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008484840084848400848484008484
-      8400848484008484840084848400848484008484840084848400848484008484
-      8400000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000009C3100009C3100009C31
-      00009C310000000000000000000000000000000000007B7B00007B7B00007B7B
-      000039390000000000005A5A00007B7B00000000000039215A00000000000000
-      000000000000000000000000000000000000000000007B7B00007B7B00003939
-      0000000000007B7B000000000000390039000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000CE000000FF00000000000000000000000000000000000000CE000000
-      FF0000000000000000000000000000000000FF0000009C310000000000000000
-      00009C3100009C3100000000000000000000BDBD0000DEDE0000FFFF00007B7B
-      0000BDBD00007B7B0000BDBD00007B7B00007B7B0000217B9C00000000000000
-      00000000CE000000FF000000000000000000BDBD0000DEDE0000FFFF0000BDBD
-      00007B7B00007B7B00007B7B0000007B7B00216363005A005A00420042000000
-      00000000CE000000FF0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      CE000000FF00000084000000840000000000000000000000CE000000FF000000
-      840000008400000000000000000000000000FF0000009C310000000000000000
-      0000000000000000000000000000000000005A5A0000BDBD00007B7B00009C9C
-      0000FFFF00005A5A210042424200393900007B7B000000000000000000000000
-      CE000000FF000000840000008400000000005A5A0000BDBD00007B7B0000FFFF
-      00005A5A2100393900007B7B000000BDBD008CADAD0000000000000000000000
-      CE000000FF000000840000008400000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      840000000000000000000000000000000000FF0000009C3100009C3100009C31
-      00009C3100009C310000000000000000000000000000000000005A5A0000DEDE
-      00005A5A21008484840084848400424242005252520000000000000000000000
-      00000000000000008400000000000000000000000000000000005A5A00005A5A
-      21008484840042424200525252009CBDBD00EFEFEF0000000000000000000000
-      00000000000000008400000000000000000084848400CECECE00CECECE00CECE
-      CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      840000000000000000000000000000000000FF0000009C310000000000000000
-      0000FF0000009C31000000000000000000000000000000000000212100002121
-      2100848484006363630042424200000000003131310000000000000000000000
-      0000000000000000840000000000000000000000000000000000212100008484
-      8400636363000000000031313100DEDEDE009C9C9C007B7B7B00212121000000
-      00000000000000008400000000000000000084848400CEFFFF00FFFFFF00CEFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      84000000000000000000000000000000000000000000FF000000FF000000FF00
-      0000FF0000000000000000000000000000000000000000000000000000002121
-      2100636363008484840084848400848484008484840042424200000000000000
-      0000000000000000840000000000000000000000000000000000000000006363
-      6300848484008484840084848400DEDEDE00FFFFFF00FFFFFF006B6B6B000000
-      00000000000000008400000000000000000084848400FFFFFF00CE310000CE31
-      0000FFFFFF00FF633100FF633100FF633100FF633100FFFFFF00000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      8400000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000424242008484840084848400848484006363630042424200000000000000
-      0000000000000000840000000000000000000000000000000000000000004242
-      4200848484008484840063636300DEDEDE00FFFFFF009C9C9C00313131000000
-      00000000000000008400000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      8400000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000636363008484840084848400848484008484840042424200000000000000
-      0000000000000000840000000000000000000000000000000000000000006363
-      6300848484008484840084848400CECECE00FFFFFF00BDBDBD007B7B7B000000
-      00000000000000008400000000000000000084848400FFFFFF00CE310000CE31
-      0000FFFFFF00FF633100FF633100FF633100FF633100FFFFFF00000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      840000000000000000000000000000000000000000009C3100009C3100009C31
-      00009C3100009C31000000000000000000000000000000000000000000004242
-      42008484840084848400848484008484840084848400424242006B6B6B000000
-      0000000000000000840000000000000000000000000000000000000000008484
-      84008484840084848400848484006B6B6B00FFFFFF00FFFFFF00393939000000
-      00000000000000008400000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009CFFFF00FFFFFF00000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      840000000000000000000000000000000000FF0000009C310000000000000000
-      0000FF0000009C31000000000000000000000000000000000000000000000000
-      0000424242008484840084848400212121008484840042424200000000000000
-      0000000000000000840000000000000000000000000000000000000000004242
-      4200848484002121210084848400CECECE00FFFFFF0084848400000000000000
-      00000000000000008400000000000000000084848400FFFFFF00FF313100FF31
-      3100FFFFFF00FF633100FF633100FF633100FF633100FFFFFF00000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      840000000000000000000000000000000000FF0000009C310000000000000000
-      0000FF0000009C31000000000000000000000000000000000000000000000000
-      0000000000004242420084848400636363000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      000042424200636363000000000031737300EFEFEF00BDBDBD00426363000000
-      00000000000000008400000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF009CFFFF00FFFFFF009CFFFF00FFFFFF00000000000000
-      0000000000000000840000000000000000000000000000000000000084000000
-      84000000FF000000CE00000000000000000000000000FF000000FF000000FF00
-      0000FF0000009C31000000000000000000000000000000000000000000000000
-      0000000000004242420084848400848484002121210000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      000042424200848484002121210031ADAD0000BDBD0000BDBD0031EFEF000000
-      00000000000000008400000000000000000084848400FFFFFF00FF633100FF63
-      3100FFFFFF00FF633100FF633100FF633100FF6331009CFFFF00000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      FF000000CE000000000000000000000000000000000000000000000000000000
-      0000FF0000009C31000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      000000000000000000000000000063DEDE0000FFFF0000FFFF00003939000000
-      00000000000000008400000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009CFFFF00FFFFFF00000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000FF000000FF000000FF00
-      0000FF0000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000393900000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      0000000000000000000000000000316B6B00007B7B0000000000000000000000
-      0000000000000000840000000000000000008484840084848400848484008484
-      8400848484008484840084848400848484008484840084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000009C3100009C310000000000000000
-      00009C3100009C3100009C3100009C3100000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000000000000FF00
-      00009C31000000000000000000009C3100009C31000000000000000000000000
-      00000000CE000000FF0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000CE000000FF0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000CE000000FF00000000000000000084000000FFCE9C00FFCE9C00FFCE
-      9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C000000000000000000000000000000
-      00000000CE000000FF000000000000000000000000000000000000000000FF00
-      00009C3100000000000000000000000000000000000000000000000000000000
-      CE000000FF000000840000008400000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      CE000000FF0000008400000084000000000084848400CECECE00CECECE00CECE
-      CE00CECECE00CECECE00CECECE00000000000000000000000000000000000000
-      CE000000FF0000008400000084000000000084000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFCE9C000000000000000000000000000000
-      CE000000FF00000084000000840000000000000000000000000000000000FF00
-      00009C3100009C3100009C3100009C3100009C31000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000008400000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CECECE00000000000000000000000000000000000000
-      00000000000000008400000000000000000084000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFCE9C000000000000000000000000000000
-      000000000000000084000000000000000000000000000000000000000000FF00
-      00009C3100000000000000000000FF0000009C31000000000000000000000000
-      0000000000000000840000000000000000008484840084848400848484008484
-      8400848484008484840084848400848484008484840000000000000000000000
-      00000000000000008400000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CECECE00000000000000000000000000000000000000
-      00000000000000008400000000000000000084000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFCE9C000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      0000FF000000FF000000FF000000FF0000000000000000000000000000000000
-      00000000000000008400000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008484840000000000000000000000
-      00000000000000008400000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CECECE0000000000CECECE00CECECE00000000000000
-      00000000000000008400000000000000000084000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFCE9C000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000008400000000000000000084848400FFFFFF00FFFFFF00FF00
-      0000FFFFFF00FF000000FF000000FFFFFF008484840000000000000000000000
-      00000000000000008400000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00CECECE00CECECE00000000009CFFFF00CECECE00000000000000
-      00000000000000008400000000000000000084000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFCE9C000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000008400000000000000000084848400FFFFFF00FFFFFF00FF00
-      0000FFFFFF00FF000000FFFFFF00FFFFFF008484840000000000000000000000
-      00000000000000008400000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF00000000000000000000000000000000009CFFFF00CECECE00000000000000
-      00000000000000008400000000000000000084000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFCE9C000000000000000000000000000000
-      0000000000000000840000000000000000009C3100009C310000000000000000
-      00009C3100009C3100009C3100009C3100009C31000000000000000000000000
-      00000000000000008400000000000000000084848400FFFFFF00FF000000FF00
-      0000FFFFFF00FFFFFF00FF000000FFFFFF008484840000000000000000000000
-      00000000000000008400000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF0084848400FFFFFF00000000009CFFFF009CFFFF00CECECE00000000000000
-      0000000000000000840000000000000000008400000084000000840000008400
-      0000840000008400000084000000840000000000000000000000000000000000
-      000000000000000084000000000000000000000000000000000000000000FF00
-      00009C3100000000000000000000FF0000009C31000000000000000000000000
-      00000000000000008400000000000000000084848400FFFFFF00FFFFFF00FF00
-      0000FFFFFF00FF000000FF000000FFFFFF008484840000000000000000000000
-      00000000000000008400000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF0084848400000000009CFFFF009CFFFF00CECECE00CECECE00000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000084000000000000000000000000000000000000000000FF00
-      00009C3100000000000000000000FF0000009C31000000000000000000000000
-      00000000000000008400000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008484840000000000000000000000
-      0000000000000000840000000000000000008484840084848400848484008484
-      8400848484009CFFFF009CFFFF00000000000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      0000FF000000FF000000FF000000FF0000009C31000000000000000000000000
-      0000000000000000840000000000000000008400000084000000840000008400
-      0000840000008400000084000000840000008400000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000008484
-      8400FFFFFF009CFFFF00FFFFFF0084848400FFFFFF0000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      000000000000FF633100FFFFFF00FFCE9C000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      0000000000000000000000000000FF0000009C31000000000000000000000000
-      000000000000000084000000000000000000FF000000FF9C3100FF633100FF63
-      3100FF633100FF633100FF633100FF6331008400000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000008484
-      8400FFFFFF00FFFFFF009CFFFF00848484000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      000000000000FF633100FFFFFF00FFFFFF000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      0000FF000000FF000000FF000000FF0000000000000000000000000000000000
-      000000000000000084000000000000000000FF000000FF000000FF000000FF00
-      0000FF000000FF000000FF000000FF0000008400000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000008484
-      8400848484008484840084848400848484000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      000000000000FF633100FF633100FF6331000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000084848400848484008484840084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000009C31
-      00009C3100009C3100009C310000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000848484000000000000000000000000000000000084848400000000008484
-      8400000000000000000000000000000000000000000000000000000000001821
-      2100182121001821210018212100182121001821210018212100182121001821
-      2100182121001821210018212100182121000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FF0000009C31
-      000000000000000000009C3100009C3100000000000000000000000000000000
-      00000000CE000000FF0000000000000000000000000000000000000000000000
-      0000000000008484840000000000000000000000000000000000848484000000
-      0000848484000000000000000000000000000000000000000000006363000063
-      6300006363000063630000636300006363000063630000636300006363000063
-      6300006363000063630018212100182121000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FF0000009C31
-      0000000000000000000000000000000000000000000000000000000000000000
-      CE000000FF000000840000008400000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008484840000000000000000000000000000000000006363009CFF
-      FF00009CCE0000CEFF00009CCE0000CEFF00009CCE00009CCE00009CCE00639C
-      9C00009CCE000063630018212100182121008484840084848400848484008484
-      8400848484008484840084848400848484008484840084848400848484008484
-      8400848484008484840000000000000000000000000000000000FF0000009C31
-      00009C3100009C3100009C3100009C3100000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000006363009CFFFF0000CE
-      FF0000CEFF00009CCE0000CEFF00009CCE0000CEFF00009CCE00009CCE00009C
-      CE00639C9C0018212100006363001821210084848400C6DEC600FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00C6C6C600A5A5A50084848400000000000000000000000000FF0000009C31
-      00000000000000000000FF0000009C3100000000000000000000000000000000
-      000000000000000084000000000000000000FFFFFF0084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000084848400848484000000000000000000006363009CFFFF00FFFF
-      FF0000CEFF0000CEFF0000CEFF0000CEFF00009CCE0000CEFF00009CCE00009C
-      CE00009CCE0018212100006363001821210084848400C6DEC600848484008484
-      8400848484008484840084848400848484008484840084848400848484008484
-      8400C6C6C600A5A5A5008484840000000000000000000000000000000000FF00
-      0000FF000000FF000000FF000000000000000000000000000000000000000000
-      000000000000000084000000000000000000FFFFFF0000000000000000000000
-      00000000000000000000C6C6C600C6C6C600C6C6C60000000000000000000000
-      000000000000000000000000000000000000006363009CFFFF00FFFFFF0000CE
-      FF00FFFFFF0000CEFF00009CCE0000CEFF0000CEFF00009CCE0000CEFF00009C
-      CE001821210000CEFF0000CEFF001821210084848400C6DEC600C6C6C600C6C6
-      C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
-      C600C6C6C600A5A5A50084848400000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000084000000000000000000FFFFFF0000000000000000000000
-      00000000000000000000C6C6C600C6C6C600C6C6C60000000000000000000000
-      000000000000000000000000000000000000006363009CFFFF0000CEFF00FFFF
-      FF0000CEFF00FFFFFF0000CEFF0000CEFF00009CCE0000CEFF00009CCE0000CE
-      FF001821210000CEFF0000CEFF001821210084848400C6DEC600C6C6C600C6C6
-      C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000C600000084
-      0000C6C6C600A5A5A50084848400000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000084000000000000000000FFFFFF0000000000000000000000
-      00000000000000000000C6C6C600C6C6C600C6C6C60000000000000000000000
-      0000000000000000000000000000000000000063630000636300006363000063
-      6300006363000063630000636300006363000063630000636300006363000063
-      630000CEFF0000CEFF0000CEFF001821210084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00A5A5A50084848400000000000000000000000000000000009C31
-      00009C3100009C3100009C3100009C3100000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000006363009CFFFF0000CE
-      FF00FFFFFF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CE
-      FF0000CEFF0000CEFF0000CEFF00182121000000000084848400C6C6C600C6C6
-      C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
-      C600C6C6C600C6C6C60084848400000000000000000000000000FF0000009C31
-      00000000000000000000FF0000009C3100000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000084848400000000000000000000000000006363009CFFFF00FFFF
-      FF0000CEFF00FFFFFF0000CEFF0000CEFF0000CEFF0000CEFF009CFFFF009CFF
-      FF009CFFFF009CFFFF009CFFFF00182121000000000000000000848484008484
-      8400848484008484840084848400848484008484840084848400848484008484
-      8400848484008484840084848400000000000000000000000000FF0000009C31
-      00000000000000000000FF0000009C3100000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000006363009CFFFF0000CE
-      FF00FFFFFF0000CEFF00FFFFFF0000CEFF009CFFFF0000636300006363000063
-      6300006363000063630000636300000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000000000000FF00
-      0000FF000000FF000000FF0000009C3100000000000000000000000000000000
-      000000000000000084000000000000000000000000000000000000000000FFFF
-      FF0000000000FFFFFF0000000000000000000000000000000000FFFFFF000000
-      0000000000000000000000000000000000000000000000000000006363009CFF
-      FF009CFFFF009CFFFF009CFFFF009CFFFF000063630000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000FF0000009C3100000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000000063
-      6300006363000063630000636300006363000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000000000000FF00
-      0000FF000000FF000000FF000000000000000000000000000000000000000000
-      0000000000000000840000000000000000000000000000000000000000000000
-      00000000000000000000FFFFFF00FFFFFF00FFFFFF0084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000001821
-      2100182121001821210018212100182121001821210018212100182121001821
-      210018212100182121001821210018212100000000000000000000000000FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000006363000063
-      6300006363000063630000636300006363000063630000636300006363000063
-      630000636300006363001821210018212100000000000000000000000000FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0080008000FFFF
-      FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000008484
-      8400CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE
-      CE00CECECE00CECECE00CECECE00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000006363009CFF
-      FF00009CCE0000CEFF00009CCE0000CEFF00009CCE00009CCE00009CCE00639C
-      9C00009CCE000063630018212100182121000000000000000000C0C0C0000000
-      0000FFFFFF00C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0
-      C000C0C0C000FFFFFF0000000000000000000000000000000000000000008484
-      8400CECECE004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A
-      4A004A4A4A004A4A4A00CECECE00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000006363009CFFFF0000CE
-      FF0000CEFF00009CCE0000CEFF00009CCE0000CEFF00009CCE00009CCE00009C
-      CE00639C9C00182121000063630018212100000000000000000000000000FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00800080008686
-      8600FFFFFF00FFFFFF0000000000000000000000000000000000000000008484
-      8400CECECE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CECECE00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000006363009CFFFF00FFFF
-      FF0000CEFF0000CEFF0000CEFF0000CEFF00009CCE0000CEFF00009CCE00009C
-      CE00009CCE001821210000636300182121000000000000000000C0C0C0000000
-      0000FFFFFF00C0C0C000C0C0C00086868600C0C0C000C0C0C000C0C0C0008000
-      800086868600FFFFFF0000000000000000000000000000000000000000000000
-      CE00FFFFFF004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A
-      4A004A4A4A004A4A4A00CECECE00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000006363009CFFFF00FFFFFF0000CE
-      FF00FFFFFF0000CEFF00009CCE0000CEFF0000CEFF00009CCE0000CEFF00009C
-      CE001821210000CEFF0000CEFF0018212100000000000000000000000000FFFF
-      FF00FFFFFF00FFFFFF000000FF00FFFFFF00FFFFFF0080008000868686008000
-      8000FFFFFF00FFFFFF0000000000000000000000CE0000000000000000008484
-      8400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CECECE00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000006363009CFFFF0000CEFF00FFFF
-      FF0000CEFF00FFFFFF0000CEFF0000CEFF00009CCE0000CEFF00009CCE0000CE
-      FF00000000000000000000CEFF00182121000000000000000000C0C0C0000000
-      0000FFFFFF00C0C0C000FFFFFF0086868600C0C0C000C0C0C00080008000C0C0
-      C000C0C0C000FFFFFF000000000000000000000000000000CE00000000000000
-      CE00FFFFFF000000CE00DEDEDE00DEDEDE00DEDEDE00CECECE00CECECE000084
-      00000084000000840000CECECE00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000063630000636300006363000063
-      6300006363000063630000636300006363000063630000636300006363000063
-      6300CECECE000000000000CEFF0018212100000000000000000000000000FFFF
-      FF00FFFFFF00FFFFFF000000FF0086868600FFFFFF00FFFFFF00FFFFFF008686
-      8600FFFFFF00FFFFFF00000000000000000000000000000000000000CE000000
-      9C000000CE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DEDEDE00CECECE0000FF
-      000000FF000000FF0000CECECE00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000084848400CECECE004A4A
-      4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A
-      4A00CECECE000000000000CEFF00182121000000000000000000C0C0C0000000
-      0000FFFFFF00C0C0C0000000FF0086868600C0C0C000C0C0C000FF0000008686
-      8600C0C0C000FFFFFF0000000000000000000000CE000000CE0000009C00FFFF
-      FF0000009C000000000000000000000000008484840084848400848484008484
-      8400848484008484840084848400000000000000FF0000009C00000000000000
-      00000000FF0000009C0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000084848400CECECE00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00CECECE00000000009CFFFF0018212100000000000000000000000000FFFF
-      FF00FFFFFF00FFFFFF000000FF0086868600FFFFFF00FFFFFF00FF0000008686
-      8600FFFFFF00FFFFFF00000000000000000000000000000000000000CE000000
-      9C000000CE000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000FF0000009C000000
-      FF0000009C000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000084848400CECECE004A4A
-      4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A
-      4A00CECECE000000000000636300000000000000000000000000C0C0C0000000
-      0000FFFFFF00C0C0C0000000FF00C0C0C000C0C0C000C0C0C000FF000000C0C0
-      C000C0C0C000FFFFFF000000000000000000000000000000CE00000000000000
-      CE00000000000000CE0000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000000000000000FF000000
-      9C00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000084848400CECECE00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00CECECE00000000000000000000000000000000000000000000000000FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008686
-      8600FFFFFF00FFFFFF0000000000000000000000CE0000000000000000000000
-      000000000000000000000000CE00000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000FF0000009C000000
-      FF0000009C000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000084848400CECECE00DEDE
-      DE00DEDEDE00DEDEDE00DEDEDE00CECECE00CECECE0000840000008400000084
-      0000CECECE000000000000000000000000000000000000000000C0C0C0000000
-      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF000000FFFF
-      FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000
-      CE00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000FF0000009C00000000000000
-      00000000FF0000009C0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000084848400CECECE00CECE
-      CE00CECECE00CECECE00CECECE00CECECE00CECECE0000FF000000FF000000FF
-      0000CECECE00000000000000000000000000000000000000000000000000FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000084848400848484008484
-      8400848484008484840084848400848484008484840084848400848484008484
-      8400848484000000000000000000000000000000000000000000868686008686
-      8600868686008686860086868600868686008686860086868600868686008686
-      8600868686008686860000000000000000000000000000000000000000000000
-      CE00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000FF00000000000000FF0000000000
-      0000FF00000000000000FF00000000000000FF00000000000000FF0000000000
-      0000FF00000000000000FF00000000000000FF00000000000000FF0000000000
-      0000FF00000000000000FF00000000000000FF00000000000000FF0000000000
-      0000FF00000000000000FF00000000000000FF00000000000000FF0000000000
-      0000FF00000000000000FF00000000000000FF00000000000000FF0000000000
-      0000FF00000000000000FF00000000000000FF00000000000000FF0000000000
-      0000FF00000000000000FF00000000000000FF00000000000000FF0000000000
-      0000FF00000000000000FF000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000FF00000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000FF00000000000000FF00000000000000000000000000
-      0000000000000000000000000000000084000000000000000000000000000000
-      00000000000000000000FF00000000000000FF00000000000000000000000000
-      0000000000000000000000000000000084000000000000000000000000000000
-      00000000000000000000FF00000000000000FF00000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000FF000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000084000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000008400000084000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      8400000000000000000000008400000084000000840000000000000000000000
-      000000000000000000000000000000000000FF00000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000FF00000000000000FF00000000000000000000000000
-      0000000000000000000000008400000000000000840000000000000000000000
-      00000000000000000000FF00000000000000FF00000000000000000000000000
-      0000000000000000840000008400000084000000840000008400000000000000
-      00000000000000000000FF00000000000000FF00000000000000000000000000
-      0000000084000000840000000000000000000000000000008400000000000000
-      00000000000000000000FF000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000008400000000000000840000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000008400000084000000000000000000000084000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000084000000840000000000000000000000000000000000000084000000
-      000000000000000000000000000000000000FF00000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000FF00000000000000FF00000000000000000000000000
-      0000000000000000840000000000000000000000000000008400000000000000
-      00000000000000000000FF00000000000000FF00000000000000000000000000
-      0000000000000000000000000000000084000000000000000000000084000000
-      00000000000000000000FF00000000000000FF00000000000000000000000000
-      8400000000000000000000008400000000000000000000000000000000000000
-      84000000000000000000FF000000000000000000000000000000000000000000
-      8400000084000000840000008400000084000000840000008400000084000000
-      8400000000000000000000000000000000000000000000000000000000000000
-      0000000000000000840000000000000000000000000000008400000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000084000000000000000000000000000000000000000000000084000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      8400000000000000000000000000000084000000000000000000000000000000
-      840000000000000000000000000000000000FF00000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000FF00000000000000FF00000000000000000000000000
-      0000000084000000000000000000000000000000000000000000000084000000
-      00000000000000000000FF00000000000000FF00000000000000000000000000
-      0000000084000000000000000000000084000000000000000000000000000000
-      00000000000000000000FF00000000000000FF00000000000000000000000000
-      8400000000000000000000000000000000000000840000000000000000000000
-      84000000000000000000FF000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000084000000840000008400000084000000840000008400000084000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000084000000000000000000000084000000840000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000084000000000000000000000000000000000000008400000084000000
-      000000000000000000000000000000000000FF00000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000FF00000000000000FF00000000000000000000000000
-      8400000000000000000000000000000000000000000000000000000000000000
-      84000000000000000000FF00000000000000FF00000000000000000000000000
-      0000000000000000840000008400000084000000840000008400000000000000
-      00000000000000000000FF00000000000000FF00000000000000000000000000
-      0000000000000000840000000000000000000000000000008400000084000000
-      00000000000000000000FF000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      8400000000000000000000000000000000000000000000000000000000000000
-      8400000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000084000000840000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000008400000084000000840000000000000000000000
-      840000000000000000000000000000000000FF00000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000FF00000000000000FF00000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000FF00000000000000FF00000000000000000000000000
-      0000000000000000000000000000000084000000000000000000000000000000
-      00000000000000000000FF00000000000000FF00000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000FF000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000FF00000000000000FF0000000000
-      0000FF00000000000000FF00000000000000FF00000000000000FF0000000000
-      0000FF00000000000000FF00000000000000FF00000000000000FF0000000000
-      0000FF00000000000000FF00000000000000FF00000000000000FF0000000000
-      0000FF00000000000000FF00000000000000FF00000000000000FF0000000000
-      0000FF00000000000000FF00000000000000FF00000000000000FF0000000000
-      0000FF00000000000000FF00000000000000FF00000000000000FF0000000000
-      0000FF00000000000000FF00000000000000FF00000000000000FF0000000000
-      0000FF00000000000000FF000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000084848400CECECE00CECE
-      CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECE
-      CE00CECECE000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000840000008400000084000000840000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000FF00000000000000FF0000000000
-      0000FF00000000000000FF00000000000000FF00000000000000FF0000000000
-      0000FF00000000000000FF000000000000000000000084848400FFFFFF00FFFF
-      FF009CFFFF00FFFFFF009CFFFF00009C31009CFFFF00FFFFFF009CFFFF00FFFF
-      FF00CECECE000000000000000000000000000000000000000000000000000000
-      0000000000000000000084848400840000008400000000000000840000000000
-      0000000000000000000000000000000000000000000000000000000000001821
-      2100182121001821210018212100182121001821210018212100182121001821
-      2100182121001821210018212100182121000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000084848400FFFFFF009CFF
-      FF00FFFFFF009CFFFF00009C3100009C3100FFFFFF009CFFFF00FFFFFF009CFF
-      FF00CECECE000000000000000000000000000000000000000000000000000000
-      0000000000000000000084000000840000008400000000000000000000000000
-      0000000000000000000000000000000000000000000000000000006363000063
-      6300006363000063630000636300006363000063630000636300006363000063
-      630000636300006363001821210018212100FF00000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000FF000000000000000000000084848400FFFFFF00FFFF
-      FF009CFFFF00009C3100009C3100009C3100009C3100009C31009CFFFF00FFFF
-      FF00CECECE000000000000000000000000000000000000000000000000000000
-      0000000000000000000084000000840000008400000084000000000000000000
-      0000000000000000000000000000000000000000000000000000006363009CFF
-      FF00009CCE0000CEFF00009CCE0000CEFF00009CCE00009CCE00009CCE00639C
-      9C00009CCE000063630018212100182121000000000000000000000000000000
-      0000000000000000000000000000000084000000000000000000000000000000
-      0000000000000000000000000000000000000000000084848400FFFFFF009CFF
-      FF00FFFFFF009CFFFF00009C3100009C3100FFFFFF00639C0000636300009CFF
-      FF00CECECE000000000000000000000000000000000000000000000000000000
-      0000000000000000000084000000840000008400000084848400000000000000
-      00000000000000000000000000000000000000000000006363009CFFFF0000CE
-      FF0000CEFF00009CCE0000CEFF00009CCE0000CEFF00009CCE00009CCE00009C
-      CE00639C9C00182121000063630018212100FF00000000000000000000000000
-      0000000000000000000000000000000084000000000000000000000000000000
-      00000000000000000000FF000000000000000000000084848400FFFFFF00FFFF
-      FF009CFFFF00FFFFFF009CFFFF00009C31009CFFFF00FFFFFF0063630000FFFF
-      FF00CECECE000000000000000000000000000000000000000000000000000000
-      0000000000000000000084848400840000008400000084000000000000000000
-      00000000000000000000000000000000000000000000006363009CFFFF00FFFF
-      FF0000CEFF0000CEFF0000CEFF0000CEFF00009CCE0000CEFF00009CCE00009C
-      CE00009CCE001821210000636300182121000000000000000000000000000000
-      0000000000000000000000000000000084000000000000000000000000000000
-      0000000000000000000000000000000000000000000084848400FFFFFF009CFF
-      FF00636300009CFFFF00FFFFFF009CFFFF00FFFFFF009CFFFF00636300009CFF
-      FF00CECECE000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000848484008400000084000000840000000000
-      000000000000000000000000000000000000006363009CFFFF00FFFFFF0000CE
-      FF00FFFFFF0000CEFF00009CCE0000CEFF0000CEFF00009CCE0000CEFF00009C
-      CE001821210000CEFF0000CEFF0018212100FF00000000000000000000000000
-      0000000000000000000000000000000084000000000000000000000000000000
-      00000000000000000000FF000000000000000000000084848400FFFFFF00FFFF
-      FF0063630000FFFFFF009CFFFF00009C31009CFFFF00FFFFFF009CFFFF00FFFF
-      FF00CECECE000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008400000084000000840000000000
-      000000000000000000000000000000000000006363009CFFFF0000CEFF00FFFF
-      FF0000CEFF00FFFFFF0000CEFF0000CEFF00009CCE0000CEFF00009CCE0000CE
-      FF001821210000CEFF0000CEFF00182121000000000000000000000000000000
-      8400000084000000840000008400000084000000840000008400000084000000
-      8400000000000000000000000000000000000000000084848400FFFFFF009CFF
-      FF0063630000639C0000FFFFFF00009C3100009C31009CFFFF00FFFFFF009CFF
-      FF00CECECE000000000000000000000000000000000000000000000000000000
-      0000000000000000000084000000000000008400000084000000840000000000
-      0000000000000000000000000000000000000063630000636300006363000063
-      6300006363000063630000636300006363000063630000636300006363000063
-      630000CEFF0000CEFF0000CEFF0018212100FF00000000000000000000000000
-      0000000000000000000000000000000084000000000000000000000000000000
-      00000000000000000000FF000000000000000000000084848400FFFFFF00FFFF
-      FF009CFFFF00009C3100009C3100009C3100009C3100009C31009CFFFF00FFFF
-      FF00CECECE000000000000000000000000000000000000000000000000000000
-      0000000000000000000084848400840000008400000084000000848484000000
-      00000000000000000000000000000000000000000000006363009CFFFF0000CE
-      FF00FFFFFF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CE
-      FF0000CEFF0000CEFF0000CEFF00182121000000000000000000000000000000
-      0000000000000000000000000000000084000000000000000000000000000000
-      0000000000000000000000000000000000000000000084848400FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00009C3100009C31009CFFFF00FFFFFF00CECE
-      CE00CECECE000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000006363009CFFFF00FFFF
-      FF0000CEFF00FFFFFF0000CEFF0000CEFF0000CEFF0000CEFF009CFFFF009CFF
-      FF009CFFFF009CFFFF009CFFFF0018212100FF00000000000000000000000000
-      0000000000000000000000000000000084000000000000000000000000000000
-      00000000000000000000FF000000000000000000000084848400FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00009C31009CFFFF00FFFFFF00000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000840000008400000084000000848484000000
-      00000000000000000000000000000000000000000000006363009CFFFF0000CE
-      FF00FFFFFF0000CEFF00FFFFFF0000CEFF009CFFFF0000636300006363000063
-      6300006363000063630000636300000000000000000000000000000000000000
-      0000000000000000000000000000000084000000000000000000000000000000
-      0000000000000000000000000000000000000000000084848400FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF009CFFFF00FFFFFF009CFFFF0084848400FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000840000008400000084000000840000000000
-      0000000000000000000000000000000000000000000000000000006363009CFF
-      FF009CFFFF009CFFFF009CFFFF009CFFFF000063630000000000000000000000
-      000000000000000000000000000000000000FF00000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000FF000000000000000000000084848400FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00848484000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000840000008400000084000000848484000000
-      0000000000000000000000000000000000000000000000000000000000000063
-      6300006363000063630000636300006363000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000084848400848484008484
-      8400848484008484840084848400848484008484840084848400848484000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000FF00000000000000FF0000000000
-      0000FF00000000000000FF00000000000000FF00000000000000FF0000000000
-      0000FF00000000000000FF000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000084848400CECE
-      CE00CECECE00CECECE0000639C00009CCE0000639C0000000000CECECE00CECE
-      CE00CECECE00000000000000000000000000006363009CFFFF0000CEFF0000CE
-      FF00009CCE0000CEFF00009CCE0000CEFF00009CCE00009CCE00009CCE00639C
-      9C00009CCE00639C9C000000000000000000006363009CFFFF0000CEFF0000CE
-      FF00009CCE0000CEFF00009CCE0000CEFF00009CCE00009CCE00009CCE00639C
-      9C00009CCE00639C9C000000000000000000006363009CFFFF0000CEFF0000CE
-      FF00009CCE0000CEFF00009CCE0000CEFF00009CCE00009CCE00009CCE00639C
-      9C00009CCE00639C9C000000000000000000000000000000000084848400FFFF
-      FF009CFFFF00FFFFFF0000639C00009CFF00009CCE00000000009CFFFF00FFFF
-      FF00CECECE00000000000000000000000000006363009CFFFF0000CEFF0000CE
-      FF0000CEFF00009CCE0000CEFF00009CCE0000CEFF00009CCE00009CCE00009C
-      CE00639C9C00009CCE000000000000000000006363009CFFFF0000CEFF0000CE
-      FF0000CEFF000000000084848400009CCE0000CEFF00009CCE00009CCE00009C
-      CE00639C9C00009CCE000000000000000000006363009CFFFF0000CEFF0000CE
-      FF0000CEFF00009CCE0000CEFF00009CCE0084848400C6C6C600009CCE00009C
-      CE00639C9C00009CCE000000000000000000000000000000000084848400FFFF
-      FF00FFFFFF009CFFFF0000639C0000CEFF00009CFF0000000000FFFFFF009CFF
-      FF00CECECE00000000000000000000000000006363009CFFFF00FFFFFF0000CE
-      FF0000CEFF00313131003131310031313100313131003131310031313100009C
-      CE00009CCE00639C9C000000000000000000006363009CFFFF00FFFFFF0000CE
-      FF0000CEFF008484840000000000C6C6C600009CCE0000CEFF00009CCE00009C
-      CE00009CCE00639C9C000000000000000000006363009CFFFF00FFFFFF0000CE
-      FF0000CEFF0000CEFF00009CCE008484840000000000C6C6C600009CCE00009C
-      CE00009CCE00639C9C000000000000000000000000000000000084848400FFFF
-      FF009CFFFF00FFFFFF0000639C009CFFFF0000CEFF00000000009CFFFF00FFFF
-      FF00CECECE00000000000000000000000000006363009CFFFF0000CEFF00FFFF
-      FF0000CEFF003131310000CEFF0000CEFF0000CEFF00009CCE0000CEFF00009C
-      CE00009CCE00009CCE000000000000000000006363009CFFFF0000CEFF00FFFF
-      FF0000CEFF0000CEFF00000000008484840000CEFF00009CCE0000CEFF00009C
-      CE00009CCE00009CCE000000000000000000006363009CFFFF0000CEFF00FFFF
-      FF0000CEFF0000CEFF0000CEFF000000000084848400009CCE0000CEFF00009C
-      CE00009CCE00009CCE000000000000000000000000000000000084848400FFFF
-      FF00FFFFFF009CFFFF0000639C0000639C0000639C0000000000FFFFFF009CFF
-      FF00CECECE00000000000000000000000000006363009CFFFF00FFFFFF0000CE
-      FF00FFFFFF003131310000CEFF0000CEFF0000CEFF0000CEFF00009CCE0000CE
-      FF00009CCE00009CCE000000000000000000006363009CFFFF00FFFFFF0000CE
-      FF00FFFFFF0000CEFF008484840000000000C6C6C60000CEFF00009CCE0000CE
-      FF00009CCE00009CCE000000000000000000006363009CFFFF00FFFFFF0000CE
-      FF00FFFFFF0000CEFF008484840000000000C6C6C60000CEFF00009CCE0000CE
-      FF00009CCE00009CCE000000000000000000000000000000000000000000CECE
-      CE00FFFFFF00FFFFFF009CFFFF00FFFFFF009CFFFF00FFFFFF009CFFFF00FFFF
-      FF00CECECE00000000000000000000000000006363009CFFFF0000CEFF003131
-      31003131310031313100313131003131310000CEFF0000CEFF0000CEFF0000CE
-      FF0000CEFF00009CCE000000000000000000006363009CFFFF0000CEFF00FFFF
-      FF0000CEFF00FFFFFF0000CEFF00000000008484840000CEFF0000CEFF0000CE
-      FF0000CEFF00009CCE000000000000000000006363009CFFFF0000CEFF00FFFF
-      FF0000CEFF00FFFFFF00000000008484840000CEFF0000CEFF0000CEFF0000CE
-      FF0000CEFF00009CCE0000000000000000000000000000639C009CFFFF000000
-      0000CECECE00FFFFFF00FFFFFF009CFFFF00FFFFFF009CFFFF00FFFFFF00CECE
-      CE000000000000CEFF000000000000000000006363009CFFFF00FFFFFF0000CE
-      FF0031313100313131003131310000CEFF00FFFFFF0000CEFF0000CEFF0000CE
-      FF00009CCE0000CEFF000000000000000000006363009CFFFF00FFFFFF0000CE
-      FF00FFFFFF0000CEFF00FFFFFF008484840000000000C6C6C60000CEFF0000CE
-      FF00009CCE0000CEFF000000000000000000006363009CFFFF00FFFFFF0000CE
-      FF00FFFFFF008484840000000000C6C6C600FFFFFF0000CEFF0000CEFF0000CE
-      FF00009CCE0000CEFF000000000000000000000000000000000000639C009CFF
-      FF0000000000CECECE00FFFFFF00FFFFFF009CFFFF00FFFFFF00CECECE000000
-      000000CEFF00000000000000000000000000006363009CFFFF0000CEFF00FFFF
-      FF0000CEFF003131310000CEFF00FFFFFF0000CEFF00FFFFFF0000CEFF0000CE
-      FF0000CEFF00009CCE000000000000000000006363009CFFFF0000CEFF00FFFF
-      FF0000CEFF00FFFFFF0000CEFF00FFFFFF0084848400C6C6C60000CEFF0000CE
-      FF0000CEFF00009CCE000000000000000000006363009CFFFF0000CEFF00FFFF
-      FF0000CEFF000000000084848400FFFFFF0000CEFF00FFFFFF0000CEFF0000CE
-      FF0000CEFF00009CCE0000000000000000000000000000000000000000000063
-      9C009CFFFF0000000000CECECE00FFFFFF00FFFFFF00CECECE000000000000CE
-      FF0000000000000000000000000000000000006363009CFFFF009CFFFF009CFF
-      FF009CFFFF009CFFFF009CFFFF009CFFFF009CFFFF009CFFFF009CFFFF009CFF
-      FF009CFFFF009CFFFF000000000000000000006363009CFFFF009CFFFF009CFF
-      FF009CFFFF009CFFFF009CFFFF009CFFFF009CFFFF009CFFFF009CFFFF009CFF
-      FF009CFFFF009CFFFF000000000000000000006363009CFFFF009CFFFF009CFF
-      FF009CFFFF009CFFFF009CFFFF009CFFFF009CFFFF009CFFFF009CFFFF009CFF
-      FF009CFFFF009CFFFF0000000000000000000000000000000000000000000000
-      000000639C009CFFFF0000000000CECECE00CECECE000000000000CEFF000000
-      00006300FF000000000000000000000000000063630000636300006363000063
-      6300006363000063630000636300006363000063630000636300006363000063
-      6300006363000063630000000000000000000063630000636300006363000063
-      6300006363000063630000636300006363000063630000636300006363000063
-      6300006363000063630000000000000000000063630000636300006363000063
-      6300006363000063630000636300006363000063630000636300006363000063
-      6300006363000063630000000000000000000000000000000000000000000000
-      00000000000000639C009CFFFF00000000000000000000CEFF00000000000000
-      9C006300FF0000000000000000000000000000000000006363009CFFFF009CFF
-      FF009CCECE009CCECE00009C9C00000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000006363009CFFFF009CFF
-      FF009CCECE009CCECE00009C9C00000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000006363009CFFFF009CFF
-      FF009CCECE009CCECE00009C9C00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000639C009CFFFF0000CEFF0000000000000000000000
-      9C006300FF000000000000000000000000000000000000000000006363000063
-      6300006363000063630000636300000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000006363000063
-      6300006363000063630000636300000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000006363000063
-      6300006363000063630000636300000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000639C000000000000000000000000000000
-      9C0000009C000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
-      000000000000FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF008400
-      000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00840000008400
-      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008400000084000000FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF008484
-      840084000000FFFFFF000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00848484008400
-      0000FFFFFF000000000000000000FFFFFF00FFFFFF00FFFFFF0084000000FFFF
-      FF000000000000000000FFFFFF000000000000000000FFFFFF00FFFFFF008400
-      0000FFFFFF00FFFFFF00000000000000000000000000FFFFFF00000000000000
-      000000000000FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF000000
-      0000000000000000000000000000FFFFFF00FFFFFF0084000000840000008400
-      000084000000FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0084000000FFFFFF00FFFF
-      FF0084000000FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008400000084000000FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00840000008400
-      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008400000084000000FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF008400
-      0000FFFFFF00FFFFFF00000000000000000000000000FFFFFF00000000000000
-      000000000000FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF008400
-      0000840000008400000084000000FFFFFF00FFFFFF0084000000FFFFFF008400
-      000084000000FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008484840084000000FFFF
-      FF000000000000000000FFFFFF000000000000000000FFFFFF00848484008400
-      0000FFFFFF000000000000000000FFFFFF00FFFFFF008484840084000000FFFF
-      FF000000000000000000FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF008400
-      0000FFFFFF00FFFFFF0084000000FFFFFF00FFFFFF0084000000840000008400
-      0000FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF008400
-      0000840000008400000084000000840000008400000084000000840000008400
-      000084000000FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF008400
-      0000FFFFFF008400000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF008400
-      000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00840000008400
-      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008400000084000000FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF008400
-      00008400000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF008484
-      840084000000FFFFFF000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00848484008400
-      0000FFFFFF000000000000000000FFFFFF00FFFFFF008484840084000000FFFF
-      FF000000000000000000FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00000000000000000000000000FFFFFF00000000000000
-      000000000000FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000084000000840000008400
-      0000840000008400000084000000840000008400000084000000840000008400
-      0000840000008400000084000000000000000000000084000000840000008400
-      0000840000008400000084000000840000008400000084000000840000008400
-      0000840000008400000084000000000000000000000084000000840000008400
-      0000840000008400000084000000840000008400000084000000840000008400
-      0000840000008400000084000000000000000000000084000000840000008400
-      0000840000008400000084000000840000008400000084000000840000008400
-      0000840000008400000084000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000084848400CECECE00CECECE00CECE
-      CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE000000
-      000000000000000000000000000000000000006363009CFFFF0000CEFF0000CE
-      FF00009CCE0000CEFF00009CCE00009CCE00009CCE00009CCE00009CCE000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000084848400FFFFFF00FF000000FF00
-      00009CFFFF00FF000000FF000000FF000000FF000000FF000000CECECE000000
-      000000000000000000000000000000000000006363009CFFFF0000CEFF0000CE
-      FF0000CEFF00009CCE0000CEFF00009CCE00009CCE00009CCE00009CCE000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000084848400FFFFFF00FFFFFF009CFF
-      FF00FFFFFF009CFFFF00FFFFFF009CFFFF00FFFFFF009CFFFF00CECECE000000
-      000000000000000000000000000000000000006363009CFFFF00CEFFFF0000CE
-      FF0000CEFF0000CEFF00009CCE0000CEFF00009CCE00009CCE00009CCE000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000084848400FFFFFF00FF633100FF63
-      31009CFFFF00FF633100FF633100FF633100FF633100FF633100CECECE000000
-      000000000000000000000000000000000000006363009CFFFF0000CEFF00CEFF
-      FF0000CEFF0000CEFF0000CEFF00009CCE0000CEFF00009CCE00009CCE000000
-      CE00000000000000000000000000000000000000000000000000000000000000
-      000000000000FF9C310000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FF6331000000
-      00000000000000000000000000000000000084848400FFFFFF00FFFFFF009CFF
-      FF00FFFFFF009CFFFF00FFFFFF009CFFFF00FFFFFF009CFFFF00CECECE000000
-      000000000000000000000000000000000000006363009CFFFF00CEFFFF0000CE
-      FF00CEFFFF0000CEFF0000CEFF0000CEFF00009CCE0000CEFF00009CCE000000
-      000000000000000000000000CE00000000000000000000000000000000000000
-      0000FF9C3100FF9C310000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FF9C3100FF63
-      31000000000000000000000000000000000084848400FFFFFF00CECECE00CECE
-      CE009CFFFF00FFFFFF009CFFFF00CECECE0000000000CECECE00CECECE000000
-      000000000000000000000000000000000000006363009CFFFF0000CEFF00CEFF
-      FF0000CEFF00CEFFFF0000CEFF0000CEFF0000CEFF000000CE0000CEFF000000
-      CE00000000000000CE000000000000000000000000000000000000000000FF9C
-      3100FFCE3100FF9C3100FF9C3100FF9C3100FF9C3100FF9C3100FF9C3100FF9C
-      3100FF9C31000000000000000000000000000000000000000000FF633100FF9C
-      3100FF9C3100FF9C3100FF9C3100FF9C3100FF9C3100FF9C3100FF9C3100FFCE
-      3100FF63310000000000000000000000000084848400FFFFFF00000000000000
-      0000CECECE009CFFFF00CECECE00000000009CCECE0000000000CECECE000000
-      000000000000000000000000000000000000006363009CFFFF009CFFFF009CFF
-      FF009CFFFF009CFFFF009CFFFF009CFFFF009CFFFF009CFFFF000000CE000000
-      9C000000CE000000000000000000000000000000000000000000FF633100FFFF
-      9C00FFFF9C00FFFF9C00FFFF9C00FFFF9C00FFFF9C00FFFF9C00FFFF9C00FFFF
-      9C00FF9C31000000000000000000000000000000000000000000FF633100FFFF
-      CE00FFFFCE00FFFFCE00FFFFCE00FFFFCE00FFFFCE00FFFFCE00FFFFCE00FFFF
-      9C00FFCE310000000000000000000000000084848400FFFFFF00639C9C00CEFF
-      FF0000000000CECECE00000000009CCECE00316363009CCECE00000000000000
-      0000000000000000000000000000000000000063630000636300006363000063
-      63000063630000636300006363000000CE000000CE000000CE0000009C00FFFF
-      FF0000009C000000CE00000000000000CE00000000000000000000000000FF63
-      3100FFFF9C00FFFF9C0000000000FF633100FF633100FF633100FF633100FF63
-      3100FF6331000000000000000000000000000000000000000000FF633100FF63
-      3100FF633100FF633100FF633100FF633100FF633100FF633100FFFFCE00FFCE
-      31000000000000000000000000000000000084848400FFFFFF00FFFFFF00639C
-      9C00CEFFFF00000000009CCECE00316363009CCECE0031636300639C9C00639C
-      9C00639C9C0000000000FF633100FF6331000000000000636300FFFFFF009CFF
-      FF009CFFFF009CFFFF00000000000000000000000000000000000000CE000000
-      9C000000CE000000000000000000000000000000000000000000000000000000
-      0000FF633100FFFF9C0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000FF633100FFCE31000000
-      0000000000000000000000000000000000008484840084848400848484008484
-      8400639C9C00CEFFFF00000000009CCECE00316363009CCECE009CCECE009CCE
-      CE00639C9C00639C9C00FF9C3100FF9C31000000000000000000006363000063
-      630000636300006363000000000000000000000000000000CE00000000000000
-      CE00000000000000CE0000000000000000000000000000000000000000000000
-      000000000000FF63310000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000FF633100000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000639C9C00CEFFFF0000000000CEFFFF00CEFFFF009CCECE009CCE
-      CE009CCECE009CCECE00FFCE3100FFCE31000000000000000000000000000000
-      0000000000000000000000000000000000000000CE0000000000000000000000
-      000000000000000000000000CE00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000FF633100000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000639C9C00FFFFFF00FFFFFF00CEFFFF00CEFFFF00CEFF
-      FF00CEFFFF00639C9C00FFFF9C00FFFF9C000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      CE00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000639C9C00639C9C00639C9C00639C9C00639C
-      9C00639C9C0000000000FF633100FF6331000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      CE00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000000009C000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000FF0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000084848400CECECE00CECECE00CECECE00CECECE00CECE
-      CE00CECECE00CECECE0000000000000000000000000000000000000000000000
-      0000000000000000000084848400CECECE00CECECE00CECECE00CECECE00CECE
-      CE00CECECE00CECECE000000000000000000000000003131CE000000FF000000
-      9C00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000848484009CFFFF00FF000000FF000000FF000000FF00
-      0000FF000000CECECE0000000000000000000000000000000000000000000000
-      00000000000000000000848484009CFFFF00FF000000FF000000FF000000FF00
-      0000FF000000CECECE000000000000000000000000003131CE00319CFF000000
-      FF0000009C000000000000000000000000000000000000000000000000000000
-      00000000FF000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000084848400FFFFFF009CFFFF00FFFFFF009CFFFF00FFFF
-      FF009CFFFF00CECECE0000000000000000000000000000000000000000000000
-      0000000000000000000084848400FFFFFF009CFFFF00FFFFFF009CFFFF00FFFF
-      FF009CFFFF00CECECE00000000000000000000000000000000003131CE000063
-      FF000000CE000000000000000000000000000000000000000000000000000000
-      FF00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008484840000000000000000000000
-      00000000000000000000000000000000000084848400CECECE00CECECE00CECE
-      CE00CECECE00CECECE00848484009CFFFF00FF000000FF000000FF000000FF00
-      0000FF000000CECECE00000000000000000000000000FFFFFF0000000000FFFF
-      FF0000000000FFFFFF00848484009CFFFF00FF000000FF000000FF000000FF00
-      0000FF000000CECECE0000000000000000000000000000000000000000000000
-      CE000000FF0000009C00000000000000000000000000000000000000FF000000
-      9C00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000084848400000000000000
-      00000000000000000000000000000000000084848400FFFFFF009C3100009C31
-      00009C3100009C31000084848400FFFFFF009CFFFF00FFFFFF009CFFFF00FFFF
-      FF00CECECE00CECECE0000000000000000008484840000000000FFFFFF000000
-      0000FFFFFF000000000084848400FFFFFF009CFFFF00FFFFFF009CFFFF00FFFF
-      FF00CECECE00CECECE0000000000000000000000000000000000000000000000
-      00000000CE000000FF0000009C0000000000000000000000FF0000009C000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000848484000000
-      000000000000000000000000000000000000848484009CFFFF00FFFFFF009CFF
-      FF00FFFFFF009CFFFF0084848400FFFFFF00FF633100FF633100FFFFFF000000
-      00000000000000000000000000000000000000000000FFFFFF0000000000FFFF
-      FF0000000000FFFFFF0084848400FFFFFF00FF633100FF633100FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000CE000000FF0000009C000000FF0000009C00000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000FFFF0000FFFF00000000008484
-      84000000000000000000000000000000000084848400FFFFFF009C3100009C31
-      00009C3100009C31000084848400FFFFFF00FFFFFF00FFFFFF009CFFFF008484
-      8400FFFFFF000000000000000000000000008484840000000000FFFFFF000000
-      0000FFFFFF000000000084848400FFFFFF00FFFFFF00FFFFFF009CFFFF008484
-      8400FFFFFF000000000000000000000000000000000000000000000000000000
-      000000000000000000000000CE000000FF0000009C0000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000FFFF0000FFFF00000000008484
-      840084848400000000000000000000000000848484009CFFFF00FFFFFF009CFF
-      FF00FFFFFF009CFFFF0084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF008484
-      84000000000000000000000000000000000000000000FFFFFF0000000000FFFF
-      FF0000000000FFFFFF0084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF008484
-      8400000000000000000000000000000000000000000000000000000000000000
-      0000000000000000CE000000FF0000009C000000CE0000009C00000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000FFFF0000FFFF000000
-      00008484840084848400000000000000000084848400FFFFFF009C3100009C31
-      0000FFFFFF000000000084848400848484008484840084848400848484008484
-      8400000000000000000000000000000000008484840000000000FFFFFF000000
-      0000FFFFFF000000000084848400848484008484840084848400848484008484
-      8400000000000000000000000000000000000000000000000000000000000000
-      00000000CE000000FF0000009C0000000000000000000000CE0000009C000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000FFFF00000000000000
-      00008484840084848400000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF009CFFFF0084848400FFFFFF00000000000000000000000000000000000000
-      00009C31000000000000000000000000000000000000FFFFFF0000000000FFFF
-      FF00000000008484840000000000000000000000000000000000000000000000
-      00009C31000000000000000000000000000000000000000000000000CE000000
-      FF000000FF0000009C00000000000000000000000000000000000000CE000000
-      9C00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000084000000
-      84000000000000000000000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF008484840000000000000000000000000000000000000000009C31
-      00009C3100009C31000000000000000000008484840000000000FFFFFF000000
-      0000FFFFFF000000000000000000000000000000000000000000000000009C31
-      00009C3100009C3100000000000000000000000000000000CE00319CFF000000
-      FF0000009C000000000000000000000000000000000000000000000000000000
-      CE0000009C000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008484840084848400848484008484
-      84008484840084848400000000000000000000000000000000009C3100009C31
-      00009C3100009C3100009C310000000000000000000084848400000000008484
-      84000000000084848400000000000000000000000000000000009C3100009C31
-      00009C3100009C3100009C310000000000000000000063639C000000CE006363
-      9C00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000CE0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000009C3100000000000000000000000000000000
-      00009C3100000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000009C3100000000000000000000000000000000
-      00009C3100000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000009C3100009C3100009C3100009C31
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000009C3100009C3100009C3100009C31
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000424D3E000000000000003E000000
-      2800000040000000900100000100010000000000800C00000000000000000000
-      000000000000000000000000FFFFFF00003F000000000000003F000000000000
-      0007000000000000000700000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000E000000000000000E001000000000000
-      F403000000000000FC07000000000000FFFF003F003FFFFF0000003F003FE1E1
-      000000070007E1E1000000070007E081000000000000E001000000000000E001
-      000000000000F003000000000000000300000000000000070000000000000007
-      0000000000000007000000000000001F00002000E000001F00002001E001001F
-      00008003FC03003FFFFFE407FC0787FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-      FFFFFFFFFEABE000FF3FF9FFEFFFE000FF1FF1FFC67FE000910FE113AA3F8000
-      9107C113EA1F800091038113E60F80009107C113CE078000910FE113AF038000
-      FF1FF1FFAB038000FF3FF9FFC7878003FFFFFFFFEF8F8003FFFFFFFFFFFF8003
-      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF003FE0C1FBFF5555003F
-      E0C1F9FFFFFF00078001E8FF7C7D00078001E07FF39F00008001E03F6FED0000
-      8001E01FEFEF00008001E00F5FF500008001E01FDFF700008001E03F5FB50000
-      8001E07FEF8F00008001E0FF6F8D00008001E1FFF387C0008001E3FF7CFD8001
-      8307E7FFFFFF30038307EFFF5555FC07FE7FFE7F0003FFFFF00FF00F0003C183
-      E007E0070003C183C003C0030003C183C003C0030003C183800180010003C183
-      800180010003C183800180018003C183800180018003C183800180018003C183
-      800180018003C183C003C0038003C183C003C0038003C183E001E0018007C183
-      F000F000800FC183FE00FE00801FC183FF81FFFFFFFFFE7FFF81000FFFFFF83F
-      F081000FAABFE01FF781000FD57F800FF78F000FA8010007F7FF000FD4010003
-      F781000FA8010001F081000FD4010000F781000FA8010000F7810007D4018000
-      FF8F0007A801C00081FF0003D403E00081FF0003FC07F00181FF0001FC0FF807
-      81FF0021FFFFFC1F8FFF0073FFFFFE7FFFFFFFFF003FFFFFFFFFFFFF003FFE00
-      FFFFFFFF00078000FFFFFEFF00070000F83FFC7F00000000F83FF83F00000000
-      F83FF01F00000001F83FE00F00000003C007C00700000003E00FF83F00000003
-      F01FF83F00000003F83FF83F00000003FC7FF83FE0000003FEFFFFFFE0018007
-      FFFFFFFFFC03F87FFFFFFFFFFC07FFFFFC1FFFFFFFFFFFFFF007FFFFF7FFDFFB
-      E0030000F3FF8FFFC0010000F1FF87F780010000F0FFC7EF80000000F07FE3CF
-      00000000F03FF19F00000000F01FF83F00000000F00FFC7F00000000F01FF83F
-      00010000F03FF19F80010000F07FC3CF80030000F0FF87E7C0070000F1FF8FFB
-      E00F0000F3FFFFFFF83FFFFFF7FFFFFF807FFFFFFC3FFF9F003FFC3FF00FFF1F
-      001FF8BFE00FFE1F801FF8FFE1FFF007803FF87FC1E7E003803FF87FC3E3C001
-      8003F87F00C180008001FC3F008000008000FE3F81000000C000FA3FC1C30000
-      FC01F83FE3C30000FC01FFFFFFC30001FC01FC3FFF838001FC01FC3FF8078003
-      FC01FC3FFC1FC007FE03FFFFFFFFF01F0003FFFFFFFFFE7F00030015FFFFF00F
-      00030000FFFFE00700030000FFFFC0030003E007E000C0030003E007E0008001
-      0003E007600080018003E007200080018003E007200080018003E00760008001
-      8003E007E00080018003E007E000C0038003FFFFE000C0038007F81FFFFFE001
-      800FF81FFFFFF000801FF81FFFFFFE00FFFFFFFFFFFFFC000000000FFFFFE400
-      0000000FE000DC000000000FC00004000000000FC0008C000000000F8000DC00
-      0000000F8000FC000000000F000000070000000F0000000F000000070000003F
-      000000078000003B0000000380000031000000038001002000000001C01F003B
-      00000021E03F81E7FFFF0073F07FC3FF0000FFFFFFFFFFFF0000FC0100010000
-      0000FC01000100000000FC010001000000000001000100000000000100010000
-      000000010001000000000001000100000000000300010000FFFF000700010000
-      C3C3000B00010000C7E3007100010000C7E300E080FF0000DBDB0341C1FF0000
-      FC3FFE87FFFF0000FFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00FE00F
-      F007C007C00FC007E007C007C01FC00FE007C007E01FE01FE007C007F01FF007
-      E007C007E00FE007E007C007E00FE007E007C007C00FC007E007C007C007C007
-      E007C007C00FC007E007C007C01FC007E00FC007C01FC007FFFFC007C01FC007
-      FFFFFFFFE00FE00FFFFFFFFFF01FF07FFFFFFFFFFFFFFFFFFC3FE61FFFFFE00F
-      F99FFCCFC03FE00FF9FFFCFFC03FE00FF81FFC0FC03FE00FF99FFCCFC007E00F
-      FC3FFE1FC007E00FFFFFFFFFC007E00FFFFFFFFFC007E00FFC1FE60FC007E00F
-      F99FFCCFC007FFFFF99FFCCFC007FF0FFC1FFE0FF80FFF0FFF9FFFCFF81FFF0F
-      FC3FFE1FF83FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1FBE1FBFFFFC000
-      CCFBCCF1F83FC000CFFBCFE0F01FC000C0FBC0FBE00FC000CCFBCCFBC007C000
-      E1FBE1FBC007C000FFFBFFFBC0070000FFFBFFFBC0070000E0FBE0FBC0070000
-      CCFBCCFBE00F0000CCFBCCFBF01F0000E0E0E0FBF83F0000FCF1FCFBFFFF0000
-      E1FBE1FBFFFF0007FFFFFFFFFFFF0007FFFFFFFFFFFFFFFFFFFBEF87803B803B
-      FFF1C73300310011FFE0833F00600020001BEF03807B807B001BEF33C07BC01B
-      001BEF87803B801B001BEFFF803B801B001BEFFF003B001B001BEF83001B001B
-      001BEF33003B001B001BEF33007B001B001B8383007B001B001BC7F3007B001B
-      001BEF87803B803B001FFFFFC07FC1FFFFFFFFFFFFFFFFFF30FBFFFBFFFB007B
-      E671FFF100F10071E7E0FFE000E00060E07B803B00FB007BE67B003B001B007B
-      F0FB003B001B007BFFFB003B001B007BFFFB003B001B007B307B003B001B007B
-      E67B003B001BFFFBE67B003B001BF87BF07B003BE03BF87BFE7B003BE07BF87B
-      F0FB007BE0FBF87BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3FFFFFFFFFE1FB
-      F42FE000FFFFCCF1E007C0008003CFE0C003C0000001C0FBC00780000000CCFB
-      000180000000E1FB000100000000FFFB000100000000FFFB000100000000E0FB
-      C00780008000CCFBC0038000C001CCFBC0078001FFFFE0FBE00FC07FFFFFFCFB
-      FC3FE0FFFFFFE1FBFC3FFFFFFFFFFFFFC001FFFFFFFFE000C001E000FFFFC000
-      C001E000EAAAC0008001E000FFFF8000C001E000ED5680008001E000FFFF0000
-      C0016000ED5600008001A000FFFF0000C001C000EFD680008001000033FF8000
-      C001C7FF86AA80018001ABFFCFFF8003C0017DFF87FF80038001EFFF33FF8003
-      C001FFFFFFFF8003C003EFFFFFFFFFFFFFFFFFFFFFFFFFFF5555555555555555
-      FFFFFFFFFFFFFFFF7FFD7EFD7EFD7FFDFFFFFEFFFCFFEC7F7FFD7D7D783D73BD
-      FFFFFD7FFCDFF3DF7FFD7BBD7EDD6DEDE00FFBBFF7DFEEEF7FFD77DD76FD6F6D
-      FFFFF01FF67FF79F7FFD6FED783D7B9DFFFFEFEFFE7FFC6F7FFD7FFD7EFD7FFD
-      FFFFFFFFFFFFFFFF55555555555555558003FFFFFFFFFFFF8003FE1FFFFF5555
-      8003FC5FE000FFFF8003FC7FC0007FFD8003FC3FC000FEFF8003FC3F80007EFD
-      8003FC3F8000FEFF8003FE1F00007EFD8003FF1F0000E00F8003FD1F00007EFD
-      8003FC1F8000FEFF8003FFFF80007EFD8003FE1F8001FEFF8007FE1FC07F7FFD
-      800FFE1FE0FFFFFF801FFFFFFFFF5555FFFFFFFFFFFFFFFFFFFFFFFFFFFFC003
-      000100010001C003000100010001C003000100010001C003000100010001C003
-      000100010001C00300010001000180010001000100018001000100010001C003
-      000100010001E003000100010001F003000100010001F80380FF80FF80FFFC23
-      C1FFC1FFC1FFFE63FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000F000FFFFFFFFF
-      000F000FFFFFFFFF000F000FFDFFFFBF000F000FF9FFFF9F000F000FF1FFFF8F
-      000F000DE003C007000F000BC003C003000F0007C003C00300000002E003C007
-      000081C7F1FFFF8F0000C3ABF9FFFF9FF800FF7DFDFFFFBFFC00FFEFFFFFFFFF
-      FE04FFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFC01FC01DFFBFFFF
-      FC01FC018FFFEBFFFC01FC0187F7FFFF00015401C7EFEA7F0001A801E3CFFE3F
-      00015401F19FEA1F0001A801F83FFE0F00035403FC7FFE070007A807F83FFF03
-      000F500FF19FFF0300F7AAF7C3CFFF8701E355E387E7FF8F03C1ABC18FFBFFFF
-      FEF7FEF7FFFFFFFFFF0FFF0FFFFFFFFF00000000000000000000000000000000
-      000000000000}
-  end
-  object SessionImages: TImageList
-    Left = 32
-    Top = 80
-    Bitmap = {
-      494C010102000400200010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
-      0000000000003600000028000000400000001000000001002000000000000010
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000009C630000000000009C63000000000000CE9C
-      0000000000009C63000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000009C63000000000000CE9C00000000
-      00009C630000000000009C630000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000000000000CE9C
-      0000000000000000000000000000000000000000000000000000008484000084
-      8400008484000084840000848400008484000084840000848400008484000084
-      8400008484000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000031310000000000000000000000000000000000000000000000848400FFFF
-      FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF
-      FF00008484000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000009C630000CE9C0000CE9C0000CECE3100CECE3100FFCE
-      6300CE9C6300313100000000000000000000000000000000000000848400FFFF
-      FF0000848400008484000084840000848400008484000084840000848400C6C6
-      C600008484000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000084840000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00009C630000FFCE9C003131000000000000000000000000000000848400FFFF
-      FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF
-      FF00008484000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000008484009CFFFF009CCEFF0063CE
-      FF0031CEFF0031CEFF0031CEFF0031CEFF00009CCE00009CCE00000000000000
-      000000000000FFCE9C000000000000000000000000000000000000848400FFFF
-      FF0000848400008484000084840000848400008484000084840000848400C6C6
-      C600008484000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000848400CEFFFF009CFFFF009CCE
-      FF0063CEFF0031CEFF0031CEFF0031CEFF0031CEFF00009CCE00000000000000
-      000000000000FFCE9C000000000000000000000000000000000000848400FFFF
-      FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF
-      FF00008484000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000848400F7FFFF00CEFFFF009CFF
-      FF0063CEFF0063CEFF0031CEFF0031CEFF0031CEFF0031CECE00000000000000
-      000000000000FFCE9C000000000000000000000000000000000000848400FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00008484000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000848400F7FFFF00CEFFFF00CEFF
-      FF009CFFFF0063CEFF0063CEFF0031CEFF0031CEFF0031CEFF00000000000000
-      000000000000FFCE9C0000000000000000000000000000000000000000000084
-      8400008484000084840000848400008484000084840000848400008484000084
-      8400008484000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000848400FFFFFF00F7FFFF00CEFF
-      FF00CEFFFF009CFFFF0063CEFF0031CEFF0031CEFF0031CEFF00000000000000
-      000000000000FFCE9C0000000000000000000000000000000000000000000000
-      0000008484000000000000848400008484000084840000848400008484000000
-      0000008484000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000848400FFFFFF00FFFFFF00F7FF
-      FF00CEFFFF009CFFFF009CCEFF0063CEFF0031CEFF0031CEFF00000000000000
-      000000000000FFCE9C0000000000000000000000000000000000000000000000
-      0000008484000000000000000000000000000000000000000000008484000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000084840000848400008484000084
-      8400008484000084840000848400008484000084840000848400008484000000
-      000000000000FFCE9C0000000000000000000000000000000000000000000000
-      0000008484000000000000000000000000000000000000000000008484000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000008484009CFFFF009CCEFF0063CE
-      FF00313100000000000000000000000000000000000000000000000000000000
-      00009C630000FFCE9C0031310000000000000000000000000000000000000000
-      0000008484000000000000000000000000000000000000848400008484000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000848400008484000084
-      840000000000000000009C630000CE9C0000CE9C0000CECE3100CECE3100FFCE
-      6300CE9C63003131000000000000000000000000000000000000000000000000
-      0000000000000084840000000000000000000000000000848400000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000313100000000000000000000000000000000000000000000000000000000
-      0000000000000000000000848400008484000084840000848400000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000424D3E000000000000003E000000
-      2800000040000000100000000100010000000000800000000000000000000000
-      000000000000000000000000FFFFFF00FE01FFFF00000000FE01C00700000000
-      FFCFC00300000000FC07C00300000000F803C003000000000001C00300000000
-      0011C003000000000011C003000000000011C003000000000011E00300000000
-      0011F007000000000011F3CF000000000011F3CF000000000001F58F00000000
-      8803FA1F00000000FC07FC3F0000000000000000000000000000000000000000
-      000000000000}
-  end
-  object QueueImages: TImageList
-    Left = 136
-    Top = 80
-    Bitmap = {
-      494C010108000900200010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
-      0000000000003600000028000000400000003000000001002000000000000030
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000080808000808080000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000080808000808080008080800080808000808080000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000808080000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000808080000000800000008000000080000000800000008000808080008080
-      8000808080000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000000000004C4C4C004C4C
-      4C004C4C4C004C4C4C004C4C4C0000000000000000004C4C4C004C4C4C004C4C
-      4C004C4C4C004C4C4C0000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000FFFFFF0000000000808080000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      8000000080000000FF000000FF000000FF000000FF000000FF00000080000000
-      8000808080008080800000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000000000004C4C4C009F70
-      5B009A705B009F705B004C4C4C0000000000000000004C4C4C009F705B009A70
-      5B009F705B004C4C4C0000000000000000000000000000000000000000000000
-      0000C0C0C0000000000000000000C0C0C000FFFFFF0000000000808080008080
-      8000C0C0C0000000000000000000000000000000000000000000000080000000
-      FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
-      FF000000800080808000808080000000000086868600CCCCCC00CCCCCC00CCCC
-      CC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCC
-      CC00CCCCCC00CCCCCC00CCCCCC000000000000000000000000004C4C4C00A470
-      5B00A4705B00A4705B004C4C4C0000000000000000004C4C4C00A4705B00A470
-      5B00A4705B004C4C4C0000000000000000000000000000000000000000000000
-      000000000000C0C0C000FFFFFF00FFFFFF00FFFFFF00C0C0C000000000000000
-      00008080800080808000000000000000000000000000000080000000FF000000
-      FF00FFFFFF000000FF000000FF000000FF000000FF000000FF00FFFFFF000000
-      FF000000FF0000008000808080000000000086868600FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CCCCCC000000000000000000000000004C4C4C00AF75
-      5B00AF755B00AF755B004C4C4C0000000000000000004C4C4C00AF755B00AF75
-      5B00AF755B004C4C4C000000000000000000000000000000000000000000C0C0
-      C000FFFFFF00FFFFFF00FFFFFF00FF000000FF000000FFFFFF00FFFFFF00C0C0
-      C0000000000080808000808080000000000000000000000080000000FF00FFFF
-      FF00FFFFFF00FFFFFF000000FF000000FF000000FF00FFFFFF00FFFFFF00FFFF
-      FF000000FF0000008000808080008080800086868600FFFFFF00FFFFFF009933
-      0000993300009933000099330000FFFFFF00FFFFFF0099330000993300009933
-      0000FFFFFF00FFFFFF00CCCCCC000000000000000000000000004C4C4C00BA7A
-      5B00BA7A5B00BA7A5B004C4C4C0000000000000000004C4C4C00BA7A5B00BA7A
-      5B00BA7A5B004C4C4C0000000000000000000000000080808000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF0080808000FF000000FFFFFF00FFFFFF00FFFF
-      FF00C0C0C0000000000080808000C0C0C000000080000000FF000000FF000000
-      FF00FFFFFF00FFFFFF00FFFFFF000000FF00FFFFFF00FFFFFF00FFFFFF000000
-      FF000000FF000000FF00000080008080800086868600FFFFFF00FF0000009933
-      0000FFFFFF00FF00000099330000FFFFFF00FF00000099330000FFFFFF009933
-      000099330000FFFFFF00CCCCCC000000000000000000000000004C4C4C00BA7A
-      5B00BF7A5B00BA7A5B004C4C4C0000000000000000004C4C4C00BA7A5B00BF7A
-      5B00BA7A5B004C4C4C00000000000000000080808000C0C0C000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00C0C0C0000000000080808000000080000000FF000000FF000000
-      FF000000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FF000000
-      FF000000FF000000FF00000080008080800086868600FFFFFF00FF0000009933
-      0000FFFFFF00FF00000099330000FFFFFF00FF00000099330000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CCCCCC000000000000000000000000004C4C4C00BA7A
-      5B00BF7A5B00BA7A5B004C4C4C0000000000000000004C4C4C00BA7A5B00BF7A
-      5B00BA7A5B004C4C4C00000000000000000080808000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FF000000FF000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF000000000080808000000080000000FF000000FF000000
-      FF000000FF000000FF00FFFFFF00FFFFFF00FFFFFF000000FF000000FF000000
-      FF000000FF000000FF00000080008080800086868600FFFFFF00FFFFFF00FF00
-      0000FF000000FF00000099330000FFFFFF00FF00000099330000993300009933
-      000099330000FFFFFF00CCCCCC000000000000000000000000004C4C4C00BA7A
-      5B00BF7A5B00BA7A5B004C4C4C0000000000000000004C4C4C00BA7A5B00BF7A
-      5B00BA7A5B004C4C4C00000000000000000080808000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF0080808000FF000000FF000000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF000000000080808000000080000000FF000000FF000000
-      FF000000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FF000000
-      FF000000FF000000FF00000080008080800086868600FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FF00000099330000FFFFFF00FF00000099330000FFFFFF00FF00
-      000099330000FFFFFF00CCCCCC000000000000000000000000004C4C4C00BA7A
-      5B00BF7A5B00BA7A5B004C4C4C0000000000000000004C4C4C00BA7A5B00BF7A
-      5B00BA7A5B004C4C4C00000000000000000080808000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0080808000FF00000080808000FFFF
-      FF00FFFFFF00FFFFFF000000000080808000000080000000FF000000FF000000
-      FF00FFFFFF00FFFFFF00FFFFFF000000FF00FFFFFF00FFFFFF00FFFFFF000000
-      FF000000FF000000FF00000080000000000086868600FFFFFF00FFFFFF00FF00
-      0000FF000000FF000000FFFFFF00FFFFFF00FFFFFF00FF000000FF000000FF00
-      0000FFFFFF00FFFFFF00CCCCCC000000000000000000000000004C4C4C00BF7F
-      6000BF7F6000BF7F60004C4C4C0000000000000000004C4C4C00BF7F6000BF7F
-      6000BF7F60004C4C4C00000000000000000080808000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FF000000FF000000FFFFFF00FFFFFF00FF000000FF000000FFFF
-      FF00FFFFFF00C0C0C000000000000000000000000000000080000000FF00FFFF
-      FF00FFFFFF00FFFFFF000000FF000000FF000000FF00FFFFFF00FFFFFF00FFFF
-      FF000000FF0000008000808080000000000086868600FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00CCCCCC000000000000000000000000004C4C4C00C58A
-      6A00C58A7000C58A6A004C4C4C0000000000000000004C4C4C00C58A6A00C58A
-      7000C58A6A004C4C4C0000000000000000000000000080808000FFFFFF00FFFF
-      FF00FFFFFF0080808000FF000000FFFFFF00FFFFFF00FF000000FF000000FFFF
-      FF00FFFFFF0000000000808080000000000000000000000080000000FF000000
-      FF00FFFFFF000000FF000000FF000000FF000000FF000000FF00FFFFFF000000
-      FF000000FF000000800000000000000000008000000080000000800000008000
-      0000800000008000000080000000800000008000000080000000800000008000
-      00008000000080000000800000000000000000000000000000004C4C4C00CA94
-      7500CF9A7F00CA947A004C4C4C0000000000000000004C4C4C00CA947500CF9A
-      7F00CA947A004C4C4C0000000000000000000000000080808000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FF000000FF000000FF000000FF000000FFFFFF00FFFF
-      FF00C0C0C0000000000000000000000000000000000000000000000080000000
-      FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
-      FF0000008000000000000000000000000000FF000000FF993300FF663300FF66
-      3300FF663300FF663300FF663300FF663300FF663300FF663300FF663300FF66
-      3300FF663300FF663300FF6633000000000000000000000000004C4C4C00CF9F
-      8500CF9F8500CF9F85004C4C4C0000000000000000004C4C4C00CF9F8500CF9F
-      8500CF9F85004C4C4C0000000000000000000000000000000000808080008080
-      8000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      8000000080000000FF000000FF000000FF000000FF000000FF00000080000000
-      800000000000000000000000000000000000FF000000FF000000FF000000FF00
-      0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
-      0000FF000000FF000000FF0000000000000000000000000000004C4C4C00CF9F
-      8500CF9F8500CF9F85004C4C4C0000000000000000004C4C4C00CF9F8500CF9F
-      8500CF9F85004C4C4C0000000000000000000000000000000000000000000000
-      0000808080008080800080808000808080008080800080808000808080000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000800000008000000080000000800000008000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000000000004C4C4C004C4C
-      4C004C4C4C004C4C4C004C4C4C0000000000000000004C4C4C004C4C4C004C4C
-      4C004C4C4C004C4C4C0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000084848400CECECE00CECECE00CECECE00CECECE00CECE
-      CE00CECECE00CECECE0000000000000000000000000000000000000000000000
-      0000000000000000000084848400CECECE00CECECE00CECECE00CECECE00CECE
-      CE00CECECE00CECECE0000000000000000000000000000000000000000000000
-      0000000000008000000080000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000CC330000CC330000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000848484009CFFFF00FF000000FF000000FF000000FF00
-      0000FF000000CECECE0000000000000000000000000000000000000000000000
-      00000000000000000000848484009CFFFF00FF000000FF000000FF000000FF00
-      0000FF000000CECECE0000000000000000000000000000000000000000000000
-      0000800000008000000080000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000CC330000CC330000800000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000084848400FFFFFF009CFFFF00FFFFFF009CFFFF00FFFF
-      FF009CFFFF00CECECE0000000000000000000000000000000000000000000000
-      0000000000000000000084848400FFFFFF009CFFFF00FFFFFF009CFFFF00FFFF
-      FF009CFFFF00CECECE0000000000000000000000000000000000000000008000
-      0000800000008000000080000000000000008000000080000000800000000000
-      00008000000080000000000000000000000000000000CC330000CC3300000000
-      0000CC330000CC330000CC33000000000000CC330000CC330000CC3300008000
-      00000000000000000000000000000000000084848400CECECE00CECECE00CECE
-      CE00CECECE00CECECE00848484009CFFFF00FF000000FF000000FF000000FF00
-      0000FF000000CECECE00000000000000000000000000FFFFFF0000000000FFFF
-      FF0000000000FFFFFF00848484009CFFFF00FF000000FF000000FF000000FF00
-      0000FF000000CECECE0000000000000000000000000000000000800000009933
-      0000993300009933000099330000000000009933000099330000993300000000
-      00009933000099330000000000000000000000000000CC330000CC3300000000
-      0000CC330000CC330000CC33000000000000CC330000CC330000CC330000CC33
-      00008000000000000000000000000000000084848400FFFFFF009C3100009C31
-      00009C3100009C31000084848400FFFFFF009CFFFF00FFFFFF009CFFFF00FFFF
-      FF00CECECE00CECECE0000000000000000008484840000000000FFFFFF000000
-      0000FFFFFF000000000084848400FFFFFF009CFFFF00FFFFFF009CFFFF00FFFF
-      FF00CECECE00CECECE0000000000000000000000000080000000993300009933
-      0000993300009933000099330000000000009933000099330000993300000000
-      0000993300009933000000000000000000000000000099330000993300000000
-      0000993300009933000099330000000000009933000099330000993300009933
-      000099330000800000000000000000000000848484009CFFFF00FFFFFF009CFF
-      FF00FFFFFF009CFFFF0084848400FFFFFF00FF633100FF633100FFFFFF000000
-      00000000000000000000000000000000000000000000FFFFFF0000000000FFFF
-      FF0000000000FFFFFF0084848400FFFFFF00FF633100FF633100FFFFFF000000
-      000000000000000000000000000000000000000000000000000080000000CC33
-      0000CC330000CC330000CC33000000000000CC330000CC330000CC3300000000
-      0000CC330000CC33000000000000000000000000000099330000993300000000
-      0000993300009933000099330000000000009933000099330000993300009933
-      00008000000000000000000000000000000084848400FFFFFF009C3100009C31
-      00009C3100009C31000084848400FFFFFF00FFFFFF00FFFFFF009CFFFF008484
-      8400FFFFFF000000000000000000000000008484840000000000FFFFFF000000
-      0000FFFFFF000000000084848400FFFFFF00FFFFFF00FFFFFF009CFFFF008484
-      8400FFFFFF000000000000000000000000000000000000000000000000008000
-      0000CC330000CC330000CC33000000000000CC330000CC330000CC3300000000
-      0000CC330000CC33000000000000000000000000000080000000800000000000
-      0000800000008000000080000000000000008000000080000000800000008000
-      000000000000000000000000000000000000848484009CFFFF00FFFFFF009CFF
-      FF00FFFFFF009CFFFF0084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF008484
-      84000000000000000000000000000000000000000000FFFFFF0000000000FFFF
-      FF0000000000FFFFFF0084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF008484
-      8400000000000000000000000000000000000000000000000000000000000000
-      000080000000CC330000CC330000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008000000080000000800000000000
-      00000000000000000000000000000000000084848400FFFFFF009C3100009C31
-      0000FFFFFF000000000084848400848484008484840084848400848484008484
-      8400000000000000000000000000000000008484840000000000FFFFFF000000
-      0000FFFFFF000000000084848400848484008484840084848400848484008484
-      8400000000000000000000000000000000000000000000000000000000000000
-      000000000000CC330000CC330000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008000000080000000000000000000
-      00000000000000000000000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF009CFFFF0084848400FFFFFF00000000000000000000000000000000000000
-      00009C31000000000000000000000000000000000000FFFFFF0000000000FFFF
-      FF00000000008484840000000000000000000000000000000000000000000000
-      00009C3100000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF008484840000000000000000000000000000000000000000009C31
-      00009C3100009C31000000000000000000008484840000000000FFFFFF000000
-      0000FFFFFF000000000000000000000000000000000000000000000000009C31
-      00009C3100009C31000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008484840084848400848484008484
-      84008484840084848400000000000000000000000000000000009C3100009C31
-      00009C3100009C3100009C310000000000000000000084848400000000008484
-      84000000000084848400000000000000000000000000000000009C3100009C31
-      00009C3100009C3100009C310000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000009C3100000000000000000000000000000000
-      00009C3100000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000009C3100000000000000000000000000000000
-      00009C3100000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000009C3100009C3100009C3100009C31
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000009C3100009C3100009C3100009C31
-      000000000000000000000000000000000000424D3E000000000000003E000000
-      2800000040000000300000000100010000000000800100000000000000000000
-      000000000000000000000000FFFFFF0000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000FF9FFC1FFFFFFFFFFF1FF007FFFFC183
-      FE1FE0030000C183F007C0010000C183E00380010000C183C00180000000C183
-      800000000000C183000000000000C183000000000000C183000000000000C183
-      000000010000C183000180010000C183800180030000C1838003C0070000C183
-      C007E00F0000C183F01FF83FFFFFC183FFFFFFFFFFFFFFFFFFFFFFFFFC01FC01
-      FFFFFFFFFC01FC01F9FFFF3FFC01FC01F1FFFF1F00015401E113910F0001A801
-      C113910700015401811391030001A801C113910700035403E113910F0007A807
-      F1FFFF1F000F500FF9FFFF3F00F7AAF7FFFFFFFF01E355E3FFFFFFFF03C1ABC1
-      FFFFFFFFFEF7FEF7FFFFFFFFFF0FFF0F00000000000000000000000000000000
-      000000000000}
-  end
-  object LogImages: TImageList
-    Left = 32
-    Top = 144
-    Bitmap = {
-      494C010105000900200010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
-      0000000000003600000028000000400000002000000001002000000000000020
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000084848400848484008484840084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000848484000000000000000000000000000000000084848400000000008484
-      8400000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008484840000000000000000000000000000000000848484000000
-      0000848484000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008484840000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000FFFFFF0084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008484840084848400000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000FFFFFF0000000000000000000000
-      00000000000000000000C6C6C600C6C6C600C6C6C60000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000FFFFFF0000000000000000000000
-      00000000000000000000C6C6C600C6C6C600C6C6C60000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000FFFFFF0000000000000000000000
-      00000000000000000000C6C6C600C6C6C600C6C6C60000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008484840000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000000000000FFFF
-      FF0000000000FFFFFF0000000000000000000000000000000000FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000FFFFFF00FFFFFF00FFFFFF0084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008484840084848400848484008484
-      8400848484008484840084848400848484008484840084848400FFFFFF000000
-      00008484840000000000FFFFFF00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008484840084848400848484008484
-      840084848400848484008484840084848400848484008484840084848400FFFF
-      FF0084848400FFFFFF0084848400848484000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000008400FFFFFF00000000000000000000000000000000000000
-      0000000000000000000084000000840000008400000084000000840000008400
-      000084000000840000008400000000000000000000000000000000000000BD00
-      00000000000000000000BD0000000000000000000000BD000000000000000000
-      0000BD0000000000000000000000000000008400000084000000840000008400
-      00000000000000000000848484008484840084848400FFFFFF00FFFFFF00FFFF
-      FF00840000008400000084000000840000000000000000000000000000000000
-      8400FFFFFF000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00840000000000000000000000BD000000000000000000
-      0000BD0000000000000000000000BD0000000000000000000000BD0000000000
-      000000000000BD00000000000000000000000000000000000000000000008400
-      0000FF00000084000000000000000000000084848400FFFFFF00FFFFFF00FFFF
-      FF00840000000000000000000000000000000000000000000000000084000000
-      840000008400FFFFFF0000000000000000000000000000000000000000000000
-      000000008400FFFFFF0000000000000000000000000000000000000000000000
-      0000000000000000000084000000FFFFFF000000000000000000000000000000
-      000000000000FFFFFF0084000000000000000000000000000000BD0000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000BD000000000000000000000000000000000000008400
-      000084000000FF0000008400000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00840000000000000000000000000000000000000000000000000084000000
-      840000008400FFFFFF0000000000000000000000000000000000000000000000
-      8400FFFFFF000000000000000000000000000000000000000000000000000000
-      0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF008400000000000000000000000000000000000000BD00
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000BD0000000000000000000000000000000000000000000000000000008400
-      0000FF00000084000000FF00000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00840000000000000000000000000000000000000000000000000000000000
-      84000000840000008400FFFFFF00000000000000000000000000000084000000
-      8400FFFFFF0000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0084000000FFFFFF000000000000000000000000000000
-      000000000000FFFFFF00840000000000000000000000BD000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000BD00000000000000000000000000000000000000000000008400
-      000084000000FF0000008400000000000000FFFFFF00FFFF0000FFFFFF00FFFF
-      0000840000000000000000000000000000000000000000000000000000000000
-      0000000084000000840000008400FFFFFF00000000000000840000008400FFFF
-      FF000000000000000000000000000000000000000000FFFFFF00000000000000
-      0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0084000000000000000000000000000000BD0000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000BD000000000000000000000000000000000000008400
-      0000FF00000084000000FF00000000000000FFFF0000FFFFFF00FFFF0000FFFF
-      FF00840000000000000000000000000000000000000000000000000000000000
-      0000000000000000840000008400000084000000840000008400FFFFFF000000
-      00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0084000000FFFFFF000000000000000000FFFFFF008400
-      000084000000840000008400000000000000000000000000000000000000BD00
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000BD0000000000000000000000000000000000000000000000000000008400
-      000084000000FF0000008400000000000000FFFFFF00FFFF0000FFFFFF00FFFF
-      0000840000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000084000000840000008400FFFFFF00000000000000
-      00000000000000000000000000000000000000000000FFFFFF00000000000000
-      0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF008400
-      0000FFFFFF0084000000000000000000000000000000BD000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000BD00000000000000000000000000000000000000000000008400
-      0000FF00000084000000FF00000000000000FFFF0000FFFFFF00FFFF0000FFFF
-      FF00840000000000000000000000000000000000000000000000000000000000
-      0000000000000000840000008400000084000000840000008400FFFFFF000000
-      00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF008400
-      0000840000000000000000000000000000000000000000000000BD0000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000BD000000000000000000000000000000000000008400
-      0000840000008400000084000000840000008400000084000000840000008400
-      0000840000000000000000000000000000000000000000000000000000000000
-      0000000084000000840000008400FFFFFF000000000000008400FFFFFF000000
-      00000000000000000000000000000000000000000000FFFFFF00000000000000
-      0000FFFFFF000000000084000000840000008400000084000000840000008400
-      000000000000000000000000000000000000000000000000000000000000BD00
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000BD0000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000084000000
-      84000000840000008400FFFFFF00000000000000000000000000000084000000
-      8400FFFFFF0000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF0000000000FFFFFF00000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000BD000000000000000000
-      0000BD0000000000000000000000000000000000000000000000000000000000
-      000000000000BD00000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000008400000084000000
-      840000008400FFFFFF0000000000000000000000000000000000000000000000
-      840000008400FFFFFF00000000000000000000000000FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000BD0000000000
-      000000000000BD0000000000000000000000BD0000000000000000000000BD00
-      00000000000000000000BD000000000000000000000000000000000000000000
-      0000000000000000000000840000008400000084000000840000000000000000
-      000000000000000000000000000000000000000000000000840000008400FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
-      00000000840000008400FFFFFF00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000000000000BD00
-      00000000000000000000BD0000000000000000000000BD000000000000000000
-      0000BD0000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000424D3E000000000000003E000000
-      2800000040000000200000000100010000000000000100000000000000000000
-      000000000000000000000000FFFFFF00FFFF000000000000FC3F000000000000
-      F42F000000000000E007000000000000C003000000000000C007000000000000
-      0001000000000000000100000000000000010000000000000001000000000000
-      C007000000000000C003000000000000C007000000000000E00F000000000000
-      FC3F000000000000FC3F000000000000FFFFFFFFFFFFFFFF0015FFFFFFFFFFFF
-      0000FFF9FC01EDB70000E7FFFC01B6DBE007C3F3FC01DFFDE007C3E70001EC17
-      E007E1C70001B99BE007F08F0001D99DE007F81F0001EC97E007FC3F0003BE1B
-      E007F81F0007DB9DE007F09F000FEC37FFFFC1C700FFB7FBF81F83E301FFDB6D
-      F81F8FF103FFEDB7F81FFFFFFFFFFFFF00000000000000000000000000000000
-      000000000000}
-  end
-  object ArrowImages: TImageList
-    Left = 32
-    Top = 208
-    Bitmap = {
-      494C010102000400200010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
-      0000000000003600000028000000400000001000000001002000000000000010
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000084848400FFFFFF0000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000084848400000000000000000000000000000000000000000000000000FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000848484000000000000000000FFFFFF00000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008484840000000000000000000000000000000000FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000848484000000000000000000FFFFFF00000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008484840000000000000000000000000000000000FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008484840000000000000000000000000000000000FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000848484000000000000000000FFFFFF00000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008484840000000000000000000000000000000000FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000848484000000000000000000FFFFFF00000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000084848400000000000000000000000000000000000000000000000000FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000084848400FFFFFF0000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000084848400848484008484840084848400848484008484840084848400FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000424D3E000000000000003E000000
-      2800000040000000100000000100010000000000800000000000000000000000
-      000000000000000000000000FFFFFF00FFFFFFFF00000000FFFFFFFF00000000
-      FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000F00FFE7F00000000
-      F7EFFDBF00000000FBDFFDBF00000000FBDFFBDF00000000FDBFFBDF00000000
-      FDBFF7EF00000000FE7FF00F00000000FFFFFFFF00000000FFFFFFFF00000000
-      FFFFFFFF00000000FFFFFFFF0000000000000000000000000000000000000000
-      000000000000}
-  end
-end

+ 0 - 165
forms/ImportSessions.cpp

@@ -1,165 +0,0 @@
-//---------------------------------------------------------------------
-#include <vcl.h>
-#pragma hdrstop
-
-#include <Common.h>
-
-#include "ImportSessions.h"
-
-#include <Configuration.h>
-#include <CoreMain.h>
-
-#include <VCLCommon.h>
-#include <WinInterface.h>
-//---------------------------------------------------------------------
-#ifndef NO_RESOURCES
-#pragma resource "*.dfm"
-#endif
-//---------------------------------------------------------------------
-Boolean __fastcall DoImportSessionsDialog(TStoredSessionList *SessionList)
-{
-  Boolean Result;
-  TImportSessionsDialog *ImportSessionsDialog;
-  TStoredSessionList *ImportSessionList;
-  try {
-    ImportSessionsDialog = new TImportSessionsDialog(Application);
-    ImportSessionList = new TStoredSessionList(true);
-    ImportSessionList->DefaultSettings = SessionList->DefaultSettings;
-
-    TRegistryStorage * Storage = new TRegistryStorage(Configuration->PuttySessionsKey);
-    try
-    {
-      Storage->ForceAnsi = true;
-      if (Storage->OpenRootKey(false))
-      {
-        ImportSessionList->Load(Storage, false, true);
-      }
-    }
-    __finally
-    {
-      delete Storage;
-    }
-
-    TSessionData * PuttySession =
-      (TSessionData *)ImportSessionList->FindByName(GUIConfiguration->PuttySession);
-    if (PuttySession != NULL)
-    {
-      ImportSessionList->Remove(PuttySession);
-    }
-    ImportSessionList->SelectSessionsToImport(SessionList, True);
-    ImportSessionsDialog->SessionList = ImportSessionList;
-
-    Result = (ImportSessionsDialog->ShowModal() == mrOk);
-    if (Result)
-    {
-      SessionList->Import(ImportSessionsDialog->SessionList, True);
-      if (ImportSessionsDialog->ImportKeys)
-      {
-        TStoredSessionList::ImportHostKeys(
-          Configuration->RegistryStorageKey + L"\\" + Configuration->SshHostKeysSubKey,
-          Configuration->PuttyRegistryStorageKey + L"\\" + Configuration->SshHostKeysSubKey,
-          ImportSessionsDialog->SessionList, true);
-      }
-    }
-  } __finally {
-    delete ImportSessionsDialog;
-    delete ImportSessionList;
-  }
-  return Result;
-}
-//---------------------------------------------------------------------
-__fastcall TImportSessionsDialog::TImportSessionsDialog(TComponent* AOwner)
-  : TForm(AOwner)
-{
-  UseSystemSettings(this);
-}
-//---------------------------------------------------------------------
-void __fastcall TImportSessionsDialog::UpdateControls()
-{
-  bool AnyChecked = ListViewAnyChecked(SessionListView);
-  EnableControl(OKButton, AnyChecked);
-  EnableControl(ImportKeysCheck, AnyChecked);
-  EnableControl(CheckAllButton, SessionListView->Items->Count > 0);
-  AdjustListColumnsWidth(SessionListView);
-}
-//---------------------------------------------------------------------
-void __fastcall TImportSessionsDialog::SetSessionList(TStoredSessionList *value)
-{
-  if (FSessionList != value)
-  {
-    FSessionList = value;
-    LoadSessions();
-  }
-}
-//---------------------------------------------------------------------
-void __fastcall TImportSessionsDialog::LoadSessions()
-{
-  SessionListView->Items->BeginUpdate();
-  try {
-    SessionListView->Items->Clear();
-    if (FSessionList)
-      for (int Index = 0; Index < FSessionList->Count; Index++)
-      {
-        TListItem *Item;
-        TSessionData *Session =
-          (TSessionData*)FSessionList->AtObject(Index);
-        Item = SessionListView->Items->Add();
-        Item->Data = Session;
-        Item->Caption = Session->Name;
-        Item->SubItems->Add(Session->ProtocolStr);
-        Item->Checked = Session->Selected;
-      }
-  } __finally {
-    SessionListView->Items->EndUpdate();
-  }
-  UpdateControls();
-}
-//---------------------------------------------------------------------------
-void __fastcall TImportSessionsDialog::FormClose(TObject * /*Sender*/,
-      TCloseAction & /*Action*/)
-{
-  for (Integer Index = 0; Index < SessionListView->Items->Count; Index++)
-    ((TSessionData*)SessionListView->Items->Item[Index]->Data)->Selected =
-      SessionListView->Items->Item[Index]->Checked;
-}
-//---------------------------------------------------------------------------
-void __fastcall TImportSessionsDialog::SessionListViewInfoTip(
-      TObject * /*Sender*/, TListItem * Item, UnicodeString & InfoTip)
-{
-  InfoTip = ((TSessionData*)Item->Data)->InfoTip;
-}
-//---------------------------------------------------------------------------
-void __fastcall TImportSessionsDialog::SessionListViewMouseDown(
-      TObject * /*Sender*/, TMouseButton /*Button*/, TShiftState /*Shift*/,
-      int /*X*/, int /*Y*/)
-{
-  UpdateControls();
-}
-//---------------------------------------------------------------------------
-void __fastcall TImportSessionsDialog::SessionListViewKeyUp(
-      TObject * /*Sender*/, WORD & /*Key*/, TShiftState /*Shift*/)
-{
-  UpdateControls();
-}
-//---------------------------------------------------------------------------
-void __fastcall TImportSessionsDialog::FormShow(TObject * /*Sender*/)
-{
-  UpdateControls();
-}
-//---------------------------------------------------------------------------
-void __fastcall TImportSessionsDialog::CheckAllButtonClick(TObject * /*Sender*/)
-{
-  ListViewCheckAll(SessionListView, caToggle);
-  UpdateControls();
-}
-//---------------------------------------------------------------------------
-bool __fastcall TImportSessionsDialog::GetImportKeys()
-{
-  return ImportKeysCheck->Checked;
-}
-//---------------------------------------------------------------------------
-void __fastcall TImportSessionsDialog::HelpButtonClick(TObject * /*Sender*/)
-{
-  FormHelp(this);
-}
-//---------------------------------------------------------------------------

+ 0 - 493
forms/LocationProfiles.dfm

@@ -1,493 +0,0 @@
-object LocationProfilesDialog: TLocationProfilesDialog
-  Left = 343
-  Top = 147
-  HelpType = htKeyword
-  HelpKeyword = 'ui_locationprofile'
-  BorderIcons = [biSystemMenu, biMinimize, biMaximize, biHelp]
-  BorderStyle = bsDialog
-  Caption = 'Location profiles'
-  ClientHeight = 435
-  ClientWidth = 557
-  Color = clBtnFace
-  ParentFont = True
-  OldCreateOrder = True
-  Position = poOwnerFormCenter
-  OnShow = FormShow
-  DesignSize = (
-    557
-    435)
-  PixelsPerInch = 96
-  TextHeight = 13
-  object LocalDirectoryLabel: TLabel
-    Left = 8
-    Top = 8
-    Width = 74
-    Height = 13
-    Caption = '&Local directory:'
-    FocusControl = LocalDirectoryEdit
-  end
-  object RemoteDirectoryLabel: TLabel
-    Left = 8
-    Top = 56
-    Width = 87
-    Height = 13
-    Caption = '&Remote directory:'
-    FocusControl = RemoteDirectoryEdit
-  end
-  object OKBtn: TButton
-    Left = 303
-    Top = 401
-    Width = 75
-    Height = 25
-    Anchors = [akRight, akBottom]
-    Caption = 'OK'
-    Default = True
-    ModalResult = 1
-    TabOrder = 5
-  end
-  object CancelBtn: TButton
-    Left = 387
-    Top = 401
-    Width = 75
-    Height = 25
-    Anchors = [akRight, akBottom]
-    Cancel = True
-    Caption = 'Cancel'
-    ModalResult = 2
-    TabOrder = 6
-  end
-  object PageControl: TPageControl
-    Left = 8
-    Top = 104
-    Width = 539
-    Height = 288
-    ActivePage = SessionProfilesSheet
-    Anchors = [akLeft, akTop, akRight, akBottom]
-    TabOrder = 3
-    object SessionProfilesSheet: TTabSheet
-      Tag = 1
-      Caption = 'Session Location profiles'
-      DesignSize = (
-        531
-        260)
-      object SessionProfilesView: TTreeView
-        Tag = 1
-        Left = 10
-        Top = 9
-        Width = 421
-        Height = 240
-        Anchors = [akLeft, akTop, akRight, akBottom]
-        DragMode = dmAutomatic
-        HideSelection = False
-        Images = BookmarkImageList
-        Indent = 19
-        TabOrder = 0
-        OnChange = ProfilesViewChange
-        OnCollapsed = ProfilesViewCollapsed
-        OnDblClick = ProfilesViewDblClick
-        OnDragDrop = ProfilesViewDragDrop
-        OnDragOver = ProfilesViewDragOver
-        OnEdited = ProfilesViewEdited
-        OnEditing = ProfilesViewEditing
-        OnEndDrag = ProfilesViewEndDrag
-        OnExpanded = ProfilesViewExpanded
-        OnGetImageIndex = ProfilesViewGetImageIndex
-        OnGetSelectedIndex = ProfilesViewGetSelectedIndex
-        OnKeyDown = ProfilesViewKeyDown
-        OnStartDrag = ProfilesViewStartDrag
-        Items.NodeData = {
-          0305000000200000000100000000000000FFFFFFFFFFFFFFFF00000000000000
-          000100000001013100220000000000000000000000FFFFFFFFFFFFFFFF000000
-          000000000000000000010231003100200000000000000000000000FFFFFFFFFF
-          FFFFFF00000000000000000000000001013200200000000000000000000000FF
-          FFFFFFFFFFFFFF00000000000000000000000001013300200000000100000000
-          000000FFFFFFFFFFFFFFFF000000000000000001000000010134002200000000
-          00000000000000FFFFFFFFFFFFFFFF0000000000000000000000000102340031
-          00200000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000
-          0001013500}
-      end
-      object AddSessionBookmarkButton: TButton
-        Tag = 1
-        Left = 438
-        Top = 9
-        Width = 83
-        Height = 25
-        Anchors = [akTop, akRight]
-        Caption = '&Add ...'
-        TabOrder = 1
-        OnClick = AddBookmarkButtonClick
-      end
-      object RemoveSessionBookmarkButton: TButton
-        Tag = 1
-        Left = 438
-        Top = 41
-        Width = 83
-        Height = 25
-        Anchors = [akTop, akRight]
-        Caption = 'Remo&ve'
-        TabOrder = 2
-        OnClick = RemoveBookmarkButtonClick
-      end
-      object DownSessionBookmarkButton: TButton
-        Tag = 1
-        Left = 438
-        Top = 224
-        Width = 83
-        Height = 25
-        Anchors = [akRight, akBottom]
-        Caption = '&Down'
-        TabOrder = 6
-        OnClick = BookmarkButtonClick
-      end
-      object UpSessionBookmarkButton: TButton
-        Tag = -1
-        Left = 438
-        Top = 192
-        Width = 83
-        Height = 25
-        Anchors = [akRight, akBottom]
-        Caption = '&Up'
-        TabOrder = 5
-        OnClick = BookmarkButtonClick
-      end
-      object RenameSessionBookmarkButton: TButton
-        Tag = 1
-        Left = 438
-        Top = 73
-        Width = 83
-        Height = 25
-        Anchors = [akTop, akRight]
-        Caption = 'Re&name'
-        TabOrder = 3
-        OnClick = RenameBookmarkButtonClick
-      end
-      object SessionBookmarkMoveToButton: TButton
-        Tag = 1
-        Left = 438
-        Top = 105
-        Width = 83
-        Height = 25
-        Anchors = [akTop, akRight]
-        Caption = '&Move to ...'
-        TabOrder = 4
-        OnClick = BookmarkMoveToButtonClick
-      end
-    end
-    object SharedProfilesSheet: TTabSheet
-      Tag = 2
-      Caption = 'Shared Location profiles'
-      ImageIndex = 1
-      DesignSize = (
-        531
-        260)
-      object SharedProfilesView: TTreeView
-        Tag = 2
-        Left = 10
-        Top = 9
-        Width = 421
-        Height = 240
-        Anchors = [akLeft, akTop, akRight, akBottom]
-        DragMode = dmAutomatic
-        HideSelection = False
-        Images = BookmarkImageList
-        Indent = 19
-        TabOrder = 0
-        OnChange = ProfilesViewChange
-        OnCollapsed = ProfilesViewCollapsed
-        OnDblClick = ProfilesViewDblClick
-        OnDragDrop = ProfilesViewDragDrop
-        OnDragOver = ProfilesViewDragOver
-        OnEdited = ProfilesViewEdited
-        OnEditing = ProfilesViewEditing
-        OnEndDrag = ProfilesViewEndDrag
-        OnExpanded = ProfilesViewExpanded
-        OnGetImageIndex = ProfilesViewGetImageIndex
-        OnGetSelectedIndex = ProfilesViewGetSelectedIndex
-        OnKeyDown = ProfilesViewKeyDown
-        OnStartDrag = ProfilesViewStartDrag
-        Items.NodeData = {
-          0305000000200000000100000000000000FFFFFFFFFFFFFFFF00000000000000
-          000100000001013100220000000000000000000000FFFFFFFFFFFFFFFF000000
-          000000000000000000010231003100200000000000000000000000FFFFFFFFFF
-          FFFFFF00000000000000000000000001013200200000000000000000000000FF
-          FFFFFFFFFFFFFF00000000000000000000000001013300200000000100000000
-          000000FFFFFFFFFFFFFFFF000000000000000001000000010134002200000000
-          00000000000000FFFFFFFFFFFFFFFF0000000000000000000000000102340031
-          00200000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000
-          0001013500}
-      end
-      object AddSharedBookmarkButton: TButton
-        Tag = 2
-        Left = 438
-        Top = 9
-        Width = 83
-        Height = 25
-        Anchors = [akTop, akRight]
-        Caption = '&Add ...'
-        TabOrder = 1
-        OnClick = AddBookmarkButtonClick
-      end
-      object RemoveSharedBookmarkButton: TButton
-        Tag = 2
-        Left = 438
-        Top = 41
-        Width = 83
-        Height = 25
-        Anchors = [akTop, akRight]
-        Caption = 'Remo&ve'
-        TabOrder = 2
-        OnClick = RemoveBookmarkButtonClick
-      end
-      object RenameSharedBookmarkButton: TButton
-        Tag = 2
-        Left = 438
-        Top = 73
-        Width = 83
-        Height = 25
-        Anchors = [akTop, akRight]
-        Caption = 'Re&name'
-        TabOrder = 3
-        OnClick = RenameBookmarkButtonClick
-      end
-      object SharedBookmarkMoveToButton: TButton
-        Tag = 2
-        Left = 438
-        Top = 105
-        Width = 83
-        Height = 25
-        Anchors = [akTop, akRight]
-        Caption = '&Move to ...'
-        TabOrder = 4
-        OnClick = BookmarkMoveToButtonClick
-      end
-      object UpSharedBookmarkButton: TButton
-        Tag = -2
-        Left = 438
-        Top = 192
-        Width = 83
-        Height = 25
-        Anchors = [akRight, akBottom]
-        Caption = '&Up'
-        TabOrder = 5
-        OnClick = BookmarkButtonClick
-      end
-      object DownSharedBookmarkButton: TButton
-        Tag = 2
-        Left = 438
-        Top = 224
-        Width = 83
-        Height = 25
-        Anchors = [akRight, akBottom]
-        Caption = '&Down'
-        TabOrder = 6
-        OnClick = BookmarkButtonClick
-      end
-      object ShortCutSharedBookmarkButton: TButton
-        Tag = 2
-        Left = 438
-        Top = 137
-        Width = 83
-        Height = 25
-        Anchors = [akTop, akRight]
-        Caption = '&Shortcut...'
-        TabOrder = 7
-        OnClick = ShortCutBookmarkButtonClick
-      end
-    end
-  end
-  object LocalDirectoryEdit: TIEComboBox
-    Left = 8
-    Top = 25
-    Width = 457
-    Height = 21
-    Anchors = [akLeft, akTop, akRight]
-    TabOrder = 0
-    Text = 'LocalDirectoryEdit'
-    OnChange = DirectoryEditChange
-  end
-  object RemoteDirectoryEdit: TIEComboBox
-    Left = 8
-    Top = 73
-    Width = 539
-    Height = 21
-    Anchors = [akLeft, akTop, akRight]
-    MaxLength = 1000
-    TabOrder = 2
-    Text = 'RemoteDirectoryEdit'
-    OnChange = DirectoryEditChange
-  end
-  object LocalDirectoryBrowseButton: TButton
-    Left = 470
-    Top = 23
-    Width = 75
-    Height = 25
-    Anchors = [akTop, akRight]
-    Caption = 'B&rowse...'
-    TabOrder = 1
-    OnClick = LocalDirectoryBrowseButtonClick
-  end
-  object SwitchButton: TButton
-    Left = 8
-    Top = 401
-    Width = 97
-    Height = 25
-    Anchors = [akRight, akBottom]
-    Caption = '&Bookmarks...'
-    ModalResult = 2
-    TabOrder = 4
-    OnClick = SwitchButtonClick
-  end
-  object HelpButton: TButton
-    Left = 471
-    Top = 401
-    Width = 75
-    Height = 25
-    Anchors = [akRight, akBottom]
-    Caption = '&Help'
-    TabOrder = 7
-    OnClick = HelpButtonClick
-  end
-  object BookmarkImageList: TImageList
-    Left = 232
-    Top = 400
-    Bitmap = {
-      494C010103000400100010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
-      0000000000003600000028000000400000001000000001002000000000000010
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000001821
-      2100182121001821210018212100182121001821210018212100182121001821
-      2100182121001821210018212100182121000000000004040400040404000404
-      0400040404000404040004040400040404000404040004040400040404000404
-      0400040404000404040004040400040404000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000066660099FFFF0000CC
-      FF0000CCFF0000CCFF0000CCFF000099CC0000CCFF000099CC0000CCFF000099
-      CC000099CC00669999000099CC00000000000000000000000000006666000066
-      6600006666000066660000666600006666000066660000666600006666000066
-      660000666600006666001821210018212100000000000066660099FFFF0000CC
-      FF0000CCFF000099CC0000CCFF000099CC0000CCFF000099CC000099CC000099
-      CC00669999000099CC0066999900040404000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000066660099FFFF0000CC
-      FF0000CCFF0000CCFF0000CCFF0000CCFF00FF00000000CCFF000099CC0000CC
-      FF000099CC000099CC00669999000000000000000000000000000066660099FF
-      FF000099CC0000CCFF000099CC0000CCFF000099CC000099CC000099CC006699
-      99000099CC00006666001821210018212100000000000066660099FFFF0000CC
-      FF0000CCFF0000CCFF000099CC0000CCFF000099CC0000CCFF000099CC000099
-      CC000099CC00669999000099CC00040404000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000066660099FFFF0099FF
-      FF0000CCFF0000CCFF00FF00000000CCFF00FF00000000CCFF00FF0000000099
-      CC0000CCFF000099CC000099CC0000000000000000000066660099FFFF0000CC
-      FF0000CCFF000099CC0000CCFF000099CC0000CCFF000099CC000099CC000099
-      CC0066999900182121000066660018212100000000000066660099FFFF00FFFF
-      FF0000CCFF0000CCFF0000CCFF000099CC0000CCFF000099CC0000CCFF000099
-      CC000099CC000099CC0066999900040404000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000066660099FFFF0000CC
-      FF0099FFFF0000CCFF0000CCFF00FF000000FF000000FF00000000CCFF0000CC
-      FF000099CC0000CCFF000099CC0000000000000000000066660099FFFF00FFFF
-      FF0000CCFF0000CCFF0000CCFF0000CCFF000099CC0000CCFF000099CC000099
-      CC000099CC00182121000066660018212100000000000066660099FFFF0000CC
-      FF00FFFFFF0000CCFF0000CCFF0000CCFF0000CCFF0000CCFF000099CC0000CC
-      FF000099CC000099CC000099CC00040404000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000066660099FFFF00F8F8
-      F80000CCFF00FF000000FF000000FF00000000FFFF00FF000000FF000000FF00
-      000000CCFF000099CC000099CC00000000000066660099FFFF00FFFFFF0000CC
-      FF00FFFFFF0000CCFF000099CC0000CCFF0000CCFF000099CC0000CCFF000099
-      CC001821210000CCFF0000CCFF0018212100000000000066660099FFFF00FFFF
-      FF0000CCFF00FFFFFF0000CCFF0000CCFF0000CCFF0000CCFF0000CCFF000099
-      CC0000CCFF000099CC000099CC00040404000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000066660099FFFF0000CC
-      FF00F8F8F80000CCFF0000CCFF00FF000000FF000000FF00000000CCFF0000CC
-      FF000099CC0000CCFF000099CC00000000000066660099FFFF0000CCFF00FFFF
-      FF0000CCFF00FFFFFF0000CCFF0000CCFF000099CC0000CCFF000099CC0000CC
-      FF001821210000CCFF0000CCFF0018212100000000000066660099FFFF0000CC
-      FF00FFFFFF0000CCFF00FFFFFF0000CCFF00FFFFFF0000CCFF0000CCFF0000CC
-      FF0000CCFF0000CCFF000099CC00040404000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000066660099FFFF00F8F8
-      F80000CCFF00F8F8F800FF00000000CCFF00FF00000000CCFF00FF00000000CC
-      FF0000CCFF000099CC000099CC00000000000066660000666600006666000066
-      6600006666000066660000666600006666000066660000666600006666000066
-      660000CCFF0000CCFF0000CCFF0018212100000000000066660099FFFF00FFFF
-      FF0000CCFF00FFFFFF0000CCFF00FFFFFF0000CCFF00FFFFFF0000CCFF0000CC
-      FF0000CCFF000099CC0000CCFF00040404000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000066660099FFFF0000CC
-      FF00F8F8F80000CCFF00F8F8F80000CCFF00FF00000000CCFF0000CCFF0000CC
-      FF0000CCFF0000CCFF000099CC0000000000000000000066660099FFFF0000CC
-      FF00FFFFFF0000CCFF0000CCFF0000CCFF0000CCFF0000CCFF0000CCFF0000CC
-      FF0000CCFF0000CCFF0000CCFF0018212100000000000066660099FFFF0000CC
-      FF00FFFFFF0000CCFF00FFFFFF0000CCFF00FFFFFF0000CCFF00FFFFFF0000CC
-      FF0000CCFF0000CCFF000099CC00040404000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000066660099FFFF0099FF
-      FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF
-      FF0099FFFF0099FFFF0099FFFF0000000000000000000066660099FFFF00FFFF
-      FF0000CCFF00FFFFFF0000CCFF0000CCFF0000CCFF0000CCFF0099FFFF0099FF
-      FF0099FFFF0099FFFF0099FFFF0018212100000000000066660099FFFF0099FF
-      FF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FFFF0099FF
-      FF0099FFFF0099FFFF0099FFFF00040404000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000666600006666000066
-      6600006666000066660000666600006666000066660000666600006666000066
-      660000666600006666000066660000000000000000000066660099FFFF0000CC
-      FF00FFFFFF0000CCFF00FFFFFF0000CCFF0099FFFF0000666600006666000066
-      6600006666000066660000666600000000000000000000666600006666000066
-      6600006666000066660000666600006666000066660000666600006666000066
-      6600006666000066660000666600040404000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000000000000066660099FF
-      FF0099FFFF0099FFFF0099FFFF0099FFFF000000000000000000000000000000
-      00000000000000000000000000000000000000000000000000000066660099FF
-      FF0099FFFF0099FFFF0099FFFF0099FFFF000066660000000000000000000000
-      00000000000000000000000000000000000000000000000000000066660099FF
-      FF0099FFFF0099CCCC0099CCCC00009999000404040000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000066
-      6600006666000066660000666600006666000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000066
-      6600006666000066660000666600006666000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000066
-      6600006666000066660000666600006666000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000424D3E000000000000003E000000
-      2800000040000000100000000100010000000000800000000000000000000000
-      000000000000000000000000FFFFFF00FFFFFFFFFFFF0000FFFFFFFFFFFF0000
-      8000E000800000008000C000800000008000C000800000008000800080000000
-      8000800080000000800000008000000080000000800000008000000080000000
-      800080008000000080008000800000008000800180000000C07FC07FC07F0000
-      E0FFE0FFE0FF0000FFFFFFFFFFFF000000000000000000000000000000000000
-      000000000000}
-  end
-end

+ 0 - 108
forms/Log.dfm

@@ -1,108 +0,0 @@
-object LogForm: TLogForm
-  Left = 356
-  Top = 178
-  HelpType = htKeyword
-  HelpKeyword = 'ui_log'
-  BorderIcons = [biSystemMenu, biMinimize, biMaximize, biHelp]
-  Caption = 'Log'
-  ClientHeight = 303
-  ClientWidth = 451
-  Color = clBtnFace
-  Constraints.MinHeight = 170
-  Constraints.MinWidth = 250
-  Font.Charset = DEFAULT_CHARSET
-  Font.Color = clWindowText
-  Font.Height = -11
-  Font.Name = 'MS Sans Serif'
-  Font.Style = []
-  Icon.Data = {
-    000001000200101010000000000028010000260000002020100000000000E802
-    00004E0100002800000010000000200000000100040000000000C00000000000
-    0000000000000000000000000000000000000000800000800000008080008000
-    0000800080008080000080808000C0C0C0000000FF0000FF000000FFFF00FF00
-    0000FF00FF00FFFF0000FFFFFF00000000000000000000033333333330000008
-    FFFFFFFFF8000007FFFFF9FFF800000F8FFFF78FF8000008FFF8F07FF8000007
-    F8FF7798F800000F8F88101FF8000008FFB8FFF8F8000007F8888878F800000F
-    8FB8FFC8F8000008FFB88FC8F8000007F8B8F878F800000FFFFFFFCFF8000008
-    FFFFFFFFF8000000000000000000FFFF0000C001000080010000800100008001
-    0000800100008001000080010000800100008001000080010000800100008001
-    000080010000C0010000C0030000280000002000000040000000010004000000
-    0000800200000000000000000000000000000000000000000000000080000080
-    00000080800080000000800080008080000080808000C0C0C0000000FF0000FF
-    000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000
-    0000000000000000000000000000000000000000000000000333333333333333
-    3333333000000000000FFFFFFFFFFFFFFFFFFFF30000000000FFF8FFFFFFFFF8
-    8FFFFFF300000000006FFEFFFFFFFF118FFFFFF300000000000F888888888811
-    88888FF30000000000FFFEFFFFFFFFF88FFFFFF300000000006F888888888811
-    78888FF300000000000FFEFFFFFFFF118FFFFFF30000000000FF888888888811
-    17888FF300000000006FFEFFFFFFFFF1118FFFF300000000000F888888881178
-    11788FF30000000000FFFEFFFFFF1111118FFFF300000000006F888883388111
-    18888FF300000000000FFEFFBB3FFFFFFFFFFFF30000000000FF8888BB888888
-    88888FF300000000006FFEFFFFFFFFFF8888FFF300000000000F88888338888C
-    CCC78FF30000000000FFFEFFBB3FFFFFCC8FFFF300000000006F8888BB388888
-    CC788FF300000000000FFEFFBB3FFFFFCC8FFFF30000000000FF8888BB388888
-    CC788FF300000000006FFEFFBB3FFFFCCC8FFFF300000000000F8888BB888888
-    87788FF30000000000FFFEFFFFFFFFFFCC8FFFF300000000006FFFFFFFFFFFFF
-    CCFFFFF300000000000FFFFFFFFFFFFFFFFFFFF30000000000FFFFFFFFFFFFFF
-    FFFFFFF300000000000000000000000000000000000000000000000000000000
-    00000000000000000000000000000000000000000000FFFFFFFFF800000FF800
-    0007F0000007E8000007E8000007F0000007E8000007E8000007F0000007E800
-    0007E8000007F0000007E8000007E8000007F0000007E8000007E8000007F000
-    0007E8000007E8000007F0000007E8000007E8000007F0000007E8000007E800
-    0007F0000007F8000007F800000FFFFFFFFFFFFFFFFF}
-  OldCreateOrder = False
-  OnClose = FormClose
-  PixelsPerInch = 96
-  TextHeight = 13
-  object StatusBar: TTBXStatusBar
-    Left = 0
-    Top = 284
-    Width = 451
-    Height = 19
-    Panels = <
-      item
-        Framed = False
-        MaxSize = 200
-        Size = 200
-        StretchPriority = 100
-        Tag = 0
-      end>
-    UseSystemFont = False
-  end
-  object TopDock: TTBXDock
-    Left = 0
-    Top = 0
-    Width = 451
-    Height = 26
-    AllowDrag = False
-    object Toolbar: TTBXToolbar
-      Left = 0
-      Top = 0
-      Caption = 'Toolbar'
-      FullSize = True
-      Images = GlyphsModule.LogImages
-      ParentShowHint = False
-      ShowHint = True
-      TabOrder = 0
-      object TBXItem1: TTBXItem
-        Action = NonVisualDataModule.LogCloseAction
-      end
-      object TBXSeparatorItem1: TTBXSeparatorItem
-      end
-      object TBXItem2: TTBXItem
-        Action = NonVisualDataModule.LogClearAction
-      end
-      object TBXItem3: TTBXItem
-        Action = NonVisualDataModule.LogCopyAction
-      end
-      object TBXItem4: TTBXItem
-        Action = NonVisualDataModule.LogSelectAllAction
-      end
-      object TBXSeparatorItem2: TTBXSeparatorItem
-      end
-      object TBXItem5: TTBXItem
-        Action = NonVisualDataModule.LogPreferencesAction
-      end
-    end
-  end
-end

+ 0 - 524
forms/Rights.dfm

@@ -1,524 +0,0 @@
-object RightsFrame: TRightsFrame
-  Left = 0
-  Top = 0
-  Width = 163
-  Height = 87
-  TabOrder = 0
-  OnContextPopup = FrameContextPopup
-  object OwnerLabel: TLabel
-    Left = 4
-    Top = 4
-    Width = 32
-    Height = 13
-    Caption = '&Owner'
-    FocusControl = OwnerReadCheck
-  end
-  object GroupLabel: TLabel
-    Left = 4
-    Top = 24
-    Width = 29
-    Height = 13
-    Caption = '&Group'
-    FocusControl = GroupReadCheck
-  end
-  object OthersLabel: TLabel
-    Left = 4
-    Top = 44
-    Width = 33
-    Height = 13
-    Caption = 'Ot&hers'
-    FocusControl = OthersReadCheck
-  end
-  object OthersButton: TSpeedButton
-    Tag = 3
-    Left = 0
-    Top = 41
-    Width = 56
-    Height = 19
-    Flat = True
-    OnClick = RightsButtonsClick
-  end
-  object GroupButton: TSpeedButton
-    Tag = 2
-    Left = 0
-    Top = 21
-    Width = 56
-    Height = 19
-    Flat = True
-    OnClick = RightsButtonsClick
-  end
-  object OwnerButton: TSpeedButton
-    Tag = 1
-    Left = 0
-    Top = 1
-    Width = 56
-    Height = 19
-    Flat = True
-    OnClick = RightsButtonsClick
-  end
-  object OwnerReadCheck: TGrayedCheckBox
-    Tag = 256
-    Left = 58
-    Top = 3
-    Width = 34
-    Height = 17
-    Hint = 'Read'
-    Caption = 'R'
-    ParentShowHint = False
-    ShowHint = True
-    TabOrder = 0
-    OnClick = ControlChange
-  end
-  object OwnerWriteCheck: TGrayedCheckBox
-    Tag = 128
-    Left = 95
-    Top = 3
-    Width = 34
-    Height = 17
-    Hint = 'Write'
-    Caption = 'W'
-    ParentShowHint = False
-    ShowHint = True
-    TabOrder = 1
-    OnClick = ControlChange
-  end
-  object OwnerExecuteCheck: TGrayedCheckBox
-    Tag = 64
-    Left = 132
-    Top = 3
-    Width = 31
-    Height = 17
-    Hint = 'Execute/Enter'
-    Caption = 'X'
-    ParentShowHint = False
-    ShowHint = True
-    TabOrder = 2
-    OnClick = ControlChange
-  end
-  object GroupReadCheck: TGrayedCheckBox
-    Tag = 32
-    Left = 58
-    Top = 23
-    Width = 34
-    Height = 17
-    Caption = 'R'
-    ParentShowHint = False
-    ShowHint = True
-    TabOrder = 3
-    OnClick = ControlChange
-  end
-  object GroupWriteCheck: TGrayedCheckBox
-    Tag = 16
-    Left = 95
-    Top = 23
-    Width = 33
-    Height = 17
-    Caption = 'W'
-    ParentShowHint = False
-    ShowHint = True
-    TabOrder = 4
-    OnClick = ControlChange
-  end
-  object GroupExecuteCheck: TGrayedCheckBox
-    Tag = 8
-    Left = 132
-    Top = 23
-    Width = 31
-    Height = 17
-    Caption = 'X'
-    ParentShowHint = False
-    ShowHint = True
-    TabOrder = 5
-    OnClick = ControlChange
-  end
-  object OthersReadCheck: TGrayedCheckBox
-    Tag = 4
-    Left = 58
-    Top = 43
-    Width = 34
-    Height = 17
-    Caption = 'R'
-    ParentShowHint = False
-    ShowHint = True
-    TabOrder = 6
-    OnClick = ControlChange
-  end
-  object OthersWriteCheck: TGrayedCheckBox
-    Tag = 2
-    Left = 95
-    Top = 43
-    Width = 33
-    Height = 17
-    Caption = 'W'
-    ParentShowHint = False
-    ShowHint = True
-    TabOrder = 7
-    OnClick = ControlChange
-  end
-  object OthersExecuteCheck: TGrayedCheckBox
-    Tag = 1
-    Left = 132
-    Top = 43
-    Width = 31
-    Height = 17
-    Caption = 'X'
-    ParentShowHint = False
-    ShowHint = True
-    TabOrder = 8
-    OnClick = ControlChange
-  end
-  object DirectoriesXCheck: TCheckBox
-    Left = 5
-    Top = 65
-    Width = 156
-    Height = 17
-    Caption = 'Add &X to directories'
-    TabOrder = 9
-    OnClick = ControlChange
-  end
-  object RightsPopup: TPopupMenu
-    Images = RightsImages
-    OnPopup = RightsPopupPopup
-    Left = 128
-    Top = 59
-    object Norights1: TMenuItem
-      Action = NoRightsAction
-    end
-    object Defaultrights1: TMenuItem
-      Action = DefaultRightsAction
-    end
-    object Allrights1: TMenuItem
-      Action = AllRightsAction
-    end
-    object Leaveasis1: TMenuItem
-      Action = LeaveRightsAsIsAction
-    end
-    object N1: TMenuItem
-      Caption = '-'
-    end
-    object CopyAsText1: TMenuItem
-      Action = CopyTextAction
-    end
-    object CopyAsOctal1: TMenuItem
-      Action = CopyOctalAction
-    end
-    object Paste1: TMenuItem
-      Action = PasteAction
-    end
-  end
-  object RightsActions: TActionList
-    Images = RightsImages
-    OnExecute = RightsActionsExecute
-    OnUpdate = RightsActionsUpdate
-    Left = 128
-    Top = 29
-    object NoRightsAction: TAction
-      Caption = '&No Rights'
-      ImageIndex = 0
-      ShortCut = 16462
-    end
-    object DefaultRightsAction: TAction
-      Caption = '&Default Rights'
-      ImageIndex = 1
-      ShortCut = 16452
-    end
-    object AllRightsAction: TAction
-      Caption = '&All Rights'
-      ImageIndex = 2
-      ShortCut = 16449
-    end
-    object LeaveRightsAsIsAction: TAction
-      Caption = '&Leave as Is'
-      ShortCut = 16460
-    end
-    object CopyTextAction: TAction
-      Caption = '&Copy as Text'
-      ImageIndex = 3
-      ShortCut = 16451
-    end
-    object CopyOctalAction: TAction
-      Caption = 'Copy as &Octal'
-      ImageIndex = 4
-      ShortCut = 16463
-    end
-    object PasteAction: TAction
-      Caption = '&Paste'
-      ImageIndex = 5
-      ShortCut = 16470
-    end
-  end
-  object RightsImages: TImageList
-    Left = 128
-    Bitmap = {
-      494C010106000900100010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
-      0000000000003600000028000000400000002000000001002000000000000020
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000084000000840000008400000084000000840000008400
-      0000840000008400000084000000840000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000840000008400000084000000840000008400
-      0000840000008400000084000000840000000000000000000000000000000000
-      0000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00840000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00840000000000000084848400008484008484
-      8400008484008484840084000000FFFFFF000000000000000000000000000000
-      00000000000000000000FFFFFF00840000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000084000000FFFFFF00FFFFFF0000000000FFFF
-      FF00FFFFFF0000000000FFFFFF00840000000000000000848400848484000084
-      8400848484000084840084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00840000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000084000000FFFFFF000000000000000000FFFF
-      FF00FFFFFF0000000000FFFFFF00840000000000000084848400008484008484
-      8400008484008484840084000000FFFFFF00000000000000000000000000FFFF
-      FF00840000008400000084000000840000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF0084000000FFFFFF00FFFFFF0000000000FFFF
-      FF000000000000000000FFFFFF00840000000000000000848400848484000084
-      8400848484000084840084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF0084000000FFFFFF0084000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
-      FF0000000000FFFFFF00FFFFFF0084000000FFFFFF000000000000000000FFFF
-      FF00FFFFFF0000000000FFFFFF00840000000000000084848400008484008484
-      8400008484008484840084000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00840000008400000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF000000
-      000000000000FFFFFF00FFFFFF0084000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00840000008400000084000000840000000000000000848400848484000084
-      8400848484000084840084000000840000008400000084000000840000008400
-      0000840000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
-      FF0000000000FFFFFF00FFFFFF0084000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF0084000000FFFFFF0084000000000000000000000084848400008484008484
-      8400008484008484840000848400848484000084840084848400008484008484
-      8400008484000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF000000
-      000000000000FFFFFF00FFFFFF0084000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00840000008400000000000000000000000000000000848400848484000000
-      0000000000000000000000000000000000000000000000000000000000008484
-      8400848484000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000840000008400000084000000840000008400
-      0000840000000000000000000000000000000000000084848400848484000000
-      0000000000000000000000000000000000000000000000000000000000008484
-      8400008484000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000FFFFFF000000000000000000000000000000
-      0000000000000000000000000000000000000000000000848400848484000084
-      84000000000000FFFF00000000000000000000FFFF0000000000848484000084
-      8400848484000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000FFFF0000FFFF000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000007B7B
-      00007B7B00007B7B000039312100000000005A5A10007B7B0000000000003931
-      2100000000000000000000000000000000000000000000000000000000007B7B
-      00007B7B00007B7B000029291000000000005A5A10007B7B0000000000003929
-      4A00000000000000000000000000000000000000000073733900737339007373
-      39004A4A3900000000004A4A39007373390000000000292929006B086B000000
-      00006B086B00000000006B086B00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000BDBD0000F7F7
-      0000F7F700007B7B0000BDBD00007B7B0000BDBD00007B7B00007B7B0000217B
-      9C000000000000008400FFFFFF00000000000000000000000000BDBD0000DEDE
-      0000FFFF00007B7B0000BDBD00007B7B0000BDBD00007B7B00007B7B0000217B
-      9C0000000000000000000000000000000000B5BD0000EFEF0000EFEF00007373
-      3900B5BD000073733900B5BD0000737339007373390018737B0018737B001873
-      7B006B086B006B086B006B086B00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000000000005A5A10000000
-      8400FFFFFF009C9C0000F7F700005A5A100042424200393121007B7B00000000
-      00000000000000000000000000000000000000000000000000005A5A1000BDBD
-      00007B7B00009C9C0000FFFF00005A5A100042424200292910007B7B00000000
-      0000000000000000000000000000000000004A4A3900B5BD000073733900B5BD
-      0000EFEF0000737339004A4A39004A4A39007373390010ADAD0010ADAD0073AD
-      AD004A4A39000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000840000008400000084000000840000008400
-      0000840000008400000084000000840000000000000000000000000084000000
-      840000008400FFFFFF005A5A10008484840084848400424242005A5A5A000000
-      000000008400FFFFFF0000000000000000000000000000000000000000000000
-      00005A5A1000DEDE00005A5A1000848484008484840042424200635A63000000
-      00000000000000000000000000000000000000000000000000004A4A3900EFEF
-      000073733900737339008C8C8C004A4A39004A4A390010ADAD0073ADAD00EFF7
-      EF004A4A39000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00840000000000000000000000000084000000
-      840000008400FFFFFF00848484006B6B6B004242420000000000393121000000
-      8400FFFFFF000000000000000000000000000000000000000000000000000000
-      0000292910002929100084848400635A63004242420000000000292910000000
-      0000000000000000000000000000000000000000000000000000292929002929
-      290073733900737339004A4A3900000000002929290010ADAD00EFF7EF008C8C
-      8C008C8C8C007373390029292900000000000000000000000000000000000000
-      000000000000000000000000000084000000FFFFFF0000000000000000000000
-      00000000000000000000FFFFFF00840000000000000000000000000000000000
-      84000000840000008400FFFFFF00848484008484840084848400000084000000
-      8400FFFFFF000000000000000000000000000000000000000000000000000000
-      00000000000029291000635A6300848484008484840084848400848484004242
-      4200000000000000000000000000000000000000000000000000000000002929
-      29004A4A39008C8C8C008C8C8C008C8C8C008C8C8C0029292900EFF7EF00EFF7
-      EF00EFF7EF00EFF7EF0073733900000000000000000000000000000000000000
-      000000000000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00840000000000000000000000000000000000
-      0000000084000000840000008400FFFFFF00848484000000840000008400FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000042424200848484008484840084848400635A63004242
-      4200000000000000000000000000000000000000000000000000000000000000
-      00004A4A39008C8C8C00737339008C8C8C004A4A39004A4A3900EFF7EF00EFF7
-      EF00EFF7EF008C8C8C0029292900000000000000000000000000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF0084000000FFFFFF0000000000000000000000
-      00000000000000000000FFFFFF00840000000000000000000000000000000000
-      0000000000000000840000008400000084000000840000008400FFFFFF004242
-      4200000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000635A6300848484008484840084848400848484004242
-      4200000000000000000000000000000000000000000000000000000000000000
-      00004A4A39008C8C8C008C8C8C008C8C8C008C8C8C0029292900EFF7EF00EFF7
-      EF00EFF7EF0073ADAD008C8C8C00000000000000000000000000FFFFFF000000
-      000000000000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00840000000000000000000000000000000000
-      00000000000042424200000084000000840000008400FFFFFF00848484004242
-      42006B6B6B000000000000000000000000000000000000000000000000000000
-      0000000000004242420084848400848484008484840084848400848484004242
-      42006B6B6B000000000000000000000000000000000000000000000000004A4A
-      39008C8C8C008C8C8C00737339008C8C8C008C8C8C002929290073733900EFF7
-      EF00FF7B7B00EFF7EF004A4A3900000000000000000000000000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF0084000000FFFFFF000000000000000000FFFF
-      FF00840000008400000084000000840000000000000000000000000000000000
-      0000000000000000840000008400000084000000840000008400FFFFFF004242
-      4200000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000042424200848484008484840029291000848484004242
-      4200000000000000000000000000000000000000000000000000000000000000
-      0000292929008C8C8C008C8C8C00000000008C8C8C0029292900EFF7EF00EFF7
-      EF008C8C8C008C8C8C0000000000000000000000000000000000FFFFFF000000
-      000000000000000000000000000084000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF0084000000FFFFFF0084000000000000000000000000000000000000000000
-      0000000084000000840000008400FFFFFF008484840000008400FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000004242420084848400635A6300000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000004A4A39008C8C8C004A4A39000000000073ADAD0018737B00EFF7
-      EF0073ADAD00EFF7EF004A4A3900000000000000000000000000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF0084000000FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00840000008400000000000000000000000000000000000000000084000000
-      84000000840000008400FFFFFF00424242008484840084848400000084000000
-      8400FFFFFF000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000424242008484840084848400292910000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000292929008C8C8C008C8C8C002929290073ADAD0010ADAD0010AD
-      AD0008F7F70010ADAD0008F7F700000000000000000000000000FFFFFF000000
-      000000000000FFFFFF0000000000840000008400000084000000840000008400
-      0000840000000000000000000000000000000000000000008400000084000000
-      840000008400FFFFFF0000000000000000000000000000000000000000000000
-      840000008400FFFFFF0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000073ADAD0063DEDE0008F7
-      F70008F7F70008F7F70029292900000000000000000000000000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000FFFFFF000000000000000000000000000000
-      000000000000000000000000000000000000000000000000840000008400FFFF
-      FF00000000000000000000000000000000000000000000000000000000000039
-      39000000840000008400FFFFFF00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000039
-      3900000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000002929290018737B001873
-      7B0018737B000000000000000000000000000000000000000000FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000424D3E000000000000003E000000
-      2800000040000000200000000100010000000000000100000000000000000000
-      000000000000000000000000FFFFFF00FFFFFFFF00000000FFFFFC0000000000
-      FE00800000000000FE00000000000000FE000000000000008000000000000000
-      8000000100000000800000030000000080000003000000008001000300000000
-      800300030000000080070FC300000000807F00030000000080FF800700000000
-      81FFF87F00000000FFFFFFFF00000000E00FE00F8001FFFFC009C00F0000FFFF
-      C01FC01F0003FE00C013E01F8007FE00C007F01FC001FE00E007E00F80018000
-      E00FE00F80018000C00FC00F00008000C007C00700018000C00FC00F00018001
-      C01FC01F00008003C007C01F000080078003C01F0001807F8001E00F800380FF
-      F01FF01FC07F81FFFFFFFFFFFFFFFFFF00000000000000000000000000000000
-      000000000000}
-  end
-end

+ 0 - 690
forms/SynchronizeChecklist.dfm

@@ -1,690 +0,0 @@
-object SynchronizeChecklistDialog: TSynchronizeChecklistDialog
-  Left = 308
-  Top = 169
-  HelpType = htKeyword
-  HelpKeyword = 'ui_synchronize_checklist'
-  BorderIcons = [biSystemMenu, biMaximize, biHelp]
-  Caption = 'Synchronization checklist'
-  ClientHeight = 422
-  ClientWidth = 695
-  Color = clBtnFace
-  Constraints.MinHeight = 350
-  Constraints.MinWidth = 380
-  ParentFont = True
-  Icon.Data = {
-    0000010001001010000001001800680300001600000028000000100000002000
-    0000010018000000000000000000000000000000000000000000000000000000
-    0000000000000000000000000000000000000000000000000000000000000000
-    0000000000000000000000000000000000000000000000000000000000000000
-    AF4A01BC5701AF4A01993401AB623C0000000000000000000000000000000000
-    00000000000000000000B0602DC66101B9540100000000000000000000000000
-    0000000000000000000000000000000000000000000000000000D16C01C66101
-    0000000000000000000000000000000000000000000000000000000000000000
-    00000000000000000000DC7701B6510100000000000000000000000000000000
-    0000000000000000000000000000000000000000000000E98301E07B01B75201
-    000000000000000000000000000000AF663D0000000000000000000000000000
-    00B66431B66431F69001E47F01B75201A33E01A33E01A33E01000000BA866AA3
-    3E01CC6701000000000000000000000000000000F29B2CF99301E98401D97401
-    A33E01A33E01000000A33E01CC6701CC6701CC6701A33E010000000000000000
-    00000000000000F79101ED8801D26D01BA7E5B000000A33E01BF5A01CC6701CC
-    6701C96401BF5A01A33E01000000000000000000000000000000EC8701B1612E
-    000000000000000000000000BF5A01BF5A01CC6701B752010000000000000000
-    00000000000000000000000000000000000000000000000000000000BF5A01CC
-    6701B75201000000000000000000000000000000000000000000000000000000
-    000000000000000000000000C96401C96401B46A3D0000000000000000000000
-    00000000000000000000000000000000000000000000000000B14C01CC6701B1
-    5210000000000000000000000000000000000000000000000000000000AD633D
-    C17841BC5D10D57101CA6501AD551F0000000000000000000000000000000000
-    0000000000000000000000000000000000000000000000000000000000000000
-    0000000000000000000000000000000000000000000000000000000000000000
-    000000000000000000000000000000000000000000000000000000000000FC1F
-    0000F00F0000E00F0000E1FF0000E1EF0000000700000003000080010000C000
-    0000E1000000F3830000FF830000F8070000F00F0000F81F0000FFFF0000}
-  KeyPreview = True
-  OldCreateOrder = True
-  Position = poOwnerFormCenter
-  OnShow = FormShow
-  PixelsPerInch = 96
-  TextHeight = 13
-  object Panel: TPanel
-    Left = 579
-    Top = 0
-    Width = 116
-    Height = 403
-    Align = alRight
-    BevelOuter = bvNone
-    TabOrder = 1
-    object OkButton: TButton
-      Left = 8
-      Top = 8
-      Width = 100
-      Height = 25
-      Caption = 'OK'
-      Default = True
-      ModalResult = 1
-      TabOrder = 0
-    end
-    object CancelButton: TButton
-      Left = 8
-      Top = 40
-      Width = 100
-      Height = 25
-      Cancel = True
-      Caption = 'Cancel'
-      ModalResult = 2
-      TabOrder = 1
-    end
-    object CheckAllButton: TButton
-      Left = 8
-      Top = 182
-      Width = 100
-      Height = 25
-      Caption = 'Check &all'
-      TabOrder = 5
-      OnClick = CheckAllButtonClick
-    end
-    object UncheckAllButton: TButton
-      Left = 8
-      Top = 214
-      Width = 100
-      Height = 25
-      Caption = 'Uncheck a&ll'
-      TabOrder = 6
-      OnClick = CheckAllButtonClick
-    end
-    object CheckButton: TButton
-      Tag = 1
-      Left = 8
-      Top = 118
-      Width = 100
-      Height = 25
-      Caption = '&Check'
-      TabOrder = 3
-      OnClick = CheckButtonClick
-    end
-    object UncheckButton: TButton
-      Left = 8
-      Top = 150
-      Width = 100
-      Height = 25
-      Caption = '&Uncheck'
-      TabOrder = 4
-      OnClick = CheckButtonClick
-    end
-    object HelpButton: TButton
-      Left = 8
-      Top = 72
-      Width = 100
-      Height = 25
-      Caption = '&Help'
-      TabOrder = 2
-      OnClick = HelpButtonClick
-    end
-    object CustomCommandsButton: TButton
-      Tag = 1
-      Left = 8
-      Top = 260
-      Width = 100
-      Height = 25
-      Caption = 'Custom co&mmands'
-      TabOrder = 7
-      OnClick = CustomCommandsButtonClick
-    end
-  end
-  object ListView: TIEListView
-    Left = 0
-    Top = 0
-    Width = 579
-    Height = 403
-    Align = alClient
-    Checkboxes = True
-    FullDrag = True
-    HideSelection = False
-    ReadOnly = True
-    RowSelect = True
-    PopupMenu = ListViewPopupMenu
-    TabOrder = 0
-    ViewStyle = vsReport
-    OnChange = ListViewChange
-    OnChanging = ListViewChanging
-    NortonLike = nlOff
-    Columns = <
-      item
-        Caption = 'Name'
-      end
-      item
-        Caption = 'Local directory'
-        Width = 100
-      end
-      item
-        Alignment = taRightJustify
-        Caption = 'Size'
-        Width = 70
-      end
-      item
-        Caption = 'Changed'
-        Width = 80
-      end
-      item
-        MaxWidth = 25
-        MinWidth = 25
-        Width = 25
-      end
-      item
-        Caption = 'Remote directory'
-        Width = 100
-      end
-      item
-        Alignment = taRightJustify
-        Caption = 'Size'
-        Width = 70
-      end
-      item
-        Caption = 'Changed'
-        Width = 80
-      end>
-    OnAdvancedCustomDrawSubItem = ListViewAdvancedCustomDrawSubItem
-    OnCompare = ListViewCompare
-    OnContextPopup = ListViewContextPopup
-    OnSelectItem = ListViewSelectItem
-    OnSecondaryColumnHeader = ListViewSecondaryColumnHeader
-  end
-  object StatusBar: TStatusBar
-    Left = 0
-    Top = 403
-    Width = 695
-    Height = 19
-    Hint = 'Click to select all actions of this type'
-    Panels = <
-      item
-        Style = psOwnerDraw
-        Text = 'Total synchronization actions'
-        Width = 95
-      end
-      item
-        Style = psOwnerDraw
-        Text = 'New local files'
-        Width = 95
-      end
-      item
-        Style = psOwnerDraw
-        Text = 'New remote files'
-        Width = 95
-      end
-      item
-        Style = psOwnerDraw
-        Text = 'Updated local files'
-        Width = 95
-      end
-      item
-        Style = psOwnerDraw
-        Text = 'Updated remote files'
-        Width = 95
-      end
-      item
-        Style = psOwnerDraw
-        Text = 'Obsolete remote files'
-        Width = 95
-      end
-      item
-        Style = psOwnerDraw
-        Text = 'Obsolete local files'
-        Width = 95
-      end
-      item
-        Width = 50
-      end>
-    ParentShowHint = False
-    ShowHint = True
-    OnMouseDown = StatusBarMouseDown
-    OnMouseMove = StatusBarMouseMove
-    OnDrawPanel = StatusBarDrawPanel
-    OnResize = StatusBarResize
-  end
-  object ActionImages: TImageList
-    Left = 616
-    Top = 360
-    Bitmap = {
-      494C0101070009000C0010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
-      0000000000003600000028000000400000002000000001002000000000000020
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000000009C000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000FF000000000000000000000000000000000000009C000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000FF0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000003131CE000000FF000000
-      9C00000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000003131CE000000FF000000
-      9C00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008000000080000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000003131CE00319CFF000000
-      FF0000009C000000000000000000000000000000000000000000000000000000
-      00000000FF00000000000000000000000000000000003131CE00319CFF000000
-      FF0000009C000000000000000000000000000000000000000000000000000000
-      00000000FF000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000800000008000000080000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000000000003131CE000063
-      FF000000CE000000000000000000000000000000000000000000000000000000
-      FF000000000000000000000000000000000000000000000000003131CE000063
-      FF000000CE000000000000000000000000000000000000000000000000000000
-      FF00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000008000
-      0000800000008000000080000000000000008000000080000000800000000000
-      0000800000008000000000000000000000000000000000000000000000000000
-      CE000000FF0000009C00000000000000000000000000000000000000FF000000
-      9C00000000000000000000000000000000000000000000000000000000000000
-      CE000000FF0000009C00000000000000000000000000000000000000FF000000
-      9C00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000800000009933
-      0000993300009933000099330000000000009933000099330000993300000000
-      0000993300009933000000000000000000000000000000000000000000000000
-      00000000CE000000FF0000009C0000000000000000000000FF0000009C000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000CE000000FF0000009C0000000000000000000000FF0000009C000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000080000000993300009933
-      0000993300009933000099330000000000009933000099330000993300000000
-      0000993300009933000000000000000000000000000000000000000000000000
-      0000000000000000CE000000FF0000009C000000FF0000009C00000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000CE000000FF0000009C000000FF0000009C00000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000080000000CC33
-      0000CC330000CC330000CC33000000000000CC330000CC330000CC3300000000
-      0000CC330000CC33000000000000000000000000000000000000000000000000
-      000000000000000000000000CE000000FF0000009C0000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000CE000000FF0000009C0000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000008000
-      0000CC330000CC330000CC33000000000000CC330000CC330000CC3300000000
-      0000CC330000CC33000000000000000000000000000000000000000000000000
-      0000000000000000CE000000FF0000009C000000CE0000009C00000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000CE000000FF0000009C000000CE0000009C00000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000080000000CC330000CC330000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000CE000000FF0000009C0000000000000000000000CE0000009C000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000CE000000FF0000009C0000000000000000000000CE0000009C000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000CC330000CC330000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000000000000000CE000000
-      FF000000FF0000009C00000000000000000000000000000000000000CE000000
-      9C000000000000000000000000000000000000000000000000000000CE000000
-      FF000000FF0000009C00000000000000000000000000000000000000CE000000
-      9C00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000CE00319CFF000000
-      FF0000009C000000000000000000000000000000000000000000000000000000
-      CE0000009C00000000000000000000000000000000000000CE00319CFF000000
-      FF0000009C000000000000000000000000000000000000000000000000000000
-      CE0000009C000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000063639C000000CE006363
-      9C00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000CE0000000000000000000000000063639C000000CE006363
-      9C00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000CE0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000004D4D
-      4D004D4D4D004D4D4D004D4D4D004D4D4D004D4D4D004D4D4D004D4D4D004D4D
-      4D004D4D4D000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000A6A6A600FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF004D4D4D0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000A6A6A600FFFF
-      FF00FFFFFF00FFFFFF00D3D3D300D3D3D300FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF004D4D4D0000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000033CC000033CC0000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000080000000800000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000CC330000CC330000000000000000
-      0000000000000000000000000000000000000000000000000000A6A6A600FFFF
-      FF00FFFFFF00FFFFFF004D4DA600D3D3D300D3D3D300FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF004D4D4D0000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000033CC000033CC0000008000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000008000000080000000800000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000CC330000CC330000800000000000
-      0000000000000000000000000000000000000000000000000000A6A6A600FFFF
-      FF00FFFFFF004D4DA6004D4DA6004D4DA600D3D3D300D3D3D300FFFFFF00FFFF
-      FF00FFFFFF004D4D4D0000000000000000000000000033CC000033CC00000000
-      000033CC000033CC000033CC00000000000033CC000033CC000033CC00000080
-      0000000000000000000000000000000000000000000000000000000000000080
-      0000008000000080000000800000000000000080000000800000008000000000
-      00000080000000800000000000000000000000000000CC330000CC3300000000
-      0000CC330000CC330000CC33000000000000CC330000CC330000CC3300008000
-      0000000000000000000000000000000000000000000000000000A6A6A600FFFF
-      FF004D4DA6004D4DA600FFFFFF004D4DA6004D4DA600D3D3D300FFFFFF00FFFF
-      FF00FFFFFF004D4D4D0000000000000000000000000033CC000033CC00000000
-      000033CC000033CC000033CC00000000000033CC000033CC000033CC000033CC
-      0000008000000000000000000000000000000000000000000000008000003399
-      0000339900003399000033990000000000003399000033990000339900000000
-      00003399000033990000000000000000000000000000CC330000CC3300000000
-      0000CC330000CC330000CC33000000000000CC330000CC330000CC330000CC33
-      0000800000000000000000000000000000000000000000000000A6A6A600FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004D4DA600A6A6A600D3D3D300FFFF
-      FF00FFFFFF004D4D4D0000000000000000000000000033990000339900000000
-      0000339900003399000033990000000000003399000033990000339900003399
-      0000339900000080000000000000000000000000000000800000339900003399
-      0000339900003399000033990000000000003399000033990000339900000000
-      0000339900003399000000000000000000000000000099330000993300000000
-      0000993300009933000099330000000000009933000099330000993300009933
-      0000993300008000000000000000000000000000000000000000A6A6A600FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004D4DA600D3D3D300D3D3
-      D300FFFFFF004D4D4D0000000000000000000000000033990000339900000000
-      0000339900003399000033990000000000003399000033990000339900003399
-      00000080000000000000000000000000000000000000000000000080000033CC
-      000033CC000033CC000033CC00000000000033CC000033CC000033CC00000000
-      000033CC000033CC000000000000000000000000000099330000993300000000
-      0000993300009933000099330000000000009933000099330000993300009933
-      0000800000000000000000000000000000000000000000000000A6A6A600FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004D4DA600D3D3
-      D300FFFFFF004D4D4D0000000000000000000000000000800000008000000000
-      0000008000000080000000800000000000000080000000800000008000000080
-      0000000000000000000000000000000000000000000000000000000000000080
-      000033CC000033CC000033CC00000000000033CC000033CC000033CC00000000
-      000033CC000033CC000000000000000000000000000080000000800000000000
-      0000800000008000000080000000000000008000000080000000800000008000
-      0000000000000000000000000000000000000000000000000000A6A6A600FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004D4D
-      A600FFFFFF004D4D4D0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000080000000800000008000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000080000033CC000033CC0000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008000000080000000800000000000
-      0000000000000000000000000000000000000000000000000000A6A6A600FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF004D4D4D0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000080000000800000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000033CC000033CC0000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000008000000080000000000000000000
-      0000000000000000000000000000000000000000000000000000A6A6A600FFFF
-      FF00FFFFFF004D4D4D004D4D4D004D4D4D004D4D4D004D4D4D004D4D4D00FFFF
-      FF00FFFFFF004D4D4D0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000000000000000000000A6A6
-      A600A6A6A6004D4D4D00FFFFFF00D3D3D300D3D3D300D3D3D3004D4D4D00A6A6
-      A600A6A6A6000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000A6A6A600A6A6A600A6A6A600A6A6A600000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000424D3E000000000000003E000000
-      2800000040000000200000000100010000000000000100000000000000000000
-      000000000000000000000000FFFFFF00FFFFFFFFFFFF0000FFFFDFFBDFFB0000
-      FFFF8FFF8FFF0000F9FF87F787F70000F1FFC7EFC7EF0000E113E3CFE3CF0000
-      C113F19FF19F00008113F83FF83F0000C113FC7FFC7F0000E113F83FF83F0000
-      F1FFF19FF19F0000F9FFC3CFC3CF0000FFFF87E787E70000FFFF8FFB8FFB0000
-      FFFFFFFFFFFF0000FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFE007FFFFFFFFFFFF
-      C003FFFFFFFFFFFFC003FF3FF9FFFF3FC003FF1FF1FFFF1FC003910FE113910F
-      C0039107C1139107C003910381139103C0039107C1139107C003910FE113910F
-      C003FF1FF1FFFF1FC003FF3FF9FFFF3FC003FFFFFFFFFFFFE007FFFFFFFFFFFF
-      FC3FFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000
-      000000000000}
-  end
-  object ListViewPopupMenu: TPopupMenu
-    Left = 616
-    Top = 328
-    object CheckItem: TMenuItem
-      Tag = 1
-      Caption = '&Check'
-      OnClick = CheckButtonClick
-    end
-    object UncheckItem: TMenuItem
-      Caption = '&Uncheck'
-      OnClick = CheckButtonClick
-    end
-    object N1: TMenuItem
-      Caption = '-'
-    end
-    object SelectAllItem: TMenuItem
-      Caption = 'Select &All'
-      ShortCut = 16449
-      OnClick = SelectAllItemClick
-    end
-  end
-  object UpdateTimer: TTimer
-    Enabled = False
-    Interval = 100
-    OnTimer = UpdateTimerTimer
-    Left = 616
-    Top = 296
-  end
-  object ArrowImages: TImageList
-    Left = 648
-    Top = 360
-    Bitmap = {
-      494C0101020004000C0010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
-      0000000000003600000028000000400000001000000001002000000000000010
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000084848400FFFFFF0000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000084848400000000000000000000000000000000000000000000000000FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000848484000000000000000000FFFFFF00000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008484840000000000000000000000000000000000FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000848484000000000000000000FFFFFF00000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008484840000000000000000000000000000000000FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008484840000000000000000000000000000000000FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000848484000000000000000000FFFFFF00000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008484840000000000000000000000000000000000FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000848484000000000000000000FFFFFF00000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000084848400000000000000000000000000000000000000000000000000FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000084848400FFFFFF0000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000084848400848484008484840084848400848484008484840084848400FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000424D3E000000000000003E000000
-      2800000040000000100000000100010000000000800000000000000000000000
-      000000000000000000000000FFFFFF00FFFFFFFF00000000FFFFFFFF00000000
-      FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000F00FFE7F00000000
-      F7EFFDBF00000000FBDFFDBF00000000FBDFFBDF00000000FDBFFBDF00000000
-      FDBFF7EF00000000FE7FF00F00000000FFFFFFFF00000000FFFFFFFF00000000
-      FFFFFFFF00000000FFFFFFFF0000000000000000000000000000000000000000
-      000000000000}
-  end
-end

+ 2 - 0
libs/.gitignore

@@ -0,0 +1,2 @@
+lib
+openssl/openssl

+ 190 - 0
libs/apr/CHANGES

@@ -0,0 +1,190 @@
+                                                     -*- coding: utf-8 -*-
+Changes for APR 1.4.6
+
+  *) Flush write buffer before truncate call on a file.
+     [Mladen Turk]
+
+  *) Security: oCERT-2011-003
+     Randomise hashes by providing a seed. 
+     [Bojan Smojver, Branko Čibej, Ruediger Pluem et al.]
+
+  *) apr_random: Prevent segfault if pool used to initialize apr_random is
+     destroyed before forking. [Stefan Fritsch]
+
+  *) testrand: Improve child randomness test case. [Rainer Jung]
+
+  *) apr_proc_fork, apr_random_after_fork: disambiguate what happens to the 
+     proc structure passed in, and ensure that the pid is set correctly in 
+     a newly created child; note that merely mixing a PID into the random 
+     seed of a new child doesn't markedly increase entropy. [Sander Temme]
+
+  *) apr_file_open: Avoid fcntl() calls if support for O_CLOEXEC works.
+     PR 48557. [Mike Frysinger <vapier gentoo org>]
+
+  *) apr_dir_make_recursive: Fix race condition that could lead to EEXIST
+     being returned. PR 51254. [William Lee <william lee rainstor com>,
+     Wim Lewis <wiml omnigroup com>]
+
+  *) configure: Fix APR_RESTORE_THE_ENVIRONMENT if the original variable was
+     a single space. PR 50334. [Nathan Phillip Brink <binki gentoo org>]
+
+  *) apr_proc_create: Don't close any of the new stdin/stdout/stderr in the
+     child if it already has the correct FD. PR 51995.
+     [Dan Ports <drkp csail mit edu>]
+
+  *) Fix flag character '#' in combination with format character 'x' in
+     apr snprintf implementations.  [Rainer Jung]
+
+  *) Improve platform detection by updating config.guess and config.sub.
+     [Rainer Jung]
+
+  *) Add libtool2 files to extraclean make target.  [Rainer Jung]
+
+  *) Don't overwrite our config.guess and config.sub
+     when running buildconf.  [Rainer Jung]
+
+  *) Silence autoconf 2.68 warnings.  [Rainer Jung]
+
+Changes for APR 1.4.5
+
+  *) Security: CVE-2011-1928
+     apr_fnmatch(): Fix high CPU loop.  [William Rowe]
+
+  *) Fix top_builddir in installed apr_rules.mk.  [Bojan Smojver]
+
+Changes for APR 1.4.4
+
+  *) Windows: Fix command-line builds.  [William Rowe]
+
+Changes for APR 1.4.3
+
+  *) Security: CVE-2011-0419
+     Reimplement apr_fnmatch() from scratch using a non-recursive
+     algorithm; now has improved compliance with the fnmatch() spec.
+     [William Rowe]
+
+  *) Fix environment-related crash using some non-standard builds on
+     Windows 7/Server 2008.  [Steve Hay <SteveHay planit.com>]
+
+  *) poll, pollset, pollcb on Windows: Handle calls with no file/socket
+     descriptors.  PR 49882.  [Stefan Ruppert <sr myarm.com>, Jeff Trawick]
+
+  *) Fix APR_IPV6_V6ONLY issues on Windows related to run-time behavior 
+     on Windows older than Vista and SDK/MinGW levels without IPV6_V6ONLY.
+     PR 45321.  [Sob <sob hisoftware.cz>]
+
+  *) Fix address handling when accepting an AF_INET socket from a socket
+     bound as AF_INET6.   PR 49678.  [Joe Orton]
+
+  *) Fix error return values from apr_sockaddr_info_get() on Windows for
+     IPv6 builds.  [Ivan Zhakov <ivan visualsvn.com>]
+
+  *) Add new experimental configure option --enable-allocator-uses-mmap to
+     use mmap instead of malloc in apr_allocator_alloc(). This greatly reduces
+     memory fragmentation with malloc implementations (e.g. glibc) that
+     don't handle allocationss of a page-size-multiples in an efficient way.
+     It also makes apr_allocator_max_free_set() actually have some effect
+     on such platforms. [Stefan Fritsch]
+
+  *) configure: Support 64 and 32 bit universal builds for Darwin/
+     OS X 10.6+. [Jim Jagielski]
+
+  *) apr_sockaddr_info_get() on AIX: Fix a problem which could set
+     the port field in the native socket address to 1 when 0 was
+     specified.  PR 46964.  [Jeff Trawick]
+
+  *) configure: Make definition of apr_ino_t independent of
+     _FILE_OFFSET_BITS even on platforms where ino_t is 'unsigned int'.
+     [Stefan Fritsch]
+
+  *) apr_ring: Workaround for aliasing problem that causes gcc 4.5 to
+     miscompile some brigade related code. PR 50190. [Stefan Fritsch]
+
+  *) apr_file_flush_locked(): Handle short writes. [Stefan Fritsch]
+
+  *) apr_pollset_create_ex(): Trap errors from pollset providers.
+     PR 49094.  [Sami Tolvanen <sami.tolvanen mywot.com>]
+
+  *) apr_pollset_create*(): Fix memory lifetime problem with the wakeup
+     pipe when the pollset was created with APR_POLLSET_NOCOPY.
+     [Neil Conway <nrc cs.berkeley.edu>]
+
+  *) Fix detection of some Linux variants when configure is built with
+     recent GNU tools.  [Eric Covener]
+
+  *) Avoid a redundant fcntl() call in apr_file_open() where O_CLOEXEC
+     is supported.  PR 46297.  [Joe Orton]
+
+  *) Improve platform detection by updating config.guess and config.sub.
+     [Rainer Jung]
+
+Changes for APR 1.4.2
+
+  *) Undo a crash-bug introduced in 1.4.1 affecting some applications of 
+     the apr hash and table structures, reported to affect Subversion
+     by Bert Huijben <bert qqmail.nl>.  [Graham Leggett]
+
+Changes for APR 1.4.1
+
+  *) Win32: Properly handle the ERROR_DIRECTORY system error code.
+     [Brane Čibej]
+
+Changes for APR 1.4.0
+
+  *) Windows: Default build configurations assume NT or higher at run-time. 
+
+  *) Add apr_global_mutex_lockfile() for retrieving the file, if any,
+     associated with the mutex.  Add apr_global_mutex_name() for retrieving
+     the name of the lock mechanism used by the underlying proc mutex.
+     [Jeff Trawick]
+
+  *) Add apr_socket_atreadeof to determine whether the receive part of the
+     socket has been closed by the peer.
+     [Ruediger Pluem, Mladen Turk, Joe Orton]
+
+  *) Make apr_pollset and apr_pollcb implementations using providers.
+     Added apr_pollset_create_ex and apr_pollcb_create_ex that allows
+     choosing non-default providers.
+     [Mladen Turk]
+
+  *) Win32: Use WSAPoll as default pollset method if supported and found
+     inside winsock dll.  [Mladen Turk]
+
+  *) apr_temp_dir_get() now checks the TMPDIR environment variable first,
+     instead of third.  [Jim Jagielski]
+
+  *) Add apr_file_sync() and apr_file_datasync() calls.  [Bojan Smojver]
+
+  *) apr_pollset_wakeup() on Windows: Fix core caused by closing the
+     file_socket_pipe with standard file_close. 
+     [Arsen Chaloyan, Mladen Turk]
+
+  *) Introduce apr_hash_do() for iterating over a hash table.  [Mladen Turk]
+
+  *) Make sure WIN32 behaves the same as posix for file-backed shared memory 
+     by removing the file on cleanup/remove.  [Mladen Turk]
+
+  *) Introduce apr_pollset_wakeup() for interrupting the blocking
+     apr_pollset_poll() call.  [Mladen Turk]
+
+  *) Add apr_file_link() function.  PR 44841.  [Mark Heily <mark heily.com>]
+
+Changes for APR 1.3.x and later:
+
+  *) http://svn.apache.org/viewvc/apr/apr/branches/1.3.x/CHANGES?view=markup
+
+Changes for APR 1.2.x and later:
+
+  *) http://svn.apache.org/viewvc/apr/apr/branches/1.2.x/CHANGES?view=markup
+
+Changes for APR 1.1.x and later:
+
+  *) http://svn.apache.org/viewvc/apr/apr/branches/1.1.x/CHANGES?view=markup
+
+Changes for APR 1.0.x and later:
+
+  *) http://svn.apache.org/viewvc/apr/apr/branches/1.0.x/CHANGES?view=markup
+
+Changes for APR 0.9.x and later/earlier:
+
+  *) http://svn.apache.org/viewvc/apr/apr/branches/0.9.x/CHANGES?view=markup

+ 341 - 0
libs/apr/LICENSE

@@ -0,0 +1,341 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+
+APACHE PORTABLE RUNTIME SUBCOMPONENTS: 
+
+The Apache Portable Runtime includes a number of subcomponents with
+separate copyright notices and license terms. Your use of the source
+code for the these subcomponents is subject to the terms and
+conditions of the following licenses. 
+
+From strings/apr_fnmatch.c, include/apr_fnmatch.h, misc/unix/getopt.c,
+file_io/unix/mktemp.c, strings/apr_strings.c:
+
+/* 
+ * Copyright (c) 1987, 1993, 1994
+ *      The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by the University of
+ *      California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+
+From network_io/unix/inet_ntop.c, network_io/unix/inet_pton.c:
+
+/* Copyright (c) 1996 by Internet Software Consortium.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
+ * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
+ * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+
+From dso/aix/dso.c:
+
+ *  Based on libdl (dlfcn.c/dlfcn.h) which is
+ *  Copyright (c) 1992,1993,1995,1996,1997,1988
+ *  Jens-Uwe Mager, Helios Software GmbH, Hannover, Germany.
+ *
+ *  Not derived from licensed software.
+ *
+ *  Permission is granted to freely use, copy, modify, and redistribute
+ *  this software, provided that the author is not construed to be liable
+ *  for any results of using the software, alterations are clearly marked
+ *  as such, and this notice is not modified.
+
+From strings/apr_strnatcmp.c, include/apr_strings.h:
+
+  strnatcmp.c -- Perform 'natural order' comparisons of strings in C.
+  Copyright (C) 2000 by Martin Pool <[email protected]>
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+From strings/apr_snprintf.c:
+
+  *
+  * cvt - IEEE floating point formatting routines.
+  *       Derived from UNIX V7, Copyright(C) Caldera International Inc.
+  *
+
+  Copyright(C) Caldera International Inc.  2001-2002.  All rights reserved.
+  
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+
+  Redistributions of source code and documentation must retain the above
+  copyright notice, this list of conditions and the following disclaimer.
+
+  Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+  All advertising materials mentioning features or use of this software
+  must display the following acknowledgement:
+
+     This product includes software developed or owned by  Caldera
+     International, Inc.
+
+  Neither the name of Caldera International, Inc. nor the names of other
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+  USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+  INTERNATIONAL, INC. AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
+  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
+  NO EVENT SHALL CALDERA INTERNATIONAL, INC. BE LIABLE FOR ANY DIRECT,
+  INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+

+ 287 - 0
libs/apr/Makefile.bcb

@@ -0,0 +1,287 @@
+# Set your compiler options
+CC=bcc32
+CFLAG=-DWIN32;WINNT;_WINDOWS -DWIN32_LEAN_AND_MEAN -q -w-ccc -w-rch -w-pia -w-aus -w-par -w-inl -w-eff -w-sus -w-dup -w-spa -w-csu -w-rvl  -c -tWC -tWM -D_stricmp=stricmp -D_strnicmp=strnicmp -O2 -ff -fp -DAPR_DECLARE_STATIC;APR_HAS_UNICODE_FS;APR_HAS_LARGE_FILES
+LIB_CFLAG=
+
+# apr directory
+SRC_D=.
+
+# The output directory for everything intersting
+OUT_D=..\lib
+# The output directory for all the temporary muck
+TMP_D=tmp
+INCO_D=openssl
+
+CP=copy
+RM=del
+MKDIR=mkdir
+MKLIB=tlib /P64 /C
+ASM=nasm -f obj -d__omf__
+
+######################################################
+# You should not need to touch anything below this point
+######################################################
+
+# INCL_D - local library directory
+# OBJ_D  - temp object file directory
+OBJ_D=$(TMP_D)
+INCL_D=include
+INCL=include;include\arch\win32;include\arch\unix;
+
+O_APR=$(OUT_D)\apr.lib
+
+######################################################
+# Don't touch anything below this point
+######################################################
+
+INC=-I$(INCL) -I.
+LIB_CFLAGS=$(INC) $(CFLAG) $(LIB_CFLAG)
+LIBS_DEP=$(O_APR)
+
+#############################################
+HEADER=$(INCL_D)\apr.h
+
+APROBJS=\
+    $(OBJ_D)\apr_atomic.obj \
+    $(OBJ_D)\dso.obj \
+    $(OBJ_D)\buffer.obj \
+    $(OBJ_D)\copy.obj \
+    $(OBJ_D)\dir.obj \
+    $(OBJ_D)\fileacc.obj \
+    $(OBJ_D)\filedup.obj \
+    $(OBJ_D)\filepath.obj \
+    $(OBJ_D)\filepath_util.obj \
+    $(OBJ_D)\filestat.obj \
+    $(OBJ_D)\filesys.obj \
+    $(OBJ_D)\flock.obj \
+    $(OBJ_D)\fullrw.obj \
+    $(OBJ_D)\mktemp.obj \
+    $(OBJ_D)\open.obj \
+    $(OBJ_D)\pipe.obj \
+    $(OBJ_D)\readwrite.obj \
+    $(OBJ_D)\seek.obj \
+    $(OBJ_D)\tempdir.obj \
+    $(OBJ_D)\proc_mutex.obj \
+    $(OBJ_D)\thread_cond.obj \
+    $(OBJ_D)\thread_mutex.obj \
+    $(OBJ_D)\thread_rwlock.obj \
+    $(OBJ_D)\apr_pools.obj \
+    $(OBJ_D)\apr_app.obj \
+    $(OBJ_D)\charset.obj \
+    $(OBJ_D)\env.obj \
+    $(OBJ_D)\errorcodes.obj \
+    $(OBJ_D)\getopt.obj \
+    $(OBJ_D)\internal.obj \
+    $(OBJ_D)\misc.obj \
+    $(OBJ_D)\otherchild.obj \
+    $(OBJ_D)\rand.obj \
+    $(OBJ_D)\start.obj \
+    $(OBJ_D)\utf8.obj \
+    $(OBJ_D)\version.obj \
+    $(OBJ_D)\common.obj \
+    $(OBJ_D)\mmap.obj \
+    $(OBJ_D)\inet_ntop.obj \
+    $(OBJ_D)\inet_pton.obj \
+    $(OBJ_D)\multicast.obj \
+    $(OBJ_D)\sendrecv.obj \
+    $(OBJ_D)\sockaddr.obj \
+    $(OBJ_D)\sockets.obj \
+    $(OBJ_D)\socket_util.obj \
+    $(OBJ_D)\sockopt.obj \
+    $(OBJ_D)\apr_getpass.obj \
+    $(OBJ_D)\poll.obj \
+    $(OBJ_D)\pollcb.obj \
+    $(OBJ_D)\pollset.obj \
+    $(OBJ_D)\select.obj \
+    $(OBJ_D)\apr_random.obj \
+    $(OBJ_D)\sha2.obj \
+    $(OBJ_D)\sha2_glue.obj \
+    $(OBJ_D)\shm.obj \
+    $(OBJ_D)\apr_cpystrn.obj \
+    $(OBJ_D)\apr_fnmatch.obj \
+    $(OBJ_D)\apr_snprintf.obj \
+    $(OBJ_D)\apr_strings.obj \
+    $(OBJ_D)\apr_strnatcmp.obj \
+    $(OBJ_D)\apr_strtok.obj \
+    $(OBJ_D)\apr_hash.obj \
+    $(OBJ_D)\apr_tables.obj \
+    $(OBJ_D)\proc.obj \
+    $(OBJ_D)\signals.obj \
+    $(OBJ_D)\thread.obj \
+    $(OBJ_D)\threadpriv.obj \
+    $(OBJ_D)\time.obj \
+    $(OBJ_D)\timestr.obj \
+    $(OBJ_D)\groupinfo.obj \
+    $(OBJ_D)\userinfo.obj
+
+$(OBJ_D)\apr_atomic.obj: $(SRC_D)/atomic/win32/apr_atomic.c
+    $(CC) -o$(OBJ_D)\apr_atomic.obj $(LIB_CFLAGS) -c $(SRC_D)/atomic/win32/apr_atomic.c
+$(OBJ_D)\dso.obj: $(SRC_D)/dso/win32/dso.c
+    $(CC) -o$(OBJ_D)\dso.obj $(LIB_CFLAGS) -c $(SRC_D)/dso/win32/dso.c
+$(OBJ_D)\buffer.obj: $(SRC_D)/file_io/win32/buffer.c
+    $(CC) -o$(OBJ_D)\buffer.obj $(LIB_CFLAGS) -c $(SRC_D)/file_io/win32/buffer.c
+$(OBJ_D)\copy.obj: $(SRC_D)/file_io/unix/copy.c
+    $(CC) -o$(OBJ_D)\copy.obj $(LIB_CFLAGS) -c $(SRC_D)/file_io/unix/copy.c
+$(OBJ_D)\dir.obj: $(SRC_D)/file_io/win32/dir.c
+    $(CC) -o$(OBJ_D)\dir.obj $(LIB_CFLAGS) -c $(SRC_D)/file_io/win32/dir.c
+$(OBJ_D)\fileacc.obj: $(SRC_D)/file_io/unix/fileacc.c
+    $(CC) -o$(OBJ_D)\fileacc.obj $(LIB_CFLAGS) -c $(SRC_D)/file_io/unix/fileacc.c
+$(OBJ_D)\filedup.obj: $(SRC_D)/file_io/win32/filedup.c
+    $(CC) -o$(OBJ_D)\filedup.obj $(LIB_CFLAGS) -c $(SRC_D)/file_io/win32/filedup.c
+$(OBJ_D)\filepath.obj: $(SRC_D)/file_io/win32/filepath.c
+    $(CC) -o$(OBJ_D)\filepath.obj $(LIB_CFLAGS) -c $(SRC_D)/file_io/win32/filepath.c
+$(OBJ_D)\filepath_util.obj: $(SRC_D)/file_io/unix/filepath_util.c
+    $(CC) -o$(OBJ_D)\filepath_util.obj $(LIB_CFLAGS) -c $(SRC_D)/file_io/unix/filepath_util.c
+$(OBJ_D)\filestat.obj: $(SRC_D)/file_io/win32/filestat.c
+    $(CC) -o$(OBJ_D)\filestat.obj $(LIB_CFLAGS) -c $(SRC_D)/file_io/win32/filestat.c
+$(OBJ_D)\filesys.obj: $(SRC_D)/file_io/win32/filesys.c
+    $(CC) -o$(OBJ_D)\filesys.obj $(LIB_CFLAGS) -c $(SRC_D)/file_io/win32/filesys.c
+$(OBJ_D)\flock.obj: $(SRC_D)/file_io/win32/flock.c
+    $(CC) -o$(OBJ_D)\flock.obj $(LIB_CFLAGS) -c $(SRC_D)/file_io/win32/flock.c
+$(OBJ_D)\fullrw.obj: $(SRC_D)/file_io/unix/fullrw.c
+    $(CC) -o$(OBJ_D)\fullrw.obj $(LIB_CFLAGS) -c $(SRC_D)/file_io/unix/fullrw.c
+$(OBJ_D)\mktemp.obj: $(SRC_D)/file_io/unix/mktemp.c
+    $(CC) -o$(OBJ_D)\mktemp.obj $(LIB_CFLAGS) -c $(SRC_D)/file_io/unix/mktemp.c
+$(OBJ_D)\open.obj: $(SRC_D)/file_io/win32/open.c
+    $(CC) -o$(OBJ_D)\open.obj $(LIB_CFLAGS) -c $(SRC_D)/file_io/win32/open.c
+$(OBJ_D)\pipe.obj: $(SRC_D)/file_io/win32/pipe.c
+    $(CC) -o$(OBJ_D)\pipe.obj $(LIB_CFLAGS) -c $(SRC_D)/file_io/win32/pipe.c
+$(OBJ_D)\readwrite.obj: $(SRC_D)/file_io/win32/readwrite.c
+    $(CC) -o$(OBJ_D)\readwrite.obj $(LIB_CFLAGS) -c $(SRC_D)/file_io/win32/readwrite.c
+$(OBJ_D)\seek.obj: $(SRC_D)/file_io/win32/seek.c
+    $(CC) -o$(OBJ_D)\seek.obj $(LIB_CFLAGS) -c $(SRC_D)/file_io/win32/seek.c
+$(OBJ_D)\tempdir.obj: $(SRC_D)/file_io/unix/tempdir.c
+    $(CC) -o$(OBJ_D)\tempdir.obj $(LIB_CFLAGS) -c $(SRC_D)/file_io/unix/tempdir.c
+$(OBJ_D)\proc_mutex.obj: $(SRC_D)/locks/win32/proc_mutex.c
+    $(CC) -o$(OBJ_D)\proc_mutex.obj $(LIB_CFLAGS) -c $(SRC_D)/locks/win32/proc_mutex.c
+$(OBJ_D)\thread_cond.obj: $(SRC_D)/locks/win32/thread_cond.c
+    $(CC) -o$(OBJ_D)\thread_cond.obj $(LIB_CFLAGS) -c $(SRC_D)/locks/win32/thread_cond.c
+$(OBJ_D)\thread_mutex.obj: $(SRC_D)/locks/win32/thread_mutex.c
+    $(CC) -o$(OBJ_D)\thread_mutex.obj $(LIB_CFLAGS) -c $(SRC_D)/locks/win32/thread_mutex.c
+$(OBJ_D)\thread_rwlock.obj: $(SRC_D)/locks/win32/thread_rwlock.c
+    $(CC) -o$(OBJ_D)\thread_rwlock.obj $(LIB_CFLAGS) -c $(SRC_D)/locks/win32/thread_rwlock.c
+$(OBJ_D)\apr_pools.obj: $(SRC_D)/memory/unix/apr_pools.c
+    $(CC) -o$(OBJ_D)\apr_pools.obj $(LIB_CFLAGS) -c $(SRC_D)/memory/unix/apr_pools.c
+$(OBJ_D)\apr_app.obj: $(SRC_D)/misc/win32/apr_app.c
+    $(CC) -o$(OBJ_D)\apr_app.obj $(LIB_CFLAGS) -c $(SRC_D)/misc/win32/apr_app.c
+$(OBJ_D)\charset.obj: $(SRC_D)/misc/win32/charset.c
+    $(CC) -o$(OBJ_D)\charset.obj $(LIB_CFLAGS) -c $(SRC_D)/misc/win32/charset.c
+$(OBJ_D)\env.obj: $(SRC_D)/misc/win32/env.c
+    $(CC) -o$(OBJ_D)\env.obj $(LIB_CFLAGS) -c $(SRC_D)/misc/win32/env.c
+$(OBJ_D)\errorcodes.obj: $(SRC_D)/misc/unix/errorcodes.c
+    $(CC) -o$(OBJ_D)\errorcodes.obj $(LIB_CFLAGS) -c $(SRC_D)/misc/unix/errorcodes.c
+$(OBJ_D)\getopt.obj: $(SRC_D)/misc/unix/getopt.c
+    $(CC) -o$(OBJ_D)\getopt.obj $(LIB_CFLAGS) -c $(SRC_D)/misc/unix/getopt.c
+$(OBJ_D)\internal.obj: $(SRC_D)/misc/win32/internal.c
+    $(CC) -o$(OBJ_D)\internal.obj $(LIB_CFLAGS) -c $(SRC_D)/misc/win32/internal.c
+$(OBJ_D)\misc.obj: $(SRC_D)/misc/win32/misc.c
+    $(CC) -o$(OBJ_D)\misc.obj $(LIB_CFLAGS) -c $(SRC_D)/misc/win32/misc.c
+$(OBJ_D)\otherchild.obj: $(SRC_D)/misc/unix/otherchild.c
+    $(CC) -o$(OBJ_D)\otherchild.obj $(LIB_CFLAGS) -c $(SRC_D)/misc/unix/otherchild.c
+$(OBJ_D)\rand.obj: $(SRC_D)/misc/win32/rand.c
+    $(CC) -o$(OBJ_D)\rand.obj $(LIB_CFLAGS) -c $(SRC_D)/misc/win32/rand.c
+$(OBJ_D)\start.obj: $(SRC_D)/misc/win32/start.c
+    $(CC) -o$(OBJ_D)\start.obj $(LIB_CFLAGS) -c $(SRC_D)/misc/win32/start.c
+$(OBJ_D)\utf8.obj: $(SRC_D)/misc/win32/utf8.c
+    $(CC) -o$(OBJ_D)\utf8.obj $(LIB_CFLAGS) -c $(SRC_D)/misc/win32/utf8.c
+$(OBJ_D)\version.obj: $(SRC_D)/misc/unix/version.c
+    $(CC) -o$(OBJ_D)\version.obj $(LIB_CFLAGS) -c $(SRC_D)/misc/unix/version.c
+$(OBJ_D)\common.obj: $(SRC_D)/mmap/unix/common.c
+    $(CC) -o$(OBJ_D)\common.obj $(LIB_CFLAGS) -c $(SRC_D)/mmap/unix/common.c
+$(OBJ_D)\mmap.obj: $(SRC_D)/mmap/win32/mmap.c
+    $(CC) -o$(OBJ_D)\mmap.obj $(LIB_CFLAGS) -c $(SRC_D)/mmap/win32/mmap.c
+$(OBJ_D)\inet_ntop.obj: $(SRC_D)/network_io/unix/inet_ntop.c
+    $(CC) -o$(OBJ_D)\inet_ntop.obj $(LIB_CFLAGS) -c $(SRC_D)/network_io/unix/inet_ntop.c
+$(OBJ_D)\inet_pton.obj: $(SRC_D)/network_io/unix/inet_pton.c
+    $(CC) -o$(OBJ_D)\inet_pton.obj $(LIB_CFLAGS) -c $(SRC_D)/network_io/unix/inet_pton.c
+$(OBJ_D)\multicast.obj: $(SRC_D)/network_io/unix/multicast.c
+    $(CC) -o$(OBJ_D)\multicast.obj $(LIB_CFLAGS) -c $(SRC_D)/network_io/unix/multicast.c
+$(OBJ_D)\sendrecv.obj: $(SRC_D)/network_io/win32/sendrecv.c
+    $(CC) -o$(OBJ_D)\sendrecv.obj $(LIB_CFLAGS) -c $(SRC_D)/network_io/win32/sendrecv.c
+$(OBJ_D)\sockaddr.obj: $(SRC_D)/network_io/unix/sockaddr.c
+    $(CC) -o$(OBJ_D)\sockaddr.obj $(LIB_CFLAGS) -c $(SRC_D)/network_io/unix/sockaddr.c
+$(OBJ_D)\sockets.obj: $(SRC_D)/network_io/win32/sockets.c
+    $(CC) -o$(OBJ_D)\sockets.obj $(LIB_CFLAGS) -c $(SRC_D)/network_io/win32/sockets.c
+$(OBJ_D)\socket_util.obj: $(SRC_D)/network_io/unix/socket_util.c
+    $(CC) -o$(OBJ_D)\socket_util.obj $(LIB_CFLAGS) -c $(SRC_D)/network_io/unix/socket_util.c
+$(OBJ_D)\sockopt.obj: $(SRC_D)/network_io/win32/sockopt.c
+    $(CC) -o$(OBJ_D)\sockopt.obj $(LIB_CFLAGS) -c $(SRC_D)/network_io/win32/sockopt.c
+$(OBJ_D)\apr_getpass.obj: $(SRC_D)/passwd/apr_getpass.c
+    $(CC) -o$(OBJ_D)\apr_getpass.obj $(LIB_CFLAGS) -c $(SRC_D)/passwd/apr_getpass.c
+$(OBJ_D)\poll.obj: $(SRC_D)/poll/unix/poll.c
+    $(CC) -o$(OBJ_D)\poll.obj $(LIB_CFLAGS) -c $(SRC_D)/poll/unix/poll.c
+$(OBJ_D)\pollcb.obj: $(SRC_D)/poll/unix/pollcb.c
+    $(CC) -o$(OBJ_D)\pollcb.obj $(LIB_CFLAGS) -c $(SRC_D)/poll/unix/pollcb.c
+$(OBJ_D)\pollset.obj: $(SRC_D)/poll/unix/pollset.c
+    $(CC) -o$(OBJ_D)\pollset.obj $(LIB_CFLAGS) -c $(SRC_D)/poll/unix/pollset.c
+$(OBJ_D)\select.obj: $(SRC_D)/poll/unix/select.c
+    $(CC) -o$(OBJ_D)\select.obj $(LIB_CFLAGS) -c $(SRC_D)/poll/unix/select.c
+$(OBJ_D)\apr_random.obj: $(SRC_D)/random/unix/apr_random.c
+    $(CC) -o$(OBJ_D)\apr_random.obj $(LIB_CFLAGS) -c $(SRC_D)/random/unix/apr_random.c
+$(OBJ_D)\sha2.obj: $(SRC_D)/random/unix/sha2.c
+    $(CC) -o$(OBJ_D)\sha2.obj $(LIB_CFLAGS) -c $(SRC_D)/random/unix/sha2.c
+$(OBJ_D)\sha2_glue.obj: $(SRC_D)/random/unix/sha2_glue.c
+    $(CC) -o$(OBJ_D)\sha2_glue.obj $(LIB_CFLAGS) -c $(SRC_D)/random/unix/sha2_glue.c
+$(OBJ_D)\shm.obj: $(SRC_D)/shmem/win32/shm.c
+    $(CC) -o$(OBJ_D)\shm.obj $(LIB_CFLAGS) -c $(SRC_D)/shmem/win32/shm.c
+$(OBJ_D)\apr_cpystrn.obj: $(SRC_D)/strings/apr_cpystrn.c
+    $(CC) -o$(OBJ_D)\apr_cpystrn.obj $(LIB_CFLAGS) -c $(SRC_D)/strings/apr_cpystrn.c
+$(OBJ_D)\apr_fnmatch.obj: $(SRC_D)/strings/apr_fnmatch.c
+    $(CC) -o$(OBJ_D)\apr_fnmatch.obj $(LIB_CFLAGS) -c $(SRC_D)/strings/apr_fnmatch.c
+$(OBJ_D)\apr_snprintf.obj: $(SRC_D)/strings/apr_snprintf.c
+    $(CC) -o$(OBJ_D)\apr_snprintf.obj $(LIB_CFLAGS) -c $(SRC_D)/strings/apr_snprintf.c
+$(OBJ_D)\apr_strings.obj: $(SRC_D)/strings/apr_strings.c
+    $(CC) -o$(OBJ_D)\apr_strings.obj $(LIB_CFLAGS) -c $(SRC_D)/strings/apr_strings.c
+$(OBJ_D)\apr_strnatcmp.obj: $(SRC_D)/strings/apr_strnatcmp.c
+    $(CC) -o$(OBJ_D)\apr_strnatcmp.obj $(LIB_CFLAGS) -c $(SRC_D)/strings/apr_strnatcmp.c
+$(OBJ_D)\apr_strtok.obj: $(SRC_D)/strings/apr_strtok.c
+    $(CC) -o$(OBJ_D)\apr_strtok.obj $(LIB_CFLAGS) -c $(SRC_D)/strings/apr_strtok.c
+$(OBJ_D)\apr_hash.obj: $(SRC_D)/tables/apr_hash.c
+    $(CC) -o$(OBJ_D)\apr_hash.obj $(LIB_CFLAGS) -c $(SRC_D)/tables/apr_hash.c
+$(OBJ_D)\apr_tables.obj: $(SRC_D)/tables/apr_tables.c
+    $(CC) -o$(OBJ_D)\apr_tables.obj $(LIB_CFLAGS) -c $(SRC_D)/tables/apr_tables.c
+$(OBJ_D)\proc.obj: $(SRC_D)/threadproc/win32/proc.c
+    $(CC) -o$(OBJ_D)\proc.obj $(LIB_CFLAGS) -c $(SRC_D)/threadproc/win32/proc.c
+$(OBJ_D)\signals.obj: $(SRC_D)/threadproc/win32/signals.c
+    $(CC) -o$(OBJ_D)\signals.obj $(LIB_CFLAGS) -c $(SRC_D)/threadproc/win32/signals.c
+$(OBJ_D)\thread.obj: $(SRC_D)/threadproc/win32/thread.c
+    $(CC) -o$(OBJ_D)\thread.obj $(LIB_CFLAGS) -c $(SRC_D)/threadproc/win32/thread.c
+$(OBJ_D)\threadpriv.obj: $(SRC_D)/threadproc/win32/threadpriv.c
+    $(CC) -o$(OBJ_D)\threadpriv.obj $(LIB_CFLAGS) -c $(SRC_D)/threadproc/win32/threadpriv.c
+$(OBJ_D)\time.obj: $(SRC_D)/time/win32/time.c
+    $(CC) -o$(OBJ_D)\time.obj $(LIB_CFLAGS) -c $(SRC_D)/time/win32/time.c
+$(OBJ_D)\timestr.obj: $(SRC_D)/time/win32/timestr.c
+    $(CC) -o$(OBJ_D)\timestr.obj $(LIB_CFLAGS) -c $(SRC_D)/time/win32/timestr.c
+$(OBJ_D)\groupinfo.obj: $(SRC_D)/user/win32/groupinfo.c
+    $(CC) -o$(OBJ_D)\groupinfo.obj $(LIB_CFLAGS) -c $(SRC_D)/user/win32/groupinfo.c
+$(OBJ_D)\userinfo.obj: $(SRC_D)/user/win32/userinfo.c
+    $(CC) -o$(OBJ_D)\userinfo.obj $(LIB_CFLAGS) -c $(SRC_D)/user/win32/userinfo.c
+
+$(O_APR): $(APROBJS)
+    if exist $(O_APR) $(RM) $(O_APR)
+    $(MKLIB) $(O_APR) @&&!
++$(**: = &^
++)
+!
+
+###################################################################
+all: banner clean_lib $(TMP_D) $(OUT_D) headers lib
+
+banner:
+    @echo Building apr
+    @echo $(APROBJS)
+
+clean_lib:
+    if exist $(O_APR) $(RM) $(O_APR)
+
+$(TMP_D):
+    if not exist "$(TMP_D)" ( $(MKDIR) "$(TMP_D)" )
+
+$(OUT_D):
+    if not exist "$(OUT_D)" ( $(MKDIR) "$(OUT_D)" )
+
+headers: $(HEADER)
+    @
+
+lib: $(LIBS_DEP)
+

+ 129 - 0
libs/apr/Makefile.in

@@ -0,0 +1,129 @@
+
+srcdir=@srcdir@
+VPATH=@srcdir@
+top_srcdir=@apr_srcdir@
+top_blddir=@apr_builddir@
+
+#
+# APR (Apache Portable Runtime) library Makefile.
+#
+CPP = @CPP@
+
+# get substituted into some targets
+APR_MAJOR_VERSION=@APR_MAJOR_VERSION@
+
+#
+# Macros for supporting directories
+#
+INCDIR=./include
+OSDIR=$(top_srcdir)/include/arch/@OSDIR@
+DEFOSDIR=$(INCDIR)/arch/@DEFAULT_OSDIR@
+INCLUDES=-I$(INCDIR) -I$(OSDIR) -I$(DEFOSDIR) -I$(top_srcdir)/include/arch/@DEFAULT_OSDIR@ -I$(top_srcdir)/include
+
+#
+# Macros for target determination
+#
+CLEAN_SUBDIRS= test
+INSTALL_SUBDIRS=@INSTALL_SUBDIRS@
+
+TARGET_LIB = lib@[email protected]
+APR_PCFILE = apr-$(APR_MAJOR_VERSION).pc
+APR_CONFIG = apr-$(APR_MAJOR_VERSION)-config
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+
+#
+# Rules for building specific targets, starting with 'all' for
+# building the entire package.
+#
+TARGETS = $(TARGET_LIB) apr.exp apr-config.out build/apr_rules.out
+
+LT_VERSION = @LT_VERSION@
+
+# bring in rules.mk for standard functionality
+@INCLUDE_RULES@
+@INCLUDE_OUTPUTS@
+
+CLEAN_TARGETS = apr-config.out apr.exp exports.c export_vars.c .make.dirs \
+	build/apr_rules.out
+DISTCLEAN_TARGETS = config.cache config.log config.status \
+	include/apr.h include/arch/unix/apr_private.h \
+	libtool $(APR_CONFIG) build/apr_rules.mk apr.pc \
+	build/pkg/pkginfo
+EXTRACLEAN_TARGETS = configure aclocal.m4 include/arch/unix/apr_private.h.in \
+	build-outputs.mk build/ltcf-c.sh build/aclocal.m4 \
+	build/ltconfig build/ltmain.sh \
+	build/argz.m4 build/libtool.m4 build/ltoptions.m4 \
+	build/ltsugar.m4 build/ltversion.m4 build/lt~obsolete.m4
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+bindir=@bindir@
+libdir=@libdir@
+includedir=@includedir@
+installbuilddir=@installbuilddir@
+
+# Create apr-config script suitable for the install tree
+apr-config.out: $(APR_CONFIG)
+	sed 's,^\(location=\).*$$,\1installed,' < $(APR_CONFIG) > $@
+
+# Create apr_rules.mk suitable for the install tree
+build/apr_rules.out: build/apr_rules.mk
+	sed -e 's,^\(apr_build.*=\).*$$,\1$(installbuilddir),' -e 's,^\(top_build.*=\).*$$,\1$(installbuilddir),' < build/apr_rules.mk > $@
+
+install: $(TARGETS)
+	$(APR_MKDIR) $(DESTDIR)$(libdir) $(DESTDIR)$(bindir) $(DESTDIR)$(installbuilddir) \
+		     $(DESTDIR)$(libdir)/pkgconfig $(DESTDIR)$(includedir)
+	$(INSTALL_DATA) $(top_blddir)/include/apr.h $(DESTDIR)$(includedir)
+	for f in $(top_srcdir)/include/apr_*.h; do \
+	    $(INSTALL_DATA) $${f} $(DESTDIR)$(includedir); \
+	done
+	$(LIBTOOL) --mode=install $(INSTALL) -m 755 $(TARGET_LIB) $(DESTDIR)$(libdir)
+	$(INSTALL_DATA) apr.exp $(DESTDIR)$(libdir)/apr.exp
+	$(INSTALL_DATA) apr.pc $(DESTDIR)$(libdir)/pkgconfig/$(APR_PCFILE)
+	for f in libtool shlibtool; do \
+	    if test -f $${f}; then $(INSTALL) -m 755 $${f} $(DESTDIR)$(installbuilddir); fi; \
+	done
+	$(INSTALL) -m 755 $(top_srcdir)/build/mkdir.sh $(DESTDIR)$(installbuilddir)
+	for f in make_exports.awk make_var_export.awk; do \
+	    $(INSTALL_DATA) $(top_srcdir)/build/$${f} $(DESTDIR)$(installbuilddir); \
+	done
+	$(INSTALL_DATA) build/apr_rules.out $(DESTDIR)$(installbuilddir)/apr_rules.mk
+	$(INSTALL) -m 755 apr-config.out $(DESTDIR)$(bindir)/$(APR_CONFIG)
+	@if [ $(INSTALL_SUBDIRS) != "none" ]; then \
+            for i in $(INSTALL_SUBDIRS); do \
+	        ( cd $$i ; $(MAKE) DESTDIR=$(DESTDIR) install ); \
+	    done \
+	fi
+
+$(TARGET_LIB): $(OBJECTS)
+	$(LINK) @lib_target@ $(ALL_LIBS)
+
+exports.c: $(HEADERS)
+	$(APR_MKEXPORT) $(HEADERS) > $@
+
+export_vars.c: $(HEADERS)
+	$(APR_MKVAREXPORT) $(HEADERS) > $@
+
+apr.exp: exports.c export_vars.c
+	@echo "#! lib@[email protected]" > $@
+	@echo "* This file was AUTOGENERATED at build time." >> $@
+	@echo "* Please do not edit by hand." >> $@
+	$(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) exports.c | grep "ap_hack_" | sed -e 's/^.*[)]\(.*\);$$/\1/' >> $@
+	$(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) export_vars.c | sed -e 's/^\#[^!]*//' | sed -e '/^$$/d' >> $@
+
+dox:
+	doxygen $(top_srcdir)/docs/doxygen.conf
+
+gcov: 
+	@build/run-gcov.sh
+
+test: check
+check: $(TARGET_LIB)
+	cd test && $(MAKE) all check
+
+etags:
+	etags `find . -name '*.[ch]'`
+
+# DO NOT REMOVE
+docs: $(INCDIR)/*.h

+ 181 - 0
libs/apr/Makefile.win

@@ -0,0 +1,181 @@
+# Makefile.win for Win32 APR alone
+#
+# Targets are:
+#
+#     buildall - compile everything
+#     checkall - run APR regression tests
+#     install  - compile everything
+#     clean    - mop up everything
+#
+# You can override the build mechansim, choose only one;
+#
+#     USEMAK=1 - compile from exported make files
+#     USEDSW=1 - compile from .dsw / .dsp VC6 projects
+#     USESLN=1 - compile from converted .sln / .vcproj VC7+ files
+#
+# Define ARCH to your desired preference (your PATH must point
+# to the correct compiler tools!)  Choose only one;
+#
+#     ARCH="Win32 Release"
+#     ARCH="Win32 Debug"
+#     ARCH="Win32 Release9x"
+#     ARCH="Win32 Debug9x"
+#     ARCH="x64 Release"
+#     ARCH="x64 Debug"
+#
+# For example;
+#
+#   nmake -f Makefile.win PREFIX=C:\APR buildall checkall installall clean
+#
+
+!IF EXIST("apr.sln") && ([devenv /help > NUL 2>&1] == 0) \
+    && !defined(USEMAK) && !defined(USEDSW)
+USESLN=1
+USEMAK=0
+USEDSW=0
+!ELSEIF EXIST("apr.mak") && !defined(USEDSW)
+USESLN=0
+USEMAK=1
+USEDSW=0
+!ELSE
+USESLN=0
+USEMAK=0
+USEDSW=1
+!ENDIF
+
+PREFIX=..\apr-dist
+
+!IF [$(COMSPEC) /c cl /nologo /? \
+	| $(SystemRoot)\System32\find.exe "x64" >NUL ] == 0
+ARCH=x64 Release
+!ELSE
+ARCH=Win32 Release
+!ENDIF
+
+!MESSAGE ARCH        = $(ARCH)
+!MESSAGE PREFIX      = $(PREFIX)  (install path)
+
+
+# Utility and Translation things, nothing here for the user
+#
+!IF "$(ARCH)" == "Win32 Release"
+SLNARCH=Release|Win32
+ARCHOSPATH=Release
+LIBSOSPATH=LibR
+!ELSEIF "$(ARCH)" == "Win32 Debug"
+SLNARCH=Debug|Win32
+ARCHOSPATH=Debug
+LIBSOSPATH=LibD
+!ELSEIF "$(ARCH)" == "Win32 Release9x"
+SLNARCH=Release9x|Win32
+ARCHOSPATH=9x\Release
+LIBSOSPATH=9x\LibR
+!ELSEIF "$(ARCH)" == "Win32 Debug9x"
+SLNARCH=Debug9x|Win32
+ARCHOSPATH=9x\Debug
+LIBSOSPATH=9x\LibD
+!ELSEIF "$(ARCH)" == "x64 Release"
+SLNARCH=Release|x64
+ARCHOSPATH=x64\Release
+LIBSOSPATH=x64\LibR
+!ELSEIF "$(ARCH)" == "x64 Debug"
+SLNARCH=Debug|x64
+ARCHOSPATH=x64\Debug
+LIBSOSPATH=x64\LibD
+!ENDIF
+
+!IFNDEF MAKEOPT
+# Only default the behavior if MAKEOPT= is omitted
+!IFDEF _NMAKE_VER
+# Microsoft NMake options
+MAKEOPT=-nologo
+!ELSEIF "$(MAKE)" == "make"
+# Borland make options?  Not really supported (yet)
+MAKEOPT=-s -N
+!ENDIF
+!ENDIF
+
+
+all: buildall checkall
+
+!IF $(USEMAK) == 1
+
+clean:
+	$(MAKE) $(MAKEOPT) -f Makefile.win ARCH="$(ARCH)" \
+		CTARGET=CLEAN buildall
+
+buildall:
+	$(MAKE) $(MAKEOPT) -f apr.mak         CFG="apr - $(ARCH)" RECURSE=0 $(CTARGET)
+	$(MAKE) $(MAKEOPT) -f libapr.mak      CFG="libapr - $(ARCH)" RECURSE=0 $(CTARGET)
+	cd build
+	 $(MAKE) $(MAKEOPT) -f aprapp.mak     CFG="aprapp - $(ARCH)" RECURSE=0 $(CTARGET)
+	 $(MAKE) $(MAKEOPT) -f libaprapp.mak  CFG="libaprapp - $(ARCH)" RECURSE=0 $(CTARGET)
+	cd ..
+
+!ELSEIF $(USESLN) == 1
+
+clean:
+	-devenv apr.sln /useenv /clean "$(SLNARCH)" /project libaprapp
+	-devenv apr.sln /useenv /clean "$(SLNARCH)" /project libapr
+	-devenv apr.sln /useenv /clean "$(SLNARCH)" /project aprapp
+	-devenv apr.sln /useenv /clean "$(SLNARCH)" /project apr
+
+buildall:
+	devenv apr.sln /useenv /build "$(SLNARCH)" /project apr
+	devenv apr.sln /useenv /build "$(SLNARCH)" /project aprapp
+	devenv apr.sln /useenv /build "$(SLNARCH)" /project libapr
+	devenv apr.sln /useenv /build "$(SLNARCH)" /project libaprapp
+
+!ELSE
+#	$(USEDSP) == 1
+
+clean:
+	-msdev apr.dsw /USEENV /MAKE "libaprapp - $(ARCH)" /CLEAN
+	-msdev apr.dsw /USEENV /MAKE "libapr - $(ARCH)" /CLEAN
+	-msdev apr.dsw /USEENV /MAKE "aprapp - $(ARCH)" /CLEAN
+	-msdev apr.dsw /USEENV /MAKE "apr - $(ARCH)" /CLEAN
+
+buildall:
+	@msdev apr.dsw /USEENV /MAKE "apr - $(ARCH)"
+	@msdev apr.dsw /USEENV /MAKE "aprapp - $(ARCH)"
+	@msdev apr.dsw /USEENV /MAKE "libapr - $(ARCH)"
+	@msdev apr.dsw /USEENV /MAKE "libaprapp - $(ARCH)"
+
+!ENDIF
+
+
+checkapr:
+	cd test
+	 $(MAKE) $(MAKEOPT) -f Makefile.win MODEL=static \
+		OUTDIR=$(LIBSOSPATH) check
+	 $(MAKE) $(MAKEOPT) -f Makefile.win MODEL=dynamic \
+		OUTDIR=$(ARCHOSPATH) check
+	 cd ..
+
+checkall: checkapr
+
+
+install:
+	echo Y >.y
+	echo A >.A
+	@if NOT EXIST "$(PREFIX)\."		mkdir "$(PREFIX)"
+	@if NOT EXIST "$(PREFIX)\bin\."		mkdir "$(PREFIX)\bin"
+	@if NOT EXIST "$(PREFIX)\include\."	mkdir "$(PREFIX)\include"
+	@if NOT EXIST "$(PREFIX)\lib\."		mkdir "$(PREFIX)\lib"
+	copy CHANGES "$(PREFIX)\APR-CHANGES.txt" <.y
+	copy LICENSE "$(PREFIX)\APR-LICENSE.txt" <.y
+	copy NOTICE  "$(PREFIX)\APR-NOTICE.txt"  <.y
+	xcopy include\*.h		"$(PREFIX)\include\" /d < .a
+	copy $(LIBSOSPATH)\apr-1.lib		"$(PREFIX)\lib\" <.y
+	copy $(LIBSOSPATH)\apr-1.pdb		"$(PREFIX)\lib\" <.y
+	copy $(LIBSOSPATH)\aprapp-1.lib		"$(PREFIX)\lib\" <.y
+	copy $(LIBSOSPATH)\aprapp-1.pdb		"$(PREFIX)\lib\" <.y
+	copy $(ARCHOSPATH)\libaprapp-1.lib	"$(PREFIX)\lib\" <.y
+	copy $(ARCHOSPATH)\libaprapp-1.pdb	"$(PREFIX)\lib\" <.y
+	copy $(ARCHOSPATH)\libapr-1.lib		"$(PREFIX)\lib\" <.y
+	copy $(ARCHOSPATH)\libapr-1.exp		"$(PREFIX)\lib\" <.y
+	copy $(ARCHOSPATH)\libapr-1.dll		"$(PREFIX)\bin\" <.y
+	copy $(ARCHOSPATH)\libapr-1.pdb		"$(PREFIX)\bin\" <.y
+	del .y
+	del .a
+

+ 15 - 0
libs/apr/NOTICE

@@ -0,0 +1,15 @@
+Apache Portable Runtime
+Copyright (c) 2011 The Apache Software Foundation.
+
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/).
+
+Portions of this software were developed at the National Center
+for Supercomputing Applications (NCSA) at the University of
+Illinois at Urbana-Champaign.
+
+This software contains code derived from the RSA Data Security
+Inc. MD5 Message-Digest Algorithm.
+
+This software contains code derived from UNIX V7, Copyright(C)
+Caldera International Inc.

+ 430 - 0
libs/apr/NWGNUmakefile

@@ -0,0 +1,430 @@
+#
+# Define our macros with defaults if we dont got them already.
+#
+ifndef APR_WORK
+export APR_WORK = $(CURDIR)
+endif
+ifneq "$(wildcard $(APR_WORK)/include/apr_version.h)" "$(APR_WORK)/include/apr_version.h"
+$(error APR_WORK does not point to a valid APR source tree) 
+endif
+ifndef APU_WORK
+export APU_WORK = $(CURDIR)/../apr-util
+endif
+ifneq "$(wildcard $(APU_WORK)/include/apu_version.h)" "$(APU_WORK)/include/apu_version.h"
+$(error APU_WORK does not point to a valid APU source tree) 
+endif
+
+#
+# Declare the sub-directories to be built here
+#
+
+SUBDIRS = \
+		build \
+		$(APU_WORK) \
+		$(EOLIST)
+
+ifeq "$(TEST)" "1"
+SUBDIRS += \
+		test \
+		$(APU_WORK)/test \
+		$(EOLIST)
+endif
+
+#
+# Get the 'head' of the build environment.  This includes default targets and
+# paths to tools
+#
+
+include $(APR_WORK)/build/NWGNUhead.inc
+
+#
+# build this level's files
+
+#
+# Make sure all needed macro's are defined
+#
+
+#
+# These directories will be at the beginning of the include list, followed by
+# INCDIRS
+#
+XINCDIRS	+= \
+			$(APR)/include \
+			$(APR)/include/arch/NetWare \
+			$(APR)/include/arch/unix \
+			$(APR)/memory/unix \
+			$(APR)/random/unix \
+			$(APU)/include \
+			$(APU)/xml \
+			$(LDAPSDK)/inc \
+			$(EOLIST)
+
+#
+# These flags will come after CFLAGS
+#
+XCFLAGS		+= \
+			$(EOLIST)
+
+#
+# These defines will come after DEFINES
+#
+XDEFINES	+= \
+			$(EOLIST)
+
+#
+# These flags will be added to the link.opt file
+#
+XLFLAGS		+= \
+			$(EOLIST)
+
+#
+# These values will be appended to the correct variables based on the value of
+# RELEASE
+#
+ifeq "$(RELEASE)" "debug"
+XINCDIRS	+= \
+			$(EOLIST)
+
+XCFLAGS		+= \
+			$(EOLIST)
+
+XDEFINES	+= \
+			$(EOLIST)
+
+XLFLAGS		+= \
+			$(EOLIST)
+endif
+
+ifeq "$(RELEASE)" "noopt"
+XINCDIRS	+= \
+			$(EOLIST)
+
+XCFLAGS		+= \
+			$(EOLIST)
+
+XDEFINES	+= \
+			$(EOLIST)
+
+XLFLAGS		+= \
+			$(EOLIST)
+endif
+
+ifeq "$(RELEASE)" "release"
+XINCDIRS	+= \
+			$(EOLIST)
+
+XCFLAGS		+= \
+			$(EOLIST)
+
+XDEFINES	+= \
+			$(EOLIST)
+
+XLFLAGS		+= \
+			$(EOLIST)
+endif
+
+#
+# These are used by the link target if an NLM is being generated
+# This is used by the link 'name' directive to name the nlm.  If left blank
+# TARGET_nlm (see below) will be used.
+#
+NLM_NAME	= aprlib
+
+#
+# This is used by the link '-desc ' directive.
+# If left blank, NLM_NAME will be used.
+#
+NLM_DESCRIPTION	= Apache Portability Runtime Library $(VERSION_STR) $(VERSION_SKT)
+
+#
+# This is used by the '-threadname' directive.  If left blank,
+# NLM_NAME Thread will be used.
+#
+NLM_THREAD_NAME	=
+#
+# If this is specified, it will override VERSION value in
+# $(APR_WORK)/build/NWGNUenvironment.inc
+#
+NLM_VERSION	=
+
+#
+# If this is specified, it will override the default of 64K
+#
+NLM_STACK_SIZE	=
+
+#
+# If this is specified it will be used by the link '-entry' directive
+#
+NLM_ENTRY_SYM	=
+
+#
+# If this is specified it will be used by the link '-exit' directive
+#
+NLM_EXIT_SYM	=
+
+#
+# If this is specified it will be used by the link '-check' directive
+#
+NLM_CHECK_SYM	=
+
+#
+# If this is specified it will be used by the link '-flags' directive
+#
+NLM_FLAGS	=
+
+#
+# If this is specified it will be linked in with the XDCData option in the def
+# file instead of the default of $(APR)/misc/netware/apache.xdc.  XDCData can
+# be disabled by setting APACHE_UNIPROC in the environment
+#
+XDCDATA		=
+
+#
+# Declare all target files (you must add your files here)
+#
+
+#
+# If there is an NLM target, put it here
+#
+TARGET_nlm = \
+	$(OBJDIR)/aprlib.nlm \
+	$(EOLIST)
+
+#
+# If there is an LIB target, put it here
+#
+TARGET_lib = \
+	$(OBJDIR)/aprlib.lib \
+	$(EOLIST)
+
+#
+# These are the OBJ files needed to create the NLM target above.
+# Paths must all use the '/' character
+#
+FILES_nlm_objs = \
+	$(OBJDIR)/libprews.o \
+	$(EOLIST)
+
+#
+# These are the LIB files needed to create the NLM target above.
+# These will be added as a library command in the link.opt file.
+#
+FILES_nlm_libs = \
+	$(PRELUDE) \
+	$(APRLIB) \
+	$(APULIB) \
+	$(APULDAPLIB) \
+	$(APUXMLLIB) \
+	$(EOLIST)
+
+#
+# These are the modules that the above NLM target depends on to load.
+# These will be added as a module command in the link.opt file.
+#
+FILES_nlm_modules = \
+	Libc \
+	$(EOLIST)
+
+# Include the Winsock libraries if Winsock is being used
+ifndef USE_STDSOCKETS
+FILES_nlm_modules += ws2_32 \
+	$(EOLIST)
+endif
+
+#If the LDAP support is defined then add the auto-load modules
+ifneq "$(LDAPSDK)" ""
+FILES_nlm_modules += \
+	lldapsdk \
+	lldapssl \
+	$(EOLIST)
+endif
+
+#
+# If the nlm has a msg file, put it's path here
+#
+FILE_nlm_msg =
+
+#
+# If the nlm has a hlp file put it's path here
+#
+FILE_nlm_hlp =
+
+#
+# If this is specified, it will override $(NWOS)\copyright.txt.
+#
+FILE_nlm_copyright =
+
+#
+# Any additional imports go here
+#
+FILES_nlm_Ximports = \
+	@libc.imp \
+	@netware.imp \
+	$(EOLIST)
+
+# Include the Winsock imports if Winsock is being used
+ifndef USE_STDSOCKETS
+FILES_nlm_Ximports +=  \
+	@ws2nlm.imp \
+	WSAStartupRTags \
+	WSACleanupRTag \
+	$(EOLIST)
+endif
+
+#If the LDAP support is defined then add the imports
+ifneq "$(LDAPSDK)" ""
+FILES_nlm_Ximports += \
+	@lldapsdk.imp \
+	@lldapssl.imp \
+	$(EOLIST)
+endif
+
+#
+# Any symbols exported to here
+#
+FILES_nlm_exports = \
+	@aprlib.imp \
+	$(EOLIST)
+
+#
+# These are the OBJ files needed to create the LIB target above.
+# Paths must all use the '/' character
+#
+FILES_lib_objs = \
+	$(OBJDIR)/apr_atomic.o \
+	$(OBJDIR)/apr_cpystrn.o \
+	$(OBJDIR)/apr_fnmatch.o \
+	$(OBJDIR)/apr_getpass.o \
+	$(OBJDIR)/apr_hash.o \
+	$(OBJDIR)/apr_pools.o \
+	$(OBJDIR)/apr_random.o \
+	$(OBJDIR)/apr_snprintf.o \
+	$(OBJDIR)/apr_strings.o \
+	$(OBJDIR)/apr_strnatcmp.o \
+	$(OBJDIR)/apr_strtok.o \
+	$(OBJDIR)/apr_tables.o \
+	$(OBJDIR)/buffer.o \
+	$(OBJDIR)/charset.o \
+	$(OBJDIR)/copy.o \
+	$(OBJDIR)/common.o \
+	$(OBJDIR)/dir.o \
+	$(OBJDIR)/dso.o \
+	$(OBJDIR)/errorcodes.o \
+	$(OBJDIR)/env.o \
+	$(OBJDIR)/fileacc.o \
+	$(OBJDIR)/filedup.o \
+	$(OBJDIR)/filepath.o \
+	$(OBJDIR)/filepath_util.o \
+	$(OBJDIR)/filestat.o \
+	$(OBJDIR)/filesys.o \
+	$(OBJDIR)/flock.o \
+	$(OBJDIR)/fullrw.o \
+	$(OBJDIR)/getopt.o \
+	$(OBJDIR)/groupinfo.o \
+	$(OBJDIR)/inet_pton.o \
+	$(OBJDIR)/inet_ntop.o \
+	$(OBJDIR)/mktemp.o \
+	$(OBJDIR)/mmap.o \
+	$(OBJDIR)/multicast.o \
+	$(OBJDIR)/open.o \
+	$(OBJDIR)/pipe.o \
+	$(OBJDIR)/otherchild.o \
+	$(OBJDIR)/proc.o \
+	$(OBJDIR)/procsup.o \
+	$(OBJDIR)/proc_mutex.o \
+	$(OBJDIR)/rand.o \
+	$(OBJDIR)/readwrite.o \
+	$(OBJDIR)/seek.o \
+	$(OBJDIR)/pollcb.o \
+	$(OBJDIR)/pollset.o \
+	$(OBJDIR)/select.o \
+	$(OBJDIR)/sendrecv.o \
+	$(OBJDIR)/sha2.o \
+	$(OBJDIR)/sha2_glue.o \
+	$(OBJDIR)/shm.o \
+	$(OBJDIR)/signals.o \
+	$(OBJDIR)/sockaddr.o \
+	$(OBJDIR)/socket_util.o \
+	$(OBJDIR)/sockets.o \
+	$(OBJDIR)/sockopt.o \
+	$(OBJDIR)/start.o \
+	$(OBJDIR)/tempdir.o \
+	$(OBJDIR)/thread.o \
+	$(OBJDIR)/thread_cond.o \
+	$(OBJDIR)/thread_mutex.o \
+	$(OBJDIR)/thread_rwlock.o \
+	$(OBJDIR)/threadpriv.o \
+	$(OBJDIR)/time.o \
+	$(OBJDIR)/timestr.o \
+	$(OBJDIR)/userinfo.o \
+	$(OBJDIR)/version.o \
+	$(OBJDIR)/waitio.o \
+	$(EOLIST)
+
+
+#
+# implement targets and dependancies (leave this section alone)
+#
+
+libs :: $(OBJDIR) $(TARGET_lib)
+
+nlms :: libs $(TARGET_nlm)
+
+#
+# Updated this target to create necessary directories and copy files to the
+# correct place.  (See $(APR_WORK)/build/NWGNUhead.inc for examples)
+#
+install :: nlms $(INSTDIRS) FORCE
+	$(call COPY,$(APR)/$(TARGET_nlm),$(INSTALLBASE)/)
+ifndef DEST
+	-$(call COPY,$(APR)/LICENSE,$(INSTALLBASE)/)
+	-$(call COPY,$(APR)/STATUS,$(INSTALLBASE)/STATUS.apr)
+	-$(call COPY,$(APR)/CHANGES,$(INSTALLBASE)/CHANGES.apr)
+	-$(call COPY,$(APU)/STATUS,$(INSTALLBASE)/STATUS.apu)
+	-$(call COPY,$(APU)/CHANGES,$(INSTALLBASE)/CHANGES.apu)
+	-$(call COPYR,$(APR)/docs,$(INSTALLBASE)/docs/)
+endif
+
+ifndef DEST
+installdev :: $(INSTDEVDIRS) FORCE
+	$(call COPY,$(APR)/include/*.h,$(INSTALLBASE)/include/)
+	$(call COPY,$(APR)/*.imp,$(INSTALLBASE)/lib/)
+	$(call COPY,$(APR)/misc/netware/*.xdc,$(INSTALLBASE)/lib/)
+	$(call COPY,$(APR)/$(TARGET_nlm),$(INSTALLBASE)/bin/)
+	$(call COPY,$(APRLIB),$(INSTALLBASE)/lib/)
+	$(call COPY,$(APULIB),$(INSTALLBASE)/lib/)
+	$(call COPY,$(APULDAPLIB),$(INSTALLBASE)/lib/)
+	$(call COPY,$(APUXMLLIB),$(INSTALLBASE)/lib/)
+
+$(INSTDEVDIRS) ::
+	$(call MKDIR,$@)
+endif
+
+#
+# Any specialized rules here
+#
+
+vpath %.c atomic/netware:strings:tables:passwd:lib:time/unix
+vpath %.c file_io/unix:locks/netware:misc/netware:misc/unix:threadproc/netware
+vpath %.c poll/unix:shmem/unix:support/unix:random/unix
+vpath %.c dso/netware:memory/unix:mmap/unix:user/netware
+
+# Use the win32 network_io if Winsock is being used
+ifndef USE_STDSOCKETS
+vpath %.c network_io/win32
+endif
+vpath %.c network_io/unix
+
+$(OBJDIR)/%.o: file_io/netware/%.c $(OBJDIR)/$(NLM_NAME)_cc.opt
+#	@echo Compiling $<
+	@echo $(DL)CC   $<$(DL)
+	$(CC) $< -cwd source -o=$@ @$(OBJDIR)/$(NLM_NAME)_cc.opt
+
+#
+# Include the 'tail' makefile that has targets that depend on variables defined
+# in this makefile
+#
+
+include $(APRBUILD)/NWGNUtail.inc
+
+

+ 167 - 0
libs/apr/README

@@ -0,0 +1,167 @@
+Apache Portable Runtime Library (APR)
+-------------------------------------
+
+   The Apache Portable Runtime Library provides a predictable and
+   consistent interface to underlying platform-specific
+   implementations, with an API to which software developers may code
+   and be assured of predictable if not identical behavior regardless
+   of the platform on which their software is built, relieving them of
+   the need to code special-case conditions to work around or take
+   advantage of platform-specific deficiencies or features.
+
+   APR and its companion libraries are implemented entirely in C
+   and provide a common programming interface across a wide variety
+   of operating system platforms without sacrificing performance.
+   Currently supported platforms include:
+
+     UNIX variants
+     Windows
+     Netware
+     Mac OS X
+     OS/2
+
+   To give a brief overview, the primary core
+   subsystems of APR 1.3 include the following:
+
+     Atomic operations
+     Dynamic Shared Object loading
+     File I/O
+     Locks (mutexes, condition variables, etc)
+     Memory management (high performance allocators)
+     Memory-mapped files
+     Multicast Sockets
+     Network I/O
+     Shared memory
+     Thread and Process management
+     Various data structures (tables, hashes, priority queues, etc)
+
+   For a more complete list, please refer to the following URLs:
+
+     http://apr.apache.org/docs/apr/modules.html
+
+   Users of APR 0.9 should be aware that migrating to the APR 1.x
+   programming interfaces may require some adjustments; APR 1.x is
+   neither source nor binary compatible with earlier APR 0.9 releases.
+   Users of APR 1.x can expect consistent interfaces and binary backwards
+   compatibility throughout the entire APR 1.x release cycle, as defined
+   in our versioning rules:
+
+     http://apr.apache.org/versioning.html
+
+   APR is already used extensively by the Apache HTTP Server
+   version 2 and the Subversion revision control system, to
+   name but a few.  We list all known projects using APR at
+   http://apr.apache.org/projects.html -- so please let us know
+   if you find our libraries useful in your own projects!
+
+
+Using a Subversion Checkout on Unix
+===================================
+
+If you are building APR from SVN, you need to perform a prerequisite
+step.  You must have autoconf, libtool and python installed for this 
+to work.  The prerequisite is simply;
+
+  ./buildconf
+
+If you are building APR from a distribution tarball, buildconf is
+already run for you, and you do not need autoconf, libtool or python
+installed or to run buildconf unless you have patched APR's buildconf 
+inputs (such as configure.in, build.conf, virtually any file within 
+the build/ tree, or you add or remove source files).
+
+Remember when updating from svn that you must rerun ./buildconf again 
+to effect any changes made to the build schema in your fresh update.
+
+
+Configuring and Building APR on Unix
+====================================
+
+Simply;
+
+   ./configure --prefix=/desired/path/of/apr
+   make
+   make test
+   make install
+
+Configure has additional options, ./configure --help will offer you
+those choices.  You may also add CC=compiler CFLAGS="compiler flags"
+etc. prior to the ./configure statement (on the same line).  Please
+be warned, some flags must be passed as part of the CC command,
+itself, in order for autoconf to make the right determinations. Eg.;
+
+  CC="gcc -m64" ./configure --prefix=/desired/path/of/apr
+
+will inform APR that you are compiling to a 64 bit CPU, and autoconf
+must consider that when setting up all of APR's internal and external
+type declarations.
+
+For more verbose output from testall, you may wish to invoke testall
+with the flag;
+
+   cd test
+   ./testall -v
+
+
+Building APR RPM files on Linux
+===============================
+
+Run the following to create SRPMs:
+
+rpmbuild -ts apr-<version>.tar.bz2
+rpmbuild -ts apr-util-<version>.tar.bz2
+
+Run the following to create RPMs (or build from the SRPMs):
+
+rpmbuild -tb apr-<version>.tar.bz2
+rpmbuild -tb apr-util-<version>.tar.bz2
+
+Resolve dependencies as appropriate.
+
+
+Configuring and Building APR on Windows
+=======================================
+
+Using Visual Studio, you can build and run the test validation of APR.
+The Makefile.win make file has a bunch of documentation about it's
+options, but a trivial build is simply;
+
+  nmake -f Makefile.win 
+  nmake -f Makefile.win PREFIX=c:\desired\path\of\apr install
+
+Note you must manually modify the include\apr.hw file before you
+build to change default options, see the #define APR_HAS_... or the
+#define APR_HAVE_... statements.  Be careful, many of these aren't
+appropriate to be modified.  The most common change is 
+
+#define APR_HAVE_IPV6           1
+
+rather than 0 if this build of APR will be used strictly on machines
+with the IPv6 adapter support installed.
+
+It's trivial to include the apr.dsp (for a static library) or the
+libapr.dsp (for a dynamic library) in your own build project, or you
+can load apr.dsw in Visual Studio 2002 (.NET) or later, which will
+convert these for you into apr.sln and associated .vcproj files.
+
+When using APR as a dynamic library, nothing special is required,
+simply link to libapr.lib.  To use it as a static library, simply 
+define APR_DECLARE_STATIC before you include any apr header files 
+in your source, and link to apr.lib instead.
+
+
+Generating Test Coverage information with gcc
+=============================================
+
+If you want to generate test coverage data, use the following steps:
+
+  ./buildconf
+  CFLAGS="-fprofile-arcs -ftest-coverage" ./configure
+  make
+  cd test
+  make
+  ./testall
+  cd ..
+  make gcov
+
+

+ 251 - 0
libs/apr/apr-config.in

@@ -0,0 +1,251 @@
+#!/bin/sh
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# APR script designed to allow easy command line access to APR configuration
+# parameters.
+
+APR_MAJOR_VERSION="@APR_MAJOR_VERSION@"
+APR_DOTTED_VERSION="@APR_DOTTED_VERSION@"
+
+prefix="@prefix@"
+exec_prefix="@exec_prefix@"
+bindir="@bindir@"
+libdir="@libdir@"
+datarootdir="@datadir@"
+datadir="@datadir@"
+installbuilddir="@installbuilddir@"
+includedir="@includedir@"
+
+CC="@CC@"
+CPP="@CPP@"
+SHELL="@SHELL@"
+CPPFLAGS="@EXTRA_CPPFLAGS@"
+CFLAGS="@EXTRA_CFLAGS@"
+LDFLAGS="@EXTRA_LDFLAGS@"
+LIBS="@EXTRA_LIBS@"
+EXTRA_INCLUDES="@EXTRA_INCLUDES@"
+SHLIBPATH_VAR="@shlibpath_var@"
+APR_SOURCE_DIR="@apr_srcdir@"
+APR_BUILD_DIR="@apr_builddir@"
+APR_SO_EXT="@so_ext@"
+APR_LIB_TARGET="@export_lib_target@"
+APR_LIBNAME="@APR_LIBNAME@"
+
+# NOTE: the following line is modified during 'make install': alter with care!
+location=@APR_CONFIG_LOCATION@
+
+show_usage()
+{
+    cat << EOF
+Usage: apr-$APR_MAJOR_VERSION-config [OPTION]
+
+Known values for OPTION are:
+  --prefix[=DIR]    change prefix to DIR
+  --bindir          print location where binaries are installed
+  --includedir      print location where headers are installed
+  --cc              print C compiler name
+  --cpp             print C preprocessor name and any required options
+  --cflags          print C compiler flags
+  --cppflags        print C preprocessor flags
+  --includes        print include information
+  --ldflags         print linker flags
+  --libs            print additional libraries to link against
+  --srcdir          print APR source directory
+  --installbuilddir print APR build helper directory
+  --link-ld         print link switch(es) for linking to APR
+  --link-libtool    print the libtool inputs for linking to APR
+  --shlib-path-var  print the name of the shared library path env var
+  --apr-la-file     print the path to the .la file, if available
+  --apr-so-ext      print the extensions of shared objects on this platform
+  --apr-lib-target  print the libtool target information
+  --apr-libtool     print the path to APR's libtool
+  --version         print the APR's version as a dotted triple
+  --help            print this help
+
+When linking with libtool, an application should do something like:
+  APR_LIBS="\`apr-$APR_MAJOR_VERSION-config --link-libtool --libs\`"
+or when linking directly:
+  APR_LIBS="\`apr-$APR_MAJOR_VERSION-config --link-ld --libs\`"
+
+An application should use the results of --cflags, --cppflags, --includes,
+and --ldflags in their build process.
+EOF
+}
+
+if test $# -eq 0; then
+    show_usage
+    exit 1
+fi
+
+if test "$location" = "installed"; then
+    LA_FILE="$libdir/lib${APR_LIBNAME}.la"
+else
+    LA_FILE="$APR_BUILD_DIR/lib${APR_LIBNAME}.la"
+fi
+
+flags=""
+
+while test $# -gt 0; do
+    # Normalize the prefix.
+    case "$1" in
+    -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+    *) optarg= ;;
+    esac
+
+    case "$1" in
+    # It is possible for the user to override our prefix.
+    --prefix=*)
+    prefix=$optarg
+    ;;
+    --prefix)
+    echo $prefix
+    exit 0
+    ;;
+    --bindir)
+    echo $bindir
+    exit 0
+    ;;
+    --includedir)
+    if test "$location" = "installed"; then
+        flags="$includedir"
+    elif test "$location" = "source"; then
+        flags="$APR_SOURCE_DIR/include"
+    else
+        # this is for VPATH builds
+        flags="$APR_BUILD_DIR/include $APR_SOURCE_DIR/include"
+    fi
+    echo $flags
+    exit 0
+    ;;
+    --cc)
+    echo $CC
+    exit 0
+    ;;
+    --cpp)
+    echo $CPP
+    exit 0
+    ;;
+    --cflags)
+    flags="$flags $CFLAGS"
+    ;;
+    --cppflags)
+    flags="$flags $CPPFLAGS"
+    ;;
+    --libs)
+    flags="$flags $LIBS"
+    ;;
+    --ldflags)
+    flags="$flags $LDFLAGS"
+    ;;
+    --includes)
+    if test "$location" = "installed"; then
+        flags="$flags -I$includedir $EXTRA_INCLUDES"
+    elif test "$location" = "source"; then
+        flags="$flags -I$APR_SOURCE_DIR/include $EXTRA_INCLUDES"
+    else
+        # this is for VPATH builds
+        flags="$flags -I$APR_BUILD_DIR/include -I$APR_SOURCE_DIR/include $EXTRA_INCLUDES"
+    fi
+    ;;
+    --srcdir)
+    echo $APR_SOURCE_DIR
+    exit 0
+    ;;
+    --installbuilddir)
+    if test "$location" = "installed"; then
+        echo "${installbuilddir}"
+    elif test "$location" = "source"; then
+        echo "$APR_SOURCE_DIR/build"
+    else
+        # this is for VPATH builds
+        echo "$APR_BUILD_DIR/build"
+    fi
+    exit 0
+    ;;
+    --version)
+    echo $APR_DOTTED_VERSION
+    exit 0
+    ;;
+    --link-ld)
+    if test "$location" = "installed"; then
+        ### avoid using -L if libdir is a "standard" location like /usr/lib
+        flags="$flags -L$libdir -l${APR_LIBNAME}"
+    else
+        ### this surely can't work since the library is in .libs?
+        flags="$flags -L$APR_BUILD_DIR -l${APR_LIBNAME}"
+    fi
+    ;;
+    --link-libtool)
+    # If the LA_FILE exists where we think it should be, use it.  If we're
+    # installed and the LA_FILE does not exist, assume to use -L/-l
+    # (the LA_FILE may not have been installed).  If we're building ourselves,
+    # we'll assume that at some point the .la file be created.
+    if test -f "$LA_FILE"; then
+        flags="$flags $LA_FILE"
+    elif test "$location" = "installed"; then
+        ### avoid using -L if libdir is a "standard" location like /usr/lib
+        # Since the user is specifying they are linking with libtool, we
+        # *know* that -R will be recognized by libtool.
+        flags="$flags -L$libdir -R$libdir -l${APR_LIBNAME}"
+    else
+        flags="$flags $LA_FILE"
+    fi
+    ;;
+    --shlib-path-var)
+    echo "$SHLIBPATH_VAR"
+    exit 0
+    ;;
+    --apr-la-file)
+    if test -f "$LA_FILE"; then
+        flags="$flags $LA_FILE"
+    fi
+    ;;
+    --apr-so-ext)
+    echo "$APR_SO_EXT"
+    exit 0
+    ;;
+    --apr-lib-target)
+    echo "$APR_LIB_TARGET"
+    exit 0
+    ;;
+    --apr-libtool)
+    if test "$location" = "installed"; then
+        echo "${installbuilddir}/libtool"
+    else
+        echo "$APR_BUILD_DIR/libtool"
+    fi
+    exit 0
+    ;;
+    --help)
+    show_usage
+    exit 0
+    ;;
+    *)
+    show_usage
+    exit 1
+    ;;
+    esac
+
+    # Next please.
+    shift
+done
+
+if test -n "$flags"; then
+  echo "$flags"
+fi
+
+exit 0

+ 558 - 0
libs/apr/apr.dep

@@ -0,0 +1,558 @@
+# Microsoft Developer Studio Generated Dependency File, included by apr.mak
+
+.\atomic\win32\apr_atomic.c : \
+	".\include\apr_atomic.h"\
+	
+
+.\dso\win32\dso.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	".\include\arch\win32\apr_arch_dso.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\file_io\win32\buffer.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\file_io\unix\copy.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\file_io\win32\dir.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	".\include\arch\win32\apr_arch_atime.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\file_io\unix\fileacc.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\file_io\win32\filedup.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_inherit.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\file_io\win32\filepath.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\file_io\unix\filepath_util.c : \
+	".\include\apr_strings.h"\
+	
+
+.\file_io\win32\filestat.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	".\include\arch\win32\apr_arch_atime.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\file_io\win32\filesys.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\file_io\win32\flock.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\file_io\unix\fullrw.c : \
+	
+
+.\file_io\unix\mktemp.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_inherit.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\file_io\win32\open.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_inherit.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\file_io\win32\pipe.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\file_io\win32\readwrite.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	".\include\arch\win32\apr_arch_atime.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\file_io\win32\seek.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\file_io\unix\tempdir.c : \
+	".\include\apr_env.h"\
+	".\include\apr_strings.h"\
+	
+
+.\locks\win32\proc_mutex.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_proc_mutex.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\locks\win32\thread_cond.c : \
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_thread_cond.h"\
+	".\include\arch\win32\apr_arch_thread_cond.h"\
+	".\include\arch\win32\apr_arch_thread_mutex.h"\
+	
+
+.\locks\win32\thread_mutex.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	".\include\arch\win32\apr_arch_thread_mutex.h"\
+	
+
+.\locks\win32\thread_rwlock.c : \
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	".\include\apr_thread_rwlock.h"\
+	".\include\arch\win32\apr_arch_thread_rwlock.h"\
+	
+
+.\memory\unix\apr_pools.c : \
+	".\include\apr_atomic.h"\
+	".\include\apr_env.h"\
+	".\include\apr_hash.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	
+
+.\misc\win32\charset.c : \
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	
+
+.\misc\win32\env.c : \
+	".\include\apr_env.h"\
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\misc\unix\errorcodes.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	
+
+.\misc\unix\getopt.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	
+
+.\misc\win32\internal.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\misc\win32\misc.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	".\include\arch\win32\apr_dbg_win32_handles.h"\
+	
+
+.\misc\unix\otherchild.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_threadproc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\misc\win32\rand.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_portable.h"\
+	
+
+.\misc\win32\start.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_signal.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_threadproc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\misc\win32\utf8.c : \
+	".\include\apr_lib.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\misc\unix\version.c : \
+	".\include\apr_version.h"\
+	
+
+.\mmap\unix\common.c : \
+	".\include\apr_mmap.h"\
+	
+
+.\mmap\win32\mmap.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_mmap.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\network_io\unix\inet_ntop.c : \
+	".\include\apr_poll.h"\
+	".\include\apr_strings.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	
+
+.\network_io\unix\inet_pton.c : \
+	".\include\apr_poll.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	
+
+.\network_io\unix\multicast.c : \
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_support.h"\
+	".\include\arch\win32\apr_arch_inherit.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	
+
+.\network_io\win32\sendrecv.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\network_io\unix\sockaddr.c : \
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_strings.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	
+
+.\network_io\unix\socket_util.c : \
+	".\include\apr_poll.h"\
+	
+
+.\network_io\win32\sockets.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	".\include\arch\win32\apr_arch_inherit.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	
+
+.\network_io\win32\sockopt.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	
+
+.\passwd\apr_getpass.c : \
+	".\include\apr_lib.h"\
+	".\include\apr_strings.h"\
+	
+
+.\poll\unix\poll.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\arch\unix\apr_arch_poll_private.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\poll\unix\pollcb.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\arch\unix\apr_arch_poll_private.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\poll\unix\pollset.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\arch\unix\apr_arch_poll_private.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_inherit.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\poll\unix\select.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\arch\unix\apr_arch_poll_private.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_networkio.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\random\unix\apr_random.c : \
+	".\include\apr_random.h"\
+	
+
+.\random\unix\sha2.c : \
+	".\random\unix\sha2.h"\
+	
+
+.\random\unix\sha2_glue.c : \
+	".\include\apr_random.h"\
+	".\random\unix\sha2.h"\
+	
+
+.\shmem\win32\shm.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\strings\apr_cpystrn.c : \
+	".\include\apr_lib.h"\
+	".\include\apr_strings.h"\
+	
+
+.\strings\apr_fnmatch.c : \
+	".\include\apr_fnmatch.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_strings.h"\
+	
+
+.\strings\apr_snprintf.c : \
+	".\include\apr_lib.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	
+
+.\strings\apr_strings.c : \
+	".\include\apr_lib.h"\
+	".\include\apr_strings.h"\
+	
+
+.\strings\apr_strnatcmp.c : \
+	".\include\apr_lib.h"\
+	".\include\apr_strings.h"\
+	
+
+.\strings\apr_strtok.c : \
+	".\include\apr_strings.h"\
+	
+
+.\tables\apr_hash.c : \
+	".\include\apr_hash.h"\
+	
+
+.\tables\apr_tables.c : \
+	".\include\apr_lib.h"\
+	".\include\apr_strings.h"\
+	
+
+.\threadproc\win32\proc.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_threadproc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\threadproc\win32\signals.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_signal.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_threadproc.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+.\threadproc\win32\thread.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_portable.h"\
+	".\include\arch\win32\apr_arch_threadproc.h"\
+	
+
+.\threadproc\win32\threadpriv.c : \
+	".\include\apr_lib.h"\
+	".\include\apr_portable.h"\
+	".\include\arch\win32\apr_arch_threadproc.h"\
+	
+
+.\time\win32\time.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_portable.h"\
+	".\include\arch\win32\apr_arch_atime.h"\
+	
+
+.\time\win32\timestr.c : \
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	".\include\arch\win32\apr_arch_atime.h"\
+	
+
+.\user\win32\groupinfo.c : \
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	
+
+.\user\win32\userinfo.c : \
+	".\include\apr_getopt.h"\
+	".\include\apr_lib.h"\
+	".\include\apr_poll.h"\
+	".\include\apr_portable.h"\
+	".\include\apr_strings.h"\
+	".\include\arch\win32\apr_arch_file_io.h"\
+	".\include\arch\win32\apr_arch_utf8.h"\
+	
+
+!IF  "$(CFG)" == "apr - Win32 Release"
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug"
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Release9x"
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug9x"
+
+!ELSEIF  "$(CFG)" == "apr - x64 Release"
+
+!ELSEIF  "$(CFG)" == "apr - x64 Debug"
+
+!ENDIF 
+

+ 817 - 0
libs/apr/apr.dsp

@@ -0,0 +1,817 @@
+# Microsoft Developer Studio Project File - Name="apr" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=apr - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "apr.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "apr.mak" CFG="apr - Win32 Release"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "apr - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "apr - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "apr - Win32 Release9x" (based on "Win32 (x86) Static Library")
+!MESSAGE "apr - Win32 Debug9x" (based on "Win32 (x86) Static Library")
+!MESSAGE "apr - x64 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "apr - x64 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "apr - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "LibR"
+# PROP BASE Intermediate_Dir "LibR"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "LibR"
+# PROP Intermediate_Dir "LibR"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(OUTDIR)\apr-1" /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"LibR\apr-1.lib"
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "LibD"
+# PROP BASE Intermediate_Dir "LibD"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "LibD"
+# PROP Intermediate_Dir "LibD"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /EHsc /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(OUTDIR)\apr-1" /FD /EHsc /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"LibD\apr-1.lib"
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Release9x"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "9x\LibR"
+# PROP BASE Intermediate_Dir "9x\LibR"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "9x\LibR"
+# PROP Intermediate_Dir "9x\LibR"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(OUTDIR)\apr-1" /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"9x\LibR\apr-1.lib"
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug9x"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "9x\LibD"
+# PROP BASE Intermediate_Dir "9x\LibD"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "9x\LibD"
+# PROP Intermediate_Dir "9x\LibD"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /EHsc /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(OUTDIR)\apr-1" /FD /EHsc /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"9x\LibD\apr-1.lib"
+
+!ELSEIF  "$(CFG)" == "apr - x64 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "x64\LibR"
+# PROP BASE Intermediate_Dir "x64\LibR"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "x64\LibR"
+# PROP Intermediate_Dir "x64\LibR"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(OUTDIR)\apr-1" /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"x64\LibR\apr-1.lib"
+
+!ELSEIF  "$(CFG)" == "apr - x64 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "x64\LibD"
+# PROP BASE Intermediate_Dir "x64\LibD"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "x64\LibD"
+# PROP Intermediate_Dir "x64\LibD"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /EHsc /c
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\" /Fd"$(OUTDIR)\apr-1" /FD /EHsc /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"x64\LibD\apr-1.lib"
+
+!ENDIF 
+
+# Begin Target
+
+# Name "apr - Win32 Release"
+# Name "apr - Win32 Debug"
+# Name "apr - Win32 Release9x"
+# Name "apr - Win32 Debug9x"
+# Name "apr - x64 Release"
+# Name "apr - x64 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter ".c"
+# Begin Group "atomic"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\atomic\win32\apr_atomic.c
+# End Source File
+# End Group
+# Begin Group "dso"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\dso\win32\dso.c
+# End Source File
+# End Group
+# Begin Group "file_io"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\file_io\win32\buffer.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\unix\copy.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\dir.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\unix\fileacc.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\filedup.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\filepath.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\unix\filepath_util.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\filestat.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\filesys.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\flock.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\unix\fullrw.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\unix\mktemp.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\open.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\pipe.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\readwrite.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\win32\seek.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\file_io\unix\tempdir.c
+# End Source File
+# End Group
+# Begin Group "locks"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\locks\win32\proc_mutex.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\locks\win32\thread_cond.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\locks\win32\thread_mutex.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\locks\win32\thread_rwlock.c
+# End Source File
+# End Group
+# Begin Group "memory"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\memory\unix\apr_pools.c
+# End Source File
+# End Group
+# Begin Group "misc"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\misc\win32\apr_app.c
+# PROP Exclude_From_Build 1
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\win32\charset.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\win32\env.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\unix\errorcodes.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\unix\getopt.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\win32\internal.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\win32\misc.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\unix\otherchild.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\win32\rand.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\win32\start.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\win32\utf8.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\misc\unix\version.c
+# End Source File
+# End Group
+# Begin Group "mmap"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\mmap\unix\common.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\mmap\win32\mmap.c
+# End Source File
+# End Group
+# Begin Group "network_io"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\network_io\unix\inet_ntop.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\network_io\unix\inet_pton.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\network_io\unix\multicast.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\network_io\win32\sendrecv.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\network_io\unix\sockaddr.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\network_io\win32\sockets.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\network_io\unix\socket_util.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\network_io\win32\sockopt.c
+# End Source File
+# End Group
+# Begin Group "passwd"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\passwd\apr_getpass.c
+# End Source File
+# End Group
+# Begin Group "poll"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\poll\unix\poll.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\poll\unix\pollcb.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\poll\unix\pollset.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\poll\unix\select.c
+# End Source File
+# End Group
+# Begin Group "random"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\random\unix\apr_random.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\random\unix\sha2.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\random\unix\sha2_glue.c
+# End Source File
+# End Group
+# Begin Group "shmem"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\shmem\win32\shm.c
+# End Source File
+# End Group
+# Begin Group "strings"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\strings\apr_cpystrn.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\strings\apr_fnmatch.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\strings\apr_snprintf.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\strings\apr_strings.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\strings\apr_strnatcmp.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\strings\apr_strtok.c
+# End Source File
+# End Group
+# Begin Group "tables"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\tables\apr_hash.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\tables\apr_tables.c
+# End Source File
+# End Group
+# Begin Group "threadproc"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\threadproc\win32\proc.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\threadproc\win32\signals.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\threadproc\win32\thread.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\threadproc\win32\threadpriv.c
+# End Source File
+# End Group
+# Begin Group "time"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\time\win32\time.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\time\win32\timestr.c
+# End Source File
+# End Group
+# Begin Group "user"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\user\win32\groupinfo.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\user\win32\userinfo.c
+# End Source File
+# End Group
+# End Group
+# Begin Group "Private Header Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_atime.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_dso.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_file_io.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_inherit.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_misc.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_networkio.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_thread_mutex.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_thread_rwlock.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_threadproc.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_arch_utf8.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\win32\apr_private.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\arch\apr_private_common.h
+# End Source File
+# End Group
+# Begin Group "Public Header Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\include\apr.h.in
+# PROP Exclude_From_Build 1
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr.hnw
+# PROP Exclude_From_Build 1
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr.hw
+
+!IF  "$(CFG)" == "apr - Win32 Release"
+
+# Begin Custom Build - Creating apr.h from apr.hw
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	type .\include\apr.hw > .\include\apr.h
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug"
+
+# Begin Custom Build - Creating apr.h from apr.hw
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	type .\include\apr.hw > .\include\apr.h
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Release9x"
+
+# Begin Custom Build - Creating apr.h from apr.hw
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	type .\include\apr.hw > .\include\apr.h
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug9x"
+
+# Begin Custom Build - Creating apr.h from apr.hw
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	type .\include\apr.hw > .\include\apr.h
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "apr - x64 Release"
+
+# Begin Custom Build - Creating apr.h from apr.hw
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	type .\include\apr.hw > .\include\apr.h
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "apr - x64 Debug"
+
+# Begin Custom Build - Creating apr.h from apr.hw
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	type .\include\apr.hw > .\include\apr.h
+
+# End Custom Build
+
+!ENDIF 
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_allocator.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_atomic.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_dso.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_env.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_errno.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_file_info.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_file_io.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_fnmatch.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_general.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_getopt.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_global_mutex.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_hash.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_inherit.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_lib.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_mmap.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_network_io.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_poll.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_pools.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_portable.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_proc_mutex.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_random.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_ring.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_shm.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_signal.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_strings.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_support.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_tables.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_thread_cond.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_thread_mutex.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_thread_proc.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_thread_rwlock.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_time.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_user.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_version.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_want.h
+# End Source File
+# End Group
+# End Target
+# End Project

+ 101 - 0
libs/apr/apr.dsw

@@ -0,0 +1,101 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "apr"=".\apr.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "aprapp"=".\build\aprapp.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+    Begin Project Dependency
+    Project_Dep_Name preaprapp
+    End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "libapr"=".\libapr.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "libaprapp"=".\build\libaprapp.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+    Begin Project Dependency
+    Project_Dep_Name prelibaprapp
+    End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "preaprapp"=".\build\preaprapp.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+    Begin Project Dependency
+    Project_Dep_Name apr
+    End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "prelibaprapp"=".\build\prelibaprapp.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+    Begin Project Dependency
+    Project_Dep_Name libapr
+    End Project Dependency
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+

+ 1779 - 0
libs/apr/apr.mak

@@ -0,0 +1,1779 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on apr.dsp
+!IF "$(CFG)" == ""
+CFG=apr - Win32 Release
+!MESSAGE No configuration specified. Defaulting to apr - Win32 Release.
+!ENDIF 
+
+!IF "$(CFG)" != "apr - Win32 Release" && "$(CFG)" != "apr - Win32 Debug" && "$(CFG)" != "apr - Win32 Release9x" && "$(CFG)" != "apr - Win32 Debug9x" && "$(CFG)" != "apr - x64 Release" && "$(CFG)" != "apr - x64 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "apr.mak" CFG="apr - Win32 Release"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "apr - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "apr - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "apr - Win32 Release9x" (based on "Win32 (x86) Static Library")
+!MESSAGE "apr - Win32 Debug9x" (based on "Win32 (x86) Static Library")
+!MESSAGE "apr - x64 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "apr - x64 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE 
+!ERROR An invalid configuration is specified.
+!ENDIF 
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE 
+NULL=nul
+!ENDIF 
+
+!IF  "$(CFG)" == "apr - Win32 Release"
+
+OUTDIR=.\LibR
+INTDIR=.\LibR
+# Begin Custom Macros
+OutDir=.\LibR
+# End Custom Macros
+
+ALL : "$(OUTDIR)\apr-1.lib"
+
+
+CLEAN :
+	-@erase "$(INTDIR)\apr-1.idb"
+	-@erase "$(INTDIR)\apr-1.pdb"
+	-@erase "$(INTDIR)\apr_atomic.obj"
+	-@erase "$(INTDIR)\apr_cpystrn.obj"
+	-@erase "$(INTDIR)\apr_fnmatch.obj"
+	-@erase "$(INTDIR)\apr_getpass.obj"
+	-@erase "$(INTDIR)\apr_hash.obj"
+	-@erase "$(INTDIR)\apr_pools.obj"
+	-@erase "$(INTDIR)\apr_random.obj"
+	-@erase "$(INTDIR)\apr_snprintf.obj"
+	-@erase "$(INTDIR)\apr_strings.obj"
+	-@erase "$(INTDIR)\apr_strnatcmp.obj"
+	-@erase "$(INTDIR)\apr_strtok.obj"
+	-@erase "$(INTDIR)\apr_tables.obj"
+	-@erase "$(INTDIR)\buffer.obj"
+	-@erase "$(INTDIR)\charset.obj"
+	-@erase "$(INTDIR)\common.obj"
+	-@erase "$(INTDIR)\copy.obj"
+	-@erase "$(INTDIR)\dir.obj"
+	-@erase "$(INTDIR)\dso.obj"
+	-@erase "$(INTDIR)\env.obj"
+	-@erase "$(INTDIR)\errorcodes.obj"
+	-@erase "$(INTDIR)\fileacc.obj"
+	-@erase "$(INTDIR)\filedup.obj"
+	-@erase "$(INTDIR)\filepath.obj"
+	-@erase "$(INTDIR)\filepath_util.obj"
+	-@erase "$(INTDIR)\filestat.obj"
+	-@erase "$(INTDIR)\filesys.obj"
+	-@erase "$(INTDIR)\flock.obj"
+	-@erase "$(INTDIR)\fullrw.obj"
+	-@erase "$(INTDIR)\getopt.obj"
+	-@erase "$(INTDIR)\groupinfo.obj"
+	-@erase "$(INTDIR)\inet_ntop.obj"
+	-@erase "$(INTDIR)\inet_pton.obj"
+	-@erase "$(INTDIR)\internal.obj"
+	-@erase "$(INTDIR)\misc.obj"
+	-@erase "$(INTDIR)\mktemp.obj"
+	-@erase "$(INTDIR)\mmap.obj"
+	-@erase "$(INTDIR)\multicast.obj"
+	-@erase "$(INTDIR)\open.obj"
+	-@erase "$(INTDIR)\otherchild.obj"
+	-@erase "$(INTDIR)\pipe.obj"
+	-@erase "$(INTDIR)\poll.obj"
+	-@erase "$(INTDIR)\pollcb.obj"
+	-@erase "$(INTDIR)\pollset.obj"
+	-@erase "$(INTDIR)\proc.obj"
+	-@erase "$(INTDIR)\proc_mutex.obj"
+	-@erase "$(INTDIR)\rand.obj"
+	-@erase "$(INTDIR)\readwrite.obj"
+	-@erase "$(INTDIR)\seek.obj"
+	-@erase "$(INTDIR)\select.obj"
+	-@erase "$(INTDIR)\sendrecv.obj"
+	-@erase "$(INTDIR)\sha2.obj"
+	-@erase "$(INTDIR)\sha2_glue.obj"
+	-@erase "$(INTDIR)\shm.obj"
+	-@erase "$(INTDIR)\signals.obj"
+	-@erase "$(INTDIR)\sockaddr.obj"
+	-@erase "$(INTDIR)\socket_util.obj"
+	-@erase "$(INTDIR)\sockets.obj"
+	-@erase "$(INTDIR)\sockopt.obj"
+	-@erase "$(INTDIR)\start.obj"
+	-@erase "$(INTDIR)\tempdir.obj"
+	-@erase "$(INTDIR)\thread.obj"
+	-@erase "$(INTDIR)\thread_cond.obj"
+	-@erase "$(INTDIR)\thread_mutex.obj"
+	-@erase "$(INTDIR)\thread_rwlock.obj"
+	-@erase "$(INTDIR)\threadpriv.obj"
+	-@erase "$(INTDIR)\time.obj"
+	-@erase "$(INTDIR)\timestr.obj"
+	-@erase "$(INTDIR)\userinfo.obj"
+	-@erase "$(INTDIR)\utf8.obj"
+	-@erase "$(INTDIR)\version.obj"
+	-@erase "$(OUTDIR)\apr-1.lib"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\apr-1" /FD /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\apr.bsc" 
+BSC32_SBRS= \
+	
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\apr-1.lib" 
+LIB32_OBJS= \
+	"$(INTDIR)\apr_atomic.obj" \
+	"$(INTDIR)\dso.obj" \
+	"$(INTDIR)\buffer.obj" \
+	"$(INTDIR)\copy.obj" \
+	"$(INTDIR)\dir.obj" \
+	"$(INTDIR)\fileacc.obj" \
+	"$(INTDIR)\filedup.obj" \
+	"$(INTDIR)\filepath.obj" \
+	"$(INTDIR)\filepath_util.obj" \
+	"$(INTDIR)\filestat.obj" \
+	"$(INTDIR)\filesys.obj" \
+	"$(INTDIR)\flock.obj" \
+	"$(INTDIR)\fullrw.obj" \
+	"$(INTDIR)\mktemp.obj" \
+	"$(INTDIR)\open.obj" \
+	"$(INTDIR)\pipe.obj" \
+	"$(INTDIR)\readwrite.obj" \
+	"$(INTDIR)\seek.obj" \
+	"$(INTDIR)\tempdir.obj" \
+	"$(INTDIR)\proc_mutex.obj" \
+	"$(INTDIR)\thread_cond.obj" \
+	"$(INTDIR)\thread_mutex.obj" \
+	"$(INTDIR)\thread_rwlock.obj" \
+	"$(INTDIR)\apr_pools.obj" \
+	"$(INTDIR)\charset.obj" \
+	"$(INTDIR)\env.obj" \
+	"$(INTDIR)\errorcodes.obj" \
+	"$(INTDIR)\getopt.obj" \
+	"$(INTDIR)\internal.obj" \
+	"$(INTDIR)\misc.obj" \
+	"$(INTDIR)\otherchild.obj" \
+	"$(INTDIR)\rand.obj" \
+	"$(INTDIR)\start.obj" \
+	"$(INTDIR)\utf8.obj" \
+	"$(INTDIR)\version.obj" \
+	"$(INTDIR)\common.obj" \
+	"$(INTDIR)\mmap.obj" \
+	"$(INTDIR)\inet_ntop.obj" \
+	"$(INTDIR)\inet_pton.obj" \
+	"$(INTDIR)\multicast.obj" \
+	"$(INTDIR)\sendrecv.obj" \
+	"$(INTDIR)\sockaddr.obj" \
+	"$(INTDIR)\sockets.obj" \
+	"$(INTDIR)\socket_util.obj" \
+	"$(INTDIR)\sockopt.obj" \
+	"$(INTDIR)\apr_getpass.obj" \
+	"$(INTDIR)\poll.obj" \
+	"$(INTDIR)\pollcb.obj" \
+	"$(INTDIR)\pollset.obj" \
+	"$(INTDIR)\select.obj" \
+	"$(INTDIR)\apr_random.obj" \
+	"$(INTDIR)\sha2.obj" \
+	"$(INTDIR)\sha2_glue.obj" \
+	"$(INTDIR)\shm.obj" \
+	"$(INTDIR)\apr_cpystrn.obj" \
+	"$(INTDIR)\apr_fnmatch.obj" \
+	"$(INTDIR)\apr_snprintf.obj" \
+	"$(INTDIR)\apr_strings.obj" \
+	"$(INTDIR)\apr_strnatcmp.obj" \
+	"$(INTDIR)\apr_strtok.obj" \
+	"$(INTDIR)\apr_hash.obj" \
+	"$(INTDIR)\apr_tables.obj" \
+	"$(INTDIR)\proc.obj" \
+	"$(INTDIR)\signals.obj" \
+	"$(INTDIR)\thread.obj" \
+	"$(INTDIR)\threadpriv.obj" \
+	"$(INTDIR)\time.obj" \
+	"$(INTDIR)\timestr.obj" \
+	"$(INTDIR)\groupinfo.obj" \
+	"$(INTDIR)\userinfo.obj"
+
+"$(OUTDIR)\apr-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+    $(LIB32) @<<
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug"
+
+OUTDIR=.\LibD
+INTDIR=.\LibD
+# Begin Custom Macros
+OutDir=.\LibD
+# End Custom Macros
+
+ALL : ".\include\apr.h" "$(OUTDIR)\apr-1.lib"
+
+
+CLEAN :
+	-@erase "$(INTDIR)\apr-1.idb"
+	-@erase "$(INTDIR)\apr-1.pdb"
+	-@erase "$(INTDIR)\apr_atomic.obj"
+	-@erase "$(INTDIR)\apr_cpystrn.obj"
+	-@erase "$(INTDIR)\apr_fnmatch.obj"
+	-@erase "$(INTDIR)\apr_getpass.obj"
+	-@erase "$(INTDIR)\apr_hash.obj"
+	-@erase "$(INTDIR)\apr_pools.obj"
+	-@erase "$(INTDIR)\apr_random.obj"
+	-@erase "$(INTDIR)\apr_snprintf.obj"
+	-@erase "$(INTDIR)\apr_strings.obj"
+	-@erase "$(INTDIR)\apr_strnatcmp.obj"
+	-@erase "$(INTDIR)\apr_strtok.obj"
+	-@erase "$(INTDIR)\apr_tables.obj"
+	-@erase "$(INTDIR)\buffer.obj"
+	-@erase "$(INTDIR)\charset.obj"
+	-@erase "$(INTDIR)\common.obj"
+	-@erase "$(INTDIR)\copy.obj"
+	-@erase "$(INTDIR)\dir.obj"
+	-@erase "$(INTDIR)\dso.obj"
+	-@erase "$(INTDIR)\env.obj"
+	-@erase "$(INTDIR)\errorcodes.obj"
+	-@erase "$(INTDIR)\fileacc.obj"
+	-@erase "$(INTDIR)\filedup.obj"
+	-@erase "$(INTDIR)\filepath.obj"
+	-@erase "$(INTDIR)\filepath_util.obj"
+	-@erase "$(INTDIR)\filestat.obj"
+	-@erase "$(INTDIR)\filesys.obj"
+	-@erase "$(INTDIR)\flock.obj"
+	-@erase "$(INTDIR)\fullrw.obj"
+	-@erase "$(INTDIR)\getopt.obj"
+	-@erase "$(INTDIR)\groupinfo.obj"
+	-@erase "$(INTDIR)\inet_ntop.obj"
+	-@erase "$(INTDIR)\inet_pton.obj"
+	-@erase "$(INTDIR)\internal.obj"
+	-@erase "$(INTDIR)\misc.obj"
+	-@erase "$(INTDIR)\mktemp.obj"
+	-@erase "$(INTDIR)\mmap.obj"
+	-@erase "$(INTDIR)\multicast.obj"
+	-@erase "$(INTDIR)\open.obj"
+	-@erase "$(INTDIR)\otherchild.obj"
+	-@erase "$(INTDIR)\pipe.obj"
+	-@erase "$(INTDIR)\poll.obj"
+	-@erase "$(INTDIR)\pollcb.obj"
+	-@erase "$(INTDIR)\pollset.obj"
+	-@erase "$(INTDIR)\proc.obj"
+	-@erase "$(INTDIR)\proc_mutex.obj"
+	-@erase "$(INTDIR)\rand.obj"
+	-@erase "$(INTDIR)\readwrite.obj"
+	-@erase "$(INTDIR)\seek.obj"
+	-@erase "$(INTDIR)\select.obj"
+	-@erase "$(INTDIR)\sendrecv.obj"
+	-@erase "$(INTDIR)\sha2.obj"
+	-@erase "$(INTDIR)\sha2_glue.obj"
+	-@erase "$(INTDIR)\shm.obj"
+	-@erase "$(INTDIR)\signals.obj"
+	-@erase "$(INTDIR)\sockaddr.obj"
+	-@erase "$(INTDIR)\socket_util.obj"
+	-@erase "$(INTDIR)\sockets.obj"
+	-@erase "$(INTDIR)\sockopt.obj"
+	-@erase "$(INTDIR)\start.obj"
+	-@erase "$(INTDIR)\tempdir.obj"
+	-@erase "$(INTDIR)\thread.obj"
+	-@erase "$(INTDIR)\thread_cond.obj"
+	-@erase "$(INTDIR)\thread_mutex.obj"
+	-@erase "$(INTDIR)\thread_rwlock.obj"
+	-@erase "$(INTDIR)\threadpriv.obj"
+	-@erase "$(INTDIR)\time.obj"
+	-@erase "$(INTDIR)\timestr.obj"
+	-@erase "$(INTDIR)\userinfo.obj"
+	-@erase "$(INTDIR)\utf8.obj"
+	-@erase "$(INTDIR)\version.obj"
+	-@erase "$(OUTDIR)\apr-1.lib"
+	-@erase ".\include\apr.h"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\apr-1" /FD /EHsc /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\apr.bsc" 
+BSC32_SBRS= \
+	
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\apr-1.lib" 
+LIB32_OBJS= \
+	"$(INTDIR)\apr_atomic.obj" \
+	"$(INTDIR)\dso.obj" \
+	"$(INTDIR)\buffer.obj" \
+	"$(INTDIR)\copy.obj" \
+	"$(INTDIR)\dir.obj" \
+	"$(INTDIR)\fileacc.obj" \
+	"$(INTDIR)\filedup.obj" \
+	"$(INTDIR)\filepath.obj" \
+	"$(INTDIR)\filepath_util.obj" \
+	"$(INTDIR)\filestat.obj" \
+	"$(INTDIR)\filesys.obj" \
+	"$(INTDIR)\flock.obj" \
+	"$(INTDIR)\fullrw.obj" \
+	"$(INTDIR)\mktemp.obj" \
+	"$(INTDIR)\open.obj" \
+	"$(INTDIR)\pipe.obj" \
+	"$(INTDIR)\readwrite.obj" \
+	"$(INTDIR)\seek.obj" \
+	"$(INTDIR)\tempdir.obj" \
+	"$(INTDIR)\proc_mutex.obj" \
+	"$(INTDIR)\thread_cond.obj" \
+	"$(INTDIR)\thread_mutex.obj" \
+	"$(INTDIR)\thread_rwlock.obj" \
+	"$(INTDIR)\apr_pools.obj" \
+	"$(INTDIR)\charset.obj" \
+	"$(INTDIR)\env.obj" \
+	"$(INTDIR)\errorcodes.obj" \
+	"$(INTDIR)\getopt.obj" \
+	"$(INTDIR)\internal.obj" \
+	"$(INTDIR)\misc.obj" \
+	"$(INTDIR)\otherchild.obj" \
+	"$(INTDIR)\rand.obj" \
+	"$(INTDIR)\start.obj" \
+	"$(INTDIR)\utf8.obj" \
+	"$(INTDIR)\version.obj" \
+	"$(INTDIR)\common.obj" \
+	"$(INTDIR)\mmap.obj" \
+	"$(INTDIR)\inet_ntop.obj" \
+	"$(INTDIR)\inet_pton.obj" \
+	"$(INTDIR)\multicast.obj" \
+	"$(INTDIR)\sendrecv.obj" \
+	"$(INTDIR)\sockaddr.obj" \
+	"$(INTDIR)\sockets.obj" \
+	"$(INTDIR)\socket_util.obj" \
+	"$(INTDIR)\sockopt.obj" \
+	"$(INTDIR)\apr_getpass.obj" \
+	"$(INTDIR)\poll.obj" \
+	"$(INTDIR)\pollcb.obj" \
+	"$(INTDIR)\pollset.obj" \
+	"$(INTDIR)\select.obj" \
+	"$(INTDIR)\apr_random.obj" \
+	"$(INTDIR)\sha2.obj" \
+	"$(INTDIR)\sha2_glue.obj" \
+	"$(INTDIR)\shm.obj" \
+	"$(INTDIR)\apr_cpystrn.obj" \
+	"$(INTDIR)\apr_fnmatch.obj" \
+	"$(INTDIR)\apr_snprintf.obj" \
+	"$(INTDIR)\apr_strings.obj" \
+	"$(INTDIR)\apr_strnatcmp.obj" \
+	"$(INTDIR)\apr_strtok.obj" \
+	"$(INTDIR)\apr_hash.obj" \
+	"$(INTDIR)\apr_tables.obj" \
+	"$(INTDIR)\proc.obj" \
+	"$(INTDIR)\signals.obj" \
+	"$(INTDIR)\thread.obj" \
+	"$(INTDIR)\threadpriv.obj" \
+	"$(INTDIR)\time.obj" \
+	"$(INTDIR)\timestr.obj" \
+	"$(INTDIR)\groupinfo.obj" \
+	"$(INTDIR)\userinfo.obj"
+
+"$(OUTDIR)\apr-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+    $(LIB32) @<<
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Release9x"
+
+OUTDIR=.\9x\LibR
+INTDIR=.\9x\LibR
+# Begin Custom Macros
+OutDir=.\9x\LibR
+# End Custom Macros
+
+ALL : ".\include\apr.h" "$(OUTDIR)\apr-1.lib"
+
+
+CLEAN :
+	-@erase "$(INTDIR)\apr-1.idb"
+	-@erase "$(INTDIR)\apr-1.pdb"
+	-@erase "$(INTDIR)\apr_atomic.obj"
+	-@erase "$(INTDIR)\apr_cpystrn.obj"
+	-@erase "$(INTDIR)\apr_fnmatch.obj"
+	-@erase "$(INTDIR)\apr_getpass.obj"
+	-@erase "$(INTDIR)\apr_hash.obj"
+	-@erase "$(INTDIR)\apr_pools.obj"
+	-@erase "$(INTDIR)\apr_random.obj"
+	-@erase "$(INTDIR)\apr_snprintf.obj"
+	-@erase "$(INTDIR)\apr_strings.obj"
+	-@erase "$(INTDIR)\apr_strnatcmp.obj"
+	-@erase "$(INTDIR)\apr_strtok.obj"
+	-@erase "$(INTDIR)\apr_tables.obj"
+	-@erase "$(INTDIR)\buffer.obj"
+	-@erase "$(INTDIR)\charset.obj"
+	-@erase "$(INTDIR)\common.obj"
+	-@erase "$(INTDIR)\copy.obj"
+	-@erase "$(INTDIR)\dir.obj"
+	-@erase "$(INTDIR)\dso.obj"
+	-@erase "$(INTDIR)\env.obj"
+	-@erase "$(INTDIR)\errorcodes.obj"
+	-@erase "$(INTDIR)\fileacc.obj"
+	-@erase "$(INTDIR)\filedup.obj"
+	-@erase "$(INTDIR)\filepath.obj"
+	-@erase "$(INTDIR)\filepath_util.obj"
+	-@erase "$(INTDIR)\filestat.obj"
+	-@erase "$(INTDIR)\filesys.obj"
+	-@erase "$(INTDIR)\flock.obj"
+	-@erase "$(INTDIR)\fullrw.obj"
+	-@erase "$(INTDIR)\getopt.obj"
+	-@erase "$(INTDIR)\groupinfo.obj"
+	-@erase "$(INTDIR)\inet_ntop.obj"
+	-@erase "$(INTDIR)\inet_pton.obj"
+	-@erase "$(INTDIR)\internal.obj"
+	-@erase "$(INTDIR)\misc.obj"
+	-@erase "$(INTDIR)\mktemp.obj"
+	-@erase "$(INTDIR)\mmap.obj"
+	-@erase "$(INTDIR)\multicast.obj"
+	-@erase "$(INTDIR)\open.obj"
+	-@erase "$(INTDIR)\otherchild.obj"
+	-@erase "$(INTDIR)\pipe.obj"
+	-@erase "$(INTDIR)\poll.obj"
+	-@erase "$(INTDIR)\pollcb.obj"
+	-@erase "$(INTDIR)\pollset.obj"
+	-@erase "$(INTDIR)\proc.obj"
+	-@erase "$(INTDIR)\proc_mutex.obj"
+	-@erase "$(INTDIR)\rand.obj"
+	-@erase "$(INTDIR)\readwrite.obj"
+	-@erase "$(INTDIR)\seek.obj"
+	-@erase "$(INTDIR)\select.obj"
+	-@erase "$(INTDIR)\sendrecv.obj"
+	-@erase "$(INTDIR)\sha2.obj"
+	-@erase "$(INTDIR)\sha2_glue.obj"
+	-@erase "$(INTDIR)\shm.obj"
+	-@erase "$(INTDIR)\signals.obj"
+	-@erase "$(INTDIR)\sockaddr.obj"
+	-@erase "$(INTDIR)\socket_util.obj"
+	-@erase "$(INTDIR)\sockets.obj"
+	-@erase "$(INTDIR)\sockopt.obj"
+	-@erase "$(INTDIR)\start.obj"
+	-@erase "$(INTDIR)\tempdir.obj"
+	-@erase "$(INTDIR)\thread.obj"
+	-@erase "$(INTDIR)\thread_cond.obj"
+	-@erase "$(INTDIR)\thread_mutex.obj"
+	-@erase "$(INTDIR)\thread_rwlock.obj"
+	-@erase "$(INTDIR)\threadpriv.obj"
+	-@erase "$(INTDIR)\time.obj"
+	-@erase "$(INTDIR)\timestr.obj"
+	-@erase "$(INTDIR)\userinfo.obj"
+	-@erase "$(INTDIR)\utf8.obj"
+	-@erase "$(INTDIR)\version.obj"
+	-@erase "$(OUTDIR)\apr-1.lib"
+	-@erase ".\include\apr.h"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\apr-1" /FD /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\apr.bsc" 
+BSC32_SBRS= \
+	
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\apr-1.lib" 
+LIB32_OBJS= \
+	"$(INTDIR)\apr_atomic.obj" \
+	"$(INTDIR)\dso.obj" \
+	"$(INTDIR)\buffer.obj" \
+	"$(INTDIR)\copy.obj" \
+	"$(INTDIR)\dir.obj" \
+	"$(INTDIR)\fileacc.obj" \
+	"$(INTDIR)\filedup.obj" \
+	"$(INTDIR)\filepath.obj" \
+	"$(INTDIR)\filepath_util.obj" \
+	"$(INTDIR)\filestat.obj" \
+	"$(INTDIR)\filesys.obj" \
+	"$(INTDIR)\flock.obj" \
+	"$(INTDIR)\fullrw.obj" \
+	"$(INTDIR)\mktemp.obj" \
+	"$(INTDIR)\open.obj" \
+	"$(INTDIR)\pipe.obj" \
+	"$(INTDIR)\readwrite.obj" \
+	"$(INTDIR)\seek.obj" \
+	"$(INTDIR)\tempdir.obj" \
+	"$(INTDIR)\proc_mutex.obj" \
+	"$(INTDIR)\thread_cond.obj" \
+	"$(INTDIR)\thread_mutex.obj" \
+	"$(INTDIR)\thread_rwlock.obj" \
+	"$(INTDIR)\apr_pools.obj" \
+	"$(INTDIR)\charset.obj" \
+	"$(INTDIR)\env.obj" \
+	"$(INTDIR)\errorcodes.obj" \
+	"$(INTDIR)\getopt.obj" \
+	"$(INTDIR)\internal.obj" \
+	"$(INTDIR)\misc.obj" \
+	"$(INTDIR)\otherchild.obj" \
+	"$(INTDIR)\rand.obj" \
+	"$(INTDIR)\start.obj" \
+	"$(INTDIR)\utf8.obj" \
+	"$(INTDIR)\version.obj" \
+	"$(INTDIR)\common.obj" \
+	"$(INTDIR)\mmap.obj" \
+	"$(INTDIR)\inet_ntop.obj" \
+	"$(INTDIR)\inet_pton.obj" \
+	"$(INTDIR)\multicast.obj" \
+	"$(INTDIR)\sendrecv.obj" \
+	"$(INTDIR)\sockaddr.obj" \
+	"$(INTDIR)\sockets.obj" \
+	"$(INTDIR)\socket_util.obj" \
+	"$(INTDIR)\sockopt.obj" \
+	"$(INTDIR)\apr_getpass.obj" \
+	"$(INTDIR)\poll.obj" \
+	"$(INTDIR)\pollcb.obj" \
+	"$(INTDIR)\pollset.obj" \
+	"$(INTDIR)\select.obj" \
+	"$(INTDIR)\apr_random.obj" \
+	"$(INTDIR)\sha2.obj" \
+	"$(INTDIR)\sha2_glue.obj" \
+	"$(INTDIR)\shm.obj" \
+	"$(INTDIR)\apr_cpystrn.obj" \
+	"$(INTDIR)\apr_fnmatch.obj" \
+	"$(INTDIR)\apr_snprintf.obj" \
+	"$(INTDIR)\apr_strings.obj" \
+	"$(INTDIR)\apr_strnatcmp.obj" \
+	"$(INTDIR)\apr_strtok.obj" \
+	"$(INTDIR)\apr_hash.obj" \
+	"$(INTDIR)\apr_tables.obj" \
+	"$(INTDIR)\proc.obj" \
+	"$(INTDIR)\signals.obj" \
+	"$(INTDIR)\thread.obj" \
+	"$(INTDIR)\threadpriv.obj" \
+	"$(INTDIR)\time.obj" \
+	"$(INTDIR)\timestr.obj" \
+	"$(INTDIR)\groupinfo.obj" \
+	"$(INTDIR)\userinfo.obj"
+
+"$(OUTDIR)\apr-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+    $(LIB32) @<<
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug9x"
+
+OUTDIR=.\9x\LibD
+INTDIR=.\9x\LibD
+# Begin Custom Macros
+OutDir=.\9x\LibD
+# End Custom Macros
+
+ALL : ".\include\apr.h" "$(OUTDIR)\apr-1.lib"
+
+
+CLEAN :
+	-@erase "$(INTDIR)\apr-1.idb"
+	-@erase "$(INTDIR)\apr-1.pdb"
+	-@erase "$(INTDIR)\apr_atomic.obj"
+	-@erase "$(INTDIR)\apr_cpystrn.obj"
+	-@erase "$(INTDIR)\apr_fnmatch.obj"
+	-@erase "$(INTDIR)\apr_getpass.obj"
+	-@erase "$(INTDIR)\apr_hash.obj"
+	-@erase "$(INTDIR)\apr_pools.obj"
+	-@erase "$(INTDIR)\apr_random.obj"
+	-@erase "$(INTDIR)\apr_snprintf.obj"
+	-@erase "$(INTDIR)\apr_strings.obj"
+	-@erase "$(INTDIR)\apr_strnatcmp.obj"
+	-@erase "$(INTDIR)\apr_strtok.obj"
+	-@erase "$(INTDIR)\apr_tables.obj"
+	-@erase "$(INTDIR)\buffer.obj"
+	-@erase "$(INTDIR)\charset.obj"
+	-@erase "$(INTDIR)\common.obj"
+	-@erase "$(INTDIR)\copy.obj"
+	-@erase "$(INTDIR)\dir.obj"
+	-@erase "$(INTDIR)\dso.obj"
+	-@erase "$(INTDIR)\env.obj"
+	-@erase "$(INTDIR)\errorcodes.obj"
+	-@erase "$(INTDIR)\fileacc.obj"
+	-@erase "$(INTDIR)\filedup.obj"
+	-@erase "$(INTDIR)\filepath.obj"
+	-@erase "$(INTDIR)\filepath_util.obj"
+	-@erase "$(INTDIR)\filestat.obj"
+	-@erase "$(INTDIR)\filesys.obj"
+	-@erase "$(INTDIR)\flock.obj"
+	-@erase "$(INTDIR)\fullrw.obj"
+	-@erase "$(INTDIR)\getopt.obj"
+	-@erase "$(INTDIR)\groupinfo.obj"
+	-@erase "$(INTDIR)\inet_ntop.obj"
+	-@erase "$(INTDIR)\inet_pton.obj"
+	-@erase "$(INTDIR)\internal.obj"
+	-@erase "$(INTDIR)\misc.obj"
+	-@erase "$(INTDIR)\mktemp.obj"
+	-@erase "$(INTDIR)\mmap.obj"
+	-@erase "$(INTDIR)\multicast.obj"
+	-@erase "$(INTDIR)\open.obj"
+	-@erase "$(INTDIR)\otherchild.obj"
+	-@erase "$(INTDIR)\pipe.obj"
+	-@erase "$(INTDIR)\poll.obj"
+	-@erase "$(INTDIR)\pollcb.obj"
+	-@erase "$(INTDIR)\pollset.obj"
+	-@erase "$(INTDIR)\proc.obj"
+	-@erase "$(INTDIR)\proc_mutex.obj"
+	-@erase "$(INTDIR)\rand.obj"
+	-@erase "$(INTDIR)\readwrite.obj"
+	-@erase "$(INTDIR)\seek.obj"
+	-@erase "$(INTDIR)\select.obj"
+	-@erase "$(INTDIR)\sendrecv.obj"
+	-@erase "$(INTDIR)\sha2.obj"
+	-@erase "$(INTDIR)\sha2_glue.obj"
+	-@erase "$(INTDIR)\shm.obj"
+	-@erase "$(INTDIR)\signals.obj"
+	-@erase "$(INTDIR)\sockaddr.obj"
+	-@erase "$(INTDIR)\socket_util.obj"
+	-@erase "$(INTDIR)\sockets.obj"
+	-@erase "$(INTDIR)\sockopt.obj"
+	-@erase "$(INTDIR)\start.obj"
+	-@erase "$(INTDIR)\tempdir.obj"
+	-@erase "$(INTDIR)\thread.obj"
+	-@erase "$(INTDIR)\thread_cond.obj"
+	-@erase "$(INTDIR)\thread_mutex.obj"
+	-@erase "$(INTDIR)\thread_rwlock.obj"
+	-@erase "$(INTDIR)\threadpriv.obj"
+	-@erase "$(INTDIR)\time.obj"
+	-@erase "$(INTDIR)\timestr.obj"
+	-@erase "$(INTDIR)\userinfo.obj"
+	-@erase "$(INTDIR)\utf8.obj"
+	-@erase "$(INTDIR)\version.obj"
+	-@erase "$(OUTDIR)\apr-1.lib"
+	-@erase ".\include\apr.h"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\apr-1" /FD /EHsc /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\apr.bsc" 
+BSC32_SBRS= \
+	
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\apr-1.lib" 
+LIB32_OBJS= \
+	"$(INTDIR)\apr_atomic.obj" \
+	"$(INTDIR)\dso.obj" \
+	"$(INTDIR)\buffer.obj" \
+	"$(INTDIR)\copy.obj" \
+	"$(INTDIR)\dir.obj" \
+	"$(INTDIR)\fileacc.obj" \
+	"$(INTDIR)\filedup.obj" \
+	"$(INTDIR)\filepath.obj" \
+	"$(INTDIR)\filepath_util.obj" \
+	"$(INTDIR)\filestat.obj" \
+	"$(INTDIR)\filesys.obj" \
+	"$(INTDIR)\flock.obj" \
+	"$(INTDIR)\fullrw.obj" \
+	"$(INTDIR)\mktemp.obj" \
+	"$(INTDIR)\open.obj" \
+	"$(INTDIR)\pipe.obj" \
+	"$(INTDIR)\readwrite.obj" \
+	"$(INTDIR)\seek.obj" \
+	"$(INTDIR)\tempdir.obj" \
+	"$(INTDIR)\proc_mutex.obj" \
+	"$(INTDIR)\thread_cond.obj" \
+	"$(INTDIR)\thread_mutex.obj" \
+	"$(INTDIR)\thread_rwlock.obj" \
+	"$(INTDIR)\apr_pools.obj" \
+	"$(INTDIR)\charset.obj" \
+	"$(INTDIR)\env.obj" \
+	"$(INTDIR)\errorcodes.obj" \
+	"$(INTDIR)\getopt.obj" \
+	"$(INTDIR)\internal.obj" \
+	"$(INTDIR)\misc.obj" \
+	"$(INTDIR)\otherchild.obj" \
+	"$(INTDIR)\rand.obj" \
+	"$(INTDIR)\start.obj" \
+	"$(INTDIR)\utf8.obj" \
+	"$(INTDIR)\version.obj" \
+	"$(INTDIR)\common.obj" \
+	"$(INTDIR)\mmap.obj" \
+	"$(INTDIR)\inet_ntop.obj" \
+	"$(INTDIR)\inet_pton.obj" \
+	"$(INTDIR)\multicast.obj" \
+	"$(INTDIR)\sendrecv.obj" \
+	"$(INTDIR)\sockaddr.obj" \
+	"$(INTDIR)\sockets.obj" \
+	"$(INTDIR)\socket_util.obj" \
+	"$(INTDIR)\sockopt.obj" \
+	"$(INTDIR)\apr_getpass.obj" \
+	"$(INTDIR)\poll.obj" \
+	"$(INTDIR)\pollcb.obj" \
+	"$(INTDIR)\pollset.obj" \
+	"$(INTDIR)\select.obj" \
+	"$(INTDIR)\apr_random.obj" \
+	"$(INTDIR)\sha2.obj" \
+	"$(INTDIR)\sha2_glue.obj" \
+	"$(INTDIR)\shm.obj" \
+	"$(INTDIR)\apr_cpystrn.obj" \
+	"$(INTDIR)\apr_fnmatch.obj" \
+	"$(INTDIR)\apr_snprintf.obj" \
+	"$(INTDIR)\apr_strings.obj" \
+	"$(INTDIR)\apr_strnatcmp.obj" \
+	"$(INTDIR)\apr_strtok.obj" \
+	"$(INTDIR)\apr_hash.obj" \
+	"$(INTDIR)\apr_tables.obj" \
+	"$(INTDIR)\proc.obj" \
+	"$(INTDIR)\signals.obj" \
+	"$(INTDIR)\thread.obj" \
+	"$(INTDIR)\threadpriv.obj" \
+	"$(INTDIR)\time.obj" \
+	"$(INTDIR)\timestr.obj" \
+	"$(INTDIR)\groupinfo.obj" \
+	"$(INTDIR)\userinfo.obj"
+
+"$(OUTDIR)\apr-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+    $(LIB32) @<<
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "apr - x64 Release"
+
+OUTDIR=.\x64\LibR
+INTDIR=.\x64\LibR
+# Begin Custom Macros
+OutDir=.\x64\LibR
+# End Custom Macros
+
+ALL : ".\include\apr.h" "$(OUTDIR)\apr-1.lib"
+
+
+CLEAN :
+	-@erase "$(INTDIR)\apr-1.idb"
+	-@erase "$(INTDIR)\apr-1.pdb"
+	-@erase "$(INTDIR)\apr_atomic.obj"
+	-@erase "$(INTDIR)\apr_cpystrn.obj"
+	-@erase "$(INTDIR)\apr_fnmatch.obj"
+	-@erase "$(INTDIR)\apr_getpass.obj"
+	-@erase "$(INTDIR)\apr_hash.obj"
+	-@erase "$(INTDIR)\apr_pools.obj"
+	-@erase "$(INTDIR)\apr_random.obj"
+	-@erase "$(INTDIR)\apr_snprintf.obj"
+	-@erase "$(INTDIR)\apr_strings.obj"
+	-@erase "$(INTDIR)\apr_strnatcmp.obj"
+	-@erase "$(INTDIR)\apr_strtok.obj"
+	-@erase "$(INTDIR)\apr_tables.obj"
+	-@erase "$(INTDIR)\buffer.obj"
+	-@erase "$(INTDIR)\charset.obj"
+	-@erase "$(INTDIR)\common.obj"
+	-@erase "$(INTDIR)\copy.obj"
+	-@erase "$(INTDIR)\dir.obj"
+	-@erase "$(INTDIR)\dso.obj"
+	-@erase "$(INTDIR)\env.obj"
+	-@erase "$(INTDIR)\errorcodes.obj"
+	-@erase "$(INTDIR)\fileacc.obj"
+	-@erase "$(INTDIR)\filedup.obj"
+	-@erase "$(INTDIR)\filepath.obj"
+	-@erase "$(INTDIR)\filepath_util.obj"
+	-@erase "$(INTDIR)\filestat.obj"
+	-@erase "$(INTDIR)\filesys.obj"
+	-@erase "$(INTDIR)\flock.obj"
+	-@erase "$(INTDIR)\fullrw.obj"
+	-@erase "$(INTDIR)\getopt.obj"
+	-@erase "$(INTDIR)\groupinfo.obj"
+	-@erase "$(INTDIR)\inet_ntop.obj"
+	-@erase "$(INTDIR)\inet_pton.obj"
+	-@erase "$(INTDIR)\internal.obj"
+	-@erase "$(INTDIR)\misc.obj"
+	-@erase "$(INTDIR)\mktemp.obj"
+	-@erase "$(INTDIR)\mmap.obj"
+	-@erase "$(INTDIR)\multicast.obj"
+	-@erase "$(INTDIR)\open.obj"
+	-@erase "$(INTDIR)\otherchild.obj"
+	-@erase "$(INTDIR)\pipe.obj"
+	-@erase "$(INTDIR)\poll.obj"
+	-@erase "$(INTDIR)\pollcb.obj"
+	-@erase "$(INTDIR)\pollset.obj"
+	-@erase "$(INTDIR)\proc.obj"
+	-@erase "$(INTDIR)\proc_mutex.obj"
+	-@erase "$(INTDIR)\rand.obj"
+	-@erase "$(INTDIR)\readwrite.obj"
+	-@erase "$(INTDIR)\seek.obj"
+	-@erase "$(INTDIR)\select.obj"
+	-@erase "$(INTDIR)\sendrecv.obj"
+	-@erase "$(INTDIR)\sha2.obj"
+	-@erase "$(INTDIR)\sha2_glue.obj"
+	-@erase "$(INTDIR)\shm.obj"
+	-@erase "$(INTDIR)\signals.obj"
+	-@erase "$(INTDIR)\sockaddr.obj"
+	-@erase "$(INTDIR)\socket_util.obj"
+	-@erase "$(INTDIR)\sockets.obj"
+	-@erase "$(INTDIR)\sockopt.obj"
+	-@erase "$(INTDIR)\start.obj"
+	-@erase "$(INTDIR)\tempdir.obj"
+	-@erase "$(INTDIR)\thread.obj"
+	-@erase "$(INTDIR)\thread_cond.obj"
+	-@erase "$(INTDIR)\thread_mutex.obj"
+	-@erase "$(INTDIR)\thread_rwlock.obj"
+	-@erase "$(INTDIR)\threadpriv.obj"
+	-@erase "$(INTDIR)\time.obj"
+	-@erase "$(INTDIR)\timestr.obj"
+	-@erase "$(INTDIR)\userinfo.obj"
+	-@erase "$(INTDIR)\utf8.obj"
+	-@erase "$(INTDIR)\version.obj"
+	-@erase "$(OUTDIR)\apr-1.lib"
+	-@erase ".\include\apr.h"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\apr-1" /FD /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\apr.bsc" 
+BSC32_SBRS= \
+	
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\apr-1.lib" 
+LIB32_OBJS= \
+	"$(INTDIR)\apr_atomic.obj" \
+	"$(INTDIR)\dso.obj" \
+	"$(INTDIR)\buffer.obj" \
+	"$(INTDIR)\copy.obj" \
+	"$(INTDIR)\dir.obj" \
+	"$(INTDIR)\fileacc.obj" \
+	"$(INTDIR)\filedup.obj" \
+	"$(INTDIR)\filepath.obj" \
+	"$(INTDIR)\filepath_util.obj" \
+	"$(INTDIR)\filestat.obj" \
+	"$(INTDIR)\filesys.obj" \
+	"$(INTDIR)\flock.obj" \
+	"$(INTDIR)\fullrw.obj" \
+	"$(INTDIR)\mktemp.obj" \
+	"$(INTDIR)\open.obj" \
+	"$(INTDIR)\pipe.obj" \
+	"$(INTDIR)\readwrite.obj" \
+	"$(INTDIR)\seek.obj" \
+	"$(INTDIR)\tempdir.obj" \
+	"$(INTDIR)\proc_mutex.obj" \
+	"$(INTDIR)\thread_cond.obj" \
+	"$(INTDIR)\thread_mutex.obj" \
+	"$(INTDIR)\thread_rwlock.obj" \
+	"$(INTDIR)\apr_pools.obj" \
+	"$(INTDIR)\charset.obj" \
+	"$(INTDIR)\env.obj" \
+	"$(INTDIR)\errorcodes.obj" \
+	"$(INTDIR)\getopt.obj" \
+	"$(INTDIR)\internal.obj" \
+	"$(INTDIR)\misc.obj" \
+	"$(INTDIR)\otherchild.obj" \
+	"$(INTDIR)\rand.obj" \
+	"$(INTDIR)\start.obj" \
+	"$(INTDIR)\utf8.obj" \
+	"$(INTDIR)\version.obj" \
+	"$(INTDIR)\common.obj" \
+	"$(INTDIR)\mmap.obj" \
+	"$(INTDIR)\inet_ntop.obj" \
+	"$(INTDIR)\inet_pton.obj" \
+	"$(INTDIR)\multicast.obj" \
+	"$(INTDIR)\sendrecv.obj" \
+	"$(INTDIR)\sockaddr.obj" \
+	"$(INTDIR)\sockets.obj" \
+	"$(INTDIR)\socket_util.obj" \
+	"$(INTDIR)\sockopt.obj" \
+	"$(INTDIR)\apr_getpass.obj" \
+	"$(INTDIR)\poll.obj" \
+	"$(INTDIR)\pollcb.obj" \
+	"$(INTDIR)\pollset.obj" \
+	"$(INTDIR)\select.obj" \
+	"$(INTDIR)\apr_random.obj" \
+	"$(INTDIR)\sha2.obj" \
+	"$(INTDIR)\sha2_glue.obj" \
+	"$(INTDIR)\shm.obj" \
+	"$(INTDIR)\apr_cpystrn.obj" \
+	"$(INTDIR)\apr_fnmatch.obj" \
+	"$(INTDIR)\apr_snprintf.obj" \
+	"$(INTDIR)\apr_strings.obj" \
+	"$(INTDIR)\apr_strnatcmp.obj" \
+	"$(INTDIR)\apr_strtok.obj" \
+	"$(INTDIR)\apr_hash.obj" \
+	"$(INTDIR)\apr_tables.obj" \
+	"$(INTDIR)\proc.obj" \
+	"$(INTDIR)\signals.obj" \
+	"$(INTDIR)\thread.obj" \
+	"$(INTDIR)\threadpriv.obj" \
+	"$(INTDIR)\time.obj" \
+	"$(INTDIR)\timestr.obj" \
+	"$(INTDIR)\groupinfo.obj" \
+	"$(INTDIR)\userinfo.obj"
+
+"$(OUTDIR)\apr-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+    $(LIB32) @<<
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "apr - x64 Debug"
+
+OUTDIR=.\x64\LibD
+INTDIR=.\x64\LibD
+# Begin Custom Macros
+OutDir=.\x64\LibD
+# End Custom Macros
+
+ALL : ".\include\apr.h" "$(OUTDIR)\apr-1.lib"
+
+
+CLEAN :
+	-@erase "$(INTDIR)\apr-1.idb"
+	-@erase "$(INTDIR)\apr-1.pdb"
+	-@erase "$(INTDIR)\apr_atomic.obj"
+	-@erase "$(INTDIR)\apr_cpystrn.obj"
+	-@erase "$(INTDIR)\apr_fnmatch.obj"
+	-@erase "$(INTDIR)\apr_getpass.obj"
+	-@erase "$(INTDIR)\apr_hash.obj"
+	-@erase "$(INTDIR)\apr_pools.obj"
+	-@erase "$(INTDIR)\apr_random.obj"
+	-@erase "$(INTDIR)\apr_snprintf.obj"
+	-@erase "$(INTDIR)\apr_strings.obj"
+	-@erase "$(INTDIR)\apr_strnatcmp.obj"
+	-@erase "$(INTDIR)\apr_strtok.obj"
+	-@erase "$(INTDIR)\apr_tables.obj"
+	-@erase "$(INTDIR)\buffer.obj"
+	-@erase "$(INTDIR)\charset.obj"
+	-@erase "$(INTDIR)\common.obj"
+	-@erase "$(INTDIR)\copy.obj"
+	-@erase "$(INTDIR)\dir.obj"
+	-@erase "$(INTDIR)\dso.obj"
+	-@erase "$(INTDIR)\env.obj"
+	-@erase "$(INTDIR)\errorcodes.obj"
+	-@erase "$(INTDIR)\fileacc.obj"
+	-@erase "$(INTDIR)\filedup.obj"
+	-@erase "$(INTDIR)\filepath.obj"
+	-@erase "$(INTDIR)\filepath_util.obj"
+	-@erase "$(INTDIR)\filestat.obj"
+	-@erase "$(INTDIR)\filesys.obj"
+	-@erase "$(INTDIR)\flock.obj"
+	-@erase "$(INTDIR)\fullrw.obj"
+	-@erase "$(INTDIR)\getopt.obj"
+	-@erase "$(INTDIR)\groupinfo.obj"
+	-@erase "$(INTDIR)\inet_ntop.obj"
+	-@erase "$(INTDIR)\inet_pton.obj"
+	-@erase "$(INTDIR)\internal.obj"
+	-@erase "$(INTDIR)\misc.obj"
+	-@erase "$(INTDIR)\mktemp.obj"
+	-@erase "$(INTDIR)\mmap.obj"
+	-@erase "$(INTDIR)\multicast.obj"
+	-@erase "$(INTDIR)\open.obj"
+	-@erase "$(INTDIR)\otherchild.obj"
+	-@erase "$(INTDIR)\pipe.obj"
+	-@erase "$(INTDIR)\poll.obj"
+	-@erase "$(INTDIR)\pollcb.obj"
+	-@erase "$(INTDIR)\pollset.obj"
+	-@erase "$(INTDIR)\proc.obj"
+	-@erase "$(INTDIR)\proc_mutex.obj"
+	-@erase "$(INTDIR)\rand.obj"
+	-@erase "$(INTDIR)\readwrite.obj"
+	-@erase "$(INTDIR)\seek.obj"
+	-@erase "$(INTDIR)\select.obj"
+	-@erase "$(INTDIR)\sendrecv.obj"
+	-@erase "$(INTDIR)\sha2.obj"
+	-@erase "$(INTDIR)\sha2_glue.obj"
+	-@erase "$(INTDIR)\shm.obj"
+	-@erase "$(INTDIR)\signals.obj"
+	-@erase "$(INTDIR)\sockaddr.obj"
+	-@erase "$(INTDIR)\socket_util.obj"
+	-@erase "$(INTDIR)\sockets.obj"
+	-@erase "$(INTDIR)\sockopt.obj"
+	-@erase "$(INTDIR)\start.obj"
+	-@erase "$(INTDIR)\tempdir.obj"
+	-@erase "$(INTDIR)\thread.obj"
+	-@erase "$(INTDIR)\thread_cond.obj"
+	-@erase "$(INTDIR)\thread_mutex.obj"
+	-@erase "$(INTDIR)\thread_rwlock.obj"
+	-@erase "$(INTDIR)\threadpriv.obj"
+	-@erase "$(INTDIR)\time.obj"
+	-@erase "$(INTDIR)\timestr.obj"
+	-@erase "$(INTDIR)\userinfo.obj"
+	-@erase "$(INTDIR)\utf8.obj"
+	-@erase "$(INTDIR)\version.obj"
+	-@erase "$(OUTDIR)\apr-1.lib"
+	-@erase ".\include\apr.h"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "WINNT" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(OUTDIR)\apr-1" /FD /EHsc /c 
+
+.c{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.obj::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.c{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cpp{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+.cxx{$(INTDIR)}.sbr::
+   $(CPP) @<<
+   $(CPP_PROJ) $< 
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\apr.bsc" 
+BSC32_SBRS= \
+	
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\apr-1.lib" 
+LIB32_OBJS= \
+	"$(INTDIR)\apr_atomic.obj" \
+	"$(INTDIR)\dso.obj" \
+	"$(INTDIR)\buffer.obj" \
+	"$(INTDIR)\copy.obj" \
+	"$(INTDIR)\dir.obj" \
+	"$(INTDIR)\fileacc.obj" \
+	"$(INTDIR)\filedup.obj" \
+	"$(INTDIR)\filepath.obj" \
+	"$(INTDIR)\filepath_util.obj" \
+	"$(INTDIR)\filestat.obj" \
+	"$(INTDIR)\filesys.obj" \
+	"$(INTDIR)\flock.obj" \
+	"$(INTDIR)\fullrw.obj" \
+	"$(INTDIR)\mktemp.obj" \
+	"$(INTDIR)\open.obj" \
+	"$(INTDIR)\pipe.obj" \
+	"$(INTDIR)\readwrite.obj" \
+	"$(INTDIR)\seek.obj" \
+	"$(INTDIR)\tempdir.obj" \
+	"$(INTDIR)\proc_mutex.obj" \
+	"$(INTDIR)\thread_cond.obj" \
+	"$(INTDIR)\thread_mutex.obj" \
+	"$(INTDIR)\thread_rwlock.obj" \
+	"$(INTDIR)\apr_pools.obj" \
+	"$(INTDIR)\charset.obj" \
+	"$(INTDIR)\env.obj" \
+	"$(INTDIR)\errorcodes.obj" \
+	"$(INTDIR)\getopt.obj" \
+	"$(INTDIR)\internal.obj" \
+	"$(INTDIR)\misc.obj" \
+	"$(INTDIR)\otherchild.obj" \
+	"$(INTDIR)\rand.obj" \
+	"$(INTDIR)\start.obj" \
+	"$(INTDIR)\utf8.obj" \
+	"$(INTDIR)\version.obj" \
+	"$(INTDIR)\common.obj" \
+	"$(INTDIR)\mmap.obj" \
+	"$(INTDIR)\inet_ntop.obj" \
+	"$(INTDIR)\inet_pton.obj" \
+	"$(INTDIR)\multicast.obj" \
+	"$(INTDIR)\sendrecv.obj" \
+	"$(INTDIR)\sockaddr.obj" \
+	"$(INTDIR)\sockets.obj" \
+	"$(INTDIR)\socket_util.obj" \
+	"$(INTDIR)\sockopt.obj" \
+	"$(INTDIR)\apr_getpass.obj" \
+	"$(INTDIR)\poll.obj" \
+	"$(INTDIR)\pollcb.obj" \
+	"$(INTDIR)\pollset.obj" \
+	"$(INTDIR)\select.obj" \
+	"$(INTDIR)\apr_random.obj" \
+	"$(INTDIR)\sha2.obj" \
+	"$(INTDIR)\sha2_glue.obj" \
+	"$(INTDIR)\shm.obj" \
+	"$(INTDIR)\apr_cpystrn.obj" \
+	"$(INTDIR)\apr_fnmatch.obj" \
+	"$(INTDIR)\apr_snprintf.obj" \
+	"$(INTDIR)\apr_strings.obj" \
+	"$(INTDIR)\apr_strnatcmp.obj" \
+	"$(INTDIR)\apr_strtok.obj" \
+	"$(INTDIR)\apr_hash.obj" \
+	"$(INTDIR)\apr_tables.obj" \
+	"$(INTDIR)\proc.obj" \
+	"$(INTDIR)\signals.obj" \
+	"$(INTDIR)\thread.obj" \
+	"$(INTDIR)\threadpriv.obj" \
+	"$(INTDIR)\time.obj" \
+	"$(INTDIR)\timestr.obj" \
+	"$(INTDIR)\groupinfo.obj" \
+	"$(INTDIR)\userinfo.obj"
+
+"$(OUTDIR)\apr-1.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+    $(LIB32) @<<
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ENDIF 
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("apr.dep")
+!INCLUDE "apr.dep"
+!ELSE 
+!MESSAGE Warning: cannot find "apr.dep"
+!ENDIF 
+!ENDIF 
+
+
+!IF "$(CFG)" == "apr - Win32 Release" || "$(CFG)" == "apr - Win32 Debug" || "$(CFG)" == "apr - Win32 Release9x" || "$(CFG)" == "apr - Win32 Debug9x" || "$(CFG)" == "apr - x64 Release" || "$(CFG)" == "apr - x64 Debug"
+SOURCE=.\atomic\win32\apr_atomic.c
+
+"$(INTDIR)\apr_atomic.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\dso\win32\dso.c
+
+"$(INTDIR)\dso.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\buffer.c
+
+"$(INTDIR)\buffer.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\unix\copy.c
+
+"$(INTDIR)\copy.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\dir.c
+
+"$(INTDIR)\dir.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\unix\fileacc.c
+
+"$(INTDIR)\fileacc.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\filedup.c
+
+"$(INTDIR)\filedup.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\filepath.c
+
+"$(INTDIR)\filepath.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\unix\filepath_util.c
+
+"$(INTDIR)\filepath_util.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\filestat.c
+
+"$(INTDIR)\filestat.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\filesys.c
+
+"$(INTDIR)\filesys.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\flock.c
+
+"$(INTDIR)\flock.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\unix\fullrw.c
+
+"$(INTDIR)\fullrw.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\unix\mktemp.c
+
+"$(INTDIR)\mktemp.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\open.c
+
+"$(INTDIR)\open.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\pipe.c
+
+"$(INTDIR)\pipe.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\readwrite.c
+
+"$(INTDIR)\readwrite.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\win32\seek.c
+
+"$(INTDIR)\seek.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\file_io\unix\tempdir.c
+
+"$(INTDIR)\tempdir.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\locks\win32\proc_mutex.c
+
+"$(INTDIR)\proc_mutex.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\locks\win32\thread_cond.c
+
+"$(INTDIR)\thread_cond.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\locks\win32\thread_mutex.c
+
+"$(INTDIR)\thread_mutex.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\locks\win32\thread_rwlock.c
+
+"$(INTDIR)\thread_rwlock.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\memory\unix\apr_pools.c
+
+"$(INTDIR)\apr_pools.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\win32\apr_app.c
+SOURCE=.\misc\win32\charset.c
+
+"$(INTDIR)\charset.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\win32\env.c
+
+"$(INTDIR)\env.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\unix\errorcodes.c
+
+"$(INTDIR)\errorcodes.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\unix\getopt.c
+
+"$(INTDIR)\getopt.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\win32\internal.c
+
+"$(INTDIR)\internal.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\win32\misc.c
+
+"$(INTDIR)\misc.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\unix\otherchild.c
+
+"$(INTDIR)\otherchild.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\win32\rand.c
+
+"$(INTDIR)\rand.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\win32\start.c
+
+"$(INTDIR)\start.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\win32\utf8.c
+
+"$(INTDIR)\utf8.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\misc\unix\version.c
+
+"$(INTDIR)\version.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\mmap\unix\common.c
+
+"$(INTDIR)\common.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\mmap\win32\mmap.c
+
+"$(INTDIR)\mmap.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\network_io\unix\inet_ntop.c
+
+"$(INTDIR)\inet_ntop.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\network_io\unix\inet_pton.c
+
+"$(INTDIR)\inet_pton.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\network_io\unix\multicast.c
+
+"$(INTDIR)\multicast.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\network_io\win32\sendrecv.c
+
+"$(INTDIR)\sendrecv.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\network_io\unix\sockaddr.c
+
+"$(INTDIR)\sockaddr.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\network_io\unix\socket_util.c
+
+"$(INTDIR)\socket_util.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\network_io\win32\sockets.c
+
+"$(INTDIR)\sockets.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\network_io\win32\sockopt.c
+
+"$(INTDIR)\sockopt.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\passwd\apr_getpass.c
+
+"$(INTDIR)\apr_getpass.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\poll\unix\poll.c
+
+"$(INTDIR)\poll.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\poll\unix\pollcb.c
+
+"$(INTDIR)\pollcb.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\poll\unix\pollset.c
+
+"$(INTDIR)\pollset.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\poll\unix\select.c
+
+"$(INTDIR)\select.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\random\unix\apr_random.c
+
+"$(INTDIR)\apr_random.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\random\unix\sha2.c
+
+"$(INTDIR)\sha2.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\random\unix\sha2_glue.c
+
+"$(INTDIR)\sha2_glue.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\shmem\win32\shm.c
+
+"$(INTDIR)\shm.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\strings\apr_cpystrn.c
+
+"$(INTDIR)\apr_cpystrn.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\strings\apr_fnmatch.c
+
+"$(INTDIR)\apr_fnmatch.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\strings\apr_snprintf.c
+
+"$(INTDIR)\apr_snprintf.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\strings\apr_strings.c
+
+"$(INTDIR)\apr_strings.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\strings\apr_strnatcmp.c
+
+"$(INTDIR)\apr_strnatcmp.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\strings\apr_strtok.c
+
+"$(INTDIR)\apr_strtok.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\tables\apr_hash.c
+
+"$(INTDIR)\apr_hash.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\tables\apr_tables.c
+
+"$(INTDIR)\apr_tables.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\threadproc\win32\proc.c
+
+"$(INTDIR)\proc.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\threadproc\win32\signals.c
+
+"$(INTDIR)\signals.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\threadproc\win32\thread.c
+
+"$(INTDIR)\thread.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\threadproc\win32\threadpriv.c
+
+"$(INTDIR)\threadpriv.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\time\win32\time.c
+
+"$(INTDIR)\time.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\time\win32\timestr.c
+
+"$(INTDIR)\timestr.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\user\win32\groupinfo.c
+
+"$(INTDIR)\groupinfo.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\user\win32\userinfo.c
+
+"$(INTDIR)\userinfo.obj" : $(SOURCE) "$(INTDIR)" ".\include\apr.h"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=.\include\apr.hw
+
+!IF  "$(CFG)" == "apr - Win32 Release"
+
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug"
+
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Release9x"
+
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "apr - Win32 Debug9x"
+
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "apr - x64 Release"
+
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ELSEIF  "$(CFG)" == "apr - x64 Debug"
+
+InputPath=.\include\apr.hw
+
+".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	<<tempfile.bat 
+	@echo off 
+	type .\include\apr.hw > .\include\apr.h
+<< 
+	
+
+!ENDIF 
+
+
+!ENDIF 
+

+ 11 - 0
libs/apr/apr.pc.in

@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+APR_MAJOR_VERSION=@APR_MAJOR_VERSION@
+includedir=@includedir@
+
+Name: APR
+Description: The Apache Portable Runtime library
+Version: @APR_DOTTED_VERSION@
+Libs: -L${libdir} -l@APR_LIBNAME@ @EXTRA_LIBS@
+Cflags: @EXTRA_CPPFLAGS@ @EXTRA_CFLAGS@ -I${includedir}

+ 100 - 0
libs/apr/apr.spec

@@ -0,0 +1,100 @@
+
+%define aprver 1
+
+Summary: Apache Portable Runtime library
+Name: apr
+Version: 1.4.6
+Release: 1
+License: Apache Software License
+Group: System Environment/Libraries
+URL: http://apr.apache.org/
+Source0: http://www.apache.org/dist/apr/%{name}-%{version}.tar.bz2
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
+BuildRequires: autoconf, libtool, doxygen, python
+
+%description
+The mission of the Apache Portable Runtime (APR) is to provide a
+free library of C data structures and routines, forming a system
+portability layer to as many operating systems as possible,
+including Unices, MS Win32, BeOS and OS/2.
+
+%package devel
+Group: Development/Libraries
+Summary: APR library development kit
+Requires: apr = %{version}
+
+%description devel
+This package provides the support files which can be used to 
+build applications using the APR library.  The mission of the
+Apache Portable Runtime (APR) is to provide a free library of 
+C data structures and routines.
+
+%prep
+%setup -q
+
+%build
+# regenerate configure script etc.
+./buildconf
+%configure \
+        --prefix=/usr \
+        --includedir=%{_includedir}/apr-%{aprver} \
+        --with-installbuilddir=%{_libdir}/apr/build-%{aprver} \
+        --with-devrandom=/dev/urandom \
+        CC=gcc CXX=g++
+make %{?_smp_mflags} && make dox
+
+%check
+# Run non-interactive tests
+pushd test
+make %{?_smp_mflags} all CFLAGS=-fno-strict-aliasing
+make check || exit 1
+popd
+
+%install
+rm -rf $RPM_BUILD_ROOT
+make install DESTDIR=$RPM_BUILD_ROOT
+
+# Move docs to more convenient location
+mv docs/dox/html html
+
+# Unpackaged files:
+rm -f $RPM_BUILD_ROOT%{_libdir}/apr.exp
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%files
+%defattr(-,root,root,-)
+%doc CHANGES LICENSE NOTICE
+%{_libdir}/libapr-%{aprver}.so.*
+
+%files devel
+%defattr(-,root,root,-)
+%doc docs/APRDesign.html docs/canonical_filenames.html
+%doc docs/incomplete_types docs/non_apr_programs
+%doc --parents html
+%{_bindir}/apr*config
+%{_libdir}/libapr-%{aprver}.*a
+%{_libdir}/libapr-%{aprver}.so
+%dir %{_libdir}/apr
+%dir %{_libdir}/apr/build-%{aprver}
+%{_libdir}/apr/build-%{aprver}/*
+%{_libdir}/pkgconfig/apr-%{aprver}.pc
+%dir %{_includedir}/apr-%{aprver}
+%{_includedir}/apr-%{aprver}/*.h
+
+%changelog
+* Sat Aug 30 2008 Graham Leggett <[email protected]> 1.3.3
+- update to depend on the bzip2 binary
+- build depends on python
+
+* Tue Jun 22 2004 Graham Leggett <[email protected]> 1.0.0-1
+- update to support v1.0.0 of APR
+
+* Tue Jun 22 2004 Graham Leggett <[email protected]> 1.0.0-1
+- derived from Fedora Core apr.spec
+

+ 75 - 0
libs/apr/atomic/netware/apr_atomic.c

@@ -0,0 +1,75 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr.h"
+#include "apr_atomic.h"
+
+#include <stdlib.h>
+
+APR_DECLARE(apr_status_t) apr_atomic_init(apr_pool_t *pool)
+{
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_add32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    return atomic_xchgadd((unsigned long *)mem,(unsigned long)val);
+}
+
+APR_DECLARE(void) apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    atomic_sub((unsigned long *)mem,(unsigned long)val);
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_inc32(volatile apr_uint32_t *mem)
+{
+    return atomic_xchgadd((unsigned long *)mem, 1);
+}
+
+APR_DECLARE(void) apr_atomic_set32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    *mem = val;
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_read32(volatile apr_uint32_t *mem)
+{
+    return *mem;
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_cas32(volatile apr_uint32_t *mem, apr_uint32_t with,apr_uint32_t cmp)
+{
+    return atomic_cmpxchg((unsigned long *)mem,(unsigned long)cmp,(unsigned long)with);
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    return atomic_xchg((unsigned long *)mem,(unsigned long)val);
+}
+
+APR_DECLARE(int) apr_atomic_dec32(volatile apr_uint32_t *mem) 
+{
+    return (atomic_xchgadd((unsigned long *)mem, 0xFFFFFFFF) - 1);
+}
+
+APR_DECLARE(void *) apr_atomic_casptr(volatile void **mem, void *with, const void *cmp)
+{
+    return (void*)atomic_cmpxchg((unsigned long *)mem,(unsigned long)cmp,(unsigned long)with);
+}
+
+APR_DECLARE(void*) apr_atomic_xchgptr(volatile void **mem, void *with)
+{
+    return (void*)atomic_xchg((unsigned long *)mem,(unsigned long)with);
+}

+ 137 - 0
libs/apr/atomic/os390/atomic.c

@@ -0,0 +1,137 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "apr.h"
+#include "apr_atomic.h"
+
+#include <stdlib.h>
+
+apr_status_t apr_atomic_init(apr_pool_t *p)
+{
+    return APR_SUCCESS;
+}
+
+apr_uint32_t apr_atomic_add32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    apr_uint32_t old, new_val; 
+
+    old = *mem;   /* old is automatically updated on cs failure */
+    do {
+        new_val = old + val;
+    } while (__cs(&old, (cs_t *)mem, new_val));
+    return old;
+}
+
+void apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+     apr_uint32_t old, new_val;
+
+     old = *mem;   /* old is automatically updated on cs failure */
+     do {
+         new_val = old - val;
+     } while (__cs(&old, (cs_t *)mem, new_val));
+}
+
+apr_uint32_t apr_atomic_inc32(volatile apr_uint32_t *mem)
+{
+    return apr_atomic_add32(mem, 1);
+}
+
+int apr_atomic_dec32(volatile apr_uint32_t *mem)
+{
+    apr_uint32_t old, new_val; 
+
+    old = *mem;   /* old is automatically updated on cs failure */
+    do {
+        new_val = old - 1;
+    } while (__cs(&old, (cs_t *)mem, new_val)); 
+
+    return new_val != 0;
+}
+
+apr_uint32_t apr_atomic_read32(volatile apr_uint32_t *mem)
+{
+    return *mem;
+}
+
+void apr_atomic_set32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    *mem = val;
+}
+
+apr_uint32_t apr_atomic_cas32(volatile apr_uint32_t *mem, apr_uint32_t swap, 
+                              apr_uint32_t cmp)
+{
+    apr_uint32_t old = cmp;
+    
+    __cs(&old, (cs_t *)mem, swap);
+    return old; /* old is automatically updated from mem on cs failure */
+}
+
+#if APR_SIZEOF_VOIDP == 4
+void *apr_atomic_casptr(volatile void **mem_ptr,
+                        void *swap_ptr,
+                        const void *cmp_ptr)
+{
+     __cs1(&cmp_ptr,     /* automatically updated from mem on __cs1 failure  */
+           mem_ptr,      /* set from swap when __cs1 succeeds                */
+           &swap_ptr);
+     return (void *)cmp_ptr;
+}
+#elif APR_SIZEOF_VOIDP == 8
+void *apr_atomic_casptr(volatile void **mem_ptr,
+                        void *swap_ptr,
+                        const void *cmp_ptr)
+{
+     __csg(&cmp_ptr,     /* automatically updated from mem on __csg failure  */
+           mem_ptr,      /* set from swap when __csg succeeds                */
+           &swap_ptr);  
+     return (void *)cmp_ptr;
+}
+#else
+#error APR_SIZEOF_VOIDP value not supported
+#endif /* APR_SIZEOF_VOIDP */
+
+apr_uint32_t apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    apr_uint32_t old, new_val; 
+
+    old = *mem;   /* old is automatically updated on cs failure */
+    do {
+        new_val = val;
+    } while (__cs(&old, (cs_t *)mem, new_val)); 
+
+    return old;
+}
+
+APR_DECLARE(void*) apr_atomic_xchgptr(volatile void **mem_ptr, void *new_ptr)
+{
+    void *old_ptr;
+
+    old_ptr = *(void **)mem_ptr; /* old is automatically updated on cs failure */
+#if APR_SIZEOF_VOIDP == 4
+    do {
+    } while (__cs1(&old_ptr, mem_ptr, &new_ptr)); 
+#elif APR_SIZEOF_VOIDP == 8
+    do { 
+    } while (__csg(&old_ptr, mem_ptr, &new_ptr)); 
+#else
+#error APR_SIZEOF_VOIDP value not supported
+#endif /* APR_SIZEOF_VOIDP */
+
+    return old_ptr;
+}

+ 81 - 0
libs/apr/atomic/unix/builtins.c

@@ -0,0 +1,81 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_atomic.h"
+
+#ifdef USE_ATOMICS_BUILTINS
+
+APR_DECLARE(apr_status_t) apr_atomic_init(apr_pool_t *p)
+{
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_read32(volatile apr_uint32_t *mem)
+{
+    return *mem;
+}
+
+APR_DECLARE(void) apr_atomic_set32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    *mem = val;
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_add32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    return __sync_fetch_and_add(mem, val);
+}
+
+APR_DECLARE(void) apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    __sync_fetch_and_sub(mem, val);
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_inc32(volatile apr_uint32_t *mem)
+{
+    return __sync_fetch_and_add(mem, 1);
+}
+
+APR_DECLARE(int) apr_atomic_dec32(volatile apr_uint32_t *mem)
+{
+    return __sync_sub_and_fetch(mem, 1);
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_cas32(volatile apr_uint32_t *mem, apr_uint32_t with,
+                                           apr_uint32_t cmp)
+{
+    return __sync_val_compare_and_swap(mem, cmp, with);
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    __sync_synchronize();
+
+    return __sync_lock_test_and_set(mem, val);
+}
+
+APR_DECLARE(void*) apr_atomic_casptr(volatile void **mem, void *with, const void *cmp)
+{
+    return (void*) __sync_val_compare_and_swap(mem, cmp, with);
+}
+
+APR_DECLARE(void*) apr_atomic_xchgptr(volatile void **mem, void *with)
+{
+    __sync_synchronize();
+
+    return (void*) __sync_lock_test_and_set(mem, with);
+}
+
+#endif /* USE_ATOMICS_BUILTINS */

+ 127 - 0
libs/apr/atomic/unix/ia32.c

@@ -0,0 +1,127 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_atomic.h"
+
+#ifdef USE_ATOMICS_IA32
+
+APR_DECLARE(apr_status_t) apr_atomic_init(apr_pool_t *p)
+{
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_read32(volatile apr_uint32_t *mem)
+{
+    return *mem;
+}
+
+APR_DECLARE(void) apr_atomic_set32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    *mem = val;
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_add32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    asm volatile ("lock; xaddl %0,%1"
+                  : "=r" (val), "=m" (*mem)
+                  : "0" (val), "m" (*mem)
+                  : "memory", "cc");
+    return val;
+}
+
+APR_DECLARE(void) apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    asm volatile ("lock; subl %1, %0"
+                  : /* no output */
+                  : "m" (*(mem)), "r" (val)
+                  : "memory", "cc");
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_inc32(volatile apr_uint32_t *mem)
+{
+    return apr_atomic_add32(mem, 1);
+}
+
+APR_DECLARE(int) apr_atomic_dec32(volatile apr_uint32_t *mem)
+{
+    unsigned char prev;
+
+    asm volatile ("lock; decl %0; setnz %1"
+                  : "=m" (*mem), "=qm" (prev)
+                  : "m" (*mem)
+                  : "memory");
+
+    return prev;
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_cas32(volatile apr_uint32_t *mem, apr_uint32_t with,
+                                           apr_uint32_t cmp)
+{
+    apr_uint32_t prev;
+
+    asm volatile ("lock; cmpxchgl %1, %2"
+                  : "=a" (prev)
+                  : "r" (with), "m" (*(mem)), "0"(cmp)
+                  : "memory", "cc");
+    return prev;
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    apr_uint32_t prev = val;
+
+    asm volatile ("xchgl %0, %1"
+                  : "=r" (prev), "+m" (*mem)
+                  : "0" (prev));
+    return prev;
+}
+
+APR_DECLARE(void*) apr_atomic_casptr(volatile void **mem, void *with, const void *cmp)
+{
+    void *prev;
+#if APR_SIZEOF_VOIDP == 4
+    asm volatile ("lock; cmpxchgl %2, %1"
+                  : "=a" (prev), "=m" (*mem)
+                  : "r" (with), "m" (*mem), "0" (cmp));
+#elif APR_SIZEOF_VOIDP == 8
+    asm volatile ("lock; cmpxchgq %q2, %1"
+                  : "=a" (prev), "=m" (*mem)
+                  : "r" ((unsigned long)with), "m" (*mem),
+                    "0" ((unsigned long)cmp));
+#else
+#error APR_SIZEOF_VOIDP value not supported
+#endif
+    return prev;
+}
+
+APR_DECLARE(void*) apr_atomic_xchgptr(volatile void **mem, void *with)
+{
+    void *prev;
+#if APR_SIZEOF_VOIDP == 4
+    asm volatile ("xchgl %2, %1"
+                  : "=a" (prev), "+m" (*mem)
+                  : "0" (with));
+#elif APR_SIZEOF_VOIDP == 8
+    asm volatile ("xchgq %q2, %1"
+                  : "=a" (prev), "+m" (*mem)
+                  : "r" ((unsigned long)with));
+#else
+#error APR_SIZEOF_VOIDP value not supported
+#endif
+    return prev;
+}
+
+#endif /* USE_ATOMICS_IA32 */

+ 205 - 0
libs/apr/atomic/unix/mutex.c

@@ -0,0 +1,205 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_atomic.h"
+
+#ifdef USE_ATOMICS_GENERIC
+
+#include <stdlib.h>
+
+#if APR_HAS_THREADS
+#   define DECLARE_MUTEX_LOCKED(name, mem)  \
+        apr_thread_mutex_t *name = mutex_hash(mem)
+#   define MUTEX_UNLOCK(name)                                   \
+        do {                                                    \
+            if (apr_thread_mutex_unlock(name) != APR_SUCCESS)   \
+                abort();                                        \
+        } while (0)
+#else
+#   define DECLARE_MUTEX_LOCKED(name, mem)
+#   define MUTEX_UNLOCK(name)
+#   warning Be warned: using stubs for all atomic operations
+#endif
+
+#if APR_HAS_THREADS
+
+static apr_thread_mutex_t **hash_mutex;
+
+#define NUM_ATOMIC_HASH 7
+/* shift by 2 to get rid of alignment issues */
+#define ATOMIC_HASH(x) (unsigned int)(((unsigned long)(x)>>2)%(unsigned int)NUM_ATOMIC_HASH)
+
+static apr_status_t atomic_cleanup(void *data)
+{
+    if (hash_mutex == data)
+        hash_mutex = NULL;
+
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_atomic_init(apr_pool_t *p)
+{
+    int i;
+    apr_status_t rv;
+
+    if (hash_mutex != NULL)
+        return APR_SUCCESS;
+
+    hash_mutex = apr_palloc(p, sizeof(apr_thread_mutex_t*) * NUM_ATOMIC_HASH);
+    apr_pool_cleanup_register(p, hash_mutex, atomic_cleanup,
+                              apr_pool_cleanup_null);
+
+    for (i = 0; i < NUM_ATOMIC_HASH; i++) {
+        rv = apr_thread_mutex_create(&(hash_mutex[i]),
+                                     APR_THREAD_MUTEX_DEFAULT, p);
+        if (rv != APR_SUCCESS) {
+           return rv;
+        }
+    }
+
+    return APR_SUCCESS;
+}
+
+static APR_INLINE apr_thread_mutex_t *mutex_hash(volatile apr_uint32_t *mem)
+{
+    apr_thread_mutex_t *mutex = hash_mutex[ATOMIC_HASH(mem)];
+
+    if (apr_thread_mutex_lock(mutex) != APR_SUCCESS) {
+        abort();
+    }
+
+    return mutex;
+}
+
+#else
+
+APR_DECLARE(apr_status_t) apr_atomic_init(apr_pool_t *p)
+{
+    return APR_SUCCESS;
+}
+
+#endif /* APR_HAS_THREADS */
+
+APR_DECLARE(apr_uint32_t) apr_atomic_read32(volatile apr_uint32_t *mem)
+{
+    return *mem;
+}
+
+APR_DECLARE(void) apr_atomic_set32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    DECLARE_MUTEX_LOCKED(mutex, mem);
+
+    *mem = val;
+
+    MUTEX_UNLOCK(mutex);
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_add32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    apr_uint32_t old_value;
+    DECLARE_MUTEX_LOCKED(mutex, mem);
+
+    old_value = *mem;
+    *mem += val;
+
+    MUTEX_UNLOCK(mutex);
+
+    return old_value;
+}
+
+APR_DECLARE(void) apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    DECLARE_MUTEX_LOCKED(mutex, mem);
+    *mem -= val;
+    MUTEX_UNLOCK(mutex);
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_inc32(volatile apr_uint32_t *mem)
+{
+    return apr_atomic_add32(mem, 1);
+}
+
+APR_DECLARE(int) apr_atomic_dec32(volatile apr_uint32_t *mem)
+{
+    apr_uint32_t new;
+    DECLARE_MUTEX_LOCKED(mutex, mem);
+
+    (*mem)--;
+    new = *mem;
+
+    MUTEX_UNLOCK(mutex);
+
+    return new;
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_cas32(volatile apr_uint32_t *mem, apr_uint32_t with,
+                              apr_uint32_t cmp)
+{
+    apr_uint32_t prev;
+    DECLARE_MUTEX_LOCKED(mutex, mem);
+
+    prev = *mem;
+    if (prev == cmp) {
+        *mem = with;
+    }
+
+    MUTEX_UNLOCK(mutex);
+
+    return prev;
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    apr_uint32_t prev;
+    DECLARE_MUTEX_LOCKED(mutex, mem);
+
+    prev = *mem;
+    *mem = val;
+
+    MUTEX_UNLOCK(mutex);
+
+    return prev;
+}
+
+APR_DECLARE(void*) apr_atomic_casptr(volatile void **mem, void *with, const void *cmp)
+{
+    void *prev;
+    DECLARE_MUTEX_LOCKED(mutex, *mem);
+
+    prev = *(void **)mem;
+    if (prev == cmp) {
+        *mem = with;
+    }
+
+    MUTEX_UNLOCK(mutex);
+
+    return prev;
+}
+
+APR_DECLARE(void*) apr_atomic_xchgptr(volatile void **mem, void *with)
+{
+    void *prev;
+    DECLARE_MUTEX_LOCKED(mutex, *mem);
+
+    prev = *(void **)mem;
+    *mem = with;
+
+    MUTEX_UNLOCK(mutex);
+
+    return prev;
+}
+
+#endif /* USE_ATOMICS_GENERIC */

+ 207 - 0
libs/apr/atomic/unix/ppc.c

@@ -0,0 +1,207 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_atomic.h"
+
+#ifdef USE_ATOMICS_PPC
+
+#ifdef PPC405_ERRATA
+#   define PPC405_ERR77_SYNC   "	sync\n"
+#else
+#   define PPC405_ERR77_SYNC
+#endif
+
+APR_DECLARE(apr_status_t) apr_atomic_init(apr_pool_t *p)
+{
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_read32(volatile apr_uint32_t *mem)
+{
+    return *mem;
+}
+
+APR_DECLARE(void) apr_atomic_set32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    *mem = val;
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_add32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    apr_uint32_t prev, temp;
+
+    asm volatile ("loop_%=:\n"                  /* lost reservation     */
+                  "	lwarx   %0,0,%3\n"      /* load and reserve     */
+                  "	add     %1,%0,%4\n"     /* add val and prev     */
+                  PPC405_ERR77_SYNC             /* ppc405 Erratum 77    */
+                  "	stwcx.  %1,0,%3\n"      /* store new value      */
+                  "	bne-    loop_%=\n"      /* loop if lost         */
+                  : "=&r" (prev), "=&r" (temp), "=m" (*mem)
+                  : "b" (mem), "r" (val)
+                  : "cc", "memory");
+
+    return prev;
+}
+
+APR_DECLARE(void) apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    apr_uint32_t temp;
+
+    asm volatile ("loop_%=:\n"                  /* lost reservation     */
+                  "	lwarx   %0,0,%2\n"      /* load and reserve     */
+                  "	subf    %0,%3,%0\n"     /* subtract val         */
+                  PPC405_ERR77_SYNC             /* ppc405 Erratum 77    */
+                  "	stwcx.  %0,0,%2\n"      /* store new value      */
+                  "	bne-    loop_%=\n"      /* loop if lost         */
+                  : "=&r" (temp), "=m" (*mem)
+                  : "b" (mem), "r" (val)
+                  : "cc", "memory");
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_inc32(volatile apr_uint32_t *mem)
+{
+    apr_uint32_t prev;
+
+    asm volatile ("loop_%=:\n"                  /* lost reservation     */
+                  "	lwarx   %0,0,%2\n"      /* load and reserve     */
+                  "	addi    %0,%0,1\n"      /* add immediate        */
+                  PPC405_ERR77_SYNC             /* ppc405 Erratum 77    */
+                  "	stwcx.  %0,0,%2\n"      /* store new value      */
+                  "	bne-    loop_%=\n"      /* loop if lost         */
+                  "	subi    %0,%0,1\n"      /* return old value     */
+                  : "=&b" (prev), "=m" (*mem)
+                  : "b" (mem), "m" (*mem)
+                  : "cc", "memory");
+
+    return prev;
+}
+
+APR_DECLARE(int) apr_atomic_dec32(volatile apr_uint32_t *mem)
+{
+    apr_uint32_t prev;
+
+    asm volatile ("loop_%=:\n"                  /* lost reservation     */
+                  "	lwarx   %0,0,%2\n"      /* load and reserve     */
+                  "	subi    %0,%0,1\n"      /* subtract immediate   */
+                  PPC405_ERR77_SYNC             /* ppc405 Erratum 77    */
+                  "	stwcx.  %0,0,%2\n"      /* store new value      */
+                  "	bne-    loop_%=\n"      /* loop if lost         */
+                  : "=&b" (prev), "=m" (*mem)
+                  : "b" (mem), "m" (*mem)
+                  : "cc", "memory");
+
+    return prev;
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_cas32(volatile apr_uint32_t *mem, apr_uint32_t with,
+                                           apr_uint32_t cmp)
+{
+    apr_uint32_t prev;
+
+    asm volatile ("loop_%=:\n"                  /* lost reservation     */
+                  "	lwarx   %0,0,%1\n"      /* load and reserve     */
+                  "	cmpw    %0,%3\n"        /* compare operands     */
+                  "	bne-    exit_%=\n"      /* skip if not equal    */
+                  PPC405_ERR77_SYNC             /* ppc405 Erratum 77    */
+                  "	stwcx.  %2,0,%1\n"      /* store new value      */
+                  "	bne-    loop_%=\n"      /* loop if lost         */
+                  "exit_%=:\n"                  /* not equal            */
+                  : "=&r" (prev)
+                  : "b" (mem), "r" (with), "r" (cmp)
+                  : "cc", "memory");
+
+    return prev;
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    apr_uint32_t prev;
+
+    asm volatile ("loop_%=:\n"                  /* lost reservation     */
+                  "	lwarx   %0,0,%1\n"      /* load and reserve     */
+                  PPC405_ERR77_SYNC             /* ppc405 Erratum 77    */
+                  "	stwcx.  %2,0,%1\n"      /* store new value      */
+                  "	bne-    loop_%="        /* loop if lost         */
+                  : "=&r" (prev)
+                  : "b" (mem), "r" (val)
+                  : "cc", "memory");
+
+    return prev;
+}
+
+APR_DECLARE(void*) apr_atomic_casptr(volatile void **mem, void *with, const void *cmp)
+{
+    void *prev;
+#if APR_SIZEOF_VOIDP == 4
+    asm volatile ("loop_%=:\n"                  /* lost reservation     */
+                  "	lwarx   %0,0,%1\n"      /* load and reserve     */
+                  "	cmpw    %0,%3\n"        /* compare operands     */
+                  "	bne-    exit_%=\n"      /* skip if not equal    */
+                  PPC405_ERR77_SYNC             /* ppc405 Erratum 77    */
+                  "	stwcx.  %2,0,%1\n"      /* store new value      */
+                  "	bne-    loop_%=\n"      /* loop if lost         */
+                  "exit_%=:\n"                  /* not equal            */
+                  : "=&r" (prev)
+                  : "b" (mem), "r" (with), "r" (cmp)
+                  : "cc", "memory");
+#elif APR_SIZEOF_VOIDP == 8
+    asm volatile ("loop_%=:\n"                  /* lost reservation     */
+                  "	ldarx   %0,0,%1\n"      /* load and reserve     */
+                  "	cmpd    %0,%3\n"        /* compare operands     */
+                  "	bne-    exit_%=\n"      /* skip if not equal    */
+                  PPC405_ERR77_SYNC             /* ppc405 Erratum 77    */
+                  "	stdcx.  %2,0,%1\n"      /* store new value      */
+                  "	bne-    loop_%=\n"      /* loop if lost         */
+                  "exit_%=:\n"                  /* not equal            */
+                  : "=&r" (prev)
+                  : "b" (mem), "r" (with), "r" (cmp)
+                  : "cc", "memory");
+#else
+#error APR_SIZEOF_VOIDP value not supported
+#endif
+    return prev;
+}
+
+APR_DECLARE(void*) apr_atomic_xchgptr(volatile void **mem, void *with)
+{
+    void *prev;
+#if APR_SIZEOF_VOIDP == 4
+    asm volatile ("loop_%=:\n"                  /* lost reservation     */
+                  "	lwarx   %0,0,%1\n"      /* load and reserve     */
+                  PPC405_ERR77_SYNC             /* ppc405 Erratum 77    */
+                  "	stwcx.  %2,0,%1\n"      /* store new value      */
+                  "	bne-    loop_%=\n"      /* loop if lost         */
+                  "	isync\n"                /* memory barrier       */
+                  : "=&r" (prev)
+                  : "b" (mem), "r" (with)
+                  : "cc", "memory");
+#elif APR_SIZEOF_VOIDP == 8
+    asm volatile ("loop_%=:\n"                  /* lost reservation     */
+                  "	ldarx   %0,0,%1\n"      /* load and reserve     */
+                  PPC405_ERR77_SYNC             /* ppc405 Erratum 77    */
+                  "	stdcx.  %2,0,%1\n"      /* store new value      */
+                  "	bne-    loop_%=\n"      /* loop if lost         */
+                  "	isync\n"                /* memory barrier       */
+                  : "=&r" (prev)
+                  : "b" (mem), "r" (with)
+                  : "cc", "memory");
+#else
+#error APR_SIZEOF_VOIDP value not supported
+#endif
+    return prev;
+}
+
+#endif /* USE_ATOMICS_PPC */

+ 155 - 0
libs/apr/atomic/unix/s390.c

@@ -0,0 +1,155 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_atomic.h"
+
+#ifdef USE_ATOMICS_S390
+
+APR_DECLARE(apr_status_t) apr_atomic_init(apr_pool_t *p)
+{
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_read32(volatile apr_uint32_t *mem)
+{
+    return *mem;
+}
+
+APR_DECLARE(void) apr_atomic_set32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    *mem = val;
+}
+
+static APR_INLINE apr_uint32_t atomic_add(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    apr_uint32_t prev = *mem, temp;
+
+    asm volatile ("loop_%=:\n"
+                  "	lr  %1,%0\n"
+                  "	alr %1,%3\n"
+                  "	cs  %0,%1,%2\n"
+                  "	jl  loop_%=\n"
+                  : "+d" (prev), "+d" (temp), "=Q" (*mem)
+                  : "d" (val), "m" (*mem)
+                  : "cc", "memory");
+
+    return prev;
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_add32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    return atomic_add(mem, val);
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_inc32(volatile apr_uint32_t *mem)
+{
+    return atomic_add(mem, 1);
+}
+
+static APR_INLINE apr_uint32_t atomic_sub(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    apr_uint32_t prev = *mem, temp;
+
+    asm volatile ("loop_%=:\n"
+                  "	lr  %1,%0\n"
+                  "	slr %1,%3\n"
+                  "	cs  %0,%1,%2\n"
+                  "	jl  loop_%=\n"
+                  : "+d" (prev), "+d" (temp), "=Q" (*mem)
+                  : "d" (val), "m" (*mem)
+                  : "cc", "memory");
+
+    return temp;
+}
+
+APR_DECLARE(void) apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    atomic_sub(mem, val);
+}
+
+APR_DECLARE(int) apr_atomic_dec32(volatile apr_uint32_t *mem)
+{
+    return atomic_sub(mem, 1);
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_cas32(volatile apr_uint32_t *mem, apr_uint32_t with,
+                                           apr_uint32_t cmp)
+{
+    asm volatile ("	cs  %0,%2,%1\n"
+                  : "+d" (cmp), "=Q" (*mem)
+                  : "d" (with), "m" (*mem)
+                  : "cc", "memory");
+
+    return cmp;
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    apr_uint32_t prev = *mem;
+
+    asm volatile ("loop_%=:\n"
+                  "	cs  %0,%2,%1\n"
+                  "	jl  loop_%=\n"
+                  : "+d" (prev), "=Q" (*mem)
+                  : "d" (val), "m" (*mem)
+                  : "cc", "memory");
+
+    return prev;
+}
+
+APR_DECLARE(void*) apr_atomic_casptr(volatile void **mem, void *with, const void *cmp)
+{
+    void *prev = (void *) cmp;
+#if APR_SIZEOF_VOIDP == 4
+    asm volatile ("	cs  %0,%2,%1\n"
+                  : "+d" (prev), "=Q" (*mem)
+                  : "d" (with), "m" (*mem)
+                  : "cc", "memory");
+#elif APR_SIZEOF_VOIDP == 8
+    asm volatile ("	csg %0,%2,%1\n"
+                  : "+d" (prev), "=Q" (*mem)
+                  : "d" (with), "m" (*mem)
+                  : "cc", "memory");
+#else
+#error APR_SIZEOF_VOIDP value not supported
+#endif
+    return prev;
+}
+
+APR_DECLARE(void*) apr_atomic_xchgptr(volatile void **mem, void *with)
+{
+    void *prev = (void *) *mem;
+#if APR_SIZEOF_VOIDP == 4
+    asm volatile ("loop_%=:\n"
+                  "	cs  %0,%2,%1\n"
+                  "	jl  loop_%=\n"
+                  : "+d" (prev), "=Q" (*mem)
+                  : "d" (with), "m" (*mem)
+                  : "cc", "memory");
+#elif APR_SIZEOF_VOIDP == 8
+    asm volatile ("loop_%=:\n"
+                  "	csg %0,%2,%1\n"
+                  "	jl  loop_%=\n"
+                  : "+d" (prev), "=Q" (*mem)
+                  : "d" (with), "m" (*mem)
+                  : "cc", "memory");
+#else
+#error APR_SIZEOF_VOIDP value not supported
+#endif
+    return prev;
+}
+
+#endif /* USE_ATOMICS_S390 */

+ 79 - 0
libs/apr/atomic/unix/solaris.c

@@ -0,0 +1,79 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_atomic.h"
+
+#ifdef USE_ATOMICS_SOLARIS
+
+#include <atomic.h>
+
+APR_DECLARE(apr_status_t) apr_atomic_init(apr_pool_t *p)
+{
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_read32(volatile apr_uint32_t *mem)
+{
+    return *mem;
+}
+
+APR_DECLARE(void) apr_atomic_set32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    *mem = val;
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_add32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    return atomic_add_32_nv(mem, val) - val;
+}
+
+APR_DECLARE(void) apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    atomic_add_32(mem, -val);
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_inc32(volatile apr_uint32_t *mem)
+{
+    return atomic_inc_32_nv(mem) - 1;
+}
+
+APR_DECLARE(int) apr_atomic_dec32(volatile apr_uint32_t *mem)
+{
+    return atomic_dec_32_nv(mem);
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_cas32(volatile apr_uint32_t *mem, apr_uint32_t with,
+                                           apr_uint32_t cmp)
+{
+    return atomic_cas_32(mem, cmp, with);
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+    return atomic_swap_32(mem, val);
+}
+
+APR_DECLARE(void*) apr_atomic_casptr(volatile void **mem, void *with, const void *cmp)
+{
+    return atomic_cas_ptr(mem, (void*) cmp, with);
+}
+
+APR_DECLARE(void*) apr_atomic_xchgptr(volatile void **mem, void *with)
+{
+    return atomic_swap_ptr(mem, with);
+}
+
+#endif /* USE_ATOMICS_SOLARIS */

+ 154 - 0
libs/apr/atomic/win32/apr_atomic.c

@@ -0,0 +1,154 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr.h"
+#include "apr_atomic.h"
+#include "apr_thread_mutex.h"
+
+APR_DECLARE(apr_status_t) apr_atomic_init(apr_pool_t *p)
+{
+    return APR_SUCCESS;
+}
+
+/* 
+ * Remapping function pointer type to accept apr_uint32_t's type-safely
+ * as the arguments for as our apr_atomic_foo32 Functions
+ */
+typedef WINBASEAPI apr_uint32_t (WINAPI * apr_atomic_win32_ptr_fn)
+    (apr_uint32_t volatile *);
+typedef WINBASEAPI apr_uint32_t (WINAPI * apr_atomic_win32_ptr_val_fn)
+    (apr_uint32_t volatile *, 
+     apr_uint32_t);
+typedef WINBASEAPI apr_uint32_t (WINAPI * apr_atomic_win32_ptr_val_val_fn)
+    (apr_uint32_t volatile *, 
+     apr_uint32_t, apr_uint32_t);
+typedef WINBASEAPI void * (WINAPI * apr_atomic_win32_ptr_ptr_ptr_fn)
+    (volatile void **, 
+     void *, const void *);
+typedef WINBASEAPI void * (WINAPI * apr_atomic_win32_ptr_ptr_fn)
+    (volatile void **,
+     void *);
+
+APR_DECLARE(apr_uint32_t) apr_atomic_add32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+#if (defined(_M_IA64) || defined(_M_AMD64))
+    return InterlockedExchangeAdd(mem, val);
+#elif defined(__MINGW32__)
+    return InterlockedExchangeAdd((long *)mem, val);
+#else
+    return ((apr_atomic_win32_ptr_val_fn)InterlockedExchangeAdd)(mem, val);
+#endif
+}
+
+/* Of course we want the 2's compliment of the unsigned value, val */
+#ifdef _MSC_VER
+#pragma warning(disable: 4146)
+#endif
+
+APR_DECLARE(void) apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+#if (defined(_M_IA64) || defined(_M_AMD64))
+    InterlockedExchangeAdd(mem, -val);
+#elif defined(__MINGW32__)
+    InterlockedExchangeAdd((long *)mem, -val);
+#else
+    ((apr_atomic_win32_ptr_val_fn)InterlockedExchangeAdd)(mem, -val);
+#endif
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_inc32(volatile apr_uint32_t *mem)
+{
+    /* we return old value, win32 returns new value :( */
+#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
+    return InterlockedIncrement(mem) - 1;
+#elif defined(__MINGW32__)
+    return InterlockedIncrement((long *)mem) - 1;
+#else
+    return ((apr_atomic_win32_ptr_fn)InterlockedIncrement)(mem) - 1;
+#endif
+}
+
+APR_DECLARE(int) apr_atomic_dec32(volatile apr_uint32_t *mem)
+{
+#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
+    return InterlockedDecrement(mem);
+#elif defined(__MINGW32__)
+    return InterlockedDecrement((long *)mem);
+#else
+    return ((apr_atomic_win32_ptr_fn)InterlockedDecrement)(mem);
+#endif
+}
+
+APR_DECLARE(void) apr_atomic_set32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
+    InterlockedExchange(mem, val);
+#elif defined(__MINGW32__)
+    InterlockedExchange((long*)mem, val);
+#else
+    ((apr_atomic_win32_ptr_val_fn)InterlockedExchange)(mem, val);
+#endif
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_read32(volatile apr_uint32_t *mem)
+{
+    return *mem;
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_cas32(volatile apr_uint32_t *mem, apr_uint32_t with,
+                                           apr_uint32_t cmp)
+{
+#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
+    return InterlockedCompareExchange(mem, with, cmp);
+#elif defined(__MINGW32__)
+    return InterlockedCompareExchange((long*)mem, with, cmp);
+#else
+    return ((apr_atomic_win32_ptr_val_val_fn)InterlockedCompareExchange)(mem, with, cmp);
+#endif
+}
+
+APR_DECLARE(void *) apr_atomic_casptr(volatile void **mem, void *with, const void *cmp)
+{
+#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
+    return InterlockedCompareExchangePointer((void* volatile*)mem, with, (void*)cmp);
+#elif defined(__MINGW32__)
+    return InterlockedCompareExchangePointer((void**)mem, with, (void*)cmp);
+#else
+    /* Too many VC6 users have stale win32 API files, stub this */
+    return ((apr_atomic_win32_ptr_ptr_ptr_fn)InterlockedCompareExchange)(mem, with, cmp);
+#endif
+}
+
+APR_DECLARE(apr_uint32_t) apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint32_t val)
+{
+#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
+    return InterlockedExchange(mem, val);
+#elif defined(__MINGW32__)
+    return InterlockedExchange((long *)mem, val);
+#else
+    return ((apr_atomic_win32_ptr_val_fn)InterlockedExchange)(mem, val);
+#endif
+}
+
+APR_DECLARE(void*) apr_atomic_xchgptr(volatile void **mem, void *with)
+{
+#if (defined(_M_IA64) || defined(_M_AMD64) || defined(__MINGW32__)) && !defined(RC_INVOKED)
+    return InterlockedExchangePointer((void**)mem, with);
+#else
+    /* Too many VC6 users have stale win32 API files, stub this */
+    return ((apr_atomic_win32_ptr_ptr_fn)InterlockedExchange)(mem, with);
+#endif
+}

+ 319 - 0
libs/apr/build-outputs.mk

@@ -0,0 +1,319 @@
+# DO NOT EDIT. AUTOMATICALLY GENERATED.
+
+passwd/apr_getpass.lo: passwd/apr_getpass.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+strings/apr_cpystrn.lo: strings/apr_cpystrn.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+strings/apr_fnmatch.lo: strings/apr_fnmatch.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_fnmatch.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+strings/apr_snprintf.lo: strings/apr_snprintf.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+strings/apr_strings.lo: strings/apr_strings.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+strings/apr_strnatcmp.lo: strings/apr_strnatcmp.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+strings/apr_strtok.lo: strings/apr_strtok.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+tables/apr_hash.lo: tables/apr_hash.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_hash.h include/apr_pools.h include/apr_thread_mutex.h include/apr_time.h include/apr_want.h
+tables/apr_tables.lo: tables/apr_tables.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_want.h
+
+OBJECTS_all = passwd/apr_getpass.lo strings/apr_cpystrn.lo strings/apr_fnmatch.lo strings/apr_snprintf.lo strings/apr_strings.lo strings/apr_strnatcmp.lo strings/apr_strtok.lo tables/apr_hash.lo tables/apr_tables.lo
+
+dso/unix/dso.lo: dso/unix/dso.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_dso_unix = dso/unix/dso.lo
+
+file_io/unix/buffer.lo: file_io/unix/buffer.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_thread_mutex.h include/apr_want.h
+file_io/unix/copy.lo: file_io/unix/copy.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/unix/dir.lo: file_io/unix/dir.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/unix/fileacc.lo: file_io/unix/fileacc.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+file_io/unix/filedup.lo: file_io/unix/filedup.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/unix/filepath.lo: file_io/unix/filepath.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/unix/filepath_util.lo: file_io/unix/filepath_util.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_want.h
+file_io/unix/filestat.lo: file_io/unix/filestat.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/unix/flock.lo: file_io/unix/flock.c .make.dirs 
+file_io/unix/fullrw.lo: file_io/unix/fullrw.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/unix/mktemp.lo: file_io/unix/mktemp.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/unix/open.lo: file_io/unix/open.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_hash.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/unix/pipe.lo: file_io/unix/pipe.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/unix/readwrite.lo: file_io/unix/readwrite.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_strings.h include/apr_support.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/unix/seek.lo: file_io/unix/seek.c .make.dirs 
+file_io/unix/tempdir.lo: file_io/unix/tempdir.c .make.dirs include/apr_allocator.h include/apr_env.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_file_io_unix = file_io/unix/buffer.lo file_io/unix/copy.lo file_io/unix/dir.lo file_io/unix/fileacc.lo file_io/unix/filedup.lo file_io/unix/filepath.lo file_io/unix/filepath_util.lo file_io/unix/filestat.lo file_io/unix/flock.lo file_io/unix/fullrw.lo file_io/unix/mktemp.lo file_io/unix/open.lo file_io/unix/pipe.lo file_io/unix/readwrite.lo file_io/unix/seek.lo file_io/unix/tempdir.lo
+
+locks/unix/global_mutex.lo: locks/unix/global_mutex.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+locks/unix/proc_mutex.lo: locks/unix/proc_mutex.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_hash.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+locks/unix/thread_cond.lo: locks/unix/thread_cond.c .make.dirs 
+locks/unix/thread_mutex.lo: locks/unix/thread_mutex.c .make.dirs include/apr_want.h
+locks/unix/thread_rwlock.lo: locks/unix/thread_rwlock.c .make.dirs 
+
+OBJECTS_locks_unix = locks/unix/global_mutex.lo locks/unix/proc_mutex.lo locks/unix/thread_cond.lo locks/unix/thread_mutex.lo locks/unix/thread_rwlock.lo
+
+memory/unix/apr_pools.lo: memory/unix/apr_pools.c .make.dirs include/apr_allocator.h include/apr_atomic.h include/apr_dso.h include/apr_env.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_hash.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_memory_unix = memory/unix/apr_pools.lo
+
+misc/unix/charset.lo: misc/unix/charset.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+misc/unix/env.lo: misc/unix/env.c .make.dirs include/apr_allocator.h include/apr_env.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+misc/unix/errorcodes.lo: misc/unix/errorcodes.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+misc/unix/getopt.lo: misc/unix/getopt.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+misc/unix/otherchild.lo: misc/unix/otherchild.c .make.dirs 
+misc/unix/rand.lo: misc/unix/rand.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_thread_mutex.h include/apr_want.h
+misc/unix/start.lo: misc/unix/start.c .make.dirs include/apr_allocator.h include/apr_atomic.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_signal.h include/apr_thread_mutex.h include/apr_want.h
+misc/unix/version.lo: misc/unix/version.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_thread_mutex.h include/apr_version.h include/apr_want.h
+
+OBJECTS_misc_unix = misc/unix/charset.lo misc/unix/env.lo misc/unix/errorcodes.lo misc/unix/getopt.lo misc/unix/otherchild.lo misc/unix/rand.lo misc/unix/start.lo misc/unix/version.lo
+
+mmap/unix/common.lo: mmap/unix/common.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_mmap.h include/apr_pools.h include/apr_ring.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+mmap/unix/mmap.lo: mmap/unix/mmap.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_mmap.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_ring.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_mmap_unix = mmap/unix/common.lo mmap/unix/mmap.lo
+
+network_io/unix/inet_ntop.lo: network_io/unix/inet_ntop.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+network_io/unix/inet_pton.lo: network_io/unix/inet_pton.c .make.dirs 
+network_io/unix/multicast.lo: network_io/unix/multicast.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_support.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+network_io/unix/sendrecv.lo: network_io/unix/sendrecv.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_support.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+network_io/unix/sockaddr.lo: network_io/unix/sockaddr.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+network_io/unix/socket_util.lo: network_io/unix/socket_util.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+network_io/unix/sockets.lo: network_io/unix/sockets.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_support.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+network_io/unix/sockopt.lo: network_io/unix/sockopt.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+
+OBJECTS_network_io_unix = network_io/unix/inet_ntop.lo network_io/unix/inet_pton.lo network_io/unix/multicast.lo network_io/unix/sendrecv.lo network_io/unix/sockaddr.lo network_io/unix/socket_util.lo network_io/unix/sockets.lo network_io/unix/sockopt.lo
+
+poll/unix/epoll.lo: poll/unix/epoll.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+poll/unix/kqueue.lo: poll/unix/kqueue.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+poll/unix/poll.lo: poll/unix/poll.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+poll/unix/pollcb.lo: poll/unix/pollcb.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+poll/unix/pollset.lo: poll/unix/pollset.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+poll/unix/port.lo: poll/unix/port.c .make.dirs include/apr_allocator.h include/apr_atomic.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+poll/unix/select.lo: poll/unix/select.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_poll_unix = poll/unix/epoll.lo poll/unix/kqueue.lo poll/unix/poll.lo poll/unix/pollcb.lo poll/unix/pollset.lo poll/unix/port.lo poll/unix/select.lo
+
+random/unix/apr_random.lo: random/unix/apr_random.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_random.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+random/unix/sha2.lo: random/unix/sha2.c .make.dirs 
+random/unix/sha2_glue.lo: random/unix/sha2_glue.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_random.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_random_unix = random/unix/apr_random.lo random/unix/sha2.lo random/unix/sha2_glue.lo
+
+shmem/unix/shm.lo: shmem/unix/shm.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_user.h include/apr_want.h
+
+OBJECTS_shmem_unix = shmem/unix/shm.lo
+
+support/unix/waitio.lo: support/unix/waitio.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_support.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_support_unix = support/unix/waitio.lo
+
+threadproc/unix/proc.lo: threadproc/unix/proc.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_random.h include/apr_shm.h include/apr_signal.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+threadproc/unix/procsup.lo: threadproc/unix/procsup.c .make.dirs 
+threadproc/unix/signals.lo: threadproc/unix/signals.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_signal.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+threadproc/unix/thread.lo: threadproc/unix/thread.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+threadproc/unix/threadpriv.lo: threadproc/unix/threadpriv.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_threadproc_unix = threadproc/unix/proc.lo threadproc/unix/procsup.lo threadproc/unix/signals.lo threadproc/unix/thread.lo threadproc/unix/threadpriv.lo
+
+time/unix/time.lo: time/unix/time.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+time/unix/timestr.lo: time/unix/timestr.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_time_unix = time/unix/time.lo time/unix/timestr.lo
+
+user/unix/groupinfo.lo: user/unix/groupinfo.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+user/unix/userinfo.lo: user/unix/userinfo.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_user_unix = user/unix/groupinfo.lo user/unix/userinfo.lo
+
+atomic/unix/builtins.lo: atomic/unix/builtins.c .make.dirs 
+atomic/unix/ia32.lo: atomic/unix/ia32.c .make.dirs 
+atomic/unix/mutex.lo: atomic/unix/mutex.c .make.dirs 
+atomic/unix/ppc.lo: atomic/unix/ppc.c .make.dirs 
+atomic/unix/s390.lo: atomic/unix/s390.c .make.dirs 
+atomic/unix/solaris.lo: atomic/unix/solaris.c .make.dirs 
+
+OBJECTS_atomic_unix = atomic/unix/builtins.lo atomic/unix/ia32.lo atomic/unix/mutex.lo atomic/unix/ppc.lo atomic/unix/s390.lo atomic/unix/solaris.lo
+
+OBJECTS_unix = $(OBJECTS_all) $(OBJECTS_atomic_unix) $(OBJECTS_dso_unix) $(OBJECTS_file_io_unix) $(OBJECTS_locks_unix) $(OBJECTS_memory_unix) $(OBJECTS_misc_unix) $(OBJECTS_mmap_unix) $(OBJECTS_network_io_unix) $(OBJECTS_poll_unix) $(OBJECTS_random_unix) $(OBJECTS_shmem_unix) $(OBJECTS_support_unix) $(OBJECTS_threadproc_unix) $(OBJECTS_time_unix) $(OBJECTS_user_unix)
+
+dso/aix/dso.lo: dso/aix/dso.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_dso_aix = dso/aix/dso.lo
+
+OBJECTS_aix = $(OBJECTS_all) $(OBJECTS_atomic_unix) $(OBJECTS_dso_aix) $(OBJECTS_file_io_unix) $(OBJECTS_locks_unix) $(OBJECTS_memory_unix) $(OBJECTS_misc_unix) $(OBJECTS_mmap_unix) $(OBJECTS_network_io_unix) $(OBJECTS_poll_unix) $(OBJECTS_random_unix) $(OBJECTS_shmem_unix) $(OBJECTS_support_unix) $(OBJECTS_threadproc_unix) $(OBJECTS_time_unix) $(OBJECTS_user_unix)
+
+dso/beos/dso.lo: dso/beos/dso.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_dso_beos = dso/beos/dso.lo
+
+locks/beos/proc_mutex.lo: locks/beos/proc_mutex.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+locks/beos/thread_cond.lo: locks/beos/thread_cond.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+locks/beos/thread_mutex.lo: locks/beos/thread_mutex.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+locks/beos/thread_rwlock.lo: locks/beos/thread_rwlock.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_locks_beos = locks/beos/proc_mutex.lo locks/beos/thread_cond.lo locks/beos/thread_mutex.lo locks/beos/thread_rwlock.lo
+
+network_io/beos/sendrecv.lo: network_io/beos/sendrecv.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_thread_mutex.h include/apr_time.h include/apr_want.h
+network_io/beos/socketcommon.lo: network_io/beos/socketcommon.c .make.dirs 
+
+OBJECTS_network_io_beos = network_io/beos/sendrecv.lo network_io/beos/socketcommon.lo
+
+shmem/beos/shm.lo: shmem/beos/shm.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_shmem_beos = shmem/beos/shm.lo
+
+threadproc/beos/apr_proc_stub.lo: threadproc/beos/apr_proc_stub.c .make.dirs 
+threadproc/beos/proc.lo: threadproc/beos/proc.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+threadproc/beos/thread.lo: threadproc/beos/thread.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+threadproc/beos/threadpriv.lo: threadproc/beos/threadpriv.c .make.dirs 
+threadproc/beos/threadproc_common.lo: threadproc/beos/threadproc_common.c .make.dirs 
+
+OBJECTS_threadproc_beos = threadproc/beos/apr_proc_stub.lo threadproc/beos/proc.lo threadproc/beos/thread.lo threadproc/beos/threadpriv.lo threadproc/beos/threadproc_common.lo
+
+OBJECTS_beos = $(OBJECTS_all) $(OBJECTS_atomic_unix) $(OBJECTS_dso_beos) $(OBJECTS_file_io_unix) $(OBJECTS_locks_beos) $(OBJECTS_memory_unix) $(OBJECTS_misc_unix) $(OBJECTS_mmap_unix) $(OBJECTS_network_io_beos) $(OBJECTS_poll_unix) $(OBJECTS_random_unix) $(OBJECTS_shmem_beos) $(OBJECTS_support_unix) $(OBJECTS_threadproc_beos) $(OBJECTS_time_unix) $(OBJECTS_user_unix)
+
+dso/os2/dso.lo: dso/os2/dso.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_dso_os2 = dso/os2/dso.lo
+
+file_io/os2/buffer.lo: file_io/os2/buffer.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_thread_mutex.h include/apr_want.h
+file_io/os2/copy.lo: file_io/os2/copy.c .make.dirs 
+file_io/os2/dir.lo: file_io/os2/dir.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/os2/dir_make_recurse.lo: file_io/os2/dir_make_recurse.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/os2/fileacc.lo: file_io/os2/fileacc.c .make.dirs 
+file_io/os2/filedup.lo: file_io/os2/filedup.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/os2/filepath.lo: file_io/os2/filepath.c .make.dirs 
+file_io/os2/filepath_util.lo: file_io/os2/filepath_util.c .make.dirs 
+file_io/os2/filestat.lo: file_io/os2/filestat.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/os2/filesys.lo: file_io/os2/filesys.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+file_io/os2/flock.lo: file_io/os2/flock.c .make.dirs 
+file_io/os2/fullrw.lo: file_io/os2/fullrw.c .make.dirs 
+file_io/os2/maperrorcode.lo: file_io/os2/maperrorcode.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/os2/mktemp.lo: file_io/os2/mktemp.c .make.dirs 
+file_io/os2/open.lo: file_io/os2/open.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/os2/pipe.lo: file_io/os2/pipe.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/os2/readwrite.lo: file_io/os2/readwrite.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/os2/seek.lo: file_io/os2/seek.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/os2/tempdir.lo: file_io/os2/tempdir.c .make.dirs 
+
+OBJECTS_file_io_os2 = file_io/os2/buffer.lo file_io/os2/copy.lo file_io/os2/dir.lo file_io/os2/dir_make_recurse.lo file_io/os2/fileacc.lo file_io/os2/filedup.lo file_io/os2/filepath.lo file_io/os2/filepath_util.lo file_io/os2/filestat.lo file_io/os2/filesys.lo file_io/os2/flock.lo file_io/os2/fullrw.lo file_io/os2/maperrorcode.lo file_io/os2/mktemp.lo file_io/os2/open.lo file_io/os2/pipe.lo file_io/os2/readwrite.lo file_io/os2/seek.lo file_io/os2/tempdir.lo
+
+locks/os2/proc_mutex.lo: locks/os2/proc_mutex.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+locks/os2/thread_cond.lo: locks/os2/thread_cond.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+locks/os2/thread_mutex.lo: locks/os2/thread_mutex.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+locks/os2/thread_rwlock.lo: locks/os2/thread_rwlock.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_locks_os2 = locks/os2/proc_mutex.lo locks/os2/thread_cond.lo locks/os2/thread_mutex.lo locks/os2/thread_rwlock.lo
+
+network_io/os2/inet_ntop.lo: network_io/os2/inet_ntop.c .make.dirs 
+network_io/os2/inet_pton.lo: network_io/os2/inet_pton.c .make.dirs 
+network_io/os2/os2calls.lo: network_io/os2/os2calls.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+network_io/os2/sendrecv.lo: network_io/os2/sendrecv.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+network_io/os2/sendrecv_udp.lo: network_io/os2/sendrecv_udp.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_support.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+network_io/os2/sockaddr.lo: network_io/os2/sockaddr.c .make.dirs 
+network_io/os2/socket_util.lo: network_io/os2/socket_util.c .make.dirs 
+network_io/os2/sockets.lo: network_io/os2/sockets.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+network_io/os2/sockopt.lo: network_io/os2/sockopt.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_network_io_os2 = network_io/os2/inet_ntop.lo network_io/os2/inet_pton.lo network_io/os2/os2calls.lo network_io/os2/sendrecv.lo network_io/os2/sendrecv_udp.lo network_io/os2/sockaddr.lo network_io/os2/socket_util.lo network_io/os2/sockets.lo network_io/os2/sockopt.lo
+
+poll/os2/poll.lo: poll/os2/poll.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+poll/os2/pollset.lo: poll/os2/pollset.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_network_io.h include/apr_poll.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_poll_os2 = poll/os2/poll.lo poll/os2/pollset.lo
+
+shmem/os2/shm.lo: shmem/os2/shm.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_shmem_os2 = shmem/os2/shm.lo
+
+threadproc/os2/proc.lo: threadproc/os2/proc.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_signal.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+threadproc/os2/signals.lo: threadproc/os2/signals.c .make.dirs 
+threadproc/os2/thread.lo: threadproc/os2/thread.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+threadproc/os2/threadpriv.lo: threadproc/os2/threadpriv.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_threadproc_os2 = threadproc/os2/proc.lo threadproc/os2/signals.lo threadproc/os2/thread.lo threadproc/os2/threadpriv.lo
+
+OBJECTS_os2 = $(OBJECTS_all) $(OBJECTS_atomic_unix) $(OBJECTS_dso_os2) $(OBJECTS_file_io_os2) $(OBJECTS_locks_os2) $(OBJECTS_memory_unix) $(OBJECTS_misc_unix) $(OBJECTS_mmap_unix) $(OBJECTS_network_io_os2) $(OBJECTS_poll_os2) $(OBJECTS_random_unix) $(OBJECTS_shmem_os2) $(OBJECTS_support_unix) $(OBJECTS_threadproc_os2) $(OBJECTS_time_unix) $(OBJECTS_user_unix)
+
+dso/os390/dso.lo: dso/os390/dso.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_dso_os390 = dso/os390/dso.lo
+
+atomic/os390/atomic.lo: atomic/os390/atomic.c .make.dirs include/apr_allocator.h include/apr_atomic.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_thread_mutex.h include/apr_want.h
+
+OBJECTS_atomic_os390 = atomic/os390/atomic.lo
+
+OBJECTS_os390 = $(OBJECTS_all) $(OBJECTS_atomic_os390) $(OBJECTS_dso_os390) $(OBJECTS_file_io_unix) $(OBJECTS_locks_unix) $(OBJECTS_memory_unix) $(OBJECTS_misc_unix) $(OBJECTS_mmap_unix) $(OBJECTS_network_io_unix) $(OBJECTS_poll_unix) $(OBJECTS_random_unix) $(OBJECTS_shmem_unix) $(OBJECTS_support_unix) $(OBJECTS_threadproc_unix) $(OBJECTS_time_unix) $(OBJECTS_user_unix)
+
+dso/win32/dso.lo: dso/win32/dso.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+
+OBJECTS_dso_win32 = dso/win32/dso.lo
+
+file_io/win32/buffer.lo: file_io/win32/buffer.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_thread_mutex.h include/apr_want.h
+file_io/win32/dir.lo: file_io/win32/dir.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/win32/filedup.lo: file_io/win32/filedup.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/win32/filepath.lo: file_io/win32/filepath.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+file_io/win32/filestat.lo: file_io/win32/filestat.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/win32/filesys.lo: file_io/win32/filesys.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+file_io/win32/flock.lo: file_io/win32/flock.c .make.dirs 
+file_io/win32/open.lo: file_io/win32/open.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/win32/pipe.lo: file_io/win32/pipe.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/win32/readwrite.lo: file_io/win32/readwrite.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+file_io/win32/seek.lo: file_io/win32/seek.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_file_io_win32 = file_io/unix/copy.lo file_io/unix/fileacc.lo file_io/unix/filepath_util.lo file_io/unix/fullrw.lo file_io/unix/mktemp.lo file_io/unix/tempdir.lo file_io/win32/buffer.lo file_io/win32/dir.lo file_io/win32/filedup.lo file_io/win32/filepath.lo file_io/win32/filestat.lo file_io/win32/filesys.lo file_io/win32/flock.lo file_io/win32/open.lo file_io/win32/pipe.lo file_io/win32/readwrite.lo file_io/win32/seek.lo
+
+locks/win32/proc_mutex.lo: locks/win32/proc_mutex.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+locks/win32/thread_cond.lo: locks/win32/thread_cond.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+locks/win32/thread_mutex.lo: locks/win32/thread_mutex.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+locks/win32/thread_rwlock.lo: locks/win32/thread_rwlock.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_locks_win32 = locks/win32/proc_mutex.lo locks/win32/thread_cond.lo locks/win32/thread_mutex.lo locks/win32/thread_rwlock.lo
+
+misc/win32/charset.lo: misc/win32/charset.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+misc/win32/env.lo: misc/win32/env.c .make.dirs include/apr_allocator.h include/apr_env.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_strings.h include/apr_thread_mutex.h include/apr_want.h
+misc/win32/internal.lo: misc/win32/internal.c .make.dirs 
+misc/win32/misc.lo: misc/win32/misc.c .make.dirs include/apr_errno.h include/apr_lib.h
+misc/win32/rand.lo: misc/win32/rand.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+misc/win32/start.lo: misc/win32/start.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_signal.h include/apr_thread_mutex.h include/apr_want.h
+misc/win32/utf8.lo: misc/win32/utf8.c .make.dirs include/apr_errno.h
+
+OBJECTS_misc_win32 = misc/unix/errorcodes.lo misc/unix/getopt.lo misc/unix/otherchild.lo misc/unix/version.lo misc/win32/charset.lo misc/win32/env.lo misc/win32/internal.lo misc/win32/misc.lo misc/win32/rand.lo misc/win32/start.lo misc/win32/utf8.lo
+
+mmap/win32/mmap.lo: mmap/win32/mmap.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_mmap.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_ring.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_mmap_win32 = mmap/unix/common.lo mmap/win32/mmap.lo
+
+network_io/win32/sendrecv.lo: network_io/win32/sendrecv.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+network_io/win32/sockets.lo: network_io/win32/sockets.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+network_io/win32/sockopt.lo: network_io/win32/sockopt.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_network_io_win32 = network_io/unix/inet_ntop.lo network_io/unix/inet_pton.lo network_io/unix/multicast.lo network_io/unix/sockaddr.lo network_io/unix/socket_util.lo network_io/win32/sendrecv.lo network_io/win32/sockets.lo network_io/win32/sockopt.lo
+
+shmem/win32/shm.lo: shmem/win32/shm.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_shmem_win32 = shmem/win32/shm.lo
+
+threadproc/win32/proc.lo: threadproc/win32/proc.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+threadproc/win32/signals.lo: threadproc/win32/signals.c .make.dirs include/apr_allocator.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_inherit.h include/apr_pools.h include/apr_signal.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+threadproc/win32/thread.lo: threadproc/win32/thread.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+threadproc/win32/threadpriv.lo: threadproc/win32/threadpriv.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_threadproc_win32 = threadproc/win32/proc.lo threadproc/win32/signals.lo threadproc/win32/thread.lo threadproc/win32/threadpriv.lo
+
+time/win32/time.lo: time/win32/time.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_lib.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+time/win32/timestr.lo: time/win32/timestr.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_time_win32 = time/win32/time.lo time/win32/timestr.lo
+
+user/win32/groupinfo.lo: user/win32/groupinfo.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+user/win32/userinfo.lo: user/win32/userinfo.c .make.dirs include/apr_allocator.h include/apr_dso.h include/apr_errno.h include/apr_file_info.h include/apr_file_io.h include/apr_general.h include/apr_global_mutex.h include/apr_inherit.h include/apr_network_io.h include/apr_pools.h include/apr_portable.h include/apr_proc_mutex.h include/apr_shm.h include/apr_strings.h include/apr_tables.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_time.h include/apr_user.h include/apr_want.h
+
+OBJECTS_user_win32 = user/win32/groupinfo.lo user/win32/userinfo.lo
+
+atomic/win32/apr_atomic.lo: atomic/win32/apr_atomic.c .make.dirs include/apr_allocator.h include/apr_atomic.h include/apr_errno.h include/apr_general.h include/apr_pools.h include/apr_thread_mutex.h include/apr_want.h
+
+OBJECTS_atomic_win32 = atomic/win32/apr_atomic.lo
+
+OBJECTS_win32 = $(OBJECTS_all) $(OBJECTS_atomic_win32) $(OBJECTS_dso_win32) $(OBJECTS_file_io_win32) $(OBJECTS_locks_win32) $(OBJECTS_memory_unix) $(OBJECTS_misc_win32) $(OBJECTS_mmap_win32) $(OBJECTS_network_io_win32) $(OBJECTS_poll_unix) $(OBJECTS_random_unix) $(OBJECTS_shmem_win32) $(OBJECTS_support_unix) $(OBJECTS_threadproc_win32) $(OBJECTS_time_win32) $(OBJECTS_user_win32)
+
+HEADERS = $(top_srcdir)/include/apr_allocator.h $(top_srcdir)/include/apr_atomic.h $(top_srcdir)/include/apr_dso.h $(top_srcdir)/include/apr_env.h $(top_srcdir)/include/apr_errno.h $(top_srcdir)/include/apr_file_info.h $(top_srcdir)/include/apr_file_io.h $(top_srcdir)/include/apr_fnmatch.h $(top_srcdir)/include/apr_general.h $(top_srcdir)/include/apr_getopt.h $(top_srcdir)/include/apr_global_mutex.h $(top_srcdir)/include/apr_hash.h $(top_srcdir)/include/apr_inherit.h $(top_srcdir)/include/apr_lib.h $(top_srcdir)/include/apr_mmap.h $(top_srcdir)/include/apr_network_io.h $(top_srcdir)/include/apr_poll.h $(top_srcdir)/include/apr_pools.h $(top_srcdir)/include/apr_portable.h $(top_srcdir)/include/apr_proc_mutex.h $(top_srcdir)/include/apr_random.h $(top_srcdir)/include/apr_ring.h $(top_srcdir)/include/apr_shm.h $(top_srcdir)/include/apr_signal.h $(top_srcdir)/include/apr_strings.h $(top_srcdir)/include/apr_support.h $(top_srcdir)/include/apr_tables.h $(top_srcdir)/include/apr_thread_cond.h $(top_srcdir)/include/apr_thread_mutex.h $(top_srcdir)/include/apr_thread_proc.h $(top_srcdir)/include/apr_thread_rwlock.h $(top_srcdir)/include/apr_time.h $(top_srcdir)/include/apr_user.h $(top_srcdir)/include/apr_version.h $(top_srcdir)/include/apr_want.h
+
+SOURCE_DIRS = random/unix misc/win32 mmap/win32 dso/os2 time/unix network_io/win32 dso/win32 locks/unix user/unix time/win32 locks/beos tables support/unix file_io/unix mmap/unix atomic/unix threadproc/win32 poll/os2 atomic/win32 dso/os390 atomic/os390 dso/beos poll/unix passwd network_io/beos threadproc/os2 network_io/os2 shmem/win32 threadproc/beos shmem/unix network_io/unix file_io/os2 dso/aix file_io/win32 threadproc/unix misc/unix locks/win32 shmem/beos dso/unix locks/os2 user/win32 shmem/os2 memory/unix strings $(EXTRA_SOURCE_DIRS)
+
+BUILD_DIRS = atomic atomic/os390 atomic/unix atomic/win32 dso dso/aix dso/beos dso/os2 dso/os390 dso/unix dso/win32 file_io file_io/os2 file_io/unix file_io/win32 locks locks/beos locks/os2 locks/unix locks/win32 memory memory/unix misc misc/unix misc/win32 mmap mmap/unix mmap/win32 network_io network_io/beos network_io/os2 network_io/unix network_io/win32 passwd poll poll/os2 poll/unix random random/unix shmem shmem/beos shmem/os2 shmem/unix shmem/win32 strings support support/unix tables threadproc threadproc/beos threadproc/os2 threadproc/unix threadproc/win32 time time/unix time/win32 user user/unix user/win32
+
+.make.dirs: $(srcdir)/build-outputs.mk
+	@for d in $(BUILD_DIRS); do test -d $$d || mkdir $$d; done
+	@echo timestamp > $@

+ 28 - 0
libs/apr/build.conf

@@ -0,0 +1,28 @@
+#
+# Configuration file for APR. Used by APR/build/gen-build.py
+#
+
+[options]
+
+# paths to platform-independent .c files to build
+paths =
+  passwd/*.c
+  strings/*.c
+  tables/*.c
+
+# directories that have platform-specific code in them. the resulting
+# pattern will be: SUBDIR/PLATFORM/*.c
+platform_dirs =
+  dso file_io locks memory misc mmap network_io poll random
+  shmem support threadproc time user atomic
+
+# all the public headers
+headers = include/*.h
+
+# aplibtool is manually built by the configure process
+# build/aplibtool.c
+
+# we have a recursive makefile for the test files (for now)
+# test/*.c
+
+dsp = libapr.dsp

+ 41 - 0
libs/apr/build/MakeEtags

@@ -0,0 +1,41 @@
+#!/bin/sh
+
+# This file illustrates how to generate a useful TAGS file via etags
+# for emacs.  This should be invoked from the top source directory i.e.:
+#   > build/MakeEtags
+# and will create a TAGS file in the top source directory.
+
+# This script falls under the Apache License.
+# See http://www.apache.org/docs/LICENSE
+
+# Once you have created ./TAGS in emacs you'll need to setup
+# tag-table-alist with an entry to assure it finds the single ./TAGS
+# file from the many source directories.  Something along these lines:
+# (setq tag-table-alist
+#	'(("/home/me/work/apr-x.y/" . "/home/me/work/apr-x.y/")
+#	  ("/home/me/work/apr-util-x.y/" . "/home/me/work/apr-util-x.y/")
+#	  ("/home/me/work/httpd-x.y/" . "/home/me/work/httpd-x.y/")
+#	 ))
+
+# This requires a special version of etags, i.e. the
+# one called "Exuberant ctags" available at:
+#    http://ctags.sourceforge.net/
+# Once that is setup you'll need to point to the
+# executable here:
+
+etags=${ETAGS-etags}
+
+# Exuberant etags is necessary since it can ignore some defined symbols
+# that obscure the function signatures.
+
+ignore=AP_DECLARE,AP_DECLARE_NONSTD,__declspec,APR_DECLARE,APR_DECLARE_NONSTD
+ignore=$ignore,APU_DECLARE,APU_DECLARE_NONSTD
+
+# Create an etags file at the root of the source
+# tree, then create symbol links to it from each
+# directory in the source tree.  By passing etags
+# absolute pathnames we get a tag file that is
+# NOT portable when we move the directory tree.
+
+find . -name '*.[ch]' -print | $etags -I "$ignore"  -L -
+

+ 344 - 0
libs/apr/build/NWGNUenvironment.inc

@@ -0,0 +1,344 @@
+#
+# Setup needed Tools and Libraries
+#
+
+ifeq "$(wildcard $(APR_WORK)/build/NWGNUcustom.inc)" "$(APR_WORK)/build/NWGNUcustom.inc"
+include $(APR_WORK)/build/NWGNUcustom.inc
+CUSTOM_INI = $(AP_WORK)/NWGNUcustom.ini
+endif
+
+ifndef VERBOSE
+.SILENT:
+endif
+
+#
+# Treat like an include
+#
+ifndef EnvironmentDefined
+
+#
+# simple macros for parsing makefiles
+#
+EOLIST:=
+EMPTY :=
+COMMA := ,
+SPACE := $(EMPTY) $(EMPTY)
+
+#
+# Base environment
+#
+
+# Try and handle case issues
+ifndef NOVELLLIBC
+ifdef NovellLibC
+NOVELLLIBC = $(NovellLibC)
+endif
+endif
+
+ifndef NOVELLLIBC
+NOVELLLIBC = C:/novell/ndk/libc
+endif
+ifneq "$(wildcard $(NOVELLLIBC)/include/ndkvers.h)" "$(NOVELLLIBC)/include/ndkvers.h"
+$(error NOVELLLIBC does not point to a valid Novell LIBC SDK) 
+endif
+
+ifndef LDAPSDK
+LDAPSDK = C:/novell/ndk/cldapsdk/NetWare/libc
+endif
+ifneq "$(wildcard $(LDAPSDK)/inc/ldap.h)" "$(LDAPSDK)/inc/ldap.h"
+$(error LDAPSDK does not point to a valid Novell CLDAP SDK) 
+endif
+
+ifdef EXPATSDK
+ifeq "$(wildcard $(EXPATSDK)/include/expat.h)" "$(EXPATSDK)/include/expat.h"
+EXPAT_IMP = $(EXPATSDK)/imports/expatlbc.imp
+EXPAT_INC = $(EXPATSDK)/include
+EXPAT_LIB = $(EXPATSDK)/lib/expat.lib
+EXPAT_NLM = EXPATLBC
+else
+$(error EXPATSDK does not point to a valid EXPAT SDK) 
+endif
+endif
+ifdef EXPATSRC
+ifeq "$(wildcard $(EXPATSRC)/lib/xmlparse.c)" "$(EXPATSRC)/lib/xmlparse.c"
+EXPAT_INC = $(EXPATSRC)/lib
+EXPAT_LIB = $(EXPATSRC)/lib/$(OBJDIR)/expat.lib
+else
+$(error EXPATSRC does not point to a valid EXPAT source tree) 
+endif
+endif
+ifndef EXPAT_INC
+EXPATSRC  = $(APUXML)/expat
+EXPAT_INC = $(EXPATSRC)/lib
+EXPAT_LIB = $(EXPATSRC)/lib/$(OBJDIR)/expat.lib
+endif
+
+ifndef METROWERKS
+METROWERKS = $(ProgramFiles)\Metrowerks\CodeWarrior
+endif
+
+# If LM_LICENSE_FILE isn't defined, define a variable that can be used to
+# restart make with it defined
+ifndef LM_LICENSE_FILE
+NO_LICENSE_FILE = NO_LICENSE_FILE
+endif
+
+#
+# Set the Release type that you want to build, possible values are:
+#
+#  debug	- full debug switches are set
+#  noopt	- normal switches are set
+#  release	- optimization switches are set (default)
+
+ifdef reltype
+RELEASE = $(reltype)
+endif
+
+ifdef RELTYPE
+RELEASE = $(RELTYPE)
+endif
+
+ifdef debug
+RELEASE = debug
+endif
+
+ifdef DEBUG
+RELEASE = debug
+endif
+
+ifdef noopt
+RELEASE = noopt
+endif
+
+ifdef NOOPT
+RELEASE = noopt
+endif
+
+ifdef optimized
+RELEASE = release
+endif
+
+ifdef OPTIMIZED
+RELEASE = release
+endif
+
+ifndef RELEASE
+RELEASE = release
+endif
+
+ifeq "$(strip $(RELEASE))" "optimized"
+RELEASE = release
+endif
+
+OBJDIR = obj_$(RELEASE)
+
+#
+# Setup compiler information
+#
+
+# MetroWerks NLM tools
+CC	= mwccnlm
+CPP	= mwccnlm
+LINK	= mwldnlm
+LIB	= mwldnlm -type library -w nocmdline
+
+# Setup build tools
+AWK	= awk
+
+#
+# Declare Command and tool macros here
+#
+
+ifeq ($(findstring /sh,$(SHELL)),/sh)
+DEL	= rm -f $1
+RMDIR	= rm -rf $1
+MKDIR	= mkdir -p $1
+COPY	= cp -av $1 $2
+COPYR	= cp -ar $1 $2
+ECHONL	= echo ""
+DL	= '
+CAT	= cat
+else
+ifeq "$(OS)" "Windows_NT"
+DEL	= $(shell if exist $(subst /,\,$1) del /q /f 2>NUL $(subst /,\,$1))
+RMDIR	= $(shell if exist $(subst /,\,$1)\NUL rd /q /s 2>NUL $(subst /,\,$1))
+else
+DEL	= $(shell if exist $(subst /,\,$1) del 2>NUL $(subst /,\,$1))
+RMDIR	= $(shell if exist $(subst /,\,$1)\NUL deltree /y 2>NUL $(subst /,\,$1))
+endif
+ECHONL	= $(ComSpec) /c echo.
+MKDIR	= $(shell if not exist $(subst /,\,$1)\NUL md 2>NUL $(subst /,\,$1))
+COPY	= copy /y 2>NUL $(subst /,\,$1) $(subst /,\,$2)
+COPYR	= xcopy /y /e 2>NUL $(subst /,\,$1) $(subst /,\,$2)
+CAT	= type
+endif
+
+ifdef IPV6
+ifndef USE_STDSOCKETS
+USE_STDSOCKETS=1
+endif
+endif
+
+NOVI	= $(NOVELLLIBC)/imports
+PRELUDE	= $(NOVI)/libcpre.o
+
+INCDIRS	= $(NOVELLLIBC)/include;
+
+DEFINES	= -DNETWARE
+ifdef USE_STDSOCKETS
+DEFINES	+= -DUSE_BSD_SOCKETS
+else
+DEFINES	+= -DUSE_WINSOCK
+INCDIRS	+= $(NOVELLLIBC)/include/winsock;
+endif
+ifndef DEBUG
+DEFINES	+= -DNDEBUG
+endif
+
+ifdef USE_STDSOCKETS
+VERSION_SKT = (BSDSOCK)
+else
+VERSION_SKT = (WINSOCK)
+endif
+
+# MetroWerks static Libraries
+CLIB3S	= $(METROWERKS)/Novell Support/Metrowerks Support/Libraries/Runtime/mwcrtl.lib
+MATH3S	=
+PLIB3S	= $(METROWERKS)/Novell Support/Metrowerks Support/Libraries/MSL C++/MWCPP.lib
+
+# Base compile flags
+# and prefix or precompiled header added here.
+
+# The default flags are as follows:
+#
+# -c                    compile only, no link
+# -nosyspath            treat #include <...> like #include "..."
+# -Cpp_exceptions off   disable C++ exceptions
+# -RTTI off             disable C++ run-time typing information
+# -align 4              align on 4 byte bounderies
+# -w nocmdline          disable command-line driver/parser warnings
+# -proc PII             generate code base on Pentium II instruction set
+# -inst mmx             use MMX extensions (not used)
+
+CFLAGS = -c -nosyspath -Cpp_exceptions off -RTTI off -align 4 -w nocmdline -proc PII
+
+ifeq "$(REQUIRE_PROTOTYPES)" "1"
+CFLAGS += -r
+endif
+
+# -g                    generate debugging information
+# -O0                   level 0 optimizations
+ifeq "$(RELEASE)" "debug"
+CFLAGS += -g -O0
+endif
+
+# -O4,p                 level 4 optimizations, optimize for speed
+ifeq "$(RELEASE)" "release"
+CFLAGS += -O4,p
+endif
+
+# -prefix apr_arch_pre_nw.h      #include pre_nw.h for all files
+CFLAGS += -prefix apr_arch_pre_nw.h
+
+
+ifneq ($(findstring /sh,$(SHELL)),/sh)
+PATH:=$(PATH);$(METROWERKS)\bin;$(METROWERKS)\Other Metrowerks Tools\Command Line Tools
+endif
+
+#
+# Declare major project deliverables output directories here
+#
+
+ifdef DEST
+INSTALL = $(DEST)
+ifeq (\, $(findstring \,$(INSTALL)))
+INSTDIRS = $(DEST)
+endif
+endif
+
+ifdef dest
+INSTALL = $(dest)
+ifeq (\, $(findstring \,$(INSTALL)))
+INSTDIRS = $(dest)
+endif
+endif
+
+ifndef INSTALL
+INSTALL = $(APR_WORK)/Dist
+INSTDIRS = $(APR_WORK)/Dist
+BASEDIR = Apr
+endif
+
+# Add support for building IPV6 alongside
+ifneq "$(IPV6)" ""
+DEFINES += -DNW_BUILD_IPV6
+# INCDIRS := $(NOVELLLIBC)/include/winsock/IPV6;$(INCDIRS)
+
+ifneq "$(findstring IPV6,$(OBJDIR))" "IPV6"
+OBJDIR := $(OBJDIR)_IPV6
+endif
+        
+ifneq "$(findstring IPV6,$(INSTALL))" "IPV6"
+INSTALL := $(INSTALL)_IPV6
+endif        
+
+ifneq "$(findstring IPV6,$(INSTDIRS))" "IPV6"
+INSTDIRS := $(INSTDIRS)_IPV6
+endif
+
+endif
+
+ifdef DEST
+
+ifndef BASEDIR
+BASEDIR = Apache2
+endif
+
+endif
+
+INSTALLBASE := $(INSTALL)/$(BASEDIR)
+
+INSTDEVDIRS := \
+	$(INSTDIRS) \
+	$(INSTALLBASE) \
+	$(INSTALLBASE)/include \
+	$(INSTALLBASE)/lib \
+	$(INSTALLBASE)/bin 
+
+INSTDIRS += \
+	$(INSTALLBASE)
+
+#
+# Common directories
+#
+
+APR		= $(subst \,/,$(APR_WORK))
+APU		= $(subst \,/,$(APU_WORK))
+APRBUILD	= $(APR)/build
+APULDAP		= $(APU)/ldap
+APUXML		= $(APU)/xml
+APRTEST		= $(APR)/test
+APUTEST		= $(APU)/test
+
+#
+# Internal Libraries
+#
+
+APRLIB		= $(APR)/$(OBJDIR)/aprlib.lib
+APULIB		= $(APU)/$(OBJDIR)/apulib.lib
+APULDAPLIB	= $(APULDAP)/$(OBJDIR)/apuldap.lib
+APUXMLLIB	= $(APUXML)/$(OBJDIR)/apuxml.lib
+
+#
+# Additional general defines
+#
+
+EnvironmentDefined = 1
+endif # ifndef EnvironmentDefined
+
+# This is always set so that it will show up in lower directories
+
+ifdef Path
+Path = $(PATH)
+endif
+

+ 94 - 0
libs/apr/build/NWGNUhead.inc

@@ -0,0 +1,94 @@
+#
+# Obtain the global build environment
+#
+
+include $(APR_WORK)/build/NWGNUenvironment.inc
+
+#
+# Define base targets and rules
+# 
+
+TARGETS = libs nlms install clobber_libs clobber_nlms clean installdev
+
+.PHONY : $(TARGETS) default all help $(NO_LICENSE_FILE)
+
+# Here is where we will use the NO_LICENSE_FILE variable to see if we need to
+# restart the make with it defined
+
+ifdef NO_LICENSE_FILE
+
+default: NO_LICENSE_FILE
+
+all: NO_LICENSE_FILE
+
+install :: NO_LICENSE_FILE
+
+installdev :: NO_LICENSE_FILE
+
+NO_LICENSE_FILE :
+	$(MAKE) $(MAKECMDGOALS) -f NWGNUmakefile RELEASE=$(RELEASE) DEST="$(INSTALL)" LM_LICENSE_FILE="$(METROWERKS)/license.dat"
+
+else # LM_LICENSE_FILE must be defined so use the real targets
+
+default: $(SUBDIRS) libs nlms
+
+all: $(SUBDIRS) libs nlms install
+
+$(TARGETS) :: $(SUBDIRS)
+
+endif #NO_LICENSE_FILE check
+
+help :
+	@echo $(DL)targets for RELEASE=$(RELEASE):$(DL)
+	@echo $(DL)(default) . . . . libs nlms$(DL)
+	@echo $(DL)all . . . . . . . does everything (libs nlms install)$(DL)
+	@echo $(DL)libs. . . . . . . builds all libs$(DL)
+	@echo $(DL)nlms. . . . . . . builds all nlms$(DL)
+	@echo $(DL)install . . . . . builds libs and nlms and copies install files to$(DL)
+	@echo $(DL)                  "$(INSTALL)"$(DL)
+	@echo $(DL)installdev. . . . copies headers and files needed for development to$(DL)
+	@echo $(DL)                  "$(INSTALL)"$(DL)
+	@echo $(DL)clean . . . . . . deletes $(OBJDIR) dirs, *.err, and *.map$(DL)
+	@echo $(DL)clobber_all . . . deletes all possible output from the make$(DL)
+	@echo $(DL)clobber_install . deletes all files in $(INSTALL)$(DL)
+	@$(ECHONL)
+	@echo $(DL)Multiple targets can be used on a single make command line -$(DL)
+	@echo $(DL)(i.e. $(MAKE) clean all)$(DL)
+	@$(ECHONL)
+	@echo $(DL)You can also specify RELEASE=debug, RELEASE=noopt, or RELEASE=release$(DL)
+	@echo $(DL)The default is RELEASE=release$(DL)
+
+clobber_all :: clean clobber_install
+
+clobber_install ::
+	$(call RMDIR,$(INSTALL))
+
+#
+# build recursive targets
+#
+
+$(SUBDIRS) : FORCE
+ifneq "$(MAKECMDGOALS)" "clean"
+	@$(ECHONL)
+	@echo Building $(CURDIR)/$@
+endif
+	$(MAKE) -C $@ $(MAKECMDGOALS) -f NWGNUmakefile RELEASE=$(RELEASE) DEST="$(INSTALL)" LM_LICENSE_FILE="$(LM_LICENSE_FILE)"
+	@$(ECHONL)
+
+FORCE : ;
+
+#
+# Standard targets
+#
+
+clean :: $(SUBDIRS) $(APRTEST)
+	@echo Cleaning up $(CURDIR)
+	$(call RMDIR,$(OBJDIR))
+	$(call DEL,*.err)
+	$(call DEL,*.map)
+	$(call DEL,*.tmp)
+#	$(call DEL,*.d)
+
+$(OBJDIR) ::
+	$(call MKDIR,$@)
+

+ 83 - 0
libs/apr/build/NWGNUmakefile

@@ -0,0 +1,83 @@
+#
+# Declare the sub-directories to be built here
+#
+
+SUBDIRS = \
+	$(EOLIST) 
+
+#
+# Get the 'head' of the build environment.  This includes default targets and
+# paths to tools
+#
+
+include $(APR_WORK)/build/NWGNUhead.inc
+
+#
+# build this level's files
+
+FILES_prebuild_headers = \
+	$(APR)/include/apr.h \
+	$(APU)/include/apu.h \
+	$(APU)/include/apu_want.h \
+	$(APU)/include/apr_ldap.h \
+	$(APU)/include/private/apu_config.h \
+	$(APU)/include/private/apu_select_dbm.h \
+	$(APUXML)/expat/lib/expat_config.h \
+	$(EOLIST) 
+    
+nlms :: $(APR)/aprlib.imp
+
+$(APR)/aprlib.imp : make_nw_export.awk nw_export.i
+	@echo $(DL)GEN  $@$(DL)
+	$(AWK) -v EXPPREFIX=APR$(VERSION_MAJMIN) -f $^ >$@
+    
+nw_export.i : nw_export.inc $(APU)/build/nw_apu_export.inc $(FILES_prebuild_headers) cc.opt
+	@echo $(DL)GEN  $@$(DL)
+	$(CC) $< @cc.opt
+
+cc.opt : NWGNUmakefile $(APR_WORK)/build/NWGNUenvironment.inc $(APR_WORK)/build/NWGNUhead.inc $(APRBUILD)/NWGNUtail.inc $(CUSTOM_INI)
+	@echo $(DL)-P$(DL)> $@
+	@echo $(DL)-EP$(DL)>> $@
+	@echo $(DL)-nosyspath$(DL)>> $@
+	@echo $(DL)-w nocmdline$(DL)>> $@
+	@echo $(DL)$(DEFINES) -DGENEXPORTS$(DL)>> $@
+	@echo $(DL)-I$(APR)/include$(DL)>> $@
+	@echo $(DL)-I$(APR)/include/arch/netware$(DL)>> $@
+	@echo $(DL)-I$(APR)/include/arch/unix$(DL)>> $@
+	@echo $(DL)-I$(APU)/include$(DL)>> $@
+	@echo $(DL)-I$(APU)/include/private$(DL)>> $@
+	@echo $(DL)-I$(APU)/build$(DL)>> $@
+	@echo $(DL)-ir $(NOVELLLIBC)$(DL)>> $@
+ifneq "$(LDAPSDK)" ""
+	@echo $(DL)-ir $(LDAPSDK)$(DL)>> $@
+endif
+
+
+%.h: %.hnw
+	@echo $(DL)Creating $@$(DL)
+	$(call COPY,$<,$@)
+
+%.h: %.hw
+	@echo $(DL)Creating $@$(DL)
+	$(call COPY,$<,$@)
+
+#
+# You can use this target if all that is needed is to copy files to the
+# installation area
+#
+install :: nlms FORCE
+
+clean ::
+	$(call DEL,nw_export.i)
+	$(call DEL,cc.opt)
+	$(call DEL,NWGNUversion.inc)
+	$(call DEL,$(APR)/aprlib.imp)
+	$(foreach file,$(FILES_prebuild_headers),$(call DEL,$(file)))
+
+#
+# Include the 'tail' makefile that has targets that depend on variables defined
+# in this makefile
+#
+
+include $(APRBUILD)/NWGNUtail.inc
+    

+ 371 - 0
libs/apr/build/NWGNUtail.inc

@@ -0,0 +1,371 @@
+#
+# This contains final targets and should be included at the end of any
+# NWGNUmakefile file
+#
+
+#
+# If we are going to create an nlm, make sure we have assigned variables to
+# use during the link.
+#
+ifndef NLM_NAME
+NLM_NAME = $(TARGET_nlm)
+endif
+
+ifndef NLM_DESCRIPTION
+NLM_DESCRIPTION = $(NLM_NAME)
+endif
+
+ifndef NLM_THREAD_NAME
+NLM_THREAD_NAME = $(NLM_NAME) Thread
+endif
+
+ifndef NLM_SCREEN_NAME
+NLM_SCREEN_NAME = DEFAULT
+endif
+
+ifndef NLM_COPYRIGHT
+NLM_COPYRIGHT = Licensed under the Apache License, Version 2.0
+endif
+
+ifeq "$(NLM_FLAGS)" ""
+NLM_FLAGS = AUTOUNLOAD, PSEUDOPREEMPTION
+endif
+
+ifeq "$(NLM_STACK_SIZE)" ""
+NLM_STACK_SIZE = 65536
+endif
+
+ifeq "$(NLM_ENTRY_SYM)" ""
+NLM_ENTRY_SYM = _LibCPrelude
+endif
+
+ifeq "$(NLM_EXIT_SYM)" ""
+NLM_EXIT_SYM = _LibCPostlude
+endif
+
+ifeq "$(NLM_VERSION)" ""
+NLM_VERSION = $(VERSION)
+endif
+
+#
+# Create dependency lists based on the files available
+#
+
+
+CCOPT_DEPENDS			= \
+				$(APRBUILD)/NWGNUhead.inc \
+				$(APRBUILD)/NWGNUenvironment.inc \
+				$(APRBUILD)/NWGNUtail.inc \
+				NWGNUmakefile \
+				$(CUSTOM_INI) \
+				$(EOLIST)
+
+CPPOPT_DEPENDS			= \
+				$(APRBUILD)/NWGNUhead.inc \
+				$(APRBUILD)/NWGNUenvironment.inc \
+				$(APRBUILD)/NWGNUtail.inc \
+				NWGNUmakefile \
+				$(CUSTOM_INI) \
+				$(EOLIST)
+
+$(NLM_NAME)_LINKOPT_DEPENDS	= \
+				$(TARGET_lib) \
+				$(APRBUILD)/NWGNUenvironment.inc \
+				NWGNUmakefile \
+				$(APRBUILD)/NWGNUtail.inc \
+				$(CUSTOM_INI) \
+				$(VERSION_INC) \
+				$(EOLIST)
+
+ifeq "$(words $(strip $(TARGET_lib)))" "1"
+LIB_NAME			= $(basename $(notdir $(TARGET_lib)))
+$(LIB_NAME)_LIBLST_DEPENDS	= \
+				$(FILES_lib_objs) \
+				$(APRBUILD)/NWGNUenvironment.inc \
+				NWGNUmakefile \
+				$(APRBUILD)/NWGNUtail.inc \
+				$(CUSTOM_INI) \
+				$(EOLIST)
+endif
+
+ifeq "$(wildcard NWGNU$(LIB_NAME))" "NWGNU$(LIB_NAME)"
+$(LIB_NAME)_LIBLST_DEPENDS	+= NWGNU$(LIB_NAME)
+endif
+
+ifeq "$(wildcard NWGNU$(NLM_NAME))" "NWGNU$(NLM_NAME)"
+$(NLM_NAME)_LINKOPT_DEPENDS	+= NWGNU$(NLM_NAME)
+CCOPT_DEPENDS 	+= NWGNU$(NLM_NAME)
+CPPOPT_DEPENDS 	+= NWGNU$(NLM_NAME)
+endif
+
+#
+# Generic compiler rules
+#
+
+ifneq ($(MAKECMDGOALS),clean)
+$(APRBUILD)/NWGNUversion.inc : $(APRBUILD)/nw_ver.awk $(APR)/include/apr_version.h
+#	@echo Generating $@
+	@echo GEN  $@
+	@$(AWK) -f $^ > $@
+
+-include $(APRBUILD)/NWGNUversion.inc
+
+ifneq "$(strip $(VERSION_STR))" ""
+VERSION_INC = $(APRBUILD)/NWGNUversion.inc
+else
+VERSION		= 1,4,0
+VERSION_STR	= 1.4.0
+VERSION_MAJMIN	= 14
+endif
+endif
+
+ifeq "$(words $(strip $(TARGET_nlm)))" "1"
+INCLUDE_BLDCMDS	= 1
+CCOPT_NAME	= $(NLM_NAME)
+endif
+
+ifeq "$(words $(strip $(TARGET_lib)))" "1"
+INCLUDE_BLDCMDS	= 1
+CCOPT_NAME	= $(LIB_NAME)
+endif
+
+ifeq "$(INCLUDE_BLDCMDS)" "1"
+
+$(OBJDIR)/%.o: %.c $(OBJDIR)/$(CCOPT_NAME)_cc.opt
+#	@echo Compiling $<
+	@echo $(DL)CC   $<$(DL)
+	$(CC) -o $@ $< @$(word 2, $^)
+
+$(OBJDIR)/$(CCOPT_NAME)_cc.opt: $(CCOPT_DEPENDS)
+	$(call DEL,$@)
+ifdef VERBOSE
+	@echo $(DL)CCOPT_DEPENDS=$^$(DL)
+endif
+#	@echo Generating $@
+	@echo $(DL)GEN  $@$(DL)
+ifneq "$(strip $(CFLAGS))" ""
+	@echo $(DL)$(CFLAGS)$(DL)>> $@
+endif
+ifneq "$(strip $(XCFLAGS))" ""
+	@echo $(DL)$(XCFLAGS)$(DL)>> $@
+endif
+ifneq "$(strip $(XINCDIRS))" ""
+	@echo $(DL)$(foreach xincdir,$(strip $(subst ;,$(SPACE),$(XINCDIRS))),-I$(xincdir))$(DL)>> $@
+endif
+ifneq "$(strip $(INCDIRS))" ""
+	@echo $(DL)$(foreach incdir,$(strip $(subst ;,$(SPACE),$(INCDIRS))),-I$(incdir))$(DL)>> $@
+endif
+ifneq "$(strip $(DEFINES))" ""
+	@echo $(DL)$(DEFINES)$(DL)>> $@
+endif
+ifneq "$(strip $(XDEFINES))" ""
+	@echo $(DL)$(XDEFINES)$(DL)>> $@
+endif
+
+$(OBJDIR)/%.o: %.cpp $(OBJDIR)/$(CCOPT_NAME)_cpp.opt
+#	@echo Compiling $<
+	@echo $(DL)CPP  $<$(DL)
+	$(CCP) -o $@ $< @$(word 2, $^)
+
+$(OBJDIR)/$(CCOPT_NAME)_cpp.opt: $(CPPOPT_DEPENDS)
+	$(call DEL,$@)
+ifdef VERBOSE
+	@echo $(DL)CPPOPT_DEPENDS=$^$(DL)
+endif
+#	@echo Generating $@
+	@echo $(DL)GEN  $@$(DL)
+ifneq "$(strip $(CFLAGS))" ""
+	@echo $(DL)$(CFLAGS)$(DL)>> $@
+endif
+ifneq "$(strip $(XCFLAGS))" ""
+	@echo $(DL)$(XCFLAGS)$(DL)>> $@
+endif
+ifneq "$(strip $(XINCDIRS))" ""
+	@echo $(DL)$(foreach xincdir,$(strip $(subst ;,$(SPACE),$(XINCDIRS))),-I$(xincdir))$(DL)>> $@
+endif
+ifneq "$(strip $(INCDIRS))" ""
+	@echo $(DL)$(foreach incdir,$(strip $(subst ;,$(SPACE),$(INCDIRS))),-I$(incdir))$(DL)>> $@
+endif
+ifneq "$(strip $(DEFINES))" ""
+	@echo $(DL)$(DEFINES)$(DL)>> $@
+endif
+ifneq "$(strip $(XDEFINES))" ""
+	@echo $(DL)$(XDEFINES)$(DL)>> $@
+endif
+
+endif # one target nlm or lib
+
+#
+# Rules to build libraries
+#
+
+# If we only have one target library then build it
+
+ifeq "$(words $(strip $(TARGET_lib)))" "1"
+
+$(TARGET_lib) : $(OBJDIR)/$(LIB_NAME)_lib.lst
+	$(call DEL,$@)
+#	@echo Generating $@
+	@echo $(DL)AR   $@$(DL)
+	$(LIB) -o $@ @$<
+
+$(OBJDIR)/aprlib_lib.lst: $(aprlib_LIBLST_DEPENDS)
+	$(call DEL,$@)
+ifneq "$(strip $(FILES_lib_objs))" ""
+#	@echo Generating $@
+	@echo $(DL)GEN  $@$(DL)
+ifdef VERBOSE
+	@echo $(DL)FILES_lib_objs=$(words $(FILES_lib_objs))$(DL)
+endif
+	@echo $(DL)$(wordlist  1, 20, $(FILES_lib_objs))$(DL)>> $@
+	@echo $(DL)$(wordlist 21, 40, $(FILES_lib_objs))$(DL)>> $@
+	@echo $(DL)$(wordlist 41, 60, $(FILES_lib_objs))$(DL)>> $@
+	@echo $(DL)$(wordlist 61, 80, $(FILES_lib_objs))$(DL)>> $@
+endif
+
+$(OBJDIR)/%_lib.lst: $($(LIB_NAME)_LIBLST_DEPENDS)
+	$(call DEL,$@)
+ifneq "$(strip $(FILES_lib_objs))" ""
+#	@echo Generating $@
+	@echo $(DL)GEN  $@$(DL)
+ifdef VERBOSE
+	@echo FILES_lib_objs=$(words $(FILES_lib_objs))
+endif
+	@echo $(DL)$(FILES_lib_objs)$(DL)>> $@
+endif
+
+else # We must have more than one target library so load the individual makefiles
+
+$(OBJDIR)/%.lib: NWGNU% $(APRBUILD)/NWGNUhead.inc $(APRBUILD)/NWGNUtail.inc $(APRBUILD)/NWGNUenvironment.inc FORCE
+	@echo $(DL)Calling $<$(DL)
+	$(MAKE) -f $< $(MAKECMDGOALS) RELEASE=$(RELEASE)
+
+endif
+
+#
+# Rules to build nlms.
+#
+
+# If we only have one target NLM then build it
+ifeq "$(words $(strip $(TARGET_nlm)))" "1"
+
+$(TARGET_nlm) : $(FILES_nlm_objs) $(FILES_nlm_libs) $(OBJDIR)/$(NLM_NAME)_link.opt
+#	@echo Linking $@
+	@echo $(DL)LINK $@$(DL)
+	$(LINK) @$(OBJDIR)/$(NLM_NAME)_link.opt
+
+# This will force the link option file to be rebuilt if we change the
+# corresponding makefile
+
+$(OBJDIR)/$(NLM_NAME)_link.opt : $($(NLM_NAME)_LINKOPT_DEPENDS)
+	$(call DEL,$@)
+	$(call DEL,$(@:.opt=.def))
+#	@echo Generating $@
+	@echo $(DL)GEN  $@$(DL)
+	@echo $(DL)# Do not edit this file - it is created by make!$(DL) > $@
+	@echo $(DL)# All your changes will be lost!!$(DL)>> $@
+	@echo $(DL)-warnings off$(DL)>> $@
+	@echo $(DL)-zerobss$(DL)>> $@
+	@echo $(DL)-o $(TARGET_nlm)$(DL)>> $@
+ifneq "$(FILE_nlm_copyright)" ""
+	@-$(CAT) $(FILE_nlm_copyright) >> $@
+endif
+ifeq "$(RELEASE)" "debug"
+	@echo $(DL)-g$(DL)>> $@
+	@echo $(DL)-sym internal$(DL)>> $@
+	@echo $(DL)-sym codeview4$(DL)>> $@
+	@echo $(DL)-osym $(OBJDIR)/$(NLM_NAME).sym$(DL)>> $@
+else
+	@echo $(DL)-sym internal$(DL)>> $@
+endif
+	@echo $(DL)-l $(APR)/$(OBJDIR)$(DL)>> $@
+	@echo $(DL)-l $(APU)/$(OBJDIR)$(DL)>> $@
+	@echo $(DL)-l $(APULDAP)/$(OBJDIR)$(DL)>> $@
+	@echo $(DL)-l $(APUXML)/$(OBJDIR)$(DL)>> $@
+	@echo $(DL)-l $(APR)/misc/netware$(DL)>> $@
+	@echo $(DL)-l $(APR)$(DL)>> $@
+	@echo $(DL)-l "$(METROWERKS)/Novell Support/Metrowerks Support/Libraries/Runtime"$(DL)>> $@
+	@echo $(DL)-l "$(METROWERKS)/Novell Support/Metrowerks Support/Libraries/MSL C++"$(DL)>> $@
+ifneq "$(IPV6)" ""
+	@echo $(DL)-l $(NOVELLLIBC)/include/winsock/IPV6$(DL)>> $@
+endif
+	@echo $(DL)-l $(NOVELLLIBC)/imports$(DL)>> $@
+ifneq "$(LDAPSDK)" ""
+	@echo $(DL)-l $(LDAPSDK)/imports$(DL)>> $@
+endif
+	@echo $(DL)-nodefaults$(DL)>> $@
+	@echo $(DL)-map $(OBJDIR)/$(NLM_NAME).map$(DL)>> $@
+ifneq "$(strip $(XLFLAGS))" ""
+	@echo $(DL)$(XLFLAGS)$(DL)>> $@
+endif
+ifneq "$(strip $(FILES_nlm_objs))" ""
+	@echo $(DL)$(foreach objfile,$(strip $(FILES_nlm_objs)),$(objfile))$(DL)>> $@
+endif
+ifneq "$(FILES_nlm_libs)" ""
+	@echo $(DL)$(foreach libfile, $(notdir $(strip $(FILES_nlm_libs))),-l$(libfile))$(DL)>> $@
+endif
+	@echo $(DL)-commandfile $(@:.opt=.def)$(DL)>> $@
+	@echo $(DL)# Do not edit this file - it is created by make!$(DL)> $(@:.opt=.def)
+	@echo $(DL)# All your changes will be lost!!$(DL)>> $(@:.opt=.def)
+ifneq "$(FILE_nlm_msg)" ""
+	@echo $(DL)Messages $(FILE_nlm_msg)$(DL)>> $(@:.opt=.def)
+endif
+ifneq "$(FILE_nlm_hlp)" ""
+	@echo $(DL)Help $(FILE_nlm_hlp)$(DL)>> $(@:.opt=.def)
+endif
+ifeq "$(FILE_nlm_copyright)" ""
+	@echo $(DL)copyright "$(NLM_COPYRIGHT)"$(DL)>> $(@:.opt=.def)
+endif
+	@echo $(DL)description "$(NLM_DESCRIPTION)"$(DL)>> $(@:.opt=.def)
+	@echo $(DL)threadname "$(NLM_THREAD_NAME)"$(DL)>> $(@:.opt=.def)
+	@echo $(DL)screenname "$(NLM_SCREEN_NAME)"$(DL)>> $(@:.opt=.def)
+	@echo $(DL)stacksize $(subst K,000,$(subst k,K,$(strip $(NLM_STACK_SIZE))))$(DL)>> $(@:.opt=.def)
+	@echo $(DL)version $(NLM_VERSION) $(DL)>> $(@:.opt=.def)
+	@echo $(DL)$(strip $(NLM_FLAGS))$(DL)>> $(@:.opt=.def)
+	@echo $(DL)start $(NLM_ENTRY_SYM)$(DL)>> $(@:.opt=.def)
+	@echo $(DL)exit $(NLM_EXIT_SYM)$(DL)>> $(@:.opt=.def)
+ifneq "$(NLM_CHECK_SYM)" ""
+	@echo $(DL)check $(NLM_CHECK_SYM)$(DL)>> $(@:.opt=.def)
+endif
+ifneq "$(FILES_nlm_modules)" ""
+	@echo $(DL)module $(foreach module,$(subst $(SPACE),$(COMMA),$(strip $(FILES_nlm_modules))),$(module))$(DL)>> $(@:.opt=.def)
+endif
+ifneq "$(FILES_nlm_Ximports)" ""
+	@echo $(DL)import $(foreach import,$(subst $(SPACE),$(COMMA),$(strip $(FILES_nlm_Ximports))),$(import))$(DL)>> $(@:.opt=.def)
+endif
+ifneq "$(FILES_nlm_exports)" ""
+	@echo $(DL)export $(foreach export,$(subst $(SPACE),$(COMMA),$(strip $(FILES_nlm_exports))),$(export))$(DL)>> $(@:.opt=.def)
+endif
+# if APACHE_UNIPROC is defined, don't include XDCData
+ifndef APACHE_UNIPROC
+ifneq "$(string $(XDCDATA))" ""
+	@echo $(DL)xdcdata $(XDCDATA)$(DL)>> $(@:.opt=.def)
+else
+	@echo $(DL)xdcdata apr.xdc$(DL)>> $(@:.opt=.def)
+endif
+endif
+
+else # more than one target so look for individual makefiles.
+
+# Only include these if NO_LICENSE_FILE isn't set to prevent excessive
+# recursion
+
+ifndef NO_LICENSE_FILE
+
+$(OBJDIR)/%.nlm: NWGNU% $(APRBUILD)/NWGNUhead.inc $(APRBUILD)/NWGNUtail.inc $(APRBUILD)/NWGNUenvironment.inc $(CUSTOM_INI) $(VERSION_INC) FORCE
+	@echo $(DL)Calling $<$(DL)
+	$(MAKE) -f $< $(MAKECMDGOALS) RELEASE=$(RELEASE)
+	@$(ECHONL)
+
+else
+
+$(TARGET_nlm):
+
+endif # NO_LICENSE_FILE
+
+endif # multiple targets
+
+$(INSTDIRS) ::
+	$(call MKDIR,$@)
+
+

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно