diff --git a/.gitmodules b/.gitmodules
index 71b77c6..58c6399 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,9 +1,6 @@
[submodule "Libraries/Mono.Nat"]
path = Libraries/Mono.Nat
url = https://github.com/cwensley/Mono.Nat.git
-[submodule "Libraries/Eto"]
- path = Libraries/Eto
- url = https://github.com/picoe/Eto.git
[submodule "Libraries/lidgren"]
path = Libraries/lidgren
url = https://github.com/lidgren/lidgren-network-gen3.git
diff --git a/Libraries/Eto b/Libraries/Eto
deleted file mode 160000
index 229f853..0000000
--- a/Libraries/Eto
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 229f853dbc53d2a62f2d919cc0cf5687403c7ead
diff --git a/Source/Directory.Build.props b/Source/Directory.Build.props
new file mode 100644
index 0000000..e135c03
--- /dev/null
+++ b/Source/Directory.Build.props
@@ -0,0 +1,17 @@
+
+
+ Picoe Software Solutions
+ (c) 2006-2019 by Curtis Wensley aka Eto
+ 3.3.0-dev
+
+ $(MSBuildThisFileDirectory)..\
+ $(BasePath)Artifacts\
+
+ $(ArtifactsDir)obj\$(OS)\$(MSBuildProjectName)\
+ bin
+ $(ArtifactsDir)$(OutputArtifactName)\
+ $(ArtifactsDir)nuget\$(Configuration)\
+ PackageReference
+
+
+
\ No newline at end of file
diff --git a/Source/Directory.Build.targets b/Source/Directory.Build.targets
new file mode 100644
index 0000000..72939ce
--- /dev/null
+++ b/Source/Directory.Build.targets
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (?\d+)[.](?\d+)([.](?\d+)([.](?\d+))?)?)([-](?.+))?");
+
+if (string.IsNullOrEmpty(AssemblyVersion)) AssemblyVersion = regex.Replace(Version, "${ver}");
+if (string.IsNullOrEmpty(AssemblyFileVersion)) AssemblyFileVersion = AssemblyFileVersion ?? regex.Replace(Version, "${ver}");
+if (string.IsNullOrEmpty(AssemblyInformationalVersion)) AssemblyInformationalVersion = Version;
+
+]]>
+
+
+
+
+
+ <_ParseVersion Version="$(Version)">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Source/EmbedReferences.targets b/Source/EmbedReferences.targets
new file mode 100644
index 0000000..24b38b6
--- /dev/null
+++ b/Source/EmbedReferences.targets
@@ -0,0 +1,148 @@
+
+
+
+
+ True
+
+
+
+
+ false
+ References
+ False
+
+
+ <_GetCommonFiles Files="@(ReferencePath)" Names="$(EmbedReferences)" Condition="$(EmbedReferences) != 'True'">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(EmbedPrefix).%(FilesToEmbed.DestinationSubDirectory)%(FilesToEmbed.Filename)%(FilesToEmbed.Extension)
+
+
+
+
+
+
+
+
+
+
+ EmbedReferences.cs
+ false
+
+
+
+
+
+
+ /// Loads assemblies from embedded resources instead of from disk
+ ///
+ ///
+ /// This is useful when you want to create a single assembly/executable without having to ship referenced dll's
+ /// alongside your application.
+ ///
+ /// (c) 2012 by Curtis Wensley
+ /// See LICENSE for full terms
+ class EmbedReferences
+ {
+ readonly Dictionary loadedAssemblies = new Dictionary()%3b
+
+ ///
+ /// Gets the assembly in which this loader will load assembly resources from
+ ///
+ public Assembly Assembly { get%3b private set%3b }
+
+ ///
+ /// Gets the namespace in the to get the assembly resources from
+ ///
+ public string ResourceNamespace { get%3b private set%3b }
+
+ ///
+ /// Registers the specified namespace for loading embedded assemblies
+ ///
+ /// Namespace of where the embedded assemblies should be loaded
+ /// Assembly to load the embedded assemblies from, or null to use the calling assembly
+ /// Application domain to load the assemblies in, or null to use the current app domain
+ /// A new instance of an EmbedReferences, registered for the specified namespace and assembly
+ public static EmbedReferences Init(string resourceNamespace = "References", Assembly assembly = null, AppDomain domain = null)
+ {
+ assembly = assembly ?? Assembly.GetCallingAssembly()%3b
+ var loader = new EmbedReferences(resourceNamespace, assembly)%3b
+ loader.Init(domain)%3b
+ return loader%3b
+ }
+
+ ///
+ /// Initializes a new instance of the EmbedReferences
+ ///
+ /// Namespace of where the embedded assemblies should be loaded
+ /// Assembly to load the embedded assemblies from, or null to use the calling assembly
+ public EmbedReferences(string resourceNamespace, Assembly assembly = null)
+ {
+ this.Assembly = assembly ?? Assembly.GetCallingAssembly()%3b
+ this.ResourceNamespace = resourceNamespace%3b
+ }
+
+ ///
+ /// Registers this loader for the specified
+ ///
+ /// App domain to register this loader for, or null to use the current domain
+ public void Init(AppDomain domain = null)
+ {
+ domain = domain ?? AppDomain.CurrentDomain%3b
+ domain.AssemblyResolve += (sender, args) =>
+ {
+ var assemblyName = new AssemblyName(args.Name)%3b
+ if (assemblyName.Name.EndsWith(".resources", StringComparison.OrdinalIgnoreCase)) return null%3b
+
+ string resourceName = ResourceNamespace + "." + assemblyName.Name + ".dll"%3b
+ Assembly loadedAssembly%3b
+ lock (loadedAssemblies)
+ {
+ if (!loadedAssemblies.TryGetValue(resourceName, out loadedAssembly))
+ {
+ using (var stream = Assembly.GetManifestResourceStream(resourceName))
+ {
+ if (stream != null)
+ {
+ using (var binaryReader = new BinaryReader(stream))
+ {
+ loadedAssembly = Assembly.Load(binaryReader.ReadBytes((int)stream.Length))%3b
+ loadedAssemblies.Add(resourceName, loadedAssembly)%3b
+ }
+ }
+ }
+ }
+ }
+ return loadedAssembly%3b
+ }%3b
+ }
+ }
+ ]]>
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Source/GlobalAssemblyInfo.cs b/Source/GlobalAssemblyInfo.cs
deleted file mode 100644
index 29d8e45..0000000
--- a/Source/GlobalAssemblyInfo.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-[assembly: AssemblyCompany("Picoe Software Solutions Inc.")]
-[assembly: AssemblyProduct("")]
-[assembly: AssemblyCopyright("(c) 2013 by Curtis Wensley aka Eto")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-
-[assembly: AssemblyVersion("3.2.1.*")]
diff --git a/Source/Pablo Desktop.sln b/Source/Pablo Desktop.sln
index 9f7d483..91d0e25 100644
--- a/Source/Pablo Desktop.sln
+++ b/Source/Pablo Desktop.sln
@@ -1,264 +1,105 @@

Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.27130.2010
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.29424.173
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pablo", "Pablo\Pablo.csproj", "{35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PabloDraw", "PabloDraw\PabloDraw.csproj", "{9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pablo.Interface", "Pablo.Interface\Pablo.Interface.csproj", "{3FAACC7E-D156-4599-B0D1-6177AD78E8B1}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pablo", "Pablo\Pablo.csproj", "{35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PabloDraw", "PabloDraw\PabloDraw.csproj", "{9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pablo.Interface", "Pablo.Interface\Pablo.Interface.csproj", "{3FAACC7E-D156-4599-B0D1-6177AD78E8B1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Nat", "..\Libraries\Mono.Nat\src\Mono.Nat\Mono.Nat.csproj", "{F5D74163-145F-47BF-83DC-D0E07249C6CA}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PabloDraw.Console", "PabloDraw.Console\PabloDraw.Console.csproj", "{0457895A-719B-47E9-84F3-356B2A1F8D3C}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Eto", "Eto", "{C8B59D00-6086-492E-9112-3DA8E5025FBB}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Eto - pcl", "..\Libraries\Eto\Source\Eto\Eto - pcl.csproj", "{35EF0A4E-2A1A-492C-8BED-106774EA09F2}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Eto.Direct2D - net45", "..\Libraries\Eto\Source\Eto.Direct2D\Eto.Direct2D - net45.csproj", "{330EF9FD-5947-4AC9-9796-950C7633695F}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Eto.Gtk2 - net45", "..\Libraries\Eto\Source\Eto.Gtk\Eto.Gtk2 - net45.csproj", "{80915A80-CA54-11E3-9C1A-0800200C9A66}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Eto.Gtk3 - net45", "..\Libraries\Eto\Source\Eto.Gtk\Eto.Gtk3 - net45.csproj", "{543B2F90-CA56-11E3-9C1A-0800200C9A66}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Eto.WinForms - net45", "..\Libraries\Eto\Source\Eto.WinForms\Eto.WinForms - net45.csproj", "{9F51798A-354C-47A1-9207-4BB7D7FC7FC4}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Eto.Wpf - net45", "..\Libraries\Eto\Source\Eto.Wpf\Eto.Wpf - net45.csproj", "{63137FA0-CA55-11E3-9C1A-0800200C9A66}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PabloDraw.Console", "PabloDraw.Console\PabloDraw.Console.csproj", "{0457895A-719B-47E9-84F3-356B2A1F8D3C}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{88CCB819-8E11-429C-94D7-D5A27A671129}"
ProjectSection(SolutionItems) = preProject
- Pablo Desktop.sln = Pablo Desktop.sln
- Performance1.psess = Performance1.psess
+ Directory.Build.props = Directory.Build.props
+ Directory.Build.targets = Directory.Build.targets
+ EmbedReferences.targets = EmbedReferences.targets
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lidgren.Network", "..\Libraries\lidgren\Lidgren.Network\Lidgren.Network.csproj", "{49BA1C69-6104-41AC-A5D8-B54FA9F696E8}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Eto.XamMac2 - net45", "..\Libraries\Eto\Source\Eto.Mac\Eto.XamMac2 - net45.csproj", "{856E8C70-2702-11E4-8C21-0800200C9A66}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PabloDraw.Mac", "PabloDraw.Mac\PabloDraw.Mac.csproj", "{5590729F-3176-4A91-94E3-54F75DA2EB9D}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Eto.Mac - net45", "..\Libraries\Eto\Source\Eto.Mac\Eto.Mac - net45.csproj", "{3E7995E0-C9EB-11E3-9C1A-0800200C9A66}"
+Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "PabloDraw.WindowsInstaller", "PabloDraw.WindowsInstaller\PabloDraw.WindowsInstaller.wixproj", "{38A42F6D-A417-45B0-8EC8-A700F31CBE26}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Mac App Store|Any CPU = Mac App Store|Any CPU
- Mac Debug|Any CPU = Mac Debug|Any CPU
- Mac Developer|Any CPU = Mac Developer|Any CPU
- Mac Release|Any CPU = Mac Release|Any CPU
- Win Debug|Any CPU = Win Debug|Any CPU
- Win Release|Any CPU = Win Release|Any CPU
+ Debug|Any CPU = Debug|Any CPU
+ Debug|Mac = Debug|Mac
+ Release|Any CPU = Release|Any CPU
+ Release|Mac = Release|Mac
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}.Mac App Store|Any CPU.ActiveCfg = Release-MAS|Any CPU
- {35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}.Mac App Store|Any CPU.Build.0 = Release-MAS|Any CPU
- {35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}.Mac Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}.Mac Debug|Any CPU.Build.0 = Debug|Any CPU
- {35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}.Mac Developer|Any CPU.ActiveCfg = Release|Any CPU
- {35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}.Mac Developer|Any CPU.Build.0 = Release|Any CPU
- {35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}.Mac Release|Any CPU.ActiveCfg = Release|Any CPU
- {35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}.Mac Release|Any CPU.Build.0 = Release|Any CPU
- {35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}.Win Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}.Win Debug|Any CPU.Build.0 = Debug|Any CPU
- {35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}.Win Release|Any CPU.ActiveCfg = Release|Any CPU
- {35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}.Win Release|Any CPU.Build.0 = Release|Any CPU
- {3FAACC7E-D156-4599-B0D1-6177AD78E8B1}.Mac App Store|Any CPU.ActiveCfg = Release|Any CPU
- {3FAACC7E-D156-4599-B0D1-6177AD78E8B1}.Mac App Store|Any CPU.Build.0 = Release|Any CPU
- {3FAACC7E-D156-4599-B0D1-6177AD78E8B1}.Mac Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {3FAACC7E-D156-4599-B0D1-6177AD78E8B1}.Mac Debug|Any CPU.Build.0 = Debug|Any CPU
- {3FAACC7E-D156-4599-B0D1-6177AD78E8B1}.Mac Developer|Any CPU.ActiveCfg = Release|Any CPU
- {3FAACC7E-D156-4599-B0D1-6177AD78E8B1}.Mac Developer|Any CPU.Build.0 = Release|Any CPU
- {3FAACC7E-D156-4599-B0D1-6177AD78E8B1}.Mac Release|Any CPU.ActiveCfg = Release|Any CPU
- {3FAACC7E-D156-4599-B0D1-6177AD78E8B1}.Mac Release|Any CPU.Build.0 = Release|Any CPU
- {3FAACC7E-D156-4599-B0D1-6177AD78E8B1}.Win Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {3FAACC7E-D156-4599-B0D1-6177AD78E8B1}.Win Debug|Any CPU.Build.0 = Debug|Any CPU
- {3FAACC7E-D156-4599-B0D1-6177AD78E8B1}.Win Release|Any CPU.ActiveCfg = Release|Any CPU
- {3FAACC7E-D156-4599-B0D1-6177AD78E8B1}.Win Release|Any CPU.Build.0 = Release|Any CPU
- {9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}.Mac App Store|Any CPU.ActiveCfg = Release|Any CPU
- {9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}.Mac App Store|Any CPU.Build.0 = Release|Any CPU
- {9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}.Mac Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}.Mac Debug|Any CPU.Build.0 = Debug|Any CPU
- {9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}.Mac Developer|Any CPU.ActiveCfg = Release|Any CPU
- {9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}.Mac Developer|Any CPU.Build.0 = Release|Any CPU
- {9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}.Mac Release|Any CPU.ActiveCfg = Release|Any CPU
- {9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}.Mac Release|Any CPU.Build.0 = Release|Any CPU
- {9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}.Win Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}.Win Debug|Any CPU.Build.0 = Debug|Any CPU
- {9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}.Win Release|Any CPU.ActiveCfg = Release|Any CPU
- {9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}.Win Release|Any CPU.Build.0 = Release|Any CPU
- {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Mac App Store|Any CPU.ActiveCfg = Release|Any CPU
- {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Mac App Store|Any CPU.Build.0 = Release|Any CPU
- {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Mac Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Mac Debug|Any CPU.Build.0 = Debug|Any CPU
- {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Mac Developer|Any CPU.ActiveCfg = Release|Any CPU
- {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Mac Developer|Any CPU.Build.0 = Release|Any CPU
- {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Mac Release|Any CPU.ActiveCfg = Release|Any CPU
- {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Mac Release|Any CPU.Build.0 = Release|Any CPU
- {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Win Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Win Debug|Any CPU.Build.0 = Debug|Any CPU
- {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Win Release|Any CPU.ActiveCfg = Release|Any CPU
- {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Win Release|Any CPU.Build.0 = Release|Any CPU
- {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Mac App Store|Any CPU.ActiveCfg = Release|Any CPU
- {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Mac App Store|Any CPU.Build.0 = Release|Any CPU
- {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Mac Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Mac Debug|Any CPU.Build.0 = Debug|Any CPU
- {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Mac Developer|Any CPU.ActiveCfg = Release|Any CPU
- {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Mac Developer|Any CPU.Build.0 = Release|Any CPU
- {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Mac Release|Any CPU.ActiveCfg = Release|Any CPU
- {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Mac Release|Any CPU.Build.0 = Release|Any CPU
- {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Win Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Win Debug|Any CPU.Build.0 = Debug|Any CPU
- {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Win Release|Any CPU.ActiveCfg = Release|Any CPU
- {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Win Release|Any CPU.Build.0 = Release|Any CPU
- {35EF0A4E-2A1A-492C-8BED-106774EA09F2}.Mac App Store|Any CPU.ActiveCfg = Release|Any CPU
- {35EF0A4E-2A1A-492C-8BED-106774EA09F2}.Mac App Store|Any CPU.Build.0 = Release|Any CPU
- {35EF0A4E-2A1A-492C-8BED-106774EA09F2}.Mac Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {35EF0A4E-2A1A-492C-8BED-106774EA09F2}.Mac Debug|Any CPU.Build.0 = Debug|Any CPU
- {35EF0A4E-2A1A-492C-8BED-106774EA09F2}.Mac Developer|Any CPU.ActiveCfg = Release|Any CPU
- {35EF0A4E-2A1A-492C-8BED-106774EA09F2}.Mac Developer|Any CPU.Build.0 = Release|Any CPU
- {35EF0A4E-2A1A-492C-8BED-106774EA09F2}.Mac Release|Any CPU.ActiveCfg = Release|Any CPU
- {35EF0A4E-2A1A-492C-8BED-106774EA09F2}.Mac Release|Any CPU.Build.0 = Release|Any CPU
- {35EF0A4E-2A1A-492C-8BED-106774EA09F2}.Win Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {35EF0A4E-2A1A-492C-8BED-106774EA09F2}.Win Debug|Any CPU.Build.0 = Debug|Any CPU
- {35EF0A4E-2A1A-492C-8BED-106774EA09F2}.Win Release|Any CPU.ActiveCfg = Release|Any CPU
- {35EF0A4E-2A1A-492C-8BED-106774EA09F2}.Win Release|Any CPU.Build.0 = Release|Any CPU
- {330EF9FD-5947-4AC9-9796-950C7633695F}.Mac App Store|Any CPU.ActiveCfg = Release|Any CPU
- {330EF9FD-5947-4AC9-9796-950C7633695F}.Mac App Store|Any CPU.Build.0 = Release|Any CPU
- {330EF9FD-5947-4AC9-9796-950C7633695F}.Mac Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {330EF9FD-5947-4AC9-9796-950C7633695F}.Mac Debug|Any CPU.Build.0 = Debug|Any CPU
- {330EF9FD-5947-4AC9-9796-950C7633695F}.Mac Developer|Any CPU.ActiveCfg = Release|Any CPU
- {330EF9FD-5947-4AC9-9796-950C7633695F}.Mac Developer|Any CPU.Build.0 = Release|Any CPU
- {330EF9FD-5947-4AC9-9796-950C7633695F}.Mac Release|Any CPU.ActiveCfg = Release|Any CPU
- {330EF9FD-5947-4AC9-9796-950C7633695F}.Mac Release|Any CPU.Build.0 = Release|Any CPU
- {330EF9FD-5947-4AC9-9796-950C7633695F}.Win Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {330EF9FD-5947-4AC9-9796-950C7633695F}.Win Debug|Any CPU.Build.0 = Debug|Any CPU
- {330EF9FD-5947-4AC9-9796-950C7633695F}.Win Release|Any CPU.ActiveCfg = Release|Any CPU
- {330EF9FD-5947-4AC9-9796-950C7633695F}.Win Release|Any CPU.Build.0 = Release|Any CPU
- {80915A80-CA54-11E3-9C1A-0800200C9A66}.Mac App Store|Any CPU.ActiveCfg = Release|Any CPU
- {80915A80-CA54-11E3-9C1A-0800200C9A66}.Mac App Store|Any CPU.Build.0 = Release|Any CPU
- {80915A80-CA54-11E3-9C1A-0800200C9A66}.Mac Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {80915A80-CA54-11E3-9C1A-0800200C9A66}.Mac Debug|Any CPU.Build.0 = Debug|Any CPU
- {80915A80-CA54-11E3-9C1A-0800200C9A66}.Mac Developer|Any CPU.ActiveCfg = Release|Any CPU
- {80915A80-CA54-11E3-9C1A-0800200C9A66}.Mac Developer|Any CPU.Build.0 = Release|Any CPU
- {80915A80-CA54-11E3-9C1A-0800200C9A66}.Mac Release|Any CPU.ActiveCfg = Release|Any CPU
- {80915A80-CA54-11E3-9C1A-0800200C9A66}.Mac Release|Any CPU.Build.0 = Release|Any CPU
- {80915A80-CA54-11E3-9C1A-0800200C9A66}.Win Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {80915A80-CA54-11E3-9C1A-0800200C9A66}.Win Debug|Any CPU.Build.0 = Debug|Any CPU
- {80915A80-CA54-11E3-9C1A-0800200C9A66}.Win Release|Any CPU.ActiveCfg = Release|Any CPU
- {80915A80-CA54-11E3-9C1A-0800200C9A66}.Win Release|Any CPU.Build.0 = Release|Any CPU
- {543B2F90-CA56-11E3-9C1A-0800200C9A66}.Mac App Store|Any CPU.ActiveCfg = Release|Any CPU
- {543B2F90-CA56-11E3-9C1A-0800200C9A66}.Mac App Store|Any CPU.Build.0 = Release|Any CPU
- {543B2F90-CA56-11E3-9C1A-0800200C9A66}.Mac Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {543B2F90-CA56-11E3-9C1A-0800200C9A66}.Mac Debug|Any CPU.Build.0 = Debug|Any CPU
- {543B2F90-CA56-11E3-9C1A-0800200C9A66}.Mac Developer|Any CPU.ActiveCfg = Release|Any CPU
- {543B2F90-CA56-11E3-9C1A-0800200C9A66}.Mac Developer|Any CPU.Build.0 = Release|Any CPU
- {543B2F90-CA56-11E3-9C1A-0800200C9A66}.Mac Release|Any CPU.ActiveCfg = Release|Any CPU
- {543B2F90-CA56-11E3-9C1A-0800200C9A66}.Mac Release|Any CPU.Build.0 = Release|Any CPU
- {543B2F90-CA56-11E3-9C1A-0800200C9A66}.Win Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {543B2F90-CA56-11E3-9C1A-0800200C9A66}.Win Debug|Any CPU.Build.0 = Debug|Any CPU
- {543B2F90-CA56-11E3-9C1A-0800200C9A66}.Win Release|Any CPU.ActiveCfg = Release|Any CPU
- {543B2F90-CA56-11E3-9C1A-0800200C9A66}.Win Release|Any CPU.Build.0 = Release|Any CPU
- {9F51798A-354C-47A1-9207-4BB7D7FC7FC4}.Mac App Store|Any CPU.ActiveCfg = Release|Any CPU
- {9F51798A-354C-47A1-9207-4BB7D7FC7FC4}.Mac App Store|Any CPU.Build.0 = Release|Any CPU
- {9F51798A-354C-47A1-9207-4BB7D7FC7FC4}.Mac Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {9F51798A-354C-47A1-9207-4BB7D7FC7FC4}.Mac Debug|Any CPU.Build.0 = Debug|Any CPU
- {9F51798A-354C-47A1-9207-4BB7D7FC7FC4}.Mac Developer|Any CPU.ActiveCfg = Release|Any CPU
- {9F51798A-354C-47A1-9207-4BB7D7FC7FC4}.Mac Developer|Any CPU.Build.0 = Release|Any CPU
- {9F51798A-354C-47A1-9207-4BB7D7FC7FC4}.Mac Release|Any CPU.ActiveCfg = Release|Any CPU
- {9F51798A-354C-47A1-9207-4BB7D7FC7FC4}.Mac Release|Any CPU.Build.0 = Release|Any CPU
- {9F51798A-354C-47A1-9207-4BB7D7FC7FC4}.Win Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {9F51798A-354C-47A1-9207-4BB7D7FC7FC4}.Win Debug|Any CPU.Build.0 = Debug|Any CPU
- {9F51798A-354C-47A1-9207-4BB7D7FC7FC4}.Win Release|Any CPU.ActiveCfg = Release|Any CPU
- {9F51798A-354C-47A1-9207-4BB7D7FC7FC4}.Win Release|Any CPU.Build.0 = Release|Any CPU
- {63137FA0-CA55-11E3-9C1A-0800200C9A66}.Mac App Store|Any CPU.ActiveCfg = Release|Any CPU
- {63137FA0-CA55-11E3-9C1A-0800200C9A66}.Mac App Store|Any CPU.Build.0 = Release|Any CPU
- {63137FA0-CA55-11E3-9C1A-0800200C9A66}.Mac Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {63137FA0-CA55-11E3-9C1A-0800200C9A66}.Mac Debug|Any CPU.Build.0 = Debug|Any CPU
- {63137FA0-CA55-11E3-9C1A-0800200C9A66}.Mac Developer|Any CPU.ActiveCfg = Release|Any CPU
- {63137FA0-CA55-11E3-9C1A-0800200C9A66}.Mac Developer|Any CPU.Build.0 = Release|Any CPU
- {63137FA0-CA55-11E3-9C1A-0800200C9A66}.Mac Release|Any CPU.ActiveCfg = Release|Any CPU
- {63137FA0-CA55-11E3-9C1A-0800200C9A66}.Mac Release|Any CPU.Build.0 = Release|Any CPU
- {63137FA0-CA55-11E3-9C1A-0800200C9A66}.Win Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {63137FA0-CA55-11E3-9C1A-0800200C9A66}.Win Debug|Any CPU.Build.0 = Debug|Any CPU
- {63137FA0-CA55-11E3-9C1A-0800200C9A66}.Win Release|Any CPU.ActiveCfg = Release|Any CPU
- {63137FA0-CA55-11E3-9C1A-0800200C9A66}.Win Release|Any CPU.Build.0 = Release|Any CPU
- {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Mac App Store|Any CPU.ActiveCfg = Release|Any CPU
- {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Mac App Store|Any CPU.Build.0 = Release|Any CPU
- {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Mac Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Mac Debug|Any CPU.Build.0 = Debug|Any CPU
- {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Mac Developer|Any CPU.ActiveCfg = Release|Any CPU
- {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Mac Developer|Any CPU.Build.0 = Release|Any CPU
- {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Mac Release|Any CPU.ActiveCfg = Release|Any CPU
- {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Mac Release|Any CPU.Build.0 = Release|Any CPU
- {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Win Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Win Debug|Any CPU.Build.0 = Debug|Any CPU
- {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Win Release|Any CPU.ActiveCfg = Release|Any CPU
- {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Win Release|Any CPU.Build.0 = Release|Any CPU
- {856E8C70-2702-11E4-8C21-0800200C9A66}.Mac App Store|Any CPU.ActiveCfg = Release|Any CPU
- {856E8C70-2702-11E4-8C21-0800200C9A66}.Mac App Store|Any CPU.Build.0 = Release|Any CPU
- {856E8C70-2702-11E4-8C21-0800200C9A66}.Mac Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {856E8C70-2702-11E4-8C21-0800200C9A66}.Mac Debug|Any CPU.Build.0 = Debug|Any CPU
- {856E8C70-2702-11E4-8C21-0800200C9A66}.Mac Developer|Any CPU.ActiveCfg = Release|Any CPU
- {856E8C70-2702-11E4-8C21-0800200C9A66}.Mac Developer|Any CPU.Build.0 = Release|Any CPU
- {856E8C70-2702-11E4-8C21-0800200C9A66}.Mac Release|Any CPU.ActiveCfg = Release|Any CPU
- {856E8C70-2702-11E4-8C21-0800200C9A66}.Mac Release|Any CPU.Build.0 = Release|Any CPU
- {856E8C70-2702-11E4-8C21-0800200C9A66}.Win Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {856E8C70-2702-11E4-8C21-0800200C9A66}.Win Release|Any CPU.ActiveCfg = Release|Any CPU
- {5590729F-3176-4A91-94E3-54F75DA2EB9D}.Mac App Store|Any CPU.ActiveCfg = Release|Any CPU
- {5590729F-3176-4A91-94E3-54F75DA2EB9D}.Mac App Store|Any CPU.Build.0 = Release|Any CPU
- {5590729F-3176-4A91-94E3-54F75DA2EB9D}.Mac Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {5590729F-3176-4A91-94E3-54F75DA2EB9D}.Mac Debug|Any CPU.Build.0 = Debug|Any CPU
- {5590729F-3176-4A91-94E3-54F75DA2EB9D}.Mac Developer|Any CPU.ActiveCfg = Release|Any CPU
- {5590729F-3176-4A91-94E3-54F75DA2EB9D}.Mac Developer|Any CPU.Build.0 = Release|Any CPU
- {5590729F-3176-4A91-94E3-54F75DA2EB9D}.Mac Release|Any CPU.ActiveCfg = Release|Any CPU
- {5590729F-3176-4A91-94E3-54F75DA2EB9D}.Mac Release|Any CPU.Build.0 = Release|Any CPU
- {5590729F-3176-4A91-94E3-54F75DA2EB9D}.Win Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {5590729F-3176-4A91-94E3-54F75DA2EB9D}.Win Release|Any CPU.ActiveCfg = Release|Any CPU
- {3E7995E0-C9EB-11E3-9C1A-0800200C9A66}.Mac App Store|Any CPU.ActiveCfg = Release|Any CPU
- {3E7995E0-C9EB-11E3-9C1A-0800200C9A66}.Mac App Store|Any CPU.Build.0 = Release|Any CPU
- {3E7995E0-C9EB-11E3-9C1A-0800200C9A66}.Mac Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {3E7995E0-C9EB-11E3-9C1A-0800200C9A66}.Mac Debug|Any CPU.Build.0 = Debug|Any CPU
- {3E7995E0-C9EB-11E3-9C1A-0800200C9A66}.Mac Developer|Any CPU.ActiveCfg = Release|Any CPU
- {3E7995E0-C9EB-11E3-9C1A-0800200C9A66}.Mac Developer|Any CPU.Build.0 = Release|Any CPU
- {3E7995E0-C9EB-11E3-9C1A-0800200C9A66}.Mac Release|Any CPU.ActiveCfg = Release|Any CPU
- {3E7995E0-C9EB-11E3-9C1A-0800200C9A66}.Mac Release|Any CPU.Build.0 = Release|Any CPU
- {3E7995E0-C9EB-11E3-9C1A-0800200C9A66}.Win Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {3E7995E0-C9EB-11E3-9C1A-0800200C9A66}.Win Debug|Any CPU.Build.0 = Debug|Any CPU
- {3E7995E0-C9EB-11E3-9C1A-0800200C9A66}.Win Release|Any CPU.ActiveCfg = Release|Any CPU
- {3E7995E0-C9EB-11E3-9C1A-0800200C9A66}.Win Release|Any CPU.Build.0 = Release|Any CPU
+ {9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}.Debug|Mac.ActiveCfg = Debug|Any CPU
+ {9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}.Debug|Mac.Build.0 = Debug|Any CPU
+ {9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}.Release|Mac.ActiveCfg = Release|Any CPU
+ {9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}.Release|Mac.Build.0 = Release|Any CPU
+ {35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}.Debug|Mac.ActiveCfg = Debug|Any CPU
+ {35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}.Debug|Mac.Build.0 = Debug|Any CPU
+ {35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}.Release|Any CPU.Build.0 = Release|Any CPU
+ {35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}.Release|Mac.ActiveCfg = Release|Any CPU
+ {35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}.Release|Mac.Build.0 = Release|Any CPU
+ {3FAACC7E-D156-4599-B0D1-6177AD78E8B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3FAACC7E-D156-4599-B0D1-6177AD78E8B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3FAACC7E-D156-4599-B0D1-6177AD78E8B1}.Debug|Mac.ActiveCfg = Debug|Any CPU
+ {3FAACC7E-D156-4599-B0D1-6177AD78E8B1}.Debug|Mac.Build.0 = Debug|Any CPU
+ {3FAACC7E-D156-4599-B0D1-6177AD78E8B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3FAACC7E-D156-4599-B0D1-6177AD78E8B1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3FAACC7E-D156-4599-B0D1-6177AD78E8B1}.Release|Mac.ActiveCfg = Release|Any CPU
+ {3FAACC7E-D156-4599-B0D1-6177AD78E8B1}.Release|Mac.Build.0 = Release|Any CPU
+ {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Debug|Mac.ActiveCfg = Debug|Any CPU
+ {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Debug|Mac.Build.0 = Debug|Any CPU
+ {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Release|Mac.ActiveCfg = Release|Any CPU
+ {F5D74163-145F-47BF-83DC-D0E07249C6CA}.Release|Mac.Build.0 = Release|Any CPU
+ {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Debug|Mac.ActiveCfg = Debug|Any CPU
+ {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Debug|Mac.Build.0 = Debug|Any CPU
+ {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Release|Mac.ActiveCfg = Release|Any CPU
+ {0457895A-719B-47E9-84F3-356B2A1F8D3C}.Release|Mac.Build.0 = Release|Any CPU
+ {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Debug|Mac.ActiveCfg = Debug|Any CPU
+ {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Debug|Mac.Build.0 = Debug|Any CPU
+ {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Release|Mac.ActiveCfg = Release|Any CPU
+ {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Release|Mac.Build.0 = Release|Any CPU
+ {5590729F-3176-4A91-94E3-54F75DA2EB9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5590729F-3176-4A91-94E3-54F75DA2EB9D}.Debug|Mac.ActiveCfg = Debug|Any CPU
+ {5590729F-3176-4A91-94E3-54F75DA2EB9D}.Debug|Mac.Build.0 = Debug|Any CPU
+ {5590729F-3176-4A91-94E3-54F75DA2EB9D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5590729F-3176-4A91-94E3-54F75DA2EB9D}.Release|Mac.ActiveCfg = Release|Any CPU
+ {5590729F-3176-4A91-94E3-54F75DA2EB9D}.Release|Mac.Build.0 = Release|Any CPU
+ {38A42F6D-A417-45B0-8EC8-A700F31CBE26}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {38A42F6D-A417-45B0-8EC8-A700F31CBE26}.Debug|Mac.ActiveCfg = Debug|x86
+ {38A42F6D-A417-45B0-8EC8-A700F31CBE26}.Release|Any CPU.ActiveCfg = Release|x86
+ {38A42F6D-A417-45B0-8EC8-A700F31CBE26}.Release|Any CPU.Build.0 = Release|x86
+ {38A42F6D-A417-45B0-8EC8-A700F31CBE26}.Release|Mac.ActiveCfg = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
- GlobalSection(NestedProjects) = preSolution
- {35EF0A4E-2A1A-492C-8BED-106774EA09F2} = {C8B59D00-6086-492E-9112-3DA8E5025FBB}
- {330EF9FD-5947-4AC9-9796-950C7633695F} = {C8B59D00-6086-492E-9112-3DA8E5025FBB}
- {80915A80-CA54-11E3-9C1A-0800200C9A66} = {C8B59D00-6086-492E-9112-3DA8E5025FBB}
- {543B2F90-CA56-11E3-9C1A-0800200C9A66} = {C8B59D00-6086-492E-9112-3DA8E5025FBB}
- {9F51798A-354C-47A1-9207-4BB7D7FC7FC4} = {C8B59D00-6086-492E-9112-3DA8E5025FBB}
- {63137FA0-CA55-11E3-9C1A-0800200C9A66} = {C8B59D00-6086-492E-9112-3DA8E5025FBB}
- {856E8C70-2702-11E4-8C21-0800200C9A66} = {C8B59D00-6086-492E-9112-3DA8E5025FBB}
- {3E7995E0-C9EB-11E3-9C1A-0800200C9A66} = {C8B59D00-6086-492E-9112-3DA8E5025FBB}
- EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {8F8DD3BA-3F1A-4B83-87FD-07C1D69CB86C}
EndGlobalSection
- GlobalSection(MonoDevelopProperties) = preSolution
- Policies = $0
- $0.DotNetNamingPolicy = $1
- $1.DirectoryNamespaceAssociation = PrefixedHierarchical
- $1.ResourceNamePolicy = MSBuild
- $0.StandardHeader = $2
- $0.VersionControlPolicy = $3
- $0.ChangeLogPolicy = $4
- $4.UpdateMode = None
- $4.MessageStyle = $5
- $5.LineAlign = 0
- $4.inheritsSet = Mono
- $0.TextStylePolicy = $6
- version =
- EndGlobalSection
GlobalSection(Performance) = preSolution
HasPerformanceSessions = true
EndGlobalSection
diff --git a/Source/Pablo.Interface/Actions/Readme.cs b/Source/Pablo.Interface/Actions/Readme.cs
new file mode 100644
index 0000000..0f16acc
--- /dev/null
+++ b/Source/Pablo.Interface/Actions/Readme.cs
@@ -0,0 +1,30 @@
+using System;
+using System.IO;
+using System.Reflection;
+using Eto.Forms;
+
+namespace Pablo.Interface.Actions
+{
+ public class Readme : Command
+ {
+ Main main;
+ public const string ActionID = "readme";
+
+ public Readme(Main main)
+ {
+ this.main = main;
+ this.MenuText = "View Readme";
+ base.ID = ActionID;
+ }
+
+ protected override void OnExecuted(EventArgs e)
+ {
+ base.OnExecuted(e);
+ using (var stream = typeof(Readme).Assembly.GetManifestResourceStream("Pablo.Interface.README.ans"))
+ {
+ main.LoadFile("README.ans", stream, hasSavePermissions: false, setFileList: false, editMode: false);
+ }
+ }
+ }
+}
+
diff --git a/Source/Pablo.Interface/Dialogs/FileModifiedDialog.cs b/Source/Pablo.Interface/Dialogs/FileModifiedDialog.cs
index 85d2021..9a93f03 100644
--- a/Source/Pablo.Interface/Dialogs/FileModifiedDialog.cs
+++ b/Source/Pablo.Interface/Dialogs/FileModifiedDialog.cs
@@ -24,8 +24,10 @@ public DialogResult ShowDialog ()
var result = MessageBox.Show (main, "Do you wish to save?", "There are changes to this document", MessageBoxButtons.YesNoCancel);
if (result == DialogResult.Yes || result == DialogResult.No) {
if (result == DialogResult.Yes) {
- var action = new Pablo.Actions.SaveFile(main.ViewHandler);
- action.Execute();
+ if (main.Document.HasSavePermission)
+ new Pablo.Actions.SaveFile(main.ViewHandler).Execute();
+ else
+ new Pablo.Actions.SaveAs(main.ViewHandler).Execute();
}
return DialogResult.Ok;
} else
diff --git a/Source/Pablo.Interface/Main.cs b/Source/Pablo.Interface/Main.cs
index 2a75cc2..0859eec 100644
--- a/Source/Pablo.Interface/Main.cs
+++ b/Source/Pablo.Interface/Main.cs
@@ -396,7 +396,8 @@ public Main()
if (fileList.SelectedFile != null)
{
currentFormat = null;
- ReloadFile(false, true, true);
+
+ ReloadFile(!fileList.SelectedFile.ReadOnly, true, true);
}
};
fileList.SelectedIndexChanged += delegate
@@ -406,7 +407,7 @@ public Main()
if (fileList.SelectedFile != null)
{
currentFormat = null;
- ReloadFile(false, false, false);
+ ReloadFile(!fileList.SelectedFile.ReadOnly, false, false);
}
}
};
@@ -526,11 +527,12 @@ public void GenerateActions()
//#if DEBUG
aiNetwork.Items.Add(new Actions.ServerStart(this), 500);
aiNetwork.Items.Add(new Actions.ClientConnect(this), 500);
- aiNetwork.Items.Add(new Actions.ServerStop(this), 500);
- //#endif
-
- // help
- aiHelp.Items.Add(new Actions.Homepage(), 500);
+ aiNetwork.Items.Add(new Actions.ServerStop(this), 500);
+ //#endif
+
+ // help
+ aiHelp.Items.Add(new Actions.Readme(this), 500);
+ aiHelp.Items.Add(new Actions.Homepage(), 500);
args.ToolBar.Items.Add(new Actions.NewFile(this), 100);
args.ToolBar.Items.Add(new Actions.OpenFile(this), 100);
@@ -697,8 +699,14 @@ void PostLoad()
Stream loadingStream;
- public void LoadFile(string fileName, Stream stream, Format format, bool editMode, bool setFileList, bool hasPermissions)
+ public bool LoadFile(string fileName, Stream stream, Format format = null, bool editMode = false, bool setFileList = true, bool hasSavePermissions = true)
{
+ if (format == null)
+ {
+ format = Settings.Infos.FindFormat(fileName, "character", "ansi");
+ if (format == null)
+ return false;
+ }
if (Client != null)
{
var doc = format.Info.Create(Platform);
@@ -707,7 +715,7 @@ public void LoadFile(string fileName, Stream stream, Format format, bool editMod
doc.EditMode = editMode;
doc.FileName = fileName;
doc.Load(stream, format, null);
- doc.HasSavePermission = hasPermissions;
+ doc.HasSavePermission = hasSavePermissions;
Client.SetDocument(doc);
}
else
@@ -719,9 +727,10 @@ public void LoadFile(string fileName, Stream stream, Format format, bool editMod
Client.SetFile(fileName, ms, format, editMode);
}
}
- return;
+ return true;
}
- InternalLoadFile(fileName, stream, format, editMode, setFileList, hasPermissions);
+ InternalLoadFile(fileName, stream, format, editMode, setFileList, hasSavePermissions);
+ return true;
}
void InternalLoadFile(string fileName, Stream stream, Format format, bool editMode, bool setFileList, bool hasSavePermission)
@@ -760,7 +769,6 @@ void InternalLoadFile(string fileName, Stream stream, Format format, bool editMo
MessageBox.Show(this, string.Format("Unable to load the selected file ({0})", e));
#if DEBUG
Debug.Print("Error loading: {0}", e);
- throw;
#endif
}
}
@@ -793,20 +801,20 @@ void Document_Saved(object sender, EventArgs e)
}
}
- public bool LoadFile(string fileName, bool hasSavePermissions)
+ public bool LoadFile(string fileName, bool hasSavePermissions, bool setFileList = true, bool? editMode = null)
{
if (FileModifiedDialog.Show(this) != DialogResult.Ok)
return true;
currentFormat = null;
currentFile = null;
- Format format = Settings.Infos.FindFormat(fileName, "character", "ansi");
- if (format != null && File.Exists(fileName))
+ if (File.Exists(fileName))
{
- var stream = File.OpenRead(fileName);
- LoadFile(fileName, stream, format, EditMode, true, hasSavePermissions);
- return true;
+ using (var stream = File.OpenRead(fileName))
+ {
+ return LoadFile(fileName, stream, null, editMode ?? EditMode, setFileList, hasSavePermissions);
+ }
}
return false;
}
diff --git a/Source/Pablo.Interface/Pablo.Interface.csproj b/Source/Pablo.Interface/Pablo.Interface.csproj
index 1b2d85e..d548def 100644
--- a/Source/Pablo.Interface/Pablo.Interface.csproj
+++ b/Source/Pablo.Interface/Pablo.Interface.csproj
@@ -1,132 +1,23 @@
-
-
+
- Debug
- AnyCPU
- {3FAACC7E-D156-4599-B0D1-6177AD78E8B1}
- Library
- Pablo.Interface
- Pablo.Interface
-
-
- v4.5.1
-
+ netstandard2.0
+ Pablo.Interface
+ Main Interface
-
- true
- full
- false
- bin\Debug
- DEBUG
- prompt
- 4
- false
- false
-
-
- pdbonly
- true
- bin\Release
- prompt
- 4
- false
- true
- false
-
-
-
-
-
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
-
-
-
- Properties\GlobalAssemblyInfo.cs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
+
+
+ README.ans
+
-
-
-
-
-
-
-
-
+
-
- {35EF0A4E-2A1A-492C-8BED-106774EA09F2}
- Eto - pcl
-
-
- {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}
- Lidgren.Network
-
-
- {35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}
- Pablo
-
+
+
-
\ No newline at end of file
diff --git a/Source/Pablo.Interface/PabloApplication.cs b/Source/Pablo.Interface/PabloApplication.cs
index 9e41b19..1bbe20e 100644
--- a/Source/Pablo.Interface/PabloApplication.cs
+++ b/Source/Pablo.Interface/PabloApplication.cs
@@ -23,13 +23,6 @@ public class PabloApplication : Eto.Forms.Application
static Main main2;
#endif
-#if DEBUG
- static PabloApplication ()
- {
- Debug.Listeners.Clear();
- Debug.Listeners.Add (new TextWriterTraceListener (System.Console.Out));
- }
-#endif
public PabloApplication()
: this(Platform.Detect)
{
diff --git a/Source/Pablo.Interface/Properties/AssemblyInfo.cs b/Source/Pablo.Interface/Properties/AssemblyInfo.cs
deleted file mode 100644
index 51501bf..0000000
--- a/Source/Pablo.Interface/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-// Information about this assembly is defined by the following attributes.
-// Change them to the values specific to your project.
-
-[assembly: AssemblyTitle("Pablo.Interface")]
-[assembly: AssemblyDescription("Main Interface")]
diff --git a/Source/Pablo.mdw b/Source/Pablo.mdw
deleted file mode 100644
index bf03df3..0000000
--- a/Source/Pablo.mdw
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
- - Pablo iOS.sln
- - Pablo Desktop.sln
-
-
\ No newline at end of file
diff --git a/Source/Pablo/Actions/SaveAs.cs b/Source/Pablo/Actions/SaveAs.cs
index 00d1f62..a5d69ec 100644
--- a/Source/Pablo/Actions/SaveAs.cs
+++ b/Source/Pablo/Actions/SaveAs.cs
@@ -38,7 +38,7 @@ public static void Activate(Handler handler, bool setCurrent = false)
ofd.Filters.Insert(0, new FileDialogFilter{ Name = "Auto Detect", Extensions = allFormats.ToArray() });
if (!handler.Generator.IsMac || setCurrent)
{
- if (!string.IsNullOrEmpty(handler.Document.FileName))
+ if (!string.IsNullOrEmpty(handler.Document.FileName) && handler.Document.HasSavePermission)
{
if (Path.IsPathRooted(handler.Document.FileName))
{
diff --git a/Source/Pablo/Actions/SaveFile.cs b/Source/Pablo/Actions/SaveFile.cs
index b967128..30f606f 100644
--- a/Source/Pablo/Actions/SaveFile.cs
+++ b/Source/Pablo/Actions/SaveFile.cs
@@ -24,7 +24,13 @@ public SaveFile(Handler handler)
this.Shortcut = PabloCommand.CommonModifier | Keys.S;
}
- protected override void OnExecuted(EventArgs e)
+ public override bool Enabled
+ {
+ get => base.Enabled && handler.Document.HasSavePermission;
+ set => base.Enabled = value;
+ }
+
+ protected override void OnExecuted(EventArgs e)
{
var file = handler.Document.FileName;
var shouldSave = string.IsNullOrEmpty(file) || !File.Exists(file) || File.GetAttributes(file).HasFlag(FileAttributes.ReadOnly);
diff --git a/Source/Pablo/Formats/Animated/AnimatedDocumentInfo.cs b/Source/Pablo/Formats/Animated/AnimatedDocumentInfo.cs
index 057fa05..1cc0417 100644
--- a/Source/Pablo/Formats/Animated/AnimatedDocumentInfo.cs
+++ b/Source/Pablo/Formats/Animated/AnimatedDocumentInfo.cs
@@ -79,6 +79,8 @@ public override void GenerateCommands(GenerateCommandArgs args)
#if DEBUG
#endif
baudRateMap.Add("Fastest", 0);
+ baudRateMap.Add(460800);
+ baudRateMap.Add(230400);
baudRateMap.Add(115200);
baudRateMap.Add(57600);
baudRateMap.Add(38400);
diff --git a/Source/Pablo/Formats/Rip/RipDocument.cs b/Source/Pablo/Formats/Rip/RipDocument.cs
index 76e2f16..65330dd 100644
--- a/Source/Pablo/Formats/Rip/RipDocument.cs
+++ b/Source/Pablo/Formats/Rip/RipDocument.cs
@@ -99,8 +99,8 @@ public void OnWait(WaitEventArgs args)
protected override void Dispose(bool disposing)
{
- if (image != null)
- image.Dispose();
+ image?.Dispose();
+ image = null;
base.Dispose(disposing);
}
diff --git a/Source/Pablo/IO/SharpZipLibDirectoryInfo.cs b/Source/Pablo/IO/SharpZipLibDirectoryInfo.cs
index 2a47d5b..2f0a264 100644
--- a/Source/Pablo/IO/SharpZipLibDirectoryInfo.cs
+++ b/Source/Pablo/IO/SharpZipLibDirectoryInfo.cs
@@ -1,4 +1,4 @@
-#if !IOS
+#if USE_SHARPZIPLIB
using System;
using System.Text.RegularExpressions;
using System.Collections;
diff --git a/Source/Pablo/IO/UnRarDirectoryInfo.cs b/Source/Pablo/IO/UnRarDirectoryInfo.cs
index 9bfa83a..cf3b863 100644
--- a/Source/Pablo/IO/UnRarDirectoryInfo.cs
+++ b/Source/Pablo/IO/UnRarDirectoryInfo.cs
@@ -1,4 +1,4 @@
-#if !IOS
+#if USE_UNRAR
using System;
using System.Text.RegularExpressions;
using System.Collections;
diff --git a/Source/Pablo/ImageViewer.cs b/Source/Pablo/ImageViewer.cs
index ef395c5..976b9e3 100644
--- a/Source/Pablo/ImageViewer.cs
+++ b/Source/Pablo/ImageViewer.cs
@@ -99,6 +99,8 @@ protected override void OnPaint(PaintEventArgs e)
try
//lock (this)
{
+ //e.Graphics.FillRectangle(Colors.Blue, e.ClipRectangle);
+
Rectangle rectScreen;
Rectangle rectGenerate;
diff --git a/Source/Pablo/Info.plist b/Source/Pablo/Info.plist
deleted file mode 100644
index 987e109..0000000
--- a/Source/Pablo/Info.plist
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- MinimumOSVersion
- 3.0
-
-
diff --git a/Source/Pablo/Pablo.csproj b/Source/Pablo/Pablo.csproj
index 5761e0d..031466a 100644
--- a/Source/Pablo/Pablo.csproj
+++ b/Source/Pablo/Pablo.csproj
@@ -1,765 +1,32 @@
-
-
+
- Local
- {35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}
- Debug
- AnyCPU
-
-
- Pablo
- JScript
- Grid
- IE50
- Library
-
-
- Pablo
-
-
-
-
- v4.5.1
-
-
-
- true
- 285212672
-
-
- TRACE;DESKTOP
- 4096
- true
- bin\Release-MAS\
- False
- False
- 4
- true
- false
-
-
- true
- 285212672
-
-
- TRACE;DESKTOP
- 4096
- true
- bin\Release\
- False
- False
- 4
- true
- false
-
-
+ netstandard2.0
+ DESKTOP
true
- 285212672
-
-
- DEBUG;TRACE;DESKTOP
- true
- 4096
- false
- bin\Debug\
- False
- False
- 4
- full
- false
+ Pablo core
+ Pablo
-
-
-
-
- ..\packages\sharpcompress.0.10.2\lib\net40\SharpCompress.dll
-
-
- ..\packages\Newtonsoft.Json.5.0.8\lib\net40\Newtonsoft.Json.dll
-
+
+
+
+
+
+
+
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Properties\GlobalAssemblyInfo.cs
-
-
-
-
-
-
-
- Code
-
-
- Code
-
-
- Code
-
-
-
-
-
-
-
-
-
- Code
-
-
- Code
-
-
-
-
-
-
-
-
-
-
-
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
-
- Code
-
-
-
-
-
-
- Code
-
-
-
-
- Code
-
-
- Code
-
-
-
-
-
- Code
-
-
-
-
-
-
-
-
-
-
- Code
-
-
- Code
-
-
- Code
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Code
-
-
-
-
-
- Code
-
-
-
-
-
-
-
- Code
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Code
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Code
-
-
-
-
-
-
- Code
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Code
-
-
-
- Code
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Code
-
-
- Code
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
- pdbonly
- true
- bin\Release-MAS\
- TRACE;DESKTOP;MAS
- 4
- False
- true
-
-
- 285212672
- 4096
- False
- true
- false
-
-
-
+
+
+
-
-
- {35EF0A4E-2A1A-492C-8BED-106774EA09F2}
- Eto - pcl
-
-
- {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}
- Lidgren.Network
-
-
- {f5d74163-145f-47bf-83dc-d0e07249c6ca}
- Mono.Nat
-
+
+
-
\ No newline at end of file
diff --git a/Source/Pablo/Properties/AssemblyInfo.cs b/Source/Pablo/Properties/AssemblyInfo.cs
deleted file mode 100644
index 083f659..0000000
--- a/Source/Pablo/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-//
-// 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("Pablo core")]
-[assembly: AssemblyDescription("Pablo")]
diff --git a/Source/Pablo/Sauce.zip b/Source/Pablo/Sauce.zip
deleted file mode 100644
index 7b78874..0000000
Binary files a/Source/Pablo/Sauce.zip and /dev/null differ
diff --git a/Source/Pablo/SharpCompressDirectoryInfo.cs b/Source/Pablo/SharpCompressDirectoryInfo.cs
index 214c93d..d505e71 100644
--- a/Source/Pablo/SharpCompressDirectoryInfo.cs
+++ b/Source/Pablo/SharpCompressDirectoryInfo.cs
@@ -1,10 +1,11 @@
using System;
-using SharpCompress.Reader;
-using SharpCompress.Archive;
+using SharpCompress.Readers;
+using SharpCompress.Compressors;
using System.IO;
using System.Collections.Generic;
using Eto.IO;
using SharpCompress.Common.Rar;
+using SharpCompress.Archives;
namespace Pablo
{
@@ -37,11 +38,11 @@ protected override IEnumerable ReadEntries(Stream stream)
}
}
/**/
- using (var archive = ArchiveFactory.Open(stream, SharpCompress.Common.Options.LookForHeader))
+ using (var archive = ArchiveFactory.Open(stream, new ReaderOptions { LookForHeader = true }))
{
foreach (var entry in archive.Entries)
{
- yield return new VirtualFileEntry(entry.FilePath.TrimEnd(Path.DirectorySeparatorChar), entry.IsDirectory);
+ yield return new VirtualFileEntry(entry.Key.TrimEnd(Path.DirectorySeparatorChar), entry.IsDirectory);
}
}
/**/
@@ -68,11 +69,11 @@ public override Stream OpenRead(string fileName)
}
/**/
using (var stream = FileInfo.OpenRead())
- using (var archive = ArchiveFactory.Open(stream, SharpCompress.Common.Options.None))
+ using (var archive = ArchiveFactory.Open(stream))
{
foreach (var entry in archive.Entries)
{
- if (!entry.IsDirectory && string.Equals(entry.FilePath, fileName, StringComparison.InvariantCultureIgnoreCase))
+ if (!entry.IsDirectory && string.Equals(entry.Key, fileName, StringComparison.InvariantCultureIgnoreCase))
{
ms = new MemoryStream((int)entry.Size);
entry.WriteTo(ms);
diff --git a/Source/Pablo/ViewerPane.cs b/Source/Pablo/ViewerPane.cs
index 678ff69..3be856c 100644
--- a/Source/Pablo/ViewerPane.cs
+++ b/Source/Pablo/ViewerPane.cs
@@ -139,6 +139,11 @@ float CalculateZoom()
return 1.0f;
Size clientSize = ClientSize;
+ if (Platform.IsMac && clientSize.IsEmpty)
+ {
+ // bug in eto?
+ clientSize = Size;
+ }
if (ZoomInfo.FitWidth && ViewHandler.Size.Width > 0)
{
float val = (float)clientSize.Width / (float)ViewHandler.Size.Width / ViewHandler.Ratio.Width;
@@ -164,6 +169,11 @@ void UpdateScroll()
{
#if DESKTOP
Size clientSize = ClientSize;
+ if (Platform.IsMac && clientSize.IsEmpty)
+ {
+ // bug in eto?
+ clientSize = Size;
+ }
if (Platform.IsWinForms && ScrollPosition.Y + clientSize.Height > ushort.MaxValue)
{
//ScrollPosition = Point.Empty;
@@ -180,7 +190,8 @@ void UpdateScroll()
void viewer_SizeChanged(object sender, EventArgs e)
{
- UpdateSizes();
+ if (this.Loaded)
+ UpdateSizes();
}
void StartAutoScroll()
diff --git a/Source/Pablo/XmlExtensions.base.cs b/Source/Pablo/XmlExtensions.base.cs
deleted file mode 100644
index a7eceb5..0000000
--- a/Source/Pablo/XmlExtensions.base.cs
+++ /dev/null
@@ -1,586 +0,0 @@
-using System;
-using System.Xml;
-using System.Collections.Generic;
-using System.IO;
-using System.Globalization;
-
-namespace Eto
-{
- ///
- /// Interface to declare an object that can serialize to/from xml
- ///
- ///
- /// This interface is useful when you are reading/writing objects to xml
- /// manually by using .
- ///
- /// There are methods to load/save a collection of child objects and singular
- /// child objects when you implement this interface which makes reading/writing to xml
- /// super easy.
- ///
- [Obsolete("No longer provided by this library")]
- public interface IXmlReadable
- {
- ///
- /// Reads/deserializes the xml element into the object
- ///
- /// Element that represents the object
- void ReadXml(XmlElement element);
-
- ///
- /// Writes/serializes the object into the xml element
- ///
- /// Element that will represent the object
- void WriteXml(XmlElement element);
- }
-
- ///
- /// Delegate to create the specified object from an XmlElement
- ///
- ///
- /// This is used for certain to create child objects when reading xml elements.
- ///
- /// The implementors of this delegate typically do not need to read the object from XML, just create the
- /// instance of the object based on certain criteria (e.g. a type or ID)
- ///
- /// Type of object to create based on the element
- /// Element to create the object from
- /// A new instance of the specified type for the element
- [Obsolete("No longer provided by this library")]
- public delegate T CreateFromXml(XmlElement element);
-
- ///
- /// Delegate to translate an attribute value to the specified type
- ///
- /// Type to translate to
- /// Attribute value to translate from
- /// Resulting value from the attribute type
- /// True if the translation was sucessful, false otherwise
- [Obsolete("No longer provided by this library")]
- public delegate bool XmlToValue(string attribute, out T result);
-
- ///
- /// Extensions for reading/writing xml values
- ///
- [Obsolete("No longer provided by this library")]
- public static class XmlExtensions
- {
- ///
- /// Gets a string attribute value from the specified element
- ///
- ///
- /// This differs from the regular in that if the string is empty
- /// it will return null.
- ///
- /// Element to read the attribute
- /// Name of the attribute to read
- /// A string value of the attribute, or null if it is empty or null
- public static string GetStringAttribute(this XmlElement element, string name)
- {
- string attr = element.GetAttribute(name);
- return string.IsNullOrEmpty(attr) ? null : attr;
- }
-
- ///
- /// Gets a boolean attribute value from the specified element. The value should be 'true', 'false' or empty.
- ///
- ///
- /// This uses to parse the value.
- ///
- /// Element to read the attribute from
- /// Name of the attribute
- /// True or False if the value is a valid boolean value, null otherwise
- public static bool? GetBoolAttribute(this XmlElement element, string name)
- {
- string attr = element.GetAttribute(name);
- bool result;
- if (!string.IsNullOrWhiteSpace(attr) && bool.TryParse(attr, out result)) return result;
- return null;
- }
-
- ///
- /// Gets a enumeration attribute value from the specified element.
- ///
- ///
- /// This uses to parse the value
- ///
- /// Type of enumeration to read
- /// Element to read the attribute value from
- /// Name of the attribute value
- /// True to ignore case when parsing, false to be case sensitive
- /// Value of the parsed enumeration, or null if it cannot be parsed
- public static T? GetEnumAttribute(this XmlElement element, string name, bool ignoreCase = true)
- where T: struct
- {
- string val = element.GetAttribute(name);
- T result;
- if (!string.IsNullOrEmpty(val) && Enum.TryParse(val, ignoreCase, out result)) return result;
- return null;
- }
-
- ///
- /// Gets an integer attribute value from the specified element
- ///
- ///
- /// This uses to parse the value.
- ///
- /// Element to read the attribute from
- /// Name of the attribute
- /// Integer value of the attribute, or null if it is invalid or missing
- public static int? GetIntAttribute (this XmlElement element, string name)
- {
- string attr = element.GetAttribute(name);
- int result;
- if (!string.IsNullOrWhiteSpace(attr) && int.TryParse(attr, out result)) return result;
- return null;
- }
-
- ///
- /// Gets a float attribute value from the specified element
- ///
- ///
- /// This uses to parse the value.
- ///
- /// Element to read the attribute from
- /// Name of the attribute
- /// Float value of the attribute, or null if it is invalid or missing
- public static float? GetFloatAttribute (this XmlElement element, string name)
- {
- string attr = element.GetAttribute(name);
- float result;
- if (!string.IsNullOrWhiteSpace(attr) && float.TryParse(attr, out result)) return result;
- return null;
- }
-
- ///
- /// Gets a translated value of an attribute of the specified element
- ///
- /// Element to read the attribute from
- /// Name of the attribute
- /// Delegate used to translate the string value to the desired type
- /// Value returned by the translate delegate, or null if the translate delegate returned false
- public static T? GetAttribute (this XmlElement element, string name, XmlToValue translate)
- where T: struct
- {
- string attr = element.GetAttribute(name);
- T result;
- if (!string.IsNullOrEmpty(attr) && translate(attr, out result)) return result;
- return null;
- }
-
- ///
- /// Sets an attribute of the specified element to a value
- ///
- ///
- /// This uses to translate the value to a string attribute value.
- ///
- /// Type of the value to set (usually inferred so you don't have to set it)
- /// Element to set the attribute value
- /// Name of the attribute to set
- /// Value to set
- public static void SetAttribute(this XmlElement element, string name, T value)
- {
- string attrValue = Convert.ToString(value, CultureInfo.InvariantCulture);
- if (!string.IsNullOrEmpty(attrValue))
- element.SetAttribute(name, attrValue);
- }
-
- ///
- /// Adds a new element as a child to the specified element, if the child value is not null
- ///
- ///
- /// This allows you to easily write child objects to xml, when they implement the interface.
- ///
- ///
- ///
- /// ("mychild");
- /// }
- /// }
- /// ]]>
- ///
- /// Type of child to write (must be )
- /// Element to add the child to
- /// Name of the child element to create
- /// Child value to translate to a new child element
- public static void WriteChildXml(this XmlElement element, string childElementName, T child)
- where T: IXmlReadable
- {
- if (EqualityComparer.Default.Equals(child, default(T))) return;
- var childElement = element.OwnerDocument.CreateElement(childElementName);
- child.WriteXml(childElement);
- element.AppendChild(childElement);
- }
-
- ///
- /// Reads a single child xml element from the specified element as a given type
- ///
- ///
- /// This is useful for reading a (singular) child element of an xml element into an object that implements
- /// .
- ///
- /// If you want to use a class that requires certain parameters for construction or to create a different derived type
- /// based on certain attributes of the child xml element, use instead.
- ///
- ///
- ///
- ///
- /// ("mychild");
- /// }
- /// }
- /// ]]>
- ///
- /// Type of child to read (must be )
- /// Element to read the child node from
- /// Name of the child element to read
- /// A new instance of the specified type if the child element exists with properties read from xml, otherwise null
- public static T ReadChildXml(this XmlElement element, string childElementName)
- where T: IXmlReadable, new()
- {
- return ReadChildXml(element, childElementName, delegate { return new T();});
- }
-
- ///
- /// Reads a single child xml element from the specified element as a given type, constructing the child programatically
- ///
- ///
- /// This is useful for reading a (singular) child element of an xml element into an object that implements
- /// . This also gives you a way to create the instance used for the child object
- /// programatically.
- ///
- /// If your child class does not require special construction logic and has a default constructor, you can use instead.
- ///
- ///
- ///
- ///
- /// ("mychild", MyChild.CreateFromXml);
- /// }
- /// }
- /// ]]>
- ///
- /// Type of child to read (must be )
- /// Element to read the child node from
- /// Name of the child element to read
- /// Delegate to create the child object instance if needed
- /// A new instance of the specified type if the child element exists with properties read from xml, otherwise null
- public static T ReadChildXml (this XmlElement element, string childElementName, CreateFromXml create)
- where T: IXmlReadable
- {
- var childElement = element.SelectSingleNode(childElementName) as XmlElement;
- if (childElement == null) return default(T);
- var child = create(childElement);
- if (!EqualityComparer.Default.Equals(child, default(T))) child.ReadXml(childElement);
- return child;
- }
-
- ///
- /// Reads a single child xml element from the specified element as a given type, constructing the child programatically
- ///
- ///
- /// This is useful for reading a (singular) child element of an xml element into an object that implements
- /// . This also gives you a way to create the instance used for the child object
- /// programatically.
- ///
- /// If your child class does not require special construction logic and has a default constructor, you can use instead.
- ///
- ///
- ///
- ///
- /// ("mychild", this.Child);
- /// }
- /// }
- /// ]]>
- ///
- /// Type of child to read (must be )
- /// Element to read the child node from
- /// Name of the child element to read
- /// Instance of the child object to read the XML into
- /// A new instance of the specified type if the child element exists with properties read from xml, otherwise null
- public static void ReadChildXml (this XmlElement element, string childElementName, T child)
- where T: IXmlReadable
- {
- var childElement = element.SelectSingleNode(childElementName) as XmlElement;
-
- if (childElement != null) child.ReadXml(childElement);
- }
-
- ///
- /// Writes a list of objects as child elements of the specified element, with an optional child list element
- ///
- ///
- /// This extension is useful for writing lists of objects to xml. With this, you can write the list as direct
- /// children of the specified element, or to insert an additional list element using the parameter.
- ///
- ///
- /// Children { get; set; }
- ///
- /// public void WriteXml (XmlElement element) {
- /// element.WriteChildListXml(this.Children, "mychild", "children");
- /// }
- ///
- /// public void ReadXml (XmlElement element) {
- /// this.Children = new List();
- /// element.ReadChildListXml(this.Children, "mychild", "children");
- /// }
- /// }
- /// ]]>
- ///
- /// Type of items in the list of elements to write
- /// Element to write the child elements to
- /// List of objects to serialize to xml
- /// Name of each child element to create
- /// Name of the list element to contain the child elements, or null to add the child elements directly to the specified
- public static void WriteChildListXml(this XmlElement element, IEnumerable list, string childElement, string listElement = null)
- where T: IXmlReadable
- {
- XmlElement listNode = (!string.IsNullOrEmpty (listElement)) ? element.OwnerDocument.CreateElement (listElement) : element;
-
- foreach (T child in list) {
- if (!EqualityComparer.Default.Equals(child, default(T))) {
- var childNode = element.OwnerDocument.CreateElement(childElement);
- child.WriteXml(childNode);
- listNode.AppendChild (childNode);
- }
- }
-
- if (listNode != element && !listNode.IsEmpty) {
- element.AppendChild (listNode);
- }
- }
-
- ///
- /// Reads child elements into a list, constructing the child objects programatically
- ///
- ///
- /// Children { get; set; }
- ///
- /// public void WriteXml (XmlElement element) {
- /// element.WriteChildListXml(this.Children, "mychild", "children");
- /// }
- ///
- /// public void ReadXml (XmlElement element) {
- /// this.Children = new List();
- /// element.ReadChildListXml(this.Children, MyChild.CreateFromXml, "mychild", "children");
- /// }
- /// }
- /// ]]>
- ///
- /// Type of each child object
- /// Element to read the child elements from
- /// List to add the child elements to
- /// Delegate to create the child object to add to the list
- /// Name of the child elements to read
- /// If specified, the list element where the child elements are to be read from, or null to read the child elements directly from the
- public static void ReadChildListXml (this XmlElement element, IList list, CreateFromXml create, string childElement, string listElement = null)
- where T: IXmlReadable
- {
- XmlNodeList childNodes = null;
- if (listElement != null) {
- var listNode = element.SelectSingleNode (listElement);
- if (listNode != null)
- childNodes = listNode.SelectNodes (childElement);
- }
- else
- childNodes = element.SelectNodes (childElement);
-
- if (childNodes != null) {
- list.Clear ();
- foreach (XmlElement childNode in childNodes) {
- var item = create(childNode);
- if (!EqualityComparer.Default.Equals(item, default(T))) {
- item.ReadXml(childNode);
- list.Add (item);
- }
- }
- }
- }
-
- ///
- /// Reads child elements into a list
- ///
- ///
- /// Children { get; set; }
- ///
- /// public void WriteXml (XmlElement element) {
- /// element.WriteChildListXml(this.Children, "mychild", "children");
- /// }
- ///
- /// public void ReadXml (XmlElement element) {
- /// this.Children = new List();
- /// element.ReadChildListXml(this.Children, "mychild", "children");
- /// }
- /// }
- /// ]]>
- ///
- /// Type of each child object
- /// Element to read the child elements from
- /// List to add the child elements to
- /// Name of the child elements to read
- /// If specified, the list element where the child elements are to be read from, or null to read the child elements directly from the
- public static void ReadChildListXml (this XmlElement element, IList list, string childElement, string listElement = null)
- where T: IXmlReadable, new()
- {
- ReadChildListXml(element, list, delegate { return new T(); }, childElement, listElement);
- }
-
- ///
- /// Saves the specified object to an xml file
- ///
- /// Object to serialize to xml
- /// File to save as
- /// Document element name
- public static void SaveXml (this IXmlReadable obj, string fileName, string documentElementName = "object")
- {
- using (var stream = new MemoryStream ()) {
- SaveXml(obj, stream, documentElementName);
- stream.Position = 0;
- using (var fileStream = File.Create (fileName)) {
- stream.WriteTo (fileStream);
- }
- }
- }
-
- ///
- /// Saves the specified object to an xml stream
- ///
- /// Object to serialize to xml
- /// Stream to save as
- /// Document element name
- public static void SaveXml (this IXmlReadable obj, Stream stream, string documentElementName = "object")
- {
- var doc = new XmlDocument ();
- var topNode = doc.CreateElement (documentElementName);
- obj.WriteXml (topNode);
- doc.AppendChild (topNode);
- doc.Save (stream);
- }
-
- ///
- /// Loads the specified object from an xml file
- ///
- /// Object to serialize from xml
- /// File to load from
- public static void LoadXml (this IXmlReadable obj, string fileName)
- {
- using (var fileStream = File.OpenRead (fileName)) {
- LoadXml (obj, fileStream);
- }
- }
-
- ///
- /// Loads the specified object from an xml stream
- ///
- /// Object to serialize from xml
- /// Stream to load from
- public static void LoadXml (this IXmlReadable obj, Stream stream)
- {
- var doc = new XmlDocument();
- doc.Load (stream);
- obj.ReadXml (doc.DocumentElement);
- }
- }
-}
\ No newline at end of file
diff --git a/Source/Pablo/XmlExtensions.drawing.cs b/Source/Pablo/XmlExtensions.drawing.cs
deleted file mode 100644
index 37efe47..0000000
--- a/Source/Pablo/XmlExtensions.drawing.cs
+++ /dev/null
@@ -1,193 +0,0 @@
-using System;
-using System.Xml;
-
-namespace Eto.Drawing
-{
- ///
- /// Xml extensions to read/write Eto.Drawing structs to xml
- ///
- /// (c) 2014 by Curtis Wensley
- /// See LICENSE for full terms
- [Obsolete("No longer provided by this library")]
- public static class XmlExtensions
- {
- ///
- /// Gets a struct as a set of attributes of the specified
- ///
- ///
- /// This will read attributes with suffixes "-width" and "-height" prefixed by .
- /// For example, if you specify "myProperty" as the base name, then it will read attributes "myProperty-width" and "myProperty-height".
- ///
- /// Both the width and height must be specified as attributes for this to return a value.
- ///
- /// Element to read the width and height attributes from
- /// Base attribute name prefix
- /// A size struct if both the width and height attributes are specified, or null otherwise
- public static Size? GetSizeAttributes(this XmlElement element, string baseName)
- {
- var width = element.GetIntAttribute(baseName + "-width");
- var height = element.GetIntAttribute(baseName + "-height");
- if (width != null && height != null)
- return new Size(width.Value, height.Value);
- return null;
- }
-
- ///
- /// Sets attributes on the specified with width and height attributes of the specified value
- ///
- ///
- /// This will write attributes with suffixes "-width" and "-height" prefixed by .
- /// For example, if you specify "myProperty" as the base name, then it will write attributes "myProperty-width" and "myProperty-height".
- ///
- /// Passing null as the size will not write either attribute value.
- ///
- /// Element to write the width and height attributes on
- /// Base attribute name prefix
- /// Value to set the width and height attributes, if not null
- public static void SetSizeAttributes(this XmlElement element, string baseName, Size? value)
- {
- if (value != null)
- {
- element.SetAttribute(baseName + "-width", value.Value.Width);
- element.SetAttribute(baseName + "-height", value.Value.Height);
- }
- }
-
- ///
- /// Writes the specified size to a child of the specified with the given name
- ///
- ///
- /// The child element will contain "width" and "height" attributes for the value of the size.
- /// If the value is null, no child element will be written.
- ///
- /// Element to append the child element to if is not null
- /// Name of the element to append
- /// Size value to write
- public static void WriteChildSizeXml(this XmlElement element, string elementName, Size? value)
- {
- if (value != null)
- element.WriteChildXml(elementName, new SizeSaver { Size = value.Value });
- }
-
- ///
- /// Reads a child of the with the given as a
- ///
- ///
- /// The child element must contain both "width" and "height" attributes for the value of the size.
- ///
- /// Element to read from
- /// Name of the element to read into the Size struct
- /// A new Size struct if the element exists, or null if not
- public static Size? ReadChildSizeXml(this XmlElement element, string elementName)
- {
- var size = element.ReadChildXml(elementName);
- return size == null ? null : (Size?)size.Size;
- }
-
- class SizeSaver : IXmlReadable
- {
- public Size Size { get; set; }
-
- public void ReadXml(XmlElement element)
- {
- var width = element.GetIntAttribute("width") ?? 0;
- var height = element.GetIntAttribute("height") ?? 0;
- Size = new Size(width, height);
- }
-
- public void WriteXml(XmlElement element)
- {
- element.SetAttribute("width", Size.Width);
- element.SetAttribute("height", Size.Height);
- }
- }
-
- ///
- /// Writes the child rectangle xml.
- ///
- /// Element.
- /// Element name.
- /// Rect.
- public static void WriteChildRectangleXml(this XmlElement element, string elementName, Rectangle? rect)
- {
- if (rect != null)
- element.WriteChildXml(elementName, new RectSaver { Rectangle = rect.Value });
- }
-
- ///
- /// Reads the child rectangle xml.
- ///
- /// The child rectangle xml.
- /// Element.
- /// Element name.
- public static Rectangle? ReadChildRectangleXml(this XmlElement element, string elementName)
- {
- var rect = element.ReadChildXml(elementName);
- return rect == null ? null : (Rectangle?)rect.Rectangle;
- }
-
- class RectSaver : IXmlReadable
- {
- public Rectangle Rectangle { get; set; }
-
- public void ReadXml(XmlElement element)
- {
- var ps = new PointSaver();
- ps.ReadXml(element);
- var ss = new SizeSaver();
- ss.ReadXml(element);
- Rectangle = new Rectangle(ps.Point, ss.Size);
- }
-
- public void WriteXml(XmlElement element)
- {
- var ps = new PointSaver { Point = Rectangle.Location };
- ps.WriteXml(element);
- var ss = new SizeSaver { Size = Rectangle.Size };
- ss.WriteXml(element);
- }
- }
-
- ///
- /// Writes the child point xml.
- ///
- /// Element.
- /// Element name.
- /// Point.
- public static void WriteChildPointXml(this XmlElement element, string elementName, Point? point)
- {
- if (point != null)
- element.WriteChildXml(elementName, new PointSaver { Point = point.Value });
- }
-
- ///
- /// Reads the child point xml.
- ///
- /// The child point xml.
- /// Element.
- /// Element name.
- public static Point? ReadChildPointXml(this XmlElement element, string elementName)
- {
- var point = element.ReadChildXml(elementName);
- return point == null ? null : (Point?)point.Point;
- }
-
- class PointSaver : IXmlReadable
- {
- public Point Point { get; set; }
-
- public void ReadXml(XmlElement element)
- {
- var x = element.GetIntAttribute("x") ?? 0;
- var y = element.GetIntAttribute("y") ?? 0;
- Point = new Point(x, y);
- }
-
- public void WriteXml(XmlElement element)
- {
- element.SetAttribute("x", Point.X);
- element.SetAttribute("y", Point.Y);
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Source/Pablo/packages.config b/Source/Pablo/packages.config
deleted file mode 100644
index c1aa491..0000000
--- a/Source/Pablo/packages.config
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/Source/Pablo/todo.txt b/Source/Pablo/todo.txt
deleted file mode 100644
index 514eb13..0000000
--- a/Source/Pablo/todo.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
-TODO
-----
-
- Limit # of backups - stevemkk
-
-
-
- Status Bar, sauce info
- Auto Scrolling
- File icons
- Zip file support
- Directory changing
-
- Render Quality (needed?)
-
-
-
- Documentation
-
- different colors per person in multi-user mode
- if cleanah, then color = pink!
-
-
-
- Server options:
- - Choose which functions/commands can be performed
- - Choose version to support (disables certain functions) - different list of available functions for different protocols?
- - Allow users to edit (+V by default, ops can demote)
- - IRC type functions.. read only, +V to draw +O to op/kick/ban?
- - Register & list pablo servers globally using web service
- - Aesthetic- ban user by nick or IP
-
-
-Done!
------------
-
- RIP, CG/Ansi animation support!
- DOS Aspect + 9th pixel
- Zooming support
-
-
-Support
------
-
- spinsane - first donator, kick ass dude
- bhaal - cool layout and generally cool guy
- sinisterx - infamous build 27
- rad-man - sweet ass ideas, keeping me busy!
- cleanah - for being patient about the .net version on linux!
- And everyone in EFNet IRC that got pissed at me because pablo didn't do something
diff --git a/Source/PabloDraw.Console/.gitignore b/Source/PabloDraw.Console/.gitignore
deleted file mode 100644
index b4a3a96..0000000
--- a/Source/PabloDraw.Console/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-Assemblies/
-publish/
\ No newline at end of file
diff --git a/Source/PabloDraw.Console/App.config b/Source/PabloDraw.Console/App.config
index 320c28a..ddd4652 100644
--- a/Source/PabloDraw.Console/App.config
+++ b/Source/PabloDraw.Console/App.config
@@ -1,6 +1,6 @@
-
+
diff --git a/Source/PabloDraw.Console/EmbeddedAssemblyLoader.cs b/Source/PabloDraw.Console/EmbeddedAssemblyLoader.cs
deleted file mode 100644
index 3ebf6c0..0000000
--- a/Source/PabloDraw.Console/EmbeddedAssemblyLoader.cs
+++ /dev/null
@@ -1,98 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Reflection;
-using System.Threading;
-
-namespace PabloDraw
-{
- ///
- /// Loads assemblies from embedded resources instead of from disk
- ///
- ///
- /// This is useful when you want to create a single assembly/executable without having to ship referenced dll's
- /// alongside your application.
- ///
- /// (c) 2012 by Curtis Wensley
- /// See LICENSE for full terms
- class EmbeddedAssemblyLoader
- {
- readonly Dictionary loadedAssemblies = new Dictionary();
-
- ///
- /// Gets the assembly in which this loader will load assembly resources from
- ///
- public Assembly Assembly { get; private set; }
-
- ///
- /// Gets the namespace in the to get the assembly resources from
- ///
- public string ResourceNamespace { get; private set; }
-
- ///
- /// Registers the specified namespace for loading embedded assemblies
- ///
- /// Namespace of where the embedded assemblies should be loaded
- /// Assembly to load the embedded assemblies from, or null to use the calling assembly
- /// Application domain to load the assemblies in, or null to use the current app domain
- /// A new instance of an EmbeddedAssemblyLoader, registered for the specified namespace and assembly
- public static EmbeddedAssemblyLoader Register(string resourceNamespace, Assembly assembly = null, AppDomain domain = null)
- {
- assembly = assembly ?? Assembly.GetCallingAssembly();
- var loader = new EmbeddedAssemblyLoader(resourceNamespace, assembly);
- loader.Register(domain);
- return loader;
- }
-
- ///
- /// Initializes a new instance of the EmbeddedAssemblyLoader
- ///
- /// Namespace of where the embedded assemblies should be loaded
- /// Assembly to load the embedded assemblies from, or null to use the calling assembly
- public EmbeddedAssemblyLoader(string resourceNamespace, Assembly assembly = null)
- {
- this.Assembly = assembly ?? Assembly.GetCallingAssembly();
- this.ResourceNamespace = resourceNamespace;
- }
-
- ///
- /// Registers this loader for the specified
- ///
- /// App domain to register this loader for, or null to use the current domain
- public void Register(AppDomain domain = null)
- {
- domain = domain ?? AppDomain.CurrentDomain;
- domain.AssemblyResolve += (sender, args) =>
- {
- //Thread.Sleep(1000);
- var assemblyName = new AssemblyName(args.Name);
- if (assemblyName.Name.EndsWith(".resources", StringComparison.OrdinalIgnoreCase))
- return null;
-
- string resourceName = ResourceNamespace + "." + assemblyName.Name + ".dll";
- Assembly loadedAssembly;
- lock (loadedAssemblies)
- {
- if (loadedAssemblies.TryGetValue(resourceName, out loadedAssembly))
- return loadedAssembly;
- }
-
- using (var stream = Assembly.GetManifestResourceStream(resourceName))
- {
- if (stream != null)
- {
- var data = new byte[stream.Length];
- stream.Read(data, 0, data.Length);
- loadedAssembly = Assembly.Load(data);
- lock (loadedAssemblies)
- {
- loadedAssemblies.Add(resourceName, loadedAssembly);
- }
- return loadedAssembly;
- }
- }
- return null;
- };
- }
- }
-}
diff --git a/Source/PabloDraw.Console/PabloDraw.Console.csproj b/Source/PabloDraw.Console/PabloDraw.Console.csproj
index f075e02..a09651f 100644
--- a/Source/PabloDraw.Console/PabloDraw.Console.csproj
+++ b/Source/PabloDraw.Console/PabloDraw.Console.csproj
@@ -1,183 +1,23 @@
-
-
-
+
- Debug
- AnyCPU
- {0457895A-719B-47E9-84F3-356B2A1F8D3C}
+ net47
Exe
- Properties
- PabloDraw.Console
- PabloDraw.Console
- 512
+ DESKTOP
+ PabloDraw Console
+ PabloDraw Console
+ AnyCPU
PabloDraw.Console.Startup
- publish\
- true
- Disk
- false
- Foreground
- 7
- Days
- false
- false
- true
- 0
- 1.0.0.%2a
- false
- false
- true
-
-
- v4.5.1
-
+ False
+ True
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
- true
- --convert /Users/curtis/Downloads/mirage/VD-FLIP.ans --out /Users/curtis/Downloads/mirage/VD-FLIP.txt
- false
-
-
- true
- bin\Release\
- TRACE
- prompt
- 4
- true
- --platform mac --server --adminpw hello
- none
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Code
-
-
-
- Properties\GlobalAssemblyInfo.cs
-
-
-
-
-
-
-
-
-
-
- {35EF0A4E-2A1A-492C-8BED-106774EA09F2}
- Eto - pcl
- False
-
-
- {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}
- Lidgren.Network
- False
-
-
- {F5D74163-145F-47BF-83DC-D0E07249C6CA}
- Mono.Nat
- False
-
-
- {35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}
- Pablo
- False
-
-
- {80915A80-CA54-11E3-9C1A-0800200C9A66}
- Eto.Gtk2 - net45
- False
-
-
- {9F51798A-354C-47A1-9207-4BB7D7FC7FC4}
- Eto.WinForms - net45
- False
-
-
- {3E7995E0-C9EB-11E3-9C1A-0800200C9A66}
- Eto.Mac - net45
- False
-
-
-
-
-
- False
- Microsoft .NET Framework 4 %28x86 and x64%29
- true
-
-
- False
- .NET Framework 3.5 SP1 Client Profile
- false
-
-
- False
- .NET Framework 3.5 SP1
- false
-
-
- False
- Windows Installer 4.5
- true
-
+
+
+
-
-
-
-
-
- Assemblies\MonoMac.dll
-
-
- Assemblies\SharpCompress.dll
-
-
- Assemblies\Newtonsoft.Json.dll
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Source/PabloDraw.Console/Properties/AssemblyInfo.cs b/Source/PabloDraw.Console/Properties/AssemblyInfo.cs
deleted file mode 100644
index cc120e2..0000000
--- a/Source/PabloDraw.Console/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-//
-// 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("PabloDraw Console")]
-[assembly: AssemblyDescription("PabloDraw Console")]
diff --git a/Source/PabloDraw.Console/Startup.cs b/Source/PabloDraw.Console/Startup.cs
index 8c2aada..8da38a0 100644
--- a/Source/PabloDraw.Console/Startup.cs
+++ b/Source/PabloDraw.Console/Startup.cs
@@ -15,12 +15,12 @@ namespace PabloDraw.Console
{
static class Startup
{
- static EmbeddedAssemblyLoader loader;
+ static EmbedReferences loader;
internal static void EnsureInternalAssemblies()
- {
- if (loader == null)
- loader = EmbeddedAssemblyLoader.Register("PabloDraw.Console.Assemblies");
+ {
+ if (loader == null)
+ loader = EmbedReferences.Init();
}
[STAThread]
diff --git a/Source/PabloDraw.Mac/Info.plist b/Source/PabloDraw.Mac/Info.plist
index 719f2fb..278e6ca 100644
--- a/Source/PabloDraw.Mac/Info.plist
+++ b/Source/PabloDraw.Mac/Info.plist
@@ -1,73 +1,71 @@
-
+
-
- CFBundleDocumentTypes
-
-
- CFBundleTypeExtensions
-
- tnd
- txt
- ans
- asc
- jpeg
- gif
- png
- rip
- adf
- avt
- bin
- idf
- cg
- xb
- nfo
- diz
- bmp
- tiff
- jpg
- msg
-
- CFBundleTypeIconFile
- PabloDraw-Document
- CFBundleTypeName
- Pablo Document
- CFBundleTypeOSTypes
-
- *
-
- CFBundleTypeRole
- Editor
- LSTypeIsPackage
-
-
-
- CFBundleIconFile
- PabloDraw.icns
- CFBundleIconFiles
-
- PabloDraw.icns
-
- CFBundleName
- PabloDraw
- LSApplicationCategoryType
- public.app-category.graphics-design
- LSEnvironment
-
- MONO_IOMAP
- case
-
- LSMinimumSystemVersion
- 10.7
- NSMainNibFile
-
- NSPrincipalClass
- NSApplication
- CFBundleShortVersionString
- 3.2.1
- CFBundleVersion
- 3.2.1
- CFBundleIdentifier
- ca.picoe.pablodraw
-
-
+
+ CFBundleDocumentTypes
+
+
+ CFBundleTypeExtensions
+
+ tnd
+ txt
+ ans
+ asc
+ jpeg
+ gif
+ png
+ rip
+ adf
+ avt
+ bin
+ idf
+ cg
+ xb
+ nfo
+ diz
+ bmp
+ tiff
+ jpg
+ msg
+
+ CFBundleTypeIconFile
+ PabloDraw-Document
+ CFBundleTypeName
+ Pablo Document
+ CFBundleTypeOSTypes
+
+ *
+
+ CFBundleTypeRole
+ Editor
+ LSTypeIsPackage
+
+
+
+ CFBundleIconFile
+ PabloDraw.icns
+ CFBundleIconFiles
+
+ PabloDraw.icns
+
+ CFBundleName
+ PabloDraw
+ LSApplicationCategoryType
+ public.app-category.graphics-design
+ LSEnvironment
+
+ MONO_IOMAP
+ case
+
+ LSMinimumSystemVersion
+ 10.10
+ NSPrincipalClass
+ NSApplication
+ CFBundleShortVersionString
+ 3.3.0
+ CFBundleIdentifier
+ ca.picoe.pablodraw
+ CFBundleVersion
+ 3.3.0
+
+
\ No newline at end of file
diff --git a/Source/PabloDraw.Mac/PabloDraw.Mac.csproj b/Source/PabloDraw.Mac/PabloDraw.Mac.csproj
index c640d3a..e6fc7f6 100644
--- a/Source/PabloDraw.Mac/PabloDraw.Mac.csproj
+++ b/Source/PabloDraw.Mac/PabloDraw.Mac.csproj
@@ -1,4 +1,4 @@
-
+
Debug
@@ -9,20 +9,20 @@
PabloDraw
PabloDraw
Resources
-
v2.0
Xamarin.Mac
+ True
true
full
false
- bin\Debug
+ ..\..\Artifacts\bin\Debug\xammac
DEBUG;
prompt
4
false
- Mac Developer
+ Developer ID Application
false
false
false
@@ -31,35 +31,42 @@
HttpClientHandler
None
x86_64
- 3rd Party Mac Developer Installer
+ Developer ID Installer
other,rare,west
true
+ None
+ true
pdbonly
true
- bin\Release
-
+ ..\..\Artifacts\bin\Release\xammac
+
+
prompt
4
- false
+ true
true
- false
+ true
true
true
true
SdkOnly
HttpClientHandler
x86_64
- Mac Developer
- 3rd Party Mac Developer Installer
+ Developer ID Application
+ Developer ID Installer
other,rare,west
true
+ None
+ true
+
+
@@ -71,22 +78,11 @@
-
- GlobalAssemblyInfo.cs
-
Code
-
- {856E8C70-2702-11E4-8C21-0800200C9A66}
- Eto.XamMac2 - net45
-
-
- {35EF0A4E-2A1A-492C-8BED-106774EA09F2}
- Eto - pcl
-
{35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}
Pablo
@@ -100,5 +96,134 @@
+
+
+ 2.5.0-rc.4
+
+
+ 0.24.0
+
+
+
+
+
+ Properties\VersionInfo.cs
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Source/PabloDraw.WindowsInstaller/PabloDraw.WindowsInstaller.wixproj b/Source/PabloDraw.WindowsInstaller/PabloDraw.WindowsInstaller.wixproj
new file mode 100644
index 0000000..4dadd68
--- /dev/null
+++ b/Source/PabloDraw.WindowsInstaller/PabloDraw.WindowsInstaller.wixproj
@@ -0,0 +1,56 @@
+
+
+
+
+ Debug
+ x86
+ 3.10
+ 38a42f6d-a417-45b0-8ec8-a700f31cbe26
+ 2.0
+ PabloDraw
+ Package
+
+
+ ..\..\Artifacts\bin\$(Configuration)\net47
+ ..\..\Artifacts\obj\$(OS)\$(Configuration)\
+ Debug
+
+
+ ..\..\Artifacts\bin\$(Configuration)\net47
+ ..\..\Artifacts\obj\$(OS)\$(Configuration)\
+
+
+
+
+
+
+ PabloDraw
+ {9a72b697-8da3-4a52-9e6b-05deeea23ad2}
+ True
+ True
+ Binaries;Content;Satellites
+ INSTALLFOLDER
+
+
+
+
+
+
+
+
+
+
+
+
+ $(DefineConstants);AssemblyVersion=$(AssemblyVersion)
+
+
+
+
\ No newline at end of file
diff --git a/Source/PabloDraw.WindowsInstaller/Product.wxs b/Source/PabloDraw.WindowsInstaller/Product.wxs
new file mode 100644
index 0000000..0841efd
--- /dev/null
+++ b/Source/PabloDraw.WindowsInstaller/Product.wxs
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/PabloDraw/.gitignore b/Source/PabloDraw/.gitignore
deleted file mode 100644
index b4a3a96..0000000
--- a/Source/PabloDraw/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-Assemblies/
-publish/
\ No newline at end of file
diff --git a/Source/PabloDraw/EmbeddedAssemblyLoader.cs b/Source/PabloDraw/EmbeddedAssemblyLoader.cs
deleted file mode 100644
index f5e992b..0000000
--- a/Source/PabloDraw/EmbeddedAssemblyLoader.cs
+++ /dev/null
@@ -1,92 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Reflection;
-
-namespace PabloDraw
-{
- ///
- /// Loads assemblies from embedded resources instead of from disk
- ///
- ///
- /// This is useful when you want to create a single assembly/executable without having to ship referenced dll's
- /// alongside your application.
- ///
- /// (c) 2012 by Curtis Wensley
- /// See LICENSE for full terms
- public class EmbeddedAssemblyLoader
- {
- readonly Dictionary loadedAssemblies = new Dictionary();
-
- ///
- /// Gets the assembly in which this loader will load assembly resources from
- ///
- public Assembly Assembly { get; private set; }
-
- ///
- /// Gets the namespace in the to get the assembly resources from
- ///
- public string ResourceNamespace { get; private set; }
-
- ///
- /// Registers the specified namespace for loading embedded assemblies
- ///
- /// Namespace of where the embedded assemblies should be loaded
- /// Assembly to load the embedded assemblies from, or null to use the calling assembly
- /// Application domain to load the assemblies in, or null to use the current app domain
- /// A new instance of an EmbeddedAssemblyLoader, registered for the specified namespace and assembly
- public static EmbeddedAssemblyLoader Register(string resourceNamespace, Assembly assembly = null, AppDomain domain = null)
- {
- assembly = assembly ?? Assembly.GetCallingAssembly();
- var loader = new EmbeddedAssemblyLoader(resourceNamespace, assembly);
- loader.Register(domain);
- return loader;
- }
-
- ///
- /// Initializes a new instance of the EmbeddedAssemblyLoader
- ///
- /// Namespace of where the embedded assemblies should be loaded
- /// Assembly to load the embedded assemblies from, or null to use the calling assembly
- public EmbeddedAssemblyLoader(string resourceNamespace, Assembly assembly = null)
- {
- this.Assembly = assembly ?? Assembly.GetCallingAssembly();
- this.ResourceNamespace = resourceNamespace;
- }
-
- ///
- /// Registers this loader for the specified
- ///
- /// App domain to register this loader for, or null to use the current domain
- public void Register(AppDomain domain = null)
- {
- domain = domain ?? AppDomain.CurrentDomain;
- domain.AssemblyResolve += (sender, args) =>
- {
- var assemblyName = new AssemblyName(args.Name);
- if (assemblyName.Name.EndsWith(".resources", StringComparison.OrdinalIgnoreCase)) return null;
-
- string resourceName = ResourceNamespace + "." + assemblyName.Name + ".dll";
- Assembly loadedAssembly;
- lock (loadedAssemblies)
- {
- if (!loadedAssemblies.TryGetValue(resourceName, out loadedAssembly))
- {
- using (var stream = Assembly.GetManifestResourceStream(resourceName))
- {
- if (stream != null)
- {
- using (var binaryReader = new BinaryReader(stream))
- {
- loadedAssembly = Assembly.Load(binaryReader.ReadBytes((int)stream.Length));
- loadedAssemblies.Add(resourceName, loadedAssembly);
- }
- }
- }
- }
- }
- return loadedAssembly;
- };
- }
- }
-}
diff --git a/Source/PabloDraw/Icon.icns b/Source/PabloDraw/Icon.icns
new file mode 100644
index 0000000..99bcdba
Binary files /dev/null and b/Source/PabloDraw/Icon.icns differ
diff --git a/Source/PabloDraw/PabloDraw.csproj b/Source/PabloDraw/PabloDraw.csproj
index 6cf65db..e29bbdf 100644
--- a/Source/PabloDraw/PabloDraw.csproj
+++ b/Source/PabloDraw/PabloDraw.csproj
@@ -1,520 +1,30 @@
-
-
+
- Local
- {9A72B697-8DA3-4A52-9E6B-05DEEEA23AD2}
- Debug
- AnyCPU
-
-
- PabloDraw
- JScript
- Grid
- IE50
+ net47
WinExe
-
-
- PabloDraw
-
-
PabloDraw.ico
-
-
- true
- v4.5.1
-
- Z:\Projects\download.picoe.ca\pablodraw\windows\
- true
- Web
- true
- Background
- 1
- Days
- false
- false
- true
- http://download.picoe.ca/pablodraw/windows/
- http://picoe.ca/forums/forum/pablodraw/
- PabloDraw
- PabloDraw
- 3.0.8.32
- true
- index.html
- false
- true
- 1
- 3.2.1.%2a
- false
- true
- true
- true
-
-
- 285212672
-
-
- TRACE;DESKTOP
- 4096
- true
- ..\..\Artifacts\bin\Release\
- False
- False
- 4
- pdbonly
-
-
-
-
-
- false
- true
- x86
- false
-
-
- 285212672
-
-
- TRACE;DEBUG;DESKTOP
- true
- 4096
- false
- ..\..\Artifacts\bin\Debug\
- False
- False
- 4
- full
-
-
-
-
-
- true
+ DESKTOP
+ PabloDraw
+ PabloDraw
AnyCPU
- false
-
-
- 27086626895AC2613898D088F965B62E3B1C6CE2
-
-
- PabloDraw_TemporaryKey.pfx
-
-
- true
-
-
- false
-
-
-
- LocalIntranet
-
-
- PabloDraw_TemporaryKey.pfx
-
-
-
-
-
-
- Properties\app.manifest
-
-
- false
+ True
-
- System
-
-
- System.Xml
-
-
-
-
-
-
- Properties\GlobalAssemblyInfo.cs
-
-
-
-
-
- Code
-
-
-
-
-
- False
- Microsoft .NET Framework 4.5.2 %28x86 and x64%29
- true
-
-
- False
- .NET Framework 3.5 SP1 Client Profile
- false
-
-
- False
- .NET Framework 3.5 SP1
- false
-
-
-
-
-
-
-
-
-
- Assemblies\Newtonsoft.Json.dll
-
-
- Assemblies\SharpCompress.dll
-
-
-
-
-
-
-
-
-
-
-
- False
-
-
-
-
- Exclude
- True
- Assembly
-
-
- False
-
-
-
-
- Exclude
- True
- Assembly
-
-
- False
-
-
-
-
- Exclude
- True
- Assembly
-
-
- False
-
-
-
-
- Exclude
- True
- Assembly
-
-
- False
-
-
-
-
- Exclude
- True
- Assembly
-
-
- False
-
-
-
-
- Exclude
- True
- Assembly
-
-
- False
-
-
-
-
- Exclude
- True
- Assembly
-
-
- False
-
-
-
-
- Exclude
- True
- Assembly
-
-
- False
-
-
-
-
- Exclude
- True
- Assembly
-
-
- False
-
-
-
-
- Exclude
- True
- Assembly
-
-
- False
-
-
-
-
- Exclude
- True
- Assembly
-
-
- False
-
-
-
-
- Exclude
- True
- Assembly
-
-
- False
-
-
-
-
- Exclude
- True
- Assembly
-
-
- False
-
-
-
-
- Exclude
- True
- Assembly
-
-
- False
-
-
-
-
- Exclude
- True
- Assembly
-
-
- False
-
-
-
-
- Exclude
- True
- Assembly
-
-
- False
-
-
-
-
- Exclude
- True
- Assembly
-
-
- False
-
-
-
-
- Exclude
- True
- Assembly
-
-
- False
-
-
-
-
- Exclude
- True
- Assembly
-
-
- False
-
-
-
-
- Exclude
- True
- Assembly
-
-
- False
-
-
-
-
- Exclude
- True
- Assembly
-
-
-
-
-
-
- README.ans
- Always
-
+
-
- False
- Ansi Art File
- Text.Ansi
- PabloDraw.ico
-
-
- False
- Ascii Art File
- Text.Ascii
- PabloDraw.ico
-
-
- False
- Binary Art File
- Text.BinaryArt
- PabloDraw.ico
-
-
- False
- Description Art File
- Text.DIZ
- PabloDraw.ico
-
-
- False
- iCE Draw Art File
- Text.iCEDraw
- PabloDraw.ico
-
-
- False
- iNFO Art File
- Text.NFO
- PabloDraw.ico
-
-
- False
- RipScrip Art File
- Text.RipScrip
- PabloDraw.ico
-
-
- False
- XBin Art File
- Text.XBin
- PabloDraw.ico
-
+
-
- {330EF9FD-5947-4AC9-9796-950C7633695F}
- Eto.Direct2D - net45
- False
-
-
- {80915A80-CA54-11E3-9C1A-0800200C9A66}
- Eto.Gtk2 - net45
- False
-
-
- {543B2F90-CA56-11E3-9C1A-0800200C9A66}
- Eto.Gtk3 - net45
- False
-
-
- {9F51798A-354C-47A1-9207-4BB7D7FC7FC4}
- Eto.WinForms - net45
- False
-
-
- {63137fa0-ca55-11e3-9c1a-0800200c9a66}
- Eto.Wpf - net45
- False
-
-
- {35EF0A4E-2A1A-492C-8BED-106774EA09F2}
- Eto - pcl
- False
-
-
- {35DBE6BB-B46D-4AE9-8156-FBFC6EC2BB69}
- Pablo
- False
-
-
- {3FAACC7E-D156-4599-B0D1-6177AD78E8B1}
- Pablo.Interface
- False
-
-
- {F5D74163-145F-47BF-83DC-D0E07249C6CA}
- Mono.Nat
- False
-
-
- {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}
- Lidgren.Network
- False
-
+
+
+
+
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Source/PabloDraw/Program.cs b/Source/PabloDraw/Program.cs
index 0a34051..a842d48 100644
--- a/Source/PabloDraw/Program.cs
+++ b/Source/PabloDraw/Program.cs
@@ -10,9 +10,9 @@ public static class Program
public static void Run()
{
- var command = new CommandLine(Environment.CommandLine);
-
- var platform = command.GetValue("platform", "p");
+ var command = new CommandLine(Environment.CommandLine);
+
+ var platform = command.GetValue("platform", "p");
//#if DEBUG
// use winforms by default on windows
if (platform == null && EtoEnvironment.Platform.IsWindows)
@@ -28,12 +28,12 @@ public static void Run()
case "d2d":
Platform.Initialize(Platforms.Direct2D);
break;
- case "gtk":
- case "gtk2":
+ case "gtk":
+ case "gtk2":
Platform.Initialize(Platforms.Gtk2);
- break;
- case "gtk3":
- Platform.Initialize(Platforms.Gtk3);
+ break;
+ case "gtk3":
+ Platform.Initialize(Platforms.Gtk);
break;
case "winforms":
case "win":
diff --git a/Source/PabloDraw/Properties/AssemblyInfo.cs b/Source/PabloDraw/Properties/AssemblyInfo.cs
deleted file mode 100644
index e0e6d94..0000000
--- a/Source/PabloDraw/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-//
-// 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("PabloDraw")]
-[assembly: AssemblyDescription("PabloDraw")]
diff --git a/Source/PabloDraw/Properties/app.manifest b/Source/PabloDraw/Properties/app.manifest
deleted file mode 100644
index c18985e..0000000
--- a/Source/PabloDraw/Properties/app.manifest
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Source/PabloDraw/Startup.cs b/Source/PabloDraw/Startup.cs
index 7d5db96..5c75a7d 100644
--- a/Source/PabloDraw/Startup.cs
+++ b/Source/PabloDraw/Startup.cs
@@ -7,7 +7,7 @@ public static class Startup
[STAThread]
static void Main()
{
- EmbeddedAssemblyLoader.Register("PabloDraw.Assemblies");
+ EmbedReferences.Init();
Program.Run();
}
}
diff --git a/Source/PabloDraw/app.config b/Source/PabloDraw/app.config
index 801c873..ea2e0ce 100644
--- a/Source/PabloDraw/app.config
+++ b/Source/PabloDraw/app.config
@@ -1,3 +1,11 @@
-
+
+
+
+
+
diff --git a/Source/README.ans b/Source/README.ans
index be378c8..cc6e9e0 100644
--- a/Source/README.ans
+++ b/Source/README.ans
@@ -1,192 +1,193 @@
-[7h[0;1;40;30m[?33h-- ---------------------------------------------------- ------------------ ----
-[0;36m [1;30m±± ÛÛ ÜÛÛÛÛ± Ü[46mß[40m Ü[47mß[40mÛÜ[47m²[40mÛ ÜÜ ±Û[47mß±±[40mÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ[0m°°[1;30mÛÛ[0m°°°°°°°°°°°°°°
-[36m [1;47;30m²²[40m [47m±±[40m±[0m°°[1;30mß[47m±[40mÛ ±[46m±[36mÛ[40;30m [0m [1;47;30m [37mþ[40;30mßÛ[47m±±[40mÛ±[47m²[40m [0m [1;30mÜÛ
-[0;36m [1;47;30m°°[40m±[47m [40mÛß ±[47mÜ[40mßß ß[46mÜ[40mÜ[0m [1;30mßß ±± [47mÛ[40m ±±[0m [1;36mPablodraw[0;36m v.3.2 ||[37m [36m [37m [1;36mDocumentation[0m [36m [37m [1;30m±±
-[0;36m [1;47;37mÜ[30m [40mÛ[47;37mß[30mÜ[0m[6C[1;30mÜ[0m[6C[1;30mßß Ü[0m [36m [1;30m ± [0m[47C[1;30mÛÛ
-[0;36m [1;47;30mÜ[40mß ß[0;36m [1;30mÜþ[0m[8C[36m±±Û[1;46m±ÛÜ[0;36mÜ[1;30mßÜ [0m[6C[1;30m ±ÛÛÛÛÛ[47mÛÛ[40mÛÛÛÛÛÛÛÛÛÛ[47m²²[40mÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ[47m±±ßß[40mÜ
-[0m [1;30mÜÜ[46mß[40mß ÜÜ[47mß[46mÛ[40m [0m [1;30m [0;36mß[1;46mß[0;36mÛ±[1;30m [46mÛ[40mÜ [0m [1;30m ± [0m[26C[1;30m ÜÜ ÜÜ ÜÜÜ ÜÜ
- Û[46m [36mþ[30m±ÛÛ[47mÜ [40mß [0;36mÜÜ[1;30m [0m[6C[36m±±[1;30m [46m²[40m [0m [1;30m±Û [0m[12C[32m°[37m[12C[36m [1;30m° [47mÛß[40mÜÛ[47m²²[40mÛ ÛÛ[0m°°[1;30m [47m²²[40m±
- ßßß [47m²[46mÛ[47m [37mþ[40;30m [0;36mÜÛ[1;30m [0m[9C[1;30m±±Û±[0m [1;30m±± ± [0m [1;30mÜ[46mß[36mþ[30m±[40m± [0;32m °° [37m [1;30m [46mßß[40mÜ [0m [1;30m [47mÛ±[40m± [47m±±[40mÛ±Û±Û[47m²[40m°[47m°°[40mÛ
-±ÜÜÜ [46mÛ[40m±[47m±±[40m [0;36m±±[1;30m ±±± ±± [46m±±[40mÛ [0m [1;30m°°° Û [0m [1;30mß[46mßß[40mÜ [0;32m ±± [37m [1;30m Ü[46;36mÜ [30m [40m [0m [1;30m ±± ßßÛ ± [47mÛ°[40m²[47;37mþ[30m ±[0m
-[1;30m Û ± [47m²²[0m[8C[1;47;30mÛ[46m±[40mÛ [46m²²[40mÛ[46;36mþ[30mÜ[40m [0m [1;30m°[0m[5C[1;30mßÛ[0m [1;30m±[46;36mÜ[30m [40m [0m[5C[32m° [37m [1;30m ±[46;36m°[30m±°[40m ±[0m[5C[1;47;30m±±[40mÛ Û[47m ±²²[40mÛ
- ±[0;36m [1;46;30m²[40m ²²[0m[5C[1;30mÜÜÛÛ[46mÜ[40mÛ ±Û[46mß[40mÜß [0m[5C[1;30mßÜ ±[0m [1;30mÛ[46m ±°[40m [0m[8C[1;30m [46m² [40m±[46m²[40m [46mÛ[40m ÛÛ [47;37m°[30m [40mÛ± ß ±±
- Û[0;36m [1;46;30m²[40m °° ±[46mÛ²²[40mßßÛ[0mÜÜ[1;30mÜ ß [0m [1;30m ±[46m±ß[40mÜ ß[46m²[40m [0m [1;30mÛ[46m±[40m²[46m²[0m[12C[1;47;30mÛ[46m°[40m Û [46m²[40m ±± ßß [0m [1;30m±ÛÜ
- °[0;36m [1;30mÛ ° [0m [1;30m ßßÛÛ ßßß [0m[5C[1;30m Ü[46;36m±Ü[30mß[40m± Û [0m [1;30mÛ[46mÛ[40m°Û Ü[46mß[40mß[0;36mßß[37m[5C[1;30mÛ[46m²[40m [43m±[40m [46m²[0m[6C[1;30mÜ ßß Ü ß[0m °
- [1;30m [46m²[40m ² [32m°[30m Üß [43m²²[40m [0m [1;30m Ü [0m [1;30m±[47mÛ[46m²[40mß[46m ±°°[40m Û [0m [1;30mÛ[46m²[40m Û ß[0m [36m°°°°[37m [1;30mßÜÛÛ[32m°[30mÛ Û[0m [1;30m ÜßÜ[46mß[36mÜÜ[30m±[47mÛ[40m± Ü
-[0m [1;30m °Û Û ° ÛÛ ±[43m±±[40m ÜÛ Üß[0m [1;30m [45mÛ[43mÛ[40m [46m±[40m°[46m²²[40m Û [0m [1;30mÛ± Û[0m[8C[1;30m±± Û Û [43m±[40m ²[0m [1;30mÜ[47m±[40mÛ[46mß[47mÛ[40mß[0m[8C[1;30mÛÜ
-[0m [1;30m ±Û [43m±[40m ²[32m °[43;30m±±[40m Û[43;33mÜ[30m [40m [43mÛ±±[40mÜ[43mß[33m°[40;30m [0m [1;30m [43m²²[40m Û ÛÛ ± [0m [1;43;30m²[40;32m [43;30mÛ[40m ±± Üß ÛÛ [43m²²[40mÛ [43;33m°[40;30m °[0m [1;30mÛ[47mÛ[40m±ÛÛ [47;37m±Û[40;30m ±±± [43m±±[0m
- [1;30m Ûß [43m [40m Û[32m ±[43;33mÜ[30m [40m Û[43mÜ[40mß ±[43m±[33mܱ[40;30mÛ[43m±±[40m [0m [1;30m ±± Û[32m±[43;30m²²[40m [0m [1;30mÛ[32m± [43;30m²[40m ÛÛ ± [43m±±[40m [43m°°[40m±Û[43;33m±[0me ±[1;43;30m±±[40m [43m²²[40m [47mß[40;37mÜÜ[0mÜ[1;42;30m±±±[40m [43;33m±±[40;30m±
-[0m [1;30mÛ Ü[43mß[33m±[40;30m±[43m±[40;32m ß[43;30mÜ[40mß ß[43mÜ[40mÛ± ß[43mÜÜ[40m ±± [0m [1;30m [43m±[40;32m±[43;30m°°[40m± [0m [1;43;30m±[40;32mÛ [30mÛ²[43m±±[0m[5C[1;43;30m [33m±[40;30m [43mÜ[40mÛ Û[43;33mß[40;30m Ü [43m [33mþ[40;30m ±± [0mßßß[1;30m [42;32mÜÜ[0;32mÛ[1;30m [43;33mß[30mÜ[40m±
-[0m [1;30m± [43m [33m±Û[30m ±[40mÛÛ[43;33m [30mß[40mÜÜ [0m [1;30m ± ßÜ [0m [1;30m°°° Ü[43mß[40mÛ[43m [33mÜ[30mß[40m [0m [1;43;33m±[40mß[43;30mß[40mÛÛ[43m [33mÜ[40;30m± ±[43mÜ[33mß[30mÛÜ[40m Ü[0;33mÜ[1;43;30mß[40mÛ[43mÜ[40m ß[43mÜ[40m [0;32m±Û[1;42m ÛÛß[30mÜ[43mß[40mÛß
-[0m [1;43;30mÜÜÜ[40mß [43;33m°[40;30mßß[43mÜ[40m± [0m [1;30m ßÜ [0m [1;30mþÜÜ ß ß[43mÜÜ[40m±[0m [1;43;30mÜÜ[40mß ßß[43mÜ[40mÛ[43mÜ[33mßß[30m±[40mÜÛß Û[43mÜ[40mßß Ü ßÜ ßßßßßÜß
- Ü[0m°°[1;30mßß [43m [40mßþ °° ß Ü[0m [1;30m ÜþÜ ±[0m[5C[1;30mÜ ßßßß[0m[5C[1;30mÜ[0m°°[1;30mß[0m[9C[1;30mß[43mÜÜ[40m± Ü
-ÜÛ± ßß [0m [1;30m [43m±[40m ± °²² ° ÜÜ[0m [1;30mßÜ[0m [1;30m ° [0m [1;30mßßßß ± [0m [1;30m ß ÜÜÜÜ ß [0m[9C°° [1;30mß ÜÜÜ ÜþzO±
-Û± °²² °[0m [1;43;30m²[40mÜÛ ÛÛ°² ÛÛÛÜ[0m [1;30mÛ ²² ÜÜÜ ±ÛÜÜ ÜÜÜÜÜÜÜÜÜÛÛß ± ²²± [0m [1;30mÛ ÜÛÛÛ°
-Û ²²²ÛÛ°² ßßÜÛ ÛÛ²Û±±ÛÛÛÜ Û ÛÛÜ Û[47mÛ[0m°°[1;30mÛ± ÜÜÛÛÛÛÛÜ ±ÛÛ[0m°°°[1;30mßßÛÜÜ Û ÛÛ[43m²²[40mÜ ± [0m°[1;30m ÛÛÛÛ²
-Û²ÛÛÛ[43m²²[40m²ÛÛÛÛÛÛ [47m²[40mÛÛ[46m²[40mÛÛÛÛ[0m°°[1;30mÜÛÝÛ[43mß±Û[40mÜÛÛÛÛÜÛÛÛÛ[46m²[40mÛÛÛÛ[0m°°°[1;30mÛÜÜÜÛÛÛÛÛÛÜß ÜÜÛßÛ± ßßÛÛÜÛ[46m²[40mÛÛ
-ÞÛÛßßÛÛÛÛ[46m²²[40mÛÛÛ [47m°[40mÛÛÛ²ÛÛÛßßÛÛÛÛÛÛÛ[43mÜ[40mÛß ÛÛÛ[46m²²[40mÛ ßßÛÛÛÛÛ[0m°[1;30mÛÛÛÛÛÛÛÛ[46m²[40mÛÛÛÛÛ ÜÜ[0m°°[1;30mÛÛÛÛÛÛ
-ÛÛ±Û[43mß[40mÜÛÛÛÛÛÛÛßÜ[47m [40mÛ[46m²²[40m°[47m²[40mÛÛ ±[47mÜ ±[40mÜÛ[47mß[0mÜ[1;30mÜÛÛ[47mß[40m±ÛÛ[46m±±[40mÛÛ ±[47m± ß[40mÜÛßÛÛÛÛ Ü[0mÜÜ[1;30mßÛÛÛÛÛÛÛÜÛ[43m²[40mÛß ±Û[47mÜ[40mÛ
-ÛÛÛÜÜÛÛßÛ[47mß[0mÜ[1;30mÜÛ[43mÛ[47mÜÜ[46mÛÛÛ[40m ÛÛÛÛÛÜßÛ[43mÛ[40mÛ[43mÛÛ[40mÛ[46m²²²[40mßÛ[46m²²[40mÛÛÛÛÛÜÜÛÛ[47mÜ[40mÛÛßÛÛÛÛß[47m±±[43mÛ[40m±ÛÛ[46m²²[40mÛÛÛ±Û[47mß[40m± Û[47mß ß[40mÜ
-Û[46m²²[40mÛßÜ[47mß[40mÛÛ[47mÛ[40mÛÛÛÛÛ±[46m²²²[40m Û[47mÛ²²[40mÛÛ°[46m²²[40mÛ±Û [46m Ü[40m± ÛÛÛßÛÜÜÜÛß[46m²²²²[40m Û[47m²[40mÛ ÛÛÛ ÛÛÛÛÛÛÛ [46m²²²[40m [47m± [37mÛ[30m [0m
-[1;30m ÛÛ ±[46mÛ²²²²[40mÛÛßßß [46m°°°[40mÜßÛÛ[47m±±[40mÛ²[46m°°²[40m Û[47m²[40mÛÜÜÜÜÛßÛ[46m²²²²[40mÛÛ[46m²°°°°Û[40m±ÛÛÛ Û[46m²²[40m ÛÛ ÜÜÛÛ [46m°°°[40m²Û[47mÜ Ü [0m
-[1;30mÛÜ Û[46m²°°°²[40m ÛÛÛ ±[46m ß[40mÛßÛ[47m²²[40mÛ[46m °[40m ÛÛÛÛÛÛß [46mÛ±±±±²ÛÛ[40mß[46;36m°°[30m Û[40mÛÛ[47m²²[40m Û[46m°°ß[40mÜ ß[46mÜ[40mÛÜß [46m [36m° [40;30mÛÛÛß[47mÛÜ[0m
-[1;47;30m±±[40m ±[46m±[36m [30m °ß[0;36mÜ[1;30mÜÜ[46mß [36mþß[30m ±[40m± ÛßÜ[46m [36m±Ü[30mß[40mÜ ÛÛ[47m²²[40m [46m±°°°°[40m ÜÜ [46;36m²²[30m Ü[40mÛßÛ[47m°°[40m ±[46m [36mÜÜ[30m ß[40m±Û[46m± [36m ß [40;30m±ÛÛÛÛß
-[47m ß[40mÜ ±[46m [36mß ÜÜÜ Ü [30mÜ[0;36mß[1;46;30mÜÜÜ[40mßÛÜÜÛ ÛÛß[0;36mß[1;46;30mÜ[40mÛ ÛÛ[47m°°[40mÛÜß[46mÜ [36mÜ [30mß[0;36mÜÜ[1;46;30mß[40;37mÛ[46;36mß[40;30mß [46mÜ[40m± [47mÜ [40mÜ [46mÜ [37m [30m Ü[40mÜß[46mÛÜÛßÜ[40mÛÛÛ[47mÛßÛ[40mÛ
-[47m ß[40mÜÛ[0;36mß[1;46;30mÜ [37mßß[36m [30mÜ[40mßÜ[47mß[40m Ü[47mß ±[40m ÜÛÛÛÜß [47m²Û ±[40mÛÛÜÛ[0;36mß[1;46;30mÜ[36mßßß[30mÜ[0;36mß[1;30mÛÜÛÜÜ [47mÜß[40mÛÜÛßßÜÛ[47m±[40mÛÜ ßßÜ[47mß Ü[40mßß[47m²[0m
-[1;47;30m [37mÜ[30m ±[40mÛÛÛÜ[0mÜÜ[1;47;30mß ßß[37m Ü [30mÜ[40m [47mÛÛß ±[40mÛÛÛ[47mß°[40mÝ[47mÜ ßßÛ[40mÛÛÜÜÜÛÛ[47mß ß ß[40mÜÛÛ[47mÜß[40mÛÛ[47mß[40mÛ[47mÜ[40mßÜÜ[47mß [37m ß[30m [40mÜßß[47m°[0m
-[1;47mÜ[30m [37mßß[30mÜ[40mßÛÜ[47mß [40mÝ[47mß Ü[40mßÜ[47mß[37m°[30m [40mÛ [47mÜ [37mÜ[30m ß[40mÛÛÛÛ[47m ÜÜ ß[40mÜ[47mß [40mÛßÜÛ[47mß [37mßß[30m Ü[40mß[47mÜ ß [0m
-[1;47;30m Ü[40mß [47mß [37m [30m Ü[40mß[47m [37m [36m°°[37m [30m ÜÛ [40mß ±[47m± ß[40mÜß[47mÜ [37mÜ[30m ±[40mÛ[47m± [40m ß[47mÜ[37m ±[30m Ü[40m ±ÛÛßÛÜÜßÛ± ß[47mÜ [37mß[0m
-[1;30m±± ±[47m [37m [30m [40mß ±[47m [37m [30m [40m± [47mÜ[37m þÜ[30m [40m± ß[47mÜ [37m±[30m [40mß± ß[47mÜÜÛ± ß [37mÜÜ[30mß[40m ±[47mÜ[37mßÛÜ[30m [40m ±± Û[0m°°[1;30mÛÛ Ûß Ü[47mßß[0m
- [1;30m± ß[47mÜ[37mß[30m [40m ±[47m [37mÜÜ ß[30mÜ[40mß ß[0mß[1;47;30mÜ ±[40mÜ ß[47;37mß[30m Ü[40m± ß ÜÜßßß[47mÛÜÜÜÜ[40m Ü ß[0mß[1;47;30mÜ [37mß[30m ß[40mÛ ß[47mÜÜ[40mÛß[0m [1;30mÛ[0m [1;30m±[0m [1;30mß
-±±[0m [1;30mßÛ ßß ÜÛ[47mÜÜÜÜ[40mß Ü[0m[7C[1;30mßß[0m[5C[1;47;30mÛÛ[40mß[0m[8C[1;30mßßßß[0m[6C[1;30mßÛÜÜß[0mß[1;47;30mÜÛß[0m[8C[1;30m [47m²[0m [1;30mÛ °
-ÛÛ[0m [1;30m ßß [0m°°°[1;30mßß Ü[0m[15C[1;30mÜß[0m[18C[1;30m±[0m[5C[1;30mß ßÛ[0m[7C[1;30m [47m²[0m [1;30mÛ
-[47mß[40mÛ[0m[8C[1;30mÜÜ[47mß[40mÛß[0m[37C[1;30mÛ[0m[7C[1;30mß Ý[0m[6C[1;30m [47mÛ[40mÜÛ
-[47m±[40mÛ[47mÛÛÛÛ[40m±ÜÛ[47mÜÜ[40mÛßßÛÛ[47mÛÛ[40mÛÛÛÛÛ±±[0m [1;30m°°[0m[23C[1;30mÝ[0m[18C[1;30m ß[47mÜÜ[0m °
-[1;30mÛÛ[0m [1;30m ÜÛßß[0m [1;30m ßß[0m[36C[1;30m [0m[25C[1;30m°
-Û[0m [1;30m ß [0m[10C[1;30m [0m[60C[1;30m°[0m±[1;30m±
-Û [0;36m Welcome to PabloDraw![37m[52C[1;30m±[0m±[1;30m²
-±[0m[75C[1;30mÛ[0mß[1;30mÛ
- [0;36m [1;30m [ [0;36mAbout[37m[34C[1;30m°°[0m[7C[1;30m±±ÛÛÛÛÛÛÛÛÛÛ²[0m [1;30m-±ÛÛ[47m±±Ü[40mÛß
-[0m [36m°°[37m[72C[1;30m ÛÛ
-± [0m[70C[1;30m°°[0m [1;30mÛÛ
-Û[0m[6C[36mPabloDraw v3 is a completely re-written update to the PabloDraw[37m[7C[1;30mÛÛ
-[47m²[0m[6C[36mansi editor, bringing cross-platform compatibility and all new[30m [1m ±±[0m [1;30m±±
-[0m° [1;30m±±[0;30m [36mfeatures[37m[59C[1;30mÛÛ
-ÛÛ[0m [1;30mÛÛ[0m[70C[1;30m±±
-±±[0m [1;30mÛÛ[0m [36mPabloDraw now fully supports a native application for Mac OS X
-[37m [1;30m±±[0m [36musing Cocoa, Linux using GTK, and Windows using Windows Forms.
-[37m[7C[36mThis provides the best user experience on all platforms.
-
-[37m[7C[36mPabloDraw is now an integrated[37m [1;36mviewer[0;36m and [1meditor[0;36m. PabloDraw
-[37m[7C[36msupports a multitude of formats for viewing:
-
-[37m[10C[1;33mCharacter Formats:[0;36m ANSI, ADF, ASCII, AVT, BIN, CG, IDF, XBIN,
-[37m[29C[36mTundra, CtrlA, ANSiMation
-
-[37m[10C[1;33mVector Formats:[0;36m RIP
-
-[37m[10C[1;33mImage Formats: [0m [36mJPEG, GIF, PNG, TIFF, BMP
-
-[37m[7C[36mCharacter and vector formats can save as any of the image formats,
-[37m[7C[36mproviding easy conversion for viewing on web pages or sharing.
-
-[37m[7C[36mPabloDraw can edit or create character and vector formats, and save as:
-[37m[7C[36m ANSI, ASCII (no colour), BIN, Tundra, CtrlA, XBIN, and RIP.
-
-[37m [1;30m±±[0m [36mOther features included:[37m[44C[1;30mÛÛ[0m [1;30m°
-[0m [1;30mÛÛ[0m [1;33mþ[0;36m Built-in Sixteencolors.net art browser[37m[26C[1;30mÛÛ[0m [1;30m²
-±±[0m [1;30mÛ[47m²[0m [1;33mþ[0m [36m9px fonts and DOS aspect emulation[37m[30C[1;47;30m²²[0m [1;30mÛ
-ÛÛ[0m [1;30mÛÛ[0m [1;33mþ[0m [36m80x25, 80x50, and Amiga fonts[37m[35C[1;47;30m°°[0m [1;30mÛ
-[47m²²[0m [1;47;30m²²[0m [1;33mþ[0m [36mView files within [1m.ZIP[0;36m and [1m.RAR[0;36m archives automatically[37m[10C[1;47;30m [0m [1;30mÛ
-[47;37mþ[30m [0m [1;47;30m°°[0m [1;33mþ[0m [36mMultiple Zoom levels when viewing and editing[37m[19C[1;47;30m [0m [1;47;30m²[0m
-[1;47;30m±±[0m [1;47;30m [0m [1;33mþ [0;36mMulti-User networking to draw & chat at the same time[37m[11C²² [1;30mÛ
-ÛÛ[0m [1;47m [0m[70C°° [1;30mÛ
-[0m [1;30mÛ[47mÜ[40mÜÜ[0mÜÜ[1;30mÜÜÜÜÜÜÜ[0m[58C[1;30mÜÜÜ[0m [1;30mÛ
-[47mßÛ[0m [1;30mÜÛßßßßßßßßßßß[0m[58C[1;30mß[0mßß[1;47;30m²²[0m
-[1;47;30m±Û[40m±[47mß[37mÜ[40;30m±±[0m [1;30m[[0m [36mInstallation[37m[55C[1;47;30m°°[0m
-°°[1;30mÛ[47m [40mÛ[47m±±[40mÛ±[0m[53C[1;30m°°[0m[5C[1;30m±±ÛÛ[47mßßÛ[37mþ[30mÜ[0m
-[1;30m±±[0m [1;47;30m±±[40m±ÛßßÜß[0m[65C[1;47;30mÛß[40mÜ
-[0m [1;30mÛÛ[0m [1;30m±[0m [1;30mßß[0m[64C[1;30m°[0m [1;47;30mÛÛ[40mÛ
-[0m [1;30m±[0m [1;30m±±[0m [1;30mÛ[0m[67C[1;30m²[0m [1;30m±±±
-[0m [1;30mÛ[0m [1;30mßß[0m[68C[1;30mÛ
-[0m [1;30mÛ[0m [1;30m±[0m [1;36mWindows[0m[60C[1;30mÛ[0m [1;30m±
-[0m [1;30mÛ[0m [1;30mÛ[0m [36mÄÄÄÄÄÄÄ[37m[60C[1;30mÛ[0m [1;30mÛ
-[0m [1;30mÛ[47mßß[0m[5C[36mRun the [1msetup.exe[0;36m file. All pre-requisites will be installed,[37m [1;30mÛ[0m [1;30mÛ
-[0m [1;30mßß[0m[5C[36msuch as .NET 4.0, and file associations will be set up. This [37m [1;30mÛ[47mß[40mÛ
-[0m[9C[36mwill[37m [36madd[37m [36ma[37m [36mshortcut[37m [36mto[37m [36myour[37m [36mstart[37m [36mmenu[37m [36mthat[37m [36myou[37m [36mcan[37m [36muse[37m [36mto[37m [36mlaunch[37m [1;30mßß
-[0m[9C[36mPabloDraw.
-
-[37m[9C[36mPabloDraw[37m [36mwill[37m [36mcheck[37m [36mfor[37m [36mupdates[37m [36mperiodically[37m [36mwhen[37m [36mit[37m [36mruns,[37m [36mand[37m [36moffer
-[37m[9C[36mto[37m [36minstall[37m [36mupdates[37m [36mwhen[37m [36mfound.
-
- [37m[7C[36mAlternatively,[37m [36myou[37m [36mcan[37m [36mdownload[37m [36mthe[37m [36mLinux[37m [36m.zip[37m [36mand[37m [36mcopy[37m [36mthe
-[37m[9C[1;36mPabloDraw.exe[0m [36mfile[37m [36mwherever[37m [36myou[37m [36mwant[37m [36mto[37m [36mrun[37m [36mit[37m [36mfrom.
-
-
-[37m[9C[1;33mRequirements:[0m [36mMicrosoft[37m [36m.NET[37m [36mFramework[37m [36m4.0[37m [36mor[37m [36mgreater.
-
-
-[37m[7C[1;36mMacintosh[0m [1;36mOS[0m [1;36mX
-[0m[7C[36mÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-[37m[9C[36mCopy[37m [36mthe[37m [1;36mPabloDraw.app[0m [36mto[37m [36myour[37m [36mApplications[37m [36mfolder[37m [36mto[37m [36mbe[37m [36mable[37m [36mto
-[37m[9C[36mload[37m [36mknown[37m [36mfile[37m [36mtypes.
-
-[37m[9C[1;33mNote:[0m [36mTo[37m [36muse[37m [36mthe[37m [36mF1,[37m [36mF2,[37m [36metc[37m [36mkeys[37m [36mon[37m [36mOS[37m [36mX[37m [36mwithout[37m [36mhaving[37m [36mto[37m [36mpress
-[37m[15C[36mthe[37m [36mFN[37m [36mkey,[37m [36mchange[37m [36mthe[37m [36msetting[37m [36min[37m [36mSystem[37m [36mPreferences[37m [36m>
-[37m[15C[36mKeyboard[37m [36m>[37m [36mUse[37m [36mall[37m [36mF1,[37m [36mF2,[37m [36metc.[37m [36mkeys[37m [36mas[37m [36mstandard[37m [36mfunction[37m [36mkeys
-
-[37m[15C[36mTo toggle INSERT mode on a Mac keyboard, use FN+Return
-
-[37m[9C[1;33mRequirements:[0m [36mMac[37m [36mOS[37m [36mX[37m [36m10.5[37m [36mor[37m [36mgreater
-
-
-[37m[7C[1;36mLinux
-[0m[7C[36mÄÄÄÄÄ
-[37m[9C[36mCopy[37m [36mthe[37m [36mPabloDraw.exe[37m [36mfile[37m [36mto[37m [36mwherever[37m [36myou[37m [36mwant.[37m [36mRun[37m [36mit[37m [36musing
-[37m[9C[36mthe[37m [36mcommand[37m [36mline[37m [36m(or[37m [36muse[37m [36ma[37m [36mshell[37m [36mscript)[37m [36mthat[37m [36mexecutes:
-
-[37m[9C[36m>[37m [36mmono[37m [36mPabloDraw.exe
-
-[37m[9C[1;33mRequirements:[0m [36mMono[37m [36m2.8[37m [36mor[37m [36mgreater,[37m [36mGTK,[37m [36mand[37m [36mgtk-sharp[37m [36m(if[37m [36myour
-[37m[23C[36mdistro[37m [36mpackages[37m [36mit[37m [36mseparately)
-
-[37m[9C[1;36mUbuntu
-[0m[9C[36mÄÄÄÄÄ-
-
-[1;30m°[0m[8C[36mUbuntu requires mono to be installed, which can be done by[37m[8C[1;30m±±
-[0m [1;30m±±[0m [36minstalling via apt:[37m[47C[1;30mÛÛ[0m [1;30m°
-[0m [1;30mÛÛ[0m[70C[1;30mÛÛ[0m [1;30m²
-±±[0m [1;30mÛ[47m²[0m [36m > apt-get install mono-complete gtk-sharp[37m[19C[36m [37m [1;47;30m²²[0m [1;30mÛ
-ÛÛ[0m [1;30mÛÛ[0m [36m[63C[37m [1;47;30m°°[0m [1;30mÛ
-[47m²²[0m [1;47;30m²²[0m [36m[62C[37m [1;47;30m [0m [1;30mÛ
-[47;37mþ[30m [0m [1;47;30m°°[0m [36m[62C[37m [1;47;30m [0m [1;47;30m²[0m
-[1;47;30m±±[0m [1;47;30m [0m[70C²² [1;30mÛ
-ÛÛ[0m [1;47m [0m[70C°° [1;30mÛ
-[0m [1;30mÛ[47mÜ[40mÜÜ[0mÜÜ[1;30mÜÜÜÜÜÜÜ[0m[58C[1;30mÜÜÜ[0m [1;30mÛ
-[47mßÛ[0m [1;30mÜÛßßßßßßßßßßß[0m[58C[1;30mß[0mßß[1;47;30m²²[0m
-[1;47;30m±Û[40m±[47mß[37mÜ[40;30m±±[0m [1;30m[[0m [36mKeyboard[37m [36mShortcuts[37m[49C[1;47;30m°°[0m
-°°[1;30mÛ[47m [40mÛ[47m±±[40mÛ±[0m[53C[1;30m°°[0m[5C[1;30m±±ÛÛ[47mßßÛ[37mþ[30mÜ[0m
-[1;30m±±[0m [1;47;30m±±[40m±ÛßßÜß[0m[65C[1;47;30mÛß[40mÜ
-[0m [1;30mÛÛ[0m [1;30m±[0m [1;30mßß[0m[64C[1;30m°[0m [1;47;30mÛÛ[40mÛ
-[0m [1;30m±[0m [1;30m±±[0m [1;30mÛ[0m [36mThese[37m [36mkeyboard[37m [36mshortcuts[37m [36mare[37m [36min[37m [36maddition[37m [36mto[37m [36mthe[37m [36mshortcuts[37m[6C[1;30m²
-[0m [1;30mÛ[0m [1;30mßß[0m[5C[36mshown on the menus.[37m[44C[1;30mÛ
-[0m [1;30mÛ[0m [1;30m±[0m[70C[1;30mÛ[0m [1;30m±
-[0m [1;30mÛ[0m [1;30mÛ[0m [1;36mViewing[0m [1;36mMode[0m[55C[1;30mÛ[0m [1;30mÛ
-[0m [1;30mÛ[47mßß[0m [36mÄÄÄÄÄÄÄÄÄÄÄÄ[37m[55C[1;30mÛ[0m [1;30mÛ
-[0m [1;30mßß[0m[5C[36mAlt+Up[37m[9C[36m-[37m [36mPrevious[37m [36mFile[37m[35C[1;30mÛ[47mß[40mÛ
-[0m[9C[36mAlt+Down[37m[7C[36m-[37m [36mNext[37m [36mFile[37m[40C[1;30mßß
-
-
-[0m[7C[1;36mANSI[0m [1;36mEditing
-[0m[7C[36mÄÄÄÄÄÄÄÄÄÄÄÄ
-
-[37m[9C[36mArrows[37m[9C[36m-[37m [36mMove[37m [36mcursor
-[37m[9C[36mShift+Arrows[37m [36m-[37m [36mMove[37m [36mcursor[37m [36m&[37m [36mselect[37m [36mblock
-[37m[9C[36mAlt+B[37m[10C[36m-[37m [36mBegin[37m [36mblock[37m [36mselect
-[37m[9C[36mIns[37m[12C[36m-[37m [36mToggle[37m [36minsert[37m [36mmode[37m [36m(fn+return on OS X)
-[37m[9C[36mAlt+Left[37m[7C[36m-[37m [36mDelete[37m [36mcolumn[37m [36mat[37m [36mcursor
-[37m[9C[36mAlt+Right[37m[6C[36m-[37m [36mInsert[37m [36mcolumn[37m [36mat[37m [36mcursor
-[37m[9C[36mAlt+Up[37m[9C[36m-[37m [36mDelete[37m [36mrow[37m [36mat[37m [36mcursor
-[37m[9C[36mAlt+Down[37m[7C[36m-[37m [36mInsert[37m [36mrow[37m [36mat[37m [36mcursor
-
-[37m[9C[36mCtrl+0-7[37m[7C[36m- Change Foreground colour (again to change brightness)
-[37m[9C[36mAlt+0-7[37m[8C[36m- Change Background colour (again to change brightness)
-
-[37m[9C[36mAlt+U[37m[10C[36m-[37m [36mUse[37m [36mattribute[37m [36munder[37m [36mcursor
-[37m[9C[36mCtrl+Up[37m[8C[36m-[37m [36mPrevious[37m [36mforeground[37m [36mcolor
-[37m [1;30m±±[0m [36mCtrl+Down[37m[6C[36m-[37m [36mNext[37m [36mforeground[37m [36mcolor[37m[28C[1;30m±
-±[0m [1;30mÛÛ[0m [36mCtrl+Left[37m[6C[36m-[37m [36mPrevious[37m [36mbackground[37m [36mcolor[37m[24C[1;30mÛ
-²[0m [1;30mÛÛ[0m [36mCtrl+Right[37m[5C[36m-[37m [36mNext[37m [36mbackground[37m [36mcolor[37m[28C[1;30mÛ±
-Û[0m [1;30mÛÛ[0m[70C[1;30mÛÛ
-Û[0m [1;30mÛ[47m²[0m [36mF1[37m [36m-[37m [36mF10[37m[7C[36m-[37m [36mDraw[37m [36mcharacter[37m [36mfrom[37m [36mcurrent[37m [36mcharacter[37m [36mset[37m[8C[1;30mÛÛ
-Û[0m [1;30mÛÛ[0m [36mAlt+F1[37m [36m-[37m [36mF10[37m [36m-[37m [36mSelect[37m [36mCharacter[37m [36mSets[37m [36m1[37m [36m-[37m [36m10[37m[21C[1;47;30m²[40mÛ
-Û[0m [36m°[1;30mÛ[47m²[0m [36mCtrl+F1[37m [36m-[37m [36mF10[37m [36m-[37m [36mSelect[37m [36mCharacter[37m [36mSets[37m [36m11[37m [36m-[37m [36m20[37m[20C[1;30mÛÛ[0;36m°
-[1;30mÛ[0m [36m±[1;30mÛ[47m°[0m[70C[1;47;30m²²[0m
-[1;47;30m²[0m [36mÛ[1;30mÛ[47;37mÜ[0m [1;30m±±[0m[67C[1;47;30m°°[0;36m°
-[1;47;30m°[0m [1;36mß[30mß[47mÜ[0m [1;30mÛÛ[0m[67C[1;47;30m [0;36m²
-[1;47;30m [40mÜ[47mÛÛÛ[0m [1;47;30m²²[40mÜ[0m [1;30m-[0m [1;30m--[0m [1;30m-[0m[56C[1;30m-[0m [1;47m [46;36mÜ[0m
-[1;47;30mÜÛ±[37mÜÜ[30mß[40mÜÛ[47mÛÛ[40mÛ±[0m [1;36mPablodraw[0m [36mv.3.2 (c) 2013 by Curtis Wensley aka Eto[37m[7C[1;30m±ÛÛ[47mÜÜÛ[40;36mß[30mÜ
-[0m [1;30mÜÜ[47mß[40mÛßß[47mÜ[37mß[40;30mÜ[0m [1;30m-[0m [1;30m--------[0m [1;30m---[0m [1;30m-[0m[40C[1;30m-[0m [1;30m----ßÛ[47mÜ[0m
- [1;30mßßßßÜ[0m [1;30mßß[0m[37C[1;30mansi[0m [1;30mdesign[0m [1;30mby[0m [1;30menzO_27inch[0m [1;30m±[0m [1;30mÛ
-[0m[75C[1;30mÛ[0m [1;30mÛ
-[0m[75C[1;30mÛ[47mß[37mþ[0m
+[0;1;40;30m[0;0;0;0t[1;87;87;87t-- ---------------------------------------------------- ------------------ ----
+[0;36m[0;0;0;0t[1;0;171;171t [1;30m[1;87;87;87t±± ÛÛ ÜÛÛÛÛ± Ü[46m[0;0;171;171tß[40m[0;0;0;0t Ü[47m[0;171;171;171tß[40m[0;0;0;0tÛÜ[47m[0;171;171;171t²[40m[0;0;0;0tÛ ÜÜ ±Û[47m[0;171;171;171tß±±[40m[0;0;0;0tÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ[0m[0;0;0;0t[1;171;171;171t°°[1;30m[1;87;87;87tÛÛ[0m[0;0;0;0t[1;171;171;171t°°°°°°°°°°°°°°
+[36m[1;0;171;171t [1;47;30m[0;171;171;171t[1;87;87;87t²²[40m[0;0;0;0t [47m[0;171;171;171t±±[40m[0;0;0;0t±[0m[0;0;0;0t[1;171;171;171t°°[1;30m[1;87;87;87tß[47m[0;171;171;171t±[40m[0;0;0;0tÛ ±[46m[0;0;171;171t±[36m[1;87;255;255tÛ[40;30m[0;0;0;0t[1;87;87;87t [0m[0;0;0;0t[1;171;171;171t [1;47;30m[0;171;171;171t[1;87;87;87t [37m[1;255;255;255tþ[40;30m[0;0;0;0t[1;87;87;87tßÛ[47m[0;171;171;171t±±[40m[0;0;0;0tÛ±[47m[0;171;171;171t²[40m[0;0;0;0t [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÜÛ
+[0;36m[0;0;0;0t[1;0;171;171t [1;47;30m[0;171;171;171t[1;87;87;87t°°[40m[0;0;0;0t±[47m[0;171;171;171t [40m[0;0;0;0tÛß ±[47m[0;171;171;171tÜ[40m[0;0;0;0tßß ß[46m[0;0;171;171tÜ[40m[0;0;0;0tÜ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tßß ±± [47m[0;171;171;171tÛ[40m[0;0;0;0t ±±[0m[0;0;0;0t[1;171;171;171t [1;36m[1;87;255;255tPablodraw[0;36m[0;0;0;0t[1;0;171;171t v.3.3.0 || [37m[1;171;171;171t [1;36m[1;87;255;255tDocumentation[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171t [37m[1;171;171;171t [1;30m[1;87;87;87t±±
+[0;36m[0;0;0;0t[1;0;171;171t [1;47;37m[0;171;171;171t[1;255;255;255tÜ[30m[1;87;87;87t [40m[0;0;0;0tÛ[47;37m[0;171;171;171t[1;255;255;255tß[30m[1;87;87;87tÜ[0m[0;0;0;0t[1;171;171;171t[6C[1;30m[1;87;87;87tÜ[0m[0;0;0;0t[1;171;171;171t[6C[1;30m[1;87;87;87tßß Ü[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171t [1;30m[1;87;87;87t ± [0m[0;0;0;0t[1;171;171;171t[47C[1;30m[1;87;87;87tÛÛ
+[0;36m[0;0;0;0t[1;0;171;171t [1;47;30m[0;171;171;171t[1;87;87;87tÜ[40m[0;0;0;0tß ß[0;36m[0;0;0;0t[1;0;171;171t [1;30m[1;87;87;87tÜþ[0m[0;0;0;0t[1;171;171;171t[8C[36m[1;0;171;171t±±Û[1;46m[0;0;171;171t[1;87;255;255t±ÛÜ[0;36m[0;0;0;0t[1;0;171;171tÜ[1;30m[1;87;87;87tßÜ [0m[0;0;0;0t[1;171;171;171t[6C[1;30m[1;87;87;87t ±ÛÛÛÛÛ[47m[0;171;171;171tÛÛ[40m[0;0;0;0tÛÛÛÛÛÛÛÛÛÛ[47m[0;171;171;171t²²[40m[0;0;0;0tÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ[47m[0;171;171;171t±±ßß[40m[0;0;0;0tÜ
+[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÜÜ[46m[0;0;171;171tß[40m[0;0;0;0tß ÜÜ[47m[0;171;171;171tß[46m[0;0;171;171tÛ[40m[0;0;0;0t [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t [0;36m[0;0;0;0t[1;0;171;171tß[1;46m[0;0;171;171t[1;87;255;255tß[0;36m[0;0;0;0t[1;0;171;171tÛ±[1;30m[1;87;87;87t [46m[0;0;171;171tÛ[40m[0;0;0;0tÜ [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t ± [0m[0;0;0;0t[1;171;171;171t[26C[1;30m[1;87;87;87t ÜÜ ÜÜ ÜÜÜ ÜÜ
+ Û[46m[0;0;171;171t [36m[1;87;255;255tþ[30m[1;87;87;87t±ÛÛ[47m[0;171;171;171tÜ [40m[0;0;0;0tß [0;36m[0;0;0;0t[1;0;171;171tÜÜ[1;30m[1;87;87;87t [0m[0;0;0;0t[1;171;171;171t[6C[36m[1;0;171;171t±±[1;30m[1;87;87;87t [46m[0;0;171;171t²[40m[0;0;0;0t [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t±Û [0m[0;0;0;0t[1;171;171;171t[12C[32m[1;0;171;0t°[37m[1;171;171;171t[12C[36m[1;0;171;171t [1;30m[1;87;87;87t° [47m[0;171;171;171tÛß[40m[0;0;0;0tÜÛ[47m[0;171;171;171t²²[40m[0;0;0;0tÛ ÛÛ[0m[0;0;0;0t[1;171;171;171t°°[1;30m[1;87;87;87t [47m[0;171;171;171t²²[40m[0;0;0;0t±
+ ßßß [47m[0;171;171;171t²[46m[0;0;171;171tÛ[47m[0;171;171;171t [37m[1;255;255;255tþ[40;30m[0;0;0;0t[1;87;87;87t [0;36m[0;0;0;0t[1;0;171;171tÜÛ[1;30m[1;87;87;87t [0m[0;0;0;0t[1;171;171;171t[9C[1;30m[1;87;87;87t±±Û±[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t±± ± [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÜ[46m[0;0;171;171tß[36m[1;87;255;255tþ[30m[1;87;87;87t±[40m[0;0;0;0t± [0;32m[0;0;0;0t[1;0;171;0t °° [37m[1;171;171;171t [1;30m[1;87;87;87t [46m[0;0;171;171tßß[40m[0;0;0;0tÜ [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t [47m[0;171;171;171tÛ±[40m[0;0;0;0t± [47m[0;171;171;171t±±[40m[0;0;0;0tÛ±Û±Û[47m[0;171;171;171t²[40m[0;0;0;0t°[47m[0;171;171;171t°°[40m[0;0;0;0tÛ
+±ÜÜÜ [46m[0;0;171;171tÛ[40m[0;0;0;0t±[47m[0;171;171;171t±±[40m[0;0;0;0t [0;36m[0;0;0;0t[1;0;171;171t±±[1;30m[1;87;87;87t ±±± ±± [46m[0;0;171;171t±±[40m[0;0;0;0tÛ [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t°°° Û [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tß[46m[0;0;171;171tßß[40m[0;0;0;0tÜ [0;32m[0;0;0;0t[1;0;171;0t ±± [37m[1;171;171;171t [1;30m[1;87;87;87t Ü[46;36m[0;0;171;171t[1;87;255;255tÜ [30m[1;87;87;87t [40m[0;0;0;0t [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t ±± ßßÛ ± [47m[0;171;171;171tÛ°[40m[0;0;0;0t²[47;37m[0;171;171;171t[1;255;255;255tþ[30m[1;87;87;87t ±[0m
+[1;30m[0;0;0;0t[1;87;87;87t Û ± [47m[0;171;171;171t²²[0m[0;0;0;0t[1;171;171;171t[8C[1;47;30m[0;171;171;171t[1;87;87;87tÛ[46m[0;0;171;171t±[40m[0;0;0;0tÛ [46m[0;0;171;171t²²[40m[0;0;0;0tÛ[46;36m[0;0;171;171t[1;87;255;255tþ[30m[1;87;87;87tÜ[40m[0;0;0;0t [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t°[0m[0;0;0;0t[1;171;171;171t[5C[1;30m[1;87;87;87tßÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t±[46;36m[0;0;171;171t[1;87;255;255tÜ[30m[1;87;87;87t [40m[0;0;0;0t [0m[0;0;0;0t[1;171;171;171t[5C[32m[1;0;171;0t° [37m[1;171;171;171t [1;30m[1;87;87;87t ±[46;36m[0;0;171;171t[1;87;255;255t°[30m[1;87;87;87t±°[40m[0;0;0;0t ±[0m[0;0;0;0t[1;171;171;171t[5C[1;47;30m[0;171;171;171t[1;87;87;87t±±[40m[0;0;0;0tÛ Û[47m[0;171;171;171t ±²²[40m[0;0;0;0tÛ
+ ±[0;36m[0;0;0;0t[1;0;171;171t [1;46;30m[0;0;171;171t[1;87;87;87t²[40m[0;0;0;0t ²²[0m[0;0;0;0t[1;171;171;171t[5C[1;30m[1;87;87;87tÜÜÛÛ[46m[0;0;171;171tÜ[40m[0;0;0;0tÛ ±Û[46m[0;0;171;171tß[40m[0;0;0;0tÜß [0m[0;0;0;0t[1;171;171;171t[5C[1;30m[1;87;87;87tßÜ ±[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ[46m[0;0;171;171t ±°[40m[0;0;0;0t [0m[0;0;0;0t[1;171;171;171t[8C[1;30m[1;87;87;87t [46m[0;0;171;171t² [40m[0;0;0;0t±[46m[0;0;171;171t²[40m[0;0;0;0t [46m[0;0;171;171tÛ[40m[0;0;0;0t ÛÛ [47;37m[0;171;171;171t[1;255;255;255t°[30m[1;87;87;87t [40m[0;0;0;0tÛ± ß ±±
+ Û[0;36m[0;0;0;0t[1;0;171;171t [1;46;30m[0;0;171;171t[1;87;87;87t²[40m[0;0;0;0t °° ±[46m[0;0;171;171tÛ²²[40m[0;0;0;0tßßÛ[0m[0;0;0;0t[1;171;171;171tÜÜ[1;30m[1;87;87;87tÜ ß [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t ±[46m[0;0;171;171t±ß[40m[0;0;0;0tÜ ß[46m[0;0;171;171t²[40m[0;0;0;0t [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ[46m[0;0;171;171t±[40m[0;0;0;0t²[46m[0;0;171;171t²[0m[0;0;0;0t[1;171;171;171t[12C[1;47;30m[0;171;171;171t[1;87;87;87tÛ[46m[0;0;171;171t°[40m[0;0;0;0t Û [46m[0;0;171;171t²[40m[0;0;0;0t ±± ßß [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t±ÛÜ
+ °[0;36m[0;0;0;0t[1;0;171;171t [1;30m[1;87;87;87tÛ ° [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t ßßÛÛ ßßß [0m[0;0;0;0t[1;171;171;171t[5C[1;30m[1;87;87;87t Ü[46;36m[0;0;171;171t[1;87;255;255t±Ü[30m[1;87;87;87tß[40m[0;0;0;0t± Û [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ[46m[0;0;171;171tÛ[40m[0;0;0;0t°Û Ü[46m[0;0;171;171tß[40m[0;0;0;0tß[0;36m[0;0;0;0t[1;0;171;171tßß[37m[1;171;171;171t[5C[1;30m[1;87;87;87tÛ[46m[0;0;171;171t²[40m[0;0;0;0t [43m[0;171;87;0t±[40m[0;0;0;0t [46m[0;0;171;171t²[0m[0;0;0;0t[1;171;171;171t[6C[1;30m[1;87;87;87tÜ ßß Ü ß[0m[0;0;0;0t[1;171;171;171t °
+ [1;30m[1;87;87;87t [46m[0;0;171;171t²[40m[0;0;0;0t ² [32m[1;87;255;87t°[30m[1;87;87;87t Üß [43m[0;171;87;0t²²[40m[0;0;0;0t [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t Ü [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t±[47m[0;171;171;171tÛ[46m[0;0;171;171t²[40m[0;0;0;0tß[46m[0;0;171;171t ±°°[40m[0;0;0;0t Û [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ[46m[0;0;171;171t²[40m[0;0;0;0t Û ß[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171t°°°°[37m[1;171;171;171t [1;30m[1;87;87;87tßÜÛÛ[32m[1;87;255;87t°[30m[1;87;87;87tÛ Û[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t ÜßÜ[46m[0;0;171;171tß[36m[1;87;255;255tÜÜ[30m[1;87;87;87t±[47m[0;171;171;171tÛ[40m[0;0;0;0t± Ü
+[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t °Û Û ° ÛÛ ±[43m[0;171;87;0t±±[40m[0;0;0;0t ÜÛ Üß[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t [45m[0;171;0;171tÛ[43m[0;171;87;0tÛ[40m[0;0;0;0t [46m[0;0;171;171t±[40m[0;0;0;0t°[46m[0;0;171;171t²²[40m[0;0;0;0t Û [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ± Û[0m[0;0;0;0t[1;171;171;171t[8C[1;30m[1;87;87;87t±± Û Û [43m[0;171;87;0t±[40m[0;0;0;0t ²[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÜ[47m[0;171;171;171t±[40m[0;0;0;0tÛ[46m[0;0;171;171tß[47m[0;171;171;171tÛ[40m[0;0;0;0tß[0m[0;0;0;0t[1;171;171;171t[8C[1;30m[1;87;87;87tÛÜ
+[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t ±Û [43m[0;171;87;0t±[40m[0;0;0;0t ²[32m[1;87;255;87t °[43;30m[0;171;87;0t[1;87;87;87t±±[40m[0;0;0;0t Û[43;33m[0;171;87;0t[1;255;255;87tÜ[30m[1;87;87;87t [40m[0;0;0;0t [43m[0;171;87;0tÛ±±[40m[0;0;0;0tÜ[43m[0;171;87;0tß[33m[1;255;255;87t°[40;30m[0;0;0;0t[1;87;87;87t [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t [43m[0;171;87;0t²²[40m[0;0;0;0t Û ÛÛ ± [0m[0;0;0;0t[1;171;171;171t [1;43;30m[0;171;87;0t[1;87;87;87t²[40;32m[0;0;0;0t[1;87;255;87t [43;30m[0;171;87;0t[1;87;87;87tÛ[40m[0;0;0;0t ±± Üß ÛÛ [43m[0;171;87;0t²²[40m[0;0;0;0tÛ [43;33m[0;171;87;0t[1;255;255;87t°[40;30m[0;0;0;0t[1;87;87;87t °[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ[47m[0;171;171;171tÛ[40m[0;0;0;0t±ÛÛ [47;37m[0;171;171;171t[1;255;255;255t±Û[40;30m[0;0;0;0t[1;87;87;87t ±±± [43m[0;171;87;0t±±[0m
+[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t Ûß [43m[0;171;87;0t [40m[0;0;0;0t Û[32m[1;87;255;87t ±[43;33m[0;171;87;0t[1;255;255;87tÜ[30m[1;87;87;87t [40m[0;0;0;0t Û[43m[0;171;87;0tÜ[40m[0;0;0;0tß ±[43m[0;171;87;0t±[33m[1;255;255;87tܱ[40;30m[0;0;0;0t[1;87;87;87tÛ[43m[0;171;87;0t±±[40m[0;0;0;0t [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t ±± Û[32m[1;87;255;87t±[43;30m[0;171;87;0t[1;87;87;87t²²[40m[0;0;0;0t [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ[32m[1;87;255;87t± [43;30m[0;171;87;0t[1;87;87;87t²[40m[0;0;0;0t ÛÛ ± [43m[0;171;87;0t±±[40m[0;0;0;0t [43m[0;171;87;0t°°[40m[0;0;0;0t±Û[43;33m[0;171;87;0t[1;255;255;87t±[0m[0;0;0;0t[1;171;171;171te ±[1;43;30m[0;171;87;0t[1;87;87;87t±±[40m[0;0;0;0t [43m[0;171;87;0t²²[40m[0;0;0;0t [47m[0;171;171;171tß[40;37m[0;0;0;0t[1;255;255;255tÜÜ[0m[0;0;0;0t[1;171;171;171tÜ[1;42;30m[0;0;171;0t[1;87;87;87t±±±[40m[0;0;0;0t [43;33m[0;171;87;0t[1;255;255;87t±±[40;30m[0;0;0;0t[1;87;87;87t±
+[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ Ü[43m[0;171;87;0tß[33m[1;255;255;87t±[40;30m[0;0;0;0t[1;87;87;87t±[43m[0;171;87;0t±[40;32m[0;0;0;0t[1;87;255;87t ß[43;30m[0;171;87;0t[1;87;87;87tÜ[40m[0;0;0;0tß ß[43m[0;171;87;0tÜ[40m[0;0;0;0tÛ± ß[43m[0;171;87;0tÜÜ[40m[0;0;0;0t ±± [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t [43m[0;171;87;0t±[40;32m[0;0;0;0t[1;87;255;87t±[43;30m[0;171;87;0t[1;87;87;87t°°[40m[0;0;0;0t± [0m[0;0;0;0t[1;171;171;171t [1;43;30m[0;171;87;0t[1;87;87;87t±[40;32m[0;0;0;0t[1;87;255;87tÛ [30m[1;87;87;87tÛ²[43m[0;171;87;0t±±[0m[0;0;0;0t[1;171;171;171t[5C[1;43;30m[0;171;87;0t[1;87;87;87t [33m[1;255;255;87t±[40;30m[0;0;0;0t[1;87;87;87t [43m[0;171;87;0tÜ[40m[0;0;0;0tÛ Û[43;33m[0;171;87;0t[1;255;255;87tß[40;30m[0;0;0;0t[1;87;87;87t Ü [43m[0;171;87;0t [33m[1;255;255;87tþ[40;30m[0;0;0;0t[1;87;87;87t ±± [0m[0;0;0;0t[1;171;171;171tßßß[1;30m[1;87;87;87t [42;32m[0;0;171;0t[1;87;255;87tÜÜ[0;32m[0;0;0;0t[1;0;171;0tÛ[1;30m[1;87;87;87t [43;33m[0;171;87;0t[1;255;255;87tß[30m[1;87;87;87tÜ[40m[0;0;0;0t±
+[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t± [43m[0;171;87;0t [33m[1;255;255;87t±Û[30m[1;87;87;87t ±[40m[0;0;0;0tÛÛ[43;33m[0;171;87;0t[1;255;255;87t [30m[1;87;87;87tß[40m[0;0;0;0tÜÜ [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t ± ßÜ [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t°°° Ü[43m[0;171;87;0tß[40m[0;0;0;0tÛ[43m[0;171;87;0t [33m[1;255;255;87tÜ[30m[1;87;87;87tß[40m[0;0;0;0t [0m[0;0;0;0t[1;171;171;171t [1;43;33m[0;171;87;0t[1;255;255;87t±[40m[0;0;0;0tß[43;30m[0;171;87;0t[1;87;87;87tß[40m[0;0;0;0tÛÛ[43m[0;171;87;0t [33m[1;255;255;87tÜ[40;30m[0;0;0;0t[1;87;87;87t± ±[43m[0;171;87;0tÜ[33m[1;255;255;87tß[30m[1;87;87;87tÛÜ[40m[0;0;0;0t Ü[0;33m[0;0;0;0t[1;171;87;0tÜ[1;43;30m[0;171;87;0t[1;87;87;87tß[40m[0;0;0;0tÛ[43m[0;171;87;0tÜ[40m[0;0;0;0t ß[43m[0;171;87;0tÜ[40m[0;0;0;0t [0;32m[0;0;0;0t[1;0;171;0t±Û[1;42m[0;0;171;0t[1;87;255;87t ÛÛß[30m[1;87;87;87tÜ[43m[0;171;87;0tß[40m[0;0;0;0tÛß
+[0m[0;0;0;0t[1;171;171;171t [1;43;30m[0;171;87;0t[1;87;87;87tÜÜÜ[40m[0;0;0;0tß [43;33m[0;171;87;0t[1;255;255;87t°[40;30m[0;0;0;0t[1;87;87;87tßß[43m[0;171;87;0tÜ[40m[0;0;0;0t± [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t ßÜ [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tþÜÜ ß ß[43m[0;171;87;0tÜÜ[40m[0;0;0;0t±[0m[0;0;0;0t[1;171;171;171t [1;43;30m[0;171;87;0t[1;87;87;87tÜÜ[40m[0;0;0;0tß ßß[43m[0;171;87;0tÜ[40m[0;0;0;0tÛ[43m[0;171;87;0tÜ[33m[1;255;255;87tßß[30m[1;87;87;87t±[40m[0;0;0;0tÜÛß Û[43m[0;171;87;0tÜ[40m[0;0;0;0tßß Ü ßÜ ßßßßßÜß
+ Ü[0m[0;0;0;0t[1;171;171;171t°°[1;30m[1;87;87;87tßß [43m[0;171;87;0t [40m[0;0;0;0tßþ °° ß Ü[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t ÜþÜ ±[0m[0;0;0;0t[1;171;171;171t[5C[1;30m[1;87;87;87tÜ ßßßß[0m[0;0;0;0t[1;171;171;171t[5C[1;30m[1;87;87;87tÜ[0m[0;0;0;0t[1;171;171;171t°°[1;30m[1;87;87;87tß[0m[0;0;0;0t[1;171;171;171t[9C[1;30m[1;87;87;87tß[43m[0;171;87;0tÜÜ[40m[0;0;0;0t± Ü
+ÜÛ± ßß [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t [43m[0;171;87;0t±[40m[0;0;0;0t ± °²² ° ÜÜ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tßÜ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t ° [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tßßßß ± [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t ß ÜÜÜÜ ß [0m[0;0;0;0t[1;171;171;171t[9C°° [1;30m[1;87;87;87tß ÜÜÜ ÜþzO±
+Û± °²² °[0m[0;0;0;0t[1;171;171;171t [1;43;30m[0;171;87;0t[1;87;87;87t²[40m[0;0;0;0tÜÛ ÛÛ°² ÛÛÛÜ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ ²² ÜÜÜ ±ÛÜÜ ÜÜÜÜÜÜÜÜÜÛÛß ± ²²± [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ ÜÛÛÛ°
+Û ²²²ÛÛ°² ßßÜÛ ÛÛ²Û±±ÛÛÛÜ Û ÛÛÜ Û[47m[0;171;171;171tÛ[0m[0;0;0;0t[1;171;171;171t°°[1;30m[1;87;87;87tÛ± ÜÜÛÛÛÛÛÜ ±ÛÛ[0m[0;0;0;0t[1;171;171;171t°°°[1;30m[1;87;87;87tßßÛÜÜ Û ÛÛ[43m[0;171;87;0t²²[40m[0;0;0;0tÜ ± [0m[0;0;0;0t[1;171;171;171t°[1;30m[1;87;87;87t ÛÛÛÛ²
+Û²ÛÛÛ[43m[0;171;87;0t²²[40m[0;0;0;0t²ÛÛÛÛÛÛ [47m[0;171;171;171t²[40m[0;0;0;0tÛÛ[46m[0;0;171;171t²[40m[0;0;0;0tÛÛÛÛ[0m[0;0;0;0t[1;171;171;171t°°[1;30m[1;87;87;87tÜÛÝÛ[43m[0;171;87;0tß±Û[40m[0;0;0;0tÜÛÛÛÛÜÛÛÛÛ[46m[0;0;171;171t²[40m[0;0;0;0tÛÛÛÛ[0m[0;0;0;0t[1;171;171;171t°°°[1;30m[1;87;87;87tÛÜÜÜÛÛÛÛÛÛÜß ÜÜÛßÛ± ßßÛÛÜÛ[46m[0;0;171;171t²[40m[0;0;0;0tÛÛ
+ÞÛÛßßÛÛÛÛ[46m[0;0;171;171t²²[40m[0;0;0;0tÛÛÛ [47m[0;171;171;171t°[40m[0;0;0;0tÛÛÛ²ÛÛÛßßÛÛÛÛÛÛÛ[43m[0;171;87;0tÜ[40m[0;0;0;0tÛß ÛÛÛ[46m[0;0;171;171t²²[40m[0;0;0;0tÛ ßßÛÛÛÛÛ[0m[0;0;0;0t[1;171;171;171t°[1;30m[1;87;87;87tÛÛÛÛÛÛÛÛ[46m[0;0;171;171t²[40m[0;0;0;0tÛÛÛÛÛ ÜÜ[0m[0;0;0;0t[1;171;171;171t°°[1;30m[1;87;87;87tÛÛÛÛÛÛ
+ÛÛ±Û[43m[0;171;87;0tß[40m[0;0;0;0tÜÛÛÛÛÛÛÛßÜ[47m[0;171;171;171t [40m[0;0;0;0tÛ[46m[0;0;171;171t²²[40m[0;0;0;0t°[47m[0;171;171;171t²[40m[0;0;0;0tÛÛ ±[47m[0;171;171;171tÜ ±[40m[0;0;0;0tÜÛ[47m[0;171;171;171tß[0m[0;0;0;0t[1;171;171;171tÜ[1;30m[1;87;87;87tÜÛÛ[47m[0;171;171;171tß[40m[0;0;0;0t±ÛÛ[46m[0;0;171;171t±±[40m[0;0;0;0tÛÛ ±[47m[0;171;171;171t± ß[40m[0;0;0;0tÜÛßÛÛÛÛ Ü[0m[0;0;0;0t[1;171;171;171tÜÜ[1;30m[1;87;87;87tßÛÛÛÛÛÛÛÜÛ[43m[0;171;87;0t²[40m[0;0;0;0tÛß ±Û[47m[0;171;171;171tÜ[40m[0;0;0;0tÛ
+ÛÛÛÜÜÛÛßÛ[47m[0;171;171;171tß[0m[0;0;0;0t[1;171;171;171tÜ[1;30m[1;87;87;87tÜÛ[43m[0;171;87;0tÛ[47m[0;171;171;171tÜÜ[46m[0;0;171;171tÛÛÛ[40m[0;0;0;0t ÛÛÛÛÛÜßÛ[43m[0;171;87;0tÛ[40m[0;0;0;0tÛ[43m[0;171;87;0tÛÛ[40m[0;0;0;0tÛ[46m[0;0;171;171t²²²[40m[0;0;0;0tßÛ[46m[0;0;171;171t²²[40m[0;0;0;0tÛÛÛÛÛÜÜÛÛ[47m[0;171;171;171tÜ[40m[0;0;0;0tÛÛßÛÛÛÛß[47m[0;171;171;171t±±[43m[0;171;87;0tÛ[40m[0;0;0;0t±ÛÛ[46m[0;0;171;171t²²[40m[0;0;0;0tÛÛÛ±Û[47m[0;171;171;171tß[40m[0;0;0;0t± Û[47m[0;171;171;171tß ß[40m[0;0;0;0tÜ
+Û[46m[0;0;171;171t²²[40m[0;0;0;0tÛßÜ[47m[0;171;171;171tß[40m[0;0;0;0tÛÛ[47m[0;171;171;171tÛ[40m[0;0;0;0tÛÛÛÛÛ±[46m[0;0;171;171t²²²[40m[0;0;0;0t Û[47m[0;171;171;171tÛ²²[40m[0;0;0;0tÛÛ°[46m[0;0;171;171t²²[40m[0;0;0;0tÛ±Û [46m[0;0;171;171t Ü[40m[0;0;0;0t± ÛÛÛßÛÜÜÜÛß[46m[0;0;171;171t²²²²[40m[0;0;0;0t Û[47m[0;171;171;171t²[40m[0;0;0;0tÛ ÛÛÛ ÛÛÛÛÛÛÛ [46m[0;0;171;171t²²²[40m[0;0;0;0t [47m[0;171;171;171t± [37m[1;255;255;255tÛ[30m[1;87;87;87t [0m
+[1;30m[0;0;0;0t[1;87;87;87t ÛÛ ±[46m[0;0;171;171tÛ²²²²[40m[0;0;0;0tÛÛßßß [46m[0;0;171;171t°°°[40m[0;0;0;0tÜßÛÛ[47m[0;171;171;171t±±[40m[0;0;0;0tÛ²[46m[0;0;171;171t°°²[40m[0;0;0;0t Û[47m[0;171;171;171t²[40m[0;0;0;0tÛÜÜÜÜÛßÛ[46m[0;0;171;171t²²²²[40m[0;0;0;0tÛÛ[46m[0;0;171;171t²°°°°Û[40m[0;0;0;0t±ÛÛÛ Û[46m[0;0;171;171t²²[40m[0;0;0;0t ÛÛ ÜÜÛÛ [46m[0;0;171;171t°°°[40m[0;0;0;0t²Û[47m[0;171;171;171tÜ Ü [0m
+[1;30m[0;0;0;0t[1;87;87;87tÛÜ Û[46m[0;0;171;171t²°°°²[40m[0;0;0;0t ÛÛÛ ±[46m[0;0;171;171t ß[40m[0;0;0;0tÛßÛ[47m[0;171;171;171t²²[40m[0;0;0;0tÛ[46m[0;0;171;171t °[40m[0;0;0;0t ÛÛÛÛÛÛß [46m[0;0;171;171tÛ±±±±²ÛÛ[40m[0;0;0;0tß[46;36m[0;0;171;171t[1;87;255;255t°°[30m[1;87;87;87t Û[40m[0;0;0;0tÛÛ[47m[0;171;171;171t²²[40m[0;0;0;0t Û[46m[0;0;171;171t°°ß[40m[0;0;0;0tÜ ß[46m[0;0;171;171tÜ[40m[0;0;0;0tÛÜß [46m[0;0;171;171t [36m[1;87;255;255t° [40;30m[0;0;0;0t[1;87;87;87tÛÛÛß[47m[0;171;171;171tÛÜ[0m
+[1;47;30m[0;171;171;171t[1;87;87;87t±±[40m[0;0;0;0t ±[46m[0;0;171;171t±[36m[1;87;255;255t [30m[1;87;87;87t °ß[0;36m[0;0;0;0t[1;0;171;171tÜ[1;30m[1;87;87;87tÜÜ[46m[0;0;171;171tß [36m[1;87;255;255tþß[30m[1;87;87;87t ±[40m[0;0;0;0t± ÛßÜ[46m[0;0;171;171t [36m[1;87;255;255t±Ü[30m[1;87;87;87tß[40m[0;0;0;0tÜ ÛÛ[47m[0;171;171;171t²²[40m[0;0;0;0t [46m[0;0;171;171t±°°°°[40m[0;0;0;0t ÜÜ [46;36m[0;0;171;171t[1;87;255;255t²²[30m[1;87;87;87t Ü[40m[0;0;0;0tÛßÛ[47m[0;171;171;171t°°[40m[0;0;0;0t ±[46m[0;0;171;171t [36m[1;87;255;255tÜÜ[30m[1;87;87;87t ß[40m[0;0;0;0t±Û[46m[0;0;171;171t± [36m[1;87;255;255t ß [40;30m[0;0;0;0t[1;87;87;87t±ÛÛÛÛß
+[47m[0;171;171;171t ß[40m[0;0;0;0tÜ ±[46m[0;0;171;171t [36m[1;87;255;255tß ÜÜÜ Ü [30m[1;87;87;87tÜ[0;36m[0;0;0;0t[1;0;171;171tß[1;46;30m[0;0;171;171t[1;87;87;87tÜÜÜ[40m[0;0;0;0tßÛÜÜÛ ÛÛß[0;36m[0;0;0;0t[1;0;171;171tß[1;46;30m[0;0;171;171t[1;87;87;87tÜ[40m[0;0;0;0tÛ ÛÛ[47m[0;171;171;171t°°[40m[0;0;0;0tÛÜß[46m[0;0;171;171tÜ [36m[1;87;255;255tÜ [30m[1;87;87;87tß[0;36m[0;0;0;0t[1;0;171;171tÜÜ[1;46;30m[0;0;171;171t[1;87;87;87tß[40;37m[0;0;0;0t[1;255;255;255tÛ[46;36m[0;0;171;171t[1;87;255;255tß[40;30m[0;0;0;0t[1;87;87;87tß [46m[0;0;171;171tÜ[40m[0;0;0;0t± [47m[0;171;171;171tÜ [40m[0;0;0;0tÜ [46m[0;0;171;171tÜ [37m[1;255;255;255t [30m[1;87;87;87t Ü[40m[0;0;0;0tÜß[46m[0;0;171;171tÛÜÛßÜ[40m[0;0;0;0tÛÛÛ[47m[0;171;171;171tÛßÛ[40m[0;0;0;0tÛ
+[47m[0;171;171;171t ß[40m[0;0;0;0tÜÛ[0;36m[0;0;0;0t[1;0;171;171tß[1;46;30m[0;0;171;171t[1;87;87;87tÜ [37m[1;255;255;255tßß[36m[1;87;255;255t [30m[1;87;87;87tÜ[40m[0;0;0;0tßÜ[47m[0;171;171;171tß[40m[0;0;0;0t Ü[47m[0;171;171;171tß ±[40m[0;0;0;0t ÜÛÛÛÜß [47m[0;171;171;171t²Û ±[40m[0;0;0;0tÛÛÜÛ[0;36m[0;0;0;0t[1;0;171;171tß[1;46;30m[0;0;171;171t[1;87;87;87tÜ[36m[1;87;255;255tßßß[30m[1;87;87;87tÜ[0;36m[0;0;0;0t[1;0;171;171tß[1;30m[1;87;87;87tÛÜÛÜÜ [47m[0;171;171;171tÜß[40m[0;0;0;0tÛÜÛßßÜÛ[47m[0;171;171;171t±[40m[0;0;0;0tÛÜ ßßÜ[47m[0;171;171;171tß Ü[40m[0;0;0;0tßß[47m[0;171;171;171t²[0m
+[1;47;30m[0;171;171;171t[1;87;87;87t [37m[1;255;255;255tÜ[30m[1;87;87;87t ±[40m[0;0;0;0tÛÛÛÜ[0m[0;0;0;0t[1;171;171;171tÜÜ[1;47;30m[0;171;171;171t[1;87;87;87tß ßß[37m[1;255;255;255t Ü [30m[1;87;87;87tÜ[40m[0;0;0;0t [47m[0;171;171;171tÛÛß ±[40m[0;0;0;0tÛÛÛ[47m[0;171;171;171tß°[40m[0;0;0;0tÝ[47m[0;171;171;171tÜ ßßÛ[40m[0;0;0;0tÛÛÜÜÜÛÛ[47m[0;171;171;171tß ß ß[40m[0;0;0;0tÜÛÛ[47m[0;171;171;171tÜß[40m[0;0;0;0tÛÛ[47m[0;171;171;171tß[40m[0;0;0;0tÛ[47m[0;171;171;171tÜ[40m[0;0;0;0tßÜÜ[47m[0;171;171;171tß [37m[1;255;255;255t ß[30m[1;87;87;87t [40m[0;0;0;0tÜßß[47m[0;171;171;171t°[0m
+[1;47m[0;171;171;171t[1;255;255;255tÜ[30m[1;87;87;87t [37m[1;255;255;255tßß[30m[1;87;87;87tÜ[40m[0;0;0;0tßÛÜ[47m[0;171;171;171tß [40m[0;0;0;0tÝ[47m[0;171;171;171tß Ü[40m[0;0;0;0tßÜ[47m[0;171;171;171tß[37m[1;255;255;255t°[30m[1;87;87;87t [40m[0;0;0;0tÛ [47m[0;171;171;171tÜ [37m[1;255;255;255tÜ[30m[1;87;87;87t ß[40m[0;0;0;0tÛÛÛÛ[47m[0;171;171;171t ÜÜ ß[40m[0;0;0;0tÜ[47m[0;171;171;171tß [40m[0;0;0;0tÛßÜÛ[47m[0;171;171;171tß [37m[1;255;255;255tßß[30m[1;87;87;87t Ü[40m[0;0;0;0tß[47m[0;171;171;171tÜ ß [0m
+[1;47;30m[0;171;171;171t[1;87;87;87t Ü[40m[0;0;0;0tß [47m[0;171;171;171tß [37m[1;255;255;255t [30m[1;87;87;87t Ü[40m[0;0;0;0tß[47m[0;171;171;171t [37m[1;255;255;255t [36m[1;87;255;255t°°[37m[1;255;255;255t [30m[1;87;87;87t ÜÛ [40m[0;0;0;0tß ±[47m[0;171;171;171t± ß[40m[0;0;0;0tÜß[47m[0;171;171;171tÜ [37m[1;255;255;255tÜ[30m[1;87;87;87t ±[40m[0;0;0;0tÛ[47m[0;171;171;171t± [40m[0;0;0;0t ß[47m[0;171;171;171tÜ[37m[1;255;255;255t ±[30m[1;87;87;87t Ü[40m[0;0;0;0t ±ÛÛßÛÜÜßÛ± ß[47m[0;171;171;171tÜ [37m[1;255;255;255tß[0m
+[1;30m[0;0;0;0t[1;87;87;87t±± ±[47m[0;171;171;171t [37m[1;255;255;255t [30m[1;87;87;87t [40m[0;0;0;0tß ±[47m[0;171;171;171t [37m[1;255;255;255t [30m[1;87;87;87t [40m[0;0;0;0t± [47m[0;171;171;171tÜ[37m[1;255;255;255t þÜ[30m[1;87;87;87t [40m[0;0;0;0t± ß[47m[0;171;171;171tÜ [37m[1;255;255;255t±[30m[1;87;87;87t [40m[0;0;0;0tß± ß[47m[0;171;171;171tÜÜÛ± ß [37m[1;255;255;255tÜÜ[30m[1;87;87;87tß[40m[0;0;0;0t ±[47m[0;171;171;171tÜ[37m[1;255;255;255tßÛÜ[30m[1;87;87;87t [40m[0;0;0;0t ±± Û[0m[0;0;0;0t[1;171;171;171t°°[1;30m[1;87;87;87tÛÛ Ûß Ü[47m[0;171;171;171tßß[0m
+[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t± ß[47m[0;171;171;171tÜ[37m[1;255;255;255tß[30m[1;87;87;87t [40m[0;0;0;0t ±[47m[0;171;171;171t [37m[1;255;255;255tÜÜ ß[30m[1;87;87;87tÜ[40m[0;0;0;0tß ß[0m[0;0;0;0t[1;171;171;171tß[1;47;30m[0;171;171;171t[1;87;87;87tÜ ±[40m[0;0;0;0tÜ ß[47;37m[0;171;171;171t[1;255;255;255tß[30m[1;87;87;87t Ü[40m[0;0;0;0t± ß ÜÜßßß[47m[0;171;171;171tÛÜÜÜÜ[40m[0;0;0;0t Ü ß[0m[0;0;0;0t[1;171;171;171tß[1;47;30m[0;171;171;171t[1;87;87;87tÜ [37m[1;255;255;255tß[30m[1;87;87;87t ß[40m[0;0;0;0tÛ ß[47m[0;171;171;171tÜÜ[40m[0;0;0;0tÛß[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t±[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tß
+±±[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tßÛ ßß ÜÛ[47m[0;171;171;171tÜÜÜÜ[40m[0;0;0;0tß Ü[0m[0;0;0;0t[1;171;171;171t[7C[1;30m[1;87;87;87tßß[0m[0;0;0;0t[1;171;171;171t[5C[1;47;30m[0;171;171;171t[1;87;87;87tÛÛ[40m[0;0;0;0tß[0m[0;0;0;0t[1;171;171;171t[8C[1;30m[1;87;87;87tßßßß[0m[0;0;0;0t[1;171;171;171t[6C[1;30m[1;87;87;87tßÛÜÜß[0m[0;0;0;0t[1;171;171;171tß[1;47;30m[0;171;171;171t[1;87;87;87tÜÛß[0m[0;0;0;0t[1;171;171;171t[8C[1;30m[1;87;87;87t [47m[0;171;171;171t²[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ °
+ÛÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t ßß [0m[0;0;0;0t[1;171;171;171t°°°[1;30m[1;87;87;87tßß Ü[0m[0;0;0;0t[1;171;171;171t[15C[1;30m[1;87;87;87tÜß[0m[0;0;0;0t[1;171;171;171t[18C[1;30m[1;87;87;87t±[0m[0;0;0;0t[1;171;171;171t[5C[1;30m[1;87;87;87tß ßÛ[0m[0;0;0;0t[1;171;171;171t[7C[1;30m[1;87;87;87t [47m[0;171;171;171t²[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ
+[47m[0;171;171;171tß[40m[0;0;0;0tÛ[0m[0;0;0;0t[1;171;171;171t[8C[1;30m[1;87;87;87tÜÜ[47m[0;171;171;171tß[40m[0;0;0;0tÛß[0m[0;0;0;0t[1;171;171;171t[37C[1;30m[1;87;87;87tÛ[0m[0;0;0;0t[1;171;171;171t[7C[1;30m[1;87;87;87tß Ý[0m[0;0;0;0t[1;171;171;171t[6C[1;30m[1;87;87;87t [47m[0;171;171;171tÛ[40m[0;0;0;0tÜÛ
+[47m[0;171;171;171t±[40m[0;0;0;0tÛ[47m[0;171;171;171tÛÛÛÛ[40m[0;0;0;0t±ÜÛ[47m[0;171;171;171tÜÜ[40m[0;0;0;0tÛßßÛÛ[47m[0;171;171;171tÛÛ[40m[0;0;0;0tÛÛÛÛÛ±±[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t°°[0m[0;0;0;0t[1;171;171;171t[23C[1;30m[1;87;87;87tÝ[0m[0;0;0;0t[1;171;171;171t[18C[1;30m[1;87;87;87t ß[47m[0;171;171;171tÜÜ[0m[0;0;0;0t[1;171;171;171t °
+[1;30m[1;87;87;87tÛÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t ÜÛßß[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t ßß[0m[0;0;0;0t[1;171;171;171t[36C[1;30m[1;87;87;87t [0m[0;0;0;0t[1;171;171;171t[25C[1;30m[1;87;87;87t°
+Û[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t ß [0m[0;0;0;0t[1;171;171;171t[10C[1;30m[1;87;87;87t [0m[0;0;0;0t[1;171;171;171t[60C[1;30m[1;87;87;87t°[0m[0;0;0;0t[1;171;171;171t±[1;30m[1;87;87;87t±
+Û [0;36m[0;0;0;0t[1;0;171;171t Welcome to PabloDraw![37m[1;171;171;171t[52C[1;30m[1;87;87;87t±[0m[0;0;0;0t[1;171;171;171t±[1;30m[1;87;87;87t²
+±[0m[0;0;0;0t[1;171;171;171t[75C[1;30m[1;87;87;87tÛ[0m[0;0;0;0t[1;171;171;171tß[1;30m[1;87;87;87tÛ
+ [0;36m[0;0;0;0t[1;0;171;171t [1;30m[1;87;87;87t [ [0;36m[0;0;0;0t[1;0;171;171tAbout[37m[1;171;171;171t[34C[1;30m[1;87;87;87t°°[0m[0;0;0;0t[1;171;171;171t[7C[1;30m[1;87;87;87t±±ÛÛÛÛÛÛÛÛÛÛ²[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t-±ÛÛ[47m[0;171;171;171t±±Ü[40m[0;0;0;0tÛß
+[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171t°°[37m[1;171;171;171t[72C[1;30m[1;87;87;87t ÛÛ
+± [0m[0;0;0;0t[1;171;171;171t[70C[1;30m[1;87;87;87t°°[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛÛ
+Û[0m[0;0;0;0t[1;171;171;171t[6C[36m[1;0;171;171tPabloDraw v3 is a completely re-written update to the PabloDraw[37m[1;171;171;171t[7C[1;30m[1;87;87;87tÛÛ
+[47m[0;171;171;171t²[0m[0;0;0;0t[1;171;171;171t[6C[36m[1;0;171;171tansi editor, bringing cross-platform compatibility and all new[30m[1;0;0;0t [1m[1;87;87;87t ±±[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t±±
+[0m[0;0;0;0t[1;171;171;171t° [1;30m[1;87;87;87t±±[0;30m[0;0;0;0t[1;0;0;0t [36m[1;0;171;171tfeatures[37m[1;171;171;171t[59C[1;30m[1;87;87;87tÛÛ
+ÛÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛÛ[0m[0;0;0;0t[1;171;171;171t[70C[1;30m[1;87;87;87t±±
+±±[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛÛ[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171tPabloDraw now fully supports a native application for Mac OS X
+[37m[1;171;171;171t [1;30m[1;87;87;87t±±[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171tusing Cocoa, Linux using GTK, and Windows using Windows Forms.
+[37m[1;171;171;171t[7C[36m[1;0;171;171tThis provides the best user experience on all platforms.
+
+[37m[1;171;171;171t[7C[36m[1;0;171;171tPabloDraw is now an integrated[37m[1;171;171;171t [1;36m[1;87;255;255tviewer[0;36m[0;0;0;0t[1;0;171;171t and [1m[1;87;255;255teditor[0;36m[0;0;0;0t[1;0;171;171t. PabloDraw
+[37m[1;171;171;171t[7C[36m[1;0;171;171tsupports a multitude of formats for viewing:
+
+[37m[1;171;171;171t[10C[1;33m[1;255;255;87tCharacter Formats:[0;36m[0;0;0;0t[1;0;171;171t ANSI, ADF, ASCII, AVT, BIN, CG, IDF, XBIN,
+[37m[1;171;171;171t[29C[36m[1;0;171;171tTundra, CtrlA, ANSiMation
+
+[37m[1;171;171;171t[10C[1;33m[1;255;255;87tVector Formats:[0;36m[0;0;0;0t[1;0;171;171t RIP
+
+[37m[1;171;171;171t[10C[1;33m[1;255;255;87tImage Formats: [0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171tJPEG, GIF, PNG, TIFF, BMP
+
+[37m[1;171;171;171t[7C[36m[1;0;171;171tCharacter and vector formats can save as any of the image formats,
+[37m[1;171;171;171t[7C[36m[1;0;171;171tproviding easy conversion for viewing on web pages or sharing.
+
+[37m[1;171;171;171t[7C[36m[1;0;171;171tPabloDraw can edit or create character and vector formats, and save as:
+[37m[1;171;171;171t[7C[36m[1;0;171;171t ANSI, ASCII (no colour), BIN, Tundra, CtrlA, XBIN, and RIP.
+
+[37m[1;171;171;171t [1;30m[1;87;87;87t±±[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171tOther features included:[37m[1;171;171;171t[44C[1;30m[1;87;87;87tÛÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t°
+[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛÛ[0m[0;0;0;0t[1;171;171;171t [1;33m[1;255;255;87tþ[0;36m[0;0;0;0t[1;0;171;171t Built-in Sixteencolors.net art browser[37m[1;171;171;171t[26C[1;30m[1;87;87;87tÛÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t²
+±±[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ[47m[0;171;171;171t²[0m[0;0;0;0t[1;171;171;171t [1;33m[1;255;255;87tþ[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171t9px fonts and DOS aspect emulation[37m[1;171;171;171t[30C[1;47;30m[0;171;171;171t[1;87;87;87t²²[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ
+ÛÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛÛ[0m[0;0;0;0t[1;171;171;171t [1;33m[1;255;255;87tþ[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171t80x25, 80x50, and Amiga fonts[37m[1;171;171;171t[35C[1;47;30m[0;171;171;171t[1;87;87;87t°°[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ
+[47m[0;171;171;171t²²[0m[0;0;0;0t[1;171;171;171t [1;47;30m[0;171;171;171t[1;87;87;87t²²[0m[0;0;0;0t[1;171;171;171t [1;33m[1;255;255;87tþ[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171tView files within [1m[1;87;255;255t.ZIP[0;36m[0;0;0;0t[1;0;171;171t and [1m[1;87;255;255t.RAR[0;36m[0;0;0;0t[1;0;171;171t archives automatically[37m[1;171;171;171t[10C[1;47;30m[0;171;171;171t[1;87;87;87t [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ
+[47;37m[0;171;171;171t[1;255;255;255tþ[30m[1;87;87;87t [0m[0;0;0;0t[1;171;171;171t [1;47;30m[0;171;171;171t[1;87;87;87t°°[0m[0;0;0;0t[1;171;171;171t [1;33m[1;255;255;87tþ[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171tMultiple Zoom levels when viewing and editing[37m[1;171;171;171t[19C[1;47;30m[0;171;171;171t[1;87;87;87t [0m[0;0;0;0t[1;171;171;171t [1;47;30m[0;171;171;171t[1;87;87;87t²[0m
+[1;47;30m[0;171;171;171t[1;87;87;87t±±[0m[0;0;0;0t[1;171;171;171t [1;47;30m[0;171;171;171t[1;87;87;87t [0m[0;0;0;0t[1;171;171;171t [1;33m[1;255;255;87tþ [0;36m[0;0;0;0t[1;0;171;171tMulti-User networking to draw & chat at the same time[37m[1;171;171;171t[11C²² [1;30m[1;87;87;87tÛ
+ÛÛ[0m[0;0;0;0t[1;171;171;171t [1;47m[0;171;171;171t[1;255;255;255t [0m[0;0;0;0t[1;171;171;171t[70C°° [1;30m[1;87;87;87tÛ
+[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ[47m[0;171;171;171tÜ[40m[0;0;0;0tÜÜ[0m[0;0;0;0t[1;171;171;171tÜÜ[1;30m[1;87;87;87tÜÜÜÜÜÜÜ[0m[0;0;0;0t[1;171;171;171t[58C[1;30m[1;87;87;87tÜÜÜ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ
+[47m[0;171;171;171tßÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÜÛßßßßßßßßßßß[0m[0;0;0;0t[1;171;171;171t[58C[1;30m[1;87;87;87tß[0m[0;0;0;0t[1;171;171;171tßß[1;47;30m[0;171;171;171t[1;87;87;87t²²[0m
+[1;47;30m[0;171;171;171t[1;87;87;87t±Û[40m[0;0;0;0t±[47m[0;171;171;171tß[37m[1;255;255;255tÜ[40;30m[0;0;0;0t[1;87;87;87t±±[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t[[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171tInstallation[37m[1;171;171;171t[55C[1;47;30m[0;171;171;171t[1;87;87;87t°°[0m
+[0;0;0;0t[1;171;171;171t°°[1;30m[1;87;87;87tÛ[47m[0;171;171;171t [40m[0;0;0;0tÛ[47m[0;171;171;171t±±[40m[0;0;0;0tÛ±[0m[0;0;0;0t[1;171;171;171t[53C[1;30m[1;87;87;87t°°[0m[0;0;0;0t[1;171;171;171t[5C[1;30m[1;87;87;87t±±ÛÛ[47m[0;171;171;171tßßÛ[37m[1;255;255;255tþ[30m[1;87;87;87tÜ[0m
+[1;30m[0;0;0;0t[1;87;87;87t±±[0m[0;0;0;0t[1;171;171;171t [1;47;30m[0;171;171;171t[1;87;87;87t±±[40m[0;0;0;0t±ÛßßÜß[0m[0;0;0;0t[1;171;171;171t[65C[1;47;30m[0;171;171;171t[1;87;87;87tÛß[40m[0;0;0;0tÜ
+[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t±[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tßß[0m[0;0;0;0t[1;171;171;171t[64C[1;30m[1;87;87;87t°[0m[0;0;0;0t[1;171;171;171t [1;47;30m[0;171;171;171t[1;87;87;87tÛÛ[40m[0;0;0;0tÛ
+[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t±[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t±±[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ[0m[0;0;0;0t[1;171;171;171t[67C[1;30m[1;87;87;87t²[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t±±±
+[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tßß[0m[0;0;0;0t[1;171;171;171t[68C[1;30m[1;87;87;87tÛ
+[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t±[0m[0;0;0;0t[1;171;171;171t [1;36m[1;87;255;255tWindows[0m[0;0;0;0t[1;171;171;171t[60C[1;30m[1;87;87;87tÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t±
+[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171tÄÄÄÄÄÄÄ[37m[1;171;171;171t[60C[1;30m[1;87;87;87tÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ
+[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ[47m[0;171;171;171tßß[0m[0;0;0;0t[1;171;171;171t[5C[36m[1;0;171;171tRun [1m[1;87;255;255tPabloDraw.msi[0;36m[0;0;0;0t[1;0;171;171t. All pre-requisites will be installed,[1m[1;87;255;255t[6C[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ
+[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tßß[0m[0;0;0;0t[1;171;171;171t[5C[36m[1;0;171;171tsuch as .NET 4.7, and file associations will be set up. This [37m[1;171;171;171t [1;30m[1;87;87;87tÛ[47m[0;171;171;171tß[40m[0;0;0;0tÛ
+[0m[0;0;0;0t[1;171;171;171t[9C[36m[1;0;171;171twill[37m[1;171;171;171t [36m[1;0;171;171tadd[37m[1;171;171;171t [36m[1;0;171;171ta[37m[1;171;171;171t [36m[1;0;171;171tshortcut[37m[1;171;171;171t [36m[1;0;171;171tto[37m[1;171;171;171t [36m[1;0;171;171tyour[37m[1;171;171;171t [36m[1;0;171;171tstart[37m[1;171;171;171t [36m[1;0;171;171tmenu[37m[1;171;171;171t [36m[1;0;171;171tthat[37m[1;171;171;171t [36m[1;0;171;171tyou[37m[1;171;171;171t [36m[1;0;171;171tcan[37m[1;171;171;171t [36m[1;0;171;171tuse[37m[1;171;171;171t [36m[1;0;171;171tto[37m[1;171;171;171t [36m[1;0;171;171tlaunch[37m[1;171;171;171t [1;30m[1;87;87;87tßß
+[0m[0;0;0;0t[1;171;171;171t[9C[36m[1;0;171;171tPabloDraw.
+
+ [37m[1;171;171;171t[7C[36m[1;0;171;171tAlternatively,[37m[1;171;171;171t [36m[1;0;171;171tyou[37m[1;171;171;171t [36m[1;0;171;171tcan[37m[1;171;171;171t [36m[1;0;171;171tdownload[37m[1;171;171;171t [36m[1;0;171;171tthe[37m[1;171;171;171t [36m[1;0;171;171tLinux[37m[1;171;171;171t [36m[1;0;171;171t.zip[37m[1;171;171;171t [36m[1;0;171;171tand[37m[1;171;171;171t [36m[1;0;171;171tcopy[37m[1;171;171;171t [36m[1;0;171;171tthe
+[37m[1;171;171;171t[9C[1;36m[1;87;255;255tPabloDraw.exe[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171tfile[37m[1;171;171;171t [36m[1;0;171;171twherever[37m[1;171;171;171t [36m[1;0;171;171tyou[37m[1;171;171;171t [36m[1;0;171;171twant[37m[1;171;171;171t [36m[1;0;171;171tto[37m[1;171;171;171t [36m[1;0;171;171trun[37m[1;171;171;171t [36m[1;0;171;171tit[37m[1;171;171;171t [36m[1;0;171;171tfrom.
+
+
+[37m[1;171;171;171t[9C[1;33m[1;255;255;87tRequirements:[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171tMicrosoft[37m[1;171;171;171t [36m[1;0;171;171t.NET[37m[1;171;171;171t [36m[1;0;171;171tFramework[37m[1;171;171;171t [36m[1;0;171;171t4.7[37m[1;171;171;171t [36m[1;0;171;171tor[37m[1;171;171;171t [36m[1;0;171;171tgreater.
+[37m[1;171;171;171t[23C[36m[1;0;171;171tWindows 7, 8.1, or 10
+
+[37m[1;171;171;171t[7C[1;36m[1;87;255;255tMacintosh[0m[0;0;0;0t[1;171;171;171t [1;36m[1;87;255;255tOS[0m[0;0;0;0t[1;171;171;171t [1;36m[1;87;255;255tX
+[0m[0;0;0;0t[1;171;171;171t[7C[36m[1;0;171;171tÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+[37m[1;171;171;171t[9C[36m[1;0;171;171tRun[37m[1;171;171;171t [1;36m[1;87;255;255tPabloDraw.pkg[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171tand run through the wizard to install to your
+[9CApplications folder.
+
+[37m[1;171;171;171t[9C[1;33m[1;255;255;87tNote:[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171tTo[37m[1;171;171;171t [36m[1;0;171;171tuse[37m[1;171;171;171t [36m[1;0;171;171tthe[37m[1;171;171;171t [36m[1;0;171;171tF1,[37m[1;171;171;171t [36m[1;0;171;171tF2,[37m[1;171;171;171t [36m[1;0;171;171tetc[37m[1;171;171;171t [36m[1;0;171;171tkeys[37m[1;171;171;171t [36m[1;0;171;171ton[37m[1;171;171;171t [36m[1;0;171;171tOS[37m[1;171;171;171t [36m[1;0;171;171tX[37m[1;171;171;171t [36m[1;0;171;171twithout[37m[1;171;171;171t [36m[1;0;171;171thaving[37m[1;171;171;171t [36m[1;0;171;171tto[37m[1;171;171;171t [36m[1;0;171;171tpress
+[37m[1;171;171;171t[15C[36m[1;0;171;171tthe[37m[1;171;171;171t [36m[1;0;171;171tFN[37m[1;171;171;171t [36m[1;0;171;171tkey,[37m[1;171;171;171t [36m[1;0;171;171tchange[37m[1;171;171;171t [36m[1;0;171;171tthe[37m[1;171;171;171t [36m[1;0;171;171tsetting[37m[1;171;171;171t [36m[1;0;171;171tin[37m[1;171;171;171t [36m[1;0;171;171tSystem[37m[1;171;171;171t [36m[1;0;171;171tPreferences[37m[1;171;171;171t [36m[1;0;171;171t>
+[37m[1;171;171;171t[15C[36m[1;0;171;171tKeyboard[37m[1;171;171;171t [36m[1;0;171;171t>[37m[1;171;171;171t [36m[1;0;171;171tUse[37m[1;171;171;171t [36m[1;0;171;171tall[37m[1;171;171;171t [36m[1;0;171;171tF1,[37m[1;171;171;171t [36m[1;0;171;171tF2,[37m[1;171;171;171t [36m[1;0;171;171tetc.[37m[1;171;171;171t [36m[1;0;171;171tkeys[37m[1;171;171;171t [36m[1;0;171;171tas[37m[1;171;171;171t [36m[1;0;171;171tstandard[37m[1;171;171;171t [36m[1;0;171;171tfunction[37m[1;171;171;171t [36m[1;0;171;171tkeys
+
+[37m[1;171;171;171t[15C[36m[1;0;171;171tTo toggle INSERT mode on a Mac keyboard, use FN+Return
+
+[37m[1;171;171;171t[9C[1;33m[1;255;255;87tRequirements:[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171tMac[37m[1;171;171;171t [36m[1;0;171;171tOS[37m[1;171;171;171t [36m[1;0;171;171tX[37m[1;171;171;171t [36m[1;0;171;171t10.10[37m[1;171;171;171t [36m[1;0;171;171tor[37m[1;171;171;171t [36m[1;0;171;171tgreater
+
+
+[37m[1;171;171;171t[7C[1;36m[1;87;255;255tLinux
+[0m[0;0;0;0t[1;171;171;171t[7C[36m[1;0;171;171tÄÄÄÄÄ
+[37m[1;171;171;171t[9C[36m[1;0;171;171tCopy[37m[1;171;171;171t [36m[1;0;171;171tthe[37m[1;171;171;171t [36m[1;0;171;171tPabloDraw.exe[37m[1;171;171;171t [36m[1;0;171;171tfile[37m[1;171;171;171t [36m[1;0;171;171tto[37m[1;171;171;171t [36m[1;0;171;171twherever[37m[1;171;171;171t [36m[1;0;171;171tyou[37m[1;171;171;171t [36m[1;0;171;171twant.[37m[1;171;171;171t [36m[1;0;171;171tRun[37m[1;171;171;171t [36m[1;0;171;171tit[37m[1;171;171;171t [36m[1;0;171;171tusing
+[37m[1;171;171;171t[9C[36m[1;0;171;171tthe[37m[1;171;171;171t [36m[1;0;171;171tcommand[37m[1;171;171;171t [36m[1;0;171;171tline[37m[1;171;171;171t [36m[1;0;171;171t(or[37m[1;171;171;171t [36m[1;0;171;171tuse[37m[1;171;171;171t [36m[1;0;171;171ta[37m[1;171;171;171t [36m[1;0;171;171tshell[37m[1;171;171;171t [36m[1;0;171;171tscript)[37m[1;171;171;171t [36m[1;0;171;171tthat[37m[1;171;171;171t [36m[1;0;171;171texecutes:
+
+[37m[1;171;171;171t[9C[36m[1;0;171;171t>[37m[1;171;171;171t [36m[1;0;171;171tmono[37m[1;171;171;171t [36m[1;0;171;171tPabloDraw.exe
+
+[37m[1;171;171;171t[9C[1;33m[1;255;255;87tRequirements:[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171tMono[37m[1;171;171;171t [36m[1;0;171;171t6.0[37m[1;171;171;171t [36m[1;0;171;171tor[37m[1;171;171;171t [36m[1;0;171;171tgreater, GTK+, and gtk-sharp2 (optional)
+
+[23CNote: If your distro does not provide gtk-sharp2,
+[23CPabloDraw will now use GTK+ 3 without any additional
+[23Cdependencies other than mono.
+
+[37m[1;171;171;171t[9C[1;36m[1;87;255;255tUbuntu
+[0m[0;0;0;0t[1;171;171;171t[9C[36m[1;0;171;171tÄÄÄÄÄ-
+
+[1;30m[1;87;87;87t°[0m[0;0;0;0t[1;171;171;171t[8C[36m[1;0;171;171tUbuntu requires mono to be installed, which can be done by[37m[1;171;171;171t[8C[1;30m[1;87;87;87t±±
+[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t±±[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171tinstalling via apt:[37m[1;171;171;171t[47C[1;30m[1;87;87;87tÛÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t°
+[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛÛ[0m[0;0;0;0t[1;171;171;171t[70C[1;30m[1;87;87;87tÛÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t²
+±±[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ[47m[0;171;171;171t²[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171t > apt-get install mono-complete gtk-sharp[37m[1;171;171;171t[19C[36m[1;0;171;171t [37m[1;171;171;171t [1;47;30m[0;171;171;171t[1;87;87;87t²²[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ
+ÛÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛÛ[0m[0;0;0;0t[1;171;171;171t[70C[1;47;30m[0;171;171;171t[1;87;87;87t°°[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ
+[47m[0;171;171;171t²²[0m[0;0;0;0t[1;171;171;171t [1;47;30m[0;171;171;171t[1;87;87;87t²²[0m[0;0;0;0t[1;171;171;171t[70C[1;47;30m[0;171;171;171t[1;87;87;87t [0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ
+[47;37m[0;171;171;171t[1;255;255;255tþ[30m[1;87;87;87t [0m[0;0;0;0t[1;171;171;171t [1;47;30m[0;171;171;171t[1;87;87;87t°°[0m[0;0;0;0t[1;171;171;171t[70C[1;47;30m[0;171;171;171t[1;87;87;87t [0m[0;0;0;0t[1;171;171;171t [1;47;30m[0;171;171;171t[1;87;87;87t²[0m
+[1;47;30m[0;171;171;171t[1;87;87;87t±±[0m[0;0;0;0t[1;171;171;171t [1;47;30m[0;171;171;171t[1;87;87;87t [0m[0;0;0;0t[1;171;171;171t[70C²² [1;30m[1;87;87;87tÛ
+ÛÛ[0m[0;0;0;0t[1;171;171;171t [1;47m[0;171;171;171t[1;255;255;255t [0m[0;0;0;0t[1;171;171;171t[70C°° [1;30m[1;87;87;87tÛ
+[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ[47m[0;171;171;171tÜ[40m[0;0;0;0tÜÜ[0m[0;0;0;0t[1;171;171;171tÜÜ[1;30m[1;87;87;87tÜÜÜÜÜÜÜ[0m[0;0;0;0t[1;171;171;171t[58C[1;30m[1;87;87;87tÜÜÜ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ
+[47m[0;171;171;171tßÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÜÛßßßßßßßßßßß[0m[0;0;0;0t[1;171;171;171t[58C[1;30m[1;87;87;87tß[0m[0;0;0;0t[1;171;171;171tßß[1;47;30m[0;171;171;171t[1;87;87;87t²²[0m
+[1;47;30m[0;171;171;171t[1;87;87;87t±Û[40m[0;0;0;0t±[47m[0;171;171;171tß[37m[1;255;255;255tÜ[40;30m[0;0;0;0t[1;87;87;87t±±[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t[[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171tKeyboard[37m[1;171;171;171t [36m[1;0;171;171tShortcuts[37m[1;171;171;171t[49C[1;47;30m[0;171;171;171t[1;87;87;87t°°[0m
+[0;0;0;0t[1;171;171;171t°°[1;30m[1;87;87;87tÛ[47m[0;171;171;171t [40m[0;0;0;0tÛ[47m[0;171;171;171t±±[40m[0;0;0;0tÛ±[0m[0;0;0;0t[1;171;171;171t[53C[1;30m[1;87;87;87t°°[0m[0;0;0;0t[1;171;171;171t[5C[1;30m[1;87;87;87t±±ÛÛ[47m[0;171;171;171tßßÛ[37m[1;255;255;255tþ[30m[1;87;87;87tÜ[0m
+[1;30m[0;0;0;0t[1;87;87;87t±±[0m[0;0;0;0t[1;171;171;171t [1;47;30m[0;171;171;171t[1;87;87;87t±±[40m[0;0;0;0t±ÛßßÜß[0m[0;0;0;0t[1;171;171;171t[65C[1;47;30m[0;171;171;171t[1;87;87;87tÛß[40m[0;0;0;0tÜ
+[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t±[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tßß[0m[0;0;0;0t[1;171;171;171t[64C[1;30m[1;87;87;87t°[0m[0;0;0;0t[1;171;171;171t [1;47;30m[0;171;171;171t[1;87;87;87tÛÛ[40m[0;0;0;0tÛ
+[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t±[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t±±[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171tThese[37m[1;171;171;171t [36m[1;0;171;171tkeyboard[37m[1;171;171;171t [36m[1;0;171;171tshortcuts[37m[1;171;171;171t [36m[1;0;171;171tare[37m[1;171;171;171t [36m[1;0;171;171tin[37m[1;171;171;171t [36m[1;0;171;171taddition[37m[1;171;171;171t [36m[1;0;171;171tto[37m[1;171;171;171t [36m[1;0;171;171tthe[37m[1;171;171;171t [36m[1;0;171;171tshortcuts[37m[1;171;171;171t[6C[1;30m[1;87;87;87t²
+[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tßß[0m[0;0;0;0t[1;171;171;171t[5C[36m[1;0;171;171tshown on the menus.[37m[1;171;171;171t[44C[1;30m[1;87;87;87tÛ
+[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t±[0m[0;0;0;0t[1;171;171;171t[70C[1;30m[1;87;87;87tÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t±
+[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ[0m[0;0;0;0t[1;171;171;171t [1;36m[1;87;255;255tViewing[0m[0;0;0;0t[1;171;171;171t [1;36m[1;87;255;255tMode[0m[0;0;0;0t[1;171;171;171t[55C[1;30m[1;87;87;87tÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ
+[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ[47m[0;171;171;171tßß[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171tÄÄÄÄÄÄÄÄÄÄÄÄ[37m[1;171;171;171t[55C[1;30m[1;87;87;87tÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ
+[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tßß[0m[0;0;0;0t[1;171;171;171t[5C[36m[1;0;171;171tAlt+Up[37m[1;171;171;171t[9C[36m[1;0;171;171t-[37m[1;171;171;171t [36m[1;0;171;171tPrevious[37m[1;171;171;171t [36m[1;0;171;171tFile[37m[1;171;171;171t[35C[1;30m[1;87;87;87tÛ[47m[0;171;171;171tß[40m[0;0;0;0tÛ
+[0m[0;0;0;0t[1;171;171;171t[9C[36m[1;0;171;171tAlt+Down[37m[1;171;171;171t[7C[36m[1;0;171;171t-[37m[1;171;171;171t [36m[1;0;171;171tNext[37m[1;171;171;171t [36m[1;0;171;171tFile[37m[1;171;171;171t[40C[1;30m[1;87;87;87tßß
+
+
+[0m[0;0;0;0t[1;171;171;171t[7C[1;36m[1;87;255;255tANSI[0m[0;0;0;0t[1;171;171;171t [1;36m[1;87;255;255tEditing
+[0m[0;0;0;0t[1;171;171;171t[7C[36m[1;0;171;171tÄÄÄÄÄÄÄÄÄÄÄÄ
+
+[37m[1;171;171;171t[9C[36m[1;0;171;171tArrows[37m[1;171;171;171t[9C[36m[1;0;171;171t-[37m[1;171;171;171t [36m[1;0;171;171tMove[37m[1;171;171;171t [36m[1;0;171;171tcursor
+[37m[1;171;171;171t[9C[36m[1;0;171;171tShift+Arrows[37m[1;171;171;171t [36m[1;0;171;171t-[37m[1;171;171;171t [36m[1;0;171;171tMove[37m[1;171;171;171t [36m[1;0;171;171tcursor[37m[1;171;171;171t [36m[1;0;171;171t&[37m[1;171;171;171t [36m[1;0;171;171tselect[37m[1;171;171;171t [36m[1;0;171;171tblock
+[37m[1;171;171;171t[9C[36m[1;0;171;171tAlt+B[37m[1;171;171;171t[10C[36m[1;0;171;171t-[37m[1;171;171;171t [36m[1;0;171;171tBegin[37m[1;171;171;171t [36m[1;0;171;171tblock[37m[1;171;171;171t [36m[1;0;171;171tselect
+[37m[1;171;171;171t[9C[36m[1;0;171;171tIns[37m[1;171;171;171t[12C[36m[1;0;171;171t-[37m[1;171;171;171t [36m[1;0;171;171tToggle[37m[1;171;171;171t [36m[1;0;171;171tinsert[37m[1;171;171;171t [36m[1;0;171;171tmode[37m[1;171;171;171t [36m[1;0;171;171t(fn+return on OS X)
+[37m[1;171;171;171t[9C[36m[1;0;171;171tAlt+Left[37m[1;171;171;171t[7C[36m[1;0;171;171t-[37m[1;171;171;171t [36m[1;0;171;171tDelete[37m[1;171;171;171t [36m[1;0;171;171tcolumn[37m[1;171;171;171t [36m[1;0;171;171tat[37m[1;171;171;171t [36m[1;0;171;171tcursor
+[37m[1;171;171;171t[9C[36m[1;0;171;171tAlt+Right[37m[1;171;171;171t[6C[36m[1;0;171;171t-[37m[1;171;171;171t [36m[1;0;171;171tInsert[37m[1;171;171;171t [36m[1;0;171;171tcolumn[37m[1;171;171;171t [36m[1;0;171;171tat[37m[1;171;171;171t [36m[1;0;171;171tcursor
+[37m[1;171;171;171t[9C[36m[1;0;171;171tAlt+Up[37m[1;171;171;171t[9C[36m[1;0;171;171t-[37m[1;171;171;171t [36m[1;0;171;171tDelete[37m[1;171;171;171t [36m[1;0;171;171trow[37m[1;171;171;171t [36m[1;0;171;171tat[37m[1;171;171;171t [36m[1;0;171;171tcursor
+[37m[1;171;171;171t[9C[36m[1;0;171;171tAlt+Down[37m[1;171;171;171t[7C[36m[1;0;171;171t-[37m[1;171;171;171t [36m[1;0;171;171tInsert[37m[1;171;171;171t [36m[1;0;171;171trow[37m[1;171;171;171t [36m[1;0;171;171tat[37m[1;171;171;171t [36m[1;0;171;171tcursor
+
+[37m[1;171;171;171t[9C[36m[1;0;171;171tCtrl+0-7[37m[1;171;171;171t[7C[36m[1;0;171;171t- Change Foreground colour (again to change brightness)
+[37m[1;171;171;171t[9C[36m[1;0;171;171tAlt+0-7[37m[1;171;171;171t[8C[36m[1;0;171;171t- Change Background colour (again to change brightness)
+
+[37m[1;171;171;171t[9C[36m[1;0;171;171tAlt+U[37m[1;171;171;171t[10C[36m[1;0;171;171t-[37m[1;171;171;171t [36m[1;0;171;171tUse[37m[1;171;171;171t [36m[1;0;171;171tattribute[37m[1;171;171;171t [36m[1;0;171;171tunder[37m[1;171;171;171t [36m[1;0;171;171tcursor
+[37m[1;171;171;171t[9C[36m[1;0;171;171tCtrl+Up[37m[1;171;171;171t[8C[36m[1;0;171;171t-[37m[1;171;171;171t [36m[1;0;171;171tPrevious[37m[1;171;171;171t [36m[1;0;171;171tforeground[37m[1;171;171;171t [36m[1;0;171;171tcolor
+[37m[1;171;171;171t [1;30m[1;87;87;87t±±[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171tCtrl+Down[37m[1;171;171;171t[6C[36m[1;0;171;171t-[37m[1;171;171;171t [36m[1;0;171;171tNext[37m[1;171;171;171t [36m[1;0;171;171tforeground[37m[1;171;171;171t [36m[1;0;171;171tcolor[37m[1;171;171;171t[28C[1;30m[1;87;87;87t±
+±[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛÛ[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171tCtrl+Left[37m[1;171;171;171t[6C[36m[1;0;171;171t-[37m[1;171;171;171t [36m[1;0;171;171tPrevious[37m[1;171;171;171t [36m[1;0;171;171tbackground[37m[1;171;171;171t [36m[1;0;171;171tcolor[37m[1;171;171;171t[24C[1;30m[1;87;87;87tÛ
+²[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛÛ[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171tCtrl+Right[37m[1;171;171;171t[5C[36m[1;0;171;171t-[37m[1;171;171;171t [36m[1;0;171;171tNext[37m[1;171;171;171t [36m[1;0;171;171tbackground[37m[1;171;171;171t [36m[1;0;171;171tcolor[37m[1;171;171;171t[28C[1;30m[1;87;87;87tÛ±
+Û[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛÛ[0m[0;0;0;0t[1;171;171;171t[70C[1;30m[1;87;87;87tÛÛ
+Û[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ[47m[0;171;171;171t²[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171tF1[37m[1;171;171;171t [36m[1;0;171;171t-[37m[1;171;171;171t [36m[1;0;171;171tF10[37m[1;171;171;171t[7C[36m[1;0;171;171t-[37m[1;171;171;171t [36m[1;0;171;171tDraw[37m[1;171;171;171t [36m[1;0;171;171tcharacter[37m[1;171;171;171t [36m[1;0;171;171tfrom[37m[1;171;171;171t [36m[1;0;171;171tcurrent[37m[1;171;171;171t [36m[1;0;171;171tcharacter[37m[1;171;171;171t [36m[1;0;171;171tset[37m[1;171;171;171t[8C[1;30m[1;87;87;87tÛÛ
+Û[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛÛ[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171tAlt+F1[37m[1;171;171;171t [36m[1;0;171;171t-[37m[1;171;171;171t [36m[1;0;171;171tF10[37m[1;171;171;171t [36m[1;0;171;171t-[37m[1;171;171;171t [36m[1;0;171;171tSelect[37m[1;171;171;171t [36m[1;0;171;171tCharacter[37m[1;171;171;171t [36m[1;0;171;171tSets[37m[1;171;171;171t [36m[1;0;171;171t1[37m[1;171;171;171t [36m[1;0;171;171t-[37m[1;171;171;171t [36m[1;0;171;171t10[37m[1;171;171;171t[21C[1;47;30m[0;171;171;171t[1;87;87;87t²[40m[0;0;0;0tÛ
+Û[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171t°[1;30m[1;87;87;87tÛ[47m[0;171;171;171t²[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171tCtrl+F1[37m[1;171;171;171t [36m[1;0;171;171t-[37m[1;171;171;171t [36m[1;0;171;171tF10[37m[1;171;171;171t [36m[1;0;171;171t-[37m[1;171;171;171t [36m[1;0;171;171tSelect[37m[1;171;171;171t [36m[1;0;171;171tCharacter[37m[1;171;171;171t [36m[1;0;171;171tSets[37m[1;171;171;171t [36m[1;0;171;171t11[37m[1;171;171;171t [36m[1;0;171;171t-[37m[1;171;171;171t [36m[1;0;171;171t20[37m[1;171;171;171t[20C[1;30m[1;87;87;87tÛÛ[0;36m[0;0;0;0t[1;0;171;171t°
+[1;30m[1;87;87;87tÛ[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171t±[1;30m[1;87;87;87tÛ[47m[0;171;171;171t°[0m[0;0;0;0t[1;171;171;171t[70C[1;47;30m[0;171;171;171t[1;87;87;87t²²[0m
+[1;47;30m[0;171;171;171t[1;87;87;87t²[0m[0;0;0;0t[1;171;171;171t [36m[1;0;171;171tÛ[1;30m[1;87;87;87tÛ[47;37m[0;171;171;171t[1;255;255;255tÜ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t±±[0m[0;0;0;0t[1;171;171;171t[67C[1;47;30m[0;171;171;171t[1;87;87;87t°°[0;36m[0;0;0;0t[1;0;171;171t°
+[1;47;30m[0;171;171;171t[1;87;87;87t°[0m[0;0;0;0t[1;171;171;171t [1;36m[1;87;255;255tß[30m[1;87;87;87tß[47m[0;171;171;171tÜ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛÛ[0m[0;0;0;0t[1;171;171;171t[67C[1;47;30m[0;171;171;171t[1;87;87;87t [0;36m[0;0;0;0t[1;0;171;171t²
+[1;47;30m[0;171;171;171t[1;87;87;87t [40m[0;0;0;0tÜ[47m[0;171;171;171tÛÛÛ[0m[0;0;0;0t[1;171;171;171t [1;47;30m[0;171;171;171t[1;87;87;87t²²[40m[0;0;0;0tÜ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t-[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t--[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t-[0m[0;0;0;0t[1;171;171;171t[56C[1;30m[1;87;87;87t-[0m[0;0;0;0t[1;171;171;171t [1;47m[0;171;171;171t[1;255;255;255t [46;36m[0;0;171;171t[1;87;255;255tÜ[0m
+[1;47;30m[0;171;171;171t[1;87;87;87tÜÛ±[37m[1;255;255;255tÜÜ[30m[1;87;87;87tß[40m[0;0;0;0tÜÛ[47m[0;171;171;171tÛÛ[40m[0;0;0;0tÛ±[0m[0;0;0;0t[1;171;171;171t [1;36m[1;87;255;255tPablodraw[0;36m[0;0;0;0t[1;0;171;171t (c) 2019 by Curtis Wensley aka Eto[6C[37m[1;171;171;171t[7C[1;30m[1;87;87;87t±ÛÛ[47m[0;171;171;171tÜÜÛ[40;36m[0;0;0;0t[1;87;255;255tß[30m[1;87;87;87tÜ
+[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÜÜ[47m[0;171;171;171tß[40m[0;0;0;0tÛßß[47m[0;171;171;171tÜ[37m[1;255;255;255tß[40;30m[0;0;0;0t[1;87;87;87tÜ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t-[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t--------[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t---[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t-[0m[0;0;0;0t[1;171;171;171t[40C[1;30m[1;87;87;87t-[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t----ßÛ[47m[0;171;171;171tÜ[0m
+[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tßßßßÜ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tßß[0m[0;0;0;0t[1;171;171;171t[37C[1;30m[1;87;87;87tansi[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tdesign[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tby[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tenzO_27inch[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87t±[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ
+[0m[0;0;0;0t[1;171;171;171t[75C[1;30m[1;87;87;87tÛ[0m[0;0;0;0t[1;171;171;171t [1;30m[1;87;87;87tÛ
+[0m[0;0;0;0t[1;171;171;171t[75C[1;30m[1;87;87;87tÛ[47m[0;171;171;171tß[37m[1;255;255;255tþ[0m
+SAUCE00 20191113æÜ P À IBM VGA
\ No newline at end of file
diff --git a/Source/macbuild b/Source/macbuild
deleted file mode 100755
index d973ef0..0000000
--- a/Source/macbuild
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/bin/bash
-
-DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-
-APP_NAME=PabloDraw
-CONFIG=Release-MAS
-INPUT_DIR=$DIR/PabloDraw.Mac/bin/$CONFIG
-INPUT_APP_DIR=$INPUT_DIR/$APP_NAME.app
-OUT_DIR=$DIR/deploy
-APP_DIR=$OUT_DIR/$APP_NAME.app
-APP_EXE=$APP_NAME.exe
-APP_PKG=$OUT_DIR/$APP_NAME.pkg
-SRC_DIR=$DIR
-LIB_DIR=$DIR/../Libraries
-FW_DIR=/Library/Frameworks/Mono.framework/Versions/Current
-FWLIB_DIR=$FW_DIR/lib/mono/4.0
-MD_DIR=/Applications/Programs/MonoDevelop.app/Contents/MacOS
-MM_DIR=$MD_DIR/lib/monodevelop/AddIns/MonoDevelop.MonoMac
-APP_CERT="3rd Party Mac Developer Application: Curtis Wensley"
-INSTALLER_CERT="3rd Party Mac Developer Installer: Curtis Wensley"
-ENTITLEMENTS_FILE=$DIR/PabloDraw.Mac/PabloDraw.entitlements
-
-PATH=$MM_DIR:$PATH
-
-mkdir -p "$OUT_DIR"
-rm -rf "$APP_DIR"
-rm -rf "$APP_PKG"
-mkdir -p "$APP_DIR"
-mkdir -p "$APP_DIR/Contents"
-mkdir -p "$APP_DIR/Contents/Resources"
-cp $INPUT_APP_DIR/Contents/Info.plist $APP_DIR/Contents/Info.plist
-cp $INPUT_APP_DIR/Contents/PkgInfo $APP_DIR/Contents/PkgInfo
-cp $INPUT_APP_DIR/Contents/Resources/MainMenu.nib $APP_DIR/Contents/Resources/MainMenu.nib
-cp $INPUT_APP_DIR/Contents/Resources/PabloDraw-Document.icns $APP_DIR/Contents/Resources/PabloDraw-Document.icns
-cp $INPUT_APP_DIR/Contents/Resources/PabloDraw.icns $APP_DIR/Contents/Resources/PabloDraw.icns
-
-/usr/libexec/PlistBuddy $APP_DIR/Contents/Info.plist -c "Add MonoBundleExecutable string $APP_EXE"
-
-#--linksdkonly \
-mmp \
---nolink \
--o "$OUT_DIR" \
--n "$APP_NAME" \
--a "$INPUT_DIR/Pablo.Interface.dll" \
--a "$INPUT_DIR/Pablo.dll" \
--a "$INPUT_DIR/Eto.dll" \
--a "$INPUT_DIR/Eto.Platform.Mac.dll" \
--a "$INPUT_DIR/Lidgren.Network.dll" \
--a "$INPUT_DIR/Mono.Nat.dll" \
--a "$INPUT_DIR/MonoMac.dll" \
--a "$INPUT_DIR/Newtonsoft.Json.dll" \
--a "$INPUT_DIR/SharpCompress.dll" \
--a "$FWLIB_DIR/i18N.dll" \
--a "$FWLIB_DIR/i18N.Rare.dll" \
--a "$FWLIB_DIR/i18N.West.dll" \
--a "$FWLIB_DIR/System.dll" \
--a "$FWLIB_DIR/System.Xml.dll" \
--a "$FWLIB_DIR/System.Core.dll" \
---i18n rare,west \
-"$INPUT_DIR/$APP_EXE"
-
-echo Signing app bundle
-codesign -v -f -s "$APP_CERT" "$APP_DIR/Contents/Resources/libMonoPosixHelper.dylib"
-codesign -v -f -s "$APP_CERT" --entitlements "$ENTITLEMENTS_FILE" "$APP_DIR"
-
-echo Creating installer
-productbuild \
---component "$APP_DIR" \
-/Applications \
---sign "$INSTALLER_CERT" \
-"$APP_PKG"
diff --git a/Source/todo.md b/Source/todo.md
index ae4ec0f..64187d5 100644
--- a/Source/todo.md
+++ b/Source/todo.md
@@ -19,6 +19,7 @@
- Set height same as width
- Optional rulers on the left side and top sides (for wide BIN/XBIN), ala Photoshop
- Persist the 'Enable Backups' setting, and add configuration (limit # of backups?)
+- Limit # of backups - stevemkk
- Loading XBIN doesn't allow changing the aspect setting (should default based on font height??)
- Hot link url's
- Font Editor for XBIN ( & 512 chars?)
@@ -41,6 +42,16 @@
- Pause backscroll during active chat
- Tabbed editing / ability to load multiple pages and switch between them via [Ctrl]+[Tab]
- Open files when dragging them onto the pd window (windows, other)
+- Server options:
+ - Choose which functions/commands can be performed
+ - Choose version to support (disables certain functions) - different list of available functions for different protocols?
+ - Allow users to edit (+V by default, ops can demote)
+ - IRC type functions.. read only, +V to draw +O to op/kick/ban?
+ - Register & list pablo servers globally using web service
+ - Aesthetic- ban user by nick or IP
+
+
+
3.3:
- BUG: BIN saving (or loading?) trims last line
@@ -105,7 +116,16 @@
-
+Support
+-----
+
+ spinsane - first donator, kick ass dude
+ bhaal - cool layout and generally cool guy
+ sinisterx - infamous build 27
+ rad-man - sweet ass ideas, keeping me busy!
+ cleanah - for being patient about the .net version on linux!
+ And everyone in EFNet IRC that got pissed at me because pablo didn't do something
+