From 1e2a28e4fb67f50f6a4489a5e79d3370ef007da4 Mon Sep 17 00:00:00 2001 From: Johan Petersson Date: Thu, 24 Mar 2022 16:44:26 +0100 Subject: [PATCH] Release 1.1.0 (#36) * Adds order managers mapped role * Add content type item template (#17) * Add Content Type item template * Update README with additional details (#19) Also fix parameter spelling error * Add scheduled job item template (#20) * Add Initialization Module item template (#18) * Add Initialization Module item template * correct parameter name * Add Page Controller template (#23) * Add Content Component template (#24) * Razor page item template (#25) * Add Razor Page Item template * Fix some copy/paste naming errors * List all item templates (#26) * Publish CI packages to GitHub Packages (#27) * Publish CI packages to GitHub Packages * Supress .NET welcome msg during builds * Add license expression to package (#28) * Updates CMS to latest (#30) * Various bugfixes (#31) * Fixes broken link in content * Makes section handling more resilient Now handles created below root directly. * Increases timeout for database creation * Updates the version * Reverts to 1.1 since this will be next release (#32) * Delete old package versions (#29) * Delete old package versions. Keep 10 versions * Split cleanup into separate step * Fixes inconsistent file naming on disk and code files (#35) The template engine replaces whitespace with - in filenames and _ in text files. That means db filenames on disk doesn't match the names in the connection strings. We need to use unambiguous source names, so unfortunately we end up with ugly project names and namespaces. But this ensures everything gets replaced correctly, see https://github.com/dotnet/templating/wiki/Naming-and-default-value-forms. Added restart on failure in Docker compose. Services are just started in correct order, but do not wait until they are ready. The db might take time to set up first time on a slow machine, then the web fails and you have to 'docker up' again. There is no nice way to achieve this in another way, other than making the app itself more resilient. Also updated with our v3 NuGet feed. Co-authored-by: Henrik Nystrom Co-authored-by: Henrik Nystrom --- .github/workflows/ci.yml | 25 ++++++-- README.md | 60 +++++++++++++++--- build/version.props | 2 +- content-templates.sln | 27 ++++++-- nuget.config | 2 +- .../.template.config/dotnetcli.host.json | 2 +- .../Alloy.Mvc/.template.config/template.json | 6 +- .../{Alloy.Mvc.csproj => Alloy.1.csproj} | 2 +- .../App_Data/{Alloy.Mvc.mdf => Alloy.1.mdf} | Bin .../App_Data/DefaultSiteContent.episerverdata | Bin 9492137 -> 9492185 bytes .../Channels/DisplayResolutionBase.cs | 2 +- .../Business/Channels/DisplayResolutions.cs | 2 +- .../Business/Channels/MobileChannel.cs | 2 +- .../Alloy.Mvc/Business/Channels/WebChannel.cs | 2 +- .../Alloy.Mvc/Business/ContentExtensions.cs | 2 +- .../Alloy.Mvc/Business/ContentLocator.cs | 4 +- .../ContactPageSelectionFactory.cs | 2 +- .../EditorDescriptors/ContactPageSelector.cs | 2 +- templates/Alloy.Mvc/Business/IModifyLayout.cs | 4 +- .../CustomizedRenderingInitialization.cs | 4 +- .../Business/PageContextActionFilter.cs | 6 +- .../Alloy.Mvc/Business/PageTypeExtensions.cs | 2 +- .../Business/PageViewContextFactory.cs | 22 +++++-- .../Rendering/AlloyContentAreaRenderer.cs | 4 +- .../Rendering/ErrorHandlingContentRenderer.cs | 6 +- .../Business/Rendering/IContainerPage.cs | 2 +- .../Rendering/ICustomCssInContentArea.cs | 2 +- .../SiteViewEngineLocationExpander.cs | 2 +- .../Business/Rendering/TemplateCoordinator.cs | 8 +-- .../ContainerPageUIDescriptor.cs | 4 +- .../Components/ContactBlockViewComponent.cs | 10 +-- .../Components/ImageFileViewComponent.cs | 6 +- .../Components/PageListBlockViewComponent.cs | 8 +-- .../Components/VideoFileViewComponent.cs | 6 +- .../Controllers/DefaultPageController.cs | 6 +- .../Controllers/PageControllerBase.cs | 8 +-- .../Controllers/PreviewController.cs | 8 +-- .../Controllers/SearchPageController.cs | 6 +- .../Controllers/StartPageController.cs | 6 +- templates/Alloy.Mvc/Docker/create-db.sh | 2 +- templates/Alloy.Mvc/Docker/web.dockerfile | 2 +- .../Extensions/ServiceCollectionExtensions.cs | 8 +-- .../Extensions/ViewContextExtension.cs | 2 +- templates/Alloy.Mvc/Globals.cs | 2 +- .../Helpers/CategorizableExtensions.cs | 2 +- templates/Alloy.Mvc/Helpers/HtmlHelpers.cs | 4 +- templates/Alloy.Mvc/Helpers/UrlHelpers.cs | 2 +- .../Alloy.Mvc/Models/Blocks/ButtonBlock.cs | 2 +- .../Alloy.Mvc/Models/Blocks/ContactBlock.cs | 2 +- .../Alloy.Mvc/Models/Blocks/EditorialBlock.cs | 2 +- .../Alloy.Mvc/Models/Blocks/JumbotronBlock.cs | 2 +- .../Alloy.Mvc/Models/Blocks/PageListBlock.cs | 2 +- .../Alloy.Mvc/Models/Blocks/SiteBlockData.cs | 2 +- .../Models/Blocks/SiteLogotypeBlock.cs | 2 +- .../Alloy.Mvc/Models/Blocks/TeaserBlock.cs | 2 +- templates/Alloy.Mvc/Models/LoginViewModel.cs | 2 +- .../Alloy.Mvc/Models/Media/GenericMedia.cs | 2 +- templates/Alloy.Mvc/Models/Media/ImageFile.cs | 2 +- .../Alloy.Mvc/Models/Media/VectorImageFile.cs | 2 +- templates/Alloy.Mvc/Models/Media/VideoFile.cs | 2 +- .../Models/Pages/AllPropertiesTestPage.cs | 2 +- .../Alloy.Mvc/Models/Pages/ArticlePage.cs | 2 +- .../Alloy.Mvc/Models/Pages/ContactPage.cs | 4 +- .../Alloy.Mvc/Models/Pages/ContainerPage.cs | 4 +- .../Models/Pages/IHasRelatedContent.cs | 2 +- .../Alloy.Mvc/Models/Pages/ISearchPage.cs | 2 +- .../Alloy.Mvc/Models/Pages/LandingPage.cs | 2 +- templates/Alloy.Mvc/Models/Pages/NewsPage.cs | 6 +- .../Alloy.Mvc/Models/Pages/ProductPage.cs | 4 +- .../Alloy.Mvc/Models/Pages/SearchPage.cs | 4 +- .../Alloy.Mvc/Models/Pages/SitePageData.cs | 4 +- .../Alloy.Mvc/Models/Pages/StandardPage.cs | 2 +- templates/Alloy.Mvc/Models/Pages/StartPage.cs | 4 +- templates/Alloy.Mvc/Models/SiteContentType.cs | 2 +- templates/Alloy.Mvc/Models/SiteImageUrl.cs | 2 +- .../Models/ViewModels/ContactBlockModel.cs | 4 +- .../ViewModels/ContentRenderingErrorModel.cs | 2 +- .../Models/ViewModels/IPageViewModel.cs | 4 +- .../Models/ViewModels/ImageViewModel.cs | 2 +- .../Models/ViewModels/LayoutModel.cs | 4 +- .../Models/ViewModels/PageListModel.cs | 4 +- .../Models/ViewModels/PageViewModel.cs | 4 +- .../Models/ViewModels/PreviewModel.cs | 4 +- .../Models/ViewModels/SearchContentModel.cs | 4 +- .../Models/ViewModels/VideoViewModel.cs | 4 +- templates/Alloy.Mvc/Program.cs | 2 +- .../Alloy.Mvc/Properties/launchSettings.json | 2 +- templates/Alloy.Mvc/Startup.cs | 4 +- .../Alloy.Mvc/Views/StartPage/Index.cshtml | 2 +- templates/Alloy.Mvc/Views/_ViewImports.cshtml | 14 ++-- .../Alloy.Mvc/appsettings.Development.json | 2 +- templates/Alloy.Mvc/docker-compose.yml | 5 +- templates/Alloy.Mvc/nuget.config | 2 +- .../.template.config/dotnetcli.host.json | 2 +- .../Cms.Empty/.template.config/template.json | 6 +- .../App_Data/{Cms.Empty.mdf => Cms.1.mdf} | Bin .../{Cms.Empty.csproj => Cms.1.csproj} | 2 +- templates/Cms.Empty/Docker/create-db.sh | 2 +- templates/Cms.Empty/Docker/web.dockerfile | 2 +- templates/Cms.Empty/Program.cs | 2 +- .../Cms.Empty/Properties/launchSettings.json | 2 +- templates/Cms.Empty/Startup.cs | 2 +- .../Cms.Empty/appsettings.Development.json | 2 +- templates/Cms.Empty/docker-compose.yml | 5 +- templates/Cms.Empty/nuget.config | 2 +- templates/Cms.Item/Cms.Item.csproj | 12 ++++ .../.template.config/Icon.png | Bin 0 -> 4483 bytes .../.template.config/dotnetcli.host.json | 13 ++++ .../.template.config/template.json | 35 ++++++++++ .../ContentComponent/MyContentComponent.cs | 14 ++++ .../ContentType/.template.config/Icon.png | Bin 0 -> 2285 bytes .../.template.config/dotnetcli.host.json | 13 ++++ .../.template.config/template.json | 38 +++++++++++ .../Cms.Item/ContentType/MyContentData.cs | 23 +++++++ .../.template.config/Icon.png | Bin 0 -> 4483 bytes .../.template.config/dotnetcli.host.json | 13 ++++ .../.template.config/template.json | 34 ++++++++++ .../MyInitializationModule.cs | 35 ++++++++++ templates/Cms.Item/Models.cs | 9 +++ .../PageController/.template.config/Icon.png | Bin 0 -> 4483 bytes .../.template.config/dotnetcli.host.json | 13 ++++ .../.template.config/template.json | 35 ++++++++++ .../PageController/MyPageController.cs | 20 ++++++ templates/Cms.Item/Program.cs | 7 ++ .../RazorPage/.template.config/Icon.png | Bin 0 -> 4483 bytes .../.template.config/dotnetcli.host.json | 13 ++++ .../RazorPage/.template.config/template.json | 36 +++++++++++ .../Cms.Item/RazorPage/MyRazorPage.cshtml | 11 ++++ .../Cms.Item/RazorPage/MyRazorPage.cshtml.cs | 13 ++++ .../ScheduledJob/.template.config/Icon.png | Bin 0 -> 4483 bytes .../.template.config/dotnetcli.host.json | 9 +++ .../.template.config/template.json | 30 +++++++++ .../Cms.Item/ScheduledJob/MyScheduledJob.cs | 53 ++++++++++++++++ .../.template.config/dotnetcli.host.json | 2 +- .../.template.config/template.json | 6 +- ...y.Commerce.mdf => Commerce.1.Commerce.mdf} | Bin .../{Commerce.Empty.mdf => Commerce.1.mdf} | Bin ...ommerce.Empty.csproj => Commerce.1.csproj} | 2 +- templates/Commerce.Empty/Docker/create-db.sh | 2 +- .../Commerce.Empty/Docker/web.dockerfile | 2 +- templates/Commerce.Empty/Program.cs | 2 +- .../Properties/launchSettings.json | 2 +- templates/Commerce.Empty/Startup.cs | 2 +- .../appsettings.Development.json | 9 ++- templates/Commerce.Empty/docker-compose.yml | 5 +- templates/Commerce.Empty/nuget.config | 2 +- templates/EPiServer.Templates.csproj | 6 +- 147 files changed, 780 insertions(+), 209 deletions(-) rename templates/Alloy.Mvc/{Alloy.Mvc.csproj => Alloy.1.csproj} (85%) rename templates/Alloy.Mvc/App_Data/{Alloy.Mvc.mdf => Alloy.1.mdf} (100%) rename templates/Cms.Empty/App_Data/{Cms.Empty.mdf => Cms.1.mdf} (100%) rename templates/Cms.Empty/{Cms.Empty.csproj => Cms.1.csproj} (82%) create mode 100644 templates/Cms.Item/Cms.Item.csproj create mode 100644 templates/Cms.Item/ContentComponent/.template.config/Icon.png create mode 100644 templates/Cms.Item/ContentComponent/.template.config/dotnetcli.host.json create mode 100644 templates/Cms.Item/ContentComponent/.template.config/template.json create mode 100644 templates/Cms.Item/ContentComponent/MyContentComponent.cs create mode 100644 templates/Cms.Item/ContentType/.template.config/Icon.png create mode 100644 templates/Cms.Item/ContentType/.template.config/dotnetcli.host.json create mode 100644 templates/Cms.Item/ContentType/.template.config/template.json create mode 100644 templates/Cms.Item/ContentType/MyContentData.cs create mode 100644 templates/Cms.Item/InitializationModule/.template.config/Icon.png create mode 100644 templates/Cms.Item/InitializationModule/.template.config/dotnetcli.host.json create mode 100644 templates/Cms.Item/InitializationModule/.template.config/template.json create mode 100644 templates/Cms.Item/InitializationModule/MyInitializationModule.cs create mode 100644 templates/Cms.Item/Models.cs create mode 100644 templates/Cms.Item/PageController/.template.config/Icon.png create mode 100644 templates/Cms.Item/PageController/.template.config/dotnetcli.host.json create mode 100644 templates/Cms.Item/PageController/.template.config/template.json create mode 100644 templates/Cms.Item/PageController/MyPageController.cs create mode 100644 templates/Cms.Item/Program.cs create mode 100644 templates/Cms.Item/RazorPage/.template.config/Icon.png create mode 100644 templates/Cms.Item/RazorPage/.template.config/dotnetcli.host.json create mode 100644 templates/Cms.Item/RazorPage/.template.config/template.json create mode 100644 templates/Cms.Item/RazorPage/MyRazorPage.cshtml create mode 100644 templates/Cms.Item/RazorPage/MyRazorPage.cshtml.cs create mode 100644 templates/Cms.Item/ScheduledJob/.template.config/Icon.png create mode 100644 templates/Cms.Item/ScheduledJob/.template.config/dotnetcli.host.json create mode 100644 templates/Cms.Item/ScheduledJob/.template.config/template.json create mode 100644 templates/Cms.Item/ScheduledJob/MyScheduledJob.cs rename templates/Commerce.Empty/App_Data/{Commerce.Empty.Commerce.mdf => Commerce.1.Commerce.mdf} (100%) rename templates/Commerce.Empty/App_Data/{Commerce.Empty.mdf => Commerce.1.mdf} (100%) rename templates/Commerce.Empty/{Commerce.Empty.csproj => Commerce.1.csproj} (87%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7f66694..2d34da2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,8 @@ jobs: runs-on: windows-latest env: buildConfiguration: release - versionSuffix: ci-${{ github.RUN_NUMBER }} + versionSuffix: ${{ github.ref == 'refs/heads/develop' && 'pre-' || 'ci-' }}${{github.RUN_NUMBER }} + DOTNET_NOLOGO: 1 steps: - uses: actions/checkout@v2 - name: Restore @@ -34,11 +35,27 @@ jobs: name: Publish needs: build_test_pack runs-on: windows-latest + env: + nugetSource: https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json + DOTNET_NOLOGO: 1 steps: - name: Download artifacts uses: actions/download-artifact@v2 with: name: packages - - name: Publish packages - # run: dotnet nuget push *.nupkg --source 'nuget.example.com' - run: echo 'Packages are not published at the moment, they can however be downloaded from the artifacts' + - name: Publish to Github Packages + run: dotnet nuget push *.nupkg --source $env:nugetSource --skip-duplicate --api-key ${{ secrets.GITHUB_TOKEN }} + + cleanup: + name: Cleanup + needs: build_test_pack + runs-on: ubuntu-latest + steps: + - name: Cleanup old Packages + uses: actions/delete-package-versions@v3 + with: + package-name: 'EPiServer.Templates' + min-versions-to-keep: 10 + # 1-in-1-out + num-old-versions-to-delete: 1 + delete-only-pre-release-versions: "true" diff --git a/README.md b/README.md index 6116b64..8c8fa95 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,59 @@ -# Optimizely Templates +# Optimizely Templates for .NET [![Continuous integration](https://github.com/episerver/content-templates/actions/workflows/ci.yml/badge.svg)](https://github.com/episerver/content-templates/actions/workflows/ci.yml) -## Available templates -- epi-alloy-mvc -- epi-cms-empty -- epi-commerce-empty +This repository contains templates for Optimizely Digital Experience Cloud to be used with `dotnet new` and Visual Studio 2022. + +The templates in this repository are distributed as a NuGet package available from [NuGet.org](https://www.nuget.org/packages/EPiServer.Templates/) and can be installed using the `dotnet new` command. + +```bash +$ dotnet new -i EPiServer.Templates +``` + +Once installed, these templates will also be available in Visual Studio 2022. +Note that Visual Studio currently only supports *Project Templates* and not *Item Templates*. + +To generate code based on the template simply execute the following. -## Installation ```bash -$ dotnet new -i EPiServer.Templates --force +$ dotnet new epi-alloy-mvc ``` -It's also possible to download the source code or clone this repository and then run each template as a regular project. -## Update +Replace `epi-alloy-mvc` with the name of the template you want to use. + +See below for a list of available templates and details on each individual template. For direct access to documentation on each template, execute: + ```bash -$ dotnet new --update-apply +$ dotnet new epi-alloy-mvc --help ``` + +For further documentation on how to work with `dotnet new` see https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-new. + +## Available templates + +The following templates are included in this repository and available through the `EPiServer.Templates` package. + +### Project Templates + +- epi-alloy-mvc +- epi-cms-empty +- epi-commerce-empty + + +### Item Templates + +- epi-cms-contentcomponent +- epi-cms-contenttype +- epi-cms-initializationmodule +- epi-cms-job +- epi-cms-pagecontroller +- epi-cms-razorpage + +## Contributing + +We would love community contributions here. The easiest way to contribute is to join in with the discussions on Github issues or create new issues with questions, suggestions or any other feedback. +If you want to contribute code or documentation, you are more than welcome to create pull-requests, but make sure that you read the [contribution page](CONTRIBUTING.md) first. + +## License + +This project is licensed with the [Apache license](LICENSE.md) diff --git a/build/version.props b/build/version.props index df04de0..fa0d67a 100644 --- a/build/version.props +++ b/build/version.props @@ -1,7 +1,7 @@ - 1.0.0 + 1.1.0 devbuild diff --git a/content-templates.sln b/content-templates.sln index 1c29c08..a31f23a 100644 --- a/content-templates.sln +++ b/content-templates.sln @@ -1,17 +1,17 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.30114.105 +# Visual Studio Version 17 +VisualStudioVersion = 17.1.32210.238 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EPiServer.Templates", "templates\EPiServer.Templates.csproj", "{8B343E37-F699-461C-8755-8D371CC82EAC}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "templates", "templates", "{350B8822-08B0-47CE-9295-9D379C42A718}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Alloy.Mvc", "templates\Alloy.Mvc\Alloy.Mvc.csproj", "{D26A321A-ED45-42C4-9792-1C64A969C70B}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Alloy.Mvc", "templates\Alloy.Mvc\Alloy.1.csproj", "{D26A321A-ED45-42C4-9792-1C64A969C70B}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cms.Empty", "templates\Cms.Empty\Cms.Empty.csproj", "{A64C6372-EC36-4F19-B2AD-8A2185AAC015}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cms.Empty", "templates\Cms.Empty\Cms.1.csproj", "{A64C6372-EC36-4F19-B2AD-8A2185AAC015}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commerce.Empty", "templates\Commerce.Empty\Commerce.Empty.csproj", "{9B5A3754-D23E-4032-A09D-5568F935F34F}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Commerce.Empty", "templates\Commerce.Empty\Commerce.1.csproj", "{9B5A3754-D23E-4032-A09D-5568F935F34F}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{8F2A1A07-7B50-4060-89B0-B53021C3F593}" ProjectSection(SolutionItems) = preProject @@ -36,6 +36,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{ .github\workflows\release.yml = .github\workflows\release.yml EndProjectSection EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cms.Item", "templates\Cms.Item\Cms.Item.csproj", "{08ACA24C-AC25-4391-BDBA-D309EED6C80E}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -94,15 +96,28 @@ Global {9B5A3754-D23E-4032-A09D-5568F935F34F}.Release|x64.Build.0 = Release|Any CPU {9B5A3754-D23E-4032-A09D-5568F935F34F}.Release|x86.ActiveCfg = Release|Any CPU {9B5A3754-D23E-4032-A09D-5568F935F34F}.Release|x86.Build.0 = Release|Any CPU + {08ACA24C-AC25-4391-BDBA-D309EED6C80E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {08ACA24C-AC25-4391-BDBA-D309EED6C80E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {08ACA24C-AC25-4391-BDBA-D309EED6C80E}.Debug|x64.ActiveCfg = Debug|Any CPU + {08ACA24C-AC25-4391-BDBA-D309EED6C80E}.Debug|x64.Build.0 = Debug|Any CPU + {08ACA24C-AC25-4391-BDBA-D309EED6C80E}.Debug|x86.ActiveCfg = Debug|Any CPU + {08ACA24C-AC25-4391-BDBA-D309EED6C80E}.Debug|x86.Build.0 = Debug|Any CPU + {08ACA24C-AC25-4391-BDBA-D309EED6C80E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {08ACA24C-AC25-4391-BDBA-D309EED6C80E}.Release|Any CPU.Build.0 = Release|Any CPU + {08ACA24C-AC25-4391-BDBA-D309EED6C80E}.Release|x64.ActiveCfg = Release|Any CPU + {08ACA24C-AC25-4391-BDBA-D309EED6C80E}.Release|x64.Build.0 = Release|Any CPU + {08ACA24C-AC25-4391-BDBA-D309EED6C80E}.Release|x86.ActiveCfg = Release|Any CPU + {08ACA24C-AC25-4391-BDBA-D309EED6C80E}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution {D26A321A-ED45-42C4-9792-1C64A969C70B} = {350B8822-08B0-47CE-9295-9D379C42A718} - {0FC00D98-1708-47C9-A126-B4AC4C4C5260} = {8F2A1A07-7B50-4060-89B0-B53021C3F593} {A64C6372-EC36-4F19-B2AD-8A2185AAC015} = {350B8822-08B0-47CE-9295-9D379C42A718} {9B5A3754-D23E-4032-A09D-5568F935F34F} = {350B8822-08B0-47CE-9295-9D379C42A718} + {0FC00D98-1708-47C9-A126-B4AC4C4C5260} = {8F2A1A07-7B50-4060-89B0-B53021C3F593} + {08ACA24C-AC25-4391-BDBA-D309EED6C80E} = {350B8822-08B0-47CE-9295-9D379C42A718} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {6F4B71A0-BE63-44F5-856C-3831FB1C0943} diff --git a/nuget.config b/nuget.config index 287e902..79187e1 100644 --- a/nuget.config +++ b/nuget.config @@ -3,6 +3,6 @@ - + diff --git a/templates/Alloy.Mvc/.template.config/dotnetcli.host.json b/templates/Alloy.Mvc/.template.config/dotnetcli.host.json index 4718119..a53ef73 100644 --- a/templates/Alloy.Mvc/.template.config/dotnetcli.host.json +++ b/templates/Alloy.Mvc/.template.config/dotnetcli.host.json @@ -1,6 +1,6 @@ { "symbolInfo": { - "enablelDocker": { + "enableDocker": { "longName": "enable-docker", "shortName": "" }, diff --git a/templates/Alloy.Mvc/.template.config/template.json b/templates/Alloy.Mvc/.template.config/template.json index 79a1bfa..d6a2aa4 100644 --- a/templates/Alloy.Mvc/.template.config/template.json +++ b/templates/Alloy.Mvc/.template.config/template.json @@ -1,7 +1,7 @@ { "$schema": "http://json.schemastore.org/template", "author": "Episerver AB", - "sourceName": "Alloy.Mvc", + "sourceName": "Alloy.1", "classifications": [ "Web" ], "identity": "EPiServer.Templates.Alloy.Mvc", "name": "Optimizely Alloy MVC", @@ -15,7 +15,7 @@ { "modifiers": [ { - "condition": "(!enablelDocker)", + "condition": "(!enableDocker)", "exclude": [ "Directory.Build.props", "docker-compose.yml", @@ -26,7 +26,7 @@ } ], "symbols": { - "enablelDocker": { + "enableDocker": { "type": "parameter", "datatype": "bool", "defaultValue": "false", diff --git a/templates/Alloy.Mvc/Alloy.Mvc.csproj b/templates/Alloy.Mvc/Alloy.1.csproj similarity index 85% rename from templates/Alloy.Mvc/Alloy.Mvc.csproj rename to templates/Alloy.Mvc/Alloy.1.csproj index e2f943b..1b9489a 100644 --- a/templates/Alloy.Mvc/Alloy.Mvc.csproj +++ b/templates/Alloy.Mvc/Alloy.1.csproj @@ -5,7 +5,7 @@ - + diff --git a/templates/Alloy.Mvc/App_Data/Alloy.Mvc.mdf b/templates/Alloy.Mvc/App_Data/Alloy.1.mdf similarity index 100% rename from templates/Alloy.Mvc/App_Data/Alloy.Mvc.mdf rename to templates/Alloy.Mvc/App_Data/Alloy.1.mdf diff --git a/templates/Alloy.Mvc/App_Data/DefaultSiteContent.episerverdata b/templates/Alloy.Mvc/App_Data/DefaultSiteContent.episerverdata index e3becd1ddfc0b2a5b7bf2df628eb1aef860cc90c..14c68cb0f5998916518cfc2b25d8756982cb28e9 100644 GIT binary patch delta 69060 zcmZU)b8sNv7d;qjVmq1G_QbZ$iS10B^u)G3v2EM7Z9AEG=ll8X{;|7ttGn*IU9Y;U zUiZ8AoO8RhvL9mg-vKDffJ2~zfWW|jkf=DRo+Ng+Wf6dYs49Yipn!mYm^xUBnwnYK zS-M!-+cCJ?+Fa_LJ8f{e`X(`aNYj9aJx7!m(&!LQyBo)-CG-ABQuX~!M#WqtNk7_D z;nVm&LVAb+b~A^tr7c>{XmdL;byX(Bfd|p$+{;ab_<0R{x&iXO`~y-?*?)!5O@#0# zH^fruQJs8+Nggg=O`ZbCsBHxVX5|@?Aay}kk<{P~vu9)HS*!tsSiUkBGJn zM&fw|^1lSWz=7?Ah;gp5nvBWmJB9map;zR+;#cx6$Iqm9V-&Ihuk$uCImRy3i^*x+ zsC#Q3RU*=u_l`f^jjv2!srmwiIIYEcJozkB?iE#7q*Tsk}oE| zxNqi$v1_F#tWu;*=jM2Pkoz^8Z)7R4S41r0Zg7@L(+0P`N5`WtQ`W(w%cTb6$Wos3 zxZXZ{|097l2dKLB|i5Tq`K^Kw#UP;r^(NAs5 zsD0N>4YBpvBNUnydmw@WK<>W4_V>YhA@+}@43J7KHx7c|w}(Ebxr2T_QW6+E6;Zdl zCJi8wjb^Je<4bNXUVky}y z$BhWNPYDmn!O)=fpfNRhiG#hMip2cj=neB4HmmIju})1vT+ZPFbYtJ6K0`@8Wy(FK zCi=*IM~Z`qth#(YzZ2)C1o+DlJeS@vt!!@dCx4VQPYUdwxcb?TK7u=f3pmg+<}UJA zZ=i8>914`|17*Mp9%DDt*Q0r?*=fp&^F>_Eg;b}l?-JxNVJJ->@&~%;whpq|p&|BV z?{PEP0a4o5QyK(X2x5I5cU+Yf}xzSEE{>2<24Bli zt?f>$H%;x=J4-tq)=9z#I1!M)jQv;mx5vHhX}aNPd~m4AUrE-m=o*@g5jWdmWxmB< zHMMas>hx+ozRqsX*f#>;F#|;Yu?rJ!TRbH9wuw_ddN?$EXSXcA?$ZA2?fuv{%4KX&BzjL$R1-akFN6e^pAaOVwS&XC zUid=mBK~00RheR`xALwS z=rmoYciCH~H|8o~){Rc5nXJ8VjqWb9OpsGO+oWpUD-tjK5a8fS^cCeFMs2dm!@-?H zP!LHsdxJr<`963nr_v8Zo7N#8QaCWlq3~8*U4agy{;3&y|5f#KH8dawihqq6r+(I| zTDi|DNi_7#y{?jU{ufzW-vUA)!KQ>LWq4j&wk>sr6=N>O(b*N@Fdu{{~~A=}}cmT4OI%jCUyN{-7PNXQT`eq^Cr_o&u}V@^~F& zgI8p8Lg54-@oGu9=&=&(W8#s0geG$5vbiNYk0b26_U|5YZdtoz#?@*n&SL!*4Vh+c zR@|*R;~$tqh=^arG1OjBQ;`82bgI2w+eF0{x)|`v_(;sAl%Nq+Qt6TL7yaD%Qt-nb zqpskIF<6I})L=m5I0-hR8OXz53zV%);+|%bKzplYfx%{GXGRakLaA;m9eCGeDY04h z;1^c%{?gsy8=sQ;JeoZX4DSZZaLssIlW|RnbmQ_77W6a6^e)l*rgWiI(bw{erOL1}vol8Cp|F&uu(CO($M@#MLGKJZ^{PaHS*+F6 z$}xex!h*$RBgiIlw#Tq*(?kdKM}b8uz!GBR=Xz6X>|BQkM4!edG_N=1E7WOslro^Q?ib zzR9v4oplYR;4{6~%W*DvOF~wSNV(1RmX6%xIqwO?&J?NQ#kHCfG`e5Hv>@L{jiPrf z!dQlPGKqTjEhksyl>qe5AM0}rS5Mxd`|umto9zJKA{V$kd+iN8VqV>cZIwoPMrOy_x7Htx<`)yo-0yp?(CHoAy`89evSJC=!PvAXpP&*7_=G>BK&%6Ks4WqMJqP7- zCY*%O#{6#4#WjQaX)=3D{KELt<|rB+bj_jqR-$m_%dGHnpw1N%T%!sBLtzM}Gor?;m*GmcBNHHcYvwC|X9hSKwpUpj%83JQ z)~$)`a%3hbDq?LUFI{ISGRzYQ&0ui0p8A`c-55-F4tr5PoPX9XW$Fw;s^}eTV}`>L zMIGRE*Bvppz^dr0)8&*F|BYb9(SKX7*Fe;Tu7E6Kwlo?4vP4HA2LGQM(pzd3_DbCY z10lXsOG&>Vm&nQl_FRtwhV3T<99FP=bO`i?3O6g@GEBL@m ze*3HT7@2uVN!_WUPL(mxp!LKD1>--c1 z0XJfUhiO$E;;sZW)|iz`xr5_eNq zk)$c#{GvE(h<<-C@xLvdS4oj@K|O)j5Q!t5mK_W^EW%$v{}hnzn$!ICe$P}3`roCp zFEufUkse==r+&Y8beRQ(|H9FF+~pZm=062M-VCS5w6J}$1#f6H><^?keD{E+TI z)H}i-pc`R_6~I*%v2WQg3&>(R5s;D238y<1jz(0C zb{`Cp6gmu5rhr#U17Vr9h@7a+sdmLrA~ne^1XH{kItnL9bsB!ZlxopftcB`7fS_^{ z1X_Riju8x_f=v-PTn+WN?j!Pa-Qe$8hTDCYiBl`k$_}WZdmCxelUg)U>1}JmIhJP? z<8mu+_u_I}=<%R4Vz!&g+Pp-XLxCP6P`rvBGN`9V!3N()#CFScs@Y%fK- zve6N>`fU&G-R`*O?(zP_L=3)-_}4XL7HAGGNda^D@n@Z&Ip({}9Yq_?iK}4qdbOQ; zkPBRvyVlW0G#n zlecX}{`eOylH|#jYvE-y!EJ_m7`b&c(!+&CRTGxT!X1cx^KYP8Utmv60s+aABO=IYe5-pas^zE@+ zJdc-~t|aR^6OJ2uI{th0) z-{L82xsA8{S6zv#ywifAy@lwjm>ti@F81jx?}d?sUQP7dPdZRzOWw%BIgL@Qysksb zqTKTl7Z+H|G8@wI8Tht9b{pvRl@u3q)}eSB)g+@|Zb;@~o$Q1kQi^8HL?yrQT4SC! z*6HMQlJq^MnvxXWrBB|0_z`k?(&a9pm9-?jUGqQVEA)(=152ZLD?C+!){5{)(GhLQ zDof^HMat3B3t|qwzfxjsz>klZQh|SkweVpB$drNSubHjSvVzRuQR8Lg-mB{8g**^f zq^M0NT#6Vy6^M2l1Wz=R-4mB1<> zjS?j!%&cH2|6O5`qBzvwnK!jbjO&gZb?&6lP%2#b?{ z!TZ>XB2gS907 z#*#mUz|NWE!^zJI{)jb*(=)F`>^SE1T_z@(=~M( zKrRDhxthF_zvvMI091SSrGHRkDZBRl>D@Lx-iy+^OdujJ)jp@`hi3GK%|}}DohpZ7 z*`4SJILuL_FS?j_sI%VAX__D^7Kk199*Mh)9j};#vlhz3o)k)o>2g!AO4D}c7K3&WI zUdo~Sqag0`kP<$Hn-4;n&`AcZ^%%R)c@hTEsk<9W>o&P zHeazGSCylOh{}RDJoa}KSfhN-e74-TwDBmzoSD=F6x@4L;d%Stg6{gwH}EX{OD4d< z2x?qD-d(-%qVo)DVKsC5Sa2&*#*;~nWrR_^K{>d%+wWPSG8djCF|89>`07pA{V?Ms z+Te^?=DzU?Yl)x@djFTSiz}14_H;$hW?b%>j(w4Prbpg1*$RrpuukcbnBTm0mLSz` zd{sp1B7?+T*6z-%tU4e1lueWgd5gdT)=xZ_=M!dr*(3!Dw{qA+yHe*3p#mKDG2S<) z@oom(n5p_LF|k2!GEWrlw8RpML{!uKrRraxY3ssAOpV-WviTH=mhX}oc2aY3c|=9r zUz!^~B9-T6veZ~Drb}@5*jF-Tg%!}GPm;i!gT=wHH%ESCTZhr;Rw zu~Vpuy-OpENmP!7dLS;A?&BP{L!Kg~2=;JpYtV6JsFZEus-6*TqX>7c$9KrF8fqBht zQo%G?Cpj$XD#sojkpYNXcMM>UdE&P$g>3;5}pT9yUK-f3e=L+Qr_ zLj9R{UE{ev8Unr8tECfEeXPS6zA7DGf1J!ddAx&FTrKKiObKEzO39KTfsB?}vz9fk-Kix}S8>w*d*6jQiAM=F^ z@^6*xOBg|zI=?+x5+MUU^~1#N8Lbg)5!dDdE8uhNsoAo7n~M6sEj6Q~A=U%%qn1-N zyjO4O^dzKvgyN?8rdu^rUJov?W#!tFsO`?039&=9g<9OzMYl66}|axR$k5q@yE=JBAQuai)j z{W8)aUJ5o$t>k$H-DrW+*$&U^u%06FW4G%Xn#{UaoG%Oi-M!U7pcP&tJ# zoAg$~uy!|l_sX!32#lOneNV?He8-^(a&8$3ZZ`gu#|r^b-DTg^9%1ItFG$DxD3nbH z|3v@xbB3@tdZSkxc&fg-s{NSIGe?h|g%&uJ$1sm!eB!1ifbN|}%?bwL5fHa)xsj}@ zoBPq#aD-Z-xMZB6Q@`Hd*&lnX#1*-i8$jazA$cEK+iZ~)1@(K=lin}-cFWNHo(tI; zmiUQ9Uvw4FAD@ciBe2%Y$&;vQ4wb(jYJf` zUgnxYOl3?@bfq6^L&|F{&GGO7jo0{^z-e>My^A>9* z3t1W-YA&6U)9iS+5TI&J997^goxxw%!K7AjM{fg6SovBT-@L_I%R{!7g?G5^TGu>u_4hg5g(2%CRAde$9%}!d;SEs` zzyx6ytr*1?hLz>25*F+dHDS&`ih|@MEe6 zqIC)M8!rkZa`gC$(C>%XyVO*n%Q|Tsw76`D9A_6z9-OM09J41&7Jd>%+M-~yqCkjW zoM6}fSHnrv?$yC74a&+r7-za)_J6Esq2Uo-YLu8XeKXu&!1@Z!GVO|0(P}6%->;Mnbtp+7+^mgqZ; z^Wx)kvW1Ia{BvbIUmq4mH}4Wl=S5S8K3~`uNG|4Fd)_`(k3+ZGWJ@;su${q+BKCEu zU@-cianeoaLtbuga<3YPcUn%e@SJ!zc*E6vy{9AHfg^7Y+v)oxDGYFSQPzj>s*Z0r zar8HSs$vwK-y_oFi8|}HlG8lUsGKeEO^x-97H*8_eO$=xNeYDu{9$hg!3TQCl}U4ZRcUCVtYa?erfw!rl9`FG z!#YXJ;ordSUIP+gOghlFj6c0Hy&3tF03{|j@7x6)qIhrlbC*WpYI@2jpNfr{z0Y8K zZT^BgW;~)&uERN1xaCNmvRV3khRhsEO0oNS_~Y!`7b(!i1OUetp|03x#JaxZFsSNp zG9?;?Z*myhG&Ay{_lYV4y^b>7x|^)E*W5~NOQ~q}#a#&3fl-Ct+%YDn@+j?<%{Sf0 zNCZ)NkJ=G-pHnr=YZmzt%S(1(_s(fO_noc$Tpt;49%mp?f1itgj&6_C#sfEAZ?&1; zNQy8b=-S>_3wU+xA=`KIbpFtugnt;1BIbCKjI|3^?#&rKVHHSz^fQ)t0G^>kikZEEr+ zBYcLtw(q*g&2IqL>()&G$g6Y(TdONP9QFICU`qQK_$IW`5W)gwiE#}k{G68N1N;cy z5{7p6kU&YvqRMp8-5lf5WQLYo<6O@Yk{a-fiYR{zo4r2YS z-!1do%{xVI?pk-Desa#&!z;6elyz}g8QA`{@8n#-|2?F~zPR3^zWp!JuT-?ov~1Av ztU>5~khPmFubXdhTqSEp8pm{*fkBvtxKY0|p>5?g8+q23Bm84hn4;VzyBF8BXgtLzGrSOZNZ0F zv=yx$ve`d70u`Pokj9VGT=v(=4_9s8cQQWHCoSPBs$%cYH9pf}jsH>9wJ0)^f4)ki z4Znm{aa~YpFP3=Hz9FLI5TU~F9IqzUNQLyd0eln5eXYebpX+6y7;ug?TT3hyqrw`V z)%~VKl6KG*ZG6&ZQ0qSSfm@JZk;(dIKDdY*6}&$%!Y&NIPL5*AZCLfUe9n1X&Vjc+ zc;@@072ZKI!s0q);gC+J&1Iv96D|k(@~jPxN3`j@+cUh0;h= zE703u(B86kzcyxQka292hHGk@Ruw@v-V{r5idp9qAm6q3w`>0;zKV|9BPb?$M@{SC z$txwrOFuKquXY>DU@ldizT+S(E+^7|&{pT=|0CEw$>csiFM)t0&S8MS{2#&A{eL>` zMd!8aI#2w`n-7o;w%=Iv*3V4$`L%C*9NC=kAg|Doa9EJwbERKzCJ557k}HWIwR-z- zR)0h=Rs2Tx-0zd(;r9mDEGXS%G9H(oiYd7yUree*22-aPB%FKG|MmR!-Ys!=&c;a7 z_b;E(9^7V6oEY$5#K~wSN@WvVb9*sHyJxGhl!xno%|w4S<+0`J>Wpwwyf`(&CN+9L#$VML zr*=QDSA%$QCz0@@)X%`SHLQ7p5_WT9AjiivF^eZ-7_|no3)hY>tWJ|}_T;yhpcUi| zI=NnxUMIMic9)%#KxeIFM*Zozh8Gyd zTy7UO?Zi%}7!BgFbKZn)mDg4iBbC-1Q&o+x(=xs?gPAvyoUy#NDtos#)7#U+$lWBh z8IJ7^Z$td3B|-sDx1`ZM(g=OUdkdHQ!xK4=WFUe}zQ7%&z9Eo@fxyoI2s+#RR0aa_ zkM9J`q-wnn63Zf?(F4lzLMVD2_Qe3f7oudCD~TGevN})y=2j1Je+%Z%M?ks z9yfvbF>)t+wFZh7Jl*eW`L`;txrPpDb!@&8a%$?OBxR z2TLd3!QHtH>gZm!CjapuR*l2r#ZaM^<^Wdp7A27hX!e4T9=c4zSK^*J19ZfiH(<4K zBu34-Oq7*am??VtXl1!`M@N*y30lm#x4c-wUy#aZN<&NiS`n9?F5NQxv2_XF-a#2j zvPx+tIHf5>*IyTkLa5F09`k;BK?+xD+G#noYE7_YI$Vpg7*!u?wCZ=28NGYZzIN}( z3x3HwTK!TuM_9i^cs+BP_e7^J4QSA9fVVkoOCsm|eeo1iKBIRNfzLX(B#alyXLLKb z@mG*8%F`uKiQaOdH?OELscktj4?Vd10Zy?>w0gp=?J3A|ZhE&#S|rB2j+pF8_8DDz zl=JDtDcK4`tAe3XL{lTHW|GDblKg{${<0&IK8T%Y)pcp|Bolv$=g^s&4e0)*jM!PL zf1jqcSg3laCqfal->zh#Ov(1MX|UD@w~gh`MnFy5s1ac+KEf))p*rXK52N)sOdLMN zyi464Xe0jig~;y`)dJ+EsD*cOt`zlYX3RFuHPUw}_sv8HgAg`LWs=0jFlvRiY92p} zu3a(<_Vm7+IP$BcN$W)G2>^mex_Z)-=C4q6U(d>z&b^gnt1dG5Yf)iMtg+Qy!hwv& z)YxN}$D0Xx>9q|~fveJ3ZU?-GT;I$H9f6e7G-zWN10qhXVUUUj}r(g@HRwuZOM55`~qw;Zmf($8tk2j3%clL6t~V9GI3WedI=()a9X( zk*G^ifa8~ExMoy530SjOo9AUBeq{>IrOQ#9^bE8ub`pwi{)XEHu)(ADwf16~e%YGp zviTue=ez!+(#QVBVPMsH>d}cUck5ssYq(ib@j~3cDKa3OY{Uc#d@2{L<8FTON$(!z z%h7@%X>xz8W&3bs0S?Y312x%=esrRxVf_!qY%!Xz6yr+k@$a+1)1HA7eo_i9_kkxWo@|<$vBIf3{IL!ym2v39&l| zg8+{Ndrt-tkc1LRh8{T9g4jzJ9SVJjc+_|&yv}s{0x`M<#SCqhK8(?- z$%o%a1NB##MBqjxVl{DsI1qTpi;9rs=xPY2nFQU=Rjvi@-h8&4rDH#3}YlVYhQAf^f-ZV`N~hk z?W5Jf^x#|OQadyvT+oGAIjUWc^g1fWR8O6^n_nzxfGKQsH)=903;kWUw0<1y_>M14 zeb508jQ9Cz+bmzw*KE~{uc!u>=4#GpxFz}5u;jwBb)PFGlyCOis{{P?WP!fayer+X z3+HpQ$V|0BiifL0ea~_0*tc3fk-XWJW+^S(^^ec4<&(R&L{qP~dq#6*bxs3*%t*k` zp2TtnFe{fv5@3VtEPHPbxz_pJsV>0*>Ux0WdJv!V$N26%>tRlO$~0TwAEvC9Y*9^~ z!b8jN#zc$8g-8-*E{Kv`iX~q7)WpY{`0K;qD@3%;pRSTUtM@&G-A6bBVGm`tZ|WIJ zr$Fr^9;Q^>u3OTTv$ZxWy2mjD#d&3cwcKF_pr%470pb0!>ef9l8nQ+X=COYBHQeOu z>b6%rXwoYCV|%8OPRGy8!eHXv!AaCM=zkmA?zkhCZLH;bz%-5cq4~-bU%zj5(p1dQ zb!lZqg|CASb7<2M;Q$^gix)?bHj`L@Gcw|8)2j!XFGkyRwN-f4)b+&?eIA6#8+DTh z^xU@Kt-4|d>XYeB8Grw~xn5Fr*V`VM-n?A&%PUeD!SmrxIk`i!D2foiX!)K^hGe;N z*(>XK@&3Ux0EW}9G@EV|)7ttwf&KZGU18*9J5QW0DyV(HU83J-#6I781i?D&KcxU! z+)bD^FV5U^;kP{H1ODj^@kWNh{KBpgpl*Q0<$53$<23D3V%!$VLK#h+;)=bB86o#W zyAx5rmRBFwC$3w#OF|!mDPEaxWcyR!jZ(2+Z28V5DX0|;=QUVJZ##UKhk`01O~_|D z!Z@|Wh-vVzgQ=Rie3|D@W&tVrguyWMi$gZkWwz?e>s$SyaFTATk2o97z~@O);B2T% ziomWdaaBkVQj#PZfB8x5{f2ZgJHT~%Ku@4X_Lu8P@2{@%0d$+pV2;QA zm<2QSkdXcWg#LheZx++l#|*lu2&v1TE;a=_X+@x<5EjSD4uLhodj3>*|U2w56#66C2%K2=}%7w`;OKp7Yw$sLP8?OXEckpteuIUcp$M0j7D+pwX=73-GBA@(lgR%iPUL=`7ZNY#}Qp}{t*Jc zu3-1I$;T_j<7h;kQDG<>=S>}3GKU*~E}$URkl2O`P6R<=W9!fyHoJ-pi2Pkmm-~YL z10RAr1N>7YhK}yo|JQ&f1hVQ*-1MLJ2m-_4++!VII&Zx6Leo|m@K0Oz|B zD~iB&SOg2c3*)*ed#vqUJK=s^-v{G!M@P=@S~Fd5 z2a$TTvGS7e*E5fZ1myw5Sy!hBR}`vGKRI)KEfkh#Q1~|GN*ImsG~3e@-3Dedx*(d7 z=G4U4R{2XhE;J<;@fHUXh^TQup%b{NDS<0v(rCD5q_e9hp=2@rammT`*8w&p`s0~j z4qKT2;!{ZR19+n4doBYSFp2Dl0@tB;pM?I+v1>v)!%jS%ZHKn4Z7QT~|9lVuOwKt! zEG@mTH!6z1G9F!I>De~Ri^=1fYYpXxAwGTH4jagzH;SR2OJ}J${N5IJ_}Sa8Rpw)S zk95`-8s=Abo|t^L2#YASb0@Eu=)(v(J9-cp9s0j*+<z z7r3d-WJ))gTB7R=U7=mTb0}} zHv~zvxD0f(JlA%M<>(lne(%a7&-B4_qAx?*it3d)&f+4_W)*XW^}t7JYO>E~Bo}m+ zpstbs(Pe4y1OOidpAS%$D-oUQ-kdd%SPMr*Qdx>HW4sEAA|orveXJ9y0{^eN`Z7d9sz%|bbH?PA6Z3u&PwQ2`J;05-Xc~2u$fw;^eKc8M-d_3lKS(g+pgWwxfCk2| zo%~b3$Clx(a6g@)v3FDbLAN!ky%KoPWo#Z?oA<`Z}6_kD5RCmCT_tRz7zEI(Hp8YTARdZe=wnH}tpC{Uey_g2ZtVuTp zyUbi^blLD*C7sczDr7=wIE4y^e9`#rL9~?2k7gqo!(Ct6mTfrg>fx(qBMG2rSk9p5 zBHUPI7$qKxzuCeXATGMNd|Q+4LDY=lmH@;yTQqlZ?L4sW=WYFjqj^1an}2>Lrie z4x}HRm?L^)hx{}fr;0Chj{!dV%4%KkpGpO3S9NQxt5g*hGxAZg&}dO*GYAG*liL_u z?NtdIIVKa1W5)O}b3^C!7-A=+bqNm`?KgKm5`dcA@;#lEn${^v)!6C$IF^PI%b^8V z#)&Xghphk>LBXsw7h*Y^0i`+1cxG>Qq)1Ws^O3Ix-jZ951 zUmC?&Ig~hA5pkm=xu$~A&^vQP25Ob#fF#7tW2UG}z-T(?`}tdat^4F;@Ur`qU^^z^ zoI%}zfZ1JutYM4eEkCr_YHt3+-gD=(%vqL@rPrI+u~T|~R2>i@zD~;oX_|C{>g&mF zCP)h;{m^>yB>(|QODZ$IQ@{dqMYN3 zUxMajU>|p3HyApDC9Jn*erZWLd{>Ri4Zjh|9IK|OZF-_GVJ^+-N?f$jUiMJ0svd2v zSl7|BAOl$4NhiHBlFlsc&OHRTCgJ+5??KcHTqPFPgNvZ9!R&;<_H%Z&#=@x2rD4+g zXz8o0y&y0DbrujLBB{wzC=UXXY-nSg%D*Z$Da6t;dSnh^L;Xz}ktp5FjK`zMg_^%4QDWW7}N-*uGCl*E)h$pwsx=pBW&f^+VoXhi&7j;OPKMA3WfhB(l(vJ z9Hz+nhr*3+*=-wk^etRVubcwJ0t+@aBQ1>ONGizwVY)t5KarbuV!NP!;^DLh6$&2AJR;dfqH-rV;jpnAz+%oL;PvGjEsXZ~lRn$mL{ zStccS>um43$Fn>K87r#gB)1^-OOxgZH?hJ2JRwBfL}JIk1yvX;?sA36nBM=lR_!8V zBHdmd3f891rMPaxl$2j+#FBFq>|P%970Y*qHiZ_8dG3a`7U4R;%QK+mgnuuuy-Yw) zrzoh!qH^$ei^adKe?aWKj3hLIuqEG(2&*%cTm?h6h$g+F=A) za(biwU;MSr_a#@eABZZ=Lt;PVO@e~$m8Y2lC}P5;PL;-8z_)8O=@#=e@rf?w?HXTN zNSg>OQTFn#tJJ;#O(w+q2^b1-eV6N&2HTrF+662K@%+vOSnSSuM=PXY37AO20}3pd z$R#xv1%$}0)|l;xne%$&e8;!#&HtMg*z@5d7tgP|;E%%zn{6}cC1Gwua#oX!yh;{~ z#pYv^Fwil2C_40$j9f~_){B|3kDX;Fw16FOVTU>f&KV4E!H)W_4KY)~6hqUNP*~|@ zkA@79Uz+F%EOC@<1}A<}Sd`ETuU}A^wOK!)%5l%1--bnL{YG+w2glc<>Uf3hqH)d3 zE4pJm8{=3U2>!2jxUQ-kHk4aB*iH=gOrgvB7|o-Fz~C!7NamU;!#@Ek{qbSa?vqZ9s3eT$qp-?8Z;LL(Xoy& zsz&Q6p7YJ9oH#0H=N)$OA+=IAxC~j)paY3xa6J}A@|S)~d>Bsjye}#)wc<58)D{>i z&{jMQXNGqKrZ#KtSBaO>Mt57c!FtC;FDn5n=3 z1k?-z%N^sU8HOhHkzUCBdFYzFG`G;KEs0xmZ8UkVpY`;%34pZr3y5s8^MWt6CJ1^7P4<0_rGuS#AAJQ2#?k?IxQl! ztZo~@D=Q)Wm>jPgQp)M}a&F!VU*kFk$fe^{$7Hy+%JoY4O4vI(_W8KwK5fU2Z3fe4 zV4y{Yo9Qk17VbJid9p8+&0bI*MOa;oLJxzAD#9W-Ikgxrwug{DTs@S&>fYlMPxgh! z+IvP1rwjdq1KzLr!kuoect^V@71r84V2x#b-V@@Td?=YJb&@?lcai)@<;^?}|3W0pysFeh^(kkn_e}8xta;r3G z7eYcyo)wJVCGAf?ewWnoZeC548y&@N*?d z`%&3yGGmAREJu5^o+ERHrO1nIUP&`u0&Tj5MxGKHZ-XQ3rRSRiCFFFRET)R&(j4H= z9JX2WnV9lNbeA(z+BX%#Vm&g}G?y0~Qgb;d|8(J%lRq#N=Mq4v3i|=V4gnF0ypo^3 zvAG`&zZyJDw0wz6VX}VnG#SqR{=wgvYM3f+qZO_D#u0ZHm1tk!-S4dd+wX!cxfNKW zZ_1?DT4lU^%oO0vrp@EvqHKTpu*dF_JSh<>#U647+mtY`@wlP=VUO0KoB?x~_MSaA zO^%i^_Cc4A2KrwC56H`JZ%sj3rS5OwjXn3}s9a^<9VN0hUyOf0d`l}R;@?0^ef7i= zLUEb`KT2IV1Z|;t(OQB;u_ zIsd5z`JG)I=9ep)X3NW|g(?hhX+LGq3p5S17;&ZMJn**O z0o#hX-#B{t1wz7!}(b?WZ?j}TrhbKqYR7Oy=Cc+oF-oG-`g%nkkY+srlrX{|Mn=StcMk@f73y2nlw!c;y<5II#yrf&4m)`E}w~o%(F3+3o&G`PU{E zhLh{(C0rNtukb2Zh}rE-lo~@rV!O#A|W8*IJJP4V3R}A4pL|ht|UV+PV;>}|o7{csLjpxn>r^)5_xxUTmhEa{bxLtvg_70x9iD_@{?y(V zC4`Ek|EH9-9zJSzWS2_$_USu)l(Dc6$m!qWp55B2FS>5*H^*b(gkgNNm|X%v@u-JG z0h^&=b!2GCdT9F1(prgD`B6~2Wq-}YP$y|1!8IO?nAl|+wcP6E?f96Ov|Ta+7@8s1 z3o@D;EnD6Z)*D8a8OheyL@N_(lftY@4d8Te9G-iYebW-hKsrYuB12Wn|1xU<8y$y7 zAs${WeunfkO)Y~}h< z$stMPmzS3Z(7q8fGKeP|rsi)?ZTapPa~raa_Vfr#G`Kk@t#~i$f5g&0mI!&#vUTGg zhL8!9q42YY%{X?>z_rqLP&x1>4DcWW1hqBUiJ}&-c0a!{luXJc@Z>6XI4dZEcc_TK zOfwm8@rNOgp|k3L53KMNmpqOWj91Tho74arHMB+3 znUUUT=Bw9e{DyXN#7plVqKN7ufU2-4;u%d^u{h$@e~|XkGAtmcaD_5i>>sdo-uvTb zp%YRRlF%xNe<4NqsGf!t6xhFqGG;``^POhAsy_8U6~r_I$NZlV70b1<&-DWpx}6-E z3=whi-AV?3qk*HwcJEJ^V1sQ~fYt9Vg}Y#B4s)S}-;i-^w5hPuz#?sR8a#ct;$*^e zj?xlb^o(irKHf$&Z@+{8h~b90?@y@Qnu6U`rFAZ0v|A0&eVFY^i|4J+EuPKb{%>RO z=A{!5DlL8KVIp~%7+_tKlLHO0dG5eYx}LC$^q~2sFm#55di5nxkC)Z?#bY?d2fRRp zaWuu(oT}CdgSJ@_FXdH`OjEuEV!XiPSHGr6EB)$Wq(v|JhBzf>cbPev_EV;)RgNpK zF>RF7V(g^87iDttX~BJJq!W{W>Hop7z09rdIh20@&l4-#<&L$T^~b`PnXJy!7XOfm z7(Pr7MAobx6ZM@`mIgY*kf!F~PVQ^3CUAR>+5kKkGFmcF`v>h@0vWBzqF)e(@c{t1 ziWM~6Qpp~yw|a8;1y|*x3-AlS*1$l;&FWW<_!wi|p7Cnp)M`Vz5N)Xf7;727Fk{<^ zAZrcKtCS5;@9K9HNeDA19L+KF%9UkX_%;@xB^P|VDkiIFCDx$#qG!B^fGhRd$f#A8 zk}mnt0{&9re;(06CzT{i_AtfA7von^^ z>{!5=C&Be_Q`!whQd;J131m8^p)W=jatiYi@4WZ?7~9=6SG0BT!Hk?U#kcsVA&$by z=_bp@n%4~@sG=p|`W}qv1V`V^Lrl{FT8&qwb@SsNZ1hMsCfcW0MBJP1ijP7!*ITnS;db>#o26jc9DDL_FT_G-fV z(S#<>#w47`!2*a2-b?Xzw%Ks4Iox6C$u1WP>Y^(o-0iO9?(-e_9L4 z*74JN2_43(XWN?G_n2sui)dv-B+cOwFSzkQLC4dP)s74Gv8(XvScb)>0-!i*A*vsg zNW6D&*4gx6w1F9?ESbgQ&@Pp7+*O zc`r#Y6Evo?d6Ozts8eLV7o#T7WtR_;U3I5c@vv8#JuhNH5391VSm*i&EAi`&ZB9%R z9tFvPi2pXxvb}$#VdANiD9$EapvZG?=XwE~b?1$TZ0<{C!cN50sNpvbHfiv%>FJEm z(gXuH0e5HAQWHyz{wq}GdV#nT1*!jwuCt7aqusW3a1D~+?(R--_u%gC!Ce}6Z-To! z!GgP6aCdhI?r@uLpR?~i}xhi#*ry+aT<~L1RY(tnL9nNLe z&sqhQq~AZGEGK$7k~So~Tw6`a8m?>O?|3C+K?l>0cV>FBxLa8_@gcXCoRf1JwsKGK z)4=`=k!&?n9!<*2xQm-E=}v$9lEpraOU8Teo&*6mvGxV_OIGOqp|uR~ScnCXp8%4y ziXTl_MiW9%zQNS=Zp9|Z!A{Je6@i0D>vEz4*QwDM?oU5`m989lMow+S4Up41pKP#9 zahdN|j1qCZl4Xm;eBo*pUIeiR6V!(b$3RwK$tF0zzW)}jl(Sq>U6~MO&(e$*NrZSx z66eh>^QdTPPQWNM8}%?GjwpyLQ7I8*O3^Q7q1{q@CL7&aC=1A|8km$?;Dm50qwvSo zFp0KG+Rl+d18bP9j7N57M z9g#<#IeAyPcrUVG7~fkl6xKwVL1ZsVgjYaCB8EyGv8Hfwk0LWt)}61!o@pu(vAqp- zM2=ZNb;mpIv(iv5sR)?O%zJR)4WzTW#sD`D3Qcl3Y{A!YoaAd4iZD8$j_^^+A%tx` zN_64YXSi}wPj0>yLzGmU&F2w{$g83WKx_% z+#v1!#xc^Pi`s_SrpycJhl`eDN(()JTwe$Z9WD>}?L3XstpOR7{%A>Wc^ z7$G$9L51pw?a~~FQcq@c5Xs|4FTpgT-$HDq&N%T-J zBf`{Y@v9#wHRlrh&;phLreZ3;A;KfQStJB#y`piDvK z;4`8E-v)e&A#<`g>V4@~i41Wys*)(gUKU=|2S<8-l$NX_QW{l2BCspbssWcK$KFPu zzPX_2OmlWiTo7Ufw$z{qCKTVSZ=aKpC{0y0>#XRi%2eF!)5WS|Vd;8@P#_AwR3vUZ zwl>{w!V2%1nTwZKZI-Z9T+c*SiJs?1Ih-cCJd(|-y}C&UTk~GhQzh`;Zu6EZ^mOPt zOB4?U4Fe4}Sa2bLhe>LUNzz}RnmZ}r6#}mb^jgtKn^*_g6}dI13>43SkIqhh_kA#+ z0XA&?LA%zhos)QGKg~s;vc>Tl<>b(~yY@>6EiI?EQ=E5Zfu_epgRJ0qnUyCOj;^jQ zzRnVihXZphBE)0DQ1U6GKFcQY0qRXt7Cui8qR2$!i^c=s_X+c;BmJ(-@j&v;sUT#M zol>$$6OTD z$(hOwkQn9cr#?9_kwHQrD!1$at0j-8Uutl%Y@d_?9gCp1B*f7b-MP&Gm2Bt$MH($9 za-K3?U72_Bs)BhV!KwlRT{uT_7gf|J$8(vk)ukIyaEnh7jwiJ% zNz)*hIU7p4#Oz?fIV}`J<{AYUil=LslGv5J1Cl;EP~3+b#=EtpIgyQvP;%AtWkid` zkU5emYStea#*vn4$_L^NZ&7?9mZ-)3H{27v(20w{)Y&4VO>;vcl2?v5EI0bJyf2A! zzW*t83P82afj2yV882S4P=s3vYi3+gkm~O1F0_^|m07d?8-UOL8JS(o+I#miEsNby zoD<#hnLn<(NxF%oa$Tk)TP;Wir`;;uTR6s^onyOAdz^|EydQOnC;m)$wx47&lubTC znIL;5oM0IriCvu_Bb6Y_jE~@QSe>B0*PVf;sZ1!7FiufBWWGm_SxX`L$3I^6`v6Pk z7p$XMlOZLsRzM+J{_oBGtyRP#NaVM9O$2+4< zFM`gXYl$s_6ntS_nzj&mNysvQ=Fatcyu5`#m@O`)tfY$UXk`}=;qUq z1of4-9ALm9Y~V_g%x?HRZ-5#V=;>=F$Ja?6?uX# ztG7vrF(9Xbn~3$(+9QR~Uzdb+{L}VNsh57-5hPgl$D-3Y{x`PATH<(t=7btq8~kD@ zj@vBV@Rzb=LZdi-u^p;OhufQJMbi<*KbA@wP5^v8PQ%1)(3efc*ANo-A$0;cvo$a| z5>3y8Wn-COL*Br%mw_ZkT3okNo9o!5fF>c@B|N^AJI~a_3cY;V-33ZmhqX3S$UV+4 zeB3_Tjgufb>YCG+#9#o9qz9_}YMX*}Q&o+8&V@e3DQBpW!`aiam z!Gd4IoFA>h>RfH}qoF26ek_zSZ`5}={JX5a z>N_#c4D>IZ)&Rm5uJK5+w~k#6yPsbbhuFz{RWNiH7&FkkGj!JV2mGd-$S&Qw#t)Yb z5T#zy;2@=5M4WCK$S>`*I2Sp>H^e(0?tu@6BRt<3%z`sW?N4gHgR~PXkuo$Dxo)!-iYay z^Fh%38icEE{OV_?zsn`xUkOB!BLt|XHu_Irtj39X&Fg$_K^-RdC#K8iH8o8Q`@gtX zu3YA1gvD+u0lN-r5Y1J0p#8r+z}Wk9yo}Nw*$o#BJjoGK0>wdRsLviIN}R4F`>aPn z9X0=I;u^8K%Fl~+?xw$T2@W6Bj2-hs@uNBF`DK9CFyRu(5o*L`OFcJ_K`(6Dh!-n) zMX$HJdz>8z>tazibq?W0?9EDK=7x@D?m4fr5)YyALn%;x9hiO>>8$R%ii=0L((^lr3ne;#E>iH3~?OBTV zHsyhnzd#U@(*2Y4+DQSp3w<$qsTW8AF7*N_z>;e-AO*OE^Fsl4u|t&$(UdY%K$kC~ z$&pPa9RbO~F4f5AYl5X-fJ|U7#w1_jKum#RqZnV%6inWLa_-IdYc^9wJ;6JREaLBW z_qmpRM=o&1gUNF+@tzaK{9&_RBd1U6Lxl03TB+me`m~xRbg%KIyV(iIa;FE=MX@U8oMo7p#xc|Ug*dXjvZ0+y7<4g1 z@?IWfAJb#t8tVvEoW9LZ4eXT11SmIUP;R;>M({TpZ4ap`MN1J=dXNv-)@U2P1uQ7- zCV#$3jzxDVWGKyWcu)bfK_`crn3fE=Z1zU0FA=3ntr zT%xBOeDhSo)`DH7LzbK~Pe+<_)Ne{s4Vx0`;9K~R$okM;r2kf%G zt0(_SC@US@t_`mkXyziKWF})}<0$v-@o~{|x|aNsx0q4p2RAC1chN zF{igpN`OQIMTrrbKA}RmNtv75U1DeMkz_BPgDwd+SIXG=s_GLB&!Uu_9txmlG)mFas7m9YuN}FnI_}zy#3HPDL?1y!?q;qrosNOT( zcDh(Ug8URvDkGh0lJ?NQ{G^31Q)K5G4n025Qjrv}()>#9Us~;!3>lhn?Z-{w;?Y(5 zRVomAy0O$6+rb6_TO;e8Yp_PmSoKDV!Z*FZ?YyAzRu9uQJV@=`hQB@hj-vh{_Ey<%X07|^Y>}kNs&b{4xwEK(nYQ35g2Y~j zV361g9YK2P|=LRy| zEXqAhM>WbF_SN5OM?)w!xL1hJU95D1mH-Q2cbRX2l=uPMgL76td?|a0q$G!^NQ6mm zr6UV%WMNpEi4=Z#{T;x=W{-45Vqfj?wpcUm$gBG;2}NNb;abhl5G~m^g-dU!4M444tuN=D%UZg~5rHn1mS0W3WIuBy1UgHS~u5nJa100yoF~qm~IK?{IKmtOg9`z#X%(39WE!ZU9^`reUr+_H~3pi zuQ5_VbS*dR0voNTGfvTO`RqRt zMN}Zrsio}}sOqAh0JoA)*-wUv!jIK76Q5FV49H9ARA2>9c_=3M7Ls#VN?1Hp*kXP7sv~c%TD17WrvA+dp?1-v?Jn6pfU#x-;UEY- zOlzd#BIT_=6`48S-1f_=L&NMKkru;@G0ILXwqE)*q&TaE2>QsU6^i*#Z}33sjmJHA zL?ji9s-a2Q_K*rx!jU5xNI~2MsWnv%Ebgc4k!F^;shaIsi2oQm8)c&nj1WhNr?$V83uzL0Wxw! zc2t?mP6_~BdViF9UEY@Q_@nx0MHfqKIj!0d#9z)7B03OXu1HnmIMD1UBA5Xm(;&Z{ zN)sxpoW%Z#Wxyj#xRq)c%kz(#P#}fuex5IXMfN|A=Ibh5*xU2%t+j4^pw{&w7pC?T zrAz$#k2gKq%kCv|0l!AFnX8;Pus`L4KTTCZEbPL?z2Wi6tQhBy^GMR4i|;)gZCx%l zq07JHW@|KL1N|OnIp`VTZDajaxp3x+8Di}Z*fn|WbTw7IjqCMzkC{Q~6U*maAf2>@ z)Zl+No@J-w4ix69-P1lw@>vdlAqDpJO#6ps(^%l31|5JCW3wRZHo#Xqxcxxi z3Y`bE_gbsJ+EwOfn>v$FNVx)k{!Izc4|HWCTtE}}#_i)(-q5sN#D~&>?x<~#y~tGH zB782vbb#tbA)C~a#n#iLpK*%6m6DAXB+!R?E;v8a(APsaZ-&|Wg`oEDEnCM*rP@OV zrar$)MVf846*nMzSU<5=mxQPGuN$*Zb6=HqLt%A#&!oz6SC7CyU~wat9VoArDKdCS z^r!WJ?uFb96)GPAsT0H$H>j3}^)6^3fCWp zF!0Ec7xZ-ZZGrp&Tq>ka&iNB4rs|govk-&!N<~9btX_f*SCQO7ra4hp?U|FM~|s(EhCXCljUUSmS1FW zCRl_Xxh7;Zm5S=&$wOp)W;JwEo?P@Sl4VO=A*c$DjRzmy0cHeofaFT@(2LbVW@rPV zP5^TGyU|UJK}6(KsiNZs>ho<>_0b2-AaR-=8slNH#I@5(tGGAgl5i{{sxaZ*d3%Hk za%oSdNfk7mWnIMkIv6}^2?snBFE!`r^cPu_)%GejssImfWJ{Sb{ZCBk!C|jI;2=?- zKN?7}Q#&oeMHZtC>rnJJ(zATppjSX`R#EysHLc|Axk+ZVHf$lS-z#P(YqDl8>Qj-i zMhsKtBq#Xb)vF*=cks;JHeWS9lFJ|#oQToobKs{~KI%xo4~62-C$(g%dbsK&thqh& ze-#Q;_5x3}>ubWG7r@sp8bp3#BQ?K^M-NDcayh4gAOj-a;v1_Bov1zf#7=r;C&?msHWru!LAkj`eKSo}Jqk;j;bHA77>?98$Ta;J077^;`VVYuFyq9k1wL3Ia$pW8t zv8hc`C*YCh8Dog~5hyN5b>KJ^FxeWpfL~~qynVA-QjQh0Q^)M8ivT}PzEP8w&=s=; zD)@uz<<#)-&wP4UE(!02nrC z1AcZ}z+SBkc_{f3n{z%oujSF-QZhvobu;)wS}PG{3Wt#YbP~&hqWaPE#Vwk&1f$rQE{;<)D#w;EjpEN9 ziMTyhs<%K0s;KD{NjNrhK#NHi2|)Z8@-=A~>S>Z73MtnIbs4o;ROlauI*U$PGH_tR zydpSj)B6QF-&j&;O>L%85X}bWhhL�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 delta 68908 zcmZU&18^tZ6E+%du(54B+1R#i+jjDcZ95y=wr$(Ct-J64yLIcUy45wO`t@_%cp{W#d=ri@EPysRH>ne} zMnrf*PLj~AlRN1fM^bcjLVkK^m}4-ar7A;zY?lbe=W}OQJJ59dz#BEs#<#Hhc}O>b zx1E*E!^@k)Ygyvp=v6#k@A$lOBDZpl+cu(zP=pzy?O6Yr^77eYE@s)|&iM2CEf}Bt zhWYjLh7Wkn(bgVT2-&jsO#x)|z|V&w@Garr1wYgr;ztq?ZfmWOT6o?i>)ZJ*Q)KBa z91GV3n1lt z?-A!x5%knZMCvKl$-YT43-c(49;+n>S!&ro8n1XO8iJ@pmr>6ogeWF>$-XM_D9<<1 zL_G>sY~{Y?`GCY^wn-$FrsI{@k%r_*PLU-yxl1ue`%W!m4V)u8mA)ffSql$^gdZ8g z+h+(k!OI{L{0It2z>FLQnyfk(47DCoED7#Rb;7GZ$=U)mv~&GNaHr+IX&%PBC-BY{ z_PtXX;p#yrrV|SkF0Q9sw4?5m63!MHsH}~aiaPT&9~BlKb&e{N(s45>Z;9_RI#n<2=lzd(!=uzA z$FsQlbD=IP-$j5Cys(Nvm@jnx4Q-g^I78I)?t>Q6z05J-%M(>QF^JAk_91@2;8t!w z*-k)a$>K>+_027HC!0}}n`J41_bI^|=-p6fCH|wVx%6!{cPoHQh z(DBd)LsYIT-;cfA1NoW7o?Diq=uzrg{XBic{B-t2$#|JJ)eln#4f8PmLMBBTeY+!j*DvvC)&UTyFE*Q7Kou?Jki6%i$HDEYGge%Z{Fsdjtz*_TY$ zPcF6C&^n|gX>2p&y}g`MyoGeXv^WT6DH%tFkz}LZXXVico6t&VpaKe0_ljdcsso># z14!$*CFlrllAaombL$B%#%5m1jxbjOQ;SvLSAz3^5Rzasy+Hu2go`&|L3p)J8ciOj zukgmJeFdX_`iTr%<+izZgOjX*Srb-8QoY(0at=qX&SlIQH@zCdMW{dKT1uF_yu2;P zrYzHvf)M;E%J)55m;`FmTi=SRoMx>i;yh}--r!16;YQ+|OyGK;FTs9As()QS@P%7g z<}RNFPiCknx4IPTYJwL~wyF6fSO=@b=&a-j6X~giw`930?>%HL=r>X$l@C^PRESPhS`Nlv&IL2*-?5`Q7ZIA_w{Uo6T*xXM?GA8ZNt4i>tw;&Aarx2?n-${aj_L7 zlB;iltO*P$f#w7zhHc6F>*Ny%PtI!EHR8SCc4ti##-Zgz2*+&q`EvWJZ1`V{!Tvw& zVdM8LZMqhU*HP$JCppK#o7tM!Tn{dAJ*`{*WOlOlH9>$=s%3~>y4c3A1hF_es1B<<0VIX6=};p=ewio-xL zgIN8$u0R$kD^}NtlLPy)pai4TNan~JiFi((=Xb zC6YVK-Dvf$#6_%et)f4MZ}rZNJI`7JY^3(UE-O^0FNRN-B{RPq)Adt^p$3ZU8!Lq$ z5fOX!4ub1@_y8%mwqy+K#X_UfkyWDeIrQEOa5mb zsm^MWN%~`t<9ASNc2pU;`$!F?VUMiXUc+9r!7|e8C2xbs;a^Bc0&vk2P;^TV4oIRa zbRJ2ZZ+i8zl-Zi+UP)w5HPwi}@<3vRkxSs&pU5#Ajkt*+Dw@!la6HYbp3i3gI{?k0 zGkS(MgVoVq>xmIVSn``=Yfh-W-ey4M&!ID63D;Xzb$LV>?EiGduNupLTarb0=nQ{Y zvYPJ;{h!$jaLA#9YLlP!zlV9K%?Qc&wNO5d1ga%4=D)Rv1d^KUkZM*RW^4?8c&=Lc zI>TCg^KTmNwq3fzQ*CwVhuxyoEF8(f(CD-7Uy5#CKYL{{9(QCaQJinMlwrb8rAZgX(y*jm|6+% zNJYV~X(PnQfrs-;+uYa~s@ZctRX1kdber&A40V^@a%`S_7lk31LQaAunQUdV4I)L* zECA>3Vl?syv=x9o&R+>4t9{^9OK4FFSQ1zMJZ57=es$<>za5jpg}-d0#&$W#`40o0 zt{a^j`+)(~OaE$dm>)kL`hDw2?#L07T--=7_qF?dYZ2XaVnc|jM~Wp?!nI+>h>MJh zW9@+?R-N>MDvJzDBkYVAA}8KaI?XlyA%GEA09wtU^BImyR1C$jHEw_h%S}4o1`$UH z2|c0pAheONJcBUux5j3fnFA`CKL#CZ+;A}SwYq<07!c-sYuqqTT&`inJLUg^*Lh){ zlZ|8Ex5kZZH8`U6Q$|X%&d}}!)ZX;3erWr-+dh>*zJmSV?6RU`Li=vPzUAA?*MaGsoQb>muhyZ%5gM zJkzb{);U{>w%>RMd$e5a2`1n@**OD_I9%r@GNV-if$GC#sP+gG&n6(@<6t<0Orn9n z5OtT+*6Kt=AcG_XWFlg6(&d0rlwL^?)p>VyiK3bWdSRalq2j!YgtOE7Am*VI8c5vjBNL;!*80zq@KX^mgGNx|w=`obI34W>0%npW9i2jVT34STeuELoq zrG~#$k!ll)rzPu^5zBxTk>V0WBaCGJ{mv2~vhxO6C|ZjWz>-Mv2{C}pA^yx#Q+*O( zVv8PzWD$MnH_B1DXpOTBLCKc`9&~lRZ5GwL&)kB^WLjTR<~e?%)W%h(E9fD5Sh8eV zIr9BPU=`{krq1s$dX!^?M@7hSxauB88j4>|BP~J6O3UcIY2#mX#dIhm-4kNX{!UI9 zlYB#SHt`>pz*&ID^S^*DA5Uox*u;@)!hkKk8w*F|S}*g&~5k$^(GnI}|um{#L5H=EG zfOVeZf@dA#_wo_KgrYSMl2B z=M@v+FPN}e!h(JrP?KW^W~}yY>iVoe4F=qkzmm;Z)9{##*OKByouLRd;;mIg6Y?_v zObOu@$gW&tWRt%%!qy1*CafU`6fw>iw&I*&AbiZX#tfP^${l!f=gAbY=}ps~Uz5Q9 z+)}lYL5XZyR4X`Od?vbA+;Law)-DgVJ$~dl1p}0Ml#^Ww(9Tj zJ~_}qO{x6u(aR7NH>l%*D1S0w%IBoyr=|mM_#b553ZP@gwY>!qU%h6Lb$C3 z=?%@Mh3%D1_s%>@OIA=(ap8c~(*G8Iys{SQ#&-)kcxJwVEa108$pVF=XH>NWklBDe_Q8?zC*I9099yv1P$RMUVHK;elI5Ae( z-KXl2rvb}Sj6pY8J6luJik*wWXJf@iaWCLz0k>GZg8}6?W5*V83OA|j1303oUhKWK zRIP6p1$XD1CpaSOA@N5dMS5u0-gI;wtokvz zonp&xiPlIZgVegz?1xAy;5nXw4)5VWVJ)Dme3&BojdA28rwDJx%?4)t8y0gwwls()8>*km3t>tt(_-A{*k0z_DaUd!P!XThzbdkwiuw;70hWAQ~~p>}h?@z#^nkm=0f*aS*S zxJZegNw>@xh6x+6ZjAI4B7fds?|$kQIg2_d?0S9IsbhRcqqC`qot_*6&vg@Uc+hju zp&bL-yZ#$U+NzKD3KYcs8N=A^k6XOy-Pa|A6@gCR*%-+->=Sre$kC~IEzjtjyN}0E zs!spBiw&6e2*^s^Di!LuI12t%EXQFtjJgO+fpj$~uWMj{z%xV;LK zX#=#O&xa<1))D`=TE_`*%6`Pd=a6MfZ4&86XNbtvv?V1EdWj!c) zZ14>bMywEkL38~ng#7`fwH-CwwvN*XWTnxAi}kg9Nl8{uSK`ryZ7RDq+^b+SE$&zZ z?Hcql>EUXIF=ja#Wih=~%5ZgoGOO0Ux}X%!MH}h#KYU8=&Sp~A{#CGKe#d+6IfZk} z*s@J4(?_a5g{gw>*h@C^snP*U2KtI*qUR&RE$#}i)qeuIUc#rRgHtO<;*1#I3RPcw zRV@3-u!T$WH^N|>kX7u+t9!Ds<#O^4^L2h~I=Yz*d$HF_e4aU0Tzsh8SYtJbS%jsu zj?F%1SLU*V(r|mqtdh%V6f@okg;2UkDSYi9QeRdwQUJ0+xP;JeIyN4gjyr+6=rM*5 z%n1sh%#S9+^4K8X#mINg^%drK|q@BLxZk-NXc^fH)TQR^HSU3v%X zT>8sqit9}n7rgH0O8zB8Kytr`RBs6(8{l986|fLg9|gz-LxD!R_jbQ?r~0mi${A4$ z%ZYL*b$qvn$CTg|tNe}Q>XTWajNkOj#gC*`)0RG$hj(8HSF)fTSrF0vT7P3jd;|BD zXJh>=QM}|Wc-owLYuJ{i6tQ=AB9z?GTkj}oPsEWb)iF!jsHu!O@{qjoI=W?AJA1bFun z%z4~y7;Y#rx$ski_=N=VkX*h*%Blcmul$Ap;!Lq>dmBr8{U#Pc2DxV-V(Y!@%XD1Sn$C_~N+%(oAttzxB`t%OR9w=p%*@t>|GE*iev(B~+w! z1hJyc){13G-uY(KaJ59-2SBmnSqhQ*P z-MA%Im?sqCBcu!M8jr=wNAq(lx@?#5g-Hx*RJESb!M$LUUGdEeUcjWFSlSP`7Ddad zeKcL?3vAS;lKMB@hf^agIjhv>Xk!o7#k`$ZFuOiWZ8pLFP?@Yi7-@k4hNUO{x;QzX zsn}?_z#kPVD`j?4!8jxX`02QiA?L+tRuU8IQ-Nt$CYe5jF{*`Tf!`Wu!CwLXnqzu z4HmV7e=VnG3Z!(Ietq9elfsHcO=$laBE=EzD`wT&smy*CXVFLg2fCHNORF2=wa(^6 zSELoP%4hr$FDp-GT7pRioD8l`S)exZBMnd(phs~ot{F{qH ztjOFBG6TEo>yPV`p63Gw+z;KUw-Nl_$`;rqX)h~=Fz7cGbCEc zBNh5gJw(nv4>kZPXUqRVNfw9o&>z7Ceu)tW7VYHxMk4~-sK1a9S22d7jG!}!mQ32i zY|g*nB#N4<)xuQ%Fpg`LvlZV4pVO3}v7E{x$WWM`r|BSW5Zf`$1JO=&+9N|@2g)>b{OJ{qhA#3plTEZV)MnGh$}tiFnikfo+6 z`k5~7McHCb?S2aLQby#OvcK5R$U(E`OqyH7@mvX!Wrm9Ao|fBrKpPO5rX$_s2<5}T zW{>BXOq82^#8}wK?Q^10Cc7u=d?SQvS2jxZZ{`yvSLd5*m6o%zB2c@;sk3}-s|;T; z$&Ok8u2g*Y9L+Zf_n761y9ii|8-iFQ9B}jm(e6mCJ;W8YhgxV2$M7PxZtUPR%I$lF z_Z^{~cr>P{Om}2jxGUDt%#yv@qDxZFOaG&JR+K5Nk{%xaNAx)F&d6QYU+ztm{U4e1UZ)gS{44Y;hrt_`de^I#yjiL8P=e*|Qg*ef!a^v7pgsqY9P-nio(#1{ zfcZ4_PeOgLJO!7?eL7jk{E=5qwt3qxQFCQtdp>0P-h*?Ey2bIXiKne{5Gl|OfGeZi zZ}1g;sg$Cng^GRM*lDvytN2jlnuk67L&hub+mr;gQlqUcL%g*MZ{Y(o>qI5DM1$7+ zq0P9)xvhq6Lie{#d(hgXc>d&&*N)BMACW9y(_$J5}N^{z=*iX>qfqHa)X*aAVJ? zf=$uyewcs4&2Qc=6i$qEp=ocW9DnYrZ7aQH1%^7Z*ksBMaF+J55_KF|Z1IHjbmq|# ziR^n1c*<^kstQB$iS?p@wsrVzDw|SXigq-V=4C*k%(uMH#<@BaJEn%a6v*bAo9vpco4>lG8F*c7>Lm8DH6H4us90PL%C&)J3BXf8ebmvy{$1rIKHnQuON8il|&OOE7gaOPT%S3-ss$Y zHTcelFu8wtxKcw8hWrNrcUA4ZJ1th6fsuQ;vEUQq>S*LsW2u#fGm2M#T-)x&U+u~5 zE&@l$YjknG$BXZW>e9$GKdH1}n93`D4$66|`DQ-=M7d-6?dAAx4L4+acX#cU$2=Ghs4mj{vPkWzQ+!*9a+#Nu*dInw>pANe?u>I za47wNi_IJYCKC;xaxRGNpW8tshgZ}#Iic0MI>%R;_f~G4eD=1G?XR>_vS;$neA6W0 zR1VnCcetF?0Xjth6f-2v)*w|+cH3@uS`?RKn*<+?@l#}}ll!3?Ut_RM^y-^m)dy0k zP{4e&QVjIFtf@cmT%SDy4o**dGZxc5G*oG$2~m1DIg=Aqxyu>Mwj`x>tL28(6^o0p zULZ<~)VYd+mFG12EO!;;24Z;XB1=*(c?E zDRQc2KXIyjEX&XECrfhpRH}<)>bQ72ID9xOq|rA?+`2yH$I*qE?O!>4cb3s1T&_6l zc<=+G^|)h~v#~TYht;?Y2Cv+gsUbI#?ot!?ewV(}dHBX_K4oLle#f1;VitI}UOW~s>6{iTn?K$_mf^_oaSi~C%~%~2D8 zMy6c!MkmeD`}e>>ebNF&SGx{YD|f{Rx=im`^s5U?IXvaDRQkAN1g}+LaWPVkLyy}> zFWoit!GUqNm~`T2h91I1t+ZhfM2g$)>Y-c-zJfS__Cn^*wC+W1HD^q8X?3;;$^@MA zi7^QJi-uPUei1d=HSiV(B}tgvr?-og;yHBzMvf9pbi1=EOxKx|tcJ#zp~uV&Li>@M zs5sL_TG9FX?J4kBW$IXBsQ83oGcN9v_$RK?6yMj8t+FGgSTR+cvk@bLks@l8;bR^O*}smV!7l-`F$^7aeItJVyHuKblD z>Px5CY(H|&$7jc_$-#gpZI|by}M#qtxFVsV8fyfl# zuD<~h;{VXxfuzE#MP9~R8kLi%c#(*cG3KP45>rTxkM5nIy{Q*J3(+*!SmL42|7ZXr zq`_O00S>t#dlZ0Ur^>+X!wiGe-`0m_@?&G7&FT+lRp1Ku>N@@!k9tz?sZ%Mul3N)W z+0ns_f*0`SLy`K+`P!==A3!;86MYT%!7I7Fy(=d5`>4$Fv6xS4Ui(+XIZ{zSGnUy3E=A+SEHL*FCEaq%Xe6Oa`!w*pI&o&3LDl?_&>$PD9s-g( ziIh_M{w!&Ojs1!9iUdYmczS}aYb2VEMockne&5r5nQEN&vD$dgpp$0#>)Qo*bxJpT zVZP8iTr$xOyGr$7!TMmOtgxxNy(th)-6^5LzM}nRPp)tOJ}~NgMSqndf%VyKo*xJo z&9kHancDk6(_h^8lv{vhmdczRO#>uV2Cby%-AF^SInq5mf(XmYkd)CmF-=WC2a!)G z&av=EF!b@!N+iUiNRnS@fxZE5e%|>=5>O{AD$iih$d@0XY*@qOYoKa%8be)>342Hc zeZ{HXB8}Zjh&Rq4ab6H{{g-^UHW&X;r+$DX{ZaIyKB_vKDxzzOEgnQ!{wM}7V1mmGXVu4u&I0A6+1u9 ztS&xgtu^tNpB^rOWMl9!7j`ukR7x-aMWs zz8P)J1tUnGKzCAy@Of>dtoF96G(5Fpwb0HZTJ~#Wj}rf)h{hv+5{m~z`rnz5@|>qt z^TIh(adP&=3J(aW$e{s@rL5gD_&2-Qxm846b#TUOBLM3K-Y5BgM;63i4aHmqA;Lz@ z7R#E8FyBkZV$GffZeq9;*NoQ!WL5UfsC3fv{-1((+Z;hhUD+vcUk(-&J8=7zH#YVa~mD zak$XT;;p!~HI~v7%kk7{=n@)?JqW?QIHcB4r>s7_n8(!>4pXao60SmSyF7%qR@ur1 zWKx;9AWMNH2ICLbyTkB(i`JcHud`b(AX3Vz;dokS+>+CX0+}!)!k{L0^EPLTyMK~3 zFY9pNLm{w3Ajko4&cpQ;Y#LeU3+sKStKxlsWI#nBXQyfRAPs_3CWzUXXf4*dX^$eD zaE~4$CMQa`Zd05Ev1!t8LaPV#X$(a~2XXhn{E0#KHn|VfJTwycYR@jopYT0gfXi!# zKyf!-_P~PNJ6RjqZv&e8Q`xJ4-7f=|+ z5(7^*AIFsCY{uRlvE)WGQ9jf#g)=zUp3=~mzxqQ87#42_r<8nCcF!dHAz#OlGUVz8 z1mYSvcKIGh11v9a|DXYbp}HUbIlVR%OEWlqOTquW6JlziaXsz_(3*N8RvYX#Xq$}A zX15n455Wg0wj+MdJQQS-cd8K!I+7W1D~vm)9(;{FCJZBpxzZ;lELqJ4eQLrpuj8-V z~uUT~0(tOu&C*uC$Yqn~YMG=~vbHbGqOyb`Cb&zw_%8el4ZGHYNojyoF=xweQ(};dGtcHl~1xU~+74)qZ$R`0Ni9R0z zFC@p%t`B1@#Acl~SD4Yjv;N|N`Xnp6osRc1!(hwUh$8-T^CE%mH!I&v#f`*Lb>x@Z z!wV;XrU~HL_p&E7*0@h2RK7xGf=+*tQr> z0EF(IA|r#Jp{~!BW8inaoVpD-8iKIEQ&7|7F|0cnDbO>E)z)hlLrXd)Hrm-_dyeLD ztY7^iNp!L&o##=kx!Q{(e`Ne2YAAqNpWXw!UJt;JTx`F_m~t0iX$7WLt}fnHrk9m2 zXuG8lS!IfXIe73j6Q?P_s~e{)Ahg##_J=VRr0d(w5NTc`Xbz=Ns&F0+$J~^CveoFm zdANlVyn4OiR>RZK^6;Qx{B(C`l3fPi&+n|rAm8M+E|*5wM>fH;#0 zC;I33%U0Rp6!Z1ReyYODQwTOdlYR-ZUikbjGNrb_v5 zKv*>S$dCAG%dPX27WtUkujGE;ye}{|%{njSrU-8jPjlfSzb>$DTS&mQ?!nr+7a+?) zuyytUVC|fDZj151CR?66EK2@C%BJs~GtzR6f|)j^nn*m?S^ivRyVIDhPQR|R=K2x9 z-KKl9|GXa%?M-9ihDZJHPKfCS-9IH8o$#NF1MvPdCRP~y|NQJvU^Y37*tpD`tq0#u zqyIER#{7iA(r575-ncq^QPr3K1?v>AYLbZ+NT^J~4IfNQOngas0r=>rM^X&Z z4t8XBe0PyKOqj>Up)F~|R@}m;+@e)qG%U^?yziTN-M#NE^VmlWpHmLigi`TDT=YvA3#wJ~Q6%^Q zq1yqVHy$+z1=iU%tigM+c;hg zuiAs@e8ZON=O|<=y|y{~|J5e|{xu3;^A0kp>$|qpp4FSfTdJPbsT=zjXkqIc&5tfh z7#Whdu38)_*!Eb!Z!A3oDF*3-kMJ-bz1KvNc_$rJm93E!7&^~dXNlj=u)cmDRpzw6 zHtj@Wx4~Yt=2S$O*X%^55}eBm&hLDwC)Al#`i#r-$CQH;&n&syjOOP7(^adA>a9D_ z*DV3d7j++1tMO+J3+N0T`>Tr%L52P^v{>sYMxoUVlN5qNAsE{bOU#kDBuArl8 zrJgVXl$wW%sqw7{3)COioWSpM?x{J2Tr6~S><^L+GNm@%MF4IfY`SNyNc+RoIxMkr z8y-hP?kjk{^!wFU)`0$hC8pYkr23#U{O%7IuPuXGkQQ@DoVXQxqPSBURZ6%&SQIFjp$QYBaj z*?i&393A080TtmSsmSKYg$dS@37152^o4%-Pn6ZJMj?`M+}+P%%I6{y>SW@Sr0IvL z_9lu*IdUZuDl4UmgJ~#&cce+6@a3d57g`v(B=-RV&9EFZds^2mWjC>_?lzG!cUe})O}BC138X)asrbgw1JMsJ92DblxJBqafY|MtQnz14(a)l0jwu6y^$(&O z)C}Mz$+t+dT^aQx;0uXRDn2H7RI0uTX447xzxQa4oN9pxOkFNX!+;}H$qaKyI~ghU zF^c8kHIfQcaUWTGoqWzL)f2w5A}gw}x9t)wGpf-(A5%)i+5ZgnD)1$oaZvvDW!4l{ z(l?%@0Sq`4;cCU~-BTF)-wG`-fLbul*gU@z&{V~U{&`a=COtwC?PK& zn}f^>2VljAOHY&AZ-qsr#$vC)e}`UBb?Pv|fr)2Ma zSJ5T=Xgs^)tn;X^U@RFwLLzkM5+LOdCl8%9+Ko0qz z57~cu!=qTGD9clymYQh1G|Q-U?!zZNq$_Ut+*`rnIz2FzMdfLQc=``Jw)I?Zsp%Rk z2x_Q(av~5_NYLFg^Qn1K=J9g-j})ohT27(2Q&B_F1(h=@BgzhzeU>9xS=kAqExcbz z0W_w}T(VD&-ZQes+Pjv5MVSKW=e=7z%C?V-b3P8YIte;i;q^r<-GqH?%q?$ecM(Y# zzM*oeveN3SgW@Q?=l9E-)n@S`jy43|@43E?j?$Ov6->V)Adc000dYZY&)<~q{`f6Y8;)ix>*f0Z!_(Cp9&nV zip)qM7eo7rNvNMLGeufu@|nkr*Z~|{DCP6MURCRr5r+YguQ*91m0(`Z%=KNXb=eI0 z{)p>~P*q`~IcEw3r~;=P^Lqm9nwtxYd!3^ve@vL|aI-4E3xrWC7_n?BaWZq zPR&t-xG>97zFT@$s_?d*Ef%zV&k}7Iu>te95TJiJ>GAJ8kyC~{Ja}T;nk^VphYb#u zM#4}i=mQLmA|Sk8PADilBqfqLDbT1W%ymxUon02NRq*q*XcGHy)To`cj;u-*P{bOo8x3jV5m4kJ-y;3KmnM+ zNm@BpgTG=yRNz{eP!|*D1julfQxPZDV@kj)8AGfOakpPD@ zGf@V{`+TpFBAY;ToxE-W2CS$W*`@buoDxrj+a+eKJMV`O;1O+^pMK-{Hbf5&edJ?9UrW$F^4Kz7SR|tGY^Y}& zqrG`wD7`)jm?9no+d!5TVzAozLiQ1UR7H{bXP&8KMy5XQF(HZ zQi&`v>0y1rPz6*$J43CNd?sTvHY0Cztx{BOAo@3ov5w}8bC+`-F9()C?SHUs&*dViRvE9viMu^a*2J4e#tJax8j(T($bIRz9^pl3rLUC zm1m)8lYn7hHQakl5Y%^26{FqOxWf@v&-1Lk6nSKYF80??Oc zdX^b;>;cayMrKZfDA>tar)gOtyV|RMU-fryF`ywg;-2sLO>S1Eem}CZl;W?{1eWP7 zuLm_c!C||Uu?yOFf@#%j88orBOoX>Duf?%`wg=K&mC#Ux*ly%VY#LJlnFqNXvnh~7YM32NQm(7bCetw zJYWwirStLxRWipXzGchr;)|Ay0QIT9p_9f6=V`5j&F!M9H2Sx0K8i$9XHbE{m09w^GH{j@t!Gj* zb;6~BRNT#9VVDSpP=kUH0%rVw#R>qCeE0_X47boOGOYuUz>^1&?hkjdYX-3_{kk{N8OVQ)WA| zLR>NAp}?X0VCe+!2;M#fLY`x*3Z{rB?m;C)PQe!IU?YER-jxl(3@{r`I3BLogeTb* zdJ`XEA9qM%6c6y%tT>hf0!siPF|oFAY&K;L1NEDqh~+_s^zu2#G8k1>W>u97ofXcCs8! z72P*p;-@p9AqvYKy?35JS_2@;%bw@I$C3WkM9HSBh4D+xsmi&n~ZIb>UX0z zW0z*Q#YMz>PIXlQ@n}>*9l#bCTD2T*%timO8#I0muX^O=OrL&tXz=|Cb0RY1jwc9rj7*MR3wzlYlomkp{0PLZUMYRb z?)Qlituaa@Z`zHCCSOUhG{*^;~-E>Xi3fbC$=>5TvtVSbNGGE9EYN9^}Ed-@IH0vZ0Hwg0y(9L!1YqeBGx z+)miHsL5P$i@;-xDGzLZPiSU#(5c-NSitGcHtDJ>>Q|S=l>Wx4-G)&4?aSYuF(>Ky z^cY)g5;usADVQ^-%r<{|qtH5vLjh|^Q+3h7pec`yRoe|Q0QdsdMwcYThL*|2W%M?S z@{iTI;(9#E$z(5V_o5uD(aZ1$a@M= z*Yv}=2MSa%;I^*7lRx_Zt$%SdcgU8Qb!cDDa;DhIMlw71Sr!j6E6cB1N9;(cnUJX8 z9j4ZQph-!`qaivFkxe9uX*!5HZIkOMmPD~(`&I6yB1kgSpnp}L4(VH}S~gr8WN&)v z>o=aVLg?83ZkAxPvs$o!!)~@nuhA24ZVGQ#0Sv2>l^6L^TATE4f$DvjC{lqwk|8q? zDOT-&7(09=XCg;F+rtiMs#<$IxQLi6tum;1JI%B!weSo2#4ls=LWOsk{k~@x@C;0mZ$Cx|&q^^3el=_Zo zp+1!gc(s`OvW&w^1c?(_JFx;_3nvpVII#e{agZ`Qu-1LxO>Gv6vIMOM|560S^`t7 zQrf38;zC5IZB-KYmyiO%5wZ!tavT0()7Z)7_xd7F2@FRN&n^P%q(E|c_&JmLq5cSl zn~xaW`W8~CYd0esl(qlKMl%`|akeBY2q^-3_IWL)1e|3Stq4vbVl?2XJia;C( zC!?T-*1>*Zy|+0$kPKw5nG~)Z_#JNyn`$ipTmckKc)n7fj9V?Y)0C-^LJ+_rw+#^0 zpk^0L<%qGf=ema(fFcTY$bIw24C+q^F%z>nfRq{3JBudvc9ZH5^D1y@hYd|l!kku2 zhbp!YWkbQlBw%4%yEP z@$;*A@fo#JVF>xPlLmFoLG|Kn`^sTZ*GF!vY{>_UvS&0x&RB`ltickls<0b!vh*FQ z>$Dzps`rUfL6>uIfdcx-}XZyipowYy1!j={T@JfC_?RW1)BPvG?*mS9R5B{ z1TY_a-^IJ@PCAmhw$_C024HZGVm5wS=9b?6^0sX?8@oyJPB^mgt){AufWV|^D|J&G zkmr?Ck#Om|)s+Dl1w!Nucn$Q07((Y)j#aSj9D0QPEoK9YT=O6?x8V?R6ae#v8&~=z zDvlFvP48+=9%Zf{#OfkQogZ)Jxo8g_RE>LfOMpXrZE-n-0)25 zAL-$BB}HG^+vz=cA)}6UbNs}8yk0z{jTIU%hfA#Z+6fsEO-oiKKFG_q+_ilH27>~c zsUD#APJsyEy^XQSpaZMoGjE$NJa-b_iBj7thQ$lX!S4@df}?B=$Ag76nC(RlIr5r+ zdeh{3ItTF;94)9^UmR+W*bHk!bPQbA)el(rNC>HZEVWQ)bOLjup;uQM(mOJFlZV}a ziRC6T!k(KA3lU|0WIU;-!A7lcSZ=9Z&NWd^tg68sV5`ypRMuH?eS^uj3q42%4UMeV z4ZKazP0Zytg7*H9D3hy~XM8Y8gb~1ms%>w@sXwtkRY{~1AO%dAGpXzum+y}$ zgD0I?3S(|T2MN9Ob!`+fTXo%vNat~^NZg8?9M*zkV-@)io}9@1ERNN5;CFJwDAzYe z7`TO}t>ub8mJ~{#XRphdu=dbq#5RQ~&|ux=B-hI;r!*&nTg(iwrpOiWbZjvttb449 zd*Kz11pGgAePvKwZMto6cMIPw*bN2A-HR9C*MrX zoO9~_p^)xfUGVmP*0YQTYo(iu!M<#@cFqlA=*`8CI=PLT0msCt5EDZbo2|5mQ=-Y| zQ6u&3h3-^B_JzD?$l)T2m-$;)<$9*ImJAj8;B1A&=AmBY29hZU24=Po*GX`&^~dXW z@dP9Z4xkED&^awHk~Q(QkUW@0?3eR>frUoj6<0`EkGXhuQ5n6uzDlANud9jwsmV*KZDfHgkysX$aLi*&* zFewm?l#?aOLw*D>V`$?p|01;W*?Q}Wta3w%2p?EsfC>*jA@FN5O5EMckyU=N(CVm}p%8I69G zj>!LMCKi!TvWlRN?XHDUNQb&I)2^asD3efzNUMRPQp}L6s6#mdCM~4v{*o5r;0L>k zMVNUOsx3nc$0f_DbsYXYHd6lGQ~WhYu9KE=3mc<^Pt0l-%OwIIut7;GWo@TC%2EVr z&dPOueHiDMD`D*lN}PpBtqBs$yAfvxnABWKvaUrP!jlq^U%sPvNSV6;X&zDNAH z&%kg)1hyF1XkLeA!8cQY&)daUW!SmDlE`W)I2r z(8EYN5!<53VVRm7(V#B^6V2N3G)QJ=OQ=7sy+l~wEuy0Xlx3+ZUX?OckRxUx`OH64 z>L_yhMUT`>k2UIIy6s}sDeqeB|q@=33*}5b{QbK{eOhJg*IUAFHhkC5L(Bz->^HllNm504Tt+ zyGh2n?#bQ1HpxS!NNYl`H2UHSfHj0qAx7^^`R*0x8_i}+c~B_O5Rs50Va3VlVwpIT z$1uBCe}Xq#|A3US+-1$Q=Ajg+E{hYZGSmJ1SbJZ9>)z+kgc&M-{x!K$?@Vc^q1Ae| zY`J=c;+w#$Zf#}o=15go)qm8hTq`YZ!MCxjtgLseCodg*qz0h@zVbT?w<)an=W$o? z-iDJg#P37%_6_`*e3x%hEn9Ifsol2~ygkSuM|sOe^9(#%oTkGAIBiDXSfMa415H9t zF6608_vQJqoEOVnFR+wySy~e^dT5?W$9a8+M zJDN@+(^1#K5wG6q>Fjti9Ja(x1IpPrv|KFiVFHHdz^U zU8%Xxk5Azo(P>&o-~PRMD;fW}d1G~#!K_fr>94;B4aG~v6sjZ5%KPzwh_S*vD2aFE z%m(j2d0Jxd11VLOyPb{%Yp2)K2VElH2`je|#(rn*56t;Z8|H|0L;;~h!?A9yvdEDg z+jD`Gwj_ML0VkUum|UsiDZl)EGZD#;`#SH)q4LJV^Mle6p!q?aqd_MOvaU1rT}}L; z&~|hW(^{YXb^ipNnmO;9w&n|Z}H(Xky?(t9ZQ zt^v~R{LUz`9}8?d# zbtYcUYhtEyXTqH!GZkr68jX}#HlKn3E0790aNi=+nbw=DD;c`#j95u-2z+)P>xC~7 zK7h;$@PVhjt~#e*@d;k~<49hK!(LjoA7f|T9Ef~}Vju9*h%KkIQ3pLqeff;GEhN!j z)iposO#`iQ#$@2fly~ZBJ^-M}Gn#vS=F@i$O#nvxai)J|eE-PAX>&4R6D=b3Ua$SP ze$Gg1Hpi(*G8+ffA!ISnE_rm{tU^yXA679dA=8+Ac-TyVcrF_5REDK`DH{s;@dopV?&*{SA9w{@7OOSRwzc<^-4F|nmr;N@}jVReS_m?D$ z#C5sr`yGc>iC7h5=C1p?&-k?A@OYIYk;h}7|Jqy|O((?O{l!;|F~N#V|;-2f9$QmKmJyYM0|+k<$%i+gRW9yli5&KyY7^^6XVB$={1b%hxX7` z&pgc_qOE*y0F4RIZGUf*t{GkH8@x-&WYWKOM?T<7uYu5NoX&ht8d&Db#PpkM@-`e} z<-BYByr&6`sUV1P%m;PU^?D%bPiRqqk=rzC5rRX4J{mhu71gmYENVM6b~0 z3ZW8@?#CQI5~1MN-+0D_S0o^P5}k0Pv5s3ood;>qP(8#cS~Ec8D)elL=iYjf44#6` zq)hhRy5*=qR^ZVTrj|8tgBlFphR;_X!E zCo)R#>!gJQj%kE5g7;nipohBa7rgCQ7!9E)WhLU<>~A%<(!7}lRQ~fK&MxVA^3Q(5 zb!!Z?`EmAg&!tRqTZ7rK^3Oq&suGypR#|UB_hEa$fxW`kdV^!F17>%$??p+%{reF? z<%#_eLo(;%I)N`&fwf%JNfsI$FaeBA)%hEUHv`mVG$6xCr8s=X+;520i3Bl~m4 zelCWex9DD(hs`;15S%NQ3tt4=q^;WmpMZ;Y+q5wbBAunW-M1{U6u9uBTqvAzxK}I5 zI#B5V4@LFO8o?V#`MD0mgN`K((*ga4Hp0)G@CS=%tEd|THT=W9awWrf=)IQlvohY~ zZNix2j1+haaIVAk<(hlGZ7NHN6cQsh3kp4sVNRUEozMi4I_yQ7Bfrz?s3Gt-Q@bKvAOTY0AZ+#Pk;BgrgPybxx3Tz^5HTX z(RYR@8vF+LaL1^jdE4|PI1>fcy#F?s{NpdFT;VP!-0mYHb4M%l5nLAaM~P!J!?{*&U2;P$bDvmk~z?TuyJ0hC*hA3r}x!I^)|)uAmvz@2H*&MJUxh9 zu!X0G(^+KhD&X;ZwALfs`83;U$%Su4ohGg&lve&3%tO(Ec_?7EQ{)~83VZ=&R0FX) zRRTef%qs2;x(sPJfhb~;C#Zxz@)ELM_6pg>yB$r5Qn^NfPq?dGBz)FKT)3^*0Q`E>fzga0Za6Ioa̤=Na|g)H&VWjJS>MTfuxZVs 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 Ip+NBe18xdq-T(jq diff --git a/templates/Alloy.Mvc/Business/Channels/DisplayResolutionBase.cs b/templates/Alloy.Mvc/Business/Channels/DisplayResolutionBase.cs index 9bf2d10..0af3107 100644 --- a/templates/Alloy.Mvc/Business/Channels/DisplayResolutionBase.cs +++ b/templates/Alloy.Mvc/Business/Channels/DisplayResolutionBase.cs @@ -1,7 +1,7 @@ using EPiServer.Framework.Localization; using EPiServer.Web; -namespace Alloy.Mvc.Business.Channels +namespace Alloy._1.Business.Channels { ///

/// Base class for all resolution definitions diff --git a/templates/Alloy.Mvc/Business/Channels/DisplayResolutions.cs b/templates/Alloy.Mvc/Business/Channels/DisplayResolutions.cs index 3473c7d..10c72a6 100644 --- a/templates/Alloy.Mvc/Business/Channels/DisplayResolutions.cs +++ b/templates/Alloy.Mvc/Business/Channels/DisplayResolutions.cs @@ -1,6 +1,6 @@ using EPiServer.Framework.Localization; -namespace Alloy.Mvc.Business.Channels +namespace Alloy._1.Business.Channels { /// /// Defines resolution for desktop displays diff --git a/templates/Alloy.Mvc/Business/Channels/MobileChannel.cs b/templates/Alloy.Mvc/Business/Channels/MobileChannel.cs index 73f7328..30a7c89 100644 --- a/templates/Alloy.Mvc/Business/Channels/MobileChannel.cs +++ b/templates/Alloy.Mvc/Business/Channels/MobileChannel.cs @@ -3,7 +3,7 @@ using Microsoft.Extensions.DependencyInjection; using Wangkanai.Detection; -namespace Alloy.Mvc.Business.Channels +namespace Alloy._1.Business.Channels { // // Defines the 'Mobile' content channel diff --git a/templates/Alloy.Mvc/Business/Channels/WebChannel.cs b/templates/Alloy.Mvc/Business/Channels/WebChannel.cs index 36217be..1ff2453 100644 --- a/templates/Alloy.Mvc/Business/Channels/WebChannel.cs +++ b/templates/Alloy.Mvc/Business/Channels/WebChannel.cs @@ -3,7 +3,7 @@ using Microsoft.Extensions.DependencyInjection; using Wangkanai.Detection; -namespace Alloy.Mvc.Business.Channels +namespace Alloy._1.Business.Channels { /// /// Defines the 'Web' content channel diff --git a/templates/Alloy.Mvc/Business/ContentExtensions.cs b/templates/Alloy.Mvc/Business/ContentExtensions.cs index 673f1df..a5bd678 100644 --- a/templates/Alloy.Mvc/Business/ContentExtensions.cs +++ b/templates/Alloy.Mvc/Business/ContentExtensions.cs @@ -5,7 +5,7 @@ using EPiServer.Framework.Web; using EPiServer.ServiceLocation; -namespace Alloy.Mvc.Business +namespace Alloy._1.Business { /// /// Extension methods for content diff --git a/templates/Alloy.Mvc/Business/ContentLocator.cs b/templates/Alloy.Mvc/Business/ContentLocator.cs index 32593c4..1a9c5e3 100644 --- a/templates/Alloy.Mvc/Business/ContentLocator.cs +++ b/templates/Alloy.Mvc/Business/ContentLocator.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; -using Alloy.Mvc.Models.Pages; +using Alloy._1.Models.Pages; using EPiServer; using EPiServer.Core; using EPiServer.Filters; @@ -10,7 +10,7 @@ using EPiServer.Shell.Configuration; using EPiServer.Web; -namespace Alloy.Mvc.Business +namespace Alloy._1.Business { [ServiceConfiguration(Lifecycle = ServiceInstanceScope.Singleton)] public class ContentLocator diff --git a/templates/Alloy.Mvc/Business/EditorDescriptors/ContactPageSelectionFactory.cs b/templates/Alloy.Mvc/Business/EditorDescriptors/ContactPageSelectionFactory.cs index 2f78e68..49dfb55 100644 --- a/templates/Alloy.Mvc/Business/EditorDescriptors/ContactPageSelectionFactory.cs +++ b/templates/Alloy.Mvc/Business/EditorDescriptors/ContactPageSelectionFactory.cs @@ -3,7 +3,7 @@ using EPiServer.ServiceLocation; using EPiServer.Shell.ObjectEditing; -namespace Alloy.Mvc.Business.EditorDescriptors +namespace Alloy._1.Business.EditorDescriptors { /// /// Provides a list of options corresponding to ContactPage pages on the site diff --git a/templates/Alloy.Mvc/Business/EditorDescriptors/ContactPageSelector.cs b/templates/Alloy.Mvc/Business/EditorDescriptors/ContactPageSelector.cs index 9b9cde5..931753d 100644 --- a/templates/Alloy.Mvc/Business/EditorDescriptors/ContactPageSelector.cs +++ b/templates/Alloy.Mvc/Business/EditorDescriptors/ContactPageSelector.cs @@ -4,7 +4,7 @@ using EPiServer.Shell.ObjectEditing; using EPiServer.Shell.ObjectEditing.EditorDescriptors; -namespace Alloy.Mvc.Business.EditorDescriptors +namespace Alloy._1.Business.EditorDescriptors { /// /// Registers an editor to select a ContactPage for a PageReference property using a dropdown diff --git a/templates/Alloy.Mvc/Business/IModifyLayout.cs b/templates/Alloy.Mvc/Business/IModifyLayout.cs index 1abe21d..afbc684 100644 --- a/templates/Alloy.Mvc/Business/IModifyLayout.cs +++ b/templates/Alloy.Mvc/Business/IModifyLayout.cs @@ -1,6 +1,6 @@ -using Alloy.Mvc.Models.ViewModels; +using Alloy._1.Models.ViewModels; -namespace Alloy.Mvc.Business +namespace Alloy._1.Business { /// /// Defines a method which may be invoked by PageContextActionFilter allowing controllers diff --git a/templates/Alloy.Mvc/Business/Initialization/CustomizedRenderingInitialization.cs b/templates/Alloy.Mvc/Business/Initialization/CustomizedRenderingInitialization.cs index de72458..1ed5907 100644 --- a/templates/Alloy.Mvc/Business/Initialization/CustomizedRenderingInitialization.cs +++ b/templates/Alloy.Mvc/Business/Initialization/CustomizedRenderingInitialization.cs @@ -1,4 +1,4 @@ -using Alloy.Mvc.Business.Rendering; +using Alloy._1.Business.Rendering; using EPiServer.Framework; using EPiServer.Framework.Initialization; using EPiServer.ServiceLocation; @@ -7,7 +7,7 @@ using EPiServer.Web.Mvc.Html; using Microsoft.Extensions.DependencyInjection; -namespace Alloy.Mvc.Business.Initialization +namespace Alloy._1.Business.Initialization { /// /// Module for customizing templates and rendering. diff --git a/templates/Alloy.Mvc/Business/PageContextActionFilter.cs b/templates/Alloy.Mvc/Business/PageContextActionFilter.cs index 2046587..b5d22df 100644 --- a/templates/Alloy.Mvc/Business/PageContextActionFilter.cs +++ b/templates/Alloy.Mvc/Business/PageContextActionFilter.cs @@ -1,10 +1,10 @@ -using Alloy.Mvc.Models.Pages; -using Alloy.Mvc.Models.ViewModels; +using Alloy._1.Models.Pages; +using Alloy._1.Models.ViewModels; using EPiServer.Web.Routing; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; -namespace Alloy.Mvc.Business +namespace Alloy._1.Business { /// /// Intercepts actions with view models of type IPageViewModel and populates the view models diff --git a/templates/Alloy.Mvc/Business/PageTypeExtensions.cs b/templates/Alloy.Mvc/Business/PageTypeExtensions.cs index f799832..2420023 100644 --- a/templates/Alloy.Mvc/Business/PageTypeExtensions.cs +++ b/templates/Alloy.Mvc/Business/PageTypeExtensions.cs @@ -2,7 +2,7 @@ using EPiServer.DataAbstraction; using EPiServer.ServiceLocation; -namespace Alloy.Mvc.Business +namespace Alloy._1.Business { /// /// Provides extension methods for types intended to be used when working with page types diff --git a/templates/Alloy.Mvc/Business/PageViewContextFactory.cs b/templates/Alloy.Mvc/Business/PageViewContextFactory.cs index 40ae084..e6ce196 100644 --- a/templates/Alloy.Mvc/Business/PageViewContextFactory.cs +++ b/templates/Alloy.Mvc/Business/PageViewContextFactory.cs @@ -1,6 +1,6 @@ using System.Linq; -using Alloy.Mvc.Models.Pages; -using Alloy.Mvc.Models.ViewModels; +using Alloy._1.Models.Pages; +using Alloy._1.Models.ViewModels; using EPiServer; using EPiServer.Core; using EPiServer.Data; @@ -13,7 +13,7 @@ using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.Options; -namespace Alloy.Mvc.Business +namespace Alloy._1.Business { [ServiceConfiguration] public class PageViewContextFactory @@ -23,7 +23,11 @@ public class PageViewContextFactory private readonly IDatabaseMode _databaseMode; private readonly CookieAuthenticationOptions _cookieAuthenticationOptions; - public PageViewContextFactory(IContentLoader contentLoader, UrlResolver urlResolver, IDatabaseMode databaseMode, IOptionsMonitor optionMonitor) + public PageViewContextFactory( + IContentLoader contentLoader, + UrlResolver urlResolver, + IDatabaseMode databaseMode, + IOptionsMonitor optionMonitor) { _contentLoader = contentLoader; _urlResolver = urlResolver; @@ -67,14 +71,20 @@ private string GetLoginUrl(ContentReference returnToContentLink) public virtual IContent GetSection(ContentReference contentLink) { var currentContent = _contentLoader.Get(contentLink); - if (currentContent.ParentLink != null && currentContent.ParentLink.CompareToIgnoreWorkID(SiteDefinition.Current.StartPage)) + + static bool isSectionRoot(ContentReference contentReference) => + ContentReference.IsNullOrEmpty(contentReference) || + contentReference.Equals(SiteDefinition.Current.StartPage) || + contentReference.Equals(SiteDefinition.Current.RootPage); + + if (isSectionRoot(currentContent.ParentLink)) { return currentContent; } return _contentLoader.GetAncestors(contentLink) .OfType() - .SkipWhile(x => x.ParentLink == null || !x.ParentLink.CompareToIgnoreWorkID(SiteDefinition.Current.StartPage)) + .SkipWhile(x => !isSectionRoot(x.ParentLink)) .FirstOrDefault(); } } diff --git a/templates/Alloy.Mvc/Business/Rendering/AlloyContentAreaRenderer.cs b/templates/Alloy.Mvc/Business/Rendering/AlloyContentAreaRenderer.cs index b9ad4cb..632d70d 100644 --- a/templates/Alloy.Mvc/Business/Rendering/AlloyContentAreaRenderer.cs +++ b/templates/Alloy.Mvc/Business/Rendering/AlloyContentAreaRenderer.cs @@ -3,9 +3,9 @@ using EPiServer.Core.Html.StringParsing; using EPiServer.Web.Mvc.Html; using Microsoft.AspNetCore.Mvc.Rendering; -using static Alloy.Mvc.Globals; +using static Alloy._1.Globals; -namespace Alloy.Mvc.Business.Rendering +namespace Alloy._1.Business.Rendering { /// /// Extends the default to apply custom CSS classes to each . diff --git a/templates/Alloy.Mvc/Business/Rendering/ErrorHandlingContentRenderer.cs b/templates/Alloy.Mvc/Business/Rendering/ErrorHandlingContentRenderer.cs index 8e2ede7..af5cef3 100644 --- a/templates/Alloy.Mvc/Business/Rendering/ErrorHandlingContentRenderer.cs +++ b/templates/Alloy.Mvc/Business/Rendering/ErrorHandlingContentRenderer.cs @@ -2,14 +2,14 @@ using System.Diagnostics; using System.IO; using System.Threading.Tasks; -using Alloy.Mvc.Helpers; -using Alloy.Mvc.Models.ViewModels; +using Alloy._1.Helpers; +using Alloy._1.Models.ViewModels; using EPiServer.Core; using EPiServer.DataAbstraction; using EPiServer.Web.Mvc; using Microsoft.AspNetCore.Mvc.Rendering; -namespace Alloy.Mvc.Business.Rendering +namespace Alloy._1.Business.Rendering { /// /// Wraps an MvcContentRenderer and adds error handling to ensure that blocks and other content diff --git a/templates/Alloy.Mvc/Business/Rendering/IContainerPage.cs b/templates/Alloy.Mvc/Business/Rendering/IContainerPage.cs index 7087ba2..d2100e7 100644 --- a/templates/Alloy.Mvc/Business/Rendering/IContainerPage.cs +++ b/templates/Alloy.Mvc/Business/Rendering/IContainerPage.cs @@ -1,4 +1,4 @@ -namespace Alloy.Mvc.Business.Rendering +namespace Alloy._1.Business.Rendering { /// /// Marker interface for content types which should not be handled by DefaultPageController. diff --git a/templates/Alloy.Mvc/Business/Rendering/ICustomCssInContentArea.cs b/templates/Alloy.Mvc/Business/Rendering/ICustomCssInContentArea.cs index 14c7110..481dfb3 100644 --- a/templates/Alloy.Mvc/Business/Rendering/ICustomCssInContentArea.cs +++ b/templates/Alloy.Mvc/Business/Rendering/ICustomCssInContentArea.cs @@ -1,4 +1,4 @@ -namespace Alloy.Mvc.Business.Rendering +namespace Alloy._1.Business.Rendering { /// /// Defines a property for CSS class(es) which will be added to the class diff --git a/templates/Alloy.Mvc/Business/Rendering/SiteViewEngineLocationExpander.cs b/templates/Alloy.Mvc/Business/Rendering/SiteViewEngineLocationExpander.cs index 3be3d9b..6ea7825 100644 --- a/templates/Alloy.Mvc/Business/Rendering/SiteViewEngineLocationExpander.cs +++ b/templates/Alloy.Mvc/Business/Rendering/SiteViewEngineLocationExpander.cs @@ -1,7 +1,7 @@ using Microsoft.AspNetCore.Mvc.Razor; using System.Collections.Generic; -namespace Alloy.Mvc.Business.Rendering +namespace Alloy._1.Business.Rendering { public class SiteViewEngineLocationExpander : IViewLocationExpander { diff --git a/templates/Alloy.Mvc/Business/Rendering/TemplateCoordinator.cs b/templates/Alloy.Mvc/Business/Rendering/TemplateCoordinator.cs index e70042b..ebab8fa 100644 --- a/templates/Alloy.Mvc/Business/Rendering/TemplateCoordinator.cs +++ b/templates/Alloy.Mvc/Business/Rendering/TemplateCoordinator.cs @@ -1,13 +1,13 @@ using EPiServer.Core; using EPiServer.DataAbstraction; using EPiServer.ServiceLocation; -using Alloy.Mvc.Controllers; -using Alloy.Mvc.Models.Blocks; -using Alloy.Mvc.Models.Pages; +using Alloy._1.Controllers; +using Alloy._1.Models.Blocks; +using Alloy._1.Models.Pages; using EPiServer.Web; using EPiServer.Web.Mvc; -namespace Alloy.Mvc.Business.Rendering +namespace Alloy._1.Business.Rendering { [ServiceConfiguration(typeof(IViewTemplateModelRegistrator))] public class TemplateCoordinator : IViewTemplateModelRegistrator diff --git a/templates/Alloy.Mvc/Business/UIDescriptors/ContainerPageUIDescriptor.cs b/templates/Alloy.Mvc/Business/UIDescriptors/ContainerPageUIDescriptor.cs index 4355634..d4623a1 100644 --- a/templates/Alloy.Mvc/Business/UIDescriptors/ContainerPageUIDescriptor.cs +++ b/templates/Alloy.Mvc/Business/UIDescriptors/ContainerPageUIDescriptor.cs @@ -1,7 +1,7 @@ using EPiServer.Shell; -using Alloy.Mvc.Models.Pages; +using Alloy._1.Models.Pages; -namespace Alloy.Mvc.Business.UIDescriptors +namespace Alloy._1.Business.UIDescriptors { /// /// Describes how the UI should appear for content. diff --git a/templates/Alloy.Mvc/Components/ContactBlockViewComponent.cs b/templates/Alloy.Mvc/Components/ContactBlockViewComponent.cs index cee98a8..9ae2c1d 100644 --- a/templates/Alloy.Mvc/Components/ContactBlockViewComponent.cs +++ b/templates/Alloy.Mvc/Components/ContactBlockViewComponent.cs @@ -1,7 +1,7 @@ -using Alloy.Mvc.Helpers; -using Alloy.Mvc.Models.Blocks; -using Alloy.Mvc.Models.Pages; -using Alloy.Mvc.Models.ViewModels; +using Alloy._1.Helpers; +using Alloy._1.Models.Blocks; +using Alloy._1.Models.Pages; +using Alloy._1.Models.ViewModels; using EPiServer; using EPiServer.Core; using EPiServer.Web; @@ -9,7 +9,7 @@ using Microsoft.AspNetCore.Html; using Microsoft.AspNetCore.Mvc; -namespace Alloy.Mvc.Components +namespace Alloy._1.Components { public class ContactBlockViewComponent : BlockComponent { diff --git a/templates/Alloy.Mvc/Components/ImageFileViewComponent.cs b/templates/Alloy.Mvc/Components/ImageFileViewComponent.cs index eaea1f7..b4ca65f 100644 --- a/templates/Alloy.Mvc/Components/ImageFileViewComponent.cs +++ b/templates/Alloy.Mvc/Components/ImageFileViewComponent.cs @@ -1,10 +1,10 @@ -using Alloy.Mvc.Models.Media; -using Alloy.Mvc.Models.ViewModels; +using Alloy._1.Models.Media; +using Alloy._1.Models.ViewModels; using EPiServer.Web.Mvc; using EPiServer.Web.Routing; using Microsoft.AspNetCore.Mvc; -namespace Alloy.Mvc.Components +namespace Alloy._1.Components { /// /// Controller for the image file. diff --git a/templates/Alloy.Mvc/Components/PageListBlockViewComponent.cs b/templates/Alloy.Mvc/Components/PageListBlockViewComponent.cs index d57849a..3dbb28b 100644 --- a/templates/Alloy.Mvc/Components/PageListBlockViewComponent.cs +++ b/templates/Alloy.Mvc/Components/PageListBlockViewComponent.cs @@ -1,15 +1,15 @@ using System.Collections.Generic; using System.Linq; -using Alloy.Mvc.Business; -using Alloy.Mvc.Models.Blocks; -using Alloy.Mvc.Models.ViewModels; +using Alloy._1.Business; +using Alloy._1.Models.Blocks; +using Alloy._1.Models.ViewModels; using EPiServer; using EPiServer.Core; using EPiServer.Filters; using EPiServer.Web.Mvc; using Microsoft.AspNetCore.Mvc; -namespace Alloy.Mvc.Components +namespace Alloy._1.Components { public class PageListBlockViewComponent : BlockComponent { diff --git a/templates/Alloy.Mvc/Components/VideoFileViewComponent.cs b/templates/Alloy.Mvc/Components/VideoFileViewComponent.cs index 8a95d09..c9455f4 100644 --- a/templates/Alloy.Mvc/Components/VideoFileViewComponent.cs +++ b/templates/Alloy.Mvc/Components/VideoFileViewComponent.cs @@ -1,11 +1,11 @@ -using Alloy.Mvc.Models.Media; -using Alloy.Mvc.Models.ViewModels; +using Alloy._1.Models.Media; +using Alloy._1.Models.ViewModels; using EPiServer.Core; using EPiServer.Web.Mvc; using EPiServer.Web.Routing; using Microsoft.AspNetCore.Mvc; -namespace Alloy.Mvc.Components +namespace Alloy._1.Components { /// /// Controller for the video file. diff --git a/templates/Alloy.Mvc/Controllers/DefaultPageController.cs b/templates/Alloy.Mvc/Controllers/DefaultPageController.cs index 17e7aaa..927ad6c 100644 --- a/templates/Alloy.Mvc/Controllers/DefaultPageController.cs +++ b/templates/Alloy.Mvc/Controllers/DefaultPageController.cs @@ -1,11 +1,11 @@ using System; using EPiServer; using EPiServer.Framework.DataAnnotations; -using Alloy.Mvc.Models.Pages; -using Alloy.Mvc.Models.ViewModels; +using Alloy._1.Models.Pages; +using Alloy._1.Models.ViewModels; using Microsoft.AspNetCore.Mvc; -namespace Alloy.Mvc.Controllers +namespace Alloy._1.Controllers { /// /// Concrete controller that handles all page types that don't have their own specific controllers. diff --git a/templates/Alloy.Mvc/Controllers/PageControllerBase.cs b/templates/Alloy.Mvc/Controllers/PageControllerBase.cs index 8dd6d38..b6c4db6 100644 --- a/templates/Alloy.Mvc/Controllers/PageControllerBase.cs +++ b/templates/Alloy.Mvc/Controllers/PageControllerBase.cs @@ -1,7 +1,7 @@ using System.Threading.Tasks; -using Alloy.Mvc.Business; -using Alloy.Mvc.Models.Pages; -using Alloy.Mvc.Models.ViewModels; +using Alloy._1.Business; +using Alloy._1.Models.Pages; +using Alloy._1.Models.ViewModels; using EPiServer.ServiceLocation; using EPiServer.Shell.Security; using EPiServer.Web.Mvc; @@ -9,7 +9,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.DependencyInjection; -namespace Alloy.Mvc.Controllers +namespace Alloy._1.Controllers { /// /// All controllers that renders pages should inherit from this class so that we can diff --git a/templates/Alloy.Mvc/Controllers/PreviewController.cs b/templates/Alloy.Mvc/Controllers/PreviewController.cs index 44554b8..25f8296 100644 --- a/templates/Alloy.Mvc/Controllers/PreviewController.cs +++ b/templates/Alloy.Mvc/Controllers/PreviewController.cs @@ -1,7 +1,7 @@ using System.Linq; -using Alloy.Mvc.Business; -using Alloy.Mvc.Models.Pages; -using Alloy.Mvc.Models.ViewModels; +using Alloy._1.Business; +using Alloy._1.Models.Pages; +using Alloy._1.Models.ViewModels; using EPiServer; using EPiServer.Core; using EPiServer.Framework.DataAnnotations; @@ -11,7 +11,7 @@ using EPiServer.Web.Mvc; using Microsoft.AspNetCore.Mvc; -namespace Alloy.Mvc.Controllers +namespace Alloy._1.Controllers { // Note: as the content area rendering on Alloy is customized we create ContentArea instances // which we render in the preview view in order to provide editors with a preview which is as diff --git a/templates/Alloy.Mvc/Controllers/SearchPageController.cs b/templates/Alloy.Mvc/Controllers/SearchPageController.cs index 5565668..063c6ec 100644 --- a/templates/Alloy.Mvc/Controllers/SearchPageController.cs +++ b/templates/Alloy.Mvc/Controllers/SearchPageController.cs @@ -1,9 +1,9 @@ using System.Linq; -using Alloy.Mvc.Models.Pages; -using Alloy.Mvc.Models.ViewModels; +using Alloy._1.Models.Pages; +using Alloy._1.Models.ViewModels; using Microsoft.AspNetCore.Mvc; -namespace Alloy.Mvc.Controllers +namespace Alloy._1.Controllers { public class SearchPageController : PageControllerBase { diff --git a/templates/Alloy.Mvc/Controllers/StartPageController.cs b/templates/Alloy.Mvc/Controllers/StartPageController.cs index e734620..de32760 100644 --- a/templates/Alloy.Mvc/Controllers/StartPageController.cs +++ b/templates/Alloy.Mvc/Controllers/StartPageController.cs @@ -1,10 +1,10 @@ -using Alloy.Mvc.Models.Pages; -using Alloy.Mvc.Models.ViewModels; +using Alloy._1.Models.Pages; +using Alloy._1.Models.ViewModels; using EPiServer.Web; using EPiServer.Web.Mvc; using Microsoft.AspNetCore.Mvc; -namespace Alloy.Mvc.Controllers +namespace Alloy._1.Controllers { public class StartPageController : PageControllerBase { diff --git a/templates/Alloy.Mvc/Docker/create-db.sh b/templates/Alloy.Mvc/Docker/create-db.sh index 3203ede..c3f11cc 100644 --- a/templates/Alloy.Mvc/Docker/create-db.sh +++ b/templates/Alloy.Mvc/Docker/create-db.sh @@ -1,6 +1,6 @@ #!/bin/bash -for i in {1..50}; do +for i in {1..100}; do /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P "$SA_PASSWORD" -Q "IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = '${DB_NAME}') CREATE DATABASE ${DB_NAME} ON (NAME=${DB_NAME}_data, FILENAME='/var/opt/mssql/host_data/${DB_NAME}.mdf') LOG ON (NAME=${DB_NAME}_log, FILENAME='/var/opt/mssql/host_data/${DB_NAME}.ldf')" if [ $? -eq 0 ]; then echo "Creating database completed" diff --git a/templates/Alloy.Mvc/Docker/web.dockerfile b/templates/Alloy.Mvc/Docker/web.dockerfile index f9ff868..db21fea 100644 --- a/templates/Alloy.Mvc/Docker/web.dockerfile +++ b/templates/Alloy.Mvc/Docker/web.dockerfile @@ -3,7 +3,7 @@ FROM mcr.microsoft.com/dotnet/sdk:5.0 WORKDIR /src #Restore NuGet packages so they are cached when we start the container -COPY ./Alloy.Mvc.csproj . +COPY ./Alloy.1.csproj . COPY ./Directory.Build.props . COPY ./nuget.config . diff --git a/templates/Alloy.Mvc/Extensions/ServiceCollectionExtensions.cs b/templates/Alloy.Mvc/Extensions/ServiceCollectionExtensions.cs index b60fffa..de21fe7 100644 --- a/templates/Alloy.Mvc/Extensions/ServiceCollectionExtensions.cs +++ b/templates/Alloy.Mvc/Extensions/ServiceCollectionExtensions.cs @@ -1,12 +1,12 @@ -using Alloy.Mvc.Business; -using Alloy.Mvc.Business.Channels; -using Alloy.Mvc.Business.Rendering; +using Alloy._1.Business; +using Alloy._1.Business.Channels; +using Alloy._1.Business.Rendering; using EPiServer.Web; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Razor; using Microsoft.Extensions.DependencyInjection; -namespace Alloy.Mvc.Extensions +namespace Alloy._1.Extensions { public static class ServiceCollectionExtensions { diff --git a/templates/Alloy.Mvc/Extensions/ViewContextExtension.cs b/templates/Alloy.Mvc/Extensions/ViewContextExtension.cs index 57c6440..d011d29 100644 --- a/templates/Alloy.Mvc/Extensions/ViewContextExtension.cs +++ b/templates/Alloy.Mvc/Extensions/ViewContextExtension.cs @@ -3,7 +3,7 @@ using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.Extensions.DependencyInjection; -namespace Alloy.Mvc.Helpers +namespace Alloy._1.Helpers { /// /// Extension methods on request Context such as et/Set Node, Lang, Controller diff --git a/templates/Alloy.Mvc/Globals.cs b/templates/Alloy.Mvc/Globals.cs index d2b5211..052dafc 100644 --- a/templates/Alloy.Mvc/Globals.cs +++ b/templates/Alloy.Mvc/Globals.cs @@ -1,7 +1,7 @@ using EPiServer.DataAnnotations; using System.ComponentModel.DataAnnotations; -namespace Alloy.Mvc +namespace Alloy._1 { public class Globals { diff --git a/templates/Alloy.Mvc/Helpers/CategorizableExtensions.cs b/templates/Alloy.Mvc/Helpers/CategorizableExtensions.cs index 048dd87..c8d2cac 100644 --- a/templates/Alloy.Mvc/Helpers/CategorizableExtensions.cs +++ b/templates/Alloy.Mvc/Helpers/CategorizableExtensions.cs @@ -5,7 +5,7 @@ using EPiServer.DataAbstraction; using EPiServer.ServiceLocation; -namespace Alloy.Mvc.Helpers +namespace Alloy._1.Helpers { /// /// Provides extension methods for categorizable content diff --git a/templates/Alloy.Mvc/Helpers/HtmlHelpers.cs b/templates/Alloy.Mvc/Helpers/HtmlHelpers.cs index 0f88507..c0be7f2 100644 --- a/templates/Alloy.Mvc/Helpers/HtmlHelpers.cs +++ b/templates/Alloy.Mvc/Helpers/HtmlHelpers.cs @@ -5,7 +5,7 @@ using System.Text; using System.Text.Encodings.Web; using System.Threading.Tasks; -using Alloy.Mvc.Business; +using Alloy._1.Business; using EPiServer; using EPiServer.Core; using EPiServer.ServiceLocation; @@ -15,7 +15,7 @@ using Microsoft.AspNetCore.Mvc.Razor; using Microsoft.AspNetCore.Mvc.Rendering; -namespace Alloy.Mvc.Helpers +namespace Alloy._1.Helpers { public static class HtmlHelpers { diff --git a/templates/Alloy.Mvc/Helpers/UrlHelpers.cs b/templates/Alloy.Mvc/Helpers/UrlHelpers.cs index 8922172..60d2db7 100644 --- a/templates/Alloy.Mvc/Helpers/UrlHelpers.cs +++ b/templates/Alloy.Mvc/Helpers/UrlHelpers.cs @@ -5,7 +5,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.DependencyInjection; -namespace Alloy.Mvc.Helpers +namespace Alloy._1.Helpers { public static class UrlHelpers { diff --git a/templates/Alloy.Mvc/Models/Blocks/ButtonBlock.cs b/templates/Alloy.Mvc/Models/Blocks/ButtonBlock.cs index ed950f4..e37b0a4 100644 --- a/templates/Alloy.Mvc/Models/Blocks/ButtonBlock.cs +++ b/templates/Alloy.Mvc/Models/Blocks/ButtonBlock.cs @@ -2,7 +2,7 @@ using EPiServer; using EPiServer.DataAbstraction; -namespace Alloy.Mvc.Models.Blocks +namespace Alloy._1.Models.Blocks { /// /// Used to insert a link which is styled as a button diff --git a/templates/Alloy.Mvc/Models/Blocks/ContactBlock.cs b/templates/Alloy.Mvc/Models/Blocks/ContactBlock.cs index 198c0d2..bbb3709 100644 --- a/templates/Alloy.Mvc/Models/Blocks/ContactBlock.cs +++ b/templates/Alloy.Mvc/Models/Blocks/ContactBlock.cs @@ -5,7 +5,7 @@ using EPiServer.DataAnnotations; using EPiServer.Web; -namespace Alloy.Mvc.Models.Blocks +namespace Alloy._1.Models.Blocks { /// /// Used to present contact information with a call-to-action link diff --git a/templates/Alloy.Mvc/Models/Blocks/EditorialBlock.cs b/templates/Alloy.Mvc/Models/Blocks/EditorialBlock.cs index a592f63..4c29e22 100644 --- a/templates/Alloy.Mvc/Models/Blocks/EditorialBlock.cs +++ b/templates/Alloy.Mvc/Models/Blocks/EditorialBlock.cs @@ -3,7 +3,7 @@ using EPiServer.DataAbstraction; using EPiServer.DataAnnotations; -namespace Alloy.Mvc.Models.Blocks +namespace Alloy._1.Models.Blocks { /// /// Used to insert editorial content edited using a rich-text editor diff --git a/templates/Alloy.Mvc/Models/Blocks/JumbotronBlock.cs b/templates/Alloy.Mvc/Models/Blocks/JumbotronBlock.cs index e2f4ea6..a8aee9d 100644 --- a/templates/Alloy.Mvc/Models/Blocks/JumbotronBlock.cs +++ b/templates/Alloy.Mvc/Models/Blocks/JumbotronBlock.cs @@ -5,7 +5,7 @@ using EPiServer.DataAnnotations; using EPiServer.Web; -namespace Alloy.Mvc.Models.Blocks +namespace Alloy._1.Models.Blocks { /// /// Used for a primary message on a page, commonly used on start pages and landing pages diff --git a/templates/Alloy.Mvc/Models/Blocks/PageListBlock.cs b/templates/Alloy.Mvc/Models/Blocks/PageListBlock.cs index 8e36acd..98dea4f 100644 --- a/templates/Alloy.Mvc/Models/Blocks/PageListBlock.cs +++ b/templates/Alloy.Mvc/Models/Blocks/PageListBlock.cs @@ -5,7 +5,7 @@ using EPiServer.DataAnnotations; using EPiServer.Filters; -namespace Alloy.Mvc.Models.Blocks +namespace Alloy._1.Models.Blocks { /// /// Used to insert a list of pages, for example a news list diff --git a/templates/Alloy.Mvc/Models/Blocks/SiteBlockData.cs b/templates/Alloy.Mvc/Models/Blocks/SiteBlockData.cs index 20447b4..dabe50e 100644 --- a/templates/Alloy.Mvc/Models/Blocks/SiteBlockData.cs +++ b/templates/Alloy.Mvc/Models/Blocks/SiteBlockData.cs @@ -1,6 +1,6 @@ using EPiServer.Core; -namespace Alloy.Mvc.Models.Blocks +namespace Alloy._1.Models.Blocks { /// /// Base class for all block types on the site diff --git a/templates/Alloy.Mvc/Models/Blocks/SiteLogotypeBlock.cs b/templates/Alloy.Mvc/Models/Blocks/SiteLogotypeBlock.cs index faf6adb..be37e2f 100644 --- a/templates/Alloy.Mvc/Models/Blocks/SiteLogotypeBlock.cs +++ b/templates/Alloy.Mvc/Models/Blocks/SiteLogotypeBlock.cs @@ -5,7 +5,7 @@ using EPiServer.Shell.ObjectEditing; using EPiServer.Web; -namespace Alloy.Mvc.Models.Blocks +namespace Alloy._1.Models.Blocks { /// /// Used to provide a composite property on the start page to set site logotype settings diff --git a/templates/Alloy.Mvc/Models/Blocks/TeaserBlock.cs b/templates/Alloy.Mvc/Models/Blocks/TeaserBlock.cs index d60de4b..e061abb 100644 --- a/templates/Alloy.Mvc/Models/Blocks/TeaserBlock.cs +++ b/templates/Alloy.Mvc/Models/Blocks/TeaserBlock.cs @@ -4,7 +4,7 @@ using EPiServer.DataAnnotations; using EPiServer.Web; -namespace Alloy.Mvc.Models.Blocks +namespace Alloy._1.Models.Blocks { /// /// Used to provide a stylized entry point to a page on the site diff --git a/templates/Alloy.Mvc/Models/LoginViewModel.cs b/templates/Alloy.Mvc/Models/LoginViewModel.cs index 0c0e751..40f6c33 100644 --- a/templates/Alloy.Mvc/Models/LoginViewModel.cs +++ b/templates/Alloy.Mvc/Models/LoginViewModel.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations; -namespace Alloy.Mvc.Models +namespace Alloy._1.Models { public class LoginViewModel { diff --git a/templates/Alloy.Mvc/Models/Media/GenericMedia.cs b/templates/Alloy.Mvc/Models/Media/GenericMedia.cs index 166c712..62a8060 100644 --- a/templates/Alloy.Mvc/Models/Media/GenericMedia.cs +++ b/templates/Alloy.Mvc/Models/Media/GenericMedia.cs @@ -1,7 +1,7 @@ using EPiServer.Core; using EPiServer.DataAnnotations; -namespace Alloy.Mvc.Models.Media +namespace Alloy._1.Models.Media { [ContentType(GUID = "EE3BD195-7CB0-4756-AB5F-E5E223CD9820")] public class GenericMedia : MediaData diff --git a/templates/Alloy.Mvc/Models/Media/ImageFile.cs b/templates/Alloy.Mvc/Models/Media/ImageFile.cs index 97e8461..ee6ee00 100644 --- a/templates/Alloy.Mvc/Models/Media/ImageFile.cs +++ b/templates/Alloy.Mvc/Models/Media/ImageFile.cs @@ -2,7 +2,7 @@ using EPiServer.DataAnnotations; using EPiServer.Framework.DataAnnotations; -namespace Alloy.Mvc.Models.Media +namespace Alloy._1.Models.Media { [ContentType(GUID = "0A89E464-56D4-449F-AEA8-2BF774AB8730")] [MediaDescriptor(ExtensionString = "jpg,jpeg,jpe,ico,gif,bmp,png")] diff --git a/templates/Alloy.Mvc/Models/Media/VectorImageFile.cs b/templates/Alloy.Mvc/Models/Media/VectorImageFile.cs index 7f0eed6..977c5da 100644 --- a/templates/Alloy.Mvc/Models/Media/VectorImageFile.cs +++ b/templates/Alloy.Mvc/Models/Media/VectorImageFile.cs @@ -3,7 +3,7 @@ using EPiServer.Framework.Blobs; using EPiServer.Framework.DataAnnotations; -namespace Alloy.Mvc.Models.Media +namespace Alloy._1.Models.Media { [ContentType(GUID = "F522B459-EB27-462C-B216-989FC7FF9448")] [MediaDescriptor(ExtensionString = "svg")] diff --git a/templates/Alloy.Mvc/Models/Media/VideoFile.cs b/templates/Alloy.Mvc/Models/Media/VideoFile.cs index 8f84929..8a7f23f 100644 --- a/templates/Alloy.Mvc/Models/Media/VideoFile.cs +++ b/templates/Alloy.Mvc/Models/Media/VideoFile.cs @@ -4,7 +4,7 @@ using EPiServer.Framework.DataAnnotations; using EPiServer.Web; -namespace Alloy.Mvc.Models.Media +namespace Alloy._1.Models.Media { [ContentType(GUID = "85468104-E06F-47E5-A317-FC9B83D3CBA6")] [MediaDescriptor(ExtensionString = "flv,mp4,webm")] diff --git a/templates/Alloy.Mvc/Models/Pages/AllPropertiesTestPage.cs b/templates/Alloy.Mvc/Models/Pages/AllPropertiesTestPage.cs index f48067e..f3ac9cc 100644 --- a/templates/Alloy.Mvc/Models/Pages/AllPropertiesTestPage.cs +++ b/templates/Alloy.Mvc/Models/Pages/AllPropertiesTestPage.cs @@ -14,7 +14,7 @@ using EPiServer.SpecializedProperties; using EPiServer.Web; -namespace Alloy.Mvc.Models.Pages +namespace Alloy._1.Models.Pages { [ContentType( GUID = "A7D46007-43E5-4401-9204-127040E79E09", diff --git a/templates/Alloy.Mvc/Models/Pages/ArticlePage.cs b/templates/Alloy.Mvc/Models/Pages/ArticlePage.cs index b28ee4c..40a7d9d 100644 --- a/templates/Alloy.Mvc/Models/Pages/ArticlePage.cs +++ b/templates/Alloy.Mvc/Models/Pages/ArticlePage.cs @@ -1,6 +1,6 @@ using EPiServer.DataAbstraction; -namespace Alloy.Mvc.Models.Pages +namespace Alloy._1.Models.Pages { /// /// Used primarily for publishing news articles on the website diff --git a/templates/Alloy.Mvc/Models/Pages/ContactPage.cs b/templates/Alloy.Mvc/Models/Pages/ContactPage.cs index 0876764..257c296 100644 --- a/templates/Alloy.Mvc/Models/Pages/ContactPage.cs +++ b/templates/Alloy.Mvc/Models/Pages/ContactPage.cs @@ -1,9 +1,9 @@ using System.ComponentModel.DataAnnotations; -using Alloy.Mvc.Business.Rendering; +using Alloy._1.Business.Rendering; using EPiServer.Core; using EPiServer.Web; -namespace Alloy.Mvc.Models.Pages +namespace Alloy._1.Models.Pages { /// /// Represents contact details for a contact person diff --git a/templates/Alloy.Mvc/Models/Pages/ContainerPage.cs b/templates/Alloy.Mvc/Models/Pages/ContainerPage.cs index 7006e08..6e65696 100644 --- a/templates/Alloy.Mvc/Models/Pages/ContainerPage.cs +++ b/templates/Alloy.Mvc/Models/Pages/ContainerPage.cs @@ -1,6 +1,6 @@ -using Alloy.Mvc.Business.Rendering; +using Alloy._1.Business.Rendering; -namespace Alloy.Mvc.Models.Pages +namespace Alloy._1.Models.Pages { /// /// Used to logically group pages in the page tree diff --git a/templates/Alloy.Mvc/Models/Pages/IHasRelatedContent.cs b/templates/Alloy.Mvc/Models/Pages/IHasRelatedContent.cs index 861ac43..1e6fa35 100644 --- a/templates/Alloy.Mvc/Models/Pages/IHasRelatedContent.cs +++ b/templates/Alloy.Mvc/Models/Pages/IHasRelatedContent.cs @@ -1,6 +1,6 @@ using EPiServer.Core; -namespace Alloy.Mvc.Models.Pages +namespace Alloy._1.Models.Pages { public interface IHasRelatedContent { diff --git a/templates/Alloy.Mvc/Models/Pages/ISearchPage.cs b/templates/Alloy.Mvc/Models/Pages/ISearchPage.cs index 5f98f02..cd3ec44 100644 --- a/templates/Alloy.Mvc/Models/Pages/ISearchPage.cs +++ b/templates/Alloy.Mvc/Models/Pages/ISearchPage.cs @@ -1,4 +1,4 @@ -namespace Alloy.Mvc.Models.Pages +namespace Alloy._1.Models.Pages { /// /// Marker interface for search implementation diff --git a/templates/Alloy.Mvc/Models/Pages/LandingPage.cs b/templates/Alloy.Mvc/Models/Pages/LandingPage.cs index 46035d1..25bce9f 100644 --- a/templates/Alloy.Mvc/Models/Pages/LandingPage.cs +++ b/templates/Alloy.Mvc/Models/Pages/LandingPage.cs @@ -3,7 +3,7 @@ using EPiServer.DataAbstraction; using EPiServer.DataAnnotations; -namespace Alloy.Mvc.Models.Pages +namespace Alloy._1.Models.Pages { /// /// Used for campaign or landing pages, commonly used for pages linked in online advertising such as AdWords diff --git a/templates/Alloy.Mvc/Models/Pages/NewsPage.cs b/templates/Alloy.Mvc/Models/Pages/NewsPage.cs index 71f8e86..7c4797e 100644 --- a/templates/Alloy.Mvc/Models/Pages/NewsPage.cs +++ b/templates/Alloy.Mvc/Models/Pages/NewsPage.cs @@ -1,12 +1,12 @@ using System.ComponentModel.DataAnnotations; -using Alloy.Mvc.Business; -using Alloy.Mvc.Models.Blocks; +using Alloy._1.Business; +using Alloy._1.Models.Blocks; using EPiServer.DataAbstraction; using EPiServer.Filters; using EPiServer.Framework.Localization; using EPiServer.ServiceLocation; -namespace Alloy.Mvc.Models.Pages +namespace Alloy._1.Models.Pages { /// /// Presents a news section including a list of the most recent articles on the site diff --git a/templates/Alloy.Mvc/Models/Pages/ProductPage.cs b/templates/Alloy.Mvc/Models/Pages/ProductPage.cs index c4670ea..3ac9ecb 100644 --- a/templates/Alloy.Mvc/Models/Pages/ProductPage.cs +++ b/templates/Alloy.Mvc/Models/Pages/ProductPage.cs @@ -1,11 +1,11 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; -using Alloy.Mvc.Models.Blocks; +using Alloy._1.Models.Blocks; using EPiServer.Core; using EPiServer.DataAbstraction; using EPiServer.DataAnnotations; -namespace Alloy.Mvc.Models.Pages +namespace Alloy._1.Models.Pages { /// /// Used to present a single product diff --git a/templates/Alloy.Mvc/Models/Pages/SearchPage.cs b/templates/Alloy.Mvc/Models/Pages/SearchPage.cs index 183738d..51899b0 100644 --- a/templates/Alloy.Mvc/Models/Pages/SearchPage.cs +++ b/templates/Alloy.Mvc/Models/Pages/SearchPage.cs @@ -1,10 +1,10 @@ using System.ComponentModel.DataAnnotations; -using Alloy.Mvc.Models.Blocks; +using Alloy._1.Models.Blocks; using EPiServer.Core; using EPiServer.DataAbstraction; using EPiServer.DataAnnotations; -namespace Alloy.Mvc.Models.Pages +namespace Alloy._1.Models.Pages { /// /// Used to provide on-site search diff --git a/templates/Alloy.Mvc/Models/Pages/SitePageData.cs b/templates/Alloy.Mvc/Models/Pages/SitePageData.cs index fd04eb2..2d1dc1e 100644 --- a/templates/Alloy.Mvc/Models/Pages/SitePageData.cs +++ b/templates/Alloy.Mvc/Models/Pages/SitePageData.cs @@ -1,13 +1,13 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; -using Alloy.Mvc.Business.Rendering; +using Alloy._1.Business.Rendering; using EPiServer.Core; using EPiServer.DataAbstraction; using EPiServer.DataAnnotations; using EPiServer.SpecializedProperties; using EPiServer.Web; -namespace Alloy.Mvc.Models.Pages +namespace Alloy._1.Models.Pages { /// /// Base class for all page types diff --git a/templates/Alloy.Mvc/Models/Pages/StandardPage.cs b/templates/Alloy.Mvc/Models/Pages/StandardPage.cs index 38d33c6..cac5b68 100644 --- a/templates/Alloy.Mvc/Models/Pages/StandardPage.cs +++ b/templates/Alloy.Mvc/Models/Pages/StandardPage.cs @@ -3,7 +3,7 @@ using EPiServer.DataAbstraction; using EPiServer.DataAnnotations; -namespace Alloy.Mvc.Models.Pages +namespace Alloy._1.Models.Pages { /// /// Used for the pages mainly consisting of manually created content such as text, images, and blocks diff --git a/templates/Alloy.Mvc/Models/Pages/StartPage.cs b/templates/Alloy.Mvc/Models/Pages/StartPage.cs index 75969bd..f56b8bf 100644 --- a/templates/Alloy.Mvc/Models/Pages/StartPage.cs +++ b/templates/Alloy.Mvc/Models/Pages/StartPage.cs @@ -1,11 +1,11 @@ using System.ComponentModel.DataAnnotations; -using Alloy.Mvc.Models.Blocks; +using Alloy._1.Models.Blocks; using EPiServer.Core; using EPiServer.DataAbstraction; using EPiServer.DataAnnotations; using EPiServer.SpecializedProperties; -namespace Alloy.Mvc.Models.Pages +namespace Alloy._1.Models.Pages { /// /// Used for the site's start page and also acts as a container for site settings diff --git a/templates/Alloy.Mvc/Models/SiteContentType.cs b/templates/Alloy.Mvc/Models/SiteContentType.cs index b94a025..d6e9a75 100644 --- a/templates/Alloy.Mvc/Models/SiteContentType.cs +++ b/templates/Alloy.Mvc/Models/SiteContentType.cs @@ -1,6 +1,6 @@ using EPiServer.DataAnnotations; -namespace Alloy.Mvc.Models +namespace Alloy._1.Models { /// /// Attribute used for site content types to set default attribute values diff --git a/templates/Alloy.Mvc/Models/SiteImageUrl.cs b/templates/Alloy.Mvc/Models/SiteImageUrl.cs index 153387c..5090bfb 100644 --- a/templates/Alloy.Mvc/Models/SiteImageUrl.cs +++ b/templates/Alloy.Mvc/Models/SiteImageUrl.cs @@ -1,6 +1,6 @@ using EPiServer.DataAnnotations; -namespace Alloy.Mvc.Models +namespace Alloy._1.Models { /// /// Attribute to set the default thumbnail for site page and block types diff --git a/templates/Alloy.Mvc/Models/ViewModels/ContactBlockModel.cs b/templates/Alloy.Mvc/Models/ViewModels/ContactBlockModel.cs index d1f96cb..ebcf326 100644 --- a/templates/Alloy.Mvc/Models/ViewModels/ContactBlockModel.cs +++ b/templates/Alloy.Mvc/Models/ViewModels/ContactBlockModel.cs @@ -1,10 +1,10 @@ using System.ComponentModel.DataAnnotations; -using Alloy.Mvc.Models.Pages; +using Alloy._1.Models.Pages; using EPiServer.Core; using EPiServer.Web; using Microsoft.AspNetCore.Html; -namespace Alloy.Mvc.Models.ViewModels +namespace Alloy._1.Models.ViewModels { public class ContactBlockModel { diff --git a/templates/Alloy.Mvc/Models/ViewModels/ContentRenderingErrorModel.cs b/templates/Alloy.Mvc/Models/ViewModels/ContentRenderingErrorModel.cs index c6e92e6..87de5a2 100644 --- a/templates/Alloy.Mvc/Models/ViewModels/ContentRenderingErrorModel.cs +++ b/templates/Alloy.Mvc/Models/ViewModels/ContentRenderingErrorModel.cs @@ -2,7 +2,7 @@ using EPiServer; using EPiServer.Core; -namespace Alloy.Mvc.Models.ViewModels +namespace Alloy._1.Models.ViewModels { public class ContentRenderingErrorModel { diff --git a/templates/Alloy.Mvc/Models/ViewModels/IPageViewModel.cs b/templates/Alloy.Mvc/Models/ViewModels/IPageViewModel.cs index 7ab233f..a851c2f 100644 --- a/templates/Alloy.Mvc/Models/ViewModels/IPageViewModel.cs +++ b/templates/Alloy.Mvc/Models/ViewModels/IPageViewModel.cs @@ -1,7 +1,7 @@ -using Alloy.Mvc.Models.Pages; +using Alloy._1.Models.Pages; using EPiServer.Core; -namespace Alloy.Mvc.Models.ViewModels +namespace Alloy._1.Models.ViewModels { /// /// Defines common characteristics for view models for pages, including properties used by layout files. diff --git a/templates/Alloy.Mvc/Models/ViewModels/ImageViewModel.cs b/templates/Alloy.Mvc/Models/ViewModels/ImageViewModel.cs index bdca57a..68be2e7 100644 --- a/templates/Alloy.Mvc/Models/ViewModels/ImageViewModel.cs +++ b/templates/Alloy.Mvc/Models/ViewModels/ImageViewModel.cs @@ -1,4 +1,4 @@ -namespace Alloy.Mvc.Models.ViewModels +namespace Alloy._1.Models.ViewModels { /// /// View model for the image file diff --git a/templates/Alloy.Mvc/Models/ViewModels/LayoutModel.cs b/templates/Alloy.Mvc/Models/ViewModels/LayoutModel.cs index 781f1bf..acf88b1 100644 --- a/templates/Alloy.Mvc/Models/ViewModels/LayoutModel.cs +++ b/templates/Alloy.Mvc/Models/ViewModels/LayoutModel.cs @@ -1,8 +1,8 @@ -using Alloy.Mvc.Models.Blocks; +using Alloy._1.Models.Blocks; using EPiServer.SpecializedProperties; using Microsoft.AspNetCore.Html; -namespace Alloy.Mvc.Models.ViewModels +namespace Alloy._1.Models.ViewModels { public class LayoutModel { diff --git a/templates/Alloy.Mvc/Models/ViewModels/PageListModel.cs b/templates/Alloy.Mvc/Models/ViewModels/PageListModel.cs index e67c83a..de02fad 100644 --- a/templates/Alloy.Mvc/Models/ViewModels/PageListModel.cs +++ b/templates/Alloy.Mvc/Models/ViewModels/PageListModel.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; -using Alloy.Mvc.Models.Blocks; +using Alloy._1.Models.Blocks; using EPiServer.Core; -namespace Alloy.Mvc.Models.ViewModels +namespace Alloy._1.Models.ViewModels { public class PageListModel { diff --git a/templates/Alloy.Mvc/Models/ViewModels/PageViewModel.cs b/templates/Alloy.Mvc/Models/ViewModels/PageViewModel.cs index 16a1cf9..24a27d1 100644 --- a/templates/Alloy.Mvc/Models/ViewModels/PageViewModel.cs +++ b/templates/Alloy.Mvc/Models/ViewModels/PageViewModel.cs @@ -1,7 +1,7 @@ -using Alloy.Mvc.Models.Pages; +using Alloy._1.Models.Pages; using EPiServer.Core; -namespace Alloy.Mvc.Models.ViewModels +namespace Alloy._1.Models.ViewModels { public class PageViewModel : IPageViewModel where T : SitePageData { diff --git a/templates/Alloy.Mvc/Models/ViewModels/PreviewModel.cs b/templates/Alloy.Mvc/Models/ViewModels/PreviewModel.cs index 4d5d19f..ba876a8 100644 --- a/templates/Alloy.Mvc/Models/ViewModels/PreviewModel.cs +++ b/templates/Alloy.Mvc/Models/ViewModels/PreviewModel.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; -using Alloy.Mvc.Models.Pages; +using Alloy._1.Models.Pages; using EPiServer.Core; -namespace Alloy.Mvc.Models.ViewModels +namespace Alloy._1.Models.ViewModels { public class PreviewModel : PageViewModel { diff --git a/templates/Alloy.Mvc/Models/ViewModels/SearchContentModel.cs b/templates/Alloy.Mvc/Models/ViewModels/SearchContentModel.cs index fbb547c..bc16bf2 100644 --- a/templates/Alloy.Mvc/Models/ViewModels/SearchContentModel.cs +++ b/templates/Alloy.Mvc/Models/ViewModels/SearchContentModel.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; -using Alloy.Mvc.Models.Pages; +using Alloy._1.Models.Pages; -namespace Alloy.Mvc.Models.ViewModels +namespace Alloy._1.Models.ViewModels { public class SearchContentModel : PageViewModel { diff --git a/templates/Alloy.Mvc/Models/ViewModels/VideoViewModel.cs b/templates/Alloy.Mvc/Models/ViewModels/VideoViewModel.cs index add0626..95f638d 100644 --- a/templates/Alloy.Mvc/Models/ViewModels/VideoViewModel.cs +++ b/templates/Alloy.Mvc/Models/ViewModels/VideoViewModel.cs @@ -1,4 +1,4 @@ -namespace Alloy.Mvc.Models.ViewModels +namespace Alloy._1.Models.ViewModels { /// /// View model for the video file @@ -13,6 +13,6 @@ public class VideoViewModel /// /// Gets or sets the URL to a preview image for the video. /// - public string? PreviewImageUrl { get; set; } + public string PreviewImageUrl { get; set; } } } diff --git a/templates/Alloy.Mvc/Program.cs b/templates/Alloy.Mvc/Program.cs index 9b0d1d8..3faca92 100644 --- a/templates/Alloy.Mvc/Program.cs +++ b/templates/Alloy.Mvc/Program.cs @@ -1,7 +1,7 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; -namespace Alloy.Mvc +namespace Alloy._1 { public class Program { diff --git a/templates/Alloy.Mvc/Properties/launchSettings.json b/templates/Alloy.Mvc/Properties/launchSettings.json index 604e240..fc29bf3 100644 --- a/templates/Alloy.Mvc/Properties/launchSettings.json +++ b/templates/Alloy.Mvc/Properties/launchSettings.json @@ -1,6 +1,6 @@ { "profiles": { - "Alloy.Mvc": { + "Alloy.1": { "commandName": "Project", "launchBrowser": true, "applicationUrl": "https://localhost:5000/", diff --git a/templates/Alloy.Mvc/Startup.cs b/templates/Alloy.Mvc/Startup.cs index de09d43..d11ed48 100644 --- a/templates/Alloy.Mvc/Startup.cs +++ b/templates/Alloy.Mvc/Startup.cs @@ -1,6 +1,6 @@ using System; using System.IO; -using Alloy.Mvc.Extensions; +using Alloy._1.Extensions; using EPiServer.Cms.Shell; using EPiServer.Cms.UI.AspNetIdentity; using EPiServer.Scheduler; @@ -11,7 +11,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; -namespace Alloy.Mvc +namespace Alloy._1 { public class Startup { diff --git a/templates/Alloy.Mvc/Views/StartPage/Index.cshtml b/templates/Alloy.Mvc/Views/StartPage/Index.cshtml index 9f76c7e..2fc598e 100644 --- a/templates/Alloy.Mvc/Views/StartPage/Index.cshtml +++ b/templates/Alloy.Mvc/Views/StartPage/Index.cshtml @@ -1,4 +1,4 @@ -@model PageViewModel +@model PageViewModel
@Html.PropertyFor(x => x.CurrentPage.MainContentArea, new { CssClass = "row" }) diff --git a/templates/Alloy.Mvc/Views/_ViewImports.cshtml b/templates/Alloy.Mvc/Views/_ViewImports.cshtml index 058e366..ce7257f 100644 --- a/templates/Alloy.Mvc/Views/_ViewImports.cshtml +++ b/templates/Alloy.Mvc/Views/_ViewImports.cshtml @@ -1,10 +1,10 @@ -@using Alloy.Mvc -@using Alloy.Mvc.Extensions -@using Alloy.Mvc.Helpers -@using Alloy.Mvc.Models.Blocks -@using Alloy.Mvc.Models.Media -@using Alloy.Mvc.Models.Pages -@using Alloy.Mvc.Models.ViewModels +@using Alloy._1 +@using Alloy._1.Extensions +@using Alloy._1.Helpers +@using Alloy._1.Models.Blocks +@using Alloy._1.Models.Media +@using Alloy._1.Models.Pages +@using Alloy._1.Models.ViewModels @using EPiServer.Framework.Localization @using EPiServer.Web.Mvc.Html @using EPiServer.Shell.Web.Mvc.Html diff --git a/templates/Alloy.Mvc/appsettings.Development.json b/templates/Alloy.Mvc/appsettings.Development.json index 7cdf464..2bb4e04 100644 --- a/templates/Alloy.Mvc/appsettings.Development.json +++ b/templates/Alloy.Mvc/appsettings.Development.json @@ -8,7 +8,7 @@ } }, "ConnectionStrings": { - "EPiServerDB": "Data Source=(LocalDb)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\Alloy.Mvc.mdf;Initial Catalog=Alloy.Mvc;Integrated Security=True;Connect Timeout=30" + "EPiServerDB": "Data Source=(LocalDb)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\Alloy.1.mdf;Initial Catalog=Alloy.1;Integrated Security=True;Connect Timeout=30" }, "EPiServer": { "Cms": { diff --git a/templates/Alloy.Mvc/docker-compose.yml b/templates/Alloy.Mvc/docker-compose.yml index 5993eca..ac71b2e 100644 --- a/templates/Alloy.Mvc/docker-compose.yml +++ b/templates/Alloy.Mvc/docker-compose.yml @@ -12,7 +12,7 @@ services: - 6000:1433 volumes: - ./App_Data:/var/opt/mssql/host_data - image: Alloy.Mvc/db + image: Alloy.1/db web: depends_on: - db @@ -27,4 +27,5 @@ services: - 5000:80 volumes: - .:/src - image: Alloy.Mvc/web + image: Alloy.1/web + restart: on-failure diff --git a/templates/Alloy.Mvc/nuget.config b/templates/Alloy.Mvc/nuget.config index 287e902..79187e1 100644 --- a/templates/Alloy.Mvc/nuget.config +++ b/templates/Alloy.Mvc/nuget.config @@ -3,6 +3,6 @@ - + diff --git a/templates/Cms.Empty/.template.config/dotnetcli.host.json b/templates/Cms.Empty/.template.config/dotnetcli.host.json index 4718119..a53ef73 100644 --- a/templates/Cms.Empty/.template.config/dotnetcli.host.json +++ b/templates/Cms.Empty/.template.config/dotnetcli.host.json @@ -1,6 +1,6 @@ { "symbolInfo": { - "enablelDocker": { + "enableDocker": { "longName": "enable-docker", "shortName": "" }, diff --git a/templates/Cms.Empty/.template.config/template.json b/templates/Cms.Empty/.template.config/template.json index 4dcb28a..95acb3a 100644 --- a/templates/Cms.Empty/.template.config/template.json +++ b/templates/Cms.Empty/.template.config/template.json @@ -1,7 +1,7 @@ { "$schema": "http://json.schemastore.org/template", "author": "Episerver AB", - "sourceName": "Cms.Empty", + "sourceName": "Cms.1", "classifications": [ "Web" ], "identity": "EPiServer.Templates.Cms.Empty", "name": "Optimizely CMS empty", @@ -15,7 +15,7 @@ { "modifiers": [ { - "condition": "(!enablelDocker)", + "condition": "(!enableDocker)", "exclude": [ "Directory.Build.props", "docker-compose.yml", @@ -26,7 +26,7 @@ } ], "symbols": { - "enablelDocker": { + "enableDocker": { "type": "parameter", "datatype": "bool", "defaultValue": "false", diff --git a/templates/Cms.Empty/App_Data/Cms.Empty.mdf b/templates/Cms.Empty/App_Data/Cms.1.mdf similarity index 100% rename from templates/Cms.Empty/App_Data/Cms.Empty.mdf rename to templates/Cms.Empty/App_Data/Cms.1.mdf diff --git a/templates/Cms.Empty/Cms.Empty.csproj b/templates/Cms.Empty/Cms.1.csproj similarity index 82% rename from templates/Cms.Empty/Cms.Empty.csproj rename to templates/Cms.Empty/Cms.1.csproj index fb5c064..d555722 100644 --- a/templates/Cms.Empty/Cms.Empty.csproj +++ b/templates/Cms.Empty/Cms.1.csproj @@ -5,7 +5,7 @@ - + diff --git a/templates/Cms.Empty/Docker/create-db.sh b/templates/Cms.Empty/Docker/create-db.sh index 3203ede..c3f11cc 100644 --- a/templates/Cms.Empty/Docker/create-db.sh +++ b/templates/Cms.Empty/Docker/create-db.sh @@ -1,6 +1,6 @@ #!/bin/bash -for i in {1..50}; do +for i in {1..100}; do /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P "$SA_PASSWORD" -Q "IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = '${DB_NAME}') CREATE DATABASE ${DB_NAME} ON (NAME=${DB_NAME}_data, FILENAME='/var/opt/mssql/host_data/${DB_NAME}.mdf') LOG ON (NAME=${DB_NAME}_log, FILENAME='/var/opt/mssql/host_data/${DB_NAME}.ldf')" if [ $? -eq 0 ]; then echo "Creating database completed" diff --git a/templates/Cms.Empty/Docker/web.dockerfile b/templates/Cms.Empty/Docker/web.dockerfile index d074dd4..93d22dd 100644 --- a/templates/Cms.Empty/Docker/web.dockerfile +++ b/templates/Cms.Empty/Docker/web.dockerfile @@ -3,7 +3,7 @@ FROM mcr.microsoft.com/dotnet/sdk:5.0 WORKDIR /src #Restore NuGet packages so they are cached when we start the container -COPY ./Cms.Empty.csproj . +COPY ./Cms.1.csproj . COPY ./Directory.Build.props . COPY ./nuget.config . diff --git a/templates/Cms.Empty/Program.cs b/templates/Cms.Empty/Program.cs index 2592335..94eb307 100644 --- a/templates/Cms.Empty/Program.cs +++ b/templates/Cms.Empty/Program.cs @@ -1,7 +1,7 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; -namespace Cms.Empty +namespace Cms._1 { public class Program { diff --git a/templates/Cms.Empty/Properties/launchSettings.json b/templates/Cms.Empty/Properties/launchSettings.json index 1ba0f09..781e357 100644 --- a/templates/Cms.Empty/Properties/launchSettings.json +++ b/templates/Cms.Empty/Properties/launchSettings.json @@ -1,6 +1,6 @@ { "profiles": { - "Cms.Empty": { + "Cms.1": { "commandName": "Project", "launchBrowser": true, "applicationUrl": "https://localhost:5000/", diff --git a/templates/Cms.Empty/Startup.cs b/templates/Cms.Empty/Startup.cs index 10730d0..3c5bbd3 100644 --- a/templates/Cms.Empty/Startup.cs +++ b/templates/Cms.Empty/Startup.cs @@ -10,7 +10,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; -namespace Cms.Empty +namespace Cms._1 { public class Startup { diff --git a/templates/Cms.Empty/appsettings.Development.json b/templates/Cms.Empty/appsettings.Development.json index bbd2504..684b8a3 100644 --- a/templates/Cms.Empty/appsettings.Development.json +++ b/templates/Cms.Empty/appsettings.Development.json @@ -8,7 +8,7 @@ } }, "ConnectionStrings": { - "EPiServerDB": "Data Source=(LocalDb)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\Cms.Empty.mdf;Initial Catalog=Cms.Empty;Integrated Security=True;Connect Timeout=30" + "EPiServerDB": "Data Source=(LocalDb)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\Cms.1.mdf;Initial Catalog=Cms.1;Integrated Security=True;Connect Timeout=30" }, "EPiServer": { "Cms": { diff --git a/templates/Cms.Empty/docker-compose.yml b/templates/Cms.Empty/docker-compose.yml index e51d542..85ba85a 100644 --- a/templates/Cms.Empty/docker-compose.yml +++ b/templates/Cms.Empty/docker-compose.yml @@ -12,7 +12,7 @@ services: - 6000:1433 volumes: - ./App_Data:/var/opt/mssql/host_data - image: Cms.Empty/db + image: Cms.1/db web: depends_on: - db @@ -27,4 +27,5 @@ services: - 5000:80 volumes: - .:/src - image: Cms.Empty/web + image: Cms.1/web + restart: on-failure diff --git a/templates/Cms.Empty/nuget.config b/templates/Cms.Empty/nuget.config index 287e902..79187e1 100644 --- a/templates/Cms.Empty/nuget.config +++ b/templates/Cms.Empty/nuget.config @@ -3,6 +3,6 @@ - + diff --git a/templates/Cms.Item/Cms.Item.csproj b/templates/Cms.Item/Cms.Item.csproj new file mode 100644 index 0000000..3b8b0f3 --- /dev/null +++ b/templates/Cms.Item/Cms.Item.csproj @@ -0,0 +1,12 @@ + + + net5.0 + MyApp.Namespace + warnings + + + + + + + diff --git a/templates/Cms.Item/ContentComponent/.template.config/Icon.png b/templates/Cms.Item/ContentComponent/.template.config/Icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2d4fe7eb3b56dd068a355984a8e7b0740a808f6b GIT binary patch literal 4483 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 + { + protected override IViewComponentResult InvokeComponent(MyBlockData currentContent) + { + return View(currentContent); + } + } +} diff --git a/templates/Cms.Item/ContentType/.template.config/Icon.png b/templates/Cms.Item/ContentType/.template.config/Icon.png new file mode 100644 index 0000000000000000000000000000000000000000..87b10e92f61e4806dbb92c98d9a1ae8f4af1ddad GIT binary patch literal 2285 zcma)72~<;O7XA}<5Cew+0fC^%BBE$PaRCx5h!`NLAd4bF5Gad645Dn|DI=6Ypt7m# z3|q942nDI^IwFk%DQgJG7QldlA+nl4(#M%I9XqEpo%hZ=cRBao^WXcv@4ra|Cp$%X zO?d!-qWvkGGXNl96#-JJNPADo>H5O2OkO%)liM=tD?2N?hbmCX+Ua`Mz+ zr%brLqpi$4q!!Rt3!v;j2!L#qz0Gl#8$@pA zhI1}m!SFQCo1<++g@cxEuid+cF~^em>av3 z3<_%G4DQ`O@~y%!t_&x4aIx9U-(c~xR=>tq%r(klBhQj&rVId9+vB1v^<;1hiUzX(FEo8JWy>)pT6~0)O78n?klzleT#?E=)InDDsSv801 z&o#VRF>4}oa>c8>M2sNV7HtYlgz*$_PK;-+R?6pqMSTn<=!$W<$WV=)5E4#jt6R-m zRh3m*e6`0+`W&DdxbcXoH_vnRFd3#oG82=V7MxK+x_s4K^l8H@elKuI9!@jlETuRn z=ZxNq9}^+5S!J^+wqchn5_=|ewJ|^H{TL?3y#HoPT{LlSe$=f8SwI{3I1@CV zYIT9vzO){m*Gw{o6Q&eZfm(2Hx#L5(&V1O#j}+$yA9__>S$LBC^hiJRm%PiVCt?#P z2oN9}kf-q35hE_S2qaNqTx9@DwDvTLS=NJ7WJI^QDwswVT1z#(qp?p|9**6 zzH<}qjI__=l_+Q8!ULJL-i`3$bqn1%3ES6}KfDQ3Bq3qubq zFQN4}gsJ78XPZPdLWGNeKkaGgEsbSoMah4E`Dab@3efk1XI3W+Qm^7|+oN>>1PDKr zb1M{Y0Rlb!@idcZxjzhvZK`%&=&3>j9Bt^(d<`0u65ewKQWd}n;ck7^F&HOUbtXIS z(~$>nY{|YjMw-2_2_XyoJ~6rC(?=wXV*Q9cBk{^0X#FqaZGo-x?JClEK)rUMawO@> z!Yumf4k~zJ5^nfYdmIdFinwk}qtWf>qma}bTj({CcHAH%iOlWNr^Mi+@qbr{t_aQh zTlTB$!KYX3`coZ;n6t!b?z%tNb;d-^_tK?Z{K>k?;k#?rVo`AkX<0P=x{=1U4W)r6 z>MS}Dzr1EX9J7kjPEn{6y9}_%aKPGgbPG2H#)xlBjAemkWV$g3j1V3<5M@dE#6_10 z!i&}#)i)`{6HN?vW5Uh56Ut}^LR~^af{$3V!Jz3q?sz%+G4^3|x^SQ*mlV9Axsaxr= z6XtFOE50kVs;u9hED7Ztva-_F)6?r_vF_baTVNc+q@YncM#D^VaftO5{k2cZo)Wqf zfmls=ko<3WD8*6@P&?C=e~h&Hab)nx#SjFB!b`fo<{f zpmu7Ck>Ph9KL#^~IcBBS62o(&?~;U>`e>T*<}My#WMAce$G7FMnq8{a?qPC7ZA3el zr<435WQVjtS9>j^yZVZ1b6Jx`)KIh!?tJJaSO3N&Bvx~Ba+0(%$9CBxxvi(FUT^EN zcIwPAt=sIc9W3iLK0kMIXo2#Zl>=~xx=7@I2>p{-SxK-%sn*zEUzcuz zq|;+6%i~1Tr-0I}qm~O&UY7!uX>E;A zqfhvOZa9E|06+p+u*su8R9yDLEQEyo55nbK#2-d{kxY{d5jyC)E=E44J1^r$*Q;lv#25kuEdq9(`=fm)q+1p_}^)3m{`}3?v_h zp~SXO{=EF_Rtiuh@K%3pDEvQ4_sz*XfojG=dCR`i|7&=gtzu7~eTIg3_hkO`5YW*& ypJI%OS~5{nlj`_S=zsBFzEFRgEZBUo*Mt_wIQK7{Ns}ztwC!!3Y-nG5-})6XG{Fe~ literal 0 HcmV?d00001 diff --git a/templates/Cms.Item/ContentType/.template.config/dotnetcli.host.json b/templates/Cms.Item/ContentType/.template.config/dotnetcli.host.json new file mode 100644 index 0000000..fa7366b --- /dev/null +++ b/templates/Cms.Item/ContentType/.template.config/dotnetcli.host.json @@ -0,0 +1,13 @@ +{ + "$schema": "http://json.schemastore.org/dotnetcli.host", + "symbolInfo": { + "namespace": { + "longName": "namespace", + "shortName": "na" + }, + "baseType": { + "longName": "basetype", + "shortName": "b" + } + } +} diff --git a/templates/Cms.Item/ContentType/.template.config/template.json b/templates/Cms.Item/ContentType/.template.config/template.json new file mode 100644 index 0000000..3e2a55c --- /dev/null +++ b/templates/Cms.Item/ContentType/.template.config/template.json @@ -0,0 +1,38 @@ +{ + "$schema": "http://json.schemastore.org/template", + "author": "Episerver AB", + "sourceName": "MyContentData", + "classifications": [ "Web" ], + "identity": "EPiServer.Templates.Cms.Item.ContentType", + "name": "Optimizely CMS Content Type Model", + "shortName": "epi-cms-contenttype", + "description": "Optimizely CMS Content Type model class", + "tags": { + "language": "C#", + "type": "item" + }, + "guids": [ + "CA56CED4-2CA9-4C5E-9EDE-2A5A6F1F06EF" + ], + "primaryOutputs": [ + { "path": "MyContentData.cs" } + ], + "symbols": { + "namespace": { + "type": "parameter", + "datatype": "string", + "defaultValue": "MyAppNamespace", + "displayName": "Namespace", + "description": "Namespace for the generated code.", + "replaces": "MyAppNamespace" + }, + "baseType": { + "type": "parameter", + "datatype": "string", + "defaultValue": "PageData", + "replaces": "PageData", + "displayName": "Base type", + "description": "The base type that the Content Type should inherit from. Can be PageData, BlockData or any other ContentData type." + } + } +} diff --git a/templates/Cms.Item/ContentType/MyContentData.cs b/templates/Cms.Item/ContentType/MyContentData.cs new file mode 100644 index 0000000..5440880 --- /dev/null +++ b/templates/Cms.Item/ContentType/MyContentData.cs @@ -0,0 +1,23 @@ +using System; +using System.ComponentModel.DataAnnotations; +using EPiServer.Core; +using EPiServer.DataAbstraction; +using EPiServer.DataAnnotations; + +namespace MyAppNamespace +{ + [ContentType( + DisplayName = "MyContentData", + GUID = "CA56CED4-2CA9-4C5E-9EDE-2A5A6F1F06EF", + Description = "")] + public class MyContentData : PageData + { + [CultureSpecific] + [Display( + Name = "MyProperty", + Description = "My property description", + GroupName = SystemTabNames.Content, + Order = 10)] + public virtual string MyProperty { get; set; } + } +} diff --git a/templates/Cms.Item/InitializationModule/.template.config/Icon.png b/templates/Cms.Item/InitializationModule/.template.config/Icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2d4fe7eb3b56dd068a355984a8e7b0740a808f6b GIT binary patch literal 4483 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 + { + public ActionResult Index(MyPageData currentPage) + { + // Implementation of action. You can create your own view model class that you pass to the view or + // you can pass the page type model directly for simpler templates + + return View(currentPage); + } + } +} diff --git a/templates/Cms.Item/Program.cs b/templates/Cms.Item/Program.cs new file mode 100644 index 0000000..3c97107 --- /dev/null +++ b/templates/Cms.Item/Program.cs @@ -0,0 +1,7 @@ +namespace MyAppNamespace +{ + public class Program + { + public static void Main() { } + } +} diff --git a/templates/Cms.Item/RazorPage/.template.config/Icon.png b/templates/Cms.Item/RazorPage/.template.config/Icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2d4fe7eb3b56dd068a355984a8e7b0740a808f6b GIT binary patch literal 4483 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 + @Html.PropertyFor(m => m.CurrentContent.MainBody) +
+*/} diff --git a/templates/Cms.Item/RazorPage/MyRazorPage.cshtml.cs b/templates/Cms.Item/RazorPage/MyRazorPage.cshtml.cs new file mode 100644 index 0000000..4d3ef88 --- /dev/null +++ b/templates/Cms.Item/RazorPage/MyRazorPage.cshtml.cs @@ -0,0 +1,13 @@ +using System; +using EPiServer.Core; +using EPiServer.Web.Mvc; + +namespace MyAppNamespace +{ + public class MyRazorPageModel : RazorPageModel + { + public void OnGet() + { + } + } +} diff --git a/templates/Cms.Item/ScheduledJob/.template.config/Icon.png b/templates/Cms.Item/ScheduledJob/.template.config/Icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2d4fe7eb3b56dd068a355984a8e7b0740a808f6b GIT binary patch literal 4483 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 + /// Called when a scheduled job executes + ///
+ /// A status message to be stored in the database log and visible from admin mode + public override string Execute() + { + //Call OnStatusChanged to periodically notify progress of job for manually started jobs + OnStatusChanged(String.Format("Starting execution of {0}", this.GetType())); + + //Add implementation + + //For long running jobs periodically check if stop is signaled and if so stop execution + if (_stopSignaled) + { + return "Stop of job was called"; + } + + return "Change to message that describes outcome of execution"; + } + + /// + /// Called when a user clicks on Stop for a manually started job, or when ASP.NET shuts down. + /// + public override void Stop() + { + _stopSignaled = true; + } + } +} diff --git a/templates/Commerce.Empty/.template.config/dotnetcli.host.json b/templates/Commerce.Empty/.template.config/dotnetcli.host.json index 4718119..a53ef73 100644 --- a/templates/Commerce.Empty/.template.config/dotnetcli.host.json +++ b/templates/Commerce.Empty/.template.config/dotnetcli.host.json @@ -1,6 +1,6 @@ { "symbolInfo": { - "enablelDocker": { + "enableDocker": { "longName": "enable-docker", "shortName": "" }, diff --git a/templates/Commerce.Empty/.template.config/template.json b/templates/Commerce.Empty/.template.config/template.json index 210d198..c24d0ff 100644 --- a/templates/Commerce.Empty/.template.config/template.json +++ b/templates/Commerce.Empty/.template.config/template.json @@ -1,7 +1,7 @@ { "$schema": "http://json.schemastore.org/template", "author": "Episerver AB", - "sourceName": "Commerce.Empty", + "sourceName": "Commerce.1", "classifications": [ "Web" ], "identity": "EPiServer.Templates.Commerce.Empty", "name": "Optimizely Commerce empty", @@ -15,7 +15,7 @@ { "modifiers": [ { - "condition": "(!enablelDocker)", + "condition": "(!enableDocker)", "exclude": [ "Directory.Build.props", "docker-compose.yml", @@ -26,7 +26,7 @@ } ], "symbols": { - "enablelDocker": { + "enableDocker": { "type": "parameter", "datatype": "bool", "defaultValue": "false", diff --git a/templates/Commerce.Empty/App_Data/Commerce.Empty.Commerce.mdf b/templates/Commerce.Empty/App_Data/Commerce.1.Commerce.mdf similarity index 100% rename from templates/Commerce.Empty/App_Data/Commerce.Empty.Commerce.mdf rename to templates/Commerce.Empty/App_Data/Commerce.1.Commerce.mdf diff --git a/templates/Commerce.Empty/App_Data/Commerce.Empty.mdf b/templates/Commerce.Empty/App_Data/Commerce.1.mdf similarity index 100% rename from templates/Commerce.Empty/App_Data/Commerce.Empty.mdf rename to templates/Commerce.Empty/App_Data/Commerce.1.mdf diff --git a/templates/Commerce.Empty/Commerce.Empty.csproj b/templates/Commerce.Empty/Commerce.1.csproj similarity index 87% rename from templates/Commerce.Empty/Commerce.Empty.csproj rename to templates/Commerce.Empty/Commerce.1.csproj index ec99935..44233b4 100644 --- a/templates/Commerce.Empty/Commerce.Empty.csproj +++ b/templates/Commerce.Empty/Commerce.1.csproj @@ -5,7 +5,7 @@ - + diff --git a/templates/Commerce.Empty/Docker/create-db.sh b/templates/Commerce.Empty/Docker/create-db.sh index 1f6a72a..689b775 100644 --- a/templates/Commerce.Empty/Docker/create-db.sh +++ b/templates/Commerce.Empty/Docker/create-db.sh @@ -1,6 +1,6 @@ #!/bin/bash -for i in {1..50}; do +for i in {1..100}; do /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P "$SA_PASSWORD" -Q "IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = '${DB_NAME}') CREATE DATABASE ${DB_NAME} ON (NAME=${DB_NAME}_data, FILENAME='/var/opt/mssql/host_data/${DB_NAME}.mdf') LOG ON (NAME=${DB_NAME}_log, FILENAME='/var/opt/mssql/host_data/${DB_NAME}.ldf')" /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P "$SA_PASSWORD" -Q "IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = '${DB_NAME_COMMERCE}') CREATE DATABASE ${DB_NAME_COMMERCE} ON (NAME=${DB_NAME_COMMERCE}_data, FILENAME='/var/opt/mssql/host_data/${DB_NAME_COMMERCE}.mdf') LOG ON (NAME=${DB_NAME_COMMERCE}_log, FILENAME='/var/opt/mssql/host_data/${DB_NAME_COMMERCE}.ldf')" if [ $? -eq 0 ]; then diff --git a/templates/Commerce.Empty/Docker/web.dockerfile b/templates/Commerce.Empty/Docker/web.dockerfile index 3fb9f47..0f7ac3e 100644 --- a/templates/Commerce.Empty/Docker/web.dockerfile +++ b/templates/Commerce.Empty/Docker/web.dockerfile @@ -3,7 +3,7 @@ FROM mcr.microsoft.com/dotnet/sdk:5.0 WORKDIR /src #Restore NuGet packages so they are cached when we start the container -COPY ./Commerce.Empty.csproj . +COPY ./Commerce.1.csproj . COPY ./Directory.Build.props . COPY ./nuget.config . diff --git a/templates/Commerce.Empty/Program.cs b/templates/Commerce.Empty/Program.cs index b127a16..d06cecd 100644 --- a/templates/Commerce.Empty/Program.cs +++ b/templates/Commerce.Empty/Program.cs @@ -1,7 +1,7 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; -namespace Commerce.Empty +namespace Commerce._1 { public class Program { diff --git a/templates/Commerce.Empty/Properties/launchSettings.json b/templates/Commerce.Empty/Properties/launchSettings.json index dc0cdfd..05599fb 100644 --- a/templates/Commerce.Empty/Properties/launchSettings.json +++ b/templates/Commerce.Empty/Properties/launchSettings.json @@ -1,6 +1,6 @@ { "profiles": { - "Commerce.Empty": { + "Commerce.1": { "commandName": "Project", "launchBrowser": true, "applicationUrl": "https://localhost:5000/", diff --git a/templates/Commerce.Empty/Startup.cs b/templates/Commerce.Empty/Startup.cs index c6af7a5..9c214f2 100644 --- a/templates/Commerce.Empty/Startup.cs +++ b/templates/Commerce.Empty/Startup.cs @@ -11,7 +11,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; -namespace Commerce.Empty +namespace Commerce._1 { public class Startup { diff --git a/templates/Commerce.Empty/appsettings.Development.json b/templates/Commerce.Empty/appsettings.Development.json index 7b1f572..1991df1 100644 --- a/templates/Commerce.Empty/appsettings.Development.json +++ b/templates/Commerce.Empty/appsettings.Development.json @@ -8,8 +8,8 @@ } }, "ConnectionStrings": { - "EcfSqlConnection": "Data Source=(LocalDb)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\Commerce.Empty.Commerce.mdf;Initial Catalog=Commerce.Empty.Commerce;Integrated Security=True;Connect Timeout=30", - "EPiServerDB": "Data Source=(LocalDb)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\Commerce.Empty.mdf;Initial Catalog=Commerce.Empty;Integrated Security=True;Connect Timeout=30" + "EcfSqlConnection": "Data Source=(LocalDb)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\Commerce.1.Commerce.mdf;Initial Catalog=Commerce.1.Commerce;Integrated Security=True;Connect Timeout=30", + "EPiServerDB": "Data Source=(LocalDb)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\Commerce.1.mdf;Initial Catalog=Commerce.1;Integrated Security=True;Connect Timeout=30" }, "EPiServer": { "Cms": { @@ -27,10 +27,13 @@ "CatalogManagers": { "MappedRoles": [ "WebAdmins" ] }, + "CustomerServiceRepresentatives": { + "MappedRoles": [ "WebAdmins" ] + }, "MarketingManagers": { "MappedRoles": [ "WebAdmins" ] }, - "CustomerServiceRepresentatives": { + "OrderManagers": { "MappedRoles": [ "WebAdmins" ] }, "ReportManagers": { diff --git a/templates/Commerce.Empty/docker-compose.yml b/templates/Commerce.Empty/docker-compose.yml index 4475447..40de906 100644 --- a/templates/Commerce.Empty/docker-compose.yml +++ b/templates/Commerce.Empty/docker-compose.yml @@ -13,7 +13,7 @@ services: - 6000:1433 volumes: - ./App_Data:/var/opt/mssql/host_data - image: Commerce.Empty/db + image: Commerce.1/db web: depends_on: - db @@ -29,4 +29,5 @@ services: - 5000:80 volumes: - .:/src - image: Commerce.Empty/web + image: Commerce.1/web + restart: on-failure diff --git a/templates/Commerce.Empty/nuget.config b/templates/Commerce.Empty/nuget.config index 287e902..79187e1 100644 --- a/templates/Commerce.Empty/nuget.config +++ b/templates/Commerce.Empty/nuget.config @@ -3,6 +3,6 @@ - + diff --git a/templates/EPiServer.Templates.csproj b/templates/EPiServer.Templates.csproj index d2de7b4..ef46ef2 100644 --- a/templates/EPiServer.Templates.csproj +++ b/templates/EPiServer.Templates.csproj @@ -15,8 +15,11 @@ EPiServer.Templates icon.png Template + Apache-2.0 $(PackageTags);dotnet-new;templates;Episerver;Optimizely https://github.com/episerver/content-templates + $(PackageProjectUrl).git + git Optimizely Digital Experience Platform Templates for the Optimizely Digital Experience Cloud Episerver AB @@ -26,6 +29,7 @@ + @@ -44,6 +48,6 @@ + Exclude="EPiServer.Templates.csproj;Cms.Item\*.*;**\bin\**;**\obj\**;**\modules\**;**\*.user" />