From 612fba33042a6eef8130d6119626a012884efd33 Mon Sep 17 00:00:00 2001 From: Kei <7330724+keiichi-morisato@users.noreply.github.com> Date: Tue, 3 Aug 2021 11:13:31 -0700 Subject: [PATCH] Initial commit --- .clang-format | 82 ++++++ .clang-tidy | 1 + .gitattributes | 63 +++++ .gitignore | 363 +++++++++++++++++++++++++++ GitVersion.yml | 26 ++ LICENSE | 29 +++ PROJECTNAME.sln | 54 ++++ README.md | 37 +++ azure-pipelines.yml | 91 +++++++ nuget/Siddiq-Software-Avatar.png | Bin 0 -> 35348 bytes nuget/SiddiqSoft.PROJECTNAME.nuspec | 43 ++++ nuget/SiddiqSoft.PROJECTNAME.targets | 8 + src/projectname.hpp | 44 ++++ tests/basic_tests.vcxproj | 114 +++++++++ tests/packages.config | 5 + tests/test.cpp | 46 ++++ 16 files changed, 1006 insertions(+) create mode 100644 .clang-format create mode 100644 .clang-tidy create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 GitVersion.yml create mode 100644 LICENSE create mode 100644 PROJECTNAME.sln create mode 100644 README.md create mode 100644 azure-pipelines.yml create mode 100644 nuget/Siddiq-Software-Avatar.png create mode 100644 nuget/SiddiqSoft.PROJECTNAME.nuspec create mode 100644 nuget/SiddiqSoft.PROJECTNAME.targets create mode 100644 src/projectname.hpp create mode 100644 tests/basic_tests.vcxproj create mode 100644 tests/packages.config create mode 100644 tests/test.cpp diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..1a3646b --- /dev/null +++ b/.clang-format @@ -0,0 +1,82 @@ +# Visual Studio generated .clang-format file + +# The style options in this file are a best effort attempt to replicate the +# current IDE formatting configuration from Tools > Options. The following +# style options, however, should be verified: +# AfterClass, AfterControlStatement, AfterEnum, AfterFunction, AfterNamespace, +# AfterStruct, AfterUnion + +AccessModifierOffset: -4 + +AlignAfterOpenBracket: Align # ours is Align +AlignConsecutiveDeclarations: true +AlignOperands: true +AlignTrailingComments: true +AlignConsecutiveAssignments: true +AlignEscapedNewlines: DontAlign + +AllowShortBlocksOnASingleLine: true +AllowShortFunctionsOnASingleLine: Inline +AllowShortIfStatementsOnASingleLine: true +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakBeforeMultilineStrings : false +AllowAllParametersOfDeclarationOnNextLine : false +AllowShortCaseLabelsOnASingleLine : true + +BinPackArguments : false +BinPackParameters : false + +BasedOnStyle: WebKit +BraceWrapping: + AfterClass: true # TODO: verify +# AfterControlStatement: true # TODO: verify +# AfterEnum: true # TODO: verify + AfterFunction: true # TODO: verify +# AfterNamespace: true # TODO: verify +# AfterStruct: true # TODO: verify +# AfterUnion: true # TODO: verify + BeforeCatch: true + BeforeElse: true +# IndentBraces: false +# SplitEmptyFunction: true +# SplitEmptyRecord: true + +BreakBeforeBraces: Allman +BreakConstructorInitializers: BeforeComma +BreakBeforeTernaryOperators : true +BreakBeforeBinaryOperators : None +BreakInheritanceList : BeforeComma + +ContinuationIndentWidth : 8 +ColumnLimit: 132 +Cpp11BracedListStyle: true +IndentCaseLabels: false +IndentPPDirectives: None +IndentWidth: 4 +PointerAlignment: Left +SpaceAfterCStyleCast: false +SpaceBeforeAssignmentOperators: true +SpaceBeforeParens: ControlStatements +SpaceInEmptyParentheses: false +SpacesInCStyleCastParentheses: false +SpacesInSquareBrackets: false +MaxEmptyLinesToKeep: 2 +NamespaceIndentation: All +CompactNamespaces : false +FixNamespaceComments : true +Standard: Cpp11 +TabWidth: 4 +UseTab: AlignWithSpaces +SortIncludes: false +SortUsingDeclarations: false +IncludeBlocks : Preserve +ReflowComments: false + +ConstructorInitializerAllOnOneLineOrOnePerLine: false +ConstructorInitializerIndentWidth: 4 +SpacesInParentheses: false +KeepEmptyLinesAtTheStartOfBlocks : false + +#StatmentMacros: ['TEST_CLASS', 'TEST_CLASS_INITIALIZE', 'TEST_CLASS_CLEANUP', 'TEST_METHOD'] + \ No newline at end of file diff --git a/.clang-tidy b/.clang-tidy new file mode 100644 index 0000000..2472728 --- /dev/null +++ b/.clang-tidy @@ -0,0 +1 @@ +Checks: 'modernize-*,cppcoreguidelines-*,-modernize-use-trailing-return-type,-cppcoreguidelines-avoid-magic-numbers' \ No newline at end of file diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1ff0c42 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,63 @@ +############################################################################### +# Set default behavior to automatically normalize line endings. +############################################################################### +* text=auto + +############################################################################### +# Set default behavior for command prompt diff. +# +# This is need for earlier builds of msysgit that does not have it on by +# default for csharp files. +# Note: This is only used by command line +############################################################################### +#*.cs diff=csharp + +############################################################################### +# Set the merge driver for project and solution files +# +# Merging from the command prompt will add diff markers to the files if there +# are conflicts (Merging from VS is not affected by the settings below, in VS +# the diff markers are never inserted). Diff markers may cause the following +# file extensions to fail to load in VS. An alternative would be to treat +# these files as binary and thus will always conflict and require user +# intervention with every merge. To do so, just uncomment the entries below +############################################################################### +#*.sln merge=binary +#*.csproj merge=binary +#*.vbproj merge=binary +#*.vcxproj merge=binary +#*.vcproj merge=binary +#*.dbproj merge=binary +#*.fsproj merge=binary +#*.lsproj merge=binary +#*.wixproj merge=binary +#*.modelproj merge=binary +#*.sqlproj merge=binary +#*.wwaproj merge=binary + +############################################################################### +# behavior for image files +# +# image files are treated as binary by default. +############################################################################### +#*.jpg binary +#*.png binary +#*.gif binary + +############################################################################### +# diff behavior for common document formats +# +# Convert binary document formats to text before diffing them. This feature +# is only available from the command line. Turn it on by uncommenting the +# entries below. +############################################################################### +#*.doc diff=astextplain +#*.DOC diff=astextplain +#*.docx diff=astextplain +#*.DOCX diff=astextplain +#*.dot diff=astextplain +#*.DOT diff=astextplain +#*.pdf diff=astextplain +#*.PDF diff=astextplain +#*.rtf diff=astextplain +#*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9491a2f --- /dev/null +++ b/.gitignore @@ -0,0 +1,363 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Oo]ut/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd \ No newline at end of file diff --git a/GitVersion.yml b/GitVersion.yml new file mode 100644 index 0000000..a71174c --- /dev/null +++ b/GitVersion.yml @@ -0,0 +1,26 @@ +mode: ContinuousDelivery +branches: + master: + regex: (master|main) + mode: ContinuousDelivery + tag: + increment: Patch + prevent-increment-of-merged-branch-version: true + track-merge-target: false + feature: + regex: feature(s)?[/-] + mode: ContinuousDeployment + develop: + regex: dev(elop)?(ment)?$ + mode: ContinuousDeployment + tag: alpha + hotfix: + regex: hotfix(es)?[/-] + mode: ContinuousDeployment + tag: beta + release: + regex: release(s)?[/-] + mode: ContinuousDeployment + tag: rc +ignore: + sha: [] diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..4b9ee25 --- /dev/null +++ b/LICENSE @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2021, Siddiq Software LLC +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/PROJECTNAME.sln b/PROJECTNAME.sln new file mode 100644 index 0000000..addbba6 --- /dev/null +++ b/PROJECTNAME.sln @@ -0,0 +1,54 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.31515.178 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{8A6E91C4-25AE-43E1-A2A8-6D020B8B3287}" + ProjectSection(SolutionItems) = preProject + src\projectname.hpp = src\projectname.hpp + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{179E7FDB-7795-456D-AC2D-66670D708FC3}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "nuget", "nuget", "{873751D6-FA0D-4290-8014-73F7F8ED2187}" + ProjectSection(SolutionItems) = preProject + nuget\Siddiq-Software-Avatar.png = nuget\Siddiq-Software-Avatar.png + nuget\SiddiqSoft.PROJECTNAME.nuspec = nuget\SiddiqSoft.PROJECTNAME.nuspec + nuget\SiddiqSoft.PROJECTNAME.targets = nuget\SiddiqSoft.PROJECTNAME.targets + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{6701C4F1-73DF-4979-81F2-189F00F01151}" + ProjectSection(SolutionItems) = preProject + .clang-format = .clang-format + .clang-tidy = .clang-tidy + .gitattributes = .gitattributes + .gitignore = .gitignore + azure-pipelines.yml = azure-pipelines.yml + GitVersion.yml = GitVersion.yml + LICENSE = LICENSE + README.md = README.md + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "basic_tests", "tests\basic_tests.vcxproj", "{025C9280-6302-401E-949F-F82DF4D47204}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {025C9280-6302-401E-949F-F82DF4D47204}.Debug|x64.ActiveCfg = Debug|x64 + {025C9280-6302-401E-949F-F82DF4D47204}.Debug|x64.Build.0 = Debug|x64 + {025C9280-6302-401E-949F-F82DF4D47204}.Release|x64.ActiveCfg = Release|x64 + {025C9280-6302-401E-949F-F82DF4D47204}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {025C9280-6302-401E-949F-F82DF4D47204} = {179E7FDB-7795-456D-AC2D-66670D708FC3} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {58ECAD81-0BE8-4DF7-8F5B-7098036D04E7} + EndGlobalSection +EndGlobal diff --git a/README.md b/README.md new file mode 100644 index 0000000..a0657b5 --- /dev/null +++ b/README.md @@ -0,0 +1,37 @@ +PROJECTNAME : PROJECTDESCRIPTION +------------------------------------------- + +[![CodeQL](https://github.com/SiddiqSoft/PROJECTNAME/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/SiddiqSoft/PROJECTNAME/actions/workflows/codeql-analysis.yml) +[![Build Status](https://dev.azure.com/siddiqsoft/siddiqsoft/_apis/build/status/SiddiqSoft.PROJECTNAME?branchName=main)](https://dev.azure.com/siddiqsoft/siddiqsoft/_build/latest?definitionId=DEFINITIONID&branchName=main) +![](https://img.shields.io/nuget/v/SiddiqSoft.PROJECTNAME) +![](https://img.shields.io/github/v/tag/SiddiqSoft/PROJECTNAME) +![](https://img.shields.io/azure-devops/tests/siddiqsoft/siddiqsoft/DEFINITIONID) +![](https://img.shields.io/azure-devops/coverage/siddiqsoft/siddiqsoft/DEFINITIONID) + + +# Objective + + +# Requirements +- The build and tests are for Visual Studio 2019 under x64. + +# Usage +- Use the nuget [SiddiqSoft.PROJECTNAME](https://www.nuget.org/packages/SiddiqSoft.PROJECTNAME/) +- Copy paste..whatever works. + +
+© 2021 Siddiq Software LLC. All rights reserved. +
diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 0000000..7e8750a --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,91 @@ +trigger: + batch: true + branches: + include: + - main + - develop + - release/* + paths: + exclude: + - README.md + +pool: + name: Default + demands: + - msbuild + - visualstudio + - vstest + +variables: + buildPlatform: 'x64' + +steps: +- task: NuGetToolInstaller@1 + displayName: 'Use NuGet 5.10.0' + inputs: + versionSpec: '5.10.0' + checkLatest: true + +- task: GitVersion@5 + inputs: + runtime: 'core' + configFilePath: 'GitVersion.yml' + +- script: echo %Action%%BuildVersion% + displayName: 'Set build version' + env: + Action: '##vso[build.updatebuildnumber]' + BuildVersion: $(GitVersion.NugetVersionV2) + +- task: NuGetCommand@2 + displayName: 'NuGet restore' + inputs: + command: 'restore' + restoreSolution: '**/*.sln' + feedsToUse: 'select' + vstsFeed: 'ec2759e0-0587-4306-8a8d-8695f15e2336' + continueOnError: true + +- task: VSBuild@1 + displayName: 'Build solution RELEASE' + inputs: + solution: '**/*.sln' + platform: 'x64' + configuration: 'Release' + maximumCpuCount: true + msbuildArchitecture: 'x64' + +- task: CmdLine@2 + inputs: + script: | + echo Running googletest + cd output\Release + basic_tests.exe --gtest_output=xml:..\..\TestResults\ + +- task: PublishTestResults@2 + displayName: 'Publish Release Test Results **/TEST-*.xml' + inputs: + testResultsFormat: 'JUnit' + testResultsFiles: '**/TestResults/basic_tests.xml' + mergeTestResults: true + buildPlatform: 'x64' + buildConfiguration: 'Release' + continueOnError: true + +- task: NuGetCommand@2 + displayName: 'NuGet pack' + inputs: + command: 'pack' + packagesToPack: 'nuget/*.nuspec' + versioningScheme: 'off' + buildProperties: 'VERSION=$(build.buildNumber)' + condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) + +- task: NuGetCommand@2 + displayName: 'NuGet push' + inputs: + command: 'push' + packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg;build/*.nupkg;!build/*symbols.nupkg' + nuGetFeedType: 'external' + publishFeedCredentials: 'sqs-nuget' + condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) diff --git a/nuget/Siddiq-Software-Avatar.png b/nuget/Siddiq-Software-Avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..eecdc5f0343fe6d8623f2053cdbb1a175c21329a GIT binary patch literal 35348 zcmeENV{<0a){TvcZBA_4_7mIYWMbR)#J25ZV%x?OJDE5)_rv`I@8|bao$Bh-RbBh+ zeQNLCYpsq@QjkQ1!-WF@0YQ|O5>o*I0mc6Bgn{~A35z|A{=PuCh)Ao!d=GCJ)9~;6 zG*30nUn)j!#E#Am=2o_5#J@Zo&4`7Sl$b$4uu}lB%5Z;~V8p&$A_oj@ zlaZT8V5V6nR*(68m2d@hMC5J1Chuae7MvfAy7j3sVQ8~xqfFI&t~JSd$wWo3k)CpI z^E-99cPpl!9=AZF6ybgF7xDz_V$1TTa=$_Ix83(*?X~T8k0IQessEmH04mpUx0aI5v+8f-Le>kg1qiU zC3uPudXcdrfsa#lXN3k^u&6+Q5iP6$Cu+)D>lCoFJBZI;^m@(|3b5}W(g#A9)bgGU zf9RF1CBSiV>tyqi-6vGdQ5&$ffB#~`^Xn-Ae@EN4K0*!1vd|Y{{c}y41L0aATf?_? zhlTX2OXqlOrfSA|DKe@vN;z6}Kn(SWT)70`j2U$UULU;*X6`d?;u}k#y;sdZY)oDu zOLNz{+NV~*j%3S@E*5El&oXA-#d56NmU)t==}Q{K2lUL7&*JDdpJ|z{++LpNr?}j} z2UHPP^Gm!I+-abQ<09?A|0y!)v@Nc2#NW0HZjCf@9@>OQJTpdUiou&H3VX=6i1exs zCsrByE2t*x7EGB$Y}7p% W6d toXfOodD-j84&Pb=tx)$sE}{#J0#W zA$QV6wWxF-i|r4-rSaH^L#3MBiH35aZe>h9x`bu;N8eiB0I8a^wbA6otFhC1ToqIx z!>%V56hl`uyRKN78i6leS717A5@&)PFyBv-xv)u9SE{Sgc{6qK8pgL_piE#RgR8Lj zyI%#eGbL~B_~~-PA(O>yJm~b-tH_G0qC7cjRATv|U~3D9kJ~`-Ei&Kda}eX(J{Duy zE *<2hlh7 zD3qyL4;93rO#{YQNEKS+L2Zz^23CLb%4f&kYNpnCNMy;5OjVi2+;;26@b)kwKW$R0 zbUL(IkD%d}4KGO6r#c=d`{oVhv@S!tW)}2wKJ_|(^BYEcxVpKy8L!mnJv=?_SE?8o zTr1!UZWHkSzQAcT&wl7tEuDTFXt7&Ku? n zzE5*DA(&&C0LJxdA(o`;tRD{c4az)*iRVpgOn3h7RtWb^s|#mNAu@QJ8`yUYYKl~> z6d8M*8TfdJQgr+3gC|n{!4y_OvuqJ4)S(+ZMkD9wVp99Z+Yqv%_FA)7px*dMro~}L z!N7nB{Nv+dt2=DzvQn$v7?OW$i!~|YZ!=Wt)n=QMaSEsh2AP3>r~)hom>1iF>4ub7 zxiKZ=OQ#WKEx OmadHvH}wRj&6^jb7(6C2EA 6`g~MtVwCGR$HEvCO(pFZDxeu7X)aKb&kp}shc%hw>Sw_qb*rr!u9#)& z_=?{w9KZe6J+UFWqD?(cWPF}_nXMH6^ @>NaFIyeO+F=k0HvJk$Vv486B*lQDaIDgzZFU7MidPD9 z07ER%{UHPj{&w!%%&67ndfw7mqL_QzsLS9sfHsjEZ^7ZvuMKZLYGw*vF6HWTenO1N zL^5GM0cQx0VS835C_R7AZBER)*ue^#d=DuR9yE*k?$b92AEzpyOGhpy#mO@>=t9|c z1R>6i?u=SAnD!TCb!Tg$0zi9uJ%LW?9gk;HZ> uP&>A%+ip7bCrG zr^<2PFaEdfb#3HJNXErw=3)gNr2-=}3Q(>$B8)b~h_-x*K^7Qs#2dQ3$F`Y(%7b8< zJ#1gH>Ehwx(Qh{yiIqG*Q~hdp0mdFv<$6Zu A6m zcEBx+i))HG4lxN_BIxnXKroV^JuApuZ;-C_80LC}f#&71)cfxWm+BkIIoSW&By&3H zrz#Dd*RlcI0{0k>>c@axLhQ%nc44#4&ZB(Jt!QvsFo$Z?ip^pL5|w@@;GX8@$E#+W zl~3F4E{|^Ux0+YdCWxQo3Ywc`V8+4}FaQntX4=V v*Bl z Y;u?>1!x)=VzFxLSc16}G zUulgXBTS)w-#2D3Ehn0FY^6N-BrtK8FbV&2n6u5yMHFcmedVkSO51&iK6&75P0%;y zqSH9#H)u=pd?9A^;4{SJk6P{X(mf}$up9^P5-CW#%Ek6BkL{dh D0CiJ`{@2p3vfkPex!~+ zK^x$d(nJsVOXw^iYij(JQt7Hhqls5ByTugoV2C`7R2%`R!j^uU(69UqIN4?!o?Tg) z7zfb)7n@kEHyPI7!=}{dEdj3R*e%Fn{M=cU>E92ghYX6KL46FUXQwPiWS>&&bLXZx zDxlsiDCefUkFaR9ds9}m|EK6VxjIy?cDCbl-pjxmpHb&}uHNWyt?w-elOef6JibZy zYl9Zm--A=$uOdX|vZPTUT6R4R7nf11x%+x8jL`GsltMOj@xs=Z1SbXT7}0O}*aY|4 z0*k>>H+FEpz!2d+U_tvVedGFe4L I}8iV-P=wHF)LP6(_fi?Sv>zB0g>S;Kx2jbda>C`g@45>)k? d3`oxkhX7V$CHniBiG)-(pjvVVt5) zPb4Lfm!XGiFVH?88~!}e+5raLGETWck8~yO;7zmjuc^ilvY#o3IxLAi0sz6sn4e2H zIl$~Dzpu}Z>1l<6;e&oZBd~ #s`oAG=T%l{rgE5$R_xwU-Seh!=HzZU;<=?zzCZ=)aFu>+v zhrlR7$=8SzR)i6}&r=%VXwq`85KdFBX0&Sh=Xn5CjA{p;0e$!&xrV#hw8azT#3T2c z@gMwaK)O}srW^C9|IEb`B6Q`~h^(JtqkGV>lytU`e}Ec1w03Mi7Mf{l@Fg{!U#v{JMcPr#R(0czSfP`%)U}NtbQjy zxXs*nQknZBGzxAT8%~9SZgZX~xe5{%jX-d9|5PqB1{|t3GJ;HKTY5hW!pKO4x~;%O z%^_3k-Q&hhRCMR6Z<97j%*3CNDAlchyt-4XwI=BMbU3%`-Uv}!HuVJ1gjiGId3ckf z^I* Q<>!VwA-w&&EbXkUEU&GtJ^o$B$X2M(r(36YuB=^UunmKV)#31C zZ;AK(`3a-)kwCKJaFoL4fo{dDyw6G`guzbCLDbV{;?B%YMXKmmAOk3dcr>-bReYb2 zx@J_}Iu}CfqA~j4S<(USAS9r{a*ZUpDT7Y&7wHXApImiAs@ij4wWy{P5p*{W>r54a z+{I3&;xQ}6RBXQ~S|{anX|J#MGbYhE6%LI(5{;NRDH^H!TIHkixr^b2?NhWMlB>#6 z3UY{U1L%x2Vn`9YEt0D3zeRscHhRZ*z9}DG#}Bw6pz-QC+ilazWD6*f4Oy?e`-PM! zeD@h?Am$lPAiS}B;D-sYuGY*Pa9QlWVjRrh>2|%^V>B4f7{;d(%>#NrRG!EjDqL>N z6_zO%g`$52ms=6mDNrx1*j=M%6WgKNpv|Z-KqcnEFCt5^Bby$dseGhN2Tea;qWzI= zg2Cx01v$F~e+Z g zYh?4OYj5*iNTr{iM$|hEAfyGTn0Vn0H<~!(@lP$ls0sEO!a)XlN_B<@`#%%*a9w2A z`P-pk#mlNC|AT}W?UZgPA0`G*b41JtD)KdhMKi-e&vIJE&h+Au2EJ0K!O{7<;& pI(Cf{KDR1cA3#Z?ycTGw6Qh z{s-sTgYBxI4_c$tAzmq=S>R 7Ey4`f`X=YO0{=7BZ&(E`% zj)P(Dc|^z4C8E!Jjo#;We)){ }D~7 zg91M9X3X=phi19bPFE=C%#wJwq(K>W^}JqRx~Va!NkgPt(HJSawi9i;j4m+>2}_ z(yaV;3*L`%Oz+kvFNU(7-`uloF}ejg%zD{uZVn_Fm$aroDxuVy!m-$(SweG`ael>c zr`D86yHhgLaV9w7zp`WqexCmG^S-0{w?hP @SuNHED1*&mmB{j+r!p|u@11-&g1{%$ld&|nG`1J5(r&d#rOjRpj#X4 zf9m}50x=PRBu5rbo#H)Rg>0Pe&t%_sFp*elbNXH7_mm4S`Y5dEA4&fdr7n!JiW;(r z_>g>RlT{cR{>eJft$as4p`87_;nJg*vEFQCWYXcP>vpepJHfdD9W2+8VcU?CQ!=)Q z_@tD!rbxPh7VIxxM=8v)H7?YV^8L79jUOXva@-Kz6PI!}lTg&T4jQFasmpW;YK$Ml z*-t36DN1S>L> muwbBH0pOx{psHDeHrkNF#Rl)R~w(~inosD&muLY(CdVYyS<)7aaIB}eAj|^79 zA4>#QS{{AT0fsOT>_K-!K6L%WFmDfR^Y&n2NOv*4D~9Ia2 |mu^3~q&Tkr^(T0$6Z7fBhL|iYzC0Cl#40BQj zqHB=Ef%lNk3X!^^k=q^Wo2gb@%gAh;C{@^eR1wz@M<9}(Jv#GAL{>!icVT}2(%x9` z*Ytdav0cB3ylnnW;7`G()Gg&FkLt4OJJ#q85`SvNqu_H-&(o?7VVtUcPqUm-M!NV? zz6pz}JFg;7jh6x!OH`voW;wJ$HIsDG0qiA5_7OOsm9=ICAaAYtk6DK$i6d2;Vzuu5 zTlR+ACfOS=Z|Q~hQE8)33Nrd7Et{%0l{5!n#;_uwUk!XsjG)IUA8Jpfnl+pHVI__P zD c2B}?)0Q^+q^*nQ|C<|MTeV5m$ zsj@|xpv7h9U$tF!oyC(5 Xn5<@6OVU|35A^3 zdE=kukvu9VGD?K~QyR0u*V@!^$9t^HK-h!$>f-UDT_%Fqo8-K>gn %niK-c4kf+&U# zFQ%-m`3Ap6!p6s+iS3{3o;yfr7>?ces;vV3huO4cco+F95EGe(Dg4bw;hOX+`IjOQ z{19`51;wVYqC3KBWw(8-lWWh=xNlFvkWplc#l@9i=YU05-7HH>{G|cNZw(J<+mY+M z-vZc6I(yf|y@ycnq$8#h9>Xx~db?Kc%nKpVr$wHy&Brr^LX>V}sW8hKzz9}g>sq!t zMdZ(mITi#iy=_mwqEo!kMn 2lH-xQ?1LwTa8a7?$5>E2VXsD< zaX#d(1*ZpK3*RNb*D4YT%)8~kaVbO05-2wWD53E<#`i@xrv5U=YUKEgjp$q^%fw5# zk9nG#Z;Y|ZR!qdbps9?F49D=uDcXQxJ%g0{OHVcG;Gjk9px!o1WAjI?t>7 3-)i>6(g$R}mQu(8GHGg2TY#o=Dt6iAVL2o*G z%8!zLHHN*ovZgX0^-tybQF_DW&k_gs^p2j7fS&+kKM|#t!#L*!YU95t+K^Wo1WB+@ zTRt_T_w%Yx>oKozj3a)LcM_9IuU^#}dXb-~m|66>JfZN4nSargw EhRQ#OfL^mx2n7b*fSg~ul#DaA z_CM#2MZRu`B5WvqAD!r^B#kfuRkiQpA%5+4J-?E1QbEuB`yG7lv;4rc5W>sC98iD7 z@ut??x|}$q|5$_p)R9Cjs6{_oot>FF167NlJ7*n@oM0!~s- -z(dDE4t| zaC*H64u02=B*5niL^!Y0wf|z(0d^$@yw*eOl?$DZF*%LUX#cB5&XUUz8KjYo2No$i z>$YjS&sq;a>0SHFEtozj^5x{Dn%ooww~s37?s+G@fDT`2kF@DkI=$nEGtKg)OyiWY zq}y}b+Mv`iF~Q`vIQ~mun0ga&`U`g4mBQnYXrw;ASFAY=w*HrCxJ{fV#6K6BZj0su zWlszKyVDr?=V^N;(080fRARB#04%xEYn3)wy1v!tn`RnUBbN(9CPaX>@WRHT=R5Bv z eN5M-llL23}|XLjoy1! z+S3fM0*is;hr@FY;$!kaX!L}7!6I6(Vj-AdmIwqOp}&fqsF@WG48rd5axOlD=r81B zJ*OtcIOmZ})#B bE>^#%F4|yFHw8F+*eSEw9GHY&X5-D>?%k z;o+oI9{V~|F6BichMG8Sdj2L(A!b!vS_RnxTZZixw(}{a^H^veN?MXgRah2L-;|l< z=tc2&CR}{HhLpor23e$9_zqh}X+kwEy`d5dcP^gGl|hET^6rP<9ILkKpP%Di@_{&( zj&`)-Oa(Ae=}LB-@&8t1j+l4ucDM0+ceX||p^s$%L_?0x*LI#FCAl2QPW!Xjp)oz8 zUd0HjSV3-|xj9Tdu?q_W8JM5j($3NNi5|32-f^G+f$QV;)7OxO^C3K^fI!UqAx7U@ z;HjD?tOTlXQi&mDxb=xCBHA;?k04ikG5TQ%$_U}Y)pn^>gEYqhX!^?N;E#vkJPXtO zg$_gc-F~E<8>6#zCA@HA2m*XX$SyJ5TYmf<(U>5ay=?SFIB^H6$i%Dg2B$$hwAXJO zpZwiy_k7MVN(kF3y`64PtPVA}Ui=TW7WI$tWvT_17&}%)vl|ELzAnFF278V!Wkg^n z1M5;PJ$%bWfc%LnQ=UNFAs^vM3*X7L*%Bv>nC)jKSE(MAB72trtOKiKDi<3D6#`)- z4EdSipPNKki}55zC826uq=0zt<9mbGcjWW=$9oF7W}@-fm`r ?PP@yBBu2RS;Y`ZF?BY>X%>T_v`ZT7j!zMm* m51CW8h*@^yXP=Q~M+S#uIF)gI2#A}r%z?STPIy={Jn1}`OqNtC7u%Eb? zs1ghG$*3Wra54$YDCDu0!Zxsis(6+VJWcZc#-bzAju%XNyiG}VO)e=S`?;a8f})++ zxKt3d=s$QotNqu@h*jW#sCF8o?GfY#)J^Dt;mJ$+0Pq2ya6}5go^EK%PuUY}0o*d4 zN!sNT59vWFG52b1+?-0opCOO%(o(h6vW|8%6VNq!g$EL!QiVbA>StZa6Jg>WxqWKq z%3iqnfgvH*IP~(N$wGZ?6RGr_-L IJymSNbgzGs%D z)gaz0MPil+wmGF3i`V16qgUZYKqzr#RAXk`8vQMuUEkaFS(ozHL`)N$%V!R!zaUfd z2^~fypk2q3S*#GL7yeu3$ftwNDyl<{0(c5RDbFBU-OC$OB&(6gk-C-kf8XJP|!e zx-^(27(<@0$T1E!auX1Jbcsc`k_x;IXG8)D7FWv;K-veknpol}tbu`m#TwNnC A$3;q^OMoTVV4IsOQz;eE&LXW5Ji!xrJLd`RkBx+9vFh$z9>87$TttbDWu5 z4ETg@SQWtrtoJDvFTY}rVXXN=lMvqp7XK089EVGfQa_hnxFJNrG?e^(8r>jvMvk9^ zy3O8_0t;y69#4-y#vi%ic(lT?zZFehqYd3DSr8?7lz@eM*zx=Nh;zHV^wg|=f)!0F zHJn4w;@Bg{vqr_pz}W*1p>byhC*Y!{fTB; e%i~m zRb+|nD@5_^Tb<-B=Ob(cg23@h{2u*FyId7`Eg@nr |5Vvd5A>HJ?2X z&ikg?AM6{QN8h1lmV9xpGK@C7NnvhxvJr1D5fGVPhtVB#EP z>H&BzHlUqIjFt~cuFB@nI`B$!^u`|$LSahjJNEl^+1pqE({&lJwkG09iR4JCP chlxXM-Lb53s#w{y{-OahhCwUe)AS^xi%?y#L ES0Jz7LhoJ!Ml z7%}75-WeEr*v=qpTryA0bPF4t1fsBNtg?bM=mCsHx$__T1tWS=+rLdKa1(&%CEDXh zzqgAx&Z`77Xus>krB@oPZ9{KNkkUva(iRzq)jSbylJ>%(?C;zo_)KUruD9SAdsJms z*vwZEI>PjB_Ib;Xm-%A$uig2otXA;! +Sk8TlisawqD>(%Scrn! z=>`W?+6SUi?Ber@e@FlJ((4(Q>7!wS!Si78=YoQbrKRp4nH71l#h=gCBEY(sVQec_ zaa;h~(|qe%Xdnx=IEgON9a;FYNwnM8jCH7w0zrcIT++L|=34FrMngLJlUsmLr0z zdT#q}m;8&4=1I3}UE(;9xRdU>UkUnwcSyVF!N0~jf8euMrXo>|l-WUZ;n(QZ!mDLi ze6UOuK+Ket4vcr*wNHWwKF{yx0nFGLHuCHe54vGWaf=DDf9xs3wmrVSG? fYSQCP9Dt57ifG2~ zGB&7lP scyC{DMbj5a;|Id#bXrv3RacF~Sz|DyRV}V$(h)I- zCPmNEl_(K5_Mydot0&X8S1D&=PsWn>patFUp0+yO7`K<#PLI32cfn!~r4xiAoF^ii zvFPU=;jTYtcbwwo0kh75vn>Z5rj0?_ygaR2UkACL573qB)!Nc|DF~=yE#qdG;=G~x zaJPKI;7<@Y7xJ8252xRJorbRa-q07H%~L&)Czh3Ryl^gX3o|l7Nhr8f^`=fpxmqT{ zpWaU%dY?ic}FpEKCdoUa~267=FU&I1D!y%_!2^1G)|ZXG^eUJk6n6`CD}+nZ*|$ zlI1hODIW+vjQC`QU!dJ!N8@es&+t?oOp*+2q|gli7 l9%r+B8e zvWFM}5fweFJ=%q=|6bj9?(BG3Z1ZbeDo6GwhyA9zm0!u%H7^g(8FV9fNIC8AQS``x z7SVQMWt9x$dht115;!Ltt^jxs>VR>jRRhX}UZaV|8Q+f)!H-joZ$~_m2eiyf=CvcV z&T_C6l2(U(etv#+-VWml++VQHcynY;U5U+!)X1Vgl17@Y4P3){E!0)y*ToR p4-(U%9_`)WMW{}IV4vbls3$lUELxuF3;1Ak5 zr>uD4GJL}Unyag;?hOZAb~Wdds!M1Ptf%FrIo4N~mx!^5=v}Es^SJ0QR0SBwLr6aK zo-Sb`;zOjkFlqa0Ug)|eqn>N@1eGhkk8! lVBy3 z<7jz!9XG=Dj3ayhDfqO@o<>6=twK#NWfj&AgH6F+Tx08%kod>%^QBrgjp3tnczBot zg}XnTTUgATtO?sB8X`m-%2ABmC|dg0uc{=yPPYTej5bPiXYr5#VRgp6Mhv-uGKzut zE%N+06KXnw7tX*bx*Df3bC-=3hgHX!g-Uhr>xiePEeP!qDM41;t43tYw)0qC0l&*7 zjkpZg%|B5AP8_yKgc)1`|H$Fo#6?gG-gBsV2&|kF{7N(r>htR={^mhDlwEs#bsbN3 zGVat9G_N1MeR|qldIBy-O<68;fc(GbrKtc8#P57AZT{sX=ByVN3pC!%@*E&|62EH; zqf7~&*CJOKWMf@hXDZi8^ZmyP6Y*t+sDl>Dqu<)j8k0|57Ut%hoPB(@%!bo7f||fk z$5B9|D|q~qW`L*H*QJ6 27aM(27=(=IIk=p&pC=D=YvQX2-b&TO5#iC-0tkj zRH8LgfpaJd+M; J_3Z(8{neZpY=hCsds93paV zKX(_)rcHDGUcPX_7j^lCq*T?c>@KWR5d4)Vsz19zS@qgt1Zti C>-9d_Nq>C>vPUN~)n{Pit(GOnH~J1gYn s-6){gWR~=dr0aWx*-P4VVPU z2=IM !9zq!A2M1DW~383s{bSK z%(POujVgUq_)^7p<*+=-!Q&)9EGM5?sQT%DT7U*Jx1w;l68t)=sS3bO7MIh024YN% zd|7Dajsz=d1G3p@0N!Q6tQ~2E1?u9ukO!-%xoI*`m98w(3GqwN>zaUY4RHA3cec49 zT+K#i<$O2ECFcmTaW16GVw30r`lUI4g`C<{w`*Gv6QN*(r-{il(epQ?`J;i+sh kijSl7tu05AEN0Q?s=allT=lWK!lB;d z9Le*k`ab~9Krz3^ge6j`G`Z%Sm&@h6=H_N{xg5>SIdV kTg_}02ukOSy!QV{K;Bo55gxD?41GDcR>XcT~JrK()q9TM|YA)=I{QaDt~?>y(t z=lllevcxvRvnmQ4ESJlV4Gj ptViz*E(0pRaT25 zwJHvg&L2eVc#l>Mq=$Nu(s1m0#yz-2U9N+Xit }okEL7xul9Qg75qE^z7%6M^>?I+qR|oq5ONdJicY- zGySl}8DZBfle;citM8DAGaJ286^x nfUC`9b+$KwVWN8v1V=SHu zVGxlIEkk+Bf#DvW`p 7o5J?^} i(WOFbCZa_>v{B!5WVT=p0Z>*;N {>73=wU ;jP%)^ong@KZ=*7LdJ>&MC9M4#6O9@jIQe4dvwEHc7klw(Di ztHLxfG})y2 R;kop;lvyNkE-b#w?ooJG(W56qy z$sOEI%kFMc1N&UlGb5D>A+25lVpt&x?V($4z2)+I@4fejz`#Xo^xdAv2aVx0F=UA| zb8N`QAmF sGF03>s`gR5HbxWIhamx0e?Ksk z|6|u(H_e)xOPz;EXZ8N8k11JLsur8hF|_DZhUTsyN@pscfw7S5*-HD?he!<_LWx{% zR60kweGVgCizs$1AZTidyDU`KgjX)nvGIPI_OFkX46%Zt(s~6Hn`)xmK8M1LV;JdJ zh|M)4#vFFPTGi(yQ;!cntfg1s;ZV81P~`W;={)xRNs#B)wJI;{*0&kMMMil()J_l^ zH(0{|qU==Vp0e_w5q|n?Dw>b2)puuvzcj+D#b*u{&rZ=>uP98wTAqk3e<~_JSK;n| zUMa)1-gEI<{g{D|ipLVQcz+gj;0R=N&C6JVMm3Nc8K!;PBQ)(@3sE>K0_&njNztEH zivKKXJPPwqqJPP0M5$a&;zu=*9XvqW)`!XT?ua#|RIM43NDFbLbky73-Tl^YfBW0_ zU9>^Z@{~__9xt;YxzP&Nq`-zeIUI4tP{i+kII0)ag=_U)MtQYoINPLHq?XiF*9KJA zM`S6a_iWzOx#QtuQ~ADTS3M3DcQMX+K^3tfgU7v)q4_6cQ)3dV1+bQueH&=sa4%v* z%G2gBGW!GyU5g1bS*jJ=W1gdc2};cR(@#m|2S^H)Dz2uNCTg3-$gE=-p0SiL+f;X~ zhW8wk^xKHM!b73u_8Dcq`>E$QZYEf_-st+3a?6F?daMYujbXk{K(7EK8PbSh0m{2F zmKR&YOV97t`vSwiJ(CRRpIW1{LZ5$7c)OQkk%sto($3A{qDqB)+Zay9aB{P9VmacZ zi#F(Y{_%wI^;aUCX$ <1>VRYso`G0)f-9N3rRJhs&qKb2`8S|3xpbR7Q#v!kr`{f z#TMPl6dczg+=Yuaalsn>oDXj|8J1{7Dmuco0oC;(LN1!K^pqi^v~K+)e*O?i8xuEw zQwi0pm!jN08})0P)e4BA+&Yse+d|kji@^n_P;TvjIFeUSL?Oy#2%0 rOR|X!}cpe`$!ctqtKU(DE6+RN- ztdz$`OvINit;OiCc-p`s{O>9%5T%=lGHn&|?#l5e#QeH(1+cmTsAA`QY`Qip#b_}K zrD^lr#uASz|E o%kyC=MZ zYfqF5ZOC^Owu_lstw+pZES|8~6W)|IobL_sz4M>czx()OI&CUr)su^!)W2@_xzrfm z8ilk!6I~CIJ!K5@47>x&*RR{Ei$;H5Qq6MzpC#%POxV;$QnZ&?E;_meM 8zH3rKRY${7(*0F@y@%@k*ihwB%JF`j^o63=2 zbQ(hoPbO+=Ws2DklM+{FM!P4xA_ec$h_l}Ipf-(t-K13HwI|7^E&P*4tPzjWBuXX5 zO$Lh?VTpm)r9Ce5)BNbdb^7`%_GoTuqgCai4f-Nuc&{hCSS^zqC-$F5(?d-5e$*wJ zwjjKAZ-Hw+-mMEOe}nyM$tN{=|E;9K{fk1BZYFAK$BL;alO)k1p;M@kd;2NETwA46 z;$$uz=Gw5SCX#~2gqA@StR0m|23UXEDG2kaLnk6m^E?#_yGMozjo}S8qH`kUBI4GA z@!c1u`hS^VmpC`2h2o6GgsC(YCo)kqiYp12%+i?R>QMu!!Z7||4@3bf9wYNsGCcPL zte Uc48QdzLuJP`U3h!GUqtcA$LLQ(n~U^R7AV%)dhQu%}fQgBdH=Etl)hU$6Up z%Nvd5CB|o_)hYDzAyzbkF@|G-W3U{bAK<=AH|gcq94EUbKN587+sqF(@?M2ARVSt+ zNI zJa2C#Putdq@e4z!Dy11q7@oIcJdiv_;uMBJmF+fShgwDuN|Az5d{I&&bct}R@oBda zW0NP`Jgm!y^ObWnVsm*t-^7Kvfhi~$fE$;|j}?A=Nw;1|$jcF4ARg0nR7ZyiCAJn3 zeB*N*mRXc}{?)tm!)MH6)ywKs{En6Huf6#O5#GoIVRWgwr8~liwN}`rmd&AIj|hd7 zAr~qO#j?bUm?iKR#xTQb?FR~#P2Fi6&+yI*y7gbKJ6?W$QMb+`WEY0nqGaL>T}7E8 zh6P%WuE7Nw3IaP62C0!yVcp*gC?;;aEGRRL$1-basx{Ym++GdYqK1A^G_ P zJO6p+;gQ1g*Xp~|@IEn|p_XxOK>Ub^QcVOcGw}QNAW;a$RIC_@!ii6Vh7YP5@iRf0 z)W{&|p@XD*wv#!q2@Olw=1%g*JdZHf*u@eLqEPolk^U+2%pKF p^j_GluMl{( z4LHjfPDjYqdY0CL@tEPks|PHr-u9s0bIaL|6<|sVhGg0+<@%35p}+PF=lQ}JC@(xx zMI(kb4A1Kw Ug-P0!iKcfb(>wJ?-(Pz!L)Mc6{>?*irn;(b^3qQusm&Pmk1LoHsdol z&goET}o2Qv|yL8}FG#YhJK7=74?EkA3tiNX~(}FTt(?k%C@QSqMa+C!P?th~d zuJMF*A!S|jpXnX1Y`*=sp70`U8B@w*vn>oSJc+vJvqG3@BFr>nhI Kyx_{eI{T@5m%e_b{2uuI1snCn8uDQSuM?=*);YetGqS=9 z7Iv@-N7glU1(V2EPnHe97e4r?p3;=!oD{r3Wa^4$RA~DcW4Ww3#gg;a=~Xv2Agj&@ zuTfY`tq*$i*sv>z_@N(h;|-_Cfr;kwtp&0h_{aCI*I#u6yi+_rES9dCC!ogtn}p?d zi1!Yx=L^8zI23>1*q485tA2>Ejv{dX6a? D)FUM{2%-_GRHn(#wZBd@ELqLg#a~p} z7Q$1dh%!JB^1F0~#WrAij2Qr6mEDo>y+VnveQOeH !*;gh+?a>6%%Dd)(|yd%0+T}H |O$yjDY+$KHx6m=u{*#0jY)t*Y89B04FM zw~>7NRC)ZyljJM?B|aM}pSKae!ZIKp6SNi^GeHYRm}B7GDdp=IJ*tapz3!s5`u7TF z7}EfE5wODEvT%(CTyxzd7SL$<*JZNdx)pM{jrgLMW`8|gB+d)y6k&PRt8F?@Rs>|? z!0s4HV=CTCJ*i>gm4fmiwNVH{q>9)GzyAP4b-0KWY_=KAwxJkwOd+HLgF>RFRu`Tg z^S~4^r2^jYp_&!KC=R>v)3K}N@?mUz12HE|rewWS46+<*<1g`LHw7L~9%^zY=-ZcZ zMNs5=jd;w$fQ{Iz%5S5Huc+nv$tagZu70;%oAzl)6RXC<8oyc~inG8R@RbxaPD0d@ zIkcCywfB(QbRVe$TQK>4)J9k_ST(NNQxw87g$1V&H8p5tB9Jo6xvV8V})jF=ET;NRO@Qm8li-0KQ2)-P7Jgu&f|F}ZF8kG4L zNzqqN$;4^o^GhY(d_nio&+%y_8X`JTq2u8QgaGsp^l!4Nd169tYa_hDeMnTU>$zMIVMwMcOY#pT>2&)%IJj<5>fr!->`>eW7?)Ie(RAh~U; zNDUq!41%3cZQr@NySsZzEr9}``w;k(`acj)Ex1q+!n7vfH0W>>|~Zn@*NBz?u&| zu6O1<&M}5}dMTC@k(!Jf>Y@m=1Fvn$a_7bS^yk;jcIn<1Z_yJ?iCH3eRc_bACEoD= z;z!(i!z2pcCX&IBA5Dj|5nhCjUtDn_-csM^C04l=c-G1yjB8G3q)|ey#nDzfQGjc& zz4kx8^u;fpD@|U9D2P>3gT2o5ZXi*n8Jo>vO2b$in?^C6rLiGF>rB+7#(geg6$y%% zd_Sg?N19p>cg562s%*9y#X~i4L{@RnXAua*Fl;hnv0g15C=P!qhL&D0dw9N<0GuLs zHoUn>$ZhL*yGb?fmu?ZP7}sVt!C$DWx5tY>YOs%{%@5%9?;$D3suWL1>~bj>s~AGc z(-vY=nYxiX69%Mvcal1=854zg(a8Rl^XK1o$@jiDrNcK2nWiw^NS*Gi&Q0>XfUKt7 z!FSXZOd{VpMVSfR|^4h1l9X zo5Z=JgT~|ASFMzNN8>(jI!V@F+^s)KWm#s+%&l3q>>;YmQaJH~oqFJg1(WC1eL7MO z5%usI=CO>&LVe)D?K^h-`_ki%`>=1M!(t&A!5{9!HnpKLep$F&j~q7Dg5t_g1h9z@ z7KVgvGoeO;okRhqIEWO7kYYaeEyrU$<?Kf-e(Al)Dz9sZ3q(OT82$^Og~`&mbz~dq*UdlD4idT>6gB=kcU^?Av4(4rezO zBaTqsw@Qa7D}i}7YS7Zi< 2Od{W2E>8iMtN!v!pIra?A0wOtG)?rZ<2|#4 zh;Lo;q`vRk6J<*#;$&l3VCyAWx#YQTq?*}tH1A z8KKjvgH-ET&4*3HD%cQ>NuS*FnOrWd zgdyqu+wgm~p;3Susc_^-k{K)sl;9{gRYQW#g$==76jx2%F&{eUOv6hm^Qq%icw@}2 zgq~-j#J#AD29_d$8~GVmFqLb|8%n@iFIlUf0{-5(=5BTI19efF6v`sWu;PLTb&rL# zF>!>dKFD|Lm2;=w46cz38aA~l_ZXk$s&tOMcDx7Lu*^|y%%4+F;#7$# s6S)>a zb@TI7Q19?=Ocuw&KeS`Vj$dDK`4!&--uTz=dB $vX;w@uy`URgD@j1^S9|X9#>PpBb6Ai0lf%Ey)DDPoh*kg=+-S6DAhc~ z92hy>gIR5vBYdV)QY}sli04i0a@LRt*Xt($rUR>f@`Hc-^||l5?#)Y0?ivr~*L$PQ zHrvS0swtPSiilbxM3mZRVe8Z%NfaO>{ZP&$rC7m?eUU i$NXPja5U&BxBW#(D zjtze&<2xFGJ=U^0ooVbIo%1K1y|jhn(r}i6*X`=z49}y =hj zm$+obXI;SnTzi82;Iegkj4B^Nm{BjFtqR7Y8R3LXiqlGE+UmIj@y$JHglDALl!g>Z z)m|a0ARbK`F}>KpKRwzKM2MyvA-q&lU22HMxpHN|1A?}!?6y(3)=zt#ij2z+_5}J` z=d8Ks$?d;x?*2n~+>#}WXU(2{!nCIJ(x`3bbi7neWoN=NQW$VGMa3aZF^^4W85hJ< zu&rI#zTHR?GPep|hN!K}k-gNnT(?TZLw2zC=l}l4^m%P*&hR|W^$agTXpV`L>PF|M zDq>y8m?(_tM_r@`m5C$NR*}L`<-Jk-URAZ$QVzqQXK-*}drwc#w#}P2?|9;gCw2}G z4{zn lZ4< z8R>1MGOtocby>G&%s`(8N4>ir0A(RahlCY`ZH$P3FL?4So+RlM;(JtbE^3OP6Cj>Z z{KcWbZ0Jg59>d7#L^bky6jIG?+0)PaaPK2Ov_Jd7_pc6dR#5LHkA3C=ywvGq?_Z(_ z$q%@VgJaB>(hy>&$NayCOVHYd@1-z75ip1-k)I}L?Wzm#0t8BL5VH0gXO9QiFIcPR z`ND_&G-ql=Q}hhcg^RUFP(D1&E=i)&L>E-2R4v$~52r$@SlYE}&8i>lI ardlS5RQQc71J)UaoA5iGflWWLrH}~U0xiwhP<$5hQKo;j=8n|_2MGSNpGcJ zzGBvX71>ockqYqrLiyPE001BWNkl zAR;wk}4&XqCi2FA%%l#>4}uPiV^QFWx0MV zsobB j0m|H2dX^< z!TPmpd?%D=L@On!uu}-ymMsHbK*1BNjyZsm%w=O_c9bDS94-6U@7KS8(6-g&H3$RD z@F8qmP(^VVDUE9i5MKbIwl1una;UesaCX$(Q5S!)Ks#lgXZlY)CN*;1w#}P=VMTtv zbm`K8OV{f8p3f&FV%DU<+N6vCu!>Cy s&nfXWdnwxTF*i2bOser z8&BROy&w#Mv6Qgv(-eO!8GhS{VExakU;qT}#p7(WHZwj77}BcbaLoF(AEtuBY%@vz z;HgSFOUn588rFe4+zA)?Q?MAGuGpxtUP}6UO-1SX9@_=F#V}j#`082lzzEsVineLa zaesj^tu<{s8zIAeG2s$OFoG%OkuXBX?o$O#r?J^qJUNJJ1fEaWHlsfNVxZWwm$LNC z31_sw#m{7xXC!**57zbVU5EZn6w1sA?_QjnX_dTzp)M0 ;A&_bXem$_a8^uaJkYBa!uDBsJ=>8WL`{ll+RT~-lHh>VQty7&Z2J@W`Eyvj zXwiz?w2os(BvV4k)e9g%Y^gxtsSeDPu)NqS7U%h;p?1GK%@l^4@_mQ=&6_sMp&i=^ zg9ty!WAX#o=IP_+UA+NK9#i#u90^LitcKBQ0UJg6(#XievuDr#{*QnB<3Sqergoow zha$=iKVpj?mH#|ZrkV=oW8L~956(nsvciUu5pEj|+#F3Y&`v#Wk67Xlr402g7`5Q1 z>7+jCz!A%vSLqy4maCGjnS$Xyx`HZ$e)x gY7ntcO z$F_Pr36xb?Qj7FUq6jnG2SK^wGJqh3exx`IEz{#(Er*MpHZul*EjE*D=$4qmAl`5< z<&ivVySv%9YbVoAeqp+2*4%Vt>fgEo(~M=YSG0@#k^D?kiZWWBSt^wm4;&njox66i zZQE1i^Ldw@YK-I5wLy~UR%1*P=jkMgaqbDaJSmybQHl>q!YDeJ%49$D<*TmTiv!^6 zI(U~IBkL~PpfzbG0K{Od(xTxr1075xhi&W+uhEw_8U8=da4O2|I8AuKZ{lqqdPKjT zYU58|KTe)zroiD6Sxz<3((u7MoUDLQR;_;`$JCr3|MW)v)R&Hz-A8MVv(qdRI9s(2 zxs_W-J!*I=ssoTtC{wCEpPYyzwNHgpBxQ}D*M{_qp#u(InDOn;HI`$V#JQtl$T0Ru z7a$6d!2>S&EPl5DlJ9qJQVrK%6r$FdasMA7YMtQ 8SDWYVLXriz8>}u zS%OZf>nt0A875$v?PGQ@m`RU}EIL#eVPJ5O-rhd;@88GJ;E Hs8;KdbP}IJWR+ZVOZzd47M*|l&wu{8SH0;?6K17rNEr85tDV9DskSDj z-=*qLmeB2JNkzeY^a(ww$>SX&oNGL~)W$u}4fC-qX=`F;Q0CGPtkTDBI$e%hGMfr3 zt=4ABg1E-S0bIRSIVhGBj3HNx|0K>ecwK0@4mfHGrp@O} 2ew8LG2ack1c6x z_Dz~lo&f_^T(OXu>e!*OC2d%54D-g~FfpgfOk YM7|b7o`+$sckN7y)BEv}L+0IjAF2Dqwc6W-z~p z{&I<8sl?FW5JN*lgf_$&gNShv1xb{Pg;WzZQ=bl0JrB(^yVPkd#*aOYC`~H8Sg>lz z<(j5V>*#pJ+_`g~*tTukj}|Xp+_)&wuw4u%X+35`rF|gauYbOtr*ILdqb8TE)#JPr zEtvr}Tv>y#tMc)t46ha8wIX!c&{2x2b)dLFlL%+~!k5}w>t}gRRW4ntpBGq3qn=Cd z1MXL4gSGrpgv~(Br22UAcM5#*qP4a8WTq+?uF(Y+-W(|%^?)>0utI+bo35Nhx4UOk z1STdd9wSzHT$L?a#~L#p;(O%8!>DkoTH0!!o;Jh`^`KD|_)LCJVGzot+6g?qL7Uo9 z;}cDrRU3a1$1!6DdmtvM!YVeMjcX(7Y-qK}zySu<+{gMgkF#;pCU)%H!NA}EisBi^ zNGck)AF%)y)rhF2!&Qsd69JoP!sgm>X}3wyW9(8*pky>QIrD`)`Fwr>@D^jtgcKmg z=eNe=P_5D9s8NSeUXX(0ujtmJ5(K%hTi 6Xq|rZ{EfO~H1T)k z2j4Kqc*M >g%l=eoi6Zg+RONL*+=|p~KVWTRA+JUur zvnww%%11BWqBEcFJX0yYXnanuNBA7K*6g(rTLg}(`#2ey@LV*QXo@z>H&2#Bk>QZq zhImqI=;KAoDZqH9BdeIg5R~$ev>%~LfoX<%9S&0iUQmUor3;&zhHYvP7S0bq|6VkT zD*JfCZU(BZq8l)tk7qo**jlM{M$kB# TQ{(~~%G0%f^OMR49L37ivUB`gu0h&ao zsMW%0-2KFEVWCi9_wL=Pef##ES}YbX-?V8{!$bY5 -7BwE;WYNis2+NEcZN4^ptm|LO$8Qo`nw0j}^?v*Xc2$w9z2zJkEj07~vHn z{PxQmblH)HOD hL-)- z(j!viIlE`vmA0geFdG? uX-6|}7r?U?IaojU5# z6o)Z`2jkq6cz2cZ4lAkmff?g043vaULF0tJ(GyT`{f$tt0nv;_gmX_o{RX^)3O1V~ zn7N3kwabCJPNP;ZrADGAuCx&0;K76J-o3l6udnZ{Fbv ?&a;S``rBSfux MYxgTHc3 n<8pZl zVQ`{^o!H#UiL$Ie;=aq)>QC?6qYI~^XfEj18wI|oa0<1k4@QX?P+`9s{?iZX2e@v9 z+-!x-qV-Dx;?H!J!ue&m_JWP$neir)%hu|TJ>hSFwnoauhV)s>s*KN?$ut8$ni6>w zfkX8g;;DiMU4)#`zq)o9xt@r}MiDlNFfPCuX9&+p!5Jd7kBd|ZF7M^gUNmxCv{gL9 zt#%nc=n5ZeJX`^^xs$MKL2dj+KuSeq-~d`KR5mfFt3)o3K)uXa5wxX)X#R<=^uR_` z8^|U4F0raC8kSIF2$sJHZRub#V43ZlPq_FrY_`RXZxz=SsZlzxpptYQR;;z`+PRYh z2M!z;hT)q;WO}1(dY12bhW&N(P~%P*qPzv+<40oMU%FO5Z7iP>VFgNRT&jo#FGVh$ zW^uFc5@#Kdi))LaE}gicBoR6>bRwMli+-NCWSwrhc!PfR)9dstztO_HyY#M#RdR=F z=O;Jo-(0d*e|^bX-I)?Th_G;?&~%Kw1PWUu#ZSL-cnb0z3Og_jOn7%6Gd%d~RLJe0 zSf?MjY>PH@#{e!}tCw7|RyU~dHjz5mLNZ0yYiVbf;j34laCE`5$w(N|uke(ZIuwQu z0ysY9@%n6*DRt6((FwaA6vH-ZRHr*W7#5X6UZF~R%_UD!Hjp&K{8S;ZiO2a&Ljx2j+>IfCQPBAR;wNaRA#L?{tx z=v=O#gp@~!=C7puviA|qJ)vPO)adcmPZ1t-GQsI@z|LL*o~gJ$bw%P_nZ!o}MoL9? zY~NvedV0<(m&>2oxpQaTgYqjYWvvZ(P(1PtFXMQx&o^amy>zR->WXbTAw+jcx4!n$ zwfbv>i!m%} F1V?`Vx)oWDw@u$}5_used_M0E!#jQ_l%$^iLM>fZAu3RvloAx|e zP`qTl7BJXxK@$ZPvMBFC@W _117_h#_)o3I9NLA9 x$AELCVST0haWau<$OvahK$h7ab36>{%IYxKneCyOw@5l_pg$yOeS zilgxue?=+@M56-<6HQVrL%^*Pap$!$C+}#vW`$gI@mifL${T4=1R1;5VuXw;b5wb= z3UBHy!yndH?n4Y1kyxorFvqxI*N}y~ZOFH-pJLa7qb2|OeCb))ts9I-(bnNJitFZ# z!r6gx=C{|q>Km245;Fu`v`!y1K7V`dak6FfdxL;IVmTm&)|wWlAzkyL)*^koQ0szy zj`1!gU`igaG05Nn2e`I&PJaIiP%a|_`=Fe6-b_M g+mk`t<3q7m?e5 znhNHI<#O94>-4HrhR;Q1=G3ddO4fu3(*$0n$}4+He4$6+(seFFaIZUZ1TZExtR|ye zY(Q^0Vq?DKD&P)#g8z7ud^v<4N6<568Y8Xxuw%cbGE%Hu%BtKh%C*-v;MTovh5R+j zgY__o!=_iAgTX1*>X%C>l*!CB=6;PVtd h-gbI7PyBT ze&0s$Ja~bGe0D5W75J>NhRwBbm}J~>B7j=F1KVA%WRi7|^t861f{MZP?~9{MQ(J0g zWC+u<1HvdSx{eW!I4Z23hri)|q%eu(^O!{T@GtZ9l*?GjO~YneX-Hlmfbr3|fFWtt zrU+pav2Oi3dJgow(pr1bwr$($g0$Bzmz#nj|LmnX*zgv#@>Sv8jn_u1vPKjSjrYX_ zB91`9TFd|TB5qAG|Hn`sMN|EH|lTuS}`)^wXEvd=Axcze#b))hlJkMDMv~rMxmy z{)l0M(!WunHNGZ0KM1ir 7f= zr&gId(f*l)1zJ~zm4|G=Duj_E`K;pDMyv0Q2k#=wx+r8vT**GMSc`0Z3@rz->!M(6 z%!==9ZCi;Z`N;0|&YhXeSthtLgYB!)@<_Z9B=%^W1takstlxyJ{w=a+b0v&@)Figj z%s>y`o{dN_LGZ9J0Hu)$7l9~_sv%wss>Y> m63C7gdZ`ZDnFTZ3Ne_`QflwJf|8Stphuwsb@ zk) #4eTQ%Om|AuymAbm8KR>sALsfdjaFwTg^!j6`?iOjl&RWr) z*yRdP4jPV(PxzZB$vu(b-&J{vI$6#Q=LV>9z%o8__xhFcZELwhqe+xN2$=r8cuzeF zLCJORNR$9jY2y*&Fe(N)v=?vR7Nl69p^g m_Pns%)TwPc{k(mtm!|1*R$1y&+FZzDirfr8&z&d z)dh8(LUs!1kw+ilz`+Br13tE8%a*#K=6^a#R$aS7-YSO6!C9e4>+ns+Q3z2UjVu=$ zpBu+27np$2?)4&vu3IkeRN)^iJYtnYKoN7~8(5?g-UTQ{FsRB;OvEXlKURMJbW-iV zyiES}>Xov{6MkVWeJI5^fKfT7r#e4{-Uxn5ic_yzCSR)c5GN&;+thMU;`t=kaSMoT zk>SVrCXTop!apvT?*}2Dv&x@ +eH`4#m`+Q#2Nnc|;*n7{c4|5dJ+sLJN6U8Qy&_ z=D<^qk9YLEtz!0UhTR*{p+3x^y+}|RzYYZ?2#|eS-24(H9N&k=eUb2l-h;jD-nl!I z&*xu1GBWat?(Xh}`At`!AlFBh{~zU-v7rzp>u*YrAX%@1s->i`JyiZlmDgRjQvU6l zWinLn(M?(|+oCUuO8l)6UW!ZcZ&t_}nOs4gI%Pb9GNKR)+#|}Rlfhc1DxZB)PbmuT z173sB5r>{L3Mo@-w$3b#PzpfN8cL%4A)VqAUpfMdrIuW>UcZ3logz%b;T{oiK;aew z{%NW`v}?)v>-5wVd_;toV(9{!5K?1X^EloS%Bl>D;ZN4^_t%{u+Zv61!ISnY(>(j0 z$VRhEk!xNkHgX&9z*Csjze9%lVn%!+N&klGei5id7L)8*v5I;=cKHj@V@^i1t*-s5 zy1v;IhcR0p!Q1>NG$ 7#qqCPnD&ywfyBo9ae$2t`pcYMMu&2Eq zJNsA{`ZgY@MZz+2a2Mv`Un2QKmEy?C%oM65NUqiI%U}Kqy1Kf)3tWEcsi#h=57?#a z^+PD{RLfE^ !`57_rbNaQBHVeBnI{WcMV_up^UCY}8klL*6cylf}>> zuB=}Wj7hp$Ryci#>uBk>uu6RXueNd5bv44z&xBn3q`tujuT TKfs(~n{82j%EhjVJQ8T{?g7Ag_rGi&WU0OY@5>7aw{5?0Ryu_O(5-Y5E6j z#4AKupe~ee;+?K>KE&FL@C~n>JFlEOz7lq<=(^vYeP?0rRT~c$&e~mw(qUwg;X_F8 zPUwlx2+xm)mx`@Z&3zfQ;NmiQ_lh`F5tg8RCbnZf+TP^|!v}ki-W}-3Fo;)i{Ds6) zscuAv^CXK+Vg`fw)kzBhwa_sayXa(?u?WpJ$GxNtNm+c7Ehb?ZIkXqqzZLdxcC}C9 zgXhJ3FA8E@Zi9{7|C^^l%QPtFk)eaG%G<=uU>Z4=uvts6vyX+QRtN&5e-E )&+wDyhq`$M3{}@xeHf3 z8jDuES! q>#`QCXh6ar!CWG++4{KZ^k#oBeH{>w2;yj1=ZK82 Odt39Rz^Iq5SRoEzAwhJV`=W`VRQ+Dn2yu_) zII}TPH0~vWh)Y#cO<3?W_J*o1k;W&wB$y32fB-5OOm%aQxxN_iv+j4r5u{j1Y%cd2 zQRn7K3Q19^pRy<>R&o+67dNH2|4|YN5yd8R8?D$9cT7Cg_b?K>k;G P!pc`|Q}cla%i}%k*iAoP9$GH#`Dx_0t_}l>FH_d7qR2KJvtqPk2ETh_#WkI5crn zz{H!lvQafgTtp8)jjK9hl#67mzpUUh&Yw&CR~>D!#K4N%Z&hoh;&6>}%^ag#OvONg z0adLkH%&9@eF@f44V5HrSj8r*DAiF)EV;H2r@fAz7nSiPzG;cWhcVrZn}V& 9UAqlf5HaZTu!;9W8;i z6@^d%S>qR1BFIv8Un zrQTN&{NOOy@CIPQO{t^g*CqC&AS@^GnK+8RX>X+PEM{EMohILx$&cXxv4 zC<%(Mj8+ecB*VD(RKT6lgB_0MsDQD_JAk-Q#~6Yj94;1%-Q{w5lT{Vp_nSdY<&G1V zD!Jb{@|8GP$%LHliJi5>%$6!BZahP&RNTI4(}r&j<#+#f&5n)FO0eWe KQ$1^Ck)?d4YoQJqm@wmcfC++aGw~ zfv^1H7r(e;_RN{R>2$hmA?v67W)U%m`3+;81R1rF5A(+)u_I!jIeGbL^`n*FRR)%X zl*(yB6JLI$II?SGr1)^YP`K~czxvfrZ@cZb|2uEqf MT-$z;U?`c^Jm*^x^7 z%RSF)L)BEah*Z@_6@=w*NTX`JFk1a28_2}emBYhB_ix>_^(XuG@B7L_4?WZi46NU< z;gN?|t$K3q?76*Syb%#;PN!2 !S0X}{J^- H}Q8YL>_-MIQx_9s1y}$eY?|=XOyYIT|=7E8MEkN(uwcXnmEL;%fnsW P~j^}r{c8M{Vs+ol`hGMa}eb=sC|NhuxkKMX;>(;G6kxA8A{CT97!hBAi zlUibMjX;{uJMX-|oxfn-KcxKB0+j0JF<`C4EnkT}gz=_Df|!i b)f3VNU^6dQg}#Jw*UUF-#)Z$=Z=RclN3^wsFqr!fdy}Q z%UjM{uwcR8WHOmWs!1Qq*m~0#7#FEr-)MCn&R41ezQ!0z#p3qeyLaERYSpTL-@0|{ zMj#(QoBy)%oCWioOjct50O{`T-Z*#eoP2Xj>xrH*tw~U%x=W?9qorao!02#nf|H1V z?|BRk=AYQVf8Q++Jn+Cxn>KA)0}NB`$E@-9GGMI@dpB%Y|M;ViKGMBx*|J&bOlE-? z$;v1-l2|JeM{3Ndh>nPkgK?6tD)39?_*E3+dF |Ju91-zcst4&dK= zXLgO<8XLF8pbE8uR2T`WLZV7V{R7&^zV O<5}gly0)$Jgc#NizUSBO@cZ0|yS2Tlcme@jP#@wa_Xl zbl26TtgE-E__@tpfRN0kI{oBHV+9w00ft^)4S*RL8GYQ*(Xp_vqvHp1^VHW> -H5*4Vf>S_^Ay#kHP0x9|S>M(_21%+AhELxM|)|4set15FJ;?!<``NA@%~ z9rHcEO*+ *-=;Cc`Q1-)GdR}<(GO+ZnEu=t2lq%IJe5FjQrr8fbkEdfK9vWCz^N&<#Z zHcwb;K$I#7L8SK*l s&YAC=nLFoRbJM!nRO1NH z(GMo$O8`1hYa{9`ng=_O!cC?!$e)wQ3&qQlGGT(p_6`|+GGVjWDNo9KwPn`5T@W9i zE*0{TLUSzv+TaepjyJ92U@V!Pfi+b=9O<7aB= z*yF)zB?)DyavH!XeoD=)!sCQC(5ju+)w$k8`+FYn^uc$eN~aXX)8SOKEcwD6S9g5) zIk~Aw@m)jKRs!wHv>#UI&td|d?bhNm`lvPC!)9bPgu<+6F71lp86#GZM(csxh>0}m zFm%@KQFOH}cZGGIIA6q KkW@BNOUF> zy*X&zZ$tYv{hyAKE?T*?5l!aa|4y>P*CA_WP&}2gc})B{8iUzHj*4ldo0Vtv+Aa0v z=)F2QiLA%EV*+GSGLm4-Lj@(yVkJ-28A8YLa5JW3cRj>fj^rB-A`0^cJY#_Z0K@F> zu=0FrAXD$CaTZ?}k{|2MKT+UZ{u@N^WJRxw!aftJ6%-WQPp>MC3phpU9uyeavO13n z{i+vY;5k@xs7p|yL(L4t_38a18wJOWi=VL 1z8@pydRjy9o( z1qQr5`i1xOY>y;;$vM|KHF9pK-Pppw2u)PI{Ckv&+v#>UU1#@_K^=g*6C~&Y;1ZhC zjo5brP&?V8Q*5&qv7w!TotK}xodis&M8l=iPaRQRq9P*g+!RlQBy~b?8ijysYom03 zmQ3o|TZm=R6E||R=J^#Q$_fZI!gbN!#&ah5D$ ShVoWSQ;F2xMauqqdsNNA`#XB AFZRo#7$HszlDaJ<*+HjvH~lbH=hJ &iFUNN?@vk`I}`F&UJrQ zFysR`skEGiASi5Z)+%7`%y`QY*KP@_Jr1&Jw*tusFqfg( W;H2v+7vO!X4Rl;`zKJwW1ksz{|obOb95Hw9NumQmR8-=v3%zL{d4AU zTzdXr)qIJeRC%qB3VbR%w+53(!6+08`DyVm-7yyUUlBL^OpUVVb9HsJ0+sYpB#>-? zaLYi1QBs;WzL7A00Av16Q(nX^d|UePOxU9(Ce3_muU9p{q3;D9Eepu-vho%$&FIr% zAb@Pzq{_mVn{y|u7}+RW4UZqXuG($$K_}{Ht6@Ts?R nM0N1Gu0_clMs}0+7c?n|oxS^ t+G|OVh($aF6{U~ le7?~QbQ(McX&9w#&X5E!Y^te_P z4wM`5&+sTAd26bxyq )gmV6 +2tb_#+>M@N-=scGk{XM4e8D=RDZ z=4R@g!`I)AxEoIKgD2?yX7>xU!>Sq^_nlFjWM0Y1<%u-^kopPJJr>8$VT4>;4p2EcpP3ICDATA|E`dy~iie-I%8ioVC0b+vDRb <{9 literal 0 HcmV?d00001 diff --git a/nuget/SiddiqSoft.PROJECTNAME.nuspec b/nuget/SiddiqSoft.PROJECTNAME.nuspec new file mode 100644 index 0000000..be89e79 --- /dev/null +++ b/nuget/SiddiqSoft.PROJECTNAME.nuspec @@ -0,0 +1,43 @@ + + + + + diff --git a/nuget/SiddiqSoft.PROJECTNAME.targets b/nuget/SiddiqSoft.PROJECTNAME.targets new file mode 100644 index 0000000..ae59fb3 --- /dev/null +++ b/nuget/SiddiqSoft.PROJECTNAME.targets @@ -0,0 +1,8 @@ + ++ + + + +SiddiqSoft.RWLContainer +$VERSION$ +SiddiqSoft +stdcpp reader-writer lock container class +unique_lock shared_lock reader-writer container lock native nativepackage cpp +https://github.com/SiddiqSoft/RWLContainer +true +BSD-3-Clause +docs\Siddiq-Software-Avatar.png +docs\README.md ++ Copyright (c) 2021 Siddiq Software LLC + ++ ++ + ++ + + + + + + \ No newline at end of file diff --git a/src/projectname.hpp b/src/projectname.hpp new file mode 100644 index 0000000..6911e83 --- /dev/null +++ b/src/projectname.hpp @@ -0,0 +1,44 @@ +/* + PROJECTNAME : PROJECTDESCRIPTION + + BSD 3-Clause License + + Copyright (c) 2021, Siddiq Software LLC + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + 3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#pragma once +#ifndef PROJECTNAME_HPP +#define PROJECTNAME_HPP + + +namespace siddiqsoft +{ +} // namespace siddiqsoft + +#endif // !PROJECTNAME_HPP diff --git a/tests/basic_tests.vcxproj b/tests/basic_tests.vcxproj new file mode 100644 index 0000000..c19538d --- /dev/null +++ b/tests/basic_tests.vcxproj @@ -0,0 +1,114 @@ + ++ ++ +$(MSBuildThisFileDirectory)include;%(AdditionalIncludeDirectories) ++ \ No newline at end of file diff --git a/tests/packages.config b/tests/packages.config new file mode 100644 index 0000000..0204b20 --- /dev/null +++ b/tests/packages.config @@ -0,0 +1,5 @@ + ++ ++ +Debug +x64 ++ +Release +x64 ++ +{025c9280-6302-401e-949f-f82df4d47204} +Win32Proj +10.0 +Application +v142 +Unicode ++ + ++ true +true ++ ++ true ++ + + + + + +$(SolutionDir)output\$(Configuration)\ +true +false ++ +$(SolutionDir)output\$(Configuration)\ +true +false ++ ++ + ++ + + + ++ + + ++ + +NotUsing ++ +Disabled +_WIN64;X64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) +EnableFastChecks +MultiThreadedDebug +Level3 ++ stdcpplatest +false +$(SolutionDir)docs +stdc17 +true +Console + ++ ++ + ++ + +NotUsing ++ +_WIN64;X64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) +MultiThreaded +Level3 +ProgramDatabase ++ stdcpplatest +false +$(SolutionDir)docs +stdc17 +true +Console +true +true + ++ ++ + ++ +This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. ++ + + \ No newline at end of file diff --git a/tests/test.cpp b/tests/test.cpp new file mode 100644 index 0000000..0621eee --- /dev/null +++ b/tests/test.cpp @@ -0,0 +1,46 @@ +/* + PROJECTNAME + PROJECTDESCRIPTION + + BSD 3-Clause License + + Copyright (c) 2021, Siddiq Software LLC + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + 3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "gtest/gtest.h" + +#include "nlohmann/json.hpp" +#include "../src/projectname.hpp" + + +TEST(projectname, test1) +{ + EXPECT_TRUE(false); +} ++ +