diff options
author | Tiago Conceição <Tiago_caza@hotmail.com> | 2020-06-21 01:54:38 +0300 |
---|---|---|
committer | Tiago Conceição <Tiago_caza@hotmail.com> | 2020-06-21 01:54:38 +0300 |
commit | c10bf6cef3511241c31c1240c3717d3c2764092e (patch) | |
tree | dc01e18da14be0347c15f45bd945f0bf9ea730f8 | |
parent | fc73f2ff7546f3f66ec4ada7b975534487001fac (diff) |
v0.5.2.1v0.5.2.1
* (Add) cws: Allow change layer PWM value
* (Update) Dependency ImageSharp from 1.0.0-rc0002 to 1.0.0-rc0003 (It fix a error on resize function)
* (Fix) cws: GCode 0 before G29
* (Fix) Phrozen Sonic Mini: Display Height from 66.04 to 68.04
* (Fix) Zortrax Inkspire: Display and Volume to 74.67x132.88
* (Fix) Layer repair tool allow operation when every repair checkbox is deselected
26 files changed, 1570 insertions, 30 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index b2e9d83..8eb7ced 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## 20/06/2020 - v0.5.2.1 + +* (Add) cws: Allow change layer PWM value +* (Update) Dependency ImageSharp from 1.0.0-rc0002 to 1.0.0-rc0003 (It fix a error on resize function) +* (Fix) cws: GCode 0 before G29 +* (Fix) Phrozen Sonic Mini: Display Height from 66.04 to 68.04 +* (Fix) Zortrax Inkspire: Display and Volume to 74.67x132.88 +* (Fix) Layer repair tool allow operation when every repair checkbox is deselected + ## 19/06/2020 - v0.5.2 * (Add) Resin Trap issue validator and repairer - Experimental Feature (#3) diff --git a/CreateRelease.ps1 b/CreateRelease.ps1 new file mode 100644 index 0000000..7bffc42 --- /dev/null +++ b/CreateRelease.ps1 @@ -0,0 +1,7 @@ +cd $PSScriptRoot +$version = (Get-Command UVtools.GUI\bin\Release\UVtools.Parser.dll).FileVersionInfo.ProductVersion + +Add-Type -A System.IO.Compression.FileSystem +[IO.Compression.ZipFile]::CreateFromDirectory("$PSScriptRoot\UVtools.GUI\bin\Release", "$PSScriptRoot\UVtools.GUI\bin\UVtools_v$version.zip") + +Copy-Item "$PSScriptRoot\UVtools.Installer\bin\Release\UVtools.msi" -Destination "$PSScriptRoot\UVtools.GUI\bin\UVtools_v$version.msi"
\ No newline at end of file diff --git a/PrusaSlicer/printer/Phrozen Sonic Mini.ini b/PrusaSlicer/printer/Phrozen Sonic Mini.ini index c3f71a0..3cd5088 100644 --- a/PrusaSlicer/printer/Phrozen Sonic Mini.ini +++ b/PrusaSlicer/printer/Phrozen Sonic Mini.ini @@ -1,12 +1,12 @@ -# generated by PrusaSlicer 2.2.0+win64 on 2020-06-12 at 00:36:09 UTC +# generated by PrusaSlicer 2.2.0+win64 on 2020-06-20 at 15:15:00 UTC absolute_correction = 0 area_fill = 50 bed_custom_model = bed_custom_texture = -bed_shape = 0x0,120x0,120x66,0x66 +bed_shape = 0x0,120.96x0,120.96x68.04,0x68.04 default_sla_material_profile = Prusa Orange Tough 0.05 default_sla_print_profile = 0.05 Normal -display_height = 66.04 +display_height = 68.04 display_mirror_x = 0 display_mirror_y = 0 display_orientation = portrait diff --git a/PrusaSlicer/printer/Zortrax Inkspire.ini b/PrusaSlicer/printer/Zortrax Inkspire.ini index 84e93ac..a999a68 100644 --- a/PrusaSlicer/printer/Zortrax Inkspire.ini +++ b/PrusaSlicer/printer/Zortrax Inkspire.ini @@ -1,18 +1,18 @@ -# generated by PrusaSlicer 2.2.0+win64 on 2020-06-12 at 00:42:42 UTC +# generated by PrusaSlicer 2.2.0+win64 on 2020-06-20 at 15:23:41 UTC absolute_correction = 0 area_fill = 50 bed_custom_model = bed_custom_texture = -bed_shape = 0x0,115x0,115x65,0x65 +bed_shape = 0x0,132.88x0,132.88x74.67,0x74.67 default_sla_material_profile = Prusa Orange Tough 0.05 default_sla_print_profile = 0.05 Normal -display_height = 74 +display_height = 74.67 display_mirror_x = 1 display_mirror_y = 0 display_orientation = portrait display_pixels_x = 2560 display_pixels_y = 1440 -display_width = 132 +display_width = 132.88 elefant_foot_compensation = 0.2 elefant_foot_min_width = 0.2 fast_tilt_time = 5 diff --git a/UVtools.GUI/Forms/FrmRepairLayers.cs b/UVtools.GUI/Forms/FrmRepairLayers.cs index 3e197e0..e4bcc24 100644 --- a/UVtools.GUI/Forms/FrmRepairLayers.cs +++ b/UVtools.GUI/Forms/FrmRepairLayers.cs @@ -161,7 +161,7 @@ namespace UVtools.GUI.Forms return; } - if (!cbRepairIslands.Enabled && !cbRepairResinTraps.Enabled) + if (!RepairIslands && !RepairResinTraps) { MessageBox.Show("You must select at least one repair operation.", Text, MessageBoxButtons.OK, MessageBoxIcon.Error); return; diff --git a/UVtools.GUI/FrmMain.cs b/UVtools.GUI/FrmMain.cs index 3cc5222..feb9a91 100644 --- a/UVtools.GUI/FrmMain.cs +++ b/UVtools.GUI/FrmMain.cs @@ -1720,19 +1720,25 @@ namespace UVtools.GUI #if DEBUG greyscale = greyscale.ThresholdBinary(new Gray(254), new Gray(255)); VectorOfVectorOfPoint contours = new VectorOfVectorOfPoint(); - Mat external = new Mat(); + Mat hierarchy = new Mat(); - CvInvoke.FindContours(greyscale, contours, external, RetrType.Ccomp, ChainApproxMethod.ChainApproxSimple); + CvInvoke.FindContours(greyscale, contours, hierarchy, RetrType.Ccomp, ChainApproxMethod.ChainApproxSimple); - var arr = external.GetData(); + /* + * hierarchy[i][0]: the index of the next contour of the same level + * hierarchy[i][1]: the index of the previous contour of the same level + * hierarchy[i][2]: the index of the first child + * hierarchy[i][3]: the index of the parent + */ + var arr = hierarchy.GetData(); for (int i = 0; i < contours.Size; i++) { - if ((int)arr.GetValue(0, i, 2) != -1 || (int)arr.GetValue(0, i, 3) == -1) continue; + if ((int)arr.GetValue(0, i, 3) >= 0) continue; var r = CvInvoke.BoundingRectangle(contours[i]); - CvInvoke.Rectangle(greyscale, r, new MCvScalar(80), 3); + CvInvoke.Rectangle(greyscale, r, new MCvScalar(80), 2); greyscale.Draw(contours, i, new Gray(125), -1); - + } #else diff --git a/UVtools.GUI/Properties/AssemblyInfo.cs b/UVtools.GUI/Properties/AssemblyInfo.cs index 2e37d79..638ed25 100644 --- a/UVtools.GUI/Properties/AssemblyInfo.cs +++ b/UVtools.GUI/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.5.2.0")] -[assembly: AssemblyFileVersion("0.5.2.0")] +[assembly: AssemblyVersion("0.5.2.1")] +[assembly: AssemblyFileVersion("0.5.2.1")] diff --git a/UVtools.GUI/UVtools.GUI.csproj b/UVtools.GUI/UVtools.GUI.csproj index 79782a2..85ed9ec 100644 --- a/UVtools.GUI/UVtools.GUI.csproj +++ b/UVtools.GUI/UVtools.GUI.csproj @@ -82,7 +82,7 @@ <HintPath>..\packages\SixLabors.Core.1.0.0-beta0008\lib\netstandard2.0\SixLabors.Core.dll</HintPath> </Reference> <Reference Include="SixLabors.ImageSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d998eea7b14cab13, processorArchitecture=MSIL"> - <HintPath>..\packages\SixLabors.ImageSharp.1.0.0-rc0002\lib\net472\SixLabors.ImageSharp.dll</HintPath> + <HintPath>..\packages\SixLabors.ImageSharp.1.0.0-rc0003\lib\net472\SixLabors.ImageSharp.dll</HintPath> </Reference> <Reference Include="System" /> <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"> @@ -239,12 +239,15 @@ </Compile> <None Include="..\CHANGELOG.md"> <Link>CHANGELOG.md</Link> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> <None Include="..\CREDITS.md"> <Link>CREDITS.md</Link> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> <None Include="..\LICENSE"> <Link>LICENSE</Link> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> <None Include="..\README.md"> <Link>README.md</Link> @@ -341,8 +344,7 @@ <ItemGroup /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <PropertyGroup> - <PostBuildEvent>xcopy /y /d $(ProjectDir)..\LICENSE $(ProjectDir)$(OutDir) -xcopy /i /y /d /s $(ProjectDir)..\PrusaSlicer $(ProjectDir)$(OutDir)\PrusaSlicer</PostBuildEvent> + <PostBuildEvent>xcopy /i /y /d /s $(ProjectDir)..\PrusaSlicer $(ProjectDir)$(OutDir)\PrusaSlicer</PostBuildEvent> </PropertyGroup> <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> <PropertyGroup> diff --git a/UVtools.GUI/packages.config b/UVtools.GUI/packages.config index 23c9723..cb4f1af 100644 --- a/UVtools.GUI/packages.config +++ b/UVtools.GUI/packages.config @@ -7,7 +7,7 @@ <package id="Microsoft.Net.Compilers.Toolset" version="3.7.0-2.final" targetFramework="net48" developmentDependency="true" /> <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net48" /> <package id="SixLabors.Core" version="1.0.0-beta0008" targetFramework="net48" /> - <package id="SixLabors.ImageSharp" version="1.0.0-rc0002" targetFramework="net48" /> + <package id="SixLabors.ImageSharp" version="1.0.0-rc0003" targetFramework="net48" /> <package id="System.Buffers" version="4.5.1" targetFramework="net48" /> <package id="System.Collections" version="4.3.0" targetFramework="net48" /> <package id="System.IO" version="4.3.0" targetFramework="net48" /> diff --git a/UVtools.Installer/Code/Features.wxs b/UVtools.Installer/Code/Features.wxs new file mode 100644 index 0000000..a0c923f --- /dev/null +++ b/UVtools.Installer/Code/Features.wxs @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> + <Fragment> + <Directory Id="TARGETDIR" Name="SourceDir"> + <Directory Id="ProgramFilesFolder"> + <Directory Id="INSTALLLOCATION" Name="UVtools"> + <Merge Id="UVtools" SourceFile="$(var.UVtools.InstallerMM.TargetPath)" DiskId="1" Language="1033" /> + </Directory> + </Directory> + </Directory> + <Feature Id="UVtools" Title="UVtools" Description="Installs all the files needed for UVtools" Level="1" AllowAdvertise="no" ConfigurableDirectory="INSTALLLOCATION"> + <MergeRef Id="UVtools" /> + <!-- Uncomment the below line to pull in IIS Metadata. Otherwise delete if not needed --> + <!--<ComponentGroupRef Id="webSite" />--> + </Feature> + </Fragment> +</Wix>
\ No newline at end of file diff --git a/UVtools.Installer/Code/IISMeta.wxs b/UVtools.Installer/Code/IISMeta.wxs new file mode 100644 index 0000000..6126b81 --- /dev/null +++ b/UVtools.Installer/Code/IISMeta.wxs @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8"?> +<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension"> + <Fragment> + + <ComponentGroup Id="webSite"> + <ComponentRef Id="webSite" /> + </ComponentGroup> + + <PropertyRef Id="NETFRAMEWORK45" /> + <PropertyRef Id="IISMAJORVERSION" /> + <Property Id="ASPNETINSTALLED"> + <RegistrySearch Id="findASPNETINSTALLED" Root="HKLM" Key="SOFTWARE\Microsoft\InetStp\Components" Name="ASPNET" Type="raw" /> + </Property> + <Condition Message="[ProductName] requires Microsoft .NET Framework 4.5.">Installed OR NETFRAMEWORK45</Condition> + <Condition Message="[ProductName] requires Microsoft IIS">Installed OR IISMAJORVERSION</Condition> + <Condition Message="[ProductName] requires the ASP.NET role service for IIS">Installed OR ASPNETINSTALLED="#1"</Condition> + + <DirectoryRef Id="INSTALLLOCATION"> + <Directory Id="webSite" Name="WebSite"> + <Component Id="webSite" Guid="b118a1b9-8c4e-44b3-bf42-1501163c8bee" KeyPath="yes"> + <iis:WebAppPool Id="webSite" Name="UVtools.Installer" Identity="applicationPoolIdentity" ManagedRuntimeVersion="v4.0" ManagedPipelineMode="Integrated"/> + <iis:WebSite Id="webSite" SiteId="*" Description="UVtools.Installer Web Site" Directory="webSite" ConfigureIfExists="no"> + <iis:WebAddress Id="webSite" Port="8080" /> + <iis:WebDirProperties Id="webSite" AnonymousAccess="yes" WindowsAuthentication="no" /> + <iis:WebApplication Id="webSite" WebAppPool="webSite" Name="webSite" /> + </iis:WebSite> + </Component> + </Directory> + </DirectoryRef> + + </Fragment> +</Wix>
\ No newline at end of file diff --git a/UVtools.Installer/Code/Product.wxs b/UVtools.Installer/Code/Product.wxs new file mode 100644 index 0000000..9425f4e --- /dev/null +++ b/UVtools.Installer/Code/Product.wxs @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> +<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> + <!-- + MSIProductVersion is defined in UVtools.Installer.wixproj as 0.0.1 for local desktop builds. + You should pass in the MSBuild Property 'MSIProductVersion' to override it during an automated build. + See http://msdn.microsoft.com/en-us/library/windows/desktop/aa370859%28v=vs.85%29.aspx for information on allowable values. + + The Product@Id attribute (ProductCode Property) will be a random GUID for each build. This is to support "Major Upgrades" where each install + is a seamless uninstall/reinstall. + --> + <Product Id="*" Name="UVtools" Language="1033" Version="$(var.MSIProductVersion)" Manufacturer="PTRTECH" UpgradeCode="1ea6d212-15c0-425e-b2ec-4b6c60817552"> + <Package InstallerVersion="301" Compressed="yes" InstallScope="perMachine" /> + <MediaTemplate EmbedCab="yes" /> + <!-- Major Upgrade Rule to disallow downgrades --> + <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> + <!--Common Launch Condition--> + <!-- Examples at http://wixtoolset.org/documentation/manual/v3/customactions/wixnetfxextension.html --> + <PropertyRef Id="NETFRAMEWORK45" /> + <Condition Message="[ProductName] requires .NET Framework 4.8.">Installed OR NETFRAMEWORK45</Condition> + <!-- Include User Interface Experience --> + <Icon Id="Icon.ico" SourceFile="..\UVtools.GUI\UVtools.ico" /> + <Property Id="ARPPRODUCTICON" Value="Icon.ico"></Property> + <UIRef Id="UI" /> + <!-- Include Features and Directories Fragment --> + <DirectoryRef Id="INSTALLLOCATION" /> + </Product> +</Wix>
\ No newline at end of file diff --git a/UVtools.Installer/Code/UI-CustomDialog.wxs b/UVtools.Installer/Code/UI-CustomDialog.wxs new file mode 100644 index 0000000..1a9cfc3 --- /dev/null +++ b/UVtools.Installer/Code/UI-CustomDialog.wxs @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> + <Fragment> + <UI Id="CustomDlg"> + <Dialog Id="CustomDlg" Height="270" Width="370" Title="[ProductName] Setup"> + + <!-- Header --> + <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" Text="WixUI_Bmp_Banner"/> + <Control Id="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Text="{\WixUI_Font_Title}Custom Dialog" Transparent="yes"/> + <Control Id="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Text="Place your custom description here" Transparent="yes"/> + <Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="0"/> + + <!-- Body --> + <Control Id="CustomLabel" Type="Text" X="20" Y="60" Width="290" Height="15" Text="Customer:" TabSkip="yes"/> + <Control Id="Custom" Type="Edit" X="20" Y="80" Width="320" Height="18" Property="CUSTOM"/> + + + <!-- Footer --> + <Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0"/> + <Control Id="Next" Type="PushButton" Text="&Next" TabSkip="no" Default="yes" Height="17" Width="56" X="236" Y="243"> + <Publish Event="NewDialog" Value="CustomizeDlg"/> + </Control> + <Control Id="Cancel" Type="PushButton" Text="Cancel" TabSkip="no" Height="17" Width="56" X="304" Y="243" Cancel="yes"> + <Publish Event="SpawnDialog" Value="CancelDlg"/> + </Control> + <Control Id="Back" Type="PushButton" Text="&Back" TabSkip="no" Height="17" Width="56" X="180" Y="243"> + <Publish Event="NewDialog" Value="LicenseAgreementDlg"/> + </Control> + + </Dialog> + + <!-- Insert into dialog sequencing by inserting control events on previous and next dialogs--> + <Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="CustomDlg">1</Publish> + <Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="CustomDlg" Order="3">NOT Installed</Publish> + + </UI> + + <!-- Make Property a SecureCustom Property--> + <Property Id="CUSTOM" Secure="yes"/> + + <!-- Note: You must author a registry component somewhere in your installer to persist the property for later retrieval + Example: + ... + <Component Id='RememberCustom' Guid='{????????-????-????-????-????????????}' KeyPath='yes' Permanent='yes'> + <RegistryValue Root='HKLM' Key='SOFTWARE\CompanyName\ProductName' Name='Custom' Type='string' Value='[CUSTOM]'/> + </Component> + ... + --> + + <!-- Attempt to retrieve previously persisted property --> + <Property Id='FINDCUSTOM' Secure='yes'> + <RegistrySearch Id='CustomerNumber' Root='HKLM' + Key='SOFTWARE\CompanyName\ProductName' + Name='Custom' Type='raw' /> + </Property> + + <!-- Assign default value if retrieval failed --> + <SetProperty Id='FINDCUSTOM' Value='default value' After='AppSearch' Sequence='first'>Not FINDCUSTOM</SetProperty> + + <!-- Assign retrieved / defaulted value to actual property if it doesn't already have a value --> + <SetProperty Id='CUSTOM' Value='[FINDCUSTOM]' After='SetFINDCUSTOM' Sequence='first'>Not CUSTOM</SetProperty> + + </Fragment> +</Wix>
\ No newline at end of file diff --git a/UVtools.Installer/Code/UI.wxs b/UVtools.Installer/Code/UI.wxs new file mode 100644 index 0000000..6bafab2 --- /dev/null +++ b/UVtools.Installer/Code/UI.wxs @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> + <Fragment> + <UI Id="UI"> + + <!-- See http://wix.sourceforge.net/manual-wix3/WixUI_index.htm for more information--> + <UIRef Id="WixUI_FeatureTree"/> + + <!--Uncomment to inject a custom dialog into the install wizard loop --> + <!--<UIRef Id="CustomDlg"/>--> + + </UI> + </Fragment> +</Wix>
\ No newline at end of file diff --git a/UVtools.Installer/Resources/Banner.jpg b/UVtools.Installer/Resources/Banner.jpg Binary files differnew file mode 100644 index 0000000..743dbff --- /dev/null +++ b/UVtools.Installer/Resources/Banner.jpg diff --git a/UVtools.Installer/Resources/Dialog.jpg b/UVtools.Installer/Resources/Dialog.jpg Binary files differnew file mode 100644 index 0000000..0b8f2d0 --- /dev/null +++ b/UVtools.Installer/Resources/Dialog.jpg diff --git a/UVtools.Installer/Resources/EULA.rtf b/UVtools.Installer/Resources/EULA.rtf new file mode 100644 index 0000000..7f62333 --- /dev/null +++ b/UVtools.Installer/Resources/EULA.rtf @@ -0,0 +1,868 @@ +{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi31507\deflang2070\deflangfe2070\themelang2070\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} +{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0302020204030204}Calibri Light;} +{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;} +{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f43\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f44\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\f46\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f47\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f48\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f49\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\f50\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f51\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f53\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\f54\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;} +{\f56\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f57\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f58\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f59\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);} +{\f60\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f61\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f413\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f414\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;} +{\f416\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f417\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\f418\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\f419\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);} +{\f420\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f421\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} +{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} +{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} +{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;}{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;} +{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}{\fhimajor\f31533\fbidi \fswiss\fcharset177\fprq2 Calibri Light (Hebrew);}{\fhimajor\f31534\fbidi \fswiss\fcharset178\fprq2 Calibri Light (Arabic);} +{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} +{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} +{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} +{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} +{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;} +{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;} +{\fhiminor\f31573\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\fhiminor\f31574\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;} +{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}} +{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0; +\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red0\green0\blue0;\red0\green0\blue0;}{\*\defchp \fs22\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap +\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 +\af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang2070\langfe2070\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp2070\langfenp2070 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\* +\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa160\sl259\slmult1 +\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang2070\langfe2070\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp2070\langfenp2070 \snext11 \ssemihidden \sunhideused +Normal Table;}}{\*\rsidtbl \rsid11478430\rsid12386343}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator Tiago Concei\'e7\'e3o} +{\creatim\yr2020\mo6\dy20\hr22\min43}{\revtim\yr2020\mo6\dy20\hr22\min44}{\version2}{\edmins1}{\nofpages21}{\nofwords5394}{\nofchars29129}{\nofcharsws34455}{\vern1}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}} +\paperw12240\paperh15840\margl1701\margr1701\margt1417\margb1417\gutter0\ltrsect +\widowctrl\ftnbj\aenddoc\hyphhotz425\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120 +\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale300\rsidroot12386343 \nouicompat \fet0{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1 +\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5 +\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang +{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid12386343 \rtlch\fcs1 +\af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang2070\langfe2070\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp2070\langfenp2070 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\lang1033\langfe2070\langnp1033\insrsid12386343\charrsid12386343 +\hich\af1\dbch\af31505\loch\f1 GNU AFFERO GENERAL PUBLIC LICENSE +\par \hich\af1\dbch\af31505\loch\f1 Version 3, 19 November 2007 +\par +\par \hich\af1\dbch\af31505\loch\f1 Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> +\par \hich\af1\dbch\af31505\loch\f1 Everyone is permitted to copy and distribute verbatim copies +\par \hich\af1\dbch\af31505\loch\f1 of this license document, but changing it is not allowed. +\par +\par \hich\af1\dbch\af31505\loch\f1 Preamble +\par +\par \hich\af1\dbch\af31505\loch\f1 The GNU Affero General Public License is a free, copyleft license for +\par \hich\af1\dbch\af31505\loch\f1 software and other kinds\hich\af1\dbch\af31505\loch\f1 of works, specifically designed to ensure +\par \hich\af1\dbch\af31505\loch\f1 cooperation with the community in the case of network server software. +\par +\par \hich\af1\dbch\af31505\loch\f1 The licenses for most software and other practical works are designed +\par \hich\af1\dbch\af31505\loch\f1 to take away your freedom to share and change the works. By contrast, +\par \hich\af1\dbch\af31505\loch\f1 our General Public Licenses are intended to guarantee your freedom to +\par \hich\af1\dbch\af31505\loch\f1 share and change all versions of a program--to make sure it remains free +\par \hich\af1\dbch\af31505\loch\f1 software for all its users. +\par +\par \hich\af1\dbch\af31505\loch\f1 When we speak of free software, we are referring to freedom, not +\par \hich\af1\dbch\af31505\loch\f1 price. Our Gen\hich\af1\dbch\af31505\loch\f1 eral Public Licenses are designed to make sure that you +\par \hich\af1\dbch\af31505\loch\f1 have the freedom to distribute copies of free software (and charge for +\par \hich\af1\dbch\af31505\loch\f1 them if you wish), that you receive source code or can get it if you +\par \hich\af1\dbch\af31505\loch\f1 want it, that you can change the software or use pieces of i\hich\af1\dbch\af31505\loch\f1 t in new +\par \hich\af1\dbch\af31505\loch\f1 free programs, and that you know you can do these things. +\par +\par \hich\af1\dbch\af31505\loch\f1 Developers that use our General Public Licenses protect your rights +\par \hich\af1\dbch\af31505\loch\f1 with two steps: (1) assert copyright on the software, and (2) offer +\par \hich\af1\dbch\af31505\loch\f1 you this License which gives you legal permission \hich\af1\dbch\af31505\loch\f1 to copy, distribute +\par \hich\af1\dbch\af31505\loch\f1 and/or modify the software. +\par +\par \hich\af1\dbch\af31505\loch\f1 A secondary benefit of defending all users' freedom is that +\par \hich\af1\dbch\af31505\loch\f1 improvements made in alternate versions of the program, if they +\par \hich\af1\dbch\af31505\loch\f1 receive widespread use, become available for other developers to +\par \hich\af1\dbch\af31505\loch\f1 incorporate. Many developers of free software are heartened and +\par \hich\af1\dbch\af31505\loch\f1 encouraged by the resulting cooperation. However, in the case of +\par \hich\af1\dbch\af31505\loch\f1 software used on network servers, this result may fail to co\hich\af1\dbch\af31505\loch\f1 me about. +\par \hich\af1\dbch\af31505\loch\f1 The GNU General Public License permits making a modified version and +\par \hich\af1\dbch\af31505\loch\f1 letting the public access it on a server without ever releasing its +\par \hich\af1\dbch\af31505\loch\f1 source code to the public. +\par +\par \hich\af1\dbch\af31505\loch\f1 The GNU Affero General Public License is designed specifically to +\par \hich\af1\dbch\af31505\loch\f1 ensure that, \hich\af1\dbch\af31505\loch\f1 in such cases, the modified source code becomes available +\par \hich\af1\dbch\af31505\loch\f1 to the community. It requires the operator of a network server to +\par \hich\af1\dbch\af31505\loch\f1 provide the source code of the modified version running there to the +\par \hich\af1\dbch\af31505\loch\f1 users of that server. Therefore, public use of a modified ver\hich\af1\dbch\af31505\loch\f1 sion, on +\par \hich\af1\dbch\af31505\loch\f1 a publicly accessible server, gives the public access to the source +\par \hich\af1\dbch\af31505\loch\f1 code of the modified version. +\par +\par \hich\af1\dbch\af31505\loch\f1 An older license, called the Affero General Public License and +\par \hich\af1\dbch\af31505\loch\f1 published by Affero, was designed to accomplish similar goals. This is +\par \hich\af1\dbch\af31505\loch\f1 a different\hich\af1\dbch\af31505\loch\f1 license, not a version of the Affero GPL, but Affero has +\par \hich\af1\dbch\af31505\loch\f1 released a new version of the Affero GPL which permits relicensing under +\par \hich\af1\dbch\af31505\loch\f1 this license. +\par +\par \hich\af1\dbch\af31505\loch\f1 The precise terms and conditions for copying, distribution and +\par \hich\af1\dbch\af31505\loch\f1 modification follow. +\par +\par \hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 TERMS AND CONDITIONS +\par +\par \hich\af1\dbch\af31505\loch\f1 0. Definitions. +\par +\par \hich\af1\dbch\af31505\loch\f1 "This License" refers to version 3 of the GNU Affero General Public License. +\par +\par \hich\af1\dbch\af31505\loch\f1 "Copyright" also means copyright-like laws that apply to other kinds of +\par \hich\af1\dbch\af31505\loch\f1 works, such as semiconductor masks. +\par +\par \hich\af1\dbch\af31505\loch\f1 "The Program" refers to any copyrightable work licensed under this +\par \hich\af1\dbch\af31505\loch\f1 License. Each licensee is addressed as "you". "Licensees" and +\par \hich\af1\dbch\af31505\loch\f1 "recipients"\hich\af1\dbch\af31505\loch\f1 may be individuals or organizations. +\par +\par \hich\af1\dbch\af31505\loch\f1 To "modify" a work means to copy from or adapt all or part of the work +\par \hich\af1\dbch\af31505\loch\f1 in a fashion requiring copyright permission, other than the making of an +\par \hich\af1\dbch\af31505\loch\f1 exact copy. The resulting work is called a "modified version" of the +\par \hich\af1\dbch\af31505\loch\f1 e\hich\af1\dbch\af31505\loch\f1 arlier work or a work "based on" the earlier work. +\par +\par \hich\af1\dbch\af31505\loch\f1 A "covered work" means either the unmodified Program or a work based +\par \hich\af1\dbch\af31505\loch\f1 on the Program. +\par +\par \hich\af1\dbch\af31505\loch\f1 To "propagate" a work means to do anything with it that, without +\par \hich\af1\dbch\af31505\loch\f1 permission, would make you directly or secondaril\hich\af1\dbch\af31505\loch\f1 y liable for +\par \hich\af1\dbch\af31505\loch\f1 infringement under applicable copyright law, except executing it on a +\par \hich\af1\dbch\af31505\loch\f1 computer or modifying a private copy. Propagation includes copying, +\par \hich\af1\dbch\af31505\loch\f1 distribution (with or without modification), making available to the +\par \hich\af1\dbch\af31505\loch\f1 public, and in some countries other\hich\af1\dbch\af31505\loch\f1 activities as well. +\par +\par \hich\af1\dbch\af31505\loch\f1 To "convey" a work means any kind of propagation that enables other +\par \hich\af1\dbch\af31505\loch\f1 parties to make or receive copies. Mere interaction with a user through +\par \hich\af1\dbch\af31505\loch\f1 a computer network, with no transfer of a copy, is not conveying. +\par +\par \hich\af1\dbch\af31505\loch\f1 An interactive user interface displays "Appropriate Legal Notices" +\par \hich\af1\dbch\af31505\loch\f1 to the extent that it includes a convenient and prominently visible +\par \hich\af1\dbch\af31505\loch\f1 feature that (1) displays an appropriate copyright n\hich\af1\dbch\af31505\loch\f1 otice, and (2) +\par \hich\af1\dbch\af31505\loch\f1 tells the user that there is no warranty for the work (except to the +\par \hich\af1\dbch\af31505\loch\f1 extent that warranties are provided), that licensees may convey the +\par \hich\af1\dbch\af31505\loch\f1 work under this License, and how to view a copy of this License. If +\par \hich\af1\dbch\af31505\loch\f1 the interface presents a list of us\hich\af1\dbch\af31505\loch\f1 er commands or options, such as a +\par \hich\af1\dbch\af31505\loch\f1 menu, a prominent item in the list meets this criterion. +\par +\par \hich\af1\dbch\af31505\loch\f1 1. Source Code. +\par +\par \hich\af1\dbch\af31505\loch\f1 The "source code" for a work means the preferred form of the work +\par \hich\af1\dbch\af31505\loch\f1 for making modifications to it. "Object code" means any non-source +\par \hich\af1\dbch\af31505\loch\f1 form of a\hich\af1\dbch\af31505\loch\f1 work. +\par +\par \hich\af1\dbch\af31505\loch\f1 A "Standard Interface" means an interface that either is an official +\par \hich\af1\dbch\af31505\loch\f1 standard defined by a recognized standards body, or, in the case of +\par \hich\af1\dbch\af31505\loch\f1 interfaces specified for a particular programming language, one that +\par \hich\af1\dbch\af31505\loch\f1 is widely used among developers working \hich\af1\dbch\af31505\loch\f1 in that language. +\par +\par \hich\af1\dbch\af31505\loch\f1 The "System Libraries" of an executable work include anything, other +\par \hich\af1\dbch\af31505\loch\f1 than the work as a whole, that (a) is included in the normal form of +\par \hich\af1\dbch\af31505\loch\f1 packaging a Major Component, but which is not part of that Major +\par \hich\af1\dbch\af31505\loch\f1 Component, and (b) serves only t\hich\af1\dbch\af31505\loch\f1 o enable use of the work with that +\par \hich\af1\dbch\af31505\loch\f1 Major Component, or to implement a Standard Interface for which an +\par \hich\af1\dbch\af31505\loch\f1 implementation is available to the public in source code form. A +\par \hich\af1\dbch\af31505\loch\f1 "Major Component", in this context, means a major essential component +\par \hich\af1\dbch\af31505\loch\f1 (kernel, window system, and so on) of the specific operating system +\par \hich\af1\dbch\af31505\loch\f1 (if any) on which the executable work runs, or a compiler used to +\par \hich\af1\dbch\af31505\loch\f1 produce the work, or an object code interpreter used to run it. +\par +\par \hich\af1\dbch\af31505\loch\f1 The "Corresponding Source" for a work in object code fo\hich\af1\dbch\af31505\loch\f1 rm means all +\par \hich\af1\dbch\af31505\loch\f1 the source code needed to generate, install, and (for an executable +\par \hich\af1\dbch\af31505\loch\f1 work) run the object code and to modify the work, including scripts to +\par \hich\af1\dbch\af31505\loch\f1 control those activities. However, it does not include the work's +\par \hich\af1\dbch\af31505\loch\f1 System Libraries, or general-purpose \hich\af1\dbch\af31505\loch\f1 tools or generally available free +\par \hich\af1\dbch\af31505\loch\f1 programs which are used unmodified in performing those activities but +\par \hich\af1\dbch\af31505\loch\f1 which are not part of the work. For example, Corresponding Source +\par \hich\af1\dbch\af31505\loch\f1 includes interface definition files associated with source files for +\par \hich\af1\dbch\af31505\loch\f1 the work, and th\hich\af1\dbch\af31505\loch\f1 e source code for shared libraries and dynamically +\par \hich\af1\dbch\af31505\loch\f1 linked subprograms that the work is specifically designed to require, +\par \hich\af1\dbch\af31505\loch\f1 such as by intimate data communication or control flow between those +\par \hich\af1\dbch\af31505\loch\f1 subprograms and other parts of the work. +\par +\par \hich\af1\dbch\af31505\loch\f1 The Corresponding Sour\hich\af1\dbch\af31505\loch\f1 ce need not include anything that users +\par \hich\af1\dbch\af31505\loch\f1 can regenerate automatically from other parts of the Corresponding +\par \hich\af1\dbch\af31505\loch\f1 Source. +\par +\par \hich\af1\dbch\af31505\loch\f1 The Corresponding Source for a work in source code form is that +\par \hich\af1\dbch\af31505\loch\f1 same work. +\par +\par \hich\af1\dbch\af31505\loch\f1 2. Basic Permissions. +\par +\par \hich\af1\dbch\af31505\loch\f1 All rights granted under this Licen\hich\af1\dbch\af31505\loch\f1 se are granted for the term of +\par \hich\af1\dbch\af31505\loch\f1 copyright on the Program, and are irrevocable provided the stated +\par \hich\af1\dbch\af31505\loch\f1 conditions are met. This License explicitly affirms your unlimited +\par \hich\af1\dbch\af31505\loch\f1 permission to run the unmodified Program. The output from running a +\par \hich\af1\dbch\af31505\loch\f1 covered work is covered by this License only if the output, given its +\par \hich\af1\dbch\af31505\loch\f1 content, constitutes a covered work. This License acknowledges your +\par \hich\af1\dbch\af31505\loch\f1 rights of fair use or other equivalent, as provi\hich\af1\dbch\af31505\loch\f1 ded by copyright law. +\par +\par \hich\af1\dbch\af31505\loch\f1 You may make, run and propagate covered works that you do not +\par \hich\af1\dbch\af31505\loch\f1 convey, without conditions so long as your license otherwise remains +\par \hich\af1\dbch\af31505\loch\f1 in force. You may convey covered works to others for the sole purpose +\par \hich\af1\dbch\af31505\loch\f1 of having them make modificat\hich\af1\dbch\af31505\loch\f1 ions exclusively for you, or provide you +\par \hich\af1\dbch\af31505\loch\f1 with facilities for running those works, provided that you comply with +\par \hich\af1\dbch\af31505\loch\f1 the terms of this License in conveying all material for which you do +\par \hich\af1\dbch\af31505\loch\f1 not control copyright. Those thus making or running the covered works +\par \hich\af1\dbch\af31505\loch\f1 for \hich\af1\dbch\af31505\loch\f1 you must do so exclusively on your behalf, under your direction +\par \hich\af1\dbch\af31505\loch\f1 and control, on terms that prohibit them from making any copies of +\par \hich\af1\dbch\af31505\loch\f1 your copyrighted material outside their relationship with you. +\par +\par \hich\af1\dbch\af31505\loch\f1 Conveying under any other circumstances is permitted solely\hich\af1\dbch\af31505\loch\f1 under +\par \hich\af1\dbch\af31505\loch\f1 the conditions stated below. Sublicensing is not allowed; section 10 +\par \hich\af1\dbch\af31505\loch\f1 makes it unnecessary. +\par +\par \hich\af1\dbch\af31505\loch\f1 3. Protecting Users' Legal Rights From Anti-Circumvention Law. +\par +\par \hich\af1\dbch\af31505\loch\f1 No covered work shall be deemed part of an effective technological +\par \hich\af1\dbch\af31505\loch\f1 measure under any app\hich\af1\dbch\af31505\loch\f1 licable law fulfilling obligations under article +\par \hich\af1\dbch\af31505\loch\f1 11 of the WIPO copyright treaty adopted on 20 December 1996, or +\par \hich\af1\dbch\af31505\loch\f1 similar laws prohibiting or restricting circumvention of such +\par \hich\af1\dbch\af31505\loch\f1 measures. +\par +\par \hich\af1\dbch\af31505\loch\f1 When you convey a covered work, you waive any legal power to forbid +\par \hich\af1\dbch\af31505\loch\f1 circumvention of technological measures to the extent such circumvention +\par \hich\af1\dbch\af31505\loch\f1 is effected by exercising rights under this License with respect to +\par \hich\af1\dbch\af31505\loch\f1 the covered work, and you disclaim any intention to limit operation or +\par \hich\af1\dbch\af31505\loch\f1 modification of the work as a means of enfor\hich\af1\dbch\af31505\loch\f1 cing, against the work's +\par \hich\af1\dbch\af31505\loch\f1 users, your or third parties' legal rights to forbid circumvention of +\par \hich\af1\dbch\af31505\loch\f1 technological measures. +\par +\par \hich\af1\dbch\af31505\loch\f1 4. Conveying Verbatim Copies. +\par +\par \hich\af1\dbch\af31505\loch\f1 You may convey verbatim copies of the Program's source code as you +\par \hich\af1\dbch\af31505\loch\f1 receive it, in any medium, provide\hich\af1\dbch\af31505\loch\f1 d that you conspicuously and +\par \hich\af1\dbch\af31505\loch\f1 appropriately publish on each copy an appropriate copyright notice; +\par \hich\af1\dbch\af31505\loch\f1 keep intact all notices stating that this License and any +\par \hich\af1\dbch\af31505\loch\f1 non-permissive terms added in accord with section 7 apply to the code; +\par \hich\af1\dbch\af31505\loch\f1 keep intact all notices of the\hich\af1\dbch\af31505\loch\f1 absence of any warranty; and give all +\par \hich\af1\dbch\af31505\loch\f1 recipients a copy of this License along with the Program. +\par +\par \hich\af1\dbch\af31505\loch\f1 You may charge any price or no price for each copy that you convey, +\par \hich\af1\dbch\af31505\loch\f1 and you may offer support or warranty protection for a fee. +\par +\par \hich\af1\dbch\af31505\loch\f1 5. Conveying Modified Sou\hich\af1\dbch\af31505\loch\f1 rce Versions. +\par +\par \hich\af1\dbch\af31505\loch\f1 You may convey a work based on the Program, or the modifications to +\par \hich\af1\dbch\af31505\loch\f1 produce it from the Program, in the form of source code under the +\par \hich\af1\dbch\af31505\loch\f1 terms of section 4, provided that you also meet all of these conditions: +\par +\par \hich\af1\dbch\af31505\loch\f1 a) The work must carry prom\hich\af1\dbch\af31505\loch\f1 inent notices stating that you modified +\par \hich\af1\dbch\af31505\loch\f1 it, and giving a relevant date. +\par +\par \hich\af1\dbch\af31505\loch\f1 b) The work must carry prominent notices stating that it is +\par \hich\af1\dbch\af31505\loch\f1 released under this License and any conditions added under section +\par \hich\af1\dbch\af31505\loch\f1 7. This requirement modifies the requirement in section 4 to +\par \hich\af1\dbch\af31505\loch\f1 "keep intact all notices". +\par +\par \hich\af1\dbch\af31505\loch\f1 c) You must license the entire work, as a whole, under this +\par \hich\af1\dbch\af31505\loch\f1 License to anyone w\hich\af1\dbch\af31505\loch\f1 ho comes into possession of a copy. This +\par \hich\af1\dbch\af31505\loch\f1 License will therefore apply, along with any applicable section 7 +\par \hich\af1\dbch\af31505\loch\f1 additional terms, to the whole of the work, and all its parts, +\par \hich\af1\dbch\af31505\loch\f1 regardless of how they are packaged. This License gives no +\par \hich\af1\dbch\af31505\loch\f1 permissio\hich\af1\dbch\af31505\loch\f1 n to license the work in any other way, but it does not +\par \hich\af1\dbch\af31505\loch\f1 invalidate such permission if you have separately received it. +\par +\par \hich\af1\dbch\af31505\loch\f1 d) If the work has interactive user interfaces, each must display +\par \hich\af1\dbch\af31505\loch\f1 Appropriate Legal Notices; however, if the Program has int\hich\af1\dbch\af31505\loch\f1 eractive +\par \hich\af1\dbch\af31505\loch\f1 interfaces that do not display Appropriate Legal Notices, your +\par \hich\af1\dbch\af31505\loch\f1 work need not make them do so. +\par +\par \hich\af1\dbch\af31505\loch\f1 A compilation of a covered work with other separate and independent +\par \hich\af1\dbch\af31505\loch\f1 works, which are not by their nature extensions of the covered work, +\par \hich\af1\dbch\af31505\loch\f1 and w\hich\af1\dbch\af31505\loch\f1 hich are not combined with it such as to form a larger program, +\par \hich\af1\dbch\af31505\loch\f1 in or on a volume of a storage or distribution medium, is called an +\par \hich\af1\dbch\af31505\loch\f1 "aggregate" if the compilation and its resulting copyright are not +\par \hich\af1\dbch\af31505\loch\f1 used to limit the access or legal rights of the compilati\hich\af1\dbch\af31505\loch\f1 on's users +\par \hich\af1\dbch\af31505\loch\f1 beyond what the individual works permit. Inclusion of a covered work +\par \hich\af1\dbch\af31505\loch\f1 in an aggregate does not cause this License to apply to the other +\par \hich\af1\dbch\af31505\loch\f1 parts of the aggregate. +\par +\par \hich\af1\dbch\af31505\loch\f1 6. Conveying Non-Source Forms. +\par +\par \hich\af1\dbch\af31505\loch\f1 You may convey a covered work in object code form under the terms +\par \hich\af1\dbch\af31505\loch\f1 of sections 4 and 5, provided that you also convey the +\par \hich\af1\dbch\af31505\loch\f1 machine-readable Corresponding Source under the terms of this License, +\par \hich\af1\dbch\af31505\loch\f1 in one of these ways: +\par +\par \hich\af1\dbch\af31505\loch\f1 a) Convey the object code in, or em\hich\af1\dbch\af31505\loch\f1 bodied in, a physical product +\par \hich\af1\dbch\af31505\loch\f1 (including a physical distribution medium), accompanied by the +\par \hich\af1\dbch\af31505\loch\f1 Corresponding Source fixed on a durable physical medium +\par \hich\af1\dbch\af31505\loch\f1 customarily used for software interchange. +\par +\par \hich\af1\dbch\af31505\loch\f1 b) Convey the object code in, or embodied in, a\hich\af1\dbch\af31505\loch\f1 physical product +\par \hich\af1\dbch\af31505\loch\f1 (including a physical distribution medium), accompanied by a +\par \hich\af1\dbch\af31505\loch\f1 written offer, valid for at least three years and valid for as +\par \hich\af1\dbch\af31505\loch\f1 long as you offer spare parts or customer support for that product +\par \hich\af1\dbch\af31505\loch\f1 model, to give anyone who posse\hich\af1\dbch\af31505\loch\f1 sses the object code either (1) a +\par \hich\af1\dbch\af31505\loch\f1 copy of the Corresponding Source for all the software in the +\par \hich\af1\dbch\af31505\loch\f1 product that is covered by this License, on a durable physical +\par \hich\af1\dbch\af31505\loch\f1 medium customarily used for software interchange, for a price no +\par \hich\af1\dbch\af31505\loch\f1 more than your re\hich\af1\dbch\af31505\loch\f1 asonable cost of physically performing this +\par \hich\af1\dbch\af31505\loch\f1 conveying of source, or (2) access to copy the +\par \hich\af1\dbch\af31505\loch\f1 Corresponding Source from a network server at no charge. +\par +\par \hich\af1\dbch\af31505\loch\f1 c) Convey individual copies of the object code with a copy of the +\par \hich\af1\dbch\af31505\loch\f1 written offer to provide \hich\af1\dbch\af31505\loch\f1 the Corresponding Source. This +\par \hich\af1\dbch\af31505\loch\f1 alternative is allowed only occasionally and noncommercially, and +\par \hich\af1\dbch\af31505\loch\f1 only if you received the object code with such an offer, in accord +\par \hich\af1\dbch\af31505\loch\f1 with subsection 6b. +\par +\par \hich\af1\dbch\af31505\loch\f1 d) Convey the object code by offering access from a designated +\par \hich\af1\dbch\af31505\loch\f1 place (gratis or for a charge), and offer equivalent access to the +\par \hich\af1\dbch\af31505\loch\f1 Corresponding Source in the same way through the same place at no +\par \hich\af1\dbch\af31505\loch\f1 further charge. You need not require recipi\hich\af1\dbch\af31505\loch\f1 ents to copy the +\par \hich\af1\dbch\af31505\loch\f1 Corresponding Source along with the object code. If the place to +\par \hich\af1\dbch\af31505\loch\f1 copy the object code is a network server, the Corresponding Source +\par \hich\af1\dbch\af31505\loch\f1 may be on a different server (operated by you or a third party) +\par \hich\af1\dbch\af31505\loch\f1 that supports equivalent c\hich\af1\dbch\af31505\loch\f1 opying facilities, provided you maintain +\par \hich\af1\dbch\af31505\loch\f1 clear directions next to the object code saying where to find the +\par \hich\af1\dbch\af31505\loch\f1 Corresponding Source. Regardless of what server hosts the +\par \hich\af1\dbch\af31505\loch\f1 Corresponding Source, you remain obligated to ensure that it is +\par \hich\af1\dbch\af31505\loch\f1 available \hich\af1\dbch\af31505\loch\f1 for as long as needed to satisfy these requirements. +\par +\par \hich\af1\dbch\af31505\loch\f1 e) Convey the object code using peer-to-peer transmission, provided +\par \hich\af1\dbch\af31505\loch\f1 you inform other peers where the object code and Corresponding +\par \hich\af1\dbch\af31505\loch\f1 Source of the work are being offered to the general public \hich\af1\dbch\af31505\loch\f1 at no +\par \hich\af1\dbch\af31505\loch\f1 charge under subsection 6d. +\par +\par \hich\af1\dbch\af31505\loch\f1 A separable portion of the object code, whose source code is excluded +\par \hich\af1\dbch\af31505\loch\f1 from the Corresponding Source as a System Library, need not be +\par \hich\af1\dbch\af31505\loch\f1 included in conveying the object code work. +\par +\par \hich\af1\dbch\af31505\loch\f1 A "User Product" is either (1) a "c\hich\af1\dbch\af31505\loch\f1 onsumer product", which means any +\par \hich\af1\dbch\af31505\loch\f1 tangible personal property which is normally used for personal, family, +\par \hich\af1\dbch\af31505\loch\f1 or household purposes, or (2) anything designed or sold for incorporation +\par \hich\af1\dbch\af31505\loch\f1 into a dwelling. In determining whether a product is a consumer product, +\par \hich\af1\dbch\af31505\loch\f1 do\hich\af1\dbch\af31505\loch\f1 ubtful cases shall be resolved in favor of coverage. For a particular +\par \hich\af1\dbch\af31505\loch\f1 product received by a particular user, "normally used" refers to a +\par \hich\af1\dbch\af31505\loch\f1 typical or common use of that class of product, regardless of the status +\par \hich\af1\dbch\af31505\loch\f1 of the particular user or of the way in which the particular user +\par \hich\af1\dbch\af31505\loch\f1 actually uses, or expects or is expected to use, the product. A product +\par \hich\af1\dbch\af31505\loch\f1 is a consumer product regardless of whether the product has substantial +\par \hich\af1\dbch\af31505\loch\f1 commercial, industrial or non-consumer uses, \hich\af1\dbch\af31505\loch\f1 unless such uses represent +\par \hich\af1\dbch\af31505\loch\f1 the only significant mode of use of the product. +\par +\par \hich\af1\dbch\af31505\loch\f1 "Installation Information" for a User Product means any methods, +\par \hich\af1\dbch\af31505\loch\f1 procedures, authorization keys, or other information required to install +\par \hich\af1\dbch\af31505\loch\f1 and execute modified versions of a cove\hich\af1\dbch\af31505\loch\f1 red work in that User Product from +\par \hich\af1\dbch\af31505\loch\f1 a modified version of its Corresponding Source. The information must +\par \hich\af1\dbch\af31505\loch\f1 suffice to ensure that the continued functioning of the modified object +\par \hich\af1\dbch\af31505\loch\f1 code is in no case prevented or interfered with solely because +\par \hich\af1\dbch\af31505\loch\f1 modification has\hich\af1\dbch\af31505\loch\f1 been made. +\par +\par \hich\af1\dbch\af31505\loch\f1 If you convey an object code work under this section in, or with, or +\par \hich\af1\dbch\af31505\loch\f1 specifically for use in, a User Product, and the conveying occurs as +\par \hich\af1\dbch\af31505\loch\f1 part of a transaction in which the right of possession and use of the +\par \hich\af1\dbch\af31505\loch\f1 User Product is transferred to th\hich\af1\dbch\af31505\loch\f1 e recipient in perpetuity or for a +\par \hich\af1\dbch\af31505\loch\f1 fixed term (regardless of how the transaction is characterized), the +\par \hich\af1\dbch\af31505\loch\f1 Corresponding Source conveyed under this section must be accompanied +\par \hich\af1\dbch\af31505\loch\f1 by the Installation Information. But this requirement does not apply +\par \hich\af1\dbch\af31505\loch\f1 if neither yo\hich\af1\dbch\af31505\loch\f1 u nor any third party retains the ability to install +\par \hich\af1\dbch\af31505\loch\f1 modified object code on the User Product (for example, the work has +\par \hich\af1\dbch\af31505\loch\f1 been installed in ROM). +\par +\par \hich\af1\dbch\af31505\loch\f1 The requirement to provide Installation Information does not include a +\par \hich\af1\dbch\af31505\loch\f1 requirement to continue to provide su\hich\af1\dbch\af31505\loch\f1 pport service, warranty, or updates +\par \hich\af1\dbch\af31505\loch\f1 for a work that has been modified or installed by the recipient, or for +\par \hich\af1\dbch\af31505\loch\f1 the User Product in which it has been modified or installed. Access to a +\par \hich\af1\dbch\af31505\loch\f1 network may be denied when the modification itself materially and +\par \hich\af1\dbch\af31505\loch\f1 adversely affects the operation of the network or violates the rules and +\par \hich\af1\dbch\af31505\loch\f1 protocols for communication across the network. +\par +\par \hich\af1\dbch\af31505\loch\f1 Corresponding Source conveyed, and Installation Information provid\hich\af1\dbch\af31505\loch\f1 ed, +\par \hich\af1\dbch\af31505\loch\f1 in accord with this section must be in a format that is publicly +\par \hich\af1\dbch\af31505\loch\f1 documented (and with an implementation available to the public in +\par \hich\af1\dbch\af31505\loch\f1 source code form), and must require no special password or key for +\par \hich\af1\dbch\af31505\loch\f1 unpacking, reading or copying. +\par +\par \hich\af1\dbch\af31505\loch\f1 7. Additional Terms. +\par +\par \hich\af1\dbch\af31505\loch\f1 "Additional permissions" are terms that supplement the terms of this +\par \hich\af1\dbch\af31505\loch\f1 License by making exceptions from one or more of its conditions. +\par \hich\af1\dbch\af31505\loch\f1 Additional permissions that are applicable to the entire Program shall +\par \hich\af1\dbch\af31505\loch\f1 be treated as though they were included in this\hich\af1\dbch\af31505\loch\f1 License, to the extent +\par \hich\af1\dbch\af31505\loch\f1 that they are valid under applicable law. If additional permissions +\par \hich\af1\dbch\af31505\loch\f1 apply only to part of the Program, that part may be used separately +\par \hich\af1\dbch\af31505\loch\f1 under those permissions, but the entire Program remains governed by +\par \hich\af1\dbch\af31505\loch\f1 this License without regard\hich\af1\dbch\af31505\loch\f1 to the additional permissions. +\par +\par \hich\af1\dbch\af31505\loch\f1 When you convey a copy of a covered work, you may at your option +\par \hich\af1\dbch\af31505\loch\f1 remove any additional permissions from that copy, or from any part of +\par \hich\af1\dbch\af31505\loch\f1 it. (Additional permissions may be written to require their own +\par \hich\af1\dbch\af31505\loch\f1 removal in certain ca\hich\af1\dbch\af31505\loch\f1 ses when you modify the work.) You may place +\par \hich\af1\dbch\af31505\loch\f1 additional permissions on material, added by you to a covered work, +\par \hich\af1\dbch\af31505\loch\f1 for which you have or can give appropriate copyright permission. +\par +\par \hich\af1\dbch\af31505\loch\f1 Notwithstanding any other provision of this License, for material you +\par \hich\af1\dbch\af31505\loch\f1 add to a covered work, you may (if authorized by the copyright holders of +\par \hich\af1\dbch\af31505\loch\f1 that material) supplement the terms of this License with terms: +\par +\par \hich\af1\dbch\af31505\loch\f1 a) Disclaiming warranty or limiting liability differently from the +\par \hich\af1\dbch\af31505\loch\f1 terms of sections 15 and 16 of this Licens\hich\af1\dbch\af31505\loch\f1 e; or +\par +\par \hich\af1\dbch\af31505\loch\f1 b) Requiring preservation of specified reasonable legal notices or +\par \hich\af1\dbch\af31505\loch\f1 author attributions in that material or in the Appropriate Legal +\par \hich\af1\dbch\af31505\loch\f1 Notices displayed by works containing it; or +\par +\par \hich\af1\dbch\af31505\loch\f1 c) Prohibiting misrepresentation of the origin of that \hich\af1\dbch\af31505\loch\f1 material, or +\par \hich\af1\dbch\af31505\loch\f1 requiring that modified versions of such material be marked in +\par \hich\af1\dbch\af31505\loch\f1 reasonable ways as different from the original version; or +\par +\par \hich\af1\dbch\af31505\loch\f1 d) Limiting the use for publicity purposes of names of licensors or +\par \hich\af1\dbch\af31505\loch\f1 authors of the material; or +\par +\par \hich\af1\dbch\af31505\loch\f1 e) \hich\af1\dbch\af31505\loch\f1 Declining to grant rights under trademark law for use of some +\par \hich\af1\dbch\af31505\loch\f1 trade names, trademarks, or service marks; or +\par +\par \hich\af1\dbch\af31505\loch\f1 f) Requiring indemnification of licensors and authors of that +\par \hich\af1\dbch\af31505\loch\f1 material by anyone who conveys the material (or modified versions of +\par \hich\af1\dbch\af31505\loch\f1 \hich\af1\dbch\af31505\loch\f1 it) with contractual assumptions of liability to the recipient, for +\par \hich\af1\dbch\af31505\loch\f1 any liability that these contractual assumptions directly impose on +\par \hich\af1\dbch\af31505\loch\f1 those licensors and authors. +\par +\par \hich\af1\dbch\af31505\loch\f1 All other non-permissive additional terms are considered "further +\par \hich\af1\dbch\af31505\loch\f1 restrictions" \hich\af1\dbch\af31505\loch\f1 within the meaning of section 10. If the Program as you +\par \hich\af1\dbch\af31505\loch\f1 received it, or any part of it, contains a notice stating that it is +\par \hich\af1\dbch\af31505\loch\f1 governed by this License along with a term that is a further +\par \hich\af1\dbch\af31505\loch\f1 restriction, you may remove that term. If a license document contains +\par \hich\af1\dbch\af31505\loch\f1 a further restriction but permits relicensing or conveying under this +\par \hich\af1\dbch\af31505\loch\f1 License, you may add to a covered work material governed by the terms +\par \hich\af1\dbch\af31505\loch\f1 of that license document, provided that the f\hich\af1\dbch\af31505\loch\f1 urther restriction does +\par \hich\af1\dbch\af31505\loch\f1 not survive such relicensing or conveying. +\par +\par \hich\af1\dbch\af31505\loch\f1 If you add terms to a covered work in accord with this section, you +\par \hich\af1\dbch\af31505\loch\f1 must place, in the relevant source files, a statement of the +\par \hich\af1\dbch\af31505\loch\f1 additional terms that apply to those files, or a notice i\hich\af1\dbch\af31505\loch\f1 ndicating +\par \hich\af1\dbch\af31505\loch\f1 where to find the applicable terms. +\par +\par \hich\af1\dbch\af31505\loch\f1 Additional terms, permissive or non-permissive, may be stated in the +\par \hich\af1\dbch\af31505\loch\f1 form of a separately written license, or stated as exceptions; +\par \hich\af1\dbch\af31505\loch\f1 the above requirements apply either way. +\par +\par \hich\af1\dbch\af31505\loch\f1 8. Termination. +\par +\par \hich\af1\dbch\af31505\loch\f1 You may not \hich\af1\dbch\af31505\loch\f1 propagate or modify a covered work except as expressly +\par \hich\af1\dbch\af31505\loch\f1 provided under this License. Any attempt otherwise to propagate or +\par \hich\af1\dbch\af31505\loch\f1 modify it is void, and will automatically terminate your rights under +\par \hich\af1\dbch\af31505\loch\f1 this License (including any patent licenses granted under the t\hich\af1\dbch\af31505\loch\f1 hird +\par \hich\af1\dbch\af31505\loch\f1 paragraph of section 11). +\par +\par \hich\af1\dbch\af31505\loch\f1 However, if you cease all violation of this License, then your +\par \hich\af1\dbch\af31505\loch\f1 license from a particular copyright holder is reinstated (a) +\par \hich\af1\dbch\af31505\loch\f1 provisionally, unless and until the copyright holder explicitly and +\par \hich\af1\dbch\af31505\loch\f1 finally terminates your licens\hich\af1\dbch\af31505\loch\f1 e, and (b) permanently, if the copyright +\par \hich\af1\dbch\af31505\loch\f1 holder fails to notify you of the violation by some reasonable means +\par \hich\af1\dbch\af31505\loch\f1 prior to 60 days after the cessation. +\par +\par \hich\af1\dbch\af31505\loch\f1 Moreover, your license from a particular copyright holder is +\par \hich\af1\dbch\af31505\loch\f1 reinstated permanently if the copyright holder notifies you of the +\par \hich\af1\dbch\af31505\loch\f1 violation by some reasonable means, this is the first time you have +\par \hich\af1\dbch\af31505\loch\f1 received notice of violation of this License (for any work\hich\af1\dbch\af31505\loch\f1 ) from that +\par \hich\af1\dbch\af31505\loch\f1 copyright holder, and you cure the violation prior to 30 days after +\par \hich\af1\dbch\af31505\loch\f1 your receipt of the notice. +\par +\par \hich\af1\dbch\af31505\loch\f1 Termination of your rights under this section does not terminate the +\par \hich\af1\dbch\af31505\loch\f1 licenses of parties who have received copies or rights from you under +\par \hich\af1\dbch\af31505\loch\f1 this L\hich\af1\dbch\af31505\loch\f1 icense. If your rights have been terminated and not permanently +\par \hich\af1\dbch\af31505\loch\f1 reinstated, you do not qualify to receive new licenses for the same +\par \hich\af1\dbch\af31505\loch\f1 material under section 10. +\par +\par \hich\af1\dbch\af31505\loch\f1 9. Acceptance Not Required for Having Copies. +\par +\par \hich\af1\dbch\af31505\loch\f1 You are not required to accept this License \hich\af1\dbch\af31505\loch\f1 in order to receive or +\par \hich\af1\dbch\af31505\loch\f1 run a copy of the Program. Ancillary propagation of a covered work +\par \hich\af1\dbch\af31505\loch\f1 occurring solely as a consequence of using peer-to-peer transmission +\par \hich\af1\dbch\af31505\loch\f1 to receive a copy likewise does not require acceptance. However, +\par \hich\af1\dbch\af31505\loch\f1 nothing other than this Licens\hich\af1\dbch\af31505\loch\f1 e grants you permission to propagate or +\par \hich\af1\dbch\af31505\loch\f1 modify any covered work. These actions infringe copyright if you do +\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid12386343\charrsid12386343 \hich\af1\dbch\af31505\loch\f1 not accept this License. Therefore, by modifying or propagating a +\par \hich\af1\dbch\af31505\loch\f1 covered work, you indicate your acceptance of this License to do so. +\par +\par \hich\af1\dbch\af31505\loch\f1 10. Auto\hich\af1\dbch\af31505\loch\f1 matic Licensing of Downstream Recipients. +\par +\par \hich\af1\dbch\af31505\loch\f1 Each time you convey a covered work, the recipient automatically +\par \hich\af1\dbch\af31505\loch\f1 receives a license from the original licensors, to run, modify and +\par \hich\af1\dbch\af31505\loch\f1 propagate that work, subject to this License. You are not responsible +\par \hich\af1\dbch\af31505\loch\f1 for enforcing compliance by third parties with this License. +\par +\par \hich\af1\dbch\af31505\loch\f1 An "entity transaction" is a transaction transferring control of an +\par \hich\af1\dbch\af31505\loch\f1 organization, or substantially all assets of one, or \hich\af1\dbch\af31505\loch\f1 subdividing an +\par \hich\af1\dbch\af31505\loch\f1 organization, or merging organizations. If propagation of a covered +\par \hich\af1\dbch\af31505\loch\f1 work results from an entity transaction, each party to that +\par \hich\af1\dbch\af31505\loch\f1 transaction who receives a copy of the work also receives whatever +\par \hich\af1\dbch\af31505\loch\f1 licenses to the work the party's predecessor \hich\af1\dbch\af31505\loch\f1 in interest had or could +\par \hich\af1\dbch\af31505\loch\f1 give under the previous paragraph, plus a right to possession of the +\par \hich\af1\dbch\af31505\loch\f1 Corresponding Source of the work from the predecessor in interest, if +\par \hich\af1\dbch\af31505\loch\f1 the predecessor has it or can get it with reasonable efforts. +\par +\par \hich\af1\dbch\af31505\loch\f1 You may not impose any furt\hich\af1\dbch\af31505\loch\f1 her restrictions on the exercise of the +\par \hich\af1\dbch\af31505\loch\f1 rights granted or affirmed under this License. For example, you may +\par \hich\af1\dbch\af31505\loch\f1 not impose a license fee, royalty, or other charge for exercise of +\par \hich\af1\dbch\af31505\loch\f1 rights granted under this License, and you may not initiate litigation +\par \hich\af1\dbch\af31505\loch\f1 (includin\hich\af1\dbch\af31505\loch\f1 g a cross-claim or counterclaim in a lawsuit) alleging that +\par \hich\af1\dbch\af31505\loch\f1 any patent claim is infringed by making, using, selling, offering for +\par \hich\af1\dbch\af31505\loch\f1 sale, or importing the Program or any portion of it. +\par +\par \hich\af1\dbch\af31505\loch\f1 11. Patents. +\par +\par \hich\af1\dbch\af31505\loch\f1 A "contributor" is a copyright holder who authorizes u\hich\af1\dbch\af31505\loch\f1 se under this +\par \hich\af1\dbch\af31505\loch\f1 License of the Program or a work on which the Program is based. The +\par \hich\af1\dbch\af31505\loch\f1 work thus licensed is called the contributor's "contributor version". +\par +\par \hich\af1\dbch\af31505\loch\f1 A contributor's "essential patent claims" are all patent claims +\par \hich\af1\dbch\af31505\loch\f1 owned or controlled by the contributor, whether already acquired or +\par \hich\af1\dbch\af31505\loch\f1 hereafter acquired, that would be infringed by some manner, permitted +\par \hich\af1\dbch\af31505\loch\f1 by this License, of making, using, or selling its contributor version, +\par \hich\af1\dbch\af31505\loch\f1 but do not include claims that would be infring\hich\af1\dbch\af31505\loch\f1 ed only as a +\par \hich\af1\dbch\af31505\loch\f1 consequence of further modification of the contributor version. For +\par \hich\af1\dbch\af31505\loch\f1 purposes of this definition, "control" includes the right to grant +\par \hich\af1\dbch\af31505\loch\f1 patent sublicenses in a manner consistent with the requirements of +\par \hich\af1\dbch\af31505\loch\f1 this License. +\par +\par \hich\af1\dbch\af31505\loch\f1 Each contributor grants\hich\af1\dbch\af31505\loch\f1 you a non-exclusive, worldwide, royalty-free +\par \hich\af1\dbch\af31505\loch\f1 patent license under the contributor's essential patent claims, to +\par \hich\af1\dbch\af31505\loch\f1 make, use, sell, offer for sale, import and otherwise run, modify and +\par \hich\af1\dbch\af31505\loch\f1 propagate the contents of its contributor version. +\par +\par \hich\af1\dbch\af31505\loch\f1 In the following th\hich\af1\dbch\af31505\loch\f1 ree paragraphs, a "patent license" is any express +\par \hich\af1\dbch\af31505\loch\f1 agreement or commitment, however denominated, not to enforce a patent +\par \hich\af1\dbch\af31505\loch\f1 (such as an express permission to practice a patent or covenant not to +\par \hich\af1\dbch\af31505\loch\f1 sue for patent infringement). To "grant" such a patent license t\hich\af1\dbch\af31505\loch\f1 o a +\par \hich\af1\dbch\af31505\loch\f1 party means to make such an agreement or commitment not to enforce a +\par \hich\af1\dbch\af31505\loch\f1 patent against the party. +\par +\par \hich\af1\dbch\af31505\loch\f1 If you convey a covered work, knowingly relying on a patent license, +\par \hich\af1\dbch\af31505\loch\f1 and the Corresponding Source of the work is not available for anyone +\par \hich\af1\dbch\af31505\loch\f1 to copy, free of\hich\af1\dbch\af31505\loch\f1 charge and under the terms of this License, through a +\par \hich\af1\dbch\af31505\loch\f1 publicly available network server or other readily accessible means, +\par \hich\af1\dbch\af31505\loch\f1 then you must either (1) cause the Corresponding Source to be so +\par \hich\af1\dbch\af31505\loch\f1 available, or (2) arrange to deprive yourself of the benefit of the +\par \hich\af1\dbch\af31505\loch\f1 patent license for this particular work, or (3) arrange, in a manner +\par \hich\af1\dbch\af31505\loch\f1 consistent with the requirements of this License, to extend the patent +\par \hich\af1\dbch\af31505\loch\f1 license to downstream recipients. "Knowingly relying" means you have +\par \hich\af1\dbch\af31505\loch\f1 actual knowledge that, but for the patent license, your conveying the +\par \hich\af1\dbch\af31505\loch\f1 covered work in a country, or your recipient's use of the covered work +\par \hich\af1\dbch\af31505\loch\f1 in a country, would infringe one or more iden\hich\af1\dbch\af31505\loch\f1 tifiable patents in that +\par \hich\af1\dbch\af31505\loch\f1 country that you have reason to believe are valid. +\par +\par \hich\af1\dbch\af31505\loch\f1 If, pursuant to or in connection with a single transaction or +\par \hich\af1\dbch\af31505\loch\f1 arrangement, you convey, or propagate by procuring conveyance of, a +\par \hich\af1\dbch\af31505\loch\f1 covered work, and grant a patent license to som\hich\af1\dbch\af31505\loch\f1 e of the parties +\par \hich\af1\dbch\af31505\loch\f1 receiving the covered work authorizing them to use, propagate, modify +\par \hich\af1\dbch\af31505\loch\f1 or convey a specific copy of the covered work, then the patent license +\par \hich\af1\dbch\af31505\loch\f1 you grant is automatically extended to all recipients of the covered +\par \hich\af1\dbch\af31505\loch\f1 work and works based on it. +\par +\par \hich\af1\dbch\af31505\loch\f1 A patent license is "discriminatory" if it does not include within +\par \hich\af1\dbch\af31505\loch\f1 the scope of its coverage, prohibits the exercise of, or is +\par \hich\af1\dbch\af31505\loch\f1 conditioned on the non-exercise of one or more of the rights that are +\par \hich\af1\dbch\af31505\loch\f1 specifically granted under this License. You may not con\hich\af1\dbch\af31505\loch\f1 vey a covered +\par \hich\af1\dbch\af31505\loch\f1 work if you are a party to an arrangement with a third party that is +\par \hich\af1\dbch\af31505\loch\f1 in the business of distributing software, under which you make payment +\par \hich\af1\dbch\af31505\loch\f1 to the third party based on the extent of your activity of conveying +\par \hich\af1\dbch\af31505\loch\f1 the work, and under which the thi\hich\af1\dbch\af31505\loch\f1 rd party grants, to any of the +\par \hich\af1\dbch\af31505\loch\f1 parties who would receive the covered work from you, a discriminatory +\par \hich\af1\dbch\af31505\loch\f1 patent license (a) in connection with copies of the covered work +\par \hich\af1\dbch\af31505\loch\f1 conveyed by you (or copies made from those copies), or (b) primarily +\par \hich\af1\dbch\af31505\loch\f1 for and in connection\hich\af1\dbch\af31505\loch\f1 with specific products or compilations that +\par \hich\af1\dbch\af31505\loch\f1 contain the covered work, unless you entered into that arrangement, +\par \hich\af1\dbch\af31505\loch\f1 or that patent license was granted, prior to 28 March 2007. +\par +\par \hich\af1\dbch\af31505\loch\f1 Nothing in this License shall be construed as excluding or limiting +\par \hich\af1\dbch\af31505\loch\f1 any implied license or other defenses to infringement that may +\par \hich\af1\dbch\af31505\loch\f1 otherwise be available to you under applicable patent law. +\par +\par \hich\af1\dbch\af31505\loch\f1 12. No Surrender of Others' Freedom. +\par +\par \hich\af1\dbch\af31505\loch\f1 If conditions are imp\hich\af1\dbch\af31505\loch\f1 osed on you (whether by court order, agreement or +\par \hich\af1\dbch\af31505\loch\f1 otherwise) that contradict the conditions of this License, they do not +\par \hich\af1\dbch\af31505\loch\f1 excuse you from the conditions of this License. If you cannot convey a +\par \hich\af1\dbch\af31505\loch\f1 covered work so as to satisfy simultaneously your obligations u\hich\af1\dbch\af31505\loch\f1 nder this +\par \hich\af1\dbch\af31505\loch\f1 License and any other pertinent obligations, then as a consequence you may +\par \hich\af1\dbch\af31505\loch\f1 not convey it at all. For example, if you agree to terms that obligate you +\par \hich\af1\dbch\af31505\loch\f1 to collect a royalty for further conveying from those to whom you convey +\par \hich\af1\dbch\af31505\loch\f1 the Program, the only \hich\af1\dbch\af31505\loch\f1 way you could satisfy both those terms and this +\par \hich\af1\dbch\af31505\loch\f1 License would be to refrain entirely from conveying the Program. +\par +\par \hich\af1\dbch\af31505\loch\f1 13. Remote Network Interaction; Use with the GNU General Public License. +\par +\par \hich\af1\dbch\af31505\loch\f1 Notwithstanding any other provision of this License, if you modi\hich\af1\dbch\af31505\loch\f1 fy the +\par \hich\af1\dbch\af31505\loch\f1 Program, your modified version must prominently offer all users +\par \hich\af1\dbch\af31505\loch\f1 interacting with it remotely through a computer network (if your version +\par \hich\af1\dbch\af31505\loch\f1 supports such interaction) an opportunity to receive the Corresponding +\par \hich\af1\dbch\af31505\loch\f1 Source of your version by providing acces\hich\af1\dbch\af31505\loch\f1 s to the Corresponding Source +\par \hich\af1\dbch\af31505\loch\f1 from a network server at no charge, through some standard or customary +\par \hich\af1\dbch\af31505\loch\f1 means of facilitating copying of software. This Corresponding Source +\par \hich\af1\dbch\af31505\loch\f1 shall include the Corresponding Source for any work covered by version 3 +\par \hich\af1\dbch\af31505\loch\f1 of the GNU G\hich\af1\dbch\af31505\loch\f1 eneral Public License that is incorporated pursuant to the +\par \hich\af1\dbch\af31505\loch\f1 following paragraph. +\par +\par \hich\af1\dbch\af31505\loch\f1 Notwithstanding any other provision of this License, you have +\par \hich\af1\dbch\af31505\loch\f1 permission to link or combine any covered work with a work licensed +\par \hich\af1\dbch\af31505\loch\f1 under version 3 of the GNU General Public License into a single +\par \hich\af1\dbch\af31505\loch\f1 combined work, and to convey the resulting work. The terms of this +\par \hich\af1\dbch\af31505\loch\f1 License will continue to apply to the part which is the \hich\af1\dbch\af31505\loch\f1 covered work, +\par \hich\af1\dbch\af31505\loch\f1 but the work with which it is combined will remain governed by version +\par \hich\af1\dbch\af31505\loch\f1 3 of the GNU General Public License. +\par +\par \hich\af1\dbch\af31505\loch\f1 14. Revised Versions of this License. +\par +\par \hich\af1\dbch\af31505\loch\f1 The Free Software Foundation may publish revised and/or new versions of +\par \hich\af1\dbch\af31505\loch\f1 the GNU Affero Gen\hich\af1\dbch\af31505\loch\f1 eral Public License from time to time. Such new versions +\par \hich\af1\dbch\af31505\loch\f1 will be similar in spirit to the present version, but may differ in detail to +\par \hich\af1\dbch\af31505\loch\f1 address new problems or concerns. +\par +\par \hich\af1\dbch\af31505\loch\f1 Each version is given a distinguishing version number. If the +\par \hich\af1\dbch\af31505\loch\f1 Program specifies th\hich\af1\dbch\af31505\loch\f1 at a certain numbered version of the GNU Affero General +\par \hich\af1\dbch\af31505\loch\f1 Public License "or any later version" applies to it, you have the +\par \hich\af1\dbch\af31505\loch\f1 option of following the terms and conditions either of that numbered +\par \hich\af1\dbch\af31505\loch\f1 version or of any later version published by the Free Software +\par \hich\af1\dbch\af31505\loch\f1 Fo\hich\af1\dbch\af31505\loch\f1 undation. If the Program does not specify a version number of the +\par \hich\af1\dbch\af31505\loch\f1 GNU Affero General Public License, you may choose any version ever published +\par \hich\af1\dbch\af31505\loch\f1 by the Free Software Foundation. +\par +\par \hich\af1\dbch\af31505\loch\f1 If the Program specifies that a proxy can decide which future +\par \hich\af1\dbch\af31505\loch\f1 versions of th\hich\af1\dbch\af31505\loch\f1 e GNU Affero General Public License can be used, that proxy's +\par \hich\af1\dbch\af31505\loch\f1 public statement of acceptance of a version permanently authorizes you +\par \hich\af1\dbch\af31505\loch\f1 to choose that version for the Program. +\par +\par \hich\af1\dbch\af31505\loch\f1 Later license versions may give you additional or different +\par \hich\af1\dbch\af31505\loch\f1 permissions. However, no additional obligations are imposed on any +\par \hich\af1\dbch\af31505\loch\f1 author or copyright holder as a result of your choosing to follow a +\par \hich\af1\dbch\af31505\loch\f1 later version. +\par +\par \hich\af1\dbch\af31505\loch\f1 15. Disclaimer of Warranty. +\par +\par \hich\af1\dbch\af31505\loch\f1 THERE IS \hich\af1\dbch\af31505\loch\f1 NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +\par \hich\af1\dbch\af31505\loch\f1 APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +\par \hich\af1\dbch\af31505\loch\f1 HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +\par \hich\af1\dbch\af31505\loch\f1 OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BU\hich\af1\dbch\af31505\loch\f1 T NOT LIMITED TO, +\par \hich\af1\dbch\af31505\loch\f1 THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +\par \hich\af1\dbch\af31505\loch\f1 PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +\par \hich\af1\dbch\af31505\loch\f1 IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +\par \hich\af1\dbch\af31505\loch\f1 ALL NECESSARY SERVI\hich\af1\dbch\af31505\loch\f1 CING, REPAIR OR CORRECTION. +\par +\par \hich\af1\dbch\af31505\loch\f1 16. Limitation of Liability. +\par +\par \hich\af1\dbch\af31505\loch\f1 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +\par \hich\af1\dbch\af31505\loch\f1 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +\par \hich\af1\dbch\af31505\loch\f1 THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU \hich\af1\dbch\af31505\loch\f1 FOR DAMAGES, INCLUDING ANY +\par \hich\af1\dbch\af31505\loch\f1 GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +\par \hich\af1\dbch\af31505\loch\f1 USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +\par \hich\af1\dbch\af31505\loch\f1 DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +\par \hich\af1\dbch\af31505\loch\f1 PARTIES\hich\af1\dbch\af31505\loch\f1 OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +\par \hich\af1\dbch\af31505\loch\f1 EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +\par \hich\af1\dbch\af31505\loch\f1 SUCH DAMAGES. +\par +\par \hich\af1\dbch\af31505\loch\f1 17. Interpretation of Sections 15 and 16. +\par +\par \hich\af1\dbch\af31505\loch\f1 If the disclaimer of warranty and limitation of liability provided +\par \hich\af1\dbch\af31505\loch\f1 above cannot be given local legal effect according to their terms, +\par \hich\af1\dbch\af31505\loch\f1 reviewing courts shall apply local law that most closely approximates +\par \hich\af1\dbch\af31505\loch\f1 an absolute waiver of all civil liability in conne\hich\af1\dbch\af31505\loch\f1 ction with the +\par \hich\af1\dbch\af31505\loch\f1 Program, unless a warranty or assumption of liability accompanies a +\par \hich\af1\dbch\af31505\loch\f1 copy of the Program in return for a fee. +\par +\par \hich\af1\dbch\af31505\loch\f1 END OF TERMS AND CONDITIONS +\par +\par \hich\af1\dbch\af31505\loch\f1 How to Apply These Terms to Your New Programs +\par +\par \hich\af1\dbch\af31505\loch\f1 If you develop a new\hich\af1\dbch\af31505\loch\f1 program, and you want it to be of the greatest +\par \hich\af1\dbch\af31505\loch\f1 possible use to the public, the best way to achieve this is to make it +\par \hich\af1\dbch\af31505\loch\f1 free software which everyone can redistribute and change under these terms. +\par +\par \hich\af1\dbch\af31505\loch\f1 To do so, attach the following notices to the program. It\hich\af1\dbch\af31505\loch\f1 is safest +\par \hich\af1\dbch\af31505\loch\f1 to attach them to the start of each source file to most effectively +\par \hich\af1\dbch\af31505\loch\f1 state the exclusion of warranty; and each file should have at least +\par \hich\af1\dbch\af31505\loch\f1 the "copyright" line and a pointer to where the full notice is found. +\par +\par \hich\af1\dbch\af31505\loch\f1 <one line to give the program's na\hich\af1\dbch\af31505\loch\f1 me and a brief idea of what it does.> +\par \hich\af1\dbch\af31505\loch\f1 Copyright (C) <year> <name of author> +\par +\par \hich\af1\dbch\af31505\loch\f1 This program is free software: you can redistribute it and/or modify +\par \hich\af1\dbch\af31505\loch\f1 it under the terms of the GNU Affero General Public License as published +\par \hich\af1\dbch\af31505\loch\f1 by the Free Software\hich\af1\dbch\af31505\loch\f1 Foundation, either version 3 of the License, or +\par \hich\af1\dbch\af31505\loch\f1 (at your option) any later version. +\par +\par \hich\af1\dbch\af31505\loch\f1 This program is distributed in the hope that it will be useful, +\par \hich\af1\dbch\af31505\loch\f1 but WITHOUT ANY WARRANTY; without even the implied warranty of +\par \hich\af1\dbch\af31505\loch\f1 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +\par \hich\af1\dbch\af31505\loch\f1 GNU Affero General Public License for more details. +\par +\par \hich\af1\dbch\af31505\loch\f1 You should have received a copy of the GNU Affero General Publ\hich\af1\dbch\af31505\loch\f1 ic License +\par \hich\af1\dbch\af31505\loch\f1 along with this program. If not, see <https://www.gnu.org/licenses/>. +\par +\par \hich\af1\dbch\af31505\loch\f1 Also add information on how to contact you by electronic and paper mail. +\par +\par \hich\af1\dbch\af31505\loch\f1 If your software can interact with users remotely through a computer +\par \hich\af1\dbch\af31505\loch\f1 network, you should also\hich\af1\dbch\af31505\loch\f1 make sure that it provides a way for users to +\par \hich\af1\dbch\af31505\loch\f1 get its source. For example, if your program is a web application, its +\par \hich\af1\dbch\af31505\loch\f1 interface could display a "Source" link that leads users to an archive +\par \hich\af1\dbch\af31505\loch\f1 of the code. There are many ways you could offer source, and diff\hich\af1\dbch\af31505\loch\f1 erent +\par \hich\af1\dbch\af31505\loch\f1 solutions will be better for different programs; see section 13 for the +\par \hich\af1\dbch\af31505\loch\f1 specific requirements. +\par +\par \hich\af1\dbch\af31505\loch\f1 You should also get your employer (if you work as a programmer) or school, +\par \hich\af1\dbch\af31505\loch\f1 if any, to sign a "copyright disclaimer" for the program, if necessary. +\par \hich\af1\dbch\af31505\loch\f1 For m\hich\af1\dbch\af31505\loch\f1 ore information on this, and how to apply and follow the GNU AGPL, see +\par \hich\af1\dbch\af31505\loch\f1 <https://www.gnu.org/licenses/>.}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid11478430\charrsid12386343 +\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a +9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad +5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6 +b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0 +0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6 +a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f +c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512 +0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462 +a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865 +6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b +4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b +4757e8d3f729e245eb2b260a0238fd010000ffff0300504b0304140006000800000021002d2e00bc9c070000cb200000160000007468656d652f7468656d652f +7468656d65312e786d6cec59cd8b1bc915bf07f23f347d97f5d5ad8fc1f2a24fcfda33b6b164873dd648a5eef2547789aad28cc56208de532e81c026e49085bd +ed21842cecc22eb9e48f31d8249b3f22afaa5bdd5552c99e191c3061463074977eefd5afde7bf5de53d5ddcf5e26d4bbc05c1096f6fcfa9d9aefe174ce16248d +7afeb3d9a4d2f13d2151ba4094a5b8e76fb0f03fbbf7eb5fdd454732c609f6403e1547a8e7c752ae8eaa5531876124eeb0154ee1bb25e30992f0caa3ea82a34b +d09bd06aa3566b55134452df4b51026a6720e32d98f778b92473ecdfdbaa1f53982395420dcc299f2ae5389731b08bf3ba42888d1852ee5d20daf361a605bb9c +e197d2f7281212bee8f935fde757efddada2a35c88ca03b286dc44ffe572b9c0e2bca1e7e4d1593169108441ab5fe8d7002af771e3f6b8356e15fa3400cde7b0 +d28c8badb3dd180639d600658f0edda3f6a859b7f086fee61ee77ea83e165e8332fdc11e7e321982152dbc0665f8700f1f0eba8391ad5f83327c6b0fdfaef547 +41dbd2af413125e9f91eba16b69ac3ed6a0bc892d16327bc1b06937623575ea2201a8ae852532c592a0fc55a825e303e018002522449eac9cd0a2fd11ce27888 +2839e3c43b21510c81b7422913305c6bd426b526fc579f403f698fa2238c0c69c50b9888bd21c5c713734e56b2e73f00adbe0179fbf3cf6f5efff8e6f54f6fbe +faeacdebbfe7736b5596dc314a2353ee97effef09f6f7eebfdfb876f7ff9fa8fd9d4bb7861e2dffded77effef1cff7a9871597a678fba7efdffdf8fddb3ffffe +5f7ffddaa1bdcfd199099f91040bef11bef49eb20416e8e08fcff8f524663122a6443f8d044a919ac5a17f2c630bfd68832872e006d8b6e3730ea9c605bcbf7e +61119ec67c2d8943e3c338b180a78cd101e34e2b3c547319669eadd3c83d395f9bb8a7085db8e61ea2d4f2f278bd821c4b5c2a8731b6683ea1289528c229969e +fa8e9d63ec58dd178458763d2573ce045b4aef0be20d10719a6446ceac682a858e49027ed9b80882bf2ddb9c3ef7068cba563dc2173612f606a20ef2334c2d33 +de476b891297ca194aa869f013246317c9e986cf4ddc5848f0748429f3c60b2c844be63187f51a4e7f0869c6edf653ba496c2497e4dca5f30431662247ec7c18 +a364e5c24e491a9bd8cfc5398428f29e30e9829f327b87a877f0034a0fbafb39c196bb3f9c0d9e418635299501a2be5973872fef6366c5ef74439708bb524d9f +27568aed73e28c8ec13ab242fb04638a2ed10263efd9e70e0603b6b26c5e927e10435639c6aec07a80ec5855ef2916d8d3cdcd7e9e3c21c20ad9298ed8013ea7 +9b9dc4b3416982f821cd8fc0eba6cdc750ea1257003ca6f37313f888401708f1e234ca63013a8ce03ea8f5498cac02a6de853b5e37dcf2df55f618eccb17168d +2bec4b90c1d79681c46ecabcd7363344ad09ca809921e8325ce916442cf79722aab86ab1b5536e696fdad20dd01d594d4f42d20f76403bbd4ff8bfeb7da0c378 +fb976f1c9bede3f43b6ec556b2ba66a77328991ceff4378770bb5dcd90f105f9f49b9a115aa74f30d491fd8c75dbd3dcf634feff7d4f73683fdf763287fa8ddb +4ec6870ee3b693c90f573e4e2753362fd0d7a8038feca0471ffb24074f7d9684d2a9dc507c22f4c18f80df338b090c2a397de6898b53c0550c8faaccc104162e +e248cb789cc9df10194f63b482d3a1baaf944422571d096fc5041c1ae961a76e85a7ebe4942db2c3ce7a5d1d6c66955520598ed7c2621c0eaa64866eb5cb03bc +42bd661be983d62d01257b1d12c6643689a683447b3ba88ca48f75c1680e127a651f8545d7c1a2a3d46f5db5c702a8155e811fdc1efc4ceff96100222004e771 +d09c2f949f32576fbdab9df9313d7dc89856044083bd8d80d2d35dc5f5e0f2d4eab250bb82a72d1246b8d924b46574832762f8199c47a71abd0a8debfaba5bba +d4a2a74ca1e783d02a69b43bef6371535f83dc6e6ea0a9992968ea5df6fc5633849099a355cf5fc2a1313c262b881da17e73211ac1ddcb5cf26cc3df24b3acb8 +902324e2cce03ae964d9202112738f92a4e7abe5176ea0a9ce219a5bbd0109e19325d785b4f2a99103a7db4ec6cb259e4bd3edc688b274f60a193ecb15ce6fb5 +f8cdc14a92adc1ddd37871e99dd1357f8a20c4c2765d19704104dc1dd4336b2e085c861589ac8cbf9dc294a75df3364ac750368ee82a46794531937906d7a9bc +a0a3df0a1b186ff99ac1a08649f2427816a9026b1ad5aaa645d5c8381cacba1f1652963392665933adaca2aaa63b8b59336ccbc08e2d6f56e40d565b13434e33 +2b7c96ba77536e779beb76fa84a24a80c10bfb39aaee150a8241ad9ccca2a618efa76195b3f351bb766c17f8016a57291246d66f6dd5eed8ada811cee960f046 +951fe476a3168696dbbe525b5adf9b9b17dbecec05248f1174b96b2a8576255c5b73040dd154f72459da802df252e65b039ebc35273dffcb5ad80f868d7058a9 +75c271256806b54a27ec372bfd306cd6c761bd361a345e41619171520fb33bfb095c60d04d7e73afc7f76eef93ed1dcd9d394baa4cdfca5735717d7b5f6f58b7 +f7d94dbc375397f3be4720e97cd96a4cbacdeea055e936fb934a301a742add616b5019b586edd164340c3bddc92bdfbbd0e0a0df1c06ad71a7d2aa0f8795a055 +53f43bdd4a3b6834fa41bbdf1907fd57791b032bcfd2476e0b30afe675efbf000000ffff0300504b0304140006000800000021000dd1909fb60000001b010000 +270000007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88 +d0add40384e4350d363f2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567 +914b284d262452282e3198720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f +1f165dfe514173d9850528a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c020000130000 +0000000000000000000000000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00 +000000000000000000000000300100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c0000000000000000 +0000000000190200007468656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d00140006000800000021002d2e00bc9c070000cb2000 +001600000000000000000000000000d60200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000 +001b0100002700000000000000000000000000a60a00007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000a10b00000000} +{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d +617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169 +6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363 +656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e} +{\*\latentstyles\lsdstimax376\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1; +\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4; +\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7; +\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9; +\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3; +\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6; +\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong; +\lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Table;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 1; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 6; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 6; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Contemporary;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Elegant;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Professional; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority39 \lsdlocked0 Table Grid;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Theme;\lsdsemihidden1 \lsdlocked0 Placeholder Text; +\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2; +\lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List; +\lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdpriority61 \lsdlocked0 Light List Accent 1; +\lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdsemihidden1 \lsdlocked0 Revision; +\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1; +\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdpriority72 \lsdlocked0 Colorful List Accent 1; +\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2; +\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2; +\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2; +\lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3; +\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3; +\lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4; +\lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4; +\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4; +\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5; +\lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5; +\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5; +\lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6; +\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6; +\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6; +\lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis; +\lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography; +\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4; +\lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4; +\lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1; +\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1; +\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2; +\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2; +\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3; +\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4; +\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4; +\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5; +\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5; +\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6; +\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6; +\lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark; +\lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1; +\lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1; +\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2; +\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3; +\lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3; +\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4; +\lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4; +\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5; +\lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5; +\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6; +\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Mention; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hashtag;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Unresolved Mention;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Link;}}{\*\datastore 01050000 +02000000180000004d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000 +d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e50000000000000000000000004016 +b0f74b47d601feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000105000000000000}}
\ No newline at end of file diff --git a/UVtools.Installer/UVtools.Installer.wixproj b/UVtools.Installer/UVtools.Installer.wixproj new file mode 100644 index 0000000..5fe9d8d --- /dev/null +++ b/UVtools.Installer/UVtools.Installer.wixproj @@ -0,0 +1,91 @@ +<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">x86</Platform> + <ProductVersion>3.7</ProductVersion> + <ProjectGuid>{41224896-08e9-4f22-9e56-5f9d46dec7d2}</ProjectGuid> + <SchemaVersion>2.0</SchemaVersion> + <OutputName>UVtools</OutputName> + <OutputType>Package</OutputType> + <WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath> + <WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath> + <!-- If MSIProductVersion not passed in, try to get it from TFBuild Environments (XAML Builds)--> + <MSIProductVersion Condition=" '$(MSIProductVersion)' == '' ">$([System.Text.RegularExpressions.Regex]::Match($(TF_BUILD_BUILDNUMBER), "\d+.\d+.\d+.\d+"))</MSIProductVersion> + <!-- If MSIProductVersion still not known, try to get it from TFBuild Environments (V.Next Builds)--> + <MSIProductVersion Condition=" '$(MSIProductVersion)' == '' ">$([System.Text.RegularExpressions.Regex]::Match($(BUILD_BUILDNUMBER), "\d+.\d+.\d+.\d+"))</MSIProductVersion> + <!-- If MSIProductVersion still not known, default to lowerbound 0.0.1 for developer builds.--> + <MSIProductVersion Condition=" '$(MSIProductVersion)' == '' ">0.0.1</MSIProductVersion> + <!-- The following allows one cert to be referenced from the certificate store for self-signing in localbuilds and another cert to be passed in during official builds. --> + <AppxCertificateThumbprint Condition=" '$(AppxCertificateThumbprint)' == '' "> + </AppxCertificateThumbprint> + <AppxTimestampUrl Condition=" '$(AppxTimestampUrl)' == '' "> + </AppxTimestampUrl> + <MsixCertificateThumbprint Condition=" '$(MsixCertificateThumbprint)' == '' "> + </MsixCertificateThumbprint> + <MsixTimestampUrl Condition=" '$(MsixTimestampUrl)' == '' "> + </MsixTimestampUrl> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> + <OutputPath>bin\$(Configuration)\</OutputPath> + <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath> + <DefineConstants>Debug;MSIProductVersion=$(MSIProductVersion)</DefineConstants> + <WixVariables>WixUIBannerBmp=Resources\Banner.jpg;WixUIDialogBmp=Resources\Dialog.jpg;WixUILicenseRtf=Resources\EULA.rtf</WixVariables> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> + <OutputPath>bin\$(Configuration)\</OutputPath> + <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath> + <DefineConstants>MSIProductVersion=$(MSIProductVersion)</DefineConstants> + <WixVariables>WixUIBannerBmp=Resources\Banner.jpg;WixUIDialogBmp=Resources\Dialog.jpg;WixUILicenseRtf=Resources\EULA.rtf</WixVariables> + </PropertyGroup> + <ItemGroup> + <Folder Include="Code" /> + </ItemGroup> + <ItemGroup> + <Compile Include="Code\Product.wxs" /> + <Compile Include="Code\Features.wxs" /> + <Compile Include="Code\IISMeta.wxs" /> + <Compile Include="Code\UI.wxs" /> + <Compile Include="Code\UI-CustomDialog.wxs" /> + </ItemGroup> + <ItemGroup> + <WixExtension Include="WixIIsExtension"> + <HintPath>$(WixExtDir)\WixIIsExtension.dll</HintPath> + <Name>WixIIsExtension</Name> + </WixExtension> + <WixExtension Include="WixUIExtension"> + <HintPath>$(WixExtDir)\WixUIExtension.dll</HintPath> + <Name>WixUIExtension</Name> + </WixExtension> + <WixExtension Include="WixNetFxExtension"> + <HintPath>$(WixExtDir)\WixNetFxExtension.dll</HintPath> + <Name>WixNetFxExtension</Name> + </WixExtension> + </ItemGroup> + <ItemGroup> + <Folder Include="Resources" /> + </ItemGroup> + <ItemGroup> + <Content Include="Resources\Banner.jpg" /> + <Content Include="Resources\Dialog.jpg" /> + <Content Include="Resources\EULA.rtf" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\UVtools.InstallerMM\UVtools.InstallerMM.wixproj"> + <Name>UVtools.InstallerMM</Name> + <Project>{e53baa5d-29a8-4287-b3aa-1aff5a4bdc6c}</Project> + <Private>True</Private> + <DoNotHarvest>True</DoNotHarvest> + <RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups> + <RefTargetDir>INSTALLFOLDER</RefTargetDir> + </ProjectReference> + </ItemGroup> + <Import Project="$(WixTargetsPath)" /> + <!-- + To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Wix.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project>
\ No newline at end of file diff --git a/UVtools.InstallerMM/UVtools.InstallerMM.wixproj b/UVtools.InstallerMM/UVtools.InstallerMM.wixproj new file mode 100644 index 0000000..98f876f --- /dev/null +++ b/UVtools.InstallerMM/UVtools.InstallerMM.wixproj @@ -0,0 +1,35 @@ +<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">x86</Platform> + <ProductVersion>3.7</ProductVersion> + <ProjectGuid>{e53baa5d-29a8-4287-b3aa-1aff5a4bdc6c}</ProjectGuid> + <SchemaVersion>2.0</SchemaVersion> + <OutputName>UVtools.InstallerMM</OutputName> + <OutputType>Module</OutputType> + <WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath> + <WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> + <OutputPath>bin\$(Configuration)\</OutputPath> + <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath> + <DefineConstants>Debug</DefineConstants> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> + <OutputPath>bin\$(Configuration)\</OutputPath> + <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath> + </PropertyGroup> + <ItemGroup> + <Compile Include="UVtools.InstallerMM.wxs" /> + <Compile Include="UVtools.InstallerMMcustom.wxs" /> + </ItemGroup> + <Import Project="$(WixTargetsPath)" /> + <!-- + To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Wix.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project>
\ No newline at end of file diff --git a/UVtools.InstallerMM/UVtools.InstallerMM.wxs b/UVtools.InstallerMM/UVtools.InstallerMM.wxs new file mode 100644 index 0000000..4701e41 --- /dev/null +++ b/UVtools.InstallerMM/UVtools.InstallerMM.wxs @@ -0,0 +1,278 @@ +<?xml version="1.0" encoding="utf-8"?> +<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> + <?define ComponentRules="OneToOne"?> + <!-- SourceDir instructs IsWiX the location of the directory that contains files for this merge module --> + <?define SourceDir="..\UVtools.GUI\bin\Release"?> + <Module Id="UVtools" Language="1033" Version="0.5.2.1"> + <Package Id="12aaa1cf-ff06-4a02-abd5-2ac01ac4f83b" Manufacturer="PTRTECH" InstallerVersion="200" Keywords="MSLA, DLP" Description="MSLA/DLP, file analysis, repair, conversion and manipulation" /> + <Directory Id="TARGETDIR" Name="SourceDir"> + <Directory Id="DesktopFolder" /> + <Directory Id="MergeRedirectFolder"> + <Component Id="owc55D108694B5DE9E772548F1CA0A8CAB2" Guid="b22da61c-21cf-d943-2651-127d1c8bb869"> + <File Id="owf55D108694B5DE9E772548F1CA0A8CAB2" Source="$(var.SourceDir)\ApplicationManagement.dll" KeyPath="yes" /> + </Component> + <Component Id="owc0F7CC7ACEA840EC81FADDEE08D4B54C3" Guid="8de4454d-fc84-51cf-d44c-612dcea01607"> + <File Id="owf0F7CC7ACEA840EC81FADDEE08D4B54C3" Source="$(var.SourceDir)\BinarySerializer.dll" KeyPath="yes" /> + </Component> + <Component Id="owcD105ECB58FF1CF51ADAD527C6D66FF5F" Guid="21d48ca2-4a61-bbdc-371e-b0aab538c74a"> + <File Id="owfD105ECB58FF1CF51ADAD527C6D66FF5F" Source="$(var.SourceDir)\CHANGELOG.md" KeyPath="yes" /> + </Component> + <Component Id="owc2730402761C4A57C259620B9B5A65161" Guid="869585d9-61dc-7a31-7b2f-4843155764e3"> + <File Id="owf2730402761C4A57C259620B9B5A65161" Source="$(var.SourceDir)\CREDITS.md" KeyPath="yes" /> + </Component> + <Component Id="owc8EF635BC57066045F57245051BEECCE4" Guid="1cf9ad54-dcb8-07dc-af17-486d614620f7"> + <File Id="owf8EF635BC57066045F57245051BEECCE4" Source="$(var.SourceDir)\Cyotek.Windows.Forms.ImageBox.dll" KeyPath="yes" /> + </Component> + <Component Id="owc25ABE3DF1B281670E77FD3B882B58B9F" Guid="de5c6697-501a-2e10-da10-134ad4f060ad"> + <File Id="owf25ABE3DF1B281670E77FD3B882B58B9F" Source="$(var.SourceDir)\Cyotek.Windows.Forms.ImageBox.xml" KeyPath="yes" /> + </Component> + <Component Id="owc5A25DAF599EFAF9BDE0A414028049BB5" Guid="08486262-cc80-60a3-c6b2-f5c1bba4699d"> + <File Id="owf5A25DAF599EFAF9BDE0A414028049BB5" Source="$(var.SourceDir)\Emgu.CV.Platform.NetFramework.dll" KeyPath="yes" /> + </Component> + <Component Id="owcE199C6CB41C5AFF465CD5E3CF52EBD12" Guid="fc04ad72-cf5d-d674-3d12-1ac6d3989b26"> + <File Id="owfE199C6CB41C5AFF465CD5E3CF52EBD12" Source="$(var.SourceDir)\Emgu.CV.Platform.NetFramework.xml" KeyPath="yes" /> + </Component> + <Component Id="owc63D81B12D4DED477220E84E2AEBD7DBE" Guid="b08152e4-c420-0b27-69c4-3f58ac0a5fc7"> + <File Id="owf63D81B12D4DED477220E84E2AEBD7DBE" Source="$(var.SourceDir)\Emgu.CV.Platform.NetStandard.dll" KeyPath="yes" /> + </Component> + <Component Id="owcAA2708C3C163D011C2BDB733607572F0" Guid="8bab3501-a8d1-62ca-59e2-c8f528af796e"> + <File Id="owfAA2708C3C163D011C2BDB733607572F0" Source="$(var.SourceDir)\Emgu.CV.Platform.NetStandard.xml" KeyPath="yes" /> + </Component> + <Component Id="owc08C959AF4C2883BEBDD9830863C05E9E" Guid="0a3d45eb-02e4-a772-acdb-d6fefb9f9907"> + <File Id="owf08C959AF4C2883BEBDD9830863C05E9E" Source="$(var.SourceDir)\LICENSE" KeyPath="yes" /> + </Component> + <Component Id="owc3FC8434C1A84605AEEBC6A100CA2F3E1" Guid="47d7e276-db6d-424e-d797-1a69e1e24b3b"> + <File Id="owf3FC8434C1A84605AEEBC6A100CA2F3E1" Source="$(var.SourceDir)\Newtonsoft.Json.dll" KeyPath="yes" /> + </Component> + <Component Id="owcDE8FDCCF922CA433A075036DF5C1BE38" Guid="3a65cb72-6e09-91ed-08ba-4f7eadd88867"> + <File Id="owfDE8FDCCF922CA433A075036DF5C1BE38" Source="$(var.SourceDir)\Newtonsoft.Json.xml" KeyPath="yes" /> + </Component> + <Component Id="owcCE9BC93A259754292A772FFBD0707880" Guid="0fd9f7f4-8ed5-a50f-352f-a7fcc169d9ee"> + <File Id="owfCE9BC93A259754292A772FFBD0707880" Source="$(var.SourceDir)\SixLabors.Core.dll" KeyPath="yes" /> + </Component> + <Component Id="owc2D7EC5C1FE4514E7C7CCB37E8D125A40" Guid="08ff79c4-bff0-c6d4-ffba-1f1fcbb32f8b"> + <File Id="owf2D7EC5C1FE4514E7C7CCB37E8D125A40" Source="$(var.SourceDir)\SixLabors.Core.xml" KeyPath="yes" /> + </Component> + <Component Id="owc36F067EBBAC4A5B55BCC215DAB0D892B" Guid="31c6f4c4-ace8-5e28-4ae1-0d8f4f7122b9"> + <File Id="owf36F067EBBAC4A5B55BCC215DAB0D892B" Source="$(var.SourceDir)\SixLabors.ImageSharp.dll" KeyPath="yes" /> + </Component> + <Component Id="owc71BB2593A187E41D45ACB014E6A21293" Guid="672fc09e-6ff6-3166-9614-516281a7e144"> + <File Id="owf71BB2593A187E41D45ACB014E6A21293" Source="$(var.SourceDir)\SixLabors.ImageSharp.xml" KeyPath="yes" /> + </Component> + <Component Id="owc266C4DEC591C8A54CCC1D3C61FC512AA" Guid="2224179c-4d85-88a2-23e2-bc0c27cadd0e"> + <File Id="owf266C4DEC591C8A54CCC1D3C61FC512AA" Source="$(var.SourceDir)\System.Buffers.dll" KeyPath="yes" /> + </Component> + <Component Id="owcB3975236E57AF3476C692D6E3C40D3A7" Guid="5d90e46b-650b-92f7-6d00-2dd61f8a4944"> + <File Id="owfB3975236E57AF3476C692D6E3C40D3A7" Source="$(var.SourceDir)\System.Buffers.xml" KeyPath="yes" /> + </Component> + <Component Id="owcF2B199C7800AE0BBCC0001E0A61F6988" Guid="405dfe99-fffe-4059-26e0-c7d1bd0a0bed"> + <File Id="owfF2B199C7800AE0BBCC0001E0A61F6988" Source="$(var.SourceDir)\System.Memory.dll" KeyPath="yes" /> + </Component> + <Component Id="owc39A04829552DF7980DAF116FC429509C" Guid="9062fe86-c227-5b70-9578-26e6cab46440"> + <File Id="owf39A04829552DF7980DAF116FC429509C" Source="$(var.SourceDir)\System.Memory.xml" KeyPath="yes" /> + </Component> + <Component Id="owcACF44A9199404726B3D0BCAC3DDC9884" Guid="6f6141de-d259-6b2b-c804-923361cfa667"> + <File Id="owfACF44A9199404726B3D0BCAC3DDC9884" Source="$(var.SourceDir)\System.Numerics.Vectors.dll" KeyPath="yes" /> + </Component> + <Component Id="owcAA55BD7B81B013F159882A754BED353D" Guid="381d46d2-a95c-fb17-e35f-8a168dd2b2f9"> + <File Id="owfAA55BD7B81B013F159882A754BED353D" Source="$(var.SourceDir)\System.Numerics.Vectors.xml" KeyPath="yes" /> + </Component> + <Component Id="owc342C8E4E3FD4C3812596B5DEA9DFA6DF" Guid="0dbd5985-58a6-164d-ee5c-e36378843e69"> + <File Id="owf342C8E4E3FD4C3812596B5DEA9DFA6DF" Source="$(var.SourceDir)\System.Reflection.TypeExtensions.dll" KeyPath="yes" /> + </Component> + <Component Id="owcDAF8FAAFEF02D81A63FBF6FDEC9B5412" Guid="a735c89f-9a82-5036-d846-2a4443d5215a"> + <File Id="owfDAF8FAAFEF02D81A63FBF6FDEC9B5412" Source="$(var.SourceDir)\System.Reflection.TypeExtensions.xml" KeyPath="yes" /> + </Component> + <Component Id="owc496161876FAED4A7A0471BC80B909F19" Guid="7fe0a99f-4733-5247-2280-d9c79313b3a1"> + <File Id="owf496161876FAED4A7A0471BC80B909F19" Source="$(var.SourceDir)\System.Runtime.CompilerServices.Unsafe.dll" KeyPath="yes" /> + </Component> + <Component Id="owc912B341D759C6D4043ED430D16F8011A" Guid="fab0f014-28b2-d48f-5aa8-5a8e3bcf3ffb"> + <File Id="owf912B341D759C6D4043ED430D16F8011A" Source="$(var.SourceDir)\System.Runtime.CompilerServices.Unsafe.xml" KeyPath="yes" /> + </Component> + <Component Id="owc21B8C8C0F69E3CD1398B9A0674DF07BD" Guid="1e472543-e636-904d-da5b-cddaac2d36b1"> + <File Id="owf21B8C8C0F69E3CD1398B9A0674DF07BD" Source="$(var.SourceDir)\UVtools.exe" KeyPath="yes"> + <Shortcut Id="sc6327849DA5C02D2396E91B8B1892E03C" Name="UVtools" Directory="DesktopFolder" /> + <Shortcut Id="sc218BF75801887335D1B30BAFB94BA631" Name="UVtools" Directory="scd220707349D4C8FA275285514283F3E2A" /> + </File> + </Component> + <Component Id="owcFD68A2B6BB01205FB923D13D9A1EB333" Guid="a2bfa40e-e0f8-47b6-2570-e609ea5e428d"> + <File Id="owfFD68A2B6BB01205FB923D13D9A1EB333" Source="$(var.SourceDir)\UVtools.exe.config" KeyPath="yes" /> + </Component> + <Component Id="owcB6603ABDC143C6488F777606A4A341B1" Guid="040f11b5-152d-c7f3-9cd1-5ad8b731e02a"> + <File Id="owfB6603ABDC143C6488F777606A4A341B1" Source="$(var.SourceDir)\UVtools.Parser.dll" KeyPath="yes" /> + </Component> + <Directory Id="owdF7EC390A16A84F49221C0816B06C7316" Name="PrusaSlicer"> + <Directory Id="owd6830BAD7B93348EE48856553BF6B1294" Name="printer"> + <Component Id="owc0C5D1EB90B2065C71E0743A0ABEC1D12" Guid="ede4de2a-8340-d293-f703-d556ddc2f6f4"> + <File Id="owf0C5D1EB90B2065C71E0743A0ABEC1D12" Source="$(var.SourceDir)\PrusaSlicer\printer\AnyCubic Photon S.ini" KeyPath="yes" /> + </Component> + <Component Id="owc518BC218498F95CE45BB60850FF7F20A" Guid="fcd15fa3-d1a5-ddf6-5f98-63beb7517c20"> + <File Id="owf518BC218498F95CE45BB60850FF7F20A" Source="$(var.SourceDir)\PrusaSlicer\printer\AnyCubic Photon Zero.ini" KeyPath="yes" /> + </Component> + <Component Id="owc9F0ED1D4E7D104FE0DC61D9F7CFE999A" Guid="9d8198ed-268b-949f-3b40-9967c446da71"> + <File Id="owf9F0ED1D4E7D104FE0DC61D9F7CFE999A" Source="$(var.SourceDir)\PrusaSlicer\printer\AnyCubic Photon.ini" KeyPath="yes" /> + </Component> + <Component Id="owc7EDB8251A3EA203AF2B7D4CA7ACE2CD2" Guid="ee32d320-1828-deba-29ca-a05a60720cfc"> + <File Id="owf7EDB8251A3EA203AF2B7D4CA7ACE2CD2" Source="$(var.SourceDir)\PrusaSlicer\printer\Creality LD-002R.ini" KeyPath="yes" /> + </Component> + <Component Id="owc260A3135FA730F1E8324D011F6A1C4B0" Guid="7a4e2e49-81f9-7ad2-786a-4b4434c0707f"> + <File Id="owf260A3135FA730F1E8324D011F6A1C4B0" Source="$(var.SourceDir)\PrusaSlicer\printer\Elegoo Mars Saturn.ini" KeyPath="yes" /> + </Component> + <Component Id="owc4D5073ED375E0DF9EFA87FDD048B32C6" Guid="d8c3b91c-2830-d4b2-0813-0cbcfbdc272d"> + <File Id="owf4D5073ED375E0DF9EFA87FDD048B32C6" Source="$(var.SourceDir)\PrusaSlicer\printer\Elegoo Mars.ini" KeyPath="yes" /> + </Component> + <Component Id="owc76AABDF1DF0C1F5E05FF1F07A1630357" Guid="e472beae-9800-814f-adcb-846954b58041"> + <File Id="owf76AABDF1DF0C1F5E05FF1F07A1630357" Source="$(var.SourceDir)\PrusaSlicer\printer\EPAX X1.ini" KeyPath="yes" /> + </Component> + <Component Id="owc96C59034EB76D71E85BCE617CECE04D8" Guid="c082b835-0284-a751-669b-6171ff55fd10"> + <File Id="owf96C59034EB76D71E85BCE617CECE04D8" Source="$(var.SourceDir)\PrusaSlicer\printer\EPAX X10.ini" KeyPath="yes" /> + </Component> + <Component Id="owc6B72C7720CEFE972272B28F4BFCF4845" Guid="898755b8-1325-b207-f85d-dda138939535"> + <File Id="owf6B72C7720CEFE972272B28F4BFCF4845" Source="$(var.SourceDir)\PrusaSlicer\printer\EPAX X133 4K Mono.ini" KeyPath="yes" /> + </Component> + <Component Id="owcBDCC55E8DE3569F9053A05EA9D764EF5" Guid="a25864cd-e8db-0b68-21f8-3624b9ed3c66"> + <File Id="owfBDCC55E8DE3569F9053A05EA9D764EF5" Source="$(var.SourceDir)\PrusaSlicer\printer\EPAX X156 4K Color.ini" KeyPath="yes" /> + </Component> + <Component Id="owc5C3D57BA78B3FB633FE137C11ABFF046" Guid="a58b5655-abbc-1a7e-e875-ddb174b93fae"> + <File Id="owf5C3D57BA78B3FB633FE137C11ABFF046" Source="$(var.SourceDir)\PrusaSlicer\printer\Kelant S400.ini" KeyPath="yes" /> + </Component> + <Component Id="owc2C278182AFE0ABA208CC627D83CBF3C3" Guid="d7c4029a-678e-65f9-a321-7fbfbc638575"> + <File Id="owf2C278182AFE0ABA208CC627D83CBF3C3" Source="$(var.SourceDir)\PrusaSlicer\printer\Nova3D Elfin.ini" KeyPath="yes" /> + </Component> + <Component Id="owc546AD041611346E8506BB31D2F47E34F" Guid="ba21e583-c82a-9c6e-20c1-0e416cd9b0d8"> + <File Id="owf546AD041611346E8506BB31D2F47E34F" Source="$(var.SourceDir)\PrusaSlicer\printer\Peopoly Phenom L.ini" KeyPath="yes" /> + </Component> + <Component Id="owcB3E343D0AF1C11367418C5C702943E47" Guid="0b9d51c3-427e-10fa-e4db-13f1953c42a2"> + <File Id="owfB3E343D0AF1C11367418C5C702943E47" Source="$(var.SourceDir)\PrusaSlicer\printer\Peopoly Phenom Noir.ini" KeyPath="yes" /> + </Component> + <Component Id="owc4DA3CE0E7C9E7FD0420BC98008CE61A5" Guid="842b1dda-c430-b658-0171-98317cda4b73"> + <File Id="owf4DA3CE0E7C9E7FD0420BC98008CE61A5" Source="$(var.SourceDir)\PrusaSlicer\printer\Peopoly Phenom.ini" KeyPath="yes" /> + </Component> + <Component Id="owcECDE9AFF31975330B052BE067CBF7747" Guid="59279739-67c2-e878-98e4-8a6fd7228af7"> + <File Id="owfECDE9AFF31975330B052BE067CBF7747" Source="$(var.SourceDir)\PrusaSlicer\printer\Phrozen Shuffle 4K.ini" KeyPath="yes" /> + </Component> + <Component Id="owc068BB7319947EA7DE29B950E2A6D568E" Guid="07cdd63b-4ff0-45bb-6bc8-a06e7d4d2d65"> + <File Id="owf068BB7319947EA7DE29B950E2A6D568E" Source="$(var.SourceDir)\PrusaSlicer\printer\Phrozen Shuffle Lite.ini" KeyPath="yes" /> + </Component> + <Component Id="owc4F7DA68FBE5404E7947C6E57D830BD18" Guid="b8861542-b10b-6c76-61d1-cfe9c2ef6c1e"> + <File Id="owf4F7DA68FBE5404E7947C6E57D830BD18" Source="$(var.SourceDir)\PrusaSlicer\printer\Phrozen Shuffle XL.ini" KeyPath="yes" /> + </Component> + <Component Id="owcE3C5EB6B6F0C3F57765457D6609A1347" Guid="c6a7b466-f370-61cb-6ea8-4f58e1a1ae4f"> + <File Id="owfE3C5EB6B6F0C3F57765457D6609A1347" Source="$(var.SourceDir)\PrusaSlicer\printer\Phrozen Shuffle.ini" KeyPath="yes" /> + </Component> + <Component Id="owcA72B3137C7468BB42D62EE5D01D0FCA5" Guid="d03183f0-ec43-e8ce-13ef-65e19d5c4968"> + <File Id="owfA72B3137C7468BB42D62EE5D01D0FCA5" Source="$(var.SourceDir)\PrusaSlicer\printer\Phrozen Sonic Mini.ini" KeyPath="yes" /> + </Component> + <Component Id="owc054C138D5EFB06BD1FBC0745B3022AC2" Guid="50a52fd5-27b6-ec62-7f7d-3fbbe3b87576"> + <File Id="owf054C138D5EFB06BD1FBC0745B3022AC2" Source="$(var.SourceDir)\PrusaSlicer\printer\Phrozen Sonic.ini" KeyPath="yes" /> + </Component> + <Component Id="owcF1C81BD9CF13A9B24A54441843BC646E" Guid="fcb5bbfe-5ddb-c7da-a07b-b72f1dcfcae5"> + <File Id="owfF1C81BD9CF13A9B24A54441843BC646E" Source="$(var.SourceDir)\PrusaSlicer\printer\Phrozen Transform.ini" KeyPath="yes" /> + </Component> + <Component Id="owcB4A5F5F4294ED25C4B87C67D8C33B83E" Guid="d3660efe-4e98-ff85-c0a0-8338b8af02f0"> + <File Id="owfB4A5F5F4294ED25C4B87C67D8C33B83E" Source="$(var.SourceDir)\PrusaSlicer\printer\QIDI Shadow5.5.ini" KeyPath="yes" /> + </Component> + <Component Id="owcA3F28F12E3289ECC5D85DE40DF866B26" Guid="509cc36e-f75c-132e-2c61-66f31434a7cb"> + <File Id="owfA3F28F12E3289ECC5D85DE40DF866B26" Source="$(var.SourceDir)\PrusaSlicer\printer\QIDI Shadow6.0 Pro.ini" KeyPath="yes" /> + </Component> + <Component Id="owcB527CA38F45FBB0A2DD46961788AE79C" Guid="743425a9-38e2-6c9a-c52e-f64281bf0ec5"> + <File Id="owfB527CA38F45FBB0A2DD46961788AE79C" Source="$(var.SourceDir)\PrusaSlicer\printer\Wanhao D7.ini" KeyPath="yes" /> + </Component> + <Component Id="owc0052488B3D5653FA4AC17575E3AA0158" Guid="5952c8ed-8253-42aa-ac71-674ba4e89db9"> + <File Id="owf0052488B3D5653FA4AC17575E3AA0158" Source="$(var.SourceDir)\PrusaSlicer\printer\Wanhao D8.ini" KeyPath="yes" /> + </Component> + <Component Id="owc0FA446796B886C670DBAE19746E53173" Guid="e57a604a-c22f-8ef9-78b6-8a8aca78ae84"> + <File Id="owf0FA446796B886C670DBAE19746E53173" Source="$(var.SourceDir)\PrusaSlicer\printer\Zortrax Inkspire.ini" KeyPath="yes" /> + </Component> + </Directory> + <Directory Id="owd73003341B520ABE88202958ACA4D0CED" Name="sla_print"> + <Component Id="owc4ACEFD4B0896C4BAD024C72FFF0A6BC2" Guid="507e2a66-2730-7436-b5c6-fa2e55d92633"> + <File Id="owf4ACEFD4B0896C4BAD024C72FFF0A6BC2" Source="$(var.SourceDir)\PrusaSlicer\sla_print\Universal 0.025 UltraDetail - Heavy Supports.ini" KeyPath="yes" /> + </Component> + <Component Id="owc2E4A743F333D821D9E8A9ACE10E395E1" Guid="7c83a0fc-d4b2-1466-f858-9b3dedf76db8"> + <File Id="owf2E4A743F333D821D9E8A9ACE10E395E1" Source="$(var.SourceDir)\PrusaSlicer\sla_print\Universal 0.025 UltraDetail - Medium Supports.ini" KeyPath="yes" /> + </Component> + <Component Id="owc4CF09676D1047D5A9AE525720CD23889" Guid="f9eda29c-878e-4a0d-4771-b0dcf5845ad3"> + <File Id="owf4CF09676D1047D5A9AE525720CD23889" Source="$(var.SourceDir)\PrusaSlicer\sla_print\Universal 0.035 Detail - Heavy Supports.ini" KeyPath="yes" /> + </Component> + <Component Id="owc6E914D5581C8ED28A35CB38BC082C898" Guid="152fcbb9-57d4-ab6e-93cd-a97ed733b4d3"> + <File Id="owf6E914D5581C8ED28A35CB38BC082C898" Source="$(var.SourceDir)\PrusaSlicer\sla_print\Universal 0.035 Detail - Medium Supports.ini" KeyPath="yes" /> + </Component> + <Component Id="owcA8BB3AB3E1F0631497BA1B5B7D1984C9" Guid="3792b202-b280-6cb5-2e23-f035b7327afa"> + <File Id="owfA8BB3AB3E1F0631497BA1B5B7D1984C9" Source="$(var.SourceDir)\PrusaSlicer\sla_print\Universal 0.05 Normal - Heavy Supports.ini" KeyPath="yes" /> + </Component> + <Component Id="owc6D432DE0183CB703A1A78CEC841D8812" Guid="e97f8dc8-510a-5ca2-b01c-9d2ab5e08710"> + <File Id="owf6D432DE0183CB703A1A78CEC841D8812" Source="$(var.SourceDir)\PrusaSlicer\sla_print\Universal 0.05 Normal - Medium Supports.ini" KeyPath="yes" /> + </Component> + <Component Id="owcB7DEA765E56C3696E3273C599128A7D8" Guid="764640eb-d1bb-187c-c87b-5624a5875d73"> + <File Id="owfB7DEA765E56C3696E3273C599128A7D8" Source="$(var.SourceDir)\PrusaSlicer\sla_print\Universal 0.1 Fast - Heavy Supports.ini" KeyPath="yes" /> + </Component> + <Component Id="owc939DBAAB0E7C39AB8FFF73D72594EAC0" Guid="4f43e49a-fdbe-d19c-6e4e-b951491c2fc9"> + <File Id="owf939DBAAB0E7C39AB8FFF73D72594EAC0" Source="$(var.SourceDir)\PrusaSlicer\sla_print\Universal 0.1 Fast - Medium Supports.ini" KeyPath="yes" /> + </Component> + </Directory> + </Directory> + <Directory Id="owd37EA32A018DF9B31395A1FCE42233062" Name="x64"> + <Component Id="owcCD1854F2CC6C7F17F61397E23B6C598A" Guid="0a98d274-6f18-ee97-f14c-410e8fd2060d"> + <File Id="owfCD1854F2CC6C7F17F61397E23B6C598A" Source="$(var.SourceDir)\x64\concrt140.dll" KeyPath="yes" /> + </Component> + <Component Id="owcE1790624963D540C427806C2B2809EBA" Guid="00de945a-e306-4840-1dd3-b8e968184b74"> + <File Id="owfE1790624963D540C427806C2B2809EBA" Source="$(var.SourceDir)\x64\cvextern.dll" KeyPath="yes" /> + </Component> + <Component Id="owc5F1F538D5D53D69031C503A5A647FA86" Guid="4e9e9fdc-8d0c-3ba0-a240-9e6ef5842194"> + <File Id="owf5F1F538D5D53D69031C503A5A647FA86" Source="$(var.SourceDir)\x64\msvcp140.dll" KeyPath="yes" /> + </Component> + <Component Id="owc8F40E3E29777D025A9F18E5B6042F30D" Guid="e05981f2-643b-ca90-e066-2434e056751a"> + <File Id="owf8F40E3E29777D025A9F18E5B6042F30D" Source="$(var.SourceDir)\x64\msvcp140_1.dll" KeyPath="yes" /> + </Component> + <Component Id="owc0881D1B926887713CEA1FB8CE1244020" Guid="3baf74a4-81ca-d0a7-70ea-912a08d3dc3c"> + <File Id="owf0881D1B926887713CEA1FB8CE1244020" Source="$(var.SourceDir)\x64\msvcp140_2.dll" KeyPath="yes" /> + </Component> + <Component Id="owc2FF8EDA65751914E3C80D405856A37CE" Guid="283d40b2-5948-d5e0-9173-53dbd88d6e13"> + <File Id="owf2FF8EDA65751914E3C80D405856A37CE" Source="$(var.SourceDir)\x64\msvcp140_codecvt_ids.dll" KeyPath="yes" /> + </Component> + <Component Id="owcAD40560F77CAD70FF1F32E32FD4242DE" Guid="a2675e61-d758-8d56-d152-6e962f599a7a"> + <File Id="owfAD40560F77CAD70FF1F32E32FD4242DE" Source="$(var.SourceDir)\x64\opencv_videoio_ffmpeg430_64.dll" KeyPath="yes" /> + </Component> + <Component Id="owc8C50C7464818ADC2267594B33B7B1EE6" Guid="049c0f0d-c410-daa8-b6ec-1c515fdfce03"> + <File Id="owf8C50C7464818ADC2267594B33B7B1EE6" Source="$(var.SourceDir)\x64\vcruntime140.dll" KeyPath="yes" /> + </Component> + <Component Id="owcBF69387AE1C9C06910622B5629DAAA62" Guid="051ca95f-4aa8-18b1-56da-7788687d06e0"> + <File Id="owfBF69387AE1C9C06910622B5629DAAA62" Source="$(var.SourceDir)\x64\vcruntime140_1.dll" KeyPath="yes" /> + </Component> + </Directory> + <Directory Id="owd3BCA71FC1DDF940F5FD535BAC750E17B" Name="x86"> + <Component Id="owcFBC3B4CD533BC131080BCB572CEE8474" Guid="8b12ad7e-4019-3cca-c71d-82e5f3e6a080"> + <File Id="owfFBC3B4CD533BC131080BCB572CEE8474" Source="$(var.SourceDir)\x86\concrt140.dll" KeyPath="yes" /> + </Component> + <Component Id="owc326B123F4EAB21E3B400B7357CCFCB69" Guid="7acba6ad-3e71-b056-9a79-7e53f7d4585b"> + <File Id="owf326B123F4EAB21E3B400B7357CCFCB69" Source="$(var.SourceDir)\x86\cvextern.dll" KeyPath="yes" /> + </Component> + <Component Id="owcEBF7D14133500BEDB79449CCE2A5B412" Guid="3cfe7baa-8f60-50d4-0c7c-41e7f7409b69"> + <File Id="owfEBF7D14133500BEDB79449CCE2A5B412" Source="$(var.SourceDir)\x86\msvcp140.dll" KeyPath="yes" /> + </Component> + <Component Id="owcA62A9E2DCF3C1092572B9BA8A90AF2CC" Guid="a5901167-af03-d482-e4a2-55e2fd2dab37"> + <File Id="owfA62A9E2DCF3C1092572B9BA8A90AF2CC" Source="$(var.SourceDir)\x86\msvcp140_1.dll" KeyPath="yes" /> + </Component> + <Component Id="owc4E55EDBDDABF300437BC351C60EA1BBB" Guid="253ff45b-49b3-cf8c-4b98-7ac426bdb997"> + <File Id="owf4E55EDBDDABF300437BC351C60EA1BBB" Source="$(var.SourceDir)\x86\msvcp140_2.dll" KeyPath="yes" /> + </Component> + <Component Id="owcDE8398D0FE76287635F64D20414A83A9" Guid="b3a19e5c-5f5b-984b-06fc-91ec029138fe"> + <File Id="owfDE8398D0FE76287635F64D20414A83A9" Source="$(var.SourceDir)\x86\msvcp140_codecvt_ids.dll" KeyPath="yes" /> + </Component> + <Component Id="owc1B4BF3CACFB109D18ED2AA6E69D6FB20" Guid="312f9267-46c7-f517-1afe-9a266fff6b73"> + <File Id="owf1B4BF3CACFB109D18ED2AA6E69D6FB20" Source="$(var.SourceDir)\x86\opencv_videoio_ffmpeg430.dll" KeyPath="yes" /> + </Component> + <Component Id="owcFE2AD2B6C739ABAFD86DE40F4D5B83C9" Guid="30610dbe-339b-b1be-a4a6-626e8fc07490"> + <File Id="owfFE2AD2B6C739ABAFD86DE40F4D5B83C9" Source="$(var.SourceDir)\x86\vcruntime140.dll" KeyPath="yes" /> + </Component> + </Directory> + </Directory> + <Directory Id="ProgramMenuFolder"> + <Directory Id="scd220707349D4C8FA275285514283F3E2A" Name="UVtools" /> + </Directory> + <Directory Id="StartMenuFolder" /> + </Directory> + <ComponentGroupRef Id="Custom" /> + </Module> +</Wix>
\ No newline at end of file diff --git a/UVtools.InstallerMM/UVtools.InstallerMMcustom.wxs b/UVtools.InstallerMM/UVtools.InstallerMMcustom.wxs new file mode 100644 index 0000000..90dcac4 --- /dev/null +++ b/UVtools.InstallerMM/UVtools.InstallerMMcustom.wxs @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> + <Fragment> + + <!-- Reference Custom Components Below --> + <ComponentGroup Id="Custom"> + + </ComponentGroup> + + <!-- Author Custom Components Below --> + <DirectoryRef Id="MergeRedirectFolder"> + + </DirectoryRef> + + </Fragment> +</Wix>
\ No newline at end of file diff --git a/UVtools.Parser/CWSFile.cs b/UVtools.Parser/CWSFile.cs index 52939a4..9b8bca3 100644 --- a/UVtools.Parser/CWSFile.cs +++ b/UVtools.Parser/CWSFile.cs @@ -21,7 +21,7 @@ namespace UVtools.Parser { #region Constants - public const string GCodeStart = "G28{0} ; Auto Home" + + public const string GCodeStart = "G28 ; Auto Home{0}" + "G21 ;Set units to be mm{0}" + "G91 ;Relative Positioning{0}" + "M17 ;Enable motors{0}" + @@ -76,6 +76,10 @@ namespace UVtools.Parser [DisplayName("Max Y Feedrate")] public ushort MaxYFeedrate { get; set; } = 200; [DisplayName("Max Z Feedrate")] public ushort MaxZFeedrate { get; set; } = 200; [DisplayName("Machine Type")] public string MachineType { get; set; } = "UV_LCD"; + + // ;(****UVtools Configuration ******) + [DisplayName("Bottom Layer Light PWM")] public byte BottomLayerLightPWM { get; set; } = 255; + [DisplayName("Layer Light PWM")] public byte LayerLightPWM { get; set; } = 255; } public class Slice @@ -120,6 +124,9 @@ namespace UVtools.Parser PrintParameterModifier.LiftHeight, PrintParameterModifier.RetractSpeed, PrintParameterModifier.LiftSpeed, + + PrintParameterModifier.BottomLightPWM, + PrintParameterModifier.LightPWM, }; public override byte ThumbnailsCount { get; } = 0; @@ -294,6 +301,17 @@ namespace UVtools.Parser } } + public override object GetValueFromPrintParameterModifier(PrintParameterModifier modifier) + { + var baseValue = base.GetValueFromPrintParameterModifier(modifier); + if (!ReferenceEquals(baseValue, null)) return baseValue; + + if (ReferenceEquals(modifier, PrintParameterModifier.BottomLightPWM)) return OutputSettings.BottomLayerLightPWM; + if (ReferenceEquals(modifier, PrintParameterModifier.LightPWM)) return OutputSettings.LayerLightPWM; + + return null; + } + public override bool SetValueFromPrintParameterModifier(PrintParameterModifier modifier, string value) { if (ReferenceEquals(modifier, PrintParameterModifier.InitialLayerCount)) @@ -341,6 +359,20 @@ namespace UVtools.Parser return true; } + if (ReferenceEquals(modifier, PrintParameterModifier.BottomLightPWM)) + { + OutputSettings.BottomLayerLightPWM = value.Convert<byte>(); + UpdateGCode(); + return true; + } + + if (ReferenceEquals(modifier, PrintParameterModifier.LightPWM)) + { + OutputSettings.BottomLayerLightPWM = value.Convert<byte>(); + UpdateGCode(); + return true; + } + return false; } @@ -414,19 +446,20 @@ namespace UVtools.Parser if (ReferenceEquals(displayNameAttribute, null)) continue; GCode.AppendLine($";({displayNameAttribute.DisplayName.PadRight(24)} = {propertyInfo.GetValue(OutputSettings)})"); } - GCode.AppendFormat($"{0}{GCodeStart}", Environment.NewLine); + GCode.AppendLine(); + GCode.AppendFormat(GCodeStart, Environment.NewLine); for (uint layerIndex = 0; layerIndex < LayerCount; layerIndex++) { - Layer layer = this[layerIndex]; + //Layer layer = this[layerIndex]; GCode.AppendLine($"{GCodeKeywordSlice} {layerIndex}"); - GCode.AppendLine("M106 S255"); - GCode.AppendLine($"{GCodeKeywordDelay} " + (layerIndex < InitialLayerCount ? SliceSettings.HeadLayersExpoMs : SliceSettings.LayersExpoMs)); + GCode.AppendLine($"M106 S{GetInitialLayerValueOrNormal(layerIndex, OutputSettings.BottomLayerLightPWM, OutputSettings.LayerLightPWM)}"); + GCode.AppendLine($"{GCodeKeywordDelay} {GetInitialLayerValueOrNormal(layerIndex, SliceSettings.HeadLayersExpoMs, SliceSettings.LayersExpoMs)}"); GCode.AppendLine("M106 S0"); GCode.AppendLine(GCodeKeywordSliceBlank); GCode.AppendLine($"G1 Z{LiftHeight} F{LiftSpeed}"); GCode.AppendLine($"G1 Z-{LiftHeight - LayerHeight} F{RetractSpeed}"); - GCode.AppendLine($"{GCodeKeywordDelay} " + (layerIndex < InitialLayerCount ? SliceSettings.HeadLayersExpoMs : SliceSettings.LayersExpoMs)); + GCode.AppendLine($"{GCodeKeywordDelay} {GetInitialLayerValueOrNormal(layerIndex, SliceSettings.HeadLayersExpoMs, SliceSettings.LayersExpoMs)}"); } GCode.AppendFormat(GCodeEnd, Environment.NewLine, SliceSettings.LiftWhenFinished); diff --git a/UVtools.Parser/FileFormat.cs b/UVtools.Parser/FileFormat.cs index cacaa86..03374fe 100644 --- a/UVtools.Parser/FileFormat.cs +++ b/UVtools.Parser/FileFormat.cs @@ -595,6 +595,11 @@ namespace UVtools.Parser return (float)Math.Round((layerIndex+(realHeight ? 1 : 0)) * LayerHeight, 2); } + public T GetInitialLayerValueOrNormal<T>(uint layerIndex, T initialLayerValue, T normalLayerValue) + { + return layerIndex < InitialLayerCount ? initialLayerValue : normalLayerValue; + } + public virtual object GetValueFromPrintParameterModifier(PrintParameterModifier modifier) { if (ReferenceEquals(modifier, PrintParameterModifier.InitialLayerCount)) diff --git a/UVtools.Parser/IFileFormat.cs b/UVtools.Parser/IFileFormat.cs index d9d9cba..a2412d8 100644 --- a/UVtools.Parser/IFileFormat.cs +++ b/UVtools.Parser/IFileFormat.cs @@ -278,6 +278,16 @@ namespace UVtools.Parser float GetHeightFromLayer(uint layerIndex, bool realHeight = true); /// <summary> + /// Gets the value for initial layer or normal layers based on layer index + /// </summary> + /// <typeparam name="T">Type of value</typeparam> + /// <param name="layerIndex">Layer index</param> + /// <param name="initialLayerValue">Initial value</param> + /// <param name="normalLayerValue">Normal value</param> + /// <returns></returns> + T GetInitialLayerValueOrNormal<T>(uint layerIndex, T initialLayerValue, T normalLayerValue); + + /// <summary> /// Gets the value attributed to <see cref="FileFormat.PrintParameterModifier"/> /// </summary> /// <param name="modifier">Modifier to use</param> diff --git a/UVtools.Parser/UVtools.Parser.csproj b/UVtools.Parser/UVtools.Parser.csproj index b23027e..9dd52d9 100644 --- a/UVtools.Parser/UVtools.Parser.csproj +++ b/UVtools.Parser/UVtools.Parser.csproj @@ -7,9 +7,9 @@ <PackageProjectUrl>https://github.com/sn4k3/UVtools</PackageProjectUrl> <PackageIcon></PackageIcon> <RepositoryUrl>https://github.com/sn4k3/UVtools</RepositoryUrl> - <AssemblyVersion>0.5.2.0</AssemblyVersion> - <FileVersion>0.5.2.0</FileVersion> - <Version>0.5.2</Version> + <AssemblyVersion>0.5.2.1</AssemblyVersion> + <FileVersion>0.5.2.1</FileVersion> + <Version>0.5.2.1</Version> <Description>MSLA/DLP, file analysis, repair, conversion and manipulation</Description> <PackageId>UVtoolsParser</PackageId> <PackageLicenseFile>LICENSE</PackageLicenseFile> @@ -27,7 +27,7 @@ <ItemGroup> <PackageReference Include="BinarySerializer" Version="8.5.1" /> <PackageReference Include="Newtonsoft.Json" Version="12.0.3" /> - <PackageReference Include="SixLabors.ImageSharp" Version="1.0.0-rc0002" /> + <PackageReference Include="SixLabors.ImageSharp" Version="1.0.0-rc0003" /> </ItemGroup> </Project> diff --git a/UVtools.sln b/UVtools.sln index 3556488..1ac1866 100644 --- a/UVtools.sln +++ b/UVtools.sln @@ -10,20 +10,46 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UVtools.GUI", "UVtools.GUI\ EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UVtools.Parser", "UVtools.Parser\UVtools.Parser.csproj", "{53B884CA-E640-4171-8AA2-03935AC076D2}" EndProject +Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "UVtools.InstallerMM", "UVtools.InstallerMM\UVtools.InstallerMM.wixproj", "{E53BAA5D-29A8-4287-B3AA-1AFF5A4BDC6C}" +EndProject +Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "UVtools.Installer", "UVtools.Installer\UVtools.Installer.wixproj", "{41224896-08E9-4F22-9E56-5F9D46DEC7D2}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU + Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU + Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {E7389EE3-CF56-464B-9BA1-816B31D1E6FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E7389EE3-CF56-464B-9BA1-816B31D1E6FF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E7389EE3-CF56-464B-9BA1-816B31D1E6FF}.Debug|x86.ActiveCfg = Debug|Any CPU + {E7389EE3-CF56-464B-9BA1-816B31D1E6FF}.Debug|x86.Build.0 = Debug|Any CPU {E7389EE3-CF56-464B-9BA1-816B31D1E6FF}.Release|Any CPU.ActiveCfg = Release|Any CPU {E7389EE3-CF56-464B-9BA1-816B31D1E6FF}.Release|Any CPU.Build.0 = Release|Any CPU + {E7389EE3-CF56-464B-9BA1-816B31D1E6FF}.Release|x86.ActiveCfg = Release|Any CPU + {E7389EE3-CF56-464B-9BA1-816B31D1E6FF}.Release|x86.Build.0 = Release|Any CPU {53B884CA-E640-4171-8AA2-03935AC076D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {53B884CA-E640-4171-8AA2-03935AC076D2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {53B884CA-E640-4171-8AA2-03935AC076D2}.Debug|x86.ActiveCfg = Debug|Any CPU + {53B884CA-E640-4171-8AA2-03935AC076D2}.Debug|x86.Build.0 = Debug|Any CPU {53B884CA-E640-4171-8AA2-03935AC076D2}.Release|Any CPU.ActiveCfg = Release|Any CPU {53B884CA-E640-4171-8AA2-03935AC076D2}.Release|Any CPU.Build.0 = Release|Any CPU + {53B884CA-E640-4171-8AA2-03935AC076D2}.Release|x86.ActiveCfg = Release|Any CPU + {53B884CA-E640-4171-8AA2-03935AC076D2}.Release|x86.Build.0 = Release|Any CPU + {E53BAA5D-29A8-4287-B3AA-1AFF5A4BDC6C}.Debug|Any CPU.ActiveCfg = Debug|x86 + {E53BAA5D-29A8-4287-B3AA-1AFF5A4BDC6C}.Debug|x86.ActiveCfg = Debug|x86 + {E53BAA5D-29A8-4287-B3AA-1AFF5A4BDC6C}.Debug|x86.Build.0 = Debug|x86 + {E53BAA5D-29A8-4287-B3AA-1AFF5A4BDC6C}.Release|Any CPU.ActiveCfg = Release|x86 + {E53BAA5D-29A8-4287-B3AA-1AFF5A4BDC6C}.Release|x86.ActiveCfg = Release|x86 + {E53BAA5D-29A8-4287-B3AA-1AFF5A4BDC6C}.Release|x86.Build.0 = Release|x86 + {41224896-08E9-4F22-9E56-5F9D46DEC7D2}.Debug|Any CPU.ActiveCfg = Debug|x86 + {41224896-08E9-4F22-9E56-5F9D46DEC7D2}.Debug|x86.ActiveCfg = Debug|x86 + {41224896-08E9-4F22-9E56-5F9D46DEC7D2}.Debug|x86.Build.0 = Debug|x86 + {41224896-08E9-4F22-9E56-5F9D46DEC7D2}.Release|Any CPU.ActiveCfg = Release|x86 + {41224896-08E9-4F22-9E56-5F9D46DEC7D2}.Release|x86.ActiveCfg = Release|x86 + {41224896-08E9-4F22-9E56-5F9D46DEC7D2}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE |