From d7b0c388793dd95f0873ef7d41d9a1bb9a98e8c7 Mon Sep 17 00:00:00 2001 From: CesarD Date: Wed, 2 Oct 2024 20:49:47 +0200 Subject: [PATCH 1/9] FEAT: Initial version of Integration Tests without template flags. --- .../Monaco.Template.Backend.Api.csproj | 16 +- .../Monaco.Template.Backend.Api/Program.cs | 23 +- ....Template.Backend.Application.Tests.csproj | 8 +- .../ServiceCollectionExtensions.cs | 3 +- ...Monaco.Template.Backend.Application.csproj | 4 +- ...late.Backend.Common.Api.Application.csproj | 2 +- .../Monaco.Template.Backend.Common.Api.csproj | 8 +- ....Template.Backend.Common.ApiGateway.csproj | 8 +- ...Template.Backend.Common.Application.csproj | 6 +- ...te.Backend.Common.BlobStorage.Tests.csproj | 10 +- ...Template.Backend.Common.BlobStorage.csproj | 2 +- ...emplate.Backend.Common.Domain.Tests.csproj | 10 +- .../Model/Page.cs | 31 +- ...plate.Backend.Common.Infrastructure.csproj | 10 +- ...onaco.Template.Backend.Common.Tests.csproj | 6 +- ...onaco.Template.Backend.Domain.Tests.csproj | 6 +- .../AccessTokenDto.cs | 14 + .../ApiRoutes.cs | 92 + .../ApiWebApplicationFactory.cs | 43 + .../AppFixture.cs | 56 + .../Auth.cs | 16 + .../GlobalUsings.cs | 1 + .../Keycloak/realm-export-template.json | 2391 +++++++++ .../Imports/Pictures/CSharp-Logo.png | Bin 0 -> 3769 bytes .../Imports/Pictures/MS_NET_Logo.png | Bin 0 -> 291461 bytes .../Imports/Pictures/NET_Core_Logo.png | Bin 0 -> 123528 bytes .../Imports/Pictures/NET_Logo.png | Bin 0 -> 13343 bytes .../Imports/Pictures/dotnet-bot-1.png | Bin 0 -> 22831 bytes .../Imports/Pictures/dotnet-bot-2.png | Bin 0 -> 253552 bytes .../IntegrationTest.cs | 95 + .../KeycloakService.cs | 72 + ...o.Template.Backend.IntegrationTests.csproj | 49 + .../Scripts/Companies.sql | 7 + .../Scripts/Products.sql | 37 + .../Tests/CompaniesTests.cs | 255 + .../Tests/CountriesTests.cs | 65 + .../Tests/FilesTests.cs | 82 + .../Tests/ProductsTests.cs | 444 ++ .../Monaco.Template.Backend.Service.csproj | 6 +- .../Solution/Monaco.Template.Backend.sln | 7 + .../Solution/realm-export-template.json | 4636 ++++++++--------- 41 files changed, 5929 insertions(+), 2592 deletions(-) create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/AccessTokenDto.cs create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/ApiRoutes.cs create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/ApiWebApplicationFactory.cs create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/AppFixture.cs create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Auth.cs create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/GlobalUsings.cs create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Imports/Keycloak/realm-export-template.json create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Imports/Pictures/CSharp-Logo.png create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Imports/Pictures/MS_NET_Logo.png create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Imports/Pictures/NET_Core_Logo.png create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Imports/Pictures/NET_Logo.png create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Imports/Pictures/dotnet-bot-1.png create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Imports/Pictures/dotnet-bot-2.png create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/IntegrationTest.cs create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/KeycloakService.cs create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Monaco.Template.Backend.IntegrationTests.csproj create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Scripts/Companies.sql create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Scripts/Products.sql create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/CompaniesTests.cs create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/CountriesTests.cs create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/FilesTests.cs create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Api/Monaco.Template.Backend.Api.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Api/Monaco.Template.Backend.Api.csproj index 5b9503d..5fccfc3 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Api/Monaco.Template.Backend.Api.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Api/Monaco.Template.Backend.Api.csproj @@ -11,6 +11,10 @@ Linux + + + + $(DefineConstants);auth;commonLibraries;filesSupport @@ -20,16 +24,16 @@ - - + + - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - + + + diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Api/Program.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.Api/Program.cs index 54e57d8..d9c3db7 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Api/Program.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Api/Program.cs @@ -20,14 +20,14 @@ builder.Logging.ClearProviders(); builder.Host.UseSerilog((context, config) => config.ReadFrom.Configuration(context.Configuration) .WriteTo.Logger(l => l.WriteTo.Conditional(_ => context.HostingEnvironment.IsDevelopment(), // Only for dev - cfg => cfg.Debug() - .WriteTo.File("logs/log.txt", - rollingInterval: RollingInterval.Day, - outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}")) - .WriteTo.Console() - .WriteTo.ApplicationInsights(context.Configuration["ApplicationInsights:InstrumentationKey"], - new OperationTelemetryConverter()) - .Filter.ByExcluding(x => x.Properties.ContainsKey("AuditEntries"))) + cfg => cfg.Debug() + .WriteTo.File("logs/log.txt", + rollingInterval: RollingInterval.Day, + outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}")) + .WriteTo.Console() + .WriteTo.ApplicationInsights(context.Configuration["ApplicationInsights:InstrumentationKey"], + new OperationTelemetryConverter()) + .Filter.ByExcluding(x => x.Properties.ContainsKey("AuditEntries"))) .WriteTo.Logger(l => l.WriteTo.ApplicationInsights(context.Configuration["ApplicationInsights:InstrumentationKey"], new AuditEventTelemetryConverter()) .Filter.ByIncludingOnly(x => x.Properties.ContainsKey("AuditEntries"))) @@ -120,4 +120,9 @@ app.MapHealthChecks("/health", new HealthCheckOptions { Predicate = _ => true }); -app.Run(); \ No newline at end of file +app.Run(); + +namespace Monaco.Template.Backend.Api +{ + public partial class Program; +} \ No newline at end of file diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Application.Tests/Monaco.Template.Backend.Application.Tests.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Application.Tests/Monaco.Template.Backend.Application.Tests.csproj index c89975a..6be7a8b 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Application.Tests/Monaco.Template.Backend.Application.Tests.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Application.Tests/Monaco.Template.Backend.Application.Tests.csproj @@ -14,10 +14,10 @@ - - - - + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Application/DependencyInjection/ServiceCollectionExtensions.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.Application/DependencyInjection/ServiceCollectionExtensions.cs index 888072f..5ea4eec 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Application/DependencyInjection/ServiceCollectionExtensions.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Application/DependencyInjection/ServiceCollectionExtensions.cs @@ -37,7 +37,8 @@ public static IServiceCollection ConfigureApplication(this IServiceCollection se .AddValidatorsFromAssembly(GetApplicationAssembly(), filter: filter => !filter.ValidatorType .GetInterfaces() .Contains(typeof(INonInjectable)) && - !filter.ValidatorType.IsAbstract) + !filter.ValidatorType.IsAbstract, + includeInternalTypes: true) .AddDbContext(opts => opts.UseSqlServer(optionsValue.EntityFramework.ConnectionString, sqlOptions => { diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Application/Monaco.Template.Backend.Application.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Application/Monaco.Template.Backend.Application.csproj index 3eb4e8c..71cb360 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Application/Monaco.Template.Backend.Application.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Application/Monaco.Template.Backend.Application.csproj @@ -29,9 +29,9 @@ - + - + diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Api.Application/Monaco.Template.Backend.Common.Api.Application.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Api.Application/Monaco.Template.Backend.Common.Api.Application.csproj index 1e2a9b6..63384fd 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Api.Application/Monaco.Template.Backend.Common.Api.Application.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Api.Application/Monaco.Template.Backend.Common.Api.Application.csproj @@ -20,7 +20,7 @@ - + diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Api/Monaco.Template.Backend.Common.Api.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Api/Monaco.Template.Backend.Common.Api.csproj index eae9a35..a27e060 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Api/Monaco.Template.Backend.Common.Api.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Api/Monaco.Template.Backend.Common.Api.csproj @@ -20,11 +20,11 @@ - - + + - - + + diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.ApiGateway/Monaco.Template.Backend.Common.ApiGateway.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.ApiGateway/Monaco.Template.Backend.Common.ApiGateway.csproj index ff8cfe5..89e9bcd 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.ApiGateway/Monaco.Template.Backend.Common.ApiGateway.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.ApiGateway/Monaco.Template.Backend.Common.ApiGateway.csproj @@ -8,12 +8,12 @@ - - - + + + - + diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Application/Monaco.Template.Backend.Common.Application.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Application/Monaco.Template.Backend.Common.Application.csproj index 0056238..2c0b7a8 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Application/Monaco.Template.Backend.Common.Application.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Application/Monaco.Template.Backend.Common.Application.csproj @@ -19,9 +19,9 @@ - - - + + + diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.BlobStorage.Tests/Monaco.Template.Backend.Common.BlobStorage.Tests.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.BlobStorage.Tests/Monaco.Template.Backend.Common.BlobStorage.Tests.csproj index 7c3c647..5bf7c75 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.BlobStorage.Tests/Monaco.Template.Backend.Common.BlobStorage.Tests.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.BlobStorage.Tests/Monaco.Template.Backend.Common.BlobStorage.Tests.csproj @@ -8,11 +8,11 @@ - - - - - + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.BlobStorage/Monaco.Template.Backend.Common.BlobStorage.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.BlobStorage/Monaco.Template.Backend.Common.BlobStorage.csproj index f2c6150..410ab2e 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.BlobStorage/Monaco.Template.Backend.Common.BlobStorage.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.BlobStorage/Monaco.Template.Backend.Common.BlobStorage.csproj @@ -19,7 +19,7 @@ - + diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Domain.Tests/Monaco.Template.Backend.Common.Domain.Tests.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Domain.Tests/Monaco.Template.Backend.Common.Domain.Tests.csproj index 91dc628..3b93587 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Domain.Tests/Monaco.Template.Backend.Common.Domain.Tests.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Domain.Tests/Monaco.Template.Backend.Common.Domain.Tests.csproj @@ -10,11 +10,11 @@ - - - - - + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Domain/Model/Page.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Domain/Model/Page.cs index 7da496e..5a2f27c 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Domain/Model/Page.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Domain/Model/Page.cs @@ -14,17 +14,42 @@ public Page(IEnumerable items, int offset, int limit, long count) Pager = new Pager(offset, limit, count); } + public Page(IEnumerable items, Pager pager) + { + Items = items.ToList(); + Pager = pager; + } + + public Page() { } + /// /// Page metadata /// - public Pager Pager { get; } + public Pager Pager { get; init; } /// /// Paged items /// - public IReadOnlyList Items { get; } + public IReadOnlyList Items { get; init; } } /// /// Pagination metadata /// -public record Pager(int Offset, int Limit, long Count); \ No newline at end of file +public record Pager +{ + public Pager() {} + + /// + /// Pagination metadata + /// + public Pager(int offset, int limit, long count) + { + Offset = offset; + Limit = limit; + Count = count; + } + + public int Offset { get; init; } + public int Limit { get; init; } + public long Count { get; init; } +} \ No newline at end of file diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Infrastructure/Monaco.Template.Backend.Common.Infrastructure.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Infrastructure/Monaco.Template.Backend.Common.Infrastructure.csproj index 6c24696..98baee7 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Infrastructure/Monaco.Template.Backend.Common.Infrastructure.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Infrastructure/Monaco.Template.Backend.Common.Infrastructure.csproj @@ -21,15 +21,15 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + - + diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Tests/Monaco.Template.Backend.Common.Tests.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Tests/Monaco.Template.Backend.Common.Tests.csproj index 52ce9aa..c781c37 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Tests/Monaco.Template.Backend.Common.Tests.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Tests/Monaco.Template.Backend.Common.Tests.csproj @@ -15,9 +15,9 @@ - - - + + + diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Domain.Tests/Monaco.Template.Backend.Domain.Tests.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Domain.Tests/Monaco.Template.Backend.Domain.Tests.csproj index 5146d22..0729597 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Domain.Tests/Monaco.Template.Backend.Domain.Tests.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Domain.Tests/Monaco.Template.Backend.Domain.Tests.csproj @@ -14,9 +14,9 @@ - - - + + + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/AccessTokenDto.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/AccessTokenDto.cs new file mode 100644 index 0000000..05e103a --- /dev/null +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/AccessTokenDto.cs @@ -0,0 +1,14 @@ +using System.Text.Json.Serialization; + +namespace Monaco.Template.Backend.IntegrationTests; + +public record AccessTokenDto +{ + public AccessTokenDto(string accessToken, int expiresIn) + { + AccessToken = accessToken; + } + + [JsonPropertyName("access_token")] + public string AccessToken { get; init; } +} \ No newline at end of file diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/ApiRoutes.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/ApiRoutes.cs new file mode 100644 index 0000000..77bfa87 --- /dev/null +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/ApiRoutes.cs @@ -0,0 +1,92 @@ +using Flurl; +using Monaco.Template.Backend.Application.DTOs; + +namespace Monaco.Template.Backend.IntegrationTests; + +internal static class ApiRoutes +{ + private static readonly Url ApiVersion = "api/v1"; + private const string ExpandParamName = "expand"; + private const string OffsetParamName = "offset"; + private const string LimitParamName = "limit"; + + private static Url Expand(this Url url, + bool expand, + string paramName) => + expand + ? url.AppendQueryParam(ExpandParamName, paramName) + : url; + + private static Url Offset(this Url url, int? offset = null) => + offset.HasValue + ? url.SetQueryParam(OffsetParamName, offset.Value) + : url; + + private static Url Limit(this Url url, int? limit = null) => + limit.HasValue + ? url.SetQueryParam(LimitParamName, limit.Value) + : url; + + public static class Companies + { + private static Url Controller => ApiVersion.Clone() + .AppendPathSegment(nameof(Companies)); + + public static Url Query(bool expandCountry = false, int? offset = null, int? limit = null) => + Controller.Expand(expandCountry, nameof(CompanyDto.Country)) + .Offset(offset) + .Limit(limit); + public static Url Get(Guid id) => Controller.AppendPathSegment(id); + public static string Post() => Query(); + public static string Put(Guid id) => Get(id); + public static string Delete(Guid id) => Get(id); + } + + public static class Countries + { + private static Url Controller => ApiVersion.Clone() + .AppendPathSegment(nameof(Countries)); + + public static Url Query() => Controller; + public static Url Get(Guid id) => Controller.AppendPathSegment(id); + } + + public static class Files + { + private static Url Controller => ApiVersion.Clone() + .AppendPathSegment(nameof(Files)); + + public static Url Post() => Controller; + } + + public static class Products + { + private static Url Controller => ApiVersion.Clone() + .AppendPathSegment(nameof(Products)); + + public static Url Query(bool expandCompany = false, + bool expandPictures = false, + bool expandDefaultPicture = false, + int? offset = null, + int? limit = null) => + Controller.Expand(expandCompany, nameof(ProductDto.Company)) + .Expand(expandPictures, nameof(ProductDto.Pictures)) + .Expand(expandDefaultPicture, nameof(ProductDto.DefaultPicture)) + .Offset(offset) + .Limit(limit); + + public static Url Get(Guid id) => Controller.AppendPathSegment(id); + + public static Url DownloadPicture(Guid productId, Guid pictureId, bool? isThumbnail = null) + { + var url = Controller.AppendPathSegments(productId, "Pictures", pictureId); + return isThumbnail.HasValue + ? url.SetQueryParam("thumbnail", isThumbnail.Value.ToString().ToLower()) + : url; + } + + public static string Post() => Query(); + public static string Put(Guid id) => Get(id); + public static string Delete(Guid id) => Get(id); + } +} \ No newline at end of file diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/ApiWebApplicationFactory.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/ApiWebApplicationFactory.cs new file mode 100644 index 0000000..ef162e5 --- /dev/null +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/ApiWebApplicationFactory.cs @@ -0,0 +1,43 @@ +using Flurl; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Mvc.Testing; +using Microsoft.Extensions.Configuration; + +namespace Monaco.Template.Backend.IntegrationTests; + +public class ApiWebApplicationFactory : WebApplicationFactory +{ + public readonly string SqlConnectionString; + public readonly Url RabbitMqHost; + public readonly string RabbitMqUsername; + public readonly string RabbitMqPassword; + public readonly Url StorageConnectionString; + public readonly Url KeycloakRealmUrl; + + public ApiWebApplicationFactory(AppFixture fixture) + { + SqlConnectionString = fixture.SqlContainer.GetConnectionString(); + Url rabbitMqConnString = fixture.RabbitMqContainer.GetConnectionString(); + RabbitMqUsername = rabbitMqConnString.UserInfo.Split(':').First(); + RabbitMqPassword = rabbitMqConnString.UserInfo.Split(':').Last(); + RabbitMqHost = rabbitMqConnString.Root.Replace($"{rabbitMqConnString.UserInfo}@", string.Empty); + StorageConnectionString = fixture.AzuriteContainer.GetConnectionString(); + KeycloakRealmUrl = fixture.KeycloakContainer + .GetBaseAddress() + .AppendPathSegments("realms", AppFixture.KeycloakRealm); + } + + protected override void ConfigureWebHost(IWebHostBuilder builder) + { + builder.UseConfiguration(new ConfigurationManager + { + ["ConnectionStrings:AppDbContext"] = SqlConnectionString, + ["SSO:Authority"] = KeycloakRealmUrl, + ["BlobStorage:ConnectionString"] = StorageConnectionString, + ["MessageBus:RabbitMQ:Host"] = RabbitMqHost, + ["MessageBus:RabbitMQ:User"] = RabbitMqUsername, + ["MessageBus:RabbitMQ:Password"] = RabbitMqPassword + }) + .UseSetting("https_port", "8080"); + } +} diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/AppFixture.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/AppFixture.cs new file mode 100644 index 0000000..ee8bbfa --- /dev/null +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/AppFixture.cs @@ -0,0 +1,56 @@ +using Azure.Storage.Blobs; +using Testcontainers.Azurite; +using Testcontainers.Keycloak; +using Testcontainers.MsSql; +using Testcontainers.RabbitMq; + +namespace Monaco.Template.Backend.IntegrationTests; + +public class AppFixture : IAsyncLifetime +{ + public const string RabbitMqVHost = "monaco"; + public const string StorageContainer = "files-store"; + public const string KeycloakRealm = "monaco-template"; + public const string KeycloakRealmUsername = "admin@admin.com"; + public const string KeycloakRealmPassword = "admin"; + + public MsSqlContainer SqlContainer = new MsSqlBuilder().Build(); + public RabbitMqContainer RabbitMqContainer = new RabbitMqBuilder().WithEnvironment("RABBITMQ_DEFAULT_VHOST", RabbitMqVHost) + .Build(); + public AzuriteContainer AzuriteContainer = new AzuriteBuilder().WithCommand("--skipApiVersionCheck") + .Build(); + public KeycloakContainer KeycloakContainer = new KeycloakBuilder().WithImage("quay.io/keycloak/keycloak:25.0.6") + .WithResourceMapping(new FileInfo("./Imports/Keycloak/realm-export-template.json"), + new FileInfo("/opt/keycloak/data/import/realm-export-template.json")) + .WithCommand("--import-realm") + .Build(); + + public async Task InitializeAsync() + { + await KeycloakContainer.StartAsync(); + await SqlContainer.StartAsync(); + await RabbitMqContainer.StartAsync(); + await AzuriteContainer.StartAsync(); + + await InitStorage(); + } + + public async Task DisposeAsync() + { + await SqlContainer.StopAsync(); + await RabbitMqContainer.StopAsync(); + await AzuriteContainer.StopAsync(); + await KeycloakContainer.StopAsync(); + + await SqlContainer.DisposeAsync(); + await RabbitMqContainer.DisposeAsync(); + await AzuriteContainer.DisposeAsync(); + await KeycloakContainer.DisposeAsync(); + } + + private async Task InitStorage() + { + await new BlobContainerClient(AzuriteContainer.GetConnectionString(), StorageContainer) + .CreateAsync(); + } +} \ No newline at end of file diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Auth.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Auth.cs new file mode 100644 index 0000000..bc9ce29 --- /dev/null +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Auth.cs @@ -0,0 +1,16 @@ +namespace Monaco.Template.Backend.IntegrationTests; + +internal static class Auth +{ + public const string AudienceClientId = "monaco-template-api"; + + public static string[] Scopes => ["email", "profile", "roles", .. Api.Auth.Scopes.List]; + + public record Roles + { + public const string Administrator = nameof(Administrator); + public const string Customer = nameof(Customer); + + public static string[] List = [Administrator, Customer]; + } +} \ No newline at end of file diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/GlobalUsings.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/GlobalUsings.cs new file mode 100644 index 0000000..8c927eb --- /dev/null +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/GlobalUsings.cs @@ -0,0 +1 @@ +global using Xunit; \ No newline at end of file diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Imports/Keycloak/realm-export-template.json b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Imports/Keycloak/realm-export-template.json new file mode 100644 index 0000000..24a3536 --- /dev/null +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Imports/Keycloak/realm-export-template.json @@ -0,0 +1,2391 @@ +{ + "id": "monaco-template", + "realm": "monaco-template", + "displayName": "Monaco Template", + "notBefore": 0, + "defaultSignatureAlgorithm": "RS256", + "revokeRefreshToken": false, + "refreshTokenMaxReuse": 0, + "accessTokenLifespan": 300, + "accessTokenLifespanForImplicitFlow": 900, + "ssoSessionIdleTimeout": 1800, + "ssoSessionMaxLifespan": 36000, + "ssoSessionIdleTimeoutRememberMe": 3600, + "ssoSessionMaxLifespanRememberMe": 2592000, + "offlineSessionIdleTimeout": 2592000, + "offlineSessionMaxLifespanEnabled": false, + "offlineSessionMaxLifespan": 5184000, + "clientSessionIdleTimeout": 0, + "clientSessionMaxLifespan": 0, + "clientOfflineSessionIdleTimeout": 0, + "clientOfflineSessionMaxLifespan": 0, + "accessCodeLifespan": 60, + "accessCodeLifespanUserAction": 300, + "accessCodeLifespanLogin": 1800, + "actionTokenGeneratedByAdminLifespan": 43200, + "actionTokenGeneratedByUserLifespan": 300, + "oauth2DeviceCodeLifespan": 600, + "oauth2DevicePollingInterval": 5, + "enabled": true, + "sslRequired": "external", + "registrationAllowed": true, + "registrationEmailAsUsername": true, + "rememberMe": true, + "verifyEmail": true, + "loginWithEmailAllowed": true, + "duplicateEmailsAllowed": false, + "resetPasswordAllowed": true, + "editUsernameAllowed": true, + "bruteForceProtected": false, + "permanentLockout": false, + "maxTemporaryLockouts": 0, + "maxFailureWaitSeconds": 900, + "minimumQuickLoginWaitSeconds": 60, + "waitIncrementSeconds": 60, + "quickLoginCheckMilliSeconds": 1000, + "maxDeltaTimeSeconds": 43200, + "failureFactor": 30, + "roles": { + "realm": [ + { + "id": "80c3602f-f30d-4f1c-83f4-3e8395bdce25", + "name": "uma_authorization", + "description": "${role_uma_authorization}", + "composite": false, + "clientRole": false, + "containerId": "monaco-template", + "attributes": {} + }, + { + "id": "c11e0fa2-baf7-44ae-9db9-28ce239042b6", + "name": "default-roles-monaco-template", + "description": "${role_default-roles}", + "composite": true, + "composites": { + "realm": [ "offline_access", "uma_authorization" ], + "client": { + "account": [ "view-profile", "manage-account" ] + } + }, + "clientRole": false, + "containerId": "monaco-template", + "attributes": {} + }, + { + "id": "95c05d66-9802-411a-9f82-4b9ab0b34685", + "name": "offline_access", + "description": "${role_offline-access}", + "composite": false, + "clientRole": false, + "containerId": "monaco-template", + "attributes": {} + } + ], + "client": { + "realm-management": [ + { + "id": "4a5cb9f2-340b-483c-83d7-7324fc61cde4", + "name": "manage-identity-providers", + "description": "${role_manage-identity-providers}", + "composite": false, + "clientRole": true, + "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes": {} + }, + { + "id": "e4ebbdd6-038d-4785-946c-c04459aaa3c3", + "name": "view-events", + "description": "${role_view-events}", + "composite": false, + "clientRole": true, + "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes": {} + }, + { + "id": "229edc38-dd6a-4e97-a578-bee21fb23ea2", + "name": "manage-authorization", + "description": "${role_manage-authorization}", + "composite": false, + "clientRole": true, + "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes": {} + }, + { + "id": "ea5e3351-ae37-4c0d-8bc3-33fa548a017f", + "name": "query-clients", + "description": "${role_query-clients}", + "composite": false, + "clientRole": true, + "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes": {} + }, + { + "id": "0d624864-bc7a-46c9-a54e-2e65f94d670a", + "name": "view-clients", + "description": "${role_view-clients}", + "composite": true, + "composites": { + "client": { + "realm-management": [ "query-clients" ] + } + }, + "clientRole": true, + "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes": {} + }, + { + "id": "39965fdb-b81f-49c6-aadd-2549866dbf50", + "name": "impersonation", + "description": "${role_impersonation}", + "composite": false, + "clientRole": true, + "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes": {} + }, + { + "id": "c67b26e1-e0bb-4d77-8dba-804fa937e07c", + "name": "query-users", + "description": "${role_query-users}", + "composite": false, + "clientRole": true, + "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes": {} + }, + { + "id": "97915d9f-50ca-4ef1-bd76-b0d8e567b6da", + "name": "query-realms", + "description": "${role_query-realms}", + "composite": false, + "clientRole": true, + "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes": {} + }, + { + "id": "59605495-cafb-48bd-96f2-82963a849fd5", + "name": "view-identity-providers", + "description": "${role_view-identity-providers}", + "composite": false, + "clientRole": true, + "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes": {} + }, + { + "id": "e581564a-4e64-4ed7-bc62-9bcb2face818", + "name": "view-realm", + "description": "${role_view-realm}", + "composite": false, + "clientRole": true, + "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes": {} + }, + { + "id": "91c0dbb8-6e8f-4500-8cd3-f70ee68f19c3", + "name": "manage-realm", + "description": "${role_manage-realm}", + "composite": false, + "clientRole": true, + "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes": {} + }, + { + "id": "41478e41-088b-4e0c-8433-738f39e2052e", + "name": "realm-admin", + "description": "${role_realm-admin}", + "composite": true, + "composites": { + "client": { + "realm-management": [ "manage-identity-providers", "view-events", "manage-authorization", "query-clients", "view-clients", "impersonation", "query-users", "query-realms", "view-identity-providers", "view-realm", "manage-realm", "manage-events", "manage-users", "manage-clients", "query-groups", "view-users", "create-client", "view-authorization" ] + } + }, + "clientRole": true, + "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes": {} + }, + { + "id": "238b7a77-c046-45e1-95a3-ec7b3548f582", + "name": "manage-events", + "description": "${role_manage-events}", + "composite": false, + "clientRole": true, + "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes": {} + }, + { + "id": "9bf8d229-3706-464f-b3a9-ac2b3d54aef6", + "name": "manage-users", + "description": "${role_manage-users}", + "composite": false, + "clientRole": true, + "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes": {} + }, + { + "id": "e8ce41b7-3028-4e12-bda7-49359d8bc1e3", + "name": "manage-clients", + "description": "${role_manage-clients}", + "composite": false, + "clientRole": true, + "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes": {} + }, + { + "id": "2cfbaddb-4699-42a3-9da5-1405dc4c7d2d", + "name": "query-groups", + "description": "${role_query-groups}", + "composite": false, + "clientRole": true, + "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes": {} + }, + { + "id": "79cca5ea-3316-4d5f-ba5e-a604153ea8dd", + "name": "view-users", + "description": "${role_view-users}", + "composite": true, + "composites": { + "client": { + "realm-management": [ "query-groups", "query-users" ] + } + }, + "clientRole": true, + "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes": {} + }, + { + "id": "4ea907e9-949f-4e08-aa61-6373f17e7d9d", + "name": "create-client", + "description": "${role_create-client}", + "composite": false, + "clientRole": true, + "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes": {} + }, + { + "id": "71257166-f1f5-4708-b1c1-7ee1ba0412c3", + "name": "view-authorization", + "description": "${role_view-authorization}", + "composite": false, + "clientRole": true, + "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes": {} + } + ], + "monaco-template-api-swagger-ui": [], + "monaco-template-front": [], + "security-admin-console": [], + "monaco-template-backend": [], + "admin-cli": [], + "account-console": [], + "broker": [ + { + "id": "b942c498-cc32-448f-8252-399d9f99770a", + "name": "read-token", + "description": "${role_read-token}", + "composite": false, + "clientRole": true, + "containerId": "e8572aad-4593-4744-9f3e-36ddc85edca7", + "attributes": {} + } + ], + "account": [ + { + "id": "d900da8a-7cd8-42af-9367-3a4f8039f1a8", + "name": "view-profile", + "description": "${role_view-profile}", + "composite": false, + "clientRole": true, + "containerId": "b3a43f06-b62f-4308-9a51-f5159e3359a3", + "attributes": {} + }, + { + "id": "9ec31276-3997-49d7-a842-0a36564a180d", + "name": "manage-account-links", + "description": "${role_manage-account-links}", + "composite": false, + "clientRole": true, + "containerId": "b3a43f06-b62f-4308-9a51-f5159e3359a3", + "attributes": {} + }, + { + "id": "d34a41a6-7c64-408a-a378-3df70edc20d9", + "name": "view-consent", + "description": "${role_view-consent}", + "composite": false, + "clientRole": true, + "containerId": "b3a43f06-b62f-4308-9a51-f5159e3359a3", + "attributes": {} + }, + { + "id": "9522c83e-dbc9-4fde-a61f-9a37a5ab89ee", + "name": "manage-account", + "description": "${role_manage-account}", + "composite": true, + "composites": { + "client": { + "account": [ "manage-account-links" ] + } + }, + "clientRole": true, + "containerId": "b3a43f06-b62f-4308-9a51-f5159e3359a3", + "attributes": {} + }, + { + "id": "7d7112cb-ffed-4b52-b440-3fdbd7a63c5a", + "name": "view-groups", + "description": "${role_view-groups}", + "composite": false, + "clientRole": true, + "containerId": "b3a43f06-b62f-4308-9a51-f5159e3359a3", + "attributes": {} + }, + { + "id": "c443d55b-32e6-47e9-a057-96a7eab1d688", + "name": "manage-consent", + "description": "${role_manage-consent}", + "composite": true, + "composites": { + "client": { + "account": [ "view-consent" ] + } + }, + "clientRole": true, + "containerId": "b3a43f06-b62f-4308-9a51-f5159e3359a3", + "attributes": {} + }, + { + "id": "4857a3cf-f3b0-48ac-94cc-3b2384696b44", + "name": "view-applications", + "description": "${role_view-applications}", + "composite": false, + "clientRole": true, + "containerId": "b3a43f06-b62f-4308-9a51-f5159e3359a3", + "attributes": {} + }, + { + "id": "6c345596-0966-47ed-b41b-6ba41319908c", + "name": "delete-account", + "description": "${role_delete-account}", + "composite": false, + "clientRole": true, + "containerId": "b3a43f06-b62f-4308-9a51-f5159e3359a3", + "attributes": {} + } + ], + "monaco-template-api": [ + { + "id": "2a0fe481-1bc6-4fa4-a02d-0aace321c60e", + "name": "Administrator", + "description": "", + "composite": false, + "clientRole": true, + "containerId": "cc450c6d-bf28-45e4-9148-6bb7d4187641", + "attributes": {} + }, + { + "id": "53405b4d-d952-47d8-9bc7-8f52a15522e8", + "name": "Customer", + "description": "", + "composite": false, + "clientRole": true, + "containerId": "cc450c6d-bf28-45e4-9148-6bb7d4187641", + "attributes": {} + } + ] + } + }, + "groups": [], + "defaultRole": { + "id": "c11e0fa2-baf7-44ae-9db9-28ce239042b6", + "name": "default-roles-monaco-template", + "description": "${role_default-roles}", + "composite": true, + "clientRole": false, + "containerId": "monaco-template" + }, + "requiredCredentials": [ "password" ], + "otpPolicyType": "totp", + "otpPolicyAlgorithm": "HmacSHA1", + "otpPolicyInitialCounter": 0, + "otpPolicyDigits": 6, + "otpPolicyLookAheadWindow": 1, + "otpPolicyPeriod": 30, + "otpPolicyCodeReusable": false, + "otpSupportedApplications": [ "totpAppFreeOTPName", "totpAppGoogleName", "totpAppMicrosoftAuthenticatorName" ], + "localizationTexts": {}, + "webAuthnPolicyRpEntityName": "keycloak", + "webAuthnPolicySignatureAlgorithms": [ "ES256" ], + "webAuthnPolicyRpId": "", + "webAuthnPolicyAttestationConveyancePreference": "not specified", + "webAuthnPolicyAuthenticatorAttachment": "not specified", + "webAuthnPolicyRequireResidentKey": "not specified", + "webAuthnPolicyUserVerificationRequirement": "not specified", + "webAuthnPolicyCreateTimeout": 0, + "webAuthnPolicyAvoidSameAuthenticatorRegister": false, + "webAuthnPolicyAcceptableAaguids": [], + "webAuthnPolicyExtraOrigins": [], + "webAuthnPolicyPasswordlessRpEntityName": "keycloak", + "webAuthnPolicyPasswordlessSignatureAlgorithms": [ "ES256" ], + "webAuthnPolicyPasswordlessRpId": "", + "webAuthnPolicyPasswordlessAttestationConveyancePreference": "not specified", + "webAuthnPolicyPasswordlessAuthenticatorAttachment": "not specified", + "webAuthnPolicyPasswordlessRequireResidentKey": "not specified", + "webAuthnPolicyPasswordlessUserVerificationRequirement": "not specified", + "webAuthnPolicyPasswordlessCreateTimeout": 0, + "webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister": false, + "webAuthnPolicyPasswordlessAcceptableAaguids": [], + "webAuthnPolicyPasswordlessExtraOrigins": [], + "users": [ + { + "id": "57b460f0-2e14-4a61-b34d-4c6cced30590", + "username": "admin@admin.com", + "firstName": "Admin", + "lastName": "Admin", + "email": "admin@admin.com", + "emailVerified": true, + "createdTimestamp": 1727335733388, + "enabled": true, + "totp": false, + "credentials": [ + { + "id": "443dfdde-ede5-4e1f-bf31-a4b673a12c4c", + "type": "password", + "userLabel": "My password", + "createdDate": 1727335748614, + "secretData": "{\"value\":\"Cgv79PZLkrbQ9TIMy1QMf043sb2VY0TZpZFHS9TwTSk=\",\"salt\":\"NkZacNCQ9JiF6NiIB3hSaA==\",\"additionalParameters\":{}}", + "credentialData": "{\"hashIterations\":5,\"algorithm\":\"argon2\",\"additionalParameters\":{\"hashLength\":[\"32\"],\"memory\":[\"7168\"],\"type\":[\"id\"],\"version\":[\"1.3\"],\"parallelism\":[\"1\"]}}" + } + ], + "disableableCredentialTypes": [], + "requiredActions": [], + "realmRoles": [ "default-roles-monaco-template" ], + "clientRoles": { + "realm-management": [ "realm-admin" ] + }, + "notBefore": 0, + "groups": [] + } + ], + "scopeMappings": [ + { + "clientScope": "offline_access", + "roles": [ "offline_access" ] + } + ], + "clientScopeMappings": { + "account": [ + { + "client": "account-console", + "roles": [ "manage-account", "view-groups" ] + } + ], + "monaco-template-api": [ + { + "clientScope": "companies:read", + "roles": [ "Administrator", "Customer" ] + }, + { + "clientScope": "companies:write", + "roles": [ "Administrator" ] + }, + { + "clientScope": "files:write", + "roles": [ "Administrator" ] + }, + { + "clientScope": "products:write", + "roles": [ "Administrator" ] + } + ] + }, + "clients": [ + { + "id": "b3a43f06-b62f-4308-9a51-f5159e3359a3", + "clientId": "account", + "name": "${client_account}", + "rootUrl": "${authBaseUrl}", + "baseUrl": "/realms/monaco-template/account/", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": [ "/realms/monaco-template/account/*" ], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "post.logout.redirect.uris": "+" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "defaultClientScopes": [ "web-origins", "roles", "profile", "basic", "email" ], + "optionalClientScopes": [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, + { + "id": "4aee08a5-4691-4a57-9d87-e02dc59fe3ab", + "clientId": "account-console", + "name": "${client_account-console}", + "rootUrl": "${authBaseUrl}", + "baseUrl": "/realms/monaco-template/account/", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": [ "/realms/monaco-template/account/*" ], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "post.logout.redirect.uris": "+", + "pkce.code.challenge.method": "S256" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "ed97a0b3-c82c-471f-89dc-b48e738381fa", + "name": "audience resolve", + "protocol": "openid-connect", + "protocolMapper": "oidc-audience-resolve-mapper", + "consentRequired": false, + "config": {} + } + ], + "defaultClientScopes": [ "web-origins", "roles", "profile", "basic", "email" ], + "optionalClientScopes": [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, + { + "id": "a1a76a9c-e22e-4e5a-aeec-e71b381ca77e", + "clientId": "admin-cli", + "name": "${client_admin-cli}", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": false, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "post.logout.redirect.uris": "+" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "defaultClientScopes": [ "web-origins", "roles", "profile", "basic", "email" ], + "optionalClientScopes": [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, + { + "id": "e8572aad-4593-4744-9f3e-36ddc85edca7", + "clientId": "broker", + "name": "${client_broker}", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": true, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "post.logout.redirect.uris": "+" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "defaultClientScopes": [ "web-origins", "roles", "profile", "email" ], + "optionalClientScopes": [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, + { + "id": "cc450c6d-bf28-45e4-9148-6bb7d4187641", + "clientId": "monaco-template-api", + "name": "Monaco Template API", + "description": "Monaco Template API", + "adminUrl": "", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": true, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "id.token.as.detached.signature": "false", + "saml.assertion.signature": "false", + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "saml.encrypt": "false", + "post.logout.redirect.uris": "+", + "oauth2.device.authorization.grant.enabled": "false", + "backchannel.logout.revoke.offline.tokens": "false", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "use.refresh.tokens": "true", + "exclude.session.state.from.auth.response": "false", + "oidc.ciba.grant.enabled": "false", + "saml.artifact.binding": "false", + "backchannel.logout.session.required": "true", + "client_credentials.use_refresh_token": "false", + "saml_force_name_id_format": "false", + "require.pushed.authorization.requests": "false", + "saml.client.signature": "false", + "tls.client.certificate.bound.access.tokens": "false", + "saml.authnstatement": "false", + "display.on.consent.screen": "false", + "saml.onetimeuse.condition": "false" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "defaultClientScopes": [ "web-origins", "roles", "profile", "email" ], + "optionalClientScopes": [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, + { + "id": "b6049a46-fbd1-4368-a72b-364c284f01e0", + "clientId": "monaco-template-api-swagger-ui", + "name": "Monaco Template API Swagger", + "description": "Monaco Template API - Swagger client", + "rootUrl": "", + "adminUrl": "", + "baseUrl": "", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": [ "*" ], + "webOrigins": [ "*" ], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "post.logout.redirect.uris": "+", + "oauth2.device.authorization.grant.enabled": "false", + "backchannel.logout.revoke.offline.tokens": "false", + "saml.server.signature.keyinfo.ext": "false", + "use.refresh.tokens": "false", + "oidc.ciba.grant.enabled": "false", + "backchannel.logout.session.required": "true", + "client_credentials.use_refresh_token": "false", + "require.pushed.authorization.requests": "false", + "saml.client.signature": "false", + "id.token.as.detached.signature": "false", + "saml.assertion.signature": "false", + "saml.encrypt": "false", + "saml.server.signature": "false", + "exclude.session.state.from.auth.response": "false", + "tls-client-certificate-bound-access-tokens": "false", + "saml.artifact.binding": "false", + "saml_force_name_id_format": "false", + "tls.client.certificate.bound.access.tokens": "false", + "acr.loa.map": "{}", + "saml.authnstatement": "false", + "display.on.consent.screen": "false", + "token.response.type.bearer.lower-case": "false", + "saml.onetimeuse.condition": "false" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": -1, + "defaultClientScopes": [ "web-origins", "roles", "profile", "basic", "email", "monaco-template-api" ], + "optionalClientScopes": [ "files:write", "address", "companies:read", "phone", "offline_access", "microprofile-jwt", "products:write", "companies:write" ] + }, + { + "id": "09fb98e3-c6c4-4151-bf3c-1fbc804b080e", + "clientId": "monaco-template-backend", + "name": "Monaco Template Backend", + "description": "Access to the backend through the API Gateway", + "adminUrl": "", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": true, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "post.logout.redirect.uris": "+", + "oauth2.device.authorization.grant.enabled": "false", + "backchannel.logout.revoke.offline.tokens": "false", + "saml.server.signature.keyinfo.ext": "false", + "use.refresh.tokens": "true", + "oidc.ciba.grant.enabled": "false", + "backchannel.logout.session.required": "true", + "client_credentials.use_refresh_token": "false", + "saml.client.signature": "false", + "require.pushed.authorization.requests": "false", + "id.token.as.detached.signature": "false", + "saml.assertion.signature": "false", + "saml.encrypt": "false", + "saml.server.signature": "false", + "exclude.session.state.from.auth.response": "false", + "tls-client-certificate-bound-access-tokens": "false", + "saml.artifact.binding": "false", + "saml_force_name_id_format": "false", + "tls.client.certificate.bound.access.tokens": "false", + "acr.loa.map": "{}", + "saml.authnstatement": "false", + "display.on.consent.screen": "false", + "token.response.type.bearer.lower-case": "false", + "saml.onetimeuse.condition": "false" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "defaultClientScopes": [ "web-origins", "roles", "profile", "email" ], + "optionalClientScopes": [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, + { + "id": "4cd869a0-9d32-41d7-9769-e611a48cd9a9", + "clientId": "monaco-template-front", + "name": "Monaco Template Web", + "description": "", + "rootUrl": "", + "adminUrl": "", + "baseUrl": "", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": [ "*", "http://localhost:4200", "https://oauth.pstmn.io/v1/callback" ], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.force.post.binding": "false", + "saml.multivalued.roles": "false", + "post.logout.redirect.uris": "+", + "oauth2.device.authorization.grant.enabled": "false", + "backchannel.logout.revoke.offline.tokens": "false", + "saml.server.signature.keyinfo.ext": "false", + "use.refresh.tokens": "false", + "oidc.ciba.grant.enabled": "false", + "backchannel.logout.session.required": "true", + "client_credentials.use_refresh_token": "false", + "require.pushed.authorization.requests": "false", + "saml.client.signature": "false", + "pkce.code.challenge.method": "S256", + "id.token.as.detached.signature": "false", + "saml.assertion.signature": "false", + "saml.encrypt": "false", + "saml.server.signature": "false", + "exclude.session.state.from.auth.response": "false", + "tls-client-certificate-bound-access-tokens": "false", + "saml.artifact.binding": "false", + "saml_force_name_id_format": "false", + "tls.client.certificate.bound.access.tokens": "false", + "acr.loa.map": "{}", + "saml.authnstatement": "false", + "display.on.consent.screen": "false", + "token.response.type.bearer.lower-case": "false", + "saml.onetimeuse.condition": "false" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": -1, + "defaultClientScopes": [ "web-origins", "roles", "profile", "basic", "email", "monaco-template-api" ], + "optionalClientScopes": [ "files:write", "address", "companies:read", "phone", "offline_access", "microprofile-jwt", "products:write", "companies:write" ] + }, + { + "id": "05648945-7e90-42ec-a4dc-233fd52cddfe", + "clientId": "realm-management", + "name": "${client_realm-management}", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": true, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "post.logout.redirect.uris": "+" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "defaultClientScopes": [ "web-origins", "roles", "profile", "email" ], + "optionalClientScopes": [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, + { + "id": "eedd4007-1606-4b89-a668-b6e690a1588e", + "clientId": "security-admin-console", + "name": "${client_security-admin-console}", + "rootUrl": "${authAdminUrl}", + "baseUrl": "/admin/monaco-template/console/", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": [ "/admin/monaco-template/console/*" ], + "webOrigins": [ "+" ], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "post.logout.redirect.uris": "+", + "pkce.code.challenge.method": "S256" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "82673f31-6b1d-4a88-b87f-199c80d1adca", + "name": "locale", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "user.attribute": "locale", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "locale", + "jsonType.label": "String", + "userinfo.token.claim": "true" + } + } + ], + "defaultClientScopes": [ "web-origins", "roles", "profile", "basic", "email" ], + "optionalClientScopes": [ "address", "phone", "offline_access", "microprofile-jwt" ] + } + ], + "clientScopes": [ + { + "id": "cc749096-2f94-49f0-b5d2-1f1fae75dc31", + "name": "address", + "description": "OpenID Connect built-in scope: address", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "consent.screen.text": "${addressScopeConsentText}", + "display.on.consent.screen": "true" + }, + "protocolMappers": [ + { + "id": "17a94395-e4fc-4abc-8603-de4171aa8546", + "name": "address", + "protocol": "openid-connect", + "protocolMapper": "oidc-address-mapper", + "consentRequired": false, + "config": { + "user.attribute.formatted": "formatted", + "user.attribute.country": "country", + "user.attribute.postal_code": "postal_code", + "userinfo.token.claim": "true", + "user.attribute.street": "street", + "id.token.claim": "true", + "user.attribute.region": "region", + "access.token.claim": "true", + "user.attribute.locality": "locality" + } + } + ] + }, + { + "id": "60a609f8-2408-42f3-88bd-6513796a7936", + "name": "monaco-template-api", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "false" + }, + "protocolMappers": [ + { + "id": "1e0e24cf-afa3-4e52-b174-5ae1508242f8", + "name": "audience", + "protocol": "openid-connect", + "protocolMapper": "oidc-audience-mapper", + "consentRequired": false, + "config": { + "included.client.audience": "monaco-template-api", + "id.token.claim": "false", + "access.token.claim": "true", + "userinfo.token.claim": "false" + } + } + ] + }, + { + "id": "2ee7b9e4-6df5-4a45-b78b-9b1c145c0723", + "name": "companies:read", + "description": "Read companies from API", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "false", + "gui.order": "" + } + }, + { + "id": "4c24875b-9978-4f19-8806-215bacb0b635", + "name": "role_list", + "description": "SAML role list", + "protocol": "saml", + "attributes": { + "consent.screen.text": "${samlRoleListScopeConsentText}", + "display.on.consent.screen": "true" + }, + "protocolMappers": [ + { + "id": "61a66ab3-6009-412e-a7ed-c4011440f45e", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + } + ] + }, + { + "id": "91c57951-bafb-409f-b271-a1b4b3e3aa26", + "name": "companies:write", + "description": "Create, edit and delete companies in API", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "false", + "gui.order": "" + } + }, + { + "id": "56e5a69c-a126-4854-aa6c-4d7efa063cc6", + "name": "roles", + "description": "OpenID Connect scope for add user roles to the access token", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "false", + "consent.screen.text": "${rolesScopeConsentText}", + "display.on.consent.screen": "true" + }, + "protocolMappers": [ + { + "id": "d5d68e01-42f1-488c-ab96-471596a2b750", + "name": "client roles", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-client-role-mapper", + "consentRequired": false, + "config": { + "user.attribute": "foo", + "access.token.claim": "true", + "claim.name": "resource_access.${client_id}.roles", + "jsonType.label": "String", + "multivalued": "true" + } + }, + { + "id": "7149fad9-2c54-4b91-975b-e893f9a3d094", + "name": "realm roles", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-realm-role-mapper", + "consentRequired": false, + "config": { + "user.attribute": "foo", + "access.token.claim": "true", + "claim.name": "roles", + "jsonType.label": "String", + "multivalued": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "c385dd5b-f501-4fb6-8b16-f381618d090a", + "name": "audience resolve", + "protocol": "openid-connect", + "protocolMapper": "oidc-audience-resolve-mapper", + "consentRequired": false, + "config": {} + } + ] + }, + { + "id": "33ff4854-2aad-4b12-9701-472d0a470c4f", + "name": "files:write", + "description": "", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "false", + "gui.order": "", + "consent.screen.text": "" + } + }, + { + "id": "805aea0c-522f-4040-b380-c0dac6f55245", + "name": "products:write", + "description": "", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "false", + "gui.order": "", + "consent.screen.text": "" + } + }, + { + "id": "194ef116-fa08-407a-b535-1d5a60356c7e", + "name": "acr", + "description": "OpenID Connect scope for add acr (authentication context class reference) to the token", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "false", + "display.on.consent.screen": "false" + }, + "protocolMappers": [ + { + "id": "a0f31e04-653c-4783-8bb0-d4a689c1a36e", + "name": "acr loa level", + "protocol": "openid-connect", + "protocolMapper": "oidc-acr-mapper", + "consentRequired": false, + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + } + ] + }, + { + "id": "d07a981d-4198-4f2c-be6c-acddc3aa98d3", + "name": "phone", + "description": "OpenID Connect built-in scope: phone", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "consent.screen.text": "${phoneScopeConsentText}", + "display.on.consent.screen": "true" + }, + "protocolMappers": [ + { + "id": "1a374de2-4ee9-4869-902a-12f53ad70a45", + "name": "phone number", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "user.attribute": "phoneNumber", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "phone_number", + "jsonType.label": "String", + "userinfo.token.claim": "true" + } + }, + { + "id": "070fdddb-0a0a-4a2c-b655-6111c2d653dc", + "name": "phone number verified", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "user.attribute": "phoneNumberVerified", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "phone_number_verified", + "jsonType.label": "boolean", + "userinfo.token.claim": "true" + } + } + ] + }, + { + "id": "eef8c4ff-e3a8-4cb5-aa68-9dd70302a134", + "name": "offline_access", + "description": "OpenID Connect built-in scope: offline_access", + "protocol": "openid-connect", + "attributes": { + "consent.screen.text": "${offlineAccessScopeConsentText}", + "display.on.consent.screen": "true" + } + }, + { + "id": "64a03398-02f8-4b24-9ad2-4d3596089a3e", + "name": "microprofile-jwt", + "description": "Microprofile - JWT built-in scope", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "false" + }, + "protocolMappers": [ + { + "id": "f5a70d75-ac48-4781-a5aa-67f68fa50eae", + "name": "groups", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-realm-role-mapper", + "consentRequired": false, + "config": { + "multivalued": "true", + "userinfo.token.claim": "true", + "user.attribute": "foo", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "groups", + "jsonType.label": "String" + } + }, + { + "id": "a8eb923d-df0f-4b93-9621-67164db3a7b0", + "name": "upn", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "upn", + "jsonType.label": "String", + "userinfo.token.claim": "true" + } + } + ] + }, + { + "id": "1faee50f-d3b4-495c-b613-846c2279e56c", + "name": "basic", + "description": "OpenID Connect scope for add all basic claims to the token", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "false", + "display.on.consent.screen": "false" + }, + "protocolMappers": [ + { + "id": "064def4f-3c60-4e62-84be-f38ff956f383", + "name": "sub", + "protocol": "openid-connect", + "protocolMapper": "oidc-sub-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "access.token.claim": "true" + } + }, + { + "id": "4302afba-c0a6-40f1-aa82-db40b84b4a17", + "name": "auth_time", + "protocol": "openid-connect", + "protocolMapper": "oidc-usersessionmodel-note-mapper", + "consentRequired": false, + "config": { + "user.session.note": "AUTH_TIME", + "id.token.claim": "true", + "introspection.token.claim": "true", + "access.token.claim": "true", + "claim.name": "auth_time", + "jsonType.label": "long" + } + } + ] + }, + { + "id": "75671dd9-ac0a-47a7-8c99-9d80f43880a5", + "name": "email", + "description": "OpenID Connect built-in scope: email", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "consent.screen.text": "${emailScopeConsentText}", + "display.on.consent.screen": "true" + }, + "protocolMappers": [ + { + "id": "97f7934b-4b2f-45f7-bfc7-85c9bc66ab72", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String", + "userinfo.token.claim": "true" + } + }, + { + "id": "91ee2052-43b0-42f0-8942-e9a556c0dc70", + "name": "email verified", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "emailVerified", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email_verified", + "jsonType.label": "boolean", + "userinfo.token.claim": "true" + } + } + ] + }, + { + "id": "98a7636d-7562-487f-a4a9-614bdfd3f0c2", + "name": "monaco-template-backend", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "false" + }, + "protocolMappers": [ + { + "id": "88e018d5-c24f-4ab6-a8dd-ee2a617bf463", + "name": "audience", + "protocol": "openid-connect", + "protocolMapper": "oidc-audience-mapper", + "consentRequired": false, + "config": { + "included.client.audience": "monaco-template-backend", + "id.token.claim": "false", + "access.token.claim": "true", + "userinfo.token.claim": "false" + } + } + ] + }, + { + "id": "1161bd67-9b4f-4208-843d-a2e1808bb804", + "name": "profile", + "description": "OpenID Connect built-in scope: profile", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "consent.screen.text": "${profileScopeConsentText}", + "display.on.consent.screen": "true" + }, + "protocolMappers": [ + { + "id": "5fdf7e16-965c-4229-9fa2-4fd0d0121dd5", + "name": "middle name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "user.attribute": "middleName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "middle_name", + "jsonType.label": "String", + "userinfo.token.claim": "true" + } + }, + { + "id": "0d007996-671f-4a6f-9479-10ed77235a5c", + "name": "gender", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "user.attribute": "gender", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "gender", + "jsonType.label": "String", + "userinfo.token.claim": "true" + } + }, + { + "id": "6afb2ba0-9404-416c-8a78-482666501247", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String", + "userinfo.token.claim": "true" + } + }, + { + "id": "7bc4441c-b4c0-46a4-bf6f-eff047590685", + "name": "zoneinfo", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "user.attribute": "zoneinfo", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "zoneinfo", + "jsonType.label": "String", + "userinfo.token.claim": "true" + } + }, + { + "id": "fae2c2c6-3583-492d-9dd9-37aa6d1d953e", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String", + "userinfo.token.claim": "true" + } + }, + { + "id": "17158faa-55c8-41f5-849a-77104a32e62a", + "name": "nickname", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "user.attribute": "nickname", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "nickname", + "jsonType.label": "String", + "userinfo.token.claim": "true" + } + }, + { + "id": "8bf614ab-1c90-4ec1-b037-e9ff5b1783c6", + "name": "locale", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "user.attribute": "locale", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "locale", + "jsonType.label": "String", + "userinfo.token.claim": "true" + } + }, + { + "id": "4c2d12ea-0998-49f4-8102-a1901775e2ec", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String", + "userinfo.token.claim": "true" + } + }, + { + "id": "ac0b3ebb-30bd-4a1e-9139-19f334593707", + "name": "birthdate", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "user.attribute": "birthdate", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "birthdate", + "jsonType.label": "String", + "userinfo.token.claim": "true" + } + }, + { + "id": "3a56dcac-470a-483d-a9c9-13aca2d5e0a2", + "name": "updated at", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "user.attribute": "updatedAt", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "updated_at", + "jsonType.label": "String", + "userinfo.token.claim": "true" + } + }, + { + "id": "e3f2ec93-9f8b-422e-9d5c-2470ab741b24", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": false, + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "3ef380f1-b15a-4cfc-b396-5b6e6bd2d8f7", + "name": "picture", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "user.attribute": "picture", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "picture", + "jsonType.label": "String", + "userinfo.token.claim": "true" + } + }, + { + "id": "38a0e5d9-02df-42b7-8284-60f70458b08d", + "name": "profile", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "user.attribute": "profile", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "profile", + "jsonType.label": "String", + "userinfo.token.claim": "true" + } + }, + { + "id": "5d153c84-6d0b-452d-9c6c-67d8305ed08c", + "name": "website", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "user.attribute": "website", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "website", + "jsonType.label": "String", + "userinfo.token.claim": "true" + } + } + ] + }, + { + "id": "d117de7b-4984-4bea-847b-ee94d1a292ad", + "name": "web-origins", + "description": "OpenID Connect scope for add allowed web origins to the access token", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "false", + "consent.screen.text": "", + "display.on.consent.screen": "false" + }, + "protocolMappers": [ + { + "id": "193c48e8-a06d-411a-88ee-01bbeaafed8c", + "name": "allowed web origins", + "protocol": "openid-connect", + "protocolMapper": "oidc-allowed-origins-mapper", + "consentRequired": false, + "config": {} + } + ] + } + ], + "defaultDefaultClientScopes": [ "role_list", "profile", "email", "roles", "web-origins", "acr", "basic" ], + "defaultOptionalClientScopes": [ "offline_access", "address", "phone", "microprofile-jwt" ], + "browserSecurityHeaders": { + "contentSecurityPolicyReportOnly": "", + "xContentTypeOptions": "nosniff", + "referrerPolicy": "no-referrer", + "xRobotsTag": "none", + "xFrameOptions": "SAMEORIGIN", + "contentSecurityPolicy": "frame-src 'self'; frame-ancestors 'self'; object-src 'none';", + "xXSSProtection": "1; mode=block", + "strictTransportSecurity": "max-age=31536000; includeSubDomains" + }, + "smtpServer": { + "host": "localhost", + "from": "sso@one-beyond.com", + "starttls": "", + "auth": "", + "ssl": "" + }, + "eventsEnabled": false, + "eventsListeners": [ "jboss-logging" ], + "enabledEventTypes": [], + "adminEventsEnabled": false, + "adminEventsDetailsEnabled": false, + "identityProviders": [], + "identityProviderMappers": [], + "components": { + "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy": [ + { + "id": "9556f246-cbf8-4c7d-9a0f-59291dde6a12", + "name": "Allowed Protocol Mapper Types", + "providerId": "allowed-protocol-mappers", + "subType": "authenticated", + "subComponents": {}, + "config": { + "allowed-protocol-mapper-types": [ "saml-user-property-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-address-mapper", "saml-user-attribute-mapper", "oidc-usermodel-property-mapper", "saml-role-list-mapper", "oidc-usermodel-attribute-mapper", "oidc-full-name-mapper" ] + } + }, + { + "id": "ddb57ebd-11ca-4e0b-b176-b8e4def28a6a", + "name": "Trusted Hosts", + "providerId": "trusted-hosts", + "subType": "anonymous", + "subComponents": {}, + "config": { + "host-sending-registration-request-must-match": [ "true" ], + "client-uris-must-match": [ "true" ] + } + }, + { + "id": "2e4dc148-9617-4207-a53c-5c5816437a39", + "name": "Max Clients Limit", + "providerId": "max-clients", + "subType": "anonymous", + "subComponents": {}, + "config": { + "max-clients": [ "200" ] + } + }, + { + "id": "7c9a9ae5-582b-4f8d-b2b0-68ab090bf7e3", + "name": "Allowed Client Scopes", + "providerId": "allowed-client-templates", + "subType": "anonymous", + "subComponents": {}, + "config": { + "allow-default-scopes": [ "true" ] + } + }, + { + "id": "a56f749d-b0f2-4763-9d53-6b375e55a3a3", + "name": "Full Scope Disabled", + "providerId": "scope", + "subType": "anonymous", + "subComponents": {}, + "config": {} + }, + { + "id": "ac09829b-6a6f-4437-8104-c01b83e8087b", + "name": "Allowed Protocol Mapper Types", + "providerId": "allowed-protocol-mappers", + "subType": "anonymous", + "subComponents": {}, + "config": { + "allowed-protocol-mapper-types": [ "oidc-usermodel-property-mapper", "oidc-usermodel-attribute-mapper", "oidc-full-name-mapper", "saml-role-list-mapper", "oidc-address-mapper", "saml-user-property-mapper", "saml-user-attribute-mapper", "oidc-sha256-pairwise-sub-mapper" ] + } + }, + { + "id": "03339ad1-172b-473a-90d1-015f0bcfebe9", + "name": "Allowed Client Scopes", + "providerId": "allowed-client-templates", + "subType": "authenticated", + "subComponents": {}, + "config": { + "allow-default-scopes": [ "true" ] + } + }, + { + "id": "3d4a3dd2-45b0-4ca2-93ef-33c2ccbe8aae", + "name": "Consent Required", + "providerId": "consent-required", + "subType": "anonymous", + "subComponents": {}, + "config": {} + } + ], + "org.keycloak.userprofile.UserProfileProvider": [ + { + "id": "b3663733-a7eb-4bbb-bf5c-dd23fb89b02f", + "providerId": "declarative-user-profile", + "subComponents": {}, + "config": { + "kc.user.profile.config": [ "{\"attributes\":[{\"name\":\"username\",\"displayName\":\"${username}\",\"validations\":{\"length\":{\"min\":3,\"max\":255},\"username-prohibited-characters\":{},\"up-username-not-idn-homograph\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"email\",\"displayName\":\"${email}\",\"validations\":{\"email\":{},\"length\":{\"max\":255}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"firstName\",\"displayName\":\"${firstName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"lastName\",\"displayName\":\"${lastName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false}],\"groups\":[{\"name\":\"user-metadata\",\"displayHeader\":\"User metadata\",\"displayDescription\":\"Attributes, which refer to user metadata\"}],\"unmanagedAttributePolicy\":\"ENABLED\"}" ] + } + } + ], + "org.keycloak.keys.KeyProvider": [ + { + "id": "6cd2e74a-bf15-4eb2-9e61-f96ff1469358", + "name": "rsa-enc-generated", + "providerId": "rsa-generated", + "subComponents": {}, + "config": { + "privateKey": [ "MIIEogIBAAKCAQEA2L0UQfrN5cm38SfRQI+olvM+VczKOJTvx9xp9+Z2BSyB1zDdgeEsIg6eB6gQ+KTWMeFSmS7VJQsUMVbDGwy1vPrpiyvvjo7Y5OVCc0nfP8rPdo66qVptZOkGNxi0RmN5TXak7zgLsBd4jfY+GLgsrD79ubrgPe135G+4+EFnqu3FavhmWpH5lKloWsMQSyJ8vzDWM/Sk3uF7NKfEj5uvNosfppoxA6Ech4lRW+NrPsSVjots0EvE5W+e5bqGb7B9aqIu1ER7AltQS0wZ4j6Q7cfQMqlh7Hz1YIFEUq1G3gFj3uSCANRVzuG1muIe2kGVWzCNjw0dfkA+wKQEm5c8TwIDAQABAoIBAFX38bAWFlNeBrr96y8rjFiLlR8dQtzcnpts3w94dzmoJLxBYqsgsIu1tpMc49ZsM5XHZSbjf6HY2iKT4oG5MeEKuVX9kGDAYmGwWgI2u/mmrVG+XWXNO3T6RP/XqbH9xOCn/dXxKhmnxaaxlIHjk7yio6tm54lIxvRyKDE4aDFQsVYX5BnpAHXsN8CqQ3WYUbfGur5VzkJDmdXh9/ogNTL4rulmjgvP3Gt3+0Kw5svzeWotvOgZzIxz1Ww0KhBmEynCFnIppeT/EHwiaZSfD1MGTbcVrc9EDXMg+IIyuvd7sejxbvX0l1hqROV6jv3zsT/+IXoauQrna5fQ3sfUTskCgYEA/OzX3GZs2o7GWH91ix2whsNwsHMBxzwTxuBW2aGzImQu7XhPWOI9g0tpU7G2Zph5v84sB8CgVjKrX7LcHcmLQVqNUr/LUUiiKn0hfyqyA59x14juxokmspQu7NK7RmNRf3WatxMbYFafWFdMsWWE0mABX0rfeOe+beYH9VweIZsCgYEA21+dmOoyjN5t0vooFilwbmyQvmNRYah/QP5+BewBgv3Zq9AwjjALOtGBjF2+WdEjdXhzaj4sz0aP9HiqfLvFOHC803NbugNCTnnPHmojFvsakgriyb5LfW5+wpNxLY05dKtG0cx4VUB2yEuJVFuv4N+Ec0n6ETcu64AcgHRHBV0CgYB5Rhc61uHa6hqw1GzIB7Rc6dlewcZYgbX55he+woniM6dMtiNVuyVDjyUxvER5bSLzlSgHj5VRv3nsqRZiMgFTlNeulcgncWxQcy9cilxQ4GL1tfLHv3uOpP7bDzA8z+KD+x/0KHU3/FDrSvC7HrJRLTd7OattjbEBgQrP2xuXgQKBgFgXbES0fvocc8ON2r0ThOeCxxj87vglXnxt9ZNRM0Yzw83/uw/N8SR8buY72q1ckz2f0dDvCLVvY21La0LNcCP6+Yh7wXDP0DeNKIPRISggS4orvug+dzf2QAbIiGE/Xbwg7z5eOlAZo9lIo+vxKY5Gk3xsT3PMUhYVitx2VPKtAoGAdYlxJVXt47D5cFm3LEJgJyBKbR2/OR5hL8wiR38Sz3/tpfZo5hOu4lshrSnsYhAU1SAuDhm9DwHkU4p5o3yPXVN+uccoJhmKwVOSYVQ+H3wVWjO7Z0Ffv7pwxdXhvXvtRp6zLXWo48wsRGLuPptFSgDd6D5hXAh7DlM3YEJZuGo=" ], + "certificate": [ "MIICrTCCAZUCBgGSLTr+ezANBgkqhkiG9w0BAQsFADAaMRgwFgYDVQQDDA9tb25hY28tdGVtcGxhdGUwHhcNMjQwOTI2MDcyNjMzWhcNMzQwOTI2MDcyODEzWjAaMRgwFgYDVQQDDA9tb25hY28tdGVtcGxhdGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDYvRRB+s3lybfxJ9FAj6iW8z5VzMo4lO/H3Gn35nYFLIHXMN2B4SwiDp4HqBD4pNYx4VKZLtUlCxQxVsMbDLW8+umLK++Ojtjk5UJzSd8/ys92jrqpWm1k6QY3GLRGY3lNdqTvOAuwF3iN9j4YuCysPv25uuA97Xfkb7j4QWeq7cVq+GZakfmUqWhawxBLIny/MNYz9KTe4Xs0p8SPm682ix+mmjEDoRyHiVFb42s+xJWOi2zQS8Tlb57luoZvsH1qoi7URHsCW1BLTBniPpDtx9AyqWHsfPVggURSrUbeAWPe5IIA1FXO4bWa4h7aQZVbMI2PDR1+QD7ApASblzxPAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAA0tXTXGYlKYHdoOAZfQubYJqRaPcG6x4WhTW1T4Uq9JgqTQgkP2argMJUEjSKuxIIdMy07EcZQUocTgUjYFBk2lbb+q4gevF/p9rd0O8h6+7cKc97O+Tg8c9oAjclrZNW3eQoIfXb+q/w+BCp3jEi4UANeBqRmAlnf1bISJRmdwytiaIH/7UbWyibCoy1kHUG2tIQwVbedm9l0emjuhnpQYoWPcIqQ5sAfklFQOZrITHmAGp/mAP3AcvRC3arEvL+rqI9o2YwnGXF6QJUUKu+PbzTUd/OGgXUvUgsmRyUho3y1+NVjYsqJbByeKRqB0BWvfG4oIX4hkrzemvThRSm4=" ], + "priority": [ "100" ] + } + }, + { + "id": "625a5c13-6018-4e47-99c1-a53a022182ba", + "name": "hmac-generated", + "providerId": "hmac-generated", + "subComponents": {}, + "config": { + "kid": [ "9a1a66b0-b97e-4b6e-b70b-c2131d9ee811" ], + "secret": [ "-t6mPi8Kjo57jfFChR25YX_3Sp29Rz0jLKrNA6J77OTguhCF0IasnG4ebxYT-JfkxGBJHgaBq884dlkSvTc5TGDE3WFYgh-yK9I1PxsHIhUNVLGRnutfQPJ4ZyX9zrkpGJeiDIT6VcIwrWeNGH3ZJS926jHg-3PFJDKBnIXk5Lc" ], + "priority": [ "100" ], + "algorithm": [ "HS256" ] + } + }, + { + "id": "263211a9-f9c2-45ea-a3e4-7a8103a1d9f3", + "name": "hmac-generated-hs512", + "providerId": "hmac-generated", + "subComponents": {}, + "config": { + "kid": [ "ce6a4cb3-f17c-45d8-84af-6fb76ddfa8ef" ], + "secret": [ "tvdeRq3RrAN_eRiRaz2aMucFei4n1yRMnp9zaAlXYEVwwVX4-nD9q0rQ81VqFZEK6Rfza3mZYw2NWDy7jx7cZtBwQwxWNbtg8d1hnUKMhBLq8XxrhWQI82EmqzsuUQUNcbFYR4gKGgxSp5QBT0vdLGExpbKYLEDuywyMFYInuYU" ], + "priority": [ "100" ], + "algorithm": [ "HS512" ] + } + }, + { + "id": "160cb3d9-53e2-42e4-bc12-4437386c6367", + "name": "aes-generated", + "providerId": "aes-generated", + "subComponents": {}, + "config": { + "kid": [ "ff12b9ab-dc2e-4124-8f62-81554ac132e4" ], + "secret": [ "jXHNjTgza3t_hqtSbHP7Ng" ], + "priority": [ "100" ] + } + }, + { + "id": "8511446d-af34-4a9f-935d-38ab0a062688", + "name": "rsa-generated", + "providerId": "rsa-generated", + "subComponents": {}, + "config": { + "privateKey": [ "MIIEpAIBAAKCAQEAsNvEgLu8blqIZYxlfIxGqvvAP8ssmbjzcIiBALgS5l/reT4r+24evhtha5bz7QirSLta7Ej/X+w5InE8sOGYAfjSLHxmgYPVruAI3ehOibcJgPlPif/TIIDMvgAABkseVoTllQrHqKTlp3UgeJ4HXF/bs+O5qUgV3OttEmaT+6X4apZjC9ZHdUrB1RmObUKVdRPc/K2myFtXj0fhmlvOZ9SoroDlLFml5G0Uk5RkHJvRIN/hAXa/KGgmXy3qPF0xdn0ta6yJUOBuCkVvJh8sbxLH4D2WK5/LZ0MLcMaPj7yiFTUu+k3CGEEMrLu9YznT6T1QSOGvRE4J+SFVPa3mbwIDAQABAoIBAFApJC03KmaYSTdBxeQITqWEGvSvOcVpI4nvjQ0O4Z4ifr/C8rtxA6UmEudpkaDvq3b5WHI9eeZ30sOuMJR5g+Ts6xI3xlxQrWMob0xpVWOtHzUiiy8g0YhraKF7rYcsuBD+BnMh4jIpn1/hwjh5ZBu15QZposa8AhDScmsDLHLD2+UCxpD/5IJYmI+T6GPqTYeA2Xn/bmID1v4Z0Bce/snoXP6IRjwH3xPanadOR41RSgc6qU7VFlG8Dc+IfJjF1v3VWwWHaRZQsKIJYJ7lhRpUl6pVypEJJoi+/8ltIHY14fEQsjp/tSot54JP3LDfRulXffpwLcmUWslqpONz/jECgYEA2FqcUaIsFEcCuqYDeEpx4aagsseyYd9SlX22GCVFcn0XeKvmpNgwDPOkKnkRPpJAOKCPDpsM2sCaF7SBYxBdu0H8JYBR/yK2SaBXFcQjEyQY31Czh565lrimk4k5/4qalC5FAHYUfQpgkZzBMa0/noDA+Zt1jWaWGE1wPq+nNtECgYEA0URh/X1GpX2nf0pQ2Z/qa2x1GHRplV29ggx15qpD7b4PkwRn3wSM/Y5ul1OCbaGNAVvm7wrzCF3Wyp3QH9ztHrCae1cDWj5rpllKB0h/3OFja9902SYo116BKUf1IxZNRxa5ngEkHoTP45Yv5HwyYB1evsKjnDMUr5Vz+UGdGT8CgYEAomy8KGkYsIxzFw8lUbyJ7H8865sSZ3nSNRqwh0YL8hzJbzWWrTEEOeT73UsQ0CnZ/ulDHRL4Po4T4TIJZQbXZ4rtMnY4mNNFiNbQKi4aqvcRmS2r6mgWKnorzF1cZmV3EUH/WY5MaWdOAmNtgs7vER7WQU4dnW9jxZD1cIpMfdECgYA2asPYeQUv75bowNh5Xt5EhPWGIG98Sd4HvVnDW69CWVQPdOvV0IchQDJ941ddTs8t9Un+CyjbmhtKoPMH9hkrC92ACUZz5xtzLHDVqAKn22xRFtB5zzR7nLWVmIKkVx5NSBmIft93mC2/DsTxc2JeIAUNMev9qELOzdxUir1hXQKBgQDDLz1yG3mxFP/Q0n/rfL6luJlc7B4DeMQ3KUcRXgsGJt5B1KAz2UQR2QPND63y79sdTeBqmStAvbeQk7EO/zdZI+8lhmpAylGBpAsUqVjEnZDav9XoKZ6rPlYwL0jCTK1aUUookIUIENN+iuUhTseNOKwfXrRzoDkBjh6xkzJLpw==" ], + "certificate": [ "MIICrTCCAZUCBgGSLTr/ojANBgkqhkiG9w0BAQsFADAaMRgwFgYDVQQDDA9tb25hY28tdGVtcGxhdGUwHhcNMjQwOTI2MDcyNjM0WhcNMzQwOTI2MDcyODE0WjAaMRgwFgYDVQQDDA9tb25hY28tdGVtcGxhdGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCw28SAu7xuWohljGV8jEaq+8A/yyyZuPNwiIEAuBLmX+t5Piv7bh6+G2FrlvPtCKtIu1rsSP9f7DkicTyw4ZgB+NIsfGaBg9Wu4Ajd6E6JtwmA+U+J/9MggMy+AAAGSx5WhOWVCseopOWndSB4ngdcX9uz47mpSBXc620SZpP7pfhqlmML1kd1SsHVGY5tQpV1E9z8rabIW1ePR+GaW85n1KiugOUsWaXkbRSTlGQcm9Eg3+EBdr8oaCZfLeo8XTF2fS1rrIlQ4G4KRW8mHyxvEsfgPZYrn8tnQwtwxo+PvKIVNS76TcIYQQysu71jOdPpPVBI4a9ETgn5IVU9reZvAgMBAAEwDQYJKoZIhvcNAQELBQADggEBABEDI32I64LflHRp1zwd69X5hb4pxSz1nAFwWaxs0lZFsAPzxW5v6X7+V4eS/LiXxn20mnQWoRZLzWl0l8pPKrMhDKPNxeLv945zPI7qMgltdb8KPvkpXzMCVKpqLjelJEtbS2I+7qKAJKN67H9jW8GFKGri9u7CZDh3b48VDwnf/I9UUOgnfPKz+RuZ3J+S9+657mGIYs+cJwJXx0e2zV4bQqPT4DYV2W0msEqULlHXKbB/vMfwv8nASmIRwSIq5JfZ0hZ9ejuPlR0GnSpBRfiq3FKdDjHKjgRSEvs5bOtWw/rmWQdUiQriJxem+/HcfmLjd352a+i7FkXjbm07T+Q=" ], + "priority": [ "100" ] + } + } + ] + }, + "internationalizationEnabled": false, + "supportedLocales": [], + "authenticationFlows": [ + { + "id": "205ad146-f5c4-4e7a-9419-8a2ea73b19d4", + "alias": "Account verification options", + "description": "Method with which to verity the existing account", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "idp-email-verification", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "ALTERNATIVE", + "priority": 20, + "autheticatorFlow": true, + "flowAlias": "Verify Existing Account by Re-authentication", + "userSetupAllowed": false + } + ] + }, + { + "id": "d3d92cbf-7dea-404b-9b3b-e0e01d01b181", + "alias": "Browser - Conditional OTP", + "description": "Flow to determine if the OTP is required for the authentication", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "conditional-user-configured", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "auth-otp-form", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "d10429c7-e0b3-47a9-ad34-a99eb2c1ae0d", + "alias": "Direct Grant - Conditional OTP", + "description": "Flow to determine if the OTP is required for the authentication", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "conditional-user-configured", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "direct-grant-validate-otp", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "718b5472-a9bb-4dba-a1c5-e48f8f5020e5", + "alias": "First broker login - Conditional OTP", + "description": "Flow to determine if the OTP is required for the authentication", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "conditional-user-configured", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "auth-otp-form", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "fa17826b-1ce9-4ec0-bff5-da0e1754ab7b", + "alias": "Handle Existing Account", + "description": "Handle what to do if there is existing account with same email/username like authenticated identity provider", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "idp-confirm-link", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": true, + "flowAlias": "Account verification options", + "userSetupAllowed": false + } + ] + }, + { + "id": "ab73883d-7755-458c-99b1-daed2e7d1fc7", + "alias": "Reset - Conditional OTP", + "description": "Flow to determine if the OTP should be reset or not. Set to REQUIRED to force.", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "conditional-user-configured", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "reset-otp", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "b3df1fee-f37f-4bff-a6e6-b801324228f0", + "alias": "User creation or linking", + "description": "Flow for the existing/non-existing user alternatives", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticatorConfig": "create unique user config", + "authenticator": "idp-create-user-if-unique", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "ALTERNATIVE", + "priority": 20, + "autheticatorFlow": true, + "flowAlias": "Handle Existing Account", + "userSetupAllowed": false + } + ] + }, + { + "id": "e38db072-8687-40eb-a35b-f9c375da1e01", + "alias": "Verify Existing Account by Re-authentication", + "description": "Reauthentication of existing account", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "idp-username-password-form", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "CONDITIONAL", + "priority": 20, + "autheticatorFlow": true, + "flowAlias": "First broker login - Conditional OTP", + "userSetupAllowed": false + } + ] + }, + { + "id": "83845f6b-6f32-43db-9de3-71299b05a7ee", + "alias": "browser", + "description": "browser based authentication", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "auth-cookie", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "auth-spnego", + "authenticatorFlow": false, + "requirement": "DISABLED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "identity-provider-redirector", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 25, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "ALTERNATIVE", + "priority": 30, + "autheticatorFlow": true, + "flowAlias": "forms", + "userSetupAllowed": false + } + ] + }, + { + "id": "39089091-f930-4d29-b20c-14e2a7a3a861", + "alias": "clients", + "description": "Base authentication for clients", + "providerId": "client-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "client-secret", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "client-jwt", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "client-secret-jwt", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 30, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "client-x509", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 40, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "dfe90700-c265-49d6-8cdc-23855b75ef03", + "alias": "direct grant", + "description": "OpenID Connect Resource Owner Grant", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "direct-grant-validate-username", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "direct-grant-validate-password", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "CONDITIONAL", + "priority": 30, + "autheticatorFlow": true, + "flowAlias": "Direct Grant - Conditional OTP", + "userSetupAllowed": false + } + ] + }, + { + "id": "1c1a942e-ec7d-4312-aa4f-f0a571da0bce", + "alias": "docker auth", + "description": "Used by Docker clients to authenticate against the IDP", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "docker-http-basic-authenticator", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "6d7fab52-2a08-46ed-8a19-fe27284baa47", + "alias": "first broker login", + "description": "Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticatorConfig": "review profile config", + "authenticator": "idp-review-profile", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": true, + "flowAlias": "User creation or linking", + "userSetupAllowed": false + } + ] + }, + { + "id": "fc94d7d8-5d72-47e6-a4de-4c1512d71e16", + "alias": "forms", + "description": "Username, password, otp and other auth forms.", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "auth-username-password-form", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "CONDITIONAL", + "priority": 20, + "autheticatorFlow": true, + "flowAlias": "Browser - Conditional OTP", + "userSetupAllowed": false + } + ] + }, + { + "id": "c5d70775-bdc7-4826-93b1-0ba233ed4e7e", + "alias": "registration", + "description": "registration flow", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "registration-page-form", + "authenticatorFlow": true, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": true, + "flowAlias": "registration form", + "userSetupAllowed": false + } + ] + }, + { + "id": "9b95767e-b8c7-4570-961d-13e8e59aae7c", + "alias": "registration form", + "description": "registration form", + "providerId": "form-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "registration-user-creation", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "registration-password-action", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 50, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "registration-recaptcha-action", + "authenticatorFlow": false, + "requirement": "DISABLED", + "priority": 60, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "d7b400a1-9455-46e1-8322-10ce0a3cbd07", + "alias": "reset credentials", + "description": "Reset credentials for a user if they forgot their password or something", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "reset-credentials-choose-user", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "reset-credential-email", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "reset-password", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 30, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "CONDITIONAL", + "priority": 40, + "autheticatorFlow": true, + "flowAlias": "Reset - Conditional OTP", + "userSetupAllowed": false + } + ] + }, + { + "id": "39c225ca-9d35-42f9-b535-f477b40182df", + "alias": "saml ecp", + "description": "SAML ECP Profile Authentication Flow", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "http-basic-authenticator", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + } + ], + "authenticatorConfig": [ + { + "id": "54c70413-4884-4178-a662-96440d3dca17", + "alias": "create unique user config", + "config": { + "require.password.update.after.registration": "false" + } + }, + { + "id": "f053015e-b577-42fa-9cd1-5b723eecb72c", + "alias": "review profile config", + "config": { + "update.profile.on.first.login": "missing" + } + } + ], + "requiredActions": [ + { + "alias": "CONFIGURE_TOTP", + "name": "Configure OTP", + "providerId": "CONFIGURE_TOTP", + "enabled": true, + "defaultAction": false, + "priority": 10, + "config": {} + }, + { + "alias": "TERMS_AND_CONDITIONS", + "name": "Terms and Conditions", + "providerId": "TERMS_AND_CONDITIONS", + "enabled": false, + "defaultAction": false, + "priority": 20, + "config": {} + }, + { + "alias": "UPDATE_PASSWORD", + "name": "Update Password", + "providerId": "UPDATE_PASSWORD", + "enabled": true, + "defaultAction": false, + "priority": 30, + "config": {} + }, + { + "alias": "UPDATE_PROFILE", + "name": "Update Profile", + "providerId": "UPDATE_PROFILE", + "enabled": true, + "defaultAction": false, + "priority": 40, + "config": {} + }, + { + "alias": "VERIFY_EMAIL", + "name": "Verify Email", + "providerId": "VERIFY_EMAIL", + "enabled": true, + "defaultAction": false, + "priority": 50, + "config": {} + }, + { + "alias": "delete_account", + "name": "Delete Account", + "providerId": "delete_account", + "enabled": false, + "defaultAction": false, + "priority": 60, + "config": {} + }, + { + "alias": "delete_credential", + "name": "Delete Credential", + "providerId": "delete_credential", + "enabled": true, + "defaultAction": false, + "priority": 100, + "config": {} + }, + { + "alias": "update_user_locale", + "name": "Update User Locale", + "providerId": "update_user_locale", + "enabled": true, + "defaultAction": false, + "priority": 1000, + "config": {} + } + ], + "browserFlow": "browser", + "registrationFlow": "registration", + "directGrantFlow": "direct grant", + "resetCredentialsFlow": "reset credentials", + "clientAuthenticationFlow": "clients", + "dockerAuthenticationFlow": "docker auth", + "firstBrokerLoginFlow": "first broker login", + "attributes": { + "cibaBackchannelTokenDeliveryMode": "poll", + "cibaExpiresIn": "120", + "cibaAuthRequestedUserHint": "login_hint", + "oauth2DeviceCodeLifespan": "600", + "clientOfflineSessionMaxLifespan": "0", + "oauth2DevicePollingInterval": "5", + "clientSessionIdleTimeout": "0", + "parRequestUriLifespan": "60", + "clientSessionMaxLifespan": "0", + "clientOfflineSessionIdleTimeout": "0", + "cibaInterval": "5", + "realmReusableOtpCode": "false" + }, + "keycloakVersion": "25.0.6", + "userManagedAccessAllowed": false, + "organizationsEnabled": false, + "clientProfiles": { + "profiles": [] + }, + "clientPolicies": { + "policies": [] + } +} \ No newline at end of file diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Imports/Pictures/CSharp-Logo.png b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Imports/Pictures/CSharp-Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1aaf79499e36489001df01bac98a54f5ea6e9bed GIT binary patch literal 3769 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 literal 0 HcmV?d00001 diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Imports/Pictures/MS_NET_Logo.png b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Imports/Pictures/MS_NET_Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..00c1d57b19c1373a779a581ee416fd1115cd9794 GIT binary patch literal 291461 zcmZU41yCIA67Aw1+}#P55ZnSGxVyW%yGtOr27s$VN->drXn<{FH z-K}qD&UBwXeZHPBd08uvzvjV3Bb+GjoHH1%E`#U-h|oC z(Jbwhj{pE514syeQ+7{3Ua@f3p7Wr+fAczRtHYI_M?eF(NnlYA$J1HX<&H^h4lY)6lDa98!Z}t)oMB{2aNh;*hF>ki( zQ-%^3->hDZ!zp6mqV+1OG$7u;eH9l5HSM*EU?Bx-y?N_roYm2H6cpOH)lg& zDj;?tfRKR{7s~$@z~;Z*wDbinA3&9pij^1%6HgHu@+*4#{4SE+dAR&VyF zI{!%7(if-z0olQFdpWI@&$YB-TX#fG@vlP@VfL#d+b-=24py5f*CHec2fg;&BqYNa zTCF+DKGTPowTShXJV*d6z2~a5=fO7VGL<|;emv@rV%x!~irZ@h6)Fan79(XN39RIL z4UgWQ>XG0|0Blw0zmMI$k1n2pti<8jVl%Gv(lG(`z-*Xs96_zVWK|U#*hvh41Ok9- z@2{dGGflxg8H)*0-zypk!qgwE7;Znsp@$50#!8Anvc^k&O%6yaB(Aux>~nbk`zz*s zOZOQ;Q{BRaBGx6C(PeP?BS2TkeGHInXqnjOd8AHk09t_H#9An#zo1Lf3Xu7G&VoMA zn#%4^p;`)r^G9IP%#>sW`jvG_{FPGFm)*%})S>he-v94s7POuQr_|A6?0(b{LM#Bf zL;+TSYrsCebT21^_t!zU@p%gdI+wHHoa$QKp#C+Gd4jBNlJaG)MtfIhOR;g_=JMKPMX9 zhZiFYZ=Y!qY!xxIge&ir63$Y zuzKSH9bfPtQLYSCc23jJ>3Sjc-!5Sj!v!RogwA}xR563OB#ylnD1 zEPSTqB6-lsUmt6P*ZJ?$%nhG^kF;guM^UkA;_wrCS6;{kXozeBHQWzch|yLo`cL0- z3oy86L8;z(1X3atwmAex@;36nqMr{q?7lJ4;{Wf0fA&2L8>M_iq4>p^9G(q{-9)45u4UK5Hj{NJ07Q?@nL zWlUvw_9Hb0@>W%_9?CbbeNEK9z}A5s4ka+5Uj7iFSxH}oE6Cqb408VR zC|)<~sI3()f?uhDFf%+q-H;!G>%^Ev{;$Xpb}liSIXNM1gb*c>2f?8Y>d=Qm0Dc6N z!qj~07{hMvW)3P|#qWAEw}{NDnDv}e{xab{c1inT272la$BXa(Tg_tK(*B&8y}MH- zqE?ZwK(pw_erbAtczW{JAv7xz8m zzlmA1UzMMI5~sRxfS%-+{`oZhUpl~*AjpsfV|3f=pHmXyd$MkruT?OCS*n9U@Yk*| z$ahVMKeNVU1g9`uiG^Kc>~r%}xVhq0z4@9H@D zggvz=qHXE~TNG+P268}XDog(a)`#U{!=eKu=qUW%A!WWn15+W${1Mk70NMu_chwN^ z^5Hy#AC)O8qzU1P^7@j$twR(D3txVm`-QYsrep z2KWn~jUGGy;HR?FMmEX3KKli@sS*X!1QHy1SBVC9d{gmZWN(j#K?EivU~#Jq!2v}` z&&#nHCSS zD`Ky%M()hBnz5qET$DhGo1j*v2N*5-M9IER)Jqt`?JK&mZL0I2P$n#EdF0Iiy&t<$ z4ps(%-d|12Gt*QP4xcJe0=b8ia=GF$2a30NxVIWT9H{LnY=^=csW14BM2Xp_Lb)o! z@FpVggWw}208*!=ad5F(n?wM409DJiMJ;?>ibs@k8m@yW^q_{AY2? zFQhfuAxPX%6lSwi7(j**g$0SpG|o|!s0cVp0(7El$rs0TCP{8$L)Q87(e1w6?k$-(1{Jb?bQcAG`2J zjX_rtaX50RoG#QAb3zu^=kgl`C>cW~Hdch3Jeku>K((%Y96AEPPw4M3ev z@^iAkAx7tX(-JLKa==t8X=vr7qJ#kyCAw8mvXCaUDYm{E)L)2f8;B#_Ox^R2aNuvU z@xa;QbHkC>C&k@9f#-JdDK+A{&c@&r#4@J)0B9V46$cgS-BKE1s)}$d{b_$;T;(T5 zC>(4a&Ea_w=$fR~TZ}-BD^{vjvYDqpX=ia*BiGbd$LQeHu6{2&5LQ zYnWidJeY|I&_5<8do4zY4zwB@4@>lh>r&9mj!J#4F@mzll($ zc-!|Dm!Y<><$BTtHq5!2yne5nixSRl$~<*f(IQcFX{xg0^R(&_=idEK2{LcGclGNg zM5zc$J`ypZ%sx^vCRUz>^jwvd-3u;b{-C15?9Yy1g_>;bJDQTBdSN5`Y^YpT5oE~f z?+_X(=)&$l6O5!Mj0Q;lVc6|p-%3eLs0$)W(*O}6rN(E@rAOMbi`HjfwzQc-Tq8Nl z!@SH6XQN6dDF+I&69{Snto;osp;rK-Lb&Ql23d&Ajf_wx*t)IK(}|FYAGa(}8;0 z-mohGWkc-vA}@Mw{*(jK@v|iib}6^%-uF( zlgEO@{v@BzG>Iqz_t{O*?3+PuY@i0V-5%#ahKhQNaXCNwC{~E$7G~4Ih5{`o+hQzX z#y*|tRff8-pmQI(I_GXiq^Y7$b&@lAe0Txz#0o&0fLVLJm(rgoU@txJ=z|m^H%+zs zxP>@w`B7Q&`qHxn39!d-)Sk?fCs2P?IZl zLg!HnxO>s3S<(HHB<(U8kIF~#9IR=s9tNQ^alSR$y6k@HQE&8e@uW{}Jr;dY9uUsy zbH6SqY8Z50*kzpir=BX4%Vo$mEo_#f?a>6-!Wc7T^OM3BjK7?{*emxzsVhP|qhi_d z_C1Gw#3@S|hX__osCKPEtPsE*O#V&ZPVQ6LM*hdmN$z`n0~7WTRl2RwC<bm;D1bD@1nxT`e?ju^XtCl8me?*_`w?64+S zLXp@Z2EYyshj7GRgXyN8ENxx_NO!&y+KQ8H8`#FI^0V60aKPrEZ6`f}_VIm9%dxC1 z>uAr@a>V6|DmS4~7kT~$rd*m%n;{TpatY9e9)4{|Vt8*S zgbgS&8tuxQ?cHFqA}I1oHDsCs=YgP>xQNWR3(xFkR@9V1EgSiDO@Q0x@&^WF@kE0t z#Nw2*5lAEi|LK4j%&*4%4dNw|F_0%nDUzR_`Zhl(Kimi|LJ{zv~A!#?Yj6{8t#WMh+;5T^S9)1RlAz&bH<1ssru5_wJk*$FFM1n zmCDehPISJ-rNjqUJS$p4OjhD@^vr3E5aIRT7(;uRs}y~I#BN{~MdaI)ks)=Wp>@)v)1mF;0HiS!wS3;_xJci+%fCCr zNY_maYx8+Y?Z1f1K(UFdu|e8vjV}+x>V&{<)x10zvIs^{t}k9E0Yrh+y?r^8Jiy4! z`73i5!DB%M3_A#Xeh_3Yz&Ro_*Vs?LK^xU9v_UQkG`tXWwf1!1?9G-YI@_2{bMjGQ$RMQUgI#PDLB5S!NL%|V1hB_bD5+|Jku^EZ@{r#x7mgvzn!H+nrdZUddxtF^YoM)*HvF}`Ou z=$1ID*(~Ig%~GH+&?{&Dyvqj{E*FT_iP85D5VrAyChxfMZe8%w(awA$~YdJ#hTK2)dJpasD^2xngZ7)Y+AAMGEY6xp%6 zH4RznuGPziB?LM@>WP$rNJ7ink1u|wROOc6&G*|^Y_ul@zD(zBeNUhbNw3CyA#REr zibC8$Sc(nX%eYlM$djc}vNsH)aTpb4tc@xk^bc#SbZ07|yvV$jz;wXxM+^|U65Te> zcAR9RLOorkS*Wsl2Q4?T^r)o0R7T%d#9t3~65o}dLAwj}*ec<{yH=iVIZ{J&bVBWq zF{+r)iv3QUurqhG*{hSC*Vc$Z`C8joR%~=r%Ouh<9UrN~ho21g4kZ5t?ff^C4Las> zso__eSTF2F`_(qbt}J@uPK=>%C$yd6-qK zC52bpc7RDnglg1U{1eNNWcB&@za^_Us~)XY9e8lXe+Iu|`L8-MD@f(!?qJ2z9}$EL zlEXj2I+@y=Vq~22;`6aCCZY zKTrK$L#8epZsYP;2xIt*RXd>Lp3rYU)+Nf`sJCyQrHz_aqL!WL9y*H#NUu)l)PDbh z&h$gl?+$o<=3aq0{D3jxgv8&LqKIduWWxQheqy(rK~&tk{A?imF2)e#_;=i=8|*L# zn)F1@eh#~ku6kTVE33fkhn+eFt`C^H=WiQ3tpI!>JDZU#b)$1i5oru4Du`B>(^eZ? zWH3_|rwF0EA`_KAXu`0? zMxn8(wI;3;asG+gcpmuZT=hAHpUc-V+kIDF&&t)@xJJcmtks#G z#`fA19*F;==JRD?TJ)K8#Sxx!JhD-+xpu&va8Mhsz^pgLvEe@qP6$|-38PBG@l<|ih6Q+;CeH<MkiH7`tmAl z4{W&{R~GxTSvG7sF}};0{OQ2j7l^#qL>B%EtG{GO3tT``y@x1~EQ>>e^w1&?(A3Tg zOrkDV+t61{wn6@cN9aq~ldebC&gyV^y?+2DmNxJdVkZyUhb+uPj1%9^pIdewl`_-D zjM7EQW;ssXCAZVQvUXOPZV9V9QKApwH3}A1ffIJ-G&Nmac+gklIQD!8sQ9+r%e$Bo z?Fk#k7Yf{?+?3f{mbbH{j3qhtZMrI-Zw?7d$n|>@-pW1*yD(*3`Q)6+)4tJjcfvNn1kFk#u-!8XFN3Jakv^x{-zMB}71JWm3;w^8@>@3A( z4!~#JVr~Xca264DkMQmzG+B>W#>;Aw}yTiyOkMNU@7;M#c0#* zuMI@NvpM~w8Vw`Q%qBS?<$;9A*Sf_HFfHi%*BeKlkW^Fgglu|O$z>GS%Nlp8?EUlF1kWOgtaI~`1 z6@Ju8WFga*q}gHlmq5u)fcQ5Oj3{v&r;Dj4u3O)Gh11;lr^B5r!n!R*^B_BRgf~O% z+gwUmSY~gpD=n=vXPoR3o~i)OdJ2!oPcA0k;~pqG(~nXR5K^+1k4czXB%#-J#nGOc z&+8qy+~>bLbgAE;2`N{owVu-fSxO-0R#G4aRJJDsBLt1gMLH*k?{Z4|X~-fRgiTw% z{yRL&FubBw1-wqqPwZnH_%58vCB+OW)s}CMwVwu%0{F;s-A3;^u`y!l(~#z3-3-R) z{Ez&RzI$8&3xv8D>siuY$W-{*eN2znJ6pskdw$B=*7?TjcFrh&G%Rc_EL@2zOo|U1 zsD!A>m3597L}(y?eYx*H{YrcKhu^^6Tky_uy|wvhYv^2)3JqMn6hJo5{o>!Jm|ntx zuN?k$26Nv%8MWw0GDmmnOF;Au8ER}hC$V%(G8jxrp$paZr59QTb5jcm$r6nUU@#DZ zlm6OX4)`_8NG9q=$Pv7AO$2`dx>?~Hrsy`VfqfB>hqToOXb6x}Mgm^;49@rJva(l` z00rQ(t#eAx*WfGCCqX+QwPuExZn{gZtwq%B62g`yQjb0!iD$@9hniM?2(d{F#Gl`8 zJtIi#wOyBa2n&C?W&dT4l|jU}c-LCfsNB8VU>WG$E9Iqdo2}(l!T5tFh!rFu{0dV7`Zil<2(I_b4(xe6slIl zr&R}beAPjY-Ye&W?~8Im(Pf4x2`_VS?bd<)LLRH7Y@$nRIznJ&HAO<0ph13Op5q*@!X0&o#!@Kew>1`%{v66)CV2J$$5gM#BA&IO0)bGxrMTaBh7NR3XWA_wg zsW$I|1}Y7;dMz$0zX-nTz}Yg#`&JgBOtn-W-n6(Q1RCe_l{(}`FBulY+wg-G1Fwr! zC2!ZS#7gT*(nuqa(YARP4(t)8C|aJar;IC?@mp-EYL1FQ;b3pV>+U&L!-Rm*#J#RyPq8mt^C%n6F(=xt6e1(8(OW=ROT~ zli@c4sM#Aq2FN;~Q2WQNI?n#W)28+pVKb*^%bDRY{;uj20B?xYqM=HM|A=+9-Y19> z5oUhU9_G<+P}(sgwW4Wm`{tQBWiVsh6A&ZKQ8}I9650TFOF}5{FzYp!cnMPvUyL0$ z7-sJE^sTbGL?v<|T=PCo^-Op*%*ELE*K)0=HdK~hR!&?i%Wj>J#be@1mO4A8EBkxI zunDxqpjuZ43ZSjyDlqJssWKnIb&ZFmSm*9PX>~L2dZ)DVpB7jAv*&~z)A&|j!{2rm zNN9#&7#5)FDOa|->OAi7;MhS_JUqy0C)KJr#_q8h1uk@|(LX_rM{uWTgO!3ezS{S? z#Xtx~bnflQnD&!snTp`U0SK-=9KG7}wRsk26@;iE@!J4GHR4m-Xgkr9^!>DRkau1O z*66RYS0_4Vi!}A$<&eJ{qXUSX1HM8vq3qR>7mFtskG7bMSy}JL#CiYUSpecXmeyr; zLTIs&m}^ubFQ2u=)BW&zhR-Xn-kr@OdkHhLY{b;M(nMhrk z7*cboV0j~adz@MX$dL{IiJ0QkfuHq4$7cxV9<6?>(cOylFpu5$qsl+e;O0VfM*CVj z$JwwFUxq_*>?TsjL;TLToLXmee>DS@y@bGB!wSEJEoD109u$+rMqg0_yPUGq%DF(% zJ97bR-!m#gP7A?Thm3ICw1C-zRQUpsgpRcm{}#{7$7gia*8*Y9)v%r${A7BH7|iOd zqMD*?yc5xZkNA7|NNYX?SXEM2Lnzh$o4THa=n1@~O zF}*Z-r2UgUiN1uV%fnVhJMbvm;kLiSpD|5|$?lfx+V_R#%p}!SRC6hUhM);WkncEN z6*;cKaK%PIw#*^}x#d@)G?qwlYm#I9#M`~D0bTUFwi7M$_1)uZwEUy*XBPVZnOGR3BZf1aQp8NaG%P`e*I*G$xi^C1&e01 z4^*9T-M8dmLWz5R(NfDew2rnDoR|BFsuApcr%XPd(QuyyxNh|m>w9~|nPRpJlk(|= z(!Gn6K&bLq9Z0(PIKUC&R94EvHp}^Z8aH=aCxe{X_RQJUz=(^}_=wOVBi`R#`U6@#Uo_|UkTpZ8gt@BGetX)ae@i9xl&u71Py&q8j& z34Bz|%1TbPWP+`0*aAIhM|c~Nhw6Axp^u4@321{Ypy?XD3=~BsnotNQMCGaXRCpv>Ge>@!nj-0#3^^oSN!7jVU0+gP@{80St1Z3d7b}g zUY8StSlZd{kRwigA`vy;@^gg;hYRQsH>2P9;qJ5uCKkc!q^9NTY$GOx%em|i@JX9{ zsJ}!ht!y^F{S@>=v1Z5PDV^v4%720@S&-IUVe<8hhu6Hq3flXICB3<=v~Lp&eoE?2 z1rV+}(kO71J*uFONUE;i<1DSAe-+8d1$>zFn)lua7FYD*)T}nkC+AhcI`mA$oGL__a zu=TH1xTwX*mmu6pR|`aFGrifXJ*VsXuQY{9W5?Cv)wg*MO4T}!sB)1FgT?h9y$9Y_ zweC2Gky>!x_0~?=`^1G6g&$d`T36D3juMC;b79%MLjInv`zsTVTr@CiNDIopWe1HZ z5Z%L2#%x#1DMs_TLLJFQE?Hd6>BJ_i+5IJFL}_c=Me91HNJNOcqmTAI0znOCGcK~o zd~|_+A7gJwY2bi_osKG^dG+V%-2CB&73ZvgW}GW~yk`2}9yr>ZF;?S3Vjzbst?9VO z6u1hz3~8~IeoGa0)Y+fDSMIZ!bl=*MvzeEo@cTA?SjiHubF|%OS>V4e{PJoj3op~L zvO&h)!t60RYrX4ULfL|%{JjzuDMaQu&r>hgYYY3?jZF44j)nCSu~yx#EBZ#XNu8ka z=vaQHtlknomg`4`48&FJj_Z{SQmah({~}{NqI4!&Xg!UqvLmoA*-<0k_tD;+K8>Fz z;nQ*i&r(1c3n`H!lcj~3XRha$>Dj;MgeA#J>1*f1aMh_xn5<(Z<~nU3rV1d3I$pMK zlM)QdC;o9AKt*rfUry^9QNNvZ0P?SnT|@&d;i@*PUJkO)x2)I1Th5-c(8;PNe|Ar* zG?f)kg8IJK9HtiaIru#+f)2X*=jvfIDTjtZ_4<9eb#f#lVBFf_$p~D(U6F_9{Gj|v z6u0CMT#Enc!B%H?Ni9w_@QP0#zm}yo*m`4(vhsxK_JrTHrmmhjQ;ebaSMx1OT((F+ zInr0nZTDQGlaG}pH{*yiq7h`UUPf&vZ)iuB^gnb)!VBq2_K{EuFPcc#82-yJpt_%+ zYhBiRDd4>T#C3?yhmBEb=DS(rdV5acqtielF?8cU0Yd8`I!Frqj>Hddo;-w^-vOP; zFzGyH+Gtii&4p#~ZndRm^rn{=C)Ilp2q#Kp|D;rLyLXGgM%2R3?D5}#TEFuHzeFf? zhps7Sd3WwP&gBERTh_^77|Hj*!6t5QPPWr|D8xIvQkWP#Ax!JHQ%{fxFXkMXGDsQM z;&W})Hv-<9%p501DTX8IM&mW13qEdo{l=ovH2iEuUC*N2*V}tOf9fOP=>*zNxsXAk z3!;}6j?vsA4VX#;SZH2)S3Ifa?g48FrEKZMd}@s?DNgSc=bTR*6&>oSk>fOZEs5TE z?Uv_U$&NL_920t|aK`zQq-yqc4RRSwbUzfQP<4s2QdcpG%a@1;->r87y7!5rbXJ{G zf(`-~gHMerxEQ^V{`v~v7y(tg-P7^5!r@kPrpE=8C7J3dx*mpFJt?29{$n*9_D~w( z%QVs_@++2(J(6{7(>W5#XuW1$7IL*M)f!h2@PyuBm zUqQtk8eoWukI!CbDdjXt{b=*3H1rig@6|dRZy9bq4_qF<%2hFJB-if$)EZPPOI+vs zpgm-R9AsE^cFzkpLF8-nHdc?t=rHGm?vbhn5jNm&&HR=1 zWmxzz_sf&d#bpA%5(?!v!SO`|>zmOXt?Jkh9V9RyvvU_4KncJQ`)XXc8)%GQjp#xpTkh06a?!a)pLO|qPO`-3vOah zqOx3n`d((uOqZ-mYh%qH?m7 z!IGTaNHqiWlK0x?*y(rO`x=GqU0( zd>z~AQQV`>2jcY}Y9?fc32Vbv9sW|-SN`~PytW47z;+FceZFF-BS3x|!~U*TSF)K?DrNS0SHfjwVq>}E z!yLTr(yx?e4;`nn{zVKRs>h`|GuIYF`wx0OemX(&jpW~yfm#r~pEytdti_AK*39>x z3(cZ_AohE*U+bE?TOs-tIKx+zXNlHoqT{EDY^!13vf}u8YF?^jwUjgL2xMawZc@12 zYvh-)+`JpQVXMBOczhTBy4LZi#FSw0`+WdOS;~`?)LUNU4NtHb*ApF(c%fZ#-rqYq zssp?_qL4ol#vbG5h4Sa+z+@8Q+kCYvT_lXw_As{JARQCxR!2fI#2rz9tWD4$^=m&8a4$SNWn}kqsaOX*M=!?W_f+r_jpl>VL3mSiM~uL+AkS zgDn~N0cY&Zq7d3u(|_ZGq-&PDI6`XvfC;%AsROZwcaPOoN?x@Zul$YAl78JkU{XYG!2kpE=^YqIf3umW^!+y&l?NGko^1NqyEUNl zCw~x~XEu_nez6}{+8FLvD3KBCosc&guuHyJ>n~J#m5fz!CBr^0&~hJr)I1&RRbTs9 z5vSQ=X!j=gjWi4XS_(ivvn!4GF;5_xz$t5U_(XV3?NonO(#FVKrHEEm?s)NPbbNeh zBPWS}G~Yi1-4 zK3XHFW5vU+C#A~j-DCsSSJ>UrE|)#GYd%|v-?*I=ND&ccrE(`Q;MgIw#5!Waq+WLY zpd;w12redJ&u?3^m8A_~ZujvuC>w^UPGz04Zf5Da4RVp>-&?V>jUfKe5`7o^w(vd$ zP;QM{>cENYO%(825$f%JBM+`sV}U(7{jwP(c&BNpLvOY8p3Kbb%bc<%hi@vZc+EhH z(n`%yFIc1jYK`+JlV$|Ft88d#L?`4G+nIc3rG=V^f9Tcj$e*13KB#0b|mo|eNh zzjP&yKxu~js2mjg+_TP$yeB<(Gbp!KOj_q_#ZUr@N4JS^z+hybJpdh7 zQeDy(WJYuP!|>>V{R>zgBkKeg=SM%G+K*0*yY7K9O8!F4HDL1>?Yj05WSn2nLWw*{ z060IHP(VmZ!0{UOTSKj9`mJGih+rd|mjB=gDG<6i@%eN-l(FpP-2%Kc7DYi1a)abd z#@a7$++PzZ$7F%Sw5kjN7jncF97w>uEYGX?mdg0e#W6AeA zPG9g;oj};<@&?~Y3yupw>ErDFwlNTE-sI&;!-)eAC!6V*C-gAZW;DP3@2_ZS-Q+Ay zNwlNfEhvB~xj|XYfM>P2fs0%-$N2hmH@ExNP+I(p!EcAJnONX9I~RD>zUs#+{Dw`& z3E=vqtkMQhRkU}`sK)8*o{z)qnbmwbexU5BN!LVz1lu#e%9_WWK985t(qbyWWi2mq zEH0&*SGXFe<;I?o3@!3g@7qC!e!6y_(D%!;(pIqM<6ZNf%UJUV)?&1d60R<&-<27SJoP-?HDJVegB9ExWKwU8SXnuv_*!p-y`}6f`kii^jqyIGVBY zryi=#T8P)jIyi#W|27PNJVjSlUtix;`uIj&gV+tMX@2`zefix2r@q>e(C1Aoi^J5T zCLEzp^l-FVQTXQD6_to+2!XVSU7Ev^YGW(Mcr;gOGLl+NYZoOz>WYv1pYd|wUR+)& z1;zt0wg;No+RyX`N);DKb##6AAVO(TNcI8Q%vC+QB(ToypH$&~r(P`o=wiYJIHS|% z<>Il@>At6iTIdQR93p36RZ0oKZ$_=k4XV+p9gaHkne1RNqfyAd)cPAuJqx33lyv*+ zu0Y!=3kx6E)SOn@(co%U(n*81x0&zzmB4kHcHokx7D0FdZUZ2(@WNc!-#l^~%1!J2 z^ul^WHA_F);mN#hfhYNo&1&9x_fUKyA!zQ~%_o307$Hc>fVboM?Q55S!*F|}kYN!$=S8FPSAzFOtBUfs7UGOS^2?&uoCh?1{J;P#q}z?JyFc+j7f zBshFJd!<+QBNjYv^#bB_UMkbhHM&+os0)1NyUnYEhvC&i{KU5+<`t`vPCG*#N%}D(X9>*red)C3`i{u`Mk_V+{ z4w}RmI|YO5QNE@jglK$lHta+kI_T@bV3wO3$MgQ?k`;NV33R=gj?%&Kl|s3Lzf#Ov z(lWj)am|Lr=XVxQ{|OSF{qUR)*#Yy7f!XIw0qjdD7|(Iv+6V2QC@DSI-JqbXAtw@! zyvXnU1ec+@(eG-%d9vfg5o1A4C}8QbHL9c5ASyh=AZKHekXGB}cQi4w02Tq2%|q|Q$Mvq1|6=4wGG^!c^FK{_~y)1`Ii)5Iv#GqxEzZHR3Nn^TRP-k z;3^$eyo82Qy%Pi;k+}8oqiR04&XoZFZ`J@DNQYO~IiHdS@Q2_yF((I$m-*bl4uHMX zd>z`l*3;kp?cT!9in5ICFWg>#6;A$fc-h*U3pV^5jGWGf`P}eIBTo=MAsY7O*|s~m zq;A)jT5C8pGH@1{XDVC7E*SN(@YJWWu$ksT@j^J#>aErNH)?4nAAGwUoU zV{^U~?NBym13iusEa@U-DO_a0*9jooGmc*q*PG_Ya3yER2wzd*n!Yc0BaJr%e+aIh zV+TPxmD_89ExI58ac1(+$vDm>DQZi+Wdtlw3cb3ny=W~wy4FO7=52c>p z$^iZ>i>pbQ5+>Siz5`0-XaoF>TZQ|pRY#3P|LGuGNeE9P=l`myoLlUhK&s*T>Ffej z3A((FbS#{*t>m&&JPnPlH>c&5FX*YkUBFy8s*cWJa);7{7uwz{j83!_^qs8*@xtGX ziY7E1|FG)L*CG3FB<8pB_9Cb0Hu4KW(hRlWN_Em%hyg--O#$tPOXn^lyJrWj2!^gXYGqq%kyzJ^`DZe}ZBP@j2E-kG;@e>d|# z0m9KHhoW5y@ruz|50)*R4YxZ}VI`$dbv6cb7$N1O6WsxP%@$$VdTB-+GABlg>0S8|(-|JD!N6wXJlj=t) z0L5p)Iw*C8Y`Z+8D~0`+hrlTje_f9<^^ZY=VV1);nCxwBtQ+AA9T7S!FBz zO5%5w5cRXW;@z*?hngr};+=eJp$`Fv2Qs)E~Kz9WdV`e2Qipa?At#AZdOtRnH z>fiHKI8Hp)5fA_KK=lgBzD)LynQ6tW%*RVHE2-RIT6Hq`XQw`C)W>+8gyj|$qUJD= zxCGogJN8MJJ4r%Wbnyc{@8>TzaFGf&ag`M|>eaz@mnNhF$6dV3^YqFv9d4JEE5Z5V zs=+ymt=B4#dLuITvm&%I6(T^PE5ad`Q@P+*PEYHMrbGh+AO5g9ke^Y+cnei&jvaIBRIGAED_!6P(#Rm8z?;F0BVk z7(~T^yeJJ*5-cQ#o#koy$iI{ z;?|{=#K)Kq=~8D}!e~g1bjm6rWU5Me31hYSW*=iM6VX}g4tT50NPN|;=j%p;|9K=w zvvxlEl|3Lv0NVa(L5tZELHz-sI{ERnT{dWm+&pz0hlG29(;EqkGie86{9WJoPJ%E< zr;9}?ipc)Bd=1i}yuY8lWmR*b(fVC`h!Lfgl6*epAEB!ixo*B_F5zFg%PQ9tq%o2c zWv~u+cH(=Q5l4AO)P&9B79k02CgSsv&{=`(3;&AWP8NRPZZ?r=UieZEzHWg3nQ6RS zVa35IQcG;2tcdQCJIbzrt5F#2_Qv1l9+K3{YgQJrDBkuxJHAVdPZjD{sD>`CW~PSd=Z4cfn-T4o*S9nJ z^Df#5Q0m}yYwg#jiaD3xto$ET1dT{n75-6YhIvM;AFf5MTqeR2dIZL?!}TE1K8_f* z0>I63SWcf?USm`UZNTz3XsY&jU8+%GJ+iQ)oW{o9CfFyVr>y77}Dix!5%${rMvx zU5vfyu_ohVe8MYg%6lLQqL|#OR==pmJ+n*$>sfG&XmYP_l7|6=Jd|Jbz)+L zW~SlPZ}w4)ROl*2$eRP0r&}!t21<`qMdj4hzqMtY5wAY|eO)TAYke%O zS9jS_aXGOJxCL)^IqLJBMO{B0afCX!2m3I6zBKi8xj>CQ%*UGWbTD04l$g_;^wu=Tnw9~W<}6B8B=_7rQ$iL-^sgXk z8kWZmnVKItrXyl1)$9hjEb%&Z^kc+tM?dJ;j&QPGW}{@b4CcO&K6iZs$IaE%`>3Lr zpOy$oE1CVfrk}L1*H1LE!xc#rawGlf`Z%Uoat&kN?sp%90?0>Gca*jO9_B9GPJ)tHfI66IUfKqRj0MH^%l zm+Sc!+EtIMl!gYlcG9f9T4n0Pb)6eFG<~c2I!31jcd;|Asoi?8`1}C?JcxU3QC{2- zgE65%FIKsF(YY(|1$(vcsoz@Wvu#cj+V`3!==&8MAyrjgVJFP%vn&xe;A>R7A~ zoqdq5KWQldf+gGuuafi|+n?Hvz}{^(MLB{Fluq4OrStVKv`TQoGcn^-?Qb_;JMnue z<(ruAPth`uJe9T+VqgBuorl&>l2so)pcd__wzPnQnux1E@adodQZ6fC(k-_s+DW)T(1|oA3E?5 zfEk&AOmVx@lmF7}nup$D$M;^aa}O41ppH!1#|DUb@>myxIU&I=)J)Qh)K(qrRXCn6lbINxedat_3G2;(Ysv&C8TeRb8&_f&C*Qi0Yx6Moojc!#3)Za6-MOlLciZZ zxEY*EHp|t6Jr@xi-TAJPh@@Xf=#{N?90h2G$d;#jIjK%4;w>|bYf)w_ngsD7Riq8n zb%SwuOvZADo!S?x4xOA%O;SIYUgC*}j-!V2?uU|=hW^_)<1xO6a9cnuGtxBo`|7}? zBiU$~$g()fz{1%6IdQM!=I^c$hu)NGTrK>YfY%){^?*la*sDheVuqI|#urmqd@?~r zDhS9?4ULu$@#Qy+>W^<0jGlOg3o(L(F{mno%8bL}#Q{_h zv4CVs$5downp#?OK3}- z6kOOn&9CZKx=XX*yoo;ESv%@n48+x3ZRPogqL5NGqPS93Qy&RG{Od=nyD07Q6b+w zI$XDbwJ#CX!Q&I{p>?^D$Ll!b>su@ z#Y?i!`gwWQ1ZpbQl96M~KgQ|%*MjgBUygA5`mVpUSo=Os{CDAg74$eY!&Q;ws3^!C z_sbop-~oWojv^b<$)Y_(n=kUM*s;7ZGD=BLiiS5TM`2|@4j3WHmON=Zbe?=o76M*M zG;ovU?7v?gJ#kJaAJF{+3KJ6PL3GoHcA@nw_6!jKa{4|g3Gv8|`5Yi4bIgz)Y8Q z_16-5#+aYR|8?$;4$f+GaL}{*Ys2KcR6~+MJZnzB+xS4yDWy4ogtqqOVM`>j7_u>P z<6eEYv%+r)^W==LrrjStmxqn$*febppsvpo+4v*$L%*6$q=szqI<>mUL!8M;l%3_8 zN$~cra*wC?j^9mU3&BLn2Z|qPLZORQ*IDC?N(;+M(Cw?vI1uisdVH*0wc}>Y_m9$T z^2i-5ClFs=BtwO6m^FSqpVb$zF*EAxl~drz%j1tI4r^8aDJd-c2x15%@phIvrX@o> zZlPz5gG@pLBcd;EwIm2pvp+t&kvB1lOo9n#%M zDLGQiq{~JF(oH@^P_OtieYps3Gfcsoy z3-L{NVv&;~+Xpwb&a6_MTIW^NxC$HIE3T7mm5khC#@f&4Bz)f^DK}w{0yR z7qym6ye9v2iQ}?b0u*0eo&36qB$37ol&P#TeSbMq)pHfds?=-Qrlzp*o(dYy?Yz9b17d}c$ZXIwKKv=^P39OJ#jmaoZlHB1<^$DtHM>0)9 zm&*RYPAIaf!iRo+s^z|@Bfp`Z&_HVYz3$;l6~BF3ENfDTd>ST<3;QA4`Z7y2I_Oq} zfJZ{%%T;yyVV@DbK7wmPB@3fIwy#>b&0q!VeImI**L*#Y zz`$e@(rY2Cqo18B|D)vE zVwGC%^~Afq*EkTg^IjQe+GVaZ2_WTRZ81ZeY@YveNAzRPt43*?X=;VqnwE|%>hsGm ze|o_casAqBGk~4~Rn+hPFf;~=o@~7~$z)U#I)H=kiQO1Wsrtq+l2wB+4(|z~JPwJQ zzQvu L_!WG3L+SrN0CPM%S?_n2NWpihU0s@ZGK0{th(=6CLf^*n{B^02{77&Mx2rWv(Z|zb6vZ%vdS9n>TYYqaHLK!WKfD)nqu;j5 z0}{A%<(?Iq$e!Sh@m?&&xpaW>f%|-)IPsu9BA0x3h{ObJ3urDC-kua4t)(76KAgG$7oQZWci~oQCUi=E3yxxnB+`2^d_A_) zDpC_&l~*16{%>Is7jmiMJu<#q`C2N%zu5zgLsjQttJSiql8`3K;N(VUhYnMxMWbzeQqEAWQ=7jt#3rC=Io-KL3Sv^_v1CPl zU5D;vX==B}xN5}A@qFNozFacdg0t@WKwkD^NMzl_+Z^8*>EAGV20 z6zr1M80z1sSii_D0HDd_OXRx>tB>ov<#)2!5+!IEOs=l&8X@ZVqsz;wwQ2R`r>G9S zs^vmXI#-#y#JS%>1Av^-DYz{--W>O%B?Av%Ha5FRtIgco)24o$7t7^3N4>t`_x$2Szm+nOHl;f2?C$>`U`Q)yC* z<6h7(x8RFjwf9IfE8=Mk5(-@$^?8gyZQ!aaGpqF(EJaNDB=d5$Eu`Xh6JNzQ)uXS< z414CaK;J^0wl?2~61Fl?Gj*U4R*fDiV@M@tQPclO6|dkQ2ncd$m2sVzjW3jOgB_3(^y6 zu$DOpyu=y0p;ki6@uCJIZct63YClH+O7f`{$ru^=bG4TdJ*gJ52Y=a>K_Zt>z-td$ zf!kL0WKuZOD`m-+>BaK4e<@Fi8-g6-4&OYrB(W+V0!e0$qwEg^?UZjM;`2DJr0X9R|Ues6r zqx_OsaC$1A8)~^0Wh8XS0ANwJkGn<0Dfpd^o`d}j`H6DO8O{um)){w|aw(e5;2+dB zlA^lVKg9!ytVG^tQj5OM)7v~1WX)f3-O_4wNRxCgWBF~Hr5V()y2hsUvkQ!?=&|vW zHBZ&5316H7s1J}v?$a96o_58@tm$2IQF*_4nSYTq{1nJR~Mz~s&XX_K_xz` z(?qmwFN5i`EOT7jtxBt46WMLL1kslI$D9;I$$kng2A1j;(k>DQaP41-&jyjQxv`T=UlZmL=xT;II8I zflUJGu1_t0cOXiNW=qS($M))0w2AV1I-%iLKwVqf(gc2Ycil&p!ePfy&Y_AufD`|z zv&vFnW^DP>*}(je35)B9U=_D(H#oxn9};C(5N{o;V!t-5e?q2gp zods+BIBjY9_3Y+ZfCw_VN`ymclOQ9mH#1DTY*ro=xh5$IFq%_5*eRraS9yX1euKtqN?p1+S0nI!2Rk2ucZ zf&gzt9u(pG5P-`KJ>dSFVjXpCSUhRDs$Erp!Vr;=GE5;J{#t#0{zR)bn}$0xFaA4f zN{EU$_I^7p8lApG%+c(c#PcLiyicfnr?c@pp?MCmG5-LmYn$87q$F5M(Asw4%;C{(ddQFeDLGvBdyU`?M^5MggsHlx*F>-vmD*N~#c|~@{5#8VVk;pC78MGs?5x$eH2deVc zs~9z#xXq_ef>%e;4)mX>vkZqM(Jw5oRNU;zktbIhGB6BdGMnDm=QL9r@Jk69R4DkB zA2bSFm;LMO>4srF{Ll~--9TAQR7BDNL+5lN8R#fDN|T`Pbk}rR*PK5Pi`#$a3g%xZ z^2y;#eTgi##k9_#QYYopa*ecpj*ql7LB09Tq|I-I#R|)v`Up}UVQ%(fU;~eNm+qU< zaTz0ekP3rdO_XQ((0H9!^Qc}nKNLfFVPe3}aO->I1~#pAi$@_Z*bpN2EC zp5-P8k3z=(!7tpr!_(mrg!B9;-cnz3PQGMew&cD=VAD#eKyulCn^y_SBQh2#|HvnN zt#>Qh{hvCMXW8I|>OlLJ5KsF;vh;LQM#;Xz0%SInl!J5skie@v434*t(M^5Kq{$r{ z!n4T!%=us^C`>#HeIOS;Z{wn)7|X>AVI+((AYxi86HST6SrWoSTH}=4UtQ(j8uR zqd|*Xw#ne9t<8M)uun7Hs3tfP--)%GdNHg%kjfaNvL|i&UA$4%tw|Dn#~d*oQz@l2 z;A?H+`(EzjY@XK>d$o0Y8 zm@YCF^D5JTIDpEibBmRDOT&C*)RgJxOP5YmwHc(%7(+cm6k!tWH5N)Er8*Ok0d4FT zYxt7KsPqk=+tF4BfD9H z)j52Z{7hoPv@Fs~^|AO;kC|Sz*71nnvSgS$Dq>48WsU-99j{WgL^juI;hP2LJ2CT} z%6%~rB*ov$6!d|aE#7}C?*LyU*qY`y+TbL|(l@V|bWLx>_zx+ik+ohTAaaNVU-xb{ zty_ygdf)v#UQap0zf2;%^n*j1Nk^xa$Z0WuuJ-5&NT8=tYQl=zFGYVnU@MJLHD@c8 z!$>J6J0p^=LI3T0kW@ZrIplIIt!caa9SJ_9E)CR-8z{pScC-$$=j1fdrD75{Qc;#1BVp|N`tJxKQ>QgtnWx}3{S zU-BeHaOnC8EfEb|p~-GzWz~+J9m){3+Mh-eCRPR^f3|ULHw#fuIBu_^YqVF1(SC-K znL6E=-oUn{rI2IWq=;XvQ{9S0XY15`}!U(A48p`ANiCN^x3GJ#K@cslJa z*|0p-0-vBxH;dl;0an4;e)BIlVDV)v4w``-6f)~1n`5Q^o5>5@05tniLw!tl={Zo? zH!YBbuQOQitNGTs#p7gi=~z~4@FjxYgfPY!2PhO^e$GO1&HqwF? z{F2lk5oCal2&L*-B#S-WdCw>CpWJUMe^Axsq{*xUTY`h~Jd`ypn%A4DbVw~)@^j9Z z5&@#4u-D65h?QOkuaZb~PNeqtB0?r5tF6t?ucy_a1Rst|I$H*)jn2^Q&=#KF1UNxW zfcLlUR?5cg%IXuM-lG&cYrN~X%hF#An5;gfW<2If69b9!5zftCSP8sgY$NRA^P_qO zw}Y443@1fAf>9KZLe*5B`vd7!!g`*KblMO!PHc=N{XX=k#|A zFo{BF{nhsCJozDhyyBqE=dAdZEJp$(R;&YcmKv0Y0XmGW>!If4Pq#~YF*D|6eeB5aU}BA67qfi6HCEI~Q_j918?SI@V#^%F%BpiTn?a z8hx$=b0@8bskb6;2&juT3P4XOuH*Wx z)TwnJ;i<C0_@caw=(@Sffl)k0l2fbbQ~V8&j+zG8D>9ylDFd>eUrg##MfltEN&@Y;Nzrem{B zoWi~i`d2xyX<0|w}l6d|ec{+(q=R>A)Mo$F? z@{>|t=A}4kf1C1I_K=u;;qm7ExctkdHCIm*&10pO7Ccx3BOk6CpFYWxuf@A`S!K3A zj84&3<0Uw(m_fZ+2`^{L7N1xIgmz~!pa7H0M-d()z`}rj{fiX@CgN3;}gU`r%s%yh^VkCWTj4wjT(XrFzrU z5Z-%j*M4ZZ97QGMP0JnM2nRhLeyNt_sXg@@1(4$(ungjtI|qMMb^0|N#@J=qwzbzU zZ%m$jcqq$1Ud%_}!gWusj`?p_rrLer&A_o~?&iz?vi{2BSKpchn>Euwdj2~kj~Nmx z_iV-OJZX|_togI$g|ow@hq>WuqCALCrHpHOY{j5~{nVGk@eiQqK&!6P-Vv)*>;Y#|qZ1FHkp&IXx(9yvmOd>b zCz%wfWKbW2@8EAkiLd|VweD=8Ok+D@%JhtIxE&&h$yBl(@3?CuBcMkf8dhG-QfBQrsBH`AmM$Pm~jSo5;;8-^i9 zE`0Z|2P>Gq+QBS6k;=|FV)$8gkZ)3Rz$$GlsO@chfgP(d{_-H%CHZ(|Q2VC9_-ARw zi}c3%6%>D_82^CNVX^#6z?a~iQZqf_Y4c`_WaGN(E|Fe5AN)CuqP-?BJBVNMm28>% zj8$M(TnZK)%$S-ovU{3E0LW8925ogo@YOE&nB#v9>SSodv&aC)H+OGdIX`w|Y#B$d z34^aR>wtWi-sKs3SSkv}rEqkDwkb!jmFD?8~;lbz{JU=)bC@6sMaI%pl_Ol1K!dxhWNw z!{Tth=<^4G8kvL3{TB%G0BX--(BN&x1FQxU;O-@{fm_{bBqE*NKBrFbh(RIac$A9H z&oMBfxA#@@st47=cMsTe$G$!y?Ty86@sl=l7uUtT<_+)T`Y5O47IcO27++S8hsJZM zUmwbR_N_7-F_@8zNEudS{>OpK-rVx8TW9TFCfN~zytq}Wz2cPkYQHs=f{ZQ+OX%^&x2W%=hKYgcC z%x%Um)x1AaFsR$)I^%;q@$T_xxbAzZ9_}}`qW)e7_&u+rkqh+54g2&jR{R5yO&7t` z!42b|U#R^OBMh{l%`RWpR6uGMIU#fgNp$+mmcij4h~67%|B{IHi6eAb3mBasM_m+P zjidZa@U};t`09|fj6+c~*C8=QZpche>*$a5LfaLd*qZeBhEWAZfR8RA_rYt!O8-Ek zz10^_?oSO3UXxxJ{)8rIxsZcOLCa!rtRV;Zs#Yrj0E6m%>p7A=mxmAA+xU^_;rJ>S z-(IS2R%SbOsO-Pf9xF$tkbc+iSz~vY_lF#hBQ5s`J1x9S16B|h)XUA0y<@A?^>8%T z*vpwF{wV1=Cl*?{&*);0v8F^&fbuKymbAVRh1FCeKkl*RuZgAXm}!iiu1he3w&!^eS1pKY zk8QH})A7>A&qkYSG5ZgK$Yl;Ab(d-->FZT3ULvfx?k)#FdDFxmqkwgu?D)pR%X0yY zfxyN#F2c1K^XGnF)+FheaAM9tI=kZ$Av|531@MtbOGVgUtPivr>DP8XcWo)WB6+X?M=OXcgTEQC*pF8`UxuV)o(_X zb}n%!xU~i;72W`!ANco;0Lx+crC3ix0@fLKbw(7B9A%`{a;-IAbAM?_78e-ivlP(o z<#EDi#mQzMc+G2RI#+KlA=bA^WBj72db{*VASQ8BK5;!u_UdkP$R9bpS?BvtuhxR@ zd2nl!BPhiyDVfonKWHXMQE-A{E#Pc+atpu6?@CIwkc^EyT;U|AGyk%pxlYf;5xjd) z7YKfk9_caJYk|1arhTAT9$OAkq3>!hK5odzH*0raWf+|H+A~5K^bsavD~q%`HJ6v! zNKrNH)l@*HCyfhronLs;I*_grae+fo)aF`n_B0_I)2Fg>?-{L2u@!vDC`Uxt6g(|pq6ov=7!T?^g zS$xFda(no&F!Cbon8}E2eRuF71F|l;j>n*j;N?@wQ>}E%@B@B5qFQc0NE!o+D{$O> zNKdiP_H}esWH1F!yTfN2bqa$Aj9_dqJ&6-QGaLzH>fc_G1;PSr!eV9lzF4UR74_oT z_^y~zOHoAU&lwYbU#uFxHk%(jUGnk|uPiduZ?{?1v=Z&Udk=`@a=+XEm{3pKx|~8< zO=Ik_nQMnEI%I2kvAeb|xKL9KTny!dQ$_h1^8~wW^z%nwfw+G?rsD$>j&NXTD?Nvb z1!6oJ;bLY}g@gkubzvWRkiOquyws^O#VquPC!1m^x~k3~4WYK!=J zaR8;KgY;@vHC?-!iV}X*7*7`Dm&WXG*)zCnP)_1;J+!Ucy1VwWERGukkT7=Z^Dsg_ zRuNY^wdXZb@Ztqu`MV5hfzG9isxPK6#l^!1-NB^z+h3l>5EU_E9G zZjyyYk-kwlh{m%je&HsWA!w1!<~Ouk>QD-WPf z(d%`!=~%?oc?YQu;W=6|-ChMNH`j4ioI|4OM_Ac5qv{9q$5o;cp16Mjz_mWF3Y!7S zkTr^BoGmT(nHjANU?Rx6R0RD+5Ovv-*rmhU*Y&bT;RFvxCXlN^DM|lqoq)i;37yWS z+J>Ieclac$L2*yMrU9ZxED<(|nYM!?nuh8)INq(t&tZ%^wAHMK5|)?y?uF-{wq|r) z1Ujr%ibsK>CKKSdF{>`fkWB;ZsI!v0tC9$weHaHq=36)T2zWihUn%J67@Cy~VM{+h zd|0X`L>=c8rkifNTNO}g+gZE4SXjW6744{%wbGnXU~OX_^N)Ucu8?kJJDw!+^opNN zxdu%gEfbSf`Q{0Ta4UpAc^GooS=fU4q{(IYtSG5Y_)#%F1BhJg#zLQZv5L(XRr`b2 zLPjjLk|WV0b@2@ukglwwK7nIxeCkhUObWo8S%!m~%kMYhw36l~CH6@BuiqlFa)R&L zsAiV4#lYO4`V^Hxt$3XI6wPK&H1Y}5Fe-lB*4p(z!#?)}8hSZ6Y`poDENK|nf%lU> z5t0hck$pF$D2jj<5cTIi;U?h25qDblms#O_qHYK5zmXAaxWTI&eZq!I0P(+30`PTd zn2HH_yc90cMhPmgN02F}fxCRW zGKub~lI@^c$4uMXyQTArf1QCFWH0ry=~hxJ?F_}!w0DF2h!V)mwDjVo z_BiMxH1VZP6F`ZGG7uta%{x5&eRohMB0f5=28I4^>0AIB3t%7K)x!FQc~KYI}_(OU;cj{a2SuTXK$p|9P)LBqv^#UFwV#oIEqp7?{iKo_X6q zQ-##_7CwCLE>!g<=iT6^oIBn6Q%SLExvIxBzc=3i@azy>A&e|!a(&lC57QGO52{@v z^3CF+N)LINYv~}LtHOX@=khB$Z0~|h1mO~oh7%BztYDtqb^Z?;Q;)eyTw`~OPz{{3 z%>@uTy4s=xdcMAck14nyv`{GN=YzKO1@M-D@w~n_Ez#W?UC!K9T03!lT3S2 z1&S-3jf=Eeh(9nj3t3#fz1e6vK9ajkJ3tpd-LvnUl}x`Bp1kau=jtgT_*%F?QLZK7 zL1<&D>o6P9&6|utnJE^U(z?eYJ!H>VUci?XBh~!?fgAV#V_}f`x@lLylHfBDgr8G@ z+*2{#(-0`h|6`gSu;qMQSHCD22U-S7-JD6~0etQ|ykWUj570=WaDEisZ>lA8T$?{VKO zdx6j>l3)soYSbJH8OrfW8u31Pp@tDY2+u%Ru}YD3&PJP@;F)+ zBfx!kRH%+dKqI*p998np6sr>6y}q!f)W)yyFC#{$+JL_(B)7I@ZgjP)0EQ9qgVL|9 zoMl(**IPood^e(MBXhctpx(`=)QpL8|tCVKd$7V0rnMyV)e(#JG`j-9F zC3WTIB7qlRG>2c}!nz*SQ(TI3+nGSF)w*AT?5>aEcZ#Xu6W7`&!?zOm!1I3A&@l2q z3+nTc|FMR8M_p&_MN>(&hyC*zBo%;K_8wf^cTG))8=2Nad~-iQ^g)(<8-@8N#C3Ks!F$Fa%VD z*`eS-N-MN(x$OcAKlwN7&{`;GAMzIrZ!=eG?e+9GO6AAswQ#dr|Hkp>syvzEXQ=+3QS&@q&fCTgVKhPOKMowx- zgwxjC{c4~#_S%X_NUTQ{8heI0Y&fEUU*NDMJ9>2b6l^VNEQoVn$Wc~X!UJnI=-go= z$s1G;Ox3~7NjKr4(ebP7n(2^7ZAQB?E+NF*C*|2&NvMSncB2jBzLmI+33~6O6Ut@bVI~lTevX zE-E~-I7p!12u^^qDU7+LkirL%-o;UiZmn;FO^Ku)2%cqtxK!CRNnOUX?-a^gC=s7t zq)MaU|8z(ez>;%|tw>>@H;6)X%GKf39!mPuBA4=dhjm-n>LOh?ao-B;=(J=xVqqDw zl84)@G;E-T^!?)kkM~Z=F5TvP)O)GfTYB+2F(8KxhSTx59Aqk#^Z>#HN+j8#hX_YH zZiTGAAomi5-^{(-1rl9C16WO2I*4$ccall>sl+RZPuxt_#f!@^vEt zrA^ts;K9#K`rJH5br4g<#cn&*@e_4W5X$FSdteCG0D%)Z^^U%@&*uY^^*{xMulCjx za*hWU>Cs+H8sIl5$yNkoz;_1(2rW-RqJH!^6%0*CtNP(rv@XhViz&-n>Qucy2w_n#%K(8LQ>L+q;yht|W zp2SjmU)?O^Yi9gK6L!iNep&=;LI;`O%9{j!SuLnWYC{C9wgud(baxQ*%^NL%SMb`L zU5T_b7x~IBsbfHjCh<~t(c|ono(>JTSI&kEm7bgQo>xpVOUNJ#@FfOjottJ|@~~2* zCE0EOnCFFShE~uW7Kv^X+o^IkxyVnWU1=q#>a-=P8{fdBX91gZ>6LynFvP| zC6uG4qTsmzr^IohAF$>cIZ0$6_!WI=K?JRQABtV|L<|uY_Fl2<`$KDa0b>CgOC?oh zWrwxW>U%Nf7k(i^o+?;nQ?>U#u%;9_NqW@i$bx&p1u&x_VKtV-Dd&1!*dNE^kXn|O zA)t-e-oC>$ioEm`YHFI|Ov{bvYC1nD|Lyr8v#3yY{+Ev{^^m*VPNLW>7R>~&^j0u$ zGCB+^w0_&1^Y2yW+YrneR>)gJ8@NIsXUyPGr60ga&yZ~kIkR*hvMph(Lzf^4f8Apg zEUm9!dUrmM=YSN)<@<;fH279_n$o$T-XFX2Wt)oHk(fdqoqP{Xbh?}U4dqSjBS{37 zJ!rkC{Vmm+u0J<0aOmlc0NjJbK^|&9ah7c3gf$)70tb&q-|!e`&UG0j&lH7FOEEjI zEn1wdZ{O(XPQ+OB>3F`a%9H)H{)xJj2t^c1;q3MAIG@02fC@SIWF4KvB4RFj)@|Y) z(ueF~0wMh#O8c=Ha&*XTTXWwrAk+e@|15pGu0w`!)4y8V!b@vu*x}kSh3u4 zXuYsf8wEyMhviB!swI=abx&QX3i`d?@2>XfiD?&SBJ*N^Fihh~Fd>7PEP7|lsCiuo z+YXwmJuJ+DeEW`Cb|JzRK0di&4=T;0A=mrHET6LD zz^5J>za1z3wd}_(^dII=-&o#*MB4$R7`AQyY&a~>=w;HoaD%yy_$`$@2NXp{O6=`3 z=0ca1xQsD1aA}chCt`?Z`bm4```S2-W$Xl49CoVE3>kd-QbhLk#77_LGK|MIRZY*H z^yq;al!3@82hJ{1YYV}0n_+DBZnHrBm^QH40^KpaLYu=t9T{2(cH z%|PdN8_+%d{>utsT<;An#U>*K3_r3#!H3)XPYHZU{Zj?a)CYBoh7&JjZOCB7AOB~M zY?S{!ue5k(JBvJR7WVGXSE4xqGfTf)O!y^7`!MN&AXxJOHkWwdo-(nl;fks%1gApt zBbkQ$G89yh8ND|6uBV9iysO&0p3#dRAXhOdc6J;L zep#^yn7#JeT*P|jC*lV?iPkuV`sFPJi^VJ+{)h<_pVzo^{^6 zeYCfbFYpS^r~LU-^XL&;n3?;m`PfIZB6|L?RP0bz^L#(#`sW%Jtd5hSV&?ju%q!WI zA%6c;ZE3S&3ua>GWc7kgSUML8)y_t!GH`7Wmix(0Rtd=ir>S+y-|+;i&U{TNI2Wif zYEg4vZCME7h7_iSHg_cb{~>hI(m3$;y_Z$QsEwcAxo0F|2)sT5atI~zy|m25;LFfv z>d=fq(I5Q@f#!)yzwXy@bNk)!!1n;!OZ$-lvmUI02x zXPJ&Ch~HF1YaeASF=a}3_WoBu^*^t5mpQa)p9)E^7e@Mp{6$`Md8A?YF-KbVGIzul zhE~aDHx30XJ4I=1B}}4YeYE;V?iQT^a%Ire=`|(KgZQ<(I*ym`FRFD-7MzU{lZqU{aL@FElurV z01dw$Xdeu)0#?uT+iH7!)PTbHrOU55Mg(g-i3E*PNKLI6f(#mBMo&TcjN^RHwu(_Z zX`M|GG@c69-3W3(3!)_V5!|4N+!K7&UZmq!D-?xYYRdAAfdv$p~$N}1! zlLa`v1mPlhsb0A#bLjm80k4i(`S`N;e@9OU2%tcHM`CHRS=Okg;w6fp$06Rb#RM+$fxm3PFv(I>Z;Iy&@H#&RxY_-9H z`2{dMHkTcj?bdCz76#ivc|98RA#oa=IEyn_^6h>YjSy@;ToErBY}9#<@MFI-yt9ws zYqmuFF>CL|P2OWJ3`h+J=3<%(f%RuG zzwXG3{~?jBC_};r8Fjque?XXF(Gqy`?_s9Vew`?!g`xc zPY3M^vtPWzHlYnHSpdZox%;7j5bII}Ahx;_$>F8sNiNp723A|@$NSOTp@1t#sg-X7 z%MTEMJG%@b=$7w}6S4piwg^g|L1}O0}bm=XP%~32Nyxc&0dxj*SI!O53S3~~HQISp2>92WVW8LZA}^qI#sI%;#cmR9jgr{FXvzWW3?LX!&T z(TF}7Njq27(+DT}@emc<(c@L-xUuwN^cyA5cFV(Rt1vGYOxNyo=m>G(qqmyjJNl^q zG>TEO4IH^AAj<^<@~KbWY`MxV`F1K#N}?P|Ky2RjGMe%Nw71hK5yo@oc4A`Sk>B-W zR(aJMzIfKpOnI*%%Jr9W5&U~Sz#I5#!7sVSG;B1ubOis14ZxNpz7JY}R zuF`3XA?Qxv3S?lydMyn=hw=b=(^uEwibS!A+x5wo6OPU##8vho5>)c<~tktuK-1(y^^%n1atd7gh z6$P@bTR*0y>*xDlziUs$(z+HQ6#YG_>o;m5r*G8U%pR$gEV{#e-a8fqEj`FljNq%( zT@v}gS3x7!n6wPTu(t*l@sIn`XLk@7=eTM#l4_6-(%ULjrv|ox@8%q*62MKbO1%oz zL0DF{&y{)NC8^1B4yq%qFi6r4bwA1~&^%6_B*ICBmUlKvM858D(_pj)ou5+YKnX>2 z5)XSglMZ!+OrZFpOvmAf${R@^qp5R687Kg(WCo;>!~WRuCly2?_9t65hLl6A+xjwD zyz;ji5)`d(D_8c&8p`|Y^QI=pZ9SZ4=GH-VDZ?BDh?-v)SUb+}5mDlP3XlPy(Q-fD z-Vo>gXHs7^%yjA``Gygu6Zo&Nmc&#qYgyJ5)??Pnl3lC7+B~UYfBSd52 zp0$lXe)oFfZKvON@P*#+RbvK3y94kD^$5?i&%iWviV{+#7tc@ ziAH~yUecsA82AF7G1;`^>GPb~NI%Pj`~eCEACD#^R3fNa4t^ifZVkPMOYpczAmxBs`nHJ2x%vt^2!HUVlLPa*Fzo*_E}sr%8yOt1*0(>mfGjoc zEf?hb1Q;0iEY+hS%(Yy#MztnJs!Youy&uxwjV1il4V3j!9CT_>P-wLCt@h`}FW#Ae z#dhT4VR2a8w7eW(3n#-XM*tm09lpMM<^C2Oxwm7`_oK%_@^+vJRPJ$->hsthZKG!J z9}z^3Ty~VId8h$jOf*bIv=^wPs5qzsn2aXlFFi|w^JNQ@-6^O2&6GDYf^vcK5~s_B zHdc{R89S+28%KT2>=P|Bfq=p^48H2eg(V@2qZ$>#Nyz}j2upSUW& zeskV;tj_?#9m_|<=9s9<3jba-UyRzEtR4i}W^81@1?}~lSuRl)pL<0V*ZcK6toj*X z?J$CM0EXAjCfu9(T}S@FRy|vXDNOlMqS%>)H}Gwl*?}?N9(iY9v;EjeLe{{+-2XXU zQyAzRP=JRXJU*2ZXb|a*cxEBe`0;W#4;TuMErmTir0Udz5kNY>w2{p$rI*FUkCTU^ zX~*O5g+YO+b3tMkr1F08h(CV3ulK{6YHNaAO^$iw8K8)oG`n*OZOir)*o6H_fpS2q zcV7VqK>T+8Xa!{ZtgNY6mUIfbQ=Ps0b;xs_7;c#*&7^B$rCScTW`i`b(H0_Kj&T{$ zYb$m(eC|%pJ>>fMsLH0uiQt6>IdWMeTN(wrhV2|m)^P(;hT=d-axW11?~#(u!qYA0 zM((kFi*!S2ulDDN!n~k)e$A<_$EMq7^V_;eSeb|;vLP>C&7S=?Avi>UPzK+|y$w1& zD-!kEb^6GaqeH9l;EU%gX(02GRYJ2}tIc07WAyX{)hRWBE@6THvYIgx<@;9r)5g~0 zMLw^JT|rmV$y$&1uFJ2yc8EueI#bhZ4;P|)>VO5G7)eT64}`yH-s_H;0ob!+d!cRN z11{Q@VoRBp*5vlPzEbzAKg|nLERVDsoBmWxbFs$?oa8Y>gl)H`54!?WS&y-Bj{{PD zoH}AAU*k5!dY(EAy?OsUR4T1C8S-6fbHpX}5pGORGLFW`sNYl_(k4`} zkXjT0|AZ=C{6!*P5h{PCsK##&zmktdr;mF(yirRf~zL?aHU#3Jc`_6drQsN)zA9(ms;9Vfhlq6rCg`QPgwk1 z;t;_a4sN}!)Jwd^NNq`rVWC-#VRdRdVhfcwd%`KC1IuRoGG9<;s*LWVAnW#aQ{sLj*<;O~CZ?@#Hr)3J#|h8^$qY;#PYK!Sd6YU4S>h^L zSoP&Br4nE|W-zW2G@}wUi4t`VAG3Vh;HrtY$5Y2p7dc>dO_Lz8M(Po#D$QZ0H3Y`q zJn<@C4ybEOlG}(zyU}~zxO$Y%sry>N1e$I6tKS?3KBDAd|Kgcc(y8YykU#fiYIxiS z4@Lj3i2;jzMTdbOt*6NC^`DSewQiNyMaHv=joGpHE~SN+@5Z7zx)?$~GuSm!x=n#2 zAeC9SnUll2!jkxo6nIAgxz?#SI%1@-s2+$5o5A((!u4B3tlT3q{%w!meXsy|^RtB9-Wt8);9%IC?Wj^e-tPL!+Z&;q1-l z!Vafz_#W$R6Rb?txs;KkN>gsshL~{S+#%ktJL=N8Crp$hK%wH`z%Vx>67}@cy^#%? zhF0wNujBEu@Z)9uq5`RivZUq$Zpu`tAzTXH0hMu;h5f zSC@^DTANS?w5&*pi7pglb06=7t7?_l2$3{y8rup7m2cSeiipvD`o51k< zH@u;7-hWTaWD`82`8Fcrpydb&dVDyg2uM9y`#YUp74`rF28`?rjPY8IQA8P~VxR1A7+Qi7K>-;Z{<@c*o(( zlyA^)ms6Ld%q{%BS{>@ z$QrJDn|N_6$YG`*AAQur{ciTYirT>`hqKD!{>LtpRf+RK`(j}54&Y@4f%Faq9{RQq z*{R{-!B!I*UQ!mW7F9-`fi`4)VeZjEPRYXvqc0O%rs7c59z3c7-ZN!wu0IcL)R%0o$By4h!@2>No8He{@gi=IyNgxIGZDCh6_NUt8g>6dNt9t^lgTT zNMD=^(#`l)iNGaO=xfk3aTu4J4$o!Eur=QyFdMqyI)e;o+CIxI8h(=+2t1C|db`n+ zn|gacr<5yW_5}2;+M1z$S+D%aV2t-$V4%I4>E@09OCeuQu+*-$1hezbi*GU1xRKuK z6C^gYjs@A+A$f@<>LwWFfvOYuAqkEQr07!lb0UAre)>gwEjor*Kcn^qfkqQa@l3ou zw)9xWP=goyr5@5kmK2czmSGx%_Y7UN>n2+GOBXjplmvPLZ3hOBS)CD+z|k3QSv^wx z%(>l}-0m@ydMTFK(k%;vi8|45K%|`2;8c_ZTlc(cv~-$Q9C1864F1uP@w)0N%xPIF zCMcw(mdSJO@8ObED;eQKP;#>R7#$!fi` zR6gatAZxM4>mg^J3lw@{T{EaulG1@A)btXryJBxd*`_BwC^C0=(>AnpjWCLM`|ueT z1e(l|$^Bug*!e&MF3gVD(oayYe$A0d90?@;pfBbrkZ5IN}a+hp$UI6@RH z7fS_wNN$*_^2PUUf7>KQ53=Ph)`p!~&E+Xtu&(-`#rCcG5c3D8hwDn5d~;}my@VOw^ar#BsnT7oZ1vfGUUrNwK)w*l&`-5-~&dn}kX39sWpl~M=(=_j% zpXM$B&LYgf-p3y%?`OxX%Xq(Gw%ei(5W)#{&wQ?s6+XIS=6 zs|YzcuT%?|?P#Tflk|~JM7XnYLP96LN0Z+HnR7p+HhJH5i7#*~O`7I0yf*)RurobB zN{gy$!*H7Y2C3&s8JgEx&$7b)`IF`?#zHBmAo~}|aVfLwfCxA?H)uS}2-#m?%5Pw| z5M5GCIf+!j@5YVYvX2Q&kNEje)WIPK3?_AHX3;G@11?z*ay7|dvt!ho3PMTw%Mg}z z+sikcSR08wQI2k_({vKJ>GlLq51(vrNykS)ylg!UWtA@AgBPm^$=tKw-#>=x{gQj) zQ&&=!Lcha?AFW-)d~;s1kkW%>YSH|;G(86lhr^vAfSB8A1r_Hl8pp~)z35TlsPGL0 zn#_i;-VaILdKUiv{`g3o87_90<+o2)=M(ni8XPpH9K)R)mVUtiiE|hP)GYR>8ne~GS@>C6Dj+Y~|&+^^E;)1ZIT zdJ|+0_AfDBIS#I^zypIvYKsaoC<(wr@GiPjj2)4%$!hr2U;IKv@uIJT!)zK`q}w!7 zL$77{gxE-o7)72u9?6dfXVx9sO)Lq1$}Y9fndLfbivyjW=Lei|!=4s<{hdAe%MX}Y zTLp`aHz=ZNAFU=hp1gA2{~K8jJ11`yfjB;LAv^tRzhGOBoyu~)FOQDq1m zFmrv)3YYeZ4?I$TCX64Q*%}TTr_-%*04|CJkdtG>XwF)(fj1Dl42xjWK}9vc2#bR8 z?3q1w_YE9ZFP?Z^p@6<^TqZ2nEm+=xBL%HiuJHPfZ2FgasGJD(>QnDG{H3zsxC$r@ z*(xDCvS>(-4aEp8SN?goe#iOepN$t{a zODn@z`V0D|pWDiQnX!SQ3WxMwI6_h>C~%5how`0xp_f~b%1Jb>xQK{S_uw)urk|L1 zTxXSp(cn=ZD^F{%O<)&hgy4sHE)Nfzy6m~h{1+Y^wMtoNNoQmgqk_0Sxe{21c$W*X zaiv3D;I<~2p;}WE7!68=#gKM~==SGRs*mX?tqXU_ohr|FY&miA_#IoGkbf(;r1LDB zULMA8sd)D}fUiSuM{u+`1W(+Tr;M0+#R{j#tKImAeLU~{LP|XOujht?SwMyz=0Wj< zD?2#Q=k-=3e{;L;mV+ z>p&wD<*y#nrQW3?yzZYB{aQoyJ(goFBjZS7cv-B$GhhOmqf{+6Xn6$`%d?#AoVaD5rLObm(&QYPa|Nq#$!Qsc0mgzAj- zqhe@f;Z@wA^s*++PajKH(byMWj~q75=cHP#?Uil6q2>i|=B-XI^=)E&kKonc;HJF2 z>{jOS_{w?d@M3adKif-J~N%K#a( zFM2okd}+~Ut?q;)@v={WD%odr9snbzwuxOzo{I|%4bOE@X{JTZ`db0mufD~$ zam>vmxOi<75pF)<6B?8k*pH`YZ@@1&6sj-DGqbbMHbL;ZqTvZnbTs!0i~mju^%k4 z!aTi^#?{K$+)zSd64ePZcX5jFbie%CTae)ruVOq_^L?umc$An^ai~J{tb_}G_Z?3D`3_%jW zSVo-!g;t#i3=Jqzn&0siu>$@SNEa*FaTfpyM1{~W5)$rBfqK=>scNUGP-ec-ayPKy+);emeUvpT#%W}?WmuGeZdbQac^E2dvKFa zc#`fq_)2$Ccs8lrPwe+WX3CCS&%dy{-815v0>d(3Ygx^3n zkX7`(I1G49&8$Mn&LURSNCjuut)bnT0ho{Rp?zdZW+OWIa~s3?FF@o9C!7 zIL$b#AEWf6!3NDrdO2?li*TL(APEC@4rUKInJ|T)iNbAQ^bAUVHDnLnd(F()0ya=| zAosOe=ZZx{T?k70bS#*%XaVm_h%T8uCf2>357cfU+r%Kok1ln!?C0+g6^Xys{ncSW zgUUo;2nK*5%QulCOVrOzf9zO1M#(xZFd|6Snzo7e)AQ4$foAvu{BT-{QX~4{pD>80 zS57)BYx5_#RKk4gtbV{2j5zk^9_Q38%O8JRv|WO+`uy&{llbe>9`hxL#|vL?9cLFu zZ+CXa38uMr>A#n=Shf9%zFfrO6URHRnq?yP*WDNUEmrW$`PrjlMtXeR+GBnlONwxR z{|PR74yR@9*iNJz=f14{f%|;I%zTu>YxQ=foZE^oj|J}$?Riki{=lx^y+iXLee~WheiUR;+E>!C%pX%(XHmI>AULM{WYuzNINkD0BEa-QP~0%M z%^}j@_n-Q{fM(Ctl3gg>rdSEf=hAJ4_1{ojxN*g`164&c__kaz7wFf;VpgvvvmwzE z^Bb~1($4Jb8<9{HP-4X7!SdNvOs=6oGvK-SyP@bp6&DJssY! zqLtzsf)zY<$|VD&eiLh`7`#!I3Gz5>N3Gved(J`N1=zenS%zsOT8D1_LJ&~_$go`b zt3&KdU)cOio-s_!vmR4H#v>CID7v{Rd1;jeId< zt)NPSfylw@F<+{x_QOgLkTJtC_k*3ChssQ-fr@IWiMhrc(Yj@|*X}#|gXLI`*xTcV zh`FhGHTbbvANAl$X{d|jyklY&!{YL7+HFpCIOmhu{Px$d-Xk%v;jvYJE<5cN-&YNb zqyNdK5h(haOfFB|kslu}ktLRgP&YqX{#7oO<4}cL1p{!ckztxZ>mvSTM9?dIy$^3^ zKl@*@bC+DvrHwoc^~Ur?C}vZbt*$QopRNlRzB3JZ|AyJzLMtmEc3QV+R7ElDjy3fY zQhVvUF1n})5mAHPH~YCM>kPgGwGT1RbI8srSjlaym zFA-^k0eU?p-DM8DY81gGAq0>egYDnD|g&lij;TkJ3LSq zi+wqy+h-i1a$ocvEwag7^ozwzPcq1diXykMaV4(w!L=*$JGB_@@Y0uU^NtEEYUUP) z<>bU}+>#oH36U1dP4QLP$-e`Qo*$dzCD3O*0e;unm)RHuVp%Qyaf1#;22dFrYb&FU z^~!!|N(+3a>OoB*#N*)QLIggKY59n-pmTa=*XE-E~&IOs{ADdsDGT485E$-y6J`h}9LI_ou z@K=u+p>sl3i!hWFV;8c6Kkd?!m0jq%?}d-o0g3VjC2%#~yQGorRiEC-#VfZ4t>RLs zIY(Z~T38LN9*=Fl(4)*mjcuB6c_PRA|DHi!LE25yO2a$ijw{Y<>^Ac!8n{-r0g%sj zS?FriQT8p9_07Bbz8CBzW%=-7ULgx;cQ8XX7tCnc*7R@vt*RY&xqCwk?qbb3>5`8M z_Cne9)%*MF-uC;zN^Ni=c3idsVYA)K&>&NmFI2|2CjXi z2#p8&P6{{q=*(rI_fZo9h*vE~fj>+uu4@y9pJa>b90vcbSOgkR)izkEvom$K-xseY zJ+v6{7qM^TXhr=M=)-9kN=6Gz_?Llm`3qBA@QjD`M9HeFYBfE_moS)3^+Y%ZJNrEa zF5k;Z8dUfFr+2LEuj6?HKiWG*tS@|mg)!X!C1eg0TxnRe1uNj3y#hBGyXN-$ zZOHu^(m#{L<+b#7i(S=&lgw{5(uruqG=RxnxuTXAR3tj<5Mcr-;m6%S5CEi;BnSJr zZg}^FO_MQHVh(546PYwt+wzqR*eQYs1hwt${c;*O;}7kiH70K5+khi?i(fdwrrJ}E z=-*VqQhsFkEf?cIoQmHRh>#N~)IZI~@mD{EH%)>qvjMaMw4!e4<>rD9=$9c~DX+@A zL&Dxk`{^QYwYYxEY?_O|`S=n9YInUVX5#CA2h(U+U|tmm3~7 zdC1*(qftxTjS;)>|Kl~+CjE5jaKfUmYCWmoiJyc|fx;r^$&4V=V^1k1V5!Vf3L*o{ z#Axh%`3IdGDmRk)iLVZ4j~m!W;qEMbs-|7I-2R!zGytRXO@Ao-l{FZ_87Axh;-sl| zy(h;$$Eb?4*z5j^CaqSc2Lu9DzG#6GPbJ=~0oO%$aV)p8#C_Zmla?`RDogTrMno4% zk;dTCZlHLs`Sq5Nl#bT=q2_{12hjnCQ0iBM8-4s$G{WKhFZ>1xx1GPP@Cy-s=bb8U9f*m(!;wGac2ixJ&%Ix-DjEL%~*}O zn-Z;~0|r-=jmX}Xg>88TXP$rN^ysBaE*%2!8~#Wu_LS!!A95IxDU%M;xyRJONZugT z-RVX)m-)I$`Pztu=73fnA!8W)wR`h=BaC z@?NhCj6vOXEg!PcCm0|Q5^lk7LcbaDyS+R6lgLaH5^`LWGRz-qr`TeBh_>pWB|93_PR@i=v{QdhtF&c;=mY| zW4MJQ+-dK9=JvX+nQAU>z(oj2h&A(l>J*-o9Yce`Dns#TIx%Q6b#L$NGjp7PEmVAN ztb)(mRm8kcD!SZ9JM;PvT#z@mXk!eheU>BPO1@eWYibfldhE!!zRi)kRF1P_UGrq~ zVIl)C9{p40Px(E+%GI~kqAfg)F7x~W_FZ`jY^kAEF z0Lbca^&;L_M>fOd=VD=0iDE+D6!w!qk@@kMLyo3sMt&Dr9S9N8x8S7Cj4YBvW+(m? zSDKBy7Rd0IgfkuMq~McwW4OkCLa4~kO?dGDX~bHl^SOO;s+)5e@oryB7K(vMp>mcY zCwnQk>x|_Uy-gK=AmUUZL~?a=2qg5Sagd-$8j%ODpSobaOP37t zyPF8+wr~Nm!^A4uKtUFE2%eLpSP8z-a;w-~Zj49i&B&9hCy&LWO(>23R|Q4+!{F-! zeigo~P?#@sOnT#0x%uGi7i(1E7 z$y|%z?fPLeJF6iS2-jz3yPM)RW`6 zwZeG{;nxQ*P4I$C5)F2v)V0w9EE!u)44aQje{;c!aUw4)*7y8ws*Re9P8Nr9vXnap zGlom9=0j^zLl5TdXzZMp&}EG1qeCxBZ|zKtA9)jNW49wkdwscnT$}r+Q`OS;*O#sd z^OUOmp_s%kSR&V>E&)Oq{z!kmf1fL>vFGM3zfP(4k3GWNg)7cGX`5L79fktKCiL+* zUZzNNw|tmFPl*o+iKW9c!iOg{=jBd=2zC#D-GS> zi(mckENC0ps*4f6VWE;u7v8E{bgWq8WuKYqSNP_eOX&Bt>kOe{oK3wK z#ki>?A;G&f<5}0L6|1V8g7?u(YruM#$0VtFnDCa&lL9dpLDMu?;Sg796S60 z!%V(#p@i!d47ezB{4mf}+|T74wxmVxWkXyzPy-=G%uCW?j@vM*PSuci-$CwLuAe@x{} zLHREl!Y*=ce|$o_T>5o{iQB^-3IEw#N9~x4H8+yV%Xjq&=f-@sR#!??E#^=9R)2K0 zvg7(`#*2`WU~?cEXj@kLN>X%|B7RfcN`!hN-YTh2xlh-BbqbeQ$*C-QFQ>&NG_w0* z5$te2I)4`ShFnaYv`&X*-aAi835(}(O zg5Z5_`xc7kG;~Auh0UIeKYwt&58QN7LP~#|PuNZ6- zWVGa#R@KZ~cu`W#?rz@LpLxZC^^=0siO&t4*&kLCa#Hxb+IA-wK6d^VnY@wb_-k*S zIfL#b?&hYabs|HGfngcOyq!eaf)v4h_T_dRQ;vij!t%pb@ZvlHB}WNJjIHzAS3RH2 z7hXqn86>FNJ26e^9shdK-D$r_jk66Ti*$V2?0X2Q6G363GJ=jG)3xP&VJF`JA~7zM zmMW3Cvts=3hHBTQ`4C3o86yLos~JK%v);a`i>Q-AHkJ{|HAkBoyLrDyz@*$l{p`tq z&u|E_{h@)jaU9y3Fc&l z`}4&MRxcUB=PdR*f@JTmI8{8;e^xdeJR;P46qG;CgR_d34b?ei<;;fAPoJfgn&2Z} zCdM43jxYPn)q2njNm-L^CiY4W_+s$g+8r@LFJ+zGZn#E)en;AVzG;ug%@4?)<0vM=CnTFdfoUMo&a4qHLonlF8;;D_~7pUlF7S{Onl9W^*x zOtkn&>xhlcSb+QMm@ovdhUG;`;9OGOXNlJd!{yIT<7ZpF~jf%}pHUI{yXYt6rQI05qsY;j_nPl6-zrO{iBTRDC~yYc^hG-aBzcUU|$=yTaC zW65r!ILQR04T44rfizV`hD zhB2+)k64WKk1lN|9WHa{3M5muu3=O@2z^WmOR!gEFxM|V9R!r49V#nto2#jyZR;GI zz4ve)@-ucpYa!Q-y??G0n(O9hcsdhhGN51 zQ;{YRi)#GsUC*S7BDGgu(NEs1^Sf?)q$Y0BOgpd33^w~#Pj=6dRvpf|?GYvXn(!zA z=z6DV*Il?DEud~;gB83ee({<@pG6an5HPVQ{C$Ly`t;{tr!iwZ^cVrGbcs=eU6^|8 zCy=5l!NIDU5+X65d}-yBX7y5WyLABoA1Yr-8;%qhPn77@{#}`o)c?7Y^os0Fd$t{V zTYub_5K-z;2u-!MXvi&~LoK-aZj)$f@fCY@YW))^>$!1pqbGL2XP&=mLqmoO2=A@= z$!fh(I|ET&ii#8luN3|db58y6*mI-Z-es?fPXZGj6?+nE=3E@7MRhl-OO>2>g}pbg zBhRu!o>NrFfVakZ3dVhr9prqttdbGbGor+`HuBdv$)~Lzb(uIhS!`iy`lTH|HO+6WlFTB$J zeclWA9r1{TNMKzhip_sOJ1^*bTZ(M711lcds&>{3jZOO%wSIO!rm5??+c8Q`LC5;H z&@;HC!0koue+~;sja9JklrUoAd?Dr?c;H>$S9WIJpI4IhMm=77e~QSj7smtH*}iPF zYYw<+knmObGFYmVJ`1~aJ|Du2sMRL_g&(w!-i5Q|JmzruSoz!I-;&P0+1(okXAxz6 zUX!P|O^VXFIp@K$NocW(AqYL3@Vk0k00)Prz3k5a3`36$r!j0^%+xt(p zn^xBmobi5-dQKT#M!<_h2%=R~Fzl|7s-L6fS999?%xFEc&~RB~eeQy{!W5(%<5w(T zsQ6FEnKI0!r+jYQPD)u+^3$YP`5Wg%W%KQ}xtehr$B15U?7tajEZ&QdXy$pG@dV-! z!E8(to{!q@G*RZZJH3PJ^sBJH3%yn?M&Y72H{L%lu$lqQKPKV#|-k(?=o{PmdSI?q2sbD)8nGN*Tw@4;5s+ z8&H<|t}!<83FsUT0qPncqck_$*m@*7Ws8mo9jeUWhY=KLW^r=)lTCX+4n)?F5-b7K zQE~;o?uS$>4foB)8?t=hduIc#Ir~*4KoIuLcTSjfIoWaoO*FCxCNSpfyCi8n>j)74 z)?s~pdhd484(C~nppuP>on(S8k}bzOD9PNwe+H@A?q>ONV<0>MdkKQ_ePZ8c59~jD z#X+4(`5gZ1zv|(dm&@n+Jvc2^LG-S$O3i_M5_u7_ie^jONug=Lzgz*2tyCl@*v|YE zXTtDK?u}H1rNTb5vcKiD+YJWR*MtZj4ix2M6p*k=vRni)MD!szHar1SI?%~Yh!B$n zf!R7dN+Bc&w=pLIt1Nx#yy|TLz~|`W!L(_TF~14?*Nsu)^6C^%L-zMs-Gd_SW)5O8J8~&^JuY8cvmSCYY zQH%eVkQ5B?0D?3>@)!#gsk&w4RBWid&O!?^?*mvUFw`R;Fj4v_&a7v%@X_c0xvq- z#9a%0pu(;xfhec&h3yp6pYoJVQpU5-*6_u)YG~~EfB$p$J9-Dgdf(LyS(|j4MO6Or zvf9^3;uaht;-25{*@%R#gd>$VoWL`?J@;PdSVfJ0Qe@J=2);*O=fnD#L#_Mue3v{= z(~M(mO-{4>ne>4J-P`b_@V~L~4Thh_F2M*jX>p*)s=V~~3YkGtN(oc_Hp_KjYS7~> z4|lvL#@J_j#1}lWTVRDE2?Fsu#_$JvBLn`7|I&tj#!JiPrRs`RG^tRCc4F!9vEL%{ z?pJ=E6#8@Zb8OX8?~BQ+JOH!5h3W(HiEA#C^IXFbsz?-@z2L7s6@MR@@o5{1fx430 zu=4W4OQqx1knixd{NMKP9UBU~0Xv%hT7!om$B`xazqS{|zaof}tw%-ycAxb){B5rSg1f}%eeCM_B@pc8h#~vQf z4zUGV>&|+_v31U;Dt7Yw?bVT_?f0)ipu*a7MEe~KNF>B8wh*m&;mg7e6IUqVNz>yK z6jg!j3;A0|CsCoM5?$o-n*Yg@e7*M3_N~K2@ z%x(sNrm!F@&^t+e`f6T);qUL<+|z45I`7H0XyB*ES-v*;R^XR1N~q3Q<=apmpT7eT z3JvJxfy#Zyegig&qU5Uh-sf>)a<9bqLecYy!hKa}kE8&#TVsqh9r_<5&wVq-{U@X7 z_O`>~SN_wuu(j8a&-V!)e zaCb`78z;Yt66``J3~xun;i;R;OY11hR{T$^_>)fl#q6)&eu~H3Up#+z>9{Z-I8*>W z+^;h0f%p|5bJG(#xou{I9PZC}zN*DbEq@S;3=nq|K6^GqQi*8ZdmPMTP^lpj^nzGjiY;07JU7m*SDBI*J&42zK zZvAxh-~UdfyQFW^7p1vmz4Yg+e{WjDzjmNtJdnxyJ+ydxKS0_?wp!@Ua%?Czf^M86 z9nB99xa)FnO&@N=7V3)197ZcdMqap@W)Wx=%x&+uWv50!K~elP`WLA0t6^ zHf2>$@91SA5A+EQfCU0szvt3{b6r3xmnVUPhALX^gq@vw&EAxkoBf|96%Sl9_NSEz z)+0?VVd3fYEBla!yl2FriiTOYiN_;3DAOxdi4>~yyjn-;nQ(65BrijmB@WKOyQrVl zse!b~FTJzja)&mndiU1C@t<@#kd*W(&6PQ?<8z8UZ<*}PcFcXVRH!G@cGBLygXcf@ zjtg>b8!0GUGFv{+lyDdFH!u7r-3>Csox35Q1A|KO#Xi?FsdR}-pAKaPhm_Gd zcWLegicW=;Spa`jsrxy75-;jvl3@Uu-!UKmv)H#8+8nHUOn`6|rQ#J2< z0Z>|Gw_|Za5aR{Q0(B}1H#gMA!}rV4BjQ6TuDd6N3}+#NX_e9_0RNf;1q`YGAq)k_ zi85a*;sZ*Gpv%tI@#wqwWTZP8Vbe|B0PVHwAW2fx zleL!2xatQDS#874stXR=I4sBnS%&&LZODvNhAPGzey;KZ>s*Rgh`9DCR)8^IP@8wA ziJqy&iN-3v#C}T^u|qCfrHV&?80cNl>dS%+Me!qlYmI*{veTENej`oy)|omIHKwY(om{Ea zE>&PvGq|6Ytmo+M@@l&ndhcXEYc&}T$yO8g;iu!6FE;R%pV)c^QHvGahAnRd-EbAC zDtOz>RSddxWP!O1!C#HQT!tp>=JtSgP&SPw64)955X7*vgR`qO_VR<0U;kZX`(J#l zx4!afPqREj|AqCmusWQGQiLu)2bn)5M)wYVzG{%s4daYw-`ZUKuc>f3m0uoLN=I5`QpdW387|to1^bs6) z8%dL4tQ2WOye*s|cT(qvewp;GwH5^+U=}I`C8=r4;v-yqPtka!LH-k$Z^O&Vb!y5| ze^WMiOw*Io`lBK7%r&0fr{SvA>S`w&9$efXMRWkQfdH2easRy#APD|Dl?PKXRCl9= zl*B+p(8Bw}oxu!wxs^vNo+PVh{3B4&pKmk!u{wCd4hvlxND>})V8-KU1~$6WGA6>s zqkG*Rq0kd{PrkPiCb6x}j^qRgL)Hm&fILybGn$YO6jdGvTb={dn;D|I(uSc^lG^Ak z1%Me)%3u=ysh(T=$$&~>5dhGO-<;0~2^*WA-U+gb%7|{!2+R)YzVA|lIUW>;{2>aY zt-onhy-&auRm*vt*#UJQJx3Q+%eLAH8@V7|xX)6M<1&0E(pI; z{ndxq?ERJUgprgJPx)5ui9>?Bj9I>aiUjFMxSpph`T-iCqP6K!R9V^>u57!gUG6`I z2AEedKHigaJcvnM?Bzc1MNAMSb4%^6$)g@WtHDo&B_R_5_925*_zUE)3x8pNl}nS3 zP@*V*APqx~NggtjN~t%{t0veesKC1{FHhd9Uh2Y`mMaXkcZit^Oe;o-}!xpts#xq2_PLfL~F+&11Sn3xPi8Z`*sI z`^yE1l?-ftLTSwbVd9~0HN5lgjlEx+zm+@S5!mVL{$Y*o=%6f2z^LB$$ zXMU|q4PzxG2p6_Pr(}5_r(SFKEzmwkC>->!btW>>i=rL*DUBk6Ut=OhH*iv0`zNOy zA~>6<$n~>X5z)MhHyF@T3~5d9@r}OZ5SFd)W7;w8eRbiy^an(9Il&8%dyFmG z(5o1r&E8+LL-S{P^+1Yi&8qSd7c9`2)N~t2i{I($;4mX+GFBg<)@D&&mY?! z9+uIkY~Fj?X^HMj#ab&u!~I$?KN^7~bb4;EJ0-`j0~!hnle_7b^O6jrmFnc9={==1sRa<`4i-CNjHP z=h7PnF`=2K0Z%CG*J5pD4?XW&!lxebqq#U=)4(CVD$%1`{MU??RMSyDNjbLYiEAhp zN?te>Uq^%CfB}0iz?Y z2eKElqA1o~1R5(jAC)!`4pvCpW~dH)b(Th(ob(ow>GWUTH0=?a>}qV(G3;Jdc!A#y zsTKW&up8r@jluSe54;B!&H`7L%GfhB@gJD^{Yh2my7nE{e`Z)FKy0Z2_H+S5e%JKn z5_MniUTd;{pf(0a=H@Aa2@oFS1aS=Zn#=e280C^ndN2nSfJWH}DX$Wr3K=M%?UcNL zDR@*%N>hdB0Op}@-EAnkK#lBhHQ(A4U9&M7GxIEY^%Pxztjsv7A0!k(olcnV*r4Y5_*A&$8yB1tX1 zng5(VobPz+6xd^L>D*qS%s)SNt9Y=34;+7yU8ae+8*&G}3V2{2wO9W7v7`Zy#o#QA zSTqL5lg`?)q_jpFX9Unae{-%_MP%SoI8Gyt^n_s?zeb4Me!inqpup>E)Nw&07gljJ zW4qZWTGE_u0a$#}sZ}f!jF$rpxlKS_uSQScs}dOf8xO zitn3N2-(w@ZyT7>uwEk*pYpJjS)yO~!oOOoT`cr)^~5Ix(q4*))ecKE*8Gv16}P=H zC?wEh40NKlq1*sSE(`qay#`=PS3rgsN;3iD?Vtca@SdEwdO%I}%g|I@c3{ztBsF-1}d+zi!u$1ET^iZ#o2aL=22ty32H~d-rbIv=ERPGHC}ynZv=Bu zI?-#wxNDS)NjnJb&O&}OXmaEgR#U zkPq%WQ{S!0E)DnOUL1>HQhyOtcol!k|3_z#0LmY=pbRf>5JY` zF2jZ-;1;j~#OZpj-%HAZ#Gg2k<{4$At+6P|T~f}lLNcP--}D4vS6B=H1n~@F4gys+ z?p5HOnr;sTjfVM|xeHbBW=aArNw^~~xZtXYn1LMGVT9^B>G;b0Ka!-#U^#$kZ=4h` z71Jw4FrQWOO)}oZq43)u49>J;!0apLUu))W6||Fw>fr)_$i$s8p!hhm@OcmXa{T~W zC8&w4iK~dhV8c<~?|a|L}tYHqTLX22s7xAAevX(hL(qw9Ov>ja$JUt(^xy z)*oC%Fa!2O74h%^AgE%*nY1p{aTGspf}O)p*8zKv+AFrb4Soty_k2M51v-79VIx!9IRiA zI}`hs>>+jg&AzPmp>7}HUjP;}4juAdU71To2)_V84xemTZs4}>qt;%e_2vww2>dOK z0n8i)KYl|Xj31x(QyN0p(~ZWCR$AgTe~$2jO@z~Ezma*f=F$-i0HbKpg$0Am>yY*W z`=G+K`%0}k`H7x4nlBz9&}8O_&VCujVk>nfrV^M!y0Q_rBsKW`PGrAfQAnpAdaTf( zYNk@YW#KOpte>&f-x(`o#{x(R%jpH-(0cFp-naMPiO_YIXeFcw{}d@K>1=tZAjJ&s zwUoZU`!Jcn)5j18?AeZ~*dNMJM<(>wKKrK1Ex^Sl%rNV?Z;`}IFU0?yMmQ`|B03XT zD)1DfUu>jv#S0EzJmPt;`Y(jD&$yq#$_=?w1H}pgUr&{dP7}&PblFo--eEmLAj_eAwUnQ6w*rQwEchRT zoG&9ALxOxfx&~t$%upQ|s%(}oyQ4x0X|C})ubcoE^EBtR$Jg{J{85ANI!fQjnsy?h zY8R>&o2{4HUSr9l_4P(LgsNe3#T}Yj)n{A<2L_7Wl9{cbp(MN;!i0AY$9w&&NyXO^ z`kEZr?Qt~?62=8brfdg2zPM!W?s_QLN5}?%qITx}{(u8d?WenMUV}!RWrL_Q$?7f~ zd19Aia6RkOIZ0{0h{R4l&;4f&$fD_@YtV*F<|1_yyJqZx0-mvkxOm)E9nY7 z^l*w6&R(N{7o~y)q7Tk}aIT>Ume-hu$cF#ryYm_@H+}sn{C}ul&&B%$#JOC=;b*bP z1h+cjrPHczU$r5Twfs=V!`72ux2BTKxBhyo9mU?`tk9#rX?lsJz7Ku9x{&Cqi z;%S6@hG>x#C#q26<-F_LGR1*m4RT{Ua4bWs-t{dro&oE~63v8xR&W8a+RNWve0S3% z`LQYbAo@?J0AS$kT!dcPL0Y1984JuKf&n9)-|5nCn6@IW^_YlywX zyfl~-zIOTgZ>lO5s&jqjq&j3**#3LT>C{xG3MXo zp7gRg#fcj(M`eMlsQb-{%mQFA z$gvaMfo2dVAuaQV*x?F+-*R0SXKr)o9>X-S3I^h6tRYE3rTD5;FCsO)s&i>BM!2IqUrwy8k> zDz_suzH&?$K*f?)<4KcnEIqk{zrDha+V3Gv<3my)27n$BR75>TMmjG^L4)?t!0Dgh zA^54PzXRnZOdJXi`rn2SbdmlWAN&e@gdrg5vBLmJ}F58tDe<7!YJcy1S8( z?(Syjp__a7{nuUV-VZE3!g2A>a5i&AI8Iyng|vVd3StO`Lk%;UAf#=RfM;()9K@_mw&e|AYx z0_WX#LxJzSJpNZ44ppy94@LHddw>DEfFAg?@Iz+3Is#{9uo7TPfZ43ySK!3)R_r;% zh`Q(bUAxVhqr#0aL(ND@R6b$ra)TttOTx3H7f=iy{NI)tksgn5!v*2y0>P3*&Oph8 z9fb_sAHeAAF5c(blK4;+Tu@oJBKFI*qxvu6i$N@EjMRLAK@I|lgEI@@V+T!z+hzR- zMf3f4=6tSw%Cb!qTuoFZWG7Am-zOX=1?dLCia7YA^|u^Xxq$iVBWC5ZUBHKAPp+)( zOrseTiy8E^EvCab5q&?nJ0)%V)gJ`?Mi@mS`X$+ZB2}2!(`a)NXh?*)o{b(F`@SfU# zONyI4*zEk!WNyi-Mue;pVW!L2oxcXLAzs|jtYJllS7xa0WBaqN@~`i2Y(?Umrvc6w z)Um3s`Sv6*c@Wq+4>ZbSTo=vQn>tfEkb^~&rK9yqK zRmsUZx)e9t9kXV?ySO}hT*C!dcVZ7g5~ZTH)IalebT#PccPok#unn2%Z-jnrw=d8t zy~24KaL}E6s-VDJq2z=q>$CWMQ;Lcdr59cmdJXT-V%|7eiuDi{Z_NTsk);0rr3F_3 z+kYJ+;uiu#rCM*VEM^<)oe+eaFCY2)cYMra-#xaSF5pb60*T|S;|C@C|!gvksH1E4MTtk zU-BR{Eq(AYr!^1Ygu85jF0g=_vs1v_pY@=-kg>VQ=aA%`-dM1UB&-^H^rgMf2g{>t zu+Ni2`0LlEOhw5FVlu*i?=23$=ENnZt$f=|ORkW3<|>59Ku~LIYqzkMs?=4-_O^U5 zO5o#(U^m;ENm2mrGyzDFX6<=ge@~!QE27?0Tk`FD=&&)qGC}x8vm@PiVq9ePpwi#q zHOrDm$Lx`O=7=B#U{#PN@CiuMBuzDGhidG(cbr^C(M@DHvD(0cj1qN-sTzw<^=5G% z9*38pQnF5(-@ZQ@axW)qJAbn86Q)a;OO#_$`y4KXuNxrHh5&a3Uinm^zu9m%}j*TAdu%Uu)Oli+7J7R>-(t z#E=V=zYtrBiTBhTrBTh;a0ZocZ=81fiEF+{C@K$iX4N^x*B{@t zB!!oPCVbRPC>*JS5R|}V71mulilwGUL7@3P9~!XFSNAuE8z~9Fn1JS+O4oBrKP`3b zyaWv4*8)CwkzP#Noyn^a--`GxIO9uJh)EZ!Z&%U}L|^DI!Jf~SiLgLFD4Klymb1H` zIFxN+Y9rs)HrK52&Zlo=| z2Gc9Q-JND%#iWZo$7Q3oSsstDB?4yc{DhWD5PUr-%0qmH<)dC^&Nk3e(9fNdQ-A=5y$=LQ)PF@3gROj;je?DnRh&GIbA~rVLB7(GF@54n$~=>mOAVe`+7Nf z+q1j>tmZ{fVH0Z^)|;>MRE6>7>3QWX!??C>jpG-gI#Y~>)h5FE4}++nJ9TiVs$BK2 zDAbtq_AZ8v(orT59BdBrolr|K$0#!?*&|*@xJ#yNUb|Ra#g#wjX=WuN<3#~UFdwhCB%T4G^oT**gwEF zq3S$aDq4|e)5V8Xc#(~wEypzZ5r0|G5xsFs`7L*6D6?Rl7oAw)_oYV7{QJdDclarb zU<8rAYzEgWGMiBiLEDXfO?k$KG@p^dWQVUDvvak%S&6=%HyuI#zIN(Yv5c;_<(@-S z$7e->k1tm3;|=uD+tLR6&w9oWn(znLV}2AgZ`_-?N)0Rn~sp zM49f)LJey^IUq2Q>BhXhsgj1U;jKI{uy(cfoT>FtEMd&~Q&>1#6vgnBIKiAH2^Ns^xH%s5Guq6Bf<7BMrm z{i(yin8DJ0QiF^62l&;9+h5`C^qz)@trOWIyxhZ+o0F|fKO<;{u(xMBNUt2UQ`9E^$Xo<;47 zIA$uk`_W|;$8T414oRK~)^V6l9@C|C7h`0=LTdUFp^|y6{Pv<`GJ`56O3}*|A?>P~ z$CAZ+)TyNP2E`0osTe4zKiJKu-_TwU`RwaO+M{W}(pY#_k|h?UYqtDtr^T*?XbpEY ztL<#t=Me9$Akn;8&q4A+TB9MjzXFf3*455@trH#oR*s1(v73Q?&$w1B37R;BZ|t}| zAj8`7A&*7g==h;9lk)TV?x4P9ZY3iSx$hJ%ab?Jif+SpWb`RsQvtOI{CE}pX&_gBi zYs4T$c`Uy8@0<(beutNB9fhK_LBR?}LNsJ)ElSNl5P_AA9?(l(`u_yJMq3Ra+K!nxPNcO1Ut$Ltp!8@ zSYfqs+o&0pL2gmy*kvS?+`Le6pcS=eKnIm#+9cRoDp!*jcFC&!ZP)YL6`6h7-emfl zKdX(7C~ZDrSo;VCsD*_>63FrGHxAfltRoCnH_YU6CC+K7)z36TXMzRv9jD~CRSNXq z;$QrdEF&s#EjSA1$s@73fmYE6DSRL_L1H0O=GO>CQHWuvV*ARTB{Mva4s5kRn<_uj zhk7W3Lw=Nh#Ss9~P7XfK%O%Vao*$%ZV&91CZ$IqB&pdAASBkzXsjoyR3uovP0q(~j zs65oHw7pC84j1V60@>*ha;SSh` zZoO$Rz5FmG*q^9cfRb;&&>hTe6wH3jqgwJM85Y}{$b9rn_f?*{&5o5auWtcj__vRe zL&-TJ&_$P0k-zeB!m8sppyP81XMRQBJ%y4frzmuVhmm{<$U?zw8`u(nlgmZ_haP0Q zs9w+fjZ~JkpvK%1FDa&95f8h!Q91~VTScJKKlcCqj#<9;HtSiaFb5SM_MHGql`-}F z^Sia{GH8~RmfFRUNNI!RcA9x>c~_ffk2RzvIaS^H`75@+St2)ZOhYW|VXanio)!26>2OwpF-or}@KlT?!%C0B(3=EZoOCZ$$rYm|6D(7?(LDR|`^NBQzZ( z7j>YS5}%|30E9e=t6Fkt9*1S8gF5=P6RCrUlii`&9!J^kdpqA%eI^+A({3p$Z)2Ml zjS!_(^4`SSiZYs=sK-^nI&fE)ut2(YdEzjVWTqCVOV%HwOe~+97vUmE)eXG#WvOkA z%YEI(oD$?7>pL)aP4&^c+L}+Ck;9bNXC-Y%lojowCON~X&81nY@Xk$wr1Q_bTPAQ; zmN;RD#jWyR(uJTZ!BABS>-_=vAxsc)FCVQge7OZ z_KKUxda?rI5+ci|QpR<7vl8bX&qijC(h^-k<4Rfwm0uWK8%&;`HGzR;Cq^8vFZ3Y> z=ewAinqDYB?>^3kMp{PUBkKiUkJDZrxXYP5%F!YC{R%pleEQDK=ySP?5-4IEs>bsT zf!7JV{n>rys3;UJSIxngkciK@+>*oxGp7?Nu6Up1@=;>#7BN@TwI^RWVNA|VjxkL{ zrr3mYPVdM7NZ^%nH%>)YJe_J~qb$!s=;Xe?OGw5Za8Ef)(o4f`f*KM#X6kBi=DRHA zS1Yd@vrUsrg1g%KaST5OO^MhSsC_|7Qk4tp{ZM0CUg7}KrX{6CrJQdYdZw*PrFz6~ zn@I-dzDPBvD3W@5;5=ge>w@Np60}o7eU$Y%%;7?J6|bP2Y~sFPkEVaQX|yl6kE4Lc zz46S)Dis;w!w_GA*4`!c{k}w=@~nK6s+sRA7C1r%NgWx|z|^%PGha{esRxyFdMfsk zCQ@$VPIj?0bIJn2IQyXnsl~aXD})`c;b_C~(%F7ACLKdTs~m!_`}2=_#FdI0;Kd%I z0=Ds?u$l`QLkVA*@K7k%#Y$n6do&V&b?lH7gqDJq;V;ePq;UbrlhP^w%n*4;ycdh} zs|#v|Ftv<}3lq7|<6pJs3o|EpYi!EiXw@SqLkGb-MFyzPKIfH&%2?*f5$!m@ono` z$6)`i^TzX=Ok@(&WsGzp(rl8nQom9IfWilF;$$AQkY~BIDl7+&(uJo=ThI#O?j2jF zk3>|;R?u{ex{A?2zf{4@udBUb+sK(L9d9z1STf64Qf>R^O)s`_ss~Z0+ z`EM>p+KNFGu>)eyTl{Q*%#NRr^;d${cfDb2JVK<5Ku|wSnBf3I*v*E#^e_2f_jV%G z`}?$Aqo<88;&(r<$4SJSXGh*UBi9BQ@;uT5kEmde_NUPMBO+tmY?LV|K@96fG2mwSmUhrO112wVqHUe$Zwl`;BQAe>rNj6?z%{D zdH=5$;IA|lwH7!WIHj)cfS#L`G_qXhKeAFi6s8t-H@Nuu)(2ICO`raY6T;fZp^E+P zQe!m~c{79pOf^Ek-0C9T`_!$gfTJUAoUmWy^3gtiJ$aPSMoGFT=$9f&ZswA@6GAwr z-{o2dj>Rlg1p+W(uJ`T4H>}HHFbe6?7XKti?tm3M(=3%lMC)X>ewpS^q8)Ah8)da9KoCix?%!$$i|qOlJ{gGUh^ZsgN*F{#7Vin8mgg*ugmVhEy`{+~=mW7*hieoyO-)#lccXvIixkNmEL5N@p zqJ6NAP1^-zotm8^rB5GMs<-w#Wr{fR?8=_MYjpd7S(cz`{rdA1LpyoHG6is9owRjH zy&gCuErCf3H8h)#opCZpf%)2yZDfrvwI~-CGesk^dO)0YMUOLyFG$-jb)L{hvnq2b z&~+7xibvkhKMbIb)f~4XfC;^_2v6Lx!Lp5w{2)2RZdyYSH^X6$<+I(17{6^RGsjH) zt?91J)WS)-vQ0Q*;V+yAG8Ce!$!VawKyL}On?ASf7InG5$gumS1zZj0ko2u%oS=Xy z<{bL^{xxN;%97Hg#4qJ%JO5(5OBiaO`O!j6VHJg12PmU{K*>%}PHF5>#%Z3rA_yz_ zNgR{prfi@zL3s9NMoa%^;I+@A!)FRF6K!t%vgd8>?QG~|P{2Pw5%Crtp)8~L&m&C~z_u)n1q znzc{iohjm-N_NZDKAx*@3Q&Cblc0)hvP@a$k6tUct&QXM_V1Q59d|;1B2`lVB**j0 zbY&@8f8x(5W#uwRI(fFVDj6H)-OK-;i?nOinLDrxAX3R{x7Rt3eEEcQ|Jn>RQLsJC z6%h4AYE@L=K-RIgNz8YDS!rcZ2 z3JbP245SEBxSU<$6C6arTk3N$??KX5bCExnQZi#(Wj>edCg6>vx4me)vD-Zze9dDu zO>xxjE^Z-V)4=5_p~cD*6_)kLa^I}LlT8=_#9rCP-#k~`RrxW2ij~poeG$LeYNB@V zxBY)%J|LaPn&W)a7!_J-!~dTV=-&^XzsXvmw3|(oja>FMvScT{+!P5Ib6{Bjyw|k* ziUcvl$kp05#D;I^{Y|Hr0cP1Y~V_Nc7> zj}YeuST;uOc~MB_P@vgG6bjDP6N%NDMYp$SOTRp2TguXjDCziWJ^HeGr+^Ns3gMwk z4_6lYY9uX^SVru7%=N^EId>478>0}kB$uO6K|UOL)Gw3HS#w{p%9awcK5Pv4oo``M zi#L{cw#GDt z$yYgW2=Yl+9}P(GsV&AnmOmki8~L*8-H*}|S|UH^Uyr)v0iQ)%VsuGea`I~*2Rqc|cQL&qhmsHt`psrLDI%Xi^%z1TiWSD-f0uI68xYzoXpo$chtbB)u z)R^mRD{jY+-lE3;5pkT2GYryhtQdzp^@R8ifSwRg7L;}&bQ9f!wRQ~3X`wo>Tb%s? zSM&RHna;MxXFOwq=*^rja+F(rhodiZ16Wb(-4(zAF-7XUvv>|$zZ)7$km6k1RSP5p z68k1g)@$_f92jV}PT#2tu|R1HSov$^Emh>0&_8qB^id)gzrfr3VYogyXAK`lN0}+f z@3e_tg8o#GKs)pJ&7u#UUJ8F5o=e2Fh}W;O0!_YDrd(71F>oyNgo6Wv%?JPm3<)mp?0BbVT z@H|J2UlG;x{jJM=C7`qz( zP}@6uVCyG@L$T970v4&f^)pOBCUHj3t`TTKRt82$g!F& zVCoTLsT-m?SZR0mT#HM)dOi75f+p<~Ze6+^lgGi$X^`Bs>YfeGL9hvr=gNLD(O$SY z(qYkhRQA##KM^n(t08&8B3hSisSUh;zJsSew1~XV_KqvpUC5Y#NoV50Z&w1pNHgqb zcNd*)BS-@!csj8-2hJod8LnT*YM0?syc0@VY}pNTXT1lWd4;nK(K_n&N8J?g7WUT0 zMdx!j4f`XLgs)#ycKW3c=TDsB)GUaB!3~hRI5@;GlrdhWdpUM!HONeB+MuEeGf5R% z@Lt4`l$#jn5R;O%%q8@hj=P!fVc7dOj(h)F%Qcd9Y_OKdbbVQLL@aNoq9F`6I}>60PmrU^2LjXX8}(4Qzts z3`|bPjV~tRc~fylV%70`(Vxr1$(iq}o&gN`8lHaSM%LMa{bshb7ON$8;Q=>N?7cKL z&K-WBZ{?MQHzPTo_45fGXbCc_(r!_d*KCQipgxYDgI<>c5SmJ6|M=k zE2-Rj&Xf<2e^)(g9<;&X#G%I|+=t0StI1vt4;|Uig*A|sLN#-fTQ&p=Ai2JG0+C;Sr<>f6ig~p`~>w7kZMEl`D^Wgk5+Y%m2 zmNFr3h)*kYaO5;*S&0x%0vy8=AGmwUl8(p2phJDtN(L(1fY0IFzDn<(`AN* z4;`&vrBd?i_-2BAvHQaTDS@)V?5L9VvtdjAcI=aWfbpHvi_G|9hmOvl6c)aEKPHgF zu2GCVU(%@aM3KI?m2NhuY1An=OJ5Iag$9`unWVyqO$KNCTM>chi)9wXrswAtYZM;6 z&a*Q)YQBvO=M50-Ny;n&m9=T4$|<2e5vfH`UDYYZKWnKLQl4@=zn*epA8L7s@?i)k zYHpqeUE3zx{sKmt{@JUhc7nXe==R6O4c{+$g=HBAX50smNqpevZY9Q`d~|ub^{v^jFiZ?Ee!tuNS99*x>xy1}8 z|MU^dOkU$a?DqtIZe?%J2leSs7*>qHnEWdfBzbb>y6@se0-lq?Avg3|n9&Tj7h--h zYdnScUy57O+Wj1%bKJmldyeuY0PkIXnQYeyIyQ~;`EGB|RjqKY4GHM%U`UHzl_48d zGgyx26kg1}EBh3NG?v3s9&b=?>f$(DQcbF?+<=yRyc-*En!ER9o}kr=ZXip@`E)QE zg5N6iX#L2-XW)JF)~|X@=k7;;UMYLzD^yae+niuCk=nd>kS(`;YhqRySjG0NGr#th z&)({`RO4WPl+rNq-^HG?B67+#wiVE{EC@Jo-(P$iv#y)Dt>{QtRAJNI?g0bLt*Rm) zix%e+tw~q4>JN zWtPpy)*%e)9O3CZ+Z>7;#5|~utf=|SdHi;<) zYSivNgr>aizGidptba6-c)3_W#N{1I!}~M;dr=b4J`c;|{?GBAfy)fmv$HL<8WjC) zBAv~Rv;}$jn-oTr|EhncY{CoC;h&hf&Yi}Iyw02JAY_X1Ni6PGkKK*b&t)0kBIn=* z-v1SSyd%iweA0tRvZ9R>LG8g}2Ik$8ocQV>{?zj(n|ae?8kWq50nf`KGC<@*>o7I) z`UDQna#~E4mkW|Z5mN>C%fX!L3*{_>eQfkD0f9h{$pP<=@7?|^@oC{rY5bEi2#g4l ze4d0RVdD!7Bt2_++2#iO#RyBF(!->hT+&)?TXE{*@yvCW)cLJ0A{kly#E5A*wku>q zkk%SH7}ILiCX1#%5rK+~fbSn{(q8mcXw?ZQ{UAJGS4G*^yFyXQ zT3?OF^CGC$@7C5z!Ad4VV^hmu4RknPDt`RDiQZ45luSXI>-1bMX%*B?+o52@mP(>1byF-~$=4q?=?6 zGQgZcV)-f_b-MZ9#-pg=uk^2ZeeDk6&+yuUMOw`U`7r!SrL_E;t)k|D0YEurb^+I; z^ZC;nI%oZ(1B`A-UVB42zt-cW=51+f+jUI03oL?TXL!z=RxK?D`$V_Wv?6s8H^SMe zBLJ+xntHnTOI~3*$Zdym@ixsWyb9@Tb(C_3x=p@(90xYE1LAl=6uF?IH3!Kz60zjF zv_Dh4tT!LjT6&3Dj-F)zJtFl+YD^CEO43RdfzEJ@aw1Y?{_WNzp3JWWxHjl?6fdO= z6}wrcdcc=G&BFOLM_xyC5!T8gSJYnw-&M2z#|AamvR-f<>O6q8eHIKUN%s72rGdi$ zMYfyvDDAg-nc_;#1*4AOF{>cil04aHyeK#rCkR><0TGlTJzUXis~f5xR>xK$NkSto2cOI3W4`y6(uQ|1Qg7F5(ZJz0_N)%s7m+3 z&!&|h{ei~EGT*_Ol2(iLk&;#vUpnUC(0;6vR%NYHchTBCs_P~fQ~m98rTRN&&R%uj zYO)v4?ud_;n>U%@jH-Iarekaz-?gtx1_GZ#zzit=I!{evAOyA(SUe;5GLs(CNa35u zK6Og6J~FD$iFbbQ8Sq0LHkX0wUmX-+%dJD%R7@T-Ta$e0NgG8 z2ld(F?-%3UKwd#Wp0D#OEJUjl1E!Km)`hr54C<6~TupztHejq1AvtXHyGFH+TII2b z*8Gp;KvPR1t<*l8dd$8(7YQQ5yUzoV-H8O8Dw67iivrJ zT2GM4fCPWY99>JLc``yA(S;~ye5>^R`wcZWKvKJdf}L>x!HdxzJ3K`)|HmD_pKmNS z&;u}-u~5=O|4H`t+o-r=>Yu48Im^%j_rcWA`a@Sh&aRGEpg(>8yW!)cOU!q3gu*k% zQsAqn5Y-6mauzfh6wa}Kzj}su7b;*HEx_yTU~kS{o&Vz7 zQUj7=5RO()QJYh}@NmOlhk!ctnI zvZ4}gZi@0Gl?zAvEZZgKA3A;h(1>2<^y=Adz!-Fq_Xy+`>--kq++=ja4`?mHTYdynS#vjatX`nP{`aq!rF^Bvl9|$o2R8#txu+8y9RgRpylm#27mHEM( zz7Mmh3(A-khlAfN^;19j5dvWVGTox^)z7XMd_(nzzvRs{^qiBBMqM{QB{EMB&2=vV zlotT^y|6619goS#(jaY@?G)zDwXH7gDCvp&=?aYUfghOVHy+%GB&vl~)|D=4zE85? z5NqH6l3dan^?dnQTkEsfhw5exnj*kY4RXR@)8&?Zujv#~RNsKDeA55etTso1tzK6bP(nDh z@yUj;jWXp`@_1>$2!fWh!J}ePBCk8w)IH$e(AgQ*s}N~`V&`M8PYoni%bkA}N}YKF zrK=#Xq>8>}HF5n2mfMJ}-z;!wIeBclNfZXkx*SurUXr#$GpS)UzQ`4J9^Y33vLe)VoKp5H(FY0~#>_J0R=FX|9e?Ma; zU9=UXEv(P!wi<0P+Fo)y@hf30Jt~pmKi04N>hWS_QsM3s0RPM8>i&|Zl*(?WtW7NB z_4HuixVwF1Yrxp!)rD*#u>ss?yQ6xO#jQm48=1xRQju;~(qUvcqXkxX?@hqvk+82M zSe_&zQl~D);~I4rd%Gu z__FZph+jnPxoMiB4P{@nSYt5C{eW5LwlR!yqoi5F!gAaQRwu1L?rAoNh^T@Vn;o}Qo z;4VW;be8^#%s-DFz&o7XoRsJWmgigy`&q6N7w}y5|GtaPm0K5(6aqcL5NT zCOt3Jo4=)iJG6T5R=URjYYPOM=S!3B z^|7&YilpHY@mgIcyR`n@i|BlAg6urL{yL`2f{0AKkfP`}4pKRid1dc+LfS@{sUQib zGqSrXIAoXA_}i%gU=7^kRHEPSoNi+k#Y}A{E^ACA*~|T@t$Di{Ky75_8JBjJyE|(idQHGWl_p^1RA7|g(%2O>=!}Z~e##{8=nW!p1 zhVTNt+&plQ{*DD185Bbdk9erZ-T?Fu3(1?nGQ=?P;Wfb~%GRKLwz~%+Ch3HHwZVpx zY>dw?QPr-u8lUfbs7sI$r{gSVvYfAyWR&@gqJ}luQ_D*U&7C<_iOt>4t$^RULaYyv z0JgTRfY~?eyI(}Wt!S@I*?!^L4DOn3M3jQs%suV}J)Icr*81--GPDax1z_9@vyvum9em!+}mTPQ>5#LXtwi<38chTOTPpNjhA0N{aNwY7><~ z1^huUla&`-Gz})W#ynfbA@zn}>4^;nxez2r7mDuh{`PddV=q@n(-^64A+PYKl(+i&a<#ZIw#q5zqL zl6(ssa@&90?ymBEgI7gAUwuM?1Y#r*=?8rg1PWuwfu&MX|64#0{u}KzP}7-Z(){{Z zHBNRJYS+;wboD^-*@qRFO~M@~P}sQw)@%H`H0Mo5l_srheN~%p>$|)(wll*7vU&1) zHks-s?n+xfq*q3XLh z>(4KoQw2+UsZp}L!?<*3Yrh)5h=YT6g}@e4Ot7uEoAmhk(4yP4#{+y8RNX&yhG?AA zHI>f7ej^Lueg4CEf_0eGN1U651LhIrXg^*oGqP+)FUmAZo3-f|5ePf^cEtBghh_H) z$pv<=n{Mc}`WvtF$0JQnMkq}r$<-Esg>D~nfg6?HoT|Ycl|K}_v)0U36fe7<&xO&- z(Kj~ua6I=FYww8hR*8I)7;yp|ExUH$T&yqNxmI1 zIwm;MFnBP8Iaj4KID9_s?(y-mi1i0rUEfD0q507nY%)E^3MH*a1${G}Xl=qz^2Y+or2n zn}PfI$F9nx9xtKlonU`kg5!wozpm$(LzqBKsDrgRBkXR2lt21;-nQ6E$nxD=Y}x#&okb~gX9E;oYytwfOXDE(Pb1T?F5%r@Y8;V zU`7Il41K)2aXad}(G8O{d#uS0<(?-z{56*IIZ4{>aZrrIe#_)Q(K?%gYiACfYp01s z;qAEQx^wu7$=*L&&xWP6$8$|<^D|9fSVCHt&rYY^&##blIe&RFa%WLS$=cU=t$glx z8yd%zp|yZ_4CQIO%}`Juors}&It-=8;o8jWRAc+}clGsF?M7hR5z8MLOEkg`Jn?H~ z>}9VHI$*im90t$>E&P=~bvVo^tX4kAx(9OCSE}RPJ1Y?q0W$wDGjRJ{?9Y|(+>dd- z8B|E)ketI&0Jh|13nXhLa!zA*fzhV@m)6P&p2E7&p0$W54 z9xjX~Wp?YbaPor6|4fsUvObR!N@~uB*i!Wb{%#GE`adm9A2!GZJx(k^ExXrYfGkeI zdtxq#82#R2PX;)JzD(~M7&d-&_U-6@WngmbnKxsAWA!V~IXLV%$nCIcB@z86~!&u^tVN7tV?g74C55M7FsYB5AIaOkhPELj9i4< zx)IlxWxYv5_&h|jwf})wJHOPDEQj157(~xt1$&3_LwJPGKh~&^WyK}v=Gd~Io7}rM zC*kOIyLXra_V9>EhBIK}8(@_p@>?o#Cl#|QokaEb_q|`rwC#bMYOUt7{Q>G?U+q#~ z<>y;9?bWNfx=H>?65Im5$BeXFjxKSy&#=-=7_i*HQ|Un1K*g)-XX!jfH1V0&o1GJ7 z*VUa5+#%k|EusAC`I7P;Mu1dvuY^DK=r=&V)qPZgk_Y2Uh-H0d%tGddW4Pn_+AhnJ4}DvaV{#eNC;2a5A<`CL7;Gqa8)(Yfq?dpJm;AxRrHbHhYn$PA@r)Nh8L&2kd}dVpz{$=<%?npCZB zqtcU!RIu9V9K&?MvA^PUOeZJ2yWb{m8vL`3bF6x71_=}+56A)e*O4u5C(OaU0F#NQ z*UK~Q9teS&lfYH0mG5qHRPE@Yy+e@Jf+Mu*AJN+H{9H;r)iDQ))7%QI9fh*ZClAyN z19>j5Zr&6izP?<&Unky_D09MHLd(*n0e|0Vv;SfVTGlEk z{LpJtvx)Zp(wSMZ-_HOz%Q-^PRqVFTM+CI7Mu;BzE1rZ*8AuPRU}zIoARxyyO;lT) zdsIQ{6@j^}ignAOheAk503(ORQhy1l-DUu+sjJLBaR{LBn8wF10q3j$R^C3~AvKkh zD$(|$0>*yS0j9VER}h)p5O>w*`?Cq@{LV8@SSah9fBoLIz#2hq`fs^J+a)x=lmk;+ z6OwF)Bj`EK!SUe#$$ImtHN3{7Wvb8c$RfpMhJ~*n&BIF3$x|%C)a-?qW0$NPcW%0=am{$Bk}w*EVo+Xm@8% zW@X_uKFOyqryo)k)@1Tk7T-{GvXq;d6hcEEJBp`D5{GgUPKG-F{VO=EE`*s%lJvOe zs^mQAF@lw)F;00reR-!IPkI`IbAeX)1o=Q<0K?^nyN(ECKMeO2|3FAIW10T?+rH{S zns1-Q^K0UU%;_5q2j}?<4moxs5|hRWBT_8+lG83@gQKgeG+YSD1m za%ZvEIJuTw;u>upj-|Nlm1f!mVrvxl!L0{Sh?H@l|6Zr~V#cyjpnz_oxHIX5sG+7c z>pd@gUUaXyiTr=Zu>c&0k6DE(65DTrXcA88@PKJ$&v> z1$jzL?Ugams}ehK-{_Qj*Yx_u2wf|EpVD#;)%(q`J4pnZ44FA&_1i#8uGHr5(=h7_nS!nW(A6YfVJU-tIOGEwVpaOW4ekOWOp$r?RFjjU zP|LWMA3*EkNaW3KKtHrI!k*;NuTDF4&({88@QSywpxsRuLioFQmje#W45rjxK3>lx zY1H3#Lub8y3){!C5;Uv(!+#9XgkPN_ceO+VC123jt7Anbil)l8k%Oq#mks(?zTE5t zS#U~cSe6L|D~sP-u8D-cFQR<#RUyOYYi*`domv?NpetfAv$ogeFh0gpKl5`VMMcqK zN8Pa}HB?}T_o>XKD}e7!yjL|=g0u&!64DClgS6SA88VnV|Mz-{ya&rd>suKJ6S40H z%cRb@;keAYPjsJ92k^i+pj@fK$<^53Cr&;OJV-9tjgxq03cAUAe0w~XpaeL5y^a4` zirB)Wv_ue)TO-k7w66|}wQQry(4-cHnG>-3mYPp9<$+(D^g-1<%)fDp7*+}4N*`2) zaX&9^6pVl6(6x!^D>=lGN>+y@xD{-UZ4MMIKSM#dbM`raLTNe<<*CT#7@u&h1?|cU zIF_|);+KDZr+^qn&G(7CV}ec-re2sixWTpL|w9v8dm_d*uHCD9ditH#ch){|84 zo$b<#rdp{Kqv+pmeOnt4-dHe@BpSXXPfPPyO6uaqF}wnX2JgLPBNSzp&|Z>jEvh1P z;IEiH{)-3Ur>}haT1{J%5&ZgXZ^G1%+f-Zw3x3DDnO;n!=VxGm{ioCbYOw2!!9zs% z(jw5RvpsYup)1;hLCH(;F_l>$IAEqE!M+-p&n-B0Lu&0Mtg%4AX$qSUOqXsAGFilPq8z7d*M zf5k1!6=x;;v*D>)-=#d4N;2gfv(#h(xR1g!Lziw!6T(?7!Ygmh=?j&C4O)Kf#C1a` zMn!SaT=Oe!@K(!Xmxsf#d;sK(07%DszCx`B6T@VsgYCWxnD$hZi6PM2^{D;+U6e!a zsyw^ZYrABSL+1bR^wnWee$m#15&|+PrAR9w-8!VClF~!V&<)bv-74*XbT>#zmr6;4 zlr%$k$9Lv;@BRM52cHL+_dRFtwbxpE@Aa@prb2)MHrEp_ltWVkei!CB#DZMKLqM?0 zy7$(veX`6w^ywsQYsApgWy+ZR-7D)J*{)M|`D-c|)%0ZffTt{}RplGrhga6pl$};& zH{S|Letlu-W!u;)8B;O&h+Lm`E(w;w8l)T$;7jFz-tTm}te> z#i8lxj8Uu~Qf(9$-{<=6An2lG3w0zOA}!V&*SdLQ-LN{SfX~fp+TlmT#L)1Vblxc% zgaiiBUF+Vw_bqVtNJf9=6^))`l@78+eg`@yX`RpRSU<47&C{}sBSf{IQqIvKB$-zc z!>VQ?y56@TJHX@Gx36En%ads0EGHBG^t%I#UmZ#o9J^ScM!tAyfMfrb-AhuZVa>7= zD?_XQC+Y9_9qH_`!{H;O(}RDGl$Le^ zUndZ6^V%`L5UM03yYk;d5C!f}I{FJl_DuK%C}&kaat4bmduc#r9Gi7t>bz&m|X6){W(t~nx z;)V?0C)ekK<>_}Bz`ZuiBTx_un(VI#0J2Gbp(j^cauQ=SP4z?ECfHx#LDxM*_9`kQj|V3hyc0C z7akz$e?or{(>Igj=)@g4o%6ExKVn<-SR9&$$!fJ&gv9}vJYVx=gL}OHiMy|taW&5v zY)s#eC32xPo&WkI!Y}JCk7@v;qt&kx8R`Nqu)OVmFK2=PoyE)La=h_@%x~=QA>lXs z=M{g6{V`q;^4%VDsQp=<`3{th7UH;IF+46nW6ZkW3|jLe_C;d}b@LXY>R}X!H}+_L z%lEGOFkMSIWU<5R^U$lT784Y$4|CO=Y=qoc2|Bg$pFX)a|gkqIFu6nSa;ew6QR-i1@keHp9?GR}c#x&}ccQ*Pq$bl+Hp&;g)y-@S1W(imKM z><$CmEv*<lDNM+US9My+PvOaR2^v{2ql-%fuxS zx=Yaix)&qM#DTy)%cz^4+eMQcyF2%3W9wb$iuBD>% zh!>mIlO7Y%m4RV5yW?}8n+sqi6KGEIO^#_L>23^1)}?AK|FyzV^zbE3TGnPCxLtc8 zS(UquUgV8K!x`;^Vs}K&*L;1B{O8nxv{7g-`*B;Fu8Sx&^7*hv!E4~|a;kz26n0UX z{nzyRaIxEoLE?jmW{srt0#9B-hiR9B_6qg0`Oz3oj@T16z$V)hFZ6*C{7|%Z1|L$6HMwuiGuO=$p-jwk_A4 z#m*g$@|0uLOGD-2tkWjC;HMmvy-s6CyV^~blYim~1&b==3&XO9KTA-T{H<5StH@Cs z7{?cp|3dsRBcC{Cy|Jw!wK(!haG z5XD?eS$M3W0_4pR61f5h9%&m4csqN0oK%m`dHB0}_uP!8*$-U$ z>>js5>pwt;<+Q%-oT;<(k%fj7nF&k%i+L$&Ddnp9_bF5-E@qKgkW|O4cbTK1_OH)> z4xTT)y{-X+Jby4~o^%x}v)(*Q8Iwjb#Y;Hhp^oE=e{F$Ey&@|cH$KD~Cd;J5uae~4 znY4Fhs8&Zq{%#Pql(=)f01V(YMWr5?R6zWpW@(X!T8cMN*E z@G1{4R$v`fO*&7krj)}%upgASu!2A$=3Ag5>s-+l|M-lEmY2-Ib4uQL`sS-sjH#vi zdT)35$W65GZ|6Q4beqTjq+6_|oLT;?s|+RC1gA&Z&ESbHAo@9gxu_cyefJov;_O^Uy0 zGh^|8>0!_Z6pV?G@=odx$wHQ&-EGlV`cTrw-C5bfLD%B|Ja+6jOn>KJrwxU^P=O5`-GY1iw1 ziXq~=Cp#X|Jc$B7Qn3p4ia@{bx~E#?z?9GD6rk4N(ZO#Th*Iz#4o4!L{%Wf{k*F3g zxrCSG^|ER_8~<_1yf4mbYMBdRNeoMO>q)$w?AjfbrK_B|D`ee7wSmp_$uc*3OtK zBTx>GqZq8h!47!`mWvmrL3zKMGWsP`FMy+SfRmHc-pig0&G+votPygif4dThDdg|! zcxOBW%rAc?^jlv-KG&LPyp2}EO!-2}K;EO!{t4FJ%1a$SR zjk_ZmUw?i-exoAGOsH#b|ACC$3f0)U%vUD^mB{}M96fPd-Y7*|;GV~8gsk#ShC=kD zl{?kK%A1;hZXNEiRwhD=+Y)QYFuwInXJ4+`Sea$q@DCbiW^`wc&8w*fqF~km@b~0y zqTGCHGU38ro1}iOK*ENj4>Hu9;zEKy?jDBwkKX;1_gzE2Lpk}L`WBHgZ64V4L5P`x zkBs})jq;0Mpb?Jvnb~$>2CYy5D4JNwdA*mt+AHNT|FJ_-0Fg0t&nv1(j5~* zLYzG*m7HSd$7P$7(j;vEu*P zu2&xPcK|bU#oPR%%il#QkAe5$VxGhbOh8CBL~qdbnynfhAi8`A93({zV?5wTr7EBr zN-612CNb0W>g(jz3+g^wy{3DxPT?5h`6Uw+gl2x1tJPv}^)SnjK2e394RquU@ z9?Uyxe0(SB>H75fwE8OUt?%y9`qd*H=`xjF=FGA5G*U5H2u_e+09H|BQKPko_1}n> z)s-noi>=y5xueXP#&wC>0Zu)e4|*>mFz!9Nf1emm@>fh8#~<=n%zVH*GOAm+Bk626 zg^(zHk!X>sMfl9~=HkLo^AXX({FUgLJmJ}T?@;B6#>U^M9;M{hHDo`++U3s$%Ds%& ztMjVE)<|cE^Oxqwp7})~S#J^tdhEWYq-12qMPn*No5uDlDP<%m?c)(WOg-_j%RHwL zAgWu#6qX3#)M5JYoDD&D8RaKPdmknq)}maOsz^hso}4F4fb<*3oNl<@LIc~qCBoiF ze9P$hJiI#XPY{t*pJz1&=hCPH^EI%w?1T(EmzX-2ag!cYGBA!vXdY#zP`iH+T~%0z z!1Q~qa z{FN0J%!wky*QMct-Z{FA@BX@AaaE9RdfjNFU&yrJ6rvB$6*<{zs`CM3Jcmhs9>FIZSf$)EGA6MG( zv_@%zAd9Zu-s|7}Dn^|iRu=qI?-;(FBBQub5@he&ak z>4qJ1qCfI|$xUCwwLV%IlJ(?^Y%cb1ywwFOtL&EXyr9C-g!ZMJ_P>?>ojN1S%oP|_ zyVf(wX@XuS6Yrf@hue;LcH-D-j5>aBJ(Jz+omEGq3fsNu8-L8nDQG)r% zqhL-xjeiuQbtU~oDz$no1>4<(Za&LI$bs>bw)Z6CFI5)YS2mP~z~kGD$6%%HYKy!c zI7n-E`r{O%?fL#4k$ot44N z{lSAtr(>Hb_SNhM&WB>;v*tEQ4&qx2i-Z630!UvNl>T@{gXJG`oB4Evq3Zy)@)B}` z74<&)R3$=s4z_(DTX_6%R4WMb=3jV6|Ewx9ew%3YT?om#97%-q%Fcy|s-&ytO|za;l5q~J6wr30LJgm_7=9VX6qh?PU9 z`Z8`4TbFiu^#^*6gkIGN#|RpLcqw%8fi{9)03LTkQa+ z5c_+*&8}5te819kNa+o^TA{AeKhpUZL~q~|0+i<>V0I})JZLfcweY2*gDDK83z7oo?!?gr#q{D9R4o@o|x{bb~`yp@j!R%l=3*Kty} z8U>k`u4lnXl;r&Jan*0{!c1YETsx}t$G;42y)XeUIVtiB*E$zQTw2MiS1K(esl>cA zeb>K}PDm8?c!v{LIxxoPcof8&jscW!~;puDl&F!)7R{|nt(6Eh1M}+8?1xRuRCMhG^G50E!13P}i3-jr4Wj;p_^RzTvBL4X4 zBUO%Q+rOL^(4Q4c7r{6$jPVUynX&io@2ii#4ua51ZJPSAHMsH2@;VNWdKgrzU=KsP zqq@W``cWZ}h)5XmR&u5ws_2OV&WC~X*2~X#Xy2L+f>@+CuzryI3DWOH5c%86p_W=5ma5Is6#DG}MlIhCaQM9pMAI_{e4mej z)0hAMP!z*`)P9N+#-9ZQi9HPok*GNESUAnM-Rmfre~Qaru}x z_6Gk-=J=lw9mPQq{m4gIgmBz5TC{tmWSV`6jc=T}((UKIYgq|o z^(^B~&ak(|z>0mG;1ZwM$RAAAtwMya+lGI6-OQ-qc)mqXguwT&yDRUptjD$)4;Uqn zY}-xF+o0)=YCZj9*X*#Qj+W-(8upj$NO&Sp;@z-%>^&d1&h^LU_juN;9A{vQzvn2j z);KOsOcS0ckz{t9^bjpKaV#|Nw5G(+1{{>0$^W?bF9@9MoKL$1k~pj8kwxm!!Kk%9`^*|SutiVp*2+&Ht+CZv?qD7<((vp(A^k_oj z8!nyuywE7x=0qiR$!{49D(|$F_0-t9EbGXN4ZsXw3V!x3OMdY2{a6IbNa5owJt{=% zzhm-vIPd7PL?btr4nT^tvEO=NNMaR176i#s-wpZMn_{Rgx6rJn$n@_iIN!_(vIfja zEajpj;eQde;Ih;N6LJL3WeT**%kV&3<2V0pAsLVybJ;ca& zmx+89t$bTLsnm=9ylElHe<{bW)Jxj3Ld=5G#d2dmaV+JYwwS5D(AwI9_t9=tw)jnB z$$4YGG~|=&^Byf3ncJ0fMt=6>LArq4H=@t~P$v%>%CeI!)Vya+iy;!qf(a#f6~bW2 zyp&Qn!_7-x2M?*QVD*j$PA%LvaIaHx)tWiKvYc~zUTS%zCm694FFPjR4_r@e9!!4cusju=x}dt8 ztz?WslzB|BvdSaMST{bBnB&V0nuSZKdF+*Xj#Qd=orksQmpwXv7Ym88#qF1Z-+dnP zbz6Qisw}xrCvwvkK)Cr-2juq$Qpag%wz6Bs{84%Y-^@Xj&GPL3VPROd54Q72M8>U% zU(_JUJ45MKBy9x{;vnmKo~73(F0PX2$VRDx zifs7(D@7Zki(-wh?wbkxeu$0@HWh>+&r?3Hm$h&9C=CddXn8|Uvx?iNP~c7_hZxir zsZ5uMP*-Wkl=^8QZ~LmHuiy?q@EKm+?RFE|__jL{4^u374Nd8wfjtbJIZiKKA|Ney zuN94FowG%GyssY625@=$$j+vJ_9?b4D30n zY(B{mDeC=8-n&&7N`w9Q*qrylB7p>;b`yee@e&cx2U(0lGCjdC%4kO276JxF)xpE5 zuDEj9)s!n+**@$q-D2??*&vHSF1CLOejC#VSu8h&tm^3<*gn1W+WE3y0R8%%mFV1h zRy@@++l!RK|BqzVz8X))G)~g|ZZEF$&=FY8B7L!gi?tSW2CS{d|K)&!aj3 zM1bv|n%gZ2mAb1Aiq{^zAf)wDNKJV*!|S}no4teKMjK@FyZex!q(MxUV89K#nDb%P zgwp3Md#6{FkQ`*<4WZ*@aP}7ggcJ@DhU}aqi!?W`>dTgN6H|A^$7paGVS^|T{<^+J zFf1+juO*N+s0FdkWS+#W3hb<=5v92Srkhj7a}jLMsK|{LJxG z8Lv={bzpYs0Gr&3xZ3s*JI@hkxUAhbR2GNGBYcQ@LAnbpQmK5fcgQk{`IVnChsgAH zdfTbx*A8i(qGm`V;k*1|pS^zjsBwuse5*$$>)$Io5}Fu8vnUwzZxVD(gxv3TH0E!CFM!rSK_QitjmXz zi#&@y+P2A4#i7MoNasLI6J#lX+Cb_eLevr}0n0fGo@{5W%ZE_XWUYTr`J!J(qNbx) znRpC}XSk3;|AzJd)iPkbH^cI|WY*6di|+HTICe&HLf1l`ZLl)EZvNE;tKXf;jw@Ev==g85f)V8Jc?q5OU+>+6iJ8We zE=NT_U$<>MILt(n+KUU4`L*9ZXC!JaVyV8v$T$zOgGO!$4>?kQq)*7){q&`;r;jY3 zOuly`yuYg;{k7-36F#jZ+8Vol)EfWKE33Ts4L^dJEucO7h8~1y$e%BRHewF#DtA8p z{zLcSjnxxTaq(l6oZ*d?Bh-A-A=25PojUZwW z0KCf92x#E#xTW^n_HM0NayQ^0mCJzLg62SHg@`iw?Ft?VT_<&tSeZi^yT1r!$q#*s zxiaiuj}g&+V4)?Mo3zE{Xp)H6>R06REYTKMv$gFx(XSpvZ9bz~^1n=%1oXe^C!@#l z02CMQwAr>jU8wow$BYvxt)#1$(!xLY+myFm)8^1VPIyoBHZmhlBJ)ZQ_@7;8ukSIY z{|N5TVrC24z&mw_Y}Ql?mBURw;*CukB*L1W?w~+haZZOIE}Wt1$0@a0e9I>uKpZ}{ z5i-<4rTsEMuPM@Muv4Ukzp{KQLb)Pz4zgjOSET_y7jxSqaTtro-Y=GvbB&oz8W%@* zYNF`m!OED!v~mO!=Iny38*?LfgKA)C-3mtmv7X)%lX~OwS~Jqk+AV!;z{=y37U6c< zNBnci!MlSFY=LGI@a6@4aK2@-wb6+Sk*X>s$zD?CRo{ydD;)0sb=|Giz{%0|&(U;H zp;@TKJ&^cAN~W6OB8J&#%qv|x8lrC5;AzkkScYU04{NWvD$Zvt>=0}xm}e#Pu6=*H zl*bd~zvX^Zwhoqo1DHc1C)wI0JK8oHgC=Ed=?n7tf*nAX6($31TZ?e$n&Ul-lG znwRnPq0z6!5aVOnN7NNDhVnVF3k&{OJi_G-d9kiCuKo-w>|};;Cv2^%(^+q)KF@#m zY4_8+i`*vu8?dfz*cbn#0EwTs`f<@)LRdIe5a-Wp6e^!%ksq?aIG$DF z!%A0m`8O2O@$rQ>%hb{Vxo1_0iWdyq}44^}cC!&Z_K|(@#!`c@)2n4>D}+PLgshTD9K(OXL8-tbhOa zCXv9V75)LX(ID%azw3OzDqmg*@8Y zdgm!>x*C-d!!7^zz@|?0+T%JtTQD-O8bm12XN%q>=P3Z zu(=9m-HzX2aJ1Uh7DbNz-Bqsj;7zaCiGj&o!4T!AMf#9s+^w&pE0U&6K84(ig&cYk zW*{+TQAl`Z8sHd~|1?vYeGuZj>~?D5i-!(Y=)#6Bs>yC+{AV!dEC`?812LWo7gfGM zOSSCTYa4f*)XkPDb$TCY?xsh%AZ*%*!+d`K^S^$N&Lg_D!f|T={wBwktCm?}E`830 z<&JIH+$=jMZzJuO0$eV9Xzt6}VUT(^m(3g`zC_e31CUnWQ=Fs6_ zz`QpiYP}S9T)R~M9sVr%tR6W~(b4pbb>-^{p-wADP{pWNi`I)EoJx-LukT52D{RUi z^e(d1|Dmp8(`1{tz78%#x?)#Xi=9>lI5lp@bApD@8oz!zbeBeL8|&wenR3?8j7q+j@)hGWlU-FQ%WUwKZt#_45|b9rvnV9E9-suY1$cBk`04F6wbbC z%$oDIfRM@(?Dkre1*o?`U@oNl^7pOFC{YNJ{{p7i{5>M^n&8Mw9LLzkqsZ?hFK_1| zEn}O-W7pSQ@WfqBaVMrV=$%+UkzZ1y%sA3qJ^#NqUF=&w69ePB+NfvIK*YedBz0$y z#qLJM;RL@hl6$7Up9x~*d7T6f%}RphuQ~cZh&A|4z(<4JnpD`zlQM$6fq{^GG#b4be&Ah54qTye#l22sSnq$SX`I^CU zJrcmw*^pfRraMFXx~8Gzmd$5!hmg>;PK!3^b;-#<9#5E*yxPkvuLR_?KzWO`E^!AG z!GT5A8vm0aQ82K&3`sTqjbf~bLtrmVy>6AbbcSSWBoAb}+LG!RSR@f2SKtK8_u|Z#*gta!6uTL;C9Jl zGmaL!BfPw99KmzN8yBfM4b+%ap)nNsvZq+P^((g|_n_ zPfZft-SQ@9!bPftl$CEY?0(6`$K@E9vyWSM zvHRgbC1ypImAmmfgp%Ubj~Bj8IU6tQqj4{HWL%`Hr|WI%q!)f5>n<^-sN~O&uU zzayV@P%ZeFt<8o~rT=fjfBLJdEF*=T9qn!M;0WIILHyxy174mH4sD~FK9k;13wvC) zN?tX7ZiL+&_V*Bf1`mN8G&!8%tg5H2==}~b*G1D;BsEb3Thcj830di=y;ihXq{Eex z&=$XwO`=UwIJz@nsb6+!3rUvuJa$nIyYIx8UIF;ak3xpyUEk*4bNC$O&9VRtNkojI z>N)p(Tx5S=d1E!@WtWKkqik`-5$kvQazgyz$e`%UjZ(>#gyA!escMN3=O5qRp#FKX z(z83X`nS%8&2By}n@=mmm}~h$D=(UI!HkSyQCQ{qgWFD6RPJXbfeGLS1N-M;0P!hkMbH%24hX{c2 z>8f;8X>z8sV-ZIWr|H^Uc^ob(s&Gh9poW|*P4q?t4m-2>O6e0!S#_J$-u<~($>v_g zcem1fDNQ}i3@7P`vddeL*H$@OOznuii2-^?yP0Y(+c%V7D*1B9zeVqRO1zl! zjrM%2%^b;BqY7uf2sEJv&VoF4z1+bS{{3kf*HA~8q*s1!jCUMfBvW2 z3iSx^(M;(^LKS);k)&R}{{Eb;J)4EFLZKaV-+UDNSh4)e`Xd#-Wz(}vEm{o(hpT$n zcmesAO6H#;@8d#`b*SvR&X2!_ZTt8e<+`Ul^-YPN&(; z#uIq;1_sAou=#lWet19h<=xehj6fenNLJa~ZuhQO5B!-7w__Oh&U_diu%Qj)RUeCc zz>hCGbTiS!q?2&D+PsFE+Kbf&rFC6LoDwtDPR{~12ObkO=lpaR@LNZH_9>gQq}Uy^ zm?&*m8?(2o!inoIDe2IVUYW)q*9G=F&)Gp7j1NX@_=07|dN{%xf!C>-*c`O-9hi4O zuVAzGNSH8{5{weXPP%oZI)+1jXJ;2$7x?CLulH8}k^yxUoq6DKPXdI_de@h>i0u5V z{nUARX4Tyj?I|C^NUy6rL)d$F;#-Dqsn@z@MA^1*%?qU;xf?}fg62P+$FFzlw)>zl z&V*^+tAXh$jC|_6M$#SK@Otb zmJXZ0_cV%Z)38^val;*3ew|$H;3D{QgnK0FFucSR%B`AcF+KgZy+12%WkvA8R zsn(PIbV<5J?R^|$7rhT2xmP+hqG2b#zDP`+Ry$~DMFs{HpXj|m*H4FDe0Kq`hE?G8 z)89+nv>^(Hrnc1w*!{Hnyauc_A4S8_h<08b2O{-QAmD)j5GyU^`$}x|)FstTqbakzc zOc+8VAZb5dsURh0oNn$My!WW{lVjm#qhCp@ZT;Fu-;Y8&$2V=K2a0Zrk8FNK@df+I z=zCrAWN;xQ@UcRCzJ!TbKtnBtVa9~$96UhgVr~A{1NZ!roj$6Kts==0#2J`!mJpe{ zAh}%W{a;Y$2o}RSZ=*z8X()wcl_7jxKMKAi-Xv7T{}d4W6^S4Ck}t_O8qK|oR&sri z;ZwL)iDqDhZcuQ-T&ea~-WGU{VIWxd@YIBlT4~BcrX=?c#~dU{5=1l;)oL7n!gCDI z{af@e`0Kb4nT#lP_qHi%c^h#n9OrG9u~+m(27TTFD#K&f;&VubcB|DigQBM24*v(^ z(OFP3_7===Xpms>c1$i(=wH56M;P)Mn;YU#^^Wvxc62ELlWSYZEw$kLB7NG4rAeJTZxvUe z#iG7S0`T71yNaq~|JtG=z^m8s_MJkVQCh-RZSnDwD3VT7{CZLo$FR7-aWh+9$P(IX zsdY;B>0fNh;IMpmu@LNKqR8;(Q2F-u)4YR#5Sgi8ZtePe&tK_vbNRAQ%fnCq5X`9N z_1;cbv9~=5A~U@1si-SiGk7tLqXvo(;~6LulM1cw|Z5$IZR=7MHBn!(p6c>4EO zBp3sn145h(hA1diwJ0--$w|M;m6k0{IkMY!rTDH7G*!oZik)XG{90f?;S}b~#q;>~ zrhIqmJQc|V-)HKfuWjuNb(VU@M-~3+zkDv|Pk*4cGzoGUuj$`cphG(MLMCBRw`hCE z8X5EG4c){mOK1?JLqyZ(6n$CJ*wOJi%l3xc-(*fLt>1^1W@k8^R(7Ap7$8`5{KIz~L zi)IKS0!~Y}IcqUVRQ_S+Ir8!tFwO0``^@cXvSgG#VSWEJ3h`9v$3<592fUxGBhKh4 zdN})b!c~G#Vx?#muF2fnlzvOPkbPiY=P>ZP>j?#^BQP8{7USG#^tCnTCx?^Z$VD60 z&uQe%mb9(!u`D^{AJAeA^j}2c73%glMP+vNYdUm$ew__-I^UpIxO|9q28hR?ib#W) zS^Szmi;~AuEm>!2gPi7J{!TtEDEb<6SDfy1s`%X2vvG{)(UwFLsPsl^xCl0~Gwbs_ zt%xU~C!hcjrnK179SkmB){LyseyRYgjs@y7NdY%B9#(hJK|?>m!<^uOlIuJaPf!<$$T^fQJAT`6SXxgZf`0c`$11v|oEmQ5byjw;v~qI(n{@8&HTl}700`|_;cv&U2(_!3}2 z_V*_Aji0cKj0N=m=mQu2vo7pa9?ZZLmG0#mHun-#6hw@_>mJnTZqz7(q;}0fZltcP zPSNUGG{XlZi|7fkksaYZ_RN9&=l^*DTsn(f^^4X-od!<9%x|M*RRslV;PE30@pF}SlFtT)4$^S~(g_d6SB+8&CxlDGJ%VAxv`1lua! zo3(!sq{*7RZS2L|eE{osA9RY*FWZ)6ugS0^hKJ>>o0|GsTpk$1$lSq1Sswhw2qqGD z#vlm%S1mZZ@QF#(wOC~#aUUvIkhM}ABtrpYc$Rkw~jQGIU_?eP=0 zj=$}0R&X}E5qn-k1hu|H2{5F58lmXiNGmQmKlNDrcs}1? zfJjQjTB`w5tn0BZdqWpBFJ}ak z;uz9SogybZHV#(9vNrKnebaC}FjZ3hh__maHENj^;-Gz=VeVs$XJoOg;!4}bAk zlSPWda;+Hk!kuhgEK{qERFo`&){1|vGfrg^pu#^^GhUkj2-4zHhV!culF#>ew6gvk zP>nvpQsB?{tq7ay6p1lGm@q;NCclDScol643-<=u#y=bGZ#6 zoH%440D8@okGq8BtJM9Gyaz}%c#p!XY_?Tu&U>5}#{}Pgd9z5qearU)lC?eyJIt1^ zuzel~FRiom#{OfP@B`gUDdP^xweWnd%o;oZ%7mQ%9>5^9GRyY)-Koy0F^Se)#h5D@ zFC`BmlZtL6^~U$ASdhQP6dH+x+moF~4`$ZH=qt4W>du2%I2B}oH#ozT<=b=LYSV!Z zZ9b5cXV}O%7RP2f>vGk}+D$4RRz&~DkM&6IN|*WSax?ENxxTB^?Z~!)j-DcTV^AKN zCWu#%pb%R$m!}Qd^k#93vSVN+NsWfJ%BK|!3(&a=@a=Iufsz3V)l6@nfwobDdS-VN z6L9&W#y15d7<*CQO^Da`!{7z>)<=x{KBKQw4F`sX zJ#)wU6V<@8R7C1)!Vev&(!F=7n#?Ty$rI}4ai_RUwS&5p7*3}!9!DWhv^G^x{?qnD z_mLS5jt>O5`%LgDSkD_VEE@kL_Uqna`1PTVdED!m%cnS%-FKSaI3p~#M=J5EpfkOX z(6Em(|L;bax(>ON&9$v|d^x`x!ra5TWqe)jit~phb*&VPZ=FP;-ZA{SNoMKS>pvuL z_U`7TGw?IBGFE;iL$X{&d}-xUMU0`+!px^~Pd1c5u8vUcRT6#ptu8yvV}j`|RPR1J zP$(OBYfOh5#w>Xz{I@vrhvU^a9uu%;Ab&lG<3bqmVTj&#sNUW9f=k-5S}fBW8@OMD zeDBfv+&hcGm+Y{5$9NZ!NaGmb=>Te-$T==$?y>U8^} za*)s9%JaSa%dON{=G~FGjxndX=dxkDE03qgQfdv#kXY(7(|rwy?Nh}%S6ebZSx~Kv3}J%^1Y?RbTsFPGV7H&Bf*m*JiOEm z^Iz4x-V!!Y0+7HI+6SQ{CS|Aj9H$s?bHa{xHx26FAgz^A1)G*yHjkhujT=`2$%9-> zVNa0a?EpT9y;*0vEXr1UR-)Y6q^@ufuiY5*7mRIO^&TUA1sJU2OJKTQkn7#7p`Z8| zLPA-(=~d{iSyG!6Pan}YU1|If>Lu(*UJnKx0&fYp18iQtX~7T;dr{Xznzvf7J?!bP za>LfnN|2343nRS-f+tS{p1q?-{7+ra`Z}qoY#HVvqE6YZJ#X&C%jbEbKJ%&HucWcq z?Gyd9{;V^C&OTh|h9lj5XbKoC>2hGgmewFs=H9#Bi>!}lBN8}_0@YbqS-qnw znE@vy9H!j80B_$bHq>b<^F3dRN!+CYZVax+IH7O4s`|@6m6MT&rQI5FF^ybwq;;_d zABj8V$NkJz(!2CkXwqSG4lJ@^9Y={$rOw?&-kT3TG|+2MO)3Sbxt4 zO&k=|4zAJb ze9~T@$m=usfR5 zyS}L^u2{vWSmBALxzrUQv7C{jRuKtcioJH3y7um?T16SwZ{Kn7SRS-M!5oWk+2eri z+zHE_%9x7#8B(eDki}!Q4;#*b0$;c&ogU|_&O5I!xEe83vpbs7;pPzOOX3BO<>%-d z*3VOj^-`t`&2muX{zkN4L|M_>%xe(xbK%PF(C_KYe;lTGec~Jz@LX*!^N{3pvn@U| z=asP{{5McPL|*k24QceY#)DRq9;#6-j~6M5^KS9%Enw}}e;!Qft9fUV1;HI@x-@yS zC*l#2-PLb5IgPmh7uejg^7+xe*1tYvw^15{>`ei|k$n zvyIy0x0hco!d0q_e{I4Gr;kQkLpa3~Zn#E$(L!vwD4~b{?iWi3;N$YeZN)hEj8=oRx8K}npR5>e#8eM4UxQ=}oz;FGl=L|?5;4cL8nvxFv z*+CO)(XM$1)-rB!8f!Fz@x(p4dCn)*Rq;}FZ--;4Uwsv^0Z%ROZQp%bNqdny*+gFN zuv(M*#Bwg@2^45uz?sp0q1rpNE5;&KCEQTR#-v!~8H$Kk)O=$*D@fUEY1fGmWIRf; zqfm17s4-kbS318ZXv?^UrwpbHq=<^ZxG1IYvEe?%l6PZH4|Sr}mzs`(xiM|@Arv&z z!~Oo($Fr<$ho;{ln3g`KwqEehQMA0`M+EnNbRb;fNfBXgwku$pr3o|)lGR#PzgNnZ zYR*#9T+gHXAf2(CTD#-zK>q;x&tyfqEQ*Iv2eWD9|pAVN~P0`U7Me z4BjFs*cP}4T0y}eJ48$h$7)+ay~i6UEfi1Gstk=Jl~=^2KKYU$Os@tyP>zRsa^r&nhmmW`FH@a%-a{ zXGc){b#n9h&+GFySf2gI<-QJ+YmUHhzL+T%8(fU;?m8RR7)2~Rlv=u7^Yos|OA@&* zDmJz+SWB;qA#k>Z^&9=%kE~0LNhyQeL2xFG7+TVX5r7WF-N*os9hRA`zG7-set@6( zW6ywkX{hiXgEH*Z4kxhSf|MW=bJ_S<{b2LXthw<|phNl9ScY)xe zOSif#&W;UOwakKh5F*oZALYlZhKf%H%Z3c)YG^vJ3MLiB7&*I&5KX4EUhJor&^2&Q z1YC^fNGpV*p<&!~N4hH9f=t7uOI2^P;*8?4E8g+1Dy9tnv1$k(-Z9_WOow!EI~`p2 z7X!masmcorFV=-WY|h8aXA65ZF4(xV9f1$iP*!{LBazR4n=o4?UfIjyiE`_*724aXD|PRS<&efqw!V9VOJ3Cju{Qh4net}82RjF4<52 z4{D!UPkO=)FkTV&&jW$V9$az&_>Gi@)yLNq=r2GqJNkXzm^4*1AE8`xnA#wN!z=gq zBFXOAoE9&sIKFT$qBq%Vl&j>ETrXLkDJk&g6dJR8?=M|M_O{jcqj0}j-jIQii2JlO za~pT2E^XJ!M>A2bgC_Lr1r(WmDN*ez`9N#?-{S;t?0ho02opa40x6@hkQ(M%Q^@inv+eYYBgS;4G^(dn&72BCp|{rZkI{Jcko3*#Ne!3=b)1k;UjL6JZewlvT8aa3xeCD_1&kU zwl4!AX!~t~BOK_jte~L^(mcD)XdU|Gg(@jyRy1NjxeaVs!^4}QjiQMyXNcp!4gF9* z(ITgwm1kjy?`CmrMN5Zs`zP8_eWN_q`raRYl|8v9o;R{|O!MR0gYj36~yI`kmhL%PCR+cg$)TbN>JtdKU`o)Wq`bu?{BbM=&mPlNQ|ZJ9PWr zQ#K1l(sTyRO(~;g@SsRh9WdYpEl}^$}mP?J@JiP;ll9AEQM4jj$`t-g5ep37;j4I?X|dIgPZ)7t#nqHFNqSa98kEPhN zGMs+;OFG(YT3z*w3T`H*4vd6BlYv%^I| zt?#=k$S9Bbiw8w}>I@b-#@Xu#-v0YALqCA3sEbJ+WD#_NMnGL*6h0(~9DeapR;0Xzx@$9G5Xup+TNI?T9v zeB$gGsvtM6G!KS)&+97x3`P_H}MglAnzkCPI-$4q!;Jy~Q% zLn5K*Y1+EM@Ua3l5fgmYX~*^T$t*&R6Id~a>CdXOZ&U@u_1Sd{TRN!vt~?2t4Ysw`svjjI6MP z!kJ^FE!aQD1aCq~F?(CRM6cue^dbTrTofl@_rsoGWTKl>EW=qubls__Vd;FZ_StU9uq{i0!DHahyV==1doEE z#gCW&#kaGkwaHco@z8vXQSZg3nfvcLb?usTw;O1gJ}P+n33S|m`Hl{c+to}Fh4#_l z=r5P}c0BvOWA+`_$q0&*?f}5hVIu~Xb9ldp|LZIGEyU@8YBSh*Tg-E}=i*_H<0~FY zDvak7bQ67Vb@c|iWGNV-(Cv)qEIK~UH$Bl~juTAI?8EESwx{XT8MiDbAP~x%Q#v|;o`sZ#J7NOy-uum1qG;X!$yCzZqYuHiN{HuEo)k2 z<#RM@h>9Yh( zn9p)>@Ds87dAcwpw9_Gj?CY!+3uevJZeGvF|Mty>cwsYp0M2aj4mP*pROx-E6@;mA z_f#=x+-;g2+ikLDfIX3tFpN1A_wY@VN>9g^vl6Jt3U}AFKh^koW|Qq-7GKdqC>z}` zr$=v4H9xsBdxHr50I8A zy~Pjo6yO1yAeR@Iq9IzIzqBley3M!;e=*Rm_QP_8`yK ze#U+!0Z-^MVOSn1?M`vSerevM6~**N1C+H=$6?i$!xWs(YH$Ccc;rltSSCL*-W{EL zFfF~Db|}zOEDv7o^*4_0mD?Akt#ucFiz}|WSzX>HP4^Y9cl@<(ZS^y zLLUYf&d{Mfv~J*d3g;jk5!8`8iie6*3qOhIF?q}(Ta-sj{}^o!Y~2Eg^~tKI1a+@O zX^L-QitqLrHUdSTfvR09{!`peTG?TVdyux+NtZ{Y9uG3Zy#Y#_?B`+E?0TDta(wew zONNm}pM&p2z}0s;MKJa4{M^wZ~a z-n|7!4ENLs`itWr)hk1>|Znl?U0J_3C5BM zd9S8{LIaLFq?eSTw3Qo{jtUF;`{Y@67W+iaC(Yp|q;?h-C2<0+);p-|3hH^`SBYyP z)5ytj_yG$)21v&qkRtNM3KQ-|6#$;09yuvNL%jQmq4d(C`Up0Jh0p|YO5U-`yR#aA zT{O(F;!CLU56F+-={f??5`=lRA%7_d*U4|o9+r5~M;5kJ-0sdFSdh@gx1eNy5#N>7 zCNKZ5DdtDl~mal@bByCwOuM5S4tSJZp5CUHQ>R=A}+l1k*ZP^kpyufP5T)7LRB+rU z6;AqHVYOa#cmFK{GYjn#rZMC zITEbYsZoluw1gF#WET(pZUnh45_n9Ef04J(ce1qgtU4+0zamgUXh zYoI1JULTX#;O|+)9~b`!v7T;1Z(mNq1!AL*;j5Kp(@q~%zOU_p5<$h?;*5>c9T4uN zNTC;6qplqxQ`)U2ttZ}JYkPObF527*^NRBvx(SMRol>G1)>C3X+JZ%#qzd)*E3589 z;NQWsx0pwXBM951Bgc4%pr5`J`WkYr52yJ@S?EscyGh{Gb)^5c$fOg%SQT%q^y2Z084pe=?mTrC$w;$Z^HQu?}|Ld?$V&f zwb?r(ey2ScKMWBx64HqSN`+RXXgD&XAKE%iZ8FgeOpOu&V?zq7&r|qH+bQcr5vd$L zU`cG*OZpH9{|^v0$TZHz{q+3Y&f?HoutENjvVvYf>;BR=Z42P3pUlKLn3Z()Z|uOg zkO2?XX$=wj^|YAbX9@7$-!Lgnz(RlkQ1FkQV`~qtLM3U*qy+1B%6;k1M~!NITH@q4 zx!GBl)DUiwqYW}O1|$Fm?L~r?lCf52ur@1%{GKa2JcMVT8R7-p)u|s#{SPi(-(9 zq2w1#X81*t?=r&}@4oyZJ&VeDt-(Gblc)67o?b4Y^t<-!p`k$$OW|%#_Ni&f94pb@ zKdg_I{Ei8Fa%Ys`&>8>xSsr*f2+gehi8Xq`Iw2^al$QqVb;#pYL)o}KH&Hu1-(jts z^dlHngg%0lB8tA0LTRQSAxN$?<2q?DME47hS)*%KQDn8TXFM@#AD|R-gOM>!^&qD$L8K$y}*kFJy0T}2jk46hq z+kUral**%HOZkO!&GqkXI#^%$-`;rB`;T4IVUCjF_>qgdj^QL9sk_>?Lhth3M?GB= zohLYID$MucP;@JIo8ghDeo_havGwbUYUlD76lU7cm_Ok;bts;_|M;nITm55tS0jD^ z_WiXgPTgB(Lr*!-(;`dSj!!aevf&g4Hc)9$!cH3W>I14J;2fi{MF~E*LP})?UOrLk zJ#Er0TcjLV!+iORznSwzLNCJCG2T^*#p{n_MNSZs;e~}{CQfX4A)-+LV>n9YzhBPb zr(#^-qvx4ivVafYoJWV=DR}kF{74>*;vg81X;iN>}SA zcLaYUGe!KjK8~E-@JpP0@k(pIFW4ch4eO!v#ynvT#>nGrGo2lE^}FgQ{g>drL~Pia z<77Q4R(JQ&ayauFn`?UvE_!D>T}M_|w|fWA<8pN#IWDKic{Q17hBHPWIjx9SbX8+M z%6T(7mU57Aw}_;n%>c-Xa$~wcqO=QM0-if#r_MsjMA z)gRw_em@)D=r7@zp4GGI(yWpqem?MjTmV5s?$Rqx+?Wx;t`2{cQNfDrkjhMYKk_|; z$4?EC)z_1DaBgFU&2dp(kyAn`49L!n{G9+`pMD;hM(yVoX*4Y)E}GYEa)Ci>=lt)n zRRZ#ki=Sgr61+0IIaDszjq6GvyCTbJ_4e}l3ipIu59$>v3j8MdU+WH-t8 zXpb;no0Is|?U0u-4-)+zZ@m{{X{~QW%d$-%`~k*P9PU5Kz!x9JGpsUR+uk=%RFe6m z#TH^Yq{LLv!|{67vh4n5HhMqp_kj~^y9L9cPl4;=A)v1CBz$_@HG@ejwHB6i^8{-0 z3KTL&@|L8kYwPjL+DG&;r3Mv?e8S%<7f&cSVB2Y1(FWMr-Bk2Mz8Zzw`uW^5&or4w zWSBD+=p`P6yk|{*^I`H{tqxuU@P}KIQo;E;4S2|JYy?lCHO*9>=_E^MF|cuejD?VK zK?q1Q6XtNkFJ{62=3nph=o3;+r3r7G#Y0QuNzb7%X`HGo@Wtz)n)HTXjs_X4+Q0Sj59o%?F+ao|B*6w8xGy~G%&H#3< zMR1$h;Gj|;1Z|xJ?9H>)o8U)HENwczCUyOd(sHM@6_>G!SO~~O>7Kg&zl{D=iiX(M zBxZ>}S)nd|TotGMVsQDNuA0#Lj!pt@jDMZ#a-GBiSRIHA`+Wjbz{Ike+@IJ_%sOQV zp3iwM%^BEPxvp2-2okum)=OBcJ;KBqN6xe=KC@Mrk}J z`3GQJko`TKCtj|yKl>d4!C7+$6B%SDk7}W6DCmOT?u^-qhApa`i253wvKSZ9hn<>y|F3MuqDJGokXWFsN#OvIfSaEfUirG_ z?%JA(O8r!O&#rMdjhIfeu7ue5<(;q|eNjFgZggGRkO}UDS{tIvNN<$iB zIZwb-huQ~geZW#QW0aYi3&1>FxJQ#UoKZ6Wm+~7{1COthJb^e1VWoJji?QwHsl-&~ z=G@9@aqLYhf%BB_ze{3GkG5i6YK`mj^38$C?B|@~9@_AlP3^~e0G2>)+zQeD2{In> z+DoQR+OAZ-X9Nol1?<>dd)6X?e3{2OjK-8+%VbjiXZe4G@6A<&ogv}+jl-+!5yzt0yx(Q)uPd(8P9S>8$wH_on0{5a$#f8x1= zb@vv_$c8ti^7~nOB!ihNe@dmhuyOU;*YALd?TGfelWzP-inZqN9(rT%?Hu}F8Y~(? zdPjOJnwXn;K3?xZKBR`U{)~lbis~ge_~6B9*D*;nSh4(`rEd3K#+@wk=s;aX&AXpW z*ju?nhW9@sd1bsq};V_E!FK@8tm&rSfG^Xrgb}{yl)v6 zvq&Xh!(Izhcz?)J-tSujLz;rB>gr=9OJ}AJE=|kKUId>3K0`uv<&FYKAv7?n=qY}w zgO+qQuiQeFF&JP@@WSH0_HaoI8{(#LO>I79uX<- zKty-^?FmlTal`2BIZIQrr^C|~M9yrB zJ%7ZqRP`gSR-BaM3p8>WNT5$VFB;B2-RpClvB6&QQ1VfH*Cd#|aL0bCero>7p0oii zU@(W!1ZBt|DFIiTp3@M$tbjy}iK9d;V#)ll=COL-fFw@hl26^TeoQHpmCu(+812?_L_kQgXdP z;J2EEk@@SHTbk#7+k;j^8rGaFDsKH7)4lKpn*!P^1-`n&ukXn%T{_(|0Hg>RZFO#N ze#~u_D|s)V{x>=q_g`Npxh%-C_%wu+y5G%wAzeD0Xu(P___6BcB?0a~{XB$#NM%_W z*W{J`chv~s!x)TKG{?eIgCThioW-LV)EA=}?5d%*Yn$?nqU1g8(Ny*3tH7>90!I)i zYC1Wa&QI~Xu0#S%1^XJ=&si|IUPWv5Ec2hSLSC*tV`U1$WCc1=HJ}q67|ttRLwnIw z>KQiXE?m7;ZGXLf(>;{KltUw7hdZ1K@w%aQN+!I&6XgKU zgs%3J8U`^?@A~~{?_bdCHJC+R287cR*RK1!4v9*A=^gR-Z z9e!qUX5jX2_%pw;da_fRCrich{Oa-j^}x9UX?QuG1PThFA5M1w>%sUA{VIe{(e7_7)J4M zVrr7b+tES6JdM1_Z(mfWA@Z@^@s6SGX2VqImVMzr~MEN_or_bjITDhWP zws!kv-SB3-m(!pz?-%amOd zFX;@8+i1K{$DYO%9w6RgF2`!BQp+(t4*n(Q9m0sOJ|#ccze^1H%wI z300~*UEk{EN|yp3Xeh)Rg(!^$LFdrtgqu8Uq?4=OCmWI10%lNLCVxi}>#Qk6Mw6wt z&$SQ2rNb+t>0RFec^^xRjXtnsYS!6aFJjT;3(-aqpDu1~+z!vPiSDZW!mRj7mO(%B zM+KaH!F{>Y#Sma+aQqeL7{E`+6&~WMJhmR^5}e)nvL>~^M~m=^H`x)&Q=J|Bq+C8f zn33!66}47?0s496gDtS$mzPo)u<$g(M zR+e7bcVDWdG%(mn7G+Ib?2worJ^oR3^3&e*#%GISVpIHl`nZU2yS=NCXGy6!7kkkJ zr``r3(5&Yal`u%w%*Ju_3zcryDEDkwKflm@@D4epx?;Mh7D^2H9NpW367e)6PKo86 zesFM$^FX$cz8$+4q}J#I$!eNZEDQB!^Jn*9+RHXZ`3|OdB!4!!{kY*F%DeG*H&%jV z^G%g{Tok5^tn*7|())(|8~rUv@l*4=`l|ZRiUXt_#%oxIvEB`m-Mgd#iT|Qh?R5mh z8Z|ji@AI_SL=V?(F^VJ|c0J`NAPWwK(pfx@RWv|j#5C{~-*<<0>Hy2NW!uFZy@>;! z1NBL>Z`AKw=%#i(JIV!3>^)0~Cw7B@gHsI8$%K?yPz&+tnYZpQ+j9!_79?p7EGCfwS$4TEWl@TGwB-471uHk9L>{OSu89+QJ-(vFDD zR0Yc?AH(|O*LOF7!Vw0gjDNc^Z-%q-2j5dnXn3IV%fbW&afm6(T{W^qodTP0a5?QB zYz7Tm={k2DiRKgKz5LvOE%jvRUdt7-Q%@Oy*oE}mReW8`S=rw z&2piPjaFYMNW=bEJ|1fi31;Q(Q{3`$oxFPt=O6>?&WHH?ND3ES{+HMJ!!bZdc9JmWUp-1o ziSbIun4^|ssB&;9!o$!rAfPPY#kHzhuNm_P`Nnk4MqZx3#V4`dy*JmYZL8I^Ng3F^ zK7|EnFZ``N8CDtsSW$F(TyYnx#h!#o2UUHh9>-=jIbXw2Xn*2uzTxO476<*FPyJB) zz^-5FjBQ;mGGFUZChBe8THDYTmXJIKzJzBrXWh57;a<{?EEX;Lz@#0*mG6~y>!Oc- z2_f@sif0hpHns|8$ zUr-ZJ`&ajrj46PQoBWCP_20(O3cv@PTx)!)v~8jAYSFXfG`%%Iy+0#D=D=EO>xk*m zCTHv=0{P)-!8nPQ_3mr}hDLGfjp%$Jw88ktdR#zQo8Mz|)%|2m0YRvLdi?8qY&J`U zQ0f}(W=3i)Np+lQAkziTi$_4{LhmJlhx)unHM;F8*?!=*_qkLIk-)8w{Ki{Sb&}zL z2$?c6){weyGK}3GkxG$^X(L4BC<&kgg`B@-=?WgyqoHk(;ggU2(Rsy6@bE5fFYvo7 z4idlPSj^^FT#b24%SqxRqiX<)b{u;1O_B=K`tQiZCohm8pJuVCex04?RU^TQlF?1D zyXSo_oKbm)E3=qr8=_qTJQ$ff=l*E3l@gf*+N@#L$v;QCe}k)em1-#V`Z@B^NN1I0 zlhE4H?(`m_?1O$>h&djQ?$wAwL&E}r(VeFjM#UlLVohrr2=(D>)io2Y6a)Ty)>a*R zOd0o6V_!;=CMjObu6GRkrp6h4v++u^U?;MbA*tY^YW-e1(q&(oxcn3*x(OO5orSYfd;W@M#1u8sd#qtD z3TqO8(-Sy(i)K{57)%Ljv@Tor-)%k8(ks)2tR(w1D#D>~pOt;%v3k(qDe_jc>;8&P z8D9AwFGs@ey;s$TmQUMTkeJ2l`!l6h3I+Ft%zysrK&)=KBq>GJk;AvQ!@?8Cum z*x@N%3^XUG*c2iLY$yyBqPxz9wj{VeLTAIcGFpHdljN{J4Bm=~Xr2%*f|qjXj+Ss&xBz#p%`)Rcgbd#oW(xm+KP>Oz~m?j7(JUAruJ z?ESQeO?nM2>ltrG3}4idiwL0it(^#FRKC$-!&}3&%wG+(rXD2}XJI*e@N4Cq9ri~G z=$=U3l-kI0SWfy-nnO3)HvZ;({k1@r+QNHHD0%;`hXTmmmND=YwGcNA2{rf6KSXVf zoZ9`A9-TbpAXs)cGo*bQm&*2|<7;BSa-2wduoI=;jnZxZv(8?lG?W#8Zi*ijwD^tR zX|Fz^w|2QE7{9h8@EFq9=N}oIN6K94wOD%r>+SX4d=gELZfH>{RS+0-t+4R{V-D5B)0RPlgBY0VLg5*q=o@tdR5C~bDY zh$8-HGHT--g&U%+GT(3h0>O&0PW+Y|Yqyi&{P_ryMa3A0EhG_HKNH{ClME~yqZHi* z;u-N5LE6;qs_34VR9T=Vd)oUdWM`J~sJyPFKm+*W3 zjn4rFp`}gHGhl8`dnyO?q;kFTE?t*TW~V;o2g5$9_MqIfA+^2bIohl2?_(UFNB{SU zh+^0&#=Su=vW(CJ$@YeG**`FnD{d^i3r-H(i-=h;f;JN};41@T*+mEQtqXU z)O2q+T&8+l!w{?22WVZ~Tmqi>?z+}wn5(S(ioIPU{Hjur6Oe4c#x&`6&SG-2IvK6x zmy?+cBYi2)FWxRbE^xz4oJaAth_7ZU>*9&D-QJ^lO%6?F5VMd$KAh#n$Da>0HYpl+ z^q+E(l1I$!T%+DZ>^zfz7~K<)@WxIFfx1gWAhe+4f`Q3^QLmO<_D%>4BmOJuOf7V4 zD<(3IwQ(`N^^#?6w?8j*n+mTK2HtcjBS7u;IJ(+>tec}`&$gIyirMhi#mOx(tZ4fM zlOo@;804ZOEBaGrOvJtfPR1cNH?U0#yIJeQsp>FFZVfHekbJn+jVmP7un$qNd$d1nICi2V|NzjNjb}m0R+~)Vfj)i zHoi&tHf#sSk1yd{IWV7;pFNWAbA3buJ-D?5U~T2PRPx6DT}GL&e*4YqTax?SOH@qstjYIZ2d&(QGx1<3+MY zlb7q;U#IYGf0)+%hHtcvlZZ1hD_XAU`?t^Fk!vdnE3TUi=KxXj-wqkL%E?9qQ}MQJ z(4WBMMMWpRfM4GZ%>208lJ3*l@qRld7@U&#Snd_=l=BuWGkHz<7O>ox5^w9HA z#3C3i%56Cx#sN75D7*=!SHq@J;!E#z;|8ihrH*>4k63Vv)^V(XV(*uO`ke-}vpTIh z_z4jMg9=S1_WM>3jSjw*mh^nn8DIA_QNe$Bc7=s+aJ7k^?C}q3&qYsw(lKIr5yHU0 zCEbiCacwYg7XY-uE*xkEf)SUc*UBSKKD8MsZ!^XC5M9u0Bp9Y<#be z;_*+s!WzlMdVg`Wo^7v_-6}roWW4IRCMZBj<4XTAl8wLcO3E>Hn2Ys+6hWUA2L&Vq z`lz(@i^Io~Camm=xABPGf@5>CZW;M&ToLZJo|6iFc%{%q=LSz8V9H3Uv)NK|ryI}g zhpWk#mj0ta#Y(x-rbJFH(v|L6)fkk~CCry=XEe&bgmui>O5lZ-x^l;2J;luU@FOA^H- z-=#i}WmpMofTeBugHk5Z_tym_26#^y!Qns1Dt%F9!H6dBg+j<Y4DcneC|_)wE>%?|xWG0POlb(4~F9?>?%nlNd0N34kqO1|~IS~|@iZ^+t81FjSe z*VYgM5v4=oEp=bN`khSBCENb{10bPE#t&)nl3QX5rG1Bo)A?!6U5|kKVJL>r*~DcW zN>uH|8E3WY)c-{Mf^z*kT4}9vkKNfo$tJoZGoxK$Sw+R!j4fY$<8nR3UCv&@gan+q z1GAFQsD@jFc(Eo1Z-lhNYGNtpiq@c!LSIPenZLXq&H`c1XztzR6+B zdnzt_pv3!hptvFWVB1t=Lv`c2D}I%V$8XYdni1r9DhymOJ#APja^yWs8dh*jC&%tp zdjDW_URrfLBML>E;I=C@b8r}!IUbtxR%4rA_iyC1qOi>Y&FXowbp`O4{hTb%F=Y4- z$@N?jr)jHF${2dwo5=Ixs9i4yB52}s(z|5{Z@wt-2rYP_1ECVQVx1>p*N<_C5RGNo z^L$_a`CJhpW5Gm%gpgFsd)7t*V|1=Nbka3IlWKsC*d5Mtl{{xW??M*vEyO0`THaQ% ztF?QDT4E-ZD+pd<6Z5gy*+Kg<7SA_#9WU#oI1`Nz>X`IxuPy}( z^?bbgnk}BZt>MY~?fEa33K8MEu>e|d@$c^Fiuhh7*al*4plc^uN)&^99_@5CS52R}jz7)R`;%!DJTXTasb%CGhmQIze&G6@mIH{^;6e1M z%6nYpvXK5C7a)0fMSN$!?-=XVpcNLNgZ2cX(;*|k)9~B6LzN@f1=%nOxKrcTiEs1w z?2u;l{J-~)X-N*@A<#1D9s$m0v{K&xxc2C2(=56HALygG&G=01ae)?cV&$o6y1)yP46R<#Z7*A-f}#Z3Vp<*bi&Kr9UM zke-}ROuhGBmpMz({Z zhqtGRUA565a>JL01_jC+g>Ba+WaTUBVUB+UPf_apve$>(+VM?Zal;!l68IKK-c@@S zovvvASIlvNg&7SddQ8Zmyf<0`dzxSy=8xaRz1xzppZ&2+P)?wrl`m>D+h_Z~gX_sX zbJ#jts^!+rROIE>%_z-_YOCC9J?>|q&pfVdgJy>eUd&*lTxS!in9Z+x6p5V_!1s4Dhjq`JYB?f<`z5YP_a?f%#VpbDZuE8R3zaKIX? zwF}3n<<6SA7>?_)Xx2+5kvK^PeI&lw{pnyX{Q_vR$!cjCu!GZc8!I_8y(OwC6?@p3 z8f~0o{HOli>=&VhK6@g3pWbO2Et7rvEXUHH;ata(*&knVw`jBm9I@{=P>4`(`dx9` zc!HEtqn*#}M4?dX> zWg%8ME;93JM*L!>CL0g=(bFB>be9ZlJ0)aJAoxb3@Ke$x^rN=5#f{Ym{L06RTO659 z^(24(pbeK~>}vbyJQxRNEp0qEVh=wwA|sicJyrGh%H%7;?Ur=1wY6n2k)gp_I{ z>Pea6f$aqiXu5v(S-n{Kt=3mV%Rt*|;FFtr*rb`7Yi&=Wy5Lhlzg0+NY|o$HcU0_! z`-p(&mBF228IduU-mPy*%a~(|lIgJ-ZKcxST-DvBQ#Ns%GEHaYgY5T`5QNIfAqV+` zJ#36G+L=y4E9F029{V_gsJmMEny$Dp$u`yjue;`Axp-MWgvLd)}lJX!t<- z|5_p@pi2I!P>-H0-R!_3ExQf6mggwSe-{PP0|Ysy=Jd^=%iRVYMtx0z-VE;Q8!)Y` zcfRb1|KTeze)W4yB)wg>F?^$~##KzGvIKqbJrOsxZBbDKS=emDZRmMaa@4b_!L5T{ z&w})%i%yozBp)x*Kp2Fq=iP@WlpYKIrg04mtlDF+gFc z6?R8!^pW`r@X94%(&U5#-4{0fB| z-V(WvULH-qKkwOb73;Z2H85n=(dgnTk`dELrUX$?TSL6qqpta^tu{61*N=1rj0ZAJ z+JM!gV>}zpzHm@VEj;Ej)VqNA{vsrguYFsI>k>{I^j4y3LHpdN=qp;*-3AuTIts*7 zcb#*7H)(A^fY_b1)8!~TKWl7z?(Fj>JO%3|XJwTQ ziUv@0mZ;5wat5wAGQ5q{9N-8TgerdxMGjRHLoHd`=JM@#;LVhh)W6igpE^MIx?&^* z!WW-9&?X|99*b5=ll^(Alc}ifX*Q_ip|m)qdOHv`>L#zqT=OBi)Vct%l8t-ET4B7-LkeNW@m9B~<9pfufAupNkajKW+f zL>Q1KIhpdhvk}_^phKcr(ACkFFU_>$m^b2k-1<0$Wa0LsR0U+lX}xXa5GeBCDm|S* zGece6FTa6h3cMzR2{{PMXE&;l-O4M?&MV4SqqRb1OVm5o!T|Kod1$K#$PQ=POFaZH zfJVz5m~I}CR+VQrv>avjgyEi$45t~57vLY73%NO zMg8WFx=p9Ew%AbOf~VR<2q!;r^#k{_lpJD6AfuQ;n; zS3fZ>J8f3AS#V8&B2?JhLbW@+J?uuyOi`A&DJ0-3HAuYiXT3Cg_Jw5msu`HnJTv)( z=+fhKFoNK#4^C$nNj)hwJ!q0G(*dU}0WB(e!}$@c#l5pwNOl^KJFyYP_Z&*mMZ$yy zL1!MHN!$E(XC{z+Da})4X&$utuJ+9evQ6o?Dwq16`6B&C!~hBVeG;V3?m|ZCF>J~| zVTz$K3Iws&1uP>%SCaGf2h&yOKQmtQP$ta{|I|j5x|FpI$Pu;tO{BIt8rFl1D%~HH zPkcZD%y3B1j{LK!KPI#fbYG{KHQoU3 zP9s#I(-EWhk;b)OuZ6qr6u;F~TbTG$-NAI)O%PjQq~^60w^6h#kJ>?7R@!p2TTDm% zGn+*d`+v&wgQTdv#wC1gtUus~assoW5`BSu8|7K+yLe~Xvk`+SW*8|h5@n*^=O#I{ z`~!wD4hO68Lik_Vy-P2L78W`f%KcGACaNyJLG$;(+*RpzVDJyI{^hs&ige2Ga+~}* zr7ik8MIGM}dM^z<75A#H^Q6A3kqVKQ{iA$YXAPdSk6Q6ZN5y=CHriZh9!WDj5!)t6nPswVodlK>h=C20 zX5|@U@=;;$O$-}2p39(fq}@n0VsTmDCT0#^*U zjF#{DBlIx5i*C0o{&VXHfErSgh8G%n5?RpU$oboLscJd7$)+%Vp1dU{_9I8>t`G5c zHQ@K&|2jIa!uCM%97XmR!vuDL9F#98B-J;_DbPQ#x4w9Ekj8*e1N-q2_y8j6DLGUXpn2~e`=MA4f?yyYf1Dr#T!K;2Bl zUK8V_0D|i@WL=7)+5G3tE9s!Wv_`3FcbsSw#?du?OqsfO>FiPa{z-l@|1d>lWs0BW zyr$1*@r5XJz^M~4!5(#dE$Rx6S(9@L)`2tHM+chyt zm=#3f2d%3VZJSS@^S6J|>;WsiS`j&V*rsesv*aV-tA90JSemZB?Iuez%b$b^8EfYm%_2?>pDDl5 zy-DO)QZOgTfbX^95s%A>_-K#&S%9^sd9rg z^Zv^Ysev6E3Dtu}PZbM@(A8GRMu(-){>wB@12>|9Ok02!mV5k-j(TWz8%L?cVK>_% z{rkV`X^waAO!xc`axV@I1bB}EW2Gb@0q~uWg%Omi^ZcBPblPV*wO7(b*^-m*=+hM_ z8oZp&{v!n>31Aeb$^OL=$rMr#t9gi$3bEZqdV^@C~ zkK;>e7{rw@{GRV=4_XjMdfss00Zfo06!U%bO^50dY(*x)XxQ6*M;*s2?0!`&l z{1QN*v2HbJGSNQ-jGNcx{WqP1d$Hjw_|#^>+Gz4-;$&>5HK9mdMrXmzC=RNEd`_ z_lv@E_3OOi`=C9K3o=2)8WD7_9e9XClgY~i_+%Cfam}8?eGM}3Z+q6x_+6lD^*JqM2;WW1*oab!YehnuM2;x@xqJ`g zF)jJSKS(=dE@oHtMO3y#^_xHywBKCm*@sE7>8Y6*)Evq%(oz#UyM3&HlheAx1?|vW zketz;hQ|Z)*QBp(=@mI(OYCSamNg#2UuHzRgTN~@aQ2%my_hI>2IU-jIQ!25 zoua)=Vw1|Lo9PN+`Qt~DK-3@|FDCyqUoBc zy3~L1Tbq&6Y!eH=@3fhQ=79YDw92cKK1q~2Jg||JlqmOdI6y!4>AQy(WyvzXpK39; zxhh(>{42&OnD)G-Y!+Q!>(dY`YelP{&$+$+$AHion68j0rQfouqPLhDA3tJkcK`b# z^2_Oj7OvVqk&ESvAZ3Wy)!)nX2aQ9nIMZM9_?#{Y@=ZNe*tJ>>9k%^8&`-yoKl1+h zYBHMSgxK*G{+P<;UsGjG=5b*gMxPzQw@~l0&MyBcCEWZr|85!cW++jN>n^BB7@+$8 z9(?hr!eH%`vV8tQHehj>F;uJaut>dvT2)o*d5&Ljc0%n_b{Rgn&~aT@rgwk#}o1h#;IhJKyEMdIQyw{)xLiW>RXd$-?= zTWg&V#qXrQ(nLO3P_`%SP=g%~fY;XV1}LTfFK~IiRNzOrnff^0IDK7w=tSuq^2LoznE8?m-ZtC^kMygRR_gnEIG& zr1FaDrSNl;CQzbbN)rh~eld-U!ytk>SxveAnf|5x!p`aLJzHCff!5K;S*W1&3A(x3 zsln98-zulOnI{bh#KgxVe>SRvD{+0-&SIH;H{q;-DD9u$Y9r>4U^u||181%VFKXsY z%=K;&ljeq2og^Uy64VRw$&YX}Zg1`HV`@5Lz)O`RZ?(UUdE@UP88#CAfBb?GY~dR$ zPxVk0esV5HK8m&C7HWkxNWGeEE`7hI6s6MT3YN7Brep?x7UFQw4yU(|FevBuDFA3d z?w7aHaieQ_5<7s|2Gp@EL|7QgzIm)lza=HiEpY;`B7G{YLvoM~G+z1fjp#9{HGaw_ z{6t28UFa8165-#{^eijGbs7L3y18wS6f&pOg+* z#nDRilaroqQACwQn6<#C!V zZqmy7u3fvpuAeP)pj`U^3qjg!FGy4vt-+~6lf8q4^k|wf72`vpG)DMT521YNKiD4X zDmib&<-2$yR2ltRR{1k2F3^t}%SzC119y2Hk8bJ`^7Xp*uSjeZ=j-qEB8U))?i6#0 z0ClNXqiuqq7~QPq$ySN+kjp|wJC-SPpFc7H%WWBXKXp04mhWESiqjIceS$9`tyxwS z9Yj6)TtCLV*>>JI==SKTdi;L=G|O@`uOu8Q!YG~gL*DtYha-Vv0gSxG@jG(`|`2oS!=wnozEvFgn0h(zxB3qtvSSO+7X7^GQkiWT?fX$#8_Qb?@}b zmh!cGoKGLjjqRz*6AK0LS(MuY1~JiwUze8jFwVE457}UbK1b`sSTpr;2VT#u7ArJ| z{oV_rQoo3)_V6tk_CLSK9gp8jzj^*Dy`0x*Rm9`B(k%W5>;E3$_>CaSm^dvCoHrch zx4^S4XlEb=q*`)uXpMD*>WOXHr6!o+v!yGf_YJWf{4=DP?O*+iYsZ~VYZl%ZkhB9` z$)bxjMKPNQhw7UQh~ije8bYu_!#|c=S(+J`>Jk;CF|z(MC*!24Id_h! zY5A{G%j2b?ft@feowjGQHw^-2EfAEqLO|+jsunTi5A2YDKLf)cUo~WyHzQo{_n9Sy zSzIc;13Gn%6byo5v0p(r0G3bUGspLr*C;Iy@cvQQ>zB;;-;j7PIchme4?Fzvz%Skf z7^-Atc5iJBqr(3wyrur@TP}T>rn3iEU(2S`JZ&dlEPML<(P;(U6eplBfNG?++g7=_8YVVpFAb`UTtm~w6ADe1^A4Q zgbgOJijuj!&ujGhz?4S~-*&F{V2dUGZ|J|0G9h&+J!M9)VcsRqK+-1e0#{dA+tD#s)L-_u)>dH6bJ zqZp&)hBqB9{C{M1_M~EcKo&!UXoSz&KX=<>$%zKQ&ef`pp$3BIltXwL zT()>Y>R-w>#Y=h1_(;(|5-1%ftD~S@FlcAV=I)x~2{fj!-X45taR}Mf3&(|qsa%7* zsZu{OC<=QXT4s0^?&nMEUlNMrIle?_pR2`t;|W;t;b#c^35s}x@&1s?vOSdTGi$x9iXM86p;aN||A=>0xz#NLuLNU@;k<^B z_nNjn?^H$y!Wc(zg15vGS|9BwX7KWUwo`IFXBSRd$M6?zx#F^I^EJllp`S}BNW%Vz zubRwc>EnMYt?!a67848bI(B@%Ghwj?;&Y-Y2M*emkH zRHRSG<>P{n8A4n6y?uyHqNf#U!NAHKU_zZ-(7Q@y{WqgY6S!QT@u2B_ET&FA1C@Yu zYH0Q-v`TaK@gB7SUQn0Upto_{N0As!@w~-q>772SlrRht2}GtrBn= z_iuE9|jRpn3m;8uepZL8;RYl&oLewH`brHq=U za5=XOos)>Da{2bj{c+DIYOrhfo#_Gtfv)hfHIU$zMgZ1zK~R}y?7+p{f(brX;x5(Y zEhVA?B!i(t@bx?BNo0*s*yYV~4U4*DG+Qaq8l!DI4Bp75pZwWlmUhsJU+DEcpFjd7 z6@VNDy|E?MjO+_0kU)~)x2BYL+cXQo@u|rVsN4@dfi_@ShW}|Ct+d9k<&3R@`w&5# zLj{nLp5wnDbKe zk!g zYbP6Z{;e3GS)SMM^Q}~lV9FFD+VzBu=xer8w*XQ^yUmYil5`E1OdrciX7(MJzu+DM zwuxVe2D`RM-MLLVM+4}7KY!0C)Hl=Bnm8`Yr{sQbIJQQ<^cG#Tuqk>oHW*tJ+$INZ zQFKg!=A{q10!u|%?!!_-`EE`+LEeD^fb8I_$PI(J0>oX`FqaqUwTy< zeK1A9BXPEuP47ydg&PoE9s#V`=hM3$g_gN0a)duOkcA{Lv6?eigN)`j!>^A$_R%9J z`IF2)!>g|cenw0v(5mOIB?RmN6z{q?;r!qK<^p^m_af&0$Q7~>D)Dtdb z5|!DHxW>4eX18NrqX4>EyICfh$i6dPk z{d-Fqt@|UtUmwzZ_2ysF9bH37YNH+t-Uf}~0p6vv*aLn%v@_$pRHJtg8AwKv<1u86 zY++>oSe5-xH&BCJ-P$lsK9W33QesfWTE0W2dS1Ig%O zDv+{uV4br<$>{x9XwVcEB9c__rhqUgXel}(X9D)_`XL`OYYC$U%{Bq6@Mv{5yKo74 zYiRaxqcsFy<&ib#1yD>4lk-C+#@Fv$_VHM+^f*>L29k__e;qRba&Pf&qE|bYEw^;u zKpb40D>_I@Q4eENc&Vp2`Xh-_3jZU@^31-btnQ!P>*$s-hnQg|K_61%*K`$!N^BIU zN8bT6{&MENv?UR-Y;HoqoXZv?d=Uzf8UDWMs15%qWJY-vb0xJ3JKodbONJ1A>CXS1mVUz%wA zaD(Q$>CavvthW4)wN_35*^VRv>kK~Ju8wjbxc_$enHKkU=9{9PG?oAGg7@33)mr?K z#(wvly#sVDa3e%@anHb{Nb|` zJ$V28{5vR60{MoUF7CjWAg6jbMS#HcPaUqdBwR4id3Od=RKO@#Z=E?QZ+O+Q^O&N6 z{sf;=7t+|B9O9w-O;kR~qj&v_1)+pX>L;ZeX}{0)QZn6pQ;N-xpz!*-Jvx#5>$X+< zA^1T~1kBLS6d$R9I?8gzdrhZZtUc9jVz0PTFKLDn)gR8(+^y|?nbFWndErt%tt8a1 zm-3h5k!WR7ztjasd*3RV3~rXNJ+hHRG_=_l;X5JDF296PI;MT)HWa2O6~Js25m^@T z_K_WR`J9{jV7gceQ@R|<5e~%jMv51%f3C972L1__@j8(za*1f!qR zqeDtGtxhLerB{52p`CQ+)kgiZDCZALQYKs94LyjCj&2AgP$bgO0m@KuDVnsT_SLo$ zlwJ!TbQS;GAH`YJs(XE*EZSlM)_bM|uVlOH5Ve#BaDz*BtOV=2Yu1!)#k{m>VP^wR znvp(WBD@7x#A#&$0`Fgy&!=8MnJHm|L*FXN-5pI<&*!TH=s=eQQq&}AQ?@44{mY;5 z1t=)Gwp2DU09R^-M#y&kNqCbp{||7#^>>7$*RhedynUk&2b*0ap)Up*YvGB z*oL6}9l$=9@4Oqrg9Ub~57(YO)rLQ*I}Dx}HY)rEM3Rb0EykQX%)OetaJQ)+mdoRT z+XFdS4o<5}e>5HwyQ=Ft08qcGa8TFqow(ciolWiY&nm}${KEoj$sFXQs#2f?ifY8h zOSy(>Da@;2hy(cj+j~&Q-55gmrx>ZsTdBmb>PvJKcJXA+BmfF9_LToSMNpUDMEl-T ztdWYVWJ@+CG){HzL{0C0Na6ZyMY2ofyx0L;^ zk0!P%B>avt3+}CH^*fs$@61c)*uNcl?2I$5v=6HMyq+^R6qH-Ked$iWi}w+Y+$uEw zmQr8ms{qq;CHJb@s3-?Qf-Tn^PxH`*Lvrjgt_UV4Xp26mSP3;M!gyoaTeQWbQ>pffaeO9NG1Hy$1Hh% za)u)V@u_@bZwel!LB?4#65|F`f{#x9whLr%5YrI zZuc~8W)J;)B4e`}LX9LneqG#1s}JM^lmWQVOvY(CHGwU^O{tkSO`}1_+vF>JdO<-q zEHQlFO+m$pM5v>Gm^@p?|)`PUrGtT&R8c5`K5i#hd`(>C`>okKnx#Z10A<#GXYQ%g!YGo>74|kcH%Z z&MCs^gjcb!(^glrxwK-|XVIato#SfZ9gIx){DTKzJSl%`eFamtkk+jFS=tHV6Ph#^ zp9pk6b6TuBc3_J@tdZ{=Ry&?49F%-Uf7e2#iIs3S8Z5ofRel0MAVq9yc@L)Ag@n26L= z--A=szi?(1RnCtL_03oW@pNbp^hfnEoQ?>&uPX)m6r)Uk|QJ zF0gd6b+S&Jz5iEOvjSm_jhD^v#zI&sZ{Bt@?0LodZ-vM=p&E-UTR|_Eu4~i3;Ync5 zFD(eyi?xvh{~mB=wi|Fj{Rp@rRK}l9mO^nwaw$C$*#!Yz11&1?7c2eeZ_?7?3E?#U zt(;$qC9hTxL_d#0f)LcX6#54}#N?k*%P0O&sNu9?DR;0ezl-}tOn+zIjcF)EyE`%B zPbv3oQre0_X$#6@(CuEGI^WQ(C2V5ynv?R&X-rnG{5Rm@y36R2{%D~b$uo+;l`e~E zI}<4=^A0pf6jR-(JoY>%j+lo&Dujrl>qG1)xoLLupDEAW5y10DhqlVOFevmvk|2`()jVNLXk&Tqk-4~wvDVJkN8XZrTnA|F4`q*U%|47wy zce5Pp2;HWkO|R2-iG|`lAAu0MW45IxD$@Gv&HwAjUKl35xPfJq{ow{{8@~#r(rqW$ zV=o>-udV4Fx2&S_YA+ko=XEXZYLdITT{bRMO4C+g!sKpszf}}6`zEDq076F9XDnMZ z(H$baU$~uBov-5#Fu0}51LQGq70MsikCFdv0BI!J9F9Fg_oa173>``fIM-V{J;Jd; za+f_qXqphrhuI=P%NF_1%X1iK1UxSw&@rjx-;{k9Q zXo6(N*`G8O`XGac9T`v6YJYz+|Jpn2za)KfdNnxf<5yv+_;XD0J`uzXDt%-i*s#7H6>w_PLrC4okI(19J- z#~Ke)>|Y^?^#t}IP%b1-Oz!o|;dcId&|go2aQlwGTW;jXCgq)YaEbf7PX%Rn!}qM- zY0@~=_@~F*Ppq$B(V9>^Mbdo7>TfIU=V=~~jVEUKY^~0v z6ZuH^$WCoi9Q!sOYe7N!;cK=XLO;T<2Yydq4&}iiFVZ$8u$}#zypzw15$KOsmT2sm}VX>RP}8@BktY#WhI{=n9-9i#O24ZAuWL(Qmg1}2;+TU>+VL} z^{2VzhT_vqmzf!gDG=II{wK62f5F=>e9E8mti|JUP3!}2P{8)qbQ4)sZZ~?&X z&;7mRb_hc2)Mc$~jpCgA%ZBVe>Z`Y;ORwWO9}kTw7nMbNwL8FZXRwRCEFe;5OgE1- zfy-Yl9C}HJh9Nk*RDE4-Dgv4T@=NcA7|>_H7iPS&a#!OQDVXg<8> z-C+2csx}zm!-7EEGu_5_Txgg(n$~6P%#}I2Pd>3tmamkPom$1qqh|JC77{F7jpx+< zm%WuZQwys2f|Oe#-2C5x%gGjkKmp)<_TtQpvoTQvqP9du7Xnz zSC4aY*0?}LnqBOKmRX*Wi|7mw#gcv;Xn7Z!J=%Mv@r_arjmt=?`&ZKt$ZGFoCI+P5 z41|K4J8_ZyIR_}VWN4e$0cgS5_0o(2TqY11vn}XVkzA+54CU9$OH%J{psMk^$}9<+ zyHY#wIEZNYo4l!Q2q|eRUn3e|7>3{)WQq-Gs`F^MUFQH0e-|QNz56J>ZmXu(G`{Qn z`w{-zw6JeC)EVzO_P3fGIntCbk88k>h&pW4<4V`xjBR<8rhwKx_Re?zu1?>H!C28w zGV?1;p0t3)(^`t+hvKrP+e0l6JqTFF=@Fgu@-5oOMjYjF6q`~3SE8iHNB?SFgeQi- zXzCHX?f;>2x>~38s-`x|p|bh`wjClB%k;wK){o3qIO$hy(3*K7$xbYbIv z(XjqvO5~1XPK@7V-fb&BM1_Y&BH~lurFg1lNm*woI7eljZ69L#<1bJ@K*N);%w5eT zYiX08AO6}a4Gt*Pf*Dj5I3fqrD8eSADrljfY_PHJ?*XducuMi|%9q!*B8{etkNL^= zQFz(INcNbE6Kt0`7#6al=3Js945kX5Qh6(!=|%s)8w)sz&cq#tjc}D{Hl2EVt?}ta z&hu6e{-I;6)-?#(<(I}o3|bk#HLzg?Gq8tz=S}{VbzJ=MX5@S=PXcW%u979>b)c;o z#U>x;=ZJISJHoI}+hU$a%5cy6?KzFEwrLQg@;;AOEjXao0%O1X8_N${{D?MUBlXWP zSSHaEUat;^HIo)f)2fSh6VzaZG)NSA0_dyFkXD_}MDLwc(L2m5KLlNVC?qlIuGUoe zuHPS*UR(wjeS|~ra}tu>x0PdFIJHsrWbl>Qhh7N^*$3zBvXf6@fYvkJBMJeyhpTx) z7xva?b3VdI-rj?_PjU)jeU{PsubOK^Ybj(BON>>Ej(+N4b9~4B9n;#%e{=BguMeny zpFA_e>B2wX_h03enN#$o?+cf5Wa@K$r;!Ax#b8?XGj)LNKQTpJKab|5-OUHnuUL z`qDf#8Ox^F++^%h=QP%Yq>WDYx!n~pN-k+Mhx^elX@q#}#tAEtzsx3LlPY6;)@_q2?PhqwX}kGf z;D=UhYmK$6j4!jU)Y@1d_`0dh4mcTO(~_n3OeKMlj}WDI>b5b(dE(2keWJirkC0AI zYVBC#5p$}l<*BtD0gE&G^XQHx*6zr!<`DQA%kZ0*&JJbZc=(^>DN*df@JacH6E1wD za;ARf0`Y3uA6JIyx}GSEFPzF~_%q`7_xH979_IEsPdhhQKQQT%5qRj~i(tPw<( z|2vst%+(|7hdH))i6fSotwHZe7FyT;(3%VpKOt0yQVySuTQbp{4u*FV=UyyDKD&;f zvn=^>oM}8T#_s6xJT+09)R~6X--b0szJ;&G?F*v!AqVv88Qyoi#1sy}TLS4J#u&jzi!Eh7~qXtF)tzebD`wi#$Z} z=xbE8Ly6zJ0UV32sK{)U2=}Gf^qV`IVhqCaSc|g(a0@88NpJ1hoa1PLNAm$ilWRC2 z+-I;ab#VoCEXNn!Jybg7>V<1>#xJK{piW91yx&)2{a#%W93mB*@j|64CwHO7GK{2p z#@>?p!r4{Pt))Nq3geRBAvML?Y3}DhlvTZvn`Iv{TOa->R%OEK4=nFK681pVxGV-d z+VQ_GT}1}5(h!J2Tk(80bM4>P)6k_Lh`qo)?sBuAHTTg-eP+vBdpkO%vq?i&JB=8U zM?j*hL`xebT<18x^ahb;4I&%8ch*PEibT42TVt)2arA}RMCv@d$Y376|Nax8e!8Yi zd?ace^N3n*YiE=-=(yt@qELwVzAC7J?pQGB_gPwX`q?+LHuvM_&k#I1Vc|>(y$o_C z+;uSnSji;xhjoMEQdpY8MC%wDI^Cp%pINU;xG}LkW?@JfEsbd@G|p{z%Ba|4K` z3pch{B$<(4Rfoh+8=6qmN~w0%4tX5Mn<7npg8yM7*2jalB@?(zb@x)MB zi?j5DFgj?%)eMotz_J>+MUgmE2CbKAP=-ITTp~d#zj^sFT@Mf2WPP0flqj79vsv}F@+L-WFFBU>$IG>PZdxdeapD{Gx3%A)4~=-N{H!GHTa z(Uh_}xn0TC=lTAC#n3UU?cbnB6cX^jadbD-Fj$TeQj$R*F0IkHdSUAoN{Az3XQ%z5 zL-waxY{m{tL)G7GsxI0LT=IB|tMi>(bE=W}1PD)8g~=CdtIepkv@lvmk ztym)no`@p~il|PV*UR_|iIt3$d2$}|bOcV_AN-AI zVkAMwN>6;UXxsbcZdM;}YvgOGY$mPjJIds1hmAZIB@a z(wmDq?Wmuba*lW&RPw(C!I_%wPv5<|Jt*v3dUBMt%c{)H{k_i1dccXYJwGb`na<^M z%`T~wYHDpw*}uPk`d{d+-H5#xhpeVTGS|OMA;PaW_EL34b9}!(KJkh6Z z#0WLMO|p9~z_97iarlZE%>81!hXSscV`cEm68!Frrvwtz`bq9zqxtH=$Rt=~O!?7c z1Ec8cM8%S)@fKn$3NG)KV*53%zwT|_%WwP?_$^wpxv}9}UF=X%pYX8Y#!+kQMi)%J z!sEaH*6lBx>u>QuCfrXTFt>{;;7_sje5%wq`7Q>_t4DtZ*izauq}%&)D^o9l(vH$M zk9xckr(sYmk+6%nSZD_#EBtJU1G~8Nz$w|!EHd8cL>e!D3?cjW6Pb5`Dv`QcG0NG{ zG7AcuqrZyUNP*S>_~l_#%vfk*uVf*C)8z>!i~( z<(alDZN`y4BC&Ev#n1p1LG?xb;7AEQgBMaTa)~`pzQbK};WLCgQO$YP^C{URH}N*PjLz+c&7wV{ldSzavr;5c#h1a^2bDU_MfCAp)pj`n+U&9 zB#`iJ!=Q2^^mcHb%}nzY4-2XJXKzkooLq(st$H!E2oJS zCJQy8yAQS2In1zFu4!T3mA@HUeLN4Q8LsBPAuOfU!qqBX!M`Agq;EWVT+{9pfht=R2bj zh%OzlpLsnw8>~_$>8^iZ#2TZL+XT@5MDzVmAWP=eoLvRzo7r{1LVqpCzLc1wU~v5R zW$GE+m95;Ix`bPt=q&!phY!z;H-(2T{N{INV;=LByiekGy7t*skzH-RI(j)7+sBgQ zB{fpD<5-CV(Vh=Fa5Wc1pW@c$z$a>FNC(yP#53C6e6Mr6|2G$)O_XBiBf*Z& zWuji9ro&?#{}yYA$Ghw6N`|5YB3aNoa;d*<<6S$mBv$&OW0hE{j>U(2GAreky{X{T%Oti=^on>)nivggc_o89P7pl5imE z{mOpL!3pW}6td=h2r}M;2J=s<4{A%WaPc(aO#>LHV0_Y?S36>P_aUgt9QkplCEUX~ zFqU^u>`Ls%Uzc-wJz3tRje7s`hcgvjd_rpxf9Engo1%iIy_RrNLYaAb@hemdMeb?+ zgAU=Gmpom>CND?XboA$KGVFM39glZQ>~WRflp_->M}O}mr&fP!gn^%9MN3-{@ffbd zb~Q>AGUlW+zV10xn}P~V>A9ee059yIrRp7nWXgBuSL?}rzm`Aez@`G#;ebcV=5}Tqv3}1D}HN^MfY94NqOgA z@m{XqsQWtxHR2K0lsMdV<=@gGmAFXVQv=aR9vbzc=5AQv=Rox-YgdK`-6;V$YQl~? z)J&7FFQxa1>fD3sVo7JXrq*s=t#(+B8c~Q9+nB3t(SU-QW9KZW%{I?xw}aJ8#o0W| zSy)2cati}nL;u{zl#i(~t)DBfZk#K)me_xIe|y32%a2^xQ^1m$@LYXL&Vu^3?F<`N z`7K=Aj*_-OhI`Quy&sff-#6ofq##!w;QyZ2a(4BD;W2y@`|>{iD7ebn#guBMd*ViA zRvhx|OmUIUA)vbJvtUybVQ-1H6f(n)+o$w-EpOBj-b%|B%7ry(?W<(6sI#3lK&_lQ z%=d@h0kDRQ#b%tS@P{{1AL&R~e);(QPv7&z&i7sq@tMd=PmdbKGi9B zO~z8Mcc&|S>pteof(_l5^`m}sM{~;#7`Ax|(p8_uxrf?wi(Q+Tv}KNIjmFeact$@$ zEa9cjlt6|V-KOxrUn*aa#f$_u9esK*aqb)pUDzBL^WbJCIh{T+Sl+f5k?~^6LCq!LzkFXiGpQL;t2w8ltVM&Z_nw)ZY9Yq{ZJ9YztTUEd>0tu?ZSfBx~ zJ_|sCf#IKUa5=N6tHl~p31zhkQAo88yt@9?NCL>s&13|^DhmQGdDD2YkQ5ci#q z5P~gwJ)c63!Y>%=6n=dF*R}Y^Ry_k!l!AT|P*`G!iL|>b3_50XH6f6#lr?ld4E;`7 z5HcKCaV;`4?bd5xiyq?03T7bI!>iYLYf@R5sK=LZSgI11|IFt|UP&`0p)7OznMG04 z$UlDsldiGdmmRzq8FiNzsWTTfkLJWm_u!(pW4qb3mwhtQ61=WiZi@obN)7BAy*<&( zn@~bBOE+PJc5)(rav)Ov%F$3T9UGN-qt3mSS+UzH7>Yu5Lt?tu}O z6rrJStmF}tq=)Or=^zr?Z2jEY3x0u?frlN#dVNPtJT6L)uynA)Pe1ThXmw z#a-0!I=jB~r{Knkr%XarCy}lqcQK7+*knkEr+osLFomvO3)!en1pjP=SZR>$!>*gP z;nkU9%&dS?Ib1DK6pS@Kow7NzF_I)O-0OHPS8k$kjqzCIIh5h>DN}l;U*>O}w;g>u1O}(+1|N^8a_R`oDegNcP;r_&Ngtiy@=Hnf^Fy%s&hANk_-C>_0e1 zjTh{Wuki6YL-TZ1mie_e;Tc(sV_nO#ldH6k?^b~G>QC=}Jq$szq!M?;nmmMME%T|V zb~h>7B+ept*Zdl!8-dir$zj_7p|l=bVjPPu$R53~otIW$Ez4{l*+8I61k!qxk|%SW z@iilkDf?UCCLt-uLz=cf!`#Q+iNr&jT-PxIxz6-EN-ume1#Zo3uv%jFCfmSRS(PN0 zF=l^%ua1McCHeV#q6u>|@-FzVfK5^1>OBxkrDe_ZhT+YmBIC;u2} zTP<5+x;=TTSGW^>W~1yQw?iTqtghEn68 z*f=Hg&YV4MoJ&MI(tDAvb`|#@?CTn%0lz`R2uH(Jx>pwF*4=g52-j?EgzjhS%Ce3F zLXw?q5xcz7v@iGxeg`? zrE?qBLOKLKcQTt6v>A1f`{QG3@iulBt6Bb}Wuk2a85~8sS&EFKlSz`FOAeyXp|{_v ze?8w@IQMQ4BLuNY^UcF%rL2_0{2dGF(=<)2y(?krDiK_@&_Rxp%!4K)sc~5!ej$hE zij@465+W$#01@=e(DnDeMA4*fxH%DEwi{Ku7W_WK#8dWLrxv~`I%*cetM&%~hv19% zN+KBryew0ht7UBKG<8F;a1++~hSORkA>F$bJ|ss^DjR1%wEX`dEOjE$)f<&}KI$PQ zy-li6V+V^J@$jwCD>`;!LP<)!X2T}~w_z(<1SeJ# zUB4DUM96&qUL$n&?a;J1A-T-`%v-4W%}ojkbYdrXLO;`krDJpe2y`?;v&R+(ENA=c zyc%^)nRIV&hW6YVe|XT-A$j}nB1om5+$2bG-uUm5CMTfz=IWT51w$PVy5Up zd6T|dymt{^fqeUj6irF#X=?a&BX5^Us!Hnvvv8LBRL9#v*v~o)x%)FII+saUcpZWM zNjtU9n+LKZdeA39XbaM}>ZIC&OX?hPON=U zOnb=PrNH`MEn&?3h(}@m@kkWuf@FEF??$1EB|;91SE|sTP8EK2DXH?DE^Xfpy%0wQ z90rr0C(=_~N#vrO_77dZgMB|{;|3@@8h*K&NDnHHXu!sI`aDW&q@7EOS#ZJwiatEY zogtH4M7K5=_G}gOYcC8{S>N5j0I>~(Jvf^89}Hb)0p+twZ1i$IjZdFKC#-2FCrPRY z8LB{-t`2wY<1HY!sK8}OJhnE%C!77Pf_xRSDe7T215lmdmo>&OnQ!i9Xnij7fVCmZ zH`HH~(_aN)l}&BH{_F5@qRQqUOD z^UvyyCpRv9W|xJ$eRnDR+R#L{L7rs{{c}}dC_yn8h=ufunab%diBwm&!Nk|QQ$vb& z1c;xpktnjW z%@NSsYty4~QpkwcI{#XeqqKC^T9d%^Y9|?eNgAu!>4Iw?Zoj;`y|H2UkoC#cHVtCx zd3juUMpvpz9Z#kAsex+~Kr0i=B*8d&1stoMuGyLd&ug-mZ@&K%S%=8YzxwwjuXmA> z3jX^Y=HRQ#TP#1=+3SKGhn!G ziKLXWuyD<`a8O@ZRz-t9**urqCB~ zcwS9K+>XOA>4Iy9Nz8H2{78ztB%+SAH@BqZ)IOSf^?*=4pOSoM3a{JtoG2S)$ao?Q zGn94k>iyq_K2-BWdY!-CyA_m~l9YSa4{Yn_V zL;61c8zPw5I3;&79Luu{#9YgKX@10NrK;w3Zhxz|@@zt6_VTIaeK&`1BnbX~L9l5U z6dz~C+7sX{PMXeLH(czlaKMQXy)bX4wr{@((DQ23OgdHYdlpk+`35W8(a)gjA zoDxO!^`b{tCMLu|AazVOUcy|Bf`lkn&>8=)ctz>zh20rDZ>{vC01VK$&a@Wwfck*LX=cT;Lo)s11))NJt;PM zc2uR4p3il8fu;4B)%GPY&!0}uK9O$CA+a24LI!Mt{Rf){lv3w^I}zJ&)%$MkH>7ZQNil(g02Es5GvTYaYuBJZac_(RSBgJ;)u((zuYp%~d66sB0d$S5SH*l92Qso>kz)M%3m; zsgy5)a_QNdRg!K5im$-7>SqHJ0Y6d?XJFNP4n&lDz_KO}1gqnIBRm?MvBBmz4o<}l zpJ(f?K08gllkyYuevf`v25Jr7_@CcOkX;a8msGxCh}^sU(@2idmn0LwOrtEhGhMVQ#Og-JE2e(uzuWlG_hRM}^F?ZKnI`(gWGOUFoyLBi_`%6mZ zkK{Vtk}Z?q<|h?1HU$&gv#rHjG7}CLd2+sv4bX`Lc=eCWdljNwq8$Y#O~cG&d8NAQ zP{sy6fjvs|rY3H(w@0!dRwW7e!W-yDb-dt^jdxtv8l6ESe^WR8yh@ay}SfV{B@c67?ZIM+yevP`3|UltD?kBMl4V~^b;el#@e(gllRG_OM> zV_akcqh-8SA+n^Qlqn)uGyr6VJF*lNQQF>#IO7JYQCMD!r-!4gif(`u#L{sJ0-{(V zy3b1_HAWJMn~#lbtoj=@Hf4C;AFc226b>w1tLMV?97l-?i$JZ+Yd5ZE=cG|o0RGB1 zFD_fu6Seo+`-5%}O`8Td7?NoNpi!ygU)Y*FWv^2kJ?HstXBF$n&#yYG@jJ0Y2CeR zxgax|7s!VUOBjUB&R@xJ31-%>i+Pt|n43*TJ88#FhgzbSksvUsDj>Ucam19o9PRl- zP5+ErO}JRyCOGO2IBIg9(39l|P)C{f24JKp+ka+Id^(h2@!a;DOxV-(z(Z{2E|^IQ zKmQ*CVon;-Kvd|AdvnPQM}7u9vG?CbS+%V+`pLgJ%%EAA7|+-KP+dv?U-c1CHI2t& zVDy#sTRR&`)|rol#;9iFGU$amF$DET+A6w)wjq-I{g>Gh^@GEqb5kZ9u<^TslZui5 zI>SlzO&HhhL>M5Ll0t(Z6)f=0{ORyz+=JWPxm7|XrT&U18WMb*AnbGcp zk2C=6vigj%u1qpV`T0|G{E-J}=L7m0O_-`1S&~2deBRcQE!y{GtQsLI^b6OVo14$1 zpQO6s75>R2(e9$0it2oD=(*AV7##>XKnLOzb3MQJypZoigCZQ2nF{y%3nANHgnF#H zXG?Z~BbAWF|F1`2BGR$?xV3c^-HuyHnM!|~X|%Bl1vXNGmteUNwK~BWn}YH@kQ61S zeX^pSD;)*yQW$VH*{rrB{Cu2SEbtL)bZMKCqL67ScFs~WQr~sYC7ndki3^>2?_yT< zJPozk-}bbbI=$03atR_)!4C+HRcxj?`VLddu2qFs!~7gU$+!el608){i9E9x4Kn*1k!(rQC^>%hSNCT& zNYgjyDZ&;`bf4!xayv?0WEU}ec3fnCU$vH&j|nbeHi|gVQwWRjzlZrSGg*5^;xrW$ z1~$A2t-hssCq-GV&Y^Z+y=mqVYSbiHymWd@FH@19-XHPbCtBhP<@tynf{-*L2F47W zOhvq@w#hzu&!C-dZC8nE*kV4N_&NL-nAa9i>jPv2NslE?Jl?b^d26G~g9|M5I7ebA z?-)^G&w+Ad?L_f^Esz=!ly@t*+Sp_qW5Wgg2~zc?UqL=e5WL~V3JB?~*$2(A#e&B{ zZhp+~99GW}Sa>tjzo)w_EUm-Ks93S#MF}JHO`>h#mv~FDuNTgwhyJZa2fky7{iZ}g z9@dk|&H2~;uB7z!SYmYu8{DIwfA?jEcsg^egi8mj#JO=(W(c{ZD-r_zHY6_gr&zgz2)`yT1D}CP-=BuF92Dd zP-)Lw+Hd2DLf)1vz@7s$Jy+1u1f~Se?bc4JHGC+a60?-D&t|W1v=^KFLp#JNqkpu# zyw481M)O>%u46+%j(0$Kil_j3yXd~MO2zf4$}?f+79^T$`r8|Ndtoh6JS=}vH}hK^ zrjq(WJmc-Gc@AGEolP{qezOB{uE2{Y%4i##B+&qjLt^{E4qgE1zvvPI+w&NBW^!T(b(Y%6PI{eXShGTt?-FPE; z5sPneNI1gR6IbPjce_0dpw-*K>#UEYUZf-~^a)QN!oqm@_dwfk!tJ_Vfo?YOMYJBG zQPIw~9|6ky4xQ!&APQs6Zo{i*f(rHl%N5pv(b;iyw- zArZ{W;j1A}Gcqt__?PyYS>YyaJ&R1Y{G}?7AtR z{$HGqwo5Z%_1OsCn}Eil_Pm#a)k{!N;Jj{^=Bo*E((k|VY&9GQY)Tl{DBh)Y*b=IJ z@uKy73@J0;rYYbdHEM;X*Y(Zm8$ZZ(drXgsl()8$V*7Xx(6wsC3IZgGApC`&W!p1K zWv&{4=rX_2#`ne?M#8Akac8@V?WVgkKd)Q8aF1>n8eK3yF-Ssh`y)hh&|a6=JG4tJ zKP2s9x}om@6KindfBN(xB*a3OxqRvU%NFvO+iq=B+6;4Y`}duD>(h(; zS?56q8WXir>s7l;*@wESs{GmUmEx!3up?(XP$VJYRB{~9LDHk zF#CVbdI?Dq&62K8UJgU6ELk}6r7sw}r^`fCjLv1mM}?O{nH%-+l&5Zc7+)?S*!BU| z8G+ApxdbpNLJNty`v}H;aI;#K^h@u8>k|8pWVY+dN4ND6dMvDTe4lE|rYTs61QN~G zV$?D|K4IUnJN$s5rr5rqV7d3ENUGTdS`&PJ4Y?~5z2|1Ol{&k5jm0uoG;^JrVi=9a z8`k3L?U6)mSD_7kh#)Op*v3N5V_ zmqM13BDxIRof^)I2ny|~@!ael8}47vEQqtePqVePRmCZc&Yn1%5*Ic`-oJbD97Rm@ z+Mc6{B*glXkYkg5o-8oVu*7~i$JpZFaH=LS_NS@98IAIrcXVJy%Z3z;{~l^xh?_el zigcc+pehg<@~Xj&3u-5V?Pw<*`Pq1?Es6=DVK}*e!`_k(b^bpzeRWur-_!SkAf>>P z2HlOKs5HU?DjiEV3P>Z}AmOrCV^TI^C_)fEx)LyZ{>iFM?leud?|LZkjIrZ{& zdfBkiOST$kOj;_sFF)9|PUN@6P9Ji$ZH18zhxO%7O5*>t0AbWxNZ}#$7GmCY&rjmi zytqml7AOPfC)@>`Ic&mxQq-AJ8*1F@LbZyMt6;ar9$ayhZ2)93R{2%b)a=z06^zuzkk_xj-4&DW>1J7Vp8)39M`P=k%jFSUykM#Ju1uT^b0WH?Ls z17IP-GQGH{*zN)}k9XTj*Q~TI5If5E!-_WE^eOPLS+I4O?Y|qZND2#!Mg!$R^-NRmc=aagod zQDAGzJq!iF?HJ7h%G9pAg^vavd@e*+IzpD{1-y1sNF0sn%y;^WQ9efQ{2obEa~ zI1JxIv&D0xUQZ2?SAHdD^mFWPI=$ zMl#^8y1;cYD65}p1MRFS??RL~7EY<JZ6l-GJid=Sov&Yy2`%#Ae@yPUkB?a( z2h3SLzc_OMh;oSWR*yPUyL18Zri|9?#=m+yhV9rlFYQ9rNyvg@_qq?--OW^NbG?Sm zp_=c&mhis#V==JbXiHi7mlG zk6AVn`*_2{a4bOW6$ib06$_rKYTvU-63X$_r?BNsc(RIITk|l>*ES4sJ1RiG+|kp1u~U1p zpx3qpiU)D;YAugf@D|}X0}X@}%q_RV;-i$~sC>4kuc@bTXe3h;iSaJt=1Cs$B5Wc7 z4RK4E6|5*tvmuQ*nAMv2=)7rmcW}@KrBRce{g4rL%-Vgh$m&XCKgT8hv2qkD4+k4G zwq4t-O!vgV*wF!Kes53SsH#rTh>{l1#N_>nD$AskOh5AXomA-F@y zgfc|RI1&!<`F*hcBWd;|qOBqQ-gyjkjNiz^05fr!_p@H%AHA#`9ONtc1Z=ljsUugv z#nJV=xXs*usc+SKMT8xnN_fwYWI-_bX&GWPR>%g=IUJ~J6op;*B`H#7mA?c^KXl*8 z6D@-MS>#0z<|BvqTQlE1iy~?8I-fb+yw1$$H@Y0i?tEZXB==`PJUuJaxqQVxwiA1y zX6KP`6USPdf=_F-ug7j`Nrx(KO>PSwVNhUNXcf>l+GGPAX{7cwC4U$IlDuYLNNJ z-n~{PzSsOvbI%{mWAZsE^zi_#kleCzlDiZ^=5Vh z3kGZm@A@sZiNc^{&O8>MyGn<4M99$Uspk-yt(j+t9Ol#$O2uzo_4eA^AV*K?f>Y%A zP%{O!wx+#HJ(&-tgKKCN)C-#mPHSd*C!GX0#T`ey1s)f}IArr++D#`B7?!rn>6=M9jYC-b<$u(xlI9Gbp5)pDb>+{;jM@bDRdvy|Q z{~Z0z)noAB>vYNlfI?cD`Mr}hr@f9pt|XX>b@K|39H|(&OFgx;dHjMN$93R90l(NP ziXher@~kQHMSa$b)A_l%x}A>3x@&_mRm=3(5HV{WlI@^ol)aZ{ow@sak5TS3o(3ku z;--gxWcahR7sIqWa6-i?Fk!2&45$LbSLm)K5hR z0F(hdHF=-wceITK5_)uKILW-{r{uG)sEl4_$e8gRxg^1!eh!bNj-}pqvtdhmQTLU< zCKCD}v*Vcl*JZocjjo{Lt*_nQ(R4$X@-JdCGwEj~b5Bw|hFw1YI>6rHga8Gqg_8Hx zq={sQ%{>y)yXi*|F|QfL(=1cFcdS7MCJ4)<$3}v$?L9G=IHJ#!JgsUoskN(iS_N!W zb7kC`jk^6o#Mi6x4bXl?qEH$ODGj9{*lOh6>(i9F;{Ww~64m6mk` z9GRWaihVa^5JsfoWvZMkg;`yx1T<`cO@h*DLARRMrD;WZH(PAab%it4cRO)VbYJ|h z=(cn)Qn<@Xjr&TFy2glQS8z|lpX!G?3)2SH&3)ce3yorw_0yFrxYR0o^3?QlKDb5p zN^45@*UCSNKs;r%FS$X@rE=d<_E4Lt^9nNDt~A)YDw?dH6*!@oU&3Nuk!6Jh=EpY6sKsw;nrj@^tlEJ#Asz?RT#2?Z}) z_4YoL7}REB%RHnlg-A{%rK)hpPnhk2mkG<#)>BH)Nspi}iN2>Ry8lv!{9#@C zstg6JiYYT@dh@XnG|6M+1e5g@lF=Zr5qMIpe|tCg2et74+!-hdDF#nyIKO4sFnt`r zi-Y^v4!Eg!<2D^!gt1aTWJ3kK9We~TCn^zs8hga1CGSEUPMkj7oPeig-%APkZU7oY z-jDjeCd(oTT?0|SBFVJ!Je308VaXa;gjTCZU5#u7&S5sYUB+Ho?oMA%NBB&x-@zUh zL~GJ-w|U+)6;Iu(7fw`91gpI(rK%ciz#27c+ASbK;%fyHhy=ml2U8P^_CL?G6#sXZ z^`;X4yiOktu@2#lp1N}1jlcO+EKob&BPbBXB2N7Q%pOv^|d67z!pqh6jJ((QLU zOWkY!lyglL4)F!h_s>*3exBB+@bg*Dr$MVNlGbnkk>1bVOAyZ&146JlMj?(4@*>mv z-q$+{1B<^6j7quM?Puz6;jWELgioU56@;tp4_aSlF6IaaYbT*COSv_}g0=Io-0mm->sAGx!RlHZqqaM~ zl-T7wUi_RNz2sK7BTvobje6q-_vo<$w7r~it438TD-Sk%e6O=@x^8HLkOl=u}* zv6szt)AKL+zgpy3{Lsp^s2TPRryT9qCrd?L>>-{_$3iG#@4jXW!8~uwU!#Lp-Ltk} zqir=?i78H?* zZcy*wes)gDOl{%^OJkX@(Qt`j@1>@!{Ue@!#$ zGQ%6~!SAz>3&r)VTQiezl{mr(;1IZ?7*P%9J5jF*n2LY(Lh)kmM-6SkJC!1Q@INNq z$f{XW_zDZ^7ldV!Cz?K3{S+si2d)jvUD5sOllHc6z$elFV??sg%`1hVQG-TTXBn3g zW@52K8S`fB%pRUq!(g3_lrCN7hi6$4Hr?bUPF;OF&=2%*66(G9r}jMU<;*^$;-{GF zv<(MqS#D5*C97L;ZaU)Q_1ujFB(D{l2U&NxT9m56i~)yAl^I};eLV!+83LH?ihM{r zUj7=_A`RH_u6cnh`Xj=WJN#i~){I$+Sv7xjhr)SwB1YAv;dIvTGBhcIe1Jh6H%y|| zSd^LMmbOa@GY^a<`abOy^^Kr;vOT5EW9+`^Hdci|BYKiQvWOTida)LKR!T)jjfz}$ zlD2@`?vTU|q!#1>@xsoEFfKAQsmlJ=AMp?vqlG~A7*=$<1^+P@0OTl5Gr+djLKkNs ziH$bv3$EPXnv8p?-llze`ef$KsP7|9KJTsPJO6O?VH8}+A3viM;fK}eQn2B* zn_rQTbduZr0(Gt2=DkohA`#(^+g*hH^V>Kd6T0w<_9gg>!V^X>$OwCqB?M6+M+2%q zx6v|2Gxc`)(P8e#6A$V$LlK?|N2c_1_^ok}_3~zG+%Uk$kWn$q5!3MTTy+CfI!{H{ z0GO_%yIBkF&hCr;Zp5u$KFb{h7PCcR{JX@No|^xhB)JDQvF{J@QNOv{$FCog?i>{L zNVSu|@IYYwGFD<-W2bR;iz)l|wZ~3!s>(Yrm-^IHhkSf_7=>%GPp*DR{W^i%lTbYZ z<`Wykd3s{P6ocg212+&=(5;(uEkAT}Q_?m5;}U82pzORHeJ4V{(fjBYBs01=$YcO6 z2k7ibVW1@=`*c$1naRw&H?ewJhD_s$E$MT_!WQW#jV1@{CG)#Ph|q+0z}LBuzc;hD zDT%A(iB?Q|lE?xbhW|`7Dz>NITq6~Ss3b?3?s9Om zU)C@R`OHr(#nVD(E5VL#L}BIN;lxO6pn)DE^hkk81A^+Y(HvGp605 zFwG^bB#(hH+!#|V; zeg}1~vuo|{)oa_g+@@T5eOi9x287co$l@x@?{(ZMRiQDg2ja^t(b})){F2p4WaUkY zg7lQaigD1sEAv&fYz!!@<2ENXjrkGMZVrmG$I(Z0I4U+rj}c{?hphnYglX8C*)1fZ z?>PS8!n@&*tTxqw-C|x_uU!Y{Q3>SJ6qMt;WtO$UZ5c|lDtlh(1)=Ll&CSgN4){wh zPo6#v{Fykkx8-u2DJp1^$$5)=RQ2lTO63DiWySGx=xQzK^c|?O?HX#;$(2^#Dl!=6 zdw9MM*T0x-tlyElIopvIaJB`9U~$OsH4Rf`T)sotf93C#|Wa z)8lGE!ipx<_e8B1IOD~={D=wY%0dUnRSsN?Tnc)nC#kW0aQpC;$H}9g5LT~U;0oRT z4as~RO<#3|->S9U-^~npc0(f7zLC#=;x&hy%*wOSIEq8lIA(Lvi|s8}fi%%?{OBV< zDf@pMNy=(OqestWx4R9VX`bx($TNLV{F$JYv9TpQp~@$orxy(mZ-TkOe-prC`xxv|YV7DN%p-2m9G`A*tcT!Yq`FFE*F| z@?jusDQ@{`&Wu3fvwX%JT%w-OLC+IAzc#904rP5g%Nksjt48Hu^(+!cAt689 zuJ4VoOL_tq(G}Sdvf)@;jy+i0TrM(%2);zVw&Z}VLNG!zLFj$O-A9vh!ye?M-lzt* zUR@7tawdJ%2B)dXMRWVJV@f7*iqGoh6u#35cOgd6dHq;IY^>3(|3T8HY%4k8arVb- zX~IrBFq`eTW|icFy?_?m6K=>$JNM2V~-JQd|h*iej;w}b1wmB_D7d@ugpZEQytQx2%8CHH3;mSoV`#P}75nzv- zO%>L95jK>jFZHx<_xG6Q6$ULY9~+9Md__yY7R!5(=a#)AdU?L*=iTf=$b`B*ZX1Y_ zgFj^i*%=q2Q*m8}zH{^yndQepDZhaBg?mt%{ddM92EjUQ2L1vPEH3bS^ewvonBOl6G(Io}5Hvtq5}dWH zkDqw2%~gBkH?Jto@H5O;G!BIyHi#3((iJ=*qHs4e18{d6*)`2vOkSw!b1sSTi-_i0 z$x#0EcvIK=elJegbVMXmZ5uI?qdpQDsjX(O7g0V2wSKbDyH0?f<@-iQHbzaa1(k#! zouv6_ZfFcap}_!R=lC#~mL`^k1dv$Gy0J<(p+h5@#$^p}r=byIJPs_cJT)6Cet`5P zDgx;laleb#9q+jGoJ)7sfGhZ)WKzzDNq#0myalvsRrvR%O7xutCPS+aOW8&0;Ik^1 zB;MYt1sHaCibkj47^A83a@X9i^i=dc3L}Y=O(FtBGEi?k*~U@m$R z)YG|e>x7wY=TWFBla99b+p30H=tG>H8sf*0_F08F;Z^rxf;;w#r`~t$T z^Y5RR=vyy=m&Tt~cN`{NP;0+dmfNjd9jtOm^FP!yg@9Sy6Zxdp9m11bt&_SXF;YD0 z(b7*P1QSL3Cy%}4{o5F{FV#WOf=Fx@>f}@#Olx%dgG_Kp$xI5lY;xBGN*6iWc@t|ONwrROz0=Fm|#Xr^RJ!d7KiNhS5y!r+?=Yg?#qGBO_}-6mWK4BNM!oyole zLkTBa1pM;|aY&)GeeO=FlV&}9QzRSf^bMyI|3MZ|!9aFjPGJq1v|74JCDkqAO;9Y8 z{;6E`Ej`UrE8Ru=Onke+lg~ArM;fKeKsev-`X1k18fYd;Ma_tukTH@q=on{Pkr{&` z5PupD$1{$ukAkc1xo?Dkj-TZdPPF9z#E4LanE%k!w6L!Ry@1}P>^h@%k91Iqq^D$I zHL&@;OlMNYI^_rEx;weZ%dm&p!7g7jO75L@h=_dQ^UATT{B zpx35-$=!;*L2b6h)0$URC_BmBN@nc%)FKk>oBNDC=eJOH;>ZU0&2SZk4C&$U!&M7q zPO0h3Ki}f!zTDG(3%^$6Uvv&gsrPXj0C3VajKT1j0o!o2JDJLr_$(aeeg!<8R%I$Kf;jENY(@g*6XC(@yXsQ~i&=MNER{mI-&XF{%FW#fg>$~-_%yqO{OV*~ zPR6&Z>4mZ_Cg=;qp9KIW!g;KHx+MfuOy-64o5H^#0ADkjsq1sWN7DBVJz-KIK4G>O zq|GUxgR4;ftFkl1`@B8-BnaX8=JC$mWuPw4(a_~>RjU|mlqxXa-{JtczpE}+`(!OC zcTCf!${XR-pB1%BL`HrqYj_|LLMuK3YM3BbqQO@;qqKJLt-_`9uU-{7hpqisLC8c= zVX0j+yp`JvgeWTjA<(X(eNww$V_>GNj@NqwDc86TK^|)tsHnFopN8*_Q0vPvFipOH zZ+1=z5xqZ$i+XfldGc$p2_@6Re!rm-TXE*YfqGJ#zt zht$%u@3S5z;pvrSmDgtUnsO(`$fs0`+Ie0HGqx8(ot&=fCfjA-}eEe4_{ z6Gw6B>%6iMuC+!tx<1=lL_yX0Nf6@yIy3>B?%~#t35nq|);h^L^CD<0;-HNz-BOJQ z!kwJo5FE)GMk<}xOTw}=;VgTfvAH2FF1UGS>$wBmXCh(Ad`J$K{i>CfFTbnn?O*Yd zcQV53ct6GfZC?Ts=-gc3EiB5n*jnYXZ_7bnoj)iaiBQmZ?0eAu1rcJy#m8jT3cU0= z?fKiu`r-w(mw)tiMBn{|D=0SF*()jHBfc7;t)B+XRQG%^`MNpXTjU^8RVmkiG#j0I zt{N~psVRmXV51PlMm#)C?RK?p-RLnFrT>Y6$qEk;I=|Y=F>vhu@{PXQURC+WY1c_j z_N5p&JU-)d1cQzCw`u$6hnFQ(AM$vJq8&MEp zp`O6rhIop_*blyhSD~}hi1DOUx&yV`TWqnXk-X>hjw!(i2;6JBk9zh<;Jxb)G}heY z+m?S7WnygDK0pvwODr|uwxV35m}@$D!@ClnIf(qtdj2eKkUL+lHsuq-^DoO6qi5|8 zr>knt;n`st>IS94TZjsks72TRX#vb=r-HSou-tg# zNmJ-)-_YG1xSt>kNF7tSe znkTnow@gs|t~vJ!4>SK#HYsUs<+`WJ9C1GXqWAgo31^|V_6sSof<^XxU;MCQ4I*F7 z#${lWP!$6xus4Js^e)sfuMZgf`(4bOZP)t6=Ui?x)o}ZHZ6ncl9=8|y`J`LDxXb7g z94}~LV3DpEFbR9y^t+JHqM&W9M^C&(BUBRB)9ID@+qXx3_6T6Rf=Z+1b5NotO)Z{R zztwj{swPzB3S{rQIk$e9oJyoq!jWZpTI`Xx|F8J6*2~cO<^>=JVz-Rgnw|6a@cV8l znN!EOFV)JANc??B_5DtMV!wi4YTV%4Q@C&IJHY4lCmP9q$w_;LTFC{2myYbWaOSP=|rF9%x1``Qga$0jqDYqUi16UNR zt!-qT1`~7`V%n}-XM#fla9|5rFdSr`>NC*K6^ZTwfR&s3zJp0PkwIarm^xUtXp@m5+(k=H;_R`t_^wvH=0eAuC1+_ME zNMTfJ|Dx@d!e|3yiG4tO7J8$ie;qiV%zFmRwg~S0d7mk>JohCq1YzZ{YdD%b&Cg3C zLhP5vmz3W}+7-vqz`sW;ke~0=<$dLz{}&qVl+}9bp3>K|9H~k92iPK9+VVWqvM-CY zlW0o|hPz9hlBRHV^bGPQw~-^Aqrx~U%7F=tK^ymeaa=97&53*T++1NL0P0I|`dn|m zzDF=Ze{J_lo1U|+5x56J1~+SW9&)IG`N|{!bb$7u@&&ry#&r)!>&)!wMeY(4U0zSr z4y|?e9*FN=uhv(X7}Y+kM}ZaU6Z)_U8+ifFq}eZyrre>-k+wp}cRGgc78kbSJ=CdB zELM`c97WC8T?_W&I2=u%Z?XKOiTV1g{FUuj&H)q*$u#nIXZ(TuEspd!uQ>~Gh$V%8 zo)kPIZ`RBH(odK_m~XiLEd0{#I zaAyw-mE(UuQwmSUucV8ffPU&rngP&kAbt^I|5ZLLPmSlKkeC<7kn&epCPLaiu)*(mi$|Lao&m9{0*e)Sm4B%sMrM}@@}Y+wE9L@F zlywQ$bL#DGphf_{K~EES-|6A1u{E@!X2*Fv9XPW9~VC{8)B8Qxyoo| z;cD^J5XK9T|I+JXw(3ox^WPn_3Br+Ys3*`aTaJ-kxIfn_*Rg7F{TYF9Jy`lj#<3(b zCR5>fpYG8L!EDZnBcc|jeDZ#;`@c6{@NDW}W;^ZiKOqWFFvcvkBk+OAuRDxep*gc? z;ai0|9Fsl}vLl-(FN7QwH8A=Tt2a^EU0}W-FF&#t&$iW52We@*6L%e{PKaY~A%Us)8SfD|5jMX=rf> zEW0pR1=$)a{PI00Ur_uecKj3*IM%h@4b8bDT|%x&41`!{42k7De`x%?fL+gX3J${q z91>s-w6MC#2qh%?b+Z*LD+tTOKF_w7nnzcjN|LTKI^Ps12s`xRL6IyIeiFV%hWYF3 zlxh6>dpEh%`#tq8udN6sp2s3p)wQtsNT1FX@jtZrq6QLi(_)$lCl^yuI<883Toqij zif<0?T0B|}rO6kx&e!4YGd!OlpZhO2>HuL=MyA!=s<1S7__<70&rAVi3CYMM#LQM#)VhLCU`1RDfm@81O^u8k(XYP*n~5i&aX{(3d`* zWbL3nl{fyB`rC}8K&f{b>xKCagdW0!fs#=Vr?T+%bCb7KjdHRTVI8~V1I1EcRJCo2tUP?~=kwtoHFAsfQk1xwe;#?aOXRUC|QQ-+)ad zj*v=s@Ot?KV>;12EmTpdeAik;w}3lls{u0qwx4MU0YM60I8tprr9>% z+KN*^_ui3*$qH+)8*IQOfk3*?N0K#xwOJ&r^v|Ss#WAN{BDHfd2o7PCs`E?Q-)w5s`WBYKI6P{jS3y8gwXCI?dKfql%#)dU&nOKl zb|@{9kwxVj^qJXvsQkME0-{mT3mKi)9Kx@R_kvAHH^AxY14BBKENpLci(hj0Nl|92 zj6L@Acw`H9fh|}8#Y)}i1{`5b*z?r;C(?o>P}eMLf&5=2pJ~!7C@EE>aolel+`=i1 zr=EZEg!oXRloZ%*-d;w9CtE3Ljmu}^VZ{j4tMngLZV&RTSDl|Dqc%8Oxn}Ib1i(=0 zz`x|r3=tJneU?v%N(JcbzKe+%TE}UUH&+>+PI#sMhf+?Q?r{=Ebko;ADZp*wJ&}JGg>JR>dd7{r&yZQ1shuZ zb}*sG?|0tMtdc*S=i~3>rmCh|(l?2R3AtQ8Pdb*qH>2lD%5=@s)L^76`zm5SAw+=l z!XtmP9S4dVh(bK-^3*Bz=wqcu#-3R&Q>^Jj3?|KI_`U zZ9iRPO3{Oica7mi0x^~?bxXs)7*eJ&kvX=Sa6@<-)|gNp)VOAspSU43s#-}3ra`YN zYBZNCllMb}@kGkuZr+V1lKOFOMnKiR6VWGqc19+K=VEE{cklj+gvtkuoCS3l6%?{c zAlQfJ33B_bK3Zl=I%smauxC{25|$e=`qa)SYdn7OxS9bXF)vA>`onFW%RglY%gwop zi?hYb-J@l&C0pPx`RE9g$Z}#oXeu5yeO$Jtxc+^0g50FK!HhT6doMG)=!V`MCcG)$ z`j0+6kIeZ7V1e=$hsUq*4?)(h>{8UP9>j~6`DV?J{TvUVu;F%*U-&cgyIB&2ii?Uo zXeQJ6W?1EZeG2x?B3-*z>5a|l{hQE`<9a0x!7+Wc*df=L*~B~6cjEY9CbdCt^>;ti zGm`d2WCcAGDx|5eBV-Tv8S9I8qzT~Sp3=2n3&8y7ttEaruooS+5gHu>ScXKIZ)FwJ z#rB>Xd8Jq&nwj22)V-}yt2L4@0P~DeZCyErLaj2HHLHuX-|;Kh?jYf{6_MJNV7}Af zzoG*iw-8SSOY!ckroxH0+W>h5Sw5JygoA>R;6R*w$Y}-7M%9-L!*$mbzgYb@wVne z8ST4nt=MlSt!$@?qKmX6+*)s6`6UJe?cf>x8RXb@$Wa zPf(eJ==l1gZbl9q-PL#LZ)i*N#JFv2)PY7JSVrYGzvww(zdTv#~5|*NQ(_+bt~bJHcP_2O0*cCCSKOZKencGh47Z;BSWH zqrt#_{aVsa)4?)ey~Km6<~tHdeLxSzU?Qw6N9pV;#VewI^_KMfS*my_Z7H*tbyGz- zdNj*gPVi^ucH`*xtZ(Mhxu<3Zs^22am#MzB=8tBmC`s+;eGH>`@3)tU$9H{TVQ+-{ zXj@obKm5Dm%8J!#e827UJq2Y{HkwtU_7Bl2tca8NoSWO8#j|F|iI&x_;Loc&v;CiD z7EUhWL;v|*JK^0}O%`0QxMuc`#>npx^(#B zC&@hNxGre>O*cx3sJ43ZI+pRIO-G*3V3m8T-u8!yYptau71xL|LW9%BrZ9?~eDR+& z#(;*=+M~s@aw4O5nc%M>Wa{sJP>tv`uiVDe4;PKSE&hv(b&H!gvBIM=juuI)5wxP{ zFzB$1EoJcQbqTTksjgML^V{%xhMRN_l^;i!qxeS2J3jSR)OP`L{I2BTS9BK2#I=eq zk5oEqag9y@79@fZ^tRza19|9xA?NN#jGF)H9sI%fBmjYB4rdnXKS{?g@<$|d^YKQB z_^BaQU*T%b;lGS@CwW+7cT6F*XfnpSlOsmuDkc5@kd%4>RxQ{G#uC1J#wG8>wUfsl zeb$0XH{Kcwwl4Pm(Fl9CB?-QTEq zJUn!Xl+j}B09*gcx$DzEwY#Hur6^9Ni~}EuvF}LPFa`iP13b5P($4Uh$NW|fp2TDA zGI__`VOtIeO)i40xu&q%)I>$h#3wZv;MCHP3dJW?`_x-p;HP1d6yPM~Xr4FOWb@O% zso9U~&rh50kLhqE7o1xtOoX9_?L1`MAiS7bw)(od&xVHP!0OdXuv@dfPCMm221I7M zLdW$>C`tR0=syT66zH#DEz0`iF7+$;56hcDOsZJDGdX)*QR8)z|6jQqU@-u9m&sq- z;G=A-&&Fdc^*KkN%RzBk#`pnjCZR1r@deudCzsmx8Qb2}g%r&7z~y`2WM5l)RyDwocN_F>NfSURXa!M%|H*D!7eO z>m2_vaE*w8L1`5OErj(0azDd}XmchWR&iQMLRu zgiDQ*Zt(M%+39)eo;b9R%P!6$?W z6zFnq6K3OG*_gb7>pfc!w0rI9VX#+ z4*&09BWO!r?b>Tl^KK02|i-k$;j;Dpt3*8u6DIYaB6Se!#xJmSh;ZAH*a;Vcz z1)sGam`6zVSAEQmrgUVRZmvC>p zfyB(u(exsZj-I5Yol*JY0o^H)@*^9ZV%@giMP)$|2o|+lKK4{paiINQ(suN9#Fvvk zV7wSt>CC`y?21I57@lqxZWmteie6z|u*7K0rTg;`GUT*#ThmaQw!W|)-Eh&xtO;<1CsqbWd zkr{k5CLdNH5QEsPbG5%diz zrPz%uO0B2KPzF9{2d@yV3=@h?z#yR*xi+dS9k0`F|L=0|N1;}JC6BT;_eez+!Bn-V ziOjn=_G#@zhfD@}xLhrxuKlbg)Eko(MF(7{08A@ttt1VRT2r3uK_q&Chc+vk!95Cn zhm|V3Xof~EYy)+psrVvqo~6~t^d7_7B=B7B&GI}UC(cRg0~;?Et8dtIoacz8*Qx;> z*gQ-~)}uomK#-V^|JH%+!nH))XAC-6qup=U4dO8ofdr+;CJF(#X>_&z$S`VWBlGMj4GXs5OIHq;eC*A2XjHOSIQFfqUMUcLe& z6(lEC0efudHeTiC?~#&cB?M;%{xeLWIZlqetX4_iUyI_8jQe7<-et&G(D8M6f7L4k zzl1$G=~~8pc+-CV5Fke!Cg%n5`;05m-2L2DE>0{MW>g}8+gyTXxciN_4zts+bpxqz z<8WV5D+niaO#U^u`uMf^TR?*yf~?QYW?|1s^Vw+YVB#V9@~`&6U5jbGe%|7Ii( zjBl@AxS}KbDZzBjoJ+W-aN=Lu+x^SJ9W^3Pp4-g^vJESguH`|&y)2$Y7H$7|OZAcY z)9p;L)m~G|_=1sFh6}1|tfG6cimEvnEc$37O}Ko&PyG1-93rtKET4SH`ff#Ozy;~B zAzpsn@+U&iE&ZNDN^nk$&YYi0pz%x5D1+dn&OEyO8r{2F30&g4zxgc}2hA1%V75(L z?OsoWl5_Xvp!un}>X zMvPQS71W-6{~nn)d4!xHD!pC%RyLfjSV*3TU`g{N`KlU#`miEU+FOOa-RU_{i8#uh z@hZ5M7SVj?^fb=0p&wE*A^T;;9e>t0$m!ntn?q-(`%+9NUxKHciff6XB23vDP21RoBO+eb zVE7{=2Th2-x{9GZ!7chl%7V+Q2nq1Qcz_qiz?=!S61}}0-^u{@5Na?e(jO@oT^Qvy z2C1}QWG0IMU5BiUUnZ#93s*YIcByNC@G_|!9lE8R_Y8TAsUi^ipmevY58GgTz9)H< znmF)G_s$^d+#gK?fi$-q_Jo4Djibbl9OYbDH{naz_By&;e)qxZyN+Z2i7WBcrclzk z4L8c4U{+uVzUD>S=9vCX5ziWMRws2$0+3%8+rwW7Z)LbL(51@GfN{V)4Oe1-FBdlS zH5ZQ-C+&$}H=)XDi1BymDx@MSjlu@)D$P==?hcT_majzGlW-`IL24{k+3KalY1;5$ z!#JMI19Q*wkY9*2YbLC%@?eIFLraBg8=Sv4R0PD<4sg2EIDfYuw1f6X691 z(Vtu-5J{#q?!(@`$X{2Om#`k@gl+k}pH8eP5nf4UEF&+?wYK zGPVFgeH`?wPTl}+0txc!dKI)As@g#QuPYBvCqui=$ijy5Bvyp+Ad)2xn3dLq4L2Ys zz69O168xjRguO2N^1KhvobyZ)Z%Yl+zcEEcTm@6LX4 zEA#hm943)$uI8kt>{D~k={FxL*7)^xsiJo&i#b@zjwbk|q@g&5V_^(T8xYia0noS% z**YjO0FDknzi6)%53&Tn%nj$@gtI0fj!|9vCB-M=Cr!0ex|7lPt1D|&IJx3a<1NNg zjn*9OnM?ARF-6kw>R!;fWF{2JlWuVt@TH^7DNMH}DXr1)ih4@Z5s!C8YFY&@f%j96 z{1tpeY@xBm^@pWHMmH-(I22C1?pkriw)}Q1K0uRP>^P;E%xrGyk)L1}@`1}XWfUv> zP4m+1@N0tP+f@x#_p()%-ODH0A>bR*aMvKIvpfF?PlC)Us6nH9L4m-DUVp7!*sn z0D+IiNQWvwcsg0?O!#B2-hBS+*W^NlQd%iqp;H<8i1-c$`H>qriV-9ObxbdIMHFQI zLuJaFk_{n~h(nQn56sd#b{5mW#gh zuHI{Z_}fFb8{C-iAy6a!eS5Vz>aKz>XOW}1jy0bv4nP#hbV3qFKIh5`9aaot)ezWK zxUbiu>$bKRciPuFF#$zV-^W}&*ON9A0rn4C@z)Pi>SKR7)YqdQyzvW&(*zP*=UwJp zkh>e=t{nA;qqV^L<5F|AcrnP`wQzOv%J=z?|7iiLiOJZpTIFR=BK%koiE@w&K;JI4 z2P!K?=*c|L1!FuWWiCt?2AXpTV5dRs&{z|-_0{=>`BA+pYE!IQYO{575A`-v;H)z( zoMRy^JOlEh_bsx7r3|htw(3^D2aZ~h7klw^5@P>uz@hP7rY9BQM@M2?n{7)i3nL@{ z@H-karw*QH_g2}RJm#%Iwk3ng=V{lHsl(xzt0`JnyD3S= z(Mdn~8q z?_~!!o?9bxTV$U0T_xQDgN;=O5oF8|{UPDm-VEI{CL~qY_cU^K^u}$?(U9h%_^Nk4 zIe+3 z2hF?vpOZ4xZxs}Kk~1+E1#YGQ@vJ{0XXZjEOi& znXm4Z8g7;i3!AWK!}Fy7K+B?p-ByU>&>sD)D+MD+8wUQ#?k>Kq;c$ysNl5`4tQD77RcQv2awa?MSE%vxHs>w;YaGje9MrRC0U zB9#vm&;@uxhW}=D-%x@P3{h#d{~?*$Apa)rNbp474Z+k>xw9wnV>4&?^ z9kCN2qqWeA%6C9&)2?CeN)`7s;7v&>cqCZ%nI@;S3v1*%{#&x5Iqi;=dDRj~ z{=e_hFWxo(@G)_)@Z83*lz?spG+Aov7HurV5dRHb)sb1kQvaE-Qs=U|+%|xRfsM>1 zQ$H(tmDdQ^Jck76knvtjW7Gm||LuWM{dV(Jd?sMoT*ELSA`-KQz8w1HMx-%9%f9!v^+N`+MIH#)5GUJ#AF23jFy z#x!a;m9bzn#Bg#xB3Xtb?lnnf_kvGbtXuUyf3*D7{vRDlUWUz&<2<)ljTZt}J@jNV z03bwkK?H+M@woq%HsI23)GRq3RH4Kk7o#w>t!pjF;MPn) z<=MK8SKDR=Yoni!j8PJy`i+g^U7JG|E6Q}g&G}yL9sEC{zA~Vy?+cbrl@95Y77zjH z78U94Qo7;NjYy}`(jr~b-QC^Y-Cb{AfA9a^S3l@Ip0oE_Yi8CAA_&_EY-N5XJB>^C zWLl{U#{;;yeA1qc_b{Z3wWs!XUCFr#Lol~~6RvNU2qD+wiZ$_XydqhW$h0khKERE^D4R6p<N*tTR2vZ zwx5}&3%iJ@dE^rjmyVV3km)#wpXS$gjq}M1jD6jwio=xDrZ*+EOx&f6_fudpTrY{M zl3}Lkej}prPA(^>0MeN!VXaU^%g?cT%YUhH5$}H4N6vR~FdL171$hmsiXyGWivIZh zC}k~D;gd%Z2MjL{A7_Kq6bvGGzd4{$5Xfd+X%k>&nRlyAC9e;Eq3kiB!LtsM+fa^u zp~{}3-?3<{jFG_5%Ia3Y1;y6|l+#b`zp*_U`1L=pt6A9@4c^f48F0bH=kk&x-&x7C)F4HO(#@Yk`mvMseLw! zF#r6O5@UPx#nF*YAg!-|I&NovfOS$$yTXYqRALwmrvv%3d2{|H0>QNt%vpP-DxrC2 zUj;U^jRfJB@2VCxG;BID@@;|?MS9@;H6D*(S~e|o(mSxVFa<`>p=noSY`H^a$bP(tOr;dEZdEEjw1+$4s9R@85s3EdjXmS zGw!A8U*aVKt~Rm$S;h;|yN8)o7amA)#BHNL3&H=GueuC~hRX>v zC`bhNEnsck7~0_`gG(zna-8Qkfil{v#)BM=FRcv12Rex+9i^KzV1_XP*>3iqztB|omU6_Z!Dcp= z%@d`xy^Z(RY>ZN8jXs*A&g{E}CxCJ9fMA-jnA^@mzK7FB68CkaR;qNtP$X-A*|N!S z?&)3D>w)aNNzS>H3q;hz(Ejhap!e^b6>tElD0UrlWzx6#Yj*C)ev2IE`M7WSzo#pA zBAECw5p&wvyfczfm9v=gcY909Lx#Uybr&C z6LE{`NogstG6wgJz)dv*`QuzJ0mU^S3RaD1P!qm*g$L8zmy2<}Q@@N@+O?U<#X7sbiMi7BRlXuFmdUE~LHQj1zR+ zWcc@Zo%@~y8M_KKK^%F2@W`CtuSit7iyy-b-aGqI#rkeQj$nbL7Ca;ngGD7P#wF%fh1FgBk}ViAclD4ZxademaGY&fty5A z($mhBX#6eOe6ga!x zIeAD__26}#Vyi^BlJR-Ih5$F>1v-t^cby;3%sX3w~nn}1$CA*VHM zzG*vz>fMx$u%nVy|L-G89c?B|%m=OcMJ1Whl{q6)1!#4dFk)$b*rtX4zqPiixi>B< zW|Z^6)+&-UDwJG9eOqEkcHLm!FZwF$n9$nMsP!+xzZRSRywDhCe0z0c&iY14*Du}~PZt*Eob&!ZeGa;?;osr) z)B_(UbU!{`2LoLq=7uM8NQ?`}?I&)OTanH zdg^sz>a+vdq;Jdl^{M^UhWGW}M~uf6Dz7KEPXvWPf02ap{T#l$RBo!*Fyy=A2PT^I zTd~(1{W6~)S-b z`p#B#Dl%oNh8}(yJ`=N?@~cBORuDg7BP$6Lz6iR5^g1 zVxL`+qvS?P>r;oB$PcO765QUuP7>+$d?}6h3UkH<1exKr>?UxuX^m5fD(U#H>LEOx z9`-VA>eAP~5D~|HgMV5eEVKjMWeG)OMc2RTUO;C?rjIm8pJg|txRUNfpgd2EmoYTF zjNQHo&Iy6ghLomK97MPwLxug$n>25~(@}{s6QsE{s!g8=QZ!V@+eZZiYEUr&U#zK& ztl#iT9maDSadgaMSm-&WOp~*M4jy%#v2@G=gI3z5N{540pH&Nfk0dRiqDrXR;GM;> zKD6#|LxF(cH$ag6ot9rnd?8*Ve+ucy$>n|~C^tK8H)l>wi%&bIhQaR4AUj_J7bEPe zr7S^OFP2ZbnKc|y->MGc;(*8Lbscow+CS_cKoPfx2RefOD2=l81AFCg7V0@mM#ma9fQlq__26HmYfDABN+1(G$(yTLJSdMTsmG$Vd zdhY-E&)bu1=ns-01*|u_*X>~%eRys7$O{jVNVeuHzEGR5wnmi$sok%09fGtdhaCUc zeAl>4U^++GD-3-(>k7Z%uH@u7g@{~Y6!nYlS3eK$Bpq3_eUhV8NRSYiv%^)V3p=gjUalUfTzF}kiJ30}c=r9wQV=~3#4imW8?3ys@)?Ve zeV3QCZm&@tDZm+_el7Ch`A6rVfD$PWS1por^feo`XKZfvrwlMni?`IK|EXI5AgAps zX{E!7V72SzI%{mpI&%|N&5m)M0PkTnq-neiua;EwLJ z(X)E~YBVIIZ-j5@qxi-Ls*BLTD(fz8uHavv;@0NqTSv`gVcbCGdQ}#x&&3`#QeI@3 z$G)XY>#h_IQOiLKZfof|#rm1R)vqd)-3KT}%X5WhVnCQ%7@KE2hH8GA(YfjP-O#RH#)f`fmG^9}P?-K5IwBb0TYYKsJ7AKoNRA28O>JJij-_PYMCXjF?m za(4qM;MQA@+{0waY6ZhUV4m|TYN^mg)sG>x<1?^*7Dh*SDc*=h548AF@sKd`!`?>Q z8ITAOj@Qo`W=@Z<7Zd>VDo%Kr_x-PAp(n|y0NtmJOyHj>heKl%osUu3H4xK^K~R`d zc>d6T+Da;XRmFjWRUtk|OvELJ@_UfuJnwG>^@=N&N*UnB0XS6$(m_tO;gy*#AZ>7! zj_q%}M>bl@1+e=3*PAG z#M&ts)jy>;b63)@3JC2b3I#w&wLG0dKHYuH{D!#GCUhluSqvlVCbl|8Jo?fP<`F1A zW|OE1ik*UP1Fna%E;j95sgCvnm^^gHsiIg(%#B}BnMH~3GB^i$z`$r9(b8sc>e8T$ zjeg6r&YX&SrQ~n1pBa^fiu}WIQIVwBqfRC2m;6m(uMjI0l^N8n#8EcKXOVY_L8>GI zF9aU$-A#KK{1IXAg+ksi@#8i>vk1P2%J#$^a26k7eqbFf6 z$SoY0)S-&67ofco#|qA}T>YR=4vStwW!+A5Sc*?|kE<(H$mnVm;;&oin5yLHg4Eo| z1?cig^*zsuh4=Ex0{&`zm2F0p_<09L&`$iYL#?(Z0*q7|=%vxVdjdLyU@Aa)yq0Qm zI0E$w9MSJ|mAOVcINY+iA0qZh4&D%6AK60o=cZnz_;n}D9u{g!?vPUh9pOLfgPJFs zNR%%{b$E&I2qWyc)!@rELMZnxuSCB3M=+KE4J6tzF6^+6SIH z9UV80U#T+iKmAD&rIL5af>-u2upAdtu5{@1ExiMF@}Z=s<=vSkkaZnM9}XH+PQ?k(n3%+si(*d-Zmv#G_GRt%yn{a56s+5)&3Rl;nYhnhD1;`9NhUc9k8Y z0hadNkF&%nBQ1;~bF?KHPq#sI?T4PKR8)DY^Q^84KO8)6C)ssJ*!`a)KitEn-DcZq zd_C;E*n+vg9Xx`H?(#)_6le|gO@ML3d&w#n2lnAc6{ zm+HGD^CAZuFq%Wa)nizT?<$jH{QMdt>#Nb(Ww)8UQ2pG40@I9oj>=)YnD|KKdCL3V zIppoxXrGGMD+^rxi86kD)2Ok_4b+NR!OIf<6)PzmxV@7BKrT-i1QF?(QRHUtzJ6y8 z%f30J`*^MH_zCzPW2HD}C8||m)D8~Ict||mX_2VoVyLAUMsLLood&^>>=+Qk`f-G$uEj7@ zP^wPp@xGN3&;(+#>dUof7utsWxZnFQ-^ahIzSm>gV6NRfeY768TRLA&o+|`A9ZTHV z_e;wn)Eq|4nA##yYoJ!K4ja8JQmb=phZ_zCQB##gYI}Eb6H(>T<3gpIINcXMv}Zsm z4NhSJ^=r>jvWK2_L3C1k(oF4II3}cP?-0Wwt%e&aC9i|S=akG2xw`&vSswsgV`ra7 zY4dIKr;tmArhumjJL5Qq?)Nn6*?Tucw;rg7lD_6V{#xjPTX86FTgWMyHvE>KuL|?n zUQHSGv)$7$pZ`vcVNoU~geKp3-|SF(ECv9%pPmJB+RY&Jer?bYPlMveVKv9WuT)uO zN${?wS`8WG%&orq=_+*;k;mdH)2P}@I?F`R&wi#lc^e(%VeU2SY&CHq$~-=Um0up8 z7fu%tc2McmK5Jql=b70Fs!N?yheBH44=2U%T%p|B9)(XphDz^XZ~-*9t8}w7 zrwUFc`jT_HmlOF{H1}g_f|xC8DwB=gep{d8QuC;w0+0SG*G8~Xq8hsedteFyg9auQfjNu4K>v$yHRY?nz_3<9mD%rotwGQTpO`7wo;g=hSZ-># z?{U+$hyJER&?e;F0kk!c?C7`R`GOB*^kMh1LX%bW#Jp~aBa{)BPGa&k;-@GDvE}am zT#I1}uiY;-PENQod66H5-)Ej(71_eMEdG1LryX9iW8bI{4sO<7QMwKbH=6ncfRT&i ztFIi&HSP%s^JvI8|dV}?HVpG!7Jv@p&oR& z4+^EA?+X=PJSOlt8NocOV8h0$(0Ft4tbV+)*NGlFaFsDl-m19m1S;3ormM^ikO6{c zFOc(Rd&aj_9+_8JRa+R)Vz-L`_K)(SQ&J=;UWwunxs7gV%6eZ_-c_skO_iOYKT&8* z#X}j_Qr6nqeCK1mNk_<)q_JSKw0P6+6sUaVb@XS!{|bq~#SclV`|+jEo|-=3&JN0i z#Xvvv*~49ldnsg~(sTz10P*A=q^sG9d(N?#O@%bKKV5jI;lf9@$uva>xAbb>cnm`K zzORh_WQQv^UCV@ZtDg^U>|2k!ddW+?iQ}8^1qwnt9&6|6ZP(HtA1YQSqeYov!dPSj zqcie|QoE{{O{+oYj*oAUC0^{1wEX+boB*x@|7mxlE24-O?C^|ZRU=R;UouEj4VM)e zmXEdQU68%Y@vZf^=#&a<&&HM_V9Rw^bWlPiht6H^-q`1{B9&P*jp&QWE;{h0=o$HL5-qeW|&pkRPZ0F_aTmednX8 zj5qPA@7gjl8Ww;Z>ASO|-`uoQXqQccB#VLoxV=!i_%;v3q!3fsd%Pi4g;c&kQz{I3v*Si1YTTc(I;n8j}g7LUEGRTshMu`#O(d#_O!p{Wg4_8d{kYFr?W zBX}j3g58czLwA|fVpxe5#yBoGtE7j&yQB&{{yUU=8p$4}6>iR`!hmwL9k+Hc<$5W< za`Hbd!1k{z*RW5?{H}l4_{d@OCWPec)CF+9*vB=b^naX^&luF;LC--{6$NVncTW#< zbWIN-*{r~%pzf|);$pD`XKhqutA0-3i1S?%#(DPM3@}>L8Yml1rtekA&7P3jpR3p3 zs#y}i1CKx5eEMwwsL+VCQ`k`58oJQCPKWSs=i)rqpzi(R;>q8v>vIeGQ+4>#Bg1Q_ z*){0LFHn<>AI+O!8O31sm4eqbRP^wn&mIo*S65n>g8^GeKK7PyAifvuOa+2q&@G-s<=`Fu*YoVKbt%t_#O9Hp2l>7uDkVpRNv+IC6^&3wFZV9~irjHnw&yE@UMF zhq^Dp;_=&er;EcVm5k~tHc7Lwub9gszW)<}mV}Ru5KH02YNnLjeh0cV+^Bh*+3y); zslogYr*wl}BT#j&OdA|CqZF;}BIJ7|_6LoNfH{xp1gB!p=glLIN9+{1v4kfyj!=w$CfchkB04|EfMmTD;t8sQLw_YD#w? z9ndb4$Va{u(i&PN5FZzBxnD&E?L)?Pk2HAJ0eaBKi^8XBUnF)T*Z0IMtKxo`s={Xd%LG>WdQqKcN_)J;<8pjPXmR;5T1AMW;suB6cy71 z6se8VQACd;J0ZV#u5y`>_gp^bJT!*n8hWR~!P)G4d^QTf*eHB-Ucf-`{^Dr*Lawrk zE|~tu2Z7Ao_QpDH3!a)L$VcEDJ%;}rSOI`;VFf7FXN)u@nNccPWpjd8ZALHC4jnZM zDTcf@;s$|-60pRR0j@u@yAezKINR)?TJ(r{|6G-vbscW@q^>K!kI;0B9OV!JdeHBT z06fVif|oSXfgrHdm(wrzXUmA8Xm_)y*v{MhIsi+39k_i}aW3en)`VGmicX&gi-l{A;0U z8mY!6>s-QnyUaObd;+7y1dw0ANS8^yA-h*c->xxd17=T%R{Au3J0s}rty^`Zh)9d5 zMMAns;qUmMl@9U-qzB>moG-fsj-Lcm-(C_tz{1YfuCK1gXYCulw9j}1i+Pw>9l>B&)-V}H z;F)@v(foTXK$`ag0!4+!)AdYuAXAj9%>i9j1}tBg$sox-jL>TpS4YxgyIR?uvu6kI zK^Nxjc!rKrRR2ae7Y{yGg%sn(&sPd}c{(~)3Y3#zn4T+o_f{z|>w>^wVZn+e752|v z^yPXi9E;PMQ{!ph*4A#)Gb}7l#a0LmTGWyU-*a7xz6fKFhh4C<);2Js z=?@n_OmM99A6H;#tMFwUt8%?)Aa9fTkhsCn%?+6^kN0iwGacNqV5+geZHLq(qBd7+%O5nmi#@Png_Ho>v%=^g%X zYK2VCzBiOxdEdY-v&mGV{*6{+LxvB`YC#rDMZGObUkhJLl`E9LL1x@BQ|{`(tl<5n z!u}jTi!09kWscZx@XVZx-Z%=EQ^!L%4O<@PL1FeS)bN*4b;#4OnhD zcjRv84W_Zs*VgvMPu!mv`i?C;X0oE(Dcbkv>C#n`3UYO66`s57wW^LHZJ*U9-Mb{kp>T?J4 zb;NRy-{vu*2&3t-PjUuA6$&>GuMfMbBVBNNbOnFo)38rnR$`L`*ys_O+;NWR4`j7& zVh#RkS#t#*nXStH$y+gVDuET1JGb?YLM;m{w=$ph6L>Ed8T(Rn?^!^oP+-oO2C4j4 z*&Nt@9&k_(7{9RmH9k;^5nUb-Cg?YU|Rf!TcT(%{r`IkUqb%5uk(*b=8t<1!4t^H2RGr^3RrqD0v~v@-V3oQol-9zIcAL zAsVdoGKjun$t-75-@_{kH(t{C-q%BL`<@cG5{ZNSmY-L5Yl>40uw zWPsTK`A3KE2g0JVq++jwxT6P6==W>#9MHCj87WSr=?l>?*!U5Zd(M+cai=vC7^+RG zJ9KD_OSq)Ut^eqU@cv)BC>nOEBa@D`j85lZ^JyJ-iA#{$5RWN^Qz9;qrj?$1##aXbJn zFv+tU0yo>^iXD7NBcDYSpVa3cq1nBxa}}c#pKAFY45xK`LFp@twUvN5nph22GY`ni zVw$XEBA)#q$qW_{vLZu`mp&2;{I#_RpiX5w^*UnKp{Alz1)$jWV+02>OZl3hiyd1k zG2(C~jx3IK!(BMz<-xs7fZ$8U?)QW#v@l;28 zF6?A?9PGi81FSi{p7kb>q5Ka8EJE>owNnq6@^>F=_s(`{ z1JYE|DjUx(E`TD|gHW@Vz)-nKqcj`3^ri9I*Wc%xSN$c6hGgO6Vw|8Y0677?VuFKS zf`VwyS9FI5bDsN@;z-(e`)Kd)ewb>ph&`2&f7?VV$Xsiu?f{94((-h7@Agon3s3ys zf#=-Q7DF~DL*csxRjmhe$ls}7H65?=eGm2cfH&hx_CqFykjx#W(|ri~&XnSR^#IKp zyns&>SP%^?{r0<75Zv3A|Gv$91~u=@M_ad!Chn~{ugPHyucV6&Y`czTKEH%P}<>i@e&KsQsxHty`xu8yG?a6;P`3!>se~p?JCA0i|-%q zadmxu1B0zHS9!l&*mtA@doJnZE;bjFHj{@CvHr^ph4lY6d-~=aF+%PLiJxo3ML7TF zu5+Svwq9}PN+VQ-9Fg4rfi~{8T%0c3qdsCd|F&Uh!^JD;Xm2N|)@`{XuS#FQ?aR_;1+ahCH7-I&#<^90S*faO$BXI0zYL-GbO*q!pmPpFRubd$8c zd-r|Ds!#!YK>qQg#){%4!b&yYBN{b&=Tk@y(f9vQtqo#Z@Kn#^|6d1A;E9`oVvuWprJ z&Ig=jG9*HG?Sq0c^_AFe8;Zf5(RfLvR0;$TIc$j&TQU6tRfs4J->NXreR1F{1b2A)dSB_A`qtSstz}?L*^dt7LIbBT*$2j%+#U92$LbWv zBtO5*-jR_LMD_%-pKsI*ky?NjL2YOJ8=Ri0S!;~q^CB-o5p3bSjZ7I2#R~ zZnHWMMdPmtzf?jmxzzX^H~z(i<)`70(MA3vR6NrwK0@QR+#PGEOk(^+u*mt8`jEJA z-NljRb9jf%P|wVqQ^zUwXbLaAtI3^gT?eprcQ7q_A`_PJ@}xf2fm4-wU}HSAi?%eiOVxIQ3a32k>F@Mu)fWvdL*arLfQZb+O5n!n4W5 zQObqX8BDMVtbknYd@fH#zdv+ZP1KVEmS4gIQm)=2DPqjRbUr}_JB7t@b@#m|ij)vv z*$+dW5jge}RKbRsrq;tY+}{$%!Jb=G|F+L^;!=8)<5wnp$KItZF&r)NV|d35FRFx% zx3=dZOn?OMMK}9if+K4qT$(P3LnF`vkf0f|?tN6UAq?1&luWz``D&}_|JnKq_Jm(W z5354Q*!k-|&lF|!>o<$_dl5f($YRGZYaP#XjP-dQ^kO=~BRf zen+`)5y0+DjIzFl_~FqYcxgGI8Nfx^o_dO-6Wb za0zWlXa2OA{6-hH#R9MKSxu$8?k9?hg#NFA7LKItoaj&s$_y234?@QM=@A-_3@07@ zgl`#O7N+SA+pp&GS`7uaswG|Z+s&J~?^<0S%DXxE{EjDqDSu zC;B&`>Eo{ZF{Ln(>)2!14sy&waUixhBEi?QO_mT<5{DI%rvcvV4xqGmX!m6nkW*DH z*aVz{ibDssNfU$2%b1p64(_4SBB{8iaS&lbr9sZ8SHW=607OL9k&0Ltv%%`=Ggzn7eNLb$Sc2r~Wbg=Q>DC#ymG4$4-~4UK}^+Su=0(m8`}ctb60g_au5^r`1= z@TOS7VhLX<+fy6l`&%4}qkPXPNcivW!&y%ZZ*zd=R3wY8yndcx&TeA=bKMpOP9>6S zh>y&9yRZIahLZE|R;Pq(_^0o!iDmXJvgSBw&+z|{(_|n-g%5U7{P|M5MXXAJ`}aQd z={;#_A_xc{4OfHH1G{Lwp?kW@3&Gb77nr^;g1(<)h0uHN1aqj3GFn-{1H{&Cshy@$ioBzR*z6f5`G772De1%m=}Tr)t|OgZ2> zv52}1Sg(&!d~CeF2=3UFpOUsu)dKdOeI#(LXRS(5I=8MK94-o9b_;-&5mL*|Kf643 z$9*v2s7y{yY(%49Dh`VNUAAT}x1&*3Hxb=Yq{bxp%n~>;%@geH1ZF9KUWS+{7G&I+ zQNjr8zNZT{3%KjdddE4(>ZLS;BL;M-CqEqPZVEX_GZwdNl~))h^d~rik4!H;TSZrj zTiHx{112wk_>6yIa)(jJUnOgI&p~;Uon`*7vED=&9j}MlYUr(4MM(U9`IOrHQ z8>!);CJrpRBsEYY`_LN&iotP|3N<~h;1>vPM?*3g;#l!u@i7oxLp!81? zJuAps2sb{{0U$+mlu1h|ybFt{C;xg_4&&tmy03BCkn|O=oN~AkW-0z+liNv4n*?+r zHs=j+yWn{ACPA>!9Hc94c-KTKTvoR)z7^iU4xc9BbP1xcQu6juDkvI_`H8h0l&R+V z*{~pv&uO+QEX~dAXY##Y04*mnnv2U}mlF`Y0-&B$yP zT!|2=QF(*5KYx+FY%O@$${W~`qn)JU;BHDPMwIt;xN?^covGSfGsjb2xLysD*kx?j zaMmluL^l~c|3-{!fXc?R98elBs9gBauK2WHc~lFX8DrLPza6Yoa%PNH(ka)rZl@R> zQOC1-b|S4rytT$)N{T2tv!N>AIrj}p)F^4(L7bvhpbyC0mkYvI;^!uX~}4Kaqz<&I3itMg}c*1f!#d#dKFRg z+X(`U2RvJ@DuskCbBXmy+pDGAaBu7HCXhgkD1)2^*krmU(B|~wgrVP`HC?&uOTh?t zeu47p?bcP%g+?VcRv*x+Q3WWSloEYXS5=%u~*hK1t=qRcVDA*FWBr7u|LH77h1g(>jm&-c0n%bNgah=rvbfT(uReuhyK zzTA6xb3+RAcVJ%9*7I>pp73oBfReR~40O}V10{eDsYWU4Qfg?Wm1Upru=r_xHg4;b zc~tk!s?h9UNC8;mM;rk%^`ghM_)K}jvhSMtE+1#Lt(LY$VA8=DY}tuBqzxRW18K@S z=g}x^lBo-o&IPAl&i0OErev_ei7%_UX|dot4j_!kj-PzC?w&@`VV_>;_rR22%UMRa zMUsTk%e_oFtD7)%g6Fp%W1?kpJ|+Y-TtQeix<~?MLkPgl0IIl=PA6CfaZlQ zHgLavIR%>|@p!!&Sy2nLRI0Abhi0d*eM7pIO3=nfR9yU4f4AqB2s2>)>+0%*3-Kqe ze{)|~Fz&xRPzl=N5bt9+&KtOM=;95_So^ z3OZ>EUqDA-1VXZ{MMZ+axDY!lx#=ZO%KXKiG3-VXhrH+qr=u#pFJ3!S4l5p__(MLg z8!Ro3@$1y&lrQIVnXT&9b@vL&)absdS{bKfnxDY3$21+W9+=xEcUTI$(I#T*m9JWI z2ElCIOF#U}1{PN$c5F7odAY4W^-`;cu|3DbjpIuGSJIObt~jSdlSX!ooB^*Wi-yaT zJ7P$O2A+r%zO;09KAP^JhPZ&hn!IkR592!nq4CW(s+7!)jI?MnKv{u{4Ei`OP408B z2K_O5iLW(jK2T#|R?N|L69OKZne8!#@U710t&(ZS?Isc-xq&^A3XVtt0CcEhChT|2 zZ2RTSPV9SZyy^@YSVYF+4D7Z&$Jp1|Tj>Z_V?@_3Wo)>WmzQK#_uSDhl+nl0jzk6s<7YL%nqGv*Pz;!er&QhmW(G0Kq zX!m|%Ke*+YS1GBnaWKaF;D!tSp_oWEUjoogX0&e~c)?NOY0qh>1k#29_U?Zt_M0ek z=7@8X>U>!NO#ev9q~~f62Fc2}pSU<`XC23!cWRq{PPt{Nwk$3eHL7R|-3~`vB$-%zZZO!1e=Xmv_A21Syf)ec`>JoNU>G!uA&Szoh6Hql4ygxKhm<*#~mG11-*Y>m3uTM zNt9(nP3O?DUskND-wpne9{O70{J5UW-;2*t zsh*u5V>xLUmRzJ&FJspKxx^4Tq&S*tO(63(q zf!YZs9+;lyG;CKM&t4qW%0%hiuo>#ukx~^Z#gLY0P_RwI8~!xBAjIe&Ob}k0%bTJS zVz=Vf2@W(!Z+cSqzeSf&;?|H?*0*(SO(Kvc;t|lN<~0!E+6|5&aAQU$_Ivs5ZExU} zb-0I#R|^CisJTFbbC#CX;XDhz4zS5r{f_QW2_wx!LEk?>Hou|5+L7 zYj*x0`a`mwye{JCAHtNy)1N(!nHz0avoMJ~=Ak1%?MFO}5GZ^RW#orqRrlQjB}FJF z@XLcpasJxg$oW1Wun0Dz8>vAbTcj`^%~#%bQA~&o^Gy13etgtadbg3f=++B~EU(?l zTslF|;9GOWAIh3(c8nMb5Q@MT;Cc0I;v1OU>48*{=lp!(@9zGQ0amP%r-5@RH9i7n z_oxsze^tGTQ+`Jni=_zD5pdd?$CC=x*|}=foWz(RGN>1FU-ghw!;}^O3AgVZfD=$|BX z$Co}}lRp;5V?|cZ9p-*ZwT%0l$shA*RqI+L-$Wf^=4o(G<2(>VkL6%_s*DzX9%crn02nSOO zZAce%`g|_y&acbFvcE9abewASW4JT)3KBR2yJ21t9r$kmjRy^p^^3+Mjx930Ww2#2 zTA-TQI?cPaY05J;XaC_%!jT!_B2-K}hk5=juE?FE%wzAWIy_n&zj^}gHE~BIn09_M zUcp~egO;i{=cWJYH$?`#?wZ_XNwE;W!g*`YQ(oY+iY?skhOO=4#^koA6`z7x`#wAG z6n{=HDDbs~;Z9VADkH-mjVh+t*!%o14HdNpF*|`1roM)avu(sA@6S+03Ge5!7q2#( zA-I68e)cHx%Rqvq`f05t{Xk!z!@KB}rRU>l5DvWB{Y%D%G8QaGlwa|Nd2hB`Gtj** z%f^%y7f|q?U&>Aw89mS|P&2UUpLx#V9~Q}4vbP&T=|p)Rux|*CuJwLWnjS$nTajV)IF5vL-JG+P-EPy2+>;}Jh|c8b9|=|3 zkXU@}4yoJVqFCP`T(mmJ(lj~-_a{@lF|bh09OQy_v;d@}&%h)PdLKYKYs<3!+|(~{ z{2C^xIMAPf zuV(g^XI_1F&mIcCiGdRafM4=4l650J^=DKcjZc94xr*23_9( z>zDgFt*nymJn<4k$={xp8$mg)jHkf^MlRW_iOgXBr3%iKB%9}au?zxFe=m4zIL7As z23{wmOYgrD8`nrUp3jQY4*0-mULQp`e*eemx&=O_iAae-qy#Jrze@%GOBRKwW7t#+FFN>b`&$#c2VG_#jRqlLK*v$wVhGDSSo|tecE!u$m-olMh^e^ zKjc6XAP1eRsN-*W^HTb?XH{qJ2X@L08>>-;tvM$@@J};**o*IN5Zs2A@|Oo1PQFCjy6;oYHozWWme4; zFb%_XuNgZf*tWrBxqcO~$mOxq%kNzex{w2^THeMU@`WAV_X-DP?`2=2JDQmxP29oW zN9_@s{yi#7Jp03Hp@_3oW?YC1w|J9#46ib>wCmyKFG{c9&8?eJ-S?$2?dCqXb)tic z8Iid}sene|#%)glD^{gqadrIL-*-+yi|$_zVz_#%)V^h*Kh@Tx(79H2P5V`T&nWF2 zTXMU7Z~_k6h=8Tmf#bcFtFZHDa#P~m;th}zkRJwbGy8QiZv|=T-Ary8r-DTtU7->b z=UZFa$-Bwt)P=MJX99KVbxRQSqF8;G{=H?NSMkJ*)}2v}GhaWMf4PomOy zf%h^a1dLwtDC%Bi4o-p~p+uf|I=6_o-Z=lJu+1TooyXf$NjJQe(s;iFLRSIs#~E;@`*s{betq3fMT=1FgnI60 z-I8&!ESba?ue6tQMLIhPzh()70sv5*QV$nWlvrG;2R4QI_Ycl~rLL?`+t53-I<6y4 zdUAeL5;_7RcdWvrk*2yeJecC@!6-*~qVoDo(a{Zzef=)B41DyV6d|DDQ}AybvhNt6 znzp|dYATr(zb%Dv+$ly}^9jm!7Ik^f5b!v(iyzbGsu6F-|y zoOBH5HNJte(~eOoX8y}D9LM<8oo6LAiTnfUXGoh%%jp3HdoUMsJAr;3cz!**5(~=STykZEvR+iJ05NN|M`9Vkgfc? z4HEhehZ6*h_yh(rQa&wsnA+D$W^W&O|AH3Jw(~2}*w81cz?`qGdq3{dL~XZqj8lc9P_veK+j`Ar2wkxANs}6OTbTR1&1KWGoN) z8HXy+epXJ5ax!d!NHuWdrNE5gxp2kHL=kb%yB>^r&rTrgp)yMe-GdodO9&GJkMHg7dMsq~;i*}0L8JsU6oAL8DWY3@8~c*i^O(xPK`<&X4_%1pln zENo#PRST}Fx?PMxO9@syFS{=EYpAD3pb0hAB}d*V2+01xv-9(KI@Fa<8~G!)*VSdv zYN;X=B6%L<^c#k92StoJ_;8UgXKYy!pr#3CbSpC< zQ-;T}3Efz?i~brZ_OtP#OW=Ff2xJMb9bDGHHN9*ld8`plmU#kk^j9_WLRgk2FT}(i zzsLD8?OM@#N8R!out>|QEx3k^;VjmhD78#bEALDk2WQVB=e#336EX23U3M{|$|yI4 zRSEtgz3JWRT4Z1SRtbeqf_;AbKqf5gsbjfUgi0`#GyZeU* ziDeK!;#$wlZ$FNFU=>&A?X)8ol6$70iM!#5QvSNdL z2~Pf#QjbFLj2*kX#;*=03mYyDA~i(W@F1JWU`7!b$+fZS!T}#CmOP%4Abbn>!w+>j znOjBqZ`aCH&AwtB3Xo{OWMYhj0CKkCy791}(l(tEWbQxae|+cL-M9b=zrUVl@F#<2l=R{(*FLk{oA|4U^cuKNoHE7z zAF94GtmFo>(r z{2=H3=&*!c{S>uKiTdFPl_oM{%n@VC4ou1(nM)#TbW$-jba-v!T#f8Njd8+ZxCisb3^OMU(^-4=2m(Dso~%eHa0ck?nl z>3!>z%8)j`Y*I7~!7<$C=MM^^OX2Cyj$9!U9mFK+=K;oK@Jt5mES%4zJ`AzgycrM< zc1DXxqTT1N-NYjrNrZ9dmFo{rz>Ilnb5cRg1RRpIy#uZ-%r8xlaBF&g9;f}=Ki52p zvldO~;w$NoINsi^-59JBKH`^?W4NT}-Jbh7^BcU^&p+J(54ET^>J>1O82apFx{+38 zxpK&aNapI$hg{+;piiIpiO+7j_Ox7JUUW!zBUT`wacLDfR>9PhZ)yeC)>Fh$yUP?! zqnU?KbvHhLDliQy8J485O@@cu#?LU8JADTsr0Quj2bvY@1E-c#UmJQ39gD7w?u#*8 zwI=y^D~19+8}K$wdZsr_HLJTIoY+}#*P41sU#o8i&Hzjc(12#29h!zos_t}l#0(5< zGHdx9Kkbf{owsaHS&n5Cj(%Y#(5?2F%P4&DM4O1%Z0@_hG_IqQp3hO)E&UIpiT8{W zhpkFCoN|EY&r28vl?06IG~5zS+Hl@!XC%Rc$6;u*0Z(R@JGu#VH>9W&IY7lKYx-yU zk|!`dhGq4gJA{LvBg66b-j3?p716Gw5+dq#+XvKrFjK41u`6-xvDQC`3EZgVll2}t zR#Y*Jnz;oT1>30Qg3BJI2uLw|!xKJUXET_KXES|Y!Aze~A7!i@9}!)_E_Ixr+D+N* ziA`>2^H(&{?0N>iO4KTvNmZ1f%n)ks0rHC01a^^hFCGS(yt$;Lw?`_cmf@=4UW}J?&!<}GUnSf)Kl&~! z?v%r;je4F6v>>0?p_UCb{bn7<4N(LPu{sp!&(7m^vn>@+MBCGt8Poz0^$ejUaf;IqjOtd3HlD#+3 zFJ6>y8^g!G2ejf!)HQMpf4l>C(N+=Y$=*QM;#2lZ-~NUdRnx7{&!U;!W-V#$lo2p| z6Jt}bo&T)dTC#`@xA{+Kk6{fZ>Rq^v_u*mOzg+2NoA)G#|6`?qwW7un2st$Y-Pl|; zPd8Vl>-%eq?_M_Qc2_Q=frXR%oF&>Z_`m6xAqogBi7&a_7D3S0<8%J=>?2&go+Az;F5 zIXnowUdWWpbWf{W5tgoyIA3NBf*??4#FT;2%4v_7kPe40jC9XAZv=rR$m?QFaf$TK9jrW3eNcYLTnZ2S12N5 za?`m%x-c+82jG{9txKymui&Hk+e*V`lrt$8VR(TuOYexl+07}v+rznD=0SNVbgQ%e z2~LseE&S7M{y_V=kUuH)d$+n>0N?*stBx_Tq!TOxrMhLApd8>d6|k{F~q1 zniya3c7AyA?q4bUC#zGZRKb#K`5X)b^nW1fDjt;tTFKfPuN-%~PrB@`!~W@p0HQ5^ zFIo1Q{Cfz2^BxHh$1o|OHS({X8Iju;yykgWEVg+J8PGFjkz3Ty+gUj~@7<+*K=YP5cY*o{riL4NkWqRddNy_mr;(6S_OUvgjVOB0y7~SZZ^nAkf<&=Ksh{XLk{Ln;yKt z_W&Tx>388DM3DJ^Qp^A=fTtNX>HHtqbv=Q5Tb3eCt=Pv=$A}*!|A1`+MkIps?NK)s zcB%5XsX*A+_dl3V2@XErHN}2!*CkA+)h)!j2wp(1$SdFuZZ>{?w3 z=!H|Rh$uj&-R5i;EZWoXCLN@IqPkfsbd+9uWJ5#LChTvazFLQZ`LK6(UL<@WExnryr`qSdZiARHkeg-6g@&MolgA z9T`lM7S2NNNka!Nv1l!-#}~V9l_))rZxO=wt56n_JUz+f_*lckLb_;p0!)>Ar7HIC z6ALArRee|WhbdQ5557BO7Qf`e3W2SjN`xzp&>fQXedAx0_qqWZ%xpBOk5e9WVAa+= z0pzik1@Hkz!WogInhO}JccCWU=Ow*UuEqeWhlAkad+cpz#v2ASoY+W0Z(QmW=ST#+ z@4esJN@mtfk@d@usWdTws8T%ipryq3eL%^_$S=TmW{iCWKvS1_GAl}!Px5U0w&U?d20lEcqTwV3}tr9p>W^lXJ=f)JZElZb>L$uxea`4dWc z0b7q&0#DkmaX)>*Kk%w1c@&nk#o=ap7hXNUCt!0=@hFO55Z3UC7B&Cax`S5!0d8p} z8GUy4*Dq#uqnTM(S4Hu)&!*QAjfMW^9|0S_pmJ&rNee|t-kMCawXaj|K?Uu8Hr9xQxdWVt!A8V4c* zU4JI+Q&k(Pn1OSH5_N-Q{Urhz_vFpQhKSup*kdgZkD~m}FJ%&7Qw7v^0?=pwfdQov zZebQ?rOW4hZ~y*wOv19zOI7cNT~jb6)yE?56U^#LEVCa^xW4g1HX<0&nVeF~$3!Pi6{PaFC~qH3q6v_|xX)ETZ@R7wlCQ(SQ74$e=1AD)R7{T^xZ1i(tqg&i z(wzL>>cu+z{R^}lcZOAa16?JC4P(oVH#SD^jS>q!pQ@wSwxPif)0t3Z3oEmU7MY#g zNmDIdI(^KL4bCs{YwD(;Lg{wBvF`#fB{g*jm_PF(OrM49!)gWT(=S(^;nNXJ5pw!1 z*P=8vs*)iIgh26HIf2dM)T`o7ITzVVaE8%!4aHhWBR;ToiN~Je!!e~Bu(`>36yT4$ zOfD<;tkhyni6kqFRVJ6Q54_oTPNp@hsNLU5^^U5f#I63KwO~Y_tH;$WBne7@SkEf% zcV^y3B5Dk#xe!7KK13h2#kM99w;Bd1-_a)pB&D$2tK`A@RkS{RT3-)E&IAMGV5WRW zcf-=ctsVpjnhaW6wOFVcY8-r!|;Gm=)|{G~cS7V-JHK_T_~G2BxnY*E2IJRKluDqL}4A<)Rh+oE^h0$=>yvOi6jKQhL5UzxauG zAso`(!QOnijGgk1jygki8jksmok?jJQ`iB&B-tr6o&9$M^8)MP?CC_gb8X2FX$vi` z7DskfG6nL&Dhcv-LuXlZl&Z3L(=zY30s=@YH=a_VmP6iZRGAS*v{Cr~u)30LTB_R5 zi$|W)b(0ECPr2)(3=HAu;vk;6#bE%vOwL~lozQ6rpc?V(N=k?P<_v;^LIgn-NpcZh zHNRv>${l8D3=NapJF&B6a~n(Q{@OTHPK8)8ML&a|%3yt*{D8~n{cy}4 zP|+STsTvNlrAKN}RB1GxL2*LLZ#HY5?bxdf-@mK2tUdQb_973HQ;*Wn3>QPBBHHqi z`*1>YOtFBKeF;mG-SI7UxY56%@Y&8asx791jXH3u?S>fwz1-&rzC4 z936JqP6|c?xx!@cng4C=iA%aOp4%!Rous|wR|&vEe=?2aZQ9f0usUqqggSZ*w-)OX9ob|W2bH{+fM~K5gH8*G?NlXefv9LP=LID>D6x+*?^+! zfy$}&on)o|~4mGk;2mO@o zeCubJ0wUfXMguOhNAFyuEFFgdKVJP^#S12#DZ5y4Gx4RUgDBK}XJIH>Ik)wRDSV@T zw4O_z$H+e|RP`ePv>TBR=c}eiuN}G}7pNWBV7`Q19YS&<=dyTCN@31dK%UX}`0SkZ zfqC=+-R$xkUK2dPB}78+TSnaRi5^SztO)J8PG0v-Hx(0q!wh-Gv{x(TNMC-VTcAwP zF;JQJG@9&p2>%^e&pFnuUlrmnyOn#Go1-)r9L5ldU{dC4nsxdvG(e*;w0uPgRxJ^S zzPe>8vVH>>-d$};v(B4xO;}s8$_aRXW`fo#Q+P@J0g{grJbGn9mh1#IZ?_x8einGz zuFw9(98V1tS3hF@C-!pV#onErNe^tLTaiZ`Q&b=npq-RS@4i|g)a?aFe;t+U+8%NI z3~|?q2%h0MVp+>2hqKZZDBA!u@DCo+@fZZcD8)zt%8sFSxwJO;*99qH$b;>0=Y~MH zOJbUYGWYVI@v1vw=8CB^dmTn^yJLPZtz&~SBeBYTne=6j{b27D7$LYCGHysU8Aw>v zhi9m&A68w4t$7xWA77>YCG`33a)l=!>3P3`_vTPgp`aQd;KiCMQXn(&zRm9wfxQb` z!6eF6p7g5?^)5^$h() z90qt9%A^mkdS*7+1HCD_$65ObE(G{dXOf>voLh_b0E|xkaM;rM!UA|~GvPj+{W!K<`3nD36?M6J!M39hr2YuDc zTo2nuTPGFgPW{0qlH#itPfO^I;l?m_;ZPP{%LF~OjVCr0OnmlG{Fvx|ps{RALw@~a zC9yi)P;q~0_yT_X?9D`humC5=75s$iTh*i6SQe6hl&lAP_xW7uKe+c4!TdKzK%>M{ z!)tWe{^SUL0dp3*7Z9vCNnij7Op0*$P*nAnE%^u6txi{(IJ`R@qkvT1nz^CzdGD!g z2HS6(7m)?~HLJM8@$L6Od?6i{D7*YWEkMXiBjY>6UHP1>FN#e_ZMA^@^ppD55Kk#T zJnKv#cGFp6uOe0yAi~Ls(|VE%wX*!&kNTbu4I9y?oB#MsewCfT;8zDfFKbD459Srn zVU*~U&hrq|RBHHFo9pk4;FH2ZKc}ms-mH$QY5MBlog*#vk%j@#OU=?2QeW~_f0o35 zmatO>n?4YwTUZond!`4JkXjK(yc>?90E`E-uegnHvn`!3G{$G@w|WqS@JtMxd-;fV zfn@Jj7`mp9ICNYhU*6W@HJ$Udv2|7o}P2L?!MN+ne$U zP#n^tTxZsXUTct}3Q-VxVBdc< zI0pMo_PEHmM0>nRjCRuAMC3&l@RPzq&Ue?CCC!k~k`>@nHaHE{q&6tC-^ih}N+$Wm zxiqO0(XHq$ieiLwh8}`m&>Cljcw4_ z#98cBxxjbz!hGb!-t`RqFSG{;-hko61IC3J)6=gUNHUOObO{-f&lRBWOw>wRm?sM) zRQe~BVb$Mk?#`??-yCI`?ER66vGT1XG4|?zBqU{Gy6*lgsR=t#+oTDAB=g-8ucbNV zj6LP`5jo_=@Kym|)s%XL=`V+I4yEq$@p2i9abkcGCwxR%U+0*99;+HGSAO#Z?@LNa z(+<`z`mc5JqEILXvhWuF+s4h14pe3lTU!;L3M89n7Oq3VdFJHjyH^{aY>)NKZf5oI z=C<^we)O&TwQEP7u84xo&nAcOt?3IsOu-9-v_%gCU^51-YK!ZwYTW1vXSLA%p@h%y z@u*#fjV7<)hf`03Su(SJhMkcmo?ADM3gV{=N97)g(se7W&=qE14N>o_tFQAQHvygM z3slrHLl)*MZO9*sst=TC#}M=TWs}TJZF^--5fw*#;6kUxASbS_N^qfC5pRsksXkv5 z?R-b)b9QIb5qF=BSwhB*UVeU3qW=zTaP!ZxObGQ9-)uV_x(#C6+YFL8D=`~_;j*8; zd59VBVr%P%zR{*192uw4aS#BSuRYsc*vpIatpnAQDB&;f@9f9gC5xydllxDMjOgK9 z9`P!KvSKbMSKZUGI8?PCr98_uKtqECjHt^qSN&a$Qa-M?CvM>2msd=4eKY(J$_who zPr<4%L)}5Yw&6v+JT`q|$cU-Xjy}KFEutv1MdCn4AwdC+hM##7N$wj1GIHfI&qV6Z zcrzn~&m7zPM4I>eU5a;Y8o#g3ObWg3gJBFuE$5k;gm_@&5r*X6%dqVjwA1(yeX<5= zO5=|kpiLPz`=uJm!TcJ`zKD9;J&*ALjI-uaS_VSQIy_^?SR&JvAWR_v(tD`s8PC+P zS@H3zQ44ryJNRACNWO@jLoHI?tTLvGnN)#QHxOC)F@MAd<|EVc(o``hU%U`}eVr_u z!ed;_J{TTfJo?RNd<3+CtfSY;wiArDM97wNt@ChSYbreBu>YjeUZi6GZ73p86`T7$ z#nL1dwE!JH^tmHBD9O)9zC77j z9(Q3KG3sH($&%^-3D!VpAX@ZzMuz6ByibQHZwN_!mERmC|WdY2vEcz=H{N3 zorjxw25yZ{2u>t=jceXaRAG zO39EeDbDSmQqgXs{K2zVRn_Cy9s1xFMMlD4p=bKBdXUT~j3ql#A3m_1N($9eDXo`P z0I*|UEy^Q4O#OHWu3F>rCx(JnnDHI0_6T``Gf+ax``VFO*Yb?xk~GTC4<2`#r>QBw zEh;)d!vfE!*b%!Z3#)K;>)F(z^i1`~<`NC+x=9<8+R{qjNgR*60L-PkjeqskigE~Z zV8xXwMOfD=W<=a(#BMQnNdcjrkQZEtmnlxje~IP)?&0eaZZT8ajS}CuyZ7&j6MlKX z1HsDz4($u8`g(^x;y2qnk4YKg8lhbBwB=;i1TvmD{CH|04^=eMFguW%(;@VR^L|346Pin$!j1C^?xa zC9Ht|4#0n;N~pgWpRq&AC~Faq%`u6VK_M@S$$hRp`Mt&kJ|P(yBZYxW5THxoRh}^# zdkU+|QAtMJ4ux8&*4^4Ucm=^|Yd)I^LpQRC??mu`>wC6dJ#*}EBX~Ufps;OD7Sr&e zX7Q|)U|BeFsC^31&_pQx%LVJNey{qoRPYSdre&KS8N^8n5dCvjhlkK%JRwAq%+#!`AjPh6B}gOr)5$_GkT?9;$A(@h~DzF@-$W(ekL@ z2q%WOzl-UiQdC@0od}KmO#EGX_tej~z}uSVGL`_$5XjauWWBB5>S`f?ni)3Sv_9qF zEwun-q$Bmc{yL1$l-E{Z&Zzj(AGWmb{3{L0A`9n-P&kkSBp%SdFm*eCh5)=4Xd}H%Q=g?g zj*iF}2dK;DZ2Tz}aIXv&z@LZvN!CUxO)BT>41ejrLstCnee6IYMy>?pHiP{f0?kS|tm$Q*qUv-d9c zxz+)~8Gx%reYHOj-^-p$*e61EtQ-)Escd91(C%{{i~m2sXyB0VK(^2I-s`6(6@`S& zn=^5C8TlYrbxnbIZX7yLX?xs#a?j6@y*9*K{chqQH0;WbP%9iD^rC$A(3&%WD zia2S!hn!32e#@*Sep!zO`oEbLDzC7k86tU;l9Qg@%X5HuZ_g!j-?s)_bYRGB%j+i4 zfyhMtvclN>LM+tjG9rt?w?&EB8r%eiGtXId&OTgNB{g2*;e?oYZ~ax+i+4^A07Yp( zWvm`49@2#;nimH#HDmbVEikefmtSir_5li#2Fze?^=w#mi>g-Uf1e^DgB;v!Qgx1v zNS*p{wz(;;ed`r8{ro)k%W{22cGV+wm!%k7#$^ZlAHp%hhRoix$7MllRlW z(}(lHzS`UH-d_Y=S|Is5{F%6ze(#&mT%z1H`2Iav&vp0d8iINR1ukTU4$7o>-D`WI zX7;ZlQb&Ttz|%Y4Mv0oJINbW&YW7E|x8L~3?y}m%WF}H6U&6z$l0*O8NRBeTiP(Fl zH0w&lR@b7Qx^%N+uo|83yD>xAKxya)7!|z0&+9zu7)FbHHy}SnJSro00N@SRoc6=% znI85SNR-uVguChS5DEwI^srl1mwy8LK~R2epx7Ht1F%vItUJ-7y2h7k zu(llj8h&-e$1XFTbGy4SGU2(rPAG!{^oYmW*L=DjsOG1q{;INab>{jFr-yyam``NS z#X0?83d-N|(@gKVpGUn?pu`5v7%Rv9C42ala0;TOAByl5&a6~Rc)X9odHF|vuXM;* zT<&Otc!gYZOaQk*f=Bmnk9REl)=yRyol7@v32-CO19igP1cKCCzo=lAyL16BGU|}j zNAb9*uR=XAh~$~sbb=s)gwsd1=*)|dbR3%ZE5l;SCWvXNkcY0@GB6oEQPkI2eexG= zzRHJP`3?JLY8>kwX&1+qhu%!z3QCUSuj;?}Q#Hc}>)g>P)!kH?_yPP`w}EX+ zk@~El#YD?{C%3o0)6cbuI78r6rO2KF57r6&ro>8Gpsi2_wIYni=M`m>pJPC=!E5BS z#so*>T;qt@m)Ggn7kXkGvX&^WY5=JNZtIP&p}h_|n$oWvJd*u+ZjFbbyqS!W`A{Z0 zaP$%wPA!jeothr!p<#D_SGi~tsA%~ zKtXU#P1Q{_+WhT(yKhw@#?@~{A;Li`8ni7+lPZ5FE}_-o>IcB;R;8J% z_6dV(?~&^jsnp`%wQ%DbM(-9ziL3AJ7*naK`Nevo8;$wAMesgbNNv3UO%h;un#(#2>+r8b+S{4bmneUEttmcyAd|==-K%US)hr#6aK} zp2O``9+{C|IKKej*@w*FLqBf7nr)R+khMP`WCVZd7pB)bd=3vNPzRf zbS%=1#8(2F@czVRWVWGC9o`3zA3mEj)XPvb14cO8|5J_cZh7}?OF@hDzIgk*Ltg!? zWR}cq+o9Udy8fwkNx}ren>wR8(L1=jUtF8paY}igxtw5qnI-x<;GA+`t8UVRIW2^` zJWZ$}V~_nNzcy;qb8qIrSItfi{FAslFkrjEIo|6DJ4MiZxSCBh)B3)7Q6KRe4O8%R zO%~749nBbj-UaenNYle6%gx3<1-H0h zz7jGpi`nKke0DnPLr{}fPOsM1R6?Z$kzW7LDHRl2#fE*$h}R1GtP{UkhcCtveD%HYcLNY!@o-+A0d@Sof?|CDn__!k^9JgFDhRVMn2nH+n#84J}XxT|LF4cWN*wu0ln3#Q)S2L0D zHMu0AI$k5d^zVAt0D_oy!@?3le|dWxs=FIf%#tQ>zfNzsKnN z0ZgwGM0gMbIw3CAEfP767GE9yrh>9R!(PS?h(XmSAlmE34Wa>wo>H=2`X$B`6$vX^ zB<#uV*w~*tdu%T-rokB7;?J=Bi@$oGkOfAKn7E{1uxh_Rd9l=&l~qYqsrhUw^0%CfidSy@tZfglBQWmEk&;1 zIs9HqtO~N>?^u&Hv{4+CAHE>+X9$m{V(Yvx& zy`$$=FMd3v+5D(K471@tRFy@?82!6CTI9{TO+jY5ub1a#N4LGVh?{A1I*!$?^Nrc- zA9W`ah`he~eAfo@;mi#cgr4;%{rfKJ<>qUN{*}_j8Z0Gvy18VRhf% z3Oft(3e?Uyej8W3ON4lhIEG2oJ8jLwT;gR4k&^1v!kof~C0o(*>-wl7`PuXnR?Qfw zO^V28ZSl>Km=f=8+6x%rnKi4k;tCi65pAjG*un}gf?>6zQ!d=hrBT&$j=$8|U6(#hk49hTQz z2I-FkV_RQm_2uXEZL#8As5k8X&3@;dZhkQLxqYURwT21gAuL$$?aN)_qZ}l_2AV19U4zk%4hUs#XpYvdp|2=*@7lGGwy9v zZgp@#GYRs;Pp6N1o!UAkutJ^eF-#`5u+-Mm9LMKhrKyHx0C&|xN0RCLMlI!~1>eMH z7nk4NDfvu_zn7GAdO5kjh-T#F>Hkv+MZJK1QFy}v#37FWy%wGURJ1b@<;NF8^N}8%`ldToIXhJtCasw^4{r4PFTe^1kz3L^f#j zcG;CD*q1YF2i(9L4erIx1Q;M7tzPs=T%Y$Nms@r}flVR5{fWQmX(Uim&_6iQP-n#S z*J1pQi7=lW&?SEQWJ=mFmp-flf}v8e+ZFK68*%d{#&g6KZdmI-FUe*2swZbhlCI-K#^X&&hbf9Ec@bO8wrAVh`W(drHT!Oi8bR)j;NlFBN0 z1&&SaoA9={+Qy+M6=R1D?XwA76LG6+b`sqBjLq<&l$(TF_o*J;={b#WC#5DKf=e?9 zOJ9S=m#L)p(RDC|J|Z~1j=1nE#J0DtI81+U+vOOec9=__ON&wq&cS#Lg8J@x^4t{5 z*QkI8?M~EM#uFT=E z?*1@C<(^qsp(TCyZmg=^gP6j+gNMB?{kB)B@ zyxB_vQAlpvVGUXj!3mtJsk~9Wm4n_1bpjeZVUwnW27HIN`S*%wIb`OE<$P%T%${a> zXu#6pA_8c+0U}6gtr`S#Fj4J=MOJzIKJ>Q?ZA_&gQo=>dU*A)SR_@c2=m@J&^YJO( zO8Sb=;i<2)>;C;w04;I2@WQ9|3qj}CVRg(jZ#(s0o6|0?j{49EB>9NRJE#xd=lg=f z5jzdIcYLZ70_V{Pb)i3?w%CkOQERGpIPQkSAMIB@-qI!5u1v?r@_M~n>1x~pJ?Wmm zx>lPmU({GOciH}pbzGT_!0nGP+8dV-S!pq%g8Mez&=}*sj)?<>H{~J`RbALFSh_gj zyM{H7->LE!w94br`}4R`RF4BB_D1SlXcd#JC^c=C5wQy;65F8^tU_c(^Yq7g)Tm;@y%^;xoolEPYeX^e`1;D zowHAtG+)zNPpxrWZti9kAW;U*XiSFha3gOGkt5ADy4{KDYnO6GBWKtt{7jc}*N_g~ z8vNyM&A;;J=6~{m@oW!a+iQ4XK_F`4@!P0><6CpUZdKKvr`U3G%Rx0FJ_i&D)a+HV zW9Yqz;#tsytjNf8!xva$+R>3`&pfB@{zbw%BfW>DvLd<3Eg^D>!Y$gJGHUbDx&r=lXux$ zaNSe?lwlt8Y9LodxU#%Q;F<7C{}CTV2&C}1RK&iYgW5~UIU?(&xE803P$nQ~Ig5=m zb5HmdI3R{Y8Js3xw=u9kb*v|Ma1{thqGj(fZU`?>slAoe%=K(23?Zpb4p+C@FzWin z&ubX-F2!K(^>ail;TIN@=%~M%miQ)2(zO=DH1HoPACGPkQyCujqPap1DRjM}2jvG@ zYD&Vj&;lb^Andmfe!*_`AM~!LIXRk8iTt~FLhF57_Dggbb8lhx@ChYfW@WS9nl90M zKdG~rH13j`&UO#)wVl&`yh`M_`ehHR3ID#8C|a3^w6j0$)}iIVe3i^($zG$hsf;s* z&ueA%o_(wrHTz`PF}AO^VjY5DG(2HI;_>-H%n#8pGaOwxsb3mw}72duw2h*T*CJ$AJ(KoM(S>VX!hHodXw(A!y1h@e4dKi zfQ7h`!nid5SzN^c+XCN;Jk--(bIck97nY97fzoeLuY$3dF8dmW87{9%nnjQrV6GXiu`5P1nWR~6On}pw{XZ?hr=NUL=SkX7 ze;Va1Vb{~x1HPJ~I|K*>84IlK_^N*}1d)D$aAfbbCv8`C1g*ZX>-x>xD!w>`Xup7q z@eh|+46knf+GFkA;EVc@CZ0^5R{x={`PsN##a)_uB2IuW8&42J0e(+k@cjHN)9~lg z&QK(+RfMOebD)ID{$hDD>@(tPQJ=r_0SG*w$A>uwlc8an9kO@N42u)?LJ?(#7a&b zCMoXMdit+|`2t7~NEZ^P0dWUbb^Y2M^zlB4^=G-)RbMeaUbewAr~a-kMUWug<@L+O z4@)i=y6np6oQd_jbDqxJ9Day3kcmOZPW}`slbl#4k_WXKzf0JRA}1sIoeW258y7U5 z&~o-pnC(!aDC9xYfQEpXdwf^k3NLsZe|ba5PNYZxeC9R}(>4@8P!(v#N|ddTZ$N_qb5f9u-uDn8yQN*Nq#)}3FhPHw=2WW+G6D9bAwkiJ>= z-z0T7^ip@m0GAijVsEAtcO-3}Ou8LfpS01ECm@+wxj$bY>94bw>Zh1T6q_U%N_=Df z`8eL9fwK!6w^iCX(9Jcc+F|w0Z(KB5$u0IkI=CcHlL`S78Zd#)Z zs&P)jXYyj)I{HY4MB!|t(KLyIX^ zk&1AwZvv{qW&|9T$t%8U1u|z@=ZHMJvB{?k#D>zBNEe>_TR--R-pw2x{;A5J*Gne$ zj~|XG)c-8lpl*V(P@&G2N>4rT69bFRPd{USF&WyyHAcog2CG(?Q`QaFU{1o{Ss&Z6 z>@tj^t96-Fv0lQ-7wc(tzf?c)l6OXdKzz)>IepS-X>`?2GP`ixqjiCqEO>>3&AN&z z0D|VUzlaCgs|Oaj%~NjO1rLVrtLG(Kr@W9$x%i$jrr6>ucZ}P1+EwfF2lvNBBYI1e z-VXF z#@GvM|KY45FYM-x=kf~EBC6-(+K$GsFS~07*>}AJ0W!dCwsOA;OVdGFoQ8n45}Wz= z+A|Z9^1SWWW>c<=nY#kUCp+wPSBsJQ3lGatH{h>Xhd>zH%W(ZwUR& zxy7^akkVCw*X*ik1O0g}Bskj_G4=L&WJJTuKh5T|NB2|jop@I4{QPnqO(0Tn(l!f$ zI&0{htqp_;OE6VQ`bj2|$18YvJ?h^nxBsyfhr{vVJFj+;pr6-O7m~hr{dp(|GHJ2Z zr(z#eb*k%2Fy)_3?A0Y#{UkX}+3^}jhLr0Nqr)2-0Fdr;hFjbWqH+j zA;p?%?9e%LxwcT=edp-{Rn!;h9J10|-32~ysate9?BCL9pe#m>-eF zzC1_9QeS!P{?Tq5e}RvhX>Gky62KfP<*)(FO$^0oSbNM!uF)p*iy5ctEMfWA8=zS! zzr4_hwm=sEq^=MAG@d&(IK(OzIR)JcgaZRG@k&lZR_@x)f!AKF3O{LGRr#$LOTB|5 zJI_xe29bmdA9ISR(BUUqQAXxU5YqGBG0*DnIZZjWtpAX)(LUl>k>a9PJ+7CQ7WnTC zMX1xaKA27VVBBnKB)rDWYcobpBaNn}Kb8!xMU<#8g|F~I7hY&pPV|LrvJD2ym$|tb zWjcGQM*#PImA;&8h`O&HEkXoIG;T3VK#beH)y@mOvZAAfX(xfzQ@wA9KA55Sh8q?# z|2tc1=-X2)^#b=n&bRXpcM4AzEV~NQueba{B#PpJLA#=T(YEuTO^1y8`8&%D3+#z0E;+EZH3*IzZJ>eho8sig!udC}I`%PO1L;-bu`L)2 zXGZqBvQdISPe z$m#6c5#MNu*Q~gu^nNF2j@Y`-$;+5vm>nR9rLSlcJ8q-J%ocu$pPjEd^FUb4tea@q zOLY@gqVGF!e_xSf;q*-sPfac+`)>5dHM;mH_M{ijm-*jqjMT4a4(&tUzDU=ZsJ&;J z5M0vYpoyUf*C^CV_?9ojIT@{HVvZgh_s)_}hZ?i_*4O<(+8GTb$F(vCBp7Qb59_hn zGwYwO=I+sn&FMz;GSDCTr@@i#x}GR_!FR`e{^y=3ls+|{I7(OZFeW^Hn!}Ec6|&rB z)*!n2&m6dq2-WAeON_^_)64Hre^l$Yqx-XCG-?vgVSy(5Gbu+YF7nQ3K9>!zD!z}i zzIYW@w9lYuv{8whA5|?(bIHL^6B44%s$>cO`92R%h)vZGL=4h)uyY}{C~jFs`; z;@ekXaq;+jEeAGra-AAm)M#u1jR2?A*(&#biqJgLa$QkIvli?si{ae<>k|JbVBLa8 z5v*dRR}b>{&BzaR`z+EUI&4cq34KX~>1Pd6L*3W3muVtMKTNMt}= zxjdcgumOX&KOi?-u&7FVZ_8HiQvUq|oWWuq%gLt&KEt4^iQ0#2+{nxL#=BBBhYEEg zad-;G=n6L3(Ho%*U4yVG(+YUPKnIXr!_FflyDIoMiZ<1a;@h{;sQ)Ak$6sYBuBDLn z;|_tbC%t9(SEGGi96QlYL)P>p*@ z_bHF*J6c`Pn|maTryYwXw8&j{Zcxr%F#AAe&&`~c&6&$kEBDTd%u1Uu@tcoP0tmaZ ziuT#_f|+AlX~13iCgf(a zFoH%V59@)KW}xh_RI8>lQ2CDKI2wdy!Uj2&#~yMe?G%Vsxk;SJD{^vpl)@zx@le*( zN3csx_9FNsPnhqWRl(a?@L>HX>OsA2(T{EGu2)cU_SfA%xhq0eMBLZzO0TpZvpz%( z1zkg!Sb?xz2kg%`Q6x>qj35V!V+EyhDGRlHF~=6M_kOk; zP9F6T-&_8%!XGJ*FQ7a92D7MLmI!370P0m#XqE%O zxonMfzK02=B+kxzD-PFu;L92o>hOzp9|JZrLn6-kdwU#WzsbO9=LNY3)WT?QtsmYq za3}t+E1pX5@#U_@7To_a^_Edlci;Ok$}J@b1A>HzbV`Sk3Im9AgNR6X$IzgJLrZr{ zBb`HcgS0f#Ids?m;P>~e^}OQ+Yt}iRea_z3zV@~EnaQLWt}RxKZRAWE2gxSppAR>Y z+?B|}1B?Wasbm1ofV5PtOi*_f>){b;X&jx_tSK)P>tq$(@Q$N;4UWYr!uIT^IqAby%`^HL1WR(Cd$!<{&6b{VMcwDI?@m z-}>!XuL6;Hw$#ww*b(xxt^O}e)cebSjp^$t*jx_xd|u>)XVG=i<4kJZyPk(n8*Xv< zj2iPT9P;VBS23TJp67*4NwDx@7x%C}A@0>;ZhihMBkcKA^Y;D)Ab3b$ke0Ydku;Tj z^*u;nP498C&bzihm~Pi$P_)K0cHq{2Rm;e&eZk9KT(Y@EH=3~jQK00fX~onkYrUjv zw<-*=CxB1}QMi@kE*yy=HLA!eX%QdXX;8R1C1$$qa&M^Zt?`>BMCK80HBCd3J8vc8 z8BxBT{0yhBz>61FdTPJkh1z(^#e%<{U;VgBfWA~Kl0qsS$wE|sT3K2#v z#5`aXvtYHaCaW#R&MK(6?{yCRJY8Mbd2eC-jvrVB8auHWu&gzmE$qjS*^)Pia8_+BH5%qYi1E?aA2ihWY0-BdGSKVH}2`j7wUM#--k znD}M=JDKK#U?hy7j~nx^C>;f64+s}G{GGf3S3T^g0;Dk0R+pP7$vqsiD_h-~7n+d- zWcT@+040LKW4oH=AU9sFfT@X$IrL;`_7#*bF|TIYKEKwMUv?~GsG$C9K=<)%n`T{w z@$IsMes=6!Yq#~rAi#Hv&-y1;VnxVJ64)aP+;x)OU?%j1h zUuJaJyNW&Kw+||ICU?@JxwJ2;9Jw4-D=Tt5W@*l?+bykUp!RET#QaqC;=ELc5`lxp z`?)vk)zn9mItgYtB#;}whxxw-Pn>8+$%$lwqh^7lUF#FYv>6KFc;&=@m2{fNtEXOn zR3$Ii9#jADnJ-_aOS40VoLSYuG!gYdCXvs*Q}D}^m|fKkeM|om zi*QfR)1TiBnPlmZf40*sL#+k}4}w`~I~PvHo6*H=karoKe2o=$KLaid9N=qTS_}`$ ze!-e|4qYZFkA`Ze3`J}WS9BpRXT8;Hqs%Yj`M~oI(`SrnC?8MFoqoR!Jy)5cm&)l< zNw3wuyTSY%^!4Feq?A`2Se^vL`Tv;GE2-_ZvAQp{J zvcr8QyDdDYNJY!-N0m`4ji&bE z#pf+`J)u5=-lRM2;X_|hnV;|BJ4SAzp8tQ-9ufJroVknxS+g_ zgk*yV9`cfQijpHO6HD*%~7*tdTzg&A{&Gt8xyD&}g$ zC?y(h98!MM6cw`SbbSX4uF*~BL%w#dVJtjw65-asGpxF5muk-an%J z_kcdk<4fHsh>)c3-nlU1BckCZdL|pi(7eg9}*}D%`PBe zN^Q!(a_P^1YM6acpExABA7rlgyqsdg4PX}Fr9OluPv6(=@<1vb_rX;;qog91VtS^^ zp7r}A{!50Oq3lY&Z{mf$ezTRTjrk=C*-5NT92LW5^ZZn?*M+5aw#%y-H(Jmr97_?> z=Wc<8JpqpQcXO85^3O>5N~XJYd;TA}N{K?+gi@tm57zDI(=iB@f!zS%ded{^8q{Z_ z!1uGHKQONpK6424y98(VKW%ZhSK4=Rui5$8YueG9YIwE9t?k1xe(Yx#1a<{Yj*hMx z|F@s4jI+@+uV_|5AlhWa=K}aHL#>kMHnW19-{(D^WOy|FAM$?kGsuYW3UB}+c`{XP zP3((&QaKdS7HevAZz2Ny+K)G^pU=Gm=Fhib*?Y`5bNO0#!vD9yb68?{v{;~XDv|}K zxYm%FZ_VbFoI+%^` zWH5?%qsy2eU{1`-zhNyVuIH5O(2y}p%X?j_2+x4cE1f@<6mi(&a|E#u1q0ux`Qt0* z@^>&_30;>h6wKs0{?{tDHuZ-}zX%U?32yh_z)x@f<(moQukpFGRXd6%M}yW1-Y-k# z6g23-0u3VR14Smon16z=8u6rIxr!Nj9E-50ku@%bPf2;`?aYiyPELM(h|)wD1RGU3 zNJ0`TDp~d7ZVuv!d1!epZ#E0u2zF_&PxksOS2;Y9nQEf`!0$6i&Np#v5KnI00I)pA zn$%sky-ZZ&tz_dtYP=DB{vNdL8!hTh9ASape&9f9Za~b4ui=m0Az=|xTACqV$1Kl+ zP;$V_nwXe0e+&W1WiJ8CGqvyF@pZ_s|L|979qRBKz*HK8(~8%XU2rj4f7NVmnTXF^ zxn#Pg*b>{j{)DlQssF|)1PkD~zWWfV`{CRk!9^q6;)v7>&jjv8R9TmRhfkzP0PU?z zyxr0m$sA=y`@lz&=a?u#BpaN*brhs5>;-Bfh~mJMIakxx+gFrGOiuext6;o+fdJ~; zBq`o2SyQH+kIuLY=kntADh>1$4?m?SV3$2U9fMQmSBHl9ThgpXd2Rl7JJr_(FcL1r z@~#HURGnAp11zxf_a?$TV6(sd_rAG$J!E%4jm!N>hGWx1(og27Q;v;1TCZj+?&3aJ zsT-U7dUor+&~4mssIVLdZKrW2y+pSO;KQPzR0>`UzFKe_e zvu(})qQ?JRj0(+)(#q165unw(rudFKFOn+&oZeevcGL+b_T|TV4P`0zT^mzJI`rYI z9w=kHZc5(o)`kiR5Z-8$Rr2Mi==`Iq-u0nR!umH}^*kxBuUg}3jY{A$ zEsP(zxySS+Pic=e=SU*5JF52RBBX&CA3QtUu4y>oxDRRhFT3QM(gdJUQ3;2}4#x2G zIzF$hgD*xR5Dpp67?bxJ39nRMbA7(7pqko|ETrkh#!aFP2LTMlHjAIXiP?Wjdm+<0 zB|I)Uk12|z)X2D_w`TB&BNf>Qknf=AzC)e(a4&mcCj^cZqu;_g z-(#tFm2cwYyoOKP6f%^}Y_*tOkcge)Fe7kKN7L$iQ8F_d%xrgZWj_bJD9YB~soL*w z6BSq}jV^w{lw;`jAmmxS^_eA<`xiiLEFrSKy2##j#fzcVX6WYVJe_iBz(FQ05a0lQKN6WiNN zq@%@^Sp3f-BVQj;k^1|5EzF`S79o%_a+{r@V9OHj#P310U}=TN>*N+=%ldFnrtm}f z!Nh6p@!eoc|PBm3e`Jbu+nPT8*jjr_v9DE zJnxlC5eEBuKu|E1LscGkX>|L-D6Md<2Jd*WiZ&+%xU){12`}0gM58Y=bzs2~;kH6N zJp8BGk61J!k-`fO6umiYiQ>X(STNw5Esj^NqX$-h^?kI_6KEm3>9uDwN|1Q0Q4$JlV@E13#EIMweo zZd6%y1h3X!S|i)5*RUhXJfXD7ajlo3OC5|hVm-)Bt4VUI&A2~~*tgREuyoAwFwF9e zG!>x3sZIHVMg`y)vN)davp(io?*iTh&}+EKLU&O}JVnL99IfLa62dw&#`vsB*1hE1 zSCaKhLE+LC27}t=B7gDs4!D%@OD%(Vcp5bC!icd5`w)c_)*q!GpO3>=7Y=<}Ram2P zI&s1WYX|fojN%jmm&58!8h6{kDdJH87yqE^ZwP{GO$5ygm<>e=`c8!#%O^{UF6Xn` zkyxQxbZT~Hd0zK_ad&>y+~q!W>6=??nM#|A<6{<^x1icrU+<2zHHA*&g?oxW;&Ci5B(gw2lBUEqmbg=V zj$_GR(_PDdKj#Hexy6TKX(&MHKb4G&2t}6g=T_BIX!=0T8}Ys{ivkm+kCt5Mj>&(x z{G6J|y8Y15rIi+SkXx^mDJok&ThQ44M&DmD?sn~uq|Om2kAUOj0DOj>kh`!khU0eV zFvHV6H6^>ZI^TNR4u+>x3?7=yt+A{a0LntlF|^2|DLY&1o0%u$QSj>#zq{>m@qYl&q1BxTAlf_bXvGMc4vM+EsB$WmUJ}b=MRk{a_Bitqa_Sd<-jh^YH@uV#wHzaV^wLStF$nvU zXT;>`>@R^ptKP+i-j#Q4kvxd<_JAMP#1Qb(*3N{8(0m5=XEmQBsy0DomWClh*EzFJ z|603eL-KfvvG*a2x^}I&z};#giOe{m#Ay1baVUXKQ@2q{uUL0EY=~Rec6?oht2{Yg ze}tu+4^paBydu3^_mF?IjH#cdy_1dN?so&dqcJeUZyc^KuewsTEuU%5KO6k17s1nB zwov2bXvt1}E;t73@8+l;qwkT3v?znTgBK_0tVQ%}gptJpvJrE?{ zI*_}{FK|B=$#oMC`Kj9J1dF2@nz-O?!9R})Ig2nPzc*@V@Tf5sf(r`m9W)Nxcmfd< zshY-F2^L+jdr{oYE-xRou#R!FXx8PgX;ivFyn0A?ALhSr22a;)s(oZX8OP~MfNWo) zt*7GTeaa}FSFktkpwd%&miS?rEdEcSHQ8VMbP-{omu@P$m&Ck%n)bk)L@B@i9SC%k zpg$i&$4Y=t?;K%01c00ICB+N z1n?sGp=PuA-g9h-%RNq(wEal+`!P|Zo{y7Nss_>x1x1=*a_${9wFxmTRSx5KBknu$ zKd$=+j?5m19_SRMuf^vqevB#W{R|!@SUr35VSZ&@4n+~URLk|W!_*puG--0?E&{K* zpI7zOFr3GJ5{tC7NW_vBWab*mwp8XnR<^u8JI8I5dJf&n{&OrD4{9;$>tBH$ zpw2-u5%wD^WUjPwGS|L}P~0M=k@tq#r16k~IZR1kzb_#G8)fTj-(8;?qXw z+DQ(aLb58F$aZ_L1URGPrjn`Q44xPDMSbmi?4tY1%IQr+!S6H1pAU@vb(!3>lXw4O zV=j%Kdk04*S`PEFduii!@bdC z?2v;3CwJK3}{a{>gL*_)0i2+xSTd3zHx}*a-*gYJ--&>V_rtQ$@o`Hx^~5Nl?LA7TCsHVK>? z2`39TWWqPCWo#I;C&ubCJ=qUyp_LzMEm9C>O}GQFQMuC9DF(XlWDj2RA9;=ymQ%NCGeWk1FKCAK*1jgcRAI|j6-dNqZpwC*8(j^bR z@YH8#uSc1#0a}*I$VoQyItOqeKx-W$?kNxR|8J?v&gDG}{`#-m=_zOUJ)qwCvx@3q zd0m1eMliP3NXHd#3_`f_g7xqA?NZx~@=|3ZK4x`u$;(df*+b`_Lv3D`(RJobIbNPr ze@s*0VDiyXGQT`iNcJ^x3DG!;rT;Xx)JKqza%3?WKd)sifpfca-u3xx9U%r50R>9T ztsep+za>8{xSj>jP3%JJ!{Obey9M`?AzIhJoZvFEg)1 zlYg25{P)Yy^XSaDM?nnAR)au14V~>iF~rz*TJXs!H~Qc><{G^2GLgr)r#|dXSUBrv z{|poc;Uuf4*2Gjx{U^$lm83t{^6Mbxx7u7onhu4v#`@SAbWNBO+B6_)c%$!jXRnFJkopy5KS6{930Q@gkEZAj~1kui8vGc3_-CGj=M7@ z1zo-;xa4|TSTvvp&kjlE?ws0-S6(GP5svtECKT7bdeyTmj!S^ZP|C?}zIh zd-2D%J?Z&E;r%rN+W;fgf;H5dNO2;m^Vi1M`(BkM=kvuU z{qV;iwZ!25@@lnZR8y=*3l@xKLk~IWzivVBPjg+p@``4{B{qR5{IeNDLQyM8>o&3s z9-sgGMpQhleUVzu{_n)cJxbrLxGRdQ7vtohF#eJuN%aml-Ims2H)}~q=35rVO@th5 z1kq?rwQu{vFHrlSFYb|ae7z3#G9a-zMhz53$+lg8!vDsPNoO;T_hv@9xVCzvE)V1W zm-ObKEOszeFC7#~Q8?^c=ISl=PwLd>;gy9zoiFU7OC3YWJ*)D3n@X|PmCIKOu8n^? z#OAeeqEQPDWEvXS7^T>RE9dpDVgLniPg-i@g`{{faS?w>zO32{?-43*lq1|iKO-jv zpwt)eC0?tUoK-p_^vB~jJabw$OJ;yvJmfIH8o&i`y@LL>t;&|_;u|Q!P)C`T^+^J; z3PGcNR{{JY0xYjoxf9qcij~i>6gz#WpFfsz_Do&fRnvv2mUV!wxUf)JJ;xJ=OXpFT zI0Kj9ERd?cO>#EBOr_?WHW$gyfH1>BEzGoCFZ;mVW!5ljdW)RPqJK-7{z>Dh?f=5v z6C4fcFKr)l1jJTI%EI7Qo;EziAq_8OwEO1eW)q7<33IXwe(+B|BnCDboI4-!5Bvhe z&c3}y`vSsL8YUwLBe>i5^%y+v(URLlyjsZl>!@5a=9sg{ZWE6^e3l;eGWVH@(fbSt zV$?!amS`snWTYYNHw;48CABNdf;q+0yD7#RIoZ8?FpL3p-S@b-PfC?6r$yeTD{wGY zDc#ZRCd0s_0s%y}-u2$pRs~jmocnyAki}k;p-w7T}I23ax0Smf7Gl&a=*eE^UoGh($3v2Q_KzR2NX3I z*O5$?yT6lBnM#006ePahCB*$rneT6oN5cLSag>v%h%>V!r=()pTz<@JvVg=FIw(ZG zL@8}!qezTV-<>2Eqc50^5{RhduT+Emc&+=l8Zr!f*05l@so$1pztZohdb#3z1BpGy z`HKD@7#yZu$J-;?-B- z{uFRb0uEM&77n=~H$nHN&A@up<*5h@)!5vflCJGnhQv)h@(WatmPTKhKL3kBGpx3n z?Vbn}rOe`o$_@(oDY$O%8NRRZrG*1X z&7p(%%}BQj906xo2p^te_93tN^_D$!Od4w6^w%8n_J389Jpix6I{#w@mY&J+Lv_&> z+P%arNGD>h{&i8p8S3Clyd+X0T*nI$7GbNU8(LfClgO4u`R~lVYGrwQ2_4pKDRQ(g? zhXCzt(EB`Yqo({8yx#Keu)!uF$J?cq0iT)lL@x&+?*V@^r^UCx>p(`l)3KGW)@3+r zAw6pvX92WhR2}ZqR@O6eqQQah8Tr)*PrN)@bm+k8h;zGKue!yhYQ_FRsh=*|0z77; zndOw|uU}!CK-(=~=q94w;0lFdhXmW1-`3n~3fir;Y?j|~d=hWqiqw&f9hkkqyl|Ay zt80^wv$(J~mWK>Zp`43WR(OhW*8ZwY%rxWC`(>k6NK3p#&iJ$ohF5BxDb15;~J@lTQ%=SRhO}eT}M@S(OtE* zDeuUEz^#rS4fF0){4rT-R&{yKyMw~duT?+E{m`3etY|OKjMdKE+UbGA4z9-iE z*(rolHZ)6;+^e);{x!N0sR;`&Z5BiOge-`O5@VtSt@zbhZi<+n9>i-deHQ{bL*{Gx z2aD)FVfnW>b=J2oJ*y8GQzHR3pkQ&!R$1~12;yp26zbbgvUmc!@&s#L{o(?Rw!YYdxh-_?mId{GIKk3yzzMw@^NBu#|i4 zO1@20&?>sQ0@Yn;{`HQ=@?;7vmf2d#IiL1Ly(tLPB52NZcqxODVEX(H)o z$A2FS0g`Yc;LM6S^4(oE@D^hnLXO_-k7J61=L9|vSS0DzdNv4R`5opIW_HQUc{TCq z)zQM#VDK7_{wYI@GoaJ{5cpWRs3J90#cL5Vm(Hc77oe~9IntKU)t`BkM)B zc10BErz6rzDe2V?vXq1ej5+IGCg_Eqx~60WNE9p`wW+#vxDDtt&E2vF|BZbeMPmHPJ49yxW^vLh&mISbI{`A!1%1p zV|r+wV;cnYTct%zx-3dPA=%OKOVMqj~jk({PyONKOK47#7=+FTbA&& zFYJ|5s*7R!cjOJIp^o3!deH(%-z}^D_0a956Byip4jQT=R4XPO(o1>upc~A`%?Y~y z;{@IQeig{^-E0E#Txc>76~W4E=Y*1ao{xZZ+p1rm{$l`ib1?nU5xEte2NV{p0YMnf zw9ubf+7j#^~LqcKupRY8K_ zW&?p8OKZK#IZ7$yn`r8km%Vvm4aj%@7O{kaqj6M23##xzcE3{8~d%rI@{$M_$gde)OtL+)_JgZ6-kIZ|GGMflG$R_hD?NQ&Q;)ExXr?2Ab%w zF2!kXS7s0;4gN$iah|&7%c}L*n#0D5XcS z3w_J;p1(+=bHG+{RVeef%^O{hiFf{@M|9cKfvoE6!i5ZHl&vin7o!d8&vuamcv>3_1`TF)gf!-RBpm^sx?`R81oZTG+ zh~P(@Z4O3o?<$X8(T(OQ8XLUCc>Hl|+dd!?COA3x zvwA&VP{~*IvHOzC{B|+nW-@dvM?iYSa44By9y)WsO$+z=DTh9~BEg4(>toFWbS&|1 zM8*L}=v-Y<@dbi5Mgm8Bh})zJW#K4RLiN|C?=+k>NaA%~yW4#Kb>H{*_R|-%LM#$Q zeah2i8V|x9DG`oc%^lC}kt}m*Yg%s-ctyV*4{WhBb<^xNYmpM0AlJr=p+2UnEbjH~ zGgT|CZCyhfHQ19lXg<9wC|z#DMo-@s;Acw;CECEy)tsd*$9obUJd~; zkfyw}O*!{_B_?xC3+ns19{J9=1UMk&2c4CbeVsTa7O49(wMW$@xn)RV{-;`rbf8#> zYK=JmWV?UpioeNSj(CoaEoJ_mR75Qy0picEbG z=6Xa3IY5_x?ta7dPeIa-Lt0|wers2*hZ^!!m3`QVs_|E+Smz(sy|^3dgd(+)3%s<= z-o5ntD&8>mD^-K3xnwb@!3L5~bl?^5IalQZs1|sy*md8$qOv_1dK_J-7hz$a=UhKn zjk!frSJmV%vkiC~6x&uR5BJ04hb;sP{v%GHa+v%evHAPijUcQi3S0tqy zduE-N{wGf5m!&L?Xf8&KZvA2v_Z;apE*8t&lbO(Ba&qgPy%uNr^LjMXNPl zwGp!r?Ye9ZwG2Zvbk?%>L8nNGr}==zY8tPn-DAf`uD+MfuxlCRBt}o zY2}m|GFuEEz`I>_INKtp|KYR%i{66Q$7YKBvB~n|%(veca;mv*OF^4+Zh%*^@BF)( zFH9;j5oXMC$xR7t7QjoWT~5vpuoxEZO&7x@9foQ~-m5lpUTV9!U!PQTyP(*+XQZmO&pgrtq=0*T^cDz! zX}TObPSvyX(vHa^ntBq2WVo6ahrU~So_2*HQisyU!|zuTjEQlRT<<*l-GSNw?mq$9UY7~z_laXt<*Mm`0mXF zy%BEk0N(T-%~G>tFK7N!GQZ69aJ|e&;+2k$RlK{L5WI)8g(ci1lA-m50{&>4b(Q*RoHrA$5 zZyaD?tvxd~`+rzAWZc0q(lA6y*?#&v=+Z0x;q@V_@N|l;BiH09&gMXu|k6Ea`TP?AGv2F&8+0g)&QIB?(P}zZv!P7)vj(9iMTq zO;uVy(Rm{U4Qld)m>~{bMk$d52}K#)Ni)Oa88?M^W~GRw!p(WL?Hg1uT;xFmjI0O= zvQ7=OA#Py_K%WJL<}m`s_YX(N^97eK+WX$-PR`G+Z*2SU0(Ft9F)mGiblQ zU~p@XS8qn~P+ipL)%9VhHq3@r#YVT7LJUd}8x+e*t`vIXZzv>7 zV;vGoTNE#kZf;j^5*7FlIjNL6EmLw1Ag8p5-Vm(7sMR_Ys8j}JLsGf4-OO)hCfDkW zWlkXf=%)ypDI5)STvGoC;W>^NqC>*>y>+qhk6SLe9K!Q%N4Q*FUZOA$g@wc-BVO_? zVL$FK3|CJNgPxt+h~{V3iQVxq=bDMjfFOJ-a7_PhfDN+TG%QdH1)r(JBJf<_SF@yI zBPFi)N49m1?ONkn%4e!pV=)v863NdTQV}Oty;i+e_>>SzQEj%>p0TlxAU2nxv;64# z?D!uhB?lmk|I-2l`DA)F$(JbHj$!trVU{Sx@9;I87S$Cj^o(17RwI}Q+3jbUQ}=MQ zs(S4*YqvWSTRpdrIV#2abY2#elK#~+-{VWeP?E8#Z`ZB5Y)29H(15>E67kokh!-sG z-^kC3ys1^m&e!f<9gQB@@liz7aDVdSSHNf+n5+3YN*&SXi1vo6FllrK6e=wd_RXJU z1og;*r;5Qg)iy3*)&lO6>!CMUcsEg?V=1yUS%5`e2$|3sC}+?{m5{)j+gQ24!HP4R zBY^eR!WsGGXvwdu-tp#aD-@rIa(c~Bc_@L_xERS2zL;0Kw7B?4alSFysx={Lx;sTu zFTs<}2g}HInum^_k3L@uznNaty=Sh%k?Y{3lR>PeSBEy`D7cqiUGQgU)3;9tf|N^S z`j~E0BP-I3ITglJ0(gz)DRvaEk8W=!|5cUVCqRe14c%VEP$Wreu93kR)Q9wc9hAnx zbLsy;xr}nuQ@OT7?m+&6f$Co+Pub-B^-1-4r>Z1O5|8>DF3a|#oGj4U%khO0a)Aw$ z7XPHn-V$pZUP&OwB$`_$xPe-1rzmn;(O#X-Qv2I_##^JKjM;7V^NXoy!h+dl9l1jW zghC_x@rTG$Uevs1>7A+Ujpa^6aB|l4TE4}pRi>9$ZXN1EDg5DlL-v`5+41PSUQf4! zC+6{|9qf_bSh}AwE?XBWwKcI0?%tn2yFd?%j#96`MxN}^1ACm))>52{V~aV5fMin- z&roWmYulsV(Ug4=>B6loZVUf`j-^|Z#aC1o&m7TX_g^UBpJJGbHV;nJQO|t>B$Mk; z9{ulj&K>Q|J83{~y#Rt_SasRvD!Qrx=%BV4(4-R4{+-- zek>&EOO;^hV-!hdl`VFTX<-lO{x0ve)VK%mGw2{v39xML_4<2Fswa1hAAID}Z%vhf zh&7PWCb2vf>DWns3N~f@zfG-LewwbU`}Y1pK@MkpmnvnQ+?Atv?xU>tw?F3Rxiqit z={j#$b`pwbR9ROBF#H00cXxV@zrGbi2FsUjuVX#_4KCq8Lqi&LkpP_`x6H1SJ<=2; z(~5@c=f{g*KD_5WuavbftMMc6Djs;}Hyf{s`>=3NrdD8HHbU; zon0m^V#dKynb%Ex#5CXIBU)Bo;OcEkB~5Ft3E^XH$GI_z$;$!&v`|jmPM=ki>qZny zEFP&Z^{V7k>y)MD?InL(wb5~t$Av`Sb1pdPyhq*4Y+Ip_Y$Yv9g0EgoqHNZPV+&i8 z+}MDL%cBqT&3cC4SyPW36W{J2qF&T4?YTYrft^x^jM3L4-c{L)r~Yi_(kfoXH45h` zCh4==%^4ZJC(aAJHt}6of+;C}-8_77Eq{s>5H8xTC%8SD<>ZQc$42w^n;rq9nyOL; zlqdgB+0LH>qs;bD*(uXd=}(b!9?HC*x&qwvy6U8oEPA{4=o3AX2d+99<#uYM%4mob zcN)BL$bFv3)SjiR-}q2rdZWBXS(~?CAKcp>iu}{u|E5U*)tl=~*dAz{&VLD#m3T75 zw474SakRD*oTw$V4f%u*AgMDdk5UghrQ1w+w4-mizY04mFVLRzw_Ky`Z;_Th?7-8cM`PZa^M+-*9Qd5C8?>G4rB=em#B*EH^*j zTH0|y2y{k@oJ&FdKFcOFK+I!o=S|wn1kWnl|Jaxoy3^WC+Z8{_bwNC3my;SAlT03>SyXl!*#)V1QR@idGCI z_z4E#1J58|JA_V9w7zPXA%#IYfuE3~0t3fux|yobk#R{Mg{0nd ztiam^yq>Jl1$zkzicFNj^)7zb>FbotPwj~5y7!EQ^H13MNUT?M@D(DeIr%A&^6(~ZXc)O5u2zw}%jn-4P?UDT7+V{;5MR~S9 zNMd%JHLi;zdcaTKt7#P-_kFh6W{*yky;wylhLf|fNpRZQY8y#)oZOkr%W^ka^9noz z(EVQwgT5E0V1gVoRpm&r{wgGkCjsX~O#pa3F0oD$MkE4P5S|%53Iy!Jw*;<<8TCZX z%GvJ(b%qkY__3@BG>Ut;|1q%USzi{>DEaA>BdVx~j(l~hG(Gp?Ha-%>PzrAPv&@$U z{{4!hLOLlIjpwz$v?t=J0J}d(HI&!nv*Izt+aE=PtHUPQkB0g$gqO%)MljOzSh;i8 zY%pufUa#1`e3-!g!!+B|VaB*op72kpbAI-V0d>k~oiQ7~xRMYH43gH=Y;A!ORp8sb zQ!SQ9MY-|6iKq7#;a^#6-ar$rKOJ%4LvIRae3S^BzS81FV1}_D>HA_Q~Tq&kHa$Z0jjm;DpFo|CJ3RW zOM$!{RgKHWJa0MjKs0+1zo%vX-d<<K{+j;PSt3boCt3W!U zdwR;UVS0fj+l_N`tH?u5UbFEEsL_*6Bm=hn<%eKqa+s|!Xhx;Rkn2Z$kCSv*XJE>5 z?W{vgw;v%VIXpU|L!HQvB>XXGS+$$LH$PZ=3r9;H-)8phX|%0mjFVu&-*YhgX-x>} z@bhi^3_av~=Cv0flCmszuaA7dP>fb+{kcd1O;?qSiYoHG%u&v|{iL&7P8(U4NnG>}R!97(_Q0UgG za}}V)cf0Qa#7_Tsv=3-z{r|q@v8pFdgX>nx(AB^_KgGjJ1>5TV@&t!X*CLtE`hd02 z^AWpxS# zh3*W0z@HLKy-J{_4hkgtPgY$wm8N+U%+!%hQetA3>}K+NHQyKZXF`}S{*$<9FcwgP zoXwuSa#1`Rx)t)GG4;PXP2=y8$XnOtH$`04H9_d9upFYi8S{_(oG zUwtp|H=MRrnXFU;%z;dID1d($M zgs=DtE7fqQ7WNK2i1iL1jzX8@xsQI8Qk9!r-g+JW&= zVe_}X){B~GR8Zfi-jhak%FAhbme*js}NflG7ba~d~TU*uQ?3MPuEJTtk> zCM?y9ypBR73NMNRJK9B!nb5Bi#eYH*iovMhP2(Z2+fB+jMR3Bt7_E+apPYpLgy(~S zhu9j!DA^iceR*@d?f4V%5{ik1j0g|DL@RAv2TxZqHB$46UnIA zE!SR2XH_po$N?ZqoBiZ`*UQ4JuZ}^w+E=#a-vwr4Rf(oB$B{WM%;83wrrg&7I6uM4 zZL^lg@vb+I>zoT4w?LEe(XZL=jWGMoTY&%?Ze|w}{blAUTZb-&S5#3Z=51T*D1P>H zGioV%qh@jShA-zfDi3v4S=8qJ#uQv3;Y=a8*I0()!-J=6J2e^i(+p7hi!4s30_huQ zX;w$Ad8vt%Aq}v`y@$J}MXlAEKV0NEtslq`|KWIay?DW|y(ofll+2rxZ~pryiG--W z-1gF{;TY$q56>fm7rHhzz|RRy@D^QkZr+ZjQl*10A4Nu2y8T@O?aEx#K3R|-yQ&_& zdS!rOPfC-BwSx(OgQ8ib2|Z+XVm=G7u1+U~?%TD} zALM(;h9pbvG8tHm5@c^{LwA++o+whu-9mUpZy~dZVi+PDN33TuXnteb2a{R1@X%IeO~Jm)w9c{$wzYfxFU@ z%PV6MMXrNUt*;ngTAM=|7tx0%Hy_@;)7Y=b&!=O{<}k!lA?_`Z+dZ?Wb3N=zQP5?e zyY1TXh<3nO=dzXX}%`{wimTb*2le~8N_X64-iP8ucSoA|5J&}8`S z0&}`}?bew2<((fxMO3V84j@TGgrq2iw}g+-u~?mv zde1duTnF9sukQ0V_goPQ$||xOebO@s?zG+XO(|vkkI0{Hn%aLyb}t>h3jauaZioYm zFq(731NZQc37Pn(Dpr!ou**}8A^iG()MKOod z?5|vd;B?mmDRyekBjjtNaPdgeQf$TDyuY_tM0t~56LpK1(^*5v^Gg}Y`y=~TnFvSY zAg)>k=5M2bi?4X&zGqo8_`nD;jlps7Jaq420!xWL)_zN(YvaHq=0lYg(}o1Ius^>& zSfBF9*5aJdN1L`Ad7-^Sr@Rol>@d9fS6++~GNL>Xe)qMB0iB9!=17gsZqN!0H|pVz zG@J22^-Z<(Ucw91LVtq05&DAgi99!r+~kG3?;zq2SZ?GapeFmnmusZ?UZH zzyTfV-loY8({g}Ky2mRv<9~52|Hz6ij3sA&8pp+5$bloo_AmUpqbEn)tGUN?nMJ*+ zbh~ON>)lsDe}cP_0crkF5T0M@Y`wivVL=~lIu3#&S5(vE<`v6>RCE@OgTc@jr%6Wl z_*b-kY38&3s1IKw`%KK&YLj**167uA=4dfgTl`{M%2J;WHuVl7k2t4YQGJk;zYPfR zM4gxvh@kqmi%uvc2kr60);)8m>%in9(BZeJkR@1zK9C_?EIk+AU3r&^T3e(wN^gRL} zHX!Z7BV3z0s*c=#vN`xS$DOk@AdY4Cw>)qK#t0S3(WP56&;Si%jQ){MJ<+e>M{OZll^YminnDrgODsz3$6x@3{ z)8y$5cp9e?3j1#ko0brIto)d~i}bk_lV}oS#+U=oNjXATY;?R8ohKNgs@ag%3Els$ zu?ER0G6OA##%3F zHp~FzI*DJPL=V-~Vz}5-Lz!0>`GE}xeVLVD?7NqI>^9FhRJR8?DFRMIA#)_HO!MQz zZ7Fr23C0`$$BEi6*+^ZL0nhS)f%nP-W#Cyg36==yycUNDRZL3(hOs=26oI>o9O^j+ z9Kb#shFdq630Cirl?bjG2QXAM>#{~3B3UF-dW=2XpLTOUAea6!`p8|d5zI|{rz)H5 zang`*TArHAXzWuiok)GRryS55pK>Gczq5QCk#eGm--$)&N-XQ+Lpm=LjczS<)S#q% zrT@2x-V4(|ig0)0aP9{kiy zq>J)spOomPPDRBk&XK1ev0q=61!9!N`tx#hys#eaCI|7j2%>b%rS7@cbNZ0t-eF;+ zm()W}xh z6>7{+8MwVj@O57jM(nccA@9d3Q(<52hZAE;I+?o|9-^jLZqB_>Ghi8=X&CA=NEu1U zd>!m8X`G0}()(ztY&bT7@4N_UsAfOIb1EZlef-rwim{fmEi_nkfG%z5US zXJ+X6vtKLBaeCHc-adO7_vLd!^V#Hfc4q_xcndnVKiE3H%W64*-0P&!Zne;oXj$Dp%seLvxhOlM}AJ`B@02n~7AGKu@H8p=fQQ97$aWSksvvMd@a zzd{XhCIEH9pr*Q)6+UQq9sYhvZMf3ysBJ$2h}J-VOX_D+-@n_B`AcKkTCzt?I4!1k zk2iMs=4cnfSlRgY$4_k0@|LO(J{&i77^;F+C!{bK7Mi zp-o+|mb#=>g#}9pyWO0{0+M9_y&|#d=aW^l^60r(jt?A9Q{(+njRKcv371vtF#+e33;$Z}}4_!zCjn+Dd| z(03}X3KY`x_8rD!q`Enj&-PzS@A2vcLJQHV9Udd!pDdcN#h1)m*-Vovl^ntiK3k4x zQ#ld=LL$t&?h-u%8Z7ZYN7EtOBDm;8rpBf){^ z>{CNkV`?~c^Lz0%C(C3QmT_mLe7HO@GZ5K47pO9xaMvu|f?0QX4gsu2Isor)xc9g70yNQb?#@V1(Bq(zns{<=$n02fYd(u)tA zCKa`fIhmai35|BgsEfaafuIOj=%??;*Tk9KCKt=_t3%$a)`l>Q4o);Apqi{fH#75Y zDJiJ}^7EQXPg~b;LIkg0AMhQKqdWaU-4pOd$LOd^cKzf8Lg)}ih)i8(M>lmNz^dZd zxE(yJcUhp()-FlgY+b9@c6Ne4u6X#m!+kbb-L;o@BYp)E5oxL^f)q}#l9@l>j{U<1 zqF*K5o|V@u`>EhY<}MqQ|1A#;td&T>@F`$1lyog9LrUzF)1Hd?tf%dICdhc$Go5Iw zTgUNK;4rr^>7)N{tK)zlaK-}SoUX<9l|aYYd!wqAc74r4prN)r0cnkrS-LA(Uno%1 zj3g2Abx#4)(}A`zgSe|{s3eU1)RXib@A#u5VA@ZDi(WmDM|s(H93Wo!D*W!GGDZ^k zr(jZNJ%__WE$Xf&uWu(?Z&4iEUqY8Y`9~h2>rRJn7R+(pGb91^;kA zfi@Reb^Amjo|btFoU*ntDQu3=R63b92#cSxGL^7slsS#{RngSB5(4GS@#01r9 z6<~2`>bqa*3hIg-hNh8frm4$W@Xu^lQHIXJimg9c(&h*-5(K?Vqh;_A=IG4o)>p_w4f>Tc{FBXL%3@bRS3%$+MBT zUDgTmk7Qb`p{jK=RbgSkI+dElNK3?z$=xwmhdT%_!uFpcpPGMKp(x+AtSEW6*gMRQ z&oj!Wcmd?k0<53INrkjU@(~GPq~S5pODMl+{=++Xh0LZd>*pFbt71L>xUeMa!VI*= z=(rz6B3Kxjw>>E0FP#lLR#+sh|Mr@`WaPPvfTx6)ec%)lN(P9Hm)Ae)O#1BWL#4kh z%yF1SoqU~x?YAi2y<^27TstKthPUK1Gi2_!T|)V}O%&U1WP|79ju0^*GwPHWlb zKhK`&9DUFN={Vn#sr>M-;kP|-Q8TZgvYIbTO0Y!myqWp|8X~mht_ZK{@+F-AAEc@% zG;QW-F~5?R3@I^pO3`euH%|$(^smJZG%Y;Z$~L@x3pg|&t~HMFvw|DqO_TxTN0}LY zV~>VSEWnh~MW*wVY+2YzK391yb#M$Kz0{C$$DyEokDZ7X$)A%vMm~_=qDZZ4IQ&&! za&0Z~1(d`^CiBBrkW4j17=v4V;e@y~$vk!vs}gE=%Bk%Ph#tqF6ckF1Mr-rsSLkGg zFUIPY7cLeoy8AQH8uuX268Y_7I^+7pREm>Bu3?O-8JRn3YSlUz6%d7d8837W-8#Us0bg(_7Drn!}^oB(7b_%xJzhXKd$zou$}`| zPYEnj7fJb?3v&PjX6>qm_BAd_5cFtzBR#RqzoX!ogd+$x9^-Z)!$kd^h~Up|)sN3C z&Cb74mokc#$MuN0<+c4(bdRB=Q_kMW8%WPZ?sOI0gSPtxD6}|CCS%%lL%f*%ZD?jU z?ou86l$~hZLf%^$zv2O(z)W6}?ZY&m zLD_#~rI(D50Z=#*_A!#DZF+ik?}%GW@ohMRTbYK*!uc5K4o#Inc#_CmCIW#(u>34v zp_I&o7@{QE&R|Ci{-y@mT0O_q)T@=M_#9XPq#(MgUr@-B$eFvMF*TeN+Bmmg5vrm9 zzQmU~*}ps`RZh3OtT9c(rSExgB8-fuw@({TZQ`iqefs2I&dfYFGXK+~0=Fzj6HI@= zdo4wilsX1e!YZVoRHIk48OLx(2MtLGRQdcJkf~%t95dcXEtFYah+5vD%iTx1SbSAi z@OSRe??fZlBjF4QzWDvL$V$Y=C)Xc@4h^mTa9J;ZL*R$j(l;s+ww~G$y zLziTR#%W6u+&!ommjuNo_<6R&prKPN z+@46GN^TyngfJpyubG{6QF`<*0M755W8!`-4=N;HR8p5T>E->JgFdBFS#Mqeq$fhg z3w%&~wf^xQ79+wX5pCK>MpTWi!u?x$X2EZ0=qK)g(vWLPW9WMbhp7|o$i?qCM zT&f5;{*!qgjuEl6YFZJ&bNK!Ec$^L z*80ovcmVRNnhl&3rs-AOXN;U*wI5i#SH=U8NEG8)bXU1#O_Be8cQRyucmPqnZQ)lb z9@kW=(DzodyW29buH-g3X(a=ng25AW>!w{-%KlwHOmA-!$3$)r!#@C*_7WJnlBeow z-h7+Lu(g<)@Q&e0c~(|lRjKPmk7s~SCflm%iSH-HzV)GVF_Q)Bh(0nIE(&6W-lar6 zh*dnWWQjgqzJ9w`Kmjk{^^Lj@=N&CG@0IaYb=zZS-)?Oj$(T96Gs8dWbFmC(w(RS= z`tx{PwXNe>2FODgT`er<+!_lugQsUI=Q0a)YGwu$388RZA~^+k7GonzI!rmf_`9na zizImYeC?oglUB+_cwbSXJ4QS_lGw&IoAcRo8b{T$4)2+n*p<`JxwPuwqI-G++uv#T z=C}hIQ7ZYm*85Yf1atnol@YBb<~zfNbQ<>f;3fYiuSSxt03?EZaS{4 za!JV5Un~*0#S8CJfGH2;)d|&V+-}N-Kudw1B*Cxug5gHb+yhG1PAI%a8ij=SZM4)4 z^l{QZS#LGNs-dWO19vA8%%L6!E$4uP9CX-Tnl{AZGI;yyt+z7^_Z z{rqP5chvQZYp@K_u^6$U_TNk%T19Q)7mRM@*?3?5{dkR*gPY$rHsxxph)O5oNmAq+ zT9N)MF+%$0daliTFOt8ZcPn5%SgRx3n(NOfE>Zep8*@vEbZ^$fRttt`CV-(+GBcao z1-kVmbu6{dLuW`>Ist1t2cg)?T7i3Y=*rgQq!UQb`$^vn&ZGFU01AQUcuN8D%4u01agMT{RV*K(ajl>M(ViUfd4QKTKhXjE3Y z1n8c2L`h;;;~jTbsY#^)%nh*_yck!yxi-@}|R0g$Pn@8IUBW z4wu0E^r5Q!yJd5v;9!qYAO$s?|A86x?lg42oY~Lp5q$#FE%xLA?th64Z?UbPwWm(+F}_?6}3rstRRrymM%BM?xxh$cOmu^oKa??J2R?(c%!)))$mnz@&FVL9= zn?V`_6Kt5(hK)GL!Q}fQZvML?6FP82NE4BFPF8KB9vO~lUlfZ(PsFjjf5y5l#n$0< znhadlqt+8H+~MT=@j6lU?qs?2i4lw5(9%IBe|1p?qML8E&ay5IF~DO2ZWepwI3B5S z|Ee#h(K0MEaja$g>?P?Q6;jRS-j>1V;>6EXukW5@ zW&GanWY81JL`3}+HY|DC>IL1NR4Hapl+${sU7Wn_ztFtcUc2?B=QROuzbW6@H;~M; z(0xuhJ=!$ry&Y0@5H?);19%6O*K{iZ=JKibBE=r>!PgLC9`9vbyiX!GAq`_b+032) z`S`WP^ByvlQd=@2!RG|&$-2v*K9>=MuH^bOtVjOi6-7NV?)z`26wdDuuCDjIlLwC< z5O^dsFE$7&aNLE#B2ySO2nIiRyZr=>Brdr*mus;3?QFops_Ymik$^!iCKLZ@taAu-$y&} zHN6%W2E;A$h4~P*T;t3Hm+jCr1(V~*5^sf!Cd(x5FJ&y)%6C0koNpJuIw;3% zyAhuU|7w+yl#HxBd~l;?9@*4I`rZBYs7^W4i|MJqu%oVp~7FPqqA zmq|Kq`;%X^bU1dCk{cj;`h;P%*z&xnw&t0td#g1Cl&b!T>d6ukzP0hG_9yc+Q-CO! z5XdIW_AY+txHpsKNd-=_D7zfQb71S*1WNLa`Zo{gULVI<7mkuBN&aPxl9Orva#@%5P!rbcv2*(`T3 zI##`G6$g}3sW$e_z)*ExS#Rm*7=(eG@7(Rye+9<>2^!YOqxIXn9|Eh}lj#(PQsNwV zj<|W{D7(je3s>n0|7i-;)&z%bFE`j!$lHLyqnWaZZp=y7$po`d!7Zcq7T(n@mYogf;6d(a>^s6o!XeMn^jAS?>m1 z^Av=dp4fYh^qKVC^*5BP4v`d#4qBHA6k;iXaDLVigI{&T0U`6`L5Bih8FXr2{l#KmNGp z*iPpwcWs|(=y5CY@g*hj3JGm-0BhrXQ*)ycA$?9yEr-gHyukYf6n60Ki2bC;YU1WY zQz$@d#J-!d6;2}Kkg%~CvZQNO`?Zv1Z{4i!j@1+q-X7;|IP`zmNPJ!r*&$#SYla^$h*Z|cS}{Q)pfO?_w52fGGMvFMnUz*sjc z*VZ;8A@7&uPOm2by&ghtfYn{&)?&*mBw=@ako=;^x;yPp6kX}tg_V&5z9HX;eUYS( zJUf{NhJJfZKq(90(?7`7BHJdvGWiO?@Q+4nGZOdeA4e?Rua<7RfpVwc?8i%mF9{xHX#9;*oiS54IG93kGcj7u{RK71>1tk9a+cdhK(#(@>*c+ZBybkJ4+zJsZ z%MU%gy5?yyUPBH_DHd0(j@$f=SIP;HyU z7c7z`>(b&KlGLJfdOc-v^#mbdyk98P9^&`fVJ~J%$et ztGg)w>VHIcnFdhHby(|l+(Rj=Wl-J=k*y}^(rlMg=cS80RdrDX3NYZmn0;=)yx38W zvIXGXDvDS!S)u{NB`mC{RTd39IMt8tE>fOt?*#%F73@#<&5_gRtxUj4Ycp8*lb~v# zkv5&qsb`o!fVP_zcAsvwV8~$@sw^hnh61D;30m4mSrI6G`wQ`lK^ept_(!`2Hcgc~ zqa2!R!zDupe334X0 zWM85d{Ixlo(a!QT_@~cfR4kYap!*%MBnfDI#>K)!nuPdTvn{d-l5C)u2R?myo7q#um?Jl(cJ>(#cW+4UL2E^J_}E;*;wE3}HR*r~C>_Ff zX3I>#wlOj7CNB#q2&iTs-%a?)15l+6M4D z)c2qhSWZ!WOABWYiS^pR+W%+Td+y&@91b>3X+Hj-y)>!p$zOsc9zL0C|z0s{t7Y90J_a!!A&|`XKRbnf>(U9rdB4U>_yW1#q&5wwGkiTO4p>V5ldLr=ax zu>`>YTJ4cz^OrIPgx1lhQpwL{9hjkFh;Ww!6T`DQY)5wupEpOFAG7)jDv4s>cZ!97 z0?oG_6+f3%^@0c{%D(0UuQ=GQ$VrssyhJ0SpIFu%$vau1#r?`w#5|fMYlDr9^MpC; z8svO;ThdZRuoPAh7S=70x^u`C?E`c3S3?yK3k{xLYyq+mLjPuLh;k(W^ymuKOoWWS zJC-4OEqj}E*RU>4vH^c%OU^EH#+0&B;G42j9({s#>Ys|WlbtH1 zS5BA%{~SsvLK>fEU|tl#1uZsw8#Ev>!Eg$fRyz^O&ytT;^}P zkuPcw(Nh=iv%$Rj+w~HLSDad<#=T^Tp~AT9BlB(u(M&{1K54bd%}EdB{q<-*wuFoH z>KU_Za2U_hZ74AH70qn#?x`W_Y)&!acINL+k)E2t278bKo^n*jO>&^II^-@Mq50(ly)}Ooeo(8-i|0&?-1#l#kUTcU zz@Td6C>g})_b}Mr4N{kvWwImFURz6ET+g>AEZ4F0{_~n7ZT)*JGIeNld^5KDJHjBx za%#TyaIe%$uJ+9>L#6yX7(E@KpA@!eY?$C8{JS#6e-uhy0bm({wC~+V9)gLp4;BrR zyOFe9U3(_@V?Iy28v!OX((yl|bX2Bhg2{?Y|MYs&KBZ`Ot-ljmtenXFIc(6cO`Bb` zJwJu0BSFeLn(pIyAVUX+r^Yy0G>_VIqjX8TZijs+kzpM@^k_~j|1%!tN5_h(Bj?e_)r?U^=74TdZ}1rdRKhhMN&g0N{`ookPjG7&YDF(ls6Fl ziLs(*GF`Xb?Cfn8|8e{=JIn3MbA82*|4yy2+Q6_Q&O{bYEA`t&x#$=XtL?LQ(A$M? zAu5W|>6s&BK>J*v$N{WkU~*-Hf*$l!LmX@QTT{wi(qSfE398{L@b zvOn;w|MPevmFq&NY6xU&KY~rQtAxVY!-pZre`&>jUaCC)ouA(c`r}BfEt9$7t7hht46=}!z(^mG5lnvxLPZB*TebWB}`CF!`;!)HUZmv`0 z8k*Qz9T=(iYm!Ah>_AF2fy4aO`Pt3YJN}Y?p+iD4oML`0MPUpVH?5P~=73~=FyeT? zH@le(<{|Oc0T{A?IB$b`=^m~}xN*8lsOX;IQ}*wGX*WPkIqnL2t{`~5;SU_Xo3mBx z4M9B!^s^IszG=6l+xC#5p;6hg8|8}}t)t+?#4)~TYF?{q6=rW5n+>~JtKI%D*4<%F zMP+3nIypq^SyURnNV6CtXSq%UdE5Nv37G2u@!TEfn)7kyJd!AIJ?t2DYz=Xw9!FDWO3A6BE;(pLJ% z+rh^=?fuPrE)$Zx&s94xIZ{u{5Sa4>rf~9Gr(S|HMRG&m+eyJU(!gs3d`s*l`_W+| z|6_XwPzMroMDgLa=@}yNi_wz7vn|CEdpk)B=X_Y5!#ElX%R&l3r8WRo^3sB*PsSulKGz>J6>b5NV*IXdTtF;2rme4OC!W4Mlryo1q_qk zpKSm!4-D2wtlX_=KYxbzXKiS8ZK&AqMY%B$fH^55b6BisRd;^ek~#25D}O~=Ee4bU zR;z2brP9)hw3vT?DKOk2GwgxDjiN33il_J|xhDXs4zZV&Qxi;I%pfK6H)c)r0jNKj z+Vaw+TIFcEhh2e8+Q~eD7ozCzO{8P0Mm1;j<0SH!{O%8govk)hp}CYg182n0+};n& z8+PkH-HY$8QpLsRy>JE-JrqY)zNRM&x~}`c?Y42N;BPQEK(EJ{{RP)gaq+&2WQJeSzorg++}?4OQOV< zwDV(APk~EQ28)rJL1fkh+V~M*imXuT^>XBl1Q2wgt>K66K#_UX&=VL!;S7}pRuPH* z!wDGMGGzx)?6K6DN*mZDrLG?p5&OXs zvIXt?916NC7XH<^~Ob*NdhB!2Gu zVMscWp$p{+eCOu!2n@4$G-FKziaVOBpFiU=AmsTWTw3!XuH&vi4y!%EVA%`kg9VJT z<>{!s`LCP=X=(5Qpj;I=vuN^w9>0US)afk@{7IfnPqY7q`Iu99U#n`W!<~L9zYrzC zD|D+Zy!oNqvVm)&q~uOUljVh3dlQsX8|Zi7sd!SEH6;1!yV~6qHjZlRb1;%z#5_3p zY#;VVDpZHJol(%1CTZNt&dkcujuOre;;dR}uiK9_@IT&)ovbuqZjz<|3^S_v!fOP# zw?qlAaqVOL5FZx441{O6pqWJh&O_dDmjY8!L+S*zsTo(T^4Rhe7ywtYE zR=Aq$0%c&+GZamd*R+-NDe$Ipql>%JW_>oRs;k(GF#tb|EC3TUYeh2OcdhJ6Ofq>H>Txu z^oAs2oqYrRFx8}~1`mv5|5GDAS>m(hqCpw0dK{8%A4SyMt}L4f!`&wKmAgeDsJNTs zSPiw*6GrT$wndM)uQBrfd zqNQMWtcy6(Qtx}EryNK7;i)S020w7%(sNceBp4j+blm!i2Uk64oBqBE>rXlDsEQVW z+J|_kwWN(lFMdw zn5xH=W|#tTU(H={jm<4@bdI=%3)DuOm8C#HM%Ng!IzRjV9Fqmj<)3&eCHA}nezJVa z>wC>Z50OTAAu$UZm!&slB?t6*pP-)9BQ?y^gMi#^%2GNd|C9S`q|Es`w{+JEMLX^C z)V?;`{u+V)5nTxl)$=bnpJw}u2jAM4P-el0w=|^K%G9ckzUn^Jdnx7#KF~f*Z?wZH zEY&l>^;pjfOj%fx2S2pGrDewRHwc8^eb~rSM&|Iz4y&MI>Gltt8P|{tUi-|?D9$fv zbMB!X;q4`#3%px6N}y^>c7cN`7zBDB<1jO!m|!`xlpZMLc(JAeLq zdQE8R(>gPzfRt;h>wQMnSdMQBIW)M5esl(!2!$y1c|*RB3|~Wkg`68Ss_pHMz%;K znajk^?vN!?HHYp(=7HNH%7gXPZ~G<*=$?*PI)b5QW&8GW3BOPTJOKP|d`p?l7lJa- zGtsvWODX;vfq>VV0m^)lNaQp+?08r^zAM@yQ=GPvES^~QM?9)?^acOGmn|HvC#=Ir zf-b%%u3xW%_^<M^YhAf z>`e+Bk-bA2r^x`acSkaDYkI9=tZzeA;!;)$1o|WZ?L%NTW7;)_c2J&D)s4;;j;Vv9 zHdXaFUlM}km7rsB6S&~s2V4=00>zj}$GIMmxj|UA2v~MYg%9*giE+~A=eqqu9e)P` z?wwA1121KVA))W+WmlpJV9)Mi+e3~r(#EL@BAaXmnj{~z)LD@`4xZrn8Ih*m*JKpw zhdfd|Wy~?JAs48~NUA2f-p=W;W^t^ax3fj73*10|sIUtckxpvDUr*1oaSqKv(%$Wt z2mJpXH4D5^)bfaX6DV%Ph`A>jE*&rhx&JjuW!6m#X}WizUukYJicN4~nJ(IoK}7uV z24&s7{BwnX1V1k5aqmF?bQ`$HfzS2kIRo#5JM}{;U_xbO(Idy=*UtbA@EQ;qzyBt1O)DkP1`+R7!IpXx0 zjM9YF*3n_g*S3efEG$eWOg7At@9m0p(Ot}95d0+?*`)hQ1PP7f-tC{-|GQs?=@YPZ zcv3-s{C*^=_9=*z2=o!GC%9@UKBxhc0)O-8IC2a&@9upVg3%0F;87(!4A!ynAL`O8 znLU#T7G7_6+$9EN9>C{#F?H57o4U{+$dn9!71zG~e7R8!qulIV@aVg|PXnr5fhb;Q zzV4FbVhC+n=Ysji*`Syi8KLH4cog*GFxoB2!hu|we~u&MNb|Lj$3p*B($h?IQDVRo zI;S@-Q-x~!P7wx|MC-_rN4dJCNb%Il2J>-Bo@+y0!`%&Uy0$qcuH|k!qH^w+hr`VX{arEF_hJC7U%Sdz`;w9gSSuov zMd{O#=&N9uC3{}VPTA;PlAqK+nmRyK@G2wuCP>?_L9EnYLgH#aM!j-AUP9e_EG}y? zZ44b(tNkLib~B4%Wa5M(H8V37sC;Di7qrT^QF5yBOE0{Mm#XoK9>jV>OVzgho(gB+ zJ@IMR)g0bQbZs&CQr_21d5$w0jP#_yB%C-i`pN;92amVi>(Jfgce5UqxkaD<>wO9j z85wG4^Jra(?rViH?d%(a|8^t>VLP#DstZ2J#6pKbzZLx!P?(!CNcyTtK?2;#&?~2H zUNf1fl8aJpegz_r96s`~jvwB+opGJG!F=sR{Ydk8Kl%8d7F+a3rO#<@l=&+WCfej+ zgsy}mL3?F>InyNW1ylrolk#rY4`aw&1%)=-?(RzwdogW~cl#DOR#`_ytKjh$@?A&9&;C^7)zA4C_{1--u zen((8S(Da~FjQAdCd;IC9^U#ZKH8-+0r?G%uUot1vBgqc#vf&Ow+0J?EPVHWn(16X zx^RH9)ggXWZY2pQ;lw32rEc1Av#6LDK?Q- zyM_ywz`%0B8rZEb25Vw0J|!=? zJMUAL?)2RI3)sJwNI zJk!3-&~yJ6Nh}5By>O*~D5y0#EY0;hut6nrZ8{^GZ-Dux5mNkDcmp<2j>4X4DQdC^ z&e?8WbV>4ZMie%|UMv8kKTVpEP8y*VV{A*b{p_Maw-ynj)hiDf9fbHzXdh zl)*g<$_@{h^tXuOd^XU)vO(q>J_Q}nu)jiv=PkOO^mF6&SKtjysr3kph@uGR(Q!+= z`73A1O=N1)DPRSEb!$gOq%F?N-G>9vUHGiEXXG)1vE_N2m^ShGQm^%+0^TGcTCfFKt+Di6#T7esd&yW`#;3#KkBT>mV<*?f8_gSaw(<>9iZFu#1+CnrZxNkPM5A-XUfPc ztYu=^SvFh#4~xU_JMmX`ru#AKwSk zS|L+W&p`E`JW&>rBwQ_VcctLRMEsPRm2wQ9pRe*m!-M;OSedLP^sVC;wGktADj50g z6Ll}T)8O^0Tz@sx8`7^iytg)Ck3xQs^1i7}fAMflz1z!tii~`n0>fc~Jn5QZ!k`L% zg?2??1kd^ToafH9PX^8H3-a^ILwZv;7q@6n8YYOGz4XGyR$f`-4`VlQAI%hWS88WJ zo41U9!0-!*+CuQPz#BgiVIFa|=a^K%IAR&-xJULLaL3MjOk#ycwQ-vH#g0i4c1FpM z3!*u>SCzUwo9241(zwrTRc_?7*h|TZ;y0Zwi61A}Ta$k<95dzz848ET^LhkhnNI3G zc0@eUe2MbKB@~bPFvV+q%AzBsIQ2No{T&%wx5<`8ZLM?i0<=DYBs4T3m4L1nO#s$( z>O9}7>(?$RyzrbdnG9zsPaptCY=cwXJ)jX3&yaX`fU@HSWs)*+b&aZo&{uHtu`w&j znYh$5vhh<;Vyo8pvnf>Nb78EzqJ>u&)n@`R(rh8=Z}^DTO>YcoyFOfPyelypPz?WdnT=;0U#TOOPfQ*; z@_8H<9FdgmN+myX&eL)=;@nk+b5YB^C9rwDCAEj@k z7aNQe(1CnB!}^*9N`%s+(NK)I8Lbt?0XW7Xf`6*K8$(?)mo=yHW^UrI;^}GGYcRcZezyAFM92jW4yi$9- zA|0a?rw_=T7*J0PU2DC$w5+rUhM&kQ%uwCaHy^PLPO>mjI&Rk0rx(2gVSLmb9ACN_ zD;;PICpe+HlhLe?=3g?t&&L=P2t>*R8ry3o9YK$fUvX>QOn=F<^k)bdJV3*z_SKol zx?Xa|>f5*fFvJX(Iyy-n32Z+zaMPw1dfpPnXW)C_t^InMTrz5KABl5<$@yi#E)DC- zGb3x%nDn>2$k#*xDKJV?T4+@;4z(oAgL)^>;0-^@OT? z*IE8#g+AVhR|7@FE(6UOKb&4CXDH`1>0H&3h6tzZ>~yx0yq7+)3I9sHN_G-`!7F=` z2y6(d?)f@9VFo+0a265|S@$F{?b+G-LE;#op{TSmC1Ly8WTKnF$T}oGtd)>~<+xl| zs6N6+a(m}RJktjD=Vx7KICX~icya4N^}{SMp8Axddr!^JfArbnz2dBkmhhOZ`^bZp z4eNMu6A|Fp%`@ZwMuP3;7d~KMaQ|C05pdI7O$7@mwS=wvRYHSn#Yr$tY|AQt+&#rp zQpnD4?voPrhN#J8!D`0c2zG{Fuzea(8cSI- z#W+Woy_S}ZuTTv!zC^-ULn>P8MVAgEh(_)~T;g?`>hm%%l6i1ZN$d)m;w?P z!sBYFktp66-%ubwtxb@8PUV#L@T7dC9GHIqxbQ@j2P7#!u|C4`OH=XnmD`QR5z=UC zDPux|%m+{}ol>l%ONOAZwtLu+_nZBh;|*C)fti5Mc0oHdCuDm^`MDdcX>nT%tdAfqu0r{`?hH5n)QFf<=- z-=3sZ#lbcGlznrhQy68mG)7?Vf%eMb-z@|M1{xC9nhx}pUQrRD zMch+*`WIs7*82a-AoaxN48Wl?_n~YD!}=gU5oU{Rr2A%nzAjy#w?&5ac$9rN%QsJ; z*wuv6G)BNs<%-@e6RKN6lOcdMki51|#dm8oaNUT!u;lj+zAC2j^ zQ<>7!2*LzrvURtQnmnFV$O4>ka$zpUd(q0-a66O1x_V2UKjxP%BJ0-n{ITTTxwV>a|<$2Hx zP}liKD2LQQ;qiFzMp<)C)AqS-o8^zz)xC4_X3;=GgEqwy;nQ0owkAuJ;;t8CDSwRh zW@VJw!%irJ7ygPw8W^65{Lk_-lx&0Z*G$_cXgiaSvyf`(U2tV&0lwB{cab7LZ|m(h z-p=VNfyghs^fsEg5!+FFy*=!$&$yvRoEzx+9}ATus`bC$4rp_UnoY+#-wolG-qUrW z!#l{$`}w*kg>h0Fix=1`eCEzgH|7^BlD3*iU-Mm^n|ppkzxJ|RT)kbts@$I-mkPsT zMy)36oWPysK=R=d_}Y8;AxfXNfl!o7UKiMw+t%+oo$NIBMt|V-C>jj|u~)(+z6UIo zIP)I)W4x-wk35#-SGKJFc{|@+# z!_nKw&t^Pq$i?air|nj*UPv=cZD|6}J1!t5N6nRYC;BTVzJcw)QC5_sTFq+cxKR`( z_`uSC3P%m75Qs!V!eTNk4oTprOUz{SzZp?+@lNAJ2MLFssO4KX69=xgP9>d_`T8pB zyd9Ar0GHL94e^nxbY{CRxo+Bfd^UZ&HHFxiDP*CdFu94Yh&yWM2A{Zx6<@Nn=YqA|0@e`|=%!2Vm z@_l{$9Wo!h%DdIH?2NQQPjPMiKV3OQP~Bi#c7-t>P5uJu#Muhe{vv@Ni=a(I>7++@ zBs@qhK@+2AkazB|Zpl$ZSyaSs^ix0K3tw~){ln_d3CZoTVDrpB(2=j7kLwyPNqpOg zt>luP)y*mKu`C`zPCHx}aH-{$xZYd?ErR8c=a%I^V;kk)0qN+Mq8Qb|I40BQL`ISs z8CiZm!nJWs^I)%kn!CBWx8zkzM^sL>ecg&`+}YcRZvBYKb;`oT85I8MHr+x=`80^O zH>$C3X8hTNqNd}X5;X#@san18b^Epd;;+e*d>qNzwb3k1NvN+LayJltKXubxI6to6 z$L1NC12DE1E=iTTE?nuS$>fb$%6dk71v_X{Pd;lko89NVs+l2HR;L4}Am(JFJS0iX zwIe_wn)Y0NUemQBc395|7yp^kt=Igkos~6fp_=F69zw4Yiq`)IlL%F9d+&dqxx{!5 z^6k}ogg#phq22exf*cKG>(;=uJCMdPb7(OU+xwjryl>fL6#9gXZ962lED@2U2srn1REVBx_E>Qos|boE8?B$a0n3I!Bp5Tl zl(`QrHuaz8=mLA2_~1}acXAny7f=mcWdZQ^wBx&~tc~Drli`i*XB{a z?f>fbsqfPwP{4%wf0%mfs3^PdeRu!~X#@nMyIVR%x9ND0yX=Msp8GSTNSTx?3sXEUWBwmm&3byEc^D z^k%JgUyj;PAJh-Ea@vOEbNARYJfzKs2HKZ@8T$UE#_&y#x~_-3(Pog);TTyhRe5Uw zqxkF$8Ddh^H@+6?Z7k*Nh$QAK#O<{T>p_ikY!Hj$Pr5=zm}yL~AN3GT=cmK^g>O!t zCsRY0XVKNHEN4x#j?Sokn+b6p(R9i$o}Kt1D83=u>112 zxHX_A&frnoFZrM{7~LrG%EzEFf^K7hhle$p3=!%n1?&{5BqBzhmcw+ujYe!9*Sddr zrNEkAKrkS-=UD5|_n}8Th@}tWcbvzLMD#VwL@A%lC**IezdUy+Yk1fjp<~Bs?uP?5 zR!U0?uaqpFEomsT;HRWC>65CyG7AG8IJTQ3-|M#pGO>nJzd%hb%9_M&p$UG_^?orK zILdL|v`Vbj=ZvXuD1$&|k2@z`vPo3}&m>GKlk3;&Zw{`!xq^R7QM+}9!!%J3KHxxU zBsOy!E5oioP#k&ht{zpkA|*5PVT zCL!e$44CdYbvGGBUFx(#;U^|=B=bZGWT(LI$_fFAls4$E`aaIufO`;f)4EF<1v=mjNCr8H$8|DU?`c4< z2*bCayIHB%9PQiQV0003m0=|=J76b{+*;AuK+Q3BdF1WE7^|A)R|6scMT?~k8cT=x zl+~tcZmCmLHe;O{Wj-9T@M>m_?LVhd*+yca5AVlq-bn3eYq1cMbkE-OgXaOh{mU!w1he1pBM?nnRhECD79YPcQZP1$SsV|g!sxc#NXRX57kch1{SHRjcz1Dr^2c6Br z*T#-}r|s2aY%+62E9>2-Jb9@_uhp0EtOZ*FzB%CrpN%v1i<@-!IwS8NTdOV#hp1#h z5j3sSaSiaDF;L4NyB~-__W1tBX;BEs6wPPopv~K4GF#kj(8&xBUm?>~;pY}yM z&IZ@-ZI%jGbi(Z1V#bBM_#}c9uWoa1lTpE`&cacQ%xxJ1IWqD{j!muMn=V;4Wg>0ANv&2Tw(mv zF_Hm!7_`t&fMx)kGn9o2C^v$4EsF0t?7$fbfyG1Vjxra8q0>n|1f{p4B^vA_Yzb))QAJi=a6=c z;{$D_xv6$|;UY)}PB2-m_29)>x@uKGv987!?8$$#R94w*4< zk8rt?Bn*bXeAQyORCv2lnB6ibSiu*L&a-a;8mG|Q!^Ayswc1^dH@Oc4MVpX^0nDuI z7{}n=sroUg78}z~(k;@#xb^L>W|5DLte86a$+Bv&GyoH#Q3j&;+o5O}qplI-w{F|f zvjt8FR(KqVF1OC#Fh;!QfKUGK*{^uc(t>Xje%2#j<-A~Mh`WYT6X+^B6uTfqwhij@ z#G&5wJ`@I6RXQ)!>dj_}fj|Uo0!v?Zw%@Dr9PqP^epm_U4GZHBxZZv%2n*Es;m(tL z20!&-LhY2=3M1zu%Z8ZOP0(Ir;(i+xkCXcDK zP9vruj>BkHyM;470yqE^P0Q@6fl7Cv^V(dkM>sg6s%nM}smk*?!i+-Mc+5KR;G=2zZKyLJM zLhsjE_RR2FY5*^PHEI1pM|Gl&~Jywjzh|zOsY88Z;zgm#yx`=a+gLQ8! zQ!F%sC0G2Q7II9oGU_n4DRQK1pQJ$JrvE+t@p}V-PPhb>GQjKz=5|2peRjpqZv-9Xb=+|O0i!sc zM?3A-74c01iX1o*lT@Rk;zQvhp4G130P{hF#Sd{i3%{)lXHI=&@Gpk&2L~lK_t03m zj~1tagBVWBx3v+t$V?g4UW||^xF{5QSOgU4^#|GDG{HTQ{_D&S)H|1cs69?wA|a7= z$gWRaLgL9xRnFnkyUG+7L3{ggu^;xeqn>b}w&p4i_n41bj}G6j7zX{uC5WP;j&zEK4z;Ty7YHj=kPpJcn0m;T2ZNfXbJ5DL^8Xaeg-qhMbEp~(9pN||75RBXc4Ef!#;=;ZydTu}on!wiMTXy&z) z0epfDiX`0{7#2)%TU(D-UG#f)N239Cyq)F;Gr`yG2yL&DT(iUB z)k5CMHL#Tv`YjF$I{NG3nw(dEBRQF5wXHBYyY&0&MiMadB!@><>Fg$t-l_&vc*aDa z%awECaoD)1dU)rK%zyfxtmVenTKsCgLJsJ_90Q7FDo%&>dQkg9U||#3czX^~P)TjG)T`y{#PG276gzKUv;%*NZ1=`4wSJW`XpaAxwJOM1}T6$fX- zA8Fo{Cng?alUb&bW||!AR(S3jZs;3qg0Bq=@jHSot(M@)`IcE;Pxtp?WWkF38K5nC z(-5sczIzWTE}2v!utZxpjP2>L+rqgPkD$Zmh%dEC!(HCgUn9##K76aBX& z^DQI2Ul>+n*~Qe0^a*7x;F;n>0ZP>8w2q{97@cs7@cH@D%=M30*Mmwat!bpIGhIRD zcfjU3Sf}FP&s+WPzIO+Ve_W9Wx&?g&G6yHpCVOWNVMZ}4G@hgYxewl|35TDr(#6pH zwQhkf17GW`Xj!DBcN<@t&5O2bK)U>k*(AKR%Vh}D^ZgI#Cqj{`4=>8Zw0TNy@#hBX zysE5Qs_3o&pIY|k-AVvz!ls-d$`qNpb8+NQvtHh?+{1PK`{#7DydA*H&sp=@(@M+M z2pa(tk_$ayg3fZ0&F>KW;{gZ+b>|SmjzB8f^?NmA@G%DV)0z2+JFT*80jP31i`+Db z3pB!e9YL$kQ=mSiq~pv)J$(AJ%uQpJ2sflq7?zxq+pB*=)Z!d#<&)#gd(4~o{eCTv zA*FvVJ`f1i+iW92Tqmn1a<9ITlJ4vi>LWcWp|2pd> ze`|3PX_%zl^ z4JLsUOmY12THf!-&&1i6ZrpLS39jNtmfPPT8W<<$_&9x>a(85$u_L-n|Bhm8e|@+A zcdm8@C+mJ4u7@Q;9IP4zZ<(dOOmjG8!(YR0~xZyesOA?KSsSj*yD1a?l~QFrAoxo!y@YUQFV5 zUSZemL!udj&|zu$06$=L*KwlRj)uiLt}_g1DvO+uKTFqBNK|@KwG`iUJarSLO0wNR zRh%80lPF!M!|AJ$O#+03C-kh&eOV{I$>H1bum4!!AjbKIc1F8Asv6Wn6`y=A`2cMx z?+mzmjqmJ@e;8ot$XJ^VrC#gRF`i!b0GpnMo0h#7St?ag>UeQq-Kqk>UdZRF@leXt$1rmvvCGY-E#vVl~*OMAwyF(Pp3hvlK>I%^zROzpruSg}9x z48}5wJZFUU9p=!|m9r*W9-v!7v2?R)+3?KZBSr4Z(_IMC_&0Wb=ZC=d)c;@;XGfT+ zOaxQ4*Z5)zewh_owQK+D5(}b{g%@f((>MOQARt4}*@J7}TzBqdxw&V{1wbHTYUMot0Wx`3#$ivW;!|1b-|PmPu+9CkBb(rk3_!4s*QQPs7~iTFbE&7tHdE_@+WavBIMgSaasXXLEd zy6@WBZ%9{|fBZXv-@10*uCA|u+*g_#U?R4I#Dv(>Q?=?kJPJGP43I!ToDtgw()CxZF4<~Tv z<&h@>YY~;Tb%w6_Wk3wGXaAdp67SFND)#w?-4UNvJ|rKa#TV28nFacPa)=UMToxar_mFPgCjtmLDp$`S-KI9{OUjVyP_t9U@BR7I&a&d?(ZL$ubnekcSm&AyDx|S@&tz zWW}&HN?09_!^z0tN#5;!9GOU{it3}H^`9qO4i;xvF>)jqiJ=euf}yj2D!t~bPMhtX z4gc=X{0bA4Mb5wl<^54^;NhcqB^39Yb-yX+zs7)i&>L!Q<%E=FPq@XXfuK9orAU&x z?)DA?^zsYx1wgd;*^p;cM8U@)FiiD7`mO{{~|NePiFUkH} z*9o}J1Qa-e^F{LnN&Mtj8l6Ua{HJ7yBAF1&r1K7QnncLnJP;VT%p^QfYTpbT!qj>j zo68p^PRwa(erzyd45$PLDSMK;rG;Oxe2W+QC2$Yw`>2T=LAVI|^dAt%PMh6M>|6#g zL?UUB*B_s0_E=F@q80V0!*DQV~AiBxos8#(q=TOvk((LmNnbo7?R zB8Jrxw^KjiZ~@>R1n$JCjwId+3;&MotJ*fMSFyu|Ra}S`ZTkllaWwxWBd(d1B7koG z)e66zGMJ?a-f${B9S)DvoW(%Re3k#QzCdStpml1d3tW-k6bxeCxr%4}^iec1!b@NL1#kUu$*+ z`m?c!giV5BIvGJ@b4~fko#LR|Li@-J@dY8!70jI>;v){g3%*6Vb=DFLKjWBUK^wGx za*K3k2Z~}l&Ic9J&D^#|@YKtviCbLKSO;XDbr$exh;I8gWsNq{RP-Z0&Wz0yQgBTK zI)s`H*cGR2(*H*eI3(<}@4`kWJ>I;a0cvvntweh14N*x$$WOpRJMYnA)o8Mhowh(M z8-}HcXR}Pbi=zM)0XWY;gQ;#_$aFqv~0z=}9?7Qw3{KP=6!_KJpUaLqK?uSf1C;eXy(&1I{20zjWT7}w6Ama|k zx}gyMe`Mk3*+)M}Yvt!g#uphfJ$N99k}V=J(se;@gOf~Xw*8WYQ`Rs0#f0X}Z6v0$02lBKwmBJAuoY=U!w9Z{oTRld7jK7`i~k zK;!bGsl5PadDTzPeqsc7J-7D`aH0c?`d3Ztxvbl7BAA1Fg0HI2NCG;(!j-4#-j)L? zinye`O+NVKYtlY3XFHHX-jN~N{glMlF@E%8sm?2dcj?sofn_l74D)*X#Y$meE zVcyZbuOgmJr=8tx`lV>0Q={X_L><`@%i!}HU(y9)an5;oWS743p^PpA1==Lj6!cd4 zYV=LXVh!5dtK;&T?LVm?o!XwLi14#Fe-OaytD{Apuf1_mI1*TNO%bzqhE4&hP*V;~j~|581C0Lt3_Pr0EScI>b3! z3~B4Lpeft7Q7Ylq2md%YB^svcZx30#zCGhSsmM0T#BDo+C$6`m?x8Kyfe|Og)?>vW z`t^O+Wwp-NX^D#&e}+&JAue7W>WOramn+7&1F>@;zWh=K^f*vs2kbmAadMMp{F%{- zpy1GOiJEZWP3D^}@1yY|26m9k)a#Pnj@Quz0^ijb8}%m^d9dx~!W&$Fht2U*>#w|= zUG7$|V^WV?$P3YzO38Iji~a9-1gEm-sy&h{F;Y;LT7(pCBKK1UynfVgICPzYgwHkdw! zq$$?WL$3Awk@YX%ohnX#ZS)(SQy;y#L5e*H6-XdiM~4rODOKF@25iq5g9wEwbpvlr z7s-NVYFFN`u8ULEWII#1n7Arj*G(kX$BeSLoLe-5#T_CI5RJhEV1D|5-1rMM6jsyhGcPO2@3RiYvI-uL?l%^CIYI8G|V}LIa`yO z(}Xfu!oBh6_5qrS4)P{}!2N&E_BTCV8?Nc4lf*Vd)^j)6xcic7WKVz=_Z5o0eBT;43qPrtC!sy3XA zK_CU-A4?01lYP2T>-cct_g=K|6F9s{fW6$xm*^~D{s*TLIQtnk|-1R!yxwO zP@xX@x}JWv&}!AkHv(+yc#$7fPXu`T*7)vdKwR=MDJkzbRGl6;b=a9}4OTh*dD(sV zsR)!_Cf?_j)(n?h15w5w2-RSFJn9u;Jx9Ez3Ld1x)qRl% zDufP;;aw@o{}-Q9?&meoENtXgd6dVlt4RH_>e>Mfsw;9sCRWz@LnzIw8)do^NvfF2 zkb|XPK%%Dy&U4e87NKqD&9en@4LrNh=if>Hy8+w$WP(r4VnR`x9|Kc65J*b-lyg)`(NLUhUcG-k${8i zE5DJS%ycQ+)%jy*m9$-5rH zV5GsYzp|*Vo@S41Tmuj|(d%n2`0QoRnf(LZ5G6tMp-7^O2e%Jm*s9e}PHY592=j)n zH%|GlF4ayvV~X~_Bh7ZsPpGH;1QB-eTuIrCQ>Hz(=?RWH@P$htEIcwLS@Ke1K`>&& z&JvT~(2dsz=xl8vt)~}%xx|DpuK@}@yghEGq#QaYRFhxO&Km65IpDc6ZmKh*yEXiu zFqk1$`>rZm^k)Wx)`8fzc=tegd+3I~<$Y<<6<3V&Mj{t8g#H*RR)irXd;Berp0i7Q zF=DdkCp@dXrz__F-R!S+i-ctRbWu0ftN6V-X5NGIQA}H z<)e5Q)KgXU`E2EBh20#X1VU6k=!ozZ`fdp$Ip(U3272OY&To7dHB#pX#|LG9AYV8y zF%FvHRDsv*4}lG69SqG7dU6ZpZ0tEUQ$XNbconyn1yjwJ;|-XJn#%H+gCnJO;WP*? zk36$#F;VPi#`0$=UJz|R4FH4b07*)#tT3In zk;{}f-k|Z!jU&IPjm_dZ2hhly*u$Q)|M%F0_|fzcsA0vpvVOq4-NLj1FKu0QZ%Q$B zV_i*R-$$XhJx2+fWvq_S?I|(LHtC}wqzWYM#>A|zpRHA%{l3vi_@e(a2|<$VWP;F7 zeli`ePt1Ja5&X2QahRDOd};wIU6t)fFe}eBU8S|uaKoRcp-SfoOVN9+%68BDP8YQ= zM#?&r-VU7Jwc;F%Q3Pqnog8!gtjROkQuYr!`R&xO#uxFu)Ww|M-nXGu=;IO2^4_o3 z2M_os%1p!3-_Y*^4i>w1W@oKE_Kr~VCPAG-&hPG$vGm@Ojv1l(>%(XWb@Td#vf~)| za1XY>!k6Ia1GF7C@XD?80pn3N&jvQLS9_&wc^Ycibtd%tU8!?csrLQN@pFmYc=nOY zUhK~@)~fPxJfrx711dk7oT5Wnu4py&RyJ<8{%+Y(NO~YI?o&nY`I*~!4W1GZA^9ix z_6Z&tZXVIv=lGx(KT!Vu04y#RnmU#cP9;Nyxkw&_|Nb{F!YRs$#p02`lxCi_*ZC4s znClWz-tf7`Fexmu2+*a`=Jd;?Xpr?DLF=Q@Gzq?CC}H(3%a^2R?@g?wtrhqVxwx)V z=wbklP{R>^BKeggLx&?=0^Qy)a`I*wKSImx>UsUb7I3WElOFiHl+J>Phz&ikgkk)n z6WSXk{Ap_1N*tF{HI%M~~ zo%Sh(OG+q(p#NmChB_ngcN(uHaSl;PPI>nPbWsy1HjUS`8RDgeH2k{*LI5^yNH&ME)}(%_gh6y4ia44>)fg z2>dmHaF$_Bte?5QoLFy7B)iKG4D*eHgSAt?y8Gf&4FwpUF?aCydhX==!V``RVTzna zu~qUV9urZ_(BBOipu}inoHpwZ%#^KWDu!-^Q)6)FTut}adiYOb$ZIU)#xu}<1}Q4a z9Izp*pWQx;HU!+^>#Fj-;AC*|0k1L+CLd<5<(bmo4*=ps$bRxBAVJV5Nc6IJi2xDNcv)f1)7eI3*E@lC`_*a(9uRCGH zd$JGaq3%8gChtd+hxD~&`@q!iFgkSH5`cVHJaobYbbYGe*S^|bx?XX1I~3+ybbPj+ zx@;Iw84jVl%6KFjN00rXVHAoH;nk@Tbfr^<_IV>MXpJikTTZ6urI#DsxM+I*M&ZU_ zPY6Wr$~G+amUEO)=Sw9zjn=pBY)($-U3krnRY=Rc-87H@Oh68+acTy=0B3>JY#q{2EJU506gjAf3lbw+KK%?O-1rII7oGY@-`+>H3_y1Op{-yP{A2P? zKj^!0DgBk2nVP7Wz&jYpTMhzNDz%TC6~_}b77c6nfP&Pzz4GfPa)X`b( zl{UTEu)Fn2@PGV?_2}>_FfUybfKI0S4g`TdyT+LF5DG!67R)r!cO&unm)+D)Qei69 zPE3@Z&eEm=>SQFWM(+2J9mAP&4zDy94Si9(DjHyxTS7%@-yhlm@(QuSE9J!l-o-k1 z@X`-_yt!f4RWyT##s=4Y{Rry6-IDep#J5@k0+#ohN-b!LV~VIm)S+ zJh3huxKf#S4W^7@0a(BBp5tHwdTbt_BzQ$EX~4Lih4Yr?Ds9SY1&Y zOWcjBFdD78GH1uWAh#a6SNIOFr34^utg~Skf0kMC50LS-0hn*up%{TfzwH@u(W+YRKy>{_%ATLZEeJWWU!j*BGJ54JIuh zIG2Q~0eH)#EuK3~Gm=|&Q@98sFs1xRx3Tl;xUThW0Y6a*)aaIx zM^MGE#>(P1_l`;#-1BuxZk^9~ozJ01)Po!d%K+yfnoRHz8VnEec6=c8vc*5dZ<2=c z>*=HfJ7IHQ+@LUB-=K8YMBdnY96)m8g&FZJ3n2yvqR|Ow4cDz03x4GT(~Ddf(bHiY z2eQtkg+VGdD53-)<^@6eO^sdUeOfro&GO$H@=21dl}7Ri#|&>2^C;n2*24M?MYjeB zrrk%+HK)_Q<{w0fYMon_HMzp3%&cX6^|Q-zSm9Z^2`2hYiLbooxC6^n}nkYOcA8unrZuY_KB{D?&pWG(qJBgv4t=JAn;)_W3i$3V)}+>e117zu(VlM7mwVk0xO6^R8 z^@8@kOEW&AGV~$>Z_FUO{us2?n3&P9Lsatrz>K@Zr4W+`Ugw%Zhw(Udx6j7yyUZh~ zRGHCS;kZ44Th`E-2hbO+Lj8(h6F#qv(J96-0XYZD(;X_W}g} zO$H=85#J*~2J(g7^rIB=8< z&j|_v!>#{-5Gsq%U0}Jey zJyUYVR{Wp&-aNiR6=FDN@eeI~^)Qd>`;O*+hGUQ!p+lE5$Y<^T7?KQpI>Wo;;wKvH zJunuDte`*@^JS5e<+Jn4&GUXuS)=Xt0zCYL!u4aa7HUQBY|LF{WEctTUlVyovh-r|$|*~2|7KB@bw!XVZjQ5F@dT0T5U zYOm_8muD_vH$Kpv;UmQFB@FLx9E&MHeqS-d=1d+^nap9_Gt*wPY}S~)AT3wiBq!QI z=#^(EkyW50KA?mXfQZ&pu9IC)hL?z`$6hUkGFwl^xi z7A|aN#?Qk%aI?1_SqHuwQF7xuJxhsX`R~U+ikj!b4C^^4_WejXk@mlO=9fJ>{eH3A z-k`{m!K0)J7Sdx7I%A>M&Z`{YS~8iWi?DjKN}t)16P=O{&<6Be#;&cvrG2WZ9oTo} zpR=Z#0fIVv-6UZ0xtdcRY?N0*f0^leV`!u3T-R=#<1Jwe#@5xv*jt#-$o!?kXrC#G zApf$T0)l81*n$w=L2eE?w>gxlKI-l2?A8C@Ax2{UqKN>;98`>;S5jEA^ zH#fBsz8$f6+2<#nJO8r(ShrCqfB#yZ?v~GKKl?Q(L6$%@M*l+wL$~(|rpE#D0qoF? z@qZiw{XqS82Zst@_SAUO1;q5G-)luUA7>GOg7bsoq`Ye}o+)Uxv`s1F<&l!o^<10x;&=TawO@tc5ZodHhA!w>Af^DLJ_V4$a2dF3ZJa;JFANj;vBQ4W8&Kzmhr^zN zDKvMAO!e!NejdVidzo-td#Hv8iy+W;eh3zVIg4N|_Y?5XF{O#XGI&ecOH)wPyB<1< zLggNUk64|UOVw3#DmCn}gIm|Q=l5Ab$mx2a!O=VRP#VDjk+xHM z40HzPZ;_|b2rEqPuMtu!`LCuxS&Mg7V`S$z#FiBfH1HAz!37tORlZDC99)P{(t?NR zOyQuLFKk8-e%^HPu!HklRONs`_9v{)K>L}MbF?|Z|HmB29>HA9fJ1y;8-^pJQ9)H& zS41=g)PyWtGv*x}`OY=CW9v@ZZ@>ZMe^UR4Tr8lcCjJLuV>#TBJ2&KL-{QLAnrh^w z%LrTM<2P1}PSLhOr|h@=z`w$M??4lurP~bg>5RN0wP-jn*>nw8Np|HaGCvQw!u^(a zAMCKC&)>E~RhRFJDSent1)n4L zt1a1JsTrfwTkX))onJ`8Q+&U|qT@ArFrp;PQxvm>v^Cja@ z)?Gosc$<}$*yjI{GS9^sGqv5sXr%RC*%bglrbeV@G8cKv^Uz%_UkY*X@mBiX#uF4* z#{Hz1E7pgVj#yR{D)~gFr}QBG`lN}p@R4!FkS*edEz?gX_MF_hJShV0KM4zCPjB={ zDbf}j3sf%q?V#rW71saTX=Z)dL{Rx5vWDjJ@R{ldssHN>)s#KmE0h7V=}^OacU5NAj2`{ z-om5?jkx9jpz^O8Dsk&fcmIWD0{+3+Xu-k*yY!3*`l7FYmi0QVyO7YEy4C#TE&uyF zkc1XHQ1n~Oqqgtd)AgD$Q`-zD7#IN)|49ji#(LM@+Yc5BC_dBs`j5qv_NE^H;b#Wo zUX5_oX{r^T9;jV@E_~Isb z{$3n5fSxAXKO6@1j>L0CsdSVz>DwouTx5_$QYjg(cR%oifOG(&$~j=j=WA36J>kDm z;{Jg{f`Q_CoBJBe<;TzS#&Dcjy@oHTD5?+|V>+yG=g<+@UiohXwqo6HUtf<`JQ8=* z4TY<4SDj+}S4l ztmh-WuKWq^`trvMsK)Tn+?)n=#&66p<70)btSlH;bcY{T?zdF)lE1pl->g=sKi_9M zDU>|4dEP#Hsa9#9s;{lJ=?X1pCDtVz%Yc!08D^~`h0PkxbuNLHlSG^w~qtK-j)Gz6pEUa|>ZA{Cvsoo`rWd%6%Jk9{RH zLne|PJe}K~f3NQa2`zU8`b^hk^^Dw|c77U-oV(#LyxNH;SK znl6@W@6CEvXW*}@;^3f}*lrkbbu?-0;();ucFaBbWdh+RwThvjX zEZZnJQk+W$tH%v&Nu^K=wukGTZ;R-W>W{#_imr3Y^5Z}FxH7KmYX~?ZD6e0xcw%|I zn~F{oSK6wOs7wF|`>3hi6A{h%nC*HReWzh&POfKYqv2+gHXHe0)r zre#${(C%y#?hSZ=JLcb8qavfj2gXRfa0(c(gts zKWfKce4FEmFRym{C?*g$stDFnR@sGT*H*}gZ?c-QTf0dM&Gxvy@5x%yI>l*U4UrO5 zl)f*xx4C^atZcD#cHDHa`3!U|r!MlcbBE|kL8LF*2UhGqpNwVPFWgJHIXpnV{h4(F zX3WYAHcK%{I*P|nv(st)(xojvMN9O(vwwfsb=C9PG*>7wIQYJH;#L#awcynJ$fzT4 z2FzY!o^R$R-f`zkkc1vxE5MdSrTz#aKiETSn(KOC2~Ojs(N-B6 zb6!-H;bEl3cZI!FJ_`7=XRm(ob&9yW$Fb?^S%emNaVIizauvD{V2+X{nIT#!*P^+$ zL9Qz3fx#jQ^ZYsXq3YoRzVptrW~DR?gB3Pv`=FKwISez)<%t3)6Jh+yE4ytM$>_;k`7MGM#2 z#jaup{!ii8DzE*{HmRP|elrGLM!wxdf^iHEypa*XbmjES)YL@Z;gJ-g_J<*x2rq@l zxjD@_CAo_fsppE|nYE#Iq~jwL5Xjn^EAb_I`zEsALHA}{$oJ3FhU0Gau!SyTOF}K< zV6@<(E*K2_rI3=-q!aQ(4aD3dAKSggT#%Czl=SV%rjGD(k zg;I?39**0}U%b2>?GU2&WlFSys_nlN*Y>@Rrhn8LlZr|b{;B!3h$wS8l9!uq%%vyKtq)R%~!7uZBdR`lH6n$w6H&qgZ=pISmbt2=$anEibm2v6md^nGgf%00fxl*P+Wn#buddhd-Rt{+Y|fYgpf! z1XzMdZ%+BX?58t_Ks0_MmDGt@V>VA33+7ak7n-hn*GXu$<2k#PrdFJt=d%mr&TWg~ zec=7kcyo;l?*G1cy;n`Y6YMvfy}h6vuF(C%dAx*n{OfyzzynmGKP{DL?o-K?h1(j@ zuA5V{T#2@3e&DV`8iU!X6_>l8m$pLAi+$szfwrD82lz`!yN$bgUN1P>1Ar#{x75sL zVapj!9Te6|%cgGGpMN~rr*&73r1EPhGwWUE(df#BV)px7@Hy8lji)yB`25rY^P%ZG zcD;N~(RFt@0bA&t9~xBb_)uO8jiTbbPIt}gJ4+l1|L@y74=ZZ@Rb_Jc+^XyncjyBz zbPIOBsa@J}`#ejRG@GfmeE=GMSBFf^ViX`lvUX>y9=b;4oD`b(C%TZvTBv}bEiTzf z#e?(G7m)U3AtH!|w_jz;nPNP{FVw%&g8r`Z#Y04m4&T?364OGd(1JNa%I5a25&XH4 zyqHzZ1asy`q{Pa?9^S;tXf?COtoB0&6qH8W`-?6+z<9kJv**N5@s8FqQrz3it*R)$ znmDZ8=U5W{ojvz=;l|8jR}U>`&v43xRXSHmKB#2Kwtqq)a$oOsIIZ4XolL|^k_S)C z9>x?TLSEQX7x~1-2R8avS_B_|PiH$$p3SIK0yrV9JyUCKn({PliS_YC$8CXLzceH?y2J2OP-7SZ~GwsL2VDHqmVzdkg@40 z1z*^5aH?Ny?T~553T8GSIT2~TCMMwO(x z9{+(yQP=uJ7j~i*r!CT+Lt^Ee99Nx<)s)%r#8!!}+wIe$`LfFyEsjvZTKh9z#U;Oz zTytK&FAWE=?8&S5M%kVp6<6Xw^2_7nN$vj~7XCmulE%{R?hV6OH2F|MnGbEjFg`Wk z(G0iF`_Mgs`%#rI%F19ZKgyWIu4CG*oUdupM7ql^hkIyxzJquGdTXYjG;fUlm9KEY zRdR0t_I8hj1U6v(9oq4CB^&p_mK$;{vmeYl!yV*kt5l}%=THCK-K9toI7ch$Hq)*@ z3Y#k^%X1F2F@-7jTyw39h#}v-QFrn@V#vd{J zoc)ga|NV%SDQr2~Oq%DTE~c(rQ8JjazO}?B)WrC3ch^?t;;Mv}mR46zR*GkNbOd6} z>L>L+M7t5FLJ!_UMbmd)O?n;~nWiS%WR0P?ca|1ZvwW6Rha;{B|D8necU9}Dsda*P zDg|h1>Gip+uEFuAm4iG984lnPe*4!z{PyyEXAUI^aJVT8Uy4?Pob{&G?n9Qgkl)>t zQ%es{=H)Nn;bbc+&RYyhc;(B*L~k;mdr>Jt){d=A=4~)rru*Niynokve)Uhf*|{$J z@oM5o`eCjEY1g^LBWlhKtV2kLU8PHiv6kBF*C9mp!4PIZz!HMH42~?evKw7@R{M1S zKla}HtEuJtA5N%BSDHvwLzAZTjwp(uiU@=r>Am+Fo!HvzWLmzjXHFhI&8#iwjh~URbxxBz?kyNiODiZJwp6mI z_Qq;LU4;3i#?#xN>#IyF`=`x&&EXr0|E&!zYZ#KTJ~Dg+p`Y1uk*-(#C7J)S zuEK4s!xjj0pRJS2IGRGGJk8bW8ubd*j^S<2N42kKn`j464YtRBvjmE4+1iR|dF&N& z?5ss-ZI@sSo_ly|o~n(Hmyb*ZTfcmlanR_wZMd=cU%aZW*d!WD{<@GIBHhmy&mWwf z{@h$VZ8Cq#87hqWron6at7z*>NwwEueL1_6jM!nvse0v)0jh1InVOBc*Hv1mEVtC@=bsxIwF~4oryjbM;WRAT7UX`hbw0jm7VajiQ$saxN-B826SAIQ$#JrJ! z#4?U!RpZ(Lp=^)u-4RV%EW(+!j@=8}x&v(4l?Rzq-mAPap}$;cdHlIB-Rd5$LJd+9 zILAWY6tCmoHJdwX+w4>uvk|Ks3cN-QcdiPE{&yC@;XIVkJ@3!sWYQx5A5EL(r?iYi zjtn^$dY|NbmoYdSiP3WSd6{xN{pFA|_R&kifIJ*0$`?Q8MP6ln^q?(x`XfQ`{igoQ zvB8+H&%cK~-yjYaqD?g7SZnMgUpd=<;39($n|XFduPLS>dTBto6`t^*e;Xe${biaG zIDDMD{Y~nKfmPlo;!YjA&W0t5mP~d2U7m(%_8Sg4DMOIgBXZ#en3 zmd8O+>j|uwmpekuGD+^JRHqbt{7fyleqQl-?V@dOETZfEpUZduA@6^G|BnOz&N4p;&F+Q#Yhs zw=^#Zm)zVL;fwvQw7kxf_(WDD{fjQLr7}|1cZ~i*bVP7eP2RaQlfwOdvFm z=63o_xB-fX-gZ1bEC)us3LL@ zim}yF1P}lS-PjYC-fjxuqg@rH)L3^Ht6Zvo76uEOg}P|r=mS-|%43e* z2-I+_Zb8qgm3S-P|2GY~O%s<8pv^WfHFk%P_1`$fR4dU|UW@qWHG;zjRrkwxno5cArBE_`RD)p!yUFH}UNezz=vhUnw!DFUS?i zY7_zccnmp38ATxY54#{rGqN3`Es7ZPI+`zG@^>%=#u3tS<=hS87>f-qU>bD3M=;Vn zYTlZCfHy(D$s4E`AQC29tJ`F4KLN!svF<%9G>=rq(ouCNwTN%Co4j`W$XP=*K0DK{ z*~>|l7MLP4rj-|9BI;mbt(^h}0@it1g@&#^FbuxvuZuLOCFoA^M+B)xt|Kx?b%X96X_?wSa_kl? zp~r|E2L4CGiw}Q8l*VNN!IX??Yye;QeFO;|lO=I-(~r&wX)-2Nn8VpvOjJVuia~4kSTD>5VLv8^bF~A_V#4>LXLPA;s1E?&5dhHAnXdD4Iogol8GyO;C_w>wCmm0@z z#pP=6hjKT_=Z>zpx~5vEE-CT)`y&OA=Nk}D>I2|~6;|d`<}%eBi(?a7jB%1rJ#?qq zB*#Td5QnKKC~l|QquV$3mkfc6k|^X-`OsxhS3<0a%_1td@g8Q{80g*r?;wbvNg8up zM+0X4c5LgV$C1&V0w_S(K+PY8)rd{u@i*I`(_WZ|_}d_9YiK-(>Ud8LN*@8!W^NvR zy3kYEkdQoMeVLj^TX5m%QEHiMZYm8m$iFzYl(9^IYXOXV5XcF|9k6J#1tVFz{CWX1 zumF6tWH>X#-(`cY0^H1nIUsN$_!dT?^pRkD;J?!9Qm@?WU+w4ie@yTOFm6&ocvZ!? z0?<5D7PL{ub9wpk{1FhBOL;ecgK}gE6LzY*+_7fq| z_IM+c_?MJ_cjKn*@d`3?CqYQj+FXKiNG256RF9f(9I&X;G9MFxDr^WeMo&UqUD%0k z1_UCNH|SzI%^|0-4Z7|8M6PGjyYMniq#4kN)JX?qx$ zazf*X$KP~=?gu*l$*Efvt{oCOCEGzi5)*R7WDIx@V10idb5G97b|7Cv$}wv>Pk@hL zHNeYX4@!5fR((mXc;h~uzSLhGx>dSbK{WQoG(FZkX>H&iM~%>2i5~_O;{BdTcTkB_ zkiHT?%vdL&-U)JLdqdtq+3?)J;HkEiu|Ph!Lc@;sP{GCVTJV=cF5op4K?S^N+Bnaf z61kK!M{&n)lL$5BD$nU8#9V8i-gyxil0ld%7nmxWFx4FasA9@ddBY(G1+4oxx%%Sr z+*`8Whp-B?m!Ihr%2QS}#G|+Sd)FZM=@A4kpF1=M;AyQidGNTY*-buw3%TJ|~kol~oc}RnR z_GQ%v0@f*s4z|bJ_+~DqjPDe_qTT?0GGgt1hBnG>Lt%tx@pF(S9(Oo_s{BfBOjxzj z>WhT)->LCQlC|9ahRD#ArB=ZmTV+BhhB4!YF8j8nyMID#%crYISqH>KjkZb;9i7=8 zfgMk?6PDCjc8&oPK439bAQYr4p3lEOTFr1kc0y8Oj-RD{*kVa43y~-mIN=9^@S4{)DXX83xN9#8s=)-;bbL`f{4-Sp}os=igeIaPs zQx8L=uIL$y(bN5>NV$ZW#3fHCP4yK55OQ)b;GLY4ReAC_JHj{uTQ97+KhNv`7`fW{ zeG>p?I)LdmxvKB8LoXdSxGJlQ3#;iOsWuh3YZg(7<6uk5dDBAfx~q*G!;u1rNq0^O6h}4;o7c1<8pWl ztd(Ax1wd2FrH|0E^}?9Pe;gwSEvf(r2!czP8IdK4KlsjP4hCh!5HY!lt|6O&a1SE~ z!aZSLkUqAslo)ba3;{j`oRAc$AlAw~7�?2Z<9`qVTcBF5?6-3Xs3|51 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 ZR95>6eC+W* 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

y7tS#*?r>gItICQh-0uQg@L;sRUq zy29uWyM{+`eUWRL_~aW(Qw#%|wLqYtlaP}!LpmwKS~kE~_{&lwV;hKM{C6m$ljwH1 zDo?`B#KgZ9Kn}evpDRmj=O<2WG&cHu2WIk7teh3L*oSk-IU2v|DpD4{H>Tit*WRs$ z^Q@^lnk05Ct-HS+l%^de*6>%{G3dQRK*!N)fL5kjM@H}!b2TN?BWYFL98Q$vtQ09%fQ~AO1RTn$ic0K#?zewRsDmOi+FE6!pEJBRx+#=kL~1OmB{qY70ksSL`q zzH?`WQJ9`z59+2P{gKHwtCPi74v@;L#?TKZ^{7Sd?`W1JE|BOnO6A*vSa{h*QgOoM zu!}8|i#Bus*58y!l9vq#oM>Gl6?NJ-J9Y32Ys%2&xE3p97@tV%D~_UR6A+4(gnE^pDv-`sDVdc^=8_S-Q?7 zGInDUj~IN`CxyuDpH1lQaFG0;iPuNSZg}0UTZ#eh?K$hH>+mGrAi{y6S757odD2m- zYO+T(vnUr~H@{@Ue2|_t8*a2BZSwpmiBm5xOTu=|rA%`0vu5`m($F`?P*^|zGa-IG zr%a)4rLydahC4KQeQkSY%%Q$EcZsFSM~?3%p#r!%D8!0F@O~+fGswbseLW2E{S4v7 z7w|^}g4-4JkqP=3$qnn@^gYavH7_gAXfZoQjRT@3jiqDuzDixBpRYeoTP5v{i#|%J zyHwO`VUj^HXZm7BN^eDyc7n&*hs%ip*~H!+Ub>;1Upw2Jhwj)FAN|*TD=)m z!z8|+YA;_{y@R<@r%L~eid!wXvx*Mzaf!F>0j}Io$X>A@jEGr3WNjdsU0Fr>^jls- z7T>cHojzWj74wqS*uX6pBKHPiUs0?#?P#m7B%f!)IKV-c*eJ|8HHOKlFYqsOyM|v4 zn;i{PMQ8bFGbp$;hJNPb_>abVDsXeWzbHB|4kVNe!d zgl($ijP-h1F!L~vnuQ%0VkP1+d5-x~j{5X>V{X)sF-x&WD{`_@+X`~!C*o_${@z|| z6bM|HO}E^vl~7(#?VDSmiDDwB%zNCA)+7?qSb4MWgAR}Cp+n+}dtbQ|bC^+NnJV7w zAXg`8zqY7>`TTmb_wUNGvo3%1v*_4gMB3T-T;XEqA*1J0e(w=>d*5$=+hBi}4?k8i zC&1DD#rljaO-;TI8`sh{O+UD4;!i|5sRj;zjH_&4T1o#z8oZs@l7b*l!ftz4Ws=GI zG8C;`U<(|fIg^w=#T(c&H}y0j-cr7fLw>#c5iNtHON@-4a)gccx^$O2?Z>_w32Y9J zrvE0A?ALtU+hY>y?bp@>oYs8kMT^8nNEWiCY#=y5+`BOkNI27QcgHpv(C^UN6RYc<)aO z$>zD>GE~k=OL|&tk=n^gSPrklN+DOA89LdK5}xq$gQ-VlfR>Zbu8*_*=(s-h>2e9d zcC5Kt?k&@*u@#q!bi1z}vr7z5NQ@k&-q2b<#7&z@_Unn`dnE!l9;Lhe<&Uo%Dap)o z>o|_-cMvo%tr!~)6)5trlx8PRw-=45kQ<&P}Jyvadb z-F>WfH&rV}FXBE*US;O|#uN(mAuIGRB{ev^#8bat*WcTnZ=vxQ=JO9y?`zvL3Ex*d zb}AWW81%P&`0>|6DLmX>Ord;iROHN5pe%l9OWleg^DAQmdY-@=j9WaOG@yXi_s7!Uh7X?{8UC!dy4k?e<6*;A&8vZ(Fi4bsFBNMSB%*@}Jg z*&GmT>iey~F{{%%;r1~(Z^_&MMBWd#3JS0r;andb1$>uy#%Lyg4 zu?YIOJZ+C^fyDdEQ*^Npj#-B3M^m5B5=q4oFvG~emZv)q)ThvOase`yVs4*_P6J`& z-!6pP>=1PCM8cr4@8o6n6E{{zMYx$S83LqE_@d_DBt{ZudY7UXn%JK$WRfVaz-77K zpWadf!?44HGY4|OW!#F~ILYl}LMSaQSxIC38uLPsNf8G9dKLHF`5rGd zrmyF1kH9YsGlXbwg59!HH;vbe8GBQM$wLyELOps9N2CvAClwNtubosw;I2T45|@Gf z$lQB)IOzj$J~J%-Dk3*!EfQ zw2_vcmf4MJwPz@-R)T4jv|@Q}SGe&V1LD-*CWiij%&fMH2*kow*7FmMm963VZ!qT2 zdFUyb>)8H5PaF}0D)hOGZ@p2M{cJA@jjf8FlF2UC*7J0r?071r@=fm{Q()QA!n8b- zf@ksr4mD>>(}%v$-)=)RMMI(6gZVsqb7&Atw3b|!LUc4(6ITsXe|F%-?z(7^HXPiy z8(QY&Id=ZtaIGH@7mRfyncFaYn3BPT)Pjoatl)mwb$|Da*l+h!c=}+%BMwg;U8#lH z16-4JUngP-)p>2j(L4<4lz%T6Zig5vuVP1oWGaKa%re`jJd zT=aDL6)-N-j-bgQVd8Wq)WEkRsP}-Jx)OQyoJ_vA2AH1UKpgm0K`WL!tLgQ<>y-W6 z6eE|$LEIEf*jhwFVvty;TkBf7orhS<369%2)F%ry6kkJpg#BQf3hl=%Lxq;XTA^Pl zH0#P?=+*ed#F$P4&n%&&OLkpTeRRF1&3qO%JfJ{JO;YmKP+fd@eBFdFd0)M~;9>Fo z+dkt_`7T8t12d<(f4rHi@0n@}Y;Vsed<$@&sDw{2%6X!Q8pMCw|?t#uDw(T>gRN(H%= zqWPqBo(twNM;`A6Rh!Z)ZERY2!@~*}Br=oq>E$cUjNW_~Ljte-{)oQHtfL)|EC=n+ z@XPN%*Ox_cYG-c2u|N^$cLTpMAdaBQWdM^acenj6!zI2z)7k#N_P#W%scZW?R$KI1 zp5iRg3462Oy>j=L_vaq zfCIHu(Bc7KFT1UGff$9G~T zaAk5bs$_ddbNTGihV+GGu{R>$~ zI2r{)-cQN-t~BQ}C(M#}Xo?^6%vl)^caMzbo4O>AYjSU8EspY3%2Zae>Vf7l?eM*9 zmraZMThe4}eD02Q1rjxmSQb`z%`cWGf4Qe?^tzw5*6Wgw**0OI`dH4RAMe$SFi&{c zeLQ-gP1|g8BBD5_y5H7*ve}Cm$|e(7P3`p|^`xUL|IDbOmM4W-T)6 zI!E}YrC7W#G%NUPEOLA5A@BaF<$jy~CgpNClK6`Jh>oZJam1~iILrd&0PpPkb^ z$B*N4f6RZ+!doqPV)mB9w?ob`?S!(SnkU#v54(k{+V@wMGVxDmELvvX@WN|Sb<6Tl ztwmti`X>D2Z)$;r6a9b^t%TtD{X*Z2ma6_fiDy$Y*`czhqSxbJltnaT{A9Iu^31s| zhirj6zn+xNY`L))!jzV(kTjWt@YkW5iJdjQ#3syAY?HuCJ9`$~yj71JO%u}Zgv4DE z>~2{1MpTcKEKh59jV~FhQSGeRNNi7Isy}M=frXzrgmb2f^Y?Z?_1|}|>ji0&7J79i z?!D@j}kc|K)sn}jP9{2Hphv43I2;GP}2S^CVuowxapbK{CB+Nwah4jy8#=0?sgMVzalp z?_s)DToOd^JAYpp3_;)Mo{#>$uCV_>f3Hhg(nKmdtaf7NNZWbB9u7zcyxVpMr=PdU zpDYuw8rDAcyLD^VT=T!yr-Zo__d0wNTOOzWmHdgYH?G?+ZRa@Qy+?nDKtgH<9suB4 zk%ve}yOVtWSw^`zYD_GG51HNqq8ckz)M9qhUOYjMMPS$(p zj^0b!!ZZ*kz8mFxwC0J^%qZ8xLMrQn0$l0*IRd86h1jWmWsV`~6>A*>~`KvLSfNb?ee>SYUp2HNL?9R%}|`slOFAr>(G;yELz7@B1;= zV~zRf;GU2E9^)q)y0kW_AD1kR4vs7Bn#un<)z`&c-0qWMw`RVgqWsJ4xz&T;30xwI zi}p=co;nwLu-WTR!Sml&G87d$!T@*p*RF;%eDYCg@Q#vaw@&({^j*lY{r6NsZ|L2G zmiH`i=hZfgq<40fOPpQXcl)>g8WU$UJWehXs@FYV=2k2A+Hvv_KO^U#KYM%Hhn-Vg z^J*A!k$JZ+PHVS}`^G;mFTeTgpJqqw`>x?qR%wu6o-icU*R{}YWfQpeS;4YUmDv&&~{vFgyP$IoGu7e$E>QZ9TJE-pi6W zL*|a6XO{FU*R>f|lBW9~?Cn_>(K9~u2eB$GzJMv{Quf!46J@5AE)o9eMXRDFCx6NL zG3`{^-?n-LF>|Zgj#$3*@pAAE3(Hm&77ZzzzWZq9x=XU^Tb1i_+7^doG(^gk>Zanf zc9XcmP0D5It!vK5{B=uth{eBYBTSYL3rDV$zt9xLn8}C2Mqa#+^{V&p+P;-oQoh6w zb8gFS`pILhJjZ6Is^JaphnyhhRC~Dp&Y-S(bUSvcSmJzdQ)Vmb{k)FOOn<4 zUSQZ~04qc4wy8r-@1|Oo&;B=gE6nbVxgT0tU02=D+WE$kCy$=iPOd-?{crhS3j8kx z{+}pdCWZ7G#?kQ-vJuh-R@&yHyH=tr`wyUm=*HGqd=zr*V#DR6FP!ncbQu{~uX$cx zI5-w@X+d?x>>u8^Fnh=7vV(%(b{B2ir(D?dufslzR^9rvd8zeVyGKrvMK)L1-dD2! z$q#D7u7nnpUmg7SF_HDs2A5kW%3dzNZ9O{K9v!p3?(C_6ZwE$W>e7eLZj6@|AeygjcPgkUjF#EUdWPt6hth`T{cZHUekNL z8NrFCu)Wy!Ty&6$3NID?n4FxKx!N3j8LE`u0BEOtr>9de6E-`lL>+%H_0+g1Sl*%?8ERP7ZCF)QlMv%`p^{ZbFtM6C}Uu33dwg8B`g&(h8W#~T$`p;u#%W{}8 zG&$^kgn-u#F5cEEYYU|$jO3KN#Y+B?3o z!3WmTGSgQF(af^4K=mK=+PTrN_SSQfd<%nU_5BHtwd@b!*BBn-pvO{-*o)n0ddSc^ zM> z=0-FTiIJ!6>p!LcAdy(Cqbau?^)=s$#o@fNu30m!8SeL8+4Y7s%z@slug}F24ayJ? zV#8bFK6n?OZDJ6Tcpx6n%Yr5BH>jl*^q126GZ}AKgCC5`%>lJMOS4~#$aG1#Prc6Y zm?e7b$O^|uQ#e(jO7L3fjNKVeY%(Yafu1^T#mQPjuM7VMI>XXEef%<B-fidBm4rkhK_E9zreqD~MWyI4psAoOyPbyhnEyegS@p z7ldas7`pcYoC*I`hP`5V+z&%H+by;Uhv}ZvXTu7Y`)m=upno#6ML%V1^Vy!Uo+eJs zbr8rP6G^6lh}2K~@O|oEX?i)ZVL9SMj_gcJ2EG zc7>})MsZ(Oh7%fh#mIJo14hlPs;ZZf^mOa^)VS2rm+KVI++8ad%XTr}h*J2u8!=Sx zPgT98kc~ei%W-?8eu}>VyxRclG3`punaOj##%J=3UWQDXz0C+-D*4AOUYl87p?JWs zS(Mhm;`lF?5?>f-8H?Bqm+FOo(u8SU1cYfMJ|xx>w;PsD^FDkpdN9z^&q+w@TPPTK zM&G~(gpt8)`~=!79jFr*rqd$53=9Ns!OK2!1ub12LQqxdhc*QRPBdjok+9}mbybrz z0k3`lGqJnPVP_c#XpaQ0VW)S7!SI2ZRy>LMRBf>N|3>W^R%6L&`dKj0FZXT}eXnf1 z%^|>_U@TdjNt*&iDC+){{8vo}J&UMRSZ12anBWuN_X2WDl_(_SX#;+2KY9g-w`q+GKCbT0(i}iAsD5>%$sy^o~YzJgm2N zxWoIU)`hKfTKKu;R;NHcH%0x(Ay{wu(s?RQ{neZHvA$|4J(-d;*vg+@8)WoxaKAIN z&tnaaYYsZnlBF1dm2)$VJagssmF1!TJbc|boB2x5Xdhi~#W9J?N*HY;yhmM*cpnJh zD-GQPF%|oro(U(%Lx|G;gttn=o5)N5Rc+pzlU<9YjW`~D({GD#fEL#lkZN98(i(-P zjhr`OUTwjNdTM7q%_i>q;0$#$|6<_R-Uu^qEfqX4v;&&+%0fd#Y7JRBy87@krUc%a zr1ynNfc%R6Z4ViJyhPvcYk-n_@dnyuYc@udy!37JFLKGOTz4LdGq0^o%Y$Ianzcj5=Ql?{n{iEkx@)J-%Yj(2+n}p zoHC20yyCaCHOE7o>7dsZ#kZ)7igIP$XypawRm-KVg{d6Nm2~wJ#E^;>Q=ax)HGCMa zGpemj7Du!C4q`}LwBs?$;h#@)!Y@0QYpUs$+aYE=Z)=~&Wx053Zya-U5Tx=WudmZn z6nR*2uB#Q8p!e$)4vR+feGS_41XP_{aZ$dp_asp-{^YR#{wQ@2ZES+Uu!y=HADT)r z8(*(CYsgReEPf)bQg(>skQ&YCOT_(lux8h&HefvlwONORfABj$NCT7#s*W)ooR!>H ztX5hTuycGsaKdFW5zF%XVs=gUFC>Uc$>N@&fB{c&ml46Q8Du8i{{g zpm|OG_)nx&s(JOC7%%l_^xVbv)Z80QrJ*CO+3fHOVB!p_CkJz8t?VU&YKDg6G0nXX zO2coTM~j zLu9BUJA*d`LLt8OQK&-pU>I}p>+Fe$%Vawlv`~w*@O@l111Ag21q+wmRLo?&H9dJ;eXU96KsB^a|sbmku7s>J4Jc2Zd() zyM!q)S^fseKjV6wT~b@31Ncpb5x^VctsR*F3Mj=k76)uf`(Jf=x$_VK9Ih}|K5I>7 zSFV4yGqmLt=0Usqym2%_;G;!iQ+ya3HC~_Q9leb&glJuFcmSLV}xd zDtBgRr!5xf0j-7DaoXc{Kwbh~92%%9Wx0F;BloZkF>%M3xW$3NOA~i30SBR^clILi zF|j&YVLO@&x}e@0>L(IWklft0lsH0D)U2FuX2b|S&Uf;+#pCzD#47SNPicN9-H|2D z1b0c6S!B=Z@f=Jy-c|Lw8)_!!n?nbO_|EuV5Eh%)ij5x+2@_F?Gs~0^MBIz->SICEM+>FS099{;ItpyQ34;% zVDJ`%{Iz6a0ii~HuO%vJVeM!P`3tHWf*&rKm`7x7c9nK~%11%E-s4OPZny=L`=+6; zxs(k;&Pz68)zkiM$M1F_W(?^@yP*@>PBIn|{sB=#n@VZZa-gi;&7904kNimi^WdAg zp7t*r&}#=!;Vw&K!rW)232s%C3F?5XaNEWZ&o2rg(ag=x7(2{R`f5u7FFUYLZSasM z&mu($)*zWM0l>_mSXOe!VsyIm;L~oFMhtPWn~VQco-7=gZs8*|5Ir$i1D$7tTwfCV zg?c+8%R{oAmYCogsPsXV+xhP5y54sdwO-Vu&=OPP4~s4=={}(?AhS{1F>)W>wmj4u zDAxB~T3z#T+z(N#7B8lqw5SJmCucGm@7QG&*|YsP@<8U{H%;<D=>CXly)q`1L;Uf zbs+>)L3}*K$v@$eEEK2$F<+#9_u(}K_rb!=gNK()q>~;w%edhJKEGw0+@xce=*pEl zT?|oBOWduBD}qNz4=~L+Jz3yQ*}B^JTa&4z5@|S&kJ7Tzys*XDm~rOv+(6ZKyfQP1 z2l2@!T8^V`+MJll$Wc`ns)Y>J>~;LRlW4_j%f_>N}|GU&saYz$G9>jN1JHYL{GC z?l!&~|DoPcQoeE2JEr~;dl6pQv_^|s(oJ=HaJlTIMWI&!%quSpF7|!r=0_yDfnH| zJz)iu?f1wtV6D6c6gpc@?p3!TO?wS;<()!xewn^n0#W|5j7Q6puBLsb(_Wp?eMZX) zLOB)jnmW=5k$ne$1OGWqb_90vDxLB*X8jI>)2 z%g*6&ru@OmM3Z+V@R9|p)Bsj3ngfQNJ%wyz!gk?3np4XWM(_vR{Q+rA2Ec^gtfU`; z7M*#4k&DsnvW&H|>E6QMMHP|${3vxMScN#BR|1VRG*S?_(zQSagx^Nf8x)0ziVrRJ ztXySYb0@eysAF?;##Aez@MYiI~b#7Fd##R%0II(tc@y*zW&TT(@Z21mVp zsqUsJ+lMI2e_>CoM&|u5($`P}#|0w3+J{I$+U$fQJV{r?NMaiwoWd*9poYUTASqHC zwBEo3w$Dn~C!0JCrb#>#wP{;RBxFIGnRt((H(gB?xsh-|2JI|SL+k!#&~1Qu+|?iv zi_&+tZ84a_l@Q*D+=f0TY+=*vxQGSPkj7>tVB1@{LLZ8Y*QA1Hv`oAUv#`4@VN1Yr zSD6EnVenlSz|@=9*kbWQkg=>CLJ)V|auo=*wYyV}72|0+8@S;cU%_G~?x0z`h(Nfc z_0?Fl!CY#;1!m+hD>Yg~axb+PP1p%)=IRjy+N<`(81NYp1=KE&6{-ipI6wQIFgQ>n z$0=xN3E_uU`|9z}2*Nkh2Ev$Ys&@+Bn%0}$B;qY z1~oRAg+VvIMs1F}NGgKRhR)%zjA*QftwWST)PV9XT8}YlFrCLjv|Db3TX}|Mft16> zK*xgIH-UO3cLq7OVA!jCFau~MJ_s{!flIXsu$gqs#p~$^k!y$A+>6DF@zKp760e>f z)gmD;fn>CWh~i=Dzi7n>KzvV=|E5u+=@l7(7f}GR1Zi>{MFfM9vlBBAdc8^?Zc5)q zOD@mC0bk@*C9(~oX^m)G-f@t0gR#b*yaHvr|3cODBPYH09b-pu(i0X<`zChjwt_dL zE8@kPBs7r=%rL#h?D!9|z?(9?wB3m8g#)yE9exc_@Phk5I;0v=;of|BO z=OMZD5?0Yn9D*>Jx7aCLfJ~B -jU#i+M05_~gUz#vU{N@!GpLYY-qAE3QJ^Ym8` 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 j6!+V=, IAsyncLifetime +{ + protected readonly AppFixture Fixture; + protected ApiWebApplicationFactory WebAppFactory; + protected IFlurlClient Client; + protected readonly bool RequiresAuthentication; + protected KeycloakService KeycloakService; + protected AccessTokenDto? AccessToken; + + protected IntegrationTest(AppFixture fixture, bool requiresAuthentication) + { + Fixture = fixture; + WebAppFactory = new ApiWebApplicationFactory(Fixture); + + var clientOptions = new WebApplicationFactoryClientOptions + { + AllowAutoRedirect = false + }; + + Client = new FlurlClient(WebAppFactory.CreateClient(clientOptions)).AllowAnyHttpStatus() + .BeforeCall(call => + { + if (AccessToken is not null) + call.Request.WithOAuthBearerToken(AccessToken.AccessToken); + }); + RequiresAuthentication = requiresAuthentication; + if (RequiresAuthentication) + KeycloakService = new KeycloakService(Fixture.KeycloakContainer.GetBaseAddress(), + AppFixture.KeycloakRealm, + AppFixture.KeycloakRealmUsername, + AppFixture.KeycloakRealmPassword); + } + + protected IFlurlRequest CreateRequest(string endpoint) => Client.Request(endpoint); + + public virtual async Task InitializeAsync() + { + await ApplyDbMigrations(); + } + + protected virtual async Task SetupAccessToken(string audienceClientId, + string[] roles, + string[] scopes) + { + if (!RequiresAuthentication) + return; + + var client = await KeycloakService.CreateTestClient(audienceClientId, roles, scopes); + AccessToken = await KeycloakService.GetAccessToken(client); + } + + protected virtual Task SetupAccessToken(string[] roles) => + SetupAccessToken(Auth.AudienceClientId, + roles, + Auth.Scopes); + + protected virtual AppDbContext GetDbContext() => + WebAppFactory.Services + .CreateScope() + .ServiceProvider + .GetRequiredService(); + + protected virtual async Task ApplyDbMigrations(string? targetMigration = null) => + await GetDbContext().GetService() + .MigrateAsync(targetMigration); + + protected virtual async Task RollbackDbMigrations() => + await ApplyDbMigrations("0"); + + protected virtual async Task RunScriptAsync(string filePath) + { + var script = await File.ReadAllTextAsync(filePath); + await GetDbContext().Database + .ExecuteSqlRawAsync(script); + } + + public virtual async Task DisposeAsync() + { + await RollbackDbMigrations(); + await WebAppFactory.DisposeAsync(); + } +} \ No newline at end of file diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/KeycloakService.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/KeycloakService.cs new file mode 100644 index 0000000..643ac02 --- /dev/null +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/KeycloakService.cs @@ -0,0 +1,72 @@ +using Flurl; +using Flurl.Http; +using Keycloak.Net; +using Keycloak.Net.Models.Clients; + +namespace Monaco.Template.Backend.IntegrationTests; + +public class KeycloakService +{ + private readonly string _realm; + private readonly KeycloakClient _kcClient; + private readonly Url _tokenEndpoint; + + public KeycloakService(string baseUrl, + string realm, + string username, + string password) + { + _realm = realm; + _tokenEndpoint = baseUrl.AppendPathSegments("realms", + _realm, + "protocol", + "openid-connect", + "token"); + _kcClient = new KeycloakClient(baseUrl, username, password); + } + + public async Task CreateTestClient(string audienceClientId, + string[] roles, + string[] scopes) + { + var client = new Client + { + Name = "Test Client", + ClientId = Guid.NewGuid().ToString(), + Secret = Guid.NewGuid().ToString(), + ServiceAccountsEnabled = true, + StandardFlowEnabled = false, + AuthorizationServicesEnabled = false, + DefaultClientScopes = [audienceClientId, ..scopes] + }; + await _kcClient.CreateClientAsync(_realm, client); + client = (await GetClientByClientId(client.ClientId))!; + + var clientUser = await _kcClient.GetUserForServiceAccountAsync(_realm, client.Id); + + var audienceClient = (await GetClientByClientId(audienceClientId))!; + var clientRoles = await _kcClient.GetRolesAsync(_realm, audienceClient.Id); + + await _kcClient.AddClientRoleMappingsToUserAsync(_realm, + clientUser.Id, + audienceClient.Id, + clientRoles.Where(r => roles.Contains(r.Name)) + .ToArray()); + return client; + } + + public async Task GetClientByClientId(string clientId) + { + var results = await _kcClient.GetClientsAsync(_realm, clientId); + return results.SingleOrDefault(); + } + + public async Task GetAccessToken(Client client) => + await _tokenEndpoint.PostUrlEncodedAsync(new + { + client_id = client.ClientId, + client_secret = client.Secret, + grant_type = "client_credentials" + }) + .ReceiveJson(); +} \ No newline at end of file diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Monaco.Template.Backend.IntegrationTests.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Monaco.Template.Backend.IntegrationTests.csproj new file mode 100644 index 0000000..53644db --- /dev/null +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Monaco.Template.Backend.IntegrationTests.csproj @@ -0,0 +1,49 @@ + + + + net8.0 + enable + enable + + false + true + + + + + + + + + + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + + + + + Always + + + Always + + + + diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Scripts/Companies.sql b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Scripts/Companies.sql new file mode 100644 index 0000000..9caedcf --- /dev/null +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Scripts/Companies.sql @@ -0,0 +1,7 @@ +INSERT INTO [dbo].[Company] +([Id], [Name], [Email], [WebSiteUrl], [Address_Street], [Address_City], [Address_County], [Address_PostCode], [Address_CountryId]) + +VALUES +('8CEFE8FA-F747-4A3A-D8C9-08DC18C76CDC', 'CompanyA', 'email@companya.com', 'www.companya.com', 'Address 1', 'City 1', 'County 1', '123456ABC', '534A826B-70EF-2128-1A4C-52E23B7D5447'), +('95DE146B-86E6-461D-99B3-0CFE0FAA2BAB', 'CompanyB', 'email@companyb.com', 'www.companyb.com', 'Address 2', 'City 2', 'County 2', '567890DEF', '534A826B-70EF-2128-1A4C-52E23B7D5447'), +('EDEDB1E8-FD3A-4579-9EF8-A0BBEF2A6F95', 'CompanyC', 'email@companyc.com', 'www.companyc.com', 'Address 3', 'City 3', 'County 3', '123987XYZ', '8F9EC4FB-916F-90EA-5162-F486A0FC0893') \ No newline at end of file diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Scripts/Products.sql b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Scripts/Products.sql new file mode 100644 index 0000000..670ba24 --- /dev/null +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Scripts/Products.sql @@ -0,0 +1,37 @@ +INSERT INTO [dbo].[Company] +([Id], [Name], [Email], [WebSiteUrl], [Address_Street], [Address_City], [Address_County], [Address_PostCode], [Address_CountryId]) +VALUES +('8CEFE8FA-F747-4A3A-D8C9-08DC18C76CDC', 'CompanyA', 'email@companya.com', 'www.companya.com', 'Address 1', 'City 1', 'County 1', '123456ABC', '534A826B-70EF-2128-1A4C-52E23B7D5447'), +('95DE146B-86E6-461D-99B3-0CFE0FAA2BAB', 'CompanyB', 'email@companyb.com', 'www.companyb.com', 'Address 2', 'City 2', 'County 2', '567890DEF', '534A826B-70EF-2128-1A4C-52E23B7D5447') + +INSERT INTO [dbo].[File] +([Id], [Name], [Extension], [Size], [ContentType], [UploadedOn], [IsTemp], [Discriminator], [DateTaken], [Dimensions_Height], [Dimensions_Width], [Position_Latitude], [Position_Longitude], [ThumbnailId]) +VALUES +('7D5C57BA-05F4-44FD-832E-5145C5AB0486', 'NET_Core_Logo', '.png', 123528, 'image/png', '2024-09-07 10:37:14.8618596', 0, 'Image', NULL, 2048, 2048, NULL, NULL, '0F9E772F-85CA-430E-BDA2-65AF93E816E9'), +('0F9E772F-85CA-430E-BDA2-65AF93E816E9', 'NET_Core_Logo', '.png', 7751, 'image/png', '2024-09-07 10:37:14.8618551', 0, 'Image', NULL, 120, 120, NULL, NULL, NULL), +('41F299EE-1D20-4AEF-A1F0-6A73E9C5673E', 'MS_NET_Logo', '.png', 291461, 'image/png', '2024-09-07 10:37:24.1712621', 0, 'Image', NULL, 2400, 2288, NULL, NULL, '1649A56D-26CF-4BE0-8977-B9EDFB26337E'), +('1649A56D-26CF-4BE0-8977-B9EDFB26337E', 'MS_NET_Logo', '.png', 10634, 'image/png', '2024-09-07 10:37:24.1712591', 0, 'Image', NULL, 120, 114, NULL, NULL, NULL), +('9B78C5B9-B2E5-469E-8ADB-9ABE455408CA', 'NET_Logo', '.png', 13343, 'image/png', '2024-09-07 10:36:36.7064426', 0, 'Image', NULL, 2048, 2048, NULL, NULL, '64D6A46B-80F0-4CB7-B50F-E0298D1F6FB8'), +('64D6A46B-80F0-4CB7-B50F-E0298D1F6FB8', 'NET_Logo', '.png', 1917, 'image/png', '2024-09-07 10:36:36.7054540', 0, 'Image', NULL, 120, 120, NULL, NULL, NULL), +('2355F9AA-5E52-4D56-AD1A-334A370C82EB', 'CSharp-Logo', '.png', 3769, 'image/png', '2024-09-07 11:50:03.1722354', 0, 'Image', NULL, 348, 348, NULL, NULL, '54C363F9-AE5A-4D5A-B4DB-E32EE82DCBA2'), +('54C363F9-AE5A-4D5A-B4DB-E32EE82DCBA2', 'CSharp-Logo', '.png', 8293, 'image/png', '2024-09-07 11:50:03.1711232', 0, 'Image', NULL, 120, 120, NULL, NULL, NULL), +('418293F5-3F77-44D5-9B98-4B6A9677D5C7', 'dotnet-bot-1', '.png', 22831, 'image/png', '2024-09-30 18:22:13.1518692', 1, 'Image', NULL, 288, 288, NULL, NULL, 'D96AEE8E-23D6-47E1-9A76-AF682491D398'), +('D96AEE8E-23D6-47E1-9A76-AF682491D398', 'dotnet-bot-1', '.png', 9400, 'image/png', '2024-09-30 18:22:13.1508664', 1, 'Image', NULL, 120, 120, NULL, NULL, NULL), +('B9EE5029-AC55-4FB8-A6B0-EA0F56CC75D3', 'dotnet-bot-2', '.png', 253552, 'image/png', '2024-09-30 18:22:47.0370170', 1, 'Image', NULL, 699, 846, NULL, NULL, '3DFAFE31-78F8-45AE-843B-C4C919BDA6CC'), +('3DFAFE31-78F8-45AE-843B-C4C919BDA6CC', 'dotnet-bot-2', '.png', 13335, 'image/png', '2024-09-30 18:22:47.0342655', 1, 'Image', NULL, 99, 120, NULL, NULL, NULL) + +INSERT INTO [dbo].[Product] +([Id], [Title], [Description], [Price], [CompanyId], [DefaultPictureId]) +VALUES +('FA934D1C-1E6D-4DD4-ADC2-08DC18C8810C', 'Product A', 'Product A description', 2.54, '8CEFE8FA-F747-4A3A-D8C9-08DC18C76CDC', '7D5C57BA-05F4-44FD-832E-5145C5AB0486'), +('C765D546-9F21-4071-A487-08DC20D75CE6', 'Product B', 'Product B description', 1.35, '95DE146B-86E6-461D-99B3-0CFE0FAA2BAB', '9B78C5B9-B2E5-469E-8ADB-9ABE455408CA'), +('22C268D2-4E9D-4B4F-A312-08DC20F4FFD4', 'Product C', 'Product C description', 3.68, '8CEFE8FA-F747-4A3A-D8C9-08DC18C76CDC', '2355F9AA-5E52-4D56-AD1A-334A370C82EB') + +INSERT INTO [dbo].[ProductPicture] +([ProductId], [PicturesId]) +VALUES +('FA934D1C-1E6D-4DD4-ADC2-08DC18C8810C', '7D5C57BA-05F4-44FD-832E-5145C5AB0486'), +('FA934D1C-1E6D-4DD4-ADC2-08DC18C8810C', '41F299EE-1D20-4AEF-A1F0-6A73E9C5673E'), +('C765D546-9F21-4071-A487-08DC20D75CE6', '9B78C5B9-B2E5-469E-8ADB-9ABE455408CA'), +('22C268D2-4E9D-4B4F-A312-08DC20F4FFD4', '2355F9AA-5E52-4D56-AD1A-334A370C82EB') + diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/CompaniesTests.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/CompaniesTests.cs new file mode 100644 index 0000000..163033b --- /dev/null +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/CompaniesTests.cs @@ -0,0 +1,255 @@ +using AutoFixture.Xunit2; +using FluentAssertions; +using Flurl.Http; +using Microsoft.EntityFrameworkCore; +using Monaco.Template.Backend.Api.DTOs; +using Monaco.Template.Backend.Application.DTOs; +using Monaco.Template.Backend.Common.Domain.Model; +using Monaco.Template.Backend.Domain.Model; +using System.Diagnostics.CodeAnalysis; +using System.Net; +using System.Net.Mail; + +namespace Monaco.Template.Backend.IntegrationTests.Tests; + +[ExcludeFromCodeCoverage] +[Trait("Integration Tests", "Companies")] +public class CompaniesTests : IntegrationTest +{ + public CompaniesTests(AppFixture fixture) : base(fixture, true) + { } + + public override async Task InitializeAsync() + { + await base.InitializeAsync(); + await RunScriptAsync(@"Scripts\Companies.sql"); + + await SetupAccessToken([Auth.Roles.Administrator]); + } + + [Theory(DisplayName = "Get Companies page succeeds")] + [InlineData(false, null, null, 3)] + [InlineData(true, 1, 5, 2)] + public async Task GetCompaniesPageSucceeds(bool expandCountry, + int? offset, + int? limit, + int expectedItemsCount) + { + var response = await CreateRequest(ApiRoutes.Companies.Query(expandCountry, offset, limit)).GetAsync(); + + response.StatusCode + .Should() + .Be((int)HttpStatusCode.OK); + + var result = await response.GetJsonAsync>(); + + result.Should() + .NotBeNull(); + result.Items + .Should() + .HaveCount(expectedItemsCount); + result.Items + .Should() + .AllSatisfy(p => + { + if (expandCountry) + p.Country + .Should() + .NotBeNull(); + else + p.Country + .Should() + .BeNull(); + }); + result.Pager + .Should() + .BeEquivalentTo(new Pager(offset ?? 0, + limit ?? 10, + 3)); + } + + [Fact(DisplayName = "Get Company succeeds")] + public async Task GetCompanySucceeds() + { + var companyId = Guid.Parse("8CEFE8FA-F747-4A3A-D8C9-08DC18C76CDC"); + + var response = await CreateRequest(ApiRoutes.Companies.Get(companyId)).GetAsync(); + + response.StatusCode + .Should() + .Be((int)HttpStatusCode.OK); + + var result = await response.GetJsonAsync(); + var company = await GetDbContext().Set() + .SingleAsync(c => c.Id == companyId); + + result.Should() + .NotBeNull(); + result.Name + .Should() + .Be(company.Name); + result.Email + .Should() + .Be(company.Email); + result.WebSiteUrl + .Should() + .Be(company.WebSiteUrl); + result.Street + .Should() + .Be(company.Address!.Street); + result.City + .Should() + .Be(company.Address!.City); + result.County + .Should() + .Be(company.Address!.County); + result.PostCode + .Should() + .Be(company.Address!.PostCode); + result.CountryId + .Should() + .Be(company.Address!.CountryId); + } + + [Theory(DisplayName = "Create new Company succeeds")] + [AutoData] + public async Task CreateNewCompanySucceeds(string name, + MailAddress email, + string webSiteUrl, + string street, + string city, + string county, + string postCode) + { + var spainId = Guid.Parse("534A826B-70EF-2128-1A4C-52E23B7D5447"); + var dto = new CompanyCreateEditDto(name, + email.Address, + webSiteUrl, + street, + city, + county, + postCode[..Address.PostCodeLength], + spainId); + var response = await CreateRequest(ApiRoutes.Companies.Post()).PostJsonAsync(dto); + + response.StatusCode + .Should() + .Be((int)HttpStatusCode.Created); + + var result = await response.GetStringAsync(); + + var id = Guid.Empty; + result.Should() + .Match(value => Guid.TryParse(value.Replace("\"", ""), out id)); + response.Headers + .Should() + .Contain(("Location", ApiRoutes.Companies.Get(id).ToString())); + + var companies = await GetDbContext().Set() + .ToListAsync(); + companies.Should() + .HaveCount(4); + + var newCompany = companies.SingleOrDefault(c => c.Id == id); + newCompany.Should() + .NotBeNull(); + newCompany!.Name + .Should() + .Be(dto.Name); + newCompany.Email + .Should() + .Be(dto.Email); + newCompany.WebSiteUrl + .Should() + .Be(dto.WebSiteUrl); + newCompany.Address!.Street + .Should() + .Be(dto.Street); + newCompany.Address!.City + .Should() + .Be(dto.City); + newCompany.Address!.County + .Should() + .Be(dto.County); + newCompany.Address!.PostCode + .Should() + .Be(dto.PostCode); + newCompany.Address!.CountryId + .Should() + .Be(dto.CountryId!.Value); + } + + [Theory(DisplayName = "Edit existing Company succeeds")] + [AutoData] + public async Task EditExistingCompanySucceeds(string name, + MailAddress email, + string webSiteUrl, + string street, + string city, + string county, + string postCode) + { + var companyId = Guid.Parse("EDEDB1E8-FD3A-4579-9EF8-A0BBEF2A6F95"); + var countryId = Guid.Parse("534A826B-70EF-2128-1A4C-52E23B7D5447"); + var dto = new CompanyCreateEditDto(name, + email.Address, + webSiteUrl, + street, + city, + county, + postCode[..Address.PostCodeLength], + countryId); + var response = await CreateRequest(ApiRoutes.Companies.Put(companyId)).PutJsonAsync(dto); + + response.StatusCode + .Should() + .Be((int)HttpStatusCode.NoContent); + + var company = await GetDbContext().Set() + .SingleOrDefaultAsync(c => c.Id == companyId); + company.Should() + .NotBeNull(); + company!.Name + .Should() + .Be(dto.Name); + company.Email + .Should() + .Be(dto.Email); + company.WebSiteUrl + .Should() + .Be(dto.WebSiteUrl); + company.Address!.Street + .Should() + .Be(dto.Street); + company.Address!.City + .Should() + .Be(dto.City); + company.Address!.County + .Should() + .Be(dto.County); + company.Address!.PostCode + .Should() + .Be(dto.PostCode); + company.Address!.CountryId + .Should() + .Be(dto.CountryId!.Value); + } + + [Fact(DisplayName = "Delete existing Company succeeds")] + public async Task DeleteExistingCompanySucceeds() + { + var companyId = Guid.Parse("EDEDB1E8-FD3A-4579-9EF8-A0BBEF2A6F95"); + var response = await CreateRequest(ApiRoutes.Companies.Delete(companyId)).DeleteAsync(); + + response.StatusCode + .Should() + .Be((int)HttpStatusCode.OK); + + var companies = await GetDbContext().Set() + .ToListAsync(); + companies.Should() + .HaveCount(2); + companies.Should() + .NotContain(x => x.Id == companyId); + } +} \ No newline at end of file diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/CountriesTests.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/CountriesTests.cs new file mode 100644 index 0000000..af92a88 --- /dev/null +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/CountriesTests.cs @@ -0,0 +1,65 @@ +using FluentAssertions; +using Flurl.Http; +using Microsoft.EntityFrameworkCore; +using Monaco.Template.Backend.Application.DTOs; +using Monaco.Template.Backend.Domain.Model; +using System.Diagnostics.CodeAnalysis; +using System.Net; + +namespace Monaco.Template.Backend.IntegrationTests.Tests; + +[ExcludeFromCodeCoverage] +[Trait("Integration Tests", "Countries")] +public class CountriesTests : IntegrationTest +{ + public CountriesTests(AppFixture fixture) : base(fixture, true) + { } + + public override async Task InitializeAsync() + { + await base.InitializeAsync(); + + await SetupAccessToken([]); + } + + [Fact(DisplayName = "Get Countries succeeds")] + public async Task GetCountriesSucceeds() + { + var response = await CreateRequest(ApiRoutes.Countries.Query()).GetAsync(); + + response.StatusCode + .Should() + .Be((int)HttpStatusCode.OK); + + var result = await response.GetJsonAsync(); + var countriesCount = await GetDbContext().Set() + .CountAsync(); + + result.Should() + .NotBeNull(); + result.Should() + .HaveCount(countriesCount); + } + + [Fact(DisplayName = "Get Country succeeds")] + public async Task GetCountrySucceeds() + { + var countryId = Guid.Parse("534A826B-70EF-2128-1A4C-52E23B7D5447"); + + var response = await CreateRequest(ApiRoutes.Countries.Get(countryId)).GetAsync(); + + response.StatusCode + .Should() + .Be((int)HttpStatusCode.OK); + + var result = await response.GetJsonAsync(); + var country = await GetDbContext().Set() + .SingleAsync(c => c.Id == countryId); + + result.Should() + .NotBeNull(); + result.Name + .Should() + .Be(country.Name); + } +} \ No newline at end of file diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/FilesTests.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/FilesTests.cs new file mode 100644 index 0000000..cd5fe00 --- /dev/null +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/FilesTests.cs @@ -0,0 +1,82 @@ +using FluentAssertions; +using Flurl.Http; +using Microsoft.EntityFrameworkCore; +using Monaco.Template.Backend.Domain.Model; +using System.Diagnostics.CodeAnalysis; +using System.Net; +using File = Monaco.Template.Backend.Domain.Model.File; + +namespace Monaco.Template.Backend.IntegrationTests.Tests; + +[ExcludeFromCodeCoverage] +[Trait("Integration Tests", "Files")] +public class FilesTests : IntegrationTest +{ + public FilesTests(AppFixture fixture) : base(fixture, true) + { } + + public override async Task InitializeAsync() + { + await base.InitializeAsync(); + + await SetupAccessToken([Auth.Roles.Administrator]); + } + + [Fact(DisplayName = "Upload File succeeds")] + public async Task UploadFileSuccceeds() + { + const string fileExtension = ".png"; + const string fileName = $"CSharp-Logo{fileExtension}"; + const string file = $@"Imports\Pictures\{fileName}"; + const string contentType = "image/png"; + + var response = await CreateRequest(ApiRoutes.Files.Post()).PostMultipartAsync(b => b.AddFile("file", + System.IO.File.OpenRead(file), + fileName, contentType)); + var uploadDate = DateTime.UtcNow; + + response.StatusCode + .Should() + .Be((int)HttpStatusCode.Created); + + var files = await GetDbContext().Set() + .AsNoTracking() + .ToListAsync(); + + files.Should() + .AllBeAssignableTo() + .And + .HaveCount(2); + files.OfType() + .Count(x => x.ThumbnailId.HasValue) + .Should() + .Be(1); + files.OfType() + .Count(x => !x.ThumbnailId.HasValue) + .Should() + .Be(1); + files.Should() + .AllSatisfy(f => + { + f.IsTemp + .Should() + .BeTrue(); + + f.ContentType + .Should() + .Be(contentType); + + f.Extension + .Should() + .Be(fileExtension); + + f.Size + .Should() + .BeGreaterThan(0); + + f.UploadedOn + .Should() + .BeCloseTo(uploadDate, TimeSpan.FromSeconds(5)); + }); + } +} \ No newline at end of file diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs new file mode 100644 index 0000000..9cf835c --- /dev/null +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs @@ -0,0 +1,444 @@ +using AutoFixture.Xunit2; +using Azure.Storage.Blobs; +using Dasync.Collections; +using FluentAssertions; +using Flurl.Http; +using Microsoft.EntityFrameworkCore; +using Monaco.Template.Backend.Api.DTOs; +using Monaco.Template.Backend.Application.DTOs; +using Monaco.Template.Backend.Common.Domain.Model; +using Monaco.Template.Backend.Domain.Model; +using System.Diagnostics.CodeAnalysis; +using System.Net; +using File = System.IO.File; + +namespace Monaco.Template.Backend.IntegrationTests.Tests; + +[ExcludeFromCodeCoverage] +[Trait("Integration Tests", "Products")] +public class ProductsTests : IntegrationTest +{ + public ProductsTests(AppFixture fixture) : base(fixture, true) + { } + + public override async Task InitializeAsync() + { + await base.InitializeAsync(); + await RunScriptAsync(@"Scripts\Products.sql"); + var images = await GetDbContext().Set() + .AsNoTracking() + .ToListAsync(); + + var blobContainerClient = GetBlobContainerClient(); + foreach (var image in images) + { + var blobClient = blobContainerClient.GetBlobClient($"{(image.IsTemp ? "temp/" : string.Empty)}{image.Id}"); + await blobClient.UploadAsync(File.OpenRead(@$"Imports\Pictures\{image.Name}{image.Extension}")); + } + } + + private Task SetupAccessToken() => + SetupAccessToken([Auth.Roles.Administrator]); + + private BlobContainerClient GetBlobContainerClient() => + new(WebAppFactory.StorageConnectionString, + AppFixture.StorageContainer); + + [Theory(DisplayName = "Get Products page succeeds")] + [InlineData(false, false, false, null, null, 3)] + [InlineData(true, true, true, 1, 5, 2)] + public async Task GetProductsPageSucceeds(bool expandCompany, + bool expandPictures, + bool expandDefaultPicture, + int? offset, + int? limit, + int expectedItemsCount) + { + var response = await CreateRequest(ApiRoutes.Products.Query(expandCompany, + expandPictures, + expandDefaultPicture, + offset, + limit)).GetAsync(); + + response.StatusCode + .Should() + .Be((int)HttpStatusCode.OK); + + var result = await response.GetJsonAsync>(); + + result.Should() + .NotBeNull(); + result.Items + .Should() + .HaveCount(expectedItemsCount); + result.Items + .Should() + .AllSatisfy(p => + { + if (expandCompany) + p.Company + .Should() + .NotBeNull(); + else + p.Company + .Should() + .BeNull(); + + if (expandPictures) + { + p.Pictures + .Should() + .NotBeNull(); + + p.Pictures + .Should() + .AllSatisfy(pic => + { + pic.Thumbnail + .Should() + .NotBeNull(); + }); + } + else + p.Pictures + .Should() + .BeNull(); + + if (expandDefaultPicture) + p.DefaultPicture + .Should() + .NotBeNull(); + else + p.DefaultPicture + .Should() + .BeNull(); + }); + result.Pager + .Should() + .BeEquivalentTo(new Pager(offset ?? 0, + limit ?? 10, + 3)); + } + + [Fact(DisplayName = "Get Product succeeds")] + public async Task GetProductSucceeds() + { + var productId = Guid.Parse("FA934D1C-1E6D-4DD4-ADC2-08DC18C8810C"); + + var response = await CreateRequest(ApiRoutes.Products.Get(productId)).GetAsync(); + + response.StatusCode + .Should() + .Be((int)HttpStatusCode.OK); + + var result = await response.GetJsonAsync(); + var product = await GetDbContext().Set() + .Include(x => x.Company) + .Include(x => x.DefaultPicture) + .Include(x => x.Pictures) + .ThenInclude(x => x.Thumbnail) + .SingleAsync(c => c.Id == productId); + + result.Should() + .NotBeNull(); + result.Title + .Should() + .Be(product.Title); + result.Description + .Should() + .Be(product.Description); + result.Price + .Should() + .Be(product.Price); + result.CompanyId + .Should() + .Be(product.CompanyId); + result.Company + .Should() + .NotBeNull(); + result.DefaultPictureId + .Should() + .Be(product.DefaultPictureId); + result.DefaultPictureId + .Should() + .BeOneOf(product.Pictures + .Select(p => p.Id)); + result.DefaultPicture + .Should() + .NotBeNull(); + result.Pictures + .Should() + .NotBeNullOrEmpty(); + result.Pictures + .Should() + .HaveCount(2); + result.Pictures + .Should() + .AllSatisfy(p => + { + p.ThumbnailId + .Should() + .NotBeNull(); + + p.Thumbnail + .Should() + .NotBeNull(); + + p.IsTemp + .Should() + .BeFalse(); + + p.Name + .Should() + .BeOneOf(product.Pictures + .Select(x => x.Name)); + }); + } + + [Fact(DisplayName = "Download Product's Picture succeeds")] + public async Task DownloadProductPictureSucceeds() + { + var productId = Guid.Parse("FA934D1C-1E6D-4DD4-ADC2-08DC18C8810C"); + var pictureId = Guid.Parse("7D5C57BA-05F4-44FD-832E-5145C5AB0486"); + + await DownloadProductPictureTest(productId, pictureId, false); + } + + [Fact(DisplayName = "Download Product's Picture Thumbnail succeeds")] + public async Task DownloadProductPictureThumbnailSucceeds() + { + var productId = Guid.Parse("FA934D1C-1E6D-4DD4-ADC2-08DC18C8810C"); + var pictureId = Guid.Parse("7D5C57BA-05F4-44FD-832E-5145C5AB0486"); + + await DownloadProductPictureTest(productId, pictureId, true); + } + + private async Task DownloadProductPictureTest(Guid productId, + Guid pictureId, + bool? isThumbnail = null) + { + var response = await CreateRequest(ApiRoutes.Products.DownloadPicture(productId, + pictureId, + isThumbnail)).GetAsync(); + + var picture = await GetDbContext().Set() + .AsNoTracking() + .Where(x => x.Id == pictureId) + .Select(x => isThumbnail.HasValue && isThumbnail.Value ? x.Thumbnail! : x) + .SingleAsync(); + + response.StatusCode + .Should() + .Be((int)HttpStatusCode.OK); + response.Headers + .Should() + .Contain(("Content-Type", picture.ContentType)); + response.Headers + .Should() + .Contain(("Content-Disposition", + string.Format("attachment; filename={0}{1}; filename*=UTF-8''{0}{1}", + picture.Name, + picture.Extension))); + } + + [Theory(DisplayName = "Create new Product succeeds")] + [AutoData] + public async Task CreateNewCompanySucceeds(string title, + string description, + decimal price) + { + await SetupAccessToken(); + var dbContext = GetDbContext(); + var tempImages = await dbContext.Set() + .Where(i => i.IsTemp && i.ThumbnailId.HasValue) + .ToListAsync(); + + var companyId = Guid.Parse("8CEFE8FA-F747-4A3A-D8C9-08DC18C76CDC"); + var dto = new ProductCreateEditDto(title, + description, + price, + companyId, + tempImages.Select(i => i.Id).ToArray(), + tempImages.Last().Id); + + var response = await CreateRequest(ApiRoutes.Products.Post()).PostJsonAsync(dto); + + response.StatusCode + .Should() + .Be((int)HttpStatusCode.Created); + + var result = await response.GetStringAsync(); + + var id = Guid.Empty; + result.Should() + .Match(value => Guid.TryParse(value.Replace("\"", ""), out id)); + response.Headers + .Should() + .Contain(("Location", ApiRoutes.Products.Get(id).ToString())); + + var products = await GetDbContext().Set() + .Include(x => x.Company) + .Include(x => x.Pictures) + .ThenInclude(x => x.Thumbnail) + .Include(x => x.DefaultPicture) + .ToListAsync(); + products.Should() + .HaveCount(4); + + var newProduct = products.SingleOrDefault(c => c.Id == id); + newProduct.Should() + .NotBeNull(); + newProduct!.Title + .Should() + .Be(dto.Title); + newProduct.Description + .Should() + .Be(dto.Description); + newProduct.Price + .Should() + .Be(dto.Price); + newProduct.DefaultPicture + .Should() + .BeEquivalentTo(tempImages.Last()); + newProduct.Pictures + .Should() + .AllSatisfy(i => + { + i.Should() + .BeOneOf(tempImages); + + i.IsTemp + .Should() + .BeFalse(); + + i.Thumbnail + .Should() + .NotBeNull(); + + i.ThumbnailId + .Should() + .NotBeNull(); + }); + } + + [Theory(DisplayName = "Edit existing Product succeeds")] + [AutoData] + public async Task EditExistingProductSucceeds(string title, + string description, + decimal price) + { + await SetupAccessToken(); + var dbContext = GetDbContext(); + var productId = Guid.Parse("FA934D1C-1E6D-4DD4-ADC2-08DC18C8810C"); + var productPictures = await dbContext.Set() + .AsNoTracking() + .Where(x => x.Id == productId) + .SelectMany(x => x.Pictures.Select(p => p.Id)) + .ToListAsync(); + var newPictureId = Guid.Parse("418293F5-3F77-44D5-9B98-4B6A9677D5C7"); + var removedPictureId = productPictures.Last(); + productPictures.Remove(removedPictureId); + productPictures.Add(newPictureId); + var companyId = Guid.Parse("95DE146B-86E6-461D-99B3-0CFE0FAA2BAB"); + var dto = new ProductCreateEditDto(title, + description, + price, + companyId, + [.. productPictures], + newPictureId); + + var response = await CreateRequest(ApiRoutes.Products.Put(productId)).PutJsonAsync(dto); + + response.StatusCode + .Should() + .Be((int)HttpStatusCode.NoContent); + + var product = await GetDbContext().Set() + .Include(x => x.Pictures) + .Include(x => x.DefaultPicture) + .SingleOrDefaultAsync(c => c.Id == productId); + product.Should() + .NotBeNull(); + product!.Title + .Should() + .Be(dto.Title); + product.Description + .Should() + .Be(dto.Description); + product.Price + .Should() + .Be(dto.Price); + product.CompanyId + .Should() + .Be(companyId); + product.DefaultPictureId + .Should() + .Be(newPictureId); + product.DefaultPictureId + .Should() + .BeOneOf(productPictures); + product.DefaultPicture + .IsTemp + .Should() + .BeFalse(); + product.Pictures + .Should() + .HaveCount(2); + product.Pictures + .Should() + .NotContain(x => x.Id == removedPictureId); + product.Pictures + .Should() + .Contain(x => x.Id == newPictureId); + product.Pictures + .Should() + .AllSatisfy(p => + { + p.Id + .Should() + .BeOneOf(productPictures); + + p.IsTemp + .Should() + .BeFalse(); + + p.Thumbnail + .Should() + .NotBeNull(); + + p.ThumbnailId + .Should() + .NotBeNull(); + }); + + } + + [Fact(DisplayName = "Delete existing Product succeeds")] + public async Task DeleteExistingProductSucceeds() + { + await SetupAccessToken(); + var productId = Guid.Parse("FA934D1C-1E6D-4DD4-ADC2-08DC18C8810C"); + var response = await CreateRequest(ApiRoutes.Products.Delete(productId)).DeleteAsync(); + + response.StatusCode + .Should() + .Be((int)HttpStatusCode.OK); + + var products = await GetDbContext().Set() + .ToListAsync(); + + products.Should() + .HaveCount(2); + products.Should() + .NotContain(x => x.Id == productId); + } + + public override async Task DisposeAsync() + { + var container = GetBlobContainerClient(); + await container.GetBlobs() + .ParallelForEachAsync(blob => container.DeleteBlobAsync(blob.Name)); + + await base.DisposeAsync(); + } +} \ No newline at end of file diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Service/Monaco.Template.Backend.Service.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Service/Monaco.Template.Backend.Service.csproj index 5d5f514..395d446 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Service/Monaco.Template.Backend.Service.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Service/Monaco.Template.Backend.Service.csproj @@ -18,12 +18,12 @@ - - + + - + diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.sln b/src/Content/Backend/Solution/Monaco.Template.Backend.sln index 2eb9d8a..6fb2e80 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.sln +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.sln @@ -94,6 +94,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution EndProjectSection EndProject #endif +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Monaco.Template.Backend.IntegrationTests", "Monaco.Template.Backend.IntegrationTests\Monaco.Template.Backend.IntegrationTests.csproj", "{2624756F-BBBB-4317-A3DF-B5F683700661}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -204,6 +206,10 @@ Global {CCAA345B-EDE0-441F-8D19-DDAFE52EFB9D}.Release|Any CPU.ActiveCfg = Release|Any CPU {CCAA345B-EDE0-441F-8D19-DDAFE52EFB9D}.Release|Any CPU.Build.0 = Release|Any CPU #endif + {2624756F-BBBB-4317-A3DF-B5F683700661}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2624756F-BBBB-4317-A3DF-B5F683700661}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2624756F-BBBB-4317-A3DF-B5F683700661}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2624756F-BBBB-4317-A3DF-B5F683700661}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -241,6 +247,7 @@ Global {D8623B90-59C1-4753-A0E6-F2DBD4305C9B} = {35484293-234F-40DA-B430-A95170EDE449} #endif #endif + {2624756F-BBBB-4317-A3DF-B5F683700661} = {920A23AF-59DA-4453-B825-0549B1C04F5B} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {42C5F44E-1221-43DF-A6F5-4CB2CBEF8D72} diff --git a/src/Content/Backend/Solution/realm-export-template.json b/src/Content/Backend/Solution/realm-export-template.json index e59668a..98d22c4 100644 --- a/src/Content/Backend/Solution/realm-export-template.json +++ b/src/Content/Backend/Solution/realm-export-template.json @@ -1,2581 +1,2157 @@ { - "id": "monaco-template", - "realm": "monaco-template", - "displayName": "Monaco Template", - "notBefore": 0, - "defaultSignatureAlgorithm": "RS256", - "revokeRefreshToken": false, - "refreshTokenMaxReuse": 0, - "accessTokenLifespan": 300, - "accessTokenLifespanForImplicitFlow": 900, - "ssoSessionIdleTimeout": 1800, - "ssoSessionMaxLifespan": 36000, - "ssoSessionIdleTimeoutRememberMe": 3600, - "ssoSessionMaxLifespanRememberMe": 2592000, - "offlineSessionIdleTimeout": 2592000, - "offlineSessionMaxLifespanEnabled": false, - "offlineSessionMaxLifespan": 5184000, - "clientSessionIdleTimeout": 0, - "clientSessionMaxLifespan": 0, - "clientOfflineSessionIdleTimeout": 0, - "clientOfflineSessionMaxLifespan": 0, - "accessCodeLifespan": 60, - "accessCodeLifespanUserAction": 300, - "accessCodeLifespanLogin": 1800, - "actionTokenGeneratedByAdminLifespan": 43200, - "actionTokenGeneratedByUserLifespan": 300, - "oauth2DeviceCodeLifespan": 600, - "oauth2DevicePollingInterval": 5, - "enabled": true, - "sslRequired": "external", - "registrationAllowed": true, - "registrationEmailAsUsername": true, - "rememberMe": true, - "verifyEmail": true, - "loginWithEmailAllowed": true, - "duplicateEmailsAllowed": false, - "resetPasswordAllowed": true, - "editUsernameAllowed": true, - "bruteForceProtected": false, - "permanentLockout": false, - "maxFailureWaitSeconds": 900, - "minimumQuickLoginWaitSeconds": 60, - "waitIncrementSeconds": 60, - "quickLoginCheckMilliSeconds": 1000, - "maxDeltaTimeSeconds": 43200, - "failureFactor": 30, - "roles": { - "realm": [ - { - "id": "80c3602f-f30d-4f1c-83f4-3e8395bdce25", - "name": "uma_authorization", - "description": "${role_uma_authorization}", - "composite": false, - "clientRole": false, - "containerId": "monaco-template", - "attributes": {} + "id" : "monaco-template", + "realm" : "monaco-template", + "displayName" : "Monaco Template", + "notBefore" : 0, + "defaultSignatureAlgorithm" : "RS256", + "revokeRefreshToken" : false, + "refreshTokenMaxReuse" : 0, + "accessTokenLifespan" : 300, + "accessTokenLifespanForImplicitFlow" : 900, + "ssoSessionIdleTimeout" : 1800, + "ssoSessionMaxLifespan" : 36000, + "ssoSessionIdleTimeoutRememberMe" : 3600, + "ssoSessionMaxLifespanRememberMe" : 2592000, + "offlineSessionIdleTimeout" : 2592000, + "offlineSessionMaxLifespanEnabled" : false, + "offlineSessionMaxLifespan" : 5184000, + "clientSessionIdleTimeout" : 0, + "clientSessionMaxLifespan" : 0, + "clientOfflineSessionIdleTimeout" : 0, + "clientOfflineSessionMaxLifespan" : 0, + "accessCodeLifespan" : 60, + "accessCodeLifespanUserAction" : 300, + "accessCodeLifespanLogin" : 1800, + "actionTokenGeneratedByAdminLifespan" : 43200, + "actionTokenGeneratedByUserLifespan" : 300, + "oauth2DeviceCodeLifespan" : 600, + "oauth2DevicePollingInterval" : 5, + "enabled" : true, + "sslRequired" : "external", + "registrationAllowed" : true, + "registrationEmailAsUsername" : true, + "rememberMe" : true, + "verifyEmail" : true, + "loginWithEmailAllowed" : true, + "duplicateEmailsAllowed" : false, + "resetPasswordAllowed" : true, + "editUsernameAllowed" : true, + "bruteForceProtected" : false, + "permanentLockout" : false, + "maxTemporaryLockouts" : 0, + "maxFailureWaitSeconds" : 900, + "minimumQuickLoginWaitSeconds" : 60, + "waitIncrementSeconds" : 60, + "quickLoginCheckMilliSeconds" : 1000, + "maxDeltaTimeSeconds" : 43200, + "failureFactor" : 30, + "roles" : { + "realm" : [ { + "id" : "80c3602f-f30d-4f1c-83f4-3e8395bdce25", + "name" : "uma_authorization", + "description" : "${role_uma_authorization}", + "composite" : false, + "clientRole" : false, + "containerId" : "monaco-template", + "attributes" : { } + }, { + "id" : "c11e0fa2-baf7-44ae-9db9-28ce239042b6", + "name" : "default-roles-monaco-template", + "description" : "${role_default-roles}", + "composite" : true, + "composites" : { + "realm" : [ "offline_access", "uma_authorization" ], + "client" : { + "account" : [ "view-profile", "manage-account" ] + } }, - { - "id": "c11e0fa2-baf7-44ae-9db9-28ce239042b6", - "name": "default-roles-monaco-template", - "description": "${role_default-roles}", - "composite": true, - "composites": { - "realm": [ - "offline_access", - "uma_authorization" - ], - "client": { - "account": [ - "view-profile", - "manage-account" - ] + "clientRole" : false, + "containerId" : "monaco-template", + "attributes" : { } + }, { + "id" : "95c05d66-9802-411a-9f82-4b9ab0b34685", + "name" : "offline_access", + "description" : "${role_offline-access}", + "composite" : false, + "clientRole" : false, + "containerId" : "monaco-template", + "attributes" : { } + } ], + "client" : { + "realm-management" : [ { + "id" : "4a5cb9f2-340b-483c-83d7-7324fc61cde4", + "name" : "manage-identity-providers", + "description" : "${role_manage-identity-providers}", + "composite" : false, + "clientRole" : true, + "containerId" : "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes" : { } + }, { + "id" : "e4ebbdd6-038d-4785-946c-c04459aaa3c3", + "name" : "view-events", + "description" : "${role_view-events}", + "composite" : false, + "clientRole" : true, + "containerId" : "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes" : { } + }, { + "id" : "229edc38-dd6a-4e97-a578-bee21fb23ea2", + "name" : "manage-authorization", + "description" : "${role_manage-authorization}", + "composite" : false, + "clientRole" : true, + "containerId" : "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes" : { } + }, { + "id" : "ea5e3351-ae37-4c0d-8bc3-33fa548a017f", + "name" : "query-clients", + "description" : "${role_query-clients}", + "composite" : false, + "clientRole" : true, + "containerId" : "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes" : { } + }, { + "id" : "0d624864-bc7a-46c9-a54e-2e65f94d670a", + "name" : "view-clients", + "description" : "${role_view-clients}", + "composite" : true, + "composites" : { + "client" : { + "realm-management" : [ "query-clients" ] } }, - "clientRole": false, - "containerId": "monaco-template", - "attributes": {} - }, - { - "id": "95c05d66-9802-411a-9f82-4b9ab0b34685", - "name": "offline_access", - "description": "${role_offline-access}", - "composite": false, - "clientRole": false, - "containerId": "monaco-template", - "attributes": {} - } - ], - "client": { - "realm-management": [ - { - "id": "4a5cb9f2-340b-483c-83d7-7324fc61cde4", - "name": "manage-identity-providers", - "description": "${role_manage-identity-providers}", - "composite": false, - "clientRole": true, - "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", - "attributes": {} - }, - { - "id": "e4ebbdd6-038d-4785-946c-c04459aaa3c3", - "name": "view-events", - "description": "${role_view-events}", - "composite": false, - "clientRole": true, - "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", - "attributes": {} - }, - { - "id": "229edc38-dd6a-4e97-a578-bee21fb23ea2", - "name": "manage-authorization", - "description": "${role_manage-authorization}", - "composite": false, - "clientRole": true, - "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", - "attributes": {} - }, - { - "id": "ea5e3351-ae37-4c0d-8bc3-33fa548a017f", - "name": "query-clients", - "description": "${role_query-clients}", - "composite": false, - "clientRole": true, - "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", - "attributes": {} - }, - { - "id": "0d624864-bc7a-46c9-a54e-2e65f94d670a", - "name": "view-clients", - "description": "${role_view-clients}", - "composite": true, - "composites": { - "client": { - "realm-management": [ - "query-clients" - ] - } - }, - "clientRole": true, - "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", - "attributes": {} - }, - { - "id": "39965fdb-b81f-49c6-aadd-2549866dbf50", - "name": "impersonation", - "description": "${role_impersonation}", - "composite": false, - "clientRole": true, - "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", - "attributes": {} - }, - { - "id": "c67b26e1-e0bb-4d77-8dba-804fa937e07c", - "name": "query-users", - "description": "${role_query-users}", - "composite": false, - "clientRole": true, - "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", - "attributes": {} - }, - { - "id": "97915d9f-50ca-4ef1-bd76-b0d8e567b6da", - "name": "query-realms", - "description": "${role_query-realms}", - "composite": false, - "clientRole": true, - "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", - "attributes": {} - }, - { - "id": "59605495-cafb-48bd-96f2-82963a849fd5", - "name": "view-identity-providers", - "description": "${role_view-identity-providers}", - "composite": false, - "clientRole": true, - "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", - "attributes": {} - }, - { - "id": "e581564a-4e64-4ed7-bc62-9bcb2face818", - "name": "view-realm", - "description": "${role_view-realm}", - "composite": false, - "clientRole": true, - "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", - "attributes": {} - }, - { - "id": "91c0dbb8-6e8f-4500-8cd3-f70ee68f19c3", - "name": "manage-realm", - "description": "${role_manage-realm}", - "composite": false, - "clientRole": true, - "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", - "attributes": {} - }, - { - "id": "41478e41-088b-4e0c-8433-738f39e2052e", - "name": "realm-admin", - "description": "${role_realm-admin}", - "composite": true, - "composites": { - "client": { - "realm-management": [ - "manage-identity-providers", - "view-events", - "manage-authorization", - "query-clients", - "view-clients", - "impersonation", - "query-users", - "query-realms", - "view-identity-providers", - "view-realm", - "manage-realm", - "manage-events", - "manage-users", - "manage-clients", - "query-groups", - "view-users", - "create-client", - "view-authorization" - ] - } - }, - "clientRole": true, - "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", - "attributes": {} - }, - { - "id": "238b7a77-c046-45e1-95a3-ec7b3548f582", - "name": "manage-events", - "description": "${role_manage-events}", - "composite": false, - "clientRole": true, - "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", - "attributes": {} - }, - { - "id": "9bf8d229-3706-464f-b3a9-ac2b3d54aef6", - "name": "manage-users", - "description": "${role_manage-users}", - "composite": false, - "clientRole": true, - "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", - "attributes": {} - }, - { - "id": "e8ce41b7-3028-4e12-bda7-49359d8bc1e3", - "name": "manage-clients", - "description": "${role_manage-clients}", - "composite": false, - "clientRole": true, - "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", - "attributes": {} - }, - { - "id": "2cfbaddb-4699-42a3-9da5-1405dc4c7d2d", - "name": "query-groups", - "description": "${role_query-groups}", - "composite": false, - "clientRole": true, - "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", - "attributes": {} - }, - { - "id": "79cca5ea-3316-4d5f-ba5e-a604153ea8dd", - "name": "view-users", - "description": "${role_view-users}", - "composite": true, - "composites": { - "client": { - "realm-management": [ - "query-groups", - "query-users" - ] - } - }, - "clientRole": true, - "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", - "attributes": {} - }, - { - "id": "4ea907e9-949f-4e08-aa61-6373f17e7d9d", - "name": "create-client", - "description": "${role_create-client}", - "composite": false, - "clientRole": true, - "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", - "attributes": {} - }, - { - "id": "71257166-f1f5-4708-b1c1-7ee1ba0412c3", - "name": "view-authorization", - "description": "${role_view-authorization}", - "composite": false, - "clientRole": true, - "containerId": "05648945-7e90-42ec-a4dc-233fd52cddfe", - "attributes": {} - } - ], - "monaco-template-api-swagger-ui": [], - "monaco-template-front": [], - "security-admin-console": [], - "monaco-template-backend": [], - "admin-cli": [], - "account-console": [], - "broker": [ - { - "id": "b942c498-cc32-448f-8252-399d9f99770a", - "name": "read-token", - "description": "${role_read-token}", - "composite": false, - "clientRole": true, - "containerId": "e8572aad-4593-4744-9f3e-36ddc85edca7", - "attributes": {} - } - ], - "account": [ - { - "id": "d900da8a-7cd8-42af-9367-3a4f8039f1a8", - "name": "view-profile", - "description": "${role_view-profile}", - "composite": false, - "clientRole": true, - "containerId": "b3a43f06-b62f-4308-9a51-f5159e3359a3", - "attributes": {} - }, - { - "id": "9ec31276-3997-49d7-a842-0a36564a180d", - "name": "manage-account-links", - "description": "${role_manage-account-links}", - "composite": false, - "clientRole": true, - "containerId": "b3a43f06-b62f-4308-9a51-f5159e3359a3", - "attributes": {} - }, - { - "id": "d34a41a6-7c64-408a-a378-3df70edc20d9", - "name": "view-consent", - "description": "${role_view-consent}", - "composite": false, - "clientRole": true, - "containerId": "b3a43f06-b62f-4308-9a51-f5159e3359a3", - "attributes": {} - }, - { - "id": "9522c83e-dbc9-4fde-a61f-9a37a5ab89ee", - "name": "manage-account", - "description": "${role_manage-account}", - "composite": true, - "composites": { - "client": { - "account": [ - "manage-account-links" - ] - } - }, - "clientRole": true, - "containerId": "b3a43f06-b62f-4308-9a51-f5159e3359a3", - "attributes": {} - }, - { - "id": "7d7112cb-ffed-4b52-b440-3fdbd7a63c5a", - "name": "view-groups", - "description": "${role_view-groups}", - "composite": false, - "clientRole": true, - "containerId": "b3a43f06-b62f-4308-9a51-f5159e3359a3", - "attributes": {} + "clientRole" : true, + "containerId" : "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes" : { } + }, { + "id" : "39965fdb-b81f-49c6-aadd-2549866dbf50", + "name" : "impersonation", + "description" : "${role_impersonation}", + "composite" : false, + "clientRole" : true, + "containerId" : "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes" : { } + }, { + "id" : "c67b26e1-e0bb-4d77-8dba-804fa937e07c", + "name" : "query-users", + "description" : "${role_query-users}", + "composite" : false, + "clientRole" : true, + "containerId" : "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes" : { } + }, { + "id" : "97915d9f-50ca-4ef1-bd76-b0d8e567b6da", + "name" : "query-realms", + "description" : "${role_query-realms}", + "composite" : false, + "clientRole" : true, + "containerId" : "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes" : { } + }, { + "id" : "59605495-cafb-48bd-96f2-82963a849fd5", + "name" : "view-identity-providers", + "description" : "${role_view-identity-providers}", + "composite" : false, + "clientRole" : true, + "containerId" : "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes" : { } + }, { + "id" : "e581564a-4e64-4ed7-bc62-9bcb2face818", + "name" : "view-realm", + "description" : "${role_view-realm}", + "composite" : false, + "clientRole" : true, + "containerId" : "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes" : { } + }, { + "id" : "91c0dbb8-6e8f-4500-8cd3-f70ee68f19c3", + "name" : "manage-realm", + "description" : "${role_manage-realm}", + "composite" : false, + "clientRole" : true, + "containerId" : "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes" : { } + }, { + "id" : "41478e41-088b-4e0c-8433-738f39e2052e", + "name" : "realm-admin", + "description" : "${role_realm-admin}", + "composite" : true, + "composites" : { + "client" : { + "realm-management" : [ "manage-identity-providers", "view-events", "manage-authorization", "query-clients", "view-clients", "impersonation", "query-users", "query-realms", "view-identity-providers", "view-realm", "manage-realm", "manage-events", "manage-users", "manage-clients", "query-groups", "view-users", "create-client", "view-authorization" ] + } }, - { - "id": "c443d55b-32e6-47e9-a057-96a7eab1d688", - "name": "manage-consent", - "description": "${role_manage-consent}", - "composite": true, - "composites": { - "client": { - "account": [ - "view-consent" - ] - } - }, - "clientRole": true, - "containerId": "b3a43f06-b62f-4308-9a51-f5159e3359a3", - "attributes": {} + "clientRole" : true, + "containerId" : "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes" : { } + }, { + "id" : "238b7a77-c046-45e1-95a3-ec7b3548f582", + "name" : "manage-events", + "description" : "${role_manage-events}", + "composite" : false, + "clientRole" : true, + "containerId" : "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes" : { } + }, { + "id" : "9bf8d229-3706-464f-b3a9-ac2b3d54aef6", + "name" : "manage-users", + "description" : "${role_manage-users}", + "composite" : false, + "clientRole" : true, + "containerId" : "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes" : { } + }, { + "id" : "e8ce41b7-3028-4e12-bda7-49359d8bc1e3", + "name" : "manage-clients", + "description" : "${role_manage-clients}", + "composite" : false, + "clientRole" : true, + "containerId" : "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes" : { } + }, { + "id" : "2cfbaddb-4699-42a3-9da5-1405dc4c7d2d", + "name" : "query-groups", + "description" : "${role_query-groups}", + "composite" : false, + "clientRole" : true, + "containerId" : "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes" : { } + }, { + "id" : "79cca5ea-3316-4d5f-ba5e-a604153ea8dd", + "name" : "view-users", + "description" : "${role_view-users}", + "composite" : true, + "composites" : { + "client" : { + "realm-management" : [ "query-groups", "query-users" ] + } }, - { - "id": "4857a3cf-f3b0-48ac-94cc-3b2384696b44", - "name": "view-applications", - "description": "${role_view-applications}", - "composite": false, - "clientRole": true, - "containerId": "b3a43f06-b62f-4308-9a51-f5159e3359a3", - "attributes": {} + "clientRole" : true, + "containerId" : "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes" : { } + }, { + "id" : "4ea907e9-949f-4e08-aa61-6373f17e7d9d", + "name" : "create-client", + "description" : "${role_create-client}", + "composite" : false, + "clientRole" : true, + "containerId" : "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes" : { } + }, { + "id" : "71257166-f1f5-4708-b1c1-7ee1ba0412c3", + "name" : "view-authorization", + "description" : "${role_view-authorization}", + "composite" : false, + "clientRole" : true, + "containerId" : "05648945-7e90-42ec-a4dc-233fd52cddfe", + "attributes" : { } + } ], + "monaco-template-api-swagger-ui" : [ ], + "monaco-template-front" : [ ], + "security-admin-console" : [ ], + "monaco-template-backend" : [ ], + "admin-cli" : [ ], + "account-console" : [ ], + "broker" : [ { + "id" : "b942c498-cc32-448f-8252-399d9f99770a", + "name" : "read-token", + "description" : "${role_read-token}", + "composite" : false, + "clientRole" : true, + "containerId" : "e8572aad-4593-4744-9f3e-36ddc85edca7", + "attributes" : { } + } ], + "account" : [ { + "id" : "d900da8a-7cd8-42af-9367-3a4f8039f1a8", + "name" : "view-profile", + "description" : "${role_view-profile}", + "composite" : false, + "clientRole" : true, + "containerId" : "b3a43f06-b62f-4308-9a51-f5159e3359a3", + "attributes" : { } + }, { + "id" : "9ec31276-3997-49d7-a842-0a36564a180d", + "name" : "manage-account-links", + "description" : "${role_manage-account-links}", + "composite" : false, + "clientRole" : true, + "containerId" : "b3a43f06-b62f-4308-9a51-f5159e3359a3", + "attributes" : { } + }, { + "id" : "d34a41a6-7c64-408a-a378-3df70edc20d9", + "name" : "view-consent", + "description" : "${role_view-consent}", + "composite" : false, + "clientRole" : true, + "containerId" : "b3a43f06-b62f-4308-9a51-f5159e3359a3", + "attributes" : { } + }, { + "id" : "9522c83e-dbc9-4fde-a61f-9a37a5ab89ee", + "name" : "manage-account", + "description" : "${role_manage-account}", + "composite" : true, + "composites" : { + "client" : { + "account" : [ "manage-account-links" ] + } }, - { - "id": "6c345596-0966-47ed-b41b-6ba41319908c", - "name": "delete-account", - "description": "${role_delete-account}", - "composite": false, - "clientRole": true, - "containerId": "b3a43f06-b62f-4308-9a51-f5159e3359a3", - "attributes": {} - } - ], - "monaco-template-api": [ - { - "id": "2a0fe481-1bc6-4fa4-a02d-0aace321c60e", - "name": "Administrator", - "description": "", - "composite": false, - "clientRole": true, - "containerId": "cc450c6d-bf28-45e4-9148-6bb7d4187641", - "attributes": {} + "clientRole" : true, + "containerId" : "b3a43f06-b62f-4308-9a51-f5159e3359a3", + "attributes" : { } + }, { + "id" : "7d7112cb-ffed-4b52-b440-3fdbd7a63c5a", + "name" : "view-groups", + "description" : "${role_view-groups}", + "composite" : false, + "clientRole" : true, + "containerId" : "b3a43f06-b62f-4308-9a51-f5159e3359a3", + "attributes" : { } + }, { + "id" : "c443d55b-32e6-47e9-a057-96a7eab1d688", + "name" : "manage-consent", + "description" : "${role_manage-consent}", + "composite" : true, + "composites" : { + "client" : { + "account" : [ "view-consent" ] + } }, - { - "id": "53405b4d-d952-47d8-9bc7-8f52a15522e8", - "name": "Customer", - "description": "", - "composite": false, - "clientRole": true, - "containerId": "cc450c6d-bf28-45e4-9148-6bb7d4187641", - "attributes": {} - } - ] + "clientRole" : true, + "containerId" : "b3a43f06-b62f-4308-9a51-f5159e3359a3", + "attributes" : { } + }, { + "id" : "4857a3cf-f3b0-48ac-94cc-3b2384696b44", + "name" : "view-applications", + "description" : "${role_view-applications}", + "composite" : false, + "clientRole" : true, + "containerId" : "b3a43f06-b62f-4308-9a51-f5159e3359a3", + "attributes" : { } + }, { + "id" : "6c345596-0966-47ed-b41b-6ba41319908c", + "name" : "delete-account", + "description" : "${role_delete-account}", + "composite" : false, + "clientRole" : true, + "containerId" : "b3a43f06-b62f-4308-9a51-f5159e3359a3", + "attributes" : { } + } ], + "monaco-template-api" : [ { + "id" : "2a0fe481-1bc6-4fa4-a02d-0aace321c60e", + "name" : "Administrator", + "description" : "", + "composite" : false, + "clientRole" : true, + "containerId" : "cc450c6d-bf28-45e4-9148-6bb7d4187641", + "attributes" : { } + }, { + "id" : "53405b4d-d952-47d8-9bc7-8f52a15522e8", + "name" : "Customer", + "description" : "", + "composite" : false, + "clientRole" : true, + "containerId" : "cc450c6d-bf28-45e4-9148-6bb7d4187641", + "attributes" : { } + } ] } }, - "groups": [], - "defaultRole": { - "id": "c11e0fa2-baf7-44ae-9db9-28ce239042b6", - "name": "default-roles-monaco-template", - "description": "${role_default-roles}", - "composite": true, - "clientRole": false, - "containerId": "monaco-template" + "groups" : [ ], + "defaultRole" : { + "id" : "c11e0fa2-baf7-44ae-9db9-28ce239042b6", + "name" : "default-roles-monaco-template", + "description" : "${role_default-roles}", + "composite" : true, + "clientRole" : false, + "containerId" : "monaco-template" }, - "requiredCredentials": [ - "password" - ], - "otpPolicyType": "totp", - "otpPolicyAlgorithm": "HmacSHA1", - "otpPolicyInitialCounter": 0, - "otpPolicyDigits": 6, - "otpPolicyLookAheadWindow": 1, - "otpPolicyPeriod": 30, - "otpPolicyCodeReusable": false, - "otpSupportedApplications": [ - "totpAppGoogleName", - "totpAppMicrosoftAuthenticatorName", - "totpAppFreeOTPName" - ], - "webAuthnPolicyRpEntityName": "keycloak", - "webAuthnPolicySignatureAlgorithms": [ - "ES256" - ], - "webAuthnPolicyRpId": "", - "webAuthnPolicyAttestationConveyancePreference": "not specified", - "webAuthnPolicyAuthenticatorAttachment": "not specified", - "webAuthnPolicyRequireResidentKey": "not specified", - "webAuthnPolicyUserVerificationRequirement": "not specified", - "webAuthnPolicyCreateTimeout": 0, - "webAuthnPolicyAvoidSameAuthenticatorRegister": false, - "webAuthnPolicyAcceptableAaguids": [], - "webAuthnPolicyPasswordlessRpEntityName": "keycloak", - "webAuthnPolicyPasswordlessSignatureAlgorithms": [ - "ES256" - ], - "webAuthnPolicyPasswordlessRpId": "", - "webAuthnPolicyPasswordlessAttestationConveyancePreference": "not specified", - "webAuthnPolicyPasswordlessAuthenticatorAttachment": "not specified", - "webAuthnPolicyPasswordlessRequireResidentKey": "not specified", - "webAuthnPolicyPasswordlessUserVerificationRequirement": "not specified", - "webAuthnPolicyPasswordlessCreateTimeout": 0, - "webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister": false, - "webAuthnPolicyPasswordlessAcceptableAaguids": [], - "scopeMappings": [ - { - "clientScope": "offline_access", - "roles": [ - "offline_access" - ] - } - ], - "clientScopeMappings": { - "account": [ - { - "client": "account-console", - "roles": [ - "manage-account", - "view-groups" - ] - } - ], - "monaco-template-api": [ - { - "clientScope": "companies:read", - "roles": [ - "Administrator", - "Customer" - ] - }, - { - "clientScope": "companies:write", - "roles": [ - "Administrator" - ] - }, - { - "clientScope": "files:write", - "roles": [ - "Administrator" - ] - }, - { - "clientScope": "products:write", - "roles": [ - "Administrator" - ] - } - ] - }, - "clients": [ - { - "id": "b3a43f06-b62f-4308-9a51-f5159e3359a3", - "clientId": "account", - "name": "${client_account}", - "rootUrl": "${authBaseUrl}", - "baseUrl": "/realms/monaco-template/account/", - "surrogateAuthRequired": false, - "enabled": true, - "alwaysDisplayInConsole": false, - "clientAuthenticatorType": "client-secret", - "redirectUris": [ - "/realms/monaco-template/account/*" - ], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": false, - "serviceAccountsEnabled": false, - "publicClient": true, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": { - "post.logout.redirect.uris": "+" - }, - "authenticationFlowBindingOverrides": {}, - "fullScopeAllowed": false, - "nodeReRegistrationTimeout": 0, - "defaultClientScopes": [ - "web-origins", - "roles", - "profile", - "email" - ], - "optionalClientScopes": [ - "address", - "phone", - "offline_access", - "microprofile-jwt" - ] + "requiredCredentials" : [ "password" ], + "otpPolicyType" : "totp", + "otpPolicyAlgorithm" : "HmacSHA1", + "otpPolicyInitialCounter" : 0, + "otpPolicyDigits" : 6, + "otpPolicyLookAheadWindow" : 1, + "otpPolicyPeriod" : 30, + "otpPolicyCodeReusable" : false, + "otpSupportedApplications" : [ "totpAppFreeOTPName", "totpAppGoogleName", "totpAppMicrosoftAuthenticatorName" ], + "localizationTexts" : { }, + "webAuthnPolicyRpEntityName" : "keycloak", + "webAuthnPolicySignatureAlgorithms" : [ "ES256" ], + "webAuthnPolicyRpId" : "", + "webAuthnPolicyAttestationConveyancePreference" : "not specified", + "webAuthnPolicyAuthenticatorAttachment" : "not specified", + "webAuthnPolicyRequireResidentKey" : "not specified", + "webAuthnPolicyUserVerificationRequirement" : "not specified", + "webAuthnPolicyCreateTimeout" : 0, + "webAuthnPolicyAvoidSameAuthenticatorRegister" : false, + "webAuthnPolicyAcceptableAaguids" : [ ], + "webAuthnPolicyExtraOrigins" : [ ], + "webAuthnPolicyPasswordlessRpEntityName" : "keycloak", + "webAuthnPolicyPasswordlessSignatureAlgorithms" : [ "ES256" ], + "webAuthnPolicyPasswordlessRpId" : "", + "webAuthnPolicyPasswordlessAttestationConveyancePreference" : "not specified", + "webAuthnPolicyPasswordlessAuthenticatorAttachment" : "not specified", + "webAuthnPolicyPasswordlessRequireResidentKey" : "not specified", + "webAuthnPolicyPasswordlessUserVerificationRequirement" : "not specified", + "webAuthnPolicyPasswordlessCreateTimeout" : 0, + "webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister" : false, + "webAuthnPolicyPasswordlessAcceptableAaguids" : [ ], + "webAuthnPolicyPasswordlessExtraOrigins" : [ ], + "users" : [ { + "id" : "57b460f0-2e14-4a61-b34d-4c6cced30590", + "username" : "admin@admin.com", + "firstName" : "Admin", + "lastName" : "Admin", + "email" : "admin@admin.com", + "emailVerified" : true, + "createdTimestamp" : 1727335733388, + "enabled" : true, + "totp" : false, + "credentials" : [ { + "id" : "443dfdde-ede5-4e1f-bf31-a4b673a12c4c", + "type" : "password", + "userLabel" : "My password", + "createdDate" : 1727335748614, + "secretData" : "{\"value\":\"Cgv79PZLkrbQ9TIMy1QMf043sb2VY0TZpZFHS9TwTSk=\",\"salt\":\"NkZacNCQ9JiF6NiIB3hSaA==\",\"additionalParameters\":{}}", + "credentialData" : "{\"hashIterations\":5,\"algorithm\":\"argon2\",\"additionalParameters\":{\"hashLength\":[\"32\"],\"memory\":[\"7168\"],\"type\":[\"id\"],\"version\":[\"1.3\"],\"parallelism\":[\"1\"]}}" + } ], + "disableableCredentialTypes" : [ ], + "requiredActions" : [ ], + "realmRoles" : [ "default-roles-monaco-template" ], + "clientRoles" : { + "realm-management" : [ "realm-admin" ] }, - { - "id": "4aee08a5-4691-4a57-9d87-e02dc59fe3ab", - "clientId": "account-console", - "name": "${client_account-console}", - "rootUrl": "${authBaseUrl}", - "baseUrl": "/realms/monaco-template/account/", - "surrogateAuthRequired": false, - "enabled": true, - "alwaysDisplayInConsole": false, - "clientAuthenticatorType": "client-secret", - "redirectUris": [ - "/realms/monaco-template/account/*" - ], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": false, - "serviceAccountsEnabled": false, - "publicClient": true, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": { - "post.logout.redirect.uris": "+", - "pkce.code.challenge.method": "S256" - }, - "authenticationFlowBindingOverrides": {}, - "fullScopeAllowed": false, - "nodeReRegistrationTimeout": 0, - "protocolMappers": [ - { - "id": "ed97a0b3-c82c-471f-89dc-b48e738381fa", - "name": "audience resolve", - "protocol": "openid-connect", - "protocolMapper": "oidc-audience-resolve-mapper", - "consentRequired": false, - "config": {} - } - ], - "defaultClientScopes": [ - "web-origins", - "roles", - "profile", - "email" - ], - "optionalClientScopes": [ - "address", - "phone", - "offline_access", - "microprofile-jwt" - ] + "notBefore" : 0, + "groups" : [ ] + } ], + "scopeMappings" : [ { + "clientScope" : "offline_access", + "roles" : [ "offline_access" ] + } ], + "clientScopeMappings" : { + "account" : [ { + "client" : "account-console", + "roles" : [ "manage-account", "view-groups" ] + } ], + "monaco-template-api" : [ { + "clientScope" : "companies:read", + "roles" : [ "Administrator", "Customer" ] + }, { + "clientScope" : "companies:write", + "roles" : [ "Administrator" ] + }, { + "clientScope" : "files:write", + "roles" : [ "Administrator" ] + }, { + "clientScope" : "products:write", + "roles" : [ "Administrator" ] + } ] + }, + "clients" : [ { + "id" : "b3a43f06-b62f-4308-9a51-f5159e3359a3", + "clientId" : "account", + "name" : "${client_account}", + "rootUrl" : "${authBaseUrl}", + "baseUrl" : "/realms/monaco-template/account/", + "surrogateAuthRequired" : false, + "enabled" : true, + "alwaysDisplayInConsole" : false, + "clientAuthenticatorType" : "client-secret", + "redirectUris" : [ "/realms/monaco-template/account/*" ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : false, + "consentRequired" : false, + "standardFlowEnabled" : true, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : false, + "serviceAccountsEnabled" : false, + "publicClient" : true, + "frontchannelLogout" : false, + "protocol" : "openid-connect", + "attributes" : { + "post.logout.redirect.uris" : "+" }, - { - "id": "a1a76a9c-e22e-4e5a-aeec-e71b381ca77e", - "clientId": "admin-cli", - "name": "${client_admin-cli}", - "surrogateAuthRequired": false, - "enabled": true, - "alwaysDisplayInConsole": false, - "clientAuthenticatorType": "client-secret", - "redirectUris": [], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": false, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": true, - "serviceAccountsEnabled": false, - "publicClient": true, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": { - "post.logout.redirect.uris": "+" - }, - "authenticationFlowBindingOverrides": {}, - "fullScopeAllowed": false, - "nodeReRegistrationTimeout": 0, - "defaultClientScopes": [ - "web-origins", - "roles", - "profile", - "email" - ], - "optionalClientScopes": [ - "address", - "phone", - "offline_access", - "microprofile-jwt" - ] + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : false, + "nodeReRegistrationTimeout" : 0, + "defaultClientScopes" : [ "web-origins", "roles", "profile", "basic", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "4aee08a5-4691-4a57-9d87-e02dc59fe3ab", + "clientId" : "account-console", + "name" : "${client_account-console}", + "rootUrl" : "${authBaseUrl}", + "baseUrl" : "/realms/monaco-template/account/", + "surrogateAuthRequired" : false, + "enabled" : true, + "alwaysDisplayInConsole" : false, + "clientAuthenticatorType" : "client-secret", + "redirectUris" : [ "/realms/monaco-template/account/*" ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : false, + "consentRequired" : false, + "standardFlowEnabled" : true, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : false, + "serviceAccountsEnabled" : false, + "publicClient" : true, + "frontchannelLogout" : false, + "protocol" : "openid-connect", + "attributes" : { + "post.logout.redirect.uris" : "+", + "pkce.code.challenge.method" : "S256" }, - { - "id": "e8572aad-4593-4744-9f3e-36ddc85edca7", - "clientId": "broker", - "name": "${client_broker}", - "surrogateAuthRequired": false, - "enabled": true, - "alwaysDisplayInConsole": false, - "clientAuthenticatorType": "client-secret", - "redirectUris": [], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": true, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": false, - "serviceAccountsEnabled": false, - "publicClient": false, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": { - "post.logout.redirect.uris": "+" - }, - "authenticationFlowBindingOverrides": {}, - "fullScopeAllowed": false, - "nodeReRegistrationTimeout": 0, - "defaultClientScopes": [ - "web-origins", - "roles", - "profile", - "email" - ], - "optionalClientScopes": [ - "address", - "phone", - "offline_access", - "microprofile-jwt" - ] + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : false, + "nodeReRegistrationTimeout" : 0, + "protocolMappers" : [ { + "id" : "ed97a0b3-c82c-471f-89dc-b48e738381fa", + "name" : "audience resolve", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-audience-resolve-mapper", + "consentRequired" : false, + "config" : { } + } ], + "defaultClientScopes" : [ "web-origins", "roles", "profile", "basic", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "a1a76a9c-e22e-4e5a-aeec-e71b381ca77e", + "clientId" : "admin-cli", + "name" : "${client_admin-cli}", + "surrogateAuthRequired" : false, + "enabled" : true, + "alwaysDisplayInConsole" : false, + "clientAuthenticatorType" : "client-secret", + "redirectUris" : [ ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : false, + "consentRequired" : false, + "standardFlowEnabled" : false, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : true, + "serviceAccountsEnabled" : false, + "publicClient" : true, + "frontchannelLogout" : false, + "protocol" : "openid-connect", + "attributes" : { + "post.logout.redirect.uris" : "+" }, - { - "id": "cc450c6d-bf28-45e4-9148-6bb7d4187641", - "clientId": "monaco-template-api", - "name": "Monaco Template API", - "description": "Monaco Template API", - "adminUrl": "", - "surrogateAuthRequired": false, - "enabled": true, - "alwaysDisplayInConsole": false, - "clientAuthenticatorType": "client-secret", - "redirectUris": [], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": true, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": true, - "serviceAccountsEnabled": false, - "publicClient": false, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": { - "id.token.as.detached.signature": "false", - "saml.assertion.signature": "false", - "saml.force.post.binding": "false", - "saml.multivalued.roles": "false", - "saml.encrypt": "false", - "post.logout.redirect.uris": "+", - "oauth2.device.authorization.grant.enabled": "false", - "backchannel.logout.revoke.offline.tokens": "false", - "saml.server.signature": "false", - "saml.server.signature.keyinfo.ext": "false", - "use.refresh.tokens": "true", - "exclude.session.state.from.auth.response": "false", - "oidc.ciba.grant.enabled": "false", - "saml.artifact.binding": "false", - "backchannel.logout.session.required": "true", - "client_credentials.use_refresh_token": "false", - "saml_force_name_id_format": "false", - "require.pushed.authorization.requests": "false", - "saml.client.signature": "false", - "tls.client.certificate.bound.access.tokens": "false", - "saml.authnstatement": "false", - "display.on.consent.screen": "false", - "saml.onetimeuse.condition": "false" - }, - "authenticationFlowBindingOverrides": {}, - "fullScopeAllowed": true, - "nodeReRegistrationTimeout": -1, - "defaultClientScopes": [ - "web-origins", - "roles", - "profile", - "email" - ], - "optionalClientScopes": [ - "address", - "phone", - "offline_access", - "microprofile-jwt" - ] + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : false, + "nodeReRegistrationTimeout" : 0, + "defaultClientScopes" : [ "web-origins", "roles", "profile", "basic", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "e8572aad-4593-4744-9f3e-36ddc85edca7", + "clientId" : "broker", + "name" : "${client_broker}", + "surrogateAuthRequired" : false, + "enabled" : true, + "alwaysDisplayInConsole" : false, + "clientAuthenticatorType" : "client-secret", + "redirectUris" : [ ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : true, + "consentRequired" : false, + "standardFlowEnabled" : true, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : false, + "serviceAccountsEnabled" : false, + "publicClient" : false, + "frontchannelLogout" : false, + "protocol" : "openid-connect", + "attributes" : { + "post.logout.redirect.uris" : "+" }, - { - "id": "b6049a46-fbd1-4368-a72b-364c284f01e0", - "clientId": "monaco-template-api-swagger-ui", - "name": "Monaco Template API Swagger", - "description": "Monaco Template API - Swagger client", - "rootUrl": "", - "adminUrl": "", - "baseUrl": "", - "surrogateAuthRequired": false, - "enabled": true, - "alwaysDisplayInConsole": false, - "clientAuthenticatorType": "client-secret", - "redirectUris": [ - "*" - ], - "webOrigins": [ - "*" - ], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": true, - "serviceAccountsEnabled": false, - "publicClient": true, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": { - "saml.force.post.binding": "false", - "saml.multivalued.roles": "false", - "post.logout.redirect.uris": "+", - "oauth2.device.authorization.grant.enabled": "false", - "backchannel.logout.revoke.offline.tokens": "false", - "saml.server.signature.keyinfo.ext": "false", - "use.refresh.tokens": "false", - "oidc.ciba.grant.enabled": "false", - "backchannel.logout.session.required": "true", - "client_credentials.use_refresh_token": "false", - "require.pushed.authorization.requests": "false", - "saml.client.signature": "false", - "id.token.as.detached.signature": "false", - "saml.assertion.signature": "false", - "saml.encrypt": "false", - "saml.server.signature": "false", - "exclude.session.state.from.auth.response": "false", - "tls-client-certificate-bound-access-tokens": "false", - "saml.artifact.binding": "false", - "saml_force_name_id_format": "false", - "tls.client.certificate.bound.access.tokens": "false", - "acr.loa.map": "{}", - "saml.authnstatement": "false", - "display.on.consent.screen": "false", - "token.response.type.bearer.lower-case": "false", - "saml.onetimeuse.condition": "false" - }, - "authenticationFlowBindingOverrides": {}, - "fullScopeAllowed": false, - "nodeReRegistrationTimeout": -1, - "defaultClientScopes": [ - "web-origins", - "roles", - "profile", - "email", - "monaco-template-api" - ], - "optionalClientScopes": [ - "files:write", - "address", - "companies:read", - "phone", - "offline_access", - "microprofile-jwt", - "products:write", - "companies:write" - ] + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : false, + "nodeReRegistrationTimeout" : 0, + "defaultClientScopes" : [ "web-origins", "roles", "profile", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "cc450c6d-bf28-45e4-9148-6bb7d4187641", + "clientId" : "monaco-template-api", + "name" : "Monaco Template API", + "description" : "Monaco Template API", + "adminUrl" : "", + "surrogateAuthRequired" : false, + "enabled" : true, + "alwaysDisplayInConsole" : false, + "clientAuthenticatorType" : "client-secret", + "redirectUris" : [ ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : true, + "consentRequired" : false, + "standardFlowEnabled" : true, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : true, + "serviceAccountsEnabled" : false, + "publicClient" : false, + "frontchannelLogout" : false, + "protocol" : "openid-connect", + "attributes" : { + "id.token.as.detached.signature" : "false", + "saml.assertion.signature" : "false", + "saml.force.post.binding" : "false", + "saml.multivalued.roles" : "false", + "saml.encrypt" : "false", + "post.logout.redirect.uris" : "+", + "oauth2.device.authorization.grant.enabled" : "false", + "backchannel.logout.revoke.offline.tokens" : "false", + "saml.server.signature" : "false", + "saml.server.signature.keyinfo.ext" : "false", + "use.refresh.tokens" : "true", + "exclude.session.state.from.auth.response" : "false", + "oidc.ciba.grant.enabled" : "false", + "saml.artifact.binding" : "false", + "backchannel.logout.session.required" : "true", + "client_credentials.use_refresh_token" : "false", + "saml_force_name_id_format" : "false", + "require.pushed.authorization.requests" : "false", + "saml.client.signature" : "false", + "tls.client.certificate.bound.access.tokens" : "false", + "saml.authnstatement" : "false", + "display.on.consent.screen" : "false", + "saml.onetimeuse.condition" : "false" }, - { - "id": "09fb98e3-c6c4-4151-bf3c-1fbc804b080e", - "clientId": "monaco-template-backend", - "name": "Monaco Template Backend", - "description": "Access to the backend through the API Gateway", - "adminUrl": "", - "surrogateAuthRequired": false, - "enabled": true, - "alwaysDisplayInConsole": false, - "clientAuthenticatorType": "client-secret", - "redirectUris": [], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": true, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": true, - "serviceAccountsEnabled": false, - "publicClient": false, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": { - "saml.force.post.binding": "false", - "saml.multivalued.roles": "false", - "post.logout.redirect.uris": "+", - "oauth2.device.authorization.grant.enabled": "false", - "backchannel.logout.revoke.offline.tokens": "false", - "saml.server.signature.keyinfo.ext": "false", - "use.refresh.tokens": "true", - "oidc.ciba.grant.enabled": "false", - "backchannel.logout.session.required": "true", - "client_credentials.use_refresh_token": "false", - "saml.client.signature": "false", - "require.pushed.authorization.requests": "false", - "id.token.as.detached.signature": "false", - "saml.assertion.signature": "false", - "saml.encrypt": "false", - "saml.server.signature": "false", - "exclude.session.state.from.auth.response": "false", - "tls-client-certificate-bound-access-tokens": "false", - "saml.artifact.binding": "false", - "saml_force_name_id_format": "false", - "tls.client.certificate.bound.access.tokens": "false", - "acr.loa.map": "{}", - "saml.authnstatement": "false", - "display.on.consent.screen": "false", - "token.response.type.bearer.lower-case": "false", - "saml.onetimeuse.condition": "false" - }, - "authenticationFlowBindingOverrides": {}, - "fullScopeAllowed": true, - "nodeReRegistrationTimeout": -1, - "defaultClientScopes": [ - "web-origins", - "roles", - "profile", - "email" - ], - "optionalClientScopes": [ - "address", - "phone", - "offline_access", - "microprofile-jwt" - ] + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : true, + "nodeReRegistrationTimeout" : -1, + "defaultClientScopes" : [ "web-origins", "roles", "profile", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "b6049a46-fbd1-4368-a72b-364c284f01e0", + "clientId" : "monaco-template-api-swagger-ui", + "name" : "Monaco Template API Swagger", + "description" : "Monaco Template API - Swagger client", + "rootUrl" : "", + "adminUrl" : "", + "baseUrl" : "", + "surrogateAuthRequired" : false, + "enabled" : true, + "alwaysDisplayInConsole" : false, + "clientAuthenticatorType" : "client-secret", + "redirectUris" : [ "*" ], + "webOrigins" : [ "*" ], + "notBefore" : 0, + "bearerOnly" : false, + "consentRequired" : false, + "standardFlowEnabled" : true, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : true, + "serviceAccountsEnabled" : false, + "publicClient" : true, + "frontchannelLogout" : false, + "protocol" : "openid-connect", + "attributes" : { + "saml.force.post.binding" : "false", + "saml.multivalued.roles" : "false", + "post.logout.redirect.uris" : "+", + "oauth2.device.authorization.grant.enabled" : "false", + "backchannel.logout.revoke.offline.tokens" : "false", + "saml.server.signature.keyinfo.ext" : "false", + "use.refresh.tokens" : "false", + "oidc.ciba.grant.enabled" : "false", + "backchannel.logout.session.required" : "true", + "client_credentials.use_refresh_token" : "false", + "require.pushed.authorization.requests" : "false", + "saml.client.signature" : "false", + "id.token.as.detached.signature" : "false", + "saml.assertion.signature" : "false", + "saml.encrypt" : "false", + "saml.server.signature" : "false", + "exclude.session.state.from.auth.response" : "false", + "tls-client-certificate-bound-access-tokens" : "false", + "saml.artifact.binding" : "false", + "saml_force_name_id_format" : "false", + "tls.client.certificate.bound.access.tokens" : "false", + "acr.loa.map" : "{}", + "saml.authnstatement" : "false", + "display.on.consent.screen" : "false", + "token.response.type.bearer.lower-case" : "false", + "saml.onetimeuse.condition" : "false" }, - { - "id": "4cd869a0-9d32-41d7-9769-e611a48cd9a9", - "clientId": "monaco-template-front", - "name": "Monaco Template Web", - "description": "", - "rootUrl": "", - "adminUrl": "", - "baseUrl": "", - "surrogateAuthRequired": false, - "enabled": true, - "alwaysDisplayInConsole": false, - "clientAuthenticatorType": "client-secret", - "redirectUris": [ - "*", - "http://localhost:4200", - "https://oauth.pstmn.io/v1/callback" - ], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": false, - "serviceAccountsEnabled": false, - "publicClient": true, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": { - "saml.force.post.binding": "false", - "saml.multivalued.roles": "false", - "post.logout.redirect.uris": "+", - "oauth2.device.authorization.grant.enabled": "false", - "backchannel.logout.revoke.offline.tokens": "false", - "saml.server.signature.keyinfo.ext": "false", - "use.refresh.tokens": "false", - "oidc.ciba.grant.enabled": "false", - "backchannel.logout.session.required": "true", - "client_credentials.use_refresh_token": "false", - "require.pushed.authorization.requests": "false", - "saml.client.signature": "false", - "pkce.code.challenge.method": "S256", - "id.token.as.detached.signature": "false", - "saml.assertion.signature": "false", - "saml.encrypt": "false", - "saml.server.signature": "false", - "exclude.session.state.from.auth.response": "false", - "tls-client-certificate-bound-access-tokens": "false", - "saml.artifact.binding": "false", - "saml_force_name_id_format": "false", - "tls.client.certificate.bound.access.tokens": "false", - "acr.loa.map": "{}", - "saml.authnstatement": "false", - "display.on.consent.screen": "false", - "token.response.type.bearer.lower-case": "false", - "saml.onetimeuse.condition": "false" - }, - "authenticationFlowBindingOverrides": {}, - "fullScopeAllowed": false, - "nodeReRegistrationTimeout": -1, - "defaultClientScopes": [ - "web-origins", - "roles", - "profile", - "email", - "monaco-template-api" - ], - "optionalClientScopes": [ - "files:write", - "address", - "companies:read", - "phone", - "offline_access", - "microprofile-jwt", - "products:write", - "companies:write" - ] + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : false, + "nodeReRegistrationTimeout" : -1, + "defaultClientScopes" : [ "web-origins", "roles", "profile", "basic", "email", "monaco-template-api" ], + "optionalClientScopes" : [ "files:write", "address", "companies:read", "phone", "offline_access", "microprofile-jwt", "products:write", "companies:write" ] + }, { + "id" : "09fb98e3-c6c4-4151-bf3c-1fbc804b080e", + "clientId" : "monaco-template-backend", + "name" : "Monaco Template Backend", + "description" : "Access to the backend through the API Gateway", + "adminUrl" : "", + "surrogateAuthRequired" : false, + "enabled" : true, + "alwaysDisplayInConsole" : false, + "clientAuthenticatorType" : "client-secret", + "redirectUris" : [ ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : true, + "consentRequired" : false, + "standardFlowEnabled" : true, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : true, + "serviceAccountsEnabled" : false, + "publicClient" : false, + "frontchannelLogout" : false, + "protocol" : "openid-connect", + "attributes" : { + "saml.force.post.binding" : "false", + "saml.multivalued.roles" : "false", + "post.logout.redirect.uris" : "+", + "oauth2.device.authorization.grant.enabled" : "false", + "backchannel.logout.revoke.offline.tokens" : "false", + "saml.server.signature.keyinfo.ext" : "false", + "use.refresh.tokens" : "true", + "oidc.ciba.grant.enabled" : "false", + "backchannel.logout.session.required" : "true", + "client_credentials.use_refresh_token" : "false", + "saml.client.signature" : "false", + "require.pushed.authorization.requests" : "false", + "id.token.as.detached.signature" : "false", + "saml.assertion.signature" : "false", + "saml.encrypt" : "false", + "saml.server.signature" : "false", + "exclude.session.state.from.auth.response" : "false", + "tls-client-certificate-bound-access-tokens" : "false", + "saml.artifact.binding" : "false", + "saml_force_name_id_format" : "false", + "tls.client.certificate.bound.access.tokens" : "false", + "acr.loa.map" : "{}", + "saml.authnstatement" : "false", + "display.on.consent.screen" : "false", + "token.response.type.bearer.lower-case" : "false", + "saml.onetimeuse.condition" : "false" }, - { - "id": "05648945-7e90-42ec-a4dc-233fd52cddfe", - "clientId": "realm-management", - "name": "${client_realm-management}", - "surrogateAuthRequired": false, - "enabled": true, - "alwaysDisplayInConsole": false, - "clientAuthenticatorType": "client-secret", - "redirectUris": [], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": true, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": false, - "serviceAccountsEnabled": false, - "publicClient": false, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": { - "post.logout.redirect.uris": "+" - }, - "authenticationFlowBindingOverrides": {}, - "fullScopeAllowed": false, - "nodeReRegistrationTimeout": 0, - "defaultClientScopes": [ - "web-origins", - "roles", - "profile", - "email" - ], - "optionalClientScopes": [ - "address", - "phone", - "offline_access", - "microprofile-jwt" - ] + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : true, + "nodeReRegistrationTimeout" : -1, + "defaultClientScopes" : [ "web-origins", "roles", "profile", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "4cd869a0-9d32-41d7-9769-e611a48cd9a9", + "clientId" : "monaco-template-front", + "name" : "Monaco Template Web", + "description" : "", + "rootUrl" : "", + "adminUrl" : "", + "baseUrl" : "", + "surrogateAuthRequired" : false, + "enabled" : true, + "alwaysDisplayInConsole" : false, + "clientAuthenticatorType" : "client-secret", + "redirectUris" : [ "*", "http://localhost:4200", "https://oauth.pstmn.io/v1/callback" ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : false, + "consentRequired" : false, + "standardFlowEnabled" : true, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : false, + "serviceAccountsEnabled" : false, + "publicClient" : true, + "frontchannelLogout" : false, + "protocol" : "openid-connect", + "attributes" : { + "saml.force.post.binding" : "false", + "saml.multivalued.roles" : "false", + "post.logout.redirect.uris" : "+", + "oauth2.device.authorization.grant.enabled" : "false", + "backchannel.logout.revoke.offline.tokens" : "false", + "saml.server.signature.keyinfo.ext" : "false", + "use.refresh.tokens" : "false", + "oidc.ciba.grant.enabled" : "false", + "backchannel.logout.session.required" : "true", + "client_credentials.use_refresh_token" : "false", + "require.pushed.authorization.requests" : "false", + "saml.client.signature" : "false", + "pkce.code.challenge.method" : "S256", + "id.token.as.detached.signature" : "false", + "saml.assertion.signature" : "false", + "saml.encrypt" : "false", + "saml.server.signature" : "false", + "exclude.session.state.from.auth.response" : "false", + "tls-client-certificate-bound-access-tokens" : "false", + "saml.artifact.binding" : "false", + "saml_force_name_id_format" : "false", + "tls.client.certificate.bound.access.tokens" : "false", + "acr.loa.map" : "{}", + "saml.authnstatement" : "false", + "display.on.consent.screen" : "false", + "token.response.type.bearer.lower-case" : "false", + "saml.onetimeuse.condition" : "false" }, - { - "id": "eedd4007-1606-4b89-a668-b6e690a1588e", - "clientId": "security-admin-console", - "name": "${client_security-admin-console}", - "rootUrl": "${authAdminUrl}", - "baseUrl": "/admin/monaco-template/console/", - "surrogateAuthRequired": false, - "enabled": true, - "alwaysDisplayInConsole": false, - "clientAuthenticatorType": "client-secret", - "redirectUris": [ - "/admin/monaco-template/console/*" - ], - "webOrigins": [ - "+" - ], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": false, - "serviceAccountsEnabled": false, - "publicClient": true, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": { - "post.logout.redirect.uris": "+", - "pkce.code.challenge.method": "S256" - }, - "authenticationFlowBindingOverrides": {}, - "fullScopeAllowed": false, - "nodeReRegistrationTimeout": 0, - "protocolMappers": [ - { - "id": "82673f31-6b1d-4a88-b87f-199c80d1adca", - "name": "locale", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-attribute-mapper", - "consentRequired": false, - "config": { - "user.attribute": "locale", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "locale", - "jsonType.label": "String", - "userinfo.token.claim": "true" - } - } - ], - "defaultClientScopes": [ - "web-origins", - "roles", - "profile", - "email" - ], - "optionalClientScopes": [ - "address", - "phone", - "offline_access", - "microprofile-jwt" - ] - } - ], - "clientScopes": [ - { - "id": "cc749096-2f94-49f0-b5d2-1f1fae75dc31", - "name": "address", - "description": "OpenID Connect built-in scope: address", - "protocol": "openid-connect", - "attributes": { - "include.in.token.scope": "true", - "consent.screen.text": "${addressScopeConsentText}", - "display.on.consent.screen": "true" - }, - "protocolMappers": [ - { - "id": "17a94395-e4fc-4abc-8603-de4171aa8546", - "name": "address", - "protocol": "openid-connect", - "protocolMapper": "oidc-address-mapper", - "consentRequired": false, - "config": { - "user.attribute.formatted": "formatted", - "user.attribute.country": "country", - "user.attribute.postal_code": "postal_code", - "userinfo.token.claim": "true", - "user.attribute.street": "street", - "id.token.claim": "true", - "user.attribute.region": "region", - "access.token.claim": "true", - "user.attribute.locality": "locality" - } - } - ] + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : false, + "nodeReRegistrationTimeout" : -1, + "defaultClientScopes" : [ "web-origins", "roles", "profile", "basic", "email", "monaco-template-api" ], + "optionalClientScopes" : [ "files:write", "address", "companies:read", "phone", "offline_access", "microprofile-jwt", "products:write", "companies:write" ] + }, { + "id" : "05648945-7e90-42ec-a4dc-233fd52cddfe", + "clientId" : "realm-management", + "name" : "${client_realm-management}", + "surrogateAuthRequired" : false, + "enabled" : true, + "alwaysDisplayInConsole" : false, + "clientAuthenticatorType" : "client-secret", + "redirectUris" : [ ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : true, + "consentRequired" : false, + "standardFlowEnabled" : true, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : false, + "serviceAccountsEnabled" : false, + "publicClient" : false, + "frontchannelLogout" : false, + "protocol" : "openid-connect", + "attributes" : { + "post.logout.redirect.uris" : "+" }, - { - "id": "60a609f8-2408-42f3-88bd-6513796a7936", - "name": "monaco-template-api", - "protocol": "openid-connect", - "attributes": { - "include.in.token.scope": "true", - "display.on.consent.screen": "false" - }, - "protocolMappers": [ - { - "id": "1e0e24cf-afa3-4e52-b174-5ae1508242f8", - "name": "audience", - "protocol": "openid-connect", - "protocolMapper": "oidc-audience-mapper", - "consentRequired": false, - "config": { - "included.client.audience": "monaco-template-api", - "id.token.claim": "false", - "access.token.claim": "true", - "userinfo.token.claim": "false" - } - } - ] + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : false, + "nodeReRegistrationTimeout" : 0, + "defaultClientScopes" : [ "web-origins", "roles", "profile", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "eedd4007-1606-4b89-a668-b6e690a1588e", + "clientId" : "security-admin-console", + "name" : "${client_security-admin-console}", + "rootUrl" : "${authAdminUrl}", + "baseUrl" : "/admin/monaco-template/console/", + "surrogateAuthRequired" : false, + "enabled" : true, + "alwaysDisplayInConsole" : false, + "clientAuthenticatorType" : "client-secret", + "redirectUris" : [ "/admin/monaco-template/console/*" ], + "webOrigins" : [ "+" ], + "notBefore" : 0, + "bearerOnly" : false, + "consentRequired" : false, + "standardFlowEnabled" : true, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : false, + "serviceAccountsEnabled" : false, + "publicClient" : true, + "frontchannelLogout" : false, + "protocol" : "openid-connect", + "attributes" : { + "post.logout.redirect.uris" : "+", + "pkce.code.challenge.method" : "S256" }, - { - "id": "2ee7b9e4-6df5-4a45-b78b-9b1c145c0723", - "name": "companies:read", - "description": "Read companies from API", - "protocol": "openid-connect", - "attributes": { - "include.in.token.scope": "true", - "display.on.consent.screen": "false", - "gui.order": "" + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : false, + "nodeReRegistrationTimeout" : 0, + "protocolMappers" : [ { + "id" : "82673f31-6b1d-4a88-b87f-199c80d1adca", + "name" : "locale", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "locale", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "locale", + "jsonType.label" : "String", + "userinfo.token.claim" : "true" } + } ], + "defaultClientScopes" : [ "web-origins", "roles", "profile", "basic", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + } ], + "clientScopes" : [ { + "id" : "cc749096-2f94-49f0-b5d2-1f1fae75dc31", + "name" : "address", + "description" : "OpenID Connect built-in scope: address", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "consent.screen.text" : "${addressScopeConsentText}", + "display.on.consent.screen" : "true" }, - { - "id": "4c24875b-9978-4f19-8806-215bacb0b635", - "name": "role_list", - "description": "SAML role list", - "protocol": "saml", - "attributes": { - "consent.screen.text": "${samlRoleListScopeConsentText}", - "display.on.consent.screen": "true" - }, - "protocolMappers": [ - { - "id": "61a66ab3-6009-412e-a7ed-c4011440f45e", - "name": "role list", - "protocol": "saml", - "protocolMapper": "saml-role-list-mapper", - "consentRequired": false, - "config": { - "single": "false", - "attribute.nameformat": "Basic", - "attribute.name": "Role" - } - } - ] - }, - { - "id": "91c57951-bafb-409f-b271-a1b4b3e3aa26", - "name": "companies:write", - "description": "Create, edit and delete companies in API", - "protocol": "openid-connect", - "attributes": { - "include.in.token.scope": "true", - "display.on.consent.screen": "false", - "gui.order": "" + "protocolMappers" : [ { + "id" : "17a94395-e4fc-4abc-8603-de4171aa8546", + "name" : "address", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-address-mapper", + "consentRequired" : false, + "config" : { + "user.attribute.formatted" : "formatted", + "user.attribute.country" : "country", + "user.attribute.postal_code" : "postal_code", + "userinfo.token.claim" : "true", + "user.attribute.street" : "street", + "id.token.claim" : "true", + "user.attribute.region" : "region", + "access.token.claim" : "true", + "user.attribute.locality" : "locality" } + } ] + }, { + "id" : "60a609f8-2408-42f3-88bd-6513796a7936", + "name" : "monaco-template-api", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "false" }, - { - "id": "56e5a69c-a126-4854-aa6c-4d7efa063cc6", - "name": "roles", - "description": "OpenID Connect scope for add user roles to the access token", - "protocol": "openid-connect", - "attributes": { - "include.in.token.scope": "false", - "consent.screen.text": "${rolesScopeConsentText}", - "display.on.consent.screen": "true" - }, - "protocolMappers": [ - { - "id": "d5d68e01-42f1-488c-ab96-471596a2b750", - "name": "client roles", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-client-role-mapper", - "consentRequired": false, - "config": { - "user.attribute": "foo", - "access.token.claim": "true", - "claim.name": "resource_access.${client_id}.roles", - "jsonType.label": "String", - "multivalued": "true" - } - }, - { - "id": "7149fad9-2c54-4b91-975b-e893f9a3d094", - "name": "realm roles", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-realm-role-mapper", - "consentRequired": false, - "config": { - "user.attribute": "foo", - "access.token.claim": "true", - "claim.name": "roles", - "jsonType.label": "String", - "multivalued": "true", - "userinfo.token.claim": "true" - } - }, - { - "id": "c385dd5b-f501-4fb6-8b16-f381618d090a", - "name": "audience resolve", - "protocol": "openid-connect", - "protocolMapper": "oidc-audience-resolve-mapper", - "consentRequired": false, - "config": {} - } - ] + "protocolMappers" : [ { + "id" : "1e0e24cf-afa3-4e52-b174-5ae1508242f8", + "name" : "audience", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-audience-mapper", + "consentRequired" : false, + "config" : { + "included.client.audience" : "monaco-template-api", + "id.token.claim" : "false", + "access.token.claim" : "true", + "userinfo.token.claim" : "false" + } + } ] + }, { + "id" : "2ee7b9e4-6df5-4a45-b78b-9b1c145c0723", + "name" : "companies:read", + "description" : "Read companies from API", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "false", + "gui.order" : "" + } + }, { + "id" : "4c24875b-9978-4f19-8806-215bacb0b635", + "name" : "role_list", + "description" : "SAML role list", + "protocol" : "saml", + "attributes" : { + "consent.screen.text" : "${samlRoleListScopeConsentText}", + "display.on.consent.screen" : "true" }, - { - "id": "33ff4854-2aad-4b12-9701-472d0a470c4f", - "name": "files:write", - "description": "", - "protocol": "openid-connect", - "attributes": { - "include.in.token.scope": "true", - "display.on.consent.screen": "false", - "gui.order": "", - "consent.screen.text": "" + "protocolMappers" : [ { + "id" : "61a66ab3-6009-412e-a7ed-c4011440f45e", + "name" : "role list", + "protocol" : "saml", + "protocolMapper" : "saml-role-list-mapper", + "consentRequired" : false, + "config" : { + "single" : "false", + "attribute.nameformat" : "Basic", + "attribute.name" : "Role" } + } ] + }, { + "id" : "91c57951-bafb-409f-b271-a1b4b3e3aa26", + "name" : "companies:write", + "description" : "Create, edit and delete companies in API", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "false", + "gui.order" : "" + } + }, { + "id" : "56e5a69c-a126-4854-aa6c-4d7efa063cc6", + "name" : "roles", + "description" : "OpenID Connect scope for add user roles to the access token", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "false", + "consent.screen.text" : "${rolesScopeConsentText}", + "display.on.consent.screen" : "true" }, - { - "id": "805aea0c-522f-4040-b380-c0dac6f55245", - "name": "products:write", - "description": "", - "protocol": "openid-connect", - "attributes": { - "include.in.token.scope": "true", - "display.on.consent.screen": "false", - "gui.order": "", - "consent.screen.text": "" + "protocolMappers" : [ { + "id" : "d5d68e01-42f1-488c-ab96-471596a2b750", + "name" : "client roles", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-client-role-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "foo", + "access.token.claim" : "true", + "claim.name" : "resource_access.${client_id}.roles", + "jsonType.label" : "String", + "multivalued" : "true" + } + }, { + "id" : "7149fad9-2c54-4b91-975b-e893f9a3d094", + "name" : "realm roles", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-realm-role-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "foo", + "access.token.claim" : "true", + "claim.name" : "roles", + "jsonType.label" : "String", + "multivalued" : "true", + "userinfo.token.claim" : "true" } + }, { + "id" : "c385dd5b-f501-4fb6-8b16-f381618d090a", + "name" : "audience resolve", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-audience-resolve-mapper", + "consentRequired" : false, + "config" : { } + } ] + }, { + "id" : "33ff4854-2aad-4b12-9701-472d0a470c4f", + "name" : "files:write", + "description" : "", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "false", + "gui.order" : "", + "consent.screen.text" : "" + } + }, { + "id" : "805aea0c-522f-4040-b380-c0dac6f55245", + "name" : "products:write", + "description" : "", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "false", + "gui.order" : "", + "consent.screen.text" : "" + } + }, { + "id" : "194ef116-fa08-407a-b535-1d5a60356c7e", + "name" : "acr", + "description" : "OpenID Connect scope for add acr (authentication context class reference) to the token", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "false", + "display.on.consent.screen" : "false" }, - { - "id": "194ef116-fa08-407a-b535-1d5a60356c7e", - "name": "acr", - "description": "OpenID Connect scope for add acr (authentication context class reference) to the token", - "protocol": "openid-connect", - "attributes": { - "include.in.token.scope": "false", - "display.on.consent.screen": "false" - }, - "protocolMappers": [ - { - "id": "a0f31e04-653c-4783-8bb0-d4a689c1a36e", - "name": "acr loa level", - "protocol": "openid-connect", - "protocolMapper": "oidc-acr-mapper", - "consentRequired": false, - "config": { - "id.token.claim": "true", - "userinfo.token.claim": "true", - "access.token.claim": "true" - } - } - ] + "protocolMappers" : [ { + "id" : "a0f31e04-653c-4783-8bb0-d4a689c1a36e", + "name" : "acr loa level", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-acr-mapper", + "consentRequired" : false, + "config" : { + "id.token.claim" : "true", + "access.token.claim" : "true", + "userinfo.token.claim" : "true" + } + } ] + }, { + "id" : "d07a981d-4198-4f2c-be6c-acddc3aa98d3", + "name" : "phone", + "description" : "OpenID Connect built-in scope: phone", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "consent.screen.text" : "${phoneScopeConsentText}", + "display.on.consent.screen" : "true" }, - { - "id": "d07a981d-4198-4f2c-be6c-acddc3aa98d3", - "name": "phone", - "description": "OpenID Connect built-in scope: phone", - "protocol": "openid-connect", - "attributes": { - "include.in.token.scope": "true", - "consent.screen.text": "${phoneScopeConsentText}", - "display.on.consent.screen": "true" - }, - "protocolMappers": [ - { - "id": "1a374de2-4ee9-4869-902a-12f53ad70a45", - "name": "phone number", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-attribute-mapper", - "consentRequired": false, - "config": { - "user.attribute": "phoneNumber", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "phone_number", - "jsonType.label": "String", - "userinfo.token.claim": "true" - } - }, - { - "id": "070fdddb-0a0a-4a2c-b655-6111c2d653dc", - "name": "phone number verified", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-attribute-mapper", - "consentRequired": false, - "config": { - "user.attribute": "phoneNumberVerified", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "phone_number_verified", - "jsonType.label": "boolean", - "userinfo.token.claim": "true" - } - } - ] + "protocolMappers" : [ { + "id" : "1a374de2-4ee9-4869-902a-12f53ad70a45", + "name" : "phone number", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "phoneNumber", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "phone_number", + "jsonType.label" : "String", + "userinfo.token.claim" : "true" + } + }, { + "id" : "070fdddb-0a0a-4a2c-b655-6111c2d653dc", + "name" : "phone number verified", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "phoneNumberVerified", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "phone_number_verified", + "jsonType.label" : "boolean", + "userinfo.token.claim" : "true" + } + } ] + }, { + "id" : "eef8c4ff-e3a8-4cb5-aa68-9dd70302a134", + "name" : "offline_access", + "description" : "OpenID Connect built-in scope: offline_access", + "protocol" : "openid-connect", + "attributes" : { + "consent.screen.text" : "${offlineAccessScopeConsentText}", + "display.on.consent.screen" : "true" + } + }, { + "id" : "64a03398-02f8-4b24-9ad2-4d3596089a3e", + "name" : "microprofile-jwt", + "description" : "Microprofile - JWT built-in scope", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "false" }, - { - "id": "eef8c4ff-e3a8-4cb5-aa68-9dd70302a134", - "name": "offline_access", - "description": "OpenID Connect built-in scope: offline_access", - "protocol": "openid-connect", - "attributes": { - "consent.screen.text": "${offlineAccessScopeConsentText}", - "display.on.consent.screen": "true" + "protocolMappers" : [ { + "id" : "f5a70d75-ac48-4781-a5aa-67f68fa50eae", + "name" : "groups", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-realm-role-mapper", + "consentRequired" : false, + "config" : { + "multivalued" : "true", + "userinfo.token.claim" : "true", + "user.attribute" : "foo", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "groups", + "jsonType.label" : "String" } + }, { + "id" : "a8eb923d-df0f-4b93-9621-67164db3a7b0", + "name" : "upn", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "username", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "upn", + "jsonType.label" : "String", + "userinfo.token.claim" : "true" + } + } ] + }, { + "id" : "1faee50f-d3b4-495c-b613-846c2279e56c", + "name" : "basic", + "description" : "OpenID Connect scope for add all basic claims to the token", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "false", + "display.on.consent.screen" : "false" }, - { - "id": "64a03398-02f8-4b24-9ad2-4d3596089a3e", - "name": "microprofile-jwt", - "description": "Microprofile - JWT built-in scope", - "protocol": "openid-connect", - "attributes": { - "include.in.token.scope": "true", - "display.on.consent.screen": "false" - }, - "protocolMappers": [ - { - "id": "f5a70d75-ac48-4781-a5aa-67f68fa50eae", - "name": "groups", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-realm-role-mapper", - "consentRequired": false, - "config": { - "multivalued": "true", - "userinfo.token.claim": "true", - "user.attribute": "foo", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "groups", - "jsonType.label": "String" - } - }, - { - "id": "a8eb923d-df0f-4b93-9621-67164db3a7b0", - "name": "upn", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": false, - "config": { - "user.attribute": "username", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "upn", - "jsonType.label": "String", - "userinfo.token.claim": "true" - } - } - ] + "protocolMappers" : [ { + "id" : "064def4f-3c60-4e62-84be-f38ff956f383", + "name" : "sub", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-sub-mapper", + "consentRequired" : false, + "config" : { + "introspection.token.claim" : "true", + "access.token.claim" : "true" + } + }, { + "id" : "4302afba-c0a6-40f1-aa82-db40b84b4a17", + "name" : "auth_time", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usersessionmodel-note-mapper", + "consentRequired" : false, + "config" : { + "user.session.note" : "AUTH_TIME", + "id.token.claim" : "true", + "introspection.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "auth_time", + "jsonType.label" : "long" + } + } ] + }, { + "id" : "75671dd9-ac0a-47a7-8c99-9d80f43880a5", + "name" : "email", + "description" : "OpenID Connect built-in scope: email", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "consent.screen.text" : "${emailScopeConsentText}", + "display.on.consent.screen" : "true" }, - { - "id": "75671dd9-ac0a-47a7-8c99-9d80f43880a5", - "name": "email", - "description": "OpenID Connect built-in scope: email", - "protocol": "openid-connect", - "attributes": { - "include.in.token.scope": "true", - "consent.screen.text": "${emailScopeConsentText}", - "display.on.consent.screen": "true" - }, - "protocolMappers": [ - { - "id": "97f7934b-4b2f-45f7-bfc7-85c9bc66ab72", - "name": "email", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": false, - "config": { - "user.attribute": "email", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "email", - "jsonType.label": "String", - "userinfo.token.claim": "true" - } - }, - { - "id": "91ee2052-43b0-42f0-8942-e9a556c0dc70", - "name": "email verified", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": false, - "config": { - "user.attribute": "emailVerified", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "email_verified", - "jsonType.label": "boolean", - "userinfo.token.claim": "true" - } - } - ] + "protocolMappers" : [ { + "id" : "97f7934b-4b2f-45f7-bfc7-85c9bc66ab72", + "name" : "email", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "email", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "email", + "jsonType.label" : "String", + "userinfo.token.claim" : "true" + } + }, { + "id" : "91ee2052-43b0-42f0-8942-e9a556c0dc70", + "name" : "email verified", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "emailVerified", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "email_verified", + "jsonType.label" : "boolean", + "userinfo.token.claim" : "true" + } + } ] + }, { + "id" : "98a7636d-7562-487f-a4a9-614bdfd3f0c2", + "name" : "monaco-template-backend", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "false" }, - { - "id": "98a7636d-7562-487f-a4a9-614bdfd3f0c2", - "name": "monaco-template-backend", - "protocol": "openid-connect", - "attributes": { - "include.in.token.scope": "true", - "display.on.consent.screen": "false" - }, - "protocolMappers": [ - { - "id": "88e018d5-c24f-4ab6-a8dd-ee2a617bf463", - "name": "audience", - "protocol": "openid-connect", - "protocolMapper": "oidc-audience-mapper", - "consentRequired": false, - "config": { - "included.client.audience": "monaco-template-backend", - "id.token.claim": "false", - "access.token.claim": "true", - "userinfo.token.claim": "false" - } - } - ] + "protocolMappers" : [ { + "id" : "88e018d5-c24f-4ab6-a8dd-ee2a617bf463", + "name" : "audience", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-audience-mapper", + "consentRequired" : false, + "config" : { + "included.client.audience" : "monaco-template-backend", + "id.token.claim" : "false", + "access.token.claim" : "true", + "userinfo.token.claim" : "false" + } + } ] + }, { + "id" : "1161bd67-9b4f-4208-843d-a2e1808bb804", + "name" : "profile", + "description" : "OpenID Connect built-in scope: profile", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "consent.screen.text" : "${profileScopeConsentText}", + "display.on.consent.screen" : "true" }, - { - "id": "1161bd67-9b4f-4208-843d-a2e1808bb804", - "name": "profile", - "description": "OpenID Connect built-in scope: profile", - "protocol": "openid-connect", - "attributes": { - "include.in.token.scope": "true", - "consent.screen.text": "${profileScopeConsentText}", - "display.on.consent.screen": "true" - }, - "protocolMappers": [ - { - "id": "5fdf7e16-965c-4229-9fa2-4fd0d0121dd5", - "name": "middle name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-attribute-mapper", - "consentRequired": false, - "config": { - "user.attribute": "middleName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "middle_name", - "jsonType.label": "String", - "userinfo.token.claim": "true" - } - }, - { - "id": "0d007996-671f-4a6f-9479-10ed77235a5c", - "name": "gender", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-attribute-mapper", - "consentRequired": false, - "config": { - "user.attribute": "gender", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "gender", - "jsonType.label": "String", - "userinfo.token.claim": "true" - } - }, - { - "id": "6afb2ba0-9404-416c-8a78-482666501247", - "name": "family name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": false, - "config": { - "user.attribute": "lastName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "family_name", - "jsonType.label": "String", - "userinfo.token.claim": "true" - } - }, - { - "id": "7bc4441c-b4c0-46a4-bf6f-eff047590685", - "name": "zoneinfo", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-attribute-mapper", - "consentRequired": false, - "config": { - "user.attribute": "zoneinfo", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "zoneinfo", - "jsonType.label": "String", - "userinfo.token.claim": "true" - } - }, - { - "id": "fae2c2c6-3583-492d-9dd9-37aa6d1d953e", - "name": "given name", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": false, - "config": { - "user.attribute": "firstName", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "given_name", - "jsonType.label": "String", - "userinfo.token.claim": "true" - } - }, - { - "id": "17158faa-55c8-41f5-849a-77104a32e62a", - "name": "nickname", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-attribute-mapper", - "consentRequired": false, - "config": { - "user.attribute": "nickname", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "nickname", - "jsonType.label": "String", - "userinfo.token.claim": "true" - } - }, - { - "id": "8bf614ab-1c90-4ec1-b037-e9ff5b1783c6", - "name": "locale", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-attribute-mapper", - "consentRequired": false, - "config": { - "user.attribute": "locale", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "locale", - "jsonType.label": "String", - "userinfo.token.claim": "true" - } - }, - { - "id": "4c2d12ea-0998-49f4-8102-a1901775e2ec", - "name": "username", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "consentRequired": false, - "config": { - "user.attribute": "username", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "preferred_username", - "jsonType.label": "String", - "userinfo.token.claim": "true" - } - }, - { - "id": "ac0b3ebb-30bd-4a1e-9139-19f334593707", - "name": "birthdate", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-attribute-mapper", - "consentRequired": false, - "config": { - "user.attribute": "birthdate", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "birthdate", - "jsonType.label": "String", - "userinfo.token.claim": "true" - } - }, - { - "id": "3a56dcac-470a-483d-a9c9-13aca2d5e0a2", - "name": "updated at", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-attribute-mapper", - "consentRequired": false, - "config": { - "user.attribute": "updatedAt", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "updated_at", - "jsonType.label": "String", - "userinfo.token.claim": "true" - } - }, - { - "id": "e3f2ec93-9f8b-422e-9d5c-2470ab741b24", - "name": "full name", - "protocol": "openid-connect", - "protocolMapper": "oidc-full-name-mapper", - "consentRequired": false, - "config": { - "id.token.claim": "true", - "userinfo.token.claim": "true", - "access.token.claim": "true" - } - }, - { - "id": "3ef380f1-b15a-4cfc-b396-5b6e6bd2d8f7", - "name": "picture", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-attribute-mapper", - "consentRequired": false, - "config": { - "user.attribute": "picture", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "picture", - "jsonType.label": "String", - "userinfo.token.claim": "true" - } - }, - { - "id": "38a0e5d9-02df-42b7-8284-60f70458b08d", - "name": "profile", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-attribute-mapper", - "consentRequired": false, - "config": { - "user.attribute": "profile", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "profile", - "jsonType.label": "String", - "userinfo.token.claim": "true" - } - }, - { - "id": "5d153c84-6d0b-452d-9c6c-67d8305ed08c", - "name": "website", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-attribute-mapper", - "consentRequired": false, - "config": { - "user.attribute": "website", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "website", - "jsonType.label": "String", - "userinfo.token.claim": "true" - } - } - ] + "protocolMappers" : [ { + "id" : "5fdf7e16-965c-4229-9fa2-4fd0d0121dd5", + "name" : "middle name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "middleName", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "middle_name", + "jsonType.label" : "String", + "userinfo.token.claim" : "true" + } + }, { + "id" : "0d007996-671f-4a6f-9479-10ed77235a5c", + "name" : "gender", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "gender", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "gender", + "jsonType.label" : "String", + "userinfo.token.claim" : "true" + } + }, { + "id" : "6afb2ba0-9404-416c-8a78-482666501247", + "name" : "family name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "lastName", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "family_name", + "jsonType.label" : "String", + "userinfo.token.claim" : "true" + } + }, { + "id" : "7bc4441c-b4c0-46a4-bf6f-eff047590685", + "name" : "zoneinfo", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "zoneinfo", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "zoneinfo", + "jsonType.label" : "String", + "userinfo.token.claim" : "true" + } + }, { + "id" : "fae2c2c6-3583-492d-9dd9-37aa6d1d953e", + "name" : "given name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "firstName", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "given_name", + "jsonType.label" : "String", + "userinfo.token.claim" : "true" + } + }, { + "id" : "17158faa-55c8-41f5-849a-77104a32e62a", + "name" : "nickname", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "nickname", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "nickname", + "jsonType.label" : "String", + "userinfo.token.claim" : "true" + } + }, { + "id" : "8bf614ab-1c90-4ec1-b037-e9ff5b1783c6", + "name" : "locale", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "locale", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "locale", + "jsonType.label" : "String", + "userinfo.token.claim" : "true" + } + }, { + "id" : "4c2d12ea-0998-49f4-8102-a1901775e2ec", + "name" : "username", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "username", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "preferred_username", + "jsonType.label" : "String", + "userinfo.token.claim" : "true" + } + }, { + "id" : "ac0b3ebb-30bd-4a1e-9139-19f334593707", + "name" : "birthdate", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "birthdate", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "birthdate", + "jsonType.label" : "String", + "userinfo.token.claim" : "true" + } + }, { + "id" : "3a56dcac-470a-483d-a9c9-13aca2d5e0a2", + "name" : "updated at", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "updatedAt", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "updated_at", + "jsonType.label" : "String", + "userinfo.token.claim" : "true" + } + }, { + "id" : "e3f2ec93-9f8b-422e-9d5c-2470ab741b24", + "name" : "full name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-full-name-mapper", + "consentRequired" : false, + "config" : { + "id.token.claim" : "true", + "access.token.claim" : "true", + "userinfo.token.claim" : "true" + } + }, { + "id" : "3ef380f1-b15a-4cfc-b396-5b6e6bd2d8f7", + "name" : "picture", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "picture", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "picture", + "jsonType.label" : "String", + "userinfo.token.claim" : "true" + } + }, { + "id" : "38a0e5d9-02df-42b7-8284-60f70458b08d", + "name" : "profile", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "profile", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "profile", + "jsonType.label" : "String", + "userinfo.token.claim" : "true" + } + }, { + "id" : "5d153c84-6d0b-452d-9c6c-67d8305ed08c", + "name" : "website", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "website", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "website", + "jsonType.label" : "String", + "userinfo.token.claim" : "true" + } + } ] + }, { + "id" : "d117de7b-4984-4bea-847b-ee94d1a292ad", + "name" : "web-origins", + "description" : "OpenID Connect scope for add allowed web origins to the access token", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "false", + "consent.screen.text" : "", + "display.on.consent.screen" : "false" }, - { - "id": "d117de7b-4984-4bea-847b-ee94d1a292ad", - "name": "web-origins", - "description": "OpenID Connect scope for add allowed web origins to the access token", - "protocol": "openid-connect", - "attributes": { - "include.in.token.scope": "false", - "consent.screen.text": "", - "display.on.consent.screen": "false" - }, - "protocolMappers": [ - { - "id": "193c48e8-a06d-411a-88ee-01bbeaafed8c", - "name": "allowed web origins", - "protocol": "openid-connect", - "protocolMapper": "oidc-allowed-origins-mapper", - "consentRequired": false, - "config": {} - } - ] - } - ], - "defaultDefaultClientScopes": [ - "role_list", - "profile", - "email", - "roles", - "web-origins", - "acr" - ], - "defaultOptionalClientScopes": [ - "offline_access", - "address", - "phone", - "microprofile-jwt" - ], - "browserSecurityHeaders": { - "contentSecurityPolicyReportOnly": "", - "xContentTypeOptions": "nosniff", - "xRobotsTag": "none", - "xFrameOptions": "SAMEORIGIN", - "contentSecurityPolicy": "frame-src 'self'; frame-ancestors 'self'; object-src 'none';", - "xXSSProtection": "1; mode=block", - "strictTransportSecurity": "max-age=31536000; includeSubDomains" + "protocolMappers" : [ { + "id" : "193c48e8-a06d-411a-88ee-01bbeaafed8c", + "name" : "allowed web origins", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-allowed-origins-mapper", + "consentRequired" : false, + "config" : { } + } ] + } ], + "defaultDefaultClientScopes" : [ "role_list", "profile", "email", "roles", "web-origins", "acr", "basic" ], + "defaultOptionalClientScopes" : [ "offline_access", "address", "phone", "microprofile-jwt" ], + "browserSecurityHeaders" : { + "contentSecurityPolicyReportOnly" : "", + "xContentTypeOptions" : "nosniff", + "referrerPolicy" : "no-referrer", + "xRobotsTag" : "none", + "xFrameOptions" : "SAMEORIGIN", + "contentSecurityPolicy" : "frame-src 'self'; frame-ancestors 'self'; object-src 'none';", + "xXSSProtection" : "1; mode=block", + "strictTransportSecurity" : "max-age=31536000; includeSubDomains" }, - "smtpServer": { - "host": "localhost", - "from": "sso@one-beyond.com", - "starttls": "", - "auth": "", - "ssl": "" + "smtpServer" : { + "host" : "localhost", + "from" : "sso@one-beyond.com", + "starttls" : "", + "auth" : "", + "ssl" : "" }, - "eventsEnabled": false, - "eventsListeners": [ - "jboss-logging" - ], - "enabledEventTypes": [], - "adminEventsEnabled": false, - "adminEventsDetailsEnabled": false, - "identityProviders": [], - "identityProviderMappers": [], - "components": { - "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy": [ - { - "id": "a56f749d-b0f2-4763-9d53-6b375e55a3a3", - "name": "Full Scope Disabled", - "providerId": "scope", - "subType": "anonymous", - "subComponents": {}, - "config": {} - }, - { - "id": "ac09829b-6a6f-4437-8104-c01b83e8087b", - "name": "Allowed Protocol Mapper Types", - "providerId": "allowed-protocol-mappers", - "subType": "anonymous", - "subComponents": {}, - "config": { - "allowed-protocol-mapper-types": [ - "oidc-usermodel-property-mapper", - "oidc-usermodel-attribute-mapper", - "oidc-address-mapper", - "oidc-full-name-mapper", - "saml-role-list-mapper", - "saml-user-property-mapper", - "saml-user-attribute-mapper", - "oidc-sha256-pairwise-sub-mapper" - ] - } - }, - { - "id": "03339ad1-172b-473a-90d1-015f0bcfebe9", - "name": "Allowed Client Scopes", - "providerId": "allowed-client-templates", - "subType": "authenticated", - "subComponents": {}, - "config": { - "allow-default-scopes": [ - "true" - ] - } - }, - { - "id": "9556f246-cbf8-4c7d-9a0f-59291dde6a12", - "name": "Allowed Protocol Mapper Types", - "providerId": "allowed-protocol-mappers", - "subType": "authenticated", - "subComponents": {}, - "config": { - "allowed-protocol-mapper-types": [ - "saml-role-list-mapper", - "saml-user-attribute-mapper", - "oidc-sha256-pairwise-sub-mapper", - "oidc-usermodel-property-mapper", - "saml-user-property-mapper", - "oidc-address-mapper", - "oidc-full-name-mapper", - "oidc-usermodel-attribute-mapper" - ] - } - }, - { - "id": "3d4a3dd2-45b0-4ca2-93ef-33c2ccbe8aae", - "name": "Consent Required", - "providerId": "consent-required", - "subType": "anonymous", - "subComponents": {}, - "config": {} - }, - { - "id": "ddb57ebd-11ca-4e0b-b176-b8e4def28a6a", - "name": "Trusted Hosts", - "providerId": "trusted-hosts", - "subType": "anonymous", - "subComponents": {}, - "config": { - "host-sending-registration-request-must-match": [ - "true" - ], - "client-uris-must-match": [ - "true" - ] - } - }, - { - "id": "2e4dc148-9617-4207-a53c-5c5816437a39", - "name": "Max Clients Limit", - "providerId": "max-clients", - "subType": "anonymous", - "subComponents": {}, - "config": { - "max-clients": [ - "200" - ] - } - }, - { - "id": "7c9a9ae5-582b-4f8d-b2b0-68ab090bf7e3", - "name": "Allowed Client Scopes", - "providerId": "allowed-client-templates", - "subType": "anonymous", - "subComponents": {}, - "config": { - "allow-default-scopes": [ - "true" - ] - } + "eventsEnabled" : false, + "eventsListeners" : [ "jboss-logging" ], + "enabledEventTypes" : [ ], + "adminEventsEnabled" : false, + "adminEventsDetailsEnabled" : false, + "identityProviders" : [ ], + "identityProviderMappers" : [ ], + "components" : { + "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy" : [ { + "id" : "9556f246-cbf8-4c7d-9a0f-59291dde6a12", + "name" : "Allowed Protocol Mapper Types", + "providerId" : "allowed-protocol-mappers", + "subType" : "authenticated", + "subComponents" : { }, + "config" : { + "allowed-protocol-mapper-types" : [ "saml-user-property-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-address-mapper", "saml-user-attribute-mapper", "oidc-usermodel-property-mapper", "saml-role-list-mapper", "oidc-usermodel-attribute-mapper", "oidc-full-name-mapper" ] } - ], - "org.keycloak.keys.KeyProvider": [ - { - "id": "625a5c13-6018-4e47-99c1-a53a022182ba", - "name": "hmac-generated", - "providerId": "hmac-generated", - "subComponents": {}, - "config": { - "priority": [ - "100" - ], - "algorithm": [ - "HS256" - ] - } - }, - { - "id": "160cb3d9-53e2-42e4-bc12-4437386c6367", - "name": "aes-generated", - "providerId": "aes-generated", - "subComponents": {}, - "config": { - "priority": [ - "100" - ] - } - }, - { - "id": "6cd2e74a-bf15-4eb2-9e61-f96ff1469358", - "name": "rsa-enc-generated", - "providerId": "rsa-generated", - "subComponents": {}, - "config": { - "priority": [ - "100" - ] - } - }, - { - "id": "8511446d-af34-4a9f-935d-38ab0a062688", - "name": "rsa-generated", - "providerId": "rsa-generated", - "subComponents": {}, - "config": { - "priority": [ - "100" - ] - } + }, { + "id" : "ddb57ebd-11ca-4e0b-b176-b8e4def28a6a", + "name" : "Trusted Hosts", + "providerId" : "trusted-hosts", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { + "host-sending-registration-request-must-match" : [ "true" ], + "client-uris-must-match" : [ "true" ] } - ] - }, - "internationalizationEnabled": false, - "supportedLocales": [], - "authenticationFlows": [ - { - "id": "205ad146-f5c4-4e7a-9419-8a2ea73b19d4", - "alias": "Account verification options", - "description": "Method with which to verity the existing account", - "providerId": "basic-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "idp-email-verification", - "authenticatorFlow": false, - "requirement": "ALTERNATIVE", - "priority": 10, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticatorFlow": true, - "requirement": "ALTERNATIVE", - "priority": 20, - "autheticatorFlow": true, - "flowAlias": "Verify Existing Account by Re-authentication", - "userSetupAllowed": false - } - ] - }, - { - "id": "547e2363-08f5-4f67-9d5a-fed1bc883af8", - "alias": "Authentication Options", - "description": "Authentication options.", - "providerId": "basic-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "basic-auth", - "authenticatorFlow": false, - "requirement": "REQUIRED", - "priority": 10, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticator": "basic-auth-otp", - "authenticatorFlow": false, - "requirement": "DISABLED", - "priority": 20, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticator": "auth-spnego", - "authenticatorFlow": false, - "requirement": "DISABLED", - "priority": 30, - "autheticatorFlow": false, - "userSetupAllowed": false - } - ] - }, - { - "id": "d3d92cbf-7dea-404b-9b3b-e0e01d01b181", - "alias": "Browser - Conditional OTP", - "description": "Flow to determine if the OTP is required for the authentication", - "providerId": "basic-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "conditional-user-configured", - "authenticatorFlow": false, - "requirement": "REQUIRED", - "priority": 10, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticator": "auth-otp-form", - "authenticatorFlow": false, - "requirement": "REQUIRED", - "priority": 20, - "autheticatorFlow": false, - "userSetupAllowed": false - } - ] - }, - { - "id": "d10429c7-e0b3-47a9-ad34-a99eb2c1ae0d", - "alias": "Direct Grant - Conditional OTP", - "description": "Flow to determine if the OTP is required for the authentication", - "providerId": "basic-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "conditional-user-configured", - "authenticatorFlow": false, - "requirement": "REQUIRED", - "priority": 10, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticator": "direct-grant-validate-otp", - "authenticatorFlow": false, - "requirement": "REQUIRED", - "priority": 20, - "autheticatorFlow": false, - "userSetupAllowed": false - } - ] - }, - { - "id": "718b5472-a9bb-4dba-a1c5-e48f8f5020e5", - "alias": "First broker login - Conditional OTP", - "description": "Flow to determine if the OTP is required for the authentication", - "providerId": "basic-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "conditional-user-configured", - "authenticatorFlow": false, - "requirement": "REQUIRED", - "priority": 10, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticator": "auth-otp-form", - "authenticatorFlow": false, - "requirement": "REQUIRED", - "priority": 20, - "autheticatorFlow": false, - "userSetupAllowed": false - } - ] - }, - { - "id": "fa17826b-1ce9-4ec0-bff5-da0e1754ab7b", - "alias": "Handle Existing Account", - "description": "Handle what to do if there is existing account with same email/username like authenticated identity provider", - "providerId": "basic-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "idp-confirm-link", - "authenticatorFlow": false, - "requirement": "REQUIRED", - "priority": 10, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticatorFlow": true, - "requirement": "REQUIRED", - "priority": 20, - "autheticatorFlow": true, - "flowAlias": "Account verification options", - "userSetupAllowed": false - } - ] - }, - { - "id": "ab73883d-7755-458c-99b1-daed2e7d1fc7", - "alias": "Reset - Conditional OTP", - "description": "Flow to determine if the OTP should be reset or not. Set to REQUIRED to force.", - "providerId": "basic-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "conditional-user-configured", - "authenticatorFlow": false, - "requirement": "REQUIRED", - "priority": 10, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticator": "reset-otp", - "authenticatorFlow": false, - "requirement": "REQUIRED", - "priority": 20, - "autheticatorFlow": false, - "userSetupAllowed": false - } - ] - }, - { - "id": "b3df1fee-f37f-4bff-a6e6-b801324228f0", - "alias": "User creation or linking", - "description": "Flow for the existing/non-existing user alternatives", - "providerId": "basic-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticatorConfig": "create unique user config", - "authenticator": "idp-create-user-if-unique", - "authenticatorFlow": false, - "requirement": "ALTERNATIVE", - "priority": 10, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticatorFlow": true, - "requirement": "ALTERNATIVE", - "priority": 20, - "autheticatorFlow": true, - "flowAlias": "Handle Existing Account", - "userSetupAllowed": false - } - ] - }, - { - "id": "e38db072-8687-40eb-a35b-f9c375da1e01", - "alias": "Verify Existing Account by Re-authentication", - "description": "Reauthentication of existing account", - "providerId": "basic-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "idp-username-password-form", - "authenticatorFlow": false, - "requirement": "REQUIRED", - "priority": 10, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticatorFlow": true, - "requirement": "CONDITIONAL", - "priority": 20, - "autheticatorFlow": true, - "flowAlias": "First broker login - Conditional OTP", - "userSetupAllowed": false - } - ] - }, - { - "id": "83845f6b-6f32-43db-9de3-71299b05a7ee", - "alias": "browser", - "description": "browser based authentication", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "auth-cookie", - "authenticatorFlow": false, - "requirement": "ALTERNATIVE", - "priority": 10, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticator": "auth-spnego", - "authenticatorFlow": false, - "requirement": "DISABLED", - "priority": 20, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticator": "identity-provider-redirector", - "authenticatorFlow": false, - "requirement": "ALTERNATIVE", - "priority": 25, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticatorFlow": true, - "requirement": "ALTERNATIVE", - "priority": 30, - "autheticatorFlow": true, - "flowAlias": "forms", - "userSetupAllowed": false - } - ] - }, - { - "id": "39089091-f930-4d29-b20c-14e2a7a3a861", - "alias": "clients", - "description": "Base authentication for clients", - "providerId": "client-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "client-secret", - "authenticatorFlow": false, - "requirement": "ALTERNATIVE", - "priority": 10, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticator": "client-jwt", - "authenticatorFlow": false, - "requirement": "ALTERNATIVE", - "priority": 20, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticator": "client-secret-jwt", - "authenticatorFlow": false, - "requirement": "ALTERNATIVE", - "priority": 30, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticator": "client-x509", - "authenticatorFlow": false, - "requirement": "ALTERNATIVE", - "priority": 40, - "autheticatorFlow": false, - "userSetupAllowed": false - } - ] - }, - { - "id": "dfe90700-c265-49d6-8cdc-23855b75ef03", - "alias": "direct grant", - "description": "OpenID Connect Resource Owner Grant", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "direct-grant-validate-username", - "authenticatorFlow": false, - "requirement": "REQUIRED", - "priority": 10, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticator": "direct-grant-validate-password", - "authenticatorFlow": false, - "requirement": "REQUIRED", - "priority": 20, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticatorFlow": true, - "requirement": "CONDITIONAL", - "priority": 30, - "autheticatorFlow": true, - "flowAlias": "Direct Grant - Conditional OTP", - "userSetupAllowed": false - } - ] - }, - { - "id": "1c1a942e-ec7d-4312-aa4f-f0a571da0bce", - "alias": "docker auth", - "description": "Used by Docker clients to authenticate against the IDP", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "docker-http-basic-authenticator", - "authenticatorFlow": false, - "requirement": "REQUIRED", - "priority": 10, - "autheticatorFlow": false, - "userSetupAllowed": false - } - ] - }, - { - "id": "6d7fab52-2a08-46ed-8a19-fe27284baa47", - "alias": "first broker login", - "description": "Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticatorConfig": "review profile config", - "authenticator": "idp-review-profile", - "authenticatorFlow": false, - "requirement": "REQUIRED", - "priority": 10, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticatorFlow": true, - "requirement": "REQUIRED", - "priority": 20, - "autheticatorFlow": true, - "flowAlias": "User creation or linking", - "userSetupAllowed": false - } - ] - }, - { - "id": "fc94d7d8-5d72-47e6-a4de-4c1512d71e16", - "alias": "forms", - "description": "Username, password, otp and other auth forms.", - "providerId": "basic-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "auth-username-password-form", - "authenticatorFlow": false, - "requirement": "REQUIRED", - "priority": 10, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticatorFlow": true, - "requirement": "CONDITIONAL", - "priority": 20, - "autheticatorFlow": true, - "flowAlias": "Browser - Conditional OTP", - "userSetupAllowed": false - } - ] - }, - { - "id": "6d7a94da-fbb7-4d20-b41c-472bed514830", - "alias": "http challenge", - "description": "An authentication flow based on challenge-response HTTP Authentication Schemes", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "no-cookie-redirect", - "authenticatorFlow": false, - "requirement": "REQUIRED", - "priority": 10, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticatorFlow": true, - "requirement": "REQUIRED", - "priority": 20, - "autheticatorFlow": true, - "flowAlias": "Authentication Options", - "userSetupAllowed": false - } - ] - }, - { - "id": "c5d70775-bdc7-4826-93b1-0ba233ed4e7e", - "alias": "registration", - "description": "registration flow", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "registration-page-form", - "authenticatorFlow": true, - "requirement": "REQUIRED", - "priority": 10, - "autheticatorFlow": true, - "flowAlias": "registration form", - "userSetupAllowed": false - } - ] - }, - { - "id": "9b95767e-b8c7-4570-961d-13e8e59aae7c", - "alias": "registration form", - "description": "registration form", - "providerId": "form-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "registration-user-creation", - "authenticatorFlow": false, - "requirement": "REQUIRED", - "priority": 20, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticator": "registration-profile-action", - "authenticatorFlow": false, - "requirement": "REQUIRED", - "priority": 40, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticator": "registration-password-action", - "authenticatorFlow": false, - "requirement": "REQUIRED", - "priority": 50, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticator": "registration-recaptcha-action", - "authenticatorFlow": false, - "requirement": "DISABLED", - "priority": 60, - "autheticatorFlow": false, - "userSetupAllowed": false - } - ] - }, - { - "id": "d7b400a1-9455-46e1-8322-10ce0a3cbd07", - "alias": "reset credentials", - "description": "Reset credentials for a user if they forgot their password or something", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "reset-credentials-choose-user", - "authenticatorFlow": false, - "requirement": "REQUIRED", - "priority": 10, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticator": "reset-credential-email", - "authenticatorFlow": false, - "requirement": "REQUIRED", - "priority": 20, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticator": "reset-password", - "authenticatorFlow": false, - "requirement": "REQUIRED", - "priority": 30, - "autheticatorFlow": false, - "userSetupAllowed": false - }, - { - "authenticatorFlow": true, - "requirement": "CONDITIONAL", - "priority": 40, - "autheticatorFlow": true, - "flowAlias": "Reset - Conditional OTP", - "userSetupAllowed": false - } - ] - }, - { - "id": "39c225ca-9d35-42f9-b535-f477b40182df", - "alias": "saml ecp", - "description": "SAML ECP Profile Authentication Flow", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "http-basic-authenticator", - "authenticatorFlow": false, - "requirement": "REQUIRED", - "priority": 10, - "autheticatorFlow": false, - "userSetupAllowed": false - } - ] - } - ], - "authenticatorConfig": [ - { - "id": "54c70413-4884-4178-a662-96440d3dca17", - "alias": "create unique user config", - "config": { - "require.password.update.after.registration": "false" + }, { + "id" : "2e4dc148-9617-4207-a53c-5c5816437a39", + "name" : "Max Clients Limit", + "providerId" : "max-clients", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { + "max-clients" : [ "200" ] } - }, - { - "id": "f053015e-b577-42fa-9cd1-5b723eecb72c", - "alias": "review profile config", - "config": { - "update.profile.on.first.login": "missing" + }, { + "id" : "7c9a9ae5-582b-4f8d-b2b0-68ab090bf7e3", + "name" : "Allowed Client Scopes", + "providerId" : "allowed-client-templates", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { + "allow-default-scopes" : [ "true" ] + } + }, { + "id" : "a56f749d-b0f2-4763-9d53-6b375e55a3a3", + "name" : "Full Scope Disabled", + "providerId" : "scope", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { } + }, { + "id" : "ac09829b-6a6f-4437-8104-c01b83e8087b", + "name" : "Allowed Protocol Mapper Types", + "providerId" : "allowed-protocol-mappers", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { + "allowed-protocol-mapper-types" : [ "oidc-usermodel-property-mapper", "oidc-usermodel-attribute-mapper", "oidc-full-name-mapper", "saml-role-list-mapper", "oidc-address-mapper", "saml-user-property-mapper", "saml-user-attribute-mapper", "oidc-sha256-pairwise-sub-mapper" ] + } + }, { + "id" : "03339ad1-172b-473a-90d1-015f0bcfebe9", + "name" : "Allowed Client Scopes", + "providerId" : "allowed-client-templates", + "subType" : "authenticated", + "subComponents" : { }, + "config" : { + "allow-default-scopes" : [ "true" ] + } + }, { + "id" : "3d4a3dd2-45b0-4ca2-93ef-33c2ccbe8aae", + "name" : "Consent Required", + "providerId" : "consent-required", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { } + } ], + "org.keycloak.userprofile.UserProfileProvider" : [ { + "id" : "b3663733-a7eb-4bbb-bf5c-dd23fb89b02f", + "providerId" : "declarative-user-profile", + "subComponents" : { }, + "config" : { + "kc.user.profile.config" : [ "{\"attributes\":[{\"name\":\"username\",\"displayName\":\"${username}\",\"validations\":{\"length\":{\"min\":3,\"max\":255},\"username-prohibited-characters\":{},\"up-username-not-idn-homograph\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"email\",\"displayName\":\"${email}\",\"validations\":{\"email\":{},\"length\":{\"max\":255}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"firstName\",\"displayName\":\"${firstName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"lastName\",\"displayName\":\"${lastName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false}],\"groups\":[{\"name\":\"user-metadata\",\"displayHeader\":\"User metadata\",\"displayDescription\":\"Attributes, which refer to user metadata\"}],\"unmanagedAttributePolicy\":\"ENABLED\"}" ] + } + } ], + "org.keycloak.keys.KeyProvider" : [ { + "id" : "6cd2e74a-bf15-4eb2-9e61-f96ff1469358", + "name" : "rsa-enc-generated", + "providerId" : "rsa-generated", + "subComponents" : { }, + "config" : { + "privateKey" : [ "MIIEogIBAAKCAQEA2L0UQfrN5cm38SfRQI+olvM+VczKOJTvx9xp9+Z2BSyB1zDdgeEsIg6eB6gQ+KTWMeFSmS7VJQsUMVbDGwy1vPrpiyvvjo7Y5OVCc0nfP8rPdo66qVptZOkGNxi0RmN5TXak7zgLsBd4jfY+GLgsrD79ubrgPe135G+4+EFnqu3FavhmWpH5lKloWsMQSyJ8vzDWM/Sk3uF7NKfEj5uvNosfppoxA6Ech4lRW+NrPsSVjots0EvE5W+e5bqGb7B9aqIu1ER7AltQS0wZ4j6Q7cfQMqlh7Hz1YIFEUq1G3gFj3uSCANRVzuG1muIe2kGVWzCNjw0dfkA+wKQEm5c8TwIDAQABAoIBAFX38bAWFlNeBrr96y8rjFiLlR8dQtzcnpts3w94dzmoJLxBYqsgsIu1tpMc49ZsM5XHZSbjf6HY2iKT4oG5MeEKuVX9kGDAYmGwWgI2u/mmrVG+XWXNO3T6RP/XqbH9xOCn/dXxKhmnxaaxlIHjk7yio6tm54lIxvRyKDE4aDFQsVYX5BnpAHXsN8CqQ3WYUbfGur5VzkJDmdXh9/ogNTL4rulmjgvP3Gt3+0Kw5svzeWotvOgZzIxz1Ww0KhBmEynCFnIppeT/EHwiaZSfD1MGTbcVrc9EDXMg+IIyuvd7sejxbvX0l1hqROV6jv3zsT/+IXoauQrna5fQ3sfUTskCgYEA/OzX3GZs2o7GWH91ix2whsNwsHMBxzwTxuBW2aGzImQu7XhPWOI9g0tpU7G2Zph5v84sB8CgVjKrX7LcHcmLQVqNUr/LUUiiKn0hfyqyA59x14juxokmspQu7NK7RmNRf3WatxMbYFafWFdMsWWE0mABX0rfeOe+beYH9VweIZsCgYEA21+dmOoyjN5t0vooFilwbmyQvmNRYah/QP5+BewBgv3Zq9AwjjALOtGBjF2+WdEjdXhzaj4sz0aP9HiqfLvFOHC803NbugNCTnnPHmojFvsakgriyb5LfW5+wpNxLY05dKtG0cx4VUB2yEuJVFuv4N+Ec0n6ETcu64AcgHRHBV0CgYB5Rhc61uHa6hqw1GzIB7Rc6dlewcZYgbX55he+woniM6dMtiNVuyVDjyUxvER5bSLzlSgHj5VRv3nsqRZiMgFTlNeulcgncWxQcy9cilxQ4GL1tfLHv3uOpP7bDzA8z+KD+x/0KHU3/FDrSvC7HrJRLTd7OattjbEBgQrP2xuXgQKBgFgXbES0fvocc8ON2r0ThOeCxxj87vglXnxt9ZNRM0Yzw83/uw/N8SR8buY72q1ckz2f0dDvCLVvY21La0LNcCP6+Yh7wXDP0DeNKIPRISggS4orvug+dzf2QAbIiGE/Xbwg7z5eOlAZo9lIo+vxKY5Gk3xsT3PMUhYVitx2VPKtAoGAdYlxJVXt47D5cFm3LEJgJyBKbR2/OR5hL8wiR38Sz3/tpfZo5hOu4lshrSnsYhAU1SAuDhm9DwHkU4p5o3yPXVN+uccoJhmKwVOSYVQ+H3wVWjO7Z0Ffv7pwxdXhvXvtRp6zLXWo48wsRGLuPptFSgDd6D5hXAh7DlM3YEJZuGo=" ], + "certificate" : [ "MIICrTCCAZUCBgGSLTr+ezANBgkqhkiG9w0BAQsFADAaMRgwFgYDVQQDDA9tb25hY28tdGVtcGxhdGUwHhcNMjQwOTI2MDcyNjMzWhcNMzQwOTI2MDcyODEzWjAaMRgwFgYDVQQDDA9tb25hY28tdGVtcGxhdGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDYvRRB+s3lybfxJ9FAj6iW8z5VzMo4lO/H3Gn35nYFLIHXMN2B4SwiDp4HqBD4pNYx4VKZLtUlCxQxVsMbDLW8+umLK++Ojtjk5UJzSd8/ys92jrqpWm1k6QY3GLRGY3lNdqTvOAuwF3iN9j4YuCysPv25uuA97Xfkb7j4QWeq7cVq+GZakfmUqWhawxBLIny/MNYz9KTe4Xs0p8SPm682ix+mmjEDoRyHiVFb42s+xJWOi2zQS8Tlb57luoZvsH1qoi7URHsCW1BLTBniPpDtx9AyqWHsfPVggURSrUbeAWPe5IIA1FXO4bWa4h7aQZVbMI2PDR1+QD7ApASblzxPAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAA0tXTXGYlKYHdoOAZfQubYJqRaPcG6x4WhTW1T4Uq9JgqTQgkP2argMJUEjSKuxIIdMy07EcZQUocTgUjYFBk2lbb+q4gevF/p9rd0O8h6+7cKc97O+Tg8c9oAjclrZNW3eQoIfXb+q/w+BCp3jEi4UANeBqRmAlnf1bISJRmdwytiaIH/7UbWyibCoy1kHUG2tIQwVbedm9l0emjuhnpQYoWPcIqQ5sAfklFQOZrITHmAGp/mAP3AcvRC3arEvL+rqI9o2YwnGXF6QJUUKu+PbzTUd/OGgXUvUgsmRyUho3y1+NVjYsqJbByeKRqB0BWvfG4oIX4hkrzemvThRSm4=" ], + "priority" : [ "100" ] + } + }, { + "id" : "625a5c13-6018-4e47-99c1-a53a022182ba", + "name" : "hmac-generated", + "providerId" : "hmac-generated", + "subComponents" : { }, + "config" : { + "kid" : [ "9a1a66b0-b97e-4b6e-b70b-c2131d9ee811" ], + "secret" : [ "-t6mPi8Kjo57jfFChR25YX_3Sp29Rz0jLKrNA6J77OTguhCF0IasnG4ebxYT-JfkxGBJHgaBq884dlkSvTc5TGDE3WFYgh-yK9I1PxsHIhUNVLGRnutfQPJ4ZyX9zrkpGJeiDIT6VcIwrWeNGH3ZJS926jHg-3PFJDKBnIXk5Lc" ], + "priority" : [ "100" ], + "algorithm" : [ "HS256" ] + } + }, { + "id" : "263211a9-f9c2-45ea-a3e4-7a8103a1d9f3", + "name" : "hmac-generated-hs512", + "providerId" : "hmac-generated", + "subComponents" : { }, + "config" : { + "kid" : [ "ce6a4cb3-f17c-45d8-84af-6fb76ddfa8ef" ], + "secret" : [ "tvdeRq3RrAN_eRiRaz2aMucFei4n1yRMnp9zaAlXYEVwwVX4-nD9q0rQ81VqFZEK6Rfza3mZYw2NWDy7jx7cZtBwQwxWNbtg8d1hnUKMhBLq8XxrhWQI82EmqzsuUQUNcbFYR4gKGgxSp5QBT0vdLGExpbKYLEDuywyMFYInuYU" ], + "priority" : [ "100" ], + "algorithm" : [ "HS512" ] + } + }, { + "id" : "160cb3d9-53e2-42e4-bc12-4437386c6367", + "name" : "aes-generated", + "providerId" : "aes-generated", + "subComponents" : { }, + "config" : { + "kid" : [ "ff12b9ab-dc2e-4124-8f62-81554ac132e4" ], + "secret" : [ "jXHNjTgza3t_hqtSbHP7Ng" ], + "priority" : [ "100" ] } + }, { + "id" : "8511446d-af34-4a9f-935d-38ab0a062688", + "name" : "rsa-generated", + "providerId" : "rsa-generated", + "subComponents" : { }, + "config" : { + "privateKey" : [ "MIIEpAIBAAKCAQEAsNvEgLu8blqIZYxlfIxGqvvAP8ssmbjzcIiBALgS5l/reT4r+24evhtha5bz7QirSLta7Ej/X+w5InE8sOGYAfjSLHxmgYPVruAI3ehOibcJgPlPif/TIIDMvgAABkseVoTllQrHqKTlp3UgeJ4HXF/bs+O5qUgV3OttEmaT+6X4apZjC9ZHdUrB1RmObUKVdRPc/K2myFtXj0fhmlvOZ9SoroDlLFml5G0Uk5RkHJvRIN/hAXa/KGgmXy3qPF0xdn0ta6yJUOBuCkVvJh8sbxLH4D2WK5/LZ0MLcMaPj7yiFTUu+k3CGEEMrLu9YznT6T1QSOGvRE4J+SFVPa3mbwIDAQABAoIBAFApJC03KmaYSTdBxeQITqWEGvSvOcVpI4nvjQ0O4Z4ifr/C8rtxA6UmEudpkaDvq3b5WHI9eeZ30sOuMJR5g+Ts6xI3xlxQrWMob0xpVWOtHzUiiy8g0YhraKF7rYcsuBD+BnMh4jIpn1/hwjh5ZBu15QZposa8AhDScmsDLHLD2+UCxpD/5IJYmI+T6GPqTYeA2Xn/bmID1v4Z0Bce/snoXP6IRjwH3xPanadOR41RSgc6qU7VFlG8Dc+IfJjF1v3VWwWHaRZQsKIJYJ7lhRpUl6pVypEJJoi+/8ltIHY14fEQsjp/tSot54JP3LDfRulXffpwLcmUWslqpONz/jECgYEA2FqcUaIsFEcCuqYDeEpx4aagsseyYd9SlX22GCVFcn0XeKvmpNgwDPOkKnkRPpJAOKCPDpsM2sCaF7SBYxBdu0H8JYBR/yK2SaBXFcQjEyQY31Czh565lrimk4k5/4qalC5FAHYUfQpgkZzBMa0/noDA+Zt1jWaWGE1wPq+nNtECgYEA0URh/X1GpX2nf0pQ2Z/qa2x1GHRplV29ggx15qpD7b4PkwRn3wSM/Y5ul1OCbaGNAVvm7wrzCF3Wyp3QH9ztHrCae1cDWj5rpllKB0h/3OFja9902SYo116BKUf1IxZNRxa5ngEkHoTP45Yv5HwyYB1evsKjnDMUr5Vz+UGdGT8CgYEAomy8KGkYsIxzFw8lUbyJ7H8865sSZ3nSNRqwh0YL8hzJbzWWrTEEOeT73UsQ0CnZ/ulDHRL4Po4T4TIJZQbXZ4rtMnY4mNNFiNbQKi4aqvcRmS2r6mgWKnorzF1cZmV3EUH/WY5MaWdOAmNtgs7vER7WQU4dnW9jxZD1cIpMfdECgYA2asPYeQUv75bowNh5Xt5EhPWGIG98Sd4HvVnDW69CWVQPdOvV0IchQDJ941ddTs8t9Un+CyjbmhtKoPMH9hkrC92ACUZz5xtzLHDVqAKn22xRFtB5zzR7nLWVmIKkVx5NSBmIft93mC2/DsTxc2JeIAUNMev9qELOzdxUir1hXQKBgQDDLz1yG3mxFP/Q0n/rfL6luJlc7B4DeMQ3KUcRXgsGJt5B1KAz2UQR2QPND63y79sdTeBqmStAvbeQk7EO/zdZI+8lhmpAylGBpAsUqVjEnZDav9XoKZ6rPlYwL0jCTK1aUUookIUIENN+iuUhTseNOKwfXrRzoDkBjh6xkzJLpw==" ], + "certificate" : [ "MIICrTCCAZUCBgGSLTr/ojANBgkqhkiG9w0BAQsFADAaMRgwFgYDVQQDDA9tb25hY28tdGVtcGxhdGUwHhcNMjQwOTI2MDcyNjM0WhcNMzQwOTI2MDcyODE0WjAaMRgwFgYDVQQDDA9tb25hY28tdGVtcGxhdGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCw28SAu7xuWohljGV8jEaq+8A/yyyZuPNwiIEAuBLmX+t5Piv7bh6+G2FrlvPtCKtIu1rsSP9f7DkicTyw4ZgB+NIsfGaBg9Wu4Ajd6E6JtwmA+U+J/9MggMy+AAAGSx5WhOWVCseopOWndSB4ngdcX9uz47mpSBXc620SZpP7pfhqlmML1kd1SsHVGY5tQpV1E9z8rabIW1ePR+GaW85n1KiugOUsWaXkbRSTlGQcm9Eg3+EBdr8oaCZfLeo8XTF2fS1rrIlQ4G4KRW8mHyxvEsfgPZYrn8tnQwtwxo+PvKIVNS76TcIYQQysu71jOdPpPVBI4a9ETgn5IVU9reZvAgMBAAEwDQYJKoZIhvcNAQELBQADggEBABEDI32I64LflHRp1zwd69X5hb4pxSz1nAFwWaxs0lZFsAPzxW5v6X7+V4eS/LiXxn20mnQWoRZLzWl0l8pPKrMhDKPNxeLv945zPI7qMgltdb8KPvkpXzMCVKpqLjelJEtbS2I+7qKAJKN67H9jW8GFKGri9u7CZDh3b48VDwnf/I9UUOgnfPKz+RuZ3J+S9+657mGIYs+cJwJXx0e2zV4bQqPT4DYV2W0msEqULlHXKbB/vMfwv8nASmIRwSIq5JfZ0hZ9ejuPlR0GnSpBRfiq3FKdDjHKjgRSEvs5bOtWw/rmWQdUiQriJxem+/HcfmLjd352a+i7FkXjbm07T+Q=" ], + "priority" : [ "100" ] + } + } ] + }, + "internationalizationEnabled" : false, + "supportedLocales" : [ ], + "authenticationFlows" : [ { + "id" : "205ad146-f5c4-4e7a-9419-8a2ea73b19d4", + "alias" : "Account verification options", + "description" : "Method with which to verity the existing account", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "idp-email-verification", + "authenticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "ALTERNATIVE", + "priority" : 20, + "autheticatorFlow" : true, + "flowAlias" : "Verify Existing Account by Re-authentication", + "userSetupAllowed" : false + } ] + }, { + "id" : "d3d92cbf-7dea-404b-9b3b-e0e01d01b181", + "alias" : "Browser - Conditional OTP", + "description" : "Flow to determine if the OTP is required for the authentication", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "conditional-user-configured", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "auth-otp-form", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + } ] + }, { + "id" : "d10429c7-e0b3-47a9-ad34-a99eb2c1ae0d", + "alias" : "Direct Grant - Conditional OTP", + "description" : "Flow to determine if the OTP is required for the authentication", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "conditional-user-configured", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "direct-grant-validate-otp", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + } ] + }, { + "id" : "718b5472-a9bb-4dba-a1c5-e48f8f5020e5", + "alias" : "First broker login - Conditional OTP", + "description" : "Flow to determine if the OTP is required for the authentication", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "conditional-user-configured", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "auth-otp-form", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + } ] + }, { + "id" : "fa17826b-1ce9-4ec0-bff5-da0e1754ab7b", + "alias" : "Handle Existing Account", + "description" : "Handle what to do if there is existing account with same email/username like authenticated identity provider", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "idp-confirm-link", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : true, + "flowAlias" : "Account verification options", + "userSetupAllowed" : false + } ] + }, { + "id" : "ab73883d-7755-458c-99b1-daed2e7d1fc7", + "alias" : "Reset - Conditional OTP", + "description" : "Flow to determine if the OTP should be reset or not. Set to REQUIRED to force.", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "conditional-user-configured", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "reset-otp", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + } ] + }, { + "id" : "b3df1fee-f37f-4bff-a6e6-b801324228f0", + "alias" : "User creation or linking", + "description" : "Flow for the existing/non-existing user alternatives", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticatorConfig" : "create unique user config", + "authenticator" : "idp-create-user-if-unique", + "authenticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "ALTERNATIVE", + "priority" : 20, + "autheticatorFlow" : true, + "flowAlias" : "Handle Existing Account", + "userSetupAllowed" : false + } ] + }, { + "id" : "e38db072-8687-40eb-a35b-f9c375da1e01", + "alias" : "Verify Existing Account by Re-authentication", + "description" : "Reauthentication of existing account", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "idp-username-password-form", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "CONDITIONAL", + "priority" : 20, + "autheticatorFlow" : true, + "flowAlias" : "First broker login - Conditional OTP", + "userSetupAllowed" : false + } ] + }, { + "id" : "83845f6b-6f32-43db-9de3-71299b05a7ee", + "alias" : "browser", + "description" : "browser based authentication", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "auth-cookie", + "authenticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "auth-spnego", + "authenticatorFlow" : false, + "requirement" : "DISABLED", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "identity-provider-redirector", + "authenticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "priority" : 25, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "ALTERNATIVE", + "priority" : 30, + "autheticatorFlow" : true, + "flowAlias" : "forms", + "userSetupAllowed" : false + } ] + }, { + "id" : "39089091-f930-4d29-b20c-14e2a7a3a861", + "alias" : "clients", + "description" : "Base authentication for clients", + "providerId" : "client-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "client-secret", + "authenticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "client-jwt", + "authenticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "client-secret-jwt", + "authenticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "priority" : 30, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "client-x509", + "authenticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "priority" : 40, + "autheticatorFlow" : false, + "userSetupAllowed" : false + } ] + }, { + "id" : "dfe90700-c265-49d6-8cdc-23855b75ef03", + "alias" : "direct grant", + "description" : "OpenID Connect Resource Owner Grant", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "direct-grant-validate-username", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "direct-grant-validate-password", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "CONDITIONAL", + "priority" : 30, + "autheticatorFlow" : true, + "flowAlias" : "Direct Grant - Conditional OTP", + "userSetupAllowed" : false + } ] + }, { + "id" : "1c1a942e-ec7d-4312-aa4f-f0a571da0bce", + "alias" : "docker auth", + "description" : "Used by Docker clients to authenticate against the IDP", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "docker-http-basic-authenticator", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + } ] + }, { + "id" : "6d7fab52-2a08-46ed-8a19-fe27284baa47", + "alias" : "first broker login", + "description" : "Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticatorConfig" : "review profile config", + "authenticator" : "idp-review-profile", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : true, + "flowAlias" : "User creation or linking", + "userSetupAllowed" : false + } ] + }, { + "id" : "fc94d7d8-5d72-47e6-a4de-4c1512d71e16", + "alias" : "forms", + "description" : "Username, password, otp and other auth forms.", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "auth-username-password-form", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "CONDITIONAL", + "priority" : 20, + "autheticatorFlow" : true, + "flowAlias" : "Browser - Conditional OTP", + "userSetupAllowed" : false + } ] + }, { + "id" : "c5d70775-bdc7-4826-93b1-0ba233ed4e7e", + "alias" : "registration", + "description" : "registration flow", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "registration-page-form", + "authenticatorFlow" : true, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : true, + "flowAlias" : "registration form", + "userSetupAllowed" : false + } ] + }, { + "id" : "9b95767e-b8c7-4570-961d-13e8e59aae7c", + "alias" : "registration form", + "description" : "registration form", + "providerId" : "form-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "registration-user-creation", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "registration-password-action", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 50, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "registration-recaptcha-action", + "authenticatorFlow" : false, + "requirement" : "DISABLED", + "priority" : 60, + "autheticatorFlow" : false, + "userSetupAllowed" : false + } ] + }, { + "id" : "d7b400a1-9455-46e1-8322-10ce0a3cbd07", + "alias" : "reset credentials", + "description" : "Reset credentials for a user if they forgot their password or something", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "reset-credentials-choose-user", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "reset-credential-email", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "reset-password", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 30, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "CONDITIONAL", + "priority" : 40, + "autheticatorFlow" : true, + "flowAlias" : "Reset - Conditional OTP", + "userSetupAllowed" : false + } ] + }, { + "id" : "39c225ca-9d35-42f9-b535-f477b40182df", + "alias" : "saml ecp", + "description" : "SAML ECP Profile Authentication Flow", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "http-basic-authenticator", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + } ] + } ], + "authenticatorConfig" : [ { + "id" : "54c70413-4884-4178-a662-96440d3dca17", + "alias" : "create unique user config", + "config" : { + "require.password.update.after.registration" : "false" } - ], - "requiredActions": [ - { - "alias": "CONFIGURE_TOTP", - "name": "Configure OTP", - "providerId": "CONFIGURE_TOTP", - "enabled": true, - "defaultAction": false, - "priority": 10, - "config": {} - }, - { - "alias": "terms_and_conditions", - "name": "Terms and Conditions", - "providerId": "terms_and_conditions", - "enabled": false, - "defaultAction": false, - "priority": 20, - "config": {} - }, - { - "alias": "UPDATE_PASSWORD", - "name": "Update Password", - "providerId": "UPDATE_PASSWORD", - "enabled": true, - "defaultAction": false, - "priority": 30, - "config": {} - }, - { - "alias": "UPDATE_PROFILE", - "name": "Update Profile", - "providerId": "UPDATE_PROFILE", - "enabled": true, - "defaultAction": false, - "priority": 40, - "config": {} - }, - { - "alias": "VERIFY_EMAIL", - "name": "Verify Email", - "providerId": "VERIFY_EMAIL", - "enabled": true, - "defaultAction": false, - "priority": 50, - "config": {} - }, - { - "alias": "delete_account", - "name": "Delete Account", - "providerId": "delete_account", - "enabled": false, - "defaultAction": false, - "priority": 60, - "config": {} - }, - { - "alias": "update_user_locale", - "name": "Update User Locale", - "providerId": "update_user_locale", - "enabled": true, - "defaultAction": false, - "priority": 1000, - "config": {} + }, { + "id" : "f053015e-b577-42fa-9cd1-5b723eecb72c", + "alias" : "review profile config", + "config" : { + "update.profile.on.first.login" : "missing" } - ], - "browserFlow": "browser", - "registrationFlow": "registration", - "directGrantFlow": "direct grant", - "resetCredentialsFlow": "reset credentials", - "clientAuthenticationFlow": "clients", - "dockerAuthenticationFlow": "docker auth", - "attributes": { - "cibaBackchannelTokenDeliveryMode": "poll", - "cibaAuthRequestedUserHint": "login_hint", - "clientOfflineSessionMaxLifespan": "0", - "oauth2DevicePollingInterval": "5", - "clientSessionIdleTimeout": "0", - "userProfileEnabled": "false", - "clientOfflineSessionIdleTimeout": "0", - "cibaInterval": "5", - "realmReusableOtpCode": "false", - "cibaExpiresIn": "120", - "oauth2DeviceCodeLifespan": "600", - "parRequestUriLifespan": "60", - "clientSessionMaxLifespan": "0" + } ], + "requiredActions" : [ { + "alias" : "CONFIGURE_TOTP", + "name" : "Configure OTP", + "providerId" : "CONFIGURE_TOTP", + "enabled" : true, + "defaultAction" : false, + "priority" : 10, + "config" : { } + }, { + "alias" : "TERMS_AND_CONDITIONS", + "name" : "Terms and Conditions", + "providerId" : "TERMS_AND_CONDITIONS", + "enabled" : false, + "defaultAction" : false, + "priority" : 20, + "config" : { } + }, { + "alias" : "UPDATE_PASSWORD", + "name" : "Update Password", + "providerId" : "UPDATE_PASSWORD", + "enabled" : true, + "defaultAction" : false, + "priority" : 30, + "config" : { } + }, { + "alias" : "UPDATE_PROFILE", + "name" : "Update Profile", + "providerId" : "UPDATE_PROFILE", + "enabled" : true, + "defaultAction" : false, + "priority" : 40, + "config" : { } + }, { + "alias" : "VERIFY_EMAIL", + "name" : "Verify Email", + "providerId" : "VERIFY_EMAIL", + "enabled" : true, + "defaultAction" : false, + "priority" : 50, + "config" : { } + }, { + "alias" : "delete_account", + "name" : "Delete Account", + "providerId" : "delete_account", + "enabled" : false, + "defaultAction" : false, + "priority" : 60, + "config" : { } + }, { + "alias" : "delete_credential", + "name" : "Delete Credential", + "providerId" : "delete_credential", + "enabled" : true, + "defaultAction" : false, + "priority" : 100, + "config" : { } + }, { + "alias" : "update_user_locale", + "name" : "Update User Locale", + "providerId" : "update_user_locale", + "enabled" : true, + "defaultAction" : false, + "priority" : 1000, + "config" : { } + } ], + "browserFlow" : "browser", + "registrationFlow" : "registration", + "directGrantFlow" : "direct grant", + "resetCredentialsFlow" : "reset credentials", + "clientAuthenticationFlow" : "clients", + "dockerAuthenticationFlow" : "docker auth", + "firstBrokerLoginFlow" : "first broker login", + "attributes" : { + "cibaBackchannelTokenDeliveryMode" : "poll", + "cibaExpiresIn" : "120", + "cibaAuthRequestedUserHint" : "login_hint", + "oauth2DeviceCodeLifespan" : "600", + "clientOfflineSessionMaxLifespan" : "0", + "oauth2DevicePollingInterval" : "5", + "clientSessionIdleTimeout" : "0", + "parRequestUriLifespan" : "60", + "clientSessionMaxLifespan" : "0", + "clientOfflineSessionIdleTimeout" : "0", + "cibaInterval" : "5", + "realmReusableOtpCode" : "false" }, - "keycloakVersion": "21.0.0", - "userManagedAccessAllowed": false, - "clientProfiles": { - "profiles": [] + "keycloakVersion" : "25.0.6", + "userManagedAccessAllowed" : false, + "organizationsEnabled" : false, + "clientProfiles" : { + "profiles" : [ ] }, - "clientPolicies": { - "policies": [] + "clientPolicies" : { + "policies" : [ ] } } \ No newline at end of file From a34819e4b8549b29e0aba5ab7a5076fe3039c417 Mon Sep 17 00:00:00 2001 From: CesarD Date: Thu, 3 Oct 2024 01:27:21 +0200 Subject: [PATCH 2/9] CHORE: Cleanup --- .../Monaco.Template.Backend.Api/Program.cs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Api/Program.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.Api/Program.cs index d9c3db7..9b79bd4 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Api/Program.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Api/Program.cs @@ -19,15 +19,15 @@ var builder = WebApplication.CreateBuilder(args); builder.Logging.ClearProviders(); builder.Host.UseSerilog((context, config) => config.ReadFrom.Configuration(context.Configuration) - .WriteTo.Logger(l => l.WriteTo.Conditional(_ => context.HostingEnvironment.IsDevelopment(), // Only for dev - cfg => cfg.Debug() - .WriteTo.File("logs/log.txt", - rollingInterval: RollingInterval.Day, - outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}")) - .WriteTo.Console() - .WriteTo.ApplicationInsights(context.Configuration["ApplicationInsights:InstrumentationKey"], - new OperationTelemetryConverter()) - .Filter.ByExcluding(x => x.Properties.ContainsKey("AuditEntries"))) + .WriteTo.Logger(l => l.WriteTo.Conditional(_ => context.HostingEnvironment.IsDevelopment(), // Only for dev + cfg => cfg.Debug() + .WriteTo.File("logs/log.txt", + rollingInterval: RollingInterval.Day, + outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}")) + .WriteTo.Console() + .WriteTo.ApplicationInsights(context.Configuration["ApplicationInsights:InstrumentationKey"], + new OperationTelemetryConverter()) + .Filter.ByExcluding(x => x.Properties.ContainsKey("AuditEntries"))) .WriteTo.Logger(l => l.WriteTo.ApplicationInsights(context.Configuration["ApplicationInsights:InstrumentationKey"], new AuditEventTelemetryConverter()) .Filter.ByIncludingOnly(x => x.Properties.ContainsKey("AuditEntries"))) From 62236bf19d060968a357926caab0c7f4647244b5 Mon Sep 17 00:00:00 2001 From: CesarD Date: Sat, 5 Oct 2024 18:26:31 +0200 Subject: [PATCH 3/9] Fixed AccessTokenDto constructor. Improved Products.DownloadPicture tests and ApiRoutes helper. --- .../AccessTokenDto.cs | 11 +---------- .../ApiRoutes.cs | 11 ++++------- .../Tests/ProductsTests.cs | 2 +- 3 files changed, 6 insertions(+), 18 deletions(-) diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/AccessTokenDto.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/AccessTokenDto.cs index 05e103a..30dbde1 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/AccessTokenDto.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/AccessTokenDto.cs @@ -2,13 +2,4 @@ namespace Monaco.Template.Backend.IntegrationTests; -public record AccessTokenDto -{ - public AccessTokenDto(string accessToken, int expiresIn) - { - AccessToken = accessToken; - } - - [JsonPropertyName("access_token")] - public string AccessToken { get; init; } -} \ No newline at end of file +public record AccessTokenDto([property: JsonPropertyName("access_token")] string AccessToken); \ No newline at end of file diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/ApiRoutes.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/ApiRoutes.cs index 77bfa87..e5007ce 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/ApiRoutes.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/ApiRoutes.cs @@ -27,6 +27,7 @@ private static Url Limit(this Url url, int? limit = null) => ? url.SetQueryParam(LimitParamName, limit.Value) : url; + public static class Companies { private static Url Controller => ApiVersion.Clone() @@ -77,13 +78,9 @@ public static Url Query(bool expandCompany = false, public static Url Get(Guid id) => Controller.AppendPathSegment(id); - public static Url DownloadPicture(Guid productId, Guid pictureId, bool? isThumbnail = null) - { - var url = Controller.AppendPathSegments(productId, "Pictures", pictureId); - return isThumbnail.HasValue - ? url.SetQueryParam("thumbnail", isThumbnail.Value.ToString().ToLower()) - : url; - } + public static Url DownloadPicture(Guid productId, Guid pictureId, bool? isThumbnail = null) => + Controller.AppendPathSegments(productId, "Pictures", pictureId) + .SetQueryParam("thumbnail", isThumbnail); public static string Post() => Query(); public static string Put(Guid id) => Get(id); diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs index 9cf835c..1d95583 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs @@ -201,7 +201,7 @@ public async Task DownloadProductPictureSucceeds() var productId = Guid.Parse("FA934D1C-1E6D-4DD4-ADC2-08DC18C8810C"); var pictureId = Guid.Parse("7D5C57BA-05F4-44FD-832E-5145C5AB0486"); - await DownloadProductPictureTest(productId, pictureId, false); + await DownloadProductPictureTest(productId, pictureId); } [Fact(DisplayName = "Download Product's Picture Thumbnail succeeds")] From 089b38c9ba8aa3ecc589aaea11f2f70132c5cd5b Mon Sep 17 00:00:00 2001 From: CesarD Date: Mon, 7 Oct 2024 19:08:36 +0200 Subject: [PATCH 4/9] Added template flags. --- .../Solution/.template.config/template.json | 15 +++++-- .../Monaco.Template.Backend.Api.csproj | 2 +- .../Monaco.Template.Backend.Api/Program.cs | 22 +++++----- ....Backend.Application.Infrastructure.csproj | 2 +- ....Template.Backend.Application.Tests.csproj | 2 +- ...Monaco.Template.Backend.Application.csproj | 2 +- .../Model/Page.cs | 14 +++--- .../ApiRoutes.cs | 10 ++--- .../ApiWebApplicationFactory.cs | 27 ++++++++++-- .../AppFixture.cs | 44 +++++++++++++++++-- .../IntegrationTest.cs | 8 ++++ ...o.Template.Backend.IntegrationTests.csproj | 15 ++++++- .../Tests/CompaniesTests.cs | 2 + .../Tests/CountriesTests.cs | 2 + .../Tests/FilesTests.cs | 4 +- .../Tests/ProductsTests.cs | 8 ++++ ...OnProductCreatedThenLongRunningProcess.cs} | 4 +- .../Monaco.Template.Backend.Service.csproj | 2 +- .../Program.cs | 11 ++--- .../Solution/Monaco.Template.Backend.sln | 6 +++ 20 files changed, 156 insertions(+), 46 deletions(-) rename src/Content/Backend/Solution/Monaco.Template.Backend.Service/Consumers/{ProductCreatedConsumer.cs => OnProductCreatedThenLongRunningProcess.cs} (81%) diff --git a/src/Content/Backend/Solution/.template.config/template.json b/src/Content/Backend/Solution/.template.config/template.json index ea3e829..5d5600d 100644 --- a/src/Content/Backend/Solution/.template.config/template.json +++ b/src/Content/Backend/Solution/.template.config/template.json @@ -191,7 +191,11 @@ { "condition": "(!auth)", "exclude": [ - "Monaco.Template.Backend.Api/Auth/**/*" + "Monaco.Template.Backend.Api/Auth/**/*", + "Monaco.Template.Backend.IntegrationTests/Imports/Keycloak/**/*", + "Monaco.Template.Backend.IntegrationTests/AccessTokenDto.cs", + "Monaco.Template.Backend.IntegrationTests/Auth.cs", + "Monaco.Template.Backend.IntegrationTests/KeycloakService.cs" ] }, { @@ -240,6 +244,10 @@ "Monaco.Template.Backend.Domain.Tests/ImageDimensionsTests.cs", "Monaco.Template.Backend.Domain.Tests/ImageTests.cs", "Monaco.Template.Backend.Domain.Tests/ProductTests.cs", + "Monaco.Template.Backend.IntegrationTests/Imports/Pictures/**/*", + "Monaco.Template.Backend.IntegrationTests/Scripts/Products.sql", + "Monaco.Template.Backend.IntegrationTests/Tests/FilesTests.cs", + "Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs", "Monaco.Template.Backend.Messages/V1/ProductCreated.cs", "Monaco.Template.Backend.Service/Consumers/ProductCreatedConsumer.cs" ] @@ -260,13 +268,14 @@ { "condition": "(!massTransitIntegration || !workerService)", "exclude": [ - "Monaco.Template.Backend.Application/Features/Product/LongRunningProcessCommand.cs" + "Monaco.Template.Backend.Application/Features/Product/LongRunningProcess.cs" ] }, { "condition": "(!tests)", "exclude": [ - "Monaco.Template.Backend.*.Tests/**/*" + "Monaco.Template.Backend.*.Tests/**/*", + "Monaco.Template.Backend.*Tests/**/*" ] }, { diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Api/Monaco.Template.Backend.Api.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Api/Monaco.Template.Backend.Api.csproj index 5fccfc3..2f2499a 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Api/Monaco.Template.Backend.Api.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Api/Monaco.Template.Backend.Api.csproj @@ -17,7 +17,7 @@ - $(DefineConstants);auth;commonLibraries;filesSupport + $(DefineConstants);auth;commonLibraries;filesSupport;massTransitIntegration diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Api/Program.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.Api/Program.cs index 9b79bd4..95b8ed3 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Api/Program.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Api/Program.cs @@ -71,18 +71,16 @@ #if (massTransitIntegration) .AddMassTransit(cfg => { - if (builder.Environment.IsDevelopment()) - cfg.UsingRabbitMq((_, busCfg) => - { - var rabbitMqConfig = configuration.GetSection("MessageBus:RabbitMQ"); - busCfg.Host(rabbitMqConfig["Host"], - rabbitMqConfig["VHost"], - h => - { - h.Username(rabbitMqConfig["Username"]); - h.Password(rabbitMqConfig["Password"]); - }); - }); + var rabbitMqConfig = configuration.GetSection("MessageBus:RabbitMQ"); + if (rabbitMqConfig.Exists()) + cfg.UsingRabbitMq((_, busCfg) => busCfg.Host(rabbitMqConfig["Host"], + ushort.Parse(rabbitMqConfig["Port"] ?? "5672"), + rabbitMqConfig["VHost"], + h => + { + h.Username(rabbitMqConfig["Username"]!); + h.Password(rabbitMqConfig["Password"]!); + })); else cfg.UsingAzureServiceBus((_, busCfg) => busCfg.Host(configuration["MessageBus:ASBConnectionString"])); }) diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Application.Infrastructure/Monaco.Template.Backend.Application.Infrastructure.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Application.Infrastructure/Monaco.Template.Backend.Application.Infrastructure.csproj index 48f88b3..a944570 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Application.Infrastructure/Monaco.Template.Backend.Application.Infrastructure.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Application.Infrastructure/Monaco.Template.Backend.Application.Infrastructure.csproj @@ -8,7 +8,7 @@ - $(DefineConstants);auth;commonLibraries;filesSupport + $(DefineConstants);auth;commonLibraries;filesSupport;massTransitIntegration diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Application.Tests/Monaco.Template.Backend.Application.Tests.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Application.Tests/Monaco.Template.Backend.Application.Tests.csproj index 6be7a8b..422783a 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Application.Tests/Monaco.Template.Backend.Application.Tests.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Application.Tests/Monaco.Template.Backend.Application.Tests.csproj @@ -9,7 +9,7 @@ - $(DefineConstants);auth;commonLibraries;filesSupport + $(DefineConstants);auth;commonLibraries;filesSupport;massTransitIntegration diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Application/Monaco.Template.Backend.Application.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Application/Monaco.Template.Backend.Application.csproj index 71cb360..c83fa31 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Application/Monaco.Template.Backend.Application.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Application/Monaco.Template.Backend.Application.csproj @@ -12,7 +12,7 @@ - $(DefineConstants);auth;commonLibraries;filesSupport + $(DefineConstants);auth;commonLibraries;filesSupport;massTransitIntegration diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Domain/Model/Page.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Domain/Model/Page.cs index 5a2f27c..3e4479d 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Domain/Model/Page.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Domain/Model/Page.cs @@ -8,11 +8,15 @@ public record Page /// Record from where to start paging /// Amount of items to page /// Total amount of items - public Page(IEnumerable items, int offset, int limit, long count) - { - Items = items.ToList(); - Pager = new Pager(offset, limit, count); - } + public Page(IEnumerable items, + int offset, + int limit, + long count) + : this(items, + new Pager(offset, + limit, + count)) + { } public Page(IEnumerable items, Pager pager) { diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/ApiRoutes.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/ApiRoutes.cs index e5007ce..aa0aff8 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/ApiRoutes.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/ApiRoutes.cs @@ -18,14 +18,10 @@ private static Url Expand(this Url url, : url; private static Url Offset(this Url url, int? offset = null) => - offset.HasValue - ? url.SetQueryParam(OffsetParamName, offset.Value) - : url; + url.SetQueryParam(OffsetParamName, offset); private static Url Limit(this Url url, int? limit = null) => - limit.HasValue - ? url.SetQueryParam(LimitParamName, limit.Value) - : url; + url.SetQueryParam(LimitParamName, limit); public static class Companies @@ -51,6 +47,7 @@ public static class Countries public static Url Query() => Controller; public static Url Get(Guid id) => Controller.AppendPathSegment(id); } +#if (filesSupport) public static class Files { @@ -86,4 +83,5 @@ public static Url DownloadPicture(Guid productId, Guid pictureId, bool? isThumbn public static string Put(Guid id) => Get(id); public static string Delete(Guid id) => Get(id); } +#endif } \ No newline at end of file diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/ApiWebApplicationFactory.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/ApiWebApplicationFactory.cs index ef162e5..7a282fd 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/ApiWebApplicationFactory.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/ApiWebApplicationFactory.cs @@ -8,23 +8,37 @@ namespace Monaco.Template.Backend.IntegrationTests; public class ApiWebApplicationFactory : WebApplicationFactory { public readonly string SqlConnectionString; +#if (massTransitIntegration) public readonly Url RabbitMqHost; + public readonly int RabbitMqPort; public readonly string RabbitMqUsername; public readonly string RabbitMqPassword; +#endif +#if (filesSupport) public readonly Url StorageConnectionString; +#endif +#if (auth) public readonly Url KeycloakRealmUrl; +#endif public ApiWebApplicationFactory(AppFixture fixture) { SqlConnectionString = fixture.SqlContainer.GetConnectionString(); +#if (massTransitIntegration) Url rabbitMqConnString = fixture.RabbitMqContainer.GetConnectionString(); RabbitMqUsername = rabbitMqConnString.UserInfo.Split(':').First(); RabbitMqPassword = rabbitMqConnString.UserInfo.Split(':').Last(); - RabbitMqHost = rabbitMqConnString.Root.Replace($"{rabbitMqConnString.UserInfo}@", string.Empty); + RabbitMqHost = rabbitMqConnString.Host; + RabbitMqPort = rabbitMqConnString.Port!.Value; +#endif +#if (filesSupport) StorageConnectionString = fixture.AzuriteContainer.GetConnectionString(); +#endif +#if (auth) KeycloakRealmUrl = fixture.KeycloakContainer .GetBaseAddress() .AppendPathSegments("realms", AppFixture.KeycloakRealm); +#endif } protected override void ConfigureWebHost(IWebHostBuilder builder) @@ -32,11 +46,18 @@ protected override void ConfigureWebHost(IWebHostBuilder builder) builder.UseConfiguration(new ConfigurationManager { ["ConnectionStrings:AppDbContext"] = SqlConnectionString, + #if (auth) ["SSO:Authority"] = KeycloakRealmUrl, + #endif + #if (filesSupport) ["BlobStorage:ConnectionString"] = StorageConnectionString, - ["MessageBus:RabbitMQ:Host"] = RabbitMqHost, - ["MessageBus:RabbitMQ:User"] = RabbitMqUsername, + #endif + #if (massTransitIntegration) + ["MessageBus:RabbitMQ:Host"] = RabbitMqHost, + ["MessageBus:RabbitMQ:Port"] = RabbitMqPort.ToString(), + ["MessageBus:RabbitMQ:Username"] = RabbitMqUsername, ["MessageBus:RabbitMQ:Password"] = RabbitMqPassword + #endif }) .UseSetting("https_port", "8080"); } diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/AppFixture.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/AppFixture.cs index ee8bbfa..f587b10 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/AppFixture.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/AppFixture.cs @@ -1,56 +1,94 @@ -using Azure.Storage.Blobs; +#if (filesSupport) +using Azure.Storage.Blobs; using Testcontainers.Azurite; +#endif +#if (auth) using Testcontainers.Keycloak; +#endif using Testcontainers.MsSql; +#if (massTransitIntegration) using Testcontainers.RabbitMq; +#endif namespace Monaco.Template.Backend.IntegrationTests; public class AppFixture : IAsyncLifetime { +#if (massTransitIntegration) public const string RabbitMqVHost = "monaco"; +#endif +#if (filesSupport) public const string StorageContainer = "files-store"; +#endif +#if (auth) public const string KeycloakRealm = "monaco-template"; public const string KeycloakRealmUsername = "admin@admin.com"; public const string KeycloakRealmPassword = "admin"; +#endif public MsSqlContainer SqlContainer = new MsSqlBuilder().Build(); +#if (massTransitIntegration) public RabbitMqContainer RabbitMqContainer = new RabbitMqBuilder().WithEnvironment("RABBITMQ_DEFAULT_VHOST", RabbitMqVHost) .Build(); +#endif +#if (filesSupport) public AzuriteContainer AzuriteContainer = new AzuriteBuilder().WithCommand("--skipApiVersionCheck") .Build(); +#endif +#if (auth) public KeycloakContainer KeycloakContainer = new KeycloakBuilder().WithImage("quay.io/keycloak/keycloak:25.0.6") .WithResourceMapping(new FileInfo("./Imports/Keycloak/realm-export-template.json"), new FileInfo("/opt/keycloak/data/import/realm-export-template.json")) .WithCommand("--import-realm") .Build(); - +#endif + public async Task InitializeAsync() { - await KeycloakContainer.StartAsync(); await SqlContainer.StartAsync(); +#if (auth) + await KeycloakContainer.StartAsync(); +#endif +#if (massTransitIntegration) await RabbitMqContainer.StartAsync(); +#endif +#if (filesSupport) await AzuriteContainer.StartAsync(); await InitStorage(); +#endif } public async Task DisposeAsync() { await SqlContainer.StopAsync(); +#if (massTransitIntegration) await RabbitMqContainer.StopAsync(); +#endif +#if (filesSupport) await AzuriteContainer.StopAsync(); +#endif +#if (auth) await KeycloakContainer.StopAsync(); +#endif await SqlContainer.DisposeAsync(); +#if (massTransitIntegration) await RabbitMqContainer.DisposeAsync(); +#endif +#if (filesSupport) await AzuriteContainer.DisposeAsync(); +#endif +#if (auth) await KeycloakContainer.DisposeAsync(); +#endif } +#if (filesSupport) private async Task InitStorage() { await new BlobContainerClient(AzuriteContainer.GetConnectionString(), StorageContainer) .CreateAsync(); } +#endif } \ No newline at end of file diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/IntegrationTest.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/IntegrationTest.cs index 0f64409..81fc0bf 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/IntegrationTest.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/IntegrationTest.cs @@ -16,9 +16,11 @@ public abstract class IntegrationTest : IClassFixture, IAsyncLifetim protected readonly AppFixture Fixture; protected ApiWebApplicationFactory WebAppFactory; protected IFlurlClient Client; +#if (auth) protected readonly bool RequiresAuthentication; protected KeycloakService KeycloakService; protected AccessTokenDto? AccessToken; +#endif protected IntegrationTest(AppFixture fixture, bool requiresAuthentication) { @@ -30,6 +32,7 @@ protected IntegrationTest(AppFixture fixture, bool requiresAuthentication) AllowAutoRedirect = false }; +#if (auth) Client = new FlurlClient(WebAppFactory.CreateClient(clientOptions)).AllowAnyHttpStatus() .BeforeCall(call => { @@ -42,6 +45,9 @@ protected IntegrationTest(AppFixture fixture, bool requiresAuthentication) AppFixture.KeycloakRealm, AppFixture.KeycloakRealmUsername, AppFixture.KeycloakRealmPassword); +#else + Client = new FlurlClient(WebAppFactory.CreateClient(clientOptions)).AllowAnyHttpStatus(); +#endif } protected IFlurlRequest CreateRequest(string endpoint) => Client.Request(endpoint); @@ -51,6 +57,7 @@ public virtual async Task InitializeAsync() await ApplyDbMigrations(); } +#if (auth) protected virtual async Task SetupAccessToken(string audienceClientId, string[] roles, string[] scopes) @@ -67,6 +74,7 @@ protected virtual Task SetupAccessToken(string[] roles) => roles, Auth.Scopes); +#endif protected virtual AppDbContext GetDbContext() => WebAppFactory.Services .CreateScope() diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Monaco.Template.Backend.IntegrationTests.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Monaco.Template.Backend.IntegrationTests.csproj index 53644db..083c1bc 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Monaco.Template.Backend.IntegrationTests.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Monaco.Template.Backend.IntegrationTests.csproj @@ -4,23 +4,36 @@ net8.0 enable enable - false true + + + $(DefineConstants);auth;commonLibraries;filesSupport;massTransitIntegration + + + + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/CompaniesTests.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/CompaniesTests.cs index 163033b..a24be9f 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/CompaniesTests.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/CompaniesTests.cs @@ -23,8 +23,10 @@ public override async Task InitializeAsync() { await base.InitializeAsync(); await RunScriptAsync(@"Scripts\Companies.sql"); +#if (auth) await SetupAccessToken([Auth.Roles.Administrator]); +#endif } [Theory(DisplayName = "Get Companies page succeeds")] diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/CountriesTests.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/CountriesTests.cs index af92a88..796a4dd 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/CountriesTests.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/CountriesTests.cs @@ -18,8 +18,10 @@ public CountriesTests(AppFixture fixture) : base(fixture, true) public override async Task InitializeAsync() { await base.InitializeAsync(); +#if (auth) await SetupAccessToken([]); +#endif } [Fact(DisplayName = "Get Countries succeeds")] diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/FilesTests.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/FilesTests.cs index cd5fe00..7a1e2ba 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/FilesTests.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/FilesTests.cs @@ -18,8 +18,10 @@ public FilesTests(AppFixture fixture) : base(fixture, true) public override async Task InitializeAsync() { await base.InitializeAsync(); - +#if (auth) + await SetupAccessToken([Auth.Roles.Administrator]); +#endif } [Fact(DisplayName = "Upload File succeeds")] diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs index 1d95583..a33de77 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs @@ -36,9 +36,11 @@ public override async Task InitializeAsync() await blobClient.UploadAsync(File.OpenRead(@$"Imports\Pictures\{image.Name}{image.Extension}")); } } +#if (auth) private Task SetupAccessToken() => SetupAccessToken([Auth.Roles.Administrator]); +#endif private BlobContainerClient GetBlobContainerClient() => new(WebAppFactory.StorageConnectionString, @@ -247,7 +249,9 @@ public async Task CreateNewCompanySucceeds(string title, string description, decimal price) { +#if (auth) await SetupAccessToken(); +#endif var dbContext = GetDbContext(); var tempImages = await dbContext.Set() .Where(i => i.IsTemp && i.ThumbnailId.HasValue) @@ -327,7 +331,9 @@ public async Task EditExistingProductSucceeds(string title, string description, decimal price) { +#if (auth) await SetupAccessToken(); +#endif var dbContext = GetDbContext(); var productId = Guid.Parse("FA934D1C-1E6D-4DD4-ADC2-08DC18C8810C"); var productPictures = await dbContext.Set() @@ -416,7 +422,9 @@ public async Task EditExistingProductSucceeds(string title, [Fact(DisplayName = "Delete existing Product succeeds")] public async Task DeleteExistingProductSucceeds() { +#if (auth) await SetupAccessToken(); +#endif var productId = Guid.Parse("FA934D1C-1E6D-4DD4-ADC2-08DC18C8810C"); var response = await CreateRequest(ApiRoutes.Products.Delete(productId)).DeleteAsync(); diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Service/Consumers/ProductCreatedConsumer.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.Service/Consumers/OnProductCreatedThenLongRunningProcess.cs similarity index 81% rename from src/Content/Backend/Solution/Monaco.Template.Backend.Service/Consumers/ProductCreatedConsumer.cs rename to src/Content/Backend/Solution/Monaco.Template.Backend.Service/Consumers/OnProductCreatedThenLongRunningProcess.cs index 507a432..5801975 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Service/Consumers/ProductCreatedConsumer.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Service/Consumers/OnProductCreatedThenLongRunningProcess.cs @@ -5,11 +5,11 @@ namespace Monaco.Template.Backend.Service.Consumers; -public class ProductCreatedConsumer : IConsumer +public class OnProductCreatedThenLongRunningProcess : IConsumer { private readonly ISender _sender; - public ProductCreatedConsumer(ISender sender) + public OnProductCreatedThenLongRunningProcess(ISender sender) { _sender = sender; } diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Service/Monaco.Template.Backend.Service.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Service/Monaco.Template.Backend.Service.csproj index 395d446..a4b0806 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Service/Monaco.Template.Backend.Service.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Service/Monaco.Template.Backend.Service.csproj @@ -12,7 +12,7 @@ - $(DefineConstants);auth;commonLibraries;filesSupport + $(DefineConstants);auth;commonLibraries;filesSupport;massTransitIntegration diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Service/Program.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.Service/Program.cs index 04b8f95..2e08d21 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Service/Program.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Service/Program.cs @@ -25,17 +25,18 @@ { cfg.AddConsumersFromNamespaceContaining(); cfg.AddActivitiesFromNamespaceContaining(); - - if (builder.Environment.IsDevelopment()) //Only configure RabbitMQ connection if it's running in Development (local) env + + var rabbitMqConfig = configuration.GetSection("MessageBus:RabbitMQ"); + if (rabbitMqConfig.Exists()) cfg.UsingRabbitMq((ctx, busCfg) => { - var rabbitMqConfig = configuration.GetSection("MessageBus:RabbitMQ"); busCfg.Host(rabbitMqConfig["Host"], + ushort.Parse(rabbitMqConfig["Port"] ?? "5672"), rabbitMqConfig["VHost"], h => { - h.Username(rabbitMqConfig["Username"]); - h.Password(rabbitMqConfig["Password"]); + h.Username(rabbitMqConfig["Username"]!); + h.Password(rabbitMqConfig["Password"]!); }); busCfg.ConfigureEndpoints(ctx, new DefaultEndpointNameFormatter(true)); diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.sln b/src/Content/Backend/Solution/Monaco.Template.Backend.sln index 9b4e92d..9228e25 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.sln +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.sln @@ -94,10 +94,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution EndProjectSection EndProject #endif +#if (tests) Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Monaco.Template.Backend.ArchitectureTests", "Monaco.Template.Backend.ArchitectureTests\Monaco.Template.Backend.ArchitectureTests.csproj", "{60C8C40D-9BB1-491E-B364-8B22F668408A}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Monaco.Template.Backend.IntegrationTests", "Monaco.Template.Backend.IntegrationTests\Monaco.Template.Backend.IntegrationTests.csproj", "{2624756F-BBBB-4317-A3DF-B5F683700661}" EndProject +#endif Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -208,6 +210,7 @@ Global {CCAA345B-EDE0-441F-8D19-DDAFE52EFB9D}.Release|Any CPU.ActiveCfg = Release|Any CPU {CCAA345B-EDE0-441F-8D19-DDAFE52EFB9D}.Release|Any CPU.Build.0 = Release|Any CPU #endif + #if (tests) {60C8C40D-9BB1-491E-B364-8B22F668408A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {60C8C40D-9BB1-491E-B364-8B22F668408A}.Debug|Any CPU.Build.0 = Debug|Any CPU {60C8C40D-9BB1-491E-B364-8B22F668408A}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -216,6 +219,7 @@ Global {2624756F-BBBB-4317-A3DF-B5F683700661}.Debug|Any CPU.Build.0 = Debug|Any CPU {2624756F-BBBB-4317-A3DF-B5F683700661}.Release|Any CPU.ActiveCfg = Release|Any CPU {2624756F-BBBB-4317-A3DF-B5F683700661}.Release|Any CPU.Build.0 = Release|Any CPU + #endif EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -253,8 +257,10 @@ Global {D8623B90-59C1-4753-A0E6-F2DBD4305C9B} = {35484293-234F-40DA-B430-A95170EDE449} #endif #endif + #if (tests) {60C8C40D-9BB1-491E-B364-8B22F668408A} = {920A23AF-59DA-4453-B825-0549B1C04F5B} {2624756F-BBBB-4317-A3DF-B5F683700661} = {920A23AF-59DA-4453-B825-0549B1C04F5B} + #endif EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {42C5F44E-1221-43DF-A6F5-4CB2CBEF8D72} From 02f394b361e991dac1bf7acd112808d385d0d1b7 Mon Sep 17 00:00:00 2001 From: CesarD Date: Sun, 9 Feb 2025 19:23:43 +0100 Subject: [PATCH 5/9] Added WorkerServiceFactory for generating instances of WorkerServices. Implemented MassTransit's Test Harness for testing messaging integration. Some refactoring to improve structure and optimize some more things around. Updated dependencies within .NET 8 versions. --- .../Solution/.template.config/template.json | 38 +++++--- .../Monaco.Template.Backend.Api.csproj | 4 +- ....Template.Backend.Application.Tests.csproj | 8 +- ...Monaco.Template.Backend.Application.csproj | 8 +- ....Template.Backend.ArchitectureTests.csproj | 12 +-- .../Monaco.Template.Backend.Common.Api.csproj | 2 +- ...Template.Backend.Common.Application.csproj | 6 +- ...te.Backend.Common.BlobStorage.Tests.csproj | 10 +-- ...Template.Backend.Common.BlobStorage.csproj | 2 +- ...emplate.Backend.Common.Domain.Tests.csproj | 10 +-- ...plate.Backend.Common.Infrastructure.csproj | 4 +- ...onaco.Template.Backend.Common.Tests.csproj | 2 +- ...onaco.Template.Backend.Domain.Tests.csproj | 8 +- .../ApiWebApplicationFactory.cs | 64 -------------- .../AppFixture.cs | 36 ++++++++ .../{ => Auth}/AccessTokenDto.cs | 2 +- .../{ => Auth}/Auth.cs | 2 +- .../{ => Auth}/KeycloakService.cs | 23 +++-- .../Factories/ApiWebApplicationFactory.cs | 53 ++++++++++++ .../Factories/WorkerServiceFactory.cs | 59 +++++++++++++ .../IntegrationTest.cs | 86 +++++++++++++++---- ...o.Template.Backend.IntegrationTests.csproj | 24 +++--- .../Tests/CompaniesTests.cs | 10 ++- .../Tests/CountriesTests.cs | 8 +- .../Tests/FilesTests.cs | 10 ++- .../Tests/ProductsTests.cs | 44 +++++++--- .../Monaco.Template.Backend.Service.csproj | 4 +- .../Program.cs | 8 +- 28 files changed, 371 insertions(+), 176 deletions(-) delete mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/ApiWebApplicationFactory.cs rename src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/{ => Auth}/AccessTokenDto.cs (70%) rename src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/{ => Auth}/Auth.cs (86%) rename src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/{ => Auth}/KeycloakService.cs (79%) create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Factories/ApiWebApplicationFactory.cs create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Factories/WorkerServiceFactory.cs diff --git a/src/Content/Backend/Solution/.template.config/template.json b/src/Content/Backend/Solution/.template.config/template.json index 5d5600d..8ff2de3 100644 --- a/src/Content/Backend/Solution/.template.config/template.json +++ b/src/Content/Backend/Solution/.template.config/template.json @@ -57,7 +57,7 @@ "keycloakConfig": { "type": "parameter", "datatype": "bool", - "defaultValue": "false", + "defaultValue": "true", "displayName": "Include Keycloak realm configuration", "description": "Include Keycloak JSON configuration file for generating new realm" }, @@ -73,7 +73,7 @@ "massTransitIntegration": { "type": "parameter", "datatype": "bool", - "defaultValue": "false", + "defaultValue": "true", "displayName": "Include MassTransit integration", "description": "Includes MassTransit for integration events" }, @@ -87,7 +87,7 @@ "workerService": { "type": "parameter", "datatype": "bool", - "defaultValue": "false", + "defaultValue": "true", "displayName": "Include Worker Service", "description": "Include Worker Service project for background service implementation" }, @@ -185,17 +185,26 @@ "condition": "(!apiService)", "exclude": [ "Monaco.Template.Backend.Api/**/*", - "Monaco.Template.Backend.*.Api*/**/*" + "Monaco.Template.Backend.*.Api*/**/*", + "Monaco.Template.Backend.IntegrationTests/ApiRoutes.cs", + "Monaco.Template.Backend.IntegrationTests/Factories/ApiWebApplicationFactory.cs", + "Monaco.Template.Backend.IntegrationTests/Tests/CompaniesTests.cs", + "Monaco.Template.Backend.IntegrationTests/Tests/CountriesTests.cs", + "Monaco.Template.Backend.IntegrationTests/Tests/FilesTests.cs", + "Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs", + "Monaco.Template.Backend.IntegrationTests/Scripts/Companies.sql", + "Monaco.Template.Backend.IntegrationTests/Scripts/Products.sql", + "Monaco.Template.Backend.IntegrationTests/Imports/Pictures/**/*" ] }, { - "condition": "(!auth)", + "condition": "(!apiService || !auth)", "exclude": [ "Monaco.Template.Backend.Api/Auth/**/*", - "Monaco.Template.Backend.IntegrationTests/Imports/Keycloak/**/*", - "Monaco.Template.Backend.IntegrationTests/AccessTokenDto.cs", - "Monaco.Template.Backend.IntegrationTests/Auth.cs", - "Monaco.Template.Backend.IntegrationTests/KeycloakService.cs" + "Monaco.Template.Backend.IntegrationTests/Auth/AccessTokenDto.cs", + "Monaco.Template.Backend.IntegrationTests/Auth/Auth.cs", + "Monaco.Template.Backend.IntegrationTests/Auth/KeycloakService.cs", + "Monaco.Template.Backend.IntegrationTests/Imports/Keycloak/**/*" ] }, { @@ -249,7 +258,7 @@ "Monaco.Template.Backend.IntegrationTests/Tests/FilesTests.cs", "Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs", "Monaco.Template.Backend.Messages/V1/ProductCreated.cs", - "Monaco.Template.Backend.Service/Consumers/ProductCreatedConsumer.cs" + "Monaco.Template.Backend.Service/Consumers/OnProductCreatedThenLongRunningProcess.cs" ] }, { @@ -281,7 +290,14 @@ { "condition": "(!workerService)", "exclude": [ - "Monaco.Template.Backend.Service/**/*" + "Monaco.Template.Backend.Service/**/*", + "Monaco.Template.Backend.IntegrationTests/Factories/WorkerServiceFactory.cs" + ] + }, + { + "condition": "(!apiService && !workerService)", + "exclude": [ + "Monaco.Template.Backend.Backend.IntegrationTests/**/*" ] } ] diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Api/Monaco.Template.Backend.Api.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Api/Monaco.Template.Backend.Api.csproj index 2f2499a..a49b384 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Api/Monaco.Template.Backend.Api.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Api/Monaco.Template.Backend.Api.csproj @@ -24,8 +24,8 @@ - - + + all diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Application.Tests/Monaco.Template.Backend.Application.Tests.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Application.Tests/Monaco.Template.Backend.Application.Tests.csproj index 422783a..65d3bc0 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Application.Tests/Monaco.Template.Backend.Application.Tests.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Application.Tests/Monaco.Template.Backend.Application.Tests.csproj @@ -14,14 +14,14 @@ - + - - + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Application/Monaco.Template.Backend.Application.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Application/Monaco.Template.Backend.Application.csproj index c83fa31..6bcaf73 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Application/Monaco.Template.Backend.Application.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Application/Monaco.Template.Backend.Application.csproj @@ -29,13 +29,13 @@ - + - + - - + + \ No newline at end of file diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.ArchitectureTests/Monaco.Template.Backend.ArchitectureTests.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.ArchitectureTests/Monaco.Template.Backend.ArchitectureTests.csproj index 2814424..f80d472 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.ArchitectureTests/Monaco.Template.Backend.ArchitectureTests.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.ArchitectureTests/Monaco.Template.Backend.ArchitectureTests.csproj @@ -10,15 +10,15 @@ - - - - - + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Api/Monaco.Template.Backend.Common.Api.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Api/Monaco.Template.Backend.Common.Api.csproj index a27e060..bc1cad2 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Api/Monaco.Template.Backend.Common.Api.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Api/Monaco.Template.Backend.Common.Api.csproj @@ -23,7 +23,7 @@ - + diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Application/Monaco.Template.Backend.Common.Application.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Application/Monaco.Template.Backend.Common.Application.csproj index 2c0b7a8..f53fa38 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Application/Monaco.Template.Backend.Common.Application.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Application/Monaco.Template.Backend.Common.Application.csproj @@ -19,9 +19,9 @@ - - - + + + diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.BlobStorage.Tests/Monaco.Template.Backend.Common.BlobStorage.Tests.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.BlobStorage.Tests/Monaco.Template.Backend.Common.BlobStorage.Tests.csproj index 5bf7c75..6155f84 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.BlobStorage.Tests/Monaco.Template.Backend.Common.BlobStorage.Tests.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.BlobStorage.Tests/Monaco.Template.Backend.Common.BlobStorage.Tests.csproj @@ -8,15 +8,15 @@ - - + + - - + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.BlobStorage/Monaco.Template.Backend.Common.BlobStorage.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.BlobStorage/Monaco.Template.Backend.Common.BlobStorage.csproj index 410ab2e..1679491 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.BlobStorage/Monaco.Template.Backend.Common.BlobStorage.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.BlobStorage/Monaco.Template.Backend.Common.BlobStorage.csproj @@ -19,7 +19,7 @@ - + diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Domain.Tests/Monaco.Template.Backend.Common.Domain.Tests.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Domain.Tests/Monaco.Template.Backend.Common.Domain.Tests.csproj index 3b93587..92ff8d7 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Domain.Tests/Monaco.Template.Backend.Common.Domain.Tests.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Domain.Tests/Monaco.Template.Backend.Common.Domain.Tests.csproj @@ -10,15 +10,15 @@ - - + + - - + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Infrastructure/Monaco.Template.Backend.Common.Infrastructure.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Infrastructure/Monaco.Template.Backend.Common.Infrastructure.csproj index 98baee7..808aadd 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Infrastructure/Monaco.Template.Backend.Common.Infrastructure.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Infrastructure/Monaco.Template.Backend.Common.Infrastructure.csproj @@ -19,7 +19,7 @@ - + @@ -29,7 +29,7 @@ - + diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Tests/Monaco.Template.Backend.Common.Tests.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Tests/Monaco.Template.Backend.Common.Tests.csproj index c781c37..8f018c3 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Tests/Monaco.Template.Backend.Common.Tests.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Common.Tests/Monaco.Template.Backend.Common.Tests.csproj @@ -15,7 +15,7 @@ - + diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Domain.Tests/Monaco.Template.Backend.Domain.Tests.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Domain.Tests/Monaco.Template.Backend.Domain.Tests.csproj index 0729597..efe31e0 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Domain.Tests/Monaco.Template.Backend.Domain.Tests.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Domain.Tests/Monaco.Template.Backend.Domain.Tests.csproj @@ -14,13 +14,13 @@ - - - + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/ApiWebApplicationFactory.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/ApiWebApplicationFactory.cs deleted file mode 100644 index 7a282fd..0000000 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/ApiWebApplicationFactory.cs +++ /dev/null @@ -1,64 +0,0 @@ -using Flurl; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc.Testing; -using Microsoft.Extensions.Configuration; - -namespace Monaco.Template.Backend.IntegrationTests; - -public class ApiWebApplicationFactory : WebApplicationFactory -{ - public readonly string SqlConnectionString; -#if (massTransitIntegration) - public readonly Url RabbitMqHost; - public readonly int RabbitMqPort; - public readonly string RabbitMqUsername; - public readonly string RabbitMqPassword; -#endif -#if (filesSupport) - public readonly Url StorageConnectionString; -#endif -#if (auth) - public readonly Url KeycloakRealmUrl; -#endif - - public ApiWebApplicationFactory(AppFixture fixture) - { - SqlConnectionString = fixture.SqlContainer.GetConnectionString(); -#if (massTransitIntegration) - Url rabbitMqConnString = fixture.RabbitMqContainer.GetConnectionString(); - RabbitMqUsername = rabbitMqConnString.UserInfo.Split(':').First(); - RabbitMqPassword = rabbitMqConnString.UserInfo.Split(':').Last(); - RabbitMqHost = rabbitMqConnString.Host; - RabbitMqPort = rabbitMqConnString.Port!.Value; -#endif -#if (filesSupport) - StorageConnectionString = fixture.AzuriteContainer.GetConnectionString(); -#endif -#if (auth) - KeycloakRealmUrl = fixture.KeycloakContainer - .GetBaseAddress() - .AppendPathSegments("realms", AppFixture.KeycloakRealm); -#endif - } - - protected override void ConfigureWebHost(IWebHostBuilder builder) - { - builder.UseConfiguration(new ConfigurationManager - { - ["ConnectionStrings:AppDbContext"] = SqlConnectionString, - #if (auth) - ["SSO:Authority"] = KeycloakRealmUrl, - #endif - #if (filesSupport) - ["BlobStorage:ConnectionString"] = StorageConnectionString, - #endif - #if (massTransitIntegration) - ["MessageBus:RabbitMQ:Host"] = RabbitMqHost, - ["MessageBus:RabbitMQ:Port"] = RabbitMqPort.ToString(), - ["MessageBus:RabbitMQ:Username"] = RabbitMqUsername, - ["MessageBus:RabbitMQ:Password"] = RabbitMqPassword - #endif - }) - .UseSetting("https_port", "8080"); - } -} diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/AppFixture.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/AppFixture.cs index f587b10..cbcbf99 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/AppFixture.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/AppFixture.cs @@ -5,6 +5,7 @@ #if (auth) using Testcontainers.Keycloak; #endif +using Flurl; using Testcontainers.MsSql; #if (massTransitIntegration) using Testcontainers.RabbitMq; @@ -58,7 +59,42 @@ public async Task InitializeAsync() await InitStorage(); #endif } + + public string SqlConnectionString => + SqlContainer.GetConnectionString(); +#if (massTransitIntegration) + + public Url RabbitMqConnectionString => + RabbitMqContainer.GetConnectionString(); + + public string RabbitMqHost => + RabbitMqConnectionString.Host; + public int RabbitMqPort => + RabbitMqConnectionString.Port!.Value; + + public string RabbitMqUsername => + RabbitMqConnectionString.UserInfo + .Split(':') + .First(); + + public string RabbitMqPassword => + RabbitMqConnectionString.UserInfo + .Split(':') + .Last(); +#endif +#if (filesSupport) + + public Url StorageConnectionString => + AzuriteContainer.GetConnectionString(); +#endif +#if (auth) + + public Url KeycloakRealmUrl => + KeycloakContainer.GetBaseAddress() + .AppendPathSegments("realms", KeycloakRealm); +#endif + public async Task DisposeAsync() { await SqlContainer.StopAsync(); diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/AccessTokenDto.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Auth/AccessTokenDto.cs similarity index 70% rename from src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/AccessTokenDto.cs rename to src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Auth/AccessTokenDto.cs index 30dbde1..93a2202 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/AccessTokenDto.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Auth/AccessTokenDto.cs @@ -1,5 +1,5 @@ using System.Text.Json.Serialization; -namespace Monaco.Template.Backend.IntegrationTests; +namespace Monaco.Template.Backend.IntegrationTests.Auth; public record AccessTokenDto([property: JsonPropertyName("access_token")] string AccessToken); \ No newline at end of file diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Auth.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Auth/Auth.cs similarity index 86% rename from src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Auth.cs rename to src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Auth/Auth.cs index bc9ce29..a0cb176 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Auth.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Auth/Auth.cs @@ -1,4 +1,4 @@ -namespace Monaco.Template.Backend.IntegrationTests; +namespace Monaco.Template.Backend.IntegrationTests.Auth; internal static class Auth { diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/KeycloakService.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Auth/KeycloakService.cs similarity index 79% rename from src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/KeycloakService.cs rename to src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Auth/KeycloakService.cs index 643ac02..fb262a7 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/KeycloakService.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Auth/KeycloakService.cs @@ -3,7 +3,7 @@ using Keycloak.Net; using Keycloak.Net.Models.Clients; -namespace Monaco.Template.Backend.IntegrationTests; +namespace Monaco.Template.Backend.IntegrationTests.Auth; public class KeycloakService { @@ -30,15 +30,15 @@ public async Task CreateTestClient(string audienceClientId, string[] scopes) { var client = new Client - { - Name = "Test Client", - ClientId = Guid.NewGuid().ToString(), - Secret = Guid.NewGuid().ToString(), - ServiceAccountsEnabled = true, - StandardFlowEnabled = false, - AuthorizationServicesEnabled = false, - DefaultClientScopes = [audienceClientId, ..scopes] - }; + { + Name = "Test Client", + ClientId = Guid.NewGuid().ToString(), + Secret = Guid.NewGuid().ToString(), + ServiceAccountsEnabled = true, + StandardFlowEnabled = false, + AuthorizationServicesEnabled = false, + DefaultClientScopes = [audienceClientId, .. scopes] + }; await _kcClient.CreateClientAsync(_realm, client); client = (await GetClientByClientId(client.ClientId))!; @@ -50,8 +50,7 @@ public async Task CreateTestClient(string audienceClientId, await _kcClient.AddClientRoleMappingsToUserAsync(_realm, clientUser.Id, audienceClient.Id, - clientRoles.Where(r => roles.Contains(r.Name)) - .ToArray()); + [.. clientRoles.Where(r => roles.Contains(r.Name))]); return client; } diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Factories/ApiWebApplicationFactory.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Factories/ApiWebApplicationFactory.cs new file mode 100644 index 0000000..9f6205e --- /dev/null +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Factories/ApiWebApplicationFactory.cs @@ -0,0 +1,53 @@ +using MassTransit; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Mvc.Testing; +using Microsoft.Extensions.Configuration; + +namespace Monaco.Template.Backend.IntegrationTests.Factories; + +public sealed class ApiWebApplicationFactory : WebApplicationFactory +{ + private readonly AppFixture _fixture; + + public ApiWebApplicationFactory(AppFixture fixture) + { + _fixture = fixture; + } + + protected override void ConfigureWebHost(IWebHostBuilder builder) => + builder.UseConfiguration(new ConfigurationManager + { + ["ConnectionStrings:AppDbContext"] = _fixture.SqlConnectionString, +#if (auth) + ["SSO:Authority"] = _fixture.KeycloakRealmUrl, +#endif +#if (filesSupport) + ["BlobStorage:ConnectionString"] = _fixture.StorageConnectionString, +#endif +#if (massTransitIntegration) + ["MessageBus:RabbitMQ:Host"] = _fixture.RabbitMqHost, + ["MessageBus:RabbitMQ:Port"] = _fixture.RabbitMqPort.ToString(), + ["MessageBus:RabbitMQ:Username"] = _fixture.RabbitMqUsername, + ["MessageBus:RabbitMQ:Password"] = _fixture.RabbitMqPassword +#endif + }) + .UseSetting("https_port", "8080") + .ConfigureServices((context, services) => + { + var configuration = context.Configuration; + services.AddMassTransitTestHarness(cfg => + { + var rabbitMqConfig = configuration.GetSection("MessageBus:RabbitMQ"); + if (rabbitMqConfig.Exists()) + cfg.UsingRabbitMq((_, busCfg) => busCfg.Host(rabbitMqConfig["Host"], + ushort.Parse(rabbitMqConfig["Port"] ?? "5672"), + rabbitMqConfig["VHost"], + h => + { + h.Username(rabbitMqConfig["Username"]!); + h.Password(rabbitMqConfig["Password"]!); + })); + }); + }); + +} diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Factories/WorkerServiceFactory.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Factories/WorkerServiceFactory.cs new file mode 100644 index 0000000..b57e7c7 --- /dev/null +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Factories/WorkerServiceFactory.cs @@ -0,0 +1,59 @@ +using MassTransit; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Mvc.Testing; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; + +namespace Monaco.Template.Backend.IntegrationTests.Factories; + +public class WorkerServiceFactory : WebApplicationFactory +{ + private readonly AppFixture _fixture; + + public WorkerServiceFactory(AppFixture fixture) + { + _fixture = fixture; + } + + protected override void ConfigureWebHost(IWebHostBuilder builder) => + builder.UseConfiguration(new ConfigurationManager + { + ["ConnectionStrings:AppDbContext"] = _fixture.SqlConnectionString, +#if (filesSupport) + ["BlobStorage:ConnectionString"] = _fixture.StorageConnectionString, +#endif +#if (massTransitIntegration) + ["MessageBus:RabbitMQ:Host"] = _fixture.RabbitMqHost, + ["MessageBus:RabbitMQ:Port"] = _fixture.RabbitMqPort.ToString(), + ["MessageBus:RabbitMQ:Username"] = _fixture.RabbitMqUsername, + ["MessageBus:RabbitMQ:Password"] = _fixture.RabbitMqPassword +#endif + }) + .ConfigureServices((context, services) => + { + var configuration = context.Configuration; + services.AddMassTransitTestHarness(cfg => + { + var rabbitMqConfig = configuration.GetSection("MessageBus:RabbitMQ"); + if (rabbitMqConfig.Exists()) + cfg.UsingRabbitMq((ctx, busCfg) => + { + busCfg.Host(rabbitMqConfig["Host"], + ushort.Parse(rabbitMqConfig["Port"] ?? "5672"), + rabbitMqConfig["VHost"], + h => + { + h.Username(rabbitMqConfig["Username"]!); + h.Password(rabbitMqConfig["Password"]!); + }); + + busCfg.ConfigureEndpoints(ctx, new DefaultEndpointNameFormatter(true)); + }); + }); + }) + .Configure(_ => { }); + + public IHost GetHostInstance() => + Services.GetRequiredService(); +} \ No newline at end of file diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/IntegrationTest.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/IntegrationTest.cs index 81fc0bf..961006f 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/IntegrationTest.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/IntegrationTest.cs @@ -4,8 +4,16 @@ using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.Extensions.DependencyInjection; +#if (workerService) +using Microsoft.Extensions.Hosting; +#endif using Monaco.Template.Backend.Application.Infrastructure.Context; using System.Diagnostics.CodeAnalysis; +using MassTransit.Testing; +using Monaco.Template.Backend.IntegrationTests.Factories; +#if (apiService && auth) +using Monaco.Template.Backend.IntegrationTests.Auth; +#endif namespace Monaco.Template.Backend.IntegrationTests; @@ -14,50 +22,71 @@ namespace Monaco.Template.Backend.IntegrationTests; public abstract class IntegrationTest : IClassFixture, IAsyncLifetime { protected readonly AppFixture Fixture; +#if (apiService) protected ApiWebApplicationFactory WebAppFactory; protected IFlurlClient Client; -#if (auth) - protected readonly bool RequiresAuthentication; - protected KeycloakService KeycloakService; +#endif +#if (workerService) + protected WorkerServiceFactory WorkerServiceFactory; + protected IHost WorkerServiceInstance; +#endif +#if (apiService && auth) + protected KeycloakService? KeycloakService; protected AccessTokenDto? AccessToken; + + protected abstract bool RequiresAuthentication { get; } #endif - - protected IntegrationTest(AppFixture fixture, bool requiresAuthentication) + + protected IntegrationTest(AppFixture fixture) { Fixture = fixture; +#if (apiService) WebAppFactory = new ApiWebApplicationFactory(Fixture); +#endif +#if (workerService) + WorkerServiceFactory = new WorkerServiceFactory(Fixture); +#endif +#if (apiService) var clientOptions = new WebApplicationFactoryClientOptions { AllowAutoRedirect = false }; + Client = new FlurlClient(WebAppFactory.CreateClient(clientOptions)) #if (auth) - Client = new FlurlClient(WebAppFactory.CreateClient(clientOptions)).AllowAnyHttpStatus() - .BeforeCall(call => - { - if (AccessToken is not null) - call.Request.WithOAuthBearerToken(AccessToken.AccessToken); - }); - RequiresAuthentication = requiresAuthentication; + .AllowAnyHttpStatus() + .BeforeCall(call => + { + if (AccessToken is not null) + call.Request.WithOAuthBearerToken(AccessToken.AccessToken); + }); + if (RequiresAuthentication) KeycloakService = new KeycloakService(Fixture.KeycloakContainer.GetBaseAddress(), AppFixture.KeycloakRealm, AppFixture.KeycloakRealmUsername, AppFixture.KeycloakRealmPassword); #else - Client = new FlurlClient(WebAppFactory.CreateClient(clientOptions)).AllowAnyHttpStatus(); + .AllowAnyHttpStatus(); + +#endif +#endif +#if (workerService) + WorkerServiceInstance = WorkerServiceFactory.GetHostInstance(); #endif } +#if (apiService) protected IFlurlRequest CreateRequest(string endpoint) => Client.Request(endpoint); +#endif public virtual async Task InitializeAsync() { await ApplyDbMigrations(); } -#if (auth) +#if (apiService && auth) protected virtual async Task SetupAccessToken(string audienceClientId, string[] roles, string[] scopes) @@ -65,18 +94,22 @@ protected virtual async Task SetupAccessToken(string audienceClientId, if (!RequiresAuthentication) return; - var client = await KeycloakService.CreateTestClient(audienceClientId, roles, scopes); + var client = await KeycloakService!.CreateTestClient(audienceClientId, roles, scopes); AccessToken = await KeycloakService.GetAccessToken(client); } protected virtual Task SetupAccessToken(string[] roles) => - SetupAccessToken(Auth.AudienceClientId, + SetupAccessToken(Auth.Auth.AudienceClientId, roles, - Auth.Scopes); + Auth.Auth.Scopes); #endif protected virtual AppDbContext GetDbContext() => +#if (apiService) WebAppFactory.Services +#elif (workerService) + WorkerServiceInstance.Services +#endif .CreateScope() .ServiceProvider .GetRequiredService(); @@ -95,9 +128,28 @@ await GetDbContext().Database .ExecuteSqlRawAsync(script); } +#if (apiService) + protected virtual ITestHarness GetApiTestHarness() => + WebAppFactory.Services + .GetTestHarness(); + +#endif +#if (workerService) + protected virtual ITestHarness GetServiceTestHarness() => + WorkerServiceInstance.Services + .GetTestHarness(); + +#endif public virtual async Task DisposeAsync() { await RollbackDbMigrations(); +#if (apiService) await WebAppFactory.DisposeAsync(); +#endif +#if (workerService) + + await WorkerServiceInstance.StopAsync(); + WorkerServiceInstance.Dispose(); +#endif } } \ No newline at end of file diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Monaco.Template.Backend.IntegrationTests.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Monaco.Template.Backend.IntegrationTests.csproj index 083c1bc..3311408 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Monaco.Template.Backend.IntegrationTests.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Monaco.Template.Backend.IntegrationTests.csproj @@ -10,36 +10,36 @@ - $(DefineConstants);auth;commonLibraries;filesSupport;massTransitIntegration + $(DefineConstants);apiService;auth;commonLibraries;filesSupport;massTransitIntegration;workerService - + - + - - + + - + - + - + - + - - + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/CompaniesTests.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/CompaniesTests.cs index a24be9f..96f5bd0 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/CompaniesTests.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/CompaniesTests.cs @@ -16,16 +16,22 @@ namespace Monaco.Template.Backend.IntegrationTests.Tests; [Trait("Integration Tests", "Companies")] public class CompaniesTests : IntegrationTest { - public CompaniesTests(AppFixture fixture) : base(fixture, true) + public CompaniesTests(AppFixture fixture) : base(fixture) { } +#if (auth) + protected override bool RequiresAuthentication => true; +#else + protected override bool RequiresAuthentication => false; +#endif + public override async Task InitializeAsync() { await base.InitializeAsync(); await RunScriptAsync(@"Scripts\Companies.sql"); #if (auth) - await SetupAccessToken([Auth.Roles.Administrator]); + await SetupAccessToken([Auth.Auth.Roles.Administrator]); #endif } diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/CountriesTests.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/CountriesTests.cs index 796a4dd..bc22500 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/CountriesTests.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/CountriesTests.cs @@ -12,9 +12,15 @@ namespace Monaco.Template.Backend.IntegrationTests.Tests; [Trait("Integration Tests", "Countries")] public class CountriesTests : IntegrationTest { - public CountriesTests(AppFixture fixture) : base(fixture, true) + public CountriesTests(AppFixture fixture) : base(fixture) { } +#if (auth) + protected override bool RequiresAuthentication => true; +#else + protected override bool RequiresAuthentication => false; +#endif + public override async Task InitializeAsync() { await base.InitializeAsync(); diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/FilesTests.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/FilesTests.cs index 7a1e2ba..dadcd60 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/FilesTests.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/FilesTests.cs @@ -12,15 +12,21 @@ namespace Monaco.Template.Backend.IntegrationTests.Tests; [Trait("Integration Tests", "Files")] public class FilesTests : IntegrationTest { - public FilesTests(AppFixture fixture) : base(fixture, true) + public FilesTests(AppFixture fixture) : base(fixture) { } +#if (auth) + protected override bool RequiresAuthentication => true; +#else + protected override bool RequiresAuthentication => false; +#endif + public override async Task InitializeAsync() { await base.InitializeAsync(); #if (auth) - await SetupAccessToken([Auth.Roles.Administrator]); + await SetupAccessToken([Auth.Auth.Roles.Administrator]); #endif } diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs index a33de77..f4da19b 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs @@ -10,6 +10,8 @@ using Monaco.Template.Backend.Domain.Model; using System.Diagnostics.CodeAnalysis; using System.Net; +using Monaco.Template.Backend.Messages.V1; +using Monaco.Template.Backend.Service.Consumers; using File = System.IO.File; namespace Monaco.Template.Backend.IntegrationTests.Tests; @@ -18,9 +20,15 @@ namespace Monaco.Template.Backend.IntegrationTests.Tests; [Trait("Integration Tests", "Products")] public class ProductsTests : IntegrationTest { - public ProductsTests(AppFixture fixture) : base(fixture, true) + public ProductsTests(AppFixture fixture) : base(fixture) { } +#if (auth) + protected override bool RequiresAuthentication => true; +#else + protected override bool RequiresAuthentication => false; +#endif + public override async Task InitializeAsync() { await base.InitializeAsync(); @@ -39,11 +47,11 @@ public override async Task InitializeAsync() #if (auth) private Task SetupAccessToken() => - SetupAccessToken([Auth.Roles.Administrator]); + SetupAccessToken([Auth.Auth.Roles.Administrator]); #endif private BlobContainerClient GetBlobContainerClient() => - new(WebAppFactory.StorageConnectionString, + new(Fixture.StorageConnectionString, AppFixture.StorageContainer); [Theory(DisplayName = "Get Products page succeeds")] @@ -94,12 +102,9 @@ public async Task GetProductsPageSucceeds(bool expandCompany, p.Pictures .Should() - .AllSatisfy(pic => - { - pic.Thumbnail - .Should() - .NotBeNull(); - }); + .AllSatisfy(pic => pic.Thumbnail + .Should() + .NotBeNull()); } else p.Pictures @@ -245,13 +250,17 @@ private async Task DownloadProductPictureTest(Guid productId, [Theory(DisplayName = "Create new Product succeeds")] [AutoData] - public async Task CreateNewCompanySucceeds(string title, + public async Task CreateNewProductSucceeds(string title, string description, decimal price) { #if (auth) await SetupAccessToken(); #endif + var apiTestHarness = GetApiTestHarness(); + //await apiTestHarness.Start(); + var serviceTestHarness = GetServiceTestHarness(); + //await serviceTestHarness.Start(); var dbContext = GetDbContext(); var tempImages = await dbContext.Set() .Where(i => i.IsTemp && i.ThumbnailId.HasValue) @@ -262,7 +271,7 @@ public async Task CreateNewCompanySucceeds(string title, description, price, companyId, - tempImages.Select(i => i.Id).ToArray(), + [.. tempImages.Select(i => i.Id)], tempImages.Last().Id); var response = await CreateRequest(ApiRoutes.Products.Post()).PostJsonAsync(dto); @@ -323,6 +332,19 @@ public async Task CreateNewCompanySucceeds(string title, .Should() .NotBeNull(); }); + + (await apiTestHarness.Published.Any()) + .Should() + .BeTrue(); + + (await serviceTestHarness.Consumed.Any()) + .Should() + .BeTrue(); + + var consumerHarness = serviceTestHarness.GetConsumerHarness(); + (await consumerHarness.Consumed.Any()) + .Should() + .BeTrue(); } [Theory(DisplayName = "Edit existing Product succeeds")] diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Service/Monaco.Template.Backend.Service.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.Service/Monaco.Template.Backend.Service.csproj index a4b0806..bb1841c 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Service/Monaco.Template.Backend.Service.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Service/Monaco.Template.Backend.Service.csproj @@ -18,8 +18,8 @@ - - + + diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Service/Program.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.Service/Program.cs index 2e08d21..2ebcdae 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.Service/Program.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Service/Program.cs @@ -38,7 +38,6 @@ h.Username(rabbitMqConfig["Username"]!); h.Password(rabbitMqConfig["Password"]!); }); - busCfg.ConfigureEndpoints(ctx, new DefaultEndpointNameFormatter(true)); }); else //For all other environments, use Azure Service Bus @@ -52,4 +51,9 @@ .AddHostedService(); var host = builder.Build(); -host.Run(); \ No newline at end of file +host.Run(); + +namespace Monaco.Template.Backend.Service +{ + public partial class Program; +} \ No newline at end of file From f984cc3574bfdec09f6606844c15fd840c3fd3e2 Mon Sep 17 00:00:00 2001 From: CesarD Date: Sun, 9 Feb 2025 19:41:20 +0100 Subject: [PATCH 6/9] Added missing flags in IntegrationTests project file. --- .../20241004080137_Init.Designer.cs | 1318 +++++++++++++++++ .../Migrations/20241004080137_Init.cs | 395 +++++ .../Migrations/AppDbContextModelSnapshot.cs | 1315 ++++++++++++++++ ...o.Template.Backend.IntegrationTests.csproj | 6 + 4 files changed, 3034 insertions(+) create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.Application.Infrastructure.Migrations/Migrations/20241004080137_Init.Designer.cs create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.Application.Infrastructure.Migrations/Migrations/20241004080137_Init.cs create mode 100644 src/Content/Backend/Solution/Monaco.Template.Backend.Application.Infrastructure.Migrations/Migrations/AppDbContextModelSnapshot.cs diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Application.Infrastructure.Migrations/Migrations/20241004080137_Init.Designer.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.Application.Infrastructure.Migrations/Migrations/20241004080137_Init.Designer.cs new file mode 100644 index 0000000..ba402b9 --- /dev/null +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Application.Infrastructure.Migrations/Migrations/20241004080137_Init.Designer.cs @@ -0,0 +1,1318 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Monaco.Template.Backend.Application.Infrastructure.Context; + +#nullable disable + +namespace Monaco.Template.Backend.Application.Infrastructure.Migrations.Migrations +{ + [DbContext(typeof(AppDbContext))] + [Migration("20241004080137_Init")] + partial class Init + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.8") + .HasAnnotation("Proxies:ChangeTracking", false) + .HasAnnotation("Proxies:CheckEquality", false) + .HasAnnotation("Proxies:LazyLoading", true) + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Monaco.Template.Backend.Domain.Model.Company", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Version") + .IsConcurrencyToken() + .IsRequired() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("rowversion"); + + b.Property("WebSiteUrl") + .HasMaxLength(300) + .HasColumnType("nvarchar(300)"); + + b.HasKey("Id"); + + b.ToTable("Company"); + }); + + modelBuilder.Entity("Monaco.Template.Backend.Domain.Model.Country", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("Id"); + + b.ToTable("Country"); + + b.HasData( + new + { + Id = new Guid("5c064eff-a037-a6a3-06ec-92f662903af3"), + Name = "Afghanistan" + }, + new + { + Id = new Guid("a8b54a61-35d8-9b82-76e4-c709561d9952"), + Name = "Albania" + }, + new + { + Id = new Guid("9f420922-9842-0d2d-616d-dacee7c25db7"), + Name = "Algeria" + }, + new + { + Id = new Guid("26253117-7664-92a9-1a3c-b15cf4bf4c78"), + Name = "Andorra" + }, + new + { + Id = new Guid("ba510e09-5109-42a2-63f0-32d7ede12a5a"), + Name = "Angola" + }, + new + { + Id = new Guid("359da8da-68eb-9466-855d-f0f381f715b8"), + Name = "Antigua and Barbuda" + }, + new + { + Id = new Guid("01ec70b8-6aad-3770-a129-62c0fc294791"), + Name = "Argentina" + }, + new + { + Id = new Guid("7d62846b-1841-882f-1cc4-85e2edeea265"), + Name = "Armenia" + }, + new + { + Id = new Guid("269928e1-37c5-32e0-60c5-bc6da2b8240e"), + Name = "Australia" + }, + new + { + Id = new Guid("7fce71e6-a14d-5d96-2dc1-1fc6779e02d3"), + Name = "Austria" + }, + new + { + Id = new Guid("4cf81cef-66a5-a117-3297-884134e903ee"), + Name = "Azerbaijan" + }, + new + { + Id = new Guid("08b5d3d0-89ed-a66f-3175-05316ae4a309"), + Name = "Bahamas" + }, + new + { + Id = new Guid("d7bd1f34-6ef7-43a6-24ed-53bca003086c"), + Name = "Bahrain" + }, + new + { + Id = new Guid("0d69d315-2825-2d05-9c04-ba1ad47180ac"), + Name = "Bangladesh" + }, + new + { + Id = new Guid("52f81e1e-6903-88e8-199f-cfc5139b0c69"), + Name = "Barbados" + }, + new + { + Id = new Guid("52b13dd7-28fc-9bba-8d59-5c2209531bf5"), + Name = "Belarus" + }, + new + { + Id = new Guid("8b9ac6d0-2320-3f99-8db7-d78c5d53151a"), + Name = "Belgium" + }, + new + { + Id = new Guid("c12db9c7-7ca1-4aec-34f1-7d0bb4713ca8"), + Name = "Belize" + }, + new + { + Id = new Guid("e34dc09e-2df2-3661-90e1-f03154d45caf"), + Name = "Benin" + }, + new + { + Id = new Guid("cf59ee2f-144d-99ac-9048-eafaba1f4732"), + Name = "Bhutan" + }, + new + { + Id = new Guid("1a426c53-787f-527c-5471-c505d6403603"), + Name = "Bolivia" + }, + new + { + Id = new Guid("fae877c5-4806-05e8-2068-950cdcea6ba9"), + Name = "Bosnia and Herzegovina" + }, + new + { + Id = new Guid("e0276db5-123f-6028-9e3e-eb43f2e06c47"), + Name = "Botswana" + }, + new + { + Id = new Guid("72499e6c-80a1-32c3-2692-7216abe7815b"), + Name = "Brazil" + }, + new + { + Id = new Guid("ba408210-2ea9-8c6c-1d5d-7e33973f1c99"), + Name = "Brunei" + }, + new + { + Id = new Guid("99532f86-827d-39ba-1c01-b9795ec60bf4"), + Name = "Bulgaria" + }, + new + { + Id = new Guid("f16e701a-5dbf-a441-3305-20ac536d34dc"), + Name = "Burkina Faso" + }, + new + { + Id = new Guid("ff0258f4-35a2-220b-9d9d-f0fe28226cc3"), + Name = "Burundi" + }, + new + { + Id = new Guid("f8135306-1323-4f48-7a4b-8d0427cb075b"), + Name = "Côte d'Ivoire" + }, + new + { + Id = new Guid("4676b79b-461c-95de-9871-041d2e0b130b"), + Name = "Cabo Verde" + }, + new + { + Id = new Guid("42f62587-3470-5967-77e3-f9b0cf285d90"), + Name = "Cambodia" + }, + new + { + Id = new Guid("01deb5a8-6bd7-1879-9d4b-cb73dd0e9a97"), + Name = "Cameroon" + }, + new + { + Id = new Guid("ff7c5aa2-6b56-218e-491a-42f4c67ca4a9"), + Name = "Canada" + }, + new + { + Id = new Guid("77b88575-0e8c-82d0-72bf-06f638b7485f"), + Name = "Central African Republic" + }, + new + { + Id = new Guid("758d4f58-7371-36c1-26c2-fcdb993806eb"), + Name = "Chad" + }, + new + { + Id = new Guid("97c787c7-915b-4878-3aa2-6ca1eec02f65"), + Name = "Chile" + }, + new + { + Id = new Guid("003548f7-318a-6f99-8a27-d62963b64cb5"), + Name = "China" + }, + new + { + Id = new Guid("63a948ca-178b-93da-4fdd-e6be10b49a42"), + Name = "Colombia" + }, + new + { + Id = new Guid("6d2bc2ca-2f37-3698-7f08-b7b3eeda5bf5"), + Name = "Comoros" + }, + new + { + Id = new Guid("d9e7fd6d-77f2-8e76-0174-4c17df936d4e"), + Name = "Congo (Congo-Brazzaville)" + }, + new + { + Id = new Guid("16eded64-8619-2b73-682f-a703c1cb2d76"), + Name = "Costa Rica" + }, + new + { + Id = new Guid("7915a976-5224-94f8-232f-ac163a11630c"), + Name = "Croatia" + }, + new + { + Id = new Guid("b6ed03e6-096c-3f87-093d-f3ff4bf34c24"), + Name = "Cuba" + }, + new + { + Id = new Guid("d7506bd0-454d-1b83-39e0-905836535271"), + Name = "Cyprus" + }, + new + { + Id = new Guid("caf14a3d-777d-0ee5-63a9-1c3da4e81458"), + Name = "Czechia (Czech Republic)" + }, + new + { + Id = new Guid("da82e26d-40bd-0866-0822-3d5468a36c3e"), + Name = "Democratic Republic of the Congo" + }, + new + { + Id = new Guid("57dc70e9-17ec-995b-5a60-a7c029b1476a"), + Name = "Denmark" + }, + new + { + Id = new Guid("8c6486fe-2680-4725-1ef3-3d56e3100f08"), + Name = "Djibouti" + }, + new + { + Id = new Guid("d7e310ab-99c3-0a50-2ead-57a2823433ee"), + Name = "Dominica" + }, + new + { + Id = new Guid("555a4e83-0151-7a10-2072-6cc9f4ac77c1"), + Name = "Dominican Republic" + }, + new + { + Id = new Guid("2908f020-3d75-3f9a-1a7f-020d1f8d5553"), + Name = "Ecuador" + }, + new + { + Id = new Guid("89bd993a-4eaa-6bae-8cf9-22f766fa2a1e"), + Name = "Egypt" + }, + new + { + Id = new Guid("ab1e3408-7157-2629-29a5-fbd6a61d92a9"), + Name = "El Salvador" + }, + new + { + Id = new Guid("e58f3cfd-069a-4457-23ef-9df8d7fe9ba0"), + Name = "Equatorial Guinea" + }, + new + { + Id = new Guid("5e7808be-01a7-9495-2320-314ce20871f3"), + Name = "Eritrea" + }, + new + { + Id = new Guid("5198e2c0-8107-5bcf-90b4-0054eac52295"), + Name = "Estonia" + }, + new + { + Id = new Guid("cfa8f583-23d4-1475-57ea-ef72ae7b633f"), + Name = "Eswatini (fmr. \"Swaziland\")" + }, + new + { + Id = new Guid("637e0fb3-34ed-6a1b-7524-3d6cd3155d35"), + Name = "Ethiopia" + }, + new + { + Id = new Guid("6459ce24-8398-57e0-4a31-48addb374e6d"), + Name = "Fiji" + }, + new + { + Id = new Guid("d726f074-4b1d-3043-39eb-f9b4ab9b2344"), + Name = "Finland" + }, + new + { + Id = new Guid("a5d734a1-021d-9b50-6fd4-b8f24bb96b12"), + Name = "France" + }, + new + { + Id = new Guid("a64406fb-51f7-2ed2-31af-847f9cf16783"), + Name = "Gabon" + }, + new + { + Id = new Guid("967f775b-3c8b-889d-5189-ee71f59f520e"), + Name = "Gambia" + }, + new + { + Id = new Guid("914f8571-1cac-3f1b-14ef-71aa91836616"), + Name = "Georgia" + }, + new + { + Id = new Guid("d4249520-8674-a2c1-0084-683d7aea64db"), + Name = "Germany" + }, + new + { + Id = new Guid("4fa88e4e-344a-32f8-a5ef-4ef2c33858d2"), + Name = "Ghana" + }, + new + { + Id = new Guid("a9fe165c-96e6-6bdf-99b0-68f7b2972ef6"), + Name = "Greece" + }, + new + { + Id = new Guid("6dfb0c67-2ab9-a5bc-1c58-5eaf76016b9d"), + Name = "Grenada" + }, + new + { + Id = new Guid("c8f8a591-79c3-a19e-94dd-1c96ed1aa23a"), + Name = "Guatemala" + }, + new + { + Id = new Guid("b0ac51a0-0128-4070-a49f-19b3dc5e8135"), + Name = "Guinea" + }, + new + { + Id = new Guid("d9060b41-6ea0-8efa-1dfe-ce293774947b"), + Name = "Guinea-Bissau" + }, + new + { + Id = new Guid("c79ec6ec-2f3d-0c12-8658-5ccbc1a20a77"), + Name = "Guyana" + }, + new + { + Id = new Guid("60a26e14-90ee-5838-4d27-3672a8e88c48"), + Name = "Haiti" + }, + new + { + Id = new Guid("a2c0a247-350e-85e6-9009-8106f5fd49b2"), + Name = "Holy See" + }, + new + { + Id = new Guid("d2300477-7258-17b8-7e8a-cf65f06a325f"), + Name = "Honduras" + }, + new + { + Id = new Guid("81f4a56e-5d53-47f3-52c3-2cd843434126"), + Name = "Hungary" + }, + new + { + Id = new Guid("9c239e38-640c-3fb2-0bc8-8edaace24c70"), + Name = "Iceland" + }, + new + { + Id = new Guid("a0d1f65e-307d-59fa-7792-24a5f0359889"), + Name = "India" + }, + new + { + Id = new Guid("5b9d725f-4e89-0181-74ae-ba87e96590d7"), + Name = "Indonesia" + }, + new + { + Id = new Guid("afa8b53f-45e6-391f-1c60-db81be664b1b"), + Name = "Iran" + }, + new + { + Id = new Guid("59bee04d-32a1-1e53-4a1b-599671a4a693"), + Name = "Iraq" + }, + new + { + Id = new Guid("18bd53bd-3519-69ef-1148-3453ad744c0f"), + Name = "Ireland" + }, + new + { + Id = new Guid("6704c135-5af7-88e9-16a5-ad4656fa1be2"), + Name = "Israel" + }, + new + { + Id = new Guid("cf1fcfbe-11fa-7009-0d71-d2cf5c80a334"), + Name = "Italy" + }, + new + { + Id = new Guid("038fb0db-7012-50fb-9ace-3b9f240d9627"), + Name = "Jamaica" + }, + new + { + Id = new Guid("12d9457c-1c12-9961-60cf-ec2ee534843a"), + Name = "Japan" + }, + new + { + Id = new Guid("aa9d471d-3f2f-5d42-3d01-443a83c12f59"), + Name = "Jordan" + }, + new + { + Id = new Guid("7708a52a-1d62-8f8b-0a4d-6028ed834994"), + Name = "Kazakhstan" + }, + new + { + Id = new Guid("f27f4ccb-4e04-8e05-456e-621788247647"), + Name = "Kenya" + }, + new + { + Id = new Guid("c7fc5498-271d-1027-343a-1560793d1c26"), + Name = "Kiribati" + }, + new + { + Id = new Guid("ee007dac-7417-54e4-18c2-ec6a678ba130"), + Name = "Kuwait" + }, + new + { + Id = new Guid("20bfffe5-7601-63e6-3574-9346e80d5d5c"), + Name = "Kyrgyzstan" + }, + new + { + Id = new Guid("6a5e5c1a-4d04-237e-8415-a7f93945133b"), + Name = "Laos" + }, + new + { + Id = new Guid("1e2e1979-539d-128f-538e-c30b8ba49b42"), + Name = "Latvia" + }, + new + { + Id = new Guid("29e7cce5-28a0-990c-6ded-54e96cad9caa"), + Name = "Lebanon" + }, + new + { + Id = new Guid("dbe19dde-374b-68a8-41e0-48d5195aa6f5"), + Name = "Lesotho" + }, + new + { + Id = new Guid("2092625a-45e4-166e-53cf-bb48408f1b09"), + Name = "Liberia" + }, + new + { + Id = new Guid("9d8cf3fc-222d-a56c-211b-8e8e9edf54e0"), + Name = "Libya" + }, + new + { + Id = new Guid("b232a961-1224-244f-27a1-06cba2046c22"), + Name = "Liechtenstein" + }, + new + { + Id = new Guid("a681eaeb-1fa0-12d7-93fb-e33a13c188e9"), + Name = "Lithuania" + }, + new + { + Id = new Guid("5ee9fcd4-5680-3cb4-1174-d85201e82367"), + Name = "Luxembourg" + }, + new + { + Id = new Guid("408f1ee6-42d3-a211-67c5-32f601b79bd9"), + Name = "Madagascar" + }, + new + { + Id = new Guid("341651be-9d9c-206b-9162-aad732979787"), + Name = "Malawi" + }, + new + { + Id = new Guid("40563307-5fe1-97d4-9d10-d81af5138548"), + Name = "Malaysia" + }, + new + { + Id = new Guid("43da6311-4ed9-9a74-9a46-82847f79a7c3"), + Name = "Maldives" + }, + new + { + Id = new Guid("c3700331-07c2-264c-2335-ba61bc718cac"), + Name = "Mali" + }, + new + { + Id = new Guid("1e3241f2-78b6-56e8-4c2d-4a50647973cf"), + Name = "Malta" + }, + new + { + Id = new Guid("bdf3f266-9570-2bb9-330f-9ea51c927068"), + Name = "Marshall Islands" + }, + new + { + Id = new Guid("572563f8-2f44-603d-857e-3f8230035e82"), + Name = "Mauritania" + }, + new + { + Id = new Guid("e8b389a9-0afd-4904-46af-464012f102c2"), + Name = "Mauritius" + }, + new + { + Id = new Guid("2f7432c5-405f-3f99-4bc3-35e318bd66cc"), + Name = "Mexico" + }, + new + { + Id = new Guid("94e831a3-3e52-7bb4-7616-dc0ac75c2d1d"), + Name = "Micronesia" + }, + new + { + Id = new Guid("abe01fc7-a484-7a8e-74b6-c5fa27554505"), + Name = "Moldova" + }, + new + { + Id = new Guid("6a265dd9-314e-2eb2-a4f8-3faf9c11a39d"), + Name = "Monaco" + }, + new + { + Id = new Guid("a484eabd-775b-4b7d-595b-3f5d857f5052"), + Name = "Mongolia" + }, + new + { + Id = new Guid("46fd6123-5206-2c2c-2832-953d13847069"), + Name = "Montenegro" + }, + new + { + Id = new Guid("09ee26e3-5c82-221e-0729-e47d663a949c"), + Name = "Morocco" + }, + new + { + Id = new Guid("aa6f7328-8f52-9bd1-0bba-9fb4f18a926e"), + Name = "Mozambique" + }, + new + { + Id = new Guid("4ebfeb1d-67d6-2499-5346-740f737100ee"), + Name = "Myanmar (formerly Burma)" + }, + new + { + Id = new Guid("aa29ea0b-2681-3475-6e16-1b7d164b081a"), + Name = "Namibia" + }, + new + { + Id = new Guid("d9a21a29-a0e2-71bc-7308-548cc27b19f1"), + Name = "Nauru" + }, + new + { + Id = new Guid("2c4ab1fa-60da-7c87-35b3-ac6903455853"), + Name = "Nepal" + }, + new + { + Id = new Guid("cb245d05-3293-7315-7ee1-eef8a383319c"), + Name = "Netherlands" + }, + new + { + Id = new Guid("472e0e57-77f5-9c34-8e10-a621c97108f7"), + Name = "New Zealand" + }, + new + { + Id = new Guid("350dc86e-03b2-2c20-1908-b4de7d179de7"), + Name = "Nicaragua" + }, + new + { + Id = new Guid("9b36a6c2-4739-69a2-068b-c0b3c87c6f67"), + Name = "Niger" + }, + new + { + Id = new Guid("2ca00749-35c0-511b-9c2c-b53e5a8f0a71"), + Name = "Nigeria" + }, + new + { + Id = new Guid("10ef2f04-4d96-5b5e-316f-b373a88731be"), + Name = "North Korea" + }, + new + { + Id = new Guid("51c38ab5-0b2b-2994-4eb2-c8e82fe17950"), + Name = "North Macedonia" + }, + new + { + Id = new Guid("c1c8ec1f-58ce-3931-7ad7-ad4b55c14a85"), + Name = "Norway" + }, + new + { + Id = new Guid("859adf7d-1bf9-87d1-6a9b-4a06ebab6796"), + Name = "Oman" + }, + new + { + Id = new Guid("6133196d-26d0-5f8e-5792-6215aefd668d"), + Name = "Pakistan" + }, + new + { + Id = new Guid("3881b3b6-a332-3d35-8a73-43acfbf9045b"), + Name = "Palau" + }, + new + { + Id = new Guid("9a79f7fb-27a4-811b-88c3-9de906521017"), + Name = "Palestine State" + }, + new + { + Id = new Guid("f5b0c42e-3b0e-3808-1922-fdae58ea075c"), + Name = "Panama" + }, + new + { + Id = new Guid("16ff3157-a061-2e81-5ca6-b71e3619376e"), + Name = "Papua New Guinea" + }, + new + { + Id = new Guid("1b84f08e-8e6d-5779-967c-a162c2307153"), + Name = "Paraguay" + }, + new + { + Id = new Guid("f625e01e-4a07-7ff3-0a7e-ce6e27b586ff"), + Name = "Peru" + }, + new + { + Id = new Guid("19be2963-072b-2f4b-0f85-558d90ee1770"), + Name = "Philippines" + }, + new + { + Id = new Guid("fc432d5c-66dd-5660-8186-da84b4e164a0"), + Name = "Poland" + }, + new + { + Id = new Guid("2b1486b9-0cfa-2dc6-3f70-4ee2f11955b4"), + Name = "Portugal" + }, + new + { + Id = new Guid("47ac0edf-9beb-345b-0e4b-bccb0c1a2032"), + Name = "Qatar" + }, + new + { + Id = new Guid("d5cb2660-9af9-0385-8a99-52871814043d"), + Name = "Romania" + }, + new + { + Id = new Guid("6fa56ae5-2091-39c4-0010-ae74ffa2a0f2"), + Name = "Russia" + }, + new + { + Id = new Guid("362ac8d8-6fba-a641-8272-958f9e553b54"), + Name = "Rwanda" + }, + new + { + Id = new Guid("c3553d72-9d17-04d8-6692-12a5a7250008"), + Name = "Saint Kitts and Nevis" + }, + new + { + Id = new Guid("fd3ab0e3-279a-107a-88e0-93ee1bb45ffb"), + Name = "Saint Lucia" + }, + new + { + Id = new Guid("420b0acb-a1b0-27e5-45fc-3c6e96f25361"), + Name = "Saint Vincent and the Grenadines" + }, + new + { + Id = new Guid("37425b6c-2940-370c-805d-27cb7af97f88"), + Name = "Samoa" + }, + new + { + Id = new Guid("b6667319-a515-1cf5-7392-92e15c52438d"), + Name = "San Marino" + }, + new + { + Id = new Guid("75c8834a-67e9-9ee5-65bb-e2db6a937074"), + Name = "Sao Tome and Principe" + }, + new + { + Id = new Guid("1e9ab108-4d4b-1812-21d9-5c90d7d897ea"), + Name = "Saudi Arabia" + }, + new + { + Id = new Guid("3cb2d6c7-8bb5-191d-183d-b201063d5491"), + Name = "Senegal" + }, + new + { + Id = new Guid("1995e756-0e82-9463-1627-feeb766d2d0d"), + Name = "Serbia" + }, + new + { + Id = new Guid("1ff73b0c-27c4-9d4a-3d5b-ec77a6612d56"), + Name = "Seychelles" + }, + new + { + Id = new Guid("6df0d56f-3b4e-33fe-6d5f-74da585ea5d0"), + Name = "Sierra Leone" + }, + new + { + Id = new Guid("912f9045-7a3b-151b-2c06-19f899d1787a"), + Name = "Singapore" + }, + new + { + Id = new Guid("53e7d0fc-816f-59dd-7b4a-0ade62330830"), + Name = "Slovakia" + }, + new + { + Id = new Guid("a522756f-2fd9-48d1-7443-dd1546fd8b37"), + Name = "Slovenia" + }, + new + { + Id = new Guid("5f47ed3b-0b54-95aa-93e8-16bf035c9247"), + Name = "Solomon Islands" + }, + new + { + Id = new Guid("b58da294-9556-8ece-163f-3d89514017a7"), + Name = "Somalia" + }, + new + { + Id = new Guid("03a82f52-22d5-8259-1072-429791258b72"), + Name = "South Africa" + }, + new + { + Id = new Guid("55cafe8e-1585-278e-5736-bab16f1b1b8d"), + Name = "South Korea" + }, + new + { + Id = new Guid("9d2d676f-97fb-952c-06a9-09d4e9696631"), + Name = "South Sudan" + }, + new + { + Id = new Guid("534a826b-70ef-2128-1a4c-52e23b7d5447"), + Name = "Spain" + }, + new + { + Id = new Guid("932a43ac-56dc-951e-7de5-996314e92e9c"), + Name = "Sri Lanka" + }, + new + { + Id = new Guid("6c4a7b61-3bfd-4a47-95a3-0ca86c72521f"), + Name = "Sudan" + }, + new + { + Id = new Guid("9a0a2c1d-3475-3554-9d18-b11946af6086"), + Name = "Suriname" + }, + new + { + Id = new Guid("896ef05e-0fe4-92a6-229e-63d7a26e0625"), + Name = "Sweden" + }, + new + { + Id = new Guid("bb0b41a9-7363-5922-9ce0-939412a9036e"), + Name = "Switzerland" + }, + new + { + Id = new Guid("7b9c857e-3fbd-3d19-38cf-f204da39890c"), + Name = "Syria" + }, + new + { + Id = new Guid("d7cd92d3-4522-5a78-3533-816fc61a293f"), + Name = "Tajikistan" + }, + new + { + Id = new Guid("fa81562d-1bc4-944c-86a9-6cc5af502265"), + Name = "Tanzania" + }, + new + { + Id = new Guid("439e3108-0908-4d90-6f5c-1974362b74b1"), + Name = "Thailand" + }, + new + { + Id = new Guid("47e7cc9c-4368-8ab3-056b-66a1351c24cd"), + Name = "Timor-Leste" + }, + new + { + Id = new Guid("492a6eb7-5ca3-8e50-3559-c71205b71c3b"), + Name = "Togo" + }, + new + { + Id = new Guid("e376c876-6960-270c-8744-583fb7a72f55"), + Name = "Tonga" + }, + new + { + Id = new Guid("2f7c276f-4d0d-9368-4132-c04149924bb5"), + Name = "Trinidad and Tobago" + }, + new + { + Id = new Guid("93ba288b-2a62-1880-1e20-aeb705431890"), + Name = "Tunisia" + }, + new + { + Id = new Guid("c576d8f0-5300-2436-2d17-48b699214549"), + Name = "Turkey" + }, + new + { + Id = new Guid("a9c5d1ec-319a-085c-1ee3-80ae15bd27ed"), + Name = "Turkmenistan" + }, + new + { + Id = new Guid("95938676-73d1-2031-219d-dc67ba314bdf"), + Name = "Tuvalu" + }, + new + { + Id = new Guid("2cfae83c-0f45-72d1-4624-5af1e10e6147"), + Name = "Uganda" + }, + new + { + Id = new Guid("1b837dfa-0bda-54f3-918a-beef19f691e5"), + Name = "Ukraine" + }, + new + { + Id = new Guid("f7675604-4744-6d6f-a077-67a3e0c85324"), + Name = "United Arab Emirates" + }, + new + { + Id = new Guid("8f9ec4fb-916f-90ea-5162-f486a0fc0893"), + Name = "United Kingdom" + }, + new + { + Id = new Guid("ca111c84-983b-4525-054c-d14dee3a422c"), + Name = "United States of America" + }, + new + { + Id = new Guid("ee06c3ba-4e8c-95c3-88da-6be3f23b9aaa"), + Name = "Uruguay" + }, + new + { + Id = new Guid("2f02c930-1d71-8ca6-49e7-0d3679a522ea"), + Name = "Uzbekistan" + }, + new + { + Id = new Guid("28dc2817-94b4-955d-10bc-6a8793dd386c"), + Name = "Vanuatu" + }, + new + { + Id = new Guid("9c9e3bca-5880-437f-4f18-d6998d90173f"), + Name = "Venezuela" + }, + new + { + Id = new Guid("5a3893d1-1e36-310c-7633-8f36ffa26315"), + Name = "Vietnam" + }, + new + { + Id = new Guid("a2689ae3-3643-6250-a748-8f055cc72da8"), + Name = "Yemen" + }, + new + { + Id = new Guid("be447a08-0a85-5779-8c65-cf15c2c9a5a8"), + Name = "Zambia" + }, + new + { + Id = new Guid("c776f397-182b-6d0d-09f2-4e440dc093d3"), + Name = "Zimbabwe" + }); + }); + + modelBuilder.Entity("Monaco.Template.Backend.Domain.Model.File", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ContentType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Discriminator") + .IsRequired() + .HasMaxLength(8) + .HasColumnType("nvarchar(8)"); + + b.Property("Extension") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("IsTemp") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(300) + .HasColumnType("nvarchar(300)"); + + b.Property("Size") + .HasColumnType("bigint"); + + b.Property("UploadedOn") + .HasColumnType("datetime2"); + + b.HasKey("Id"); + + b.ToTable("File", (string)null); + + b.HasDiscriminator().IsComplete(true).HasValue("File"); + + b.UseTphMappingStrategy(); + }); + + modelBuilder.Entity("Monaco.Template.Backend.Domain.Model.Product", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CompanyId") + .HasColumnType("uniqueidentifier"); + + b.Property("DefaultPictureId") + .HasColumnType("uniqueidentifier"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("Price") + .HasPrecision(10, 2) + .HasColumnType("decimal(10,2)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("Id"); + + b.HasIndex("CompanyId"); + + b.HasIndex("DefaultPictureId") + .IsUnique(); + + b.HasIndex("Title"); + + b.ToTable("Product"); + }); + + modelBuilder.Entity("ProductPicture", b => + { + b.Property("PicturesId") + .HasColumnType("uniqueidentifier"); + + b.Property("ProductId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("PicturesId", "ProductId"); + + b.HasIndex("PicturesId") + .IsUnique(); + + b.HasIndex("ProductId"); + + b.ToTable("ProductPicture"); + }); + + modelBuilder.Entity("Monaco.Template.Backend.Domain.Model.Document", b => + { + b.HasBaseType("Monaco.Template.Backend.Domain.Model.File"); + + b.HasDiscriminator().HasValue("Document"); + }); + + modelBuilder.Entity("Monaco.Template.Backend.Domain.Model.Image", b => + { + b.HasBaseType("Monaco.Template.Backend.Domain.Model.File"); + + b.Property("DateTaken") + .HasColumnType("datetime2"); + + b.Property("ThumbnailId") + .HasColumnType("uniqueidentifier"); + + b.HasIndex("ThumbnailId") + .IsUnique() + .HasFilter("[ThumbnailId] IS NOT NULL"); + + b.HasDiscriminator().HasValue("Image"); + }); + + modelBuilder.Entity("Monaco.Template.Backend.Domain.Model.Company", b => + { + b.OwnsOne("Monaco.Template.Backend.Domain.Model.Address", "Address", b1 => + { + b1.Property("CompanyId") + .HasColumnType("uniqueidentifier"); + + b1.Property("City") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b1.Property("CountryId") + .HasColumnType("uniqueidentifier"); + + b1.Property("County") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b1.Property("PostCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b1.Property("Street") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b1.HasKey("CompanyId"); + + b1.HasIndex("CountryId"); + + b1.ToTable("Company"); + + b1.WithOwner() + .HasForeignKey("CompanyId"); + + b1.HasOne("Monaco.Template.Backend.Domain.Model.Country", "Country") + .WithMany() + .HasForeignKey("CountryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b1.Navigation("Country"); + }); + + b.Navigation("Address"); + }); + + modelBuilder.Entity("Monaco.Template.Backend.Domain.Model.Product", b => + { + b.HasOne("Monaco.Template.Backend.Domain.Model.Company", "Company") + .WithMany("Products") + .HasForeignKey("CompanyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Monaco.Template.Backend.Domain.Model.Image", "DefaultPicture") + .WithOne() + .HasForeignKey("Monaco.Template.Backend.Domain.Model.Product", "DefaultPictureId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Company"); + + b.Navigation("DefaultPicture"); + }); + + modelBuilder.Entity("ProductPicture", b => + { + b.HasOne("Monaco.Template.Backend.Domain.Model.Image", null) + .WithMany() + .HasForeignKey("PicturesId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Monaco.Template.Backend.Domain.Model.Product", null) + .WithMany() + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.ClientCascade) + .IsRequired(); + }); + + modelBuilder.Entity("Monaco.Template.Backend.Domain.Model.Image", b => + { + b.HasOne("Monaco.Template.Backend.Domain.Model.Image", "Thumbnail") + .WithOne() + .HasForeignKey("Monaco.Template.Backend.Domain.Model.Image", "ThumbnailId"); + + b.OwnsOne("Monaco.Template.Backend.Domain.Model.GpsPosition", "Position", b1 => + { + b1.Property("ImageId") + .HasColumnType("uniqueidentifier"); + + b1.Property("Latitude") + .HasColumnType("real"); + + b1.Property("Longitude") + .HasColumnType("real"); + + b1.HasKey("ImageId"); + + b1.ToTable("File"); + + b1.WithOwner() + .HasForeignKey("ImageId"); + }); + + b.OwnsOne("Monaco.Template.Backend.Domain.Model.ImageDimensions", "Dimensions", b1 => + { + b1.Property("ImageId") + .HasColumnType("uniqueidentifier"); + + b1.Property("Height") + .HasColumnType("int"); + + b1.Property("Width") + .HasColumnType("int"); + + b1.HasKey("ImageId"); + + b1.ToTable("File"); + + b1.WithOwner() + .HasForeignKey("ImageId"); + }); + + b.Navigation("Dimensions") + .IsRequired(); + + b.Navigation("Position"); + + b.Navigation("Thumbnail"); + }); + + modelBuilder.Entity("Monaco.Template.Backend.Domain.Model.Company", b => + { + b.Navigation("Products"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Application.Infrastructure.Migrations/Migrations/20241004080137_Init.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.Application.Infrastructure.Migrations/Migrations/20241004080137_Init.cs new file mode 100644 index 0000000..1dcfb82 --- /dev/null +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Application.Infrastructure.Migrations/Migrations/20241004080137_Init.cs @@ -0,0 +1,395 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional + +namespace Monaco.Template.Backend.Application.Infrastructure.Migrations.Migrations +{ + /// + public partial class Init : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Country", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Country", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "File", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(300)", maxLength: 300, nullable: false), + Extension = table.Column(type: "nvarchar(20)", maxLength: 20, nullable: false), + Size = table.Column(type: "bigint", nullable: false), + ContentType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: false), + UploadedOn = table.Column(type: "datetime2", nullable: false), + IsTemp = table.Column(type: "bit", nullable: false), + Discriminator = table.Column(type: "nvarchar(8)", maxLength: 8, nullable: false), + DateTaken = table.Column(type: "datetime2", nullable: true), + Dimensions_Height = table.Column(type: "int", nullable: true), + Dimensions_Width = table.Column(type: "int", nullable: true), + Position_Latitude = table.Column(type: "real", nullable: true), + Position_Longitude = table.Column(type: "real", nullable: true), + ThumbnailId = table.Column(type: "uniqueidentifier", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_File", x => x.Id); + table.ForeignKey( + name: "FK_File_File_ThumbnailId", + column: x => x.ThumbnailId, + principalTable: "File", + principalColumn: "Id"); + }); + + migrationBuilder.CreateTable( + name: "Company", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Email = table.Column(type: "nvarchar(255)", maxLength: 255, nullable: false), + WebSiteUrl = table.Column(type: "nvarchar(300)", maxLength: 300, nullable: true), + Version = table.Column(type: "rowversion", rowVersion: true, nullable: false), + Address_Street = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + Address_City = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + Address_County = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + Address_PostCode = table.Column(type: "nvarchar(10)", maxLength: 10, nullable: true), + Address_CountryId = table.Column(type: "uniqueidentifier", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Company", x => x.Id); + table.ForeignKey( + name: "FK_Company_Country_Address_CountryId", + column: x => x.Address_CountryId, + principalTable: "Country", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Product", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Title = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Description = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: false), + Price = table.Column(type: "decimal(10,2)", precision: 10, scale: 2, nullable: false), + CompanyId = table.Column(type: "uniqueidentifier", nullable: false), + DefaultPictureId = table.Column(type: "uniqueidentifier", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Product", x => x.Id); + table.ForeignKey( + name: "FK_Product_Company_CompanyId", + column: x => x.CompanyId, + principalTable: "Company", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Product_File_DefaultPictureId", + column: x => x.DefaultPictureId, + principalTable: "File", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "ProductPicture", + columns: table => new + { + PicturesId = table.Column(type: "uniqueidentifier", nullable: false), + ProductId = table.Column(type: "uniqueidentifier", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ProductPicture", x => new { x.PicturesId, x.ProductId }); + table.ForeignKey( + name: "FK_ProductPicture_File_PicturesId", + column: x => x.PicturesId, + principalTable: "File", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_ProductPicture_Product_ProductId", + column: x => x.ProductId, + principalTable: "Product", + principalColumn: "Id"); + }); + + migrationBuilder.InsertData( + table: "Country", + columns: new[] { "Id", "Name" }, + values: new object[,] + { + { new Guid("003548f7-318a-6f99-8a27-d62963b64cb5"), "China" }, + { new Guid("01deb5a8-6bd7-1879-9d4b-cb73dd0e9a97"), "Cameroon" }, + { new Guid("01ec70b8-6aad-3770-a129-62c0fc294791"), "Argentina" }, + { new Guid("038fb0db-7012-50fb-9ace-3b9f240d9627"), "Jamaica" }, + { new Guid("03a82f52-22d5-8259-1072-429791258b72"), "South Africa" }, + { new Guid("08b5d3d0-89ed-a66f-3175-05316ae4a309"), "Bahamas" }, + { new Guid("09ee26e3-5c82-221e-0729-e47d663a949c"), "Morocco" }, + { new Guid("0d69d315-2825-2d05-9c04-ba1ad47180ac"), "Bangladesh" }, + { new Guid("10ef2f04-4d96-5b5e-316f-b373a88731be"), "North Korea" }, + { new Guid("12d9457c-1c12-9961-60cf-ec2ee534843a"), "Japan" }, + { new Guid("16eded64-8619-2b73-682f-a703c1cb2d76"), "Costa Rica" }, + { new Guid("16ff3157-a061-2e81-5ca6-b71e3619376e"), "Papua New Guinea" }, + { new Guid("18bd53bd-3519-69ef-1148-3453ad744c0f"), "Ireland" }, + { new Guid("1995e756-0e82-9463-1627-feeb766d2d0d"), "Serbia" }, + { new Guid("19be2963-072b-2f4b-0f85-558d90ee1770"), "Philippines" }, + { new Guid("1a426c53-787f-527c-5471-c505d6403603"), "Bolivia" }, + { new Guid("1b837dfa-0bda-54f3-918a-beef19f691e5"), "Ukraine" }, + { new Guid("1b84f08e-8e6d-5779-967c-a162c2307153"), "Paraguay" }, + { new Guid("1e2e1979-539d-128f-538e-c30b8ba49b42"), "Latvia" }, + { new Guid("1e3241f2-78b6-56e8-4c2d-4a50647973cf"), "Malta" }, + { new Guid("1e9ab108-4d4b-1812-21d9-5c90d7d897ea"), "Saudi Arabia" }, + { new Guid("1ff73b0c-27c4-9d4a-3d5b-ec77a6612d56"), "Seychelles" }, + { new Guid("2092625a-45e4-166e-53cf-bb48408f1b09"), "Liberia" }, + { new Guid("20bfffe5-7601-63e6-3574-9346e80d5d5c"), "Kyrgyzstan" }, + { new Guid("26253117-7664-92a9-1a3c-b15cf4bf4c78"), "Andorra" }, + { new Guid("269928e1-37c5-32e0-60c5-bc6da2b8240e"), "Australia" }, + { new Guid("28dc2817-94b4-955d-10bc-6a8793dd386c"), "Vanuatu" }, + { new Guid("2908f020-3d75-3f9a-1a7f-020d1f8d5553"), "Ecuador" }, + { new Guid("29e7cce5-28a0-990c-6ded-54e96cad9caa"), "Lebanon" }, + { new Guid("2b1486b9-0cfa-2dc6-3f70-4ee2f11955b4"), "Portugal" }, + { new Guid("2c4ab1fa-60da-7c87-35b3-ac6903455853"), "Nepal" }, + { new Guid("2ca00749-35c0-511b-9c2c-b53e5a8f0a71"), "Nigeria" }, + { new Guid("2cfae83c-0f45-72d1-4624-5af1e10e6147"), "Uganda" }, + { new Guid("2f02c930-1d71-8ca6-49e7-0d3679a522ea"), "Uzbekistan" }, + { new Guid("2f7432c5-405f-3f99-4bc3-35e318bd66cc"), "Mexico" }, + { new Guid("2f7c276f-4d0d-9368-4132-c04149924bb5"), "Trinidad and Tobago" }, + { new Guid("341651be-9d9c-206b-9162-aad732979787"), "Malawi" }, + { new Guid("350dc86e-03b2-2c20-1908-b4de7d179de7"), "Nicaragua" }, + { new Guid("359da8da-68eb-9466-855d-f0f381f715b8"), "Antigua and Barbuda" }, + { new Guid("362ac8d8-6fba-a641-8272-958f9e553b54"), "Rwanda" }, + { new Guid("37425b6c-2940-370c-805d-27cb7af97f88"), "Samoa" }, + { new Guid("3881b3b6-a332-3d35-8a73-43acfbf9045b"), "Palau" }, + { new Guid("3cb2d6c7-8bb5-191d-183d-b201063d5491"), "Senegal" }, + { new Guid("40563307-5fe1-97d4-9d10-d81af5138548"), "Malaysia" }, + { new Guid("408f1ee6-42d3-a211-67c5-32f601b79bd9"), "Madagascar" }, + { new Guid("420b0acb-a1b0-27e5-45fc-3c6e96f25361"), "Saint Vincent and the Grenadines" }, + { new Guid("42f62587-3470-5967-77e3-f9b0cf285d90"), "Cambodia" }, + { new Guid("439e3108-0908-4d90-6f5c-1974362b74b1"), "Thailand" }, + { new Guid("43da6311-4ed9-9a74-9a46-82847f79a7c3"), "Maldives" }, + { new Guid("4676b79b-461c-95de-9871-041d2e0b130b"), "Cabo Verde" }, + { new Guid("46fd6123-5206-2c2c-2832-953d13847069"), "Montenegro" }, + { new Guid("472e0e57-77f5-9c34-8e10-a621c97108f7"), "New Zealand" }, + { new Guid("47ac0edf-9beb-345b-0e4b-bccb0c1a2032"), "Qatar" }, + { new Guid("47e7cc9c-4368-8ab3-056b-66a1351c24cd"), "Timor-Leste" }, + { new Guid("492a6eb7-5ca3-8e50-3559-c71205b71c3b"), "Togo" }, + { new Guid("4cf81cef-66a5-a117-3297-884134e903ee"), "Azerbaijan" }, + { new Guid("4ebfeb1d-67d6-2499-5346-740f737100ee"), "Myanmar (formerly Burma)" }, + { new Guid("4fa88e4e-344a-32f8-a5ef-4ef2c33858d2"), "Ghana" }, + { new Guid("5198e2c0-8107-5bcf-90b4-0054eac52295"), "Estonia" }, + { new Guid("51c38ab5-0b2b-2994-4eb2-c8e82fe17950"), "North Macedonia" }, + { new Guid("52b13dd7-28fc-9bba-8d59-5c2209531bf5"), "Belarus" }, + { new Guid("52f81e1e-6903-88e8-199f-cfc5139b0c69"), "Barbados" }, + { new Guid("534a826b-70ef-2128-1a4c-52e23b7d5447"), "Spain" }, + { new Guid("53e7d0fc-816f-59dd-7b4a-0ade62330830"), "Slovakia" }, + { new Guid("555a4e83-0151-7a10-2072-6cc9f4ac77c1"), "Dominican Republic" }, + { new Guid("55cafe8e-1585-278e-5736-bab16f1b1b8d"), "South Korea" }, + { new Guid("572563f8-2f44-603d-857e-3f8230035e82"), "Mauritania" }, + { new Guid("57dc70e9-17ec-995b-5a60-a7c029b1476a"), "Denmark" }, + { new Guid("59bee04d-32a1-1e53-4a1b-599671a4a693"), "Iraq" }, + { new Guid("5a3893d1-1e36-310c-7633-8f36ffa26315"), "Vietnam" }, + { new Guid("5b9d725f-4e89-0181-74ae-ba87e96590d7"), "Indonesia" }, + { new Guid("5c064eff-a037-a6a3-06ec-92f662903af3"), "Afghanistan" }, + { new Guid("5e7808be-01a7-9495-2320-314ce20871f3"), "Eritrea" }, + { new Guid("5ee9fcd4-5680-3cb4-1174-d85201e82367"), "Luxembourg" }, + { new Guid("5f47ed3b-0b54-95aa-93e8-16bf035c9247"), "Solomon Islands" }, + { new Guid("60a26e14-90ee-5838-4d27-3672a8e88c48"), "Haiti" }, + { new Guid("6133196d-26d0-5f8e-5792-6215aefd668d"), "Pakistan" }, + { new Guid("637e0fb3-34ed-6a1b-7524-3d6cd3155d35"), "Ethiopia" }, + { new Guid("63a948ca-178b-93da-4fdd-e6be10b49a42"), "Colombia" }, + { new Guid("6459ce24-8398-57e0-4a31-48addb374e6d"), "Fiji" }, + { new Guid("6704c135-5af7-88e9-16a5-ad4656fa1be2"), "Israel" }, + { new Guid("6a265dd9-314e-2eb2-a4f8-3faf9c11a39d"), "Monaco" }, + { new Guid("6a5e5c1a-4d04-237e-8415-a7f93945133b"), "Laos" }, + { new Guid("6c4a7b61-3bfd-4a47-95a3-0ca86c72521f"), "Sudan" }, + { new Guid("6d2bc2ca-2f37-3698-7f08-b7b3eeda5bf5"), "Comoros" }, + { new Guid("6df0d56f-3b4e-33fe-6d5f-74da585ea5d0"), "Sierra Leone" }, + { new Guid("6dfb0c67-2ab9-a5bc-1c58-5eaf76016b9d"), "Grenada" }, + { new Guid("6fa56ae5-2091-39c4-0010-ae74ffa2a0f2"), "Russia" }, + { new Guid("72499e6c-80a1-32c3-2692-7216abe7815b"), "Brazil" }, + { new Guid("758d4f58-7371-36c1-26c2-fcdb993806eb"), "Chad" }, + { new Guid("75c8834a-67e9-9ee5-65bb-e2db6a937074"), "Sao Tome and Principe" }, + { new Guid("7708a52a-1d62-8f8b-0a4d-6028ed834994"), "Kazakhstan" }, + { new Guid("77b88575-0e8c-82d0-72bf-06f638b7485f"), "Central African Republic" }, + { new Guid("7915a976-5224-94f8-232f-ac163a11630c"), "Croatia" }, + { new Guid("7b9c857e-3fbd-3d19-38cf-f204da39890c"), "Syria" }, + { new Guid("7d62846b-1841-882f-1cc4-85e2edeea265"), "Armenia" }, + { new Guid("7fce71e6-a14d-5d96-2dc1-1fc6779e02d3"), "Austria" }, + { new Guid("81f4a56e-5d53-47f3-52c3-2cd843434126"), "Hungary" }, + { new Guid("859adf7d-1bf9-87d1-6a9b-4a06ebab6796"), "Oman" }, + { new Guid("896ef05e-0fe4-92a6-229e-63d7a26e0625"), "Sweden" }, + { new Guid("89bd993a-4eaa-6bae-8cf9-22f766fa2a1e"), "Egypt" }, + { new Guid("8b9ac6d0-2320-3f99-8db7-d78c5d53151a"), "Belgium" }, + { new Guid("8c6486fe-2680-4725-1ef3-3d56e3100f08"), "Djibouti" }, + { new Guid("8f9ec4fb-916f-90ea-5162-f486a0fc0893"), "United Kingdom" }, + { new Guid("912f9045-7a3b-151b-2c06-19f899d1787a"), "Singapore" }, + { new Guid("914f8571-1cac-3f1b-14ef-71aa91836616"), "Georgia" }, + { new Guid("932a43ac-56dc-951e-7de5-996314e92e9c"), "Sri Lanka" }, + { new Guid("93ba288b-2a62-1880-1e20-aeb705431890"), "Tunisia" }, + { new Guid("94e831a3-3e52-7bb4-7616-dc0ac75c2d1d"), "Micronesia" }, + { new Guid("95938676-73d1-2031-219d-dc67ba314bdf"), "Tuvalu" }, + { new Guid("967f775b-3c8b-889d-5189-ee71f59f520e"), "Gambia" }, + { new Guid("97c787c7-915b-4878-3aa2-6ca1eec02f65"), "Chile" }, + { new Guid("99532f86-827d-39ba-1c01-b9795ec60bf4"), "Bulgaria" }, + { new Guid("9a0a2c1d-3475-3554-9d18-b11946af6086"), "Suriname" }, + { new Guid("9a79f7fb-27a4-811b-88c3-9de906521017"), "Palestine State" }, + { new Guid("9b36a6c2-4739-69a2-068b-c0b3c87c6f67"), "Niger" }, + { new Guid("9c239e38-640c-3fb2-0bc8-8edaace24c70"), "Iceland" }, + { new Guid("9c9e3bca-5880-437f-4f18-d6998d90173f"), "Venezuela" }, + { new Guid("9d2d676f-97fb-952c-06a9-09d4e9696631"), "South Sudan" }, + { new Guid("9d8cf3fc-222d-a56c-211b-8e8e9edf54e0"), "Libya" }, + { new Guid("9f420922-9842-0d2d-616d-dacee7c25db7"), "Algeria" }, + { new Guid("a0d1f65e-307d-59fa-7792-24a5f0359889"), "India" }, + { new Guid("a2689ae3-3643-6250-a748-8f055cc72da8"), "Yemen" }, + { new Guid("a2c0a247-350e-85e6-9009-8106f5fd49b2"), "Holy See" }, + { new Guid("a484eabd-775b-4b7d-595b-3f5d857f5052"), "Mongolia" }, + { new Guid("a522756f-2fd9-48d1-7443-dd1546fd8b37"), "Slovenia" }, + { new Guid("a5d734a1-021d-9b50-6fd4-b8f24bb96b12"), "France" }, + { new Guid("a64406fb-51f7-2ed2-31af-847f9cf16783"), "Gabon" }, + { new Guid("a681eaeb-1fa0-12d7-93fb-e33a13c188e9"), "Lithuania" }, + { new Guid("a8b54a61-35d8-9b82-76e4-c709561d9952"), "Albania" }, + { new Guid("a9c5d1ec-319a-085c-1ee3-80ae15bd27ed"), "Turkmenistan" }, + { new Guid("a9fe165c-96e6-6bdf-99b0-68f7b2972ef6"), "Greece" }, + { new Guid("aa29ea0b-2681-3475-6e16-1b7d164b081a"), "Namibia" }, + { new Guid("aa6f7328-8f52-9bd1-0bba-9fb4f18a926e"), "Mozambique" }, + { new Guid("aa9d471d-3f2f-5d42-3d01-443a83c12f59"), "Jordan" }, + { new Guid("ab1e3408-7157-2629-29a5-fbd6a61d92a9"), "El Salvador" }, + { new Guid("abe01fc7-a484-7a8e-74b6-c5fa27554505"), "Moldova" }, + { new Guid("afa8b53f-45e6-391f-1c60-db81be664b1b"), "Iran" }, + { new Guid("b0ac51a0-0128-4070-a49f-19b3dc5e8135"), "Guinea" }, + { new Guid("b232a961-1224-244f-27a1-06cba2046c22"), "Liechtenstein" }, + { new Guid("b58da294-9556-8ece-163f-3d89514017a7"), "Somalia" }, + { new Guid("b6667319-a515-1cf5-7392-92e15c52438d"), "San Marino" }, + { new Guid("b6ed03e6-096c-3f87-093d-f3ff4bf34c24"), "Cuba" }, + { new Guid("ba408210-2ea9-8c6c-1d5d-7e33973f1c99"), "Brunei" }, + { new Guid("ba510e09-5109-42a2-63f0-32d7ede12a5a"), "Angola" }, + { new Guid("bb0b41a9-7363-5922-9ce0-939412a9036e"), "Switzerland" }, + { new Guid("bdf3f266-9570-2bb9-330f-9ea51c927068"), "Marshall Islands" }, + { new Guid("be447a08-0a85-5779-8c65-cf15c2c9a5a8"), "Zambia" }, + { new Guid("c12db9c7-7ca1-4aec-34f1-7d0bb4713ca8"), "Belize" }, + { new Guid("c1c8ec1f-58ce-3931-7ad7-ad4b55c14a85"), "Norway" }, + { new Guid("c3553d72-9d17-04d8-6692-12a5a7250008"), "Saint Kitts and Nevis" }, + { new Guid("c3700331-07c2-264c-2335-ba61bc718cac"), "Mali" }, + { new Guid("c576d8f0-5300-2436-2d17-48b699214549"), "Turkey" }, + { new Guid("c776f397-182b-6d0d-09f2-4e440dc093d3"), "Zimbabwe" }, + { new Guid("c79ec6ec-2f3d-0c12-8658-5ccbc1a20a77"), "Guyana" }, + { new Guid("c7fc5498-271d-1027-343a-1560793d1c26"), "Kiribati" }, + { new Guid("c8f8a591-79c3-a19e-94dd-1c96ed1aa23a"), "Guatemala" }, + { new Guid("ca111c84-983b-4525-054c-d14dee3a422c"), "United States of America" }, + { new Guid("caf14a3d-777d-0ee5-63a9-1c3da4e81458"), "Czechia (Czech Republic)" }, + { new Guid("cb245d05-3293-7315-7ee1-eef8a383319c"), "Netherlands" }, + { new Guid("cf1fcfbe-11fa-7009-0d71-d2cf5c80a334"), "Italy" }, + { new Guid("cf59ee2f-144d-99ac-9048-eafaba1f4732"), "Bhutan" }, + { new Guid("cfa8f583-23d4-1475-57ea-ef72ae7b633f"), "Eswatini (fmr. \"Swaziland\")" }, + { new Guid("d2300477-7258-17b8-7e8a-cf65f06a325f"), "Honduras" }, + { new Guid("d4249520-8674-a2c1-0084-683d7aea64db"), "Germany" }, + { new Guid("d5cb2660-9af9-0385-8a99-52871814043d"), "Romania" }, + { new Guid("d726f074-4b1d-3043-39eb-f9b4ab9b2344"), "Finland" }, + { new Guid("d7506bd0-454d-1b83-39e0-905836535271"), "Cyprus" }, + { new Guid("d7bd1f34-6ef7-43a6-24ed-53bca003086c"), "Bahrain" }, + { new Guid("d7cd92d3-4522-5a78-3533-816fc61a293f"), "Tajikistan" }, + { new Guid("d7e310ab-99c3-0a50-2ead-57a2823433ee"), "Dominica" }, + { new Guid("d9060b41-6ea0-8efa-1dfe-ce293774947b"), "Guinea-Bissau" }, + { new Guid("d9a21a29-a0e2-71bc-7308-548cc27b19f1"), "Nauru" }, + { new Guid("d9e7fd6d-77f2-8e76-0174-4c17df936d4e"), "Congo (Congo-Brazzaville)" }, + { new Guid("da82e26d-40bd-0866-0822-3d5468a36c3e"), "Democratic Republic of the Congo" }, + { new Guid("dbe19dde-374b-68a8-41e0-48d5195aa6f5"), "Lesotho" }, + { new Guid("e0276db5-123f-6028-9e3e-eb43f2e06c47"), "Botswana" }, + { new Guid("e34dc09e-2df2-3661-90e1-f03154d45caf"), "Benin" }, + { new Guid("e376c876-6960-270c-8744-583fb7a72f55"), "Tonga" }, + { new Guid("e58f3cfd-069a-4457-23ef-9df8d7fe9ba0"), "Equatorial Guinea" }, + { new Guid("e8b389a9-0afd-4904-46af-464012f102c2"), "Mauritius" }, + { new Guid("ee007dac-7417-54e4-18c2-ec6a678ba130"), "Kuwait" }, + { new Guid("ee06c3ba-4e8c-95c3-88da-6be3f23b9aaa"), "Uruguay" }, + { new Guid("f16e701a-5dbf-a441-3305-20ac536d34dc"), "Burkina Faso" }, + { new Guid("f27f4ccb-4e04-8e05-456e-621788247647"), "Kenya" }, + { new Guid("f5b0c42e-3b0e-3808-1922-fdae58ea075c"), "Panama" }, + { new Guid("f625e01e-4a07-7ff3-0a7e-ce6e27b586ff"), "Peru" }, + { new Guid("f7675604-4744-6d6f-a077-67a3e0c85324"), "United Arab Emirates" }, + { new Guid("f8135306-1323-4f48-7a4b-8d0427cb075b"), "Côte d'Ivoire" }, + { new Guid("fa81562d-1bc4-944c-86a9-6cc5af502265"), "Tanzania" }, + { new Guid("fae877c5-4806-05e8-2068-950cdcea6ba9"), "Bosnia and Herzegovina" }, + { new Guid("fc432d5c-66dd-5660-8186-da84b4e164a0"), "Poland" }, + { new Guid("fd3ab0e3-279a-107a-88e0-93ee1bb45ffb"), "Saint Lucia" }, + { new Guid("ff0258f4-35a2-220b-9d9d-f0fe28226cc3"), "Burundi" }, + { new Guid("ff7c5aa2-6b56-218e-491a-42f4c67ca4a9"), "Canada" } + }); + + migrationBuilder.CreateIndex( + name: "IX_Company_Address_CountryId", + table: "Company", + column: "Address_CountryId"); + + migrationBuilder.CreateIndex( + name: "IX_File_ThumbnailId", + table: "File", + column: "ThumbnailId", + unique: true, + filter: "[ThumbnailId] IS NOT NULL"); + + migrationBuilder.CreateIndex( + name: "IX_Product_CompanyId", + table: "Product", + column: "CompanyId"); + + migrationBuilder.CreateIndex( + name: "IX_Product_DefaultPictureId", + table: "Product", + column: "DefaultPictureId", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_Product_Title", + table: "Product", + column: "Title"); + + migrationBuilder.CreateIndex( + name: "IX_ProductPicture_PicturesId", + table: "ProductPicture", + column: "PicturesId", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_ProductPicture_ProductId", + table: "ProductPicture", + column: "ProductId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "ProductPicture"); + + migrationBuilder.DropTable( + name: "Product"); + + migrationBuilder.DropTable( + name: "Company"); + + migrationBuilder.DropTable( + name: "File"); + + migrationBuilder.DropTable( + name: "Country"); + } + } +} diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.Application.Infrastructure.Migrations/Migrations/AppDbContextModelSnapshot.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.Application.Infrastructure.Migrations/Migrations/AppDbContextModelSnapshot.cs new file mode 100644 index 0000000..3eb66c4 --- /dev/null +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.Application.Infrastructure.Migrations/Migrations/AppDbContextModelSnapshot.cs @@ -0,0 +1,1315 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Monaco.Template.Backend.Application.Infrastructure.Context; + +#nullable disable + +namespace Monaco.Template.Backend.Application.Infrastructure.Migrations.Migrations +{ + [DbContext(typeof(AppDbContext))] + partial class AppDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.8") + .HasAnnotation("Proxies:ChangeTracking", false) + .HasAnnotation("Proxies:CheckEquality", false) + .HasAnnotation("Proxies:LazyLoading", true) + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Monaco.Template.Backend.Domain.Model.Company", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Version") + .IsConcurrencyToken() + .IsRequired() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("rowversion"); + + b.Property("WebSiteUrl") + .HasMaxLength(300) + .HasColumnType("nvarchar(300)"); + + b.HasKey("Id"); + + b.ToTable("Company"); + }); + + modelBuilder.Entity("Monaco.Template.Backend.Domain.Model.Country", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("Id"); + + b.ToTable("Country"); + + b.HasData( + new + { + Id = new Guid("5c064eff-a037-a6a3-06ec-92f662903af3"), + Name = "Afghanistan" + }, + new + { + Id = new Guid("a8b54a61-35d8-9b82-76e4-c709561d9952"), + Name = "Albania" + }, + new + { + Id = new Guid("9f420922-9842-0d2d-616d-dacee7c25db7"), + Name = "Algeria" + }, + new + { + Id = new Guid("26253117-7664-92a9-1a3c-b15cf4bf4c78"), + Name = "Andorra" + }, + new + { + Id = new Guid("ba510e09-5109-42a2-63f0-32d7ede12a5a"), + Name = "Angola" + }, + new + { + Id = new Guid("359da8da-68eb-9466-855d-f0f381f715b8"), + Name = "Antigua and Barbuda" + }, + new + { + Id = new Guid("01ec70b8-6aad-3770-a129-62c0fc294791"), + Name = "Argentina" + }, + new + { + Id = new Guid("7d62846b-1841-882f-1cc4-85e2edeea265"), + Name = "Armenia" + }, + new + { + Id = new Guid("269928e1-37c5-32e0-60c5-bc6da2b8240e"), + Name = "Australia" + }, + new + { + Id = new Guid("7fce71e6-a14d-5d96-2dc1-1fc6779e02d3"), + Name = "Austria" + }, + new + { + Id = new Guid("4cf81cef-66a5-a117-3297-884134e903ee"), + Name = "Azerbaijan" + }, + new + { + Id = new Guid("08b5d3d0-89ed-a66f-3175-05316ae4a309"), + Name = "Bahamas" + }, + new + { + Id = new Guid("d7bd1f34-6ef7-43a6-24ed-53bca003086c"), + Name = "Bahrain" + }, + new + { + Id = new Guid("0d69d315-2825-2d05-9c04-ba1ad47180ac"), + Name = "Bangladesh" + }, + new + { + Id = new Guid("52f81e1e-6903-88e8-199f-cfc5139b0c69"), + Name = "Barbados" + }, + new + { + Id = new Guid("52b13dd7-28fc-9bba-8d59-5c2209531bf5"), + Name = "Belarus" + }, + new + { + Id = new Guid("8b9ac6d0-2320-3f99-8db7-d78c5d53151a"), + Name = "Belgium" + }, + new + { + Id = new Guid("c12db9c7-7ca1-4aec-34f1-7d0bb4713ca8"), + Name = "Belize" + }, + new + { + Id = new Guid("e34dc09e-2df2-3661-90e1-f03154d45caf"), + Name = "Benin" + }, + new + { + Id = new Guid("cf59ee2f-144d-99ac-9048-eafaba1f4732"), + Name = "Bhutan" + }, + new + { + Id = new Guid("1a426c53-787f-527c-5471-c505d6403603"), + Name = "Bolivia" + }, + new + { + Id = new Guid("fae877c5-4806-05e8-2068-950cdcea6ba9"), + Name = "Bosnia and Herzegovina" + }, + new + { + Id = new Guid("e0276db5-123f-6028-9e3e-eb43f2e06c47"), + Name = "Botswana" + }, + new + { + Id = new Guid("72499e6c-80a1-32c3-2692-7216abe7815b"), + Name = "Brazil" + }, + new + { + Id = new Guid("ba408210-2ea9-8c6c-1d5d-7e33973f1c99"), + Name = "Brunei" + }, + new + { + Id = new Guid("99532f86-827d-39ba-1c01-b9795ec60bf4"), + Name = "Bulgaria" + }, + new + { + Id = new Guid("f16e701a-5dbf-a441-3305-20ac536d34dc"), + Name = "Burkina Faso" + }, + new + { + Id = new Guid("ff0258f4-35a2-220b-9d9d-f0fe28226cc3"), + Name = "Burundi" + }, + new + { + Id = new Guid("f8135306-1323-4f48-7a4b-8d0427cb075b"), + Name = "Côte d'Ivoire" + }, + new + { + Id = new Guid("4676b79b-461c-95de-9871-041d2e0b130b"), + Name = "Cabo Verde" + }, + new + { + Id = new Guid("42f62587-3470-5967-77e3-f9b0cf285d90"), + Name = "Cambodia" + }, + new + { + Id = new Guid("01deb5a8-6bd7-1879-9d4b-cb73dd0e9a97"), + Name = "Cameroon" + }, + new + { + Id = new Guid("ff7c5aa2-6b56-218e-491a-42f4c67ca4a9"), + Name = "Canada" + }, + new + { + Id = new Guid("77b88575-0e8c-82d0-72bf-06f638b7485f"), + Name = "Central African Republic" + }, + new + { + Id = new Guid("758d4f58-7371-36c1-26c2-fcdb993806eb"), + Name = "Chad" + }, + new + { + Id = new Guid("97c787c7-915b-4878-3aa2-6ca1eec02f65"), + Name = "Chile" + }, + new + { + Id = new Guid("003548f7-318a-6f99-8a27-d62963b64cb5"), + Name = "China" + }, + new + { + Id = new Guid("63a948ca-178b-93da-4fdd-e6be10b49a42"), + Name = "Colombia" + }, + new + { + Id = new Guid("6d2bc2ca-2f37-3698-7f08-b7b3eeda5bf5"), + Name = "Comoros" + }, + new + { + Id = new Guid("d9e7fd6d-77f2-8e76-0174-4c17df936d4e"), + Name = "Congo (Congo-Brazzaville)" + }, + new + { + Id = new Guid("16eded64-8619-2b73-682f-a703c1cb2d76"), + Name = "Costa Rica" + }, + new + { + Id = new Guid("7915a976-5224-94f8-232f-ac163a11630c"), + Name = "Croatia" + }, + new + { + Id = new Guid("b6ed03e6-096c-3f87-093d-f3ff4bf34c24"), + Name = "Cuba" + }, + new + { + Id = new Guid("d7506bd0-454d-1b83-39e0-905836535271"), + Name = "Cyprus" + }, + new + { + Id = new Guid("caf14a3d-777d-0ee5-63a9-1c3da4e81458"), + Name = "Czechia (Czech Republic)" + }, + new + { + Id = new Guid("da82e26d-40bd-0866-0822-3d5468a36c3e"), + Name = "Democratic Republic of the Congo" + }, + new + { + Id = new Guid("57dc70e9-17ec-995b-5a60-a7c029b1476a"), + Name = "Denmark" + }, + new + { + Id = new Guid("8c6486fe-2680-4725-1ef3-3d56e3100f08"), + Name = "Djibouti" + }, + new + { + Id = new Guid("d7e310ab-99c3-0a50-2ead-57a2823433ee"), + Name = "Dominica" + }, + new + { + Id = new Guid("555a4e83-0151-7a10-2072-6cc9f4ac77c1"), + Name = "Dominican Republic" + }, + new + { + Id = new Guid("2908f020-3d75-3f9a-1a7f-020d1f8d5553"), + Name = "Ecuador" + }, + new + { + Id = new Guid("89bd993a-4eaa-6bae-8cf9-22f766fa2a1e"), + Name = "Egypt" + }, + new + { + Id = new Guid("ab1e3408-7157-2629-29a5-fbd6a61d92a9"), + Name = "El Salvador" + }, + new + { + Id = new Guid("e58f3cfd-069a-4457-23ef-9df8d7fe9ba0"), + Name = "Equatorial Guinea" + }, + new + { + Id = new Guid("5e7808be-01a7-9495-2320-314ce20871f3"), + Name = "Eritrea" + }, + new + { + Id = new Guid("5198e2c0-8107-5bcf-90b4-0054eac52295"), + Name = "Estonia" + }, + new + { + Id = new Guid("cfa8f583-23d4-1475-57ea-ef72ae7b633f"), + Name = "Eswatini (fmr. \"Swaziland\")" + }, + new + { + Id = new Guid("637e0fb3-34ed-6a1b-7524-3d6cd3155d35"), + Name = "Ethiopia" + }, + new + { + Id = new Guid("6459ce24-8398-57e0-4a31-48addb374e6d"), + Name = "Fiji" + }, + new + { + Id = new Guid("d726f074-4b1d-3043-39eb-f9b4ab9b2344"), + Name = "Finland" + }, + new + { + Id = new Guid("a5d734a1-021d-9b50-6fd4-b8f24bb96b12"), + Name = "France" + }, + new + { + Id = new Guid("a64406fb-51f7-2ed2-31af-847f9cf16783"), + Name = "Gabon" + }, + new + { + Id = new Guid("967f775b-3c8b-889d-5189-ee71f59f520e"), + Name = "Gambia" + }, + new + { + Id = new Guid("914f8571-1cac-3f1b-14ef-71aa91836616"), + Name = "Georgia" + }, + new + { + Id = new Guid("d4249520-8674-a2c1-0084-683d7aea64db"), + Name = "Germany" + }, + new + { + Id = new Guid("4fa88e4e-344a-32f8-a5ef-4ef2c33858d2"), + Name = "Ghana" + }, + new + { + Id = new Guid("a9fe165c-96e6-6bdf-99b0-68f7b2972ef6"), + Name = "Greece" + }, + new + { + Id = new Guid("6dfb0c67-2ab9-a5bc-1c58-5eaf76016b9d"), + Name = "Grenada" + }, + new + { + Id = new Guid("c8f8a591-79c3-a19e-94dd-1c96ed1aa23a"), + Name = "Guatemala" + }, + new + { + Id = new Guid("b0ac51a0-0128-4070-a49f-19b3dc5e8135"), + Name = "Guinea" + }, + new + { + Id = new Guid("d9060b41-6ea0-8efa-1dfe-ce293774947b"), + Name = "Guinea-Bissau" + }, + new + { + Id = new Guid("c79ec6ec-2f3d-0c12-8658-5ccbc1a20a77"), + Name = "Guyana" + }, + new + { + Id = new Guid("60a26e14-90ee-5838-4d27-3672a8e88c48"), + Name = "Haiti" + }, + new + { + Id = new Guid("a2c0a247-350e-85e6-9009-8106f5fd49b2"), + Name = "Holy See" + }, + new + { + Id = new Guid("d2300477-7258-17b8-7e8a-cf65f06a325f"), + Name = "Honduras" + }, + new + { + Id = new Guid("81f4a56e-5d53-47f3-52c3-2cd843434126"), + Name = "Hungary" + }, + new + { + Id = new Guid("9c239e38-640c-3fb2-0bc8-8edaace24c70"), + Name = "Iceland" + }, + new + { + Id = new Guid("a0d1f65e-307d-59fa-7792-24a5f0359889"), + Name = "India" + }, + new + { + Id = new Guid("5b9d725f-4e89-0181-74ae-ba87e96590d7"), + Name = "Indonesia" + }, + new + { + Id = new Guid("afa8b53f-45e6-391f-1c60-db81be664b1b"), + Name = "Iran" + }, + new + { + Id = new Guid("59bee04d-32a1-1e53-4a1b-599671a4a693"), + Name = "Iraq" + }, + new + { + Id = new Guid("18bd53bd-3519-69ef-1148-3453ad744c0f"), + Name = "Ireland" + }, + new + { + Id = new Guid("6704c135-5af7-88e9-16a5-ad4656fa1be2"), + Name = "Israel" + }, + new + { + Id = new Guid("cf1fcfbe-11fa-7009-0d71-d2cf5c80a334"), + Name = "Italy" + }, + new + { + Id = new Guid("038fb0db-7012-50fb-9ace-3b9f240d9627"), + Name = "Jamaica" + }, + new + { + Id = new Guid("12d9457c-1c12-9961-60cf-ec2ee534843a"), + Name = "Japan" + }, + new + { + Id = new Guid("aa9d471d-3f2f-5d42-3d01-443a83c12f59"), + Name = "Jordan" + }, + new + { + Id = new Guid("7708a52a-1d62-8f8b-0a4d-6028ed834994"), + Name = "Kazakhstan" + }, + new + { + Id = new Guid("f27f4ccb-4e04-8e05-456e-621788247647"), + Name = "Kenya" + }, + new + { + Id = new Guid("c7fc5498-271d-1027-343a-1560793d1c26"), + Name = "Kiribati" + }, + new + { + Id = new Guid("ee007dac-7417-54e4-18c2-ec6a678ba130"), + Name = "Kuwait" + }, + new + { + Id = new Guid("20bfffe5-7601-63e6-3574-9346e80d5d5c"), + Name = "Kyrgyzstan" + }, + new + { + Id = new Guid("6a5e5c1a-4d04-237e-8415-a7f93945133b"), + Name = "Laos" + }, + new + { + Id = new Guid("1e2e1979-539d-128f-538e-c30b8ba49b42"), + Name = "Latvia" + }, + new + { + Id = new Guid("29e7cce5-28a0-990c-6ded-54e96cad9caa"), + Name = "Lebanon" + }, + new + { + Id = new Guid("dbe19dde-374b-68a8-41e0-48d5195aa6f5"), + Name = "Lesotho" + }, + new + { + Id = new Guid("2092625a-45e4-166e-53cf-bb48408f1b09"), + Name = "Liberia" + }, + new + { + Id = new Guid("9d8cf3fc-222d-a56c-211b-8e8e9edf54e0"), + Name = "Libya" + }, + new + { + Id = new Guid("b232a961-1224-244f-27a1-06cba2046c22"), + Name = "Liechtenstein" + }, + new + { + Id = new Guid("a681eaeb-1fa0-12d7-93fb-e33a13c188e9"), + Name = "Lithuania" + }, + new + { + Id = new Guid("5ee9fcd4-5680-3cb4-1174-d85201e82367"), + Name = "Luxembourg" + }, + new + { + Id = new Guid("408f1ee6-42d3-a211-67c5-32f601b79bd9"), + Name = "Madagascar" + }, + new + { + Id = new Guid("341651be-9d9c-206b-9162-aad732979787"), + Name = "Malawi" + }, + new + { + Id = new Guid("40563307-5fe1-97d4-9d10-d81af5138548"), + Name = "Malaysia" + }, + new + { + Id = new Guid("43da6311-4ed9-9a74-9a46-82847f79a7c3"), + Name = "Maldives" + }, + new + { + Id = new Guid("c3700331-07c2-264c-2335-ba61bc718cac"), + Name = "Mali" + }, + new + { + Id = new Guid("1e3241f2-78b6-56e8-4c2d-4a50647973cf"), + Name = "Malta" + }, + new + { + Id = new Guid("bdf3f266-9570-2bb9-330f-9ea51c927068"), + Name = "Marshall Islands" + }, + new + { + Id = new Guid("572563f8-2f44-603d-857e-3f8230035e82"), + Name = "Mauritania" + }, + new + { + Id = new Guid("e8b389a9-0afd-4904-46af-464012f102c2"), + Name = "Mauritius" + }, + new + { + Id = new Guid("2f7432c5-405f-3f99-4bc3-35e318bd66cc"), + Name = "Mexico" + }, + new + { + Id = new Guid("94e831a3-3e52-7bb4-7616-dc0ac75c2d1d"), + Name = "Micronesia" + }, + new + { + Id = new Guid("abe01fc7-a484-7a8e-74b6-c5fa27554505"), + Name = "Moldova" + }, + new + { + Id = new Guid("6a265dd9-314e-2eb2-a4f8-3faf9c11a39d"), + Name = "Monaco" + }, + new + { + Id = new Guid("a484eabd-775b-4b7d-595b-3f5d857f5052"), + Name = "Mongolia" + }, + new + { + Id = new Guid("46fd6123-5206-2c2c-2832-953d13847069"), + Name = "Montenegro" + }, + new + { + Id = new Guid("09ee26e3-5c82-221e-0729-e47d663a949c"), + Name = "Morocco" + }, + new + { + Id = new Guid("aa6f7328-8f52-9bd1-0bba-9fb4f18a926e"), + Name = "Mozambique" + }, + new + { + Id = new Guid("4ebfeb1d-67d6-2499-5346-740f737100ee"), + Name = "Myanmar (formerly Burma)" + }, + new + { + Id = new Guid("aa29ea0b-2681-3475-6e16-1b7d164b081a"), + Name = "Namibia" + }, + new + { + Id = new Guid("d9a21a29-a0e2-71bc-7308-548cc27b19f1"), + Name = "Nauru" + }, + new + { + Id = new Guid("2c4ab1fa-60da-7c87-35b3-ac6903455853"), + Name = "Nepal" + }, + new + { + Id = new Guid("cb245d05-3293-7315-7ee1-eef8a383319c"), + Name = "Netherlands" + }, + new + { + Id = new Guid("472e0e57-77f5-9c34-8e10-a621c97108f7"), + Name = "New Zealand" + }, + new + { + Id = new Guid("350dc86e-03b2-2c20-1908-b4de7d179de7"), + Name = "Nicaragua" + }, + new + { + Id = new Guid("9b36a6c2-4739-69a2-068b-c0b3c87c6f67"), + Name = "Niger" + }, + new + { + Id = new Guid("2ca00749-35c0-511b-9c2c-b53e5a8f0a71"), + Name = "Nigeria" + }, + new + { + Id = new Guid("10ef2f04-4d96-5b5e-316f-b373a88731be"), + Name = "North Korea" + }, + new + { + Id = new Guid("51c38ab5-0b2b-2994-4eb2-c8e82fe17950"), + Name = "North Macedonia" + }, + new + { + Id = new Guid("c1c8ec1f-58ce-3931-7ad7-ad4b55c14a85"), + Name = "Norway" + }, + new + { + Id = new Guid("859adf7d-1bf9-87d1-6a9b-4a06ebab6796"), + Name = "Oman" + }, + new + { + Id = new Guid("6133196d-26d0-5f8e-5792-6215aefd668d"), + Name = "Pakistan" + }, + new + { + Id = new Guid("3881b3b6-a332-3d35-8a73-43acfbf9045b"), + Name = "Palau" + }, + new + { + Id = new Guid("9a79f7fb-27a4-811b-88c3-9de906521017"), + Name = "Palestine State" + }, + new + { + Id = new Guid("f5b0c42e-3b0e-3808-1922-fdae58ea075c"), + Name = "Panama" + }, + new + { + Id = new Guid("16ff3157-a061-2e81-5ca6-b71e3619376e"), + Name = "Papua New Guinea" + }, + new + { + Id = new Guid("1b84f08e-8e6d-5779-967c-a162c2307153"), + Name = "Paraguay" + }, + new + { + Id = new Guid("f625e01e-4a07-7ff3-0a7e-ce6e27b586ff"), + Name = "Peru" + }, + new + { + Id = new Guid("19be2963-072b-2f4b-0f85-558d90ee1770"), + Name = "Philippines" + }, + new + { + Id = new Guid("fc432d5c-66dd-5660-8186-da84b4e164a0"), + Name = "Poland" + }, + new + { + Id = new Guid("2b1486b9-0cfa-2dc6-3f70-4ee2f11955b4"), + Name = "Portugal" + }, + new + { + Id = new Guid("47ac0edf-9beb-345b-0e4b-bccb0c1a2032"), + Name = "Qatar" + }, + new + { + Id = new Guid("d5cb2660-9af9-0385-8a99-52871814043d"), + Name = "Romania" + }, + new + { + Id = new Guid("6fa56ae5-2091-39c4-0010-ae74ffa2a0f2"), + Name = "Russia" + }, + new + { + Id = new Guid("362ac8d8-6fba-a641-8272-958f9e553b54"), + Name = "Rwanda" + }, + new + { + Id = new Guid("c3553d72-9d17-04d8-6692-12a5a7250008"), + Name = "Saint Kitts and Nevis" + }, + new + { + Id = new Guid("fd3ab0e3-279a-107a-88e0-93ee1bb45ffb"), + Name = "Saint Lucia" + }, + new + { + Id = new Guid("420b0acb-a1b0-27e5-45fc-3c6e96f25361"), + Name = "Saint Vincent and the Grenadines" + }, + new + { + Id = new Guid("37425b6c-2940-370c-805d-27cb7af97f88"), + Name = "Samoa" + }, + new + { + Id = new Guid("b6667319-a515-1cf5-7392-92e15c52438d"), + Name = "San Marino" + }, + new + { + Id = new Guid("75c8834a-67e9-9ee5-65bb-e2db6a937074"), + Name = "Sao Tome and Principe" + }, + new + { + Id = new Guid("1e9ab108-4d4b-1812-21d9-5c90d7d897ea"), + Name = "Saudi Arabia" + }, + new + { + Id = new Guid("3cb2d6c7-8bb5-191d-183d-b201063d5491"), + Name = "Senegal" + }, + new + { + Id = new Guid("1995e756-0e82-9463-1627-feeb766d2d0d"), + Name = "Serbia" + }, + new + { + Id = new Guid("1ff73b0c-27c4-9d4a-3d5b-ec77a6612d56"), + Name = "Seychelles" + }, + new + { + Id = new Guid("6df0d56f-3b4e-33fe-6d5f-74da585ea5d0"), + Name = "Sierra Leone" + }, + new + { + Id = new Guid("912f9045-7a3b-151b-2c06-19f899d1787a"), + Name = "Singapore" + }, + new + { + Id = new Guid("53e7d0fc-816f-59dd-7b4a-0ade62330830"), + Name = "Slovakia" + }, + new + { + Id = new Guid("a522756f-2fd9-48d1-7443-dd1546fd8b37"), + Name = "Slovenia" + }, + new + { + Id = new Guid("5f47ed3b-0b54-95aa-93e8-16bf035c9247"), + Name = "Solomon Islands" + }, + new + { + Id = new Guid("b58da294-9556-8ece-163f-3d89514017a7"), + Name = "Somalia" + }, + new + { + Id = new Guid("03a82f52-22d5-8259-1072-429791258b72"), + Name = "South Africa" + }, + new + { + Id = new Guid("55cafe8e-1585-278e-5736-bab16f1b1b8d"), + Name = "South Korea" + }, + new + { + Id = new Guid("9d2d676f-97fb-952c-06a9-09d4e9696631"), + Name = "South Sudan" + }, + new + { + Id = new Guid("534a826b-70ef-2128-1a4c-52e23b7d5447"), + Name = "Spain" + }, + new + { + Id = new Guid("932a43ac-56dc-951e-7de5-996314e92e9c"), + Name = "Sri Lanka" + }, + new + { + Id = new Guid("6c4a7b61-3bfd-4a47-95a3-0ca86c72521f"), + Name = "Sudan" + }, + new + { + Id = new Guid("9a0a2c1d-3475-3554-9d18-b11946af6086"), + Name = "Suriname" + }, + new + { + Id = new Guid("896ef05e-0fe4-92a6-229e-63d7a26e0625"), + Name = "Sweden" + }, + new + { + Id = new Guid("bb0b41a9-7363-5922-9ce0-939412a9036e"), + Name = "Switzerland" + }, + new + { + Id = new Guid("7b9c857e-3fbd-3d19-38cf-f204da39890c"), + Name = "Syria" + }, + new + { + Id = new Guid("d7cd92d3-4522-5a78-3533-816fc61a293f"), + Name = "Tajikistan" + }, + new + { + Id = new Guid("fa81562d-1bc4-944c-86a9-6cc5af502265"), + Name = "Tanzania" + }, + new + { + Id = new Guid("439e3108-0908-4d90-6f5c-1974362b74b1"), + Name = "Thailand" + }, + new + { + Id = new Guid("47e7cc9c-4368-8ab3-056b-66a1351c24cd"), + Name = "Timor-Leste" + }, + new + { + Id = new Guid("492a6eb7-5ca3-8e50-3559-c71205b71c3b"), + Name = "Togo" + }, + new + { + Id = new Guid("e376c876-6960-270c-8744-583fb7a72f55"), + Name = "Tonga" + }, + new + { + Id = new Guid("2f7c276f-4d0d-9368-4132-c04149924bb5"), + Name = "Trinidad and Tobago" + }, + new + { + Id = new Guid("93ba288b-2a62-1880-1e20-aeb705431890"), + Name = "Tunisia" + }, + new + { + Id = new Guid("c576d8f0-5300-2436-2d17-48b699214549"), + Name = "Turkey" + }, + new + { + Id = new Guid("a9c5d1ec-319a-085c-1ee3-80ae15bd27ed"), + Name = "Turkmenistan" + }, + new + { + Id = new Guid("95938676-73d1-2031-219d-dc67ba314bdf"), + Name = "Tuvalu" + }, + new + { + Id = new Guid("2cfae83c-0f45-72d1-4624-5af1e10e6147"), + Name = "Uganda" + }, + new + { + Id = new Guid("1b837dfa-0bda-54f3-918a-beef19f691e5"), + Name = "Ukraine" + }, + new + { + Id = new Guid("f7675604-4744-6d6f-a077-67a3e0c85324"), + Name = "United Arab Emirates" + }, + new + { + Id = new Guid("8f9ec4fb-916f-90ea-5162-f486a0fc0893"), + Name = "United Kingdom" + }, + new + { + Id = new Guid("ca111c84-983b-4525-054c-d14dee3a422c"), + Name = "United States of America" + }, + new + { + Id = new Guid("ee06c3ba-4e8c-95c3-88da-6be3f23b9aaa"), + Name = "Uruguay" + }, + new + { + Id = new Guid("2f02c930-1d71-8ca6-49e7-0d3679a522ea"), + Name = "Uzbekistan" + }, + new + { + Id = new Guid("28dc2817-94b4-955d-10bc-6a8793dd386c"), + Name = "Vanuatu" + }, + new + { + Id = new Guid("9c9e3bca-5880-437f-4f18-d6998d90173f"), + Name = "Venezuela" + }, + new + { + Id = new Guid("5a3893d1-1e36-310c-7633-8f36ffa26315"), + Name = "Vietnam" + }, + new + { + Id = new Guid("a2689ae3-3643-6250-a748-8f055cc72da8"), + Name = "Yemen" + }, + new + { + Id = new Guid("be447a08-0a85-5779-8c65-cf15c2c9a5a8"), + Name = "Zambia" + }, + new + { + Id = new Guid("c776f397-182b-6d0d-09f2-4e440dc093d3"), + Name = "Zimbabwe" + }); + }); + + modelBuilder.Entity("Monaco.Template.Backend.Domain.Model.File", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ContentType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Discriminator") + .IsRequired() + .HasMaxLength(8) + .HasColumnType("nvarchar(8)"); + + b.Property("Extension") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("IsTemp") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(300) + .HasColumnType("nvarchar(300)"); + + b.Property("Size") + .HasColumnType("bigint"); + + b.Property("UploadedOn") + .HasColumnType("datetime2"); + + b.HasKey("Id"); + + b.ToTable("File", (string)null); + + b.HasDiscriminator().IsComplete(true).HasValue("File"); + + b.UseTphMappingStrategy(); + }); + + modelBuilder.Entity("Monaco.Template.Backend.Domain.Model.Product", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CompanyId") + .HasColumnType("uniqueidentifier"); + + b.Property("DefaultPictureId") + .HasColumnType("uniqueidentifier"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("Price") + .HasPrecision(10, 2) + .HasColumnType("decimal(10,2)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("Id"); + + b.HasIndex("CompanyId"); + + b.HasIndex("DefaultPictureId") + .IsUnique(); + + b.HasIndex("Title"); + + b.ToTable("Product"); + }); + + modelBuilder.Entity("ProductPicture", b => + { + b.Property("PicturesId") + .HasColumnType("uniqueidentifier"); + + b.Property("ProductId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("PicturesId", "ProductId"); + + b.HasIndex("PicturesId") + .IsUnique(); + + b.HasIndex("ProductId"); + + b.ToTable("ProductPicture"); + }); + + modelBuilder.Entity("Monaco.Template.Backend.Domain.Model.Document", b => + { + b.HasBaseType("Monaco.Template.Backend.Domain.Model.File"); + + b.HasDiscriminator().HasValue("Document"); + }); + + modelBuilder.Entity("Monaco.Template.Backend.Domain.Model.Image", b => + { + b.HasBaseType("Monaco.Template.Backend.Domain.Model.File"); + + b.Property("DateTaken") + .HasColumnType("datetime2"); + + b.Property("ThumbnailId") + .HasColumnType("uniqueidentifier"); + + b.HasIndex("ThumbnailId") + .IsUnique() + .HasFilter("[ThumbnailId] IS NOT NULL"); + + b.HasDiscriminator().HasValue("Image"); + }); + + modelBuilder.Entity("Monaco.Template.Backend.Domain.Model.Company", b => + { + b.OwnsOne("Monaco.Template.Backend.Domain.Model.Address", "Address", b1 => + { + b1.Property("CompanyId") + .HasColumnType("uniqueidentifier"); + + b1.Property("City") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b1.Property("CountryId") + .HasColumnType("uniqueidentifier"); + + b1.Property("County") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b1.Property("PostCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b1.Property("Street") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b1.HasKey("CompanyId"); + + b1.HasIndex("CountryId"); + + b1.ToTable("Company"); + + b1.WithOwner() + .HasForeignKey("CompanyId"); + + b1.HasOne("Monaco.Template.Backend.Domain.Model.Country", "Country") + .WithMany() + .HasForeignKey("CountryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b1.Navigation("Country"); + }); + + b.Navigation("Address"); + }); + + modelBuilder.Entity("Monaco.Template.Backend.Domain.Model.Product", b => + { + b.HasOne("Monaco.Template.Backend.Domain.Model.Company", "Company") + .WithMany("Products") + .HasForeignKey("CompanyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Monaco.Template.Backend.Domain.Model.Image", "DefaultPicture") + .WithOne() + .HasForeignKey("Monaco.Template.Backend.Domain.Model.Product", "DefaultPictureId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Company"); + + b.Navigation("DefaultPicture"); + }); + + modelBuilder.Entity("ProductPicture", b => + { + b.HasOne("Monaco.Template.Backend.Domain.Model.Image", null) + .WithMany() + .HasForeignKey("PicturesId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Monaco.Template.Backend.Domain.Model.Product", null) + .WithMany() + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.ClientCascade) + .IsRequired(); + }); + + modelBuilder.Entity("Monaco.Template.Backend.Domain.Model.Image", b => + { + b.HasOne("Monaco.Template.Backend.Domain.Model.Image", "Thumbnail") + .WithOne() + .HasForeignKey("Monaco.Template.Backend.Domain.Model.Image", "ThumbnailId"); + + b.OwnsOne("Monaco.Template.Backend.Domain.Model.GpsPosition", "Position", b1 => + { + b1.Property("ImageId") + .HasColumnType("uniqueidentifier"); + + b1.Property("Latitude") + .HasColumnType("real"); + + b1.Property("Longitude") + .HasColumnType("real"); + + b1.HasKey("ImageId"); + + b1.ToTable("File"); + + b1.WithOwner() + .HasForeignKey("ImageId"); + }); + + b.OwnsOne("Monaco.Template.Backend.Domain.Model.ImageDimensions", "Dimensions", b1 => + { + b1.Property("ImageId") + .HasColumnType("uniqueidentifier"); + + b1.Property("Height") + .HasColumnType("int"); + + b1.Property("Width") + .HasColumnType("int"); + + b1.HasKey("ImageId"); + + b1.ToTable("File"); + + b1.WithOwner() + .HasForeignKey("ImageId"); + }); + + b.Navigation("Dimensions") + .IsRequired(); + + b.Navigation("Position"); + + b.Navigation("Thumbnail"); + }); + + modelBuilder.Entity("Monaco.Template.Backend.Domain.Model.Company", b => + { + b.Navigation("Products"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Monaco.Template.Backend.IntegrationTests.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Monaco.Template.Backend.IntegrationTests.csproj index 3311408..efbfaa2 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Monaco.Template.Backend.IntegrationTests.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Monaco.Template.Backend.IntegrationTests.csproj @@ -46,17 +46,23 @@ + + + + Always + Always + From 24605468a2a6325f89f13f7618534cdf8f77d5d0 Mon Sep 17 00:00:00 2001 From: CesarD Date: Thu, 20 Feb 2025 18:00:13 +0100 Subject: [PATCH 7/9] Fixes for PR comments. --- ....Template.Backend.ArchitectureTests.csproj | 6 +++++ .../Factories/ApiWebApplicationFactory.cs | 26 ++++++++++++------- .../Factories/WorkerServiceFactory.cs | 22 +++++++++------- .../IntegrationTest.cs | 6 +++-- .../Tests/ProductsTests.cs | 15 +++++++++-- 5 files changed, 52 insertions(+), 23 deletions(-) diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.ArchitectureTests/Monaco.Template.Backend.ArchitectureTests.csproj b/src/Content/Backend/Solution/Monaco.Template.Backend.ArchitectureTests/Monaco.Template.Backend.ArchitectureTests.csproj index f80d472..5205c0b 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.ArchitectureTests/Monaco.Template.Backend.ArchitectureTests.csproj +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.ArchitectureTests/Monaco.Template.Backend.ArchitectureTests.csproj @@ -25,13 +25,19 @@ + + + + + + diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Factories/ApiWebApplicationFactory.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Factories/ApiWebApplicationFactory.cs index 9f6205e..0dc06ee 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Factories/ApiWebApplicationFactory.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Factories/ApiWebApplicationFactory.cs @@ -1,4 +1,6 @@ -using MassTransit; +#if (massTransitIntegration) +using MassTransit; +#endif using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc.Testing; using Microsoft.Extensions.Configuration; @@ -16,21 +18,22 @@ public ApiWebApplicationFactory(AppFixture fixture) protected override void ConfigureWebHost(IWebHostBuilder builder) => builder.UseConfiguration(new ConfigurationManager - { - ["ConnectionStrings:AppDbContext"] = _fixture.SqlConnectionString, + { + ["ConnectionStrings:AppDbContext"] = _fixture.SqlConnectionString, #if (auth) - ["SSO:Authority"] = _fixture.KeycloakRealmUrl, + ["SSO:Authority"] = _fixture.KeycloakRealmUrl, #endif #if (filesSupport) - ["BlobStorage:ConnectionString"] = _fixture.StorageConnectionString, + ["BlobStorage:ConnectionString"] = _fixture.StorageConnectionString, #endif #if (massTransitIntegration) - ["MessageBus:RabbitMQ:Host"] = _fixture.RabbitMqHost, - ["MessageBus:RabbitMQ:Port"] = _fixture.RabbitMqPort.ToString(), - ["MessageBus:RabbitMQ:Username"] = _fixture.RabbitMqUsername, - ["MessageBus:RabbitMQ:Password"] = _fixture.RabbitMqPassword + ["MessageBus:RabbitMQ:Host"] = _fixture.RabbitMqHost, + ["MessageBus:RabbitMQ:Port"] = _fixture.RabbitMqPort.ToString(), + ["MessageBus:RabbitMQ:Username"] = _fixture.RabbitMqUsername, + ["MessageBus:RabbitMQ:Password"] = _fixture.RabbitMqPassword #endif - }) + }) +#if (massTransitIntegration) .UseSetting("https_port", "8080") .ConfigureServices((context, services) => { @@ -49,5 +52,8 @@ protected override void ConfigureWebHost(IWebHostBuilder builder) => })); }); }); +#else + .UseSetting("https_port", "8080"); +#endif } diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Factories/WorkerServiceFactory.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Factories/WorkerServiceFactory.cs index b57e7c7..5ae0d33 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Factories/WorkerServiceFactory.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Factories/WorkerServiceFactory.cs @@ -1,4 +1,6 @@ -using MassTransit; +#if (massTransitIntegration) +using MassTransit; +#endif using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc.Testing; using Microsoft.Extensions.Configuration; @@ -18,18 +20,19 @@ public WorkerServiceFactory(AppFixture fixture) protected override void ConfigureWebHost(IWebHostBuilder builder) => builder.UseConfiguration(new ConfigurationManager - { - ["ConnectionStrings:AppDbContext"] = _fixture.SqlConnectionString, + { + ["ConnectionStrings:AppDbContext"] = _fixture.SqlConnectionString, #if (filesSupport) - ["BlobStorage:ConnectionString"] = _fixture.StorageConnectionString, + ["BlobStorage:ConnectionString"] = _fixture.StorageConnectionString, #endif #if (massTransitIntegration) - ["MessageBus:RabbitMQ:Host"] = _fixture.RabbitMqHost, - ["MessageBus:RabbitMQ:Port"] = _fixture.RabbitMqPort.ToString(), - ["MessageBus:RabbitMQ:Username"] = _fixture.RabbitMqUsername, - ["MessageBus:RabbitMQ:Password"] = _fixture.RabbitMqPassword + ["MessageBus:RabbitMQ:Host"] = _fixture.RabbitMqHost, + ["MessageBus:RabbitMQ:Port"] = _fixture.RabbitMqPort.ToString(), + ["MessageBus:RabbitMQ:Username"] = _fixture.RabbitMqUsername, + ["MessageBus:RabbitMQ:Password"] = _fixture.RabbitMqPassword #endif - }) + }) +#if (massTransitIntegration) .ConfigureServices((context, services) => { var configuration = context.Configuration; @@ -52,6 +55,7 @@ protected override void ConfigureWebHost(IWebHostBuilder builder) => }); }); }) +#endif .Configure(_ => { }); public IHost GetHostInstance() => diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/IntegrationTest.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/IntegrationTest.cs index 961006f..a8a759d 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/IntegrationTest.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/IntegrationTest.cs @@ -9,7 +9,9 @@ #endif using Monaco.Template.Backend.Application.Infrastructure.Context; using System.Diagnostics.CodeAnalysis; +#if (massTransitIntegration) using MassTransit.Testing; +#endif using Monaco.Template.Backend.IntegrationTests.Factories; #if (apiService && auth) using Monaco.Template.Backend.IntegrationTests.Auth; @@ -128,13 +130,13 @@ await GetDbContext().Database .ExecuteSqlRawAsync(script); } -#if (apiService) +#if (apiService && massTransitIntegration) protected virtual ITestHarness GetApiTestHarness() => WebAppFactory.Services .GetTestHarness(); #endif -#if (workerService) +#if (workerService && massTransitIntegration) protected virtual ITestHarness GetServiceTestHarness() => WorkerServiceInstance.Services .GetTestHarness(); diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs index f4da19b..38d305a 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs @@ -11,7 +11,9 @@ using System.Diagnostics.CodeAnalysis; using System.Net; using Monaco.Template.Backend.Messages.V1; +#if (workerService && massTransitIntegration) using Monaco.Template.Backend.Service.Consumers; +#endif using File = System.IO.File; namespace Monaco.Template.Backend.IntegrationTests.Tests; @@ -257,10 +259,13 @@ public async Task CreateNewProductSucceeds(string title, #if (auth) await SetupAccessToken(); #endif +#if (apiService && massTransitIntegration) var apiTestHarness = GetApiTestHarness(); - //await apiTestHarness.Start(); +#endif +#if (workerService && massTransitIntegration) var serviceTestHarness = GetServiceTestHarness(); - //await serviceTestHarness.Start(); +#endif + var dbContext = GetDbContext(); var tempImages = await dbContext.Set() .Where(i => i.IsTemp && i.ThumbnailId.HasValue) @@ -332,10 +337,14 @@ [.. tempImages.Select(i => i.Id)], .Should() .NotBeNull(); }); +#if (massTransitIntegration) +#if (apiService) (await apiTestHarness.Published.Any()) .Should() .BeTrue(); +#endif +#if (workerService) (await serviceTestHarness.Consumed.Any()) .Should() @@ -345,6 +354,8 @@ [.. tempImages.Select(i => i.Id)], (await consumerHarness.Consumed.Any()) .Should() .BeTrue(); +#endif +#endif } [Theory(DisplayName = "Edit existing Product succeeds")] From daf615f0e328a6ec65bf59a689b8493cc2445042 Mon Sep 17 00:00:00 2001 From: CesarD Date: Thu, 20 Feb 2025 18:13:42 +0100 Subject: [PATCH 8/9] Missing fix for the comments. --- src/Content/Backend/Solution/.template.config/template.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Content/Backend/Solution/.template.config/template.json b/src/Content/Backend/Solution/.template.config/template.json index 8ff2de3..34ac5a9 100644 --- a/src/Content/Backend/Solution/.template.config/template.json +++ b/src/Content/Backend/Solution/.template.config/template.json @@ -671,6 +671,7 @@ "8d8e327d-41d9-466f-a81a-cc66f1a3fffe", "baf0203f-b036-46b3-ac04-e3847315b616", "fae04ec0-301f-11d3-bf4b-00c04f79efbc", - "ccaa345b-ede0-441f-8d19-ddafe52efb9d" + "ccaa345b-ede0-441f-8d19-ddafe52efb9d", + "2624756f-bbbb-4317-a3df-b5f683700661" ] } \ No newline at end of file From 017d71ddee62c02dd0dee766ea3595f2bb525686 Mon Sep 17 00:00:00 2001 From: CesarD Date: Thu, 20 Feb 2025 21:09:03 +0100 Subject: [PATCH 9/9] Fixing PR comments. --- src/Content/Backend/Solution/.template.config/template.json | 3 ++- .../Tests/ProductsTests.cs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Content/Backend/Solution/.template.config/template.json b/src/Content/Backend/Solution/.template.config/template.json index 34ac5a9..c0851ff 100644 --- a/src/Content/Backend/Solution/.template.config/template.json +++ b/src/Content/Backend/Solution/.template.config/template.json @@ -672,6 +672,7 @@ "baf0203f-b036-46b3-ac04-e3847315b616", "fae04ec0-301f-11d3-bf4b-00c04f79efbc", "ccaa345b-ede0-441f-8d19-ddafe52efb9d", - "2624756f-bbbb-4317-a3df-b5f683700661" + "2624756f-bbbb-4317-a3df-b5f683700661", + "60c8c40d-9bb1-491e-b364-8b22f668408a" ] } \ No newline at end of file diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs index 38d305a..e7fa9ec 100644 --- a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs +++ b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Tests/ProductsTests.cs @@ -10,8 +10,8 @@ using Monaco.Template.Backend.Domain.Model; using System.Diagnostics.CodeAnalysis; using System.Net; -using Monaco.Template.Backend.Messages.V1; #if (workerService && massTransitIntegration) +using Monaco.Template.Backend.Messages.V1; using Monaco.Template.Backend.Service.Consumers; #endif using File = System.IO.File;

>tH>2>KHeZs>HMDP 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 QfcoF~h5LUBKj$6%KaA@x6951J literal 0 HcmV?d00001 diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Imports/Pictures/NET_Core_Logo.png b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Imports/Pictures/NET_Core_Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ebab542b202234db53399d3b1d70c9d40824068e GIT binary patch literal 123528 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 Z=)wQ361Rq9%YK4u7*AI}mvv4FO#ofIp!xs+ literal 0 HcmV?d00001 diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Imports/Pictures/NET_Logo.png b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Imports/Pictures/NET_Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0cde681437d5ada89509a1dea78a19250e4ff7c9 GIT binary patch literal 13343 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 literal 0 HcmV?d00001 diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Imports/Pictures/dotnet-bot-1.png b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Imports/Pictures/dotnet-bot-1.png new file mode 100644 index 0000000000000000000000000000000000000000..30da33af3cac46e55896fd71d36bf907b423b26c GIT binary patch literal 22831 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 literal 0 HcmV?d00001 diff --git a/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Imports/Pictures/dotnet-bot-2.png b/src/Content/Backend/Solution/Monaco.Template.Backend.IntegrationTests/Imports/Pictures/dotnet-bot-2.png new file mode 100644 index 0000000000000000000000000000000000000000..826503a987832d434f8749120061c48f53a9fae9 GIT binary patch literal 253552 zcmbqa1y_`Ru%=mh0i}_pLAtxU1q77t?pRVfr8@;_l~NiO1j$88nx(tDL6E!fzxNZ| z_Z-f$9QGFz&&)hC8}mk80SA)|69EAMM@dmu3jqNMf`EXm4nTwd1z)8n5B`Gap`{>= zP(4Di3x9)RBc&#Vfbb&`>)s3%{vN|s@x2EE0&e%y4`RQ|7fS?$$5JI(skc7H2M;!N z^lI+gF}Ip}Gi+?H79Z**1<2x^c{w|W%r{16U7^{0A6+{2c*kw!dB$%NsG>`f>q>@4 zjza0s$ZQ`xCG_{lb@T>lcO|YbQr*t-J-l=lzkLkSSs03o#!kn7^?0&Q%1rwIeK72M zxoBx=*WbM}GNN>)z&h#HOdG zBX000Ix1WLefasw8?snvLiXy5u^u9fK2gwxm(2fO>n(~=|DPR41oT=JP&9D5Zv&#wzhs3c+ayt4242{0+Ub!<@&S#df*}=}+j5|9JhE4zx+X_7XM(Uc)gA$v zNkaC8HC)}I63|d_+I7;tv$NW4Hpx3skQsU`l|uCL!9gV}J3AQ+=kKhfvOcoTn%`S< zVcaQRlANm`pvZb*6)#1&!YXma9o!Ct4H1z zT+>``X%VUr@hWEHUVXkXe{zIB{KhD%L|ul|fpgo@@&c+azxPKRNMC#-QE*NS4Fl|% zX{v31-&KDtQATdt*ziGhUPZKib_}<0v)yx7Db)$(!mzSciDH^AQ(XJZuoM!=O?tp!R!F zys^zNyd-_a1*Q7xQA}y%;ZRd6t6qvjd4JSZE6pSfm;e1J6#h~3aCu@j`f!|nK3SYp zROpf5{KEE2ozTRq+?oa{pYEm1%o$KymVjkfF5DAOFKDq&%GP`eVcwY*9Nf_rW0Ic#6X$S}UV#2;-0+Kg@8)u~vH%h`UrocDtwte?R$S`HT0# zHkP8L@7}*Bl^k~k8b`C|7*h1$reqMzDal^@^4gGGBau5n2OR_foO4D**jc=WKLdpR z@5BB&lyI%syaF1j5=mEJwcz|UtZ!is!AT+CV5j#PWijVMu%)7yGn@ks3t~n2#NeoL z96BXGLsq`9Wo>TqX&R!);;a*57Zz!^cxKIKsqt?TFm%|b@a>5Eaol>fxmQx2-FR$A zx98hV*O+UO(|K20w3I~5a6_eC|0>M@Atlwo2eq2nV2)Wy7y%`k!rnSy;BN`j`+(s4 zW7(#DlNY#mt!L>}&%ElvOTmJbw%e)9Ez?-Ry~k3N4{9kuyUr{ffPsyK28*aPf`Es4 zlk@a2SaX&@Ud+wacVaFidXKgebA+itRq`%&vaZ-c2An5L)F9@D4MTmDzqhrCNQ!VtP&IN3P*HR7a6afm6q|-ju&2q4dvVwS8xaI500m zxT0;zMxctTkJlP@3edq}^J{yd`1hRkITqyOK1tTCFNBEeKyK_v+Vuxx#6cO^fU13B zV*Mef4PXUtES_!AHmDwwwCD(VHYQI{>SA2n6CwrRlJpE}AN&Mb3J@-)((<;BWw^x? zQO+9;kpi$hQYsgp{aH9^z*)YJ6pf?ww9XgES|10j`6FJY4~(K_?JIIn=f;yk%J4$4lv#mtOv6IBX)L zG6iZGrBC9sdGTJ-#xhUJ6bti5=#I0aW7aT}|6b9QnnWN%vM3J3=!Qv2ePdWB|LaVW zF_evL;qcICchAkc$*Jdi&BAO$v$}hGTk3CE=D*Js8~C;JNxQoluX6RbBa=L<~0P=pZCAes~qPBAvsWie04YtbJfPL--}) zHq88uZ5;aVysz?A36!;pG6PN(Q%Tt{W|5HshnI6EvCb#sl(Ie=OZVHs;Md-{)`PwNc z9rfi9oTXQ@aySjl?KKiCCDeP%wo=wNE5A$6TeJV_KqO22BMjVH7^pq|MWZ5j ze7|flG1A8d!kA0$^xgnAB?{*4Xf)nOl026x#%4PEN47qJYE8<@N<>UNoGidUm1InN z^Q0kC8-ge2&f}8grPh!t0<{VNk9e&Oj{sgBZ3{P+*XaP8Tp>Gt(u-%Pz6P6ZUwjG5`22~n4 ze9uecr%`em++}A)&Iyw}rLEEG1DlFQNsoxwXlws%-n{+_dkdw3qRe9J+!3 zLj~j#jCl5NV(#Age}zgtIv7X0DXeM`P!iqXppC7To*p>O)Om0OH%HZ&%t5)1s|tUg zEb75JMx!O~M61sg#3q8fMv~yrNTa<>;|$yk6=eD9%x|53F`a&L6?alybG#!|MhK2g zpE64r$B;mN_vhFNrQzHy0Jn@bh$>3O+OFxqGD>k zNir0fS~;vr5N+iLJLLc9aEej`h}Oq(<~Ji;9Z zCi{fmHUJ<4;Dse|&*)|%Q7H-M$hW-sMIv3jKSj=iN4Qo>fRaK#iYQPN5SGG}V4m{G zv>=M)fuTybH@-g|o~UE0^=r^wZ0L0wP(nG*!11JQmXDT*;Xk9p`#by={#znxQaPtt zuwk!Wt2!0-gDWZ~8&e(*VaU{!+B|;Ya`!6%MdQtUvEY*ka%9Eh69?NUH(XVUJX`xE z)YZd!blsonn`|&Lhw&3zU`d7?AQnGgr};ib|M?2tfpxm@s}M>mgJBV?V-Db#sB#mI z@jFFai;KHhA~ZL#=KU{UqMF736*^L?ple7qwZ=sga5!NbA}d>!JCDnbI2`9>|EkT& zp{Vv^El&>G)z$SU5Al)L_!(YdlFuT-29|*|fJ+moyE@~nH>BWZk$FdsMwZ-Mh&&z4 zF2w2AmAR^Lq|!f3+LqJ>x=!Oo)Z~pU0%P7$Tc0L=NNu-xTNY0q_jY9t2SR--tGtg= zJSrypQ%r+L54dq5eo3TAGR-GWuu1>V$Xsh-jPM*}65(qv>Hw-O zmdYQMiP-v4D@0ElXD(KT!a&z8?_UkASirE&#L-z2d$=X(> zu<|e=84Z4cCQI*3{S$bx^*{x6Mrw5Mi)H3T+ZwPF zN=Z6B(-hYx;{#*4;nmz?zRL4a!kIUsD8Svi{Uj0e&-3lTv+IRAu}jyP7X%Ugkx`Awj>7y5aiT?Q@oy zhx1=LhVUM94Q0*8opa#>^e;Qw&&7BCGv0(CDn>6dn`Xu%yRF9^pw$H>9p}J_pV@Cy zsq!}wd*^^Na;MDJCo7JtLoOJ8Li!h>C!yNZ8ac8_JdtAIM5vbj#I^Ew%I+}hN>J?Q zxJOSAK=iV^1aX+1YC!NXa}vq!Z;9;n+kCxeF@2?ePV~avP|oXzNcVE;=NnS+AQ+|< z296Utw(jwjmxJ7SlwJFqxhR0D%ydD&$-B?6MIG-sovcZQ?475oGfypVgf#~a_cSM3 zgminSNh(xV_mj)JrWN~vKr?Uk*%90^F$#N4blQC{f6e$ivDYPyEmEF5@Bjsus{emd z4Q_w`;{in~=g&?)k?%)K(D#h8e^Hf(2M4oUXC9&Z3io$mOQf{z(UtAy4(~WbY;4fP zNNxWzpL%KIV3EbHH@eNS*Ha!s10l>9BTw4$IeT7Ls8jH#zP;3^mAmc0{^;;kblMR? z`Hny{x@o?th<=njHtvFF_nmwGZ(pgdT~M$sNT$O7D&&iD@5>E{XBa;B5*5L_y`}=) zr`jK04=X$w)+lr6Ne+0XzEuY$J3xPBQ;n}-k_~z^A+`5h&8U+^ZKS$33}DKKX&noqV)84UsCuA5HR> zAq9qcfJ_QBU2eKD{qLfuthCSjBHh=Wv)dAQycC}ju|u0Zazx&Tq)rK_50HR{A6DAp{G;z zT%3pOW;P+L!r5ZjZQ{re+a^H{4a$!(UQadx^|4NVDla_3%riqnJNR?V3z{y8Aq4Su z<^--+uJzng`iwBBy&a+C*pRR z$y-#L%tqfDyyA}}_w{%Vy-xlps43Dus0KV|PekLSbZ}LZqN2o6T_H<>%hL{|F$<&p z56!fteTg_*D4fey!#{cKiSR9^>6&#X-P$}s&Ux&!7PNVDlZ-T_zf{7lBL+O9O4>O= zOB45pW$f_U-})z~n3&b2KZUG-gV*y`?9bBJ(!}=QQBbUJ`aPJ#=IA}O9PM1R_yH56 z24AhJ-}JMkUMzM@d7#bO!+*Zd7+G#XGzj&<1xmCaH=@>wxoKdWP6Q$hGp@`$!eAMy zqrAL^9BHg`OZD;;m#<#p|48kAkA^a%jx zOTdrjG$RW64_(4o)8SxDV*Y55z$_((G42V9K;$h@$27Pq(yy7(>Dt28y5&9FG7HQkUBlCVy9nLu7jNjlyDjc|TH4t3kDLy|t8=(k z4*r8IlxTv4f&p)D@6ttQVroX2bY8rg^h_yCn{hDkq zXHy1j9-ay79L;ycZ(wU17r?`&_I9@Y{e3Xy=*T?VvvXJeSN9?*YT0^?kvKa!;WR`t zDkycv#r2M0p;}uTK}7iC6?asEf=OkHRzIvM#yF?7SIQhz#ol%e#SvVSUb2>udkH!H zVb9_Sw-$hM{M#Na7)WTPMLDu;|L75UcxbjqhDmle>1zP%Rt=1aTCpNXw5|VO>u^Rc zyMP01N+R8@u@n&LHX5?syGCdD1a9!9@ZNL73ruRsFQEt0`RZXiuZZF^p!cEBh5Pz! z9@{JZ&-oX3vp5={+(KmH=E z+=j~w0G`M#cw~O2X>0(6q#J-AYp7o)(?Trr!qR*wUom5_$s*+GQ!XcGnY?Im^_9}E zBN28~s)D8Kw;Lp>EN@llc29mPVKST z3iiRct1!SFtIIgkrt{Un>CiKEGD7q*8%`y!vw|AttrXCVwYoq3j1-`5{jB)PK#!Hl zdV7!Ch0GX-NwJd92~d6aReP?VGH{)aNy$qx`V$~gIEv7AJc9G=Y)10V^=*6glqgjf zGx8zQuZ_H#61Mz;^xgO1^fxrd*PaT3+uyPK(S6HS{46ZGDYi8OEB;GkvbzRsLf{^$ zjcO_Iv#f90!WM|E!|kQN@tQsgXk52!l$Y$WJ+j+kEJ=bzV=vnj8H0K^TZVlXaW!oy zrFvQ8G?5FO|CzEC*uJkG~8I*lCWXI>&#e=3uXh}>g`o9+tvBcE!AC6$jHN0){z6>70DWcQUU%qrJOR!4?3$?HoCYT@ zA~!cT5y^TQ8u&aMzk03r;ba#S2oyCGoQQ~iE8zirrJ;|(bhOcIb9VaZ=y<@idZ1Vy ze^`lzoAX-s_aR=FH5@eoE^I7h)A+UIZt`3^+8i@S(=gpa5ah5bq_U>L%F9;)PVR4v zUkcrRT5e~r`4E)`dMtEPt8ccX^iulfO;Lh{Jt80=usL02aD_yTg`baOdEFI(^?Z5~ zT|GS=lvdyx2`(u?H5sn-&wjpBI7jbk+@;Hg7TO9c#D|E982eXV1Q-=C562C6@} zRrL|i&ZZ->eJ8jm%$A}1)=v#96)zm{B18l5p0!WxDm7`RrvIIHf4nNItdZdr*cgw` zxIe)&PNVv_n#ZfU8gIn2D<^LJ&kQSG_fS?6g0=e7`#3-ScDz)jY|#qRT&XhvZ?%LR z;3CD!=$6dn(ax`n1|J6XkVd)HieIV>I06@EF~>ICSG9sh3K)IUQ9a;H7s{Lw3aAV_ zKHFO~Cm21c2mhN~+@XOl&mrc37Yr&oR& z{+v#ty5ESr9}D8+&_4Hz{Z9P7%tGHnAl%-peQFYiwnWX@IA!tJd;jvl$0r~4a9=+lQ{w__yH}=JTF~#F^5Tw?1 z1S(kE3HJW*VUf2DP^)L`D+gz=qCz>ssc}QRcn|0y#b3(GrPCgq)jGeC^On}po^6&p z-QErAWPjsOtPof5JYAzYH6=6>Lr6(Zj4LJeSQM z1?LhwOB%j^H^r^ZRU?6SVK^k+wWZ0)^sBkt)}ljcHh54wgy#$OtVEW?flj}p{hLCBVNnIq^!GTdiS zy^QRJDhHYZZKVDU2YJX@k23$tFEq^gOwH`yM&XT_!ajHR@8PdJ7%>(P%1$W%TwtL4 zv|ziF%VwJRuhH_{MD%&;qk^vPfd(7s?7THeD)(WI`6yDKnPmc^qj@JhEk?mzOvqM+ zd1+zp+%+X+%dx~9;@W5bd-HlUK=r#SS`sd+l?W!3`O_HZk4h!pZ*Pjcckpg%Ny{)^ z3#R#iy=9jkoD7zH&l3W!e#zKP>wMAB7=Y(zTQ&x-CClFitHbn$@7G`0Mr!`G*Uw>t z2z$=i%KF?o&4532iXx@V@7o15@)9y$@iBb-sSY}5pWjh*vX?OqXrK?etEm~d%#^iG zJ89h#titmWgwdtY%#j-yfz3^6LJqjIxy-Em;RTTm`RN&_B^R8s)~1lfmwYicO;bai zyebJj6byR%Ie>X=lgvYq!fKPmD)H=%^9G3(9@49$_eoCg1>pc>X8Jq$P3Qql7Q11y zDMv*_Jdt4bA5l>lJ*1Uj+PQ{hcrNZDE$`=FgXE^AW?BJ>`7|jPdDM@D>f+Z}w>`$h z=jf`~H$EsQXDQ+g*nps>-OEHR-b=&o1E_{;o(%Z!_^}lK?X45&p)bR*Z7GxLaRBRV zak*-sWl%0Cif+n2Uy*mUI?6wtK zh0-fMqo()R5y6;q8k z~M)DP1e6xAkP^Z+gjAr1?nYIwl^tM-{CQ3 zS2gfG<{x67uKZ+2O7k=b!JcF9MLi@qDp6!CR^$o99D>(l;1K@nrFMUrqS!M;cPKtA z4r#5I*d%R#rY1L=wB(vomN?uH<9(oE6O|U}%Twx_SuB$l_uj^ap3_+Bf0Ou|nDfTm zGm<;hJz35#21L_Icq-uGJnv=CH?k-Mx!hpTn$4F^sjj1*H~3L)7gf+3U+j?Gz}M*M zldpFtii7xP2i)5e&~yhEvNFE* zDGIvC893?X7pw8+H8IqP;D+!z&PFlBEw5qjES4{^OS!L$G9W4*Pl)5gtL+2SIYUeK zGoqH*_0}7{egM0|!Bz5@&f#7&s@r9bzjPzT%whSI+NNm_`c1LwuhJgkt^_dIEfIsK z*}oIs!ItM*hx29^kP<7?N%NVXpFdKBm*N$$4-~Hu{#!XU6S!cSt}OZ2Z|5@2M_Hj8 zzxnl>v}5;?R}g@TH>y;_;jdP*k--;aChL(FNFjm*1%461N7ud>C=hO|iH7Rdgr(22 zCKH@a-Dj5iSy^^$txBrFI(UR3)cf@!Q5Gzio;%|}@OB@xxvh}7u5geiJn#|<~kS~|( zj95MQ4G~x6c1(YF;)irAlh>j%U^HvX(bS}G&EeNXVvI%-Ea$_v$e7uJ-^iV4Z~1jc zuwK;zjJDpp3&Or@jmiW4YqkAgv*)vQqSCArVlr=*^9^z{&p{Vwq*%A*`Xo|1_i`fkB_XaieSF)+)c2Y+yKLT;Matpw*qRir`E8=rnvtLE zg{dK91}~dGwCmC+vqIgN4aI&s1YvOxQtEFpHDRp#>9q#XS1qMDyXeQ(GCdr{P2Nq^ zdIlNjX7WP6DZupA11~G*6^aehc2N`=k>{x5aRKq@gb0L)sb#27>=~)#$oF=ufVH(e zF03Co-2Fl*#O@Vzv(fDC=_XTuJR^-*BpE=dG9zfxy0Sib$LL+x9{s%~ybPsEMxmXw z+we@=WeewKj2$X67k5>J!?vc46h!b;!jT26GB|cg7XxKkUVfqW>Bdtfa8!^1%8#qn zm-R+bQ>+8%Pm5W1Z^t^-an-|P?_-???jCX+U5@rjEcvlzh;^>OC;URp<5!#XFB~rg z&#*^Zg$q_Zf#Hzdq&m4vF^`$*6<;#*+LxC(Jt=__Fu zynJ(P8|HRNo7dj!MQ!%4UI{8fgi2fxiucA6F)#V_MM%NAv`UC>5s>%FLmRM>mQ^Z! zK$j&84!YHY$b+etV4AfesF3Faw1{w@Ft2_)4Yi-YkOi)9V`3L41$mwB=KY7WO!TZ96m(!(u5bBQW zRF*TBe~Yo>SyN1wUwgmDs2`uY7gUOk^T%WGR^#6%8C{ibFlydsBm4oLib{76dI60M zRjW%VWphr-Kb&91#VMc~Gg!27q9upKi7B#epZ-Hy$LZm-z`upgest@50QH$CH8$g- z4A6g?l;{mK)1du=7cJ~IyoPWqC$fKUffX>vU_31c@4YubMn?#LLw(eP)yTTg%@RJ4 zqF{v(8myvdnR#iMi6$I?8>u0Xvk@06=v;R-wx23@^#juY`>n8&7=~X?f|~H!vX{#w zmj#>z`d%?mGvFQ6%=CD++(xrq9nGuxt!PZnc3yAx!Zb)DVNVvpd<}<ayn`8U+^dbF-N)GS<+&`VI-?25ZLu~evW)&6m)6MrHlqH8`(HQug_$R7aqA_7D7#o>NLQuBRkDk&K zSc2%`>k5Vx+pCg(@v-if1bL^dNNVisv0Q{G0`x6$h<&&ynI6$>JuE}fNV_DcTnUI4 zO!SbcW>7p;^p9&+vyPTf&bdhNn(udVV66Y#Yt^P|_{fblIXxB>4%jcUcs{FztNs|5 zUuiq(!m{qh>a$}>h*h$@wh8*lc6@KG#Gmo^U+5ey4dg=ziM^jP*uks5F{ip!zpiw1 zE{#Qi>?~CxP|5f)(1@tU9gCwLCykE9tdg0z-ZLT5lVAm2jd!@Eq7d@r7$vB_5aq~! z8K_Ed8j$rJBe5QFbv0Vyj$&Q--c_eIZ@{Im4#8MdCZQLJASJ@0^3Qg%Zx-le1nD7= zqAz*oA?f!pN#X+4IydFE-OWUt{o)$gO1~FHHy%CKmI0KPcRPza&&nf`6$sar*5^x8 z0!jbq6)DAzyS<9a>T5tvDh;0n=dbcd5G3eaqH+-3r3T92ABQ)KPZJ)P#YW*wFx%0V z(}%!aZZ|!*cjHSSvGy&Ps2kH$g4}{rGFrL62Z98I`q`#H(~>wVmi^Ihe; zwAVDg%w(o-C;J7AYa~5YkhzpTHkb~a{(wx+3>aUp?lNUSw9nYj4RR6xpDU+By zc=hSv2rs%yxUTzfZw$32dGS}8v3DuYY?8{1{h7;S?#yQH@)W1PQhZGtWFL4QmP`VQ+ZpurDQaT@Qda>M8C0CVm%($UpSt%n+`<;=1OV8@nM{c&tq%g|qFH%~=#6 z9)#7*HBAiZ+Fx=%6LE6_PrG0~OsF-ZbLFuD0yp75{N5AhQTmcwa#O4bje%E@!u1+- zR4)$de_=)29>Iute@;A(t8l>7DOlZaVu*1_u95H1QAi=q(QbmO^yU@ypfN#5I%*0q zod2+pZSy22GrD880Nn|3te}mRnn?JyoZloRTo$jxgAC!bwv39nbFB*W_uuHq;s_cPnAL%w<;2UzN)zM)k$FGi?AD{#w$`$c?~@U# zpvQY;Fv{j@+uFfUM5&JXa}Np?#CMa~VH zdb{xRGuo0&xtG<=VzleY!QyC2=BqC`Txmw%t(Y|eW1A%7a&7SAG%0FXM*3SAW1s~# zozfJ!M!^RwLixR@=f&AC;Vl?-%EDneK;#wjIFgjq?B^+&?tXi6GtZn7VxGv^_+R7G zL5FI|9XH1rn~TfrN-hc!pR&17K-tX`SxLN~3U{TgyfNxFdm)SseXRk<3d9>x5-qGX zfeJ3vJ8_C|ZH+6v&L1@^AiO?1i0N3CEfDt~*<}IFf&Q8O>nxEK?y*XNPta0;#sx=C z@kC5U>b}bK*{#ECD|s+=E0oWY1WRCuxae4}V8n-8aTBwa&JwsCV2h-UHu63%Pfj~> z!5`iN76i2ba^CUD_)s^iV&=&x{#iNICXiqbc}wyMO{>4%yW${}-A>pIt9E`ybiazN<==0~!287NLA-yix;1>AbPKy_ z>u$l@*a_S}CeYX3Cqg(5v7`cbMJQSr@^IGHDS%WdQp;n-uUTkwf}9`AuBEt^F{8*4r+Jwynz6zezKC~fS_0<1Ap zl9RbG8IYo}L+MqCv}$8bLsp6&B(b`Bf)UK!JEh*LW2u87s4yMw63eDK_OtCrU!|qM z^+H930p|`Mw++c!kq{s0G!{;?>fI?vbhOW2WHH;@4}p4n6Z70bfhvI){WF_X4|>F< zTp~$+sdzXQrbN-r@(Z-5c?&`eY5Ola&sSh?8B4<$D%@736d6m21E)L;lOkVSFf*{+ zkx0-gEGrLESZ0bxtixwNsa9{S;$8YQ@e9PuN5{|+8H9jFcW*BwlCEqz`4k`WvDKMm z+Q@K6rY>9KRJ^gh=b*%&yu2KBzFb-_Qt33&ZbsM23XPuu8%=J%T_@0_qfgoV%Db4- zGl9{NrNm-jdZdaEGCsIQ3i6;1K%q>BZee+nvOrHMup8)#FRsdXtv7yP)+C7%+tE6? zC&0-T6z``3)|2~p@aUx>9$=%5c4&vA8HG^!Bg#=Ts+F)Pu>ZWtmA-+}hJ*bEw2ouXE+qaUQZc={Pvp#`RkwVsM zxo*Il-jCw)Cfxxcf$*Vb5u-bNfRJK=9}PgL(~Tk$>u+!dk5L@)H6e0#9XeU(U(|PY zZUO66gzO`I6G2j+(O;zIbWL^*srLg^K!m zlb@{1Oyy1c-^IJRq*ISlhL-Aj54yoDf&J^%yC&9b!FKu0^@xNlFzz39( zx==d5!Es;%xgX`%$4AqW(1RTkMS}>`wIVvmAz$+2X~zc;Ra<-6Jy=(%0&`Zj0t<0% z&}IXsRi@P5oY{KWYOGK_HNPjc1L^Ao*dab5<@V{w8`jK}eC-v`n#vl#dNW?Cu=Q)V zC1WyI*)g}`tbG|m_jqGsnCZY_?`93!O{#xSI~aWNVXZK)nhPxTE=w^^6-BeaJjEvx zzlUbTR~(3c_iB{DoL~!2bTBJ;H}gVnq`QZjA~5^LIu2RiXi3QQU}6-cm}F#0@xUM{ zQT!+dE^!AXEBTvp*K}r?ls7L6ILBGFhROYmp;G(1#6};B2XVjNN?{fI!w)-BYAT+5 zIpf7cpA$^%hJXF~YGYw7&9H@^F*eiSY}lnBm6W~%hi6fG>$F!Oz5KQI`;E-sm^3fS z5gqiqv?+|17Tf*xoR@z(S#1i@5GLW+M4aTuNW-TVTqG-2H%3hayQxpy)R8`@aD|H^ zA%`T61=)IxeGwD4y?y&y28=(`Zmc%oJj@Gu><((PF?r+gyA4y9qa4dxR>i2*iLt*u zKWH#txTSa`hucdpM1y24`mfO&2rn+u!qIKG)(mNA{XjA7ZCC8py9i&8Zwys-pGeF2 zHz3O$ba2YiICZ9@qRWI4;j6=(Fm*D`?&V)&adA6C0fUvK`?U8FqL~b&7!$lW_19T3 z2c(EjqA_n|-_5=qR}d;XZIJsIc}}rgUbu^M$T5n6emYF`1FBfKVcY2px?sG+<(Q#a zzS@s1NAGJKOdC7JBiZhKNA){23EA*%eKB)nZ^A{g1N4;!A;!o1U)ZX0MWSsi?%UG| zqHXOggUaCJ<)x(f%f^dVap#*cOjtBmhOs^5I|u(+C8IWva2fmX@3mXImH;pL>YqO9 z#y(1u8ez;u8NDA}bYjjD4gQ4Hi*=3-u;&;ZfRiz15BvC|Md#}{uL^t+;gvMw=UyE5 z;7Dw#L{61a74B`ay1jBP4F5LCceDWf>DMKY*W3+&0KUV~f9p=SE1zDLhR$NY2z^Ug zQaexjWo4qZ!N0blor_M60)qp8n|?q}#{6`skoqc-O0l5e;v?@xt#!_e(luek`m#H% z0$4_-u@Ga>4dZgs@q?>Wbvvlm)wtMn(`@Ty(gL?jv^SyGk96`Lu1}Sn=W^iUL*yxO z1qd9!^3FraLGi9q0bwZf8%E8QhaY~1v=A|H3*O<;WgedGFhZkuT&4nj{i08euG|!u zW96-+pom?m-}eqXQ=#qEzDSY8*D5c{tUQSqP$(3uzLSvZwlbEBTfOP}Cjr19>)z2kOd@`1X`hgov zsFrc98W?M(OnW|xoKb~~?H=0+Y|cL*TY8FnZkKygVl86MqNhl3^WOhr?}onuK-2BC z9W<=?8m1Y6WXb=NAiQ%0u&S1vk~EPE_!i2(g5;tI=5zR%o3ex?b2ou{Q)#m$r$4MnqQ^q<0t(NLBC|_6vbKH8_CKt}^zz z^5XUTf-JR|bNgtgJj>i-PpL?Q&F*?UV9vk9j5sT1rdy%g1s5BOO&u8`CeDif<@Ae2 zl!V+Y!#RD-fFA>LmNZ)it)OG@{P>LAhjyvINwvQf)bhRYKg0*| zk2rVMkAwiBsu*%##@KxZ}kzx~a%k>$b{$&68$r*8uK5D<;uo_4?EysvKV(z!GAGtl# zg*g2;Rm?1%&pP~TrLv8Su%y5b3Pc?B8@-tvzXduzXc|8*g$C^Z^*9@^@GB-No!KWl zt(v){8J<2khKA94X$;G?-4_eqho7(pZ*zUE!I$rdJSh5M(X}p|PyHYg_{sEaU3mAA z@vxIr1M%IBOx%qeLaoYjCo4;RE9lUI`BV%86cB7uhKs(|?=$0XPVL;=C9wf~6^`F8 zN-?#h>WO3G%XD^%KL48Mc<{ksz81n)`fp!7 zA)FW`ZYTYeLDGt-^Om2{tCTEc>mWZ^&m{gyxD5EaRL_b-4i7U9oGlW@8t#gnR@7N) zI_S-|zapm<+|V)&k(_KR8a9fb`@CveuGnu#S*%tEJd|atNajTgykTr;^z@(SZvT_H z&oK&3d_3X19Vjr&$TT4=K){T^pTlQ))%yd3`gaP@jK#h*j#kk5Zvoq%=~Un-i<~Ic z9sGNb;b{H7_l9ZXYz5T{XSnUZW zgyq3j*2vbE}ImqJx)_$c;I=uGwp6r;Ku+2oiWKvUw&APJzJz2QbbNgQ)|*KccT7{n1(Ia(0M{qRdGhwbyj|W<%m(`53Miwt?x7ivCU1pC}oZhplCD*nYyHt3-W{=%#qEWp^c%+94b(643NFM33T$RS6XH5nuitix=E4kJ{a;K z_SwXYZE?NY8RgpTZSG9;xE~qMkRvTe2b-?Uu+={Tsp|s+rgLmwJuuv1e?a6sTEF)Z zM1rB(jjrc$dLfUn#npfBMYYnmD7>cDnoYfL_x3y6A}<(hpBEWl%-3t#oaf7N)Jrj_ z&{j9TnIylE=rEM>+2;f2x$&UQzbvn=ZPt8|a!ohXH`9@02X6OLD{f@x@esS6_I8F| z2m0t3Kj!!8;A1CW;a#i*X9PJe(%!qe$8XD#B8yt^wl!z{efLKi?Dhj1fBGoc_m_4Q z1oslO9K!@`+i*1?oFW4tc7BfBFt6?$1v3&Zm4^VW>E#(oi4Dcan0DVHF6;f$Kh}Vu zj5)*xoRmR>ZjU?Q-9&?oD{Hj}{8qEXuQO$Gt~Oe_=a$kI>K?g^pe94~ucZ`Vrr*U1 zfSN4_{?-pD;wW=`A0K`anlHJ&T47Cyf@ypp8$FCbubqIUz-~j@uI_wq$EbdSB>ttU zSkLfxV>!N1m^iZc8!qEsk>>V$7_3F*>{gVzQBqv1!<}O!`k)#fhc^O`)ca@;k#eBe z4v>W4eO-2UT?jhfE9`eCl3;2vTQ6AIo@Q9D@Sj(uLFtBjCgkILB#pvDrHC$SQNCWQ z4vI1C|0Wu5npoKR*#36L8{br8`SmA2XQ*QC_sW|#w)9lSVZ97`F-NBIbt`3xCY#0S zJi~f~oP?Npce%P57Wn-`lw|sjy!DgHO6BZl)V*5s>9Lta8+{c#X9|z^ZH7T|`(K-2 zSC+cyuPcaYz1S0Itps0@%oP4on7}e*$BR4Q9@#~%e>u~vAT&btzU#?L{%mlE$k>y1 zVjtbWG7#e$F^Ty<3Zi)fjgAmCBIzPHJ>Fz6MPUt}L9Yydjvl2c54Jki!~~pjb^R@C zyN#uX89IMg3SBY@?9RVikMxouFDxf=rkh<~(ohrr34gkdS09rm8j!ogQfvD;DPX-u@=@_)**-t(`{V-@4t*3BMiT%Ok&< zRAZD6dW-;Z(Lyf)3bh-5vHVFMagk^+fKxsTg<3q06u@cf$Z1T%2sG})R*($(U2?sP zDl&FbNiE4r^ZurvF@);!CVGi@5lBGx*#-BUD&|X|-H!u`Lx(K8mT51a#0c-V#-4AD zzgNi0l*$?D9>w0DxlC^sds9JwpG7W($$R%5#}kjS2B}Tds#$u>V&*PrKJsFt;5YUP zxD)0Yo9uY|LxeNP+>hMV0?#x|l3W6t7>L>ZC#9;i-#SsizgsR%lp{jXH_%!=5-;k| zC%nq)ypF27*848eM0gh~@ps&AGF?vcDJxAwztsx2nM}U<8gAjhO1yyP*gLM^3KB+= zR~+&Y3|^tC;jYC#-6^{<7-Ld0jb0)DmJDb*9(rxge$C@;tPYo{^8IMi=62-JXucv6 z;r4gy3f!6i+jT{DQ_w=4nXT*+K@h20BMTJ+hipG>@ZvxZX2sO) zQUz#QM;w0@-;BQlIk&f)Uf{_(>a9Z1UCRA{1cc$-)+eUux_K>wUpiGsw0?e8VLt zSH_Jkwi%cXYG)`FjjYt-i3yN)#VEQ_rNh4#u%O&*VrVFC#2q-t1YC?X-tV~_54Ptj zhwEVTds-Pq0V)FGZhQ7kl8nNP(UVK#qr9h+3H0mpl-;7=G3E_JoGf7qYhAB*NP2Jzj|67ce zrD#RxbR6Q4ECn5L|L^o)zmo?@Lt`n)ECqPAg8kP8)d8Y`;hZX(0Iei|WL17dr6}W;VMIfObLUYL(z6|kB^r)i|?c;VrjuOmltcIrxIuU zfERC$fxeAGM%%%KUIxsi^d>|-H*+<~Tp}}2C6V2c4F^kMFr>;rn~{9BQr*_8boe34 z{b)R+?Y_$Hw(0TT^~Uw%PLW|-S!(_ku?dZNm+hR~DJ%0}mV%AdWGCaJ;V8qsZ!@y$ zk)1&=9dz`QYG@qeK5YaR&Ksb~J@@X1)?f@7QH#D~6^?dGYwSd1Xy%Ty9P!2e8iml0 zI_BC2m^P_qs(P+B@NM5k{i9SM`2iCxchj5H2#+}`Sl^pt1^#b4_{K^*SNuA9Si^>z-JuLb zFnax+sB-S*3GJ?WT08X$A?m`^%ZWx8jfs(4c4pvyyHAth>us8Tqv-^BYZJ4CftGhh zI=yWTS(mvBU3nG4`yYNR|Ky*|%IpPAOOv2{cBDAvqaK3%?Wk^yJTFi*q)kp4Rq!lv z^b4L3V=ESuXnFa?gh>%F0Wu-tI7j=-eVOo{eekPT{DjRj<=I`kcFoKf9z75e{IWzh zL9NNaR$ujMZ;5^2VSP=@xYV^z^=_?q;f)udIn4Hl)h>*ij6{%0S{>OEa(@672!ZAN94mPchOZ2&Q? zE0OLGAhVE9F8wluyYvYu{ovyW1Bv~XNGByFlAs4#f8G?G{*Re6UfMT zR>9A1OuStswvb$eHIp!dHMR_6U;^yVLgNHt5;szJ2qEzJfq+cGZU+P5Gr&M)rV>>Z z5bC-+B5(a-Aph{!pUb`o`mBuTqP+__`RKqH zRKWlSDzEjjtupQ5J&{{quFKuq>$37-M|QSqN^*5^+-1?M@(-HsCU>Ap!XLktgPM_`S4wlpa0FLvc9C_zt2zg z)7FR0Ttd@khXr=6f%KNLB7n>Yxj`6ioE*Vat7l`te#O%HDhQ>?%DOJ}8@~PGPyXZu zdHr|lvdBAuMv{y4hC&X%C<_%j9N7&_8p|ot=gm3o5w`o7H!$uYy8JrI7^g0$v0KBV z>|q%hPaVc-a)azLK$%>}+2dAMte`rmQ|u=U9uE*^C4vM7*)?d9H#P?H^`|@XU;fiA z`QXiUS$@dN7qc?e>3u3Z)2%_)_cv=6qfuDR7n_OqIsE)1ll%b4S@|h>fr*ck!hzAg@w~#G zjk@&NgYe@B(lEv!lVFe~CPTs*dtutZIhvtNde0_e%Q1eo25dJ5;RW&RA1N4y+O_zF zYUu%=>TS#Io11d$i*w2%r2tcotJ<7 z&#ud*Ycz)mK(B9+&1sR{6ycZ7kLfs%=THA&t1`@7n0q0*L3pX#Nyqgg?qL}jPY=?4 za!u=}lPUv{b0$%?3=4Z)2H$=HIvvdW;jr7}7^XS7AIOfiNwYSmR|T;}P^v&<+cA@Ce6yXme)YVe!k0QC@Ph1y z@WY=rr!B^5cCp8Gva9hl(8(?uTS#k4YBi1>OVS&0>;0DOc8fiKHD62_(BMGX@#}Q9 zb)wSAXlh+veSJax*?;|gdHEYt(r;|Z!lF)rT0iEGmd;kq>4uVhjjK(;c9*>H!58Hy zhOHH-8x>2AwyjYW*2qsY^g)flYC9IR@wh%73m2QH3smFMHwX_+FT^)UFaGIIo_DEeI99==vxGD?LUX1oue`b- zzxM|($t$n9i2(BL{WnG4{KZ50>hpDt&btI!4kfXq?>4pA2KQyEHD{XS;aAfDCJkn% z%T0>Gv^tGrWHcecNj+7{=~%&EWo%(Sro&6i%Zt4`D!f#-eY+w5_CI`EuH4{GWOlLW zjN~kPh&G^2DVH7&cti(1$26RCkj9U2=2{3Ziz3eX1t&}c8S5v}@E-fdjErXqXdak6 z5yUtqRfsODN=y_WxlE$CAZdpe)F(wDt@lWsLKuxhL>(Sse;SwaS`r9!73?N>5cE!V z8+FK}iA!0(FY*_E_E7%rzkDWlzfi$AP?E1glsfZ**O0h!O|o@=3)ubjx~bO`KqmzD zss+TY>v?stKwIL{m&+hRl*I^Icvg@YQT>C5yKA74;1Su8Gl zohCmrNq0@;;}1nXc<+|nzPTz}t12V9m|`i>#Qdq~Uu8aVq%W)E#aHB;wDs80qmoua z2D%{D@i8~kki{z^-~0Xr`PTPlusd0N-B0u|^b@|)>?>%|@m-khu z&uZ9=*4H(oDY2yqeDB?)z<+zFWaqx#g`LZcflKwIKUvgQ|CoPpfbHR~BTKxTHgzAiEmogx78Jhy&~;lV)2kUY=62yC_$#&CBdUL%M@qy_4N0 z(1!T^d>EtIpiP|oLuRLy`%X>s6MIdMO`Uw_&A&dqYsVQSz|+$$3!9p1$u#5`Ww~ZQ zrKDJSnrVvnz>8-XK34P7iWRUrsROa+@eo>fFmi7aJP}58LHVr8Jj=XG5HF4UXuud{ zaf%&1WBC64`!dRrAvpYZN@1B8Ow9wIYD-ju{@jW*RPubA(a7>K|iAd z^9Ui0`rrB`jvnp)jB#62+mlxLW|~rw^#>w1KNI=%{T2E0^ZT;3!PwWqrj8FkAQ$4D z0&|ejLLPX2(WePRtJ?9SrH{t7seP|4bLVxsI$N zy+=PTCIOR-eq%!}-{{J}`(OO7y!5(yYVrBBI*Jao!XD8NAsZ@}#{g{#_OClKIr;+U zkX+0eu+^vk@M|jLnX!G`v3&eGWMn*rz$Q0HL1>7WED^#CD*X8=l+`4TLB{nHM@Sv8 zXViv30b_&;_a;(HYcKuu?Oqk^{ zC!cKz2me=EZcuL0NnYbB)6I8C5!0g(HtjCFPBd;9s=e!`h z9-o&!lKYGJ2=_8C^58xeF?@kY>(pSou}v-Sj$D7?yu9-26`4QZlI9F16WTB}-^bF+ ztaZ>C!-=KVjn8n_cGZ*E`2!+(M5~`VTf_jKKOTCIw}0GAIjcz1jf}_Pu<=eG z{*3$lOm3Q9#xY=_8V>C)3ssJf`0SeQUukhxc{UNy1{c_GgJT3wL# zaqp-4)b%fpzRWmg9G1fZb0(EE#(Cd+Yg^v??E|^}#ip#T>`1dduZz@kI_~+BnfF%~ ztHXSX@$H1S7#H@d7~zoJh^u}D*`*&gr*>t~xF?scOv_LH@Ox$x{PFv%(rwRJJ3L94 zJZ)~ug)6)Aum8jMvUT06YTD3mRLU z5mqB(5Lf*C+EOdx7||_`l&@ZBPW&F%wpn=!(5~jRSbh$1O-O1%baCo!MAgGFztAIZ zPZwbx&N0j!JPivUM|L$F`(4V^XsW;LNUx8rZcAQ#>9Sn8u^{Iz&ggu%tLd>{uh+u~ zwG!pRK8~-uq4lw2(Y|gbf#zKAw`T|`W*^L&5?`GlTRqKF<0?Uh^zx?n%&d~(nWhro z898@uUP*9E&R=Q?78BY3l8jc z`Je>gzQdEKKA-yYP#N>O7MGrOfqP$z{Px#3<&$@oWouo>q7vLzbHR?iE@Kya zeBK#g>?)BZ%@ML2X-8fW&b9j6i)B9k>y5Uwd-sj>zVhlzvcB4uOmY1-Y zn~$U2J@O418BZhFMl6If11Po;!w>K!AATai#e`Tz#0BYOi+^?UJ#9qJN6v*C^(H2O zS{(wgqfRFyh^?TJ(1QxHx(egkU`p8Tk!{BQ-~YEa<+Jy;WqWN#nvHoC_S>;3-v3=ZyG1Gx2E+h<}p;ouJ9{LyYmF%YE_NZjHt4-sY zCjXfd4KHt9pI4Im@@rS*@{KtqqZ(Pm`h$*5(A*m@wm4|lcF`6%t*A|eWnC?O1%#J4 zOtAJ7qo(QFVJ3e}8rWXT7hhAeO_`o+$n;Fz2=Lr|!}s`9H#_g<5B|OT0!95SUo8UY zX`}-_Ja21c|)ui+d-}v>)eAj zD9A3)8Pb(a8;*w1*v2#9ysKmunTj7St_kDF^9ZE^W1jweih; zmr#!sIV0m~0|GjPE)JXAu**f`6T2&5N5%xmU;_*+5ZC+R@B;g|2%*kTb0Ere6ahnh z(7v!izY0H@(W47Elkb{vPvt#Y-M{_wd-9+EA8$%`=aM>z!IYAwFj3H`T36ZyQs=@6 zf~yHYriRx+gq7@aG_qT2cFo^1_V)8*L0s(`t!YYX-Ji!|aZIzzxjN3f5gzxY@e{JE z9{hA?Y2YlrmPHy$GTD0^gScJMfpJVDc%Yn=t8B|>MP-O^9Qy) zI)7nCE?$~74fKVJP22GSyI_8hD0Uulkc?@qJYAqQ*S|p$!c|d}+mI$$psa@Hu?KN4 z7?=K|0qx0HXOhHD6!Ht%0nfSW(N8&sKfsT3+TX{&zbppX zg`}XBW6MV5E!Tj!(a#T$vR`UWcGQH5baXsxP+w))7oUjy<)3{ZOLw%lcicwTKGEA_ z+_D3RKYts~O*-==va8qO&s$w-UoIB2EPgxPZE3bV9lqGe7LBdOqO^C>8fzQb7<>|- zzU&^eBlAXfzay_H*=3tFtD>lE;g=n=O)h}HR>i~p(&6pC7s_j zSHff4&&!uDmyr*FBSp^0c$$F80)iHS%jCy|hhq>SY*&Jxv=IcT z5W+TWIYL$nAY(_0Nn9KOdS-%zC|s*x>#LB~U?v8RY=61(pfA7u#clcZ-`|uE-&Vmb z7cB?KE}!Y89efhgoH=ST98Duh+V+x~lh}x7*BqH66w#i9d-+O?kX;qL94BdXBd&#` zp)LIFg%gcTz2ZK*x6lAvSVDH=#Szk_Ol;j_<=67|bi!i8_l5IydEu2Ax$(+5nVn;D z+|tR>>(K2$l-bPP>jg0lGHb-vw7yCVdfV#HRz{~VoMwIEV!R|_A5n2)~3(v@SsnP_AAOpIm}#3{qBD)^7e0*<+ne-E882>GToTd za?sOtJeutAF~)c($*!hp<3pk0j-uc4QW`L_TUq!OBoPg1j4y^W?*Y_h+S&`Vr6)&r z6*Nq9Qx-07E7|>ly!yI658LLLMIdcSowRO2c&WZtC7Qtx(dPT%WaB&qeFMjH!giOJ zP+7Rrk8t#}quAgdI$}n~(}Gl+ix5UI$BQc=bkqHE0RlH2Tvb$sGS}efg8Ddspdo0; zGxBqRJ3jXiO36KiT^XdVt@3SaU1VcTWK-Sljvm)H<>B3J`TM{4K)(D`g@5m=5;-Mn zN(|9r`U_@0LAdj}2jL|znj-ZJ(raO8LNS#n(%^`Tb_CJ>L3Hg@{}@5F2?}x=@zCt* zu^_Qdc3sNFdY}pH$%c~MX?gA2mu2xnOWK`v zoxHp+VgA5pk)wSfw4trlEAyuv(D-ts&cMUHpLtvOdDJIh@wMF`ylfzZ2H7@@w|aR# zWn3=`=xu%w}X`~m;@4~q$w*_8MQa9}{zoGfHjzjT`9q9c`bOtYnb(??{nZASr zMVwQd*iH&-hoWuAfwp2RBPL8_1J4!5gvr8}BmMGue}Rn`cxfxzsGAU5NCxd2VF2Qa z429I%SkQQc)2=~A0RDu>^C6DQg(ILCPLAk{q=8d%spEr%WVb!gp4^c4e$$pWesN3g ze%X-D&a|{N|6Z3q!Y??CTTF-iJp`9aWT0ts)Uo9#(=YeCWt^zrkQDluz~+}llUB|9 zqLzWY_%v{%sq!qb<9{MBvb%1Y-GBK%{XKc*^_I+^N1i~yDHrlf>lXDY5KU1$Is3am zM(;l?V*GN9@tFcYw7ZaA#w*%g`qz~!SBAafARIbkM#fnOBp1ONf*PWW$wFvz*e@4t zE`tPtcVvP42yx(Kt>V%(a2glMuOuzXKXPwMQVQ_y1tgJg!0&8oJ1w)h`atgA+mNMu ztFpSXCA(XF_3z2OuiCPFzbjMq^V&w(oo&eU9GcxAswy<>SddwjkEOq#kJ|G>v7P^ zmf^)c>7-SN?m462nRittAP;zn4J|L%Osc7-H%Qs@XwSVFDg{GzbBdGn?n`9+q#NExnOyS86JhB#EDjEu7mJ_^A=L@+~c z(L^Ay0Rw^;B0>vM1@}F2VSNOIKp81lrF?#s3RsP=m*yW6gC4iHL{^qW?%v*#2lsbm z>HfB?uj-_~*;gW~0;^l@n&X+~2`@S!b^|b>fIa&>@I}yt==~a}uj*8QBeT>txsO z^>E^$#Wl^Y-CyQ66wEe3g)1?r@5tOjU#`8hATPbTDCZWNItlQipC(GUrXQMFy;7%{ z4&h|CrsYd9tp9M*1?73tJO(JNqX3Lu4~?!cNOEzD#EcJoj!vda>t?k5WL`m^^V|*6=)O zd6Az%a5>UO$kG@mC<>6Bsm3pOF zGgy@i*E{l0|Mj=!TfeJhcTt0)JvH3UN7`90^_tT2VUE4PT*DOyEPh6D`t@aAXNy5h zl2~}r7a6yQ{m{grB4uQpWw6r%!WkjWs*lNw>-f2YL4ge!lh|2DOfJ>Qqfn|Tnek%? zn!3ePK|?sVD!<>{P=WtYWMf@qZFN_cS9aw7y%kwr+L4XrUSVg7W~QZ+0QRaa*<2C1 zb8|yB^w?=DIZ}Vf?x43Lb#1oL00z+w(wmZ93gO{tJarn*Ch&1hJU@=s(?)<#Hg zgcp8BcJ(+UyG@TjwDl$ZN}7)i=yj)z?4G~YmOuSh--kM; z>*yD8?AsUA<`$ds`gbnNE3aL&H=Eg-jC#_yO0rA+H2o1`s^>8o7HN9@171c)o;+`w==sk44&MjnC6)H=W z=MNg2a>dLTz9p}HrzE@P7^gU@z^M`St~HIlR6CT3daChkSgU;UXJ6bjg43;Q^f&q_ zcK0k&qn|QH4`aJ~V1$f}vj&7TogcxAHUdp94#7*uXOd#FV%5iW72L6A?MhAk$z#x)mIq39zx-@T@8u13CBwb0y+Lf8zyzPSSGsp@OmxHv?QS(p|JyM% zyC5aKDXiW~S{+rgTegci)97+u9JMVtFF!XtN_K6#Av^cyZ^Aec;H4HLK@!ex6s_sL zy!OqD_Bqh$IaUrGt2@b+FL)^|tb4dE^qZTPHcc~KTX@{yZC z_R-=ZGjUd%UYqUz0002J$EW@;ma) z-o)*z{ZNB6(JFi&y1bxr#in%&#CZ(CnPnFZ-R zjNR^m5i&B)5~@2bAf!2l4G$!ja|S>lCaa z-rdmSmMrV}+RCo9cN@~E%_)E3C&4_(lZ9iF!PZ1C<&*U)7 zKQNjG+IKIH#xsJe_ZLJr%IxtW^?I=S;XDm5qr=)o+mHCZ*QlnzZV!W9O?5|~amPMZ z!4_thuPn;K`Dr*xH&jo9-cC<=eoK^w(XmY%X;z$?3Iu+0z z80*7FOmh^^VEBWM)jh?dt1D(lkX`yMyDG6TW1Jo|F82-0$T&+#KlRH*gjN?Ki$LS^ zlVM{v4u=)oX94Nt!8tFG)p|AA-BO~vB69!ku6+IFvfTV?MOGi~NT;o2s5hl?8#2|H zQeNrX03l>syi}&FwOf!#-bx*<0$Z>u0})?jG7%dakcX!lHD+4&`S#|$sk}- z3t`PM`bt?AD}Q}gE?uq5tKU2?S8vRk?JMb9xTX*G*3GZkQNhy=MBV{!t07V{&SIlt z1~EJq?M2;q9)L2DR!l?|WK*tqR|ccNgG)oD%vFA{if_I)$m7$r0;w7j+A8fob3MfpRdWy zk9TEtrLD4%uVfODdIbUX=U*by)uWA%!r7RGOzVApUTjvs`lkBpxCx@$FU&kJZ?O0Z zlP|ttC>Nwf9#0A?FZ;DExp=iNfB2`b%WJPIk<}_~>D;oVRoYs?98l-hw%4KFs%u|w z$=pKS7QTxYeY`__nHK^co3T^WeTdVqZ}dq>E~X5OPsU=H9A&bb@l4>sg9pR6g>eXK zCL)A0o&Cy{E7tKt_>PU+aBTWEB}eMj$2&h?qG^_Nea>TmH1XYEB@oNQAb@B209*=9ir2Xpb$g!!eD|7SHvT&{?m#)mqjTe;k zU!OLOuYsaib*Lxz$8i$IwMU8wuck98&HeN9dT9|W{cqeaKlt&*CN#Vpkv+&4CRJn( z3q|gEnzX#JwOE*b(H`-VPndksHu$G)bT)n&OP*~E(P3Ys1M5YdJ*n zQ}V)#m*o15d3%vH?D-j1C`HP8(l+DT^<+r` zNtJ0Ow=MbNv-|cziEevZ_?|oI)~y~oS=5#6BKXAjA2k6OgjdN@EGRrIj<|wQsT*h- zg442a9f-8Zm(ga@i{SjrZg1Ryb6={tj z#c8{ih`d4EllrBIa8D=N$)RmJa2w@X!|i+7&EfKuIc6}Bv#mKR@MkgG3<%|h^qncke-qSe`7tI!{nyk2A4s@#)lsuxi>%GmQO#vC%3*{m5sH5OgApr zmSId-)HUjB``;EsCnY?bj}Rau9kdgquP;rNP`td+?KI`{PwyGo#a@?f$eip#GMwz1 zme$Cw6JD~8^sOA4Hb=4xe|IjJ?9E<#L95)g0RI5x!h!JT(!WGzm)bb$Z(2tux~8G! zoVK(3o$!`KSZ~odXf-)D>fTSn1#$GB^6f0ChnG9*iB`H-+qF*xU%PQ$UU=z(ES}eP zYOn}%laP_;js32rPvJcu2jSz9wnt#JjiQ|6VRbqY_LeP8Q+tH|)kVXA4_2UM?)Xb> zGfIA^`|`@GSG8R(%9R@p``ObbIW0cs-@vrTnuH}uJ8LRIc6n~mFGiunV%Ub>wvM!{ zoJSkS5x*i%RAF!Pj(|Q=jwyfsfboV5LX(6oFT|I45Jeo?UapVwC8x&?-gD@x+=RHZ zuP}0ya`SS}xE&WBFVgWb8U7g4=T6@!pR+Z-M%s8N@~fZTl~3O3$%DHp8<7W^g?)AK zIY;zyo;?U9QuO=DsO$WtEnI6Wv0c-J?m%9A^^z|7ugFW^XvozY8bgyD@af@Vt{AWd zn?4VQ5zlUncsmwiZ1R%YS6_W)3mM2R3a^7+Qahz0WMrHkAh`(V)NFx?28~L*DNN^% zLHl?R6K(+;!G7vtPDYeU>0bzs5B6a^BR`lIXl(UE6KkKSRj-c9h@}T2x4!DgtuIz& z`C(huR=3sdC;`<~b#vD3c1@dG5KPihL4^>h3agl?Q?kUlZ4sqWjr=u~tjU!0cAE0Z zN4I3@{*Ls!Q#vtBE767QauZq%C36s8^&pLKJGmWRhp11W6EjPrsLUyb5orJ^2t0LNA5)KL<>Dzmtb?ECv zr)3*xBU#&;CR>4aUl%fbme_W3xY*PM!Mwcm%Dh~-geir_(RQ^>|A!MH{h}ndem$Yy z6x)Kl9VeGF!c**5r%|Lok%DTO!p;?~D6$CIM115B@`!W#%vs#6fqlqBhN3i}U!yF5 z=ssQh{TA`()tr4I8&f zzmD^XV=nvBk^=fp9su+HbC+vMjaU43`9>+;bDU(2$RT^Y=3;I!U{9#7L# zlI#0Z>N!M(`k8Z0`jFgevBDn={Vhz-mEiR4g^t3na4Ed}et*CSscCZ|w#8zisHc-y zH$kX6K>G9(>mOPMNGXK2q3o;CaLqU-9ZdW|a*67s1(MrTLhCu1kX zpN$re=iTYZg1SaqM?d1a+WwGSU5wj4pAcXOF0u(1rVVGwq#=GCgXAJhsSg@m$S!3CY267OR^>Ar?GD@%_XpYa9anlPQ@{LlAiwktQ} zMN=Go@I!d43>p#Hfs2XUWC_Yq_<^2ds=yb{ZhgHWUw-mH?%dpz2lsT<+}6pbH>JeZ zUncW=nRpAk(gbAXgwylg6Rrer2qlcf4YEtzW@B1OOH0~HtUr8T$?iiXGlLoBg|Av9zBC4N>hHgZJI9-bs;~vS!HuuN$!%8+?!wR*w$fpzh1L#zqU8^hJlmZni7d_7qaK1 zErbe$H|ogIes(X~qB>z&yoB6v&7?pZ+b4jPu%O|D?Cx%eeE7kawj)Db=A}`au}Opa z*&DVs-MAkI4 zI@eL2nHgvn#kY$|2E_|zx-MTZ8nqTSFtDd7|tBhK72T+ zTyFS#4}G0GAiQYGNr!h)YKnPCZ?81z}n zjpG*q(nD;fg+u7KnUvS_>US@nH-3mksq9M#Kru9 zsp!s@$eNPe2e$^c^8p`kz;t1EOUo|4e@e)|8}1HKQ$} z-bP}T+=0+e1|kke+KhO-EaYUjA-kJmW(<6wqEVl-^7zlxkZUUCBu8nZUOVB$-?h3p zEz6Mb7Uj}w^Dp8;v?8t%Osxy$pp86^n-2sz#h>Fa4X#_InE`gRuCXPZ;(k3R+!sVz z6!IN{db<{*)EWnz*!qND_NgF;c3!~mV|NPtoS3^wiVOdtX4g=(Nu)EJln+LlXMl2_ z1fz8xgMG=bFXn(3&FcjLhTzh#_=lF+8r15CWHOz=w%((_Fz(2Xm{`4y*nI-kV@Q> zCcJ2Mk*An2AX6c_u|;F_he`E4UGN+rKOEyZR-VVm^Glyy+~Xz}4*X&~q~+I+gtvB? zpZ;ZAe(?{V%k~;ygPgG~8J}k$-x#N9KaTSV+YcLCJGO{pPICD8XHH<>-Hwj$%Qu?x z{og+?Klt&2T)3f8P_x_fiD!N~psbXcmqyu}H&8uzxOOmq{abTtFBjl*6tp zI(H06Cnk>aVWTRx-b=M0cq#Z~yvhxqEv{?%&{E!Ebn^Hw!C2{2m}+(%m#v6R{(8rVTw`Equ{NkZj^Qlfo-@ufWlEuDR8i zA?#`UG<}7q8F75UK)zf#3tCTlB5HDBFq!kU!@# zevdw-?b++;v(mPppJB5X%__W=$){EuJ2Jb_v;BErdF_(C@am$Rzo6c3<>Juh_EaId zex^^vjwK>;(xyZmiALr@iuNbFQIB}mX*=K-L>B)zkGRMzHo1rN^2-$Ri(jJLRK{O) z+;0+o6hNy>xx&nX^77#w6bQg%Kp{KOP*cuF2c9F(f#*Sen(I=vPpLaPLO<&~p zx+ol6bKdDK$v3_;BY*PGUzS(D!wYLFhletdJU!pzAnmV|f%71{%pGCkn8|L&nFAVK zIxv$%XdV#GObqP(h!%o#z(99w1-eVEyh3BE@5pBL7gsTcd#a>QX$z~neJ1!-** z8dk!TteQP+X$#9UtT$9pHGNkH(uKrYTUpzA*+_#{ws1|y{R^ivRksk#fa??*r9cs< zAgn0{XnhKJSd!jI-0}Y9*=Rdke<+Azkm|G?WqglQMdT3^&m_=Z`(gjd3XCcDJ{az{ z0EYG0n}+9Grd5_AO<((ljti?JyL%|$~#FyX+r6gX+NIWgG(oT|^X%jXIMXi`E)W8yYhOwi(lTqg&gS zh4Z`ey&qkY-~Gv=y!fi#qL0JOoQAUT^nkr?m@&jJ!24|hn0r9RV+9%qTM_E&EQl^7 zm!C-Jtg*Ei+L6a6j6Dx9J|8Ar7rOmEf>+0|Mzg5uxaJ)5fVHK8+`hRkUw^(OcW&}! zvW~1Tw{^_3&ug)ZgbHP}q-X?<>=wkr@;0ItW$~kF5&g{LBu5bUr5KGzm=gulN-CH< z_<~w@wZ8w( zw%2|$tc$gQkB0zz5<7~zTU+VkNhd=eJ38^{qK+@Zu}?AfypZ1OFP)c*m#5_F^#!?j zl?9cj(zA~OKxhlI8Y4G-CB$AIvuU@dQ!Hj8`(bl=yaVfdLeN$?WEu9c*b{P&OhcX_ z-ypneRE0P{?&?fc4oEzJ=*90Ok+rPX>~NaJ9?sI zmxp8f=|XmAbxiI`V|H6fZc~2r$5-ULKb-P?wjWW`XR@1dW)Ux<;m|msdEh5BI%{Yi zm=vl=h3BIJd4TcxI2mgU4GS5)>U`dnZb#*-y8CxUKKWl)b1z?7#;TSRjD*`cWF4~UM3wxgZ`hggP4unJuIy}g zq`m6|aB6DWh^!IX=0Ij<`KgL~w3PY>=Xp~yw8nZ=V#B?};plbs@<#g_()t;S$#zH* zeZq9O-#ErrZ^o(x9X ze=J7ZZ7=*qMT-Y{wfgIG?Yo&x*`D+@excB~#nx;F)9iW~>{%;%y|yl5bo@6u_F;;} zOVe`W#YK7f)r(4cYxX&2?0Lzmr^#^c>BTP~0m@Q5pR}6R+!61f`kfw-X}l?pX+yW` zAHfO2%Oalo@3%$LNx}AwkX)6wCTsbLm)&d_%h3m`{oyqFW}4=n^wP%#2-f)Y6&oWK zoj>$1e^x`QnZn!0RU{PSu}qk{@)8w&VEuu}NAK;*-~Gi`va_yacaND-#^J#W#@^m_ z7MV4+AuMdLO)l#A>(AI&?$tJAc41e3{3kESkN^0BoWIOXg*#RkR@OZ_A3KXvSf=!ff1LaT4;a8ML%Qeiu&;W+S zbN>kU_;xo)?pmVI@=*>pZ!qH?<7du z=XmhC9h45gLIlyJP3S}3cK8+Tz_I9W@nW6#F~W<5lGdI3h(UYpwl`&Vt|_hAzMMN> zmlt2Yprm(EE?+HnZqVXUG)m_t4keLBYwsWRu!|DI=Jk9ZHIQ#nH^?T07cH;XTkD~d zF=h?OImXwc(C{K>k*oY_hIW~rn{nxxtYP@+xydyJ(=V|wNTt|>yfSE6F?QQI=sCb)&74I`WPC zGJc7w-=ym>g9waEE5+V$Cv7Q)af&t=X%|EK+{U%b| zIHuq5?2`CHaPIM0+*yC3t?2JXx@_6T7yIan+AZx1O@rE&eV78m`@&0$a^Y%AE??7d z?Ls(H5NjH|@K~bge`)r^M@YOV|D!{YTE-VZ=EX~EkY3~;av@%(Api_P^S<6`@5Rfz z5afrPB~LWTFTVJq$=GW7P7^%Obj;YZF8YGWl=Qh&F|GxQdn28?+4O_rS%yqZ?xlWK zHB1(CxZeF*=r#HBjeEkqKl9Z`&=ACiJ$f8pa@|)DF}h-T16*c zPa0l^V*GHbLUdC}?&lwi{QBq1^7Fs{LVoqLFJ$?i2DRCzc0oGry6kRsbUv;r@%5iA z2ZN5@-qDG=TTD7C9Bf6*5cKq8vM7)Hho``AUw zK3r3e$=9X-Xj&7mL#XRBvS1@=w2jx_hI-`tcB-+mxpeWpZi zN#pAHV@qD!sNM*!YnRUgVoXKfhiJ0<0a{gL9peP~$4hL;L&gm9(ITG`$eZzm%%vr8xPFNWrih91Ig82STk*Us-lHHxIPHrNj7%2LU zK3^6=yUL2#o^IiMQx>oE<@!qt^75-n952hzo|k1BX|q7~#Qb2eY~tDMt>>cx_3?Hp z#{e>rT^eGihA?U1NZFMPk2cCN@vzui7e^V`)dn+$6!?QETa@)Ah%`Z(7XEBcg<_Tk z%<9TOHrCs+sbpwlop%IitD4CpejJ*eugk)@hAdu~QYSJuuTM_>`+XMT^bt)IA!W9r z4zhNCE?9KwiH5K1;^-HDwJ9IJw<&86lxg!KRmQQv7zT)5#!`(Pg*Y$FiL4LlfYfeo zUr#)Dp(``zAISgufBz#FfyMo&iEPG@aV8L^3;djh{TfF|6)&No=|H%FRM74xFeej* zM>L5Q*_j~K`SQVCk$X40^65wSjNvz2zrZ9qGNUn=Pn>HjR@` z_D0T{9h<;SQ0VAq#{&o=bz`zF`F^wq6QxRtg4B8alS%0iWVhOev^fh79NU9M-bQwZ zq{Z)Zjf{sonegXDSfrb#PaMDY`>IDY$7%V?dp*5)_ItvM_N!_7z}j*IWj#H=5_{t+ zqCJtov|({=#{^~h9PD#Eiikhj&JM!VS(+Y?iJG`i4wLfs@dcAn51Ml97vFNW z$wla*)ukiSA#wb?mtx!`F$xA+4Aw$84ZAJ_ngQrndl1nyycCKhY_jIagv*<}cA>7w zuCwbz_mg*f^3l6@rE6+#6s>ibZDq$+II7T~^@xkQ$%A?;`VwB{@(QT3)+&h{NDAO6u12>w7`|qt! zv`-){TbUniPrPwQ$7ue*H5Y->fAoAW$~4pRo<*efn}o@6%Jv%{r~GMuWO0!^uaR&L zm2?L6u1>f;X*N1Cf1xhlc6rihoiq~pSHfE{m+gO1~hU(&i6jQ zvP@~c%H#0>!DLcKE;30&daH!Dkdga!sC^Okx|m6@pv8oOcOpWua3bjAFpjLv;IfRJ zzxfD`%RYNymjz^xU%K>Khx^)+n|s~*dQCq2E??Hg&5b$v&JX6~>J8CnuR&-Ei^oAP!G_y;JN6ICp6!Xx$<}&Z?tLZl zv%kJ2Uw)!wx4WqM@$#*>j%9DCOA&8~q)!{-+V3E4 z8J{+B85=Kjru}auU6omWt&8YnvF-~*_qS_3Mt=B{uBBxSLs>MgjiprnMr}aRfJ3BV zAi382jqGZAwqUS!LSdk3nhBF1`rBh;ddtj+e*M$0Tk^BN`C8ui#fp6W zg$C_tCYqh{c_mj~u3mpvy}aJB$eC4McK)Ks;st)i@^=I5SsLN=UlQs{C`&~IVblSa zpa>6wnYOX_qvAt7+6y`7S3Ml*5RDJ=?Cy5V)Q#;OaodI4+G@+@CQ6}QJ>Rjg-5n+3 zot~M0K$4?OPL%y+&f@*BA}_*=GHN+ehrb_B3QfNmfN-H; zR~2DZB#2N^Z-n)|n<8I+wkn@~^gwQYwJO`|DjaLr*R_gOI(0zYBjC8-(}vvHwF&|E zPs`|t{L*85#x}0gqoEKqsh^)u@*nl9#tRMiXq*zI|3T@G)^9W{xi2ORZ8-eG@nFaG zh4dVh*JXayIEG=nkK!P|C|6)_`~&iR4zS;(d2rb1_}mk}AWBt#yVhrl)|Q1cGb{wI ztE*97puBQ@&OSNJHf2|DG-Q4;o|J0~1DHyfIgHWb(X#j*xHRt~UU;3tBd0FWcc=?n zlVQ>T$qhvS@{)HME?>TUtW-l4Akd`g21%7 zpS0!E_wFh&U6Gv)jWd|maMXKfO}$!_59b8V+r^J%8(~_7U%%GYr?Vv&ueRjXZ(fks zzjsAm`9?$L^jY(W>h?mdmj#JD7!>xT>UiPp@Bi|i{QB=7N`G6KFJ@<2k%6YkSHSFL zT>6-8O{U~KY=Q0Pc^v0aCWxb^ZyhZ95L#;QE2PuY#a5V#g=4Dec0He{uaVd)w4YNp zTzr^^4yths+8!wg^YF>{gOM~0lGJx?F&zLx;OLkpGlzCG>lmRO%D@IP^7cj^!W(_C?ib?!XIin3GO~@{3 zQr8+gW6kPsQ6xrHKF2=6iTgpYDKirp3-rbVryA5e?HH_%87cBy<)9LDJy~upv z0z6*cN--2N395ek#Tj>;6n|12zox9-9(GN&Qz2ME>5m{AeJ&B^$GzcT7zg3Y1cf#Y zm*mHJdYz&g&&%$P{HpgwTI2l3A@xu1O=cxp9d85*UrAAObJ+w-JEmxgqE=#I9GmR-+`@bOhL zm5Fe|l?P6AKYaV1+`ZY8&d$8XSTqvZ>&C*t+t^5=wSN#mFF)l(p5l*;9TG*or{2fh zVP1ANrsd`rJMz{W_vGz2)-*4@8BVIQnDSuvYbkmm&A#{Cg>$lae%=>9bPAOtEUrk` zeo?Sr6~YCmZ|SV8oW^3S->@%dVs@~#xhu;{>$0-EA?s^fvboW=4+>$UOusd-K5)byX-Mq~m2Y1{=FBpwUI3SCI;4aA>ld4xA$nA{B2sOfjM_2P#6YyVI1-)tbEX z+im&HFK^3le|1Yf|5zuR^`YP}K2E~LFcX}waU{*&Sy z7US+eDE*`6A8|N_n}js(xMP6p)Gxgr7Z#|7fpLDI>L1tR{3oFrcR$c~58Z#CVMLo9 zrrjpRt@;h)DIsV!7>7+IPELx-1$0xx7L?S^$jZH*eDdCXc}q#}NAGv!;a#1Yndfch zk4Zbh$YUct$Vd>90u<+PU148P5Bf>SivR={g#cPu%)J0|6o>Kv(s~%e%T5l&MWYyU zDahh!Kud43Gk#&B?WhJdY43=9@o7gseD9tT(M{>Lbx~3~r_W?c2_J-xU&Q=*rR5nu zUv)!boA{Mv7y_vGcI(pU&&r^^pbHvZ-2CdUysL!w>reGL@9L8)6c7G_oBDC99v99{ z+s+OUcHb2y7C%nB-M%(OO8Tf_U0TfPR?(twC;?rQwKbmEj)j>P zTgfXgJmYFLolENM+S4qZ{SpW<_5MbAB8*QSM;voXh9TCS_Q2BL-s&jv-PZiKmGo{H z(S}%~Sv3-`Y4V|#_%(H$QsT%kZ7yv=+f>>|+mOWxWkxB)!nHNimkXC>%c!R?hE57f zpOJAaKy>*jF0>H{=i-gxp{4?a5SxTl_)i2{pVS#Rx-i<`slZUDQ>F?M$f|nj_(w?J z{!-+Fw?uyaS9j#2w>D(ueouPsxR0r?CC%Ejt(Wd$FaqXJUDk8i*7Ws3nF47JR!$_5A zDaQI08srq!bjvi;^eM}zOXHR$_1PW3r53LDsb@-ma&+R{m! zH}&l!C%h#;P-3SZPoWNFzJ*WMLl z+=ru_ERJzynU4$Vnaa9oH~b;*COoykN#@NjL_YiAfjqdiBi$V(b%QyTmn~BeK-8Lz87)T;J4co5K{}1l z7UZ*RCs!^s>}z@0y=n;tv(oRJljZwU^5Hw1@{7M)mCru(kNuR7sU+re^L06YS<5xO zEB*Seu6vZYYcjg*C^V9kfg9D?&H|B$mH|!ffVwobZw-v(t}L$`$z5I9l#O*v_S!~p zO}nanmBp1g=7~ac?ET#9>-m-Nen5S_EYVLw^BZ8h%0`2>VUP5h3IRoATmImwoM6nGc>6_N#S9 z#zY`o5yFt&5XcB@gmtRXML?z)H#r^*(qKi7V=%>Fi|!i(IPK1(`SNupUR=O{2m!~} zdv1O%^5(DB(9>y4qI>9`KWDOjSrDy zthHLY@YH;fJ6$Dq#6#}bbHKc4z+!YxR+szo@dx+h-M8+@r|)muSGgd(HY}53b2_|? zi=hXReeymjC~E)>Y?K{`{J;;H$sXj8Ui=}uIO#C?#&TW0_-I|;_~`@r@>9`kzR-rO*1R=7Hm`FFqU1~OpW=lyY;pZr z1i^M9sKDRC3fXN$cS& zOB_8;dF{s_$FAANxt|xy+CzqF0t6SL%TI3ca~w8kXcYns(iAa> zj|K)5E)hg@UB*!1{0&*)`5_SEzHYazLP&)Lwop3hE#DP+_l>sv^6wtX$M3Am!&^Gp zwC7AnQ?y=xN5^y5zWSr0Nd1){7ea^hL+F!7DTvStj@HZLSCJH2U3!nT4O%S~8gVRv zz~>%E+-LXLdDM42%JPq5d>Qwm%x5(3;jt)l_@(f?Dcjy~uHCs-HNw+)%&}Zr&5TJkdq}kHAyp?Z^RTrA|X&s+vtX$*R zXh0Gets1|t{jJ-Q?X{-d`LZJ)yt5?lzq2Dt_cbN|7283d#lfD6>=_P-ju;l2k|tM{ z^SCI@E}R&o*T@h27$^9nEP(XlhkOl3Jy9|se~Vl908&gmh%R#Yu;Y7wAX91ULhfmM zwDb~#&tGiF%$&;W+K$Tiw#`@e z)4Qe5GiULkY1bjwzOw+P2fcPf)|T5!>bJ~fU}Jq(+B%20eXKh=kJ|t{xsHBIS~&V8 zozDBR*3X{aSt`3zl5Xx$Q%3Ktxd@ImaHtJao*K-ffOqVug}_Z zv367!^A>d^jr}npyeMO!qy3JuH<~)Y>f3Vu!jxRSu3i+mI<`-U=+hxfaMX$8emJP6 z85tu8jV{7B-A5O*1+)p(4@R6We6YIUHIE_a=Lj!^t6i&r2>V>@h?wNqZ2{r@)*EZ` zv%mXN-h1o5tS+hWsLgVR#r0$4qs|0OIjF1f0hWX(0^qbz9mH{c(BM7{4odr|;p1?a zI4RQj`{h&hJLo#&$$@8)K9A}(sD=j^%Tm(;Y(FtGsX9tcqa)IE`$%47o3^iaVVd;8 zTeszdchNw)`I5;GewO8DR~zF@qIS?UxZq651O&zi&Eo+RIr8+}xpTu`$U?)5%!SO3 zgA>G2ciISINE^fdmzPBD-qy0MYdiMmwGf4p!!)FY2DND06N6`kJl3Q43?-3T2&HbC zMMHYKExGmihP?a6J^ApRt~|IUvb&|xl?d`;8ee9cnuaK%MekTUwsc-#zG}B!v#c|Q zktPTrWSf`5)>e1TVIIJzjd>x=HNJ)RHqqjivL7PJ(Mc`sV5C*ghs4!Beav-vwD@)n z(RU&{B(>aMq+#hZCWi2SN}1T77t)J8@!IN+)xkB;u5~u2&ylfX&r$1nyuLCz&q35# zfYe(Zxpre-7B5fRjwn2`YTV->Eu*!y;;7}eqGV(o2GxCZ5xxisw7EFQZrTx}Glt*s zK{v(zw{Rqzx&jCh_9Zl-F`T6M8At4A%+EjQ$v^z%ZTa=z-;%pucBQ{Nr&0N2<))T# zTkk;~po#Q#qEx}%R{_zlx24};DenW;g$?JaE5K?zsq1LH5md!#fswcfuR>UkOJg*x z6lEEzajW-?UKfJ6T8BM2Ae=JqQ}1!-qsPhVr}qvK`6cZI%DA3hS+|U{1fEm+Ty3Ja zXSE-cgeYOK{Z`F!j`M!U#Eq!w>sU52qGKPz%TLVy#{59;-|5H~AFV0ry(eFO(vi(I zOICqw@xDT_QpeB3Zu&%;kAA9*wt?Ifd+pjwYsgsMiwKz;3;GnuT8LV>RQ9IreOw?z zJsnMt_Ru0cxU(TQzj&ymQp?Q#wY=A$G0^A^7bi6G*yroxbh4{pIMy`>BfOfXEq->@ zXIIxOJuSyT?tHZ)@BQY1x?Q=;!bS-%QRn9P4DpDbW3waiY8i45Y( zX}=q6o2kgF-@GJOt~Gu4i->wcq=Y;svU8pLp*+*e_l+y@TRb!^d5RU-bwM3Ll5+{gaTU zm!6M98YghjbrlDNXPiF9J)^2i{R1QZhyk1E8EfGjF@Ym1uw`Tpgfv1F?G1gIm+g&) zeD%euy!D$e^g7(f0vdVY_YJ|hP3)xmXfbZmPUR~pT@(|5#`HW76B3*kgtHB6_cOP5?zP8%chA-wU+By$FGpBK@#l-xpcc?oT2 zyK8j?-kXYp`k?uBy=u-hrKn*;M- zyWP|N!j28=vc*mjyS#%!d&=w#Vu+K%yfbhk10XtpJtHPGScd8)ys{D?A zZb#QD974yACV1R&k2}Yt0h#(uIv_@wLMk?L5v0$$z#@zONP`@Jp`!-sVr zA6`DNaE{^q6OLfyJSKs{r668S8^iaHhlJGc+p3F@jE5$?UvlTvm+nA{Xjl=lRaV8TjhieS+ zAmnAZanNU3@44f-8;e3-w=_SO^(bfC9e-&N6PERrfxNHJ_^n?*kgq-#)8t=RT$I__ z^U~1@u#lLV;v*SuX09ezu1%Y*?sQ=pNSPR~Cq>jZEpN0VNZVu*#?>w(V~FZL zx(Hej8V7!Eiw~0{?T1JA2i?CxWG5?-ELm`I4{)0QMpAF^;_8WB7u+g;kKc932obMMt4%P63?muie zsGf(5>-3l+^&1xs@ShYGI4C^h@giiyBv}y8tNLt5pJR+so#d39;QYF8FCFpIIbX#> z!^DecAT++D!_UxzzLKQgf~-EQ%f}zAC?UEppMN6KDeQQiaM-CGA2&jV1t>Sf46+-F z1&A)%U5oB4uJ6jgcB`=A8clCMw{TIPaZ^d(u13dJ zSNogx5q{#|+U(hjXsatbX6G83QhzB@Z)RatycidDxW1UugE`IHh-WG9a3#4-os-_w zO^zGR7jmT|FY@(k>K=W8Ys&AxboPztuCo{L2EWSc7|~~A;nY2C)`^JrPoAsIeR{4( zi2ve+IeGcjOZGybN1?qmm}hm0h&~Ryp3%?t$KhgSJeNrK(Op|xGXaaaLUkWq5Cd); zCix!;Br)O`cnBfXGDtdB*$6F>4PC{5_@0=Md*`?J<;zdE>>KHP>Tq`UoV1#Awn2HX zJ&4{3n|jCZT!zE65wyI)!EadFD<ty$@gq_U#-8l#G-W)B^iVllQIZR5S_T^ z^bpU^i5+dUy3(_kwjfJJuC$fQk}F|jfl*NsIMTKp*REw=X?R}~$N5WdJR9n#dFbM$ z#yb|hmQ1zg?eoMaXD~}>H5X)Ot0`Z8vMlev^R;~aC0`>$3*6E;9c{NAB}y!UdiIe9 zw7KhRZRvI(f!KUgHz&5pB7UlmU1e~zg+H#C7aZv`Ss2)>MCfqYI6C?IeG1y z=cUDaibcCP#`S~aA?i(EkC!#$*POCF#^dx#k?~C7DEsJEJ6R007;KZ_gR>kI`(a$1 zNWZRv%k6V_)Gb+4$oeMiT224#XiOH4$fL}Q zF>ZppGMEk;So`55_a205+6Uz|Dg3zi9fV2cJ4`ty-J9YtaWc+6cy8shOUHgp#-meL zvjssQUOCzO{l3)_j{Q#gvXsB9ql89D@6Kk^b`*H)H(x37U6b`?T|%QIF1BjoCwWNn zWO$yVWvpVqFh@+>QRkGn;>S5#iOtW?TNnz6kX==>d$8O+IyBW`y2#C)ZIz{MY*@qe zi#mE8w8ZMz-Jl>v#iDf-2e(Oy^jYhD1*roA4I9`y7JMq$pS!Jbw9V`nJSD-+#yQ(Q z?6Xhq$nBeaR!@m=Yf9%c7ECSMGZ&)E9<}_+$KJr00`N-!ZOXhij+}C|G8F9+VdZ%l zC&Ju$-^2y6ObXw`arK>Y??M0EPVpERO1kWJ_*YUh*v%}zUu`-@3Ky(qH5M49~m@kAz z7yGg5KDw!JO$Xe_pd(5+Lkya#bCl6lfSU$aJGQjTyi~Xi?7QQvG*zJKYV+Z3k>C8Z zBR~J^Tk_RMI+(W>?8{5sVtXg*WXIQY+P$`>*0XCH=Qh?o{~@_G#{hBvz57H?a*nd@ zdlv&B{Pwg{0{1VySyYuK} zKBdDibxGQQG}Al^MESWV+9K*w)@e+71KEr;yAscJEMu4#~?(H^o z&X||ojk>HY?aJ!%x{^UOy;=p*w)-KUZX#j(=o)z?f9rAfOd^i=-EgCA9?vfNw&hWr zd;Ll`3@_xMIc}%wJc6O0=aqtM`$DKj#5LGvjGJgTohw`Qc|A_a=2}PASG3P;bacVO zlOm2DNp8TnDi#dPv3!|upkvBxnt55Tqvd1lkiX{BoU$#(UU+#{UCYa9^`aMG6U{&R z#K{nKjs8r3Us_tS{?1~AUp}hsQ3X#fBV&k^=+dEBJ<*ZS=ptxS(}lo6o$T@3z$GYQLjHj<-{_h+&#AT%;OO zVN-&VL}`Yl(!md+zK5yzQR1EkCgpQb{wFElVedUo9^6yC?<8f-cm_}qD<*wA$4e(( zGdZ#smt525sElnU;=&nkVRY*~z0QnI{!O|0<)*y<)~bB{nQ~oz@`gnjadz!0T`wHu za*v6_o~}tI;Z6qfXJSX;fP)~T;YCh|rWbjQ3r*N*jTI=19sOV+3;#?mdFX{bi*Sx{ zXU9Xe4b!~BfjA~mfe&GA)u!~QHPP}m8`HLLF1s%9k{!0l-e=OZ00fu5rC}&Q# ze^~z#CcliFM#Fiy`6n**^K-w)u8TfCJRT9AF7r0Ty>1%b&CMM%-PqY-yUj9R5WkG1 zp#6C1t*OaC#tCOP3lvbTsjj^A+C|%efpw4BH7ECL>c!ddFF99P0dXjd^n1Er>Pir;bh^5%p-pDMx`tQkEVspMad{E# ztvA+{=-!eqKfNd0I*?J6Ffb`&42qK=omfwT;h@#DEX_k89q2ABN6SHYnJ(o#INdZ& zKi`{fioNk2e(L#!fAt8`^C}1nmtwzrz(L^|&nD96UOhi}oVxaGq_5lRw{GO;!TnYF zmLYe^pI_LnU%zfU;vlDy*{iFovcA4!0)vC_S zv_!@1uuY864@o_Zl?vU1g?7XmHwyW#1yTecNPVmxlrtO!WgSZ^_so?_4 z3E^R#n?Sg$hI#s_pLrQle+T)x|0Ja35DhKQYG;Rio42&jU;;yWyab0mh^AxDvaB0r zBn>zM{ZB77N>66z`*Qu|Ik|92(=MzV`Nh@8fNO|tfp|h#Iz=6#o|K8cA8mO4{Q1cZ zpm_4VFyl;s4va<@Z7y1Zc>A}y>p~zMY|#n#hYN$!(e;wW z$cOK4$~(WlBOkxBEX((6(reG!P74gwczFZkd&uu`k=7HW=OC^}C(%)iq*1KM$6++> zn3x0A>(Tfld5l3CUOgTK2i>zbkI{BX@3-?Y?UAODo~Ni@XFU7x{!sR(=pSSIg7zsU z>R}wc4ZRdG{iqH9MHn^L4`WIb7%oql<4xZ7C-OX7IwDKq2OMRKvm}YbKQ&R zXMUbs7qTs`huYk@9^*#hYyPDlf31bpmFbosZs7`&x_7+9&Jax_|9muKeQirge^1-T zO*Z0%HA}tuGXh@u*YIoS5NB*;<|cF zaZsFb{+w5@t2iipKa9IKJ*F=F(qkaKuAYaB>+~2%ud88!acNZVORqDYKaA@G2lfe@ z_=)54#L_6paD+hs`1nMR7u^Q4((la4{X4tz&Rbu}=bx<0(gVG*kXKBu_S3%JKAdMw zj&VUg2bAZCNM&rQeBd1IZfJS0UAty-oBhvE7iE1g4_i1V_7MSTC`sz`Idwh9R@&^Q z&l;`J@+jegUdsq8{l3chtBroFaL9uYM)1sdZNpL}C%ek$5PQdzE#4X@{ zGxhxPy??D&u(sp8*cj z1v(KLQ3NF#-MKm6f7XAtm@L2!?r04581Td`(n@7OB!Qm|Y)*WDhwwzR`|zH~`){w= z_s_rnbVs(6c)D?(hK-gVL_9n4EKFN4Ih|1;eDUYp(g_d`WoOzrW@SK&{Zf|vE zX=%+qqZ^+H=7qI-o#&5cGwoMYq`20o;pfiJ*{2tjVa3rFQl(!RC;Z%nyrlmcI3KnX zKiwB+cB5XqxD&BbTqW|o$OyFzjyM!dDoCuEy4 zFL%D&kWW8ak}p16mE{L6k4%$kvJm?QMPzH@F{W02;>Vp#{*0>=at(jvacm7){i@|@ z!nS$TdO`fA7ewY3YBD|3m)4Zl&4`f(Seq1P0S4-QvbvufluPG^+O%wL?8wUUhV;5@ z(=}y8*ZRaz8(lq4M*2*S+uo5z93vf$hfZ^3&K!>*xa5OlziAvKm$qOlxptdhNO^9Q zh5ASRe6L~dBblC-Yi714S6`TyE7#_v&bq2>3I)Wv(DEzTulS@W33}N^lnK7FpCT^B z;bLVxbHH=~t!@xqeioqPVE@HWV(~Lrb-=}7IU49@sZ&I$ z)tk1*Xj}Qp-j93l2kE_&a9}visbwMW$UoBcd#QU`|F|CYAKrsTB6Y)bNIR|HXxUsN zQs$o?4W=R1_A1g1M7d+)PTMsji@m4b-$O{Hur6K~K1oYjj}lR@bka}jej4a1 zpLZpu%TyHLS6^I^SHE>xdF_^p>#m7x$WmY13k3v=hMLB$Swoew=20MINSw!WjdOnG z!!C7utD}zH7yRdXH1}wAiH8Hxc9BLP!a>BZ-UG(@RZ*txeQ|h?o}1IMr3*8{ncE`I zaEFDxs9g|7+R5+NGDQBmkXd@j3y$0BhaI!GNyJ4FW@yl-+tQrs$m`#}Ay=-3N>@Qr zS|#d*ZM2OIEn=h4e(#5a>JwpTbno4}XV-9)m^TiCa&%-oSBMUb`2wa3{2Xxp{CQbi zTpZEl9=0PL4wddUl5|f8oDN1LrdikMQTsRFtl!=c`NdD~$|oPJ>Lk;b&Mqr*?AAOz z-xjBUt2;;+Kjp>nOo>dZ=gb2x~4Gk1%ki1zaN1)ZA4!2%!k+7{#q2qnO>j2REYWCBa4+>8~ z!)@}iOw2b>Da{^)&2H3tFw|VS3;(oT{G71zdKhl^mhscH+?8RVyqC7|a1gd*RKV?! zM-l0IQe`E9a}>&QN-ukx?h<_+(SBSdDv*Sq|+AJSl=!7X06H8^t8;*)|C9w!7YKpo>wm! zpX%jb-HHsKPEa*kgBoJv3DMv~nuA_TmY3FLcef@TesJq6QL2B3PL394d9Mea3SG%okW4(P1!MK)V|+IHaEe_JQD-)B#Tg1<}<^ z{7AOyHP{tdz9;hD+xO%bKmAlzAL{CJXI2{ZITc=zVtyV(pcduCR?NC{bZOEp(mpXp z(~0&-+ojq@n;p5_GWE=+copJqXT%X$G zXA8c<8OlXIlQ@K=*_f57)_K`nYnTl$yTRPM?Y}@tm{g^cye`W7rzM7-6tpgo9V0w? zX=D;2q=(B_>+-GdUR46rP{O|@-QI@!cQua3^Y#mw{OI8AUd#oG^c-c4eKl-jR|yjz zJ8(5MaeV$ro_WkCiZqSADC$&bKTFMNSq_fj{My4(N1vj69zGf$#Cg@AS$X-DOG=9MX05j6 zXDOYmqwg7y6@NFs&DVc>KGi<2@eAXgAa%a z&_QeaSYjKd5g#bg{ngKw6?rJ>PHyK^DHh+h#1 zhegzzNl)dUvP&(&KTrr#0y7 z;##k#8gnw}&B*eDo_zW7s(kd$1KTBLciW@#1z}#wfhdrDDodYMV9yM(vGbxnY%eu; zLFBb>FUqwSrexuKSIN+hlHQJrTqT&=UiNa5$=^rc20`$6=A6f~@3i??Qr~{2XX`P4 z0kJF(cGdR9FD)|&1&ZHamfc952MzNA>A9n5C{W~6#_{wwxIeVIaD68Z^0>F0e0SY(gF# zYroESdSHO~AOUPv&gFx}><2W4l{{7O($T$qDeP~?2^6OIGfHF>M z_An|hxU!em)Ip4pp}c9{s4bX=_lr-J@V@UF-d&LNg{UHM(O)R2ppTQYY}a~v*!A|0I0$9RFgMLIH~%y5@@ zNe-@pJBn5pJicC-@kGJS3lQ8Ox~z=Q=;9!~2!?Qv1`GsUZQD=?7XwZ6)B%aDE)&L^ zZ`_o3-n=Et4>W%7f<~Lsfren<=P?GL3l|^cPIhC@%e^+bFlaruOCLBOLMOp&fQRj& z0wuXW+GzAxY7)|8oO_u-84v6|FWM=+SCQK1rv3rfMvO0mV?xqHXqQRw_Ru@*D&u)YwV!ZZ_KWCSWxopeb&c767@z(g#3Zgch66!h z@KG6~{n>3h`%2`HLlA&z(-cAwHnz5u2=}DboRQhtx-HxplP;Sg&8HRoF2F}+kY3~Y4W-H3{MZVF>O86I_q{2Xmzn>$0n}yo^{H#pRpkTsW zMZ@(Up9cQ+?_QMGzO^U|IxQP}Q%T}xE5GcbHo(-xL$Lrpsf-JCKo%UjU8i&Jv_nsu(qoA74 zQS&_ub;x+WFs@&@Uun*eqV%iEiM?`zNfz1DXz~*(+Des1>c@u(YJ)l1SQ^MzpRdYi zAKsU{w|de=`P)OTXbr6D`RogE;30ZkUohL+pPS=XbA;MZOk`OzO;l5c$HqV3So z?XOC^zpi55wS=SXTCL;WHa`x+ED8siWlJsWb;AyoeE5kz=8h6kKFFh!#PS$(&gi-3 zR-6~dM1yPBMf`9v&$_GTQQn)nNGDJYPs6N@iv`*q4BN%S?LPAZ>^4GeSjaSNn>qHX zXNLxBE1g%{gEg5uUz1n9aY?RRwOcfeBAp7XHTc7Pyk|~69w58?qQWy{5i@Q)AB3#g zeGYK%-aWI`MXQUEHw2gcbRoQe4jU_CKu6lsnfCT+hee}9yVK!^M}aa8zNW21*(V1) z7$`cx>}NmqSbr$;=CAIVTYWe!weC5yi!*Jm_R_(C39B5a6wixDevv00;XwFnd@Wlw z)L;XWcU=J4KqkM5qel(o7->f{up2|b+o!ltaGtgo=akvJ^gh<*WjOaz57HjJr#Q3l zxWwPW%BV@)GTfpR{?#Lx7@pJ%jNZe!hmZ3QKaSzzdT+X1dwYh9wD$)QEpoA@;Y9&qL4CdQ3x$O-~!P=5+moIW`quh8-p9~vsk!mn-K zvP%55ob^^+<`*>Pw90MiNV~IRuBVKtAv01R@O3T-TG!iEW0}@m@1-3*UHtXQ5YL=R zPzyPo#?9WmVp7fRd)y=hr`xGl>Mw(Odm_|>jaXmuMZs6AWKQ$G!J z`HSNm$NZ?|nIqTs&vSO?aV)M~^8pL@w_si755dlr(^=K5e3YrZ}=|{;;iBOZr_WMUR3S+RQ5 zzAH@?OiTAfe)+R|^67^wvbt20&d#(B+G!OSzLy?5FB~5xQvCD)Fql$Qufaia#@+L% z@Hq3TVp87Y{GVhwGcryGlVl{ag*VxCVpf^8wb78TK3kH{K3bQDcXa}1mj;aj$Ax?F zD-m8%*q_j3OUgF=o!p&>2_%C@cG(vUE^_qMZ0u)9_xG@BRLZa`}apOwF{F zo7r|1+6FkUD{V2X|5y#+m^{a7F4Zs59D5$FiSKs&3t@yg33MiAN4>}WJlxaKb9EjM z__K+7Qx_N)HsXqx^in_igE_6c_l+ce#Sv$mf9beCE%PWm4htzy2SB|0MVnJ)h%Sq? zx?Z?eSMSmGfD(85n{xh2Q?9?XV79u}R5Tf<-sFm+{q|s--(I9;r%wbY!QLA41=@iA za?~9dQXH-%8BZP9c>z0JRR46Ccp;6K(QrX_UC> zl2^W11Xh9{c7 z4`b6weqxI7!<2*Pk> zk>CIEIr+UGy(%xgHZQfQb?G;hwA9)v``9%>#_Bv-fkLg9DsD;*eyd{+V%&) zp9keqqSou#yvNV+PWXJziSyK@h-(jnM5;?n6x`{P=}#u2Oslx`o?1`kVK}|lw6&;o z)!8G46erI82;=^0{-Z9if0*~xadC_XXohIg<6~3K4Z6Zsa#ydPlh?j^LFN{$NYMeb zz034RFu{8gs$(&(;Vv5+e6U1&g?5zVyqFe<5ts1{g27H_!O?jZ78b^CGj=*~0aLnB z*x0BwOvBshc2qFdWJ~+-+rM2=cSqKiVjo>zM)RLpd|RM=#t zZ`}QpP)&DIT9d-7NW&+k6*x-VjEu*LNquv_J_|SWl~D@s+=l={CUuj9U*XDOSj6MPPIXORo0ZKqG`dUj{+oB? z{@1$t-kFy{Z%*&!Q^5SR<=PIPP|ij-O((a*U^G5;p>fJ~tET7IWjL6W=Q#g^(zEN~ z^Bax7_nZmCuR*HOP2(N};!esZBja(x`<{=7YM-q3OCz=HR1(lJGctZd1{Pz9U*;jQ z{DReLEZEDn5AU_*vrit%NAIu8@%oj<=!_i8Sapr;f!qU=`Z8NsLy*(tl@hMEgY47sSslA%ICdPs_=pm2DWGI7NPXYL}I8cb*nJ~QiU*T)E_-B(p$1%6WZiDtJ_<53Ta%Yxy((9(=?bQ} zwP7ZR1>x1S9i(}DL^?6fxQ-X<0cMv4k0}d&M4YUI8D|c3SXM-6bfcpzE-sq+LTGgn zu&GA3?6CXb|IglkHA#{zd!CpEO`ci2tD2qe(|tI-barQUFtY;;78uA1L;w*8ULbhD zci3m(ZNJW9WmW_`d+*HboqNyR!&!Hq=H10vavB`^Q*#Zs@bHL?$c(Jatnz=Bmb)7# zYHDg4=H|v?#PN6$yem7fxp5&b(+Y9!qV<_ zg~`u?VW3Wu*K9E~;fPK%H>QdQe1$|pb15H6)`xDo#S31k={K5ZORKC)%%KOdX^ zaNGg~&JT<=_#B?i=Uc-7PY+L*fu*}ru9S>Wj!C0*d#@r&WvfPa#1$kVN!=Lcjrf4LZN=0#*xl-kMXgKLL``2qz{XPy=c z8E)p?2hTpY49_nptRbCT>RVR_-GlWuym00(ow))FNE6=hYo9#4r<>4#o0TU}NFyQh z8!U(CXVCBfR(E%Wm)66dke;v0t+5E!mQ=wkvMwR zeV(vP!tEG%85|ht{J1fc+|%sUb)4@ADll`P?6%u&V-^SoLD_Xh7e2ORe0E$lOhl9iu~?Z_vP{Zwse{+(rK}p=U5*dV5$_u^v3w+7V-#+c}_lOfNWdL zT0!&lrcHO!@W-V;sXrJM<|LS9S_KN629xlcNXK3d(awGUa59si*?Qct*C58 zVbQRBTKH*8KK}5D-2b{M-Ij*dptgg-tbx%)Z)qh4f<$(n|1|Ao$SF&|8NyH6D!rwu zb55;V6OI96KH`_>QnfABIgwj;RN?*cRr%phUYFNipOZ?hq4D-Leq3ijn=lV(eo!Bw ztw+Nxs}wB!H1Bhs&n+nhH&5S{$rMSxiF-;({2@h@G(ws~{&rPQlFRtJa+yy_{9M13 zvT!%^x9Y26%A#O6s3BP8QC^dBDj(MCWm#OU$lBFlq32~nM>s;Stc$grg;>NBgESg$ zd?RoA4BZ8T9rsvu(PQ$)=QPNavcP49Z(qQw%iD|m1i*Q8*REZ&y}HgQ!D^Z^jWgNg zAbcDrVPuj_h%)$KYn!0a6}yg&yPx&sgI_bI@S?%^Nyl8wpDE>`AIFuhSn*1fTy?ZxrMO3& z_IV!VqJ)L9rV8$|Y(MMCXCFP4Pd{uBC0KX?d0Sd26Qsj|PwANIZ|gl*Q17_z3H9X; zFWPB+`yOSflu=TGwU+wyRK~Mo;mS>sZ~v$+Kl$r7`z0e9RD7?7#jrT;p^TR9h?eDM3l^a^`@|HAOJK8(=?qdCGm{%{D&zEck73V%8&hLyJe2HU z|4aguTH1|sb$Q>2viKH;VI5(5oIZsD=MJp8ZB-g!5G=Z`?DA6Dtd1GeapK#55=6{y zobG#h0+ZXX94f3zN}JC)dEr1l|7csDJvvY!-?5i8%1jD9z1MWZPb_hoK+_tSG%f~W z0XhzO;oQyl3yw;Q3BiN51@cQ?{Rpy{v1{NF|gF z31`rjOLbLDlJtj*^5T(JB|+St?&0mDl!W(ash5Y|Uzc=EZG!*3T{o&=rPzRnc{;F88d2mX?-A?$eze zV)k*a58v5lz@fzMZHavO*`9p(+sCr;4AI4w3aq{=<@vaTCK1X@Ze|%HvHF@LhB~`AD%)-l-hAN7deRLxS1AU^8`kdFF^n-u3Ek>;P#n)g3O%+2| zBx7q&?A|9=Mw57<@6u=e7u}}>Z@7X<9KVnK$30I@Nm(-Gggi~!EIfClK3|cA#lVAo z3^w^7(&mZaJdw{Aj<)J806iu?fdNGqC3tOZEjRUPFunu@EBQ81{6Qr zg->T{Iyx9r=m^7d$m(;zf--x=0&-G}iZd>))M^ykDlcr`qB{oJc)97gn_FS~;68s+ z7`&$CG$a;XyN%)&C~&y|4+lOTk2GA$?{Pc^YP^*p!N9K__y^f#r_%H~Qe_{jF8H_B zTk^%HPv!oXyK=CllRXw*m2+5gO}U7N-bEU3R<5*d0;uEQ-c3ZgiSwlB*sKRnOi;Ps zJ<^~JsV{cr_8T?%?hmfX4}SWFy!q~m)R)@QDIe+@KqnE7x;j=SMl#L9BKI`k@~DM3 zWr?k}THYiJdv=8|Q3_Lcy*lxnP~YFer11iAKS=bk(}17GGd}P%`e~&U%I(h~4_8)G zML6~kabje{&_=YO=?ccfU8&W}Qs=}m-lg#- zVw&UlQWUt*fHBzE&GrR=lFR7}VKaGP>e(O+fP5gxO5qJn&90_$55w)(Ux@tSHxK0A zSKG>H3pTJ(Y}xb1kvldK=)i`dQ$;t*r?2GBo=trKO*)XK9dLu;Q5;9d$8VDK<1l`o zjd#-Ltb2^uZ`{3;Bfc+C;5;#o7qfgDqwn5d=(%FxaT3|2vdY|4wgo?y`$^nH#_{46 z$_PJeciL51e|97f?rzK7FPmZiu4d6M1ve1ldsZTR7U(PU)H^1{$g&2R&Rj(OgFH-* zn6!m>C%m|JgD2T0$^5&A5^!*QL2 zhQeyr;XYL=2mMiMQ>*QyG;MgNaq;Yv!!%WnALMNmKi6s%Rd}_{D(t1e@*4Gl^Jm(e z3jCumQ-J)?W!Q>IJy3RiAMt6<){T*JL4ivLth#>07=(h$CxLzY!tCHooH8=HX(CeW ze*?;?I+~*UrO0o8{YV}^IFO@*@ZI$A#xetnBTMF#_%twO)p)GNOZaC8i(3pXKC8xp zbQC;H_IezK!wvQa7zm@2(x63mIE}o#nJh@x{qn+qVfW$k6ew_Uk3B7>KlSa{^amAm*pOR1k*LNiLOQmSaW)izOb6U(go zyL+E>$}<}gVYud`=lKPLTUSGV#0py&U{dY@0-O85+@}HQ zIpqO&L|0AP4UwHKkxxHdm(Mm_-A17bj7<3l2F!r<;38ne zK%Nj@&q)zawA|-SyyI|O_-WH~Od9W`=@%$)aS_WVmj_w7I!a!3O->WOT19c`B)?|O z%l=MD?tir>UwpbD&z`6%(NyQYxH+BNIeq*rNH3|QDZ1m}d55d2QaVHE9Fc76=%KNZ zR$?GAD=ALeEDLKQ?|(<+M}KimzWMDHS-swoZskzhUgrr6B1Yc!q!-BNITS(^KjxdV zrU#9N$3>C7PvWO5%Qb{=m03XY{z75_!fp)S#`nm zr7CbCu)e--R$Z6`(?6>qPGIoU7f^&}iSTAH1ar4d93Zf|ZOsS2E^iTwH11@;fBYO zKASASn%R}QPTW;Z0_$!?72d8c_G{$@RXA3p*S>0}GkpHhmh5hkUPz(aX=&JSPwFa( za;a+;w@{wZbXs_OB}5rr+Psc#yRd7Nc5It$vT?0#^E%dE}x|Dp|sU>ZtTd?D({GB8)>^! zhOnIkITn7Z$C}EPI{R9u5+4Bx3M%c*2Pyc_Q3&q}akvl9MufLGQDt%{D7S=9t`UVi z(|e~rUnLV%5WDHsyLVJtu2kzxD{Y&9F*YfwpZ=%q)X;X(dbVp?!Ud~ywbqfV*XLzL z7ac9uXa@Rkun$L51eyd=^y{LC?*T8RZEbDYq7WU1ewy{XG27G%yb!Q`0i}^u5Cn5@ zrY=@pN6aW$#ySc50@#EA4;(dy;>MuSN2Q(TB42#ml6zn5$o6Jenhg~oZJj_En7OQ$ zj8vmhIL`k?;q+}dEy84b0T3zgj%ms^3;rum;KE>FJmkx#Fg}jsdzFdyso&*b?N6_~1+l#?@`g3O(C44vhaK5g2BcNzt6KUW}Cr9$aVbgOHxiG2I}H{|<2 zy(6!`wJ3EyF)T-_EUTigfl-bC&CR03zg~v|Yd?cmb+#(&0>jR?Bu@AweY`+7#m}y| zX<4=Htt=>$iMx|;C5YYn&sq(4i^I9nn#RkZcoOom=oQj?YhA8Z9d&cudE(;`$d1qdbR-}C?up#}YFiHXHB@O{2bK;f zET0n#>$8KEIT3Ps?G)~h^B=q>zsecLhqa3$Sc5=bc*>XOKU}W(J`R^WTRMaOqpprY z_cXq@S?rd*#>jIkP~dW7kf+1AXI!{D_l%EJHad7V7Zee5VcNw-l@eS^ZE1HJa@5$D zmR^^Z7M1E!tA}*#JznHSrVPL>s3AS~kM8YPGQD@NbAy-3$z@6?Uo20!MGxYN;=8G;A^Se-;NdX|;*JdW;(EjU+g$vczcX$m*f1wB!1(<#E8R9 zn{GCIHcVceEbu$dKfXHh;*3kDK!MAKQM?agw^9DXVO-JW(veby^Tu1|*J+n!^La-e zKWNI6hhpzPm@a~%tJk2e9D{)%muq^r_DPxsYbZuro658rE7!w5-k<#WZTaSRZpz9v zRc6agRaP5Pt*P>A$76+G8=04Ue!_yw-qSiSx$$yfuNmee6h3P#Nas{Z=CcIcqd?jR zAtEd3Xv+AbPwJKVdOFK&pxii`=AirdGWCIS9B!-)>}mw~WkD6r&XF!0w7rz-^Cfxn z8*8$9B?)2+rrE-O6{bGuGJdu$dJLA`t5>h417}9KT%+L?hpv8l3}WBR4Wn@Sf^T1N zCXWT|0MnlW6)YBs(1n~?Ss?Chi+u3AP5J7xUD@8yynB4lx@H2TuN0p%;x@^{S^EcI z)eYgMP4Bp8Fg^@@5G)$u8vKUi5N^1faky+8$0+v#1uh##@jLffKKJLWdq5a>{Dj=a zAH~6xhcM2hgt8mX6)nq>9BftP{^$F0_lsTIzZ(p2!_zc54dfQG35f46EU426^+PL$ zokW{N+cZ>#t-19TkvG06@@Ic_UB3U*TdDx}q+QyTHVP~z+)_mSqe?80x>DL7W`_ zEP0!y`J|MVS8oRhH_F)~rrw9G3IW7p@ufamcNPsSyy|ludF!18S-Td3l*Yf|Hxcs2 z4ZxZke;ycRch=h%9A}eifipo{m%6NiU<_VP<9H5~T^Pi1R*V88+Nx6jYyiNxdb_iU zMYkoN{%Kv-pR&!ujL&YnZIa)<(y+f_?dULw2{#TM?9!seq1i31PY!&6hNxRfD$D z>d!5S+<8ajdp}x~AO87ka_5aDRn+!1OhcNjLv6=!vXAe{r61Yz@~%Mk>_?Y z1VO=SS=DYGJtECRk^5ga94xcIacva)kGda+ ziNYbAp&U$8zC5`9sB6IB1QB0jWZm+@6e#dAAUi%1t<%u=LwSf42;B3=$SAjP1XS6+ zI@#-1Wqxi=vzeEj^`?CG(Ia{A)j|LKUBY4oOj8;xQ!WTRnDr$9idj-Gs%+Lsy)lKi zD;&*!?T*L~{(MP(@>k)DYYQv77^tvKffE!$T-ujkBktjKeeod|X)f z%Z52F{b}+qP~cTV-uQ^!M)~KCt4Ns&Q!rnvT2R@}&+J%u>(cAg<=K-xd2n}Ep4{(* zD2P#2U>xok>qtfWHz%$xZS2n{n&p)MpTDg?O&CMsj zY=aar0`<1Kr**}1h_8s`Lb$3R$!2NKKEAV_ z7Y~E&9LpzFe6;9jE=iaKuFS(ho7b%$8 zXG-ahT!TLkVatR)PjI#P@iXz0^vo~0IuO%g_ZyEzKK$)td2+8|0yyl;RVB9^wps+C;d^x%Rfz(80T542(@j#-htGv7 zjln>m0xDO5M5x4+pYLhP65^)m$LObvfOjfTpg?BK4UV7mI4ei$AL4mjEQEfqS2GA8 z5Ku@|HXvYoO)2YrrBs*JQAIY{zx&A(S%21%Zc~Gjtcebd*H?7X{9XagN(Igp z?Zm3}5EW9>xJmU!7l!Ak}9>azNQUig{a|q05E0g(H?afr59QICBN=1+~ZMdSF$e3}XZs6Y)7OObQgZsF+qp z3@&n`xHiU;v8Z8Gjj^y;h*5M=3djqqBQLBqk7{!FvkkfTWkZg9JA)<7KFnym_T4WU zC}T{=fq5jIOK3T$tpAm*g7~ST$}yMP29;`6ryfmL^`*7zBH#L9$xdqc#BXv9?H@-5G)NVuYlGKrZVWtUCdfC1zSk2oruU${l*2l%k`i~1A`%NA%Uod+3ap`dH zk`U2Bb&A%_g5wIPXzVUbeIGsweiR1tA2QEGcT@+y!C!be*BlO$+y3EOO?81Q+DSUN^=ZrAJt`63m{yu4my{sjuW z3h*&C(b!U1iK1JnhOo%fRHg@O7s_w1Qx=IsSxPxQDS>$|WWOl2P&(AncpmdjG}8B42)TBpZ*b(mbfi()<%DLm=;hFQ2cr;5wR5Oq&r$(Z4l7>w^)IntJ zrpWjIa$f%GpT8|{y}u}nSK7AKVQH-*<(jsS&R?{DS@WrsXjF~Jw8l1)PE&iWsVxbq zlBOO|PvtCKmvmpifDHEQEa2^+)K_j(f`^Qsj2D@2;2CvOo?{PqZLTVfhR)I5C9U7G z>>usQ+KrC<*Z-$CAo*){Q}p3S1!g2P8OfnX4Z)cD4w7<_211tU>vHds7wN&o|`B!$WBvRW&3({RE4H zTO<5?6(~^Pq5%0f4F(s&V2q5+QIKpMs`^5&TalyvuFB=MS$Cg5 zQMaJm7?}*WqIFGqyI45sd@!c1CIQh@nOnUf^6t0m^4%Zbly|?iB)8tG$(3tm+uC5~ z@tUHDWj!oI?5keox>U`=nTN=|ui(Z||Gr{+7Krm3%)5WG14_FBeS-IWTAd?lbav#< zn+x*S|MVUC)(@BE`W+2mMf7qKXSQW_%WY`iu;Al5^sDe0;;ee1zzM+i1v;PY3os|l zz_A=yb^#1Bt&k0%o1I`Th{Ka5y6Gf{u1IyfH2UcLVHm}{{#kGoj|Ie-}U6HrH zwIa(`%Tk}O>b$3Oo3>-8*Oj(XtJ|^XF7qVsqZo0oVQE+OGwRQIw0+Y4*7m&1;_;YN zX9QQQjd(W(N}lm9Vc}(NCQsD%y0S-A%2n*rPi5`qzWn$vugO3Am)GR2cPxsQ52DQQ z3WRQ;fF&nq>5*{WM!$j3BUnuMzTFpr8TLSd(*h+DLfLhz?$XkdF~xC$@Ob2PHO#FS zNKw+k626wAPHmCrPf>K&<=Nwgv>O^)8I-*ICkbDfo%Q*6v%q9+l!lu$d={sT|DthR zIWJ2+3KVz|ILUaJ%^2e6=&-jJdE4vOW#@TY?tQgu*4<8G#0>_tMCoybr2vf)w&!X4 z@G0DP-Y?5f{^F|q_|IRHZ+?4C)~@wb;bl9+k+z{KW7S~DLE#PaBn=Cp2>QLk6wJ`x z0rYj^cP8-sAj;+wct^_{=4JSetp^-gXP=^0#TOl-D~GatsZkhK^h?By$!-F%|`=%6M~9ya9emxr>wuFfjQ3ENcx zu9FE57T@Iis}7x_I?|GM_ek%%GQTGB`nw`O{L6XyFaG5n`PPpY<@y_4sm!T=g}tk) zFjiDi#J~gToENBTWOG|$Ne%NV6s*3f6*ue!4m8WTFqyPTGa);zPTe@dj{L(BcV$)Z zgK>(J6&99S^1Yv4lYjBA-<9wGMAdda39P|B-f6|n4 zXF>C?TKOm^%B?H7CWMtP6XLey{?u(d1w5~DdCsCdd1)M%?rHrC6nK^JqQ?U=H^^Yk zn~y1U=H+m&Di81P%j1Vly|++SE)=vBmrFjM4Z1p)mZWM{M7~hhkdjWVx8D@`^MA4+ z|NMXVP5H@R-jG{wsghgUk!E{aTHOPU6;49}eVx!0Oibx4JW$k>P;hMv0PU{iVO-g@ zaHmBkjlNQ?SwvR+uqa}?KwIxaIm*?By!Y)J^3VU(cjX5^S&@}%8jvVj&gAH45(xxm z%rb5q^W#)`c4hZPAs!J0&JhSPwlBa846gWG-C3ZgOgxf*jmg=}uGel^cD6)5`QWiU zxxcH6Qx&S+nvyc54lbCK@-djWIunnEB^quo7+i>*C*m^Xm1mMNdYDP;b6ogo)4Obo zodN~U3zLp1hllT=bg_Lw$C|x9RYDF|rQDs9t!D>v_bWan+_UXwcDz)gV#DJ!v}40IuHvUY0}IMSpk^CozCR*}WjZ ztj~(a_v*5R!L7QpS0-TcgrS|yRFOS8?3%FLe9m6o=d!iYky>?872EI<8jJ}6lykt! zY+3<+QIW03Nhc=9MQN8=l;fh*r9gr6#;nJ}BZ3<@7N}10vvk&@EpPP0b?{|JI@~{4zTk_BT)i>o^KU|S( zx4Sa8cqrX6pQ~fxK+L2qtxfgWt~u@7x4L@Xv*MW~J=-pkQn!;FKW02ay*S3MEwy@A z7FJ4f?Pguxes@u>zm_DS!3M4WSgIkc&^ouzSmnSt#;?{8@b{2jq@m=+*^mp2#QOSr z4<psO+?r9nzn@)V6hV$FOxBKGg=E)IDfKQ0FSvhhl$ zk)-gwjkufjPUSIQxAHH5VURdHJdowpCAo1kOzQ+IA-nq+SDu$0)Sb2sa*!5A>!U4k z<4j{{m6zAvtI3@=Zc0ZxWpnen>>nIRwLB-SR!2JBu;>WybZHvIB_+M8v!xpT$CVce znZxlL?9VKa(OG^OoLl`~!>A%1EV!hPl1o@#Tr5ku!rpEzW2Gev3uU=}V?}PfwjkGU zRpguBxhijbQ=_R8Oqr~hmM1*qWVKPssD^_@8-oAR3owMaQOtq=lP6DXzwZ3}yb;E{ z>({Rzlk)5^z6T1NIpX8SU~bI&Saq@PItH2kv|zx)$jJ*2y(SqLkMq6tCl9-F_lq6b z-sGnm-jpOfgW%;sEL3b_$q1QI@NkoczbLqD>-L)5ytOP>uFXlg&NdjG$0>$?jiV3r zi`YV)Da&xth7c>aaa~+@+1uMQ9S2~pTd%J{7%9y#Iv}U8+pQL6s8I5 zI7yrW1qxg~FxF2kPs{+Jlo%p)aCiu{v*aYg>+zxjsz^Z)%@^8OFzq_(sxjrOL7Ye~thy){+jx;j@b zO1-`qwjSzyXD^58yv+}yo%ZqbU);wQPYHd%udeiRB`g+wtjz6BOQ|8PHopqDWqz?_ z*4#UXeD_7!zoHw8G2&IzNs;iK0{$XB9Wab?eqPbb;l9Y{ zpFWd&Uu`R2>%grosglbH5n8U7Kv~U0b`qIp0?I>P{7KzT15c0ZNzy(p&aBH@puo$5 z?AXW~gL!U_QSPG@xJf}fV2b_xBz{fBlt48JHa;YYb z1CjM7BER{?BYE~fmD|pO4yv*al9tTZD=J9Y*bl4t2!RGh#4yaF8;6-qJ*Gv!{iuI( zKX^^cnC~Ajydf{w`49rH1o=c6?;VX?#Bp*?3tD`-f);I~;eaz-Y0`s-OhR zoT@=6MXG46UAZQFc+-BGADhpsfJkBU?F4kEH%rt!yra@@F1?m3ZK>AFGCwbJ^?FUd z@$MV)#@nyS+nG=zpaVE zG|3)fOUoL7`8`nw2@>w~#{C1wjYHti6g*?d+t}EUgM$OpZ+yS*wQJYLCw2x%dcMGU zz^%Hzm&F;u;R;K<+B+$-X|Qj%!uJ!^nWM%&`*=szpEY!_<5rPQhoe>aJY`MVt;tq) zmkD_Ta~y)u86D=h__IJ>9;eOsxcD!kUIhvim=xhfpzz*>&JVU#A^dENTenk@y`7HS z{c2s-pQ;yP|Mb(x%L5l@nX4ec`oFp@Klrm%S-aL&U2#X6Ellb`$z^cMi|ru&@r4cu;SqEjWrr^nt>NX z9F*MHstd(?kY6OuC)WaI)nyNhTXlIc?dsL5b`nDnW+{Wk%yUw7?d{$0<|av5dV1eF z68ZA8J^Ae~?#bqJ6{OuIv*NP9r_4%H|1sG3*u)?x50o;wVaTHEI9>TqihjFknf#t> z+Mc1T>2rFY=jO=1TpN26)}M#c;9uev!ln1&YL^_p{PHK40mS}}@I07CeDyvX>7VWA z0tH?vIRE>2@UfA3?xoKl9Y0y*yQkr^{s^3O43_N3Dc-+8*;RLwM=HNnX=1)OY97kc z%7Uz3tw|mG$*5wy5}@)Z=MIm0fL2O-!KMm|F zO^`BP>NYLhO6h5dvAC09>_rQqzQn?w<$6YMT%4%KKuFT6DZ{E;! zZ^)Z(-LyTqynMF0HZRq>&ey#|Eg-+dhH|oPf_WSrf_kAWV+}Ur74UY*h4=T#`aITK zFyi@fswlf`V_^Hj+L~(K=YVs`^i{{^=4KCT>F(~XF#}9+=gu8l_4vkZ7{mn}3>0)# z7|9uR9K*&4aS}GSy}G9Os&h-n$Zvkult2FFncV$+SKV}lXm4Hu(&tMvaXu#-0JA{G zV3Kbhed{&(C;x0kYAfnjYD&3OCxJ+wA{U^Lp2NhJ zg&CX=UT!2Z))3Xz`=s9<-Z)s-^+GhgcJ@X7_TP&9h&QG!S2Vk($YHXs ze+3)=`We{hCBqRmMm9>i_*Ap#o-F46MuNR>Qm3eYn-hskz08F5#*Tm6=6!AX4MH57 zk>?9wHI^em*t<~Ok6Rw!#?X`yp(&Tm0to~Gm#Us`iOH{a{sy}oQ*>u%?d|%;qUZ#b zkGJ&N;bDGB^k;|70>*y?|8iK6C#a*z2<56~{{89(OtEZaTOogLc-xU!03G_xY8(Q$ zPjoT!5ohGhU(_;_l7L(s8-g-X*?H-5`k`Xem>rZi%W4T4yQ7nbhI&=t+nkuIe}00|LZ+XwI;Md*1i6*v+4a{s zP83eZBI8C?;&Jvfl8b5kFNgd94EY!WFZGKAxrYG5O!ydf@R@n^xOGP?VFAv>r=$^F z->ZYI2nwo;E*q324An38xMi`|g82|5`q*Ps7@Hxh`W)lGGIo<#z=|T*{>~AF6k}3< z_Ms;yuGY@}tRmJCd=@Ws`w+&lr7jmmQot?cVkKYNo+o&{QAPJ}B-A^Jh%7gf6L?8y zfc5po1?+bQ$OW*mjlT5ft}j|h)`?) z!Y?2zQ$-u0d#q!W2j}F07pb-CAppVw-&Z$Cqhi*t1E0sK_kglHfh{$$0_BrvJaX3umzo*-w?}C0eSEm1t})KJ zfx)m-J|H#)u`%)8qcsv8ae>lOBua8u_B^5PN_nOw`q>SW{h)^f$et)^S-VMVU8D?xM6YYF`m<3W= z{6gLN`$%EtUh(k3oXFc=49aE%mU%$fTe1T*yz$Ka+f_9|?Uh(#xfGNhJ6oa3-fvAG zeD#@MQy6#gL7{=SJ5P3foutc&9`<}bl?SHsHQAS7tgk|zF1e&S+T~6&@BDXT(rVi; zO``D9&Bjms46p}A*lALMx^8Bf2)WL#t-`x#80BKLuXQ$#t)#tUkA2tMMM` z{i`yLgkF+C@4k8upsl(Rppv(!dw6>Yu?$a_lrFN3FGP$MKl?T`)>b{^FmMbi;V25| zb9}ti^cf>umtTJQi1l@IH`BtKU11G2%FIfn)NLfSN^(gVwNiNpSNqj%c_;L55&NIe zhH7!KREC5(^w8S=_`*4_OQHybl#ltJ5IJZlsfu>OQSJgP#bghm<5q}s&^c7bRo7bo zrNA7w#5?RQC&%AQXL90nuD{gb4$UNDB-c4X&IuO$j>PanlI$o;ZuPa$AnlBdGx+G* zo|u~=aqQg4F<+IT!&;1O=6r>0n8{kKqa;JGJw7&AuWv zJ$1#F`Qb?8Os8a3@p|idQ!UuUD^O_}z;N6nIq@;h`l9F>Mn;999mC(MZ&DRcPCx&x zIeN|20>@nKY<2s+?v_zhzMMxmk{}=FV?1hD){``An{r%W&!o zpkCqj7L02!9_&E#b*Dro?vdz)`(?4HE9Q+BYL@A(imZJ09aL8;+QLl&S)8|lNkI{T zHbFt$e(9H(oi?L{4gcY<;RzX?&fF=#%+pu5+>YGENGVcTqyf2;(+*W17Z}I)d^GdL zmXbn60~|)E^+4K*81BYgSS|1WO!A=+7_NJo{0f%I5R)z3T?d(!q_4s)zVmyt`XD7D ztCq=|@cA#cb-X(LdyBU86YL0gR_s|P-nG_eD>y7~#!fi8jH|qRprLHv8UXG1_!wMl zB94g#|GpP%xK%Jnvix1V|A%st7rjr1rhoQ~GwMoj&0no$mus?LclyCB56AOJ1tGx% zHDm(?UV>lg>Xe~kB#V1g?7qlUQ)}C9+fKz24+8Px9V@LoSKE(Wp8$DF)Sd}B?f@7E zM63a7L2)&_UgDg&T!f8l_4*6wXWUVgEQvCX-RPO-slMcS$^rIB zJ+0nwqaD$X&w@nzF=L8ef*tU-zcc@EB)ZT`Uu0allsGTIy1YZq2Vk(P$OBz^jRRIm zFz9{V{V}B{G8w}EX>G=ynNQ?hoGvZKtraB?;jKIB`OwB2_sO-GwsL_{{g$LSVje|_{ps|s$<%^4{g8n)foM7D)Mk6sL_*C5 znndK%R62$a=>CI*>oFlAp+;~5;lXLdUM)A0S*+Sbx5qwfwTZ+4%~Qxs}ID?_}~WE!l8 zXc-Bw=Jt-2f*&Q=>$%Swuez0^S(tWErcOBL!1j^!GLbosJ&nWY2&jJ z$alforrkcV{Ua2M*_yJ2X6cAxrsdx~1(#xzH}32_{=32T{26t%w|1C_BiZnG9xJ@X z9H8c&*9_aEGn5vynh^kAN|QmbCITHnDUk&+$|l>;Y@LtsM5-VvQu-BfjQj(Z4e#eO z|FyI~3~Ywp5in~OkXq|vk_`xrJ{h+<^Kz{Q_OvkNJZ?j@biRSgj)&0}c9?sDVBwrz za^$_oPG1+I=CsqeEEjcDaEm?{p5I0AH&7>{|b2Z;NHCk zh16Jc)Lq{;eXB9mCz0ZeR}>B*_LWKm4Du<9BLHfiA3q6eU`&wc>+6fA8nm1}p*UED z=w&~#{rSw%cP}E9T?4yR8|q%8K2;k|Dm3<(B0Wur8ESf&DRFXO7?2sz!fU~<#b(Co zeR5EWhMS?Opo>vA`d|qQF(u>drQB-qwT%4)k6kBm^dp*>0KO~{%o`I|TNm8#Ix4N- zf6sktNdIVsnr4VIc)R$>f@SX)y@S zf{Up=UqrqnLWx8#G}}U?6;_+se_%kgI%{Tb&pH06N_9Fq{8Xs*$Tn~V`$F59gm4xa z88dJJt)+*AUXMW%?NL${umw($*u9xn{oA`AmI`Lx&_@2-)80g;4Ow2zh{PqI`A!4n zRjU2T;1KL=JjFgt+g&_uUA*MdF0;&VxSD?_L;csZL>0nkRR|rf5No*KBL3FvH^~=X z@2PuYhR?#nB1v6O^B2?2issp0#kpNBO24L;w6}$$;AG};e0=;BP^MhAqk?eyWq7PN zNbTp!S@S6L8MQqcz~sy`x~b^Q$Ki@h??4=*_upYrAc3Trc*P+=9M(q9C^G@?D=gY} zKVNooZu3$bL5Y9=vMtbIL=4EC@crvb0;cBqX9yJ2n(tjg$W)i~ zwNw0zFx(UW8MIy-nZG+3JRcyF4_)HyI`=FciGd1Tt2zxRl53f}$P+bg z2-`!~1B|35(Aij$2bLlIsff|72I11=FtdVhr-&6g;|)EUNs*rV4R3=Z;tHfjIn%5> z6%OT<{CHE&%XRb$7V%tY_Kt?7gMRvKQ{!7Iy3P5XB`cMR9YeqL4?BD9zSa6{SUwG< zt{f~g$S$|6X$TjZ2Snh01RgjlPm8gP<i<~RPFd1t+7+b+yvI%)Kc>ewW-gOSY@!vhDjom5}Bo$5+S5|wFh@>A1YZdZOuBE zQGMwk>vrSaM~sZ(9?ZB;s?)(w7p{6n+9hoJQOo+G2{;`y0tcBgytys}rc0}pJU;pN z0c2-&B#f;E{Ki8G&w8)^m`Dn&XF{IEaJsgB%wN}7e`W~hZ2WX%Kplyvq@r2|EX^$v z9AZWs+G-nrG@h6FS-&0Jy6;kvY+StV9wS?mf^L$B?YqAI-W}d16=9@N6#I z+~Q#;uKvITGc16;K<78K9@?kHHZ?gMT=J_INUfa+p>@kc9{I6Fkg{?uqM^jluE=yu zs+8uz$rtm$e^HNOFFxd2%GaoUKW|N!r>?Y07YSBAOV-Y_G&FEo8G5B-FjA-V{*0`Z z7At?8f2wx6RJcj*)tLgn)Ef801z<>5yX7mvQ=T>VZjNnbn@OQe9r@Du`m?@Pr^R#Rx%YfgXF5Uzo zN~$IcUt4}pcG+9eQwm@Ffp&XaM)wji-Sjl=)U&})lGP8x_vOe6>?85NEcS|ERQ4$} z4uL9)i6^WObr7o9p#)k()ETDXsB6MhiTp};_JRN&tSp-`8kC>C>B7*Q_UIkU|M#&k zTo884*B07-hIXn30Cm^we2+)FD;I?3y!-ahu~{k~g)+$-^jCrESj|9wIN0T#DYd%swA z6Dl-Uczv>mqUAjw>1MwEkw^qLgddmD)K%-L%dVB#~YAg>;Ftf~Jf)!syN zvs|cEqOicuo2XGLUw7(bZRAY1qvbL1?bwmX_=O1Qmgc{s4yG4D)AkU0vhww~4SuZ9 z$WL+cR3Y=VfL)EcDK)Ki~L(Rj8v*4gXck%wXXvcJZcZf%qdCF2e zW^afe-d7v4Dv%m^k9(r5e^}9=k3qDn&InV0z*ftvt6XR_}Xg9OslLGO+=I-4#m`6eN490+mC6O+qo!UNuaVDoAen^Ez@W# zL#KVbLKt02aK#k6vaZRm_Ih86Pvi|13-S8SGVS%OG0 z<}IerDlPmu4IPClrwwkx6*ikhTL?+>8aZj!?t$fm-TA|)0!n#gr5bs`m1*i;k3%FD z?}u7+0OMCzofClX-2~pl?N-&(Mf)e`=l2_`?LQaRxDSF6&`^zTdxI_^?N$-MKVtf= zw@N#ZluwWq`>fu|Um;WAj{kd-BN}h30X!D@G5>PCw76U8JmGJZUEeQupwf)v#Olu8 zmuRQNEi(Em)~>H|clXIg+JtvF$~bvM{xN501&*1?6~RkJ6S`Nm28PK`rVqb87r^Wn z%@Sj~xrP8lA=Sc@ZUm=mu>~!m{MU9r!Be+PJBvTWv-u(-8q2>=F?qY+{q&me3DW$p zM36JjvJ@lsQ((AK&eYxRSh2t6w%ZXG0oXx;=`Yc1Gy=pr>cozJ#~2hh2^sn!xBqCc z1)*iDFm zCX8c2$_OveV&$A1d)vl~zhz(3gt}b3MYcskijD!)MNSL*0?5(!sSlulJ}#ADI!E2+ zzSjEvAO9`Tw%G{BZew_G3W??7V@b+XldNpzf!KLvfz82FO6V>4?#uVz2#7Yh+>e4V z`UY&*$Lq!owei})-hcXe&X{jQY=vNw@yX0dbR-+?r`Tek=w zW#5mpy*l41fb_i%#cyzGZ`-mbrWVuYrlNhH+NfnbQn|(fkYVv3Gnj^-3BYHuK}E+5 z9KCLC0wZxI>r-4KWAKeKhD2Ud!vv@y;=V34sJ@~VqajUcJ$i>}+J|Q@UZ(#$`x%YN z@G;afGu+Y>9b_3&G}cruysuzxH~iYcOl5H&I5N2N&d)uX;^OTB8!2TLLb_hfNu3)BrD(a1QB;67Xjs zI0&6AgW}@iJ}cC9fN)MKHG&7T{C(`3L+ZE5_e3rDyz=Wx{onp_WB)Qo4d;FU&$l;0 z3u9b}zKf_`C&IM;TV<)8c_(w8sz|vb*KQDgiw#CkJQb!%&w9U;mS_;_`0=Qi zYP6b8oFe2^*;ZU60PceMwhyohdQ-cB&FA?0bvV*WNlT!##>RFsx*RH0!JWVIurt6J z<{}JHYm~qA^~Mjij;^``^yT*%!H&_(xvA#B?6~~ZzzZduyI*tf^q6#2lrWacyN78>-jUy z3TVoiz}qhJwHq^H%7Y$L4}jgjDF{PE1ycebn9zM}eLeqB*lwkS&6KKBPQV|NfTLik zS^IDJS4gY&BIynfT6Jgx`BLYEDiRpe+Yl`bzNRQdS{An_>D%Ofe ze%%MND7Z--kXFmLca=>5w9K6e%`#9lTl7d+8aj_LnQkZpNvZigd!huO`QE?b1|9>} z($WYuy;L3NvDM~z+oU1N4x8o{FT>ripAaQwkS{uPi!gN!L&*!?+%7n%G5=!wMm2j; zF9VhnfWQQt@EYIiqum;eQJUbO%wxIv_eGa)@o}}&XHe+!N8+BdV4@MwP2iZ`J^?Y$ z(X$!1wBmF}=Q*h4m(mBBL)RWnepB-gRIJo8{n@el^_3px&d$JEL!$+;-!$9w^q~np=xo=lH3$D)u z12yCFvPkNmxCmO|OQ5rx{W*)_qIFEOBDbJ^2DCZZ$kAHYcIBskjlC7JsxBu-Mx-x) za5E$Lope%Mb2uCb)*b+Nyty2HBa{a@ni-!*vvkJmp$S;<>bs+s z;ga{KHI~e8+O1JS)~qq8lhK|%mK+Inj%WfMEnz${R)+5Dyw9*^(dpMaCdFPXn#0cN z!-JQ<#|NE#Vo*UyzF_1E)dZ_{=zpR`FL+Q%)Mb4VO-a6_R#J6_bnCDk}(1 zb}eaZ6V{GZ_I<(8uwulGQR(t8RU`l#szpWvcBe2G;)6kG{_J-iC5Wemr%sPK2$|hs zjQw46b2F^%brWMDpIi`)`J`{WoKK06FX27eoqhLR_n}r0%wA6nwJWXN!j$o}B>8QV zr}NkEUG$;+briHK%7q9$<6Uk%6h!Yp3P*<}EYkKv1ZPe9#t-92-Y3RdkK zCu|}tqw+;~({+#VyG@C-w>86Ot$LRBaEp7oNN$8@3zL`md2L~%MNSr!AZPd2GEa_f zk368)kD$8s`k5WSwd9}m4X2o#Da31j>YU@~T!5Mwad;RLdUHs6A4vsIu2*;}v1@g; zMxjctS#Z}_wmhrbghOYqq1Q3@pM{K&r>TMHvbM$jSTGNc8~fROnifQ+>ISY`d63{Q z=~PFFV>J81+72JQt0)Mq+rvygJze{e-gZ(g|DD{%KK>%hv}gSZ!VT5I#{l{zPUyOq zdob_3aDIY(eFE|x2g|Y2I~2`2&1P-OYdKgxvqd?_#SdeB_rsv;v~TK7A6n`va2e z>ucimO3dVSMklh&Aho6ydrb#O3+DFxH0!2pR6RLy_p;^(H&{lxXDUSD`Us}SOfM|U zRTUI*)C@9`^m=Xd@4Xgi5eZD(KSLCWCpV&`;y=bQZ4prNiyPQ6(J)EL@Suvn{!a!x z;%tT(SS~VnHd2awHFN!J_adRp9F$EtI%x!K^?;IZOG& zWV?}e!L#Hl8EsCfrXGTLY}6V%;!)VcQUIk905R>))&)NDVQ%bI0H<&rf1h3VTNvT76AIBe65QJulF{ zteFn8jwSm!=q0f=Lkp5;JARZF&02d&(M&YK{!h|)2@2ISSexdWb0EgDn#HffGxliN zD_UX)0CM_$iTc^lNGwk4sv^Fsioch1bgWYkxiOa_Kgr2Vcyd|Cl^`MN^CTX zXp5@?*V<4v*hl(J@%#74&%v`Rw+yIPCx2_*vI+Bo-Eq#I_~2*g4Dc83Pbcy2`l6i5 z4}J41d@EMdpA1wNYNJ_c>o6hD!r%HyNjy*q^p=rjG63Z!JJRP&scX7$-R+?Vb_9lu zXAe-_z?5JRZT;pl119enOq~InH|ofA0Q~W%YgCYdJbn$CC@F(unB0@6w7dUJ2;4F~ za^JnJ4qKXHnXH63g_ZtettC@$ISvrj&hLMwr?778SxmR|qNJl?ei}F3vgn??lULik z`I1v<-BU!By}e=m+zHO59=a55N6h@QNVLp!9yE}<&Ii4N$Xa%T$8CDmS7yg$7GEme+-+;9bZFYh0Sw+BA7xgCf?PArT5ii!1&x{tfw4ACL2Y}2Qn+3yeH@ll zD3tgo&fdD1+{iD_QYy?RKBR?hxTLGAjJadVPBD_HL#QX>6tgf7;iEQ2_@Xtewl`d= zA8p$E`f~)BbaaV#7i`@t>IZ(2tArL|G@9x!58PrkbJSZA^WRVs$xO?P3<0)~hwtv1 z{ROctGF0|=c?f`;q2W~ zKuiJwO4F?Tn1k{Yo(Z0pjK8$d8yJ)~h;|s>;Cwz9uy#X>(i=(Zv$IhJeglr*oj#4w z!P@rh{7>CIa>fBSf-}cBtD@QB!8({-mj?x``cp9f(-Ga-IrV*=RNl?a*XC zff4f@6V?69dd2s3O&sTazAQ+Zq<@>ZtFxegSob>ApBzc!XjoK=2C4$wA;lnBMZxPI z;Zd`s?=r`qSfC5yfr6l`qB#x-InyqTh%?SYq;jqTYtzDs1LFlE_Nf;wX-t>GW4CiR zl>^U*odUn3%hQ?7J{=&z%kGxyI3hO5+*b@;jh^7r=SUT2*oYb7lG2SuGRuV|X+ zbjE=41Bz==YaO{Y^Jly#;J0-R3!upwL#>f-u7B^3LuT*$S+Im4Y#p^12qdNpmah*rs@;0d^&4r! zg&1Wx(GEahBc)viynpx=!6>uq<+VUhP+j>RPH=l1hDj$b7+i8?k34>l4vSkip**?3}n9AtfD;R-FL5b$FxL) z+TVOsDJcN0h1jgnYp+>!SIukx?bJybvN%PHE*447L)D}b6x<|KUA(G+>>1DczPuHg z>1gbvAz{Hmf2X9796U6JdJsaj8<%to8+$xyWM!Fy2@oelY4D6F%~1se;*veHTld3L zQXg9d8tqZNG=Io1)@A(=$o()@GR`27x9Pg-mgb57(IGHIh^c?@&L;WO)HxU4D6~a0 z@w!3NNN?wjq$l%fOOCr}wZ3odZWfl1wc)QIRLhQzO!vb#mIWKKY$tyu;};&Oi50UB zmweXp&pT8~2u8hJ2wtyD-^!a_Ms#T=5@;OT!l!aF(9O4llVd zNoXj&eONtYEqE(CojR5;wVSiW^R#MhsOhgYr!txIlKMT=Y55^ueQWKt)Z5F2>BJPROw}Cnl*BnO+vpp?k#W)jEML`FoKL{W8DT zQ#HgDYyy#voDG)JXQxmj64%x?U!;C0<&dXBi)px9Z-Kr7aQKa{a>tv4BC3u~*viw^ zbtAr0$(;#f2UDIQ9Jd7%u`WZCsvl6|-&US+TI1Br?!M>RcQ)d8d~fjVJc;)jE}MY3 z)r8aTb>xPt4Y41qf!WTTM*Ga>9Z(-2x>dQ`&oFQ!_`0{Wv?x!RjPF^fyY>Cd2XMe2 zIFV59-A^GsSK2Hf_U`+ltnUqX*YJ4zrk`99*cm)E+z^iFVHBs7oI0y$)_R>g#PTR- zc&HS^G=VCblLV=RrW!v+?{=iVYSX|9?9;Ir+bsh$MCD7l3@{rIjo-~JRt0)mKE?rR zZfCiEl?Dd2RH~Upy)O9>3+1=?>x1cibNjqTxqw(M#)Ik*Rd_J%1H&;#JZFpk?>S zJqh{lxJ*V-qAk}F@d(UWW$^1{k8FjVF~Vvb;eDT~X~FE_$^RPrDYEAdQN6(KPp3Mg z884a^x*fB+FTJ%HGH7`Kdcv<%?BoH-577Qxo;TV{cC1`}S9u0KU4;`2rYCS^M_ww0 z7*$!@)2p|s!DD>K(`!|9$=d~lwKn2`N{M5O;gYm5R7Y2q?++3YUptwI17E-bo1{Tx zuuqU3WUc>j3oNvuWo~;ty-w)dLI5>Syxx$3_Pw)^a@O3>W7GCHcNibOj$ni9cQz}` zlloVxPXz{P-G#4`&BW7Zc*ge9}^WsjHZg&Y>kkruj|5j zB57-D3#k2|63n_toQdZa(5bq})?tOQyEd@aY$vjoW+_c*zrOkhO9(4qfM_j-{yRHg zNCAk#d#haeQ;hQ^>Wd3QU68=4^RA%1cS5Ltmi%L4GMRPOh$i0zt@9W4|k3aVTC3ZpC=q%fD~`EZ^L;sqWkEGjLO z13o=A>Skz?v?dU)kB5wF&S0XD0CYT{D&pKjk}112OI>T}7}QtjU)C>T=eklp1u;Ya}6>lV2N^9!_YMDAFB)6ETOPtr` zj`0&U>1#ZRk4xWH)`%cp>nVAElAH8HF>0pJTLrt&!u&$qN%M-!V>0He+}nI?*Trbx z-Ah)U*eIu%jjCYY61vb8!&Nj^6~M-hAy8r+b>zdISsQ@r#V@= z?GlGS%vDjlgu2BB-2Dyqd)bmc{7tNVP~TojD((8lj#g!7B|-SPndt}N)~*SdJNREo z@hcS3?IQbW-%#_Pvq?x`YncPhaX#=g`Mnr>xgmksk+DMfx~=FM_TW9|s^BrG%r*n< z!#PRu3{?adyASGn1zgFRDWyt32hEgCy^MH|@W271QRl=9TwM&3$>zCzvpO}s9|Dgh zOg8Og9Ozaoa$TOLQ~97m?~e^!JNu&O7ULPW?CR)O+YhG(LU>zqfXNfJWuFt?Jd6F&1!z^9ro}S)}bS7Po@w@*F2v z@rTZYC-D#4Q^LQKb(0n#=04~e?om4EO3ky2KITJJ5tv$xM14W*^(saBaiDI&BC!0U z_6l{?>j+JO$G82l-Sv~{V~-M@yc8Y9aSa=J_ct||UH#(D>HVICvy9^2fNqTSkRmuU z-nMGz>tHm@N}2Oy-q6UXW&ihY-o`Uvhljnu1@h1(o0>6NZRhZUp^l(;=6vtwVpK6= z_w3rNBSb=R!DJXqwgW`Luw_sSY5jmlX*0?yfAA znK|xhUIdoaH1*hSXV!~th??bdWK?a$!H!Q1B(rmHxI6G`=5QJ+34DFJeY3`5?B}*X z+7(RWbh*b&0{tszxavCx$(6R0Ai`lf8Y|J?!jXVLO@17%j6FE3v?nZ>Ie0h8jK+Ev z6Ubjq&e85oHglu~+!+HT)D$A19l}oH9eZJ@h$dJ{=D+m4R9;bMFI>ukWWS8yiljc_ zj;LOvI)6=!!!`KoA|r?`N5I_`!7W6%%ulso3~o;ey+C)&=}!c%`M+qx<0jt8*J^%r zV8J^=-4c7{T`ALxP2uNzq(q#dPUAa+JPnfUpIfJYtod&6ZNx;2bR>F@81MVqno-e_&)Mtlpda|1`k zyKGnvR^^4m`HV9^M6@i*1U!0@UyY%zG+f)M*l6dO`J$4=8x^AEgo&fx2z^5_+|l}v z&tpGs^iS7u+;^jH^tbSwLfR(&X-@i7Sy~f!S;%$vH9btgmpqa{eSb^YY;U^LfdxYM zFvt!8($-sL@V{60P`7hjZIvv)SAMOKK!*WM*t=bK-J_8`;>jCt&~(4c!{*5zS9%)M z@b|_N#U~m>Uz`h1$ne95oBm%QTaAl; zoy?SFQ;KiE+~&9>9J~+Wc@AmBZ{~9A@SCr;7a!5KRq%0FoPj$r7}xU3F&(Fk*LUMp zc1UK4<~`+*%KFVe?pk|xew#@EX+~=Z=5Z1q<1N_8&$=tO?`w6rvh^i`+)%*o*=X-) zKm-t%u)LDc!(ngB0o+A1fqw$A<3J9IjLru~H}W9|@7?R?00GSa1Si*f=*(VzlNuNF zrt6>SPH8Efx@SK=@joZJ?{e{XyZKkhp8dLRy-AV#stHaO8>M-;b>QR-COoin=g&DF z7TE?L>79jBx;FRy=wUMegMFR%*A*^@P9GY`b>}##Sa(&bB*x6BtS3hP>Vb=c^JIkI=KtKR=V4}^ zHFBh(F`!wMC?Ht&=G*+xT`arcuteSu28Z!c}{77SQB3;?s^)|(oHcSXHvhC0HG9iC^a zoW~C7@)E3HRj`zgoD_G&Upne`pc~CFpJP3nd1PVi5Pw~hA{?bN*o+=ai3D|;VI5%o z59?_}ceJ;5+YH>p=Hz-dH^klfnw972C!sch5_<7Taw)KFkO2AZmL*77V(5OH? zWua)tVX)4d1B5ZneDgI(o5x~RMvN6)TFVq%-(2s&0QBbaT&vvV;owEY9vCv`w>8`9 z2SdTGrLd?0dOP89Nw+OlsTWbeyme_g zrtW%l(d1cv)rk)Uhd~!H29WkajBL_J7CeRckpZh*sVUdM}qf9ZmnA3U5v)$p)4I7!{m;geasB+ zs7yY$8DH*8wn}8;k@-0q?rglO8jZrd%}3Wgl=t>^>|x=Y)W}u3MoGKT#>48L(%onZ zT44kjm*N(oM1PL*l>UN1Kjhby&*&4F?>W9fuoor8H~5G?;iQzk1M{EoAK+|rY(;QD zUalFwu1<(n?9-E>WPt{jjT5sGMfl`>!m#6phL%HdB@>gqJxcE$^zb z+J@=}#Yxo5eqawv&%YtFxZeuAO=76ox!|_5Z02nDuKA#m7a<-hAfKaI;2q0u+<0uq zv-JYAVon#^BYgB(ptB+{P+;QbbZV*`-+(?#-hNo!A7E;VV57Ag;@dsL94ds=0BI6qAL z6ynZy%gvDfz$3naes*d(nSZDH1Q*B8k5~*JywpV%7hH1hZ zYR)~z6t=@WBy$RxtGH^pbg9Ia8sM@tx?%PF4ozV8zRV|Z7>3k&L}ToLs{lVC(4_7o z7mHfGlnbak?R+ZWTm*(<6Nh!Wibb!PfuESn7%UXV)>?%`&NyZ!Np@EH_NzA-F;;bml99!Fc9Q1zERTFnZ^Z?`(P<)I8bbQx*lWq@wbjhGfsx^NkDp;fzd z3K0{ADZlL4MD2yiIihK?z}imN4NOHmD!3(|xi}HB`Rsw=&m*Z40}vb>7EA^OifnGl zJO0mN&(fM_fo&|VX%>eUzsodam&TRCJH{TDAs)Fn?LXCi$YP@EMfWTEe1pqr31#ow zE}UgYX5kq|a9QBG|9l%4J^37i-F7(~V$f6bX2(wNo{EBQ2=AVg4%Lr_VT#_>yt8)~}&`*4ag0 zx2BiM!oO$ktT#}>pF*FG!TsfX<6bQ~W-gvXn)6%c>w{<8`%hE$M47Z}v#I+cXsyZb039gT7k3wS=1 z5PfOD%PrAL{SKqqkP=4riqWY)74A8PF zP?&>{snFD5_^gaSIoY9;%EFuTkslPj`r5!Wm45>6lN`YM>L-akl;YYK+@+|7qYtl& z*i2|z_1o=)c*$HbOwZe!lzjr4t0e8oQCIH2(0EU_?tPEl=A42nL_2w;vVk3~xvh4e za$BMAM%kIW*N$`bA20WVouebUEhmTZaCkWK%C(yimWMQG!!fJ6q=m9RuTF!ae&gvuzvxK+}c!r-1&ob8uglx z!V4A&j+jxG1}s`GhLu(SB0wk%TWWb$v^y4ACBf}V2_`B0o5%*WV04Xj-W>we1$e`Z zN+QMMO)pNs<3m)Tm#ciGGg(?$H3EcpFY13B^x7+X0&X7*{a*eeVmJIe>nj59-`jIn z>$#_a+2Z;!jmy@`}u;NR`Q`5(secg}*Xp3F`@JHMf#a1MQa>RMIKrgOAz44p-q{?q=^)s!o`np4}vq(@8O>sqxJu106ft z%?x!sfnrsYX*);1z1sp(>Xy9cm-d1>OC9#`w#-Eka#a~o0cDqL@YNl^8hrKMxvB-D zZ~9u(=$HlsejBtl&$>T=`H%Qkp1{(t>BRqjeK3c+??K`Y)5Mw9#bP*>P2d*_z$=P} z_V2e@t$o?&jdkMt4%RBZ5*JJ0U<#RoQOMC^E_SU10?ImE2w4V;!iYPiDTqsG!lufM zHbvguC%{gYZ;4;{@_uDU+c9kb~M-pWojNNmsKD^WZp> zXfJ8$2`>>o9)z-azig_NPt#fRJ^ZdHx?S}6&Hygc^Bi+b7KxYEI1BK>$q%LWX?ARs zV2`LFV5U}N)9d(_vAEI6j2T0QV>sLHkb0tYB~;jdECLtkwBZox-}mAZ*WjDgotYlq zq7;n2g~5)siSUs{V0eIZ_0X#+yB)mjcqoBYC83M|WzUv;15?ISV~5Gm+o4S&h;Ct) z;3!sfj4KN;@RBTgb+A4jM1_zWyk42fxx;zw8-#~mfMwvCLTv$4{VFO@=~dF z;@J33AHqzwhK7*+!<~hlOqq5o?Pm3hmxfcWGnkz8p2Rtmb@)+GWP;Xu(Bzu&%ge-4 zs2^~AV2A>gims6Q*X})pJAg5f3}?Jjtocrc%Af7(5tKi6_eFDl1G(ZTnxbw0_U7)g zd8~Qkhskq*VKYi`n)3WNj^@Dd#$jF~%rbCGMBRk@?!s{uOz59c%2yunEwv$>yxjBi zbzhjw6ua9dYBL9%xXnZhzk!ay*$fELuPEZLA4e_|kN2*yp?|~C;0HIzX3&mULKP}$ zYcI`Y=XqH#k3|;DA!KH}JsdRgF*5{&FM_6uf+^4c3+dvc)k6iF3T`2~AnvEHm=i?B z4E>PJ>e(sN^hd*zhN&Xfa^=upW0`;0r2qs^L*PnQb?+|Hr$6sfrCg_t^XT=7KX*Ua z8G8Ib05L(%zP7Z!?Kx>S!$+BXn*(iW&zcQwfm|z>>*jZIXc-1xa8tq9HE)a%9~c?iRzt#&JOQIR@^?KKCD0-*IWg7!@DH z@jX4Sr(;|mb89_kbl6sAB(K1jG2?~&i>^E=j_<#h zt8I_3?=U!N0qX>DJ%0b*gtkuzO8sYr1-;xtvcPOH?WF19N5#v^!%2`0f7a26?;D0c$RV8|6aTg)ZwU436nqT7?}+{UKK37lQQ_h=@@Nvo;j(cs-dsL~H?9L;forL97TTjy;cJc>M(J=b zoWAhcM~~&ngMF>+yi|JX-wAVQhjYjrD4(wA0((&{dH3Knurz5~mxaUfkoLEi)JjKE zsWoKfN=e>+Z&6mSsHauc%atF07=#IRoD}pwCopgl1MTQKPW)@YWyR&M!3zcq39;f? zUS77%+mkaw6b`=c%ay>8W<5(7GyIGV^M!2;jfM)NPFZ>0SAeOqkriA8j>mCAeVl)u z-*M>y50kxuvy6}5wEpA54wr?}WUQs9Lk^vCIt%99lEK zJh*!{%((EQ{9;TR?l{D0I7}Dw-SHE%>m7%FoiC zy!QIMy!-x&%q=8Q`|vtD%?8dBD7)<6M$bXVfnElyE_gX=@q&OrfC(V(XU_zwz^Np^ zoN)R_v%%m%(MVrXigED;)%j!8ghAVlYQNdG>maYhY5V;&`Q^nQ4b6K{VvdcI^&5PS z(&;O-$;{%G5xt`DrqL4j0%wLi{?57`7iQELi7_tBap_NkY`pk6?|zzm2%8Om+W04h zr*&MK*>G8!1bJa6jeEX8b|ea-1KDEo1$h)?QaEp(eY$#4zuj$BbU$yKqPw%j%VzUR z72A&rs3xdC|A_Z$jLHan$&d7h)`8u6z;N?peYN>B~^A8 z#`flMpUeTBw zFkGCTCNBpEfdSbEscX?bQxcB*!8m!{84rpAr$yX9*}l&{#~9}qFutEg#~+O6;j&jl zM&Zpv9DeW~zGFXb>drO11+Bs~QFL`Vn7C<}zKBfIDNx`vaQT-9mxq%g8-5n?9kHL^ z$Nr-*X}HrOn}_EcyNB_85yoziEh%Mzl9<#f5j#6uD7qpafA~P2KRu92X-WO~DjF8u zP$!+j)vYF7URE2Bje76TX4yqK&dYZikRC)jD9^}9NMY|cKozN~a{G;UZ^@lER_rtD zb_7}oHHf}rQqGZWGdWlU1YM(NzgR zropuF<8UX<6A-tTymc1tlX4_NyZ=1&MZZ3ypEI(3KLd``&T9cI}=`*v$MWh%EAN8$;!FrfbSCxmZYA~G@DYsYcDqU5=)ZO0r&!!FKVPu%m zJat@~aGJruv4UrU(dElW)Rv==6uBfdDWSNkUfR|<^Wj~QPd|Dn55L}*YWJ#&{kkf0 zVP7v6ORiWjxu(CCPRBP>A?_>MIWreA$5g5vsW0~AoA2L}8+Wu!`VSj}ZCN}KoHt?~ z$p^X&iY~-GmR&y~;$^|{tx&*#DIZHNV1U37)2(`FY6!+ne->e^8reYbtqS;rq1QT8 znb<%O24NI_9@cvs30T^EJB14dCr9@Ayx{eBN)Rid(cm8rKPlxv)9q!5oKh?3nmoY2mSP3^T^i8!{j0KYx+w;_8JQv+){!k({i|fdi7c+h=pzr z!cT$euLYhi%@VgCZOsH@hfiqP7!P66(21lQJ}i+g5yte*3xl^qrag{D2uo`O()vTG zgV^mRk-eb$gKK01=G{&Xapk2QhTvee5fws*9Q^-;$U zf3AHY zIu)r`s@lFK=`_RqTd8Wqir!aL?rJr8LCob`NSkuvfLx>9PmU^MNM)k`LTh=^;x>&R zNx7~xcO-9p^P1dzU1U+$LP5@Q@{?CE!a%oBHm597_jt^iOi!Ma281UOySI%GO%%!g-Liz8BoWDtyIHjfLcP+X1xyaLpB0K9S}ov-LvGP&3NI!kYL> z>X@werE{cX?19MVA8*M0FSn(!U(sd3f)3oc??~6vPSP;S!rkKVCkNvh(9UKQNEGO< z7QWkSXc711+O0Xc{nn~1t!X&R5~EB|?au-+PxDe*vk9MxS-!FCj^_ExiI=N3XAE8W z^k9h1%}rz8H{N(du3o)58B@To7R=2+f!UpnZSkhCV1(1Lade;)=byUr%bz`v&pzDI z(X1=fON&^*Bp4^~`U+AMkMOvUyN-ajv!nm@nh5kGuAx7}Nf!YsbdpW|aOiEHaS=oAUm57v<_r!X$KVi2J}Bazuj;A;iTBlS13Ttb7V>ht8o+7Q0NcB7gkt zbNTYK4SD`-PY(9m8m=O93tf5rt$BIxd#}lNzIRLBd`IN!4Q&$DbvruQRVqwpp@9Mi za`vaX^L7e+N>@x;+z~iViJA5p zvUf=6FD$wI++5cFZa1~h%U9(2lb(F>@uqz8!KQrpn|0Y&9yx3(vm{^+!D?Qscjevp zugkZ;e@(vs(;ITcqN?^9AFwz=Q6kTAmb9l8AA>9B|3--~D(0-T#}F zJ7>_rAgimZcKq1H!oY&XgEx)mcO>OZ*=mS9f7F(T_jY9Kxe7D(eO+2mL$AAHjA9z# zErQrn^6JuKemBp3Col`CPvK>`0zJ?&+AV$ieoU9PHKP z*^@1KaBou{-93`^=WGpFkhQBKwKyQ>|t4c`-{i& z%YV2lfBemJ*?2rByIVC~0C6-{RoabtX&hAL=%B7tm5t|zxC%Kjw-qvs;7PY;h`$K>$0<{b?R~cJ*OOm?P2Od3=%mPcsnzmFJpr{Z2)`_oLgo5LQ2?c`L5U8ZCdtN}U<C|c&6DPI;Acc`w( z&4mDEi|IHx9|YJ>%KAquR8Vv~W!Zl&^80^0kiYpKAIjhU+lTVof7q1AUw5Q+ph`n; zPIJ-rZTAFYUgzM7eEo4pe(`rt<=_2(KbHUbfA~~B__fI1ruwznds)#wX-kKFOBtMn zq8m?oAp1NGCW%X!Y4VshO~0Qco+FMEQy#*8PDtg1{hEQ&8y0)S>1schdv$5<*X7=4 zhuY5%Fj`nwlUAc9s>!N3_vMjyklHC8QDL?y<59B}n zFZbk=KOD-z*0PklYZ^D%n~R*%l8|@*NGx;9B2$OVxXi<-de0n|O*{roxG2T4Hw5di zqZNz|R6oKZSIQ+!pH*oci9A=nfK#~~Yb(sc6tMum6xaCJ*X ze*7HgONwB5Wn%Doc}FMM-~OT@|LJe<%P;=^nH+2^t5T~9`PtunC13vOK#um8rBYfm zr3))wy{5`-eO38lN&9+E6IO+XF9)e&R_U(D?&hNW@z-1OcYkx&_VMm))Mc@DQY&>h~*i%1MB-<^%2uD~f)jp=q4<4m?>jH}I%W}4EjM=ngfhhqWjc$5pOa@4++0lUu z^I!6=>I>;Cs8>uGB+6>}l$1>y*%`=BTnH2dZA{03zMNDpcsT~kGKgXSpg86Ws}vz# zHeCGd_XAhj#@Z(!FZ@Yxnz$DOgZ)4cS1_?EOYl{u-~8fG{@4HcOZo6uJF@+>F5OmL zs+E!|G9{^2c|nPvPWkfTku)3oGCx<5xtfM+m!x?hvip2q{`jkHP2;Y7@T<0LKhX@B zz|F!-+bQ2-Nj$@5bOk3yo*NkDJ_^T$$A8i^r_I}u&10H8!9aLqmkA8*pJ=}<)<&~H zwrld_VMG4#%V+ZYUp$qEU$mrku&g21q*|I+<+h^yqvN7emUg2oon}R&t17ArF#OW) z9GLPuSGp;On^)wcU+>A!{`P@<_QwO|mj%sZS`Q@nXyJ;5bhCc2Z2!E++!X z4`e|ZAsoHD$Xgl{B|cbWLo}}8&fXQ!cEh6k=q@jU?#rit+>+f5+BAIHwp?NCH8oY0 z>Du3K080K5b5-^Hd+-dy48AHZrqxa@BZLTxpqUOMlo%URMIe3;~Di!UOLEV zEV|p<+qRHrpDtTjURF#$Dhiwo$MJ0B?}`GtSG(QQl|KXEC5H>^EE%|0VFmep-qr4t z{dGe`11Dkn1pKPdi6g6|je4=>g~Q4}IcBYF9-CgjucENCEy6iMCsLgZP&7Eh^Zw@| zzxs!V^7~)&vuRhVxy( z75UZQKa^ko{R6rGrAT8(vr>h(9o|VY%>sA@Siou-%ZE~*Z^_Nq=jGeq)x}I?e2)7fDEZz_r-P@9e1>Q%Uby$Yy1akH zHilWx9Tx?sZ^2gxF%x3)XEkI$ZO#aR$KwxA z%I-D(+zRW@?q*@BzbdUgoiGAbRfy?Ixs7sAibxfcc18X8A`Sbx*aW5bx@h3+T=M7K z$~@uD;==pXUTQF_Ne~R7Z$clqFi73G=l^u?tY01RbGS$74eqraMDUOM-3-sfiCB($ zK%^6=n}z4&;f4rvLw2H6xPN+2UX&rt6QT^E-9p%KuQ$U*xv=nav|}*5sc)q;XM1ng zABueN+im&XFE-?GYf66tcBHkemUrIR z^|uyfMMXt58S;cp7gKK8K0SO4(9eK2Vf(_y#)fTM;H5MGFTG4>>&7_!D0zhd!#LA$ zg)vSgXhKr?P(Sz*3sGm_oWRS8xSf1o8OoIj{!XgcF@3mFi#4Qi)K-PRDcjrovc0u0 zTbp~bxuJt}ecNbrW5>v!H#Sn*+}x3^tzFsCxCk23>$FvfYMb)m11!Q^IX26M3@dP3 zg=_ifV^@5~!Fj@weLfDyhd}khWyPa*8X9|BQBW@?&_znvJ z9gC{${`Qwg@~fZSlf4a9Vq5+RQe8x8TzI@BC^j|YWBR7u`ZWqEh|K=w7v(ILvO4t&j@y>hPn4wO@g{&ht?^mEdGeM%Ah zkrjcmY?03=gXwsf?A6hChb63x`TnHo3y2h+SL~L;;-b9fSa@S(^K=CFw2v*h{Gb;O zZt(!oZRkm@Lvt@2SpVCf-&Mu*iA}P#%ACppj)u|*Sll}EHZfZ}lvGJA9q4r1)GIG1 z@sWUvP2z1n5>PsnYQ3R~4U^!!Dl%R9-LLP--7iFr_Cww_!xP`mP(7Ut@X78tOcIVT z*>I!c#qN1wM)`B^&w24c90p|X{W*4z5r+ZU=M-T~@bVxZc(9|#v_Cjif&JHy@3rNF zUp-U)P?fd4U`lYQtir6^kS<4u@w0jbrK_QC`%=m-wh>*M6C+s?uAM!)=j!IyOH1-4prbkI&4a8;&eyk*Tp& zAlhyde#x`;QL^@6tnrJ>>Bi6L(3MuVrAt>9I!Cgw)Ri~Cu`2IVs0d0B z^}`Al6khuoOXu^(QOA^8EV0{Ld#a=!m{s@aNCk!ZciP(a9c_n1DGkIu)>v1Z-7<{D zm>2w1RcN(UK|YkNO)SEJwl?=o5k5Lpb)-SMH6@ML2^IoV*sQ;OG8x3EKF_+JHXOk3 zIR7l%EnHLH8FU{XHwJE_-AA<%|AqU@f_^ph>f1#ajvLRy@kaOWZb|zHOPx-#73CW~ z`Ktj58~B>=sx+yx(}PrD^|s?|UiN0r%~xb;MdZr0n%sPCSzfz+Q?BT&cer1Y&pvq~ z_rBIdly_B?(Ho6tsh%EIu0*zs!z5vVrx%CMKEDW@Hot8AY#mtauln<`R zt=r3T^?F_1OUffvSy-&A;#akgBy4STq^WuvTOTTB2@RY<`d;Qh8pd8;i`;Aj`+K)#^@e(Av-h+PHq>*G)MJLgs*9q_Nen2t zEVfZ}U$%2~vzUELzNFaR-qtZ6gq8~zM|?jUgn>!2t{7f=AbgaV2+UHd^+LEE9k%5F z>+L~8`%P7FTlVvAtBIn|q!O&HA#Nb7Cy*V^jUcxbK5m>7ShIWL(0)NdX76N0(`3J- zD%ED~J(A7m`>M$3z&}JW)|NMAm-K>Ff&Pw)C*I*YuHd!66_x8&JIPv==lJ9d&D61XxQx?A@pZ7>LAu3l!)CG@NR zLdh{>5dH0+26n%f883egX9O1lzI}n!5Q7t;HZ$Z6RugD5;P!I{b#UR&3p?zgJv?ma z3Ugm}cJ^d{@6Z%q6yToLnKzaz<+@$5*1D3*pfpO9Tu<9s8NnZvVz>SxMfeGFPO25o zF;cknQ6T_t9{FX&FpmJUis&pDjn$ zJuglS+?*T(_e|hp5aK2emj#hR@A99|yxONoKYA($dp)UDRnb9#?ZS(yklLPa!1#rK zIpb3oNj-kb)=9ixQiX;u%FW63n~Qos9~9i>x+*vo`x%?O>h*c$!6Q{_jx0}04yDEv z-m~SOEW)@+;bS-J9wYY4-e=?GxlM}G#07crk4q1$JW6cXwxWH}os*U>knexFp-R|> zZHc0fNC&<*+0$1@^;u;VSAGe=%C~l9QEuE^kt;Jex<-_>=HXTz}G>Ey&*~0onDl3}Xhc&a7%MwkSNl zFY>|f_U%QqNB31OA9B3klGeRq^G7gnl>2kC!9MumZJ=Om+W0)a4bBXuo-U3LbNw6n3;d4@<2Y?NclSIeP4C4ZnpBJ&+2=v9kNp0;VqeEc=lp?5}7qBjE}JxQ9wQC|vd?{}Lc+0e^_t27?cA~|Tg`*2JbBcU#}C7nsPK}aDz(0SAdxNY zuF5^OxuDdPyHcC)$?CP5eM)=viYmGD4OMy$q+33+j|}w69i?R4uw6?R=6;gH`m+Oh z@_57K6+DK#L#BlMlIsb{adu-im6L#6RQ1>YQBL_fAzMDwP4!mz{_a;Izx?@A`TcL$ ztE}pOLuGbnUM09*v1V(#k{SyNTU6MSrpLG{Hv7nd?Gp(SSDEu^qG_b*svUO$x=&a#&4OTEtL*T`;@G{wvG#YJnXCEU< zElO*6t z{k^75UMRjOz|Di6x?>$cXlk4Rg*D_AXdF)0f5-KIp8upgGkx69ZU*|ocs1}W@dgRE z5cFapszU~xmcS%r#v(0y<4EMm{e8Lj)wZ2~iUQNr#TmTR=2N7qkW?$|p=7~TwtboG z#pKO;UOrn|tD7Yk>s@_LC+Mm&nY}aE)&A?(XN|DN9RkzBVUsyt5>) zza=uK3t+m&_UbCqUk=0bSpYsnULj+!?$Unn8hO9$dvzUoy;dLxFbe}KOyc4GRDiuQ zEXE+VEbn!Aczm8<08 zU`RR99-(f|H>MayKmVIsat-&%Vkd*te=v>%%g$iO}+W9Dl?YlGIK1)bGfwch_$$%invTkYoz-PgdoyfV&bKv{n?sCMR9ma!E znYwxp;o?`nkDpIP+DDv&del6Ws;*#4y#?FC@bL%hvbEl}kAxsMx-GM>svIF6$}3w_ z)VZWPZ|NLsC5=3*M4cHf~GQW)s6v;f&_dgN3+Fx3B$Xb&!gmTa{koCPTgiBc6wf`zrEwj!)oD;mbR+4wWJ1^h( zPF3btG%Q6^DrsZ;Hb`bn$UH3Vq`b^+&=iQbR<>2aWxOyhvFPsX?AS9_T|b54RYA%* z1;)aKY%FM}L&AVWwaK`{Rjz-8*nL!(JmiI)G=4VRP&_X`Qr$#GR%~bo4NRaw6_&Kx z7Y_qfWRU3v(z=?ZOx>6>_BKT}*Soq%gO`<0Y^Gw7g>{w*orRS0pVb#W#G$R~J$J=zP4x?n~@v#}I-f+NjR zB{Y)`V^7J9D;@If%EJen_KpEtY(lw^VJ<(Ng7W0g`TREuo_|!1Y zn)obO_?aGWliySxcU?wyyK~Y$D$CxM$Y&q-7P)D%Q~TSlDj(LaR^{z?uE?9;T$L*~weIYuvvdNO z1JiT{(>zJJ$=4SIeoy~n&1L%_$}bBr$bUtBRq*Q6^pr5>eG$-sV6rIz`M$8cCjc_q z3D0mLt%u{SqfWd;Ep>dIu`)>#~wmsbN1H5Fxl8X5=a~2amkBdw5vbu^zcV4PB z6pnF?z!*ZoR{qntwn$Vb_KR<;60m31-H^vcg^!ox5Qp<|=l71-JrCpjz_|FwrJcoa zcr0<+9ZK}g!v~LzFKq9uVlZszQwSd6g90n7ORDV78IPEbLnuvfk}?sdTCJHJCEuOx z19hv|!rOTx|tk{$a#N&3@iW><4l}ga$jbzu^btNut4Rc&Il;D;a4^m zhoo7PQl~DxMp>TT6Z!owcIA)1zAs;W@?3T{nmT{zxZzhnm9Ol5u2%W#f|uhwK;GI` z$a$OdAceI}C>Pdy+jGn0r)amEQmS?2#_Lu2_7AVf>u)S54}^Z9yS&TNu1nJj@aL@i zXv7v>;JgRezJO(yFuYukRTsZkVXv-ZvQ{i$aN*_mvqm;e9{J%U%f#o7NXd=iFNtB% zMJRKO7@tK&>7{N6S5}k0qD%$uaTMZ$ylYI8rW@jF11E}z3kAyQ?VW}#3m>lFw1(}i z13M~>BhlFFTh<98Sl`pW3-`l<#}VI;f`{Q6?gxkJxb#N(jSJ@(6=qaAd1*Mtc)eiI zb{SC@SRh68Y}Q+y$T+Rz>67r{A}j%qIDY}Z27cj}0=`C6RV8=92x|}S{M0-iSc-#k zMEbli!gh&gPj{4#r2oa#GlbX0k@Eg@$V=xWm?Zyk{^R0Ll6H&`mVU>2UopPe-D%m! zZJaN%i;uNvTszB{_GbK0hVumZL)0IWdeV;8Hrg+o6=-|)vFCGS zT+6mGz5VWrlF0mG2o7MUl>Ku0noudm>~{+ZduKz z5Qg(j`4w#7svHb?*fd?I&}VrB?B3D{N{mlJmY)g)gae1VBXkcB+OoNEpvupYS$IRe z*pI1#LxmpulS7+?cIi)ICJ>`%pl*44cR{#k0>wX$%e}h~0)GpGUyi@S^NFwFKBVn% ze~^s>viEttRudwT^vx(in+KYo12@a?81|rAmuOCze-kJaI#i?1p#yP1=!Tc z6GFqtrXPOROjl?Z3&R4_juvaSZGSFbJ!>|wT%hFg6WMUvd7HXI>*R_j3N80s!%uI~ zB$7cKe;heRJzIWB{s5~T#21VBD8<2kTXwd?=ZLXd`xo7OD7lcyULD8zXA%4d({|*= z%}bYiCgiMNHjE>_H(392P186IgbS27Tq0QCD|@5tu0PwCwko^f1-xMOPwN&c2VaKs zQ_DJ;)a(ms;b+^h)dod&ENqOYyheM&R~zfwvb}l47Qh#Rcsw{_H}3PoWHCvYERIV% z_RG7UCjN2AOUq6^V4N#$ZtTg%#*W^z*yWe35GET3{=ltX$C{=}oALvSE<6G7n^d+F z4y!KtbE*w5G?Fh$C8ya8!N;s2k=41%a0o{_fp{>d6#ZvU)6=0InKUUPPI`rJjd%6A zdnEGkYmwjlVqbpwpP$G_e|RbnzCM(_Z5V&iEV^u40KD9Vk-?xcrFTmf=AOT>fVMdWufz&c8a0Klr*Rt5Lq;7AS+kL<1DaHcKRkf1CC zAPK|X#-O~0foYUjIv`VU@#`zOG)j8krznoa>!<5|#dDgMDbSvFL?*oKK2^2@f+dx= zY)f6N3{^SW@5t8XfmwI3_VUt7Xa`l4^{T~Cg!0 z>Lb)8#0?luJEWUFk4Es1(@%llaq-U=fe-UwHPWIV9g1u`J(9*D{J_t}p+07{qTlop zw=i*pPsz^B*K8{T>~1e8v43%_+nIPlj0FkSU3E>u3|n@&)a%LEho8OhVSq_Yu!4y1z(C6zcT~+>?X3=GI zhf@o}3pXePu0;C1KO<1Bo_ZgM`|zwml(>=}E7EYErV-Nibkj73pT`mKt4~+}H|oL9 zhb22>lQ)EWvbP)d@S3vQKkg>(&$E>!UcQMipzsF7@ux~lkrzJRS}|>UFCOq`23q8P zv6HHB8pr-#+s@iex8kIH8z!ujZz?)Tvz39x6nTX04LXreFj=#&mvl(mA(!D5O%CyzjH(0cz03y@6{#E8{}fBi^~u&OL+;Oc)D0~ zc`=Rjc_Gcemi8(tx*#4E1&#s2$@Xxn(#2c)Ji}O%OlEz+X2xoRO&>G7&36i%{E+c; zN2HJ%62-2fe^@j3_YZBKZli(V4MLf)dM7pZT^Yhav@{T=Nt!qQ`skMi8I$cFKH$L`K6Am*hQ z?w*Z14tZhSZQ3+O#i2}m*%9T8W8wJt48L5(;{zGOGyNO-FKl}W$0ec^hhGP9^8@{P zo0*&lah<7r7+`*Tw2@CCv-sj4ik!q_G9)%-LM zaxm*@lBUU!ZbQqI=5wA1<2lFzH{>+h4PDHrqFX(bH@~qW-}(L>dH4M#SzOU7m6}PM z5T9<&8s*$X;Vuek0riw4Y4L3qK|DGxN^2D*4(5w1w~A z^+_<#s(MmPBJ9o%qeVshqFq1S4C_66z<=?0%;zB#i&nE_ip5wYN`mvHTj~ODCVT*L z72a?SVS+#ROjf*v)YU~(9td+*eV)hvSxgcpi*a#cze(;-i|Nw}i#VDbet>*|8^hBb z>~rt;w0{Tbn6hXZ@Dz$ukSi*Cls9=t0$BvF2w67;HCb-@VkFOUZq2ZqOD#XcBlw4lku z=&&v%2cS;DGI=(W+O%LWg*Q?e=QaCAd`pEs3Lii1VF_bT6V}|Yzlr(=K~4Qqt7}jw zy>4FjzPpF(hYvy{OM_vEAGMbXaNHds5BxHD_v7ccv4^+5BTakO%(Z?URYs2X+jg-0 z-YzFJXc(VfqobVlR+{e4Ec>kP_V(sv=a>alUK+OWaDymavVE3 zD?*&(!@X$mQ!*2g|Al^upyh_Q@apK|t<%tnKl>|j4&V#pN#!H*fM5LAfWgH;gruK= z%aOoq>ZNhK4Wp(XLfkKB2`|?;#9_iX3D2Y4^Dxd2jEf(;$Kl3>pT>`8L>e#Q@(UJy z#8{6J;_3MB8w9)`LqGX_ct&{&vLYbmhb+P`1wsD6H=G6&j^v5~4`~|4SA%I;xsc0F zF831I2f@Gg>2@Vf7Z6^`qkhVR!8%R;8dm=-E6u*WFLJac^3|Vu@{7OQkiY$(K9%46 z?14OcpbLVdMd`KYY+f*!a@*9RabkfIA7#O^3s7*oScelzj0P72$P7-=XzHELWi+wY zp9Mgrb|lMdZF%oI%kutrD{}pomYSlQ?5mk9un*8!g8{C7KU)}YD9}qbHa6_aK3%N3 zD7@FMT?+wTQCt*mx)gw!d>ex^)>(oqP_Ci#h6zirvnga)or2KiJl#$kKLjHCTEheo zECJyqogh#{8c+F0Rcq&Dlb`0E=m=tYd1p1sTsN!+Y7RIQl z4TE{i9(n19`lasK=V>rW+;RS=$vcb5^3i@#*+f5}WU{bjeS)8l1HXcBuX0IcAw1O9 zPK+0SrYI+A2YH#pCw+bkN+!=??kStHjnYj%>qhZB@+KXRG{pv?p@^D^6F~lmGZP>+;)QJeJQs+>+;y+H$n33T|^w!>i)lo0ocp z&8y@?gSnLxMcwO{Y1qEN3tILPkL_y>6M!qPls|2!L~tuYd#3H0 z5`s4f?*V1j(nWeF2m94-x?z^oDo-K6Z=B0;goa#xmvy@nj@ zHf$nf)gQM51O~78*<&B>56m)@Og3p6FoIKx)F0&gXA!%3+ODKJxX;G*=lGg+yNF12 zO8U@A-Ke+SWuRgC>5>TqIu3ETz&F``OY^j6D~$J57*oK)E1&tcowh1TM@P6Pei4Rv zbjBE!e%37xmyMGRn?*LRW70G{zK4nLLDoI?i!sj6fj?cq%c`NPhr=TmAjXoX#|vcq z8c6@ebA~IHgZ(-7-ZpDqun2dv-3U{qxe>~zG2+QdCqs)t^*3MmNcMjFzKvu7cyz}0w{NN`y<@OsQ zHLW(gj{4$4@3pt}ChpTP-j7Gp_z8{UP3Mia%8K>%b+hWC;4UpKS((vQ3QX4O1rj*J zF{up-s97VVO?EJA7-Z*&WM$p2vq~ZMEFB&;gLOd#WDsa!Alu+G<=p2iKmD;S;v_a!hN6$ zuM%zJmfZk-K!U%%pq~)Ad}UUT)GvE=9On;Ww>*DGHk^|`$5)WOce;GgzNgEy=&ryH zzkr(bY0@u%a7;FkE4`*bDCO~-jTPgKkVYIPZNHFrqk&s+KM#x@GZTXF}uP!+WRuM)RDK|yDIO0|AxHz4Gln*)Gxf?m$bLGVaXigdQOY+?GW=0e73c< zWtLsa$`%G*geq1^D$et~5esLmx_0`)5pSE;bbPB2k0yU$ zW#@2xdkF!=gBIm6+<6@bDJaXan<>AV#h`^ZAtobJR`Da%AS67lV^qJzVe;-vs^oI^ zBYDNZnr*(Fo*b&8ySIB_3jih|@(TH-?Gm?Pe9gl+zfl;OK8lqoSA)PmCU=XkF|uyH zH!%xOFDHp}1_g@wFe3u3ztvxZahv6zTqxhen{Bhg9t|kRp}ok%^U36ANEV0#`2^l2 z-HTwDIkpWHaTxCXd6at|#`%G9@niQm+_>-)`I&M^Khj71q^*jfZOlwTSQf%5f&xju zqUgdG@CO*o(|IH2k$e!(<;uJ&lJ(krCann3LJAOW91#{}9M=Cn+eQq|-k%2!ttgNMy9 z(3{uv*^kTNvydx-nyK&S?US39F9ujs(C+m8>e_;Q^ZlFhgCD;pZ@yEJGVk3Pe^^Lu zPmCd22QzDHy}Pd5Pm9UxPh0cx2zZP=x~}N5jiErmNqXRw#P;^K@_Lw%AO^50UnVF{ zic!rUrD=*B*Yh3tZp{pqN{+w@UrS?R4{ef8)^51~#0l1iG38I{mZp(}P3j($TTeS} zoA@4#^P8mo>}N&8=zhiB{rujoxV)^_IN}X{t+xueVDZi>SHlQlQe>aUVUnypgU^=)1UFp}>iOEO_IuS0=V<6=joWoy07Sxb4z9vTcP4 zo-IA?R;=`d$#0kk^jQCv=(>{zP2S%ZKl`n8x^0Ts(E$E%j6&KnLO~*d??q^VM#Whh0pnZ z{fWpYf7q7a{o=m-{O>-OkN)sn?tXSC8_&9C$wg`9v%sWJnUL{q`(=ZAhtI4-whh7C z#OvLc4Ui)#-vG@Ld3nZe?w-v*_?4=k+C1Dx=N{FJ8ZPpJfSvb@7OC|nui+p{D2N0)|zywLq=dKbtJ*GY*O#; z^LSMdmdf6tc_7V@UYHcd!^8MbaG;#&?FzM z-O97H9Am)ZXc&&n;-1}$QPSrQiozc2u&9A>Nyds+!iKR~p!BN4oUfrRF0&6^`McLn z*d?@qTeL&l(E=5Fk%t!*IU5&#Ldh)&pZjfSlDY!Y|DAtJm8L#v*j`gQI({lT#=D%$ zsTo`LcGOeblu+AyCikA50K zMuvV+zYOv7Ih68i;-|78rr|us`Kg>yzUitWSJ$pp9Zssepwz``8LW0)t!r5qN1U#$ zwNf|DUU`PoX;}Oo9rWaAuOn?;40DPNi@~ZgLWRm}KXbLQq^m{F=nka$s!S<&RgU!L zwb{bguaGC@xwb5=lx=QkYdMJB({lDS9TZI3+{$3TuTw8ZD?F#|4FejqZj_fidUg5g zlMVTYzuA$$`5!msZ~yH*`OVL^<;mCc(%ieE3^^}VZ5yn(v@lsv2X8O>+W0_aD?H50 zTwINDk+;kbsuI#?F)mLru7SqfD8MR!=!y5o*dU|O$9dc%7)x|17$ya(FvX3Ete>J zR=&QHeLP!voB6drIU;ckNm`_-M7WrOA7RsW8Su+PzkCr8OamBEc2oYiM*aioslN(L zCXQCKYuh{eNA4*6!xA9A_Uk<(WYe1VIY#Q2ZIirqr2e##P9PSIIAi+aJkYNyWgDy$ zY-97bJt*lt)|z^~EcH2k=qCHL9a&ydzTiX>J~(i6sFQsgi!gg2b+WX{DJTToGARWs zuDVvSg7I+z#t>Pj3K!u~M@%=lU`?5aabqv|1^+l)*b567<5Bw#KpOz%!TK!eHx!kz z`K9Te9wAT9k1yrblrPM(Yc5Hd2H^QJ9?Eif$XC}|(%`r-tqbaNryZ<;fk(okIo=8} zSU=|rM15x?Spyg9C6Gf+qJy?ou&cp5z~uDK6i!kwCv*$+Jdz?Rn&u(nsHaD>KLr5 zAg}Mrd*8hwKl-yfa`TQp&IdkV@zv@yLQ+}uGdyX1(>8Y5Ga!Q$l#?wo07aKCrEx7R zy2F^3V+$mRnJx&B*};=zu<^;n@Llx@fie~=WPQYfW*j9*l+1WiM=ihY&WgHjKegekVqlJV=jYfesFQkKSPZo*&n| zykmdAX2XuUkCD1FNseh}_4BO_e-zDAFiX*#l{%%r&Yp8GrxePBoodQDaHo< z8>~9?Js*IuUp;mkrto5kGmD%qfNCWyV{;lVQDnPZl{nU^rMzmECE5||5WfiUwJt1C z%KZdA=cYVv967?c%ZAnZYQ3QFix2m>g=(di$e{4{ zP!&Y87&aqnYya`9isq1Am?-kg88GaJoFgs0RcB=K{5(Gs2Vd(Nla-W#vZM-Ys8=|- zhO@YLwhw~BOIt)^ll;Q3RO+hz?d9$XR$DBhkS?OSM^>+e1wQ|Z0;({1pHNozCv6+o z$?wB292!N-fDwbT@g_f?m_?~ZzPmDhxk2AFwZ37j_CbG@l~>9QYg6iK@6z>j(V%VF zg|DiIQdULxo%gQDkA8Yb-v5rs(n>J)1Ta7OLLdWc?$G`N`JMoA-+6y953_Y)b92+& zP;?g;7i|kefni*BEMP+OBhRIg{-w&*=ZZUK=y_SS)HZSL7GKWqtOVZ%@5L3V_G5AuvO zg7WXzQn@AF-jON1D8x0@v9RRwMYYhrAsxFWd^uQ_P^av;k?!?c+^P4TO=K3*XEKX2x*}8zjTUd4T!RRP31>#9OD>P;eED7~FHu}>|*+F^& zxB#4lhJa$rOIRqoobQ;n!Jq)miyOP8EJqxVmrg1%LfACz6z&%LW$y!}ig4BfIW?Gg za@!`&k21IUX^CUm8ZGrmCU=vNgBYwYZ5YyVq-mzeK8H3MY}34}<2Zjuo;z-_d-gdG z$9SIu=)d7U?6)9&LboW*%~$05jb*9TLwHp=g1&3P2t@tE&(F3$lZ8#MCe1^U-ECEP zx0}*xlvSY#)?LOA`WyQ)xmNf~-edpr*rW7m7CxgW$EzNg%1%+bCSn8~Qn7G7o+U8EU4ywg_pXc&J`-HK{o zX`D1}3d)y`({R;#L<1AU#gQuCDBbb-;2sWncG;mz%81ehiE@S#iY|2zd!p&Xo*c;1 zm9D(|oi+K3fBL$-{l3WJs(NYj((kr~!P+UW%@sJ$5cC6!UkA!AR$YE+_0tznc&}W! zGUJ?I9^~{=fl=_Ebnp18B#WFlj`0Je=*u=$pU|&Nv8}4Y+m_9Z zJ=s{_QT{kmeyQrBM-{Dv!ZsESt7XS(i}gS79!Fo5lrPv19`ejDv*(+XBLZQ4TzWhn z*<%jh@+*V$GKwF+SX_>AJPDG%u@xnto#2_!-l(`ot$k_rw&m)rvV8Z)x8(bk1ML|*dT5THt2Ceu(44`8K#i#n?&D`gHteLNFr`hY-J%UBOPEkx z8I1*^KWE)MEq9N@Wyuy5nvap@+jp~j&6BI&XX0kl9t358QlUR9kY3ofP}X+hr@^+p ztVVl?-Zp)|UQ@Y5W|n zS3Avv-%gdx;;S)jk0z%xs3NtnSeCjf+*px@3VY5NCHrvC^XsAD^ESR#)U2(z^@(<+ z_F(~S@vTig1Pg>lLcV`Bw0U1iHbpn=3l5}iyxFT`kx`k&sB(flKigxhPCYIE%9TaA za(zkrg?{vY2cb-%%%MJ-ni2@(kDtByO4-3dQ`VpFDDB$T2DZF3j@a8YMsS8Ed%9v&x@jdIy1ft4sHN)>vQ zr;YXavZH@02Ry^XVbDt2xxXBDQnQ69@<9EHW>uG;C1jtK)cO8I3};)4m|Hk>M?+!_DeBUI#c3g zX{Tj9!=lXqQJZQPsZKyg+C7A_d-Zx*7M5^ha!V@X3UAaWVb5-m30P|BfA(eW?H@kFdx5i4u{+Imyux5+DE-Ge|d+ndN5{#mc?VX9+=NKH`sZc z5#1ArqwBv!0%RZ$P9QRLuaRjchqM;8yUZbT&)XnZ4!viyGLmsJoctDW)I6}|;f(6T z>|9k`x?wFR;7r^4-OMJ;h&xd7r7D!Mf9s&M@wNxT%aR5R#CPSSU|EA$ zmWWu%V%xE1gBjh5&CT=Lnh*7K+Xqh!29PJ|$jQ`^$-oEU{e4#Vx8%hxA`orrAaS5~ zck4U;hU%y?dh#F{q~}9mpa(=JIG*qF1bY_l0xM7&d#plW3-PVrkyiOv6uLFNr8}ecl32kfubLt50fLf ziq8k+{N_4KbJq_<)5FF+d&bidBqY$wR}nq`!>>K=?045K1G9GNHB$O`Z+n~9*l~0t z=$BKH^)RG-#4pet6cl9GFTV&krLUOYyxfw%{Qa1|${C!}Jt3a!x%Hl4-4!P^t1H{Kxw&igEyW}9(rKzK$uPqNnc*}-p5grc^B3pr(xr0> z&y({+qQ6e}P;{exRLV6O>IZ{BwrgU0C)TyIS80$0o?{(zxil#mPe`PbRx3?gsWorq z_MDYFGomcBDuGEEzM7{zf($@Pn7Kn>UiX~fLEPNSPz*{x=*t^#Yg9*C3T$3#e{s2H zOXntSVp4I52*qG0s~cI{K|glgS{lG83{Dqg*A3EMElv1oWoxPv_wTH`S$()`>nja= zbZ^@p-QV`>_0^^?iFx#J&1d#rd+lZaNX~U{naLNCtZWC0=v#6bhTOTn2wk18pI#>F z%Qy&vr8dkcm&;01_VzLzOu(~GH&hO)FYP9Shgc)cBn0iXJfXan)@^Eb$1Ywi*{g4y zvp2uFU{{`1zdMC4K(5ry^dVZ5XFrfPexeR5g3Ok`Of?(?WS$3Qm5|B{qI>V&Jtw^^ zTVS0o3*IZbq%D=uaiyKibq+* zgnK?;5iY+&VW;Qznj+lY$+?8g>rJPru*2aUUkE zB6ud5{O^Qe*MouV`u!B2KRAph0Z~t>?kTz6M)aQz6DHN+ox3n;a|;z;L(5u8@|D(B zGJD?xg)P&!CNOMXQ?IWz?ZLfG-_P{H{SE(!ZF8e(+akX8?XuN(D#if>EPvVA*|6nv zvv%#7CI15aX@tu$12fqzweel;fjEm?IAA#mu7Fwd)J27y7M%5PP%o z0b;Bf?&X{K`+g_54n?s`$;(jge6Yr$B=_#F*`3=fcJuQG_W6x__UR|L?B-{;{gfm!%8L=rS0Ahm4mm91fJ=82jMi!-t(z(O4(L;&3V(GrQPF zL%xNi`kCD5L{UQ7PyYx*#iP1^^Yd-H@!_iU5Bqdxic5{IUm4-PU!9M8G@dZgsOT6{ z>m@i35{2o?E*csQk69=-MX&D$@#R%5X(1f%WAN)~%F^XwMHu~xA<#=Y7vaG>C!zmd z+>d)9qm);!gUIr1GX1}k!q2<8@#hGa-=sYv<#$|!yI*7=Y&xc{A4mM~atRIT>Gyn> z*!;bw4sqIl$9|&Ri?{;#Cyl*8)BS#bQ5GO=j{AA%Vmxkg z_j_rP?VY(~;$^}!x~ep6eyM5~F3#G8D;i{>W%`~!BX}ATIgNZLkRN0ew(`aPtpd`$ zbE|20Z|>UK3R^$LvJ_@1IW4Iv=H)Z@UbZ|Fa&UM%!W|MZ;m_5jM_As_*kvPs5uB}- zZEn^zkZ#)Q>ZYx&Z`#(*s!h%|?Z?0UhQ0Qt(x4!-VtVR;Jd;jvGDuC4!r=R=PQ24s zN6%JQ%=&UV7i*o(9^CEN-7lK<#f=^N{F5#F^usN?_1Ui7y;ZlBhr1dasEqU+Z@wlb zf+%=+k~g~+FoPUrsTe3v#mDbsL(h_KpDk8-vebaxHg0{s>a(sTmK^v@v*0=>b*+lq zT~plXg=mZ6hTmvI%<7W`KXO{69~}kxud@SAW6S23%l66}i}t-AU9?3JGEUxWw6;S3 z5|4s&S$lZ=CgzNMqkmjiNBxeaHj24ivF(kL-MZ1R`*)hk7tb)W&hiChn$o^k&pbWQ zfTW~6seUmt4}oPyzR_Nhp4zcD-nwXCdvnoVdTr7c&&zi7jU9E$8@v9&RW$xAZiRue4F!u^H1=+C zTR55j|&b-8Zyi#5A&Y1%Gc71<5ZoIN}ZlmTWi1MkU$GLPJC zZ%)|SgO=U+__j40xF}B;U&0V?U}y(Xr=$Kmob2MJ)=`?3r|=IM;$xsjosW{53V+wO zwi>>?VRK{6Dw7Sn_S~d>|F@piU;$F25CdgB)wt z+$~8CX7}$l?B-`1B3~=^`HfW#^jGcf?M;#29o^fqhxgZ|i+42eu8Ww(e&2kMR;i$W z&^zgkLy%MMw!|1yyu;F&+=u0XaJlEYz_*bz5z>l%`oVp>eQQ;m~c*`iNy*FTIdu9L}-yBq|# z1$7hyp-uG_?!g*e4vt9t1G399hB47S8nPlCqllH26zj4sO;FszZec<~~Y%q!bz zBFJepI`-P7k^^2_g&mE|XMYb-jM0!HJWP-hO!kGi6lz(&`51(5Ib@q8~&$jZ|%yBPl7xKj8%?Df-g>)Kse3{HP?r<_t*6>U&_ ze%N)wApe7Y=bWApME%{1o;z}ZM6d-Id;{Y7{7Y){GrKCLZU1OgCF--hK3fDE?SgPL zSd>%x0vrOuG9Btpr935~p+PGrsEOFnoP2w!76h8v!LluBaP-nESNxHl`Kl_n(c0uZ2dvWK6&q<{qiqv*n7XaZMQ$$wv9(6t8Y$P zYj@fv%FAMxv)0_1vaQvs-MzVE@BikW{razN+xu_dv6Tn9T`yZj0}9spGK)_AW7)}| zLwN?LGcfpGTZ0be!v`=8l}*Q&^MhyYyFa|{*ON2yR%uFNF{ABINpzfS$QztJ z=o3qlJ>{4BlqyeHU9^$jQ&1Ta%$Nc>KnCKo814{9$4M^^T2M;=sTV5Mr z*wc;*#%wOj7v|;|0v-qZi#uO?ePri~iq~{CkxrH{NNv(-WQ~yqad^;jL-Em|(=`f_ zHFF$E48fhAuG#GDq@NHpJu@Mm2;I&jIl5dVWr;gsP&j#{`-ALZ_XeSOZ$H0z$vJa?~cb|;Z<<`21 zxOVJ=cOTj(AFkQ$FLrG8QOCALfOmJwBCSgQ!G}UA94ZaZ zQgFlLEh5Fmb1^ZYdew>T>T0SQQ!_2aHD}kK7xAC2D=pi42x3N^p&p4O`!b5O!-v9R zGDCTfH+OsU8rM;OdBc$3HD)h{xjzMvoNAM84G$te-(=}9NKGa|VVT-KRRisaI!$`#^>ZI@8I#953lF9W~M zNFLX5FFN)xy^cN^!XztU5~<~0FAT1GZh7|zuR9Bzh2w5+Cx4lNd>06K{(cdC?mlxf z+#krxh7OD0K0BlI^kz-=KEEH1;y>@V_#D5J$^VXP(!Do*`D;-8oiOMbw+DMaW2j;b zL0|sp_#_rSQoC|(%3go-SrO1_YczJeTs?b|8|!x?ObpLpBTI}Lk;2t>&T2)mL4gu+ZBw1;=iZhTO; zkKbLjci+A*(yP4g&ReCupzKboJ#)rf&1xb7rOvMGj!m$>S8gl|sgxG2wKHdH4=eVm zi1NqpKCn+eYTD{UNmy!*S@m{PI!k0B($Q<1M}<#5s0_#pCzvtAKQ+^~mtVbVuf6_) z>(Zzbw5gcQW!>w+mpRknOxJn^`` zls@Zisl|1)V-MTwBIy9hy@yC|$#!)6FB6ZX>A7VOP$Ube5j zS@rhiZCE0Uw<_##A>aJ*yvyi5TVEnpH||a!nho3>k}IMs8b|V%{0;|YLEI2sW^`G) zz}w}tMi;`%jP7{nh2vpw?f;5`^|@3m$S#!)8|B6JVpp$Twe#oC`!WX5*CC!HC=G({ zc9sENW1{e4zg^l~jNW^GQbS6ODsKWY!pAhFC?UEEbBfbfCS%`55nf1jt;VT2JP-t# zhEv3Jg zkDi^7@}4@Bo*bfcO>y+xM?o>H!-k2!{4>ShdAo?c?t^5JuW!hayccElB!D#SO;;j9 zNiHeJT#=RQFPOdg?dx{_%8Xogqm2j7{hhzvE^0#A99Ki1r)Px2!liR=U2XQ06z$QqPbWzA;KZQFN#{G9#xcdyyAFNxana+V^Jp-Ol= zbV0>F!=UYxJDg_d0>mXVClBg0X~6I%8L|rxNo#bOa4XLKj&U@Mr6;iCLK;z}8C{eQ zYjYvFjH;+;Nl_*n*9Y07L4cT2B{@N}3&8y&u zCq0SZh+oJ3^c$yePbL?c5ab&_*h-IgI(pt`MR=a;@I%-U9^uR8qmk@c zpIwHayV7&d8A4HE$6!J7*T8~x&vOeL<)~*Q+r4=WP;`{G|5Lo~OK!>FJB1Irvdb=d z;mYXw;{EPDnIzlv;YoiTF8WLImK$lwyiz|&G3(iQUQvq7ME=PC%-n=syfkZM6@2=VmAD#wR;=`-@F$H<)>(V^rPrJ!5&rt$Ly>#Kko$ z1>@*nw#(|M)0z}<6DcY+6dwDWLg1#nCbc>{)~-FWAOHUI_U#`p*|{qULmY;$$7yGg z-ZK^=nFHNqpkrd@O0~qDJ4&aw6>hsfW;t~!Qd(+Pt+8o#`!lnT-(RyYK3%o-M=i;Q zncJ8F_nf*eNzp_ZbX2LRV}6JGGzuiApDrKTq>@wLY1-E2jx}~Qpch%5o+w$ZDl*(c z=JOB2!Aco)fv;-L5O$@}o2{gFGpo{_^W{_WS?B zb-QrAY1K)&>jCnC{)ePSI|T|z!MVcl#3D`N(_iVIW?M3_>?mTz%NpHkY0~cBs@wbT zJhaA^+OD4Popx+eerhU9>Yp4(g3_!sbzIJ&E5gVv(;a(_{8G-IC%z@&ke<5Feh10t zBSF=Pc6`X!kt~{OD;)e#u1OD7>eeoA*y8z$z4Y3medi~a?b5SlTfSKJ{j)uziia{s zzjfO^4&0C_sb2A6qW^THi=LkdD7!40E_k~a%Tp43@GC@o0j`;FgXr>hIUO2-Jzl3f zI!3O>Pdk{=O+=Rw6*e=ttj%3oTJnlEI+B>N_Y*k^3M=!+PgQR|8k?M9?X0fViN@=3 z6j`pZpd6&_!$59PQt@#Hv$fMRQ%<~Cms?W@z|5`_U38(7WIB#$fWy#hn9-rhMRpjF zh^Mr)|4zs+8|XI$_nbe<(8A`89A+xb&a&p$}^0i5O@wIt- z@fC}+_yuPAd;|PLrTLUWGEy^fkS6pH#ErT@Ugbr8Fm&+jt?Tkp);AxSeg0|NKK=Ni z@3O!aVvRbR_4j68dwM7{-QT+JZ83MRYjn2+iJKA$t=Y=`y5e|XAHI9nZhqFbjWy}d z2@NXbm1CQ+Axtq-7Uk0ik1q&Nq>H=-S#iC~3^k-t_iN&Wix*nE}kbVzBKK&5gILrz8M7agXhqoiilfKRme_=pb*|00mOxc@nU9xX{_li9$IdVE0 z2Sq@lIXEWi#w3fwA(t*U2O<2WG^aSDE=9bwe}3~ZJWCfC9N{1Ck%;bi>B8tJwv?|F z(i+_~ql--?V@4OUOC>v6L)Z_5(+jKjD=89+f)TZBDTU;d=-HBI^+C(--deZa9U8Yr zwi?X`vE}q3NMD3QdNHx90&8zsp1?X>NUjKTEnbtQ#+J|5L93?A7NEoD_ zS>*T_g7~B3^B)cxw~T)4NnPWPiAK*g?LVd8bpeW(QGccwKwPG0c_!{TLC!>oTXbBQ z^gA=Y-Z!4Z5C?Wz2TXF}9yVcezdwu!lRsG;9!P;=su$dq8uWgJo>}Pr@wdI4aZZKi$^vghZ|Qs zL*7DmUjF5l&CXZt;+1K;{EX^K1wSc(rx7uOS*=yoj?`Ortx}F?jCfT~KC=4hZ`fFB667$=@^)ByqHKnKhHRp%S!%(=LCKbuW^843!|vW* zx9u&`B+@D$ZDV^d89mPuGSbKQ5}34(8@&JtXO^?3da~PCw@Pi@mM_=sN56N)ekika zNm8!G37!~qcxtm;r?xv7y63V}>RFoL`IejVz&_7+Zf@DlPq&OiP5kg7mj~hVWW2TG z+2e!QkaJbln(+A-X&}_}Mljs@t$W1pb*opue7iK26Zz+@i0dfHANg_8S-B$lR(7O& z+V<>A3nIGL?A6z2;xsf3O48ohNx%8?0%S8?pC(d2QjCk=)Kfl2!;l`9Enw)s#YIj( zabE#YlfF{m=wC=KhDL)zWDi|l8$bjhx_pS1w)#3fpnP}*n1d_exXdHA0js%kj5T5L zQ42)IXJxa8XhY2WvQ-)DZ~5qKTAedHIj}4PlOIv0#<#zsOyIR#Pr(LaHbOCH6=FAX1)-1FCmH>4n{I=_=0Y3sR18Y150mh5DP0l9cbm|Y{2gd$nV zhf@r9*mXj3E7}Reo*#6*-~Ie=kasKEAl=WqeR-gIP94|3XP!6v=J(ILnZHn1D_mEe zTUOtdsjJg%rkSRgIil<-{@q4hzg0&%Q}V~GoO)k%zRlLURj0Rn?dNa(!DYJw(e-K> z?VE7U9_T6zX~A% zvM0Q)4}=pmO#V9kCc=KWd_}5i)ft&N+ubhPom=bn(Fb?z{daHM$^(cvBqz!TUE=obkT9m){ae1x9t37v+w-yioNx{i#D^cX^qY!e-l^J010{U zOp22M0VL8tM3eDZNk0M3d{(ku+O&lWE!D9r_O0(<(tuHMm-&D!h;G!Wo=%~jx&GP5 zfMkPkuh`Bu+iR*n@iOSwQzwTMZe~MbyF?Zguk(oCaV&Q%2XNBtGSH<45uMVORVKD= zLhb0%)vA5tyVo>uyl$_5eZrP6x_4jVkjfk6W%0N`ocVGClpSTt&I_E72kE7sPGtA| z`SXuIp%&CQ6VYXt1r#l7MMEht z)7We5M?=N7H#tlE=IdwwGi5cdPz!|l^ES5?-UuT5jsYlvPT6Y!|c0 zJkNi^zw`W-+0wteRIa97UbDyfg|2DX^{q0px2%U zL21usHJxPYl7Tsd{n0&6rQ5Olw;CFluxBrok4X$yR>7q$z5B#(6Q%VnYTCIVy6Y(D2d~y)iE-BWR}-w zq0{2`{<1q6EwY38=zKWE~8`rYpbf#rX9 z&7SxQ#9mTM@{?ioxAq&2M_#|uEs8}uxDhXV_6CitbTZ1@q8ZwB17nfAaI0p=W)Un~YHTI#qww9=a~%&VYl1L9p@L^Z}jg zSBG?x^zocH{F~pI_wxMK4;F1|aox5W50pRF?y|L5vdzr@>?Y5V4Puh@5fa9L!xYRi}9 zm2NyM;v$kvP9|T6Ly~JgPA1(Ty7%tg^Vwav2Op%tM^2Y}d^It=C;pOw9T)!I-}`(2 zJ|ih+bg5{NH?|gIMmK$oR#XTeDX5Xq*RB+nE0Po@ziE7KxmP9{d>yM4L`9=*=|g+} z-TSt_#%uv3N=6;wB&VxQRMbG&Y&x4+s?wNIz*305CRIv0QE?ivvb5a;)`qlNoVL9RCU7j5srX7;}H2_O&+f?**BE~I#BF=GrL_x zn$yHfzC7~RX=W?A_1isvU|<-9=kw@=fl2x4`6ch&V6wQOe{yl&t9$wfPVP5xQaNhhaxTB?Jr_4SE1FB1fKRzmF6 zaepT)yVsn_Xv}`{b$oNnZ1uj`7oRljlMf#HQNO!e6|0rSqliz>QUjIhbW)_t%J<{rs2E|Kc z8PX&}BD$fgh9TWcGSR?`cB;YH%^RC`TjYOZMe#JVH-@e+vv5yjW|x78bc5Uc<60&K z>vF+FJyJ?!l3ULYAM^P@qf*zvux*#GP21PrxL~im!4b++cK(WrNn*Ehk~PoikN$_a z2m?o)kwZ^z$^A5u`VjyRVb=wgF7VwDBsb0IX3Hs0KS5tHgtqw#AQ9d4AsVx8%;d7Q z7)S8sl}4)gc?EJJjiE1y=+wMX`$ezO@yambQwx>ip|fNn_q}&ko$RvCjr6kx4hKO@ zP4OWe9S9AWP+~UM!$e8Adtc;7M9J48vZc?~M#FY@Sh^q*6o#ofKm&?C3}iL&kaNx#Eygef`mnlFd&>sOi0 z{YZO=G{V57^XBO|>BlD~ODZ4ANUT?iy7ww}FT8)wkjg4wX2ZxX$X_Syxu1)BfB(IB z`olctE5kZnPHy6;(oLI~Y1#CA(~l>8;nhj|oxlE){r=y$V2c;&jJK>* zRsEN+XloEKpWIQPF{5~vs+u~1Np(N_>wkinuoDGjY5kGerys4`NAKOUySKKj)nIMz zj0OSJ4G~e9;u{&>UIjtT$XrCBV7W*?^4CgBy3E{N_vxyw@R;?)PY^d`D@$awR+-XZ zqa%{BYMYzePAaBmrX*{~pZt255nfyqPlUw>h%J>R%ffso1qBMRW(J;_;7Nt$AG_L? zO^EPbI6tGl<$}VUvd!%ct4;9+ku9`X_Rz5EM9UAQ;E;&<^DQU3-~Q2M``y3xiaqyg z$rjFu5H&C*m&%Rcu&3l4TY)DTDxPrd%oEUu}Ku zj@keC-`=l3&j`9F9LL$YV@usK(CWJ7NpE~wmY`5*0K-YxoNA9 zq;$%Q-YHirbnd*WB|fqj%A-^v?V-4^Js-LIaa~Y6g;#Ywq)d(}q zh$QZv{G?Zmy>P;RdOl`VMktS?A(P(n_Y;H3)}8@ zFj9!osr6)#Y$Yp0f5*00R{gS0DEcePnmqRVDR!X6cv*j_L63{7<>})->mylqvv|Sm zt?ym7@BBo9VAd|r=AT0Jwr*0r_J7K#>O!Zk<|%XcbF<(4s%by_>4*0IyI8efaLCeRkun-MO`94b>N9!eIF7GjsOr zi}UvK*Us6(`Hsl1)l=|6a2 zzy9St+g?>ZI@2chkZL`lmH2cdxyX&U}S$k3qBVGgg(UrhouO~%Mc#LorR=0Brg>oz?49=uq zTWQ$)zy8AR-`%!a$$M#bei3n!k+u&LodM*A*G}9cJxR`SKU5HI;U2Q-`pJmcp+WjG zMH7fTC$})jJ@b=Yho88Htor>N+4bL@J)y`IqV60P8>$zx^%sMu;pQ%u@)Y zrP`oB)LF6<^6~z;i7d<>-8H-QnTYT0Eqi!>+Xsj2Bg@UDa}0VqcHz>LUA|V6Z8l94 zLX^dN;lwUoXZ9J(uhC>yGis?%oGQu850HPhM*Q>xNba`Xy}50hYr5ZL`9^Fl=Jmn{ z-@`!u3o>v-d~PQ_mbEuGSzB?aTmtEt!AR-h#5#`Lg)l9htJ?Fgp0o28RYvoKtU;XA zCHvn(a`_0&KM<392R-XL1DhGw82oUgEXz=QcL3h(XfRl|DQieQ?}-00LqsoTj{V>S=~&k-ieo<{Jv9{G-W8_8gY0sc1WV)o z=)YaDw|{Zhn%iQGesUf0An%hUyKF}X(eq^=l0W@`>q|w)@7-PYmgS9x+{!KAN{o1U zdpR}3pkUt4U!L^A$;Hd2wxlq9$pU>Gd1KH~fWl@*n{a~cj+Tf05arbiKlL4v*OD)t zgnuyE#x=5lf23s#5Z*D-JzadMh0CmNn$2Zqm)Tp^=rXHI1p~!OdOFCIvw)Ixr&Pq{)P`cHr3~Fw5K`_rIQhP>Il1J*2!+9F?C8bdM69=nv_7e$9)iP{e*51`jvZ- zT@dzOr2{AHUb{k1zcX^15$4!;w?C}d&o~R$JKYpMa;Dt47YdyELu&jD+!=B5o3q)&hSiQ7FeAK0Wva4=PMP88-@AQ$~ z@BBohCnmq1YGhR+E9#s~`$ZE*Rbp2}Vp}8!@(*!RpJu##VaDHI0PuJ+PXkgum0t3c zmgzsdr-As59lP=2J(2sSZEvXlw^*YaMAvna*RjxV`9a%Yq?Qoyrm8j>|)1Z{&cdHXk4L&CA*_W3^rbIwy<%2^Yd}C zql(!)DrlkJUKKNBw_=mFr9sIb|AQ6#)z9x(xy7t54HY?)pd@d~4S8q3j|J*P>B!{GPCA$eELSxbBpcDfUCJC07=QJQF+ne9KWaqDHU~*pGTzC>l_BI63_%YP! z2f&Zpq&=m7lsxQ@RKJSA9b$Xu&K=+46vCTGE(Dj|7cO4Bxc9*^P8?rKAwzO$K+R_C zqYK&PgEW>cB%+(Im{i8}D&=&b#x4cOM*)3}Zjb`QO>MIY(Y;rsXO#;5meXQSd9 zvzIz^3TM(41Rqa8c0DgnkVBC>PI4Iokn-EvF4-3!KeC&juUma9NH;pC*@}<-f)oV_ z(jQM>m+YdjGnr#2!kc~vdc-a4l>UC8KzfM$CbvXn6L5EyYRqUHhU|ir_nusO&*t3*$!PEW$j4sy zz+pdJ>=E9OLy!htNw9>GC%Y4qo!rds)YDIPmGz#Kbfq#^X=lGFIb;$YuTNuVgH?x| zDLV*nUIt#}vTH=$6*rDKf4%a}*O1dgs`sF;4#?RFifkvks?YcCNI$)|Zl8U!V)f0k zH5+AXH)Hakn!V+S!F|#L%$a6L^{KDD?#*Mm-6gwSq>yBH>*fID+Iz~6lSkE6NS9n? zAiX~i0A0P*>D zVKLJSF|L-geuun>oN>T{>jm9z6Rvc2M`Vv32TEl=LY{O|&3$G@dwJfAe7Ow*AIB0m zWLMpy;-0WacgyzE|ACp^dp1#q?56&M^kwosA+lR`(#fD8$Tn?+$r9>{B<6WL2CM`b0>Cfyc zd@0wCY}z6U)Mo&lf$2XAFViU<>C{K+MBab9VZZ#@UHkAi5AFV~UEA^*6J~^C^xbPv zD6v6`j`qWS%;;^YE#<;mx4HRQ-`b2k@D;U_?rta2O9$79C?@wlqDfwp$^3->-ZQ=5 zM=<$tbEYQ?{m#Pn-`?>A(d{=W%t5jp1fC(Hj?Z%Q`i<@1_&9>jK9p`Az4QzQY08&j z;Gp#6@5eP^^yj1R8bXqo^giI3ps+de^%LlzlEWF*J3H#Un-XUk;ephsak15ul(?x3238@N`%biWLPd;qf zuYPgYZhWv}+iMkT?9{B?fKXtfJw=^o-DSEi*5*9YoiHvtPXf;+lSc|gcJdq#1iHT? zJl2>)aDCShl_5K0v`f2DPuo@HZ^rK3YDn+ivk!m$$R6HSjJxbas~k%|RLV2D62WzS zAwr|FFEi*Nnyjn{D<&bN>Gc@;IR=I3?Fpa#ZHmyfO6!u!s@2=F6_zJcM3du=H2WWzrUdr2ye{yX<<<$;=N>70}vn~$^W zLPexEhy>&cModV1B5g6^d+GjdDBaiHND z&qs6?_)WiyW|;dRgWqI|_dHj*-$j3U6n_r`&r_Ee3`|Y4V+I9Gn28V_4*B>7r6-~2 zFJaj8#p^r<{VuwJyxXArAUzuyl9rvfK;uO}a2iK6zQB=W@^Q2{&&?{-O+G5E{GIC`>)WOzq}c$v*w~ zk-hutJNCtA>O~EZK{)C$pZURe)7?_Z`t$kUfmkIoG?_e)^2>cTCR~+H71)8 zndcQ5in3{q=DIH-hz|=&)k^0a z_mVsQNki{9=}?$1U&7|MjKAiSALW&DqK?haPuuy6bGERg`c~Vq7N6`(E-FRYMMVAv z-Ra3dzFd~Q-^J@hsE7N>E`))8vigy~mw+4L_dgfysJM)QPP#VHwz=hwA9eb@-=6Wc zs!zA3K{nY3R(?={Y~?3v2Be4kw1FO|HmPF<=`}0v{UVO~6Hff?4Z;J7VDtQ-T5>X= zo)^nLwFh5YsboBQ(6P^NtlDRvtlHWG4R#wUSm`fb#q)|DIizPwzI%y~>XkE=y@;0z zS-v2Vng4iB#+MDqLXSBi%gJGnZcBCo&&ZH2jMrh_w#0L!GdHaXq) zom8HE{(@b3X2w4zWWBZTHl{&7CwDo?5`4!Am0NE>pXJ@-XAr=kh?+th5xG>Jx@(nfW3_2N|MNTc@h_+B;a%1q zlNk3H7J4p~ft$?zSkSZVS|QnXDjbNU&aS*=vkPn?wrJO`FW5`3EZWSR`N1k>MeVYw z&^PNb^pAd$3Z&%q%RR_1_x)c&UPdV|?&-0BJ^b|e^Ge|GAf|3(MZHK7GIQ|gzS%GS**$yr z*LUsa4UQn?3*L&=cTjR=o1EZ-G}?z6HSJbPBaI+Kc^5m#lSi7RNqhTF&oD~&J8{ny zeJFc=hg)1HdFQWtCUp>*kx2V~7w_lHpzy-2_)PA1MsCyV`(hY*^#4xkHec?PXukfa zGb^`!OCgRVrD~-xj#g8ShI~4UdFY|1UkCcnh{N#bxtBU|0spyYD7OF|JH1s|BtMJO zEy+2P-S8NmROHJ$;Q3WXd=Qr-a;i>l;EfPmC%KuN0Pcv`4df&^~_mo;|p|E#0I%OMj*I)bf3WS)xInVsML&O6E{Vq_s=3 z2Gx{wPrzS#<^YJ}IZ}HEq}7)m@mgI~mTwQ5>O)vcz-e#ns=?`RpM0=lTdSr#69DBJ zv)DbPFe9(*l#>Pyp`-oMYTPUHc24)zMwlt)jTr=&Q`|U_4gd6073p-Bo5}@p-IwoU z*xhzbxs)cX-JDb(Q}&bOAnU#Ql|9pyYqG&n>mkpoFM!}rsD4ydZDMxIuD>{E-}%vX z`_b>dY~TIiGxpkBi@x_X%N1CiP_Bs}PCybFoS>IAOi)ndz=suTQyjEZ5rOAluN@Iz zN?$IWhpZ!`B9UB{E-7)&*oafYK<@sDHgMu^xstcmjBi1Wdyn6P?{}{icPE>{E_pdZbm;7P(?GdNzPgWlQ}w|27+!AMH@|<$e)zi+ z>gXhVg+UHz5!7Y=?FWy!m#oa;_{ax!bo9zDa(t2~){Fh+a$Iy&|6B(a6Yp|`Oi@>9 z56Yp)p4WRNZEZz^@q1?P|N6c?dQi8G)otAq(Wp%NawXDBoA2&J+XeY3=4}{?dConT z)!lNTz4z(Cgrd&N{B*bcBdmNl1N2JL2h?fTzamuS>aM-`>IJ+0{JdSbD*fhfDx?o} zA02>hN&B3~hhU-Wlb(rmr1Yk=3`lFy4dnC5{p7D;Gw2w0pES|)pqD$%meoqrcJFhu z|L*_yh28y_H;Ype1s}zUlxnb!s%oR>RIdJ^vm82{t|pS~x`gWKATNGA}iU%v<48<>$b4eaou?B`gwciI&Z)9tkekAh^V42Dsnf30g|n_WOAjK zL-Jp=506ytpr|83>MIhD;5zkp0RF++T!=1Uat(RILs-6W{`~pDNgv~};Y(2fEMH($ z#nJ_4b*X@CF~&Mw*2tU)x-Bg=#sn&Vv0VC{DT&hh@Lyc;_?%`l&6YK`<6^I2U zVfw@C!aEI!0B;IZCVZqK4b5iq5k^LKZQEbpFDy>mg^TkxH_sY9Iy`14MDXZ%MnU#` zzkGUj9)sO_vMb(?-*G>GuX|1B=J6}9@>V3fxFZ2CYq>*qXO~*OjNu2rH{r81bpDY8 z>i7O+cW>%PM=$qZO(dC8WxceMKvbY5AIPLx-3gI54dnEb{c~@8Qnwo)KC+F6W!u?| z9d0P+)UNYw`!q3X3{m$EM$!w^{jRChtu|e^E7#`i+VjhH>B@x7E#N8S$YB)CW~N87 zcH(WN+zTrWw$BPJKJ22Ll#WV!%D(u>?7#mnzp#5>h{U$0J&$bnMY=s7@!K|KQtgNi~327`_U`Cf~ zW^?B%d&;{-`TQv-??db zzSyv>O=%!T;Jz*^M%SF%?%^=Yi#hA&f>LUCoUA9ay~WqOb;(@mbpk|w$p;DyWxz`( z6d{TcxseG-C;|GP>^j`@_gvxXI!sc6J%7>t_5Y4%Gk6)v-Qx^Im|+rnzkB}r;3N@0 zjN)s`Cqy@hvp=J<@^ytG3>*u*xHM<8^Ni||1>t9D9}@hbk&)G;jPpu)kb*9{6}{|t ze{a~?Z&{RQT!!jko|gL0hl)}5x>IdiZK`RPu1?tX=O?XPrKjh~;y({EGpZx%i6cDx zN4R0gJLP$N^vCtI8e}9LGtlsl`$f6Nb3W6ETxo|YQ+M}Eu9AFd!|bXM+a7-W!J5oH zyMK4ncDF@rrJfSe<+*%2D%Piy1~H9df;^GO!W+6f(36UC6yb#&zc@{p*&uBtc5pHRHi8`k>pky{?o>uR%^N z8_?sk>>t)?psKQFxd3glREalr9Q;s{Zbz>0K4x%PU(0^Q)3a?`x=^xbUYK%%`|@iG z8X!z*pis7DxzEliK8c39=Sh)|KKkIkee&T$+gM|DBd-jrzOwZB1}WV<2ne&2J!@mB#^Y)|PTej*X+jK#Wk?}A&6K)EdwC2;c-*aCT^yGdVun;K_vP8O3 z@6nC?Pz>@?myTL_Xuc!CCm-IojrEpIl;*9eBBXr1E@X9@>-77{M^=B(3$&#J?EYl| zP1XNcwm_SnoiE$<7tY)BFU^X;nN7~9cWCcQ7W6d?hNUBTE&~JJ*eCb+7){2?kFw+a zi`rp*bHYA&d&mChzx%+}A57b1ZAmvpbd}GR(n|U}ttsV2M8C{zuSPlOGlfI@N8?fM zl}c=}$O;Z-g{S9AcK+gwUA;bU&ptnGm#*kBxddil#P>T#fjn_QDKe-&yAFJStHnnO;p(mt?UGNb8}mbT`JHOJXH#V zG{RQbC_900a>Da`h6#P1{dRuQhMZ< zPSBw+Ah4`ylbK(bl$o}W%-`gVv9ji?4*xXXvE?%qH-Kuf8#BSDvl;@y8qhhdhxT zI+3(^QDo^#@<3PibPeSN((fk=q!VI$|Neb9a1Z(uW^vQ@V(^ghwqj2np4tL|=<*7I zkrfq=*9xrB#W1q!HJ+0IjS})gn9gLvq$u2`BbKuhHIxfK^rRl$RVQ-e!;XFQ{$2ax zvlZLj(fGPOC#A?NfCz%Zu2dO4%lJ|To<;d+$jnwp4(^kVGlJwvqvo|1jeWW{E23Mm zwMTXP40IZTxPZ&^1uAv zdoPc8_MrMgXHHoLbm3`|l2*AftILNM5Z;+tNS*TBVT&QjESu3C9QP4WkimX(8xD7=`ABE_9X2MFr}FH1A}r*fYY3BiMCv}T@+PO+Hg~S>C#e1Ccg|aRTK=58dH@mJ zFciha?{4&2+xW^M$zDK?)P-TT1Dj`(4H!5hPTnA~_b=|D%UE8&axeDy{_LZNYRl_Z z-z`~M5qaLqk0neuPg5mmct=l~|TrNpA2cy>(BEO*RMA5HQ|Jh%6$7+*xyLe^N zo_TiBo_+b8uSI2P12eg_1CZpB!Wo8x?vDlrCbUmoDp{X?v}V8g#hQKa_Nvu4mQ?=J z$}?%;&7#VdBl1+AIvl!T>bxoq<(fU#r)+U)(iYCuY;jS9cByRhi&dMRDckuARo^zO zl8tGJ%SnEwE1Iort#>w^8$)Eg=9NLJLr+#+O7$Huqsx+od-v{n8KP!lub?NRjFYm=g%j;Hhfr{kUGA|y_x@d(J1zV09gPI< zZrj#o!)Hk#x~&$kf-2rvTFo6-IK$gZ}9#VD(m~|6}xw5 z!)|=?(AHL3*4XB&T?jfPk_?fbJV8=eS-Ipp6)?FNV@9qg&^z4AI1PG0e5NVtJnze>UwNI(kA>hHb?pL zaTSM2G~3%g(4AkX+N-Z!v*q)XwtS&%Q!`4hFFWJo;!H;VK7Tk)LqGJO^oy*slB_MY z^{Zd3+S~u^k=^`M?YOb*`?-@3*6ngCT)EcvkH@ODmQ75F08c>bCT;QDyj{7vY?q%A zxjh%Bnt8QTxSqxAI;tFX5reLj9+U~-30LZ*bdYLduWwHFlY>+)Osu7k;Q2O)YbMp$ z!=Hg5hCXpTqx7|lgzkc0cA*AICc~D_bP8p{T1*mc6b(A-Z zEFS5)hkS_kn|0r-as5HbXG?e{h+_DI5TZn@toO~*=pBg@=X~HNmHy)avRkk3*yIFT zZpAD!o0Hc{Gk%ou7oV-!-P;?s_D~95L_Ri3k4_O{M5mc#m(OPr!|sLB$;%@l{3WH7 z?3ihcjs}zTDc2EpPqFsghQP_L1|%YKa6YyaYiC=HEiO&l^0_&ipO3A^tO^OB>;{v` zlSDrJVqAOT-a~kczXQGBd6^tUc3H2@8fLd{Z2PjRTc2** z_GVRsRc3o9d@oao9d(>__daXyiBO1YOoZoTMPZ`PxIS$}?8kxXZ};K6TzYos3)*e` zP6Ks*lgFsv@?*P_iv$OA^yk=WtE7Q$+n#xD(O!6Y$=FhhlfTN9(0fc0pg$w*jP92x*>9~&i_b;3Da z#EkBP+h!lVziOX;v}&sl+tz9@+lj(cQeRewnfkxz3}cofl@Hg^S;oG+`*)W6-3yuJ71MFx zB#l8xcI~h9)Tu{W8GP{J9qA|kbY4wASmXSK1t+_un&R)4>wf7yUF7R|U!7N(4Zas? z?em*qXjqa4+pYET$;=lYDDtIs&Fal{b((c`{_Z%^8s2tcQ_tta&?Z$8{W znvk(Bv*Pnh{Rt<@xf=)mX(Pu+v{+KDG*G5$%Zk10zQ4^=`QNcDV87>h;_%_`Z>JwV zwisf&r1+yIL90ma9*EGAN@38)Pd=9Y?9(m#?4w8a;O?$%uF{sL{ln9ES^-hdS@z&{ zCtic++gYj;sa+S5cN?XBlBHt!#qb8j-v_FzgZf5#sZT*_{moPMyPNmS4$_M((eucJ z0YDZv_gHEs`EW|&+(OxxHC%gk#;!gyWeex!hhS8AEs=WDpVs;=Fzd(*5_}*h&Aru$PKH%BBeVAvCj-sqmnP8aQNc;A)K9_Przri_p zgN#j|A^vd~sf=;Pc&ZACSzTswseF8x21#P+0w_XB-cH6sETYc2DTVJf$o!cwwOxdOeBHUZ{kjf#wwhBcP*9Vsm@eM*gtkICtKsgg% zp6oVToNxqj;WhBCI)Na%?5oQwzj#ZTR2c`so1#)O01yXBEc zY43NxjrNQTpN^A2(y4>sc~cHr&5CVkQ1kXLztA9O!)B(=*|~EU?A-aPEs2vUIER@{y4#n?}mikBae6_G0T zsK|%IOl3Dd6tYss_B{7*ntk}*ntk%oLtA;E-d{wpTA8*EdoqDc;rRnyWN9OuBD(&c z4EW&^MI|IcTWWKnQca!bw%z#jjy=4$q2CZ;)^Vb2gUBO8(3PE@Pi1$ONM#$ZG6Q*1 z9IYcAv7wK^=aO z4#1#~!w8}*C#NblJ6*L;K7HR-#jJk#yKmU<{q5)N>T~A%Y)yf z;~~w^74w$r(KU9(PPc7Q1oHCL8N2@cf}Ou2`Ko%CYicw4mj*&y zgBbh`PS0Tx1N33(Z!3Le+uGdqw{C1J#!ebliJWB#ywGau@#z_!*E2F?FPcmiE^;I& zccaZledvMq%gsVN&Ytnd61q1F=<`I_`S6i{t_)59`L>VT_}y$a`-m>TA-Sy0O|!b# zAMK^_cWsg>D$A@XnosvDgziGEV ze_#*pZ&;&VvPyZ%i4Zg4DCMM>Q6hA5>GxTpr}!c*)T30d{9uSOT~tFvuIfa0X?ey! zPBT9+;mIhQJc{igzo&8jUhld;5B<;US%1p_siiZE*|oG)p0^41URDQ6=fKVzOY?K~ z>8GFC`@i|bE>w9A` z3^Tc^lPed+!7S@mu`+G|Jk zC!H~<&DZbbRzy!HCDi^!M2j*tMq8HuveoQ&DIvU*PLUmM=hbAxX^YVyJvcDGgFsCxw{BK%vn&;Gm{Q+mp@uxBDCx z@%}^m@Vy64bgQK~373zW8va2;g}p|BzxEG>(1RLuTH25lwBJ{L{52WK?wuJ(KeG}k z-Poij(&Qb8(p~PEI~sNtGjc z$DitK3b!3IfF%tA32SzG&hFh^wYUH3W1khAns3|JzxBL*?+35ht8bWHx~dL$M%^P- zLLKjfnnc>dI3=5qyUCH8OV%BaXaha$8wx1N#FL5)JN+KTrbScIq*1)b&{J;d(qw+M+ z!?f8pGqx&QMF6Sv3Erfma&~bULy>$QL`L(^7s)L4QJ&vpJ9M9XDrDZREqGg!gM1D0RLxLdo z%{y`ixkMckq01vbsXS91xPAM!^9w#egI}bj3V8#@MEB{%6JKx;U0x6IF&ZDGG2&WY zUiPiV(mLJ4D63JC8cKI<6pd5{qRXxeZ~x^NcJKDC$Q_DzN}bJ=rmZa%gctF&ZzoyphMp_9bY!wm_FgcnR=lVDbCQzs*Y2<nW`Fbc zUEAFeMV_u%WwK>+b4@#UWx}3&an7E9Y1ytnzhoCKPuRSO0F#4A&uf~l6L~{R6^iD_ zfB?`Oc>@C(^>`F6<#J?O&+4+zCS2~*ObI{5!|wybJERR+(WU?K-@0ry_&BO<&ARF! z2h*sGbj!;F_uXv{KxlYbtgkgibR~oi2So5eVGusH7OTOQbM4qA#FCY4u-(i~cnmTH z(V;EVKG0>P1c`a*}mJHzyJ;PF9t7<5sZ zmF(&>wvKDol@gV&ivRqT1$*n;&)JJFi|}f|NjDP*;V2y4Cn+p#;Bnl%%gcg_3J8!P z284`zc0#%jiuWEb2FW<>)6YyUd*>oQW^b9vO}i{$Aiv{f3r|0u_yXiO;54g?%?OL- z3mhH+PC`)}3N&_)CTqazR2n;GH$Q9mjtd|C=7ESW+xb-dwY^lacm5E9TCJ+ikF&>l z4y9jFDEY>Z(j;6oO)vaV5Q>!RGbOqp1Q2AG4uiCjZqh8JUaG4cq+t2ks#&eP;IBy^ z-P`po$sRn|w(YHke+UptK6MT;faogb6IY7JEemsBIYwIYAYDGH7rC8ZnzXrvip|XM z{+-v9z1ey%XFAbtnPso>Jg$f@^@(SN)JF0%yo1|KmfpU5d9pj}EoVL()GRUVaS&)xTGsS~v(#3))@~8C3skvL%V54Ol>$@6k(r)nm=`Y&StXW?3 z?vQE7E_QOylia;zH-(X)d#(%38X63+tjCF=((CExnbcO=+depsrCTA>qQ2P=gWGC9 z2#+#NCV_lx)wgv~wyBy1>r*wma&6w8d49$&UvJw>uP@k(ud2;5>r6CW9$DJFeB`(% z`n)X2;2_`!*@BSM{umGr$v8Oc2LgE@Lu7=$W(GICDTY_@h8SX-W^~i<@l5WQ2TycC zGOJ6aOd~KbH#g_Ax{SO4mAE_GdMu(+;!%(xGKA@RQDn)1ZV?jW*D{*alIF?IB_ zGZ*ast!;bzm$ww;tZ#ee$<1Ub!CL=A$dG zZz?Z%4YTb|o-!sWswQ6*clVjm0d|Bp2$9~T8@ly32i%WBYzDz+(UENy4`edr7PFpQ zr+SFa@eh#HS%X#!vKeb{(MgayU1t78De>_Gl6wzVqgV2pn z7$hs=OXZm-r-!v6v6M6ANx65+^?>r{zURZ!M|e486BmFF)@UQFeGd6D>A^P}HQhx1 z%)0J+Sv?zAzJUSY!<=uSY%ibfzucWfn;ti0^(+ zrygw`&_Ps64Qr~?Kv}^1?x_!d=U0#HvyWD7eFcISAEUW4%_05r&U;YH#lPQ6*pt8$ zMn3$Wvgvg;VaLow)`5HaP|N`TnO{1DOtGRgQpd}3g|W#jquY9 z3t>Zo*gmYK5e&;sAhRrrhV{EY%H0|i!S?}xD&fTiDQf90dudXmSBD9YW_2vU4phM%Z^gVT4gt*fw(jWj8g zX59S*NL@~f*j1+LcJ29!{Y(GackBnhBexmV26m!T^qdseYHNUBj^!6eN0LciR=Dvy z*$2b>fJ`stufahRUXa=}i;JD!E<$YcYjX($qB~x)@a4o4Tc{i$!CIPBL8+9NE?x5F z3;BwEIHU$AK`&Vi0r0%%yo3M zDo5GKEzK%Mm_c5BR!g#Eki#;bsflH~eRI{`edmTAnzVBEp;MHH{4=}e;bjpyvh;Y} zi&@ETJ@mMaCx6ciY4pKSs#iy`m5eNDXNA0!jsr;hD2VJIR$l#fO8aOsB&_2hMO)O( zhlQtG@;iR|Rrj*1<6_jo0=mx0F6~)uju~hqQz^}9aIeAY6p1DUBrzX;bGbSFZSnX)GQ;I`WFL*kHLA_h~Qewt!IRgT2ipk^mVK)*rESL7n)o z@7U@iDY53XwVQm9fHIKxtYb}pQ~-#=nIhlWb<;Ok`v(E(DUCjK!-<((UQc81?lzp{ zHXF?Drf@UAbQJ0-kP)-Kje5tnx9Yx*aC@U+yF0vImLCZzJ&PO@5pu=GE5QNEHu)){ zKkaR+xA@97URm)>Jl2t-lN+C|OQBCqS8aY_+KDdL%<%Fo9YYLOdgc1mAy+4nO{$jz z%UDpim|Y3k(WtznjXQa=%Peg>KGst`pq$xPnl~Vj-H$)IsX8KAwrAuuI$ECN`7|56 zw+wsrCax7vF8w2cFbV4@_Ll+VWn>Tr@;It}5+JOz#7X31lst?Ue=MyCogVEidpqWD zGMmJduT*_S9um2GONbKJ&~ozOi#6EBVTOIM85=%D2Dq z#=63|_O_(XIA*NaPi~$&0095=Nkl%>M-R5_i_h=d=6ci08WeVXcDI*~cs7tPt3aW?=AJtq z6y8Y0b(Ck%8ZwQ3${4l$PoVxD8^oR3Z>F35w|c9N^s4c39UtA^v*%x{+5i0C z`aOH?8xyvCMP3vw%lKk9jk5z}x2tn9U7vIYzqy7pFhQ1Pa=FHx+1s?c0@o~G7?a$u z9-g?uX00v+mx>D6rGm1bF3T6FsGvB?I~l=3e-ljFTYa#?w3WY7k68SEYU9M9)&sfx5!b+Ml6` zTYaZtJKJ?BF2c`d3)>2h8HjAj1YswWM@oM_AC6Mf$u1w!q2!p&Md3|NqXcVCc=-^G zEtq151<6HaA92Zu$TeZPtAf z1D2y>r1(chlK%0_Z*P5iycj|B4yn?Sz)lga7rhPiw>jJizg*q0#mhVPJAeH}`@O$; z-Cp^I+G-N{SvPJE`&2UB zCxrk3aMq9~yGgmG@XuJ(!#esr36h^APYl=S77QEHGkeQyZnMdLo1r{I_8G|~i0%}2 zFFpvPZ?Y~KL6ne%&(bQsG9NsN^g@D~jgDm96xrp-#$63~;sZra{^84J*8HY;0d_J8 zDeaV9&t_&eK0HI|O;1nS^bD`F*jB8fx<$BR^WG!%!grF8h4*D7yMSs-{>U?SLjKxi zLQ`Srm(A|dk;LvJ_+s{C(l*w&?ZzkfZ0#Ov-lwzj2gSM;VY%5ucvHNi zAghmLgz%4Ok4jcXg^Ond#Cql9BjQixa8&ywpmG3*EU!Jb16#k(z>YQ3hxcE!J3g6k zc>hH^PCL|CH_#Nw42{V8{JaHU~Wi<|b1?=INC^sm2aZ~bs8yz# zOFJw;a&bowu}mR-e3rNa_INh;tBWV9;2%AD)cq(8o65>IV-Vgv@*Q*j`e4xD)2maS zfoR3AE~FUQK8v-x+-r$wJ-B1`%RgVS+h1(i>dK~`oN&X(IH~h4XGAF!Yj*7j#qz{y ziv(A~N}Xf~pF^G?W^r5HWd*FWWmXo2l6W7_IGL0T^3R1Gzwv`o^;c!O#c%Er7JfxF zv*&eFChV$pdCO>dN5}>@-~07TjBYK><+FFq%x=Ej^vJF+@$fp&9-^Eg)tlw7RVVekB(i(g z9^BmZwe7JcJL*g<{Rz_RY|7gZi11Rlft12gKv;xxbi13hGXmln1*3kT7V#fmUj6on z=u7*4@$6>{)Tcy#AG19&*~LCYJVR~o_f&{XE-0*SyXBQ7er#58)U7tVX>Wde#{T7h z<3;=4Z*jz7Jm%&MfsR18#L_t?T$m6EuE69NV5ve{u8{fxW_6dBm(Mu$V>}6XqACFg zNTlTpRA`njumeL{zAy+hf_w+PKWOwAdameb{StT(ao@>qhu7w2_imfr_;|J^^^F_SLRhhhU+nq1K-KawFNmNVYn)*sg6#>^_j zvX=+^CXx@F3})q!45ZZ+s>jC%OoSOkmHQ|oC(6D|f@kF+r3IsF!tk`{J~HN6Y|;jJ zE|K1R+$rotdeb#&;F|RKVHj=`7GcD!K*|SYiyiq;JVf{w=sZthrpr{c>~(z@PC8S)zhx$MN3fKvO3a*6U0yl#LL=Mn9! zoDc24V0*Ioqxx_bwxp{B==ZT~{dJNfAV*|zM4ONf<8Pqd2Y$=_NcKs9u+9!q3de`b z|F}>&#BL0He4X1B#gB(>$c?r)Yt7cKP0ZHq>))NWfBs*)Y(M^k#pou9ea}9-j~DO( zxIuoYLeleq57!~K7~If7W0E^Y9#2eVVEF=_9u=8a6O7O}DXloGJ35lm%amxhKfpaB zKy(c4ifym6m+r2;{maj6 zW|SvpQ6VGsUDnGoV=89|V2T@^zvM`{?Gardvg6BiQez3({tuD*FD*3CX2f4OOA5& zleBxgNcDAq?Nw&q@cYvh=^gI>sCMx+_R-=a3mMrRc)#EFH!->JU3S@y9E1EHZ0FH` zKgDyfybcE^aXA}AUF`iHgrff<()~gA4uj)8)dK_mQIP6+fE*Z~r7)#?al3;bai)xhD~bEF`rk}Jcn!o$sR2QPYY6R`#W`J zb`z1!d`LcdKS6eRuD`=_o3|v5NxOS%MeY279~;f`2G(J-Sv?=U#fNR-KXrOeLiO9- zx+5Lpr!4yIBKa%Y`EWf=8Is#UD0x`Jk-|J|ct-(QJ1EWh`-9M3#(+(|FW4?$%D6!K zareVD4ha7+`HnD1N3UECZwt9}6rF`%lW!M?EkKb{x&%Q<>F(|hL8N}PbdMM*CEX<{ zDbh7!un9<)G$W;JFk*}tgLm(Lu+Ou5d(M5%_goh}Od5yIkR^cbck7kXk5Mt)KvxlZ z>f<4MfL?FwVg4~l*yTok`2N%#>H@u*^zOS}Z4QDu3Phw^qW*r_wGxc&`9liSN zGJxk$U0tp1aYGoc<$lW85xdVH5#K{EaDVNRVCB!mf$Qu`-F+7Kb!40~w#6tLU$c}= z_#5d{*S`)|IXz{3TDQ*-wK`+>hkJfX{%ti70|Nur5KTR2^3^7v659*W_fdJgn#wd;24j zmu6rMxBjB?LT0*XyAeuX!q$0I4`v{~Ij5z&w~z>xx6UAjviEfhcYZjeyX13O0Y((3 z_Z4?~>6*ZUOBiC6NSVSPF5g5?bV;4Ql6(`Rx*zEArJf zKAU^!Vp}%k!b?-2eYh;w>^Zk0rPs@S0onbylgi- zAKRs6umwgrhupd(ia-8#GC^b-(wfoj5l<~Ry;gL;FPjnb^n!06(t9rSH`k?8k?m$2 z?zVWtd#bUi@*b?Tz4d4N&S#YS!Ax39haqjBv{Q-q8T($9!r`toXDN1MEZ@1n+=X8| zjOXlvFltS_qzC&UAj>s44rp;)g_a9!6nbYf|rbGy8l=%OT`lSt2 zk`CwKAYxjKgrm97O)9IGXF%Z485wD{!JsaU-Y*n9%GP|cfy&fk3RG!~vJOm+^Z&dN zKrh)Tb&KZ|zPObS`YkJalK+N%#tE_b2M!9p08_%(Z~Y+H%xF4grvmw?nosu)|IpPQ ziD?$Lg~1oZ{1vKbpWCgqP0@!aqaAqXmr(j|jPqq>xn57zDT#%$JBj&o9#wS@L%VcC zM;YLb%a*npsc>3E@Rp$-uY*5MJS*LNzJp@fxplVM64^MbggtcbK;U5Z zl%jcp_A4pbO65V-0xi``@E2B@2*e(qXL!)aAu)02-wUa>?n_6i)9kCfURAfgEHHuhAWMSc#A~9w!Vm%? z26VB|9$vkp^l#MMOQf|PQM)?LJ-y-}pjLkwG&(u22*`%lV~#b1`AU~J=A0)yy-c6E ziiM*_^l>g9+%9OJ{@5Akeny#FiZ|V9W-Dz`!8_pTxl10?+WA4ea@wF{Z+92o8})M4 zCR|T&(BK0`)v1|M|AYDSDBbk;<@3DYn^@RnC}2<;y`3sP#2!C>W@=PjM*nsjx(ut- zm80+~6!gUuNTBBo8RTURBlPYv| zurHrzudeU&KBrX%M7SVT)uyy}B(EX5KSOU?=qr-IMKucx*Z@P|7OiR63#H1iKC@H;o|n10?|zazQmk}lj~9z@pRWy5Jq zhaaD{rN@8QXr}oU=F!DOIb)OgrS0l2*UT!ySF7=;S_YnF4NFe37bt^weWr)2%JNQw z+fn!T7n3r6C3%)5DXg83uDr235{gKhpnlJa%x@;<7UpHdGonN})aLVt6(fbl=cUEa zDS02gGPTEApTQO&u!zk~uL?q{rFAY^eB05m&aYP}b**kQb91QP%7<*&Y(3ao#$1oN zRM2aeCIaqZL+?h1-{V}mSjtP-WDYV}LT5-=sWJmrS9IPc19el>zK$}5>TDoW7i?K& z*gd-)0@*e0lk5?x_l4J_{>q|1gNpdcZg07h6aWF22bTkOnTLQCMA|CdPnB5(Rifq8 zaC-xC{r{BXfh~UZ^-ful1@>P0^nhU5TwS84E+A1Xh>^P}71dyX(RPb?+gnf_9soTM zUkBh?J)9CN54pQj#Sj~NJyO`-5?F8QzQe!5D9Eidm_ViSyHWQ7$sCB5qmh*B__Irl zv@Gb+4IB?7`oUVaU8xNTK6d^?KG8Vp`GBNnNgj+DSwKs?1uE>`c$DjYMB9e0s$j3R z*Cm)!;$7E3ZAZB)^ivZE1~D8a($VI=4p0!^N8FG|)edU$E8`_(b0m1`i_XOT`Mlb~ zE=U;093J1?`R^LPBBo5;`j}pMZ1TszdL3;37Yyyba9jZGbl@aD(!Wm#D<>-}i-pd{ znXrW#sb8PkwozVuVWf*nO=c~MHmf877IKsyK3bHonX6gc6-UpaEUqeE2~RfIzwV!| z^Z;AgaB3&Fr3{9%4dM8I%K1RNdiuM8x7nk~XImfe0iJsQ_Zq!*%*1n5Ny4fQ;7ijP z`}^MZ>V2i$ai$3q2)boaUxyVvwnf77UeF_hCPNVx_u`g*cu@vM-)A)69&k^Xy+M8# z9deVYS`K9qT$xGOk=tOfB@UEkn7rS33PaCsKtM$bUMeAIEKuMDjhn48u&24I=6nNb z=|G8QykW?oAgWiRBE!QbVn-j`2*1eo9j?ogU8+64Y0!Q;JEv-6M6{;8rLd!IH_C0{ z90!N|w|=Lm)%kUXdro;LyL72JpfXh!n!bd=ps$W63M3$ji(_L6&~dF8x&MCWY$th6 zi#Fr;6A{4c@nCk8xX-zrePLd3L7EViL*c4>d+!COwF)wwh;DBU)Uf+l$W1dCaD@W- zD!R-};P@B`{`F$Fcn~GhHB(X0QzIGy4t_sY9*au_WlbAwi0!By*c!##;m@g$i{M@* z6N!UC;2DzC9U;EvPBvlork4Kiwsg&VW6w#I*mA?@Is?YaggIcNqi}ZCBulL_{?W`W zX}ixZeVLDI0(nf}Dm)2mV~32ZVWv#9{pd3ZW`i>0gRx1v3hHqyfxgvTZ9G8P6)!+K z6b}|*v9)(RHFR!4r#e9t4&lY$f#Rk8K(7xnTp6U?c+q8GL0F!-@~;~0fucm;sY8}} z#z3SK!wnicFBTpMWcMaB;m+$hSV-Gxn$%U3q_O`6_0AvvUxs4EF2s*VI9q4%h~F%Z z=ZRpp1X$Izl~&6@fzjf{i_il z4_fU>J`HMDY3je|VE;{nE(WMT!DfUpM*AT1*p+Skc4sAh^~wwqOxLUZ)Gh=l3PZ>N z{`2?8lY&CK7wB-XcNLa|pdh7(e&Fys0&l$j_0s=zuPvp2-nZN=a?TG_v;~GZ*_OMJ z8V~|^VHcp^H(I~q9Q$9K-fxoq=~Hpg^mv~(>gZrof_*AXjx&QqL+@4 zE{XmJf<4bi?!>AL{vsvhTo85vc#c{G`OdEe9i^EA?M+U|o$Z=w>SoD_(1q42Yj;_^ zVPgq=1AKhnWXWQc?)^I7pd^yz+yclD7qr0=!~QWo4{U*4F~St(&F@kvz?;23xLk zt`cVnqdb=-co3{GxXv1D`EFaF9LoQ@t(_*6Zp!y~#v!)7t4y;w)+)RAln?mVHQ0? z8G7QEz?YO{EuqcUNqmw08zVOfzglSk4okUHVp!VbuFk2pSrJ)&4CHF8gaR>2d|LfT z3IuUq@gA=df!F$^yZqWDBNV$<#fagSPWR(kL!U=PP+J$v6~&M9i>}>`bLE&r#1YM% zU1cXiO1O||h_{$TUv`hy}}RXn}MBW;{mT?(zojV^D6=e0+E ztnMQ7=&QA7T{nUTEdsXkyKibW04LvJEg1_@)k4^%+IjVzXo5dfJ4$Ox`vJar5Bv+M z4E=l4yo^#d37%An1cggXFglQ^#% zwxwsJy6$wUi5w6$A&bR<#=9xeUFJsgK4njkvm!^lH~3Qw3~1{@|743c6&&m-_Q0M1 zZ(7?p(S)MNyY9_Pxyjweq6f@LaITzXymWm=_1dJ6>9SGX$x{DlI^Z}Ec8$tyRIWc# zk`5{WoCot^fJ~j1tzJ}H@Y6*Y0kZ^wZT84SjAM?XM||eP9~uQy+esdd`9&e1#~^&S zvKr(Cbt|xE3lkiPe0Fa2U9^LAwA`DyRaPB}00Yo$~Xv7sXGDVN<28!b-bL*X`E zkn`l^(vc<9mM7G8ZCA{vt_JZa|V%WPChJ2z47 zqq0eev{==4r;KwOmNLJ(tNNwyel0guPUsy(|(i(Hf} z<^njt>X7mHQ;X1$368N7^`0{;`6n9zF&hO7#dlKkhkOIZ&-<1DOz#gu%nW2oxhb#( zi1fb2)FY&p#a@_?yUccPG!Mzr=@S&%`W=m*`;H?Q8Q#(j|gVCrq`Q}2eFLi-(W zV9cvCSZ&0jltEp)djSB>|Eei;^TJM>q?R1n6*ps*864l=YqH1wSNX~>0!E)Y1BgkU z!uqr+cj3!2{yi4=O9`>nv?|qu7d3-%v*(|kHoCAOO|wQUF1luFrNOCoE0X$OQF~ef zE~&*v<7*5bB%v6WTubB9Er)%rGKpn+nHg$z4h=rd5)fq8lq@<7VC1yZd!7r*az!C(3S?JMUWkg+k!9e zUqeR%Nu>{Ix`P^SImlnTbZ@6=e1cQt*fnaBz$4`mZv(+>2lmyQ9%n^=C?^W{Ryp%q zX(8wI3$L65{V7l!!m^Eq{tW`aQu1%i`&xNG4_i z8WYIbKMJen-H(5ajsuS6uvD$<@LCzCAt7xn%)M#kt&#X|I&bUYdK)dp>z@_z8_&{A zcFNva?>?EC{?@gj!Tx!^VaX6HtIuo5wloFpVR@ePl!1!b4<=^M(y3!%S=r7g_{H9F zZ#nypt;X5*`8&lf+cliO$!9euR1RTQ;%^ZaUE21%UudnSU2N7|Qx3+}2NE_yh6ZJZ zkU}F0RBwj!2jsGZO3B=%6s>eFpIq|V-VZD?aIfnd zU~tw0GlGawFSEyR-CT>v`}O{ELFx26Du7i8JV)xj>FL+xRtbFC^vPNpvj4s_br}LU z#2Cuu06oR2|McXj&`}Z7D{HovtFB;g=hg3oueS7S(dr)*dp{gZcP(4`HHiAujC0Lv&7Yv%I~>-}>1Ka)`UMz2<__NwYOKS`yG`CBHxTCf*? zm>M@xvUrtR9p8ZH2O?`L)~|DOAM58x%)gN?^DuVLHef1PYOQ;lWQ}4f64};Mb^h)- zu6Y)6^&Ob2J%-l6(hSHj@Z^kvdf_1J(v=1;-~Vs>^%MesEUEaU+AoxCo=~9oN$G2- z-EQ@}MLDRN@}8ek*+>#eQgF#C#f+8rA2c^NuO1H&)wd84_rjf3HPlXbsq%SI|D{w9V?$Yd?rA4yS#H#?ZzoOWp^y^i zRedjO;VfctCwr+^5<~xgL(uh;HDdKZ2u$4!!l%HGcI%t2 zrBPjri&Yf`YXw){B>XGJ?)&Ydu?<=OoBM1?oWabe`q9CIl?XUCGgr6gh&|%emD+&Z zIV}lZ-ewIY9cN!Th+h6PTp=^z&`;)k;ER6dWi$6%VGDR^yrt#VQ8TgA4FvH)x6dBT zr&^f)ZzeBXTb5`zrS3YX_z&m4jZYs?(uGvU9 zM8QNd)Duf+*%8ajbGUgv`p#N7;34^${v+&HZp*kd*mKE$;|*OKz{@*X&RQYZdXwIV z%|QDh7|R;st+rS3atHBjr+AVjJNYG_ogZi~^xqK_ex$(7(2zmt>>1;m6!A$3Sn+h< zB@{?ZzIdIcJzslio6p>8-gtq&zKm}wLr@Z*4s+jr7i^Xoph_mKtRqZ2-z1NAKPw-x zsM+V!2q1~R85Yw0p<0-?8RjAaLj8tsbVmyv{;|9eEI*$H-q(C@#iNO2GLV@0+Tve6#`6s zE_!=HpD?i(Y}pYWw5DdtUBfp(g;Qltzrf9SKrtpKS|j5@7uxTDicVd+`7ckHb`p+2 z_yYh1&o@I9J&TKa&L<;UfVb?`k9XRP-vCpun)k%Z%X!Sh`yy9~3w0{K^>zn^6h4Ei z5g$ahTH`yO+@_naf;!5Zy3bpyn|3lTU*xQrsa%zWMWDm1>{3`dL2YfTlSpJs9)|T3 zws_w5JQPYAA<8Z5ZC1_>_B9!Jgbndu{fkS6j{U9p8*DXfE06(m{}*X2v&7W-5eEZf z1*3YvSGCh7x?i0-U(sunbAVSG4{hg`>{4YktJoFH)M&Ri-{6?zB$|V~z!b_S?S|Fl zi9s+5P1{WLT$Xveu$3jyc_6FKKG|-vQ*Zjy=I_9jze;AOjw{8enzF*wSOifZ3q{_q%HEv}A{SSO( z0G#xjE1T?u9Ff8Q14Eyy~@iU8a-UeQEGaF_8lZ z(saR+%*bpsk@sp0ke1xc|71A!-I=Lf)DOha?JFJu*vH{tGqy~nR;{16>+Qfsg-Z<@ z3#{;x+ccciRm00tVxzT7k%aBxL~i_J|L5OWTUnD0Fw(_v#!d+d3CJ83Zs?Xd)qwxX zA{4ji(HG5}77LLF{H-sg5;XdPcXGN5ndXV5q>B>$EE^BF*)^4*4EsT;MY_XC@Z+Ff5b-**5eR)+ijczx^><^Z;AF* zH1|EF`2G|xoG%QqhQ!?aG1CiG)4Z6_G z!<=s~kH=j~;@6SroYG4)_S(w7U;l%ZVE(8=Z*^oOE;IvhwyC7-o16Ry-~IttHez5% zXa2f8nZGQ01kd68M^Y@VQLQEw9qMGy9s$ApUb`O!;#=2M|CM7K`vU79=)^NG7vT6R z%AZRT@H%6czVSR4_FZTxk0!tv>u0uX6M>4^%>< z`K~!Xj@1G_eZw(&HHJsgM{Y{FCQh*zZ1R~{J)%o*e0j9#uj~+$93QvGmetBXzXQ#|7iWX|AQ$N`v7-UAR)@m5E&S>D zg$TFL&Ey!nxatKHTL3pb`p05+T48Ie5IFP!q63(ExG>6g2Mnk@OFnD&{6&5;RjNX- zt<|H8<%VY;|9=)^OdS^8b9ryuywHA?X1)?m0}jlOOJ4H?1SPGr(xXG`E#TKC<67#JW`;#)3gt(Gd$ z^nBP&%@T4k+KD-n30Xf0UTa)Uj7>?5{9IvxET=m&b2kzh4!|~eo^p83Vzx>bERvl3 z?w(HkzVEa@4Ys)0^VFpR%85sB{X4zgl6jpEPYdl0o8{o5wmL^8dFe^G&ng8UlBYtx zpFOT;WnWI0NYYuCAyz8Bkgu<3u~7*iJH`we8Yw=#TyWP8Nb{%%Y6IR_{~SyrQHlZM;Vb(GgHgQ}_LR znbxHLgjo%JwFV-)YyAWG4l6!XTpjnSr$Z@llp0cK`pEe(VEtc;*{z)^t5}_PQ91A6 zb=;;QX8}imgSR&}(^vnA+Y+LwG zbYy@+oyH3sJG25K-f;=4+WR+Bhrg-$fbCVkx=xTcyIxnvxdppr7u7BjhaSC$y|3=i zr44_Tt^#Mfi0l2a9)j&k7|TGNLvL8yTrR`K!v;#+hECpyr=~^-ABCk#oIl_*=V8PI z5=0lpXOO_9bTMvK8J4;JQdmHfPd>_%u1rq<%%+UXCw9ePXfCjR|p%yp>+?+WbW~a8$;MrJ3Kzk+XQpJ&Kuop zZJLOTw%qPX!V_oxnD|ixP>bZz_SB3wMGAp<$P(+3dsM>;1D4`D`Nw@m(>uaXThsjFMz^i(Hn-ABz}?BfT# z?cTcVw8_WOZk=8Q`_=cY1(H}i-)(hXSTse*_RCPIO(A9S+_Pih=cz`)qu7PRBy9ca zzIe<7_`{Xkp~(J+)W^SS254s6rs6ZKk%G0dPB|f#&dYxVV@xS+cWZW?tINKX|7NVZ zf4lU2e>k>%6!K@QIhhtk{7~(8JP>pE{4hI%pwU@8D($&@fW(_GI^c)j)a++WNK%I5^(-;?E?jRsh+HdAZxIVl>`skRD@)?+EN)r^fCR^QPrrOBf&) z$1)Lp>{427?P^y!KBzr*x1+YX@pqimRx4XtB0yd=t*dE=s_Z{17+2=I7np=x^R;I! zE?&P}D0#+V{i8393K96U!On!NZQ@`W^xwds!Pj-8( zgflM9ngYN?F!b{9ql_5g_QLp^q`PTZQm=c*924$qj~{U7J}1;a`%&p2 zztxb7c=F{>{ZJZjWvZ_5(QWeGDu8fOhCP`}e%fwt*%?@ncL8@Dbvt>E3`Hg>H1%vJV z-0@(wSu7E7nm|=s5_*p@@#nsh^LGP}MO!9No!M%?eNEI8R`{DtYv*g`tUHuzV8>Jp z2mrjd+yqNRno@5~uq}KguC2_@Kdrg`7-mPUK2&UDaNB2_G?H~+4ss+lkU+JH@W2@E zYdNt&=0dV(0-bMP7M9vFf`^!A&eY0Q55EuBayIvzilXZ{Kj{#!RhrK|FpS6h{vk6$Kya%g@rf%8#e!e+3q;%8 zsV0|JhrB#KoAw|h3E@wj;MSGStS|=xhOzjjHG833Hy}-}>p;XwQE}kE(NC1RRaOFU zYzkiq3<%a!Bkl0T8F95;q@_#neB!0rB$-rDR}}cyE!kN)ybu969~3yVld*L;#YAWZ z-nZN9<^%}r=h}8MRO%&@PT_>myZxZ`v_0E`LloJAO zbkS+hvNv=g%B{VB*Ule@!)cbosDV3i5;r8-KSVjg>+O@^J{;w%oVcD4b%YTq^YG`>w z$k~i9I$q}H&k~rjrm8qGt!f0t@dRTDso1j`iVy?d z&;8<3-kf~(w_2!TJ%KWW*u8GV-!8#9AAe5eO1h0J92i33cCyK zajS;ztJVoQs~r@*-}gZ&tUuZ`^bozN#1dXvBvz_IBfSm5GNE|GoA0KI?ziNhw!MPM zOHW3ehkD$m>}=>I*tFcK`1g&Z9JSDIdBAy~a{LF6`QIs+kE~5As;8*UHfoo;a1#3+ z&+k=-v;@|QZ%MO>tmTLedclo#VwQWtuO|D#!@A_pu`gdaCZxpb1ybod2?PJH3|70g z3j+uttUT4#uiTFB^-WFEDs z04YOXxe38mUv{{Ia(}U8qBSn_+SgPwvn|L=meA1pA9aJ8tGr;gi|rGsxu&RCn6AB@(Lk z7?xrGhVkz+&w&lKGH0gSLMx5bsxjtOY+Cw+X28$QJuej7cH-qOmkFah34n$rK&GMT zzwhIoEWi*c8o~<4f3m1;Z+X|EH}U=OQL#Slk1WIF@9I;a-y^kb=t{W8W z_O=A)kDDxFFuo?mMDk)Pvo}Y5Z-siTw^Dn*#Oa=V4@QQpu7v{Uq=T-0WSU;!Lw`N? zWXs&L$r$(y`XxRY7%Z~6 zK|=M=bK@wN+#Z~`DR)vsYm}q!#Yscgb!AM5P7l4qGGacO9h;mTH4XXCusC~y0;-xG z5+rw?CmChw5b58>^w_l$6V(lt&UW`4ND!LrZHd87Rh(s92|tmZABg{4>D+()a=LLL zX#sI2p{n|TNl#JYt5umCJVmNt=t3;TG6<32QpsB>>ThqLrXPXV|1G<%eQF+XgE;`G zvoGWfr|CqTnXEHmrwESGo%=)>p&D5o5 zXvSwSP1PO0oFl zw!E%)&9;^PS9lmH30}!S^kXco__0tr^m4r?lb{ebElx2h1GU851n=+ zc7CZ$NtpIuZe%;Q>uJOg`wqZjrj{KH%xuO9P^O^M8>@K{>1SV8GIdpB4z>{9OH;2v z1S~Ez<|{6x_sYYf^Y`i4nZFiU@&Zr#zniz4wI2RSnr^`AQrj)-2Pwfp9eE?ZDQ`n_ z$>y5>06!z^_d?(^8Jb*Y$_KB z0s+2_OP5N=$1jJWrMkU?wj9qI9!ZcD<8@R*VFc&*D3A0_Dto4rF&_s%zRn4IPvB6N z)DW+LMOE1`o(gZQZPHgoWReYQAL34GCnfgT`LH|W;e0D&hr(-ca_#nIoEu&)rcjJ( z-vjAuPpP|M79{Oc=ZgjRm;i6)yqkO#V5JNv*3h5003kK)oQ>kdr$gN7W_Qv5toPA_ zihc>r1NTDLIjR~|Kd;B|r*jk>ku<<3_-{SoJPv~b=Pw`4E?h3bZVamM}BRR{C5N(c7aLOotV%LbTbSA zIoeu$nlKnF&%&@98#4(q4!V^7%AQG^yCLE(L4(cDT_J(R1t4dyCfV_IXFNWZS}R1y zWcRCtnD?YlOWU=fe0+@Jkl`4yq3b$)NV9wnsBSq;O9ehLvwcu@kK0q7@oV#=oPX{a ze31?J2M0Z?)zGA#Ys_?Ui;oQC^2pX&mK4w7lurN}@REW7>7}YSy{aaC;J4-~lP>+2 z<9m>3AE8|-Jfo`e7lQmScuZOaV{B<^`BA&=4mrMO(e)X!^E~&eQ->+{4`wsfQ_Tb1o{lAS4${nModjPXEW|n|v4{;L)zxx~N zf2fDN`?+{x4?9`oMYBGf3Yd2H1y;N;#$Eg2XbT%J&XL?D1wxn2*DrwbL*>MS5$RT-68`f8DVPUJi+oS z-pl=4emt*X5;wT)(c?22jB3Ge3kiF8ia@~H(HqrF)IMmG$5`gPNy@RTL8oa|Yc*Kq*x=SsG zf9kjjIbm4xu8HY(8gaZqE`2K<-i=HURYwa;LCX2|ANtB@t?|~x84)OYYY)D&uv1~0 zpWYKD*83=cnk@A$40A__`!u2@@^Q&1-hpOLf{Z5ZmfG)FV|i)qi0!7APX)Sy5{K_Q z9mz~x_U|S{ZWWlFFPyCJUU8uI>tJ}$C9EJWWF5rN4~eLls{80qPFG(wflrQ!5R?aK zWD6{#n<8f+Xv5_q=v82|DCy4rtjC=DERS4?qHnQweE zh=PfH9eUCyO-Nk{_&(UU{Dtz@DEYI}J33MeX`GI~u?9uCCJZcXb;ou>bV}WZEh^E2061;6{#@=(`RmP%99O1uUt(Ot@!v{@ppCkahoE`{|>STaoW zhyB>E9$dUFu>W}pUR!Fa%8kZOl5l`qrt!iDl~4gvx=Ez|D0$P^sJHG44D+r;!Im;@ zbggp?K8^7HOp|UtIy%ZcUx@8D)3bhl@wQXY-riS?BPDt)))BixeP}>(NG9#OWrjX3+V^g~1o~y2IrmjtnGcUD( zXLDkSzw2*|Y+R1|7ydpbBi`=XIl|Mk|1kM&>V{1>C$}ay*kv?wQK?K38_*;S%4s?q z!Zrg;oBzKpL5w(2|I-+cTd!^&a2WgUmZ*M#j0h@b(|t7I9+iDnuZliln6rlo(Q_AE zFq)bVK(I(I)?cj(*9IZ82Xq504`d9&c|Io$Cvu?POoHbzK}-ow!KmD&(x z2gQy?drTHjePj6^E{v3h4}mp$wy6T-s?3`KtMCHL)mAJTau9VIqOqYCD*yGpttHDw z=htUP^8CK4g|B|S&W7%t@QK>w6s@Gy%b_f6JqZ-gEVkW6eb%!ZAN4P4+3@VDSJ_|U zvU>cIzM0OYHziR)@3s{+uHR#-g~2ttU4@s2aPeFv~}ADAi+>p&czXWnSFKa5Q_YJ zX!;V=9qz@c;V5A3evq1PFG`UnuNB8w&pX|1yB98FsAWFw=`;4)hA1)o6;cKMyt% zUv>o+HU$>S0hFXs(BxVVqP+F5!GAAGqeD9Z^=tl8V$sJt-p@n(j{C}*9VmAKmUjF^ zfzVqeX}tAG0g7IHY ze2bUnm5EHdief6TJ$qqC?tZx$LXmY@e)|J8LSqqNrS_=D0U8m6|7YX3_JS7*ZKB~L z!_FMo33MmfKDmm3XI&@t$tW9qFBf4VT6N&%4&@tN5(J%ow{-e{b@n9`W9h$UpEX8< zl$y5L2OAbb>P(_$EZ50?eO+@Vt}Bw9%!688ts3#0usou!|Ec3FtO`EN#7(^?R4un_ zjwd&j7CDH);WIk=!IlTfi&6d_tetLfqsD3P>%I;-c8tVIFJB(ePaY9+cwEa(-!P;!7?$1kHUWK0?X!BgLTGfd~4n4GYC zMV*WL$zPE!`ebEteANmEtLa?*+o#WgA!>cw8Dw_Hb-`Q9#>W!tP$%yXHp+0^4MLoF_O&h{eGA-0zVzr=eTi&j&)DXb~OGC*bfvf}pX zR1JN9q}t56*>MINOPS@TcDHZ>%7I4TlDtKUIv?x?f9~|%?KxWO(u)s^lQZBaK3Wjy z^VI$P)>O83s84iayOrJ6NV6vD>r7(gXM zi~or@@TWoD(>s696;6Go;?`oIrlu_52ExR`-ku~Zhqix|_kxYA^*p^lwe`l5{!IU~Rp5E!vxKr$S}kJ;1m+R38f$hSxH1FIhfNS~hmr4V@UZ6{bkn z;mzgAW`PJCsi)71LlgqOwHL#LcxaQ`W?L$TPR3kd6xsGJjsd;Ds&t0aqH=UfIQA~S zL$#fK=N`}qMZjQlr;VhV=+wydzn-TuLWE7rF2dAvdK+jEy##k4VU`eftHIXz_Ql0N zi_wsKN)dQLD2Tm3MEmx!Oe6HTDs`26x;y9^bALGQ`k)W6w_1i^Fh{7}Hiu0kX{x{2 zujpudh?^d_UI+bZLp@a;CScj)MY8sJ4Z4i2mS~pY9aThMO*tZwJ0fx1S&GG{5i5cA zRFB^Me2Rb76{OlT<$7qqBWZ3gd=`O3*Q8AI5jYClCTwjm-V_SPT^@K2hED&}BJgNs zL#D5OpFFw0(^)u%UMH`ET2)AKn(_*?503fpdQVrm$&$35!OFXv2#UKlPR8I~I!_YT zO@O;LJjE2pZsq}3uRg6XO`OCOIf{Kn8wBNsTDEn^kg#Tyf&DFlmE)1@Mu1aY{}l7h zSQCvCIqS^z&lifrZX<)dbcRq-YAzxMcD0Eg?!yA^E1$B#?UHt*dlfF?L=c9I&8Vhi9#nxR|gdayMzY)XhK9bbITM-alb~>Nx&Q zlmR|K^!xyepklcCJG$zh$s$r%WKp>28ZLP~_H*;hA(&d3hdBH>@oRd=G|F5uqecrN zFIroD@#x$L5?h&Roa^YP-KKRJE&!sh!##u{8ZVLrS-0zT@Za|3%tgVm-QeKhC4*2+ zpF#g=60W^xzXu%`1y`^!s>Cp5BK01e zLh(4$``#Kvx(%7~zvw{w5LHEx{A#U0)S}_ud+<9PseT*Veg~CvD`a2ypPiv^83cGc zWCEg|38&{b?0F_XZ$J_$#^?A4HS^Y!st5uyHv9#`g<(TO3b!WU!9Cxx;!pH9Ule#B zK$qStR_Cb?Nj~dJ7;n@fNuCk72_KfbN_N2AJ37U75?LLh-|j$PvVJ2O@6tX_)w*&Q z;`FVsYfhv**>7jeq8IT}@N8JtqzIAWvlV%EKaAQVr%k7VXv)jvfHb3XKZ~sBEbtG@ zFzgT8vnw%mt}%!Xzh@wELb_Yv9R*0Go-1a2V=Nb<-Zt`~wO7XRygB==PVn?=nK#E= z()hSe{OO1e%NyB@Ypn&=#Ei-omse#9?@-k`*ny#u=-KC7*3MXXq2Uff*y7$Uk?>^` z@S%=oRs5=2AK&$CuVWlk7Y<3e0ecbcxr%20zEykJ;v1Cf{vypD!QfH{EgG@%9Zd-zPbw3xD&U z`X>!v)6>M?Ymepvpaj&6Y%b;myM)BF1lT4@sgPe%euvPfE-}{MUmX(rc(C!VTTf1p zv2T0n+sm^&ca{0iZvP;TmN+8UFchLfvgIQRdSW1opZ*>fG8<>kf6WERc3CP$c>QoV zwd8Ib6#t`PHKai>AK{@ef0g&>?9Tq%or6sDfA06FP2LdH({+QCtY^6UA1rge|5`!{ zZaADo{dtptDh-p=HP#oOc63Bu?Tdcn7PiCI!8$bBEk@HMKd-|Us15Ja6$Saz#=eQu z&@Fqpx(m8`e|!ft9jOy|+or3l){{~vD+%;r{?;;(7HKtfqp?8L&xJEO_1m~e%3X+^ z#jP}KtMCIt)7CG72f)Fa4B6*z587Gu0=;p}&rLL0Ta&J`DiOdh85G)SEE<*p(xr=E zRwxVKXiFocu^s4rB`Ml%e3mWtP1CH^tQr2 zRE|j>Uzj4eK^6x;exT9SY+ zl=0z#s;EdOAAH9k--63x-^U}bH0ctOao=pIDMF%>BLx*?75*D1s;q2K#k8c*n3Zy0 zw!Yu_TyFv%2Jt6^0qH*oOAsbJYpIG?AE=KhKH_2Tm@#8|J&{5pgBoxt?V1lk($O$)?B9O(ztwHAWYf{#HE``rBd#U;PwQva#+ za_CSip>CPj#kgYabMxwaG@KCTY?Ljt;$eP9V^H=s;;mqYfFM zRDWsj{we0g!%s%3po9rH_bt!(Vba3?3%t!g94r!ivRNnVP=tWVq%^w5T}-(&tStW- zQ%yT+I9eZOgjhJn_!%8jhITrFO`9PPjQHOuEzTO{SGU}c-oV`^1#+to_8tg9f{k6AjC8)8f|lWlL+NY=L-`LwByn6GV}e)V6YpKh zbx|Q!73~5tl5E~b7v@+Y#mA?)?4jipm4y8uHw#EG|1fiZRKd0{9ql_{Lj9Yccsdfw zRnXF%A_PR1w!F-zT|Ir=?HPRFzwuv~^Gat_(F62;Wd4mdZ2K9QZ%D;IgPYVb>e+4E z^ArUFkwtw?Y}Pia!_Hg7R9M2Y354vMw;u!ulWV7&{AU4HpH6p{sui5(2{F2c1o150jOw$2p;DHU#)so_}Jq6&H zcHOiEdg-^ee=-n;MG4b_`3O`RyONAi>`7@pTnlB1c6RX^Gk}fP%~dO7W4}eUD^|DB zo^>Xbz@vGtqE)*q9G146Z5qV?FKlt7)j58Mwd3MHqH<9KDcG(RvY~W6g2amNbym}G z#%aMM0K*%byngTvt_^0A3T_&8Zh$YXjzWCCzQRh*%%nFth8dbiyfwJc1H@VI<#kJ8 z&wkCrE(*oeegJ=^1|T!)!&u5vh!q7H3w=ylN23$y{ELdc!g&o$(RE@nExE;^nKanz z@!P!g$5s^6!q^}?>&N5?{L=Z=sdH#HTsaUoeO1)3qzFC@Qm`z~HB$k#gulnxUWRWayLA*oQDaKrpmL_KnxC1}=mZt@ z^#;pwD8JNlNnKdYtli%bqTw?!ATaZ1v+u7$ixQ+GW_JC7?>kzS2~$_Km9b01Md)nH zwi|B;1;FDoL#L0N6#Qw}aKOuZw9xnIxzle0EPQh(|r9RD{E?++`+v7!}{pN#LDNllOvdGX|%51XF zg-ic?Ul%#;vV49+ZLB?avcz%17fl8pm9>f?}U?{=FZ}OgELO|tvqPa=?`nQEhcyyKf5xTA;XFi#x^L-QC^Y-AjSuZpB-)xVuA<;DjO}1d0TA2@>Sw`_EN! zkufs%+H1`<<&nb7ex0$%tS~~9Lfd7_c0@dog1{oOi)6M1_F< ztIGrxedXfpZ*j$+o7RE~H8Ztt+T8(C6(`Em#6357kdVS5n?RvApZEuX@6;5a{IveP zdj5%(Z#Goq-hq>UG2$&mKheU==BcvNXVg9G3Nc4tW3du}2u4J_TpShJh9u2}^dNzG z1<#ez7bg5-2*$9I$%~%(WZ%+;Uvu!oWI7xBf~HJ!##NkeeQwylu~>kJVQL44kH#b= zl~m)5YS(a39h-Hr=@qV*dR$8HJ1+$C8<82HX_3wNGg|WXa{2NNzXTum5Wrtjitk9w+b68#G_Zm<=MmtHT_3P|T0!dTnhYR^ zPepCn#jf4y+H0R}H9p{qh<`@x(PCUIK)rpsE}so-jvDZ1_rdKgeKi4}5KMj6Tf@Fynf@m-)9EAfvv$(gXlm5$m)XerO`m0%j7B-++7znRJ-rJN_tyjLUBlv8%uFas}?#LYR(&9ws`M@ZY;GnQYd^AH3YmiM76-h(FN45lT8QanIr}DdASHTdxl* zF!LvdfhKV{73G@x>w+}A;k6~@MEr5!W&LI3by59P{52&U;e)&w>}S4ve`aqNezO^F z@p}GxkOQN7-F#VnnR=a@JE;tRY=?C9(MyqU>ZQ89uGaKCeMp@vyR!)ajFF5mc;tyK zH1>)d8z)8gq*vZl^1D=GZd)Eo8TCtut3$q?BqOLA$#~8Ho~ZvZMT$p{dN&k^3r|W6 zf+v>L2?BF)l42d)Rj;5TWaL5;RO!bjYhDBB7#o3w>c?yl$;tKG9> zWDQNyP<2za+?wvTym#=)k{br3!V}Kbj(7V>qs((kj zQEmAdKmc`~e;({5m^z0A5l9zL+8Q{((e_HqtPS@uX4ooXyS8A~zyI7qrR^Xc_%-|; zi2xom+?%6^k|_LQ-l|;`69~W^bhzxpg9^oUCRRCrRoa z+Pua4U|;^zFWhP&U3$WVhqiK=xvTAO^KoAtPo~$3UqL+x>|y9iju*m6jD2loz<0rJ z@1E6v#i+3Rln)3?@I=$B(`$;4C2NUJ)fFf>A2K#;JDToRovjD`Sr^0SUN zpVMdN9pxyeeM`BB(I=9vHwr1hxFFjoK-bnOp$xaS4QUk|C#@DLYi}X5nryF;_@RT%7AZ|u z(F*SSRIhZ&?3WZm#;2Kosb=jLHa2Ts6dy@jhFeXr=QX8Q^M&*b3V`R>kRO`O&iy_> zry|Fezsd)db5X`lTPPQ&h-^0Jn?Jam4CO#F-uv?b;q4&EWR zfl1fn5$8Aj2wdZ2RF~&uz(V_6fwn%ssTji$I%|WX+_Gw0q2+2++C?CgX1I)d?Cz|l zBU!`gS{&Btc>c6x+H)BPie|Cfe0kCB3Gf~BFF(vAuxqnYZI%<7XA3F{4VmKG0;e_Y z-31SL1702m;EB)bulfzEo6qL`4zG^`w-wLc;rn#?rW>tVuF8LMp8c~v9u{c@YNf}| zMnG}e;tZkh3JIo0C%F`h`k|yMg7TybhH36lL$k#{GY6&ye?Z*t757JFFg;AGX5+Dd z0zTFVSm8bg>pggg2c2>iUKt$Svf7N!8wj3Zf%C6L~1c=6(wp-9wsn?Z1wmVYE!{0D%Sg+x0o&H$P9j3VgrB zQ;VZ>u2LfQx*8b-YVvl5C$&w|uu#PDDA41NaZ7xL@rK4idoIM936FufB(g_2@1o&9 zvK~CxXeB11eVuUI!_m)Wx%oVVK+-79kk(<20%kG9s4RPWz`$JU1>mpK_D7s(PEmIl zj8CWisZWR-Zt+{1F?!OQ3{nN7Id4*h9%6}~f9hPky_J)`*rmhgP2GLHCOq%bee7W%zn)@w0Y|`BN?^W`GYIK&xf463Mn;e2cEJ-hA_gp`7z!y2Gz_ zk}ZeNx2aqq2>C2dQqJp5g3q5@ye24&ofaLA1%g|q$Boa7tSD7hnoW$9azv<}M zTX{yTP9|qZAgYDO5IZw76BsFgiR@@4_{KR_g=QAwLU`-h(WBxbsAbAN9%LEI*6>JQ zsT8(eUiRd29;B5>etoufLv4U(ZD0F|RW{F!R@EtdoI<*Nyh#=bP_!bvz+t z+~P%rbwtfKqgzDXDj_rPY41`}$nVH7Aur#K3kIKOh`ek>IgL9#-`WER3GGAfqQ@g- zJesbRu@HPSXW!3VH>cD8OOqDArx~Ip(U@6|CQ>;E0;k=aBp4E!GfPN+p&ZYkd|+>G zv>zj2W9|&rZ}9LW&qz)A+!gZ{(Ht%#2X0=a-46p>RaFaP(`hbzpgsCzBOHLweuc7^(rriCG|_s zU7KL@-Mn!N5!Pf%AkM0&(=BcvcmyHATf&1j#jOytS+l0|kXPOOA5KCGwpS%axrx35 ze71FROMYdWR1p52OG$9p^%MnSjr*O&;fsh7+Q9wv{|tWX>QC0rJ_=t(ot+v}OK7dD zFn_+>GQyrI-SK&B?6U}zsDXGii}RYcjg}kc=d+CRVyp_kHQ%^O zSz zvCef7m2BqB1#Tj0^x6J)0AwA23y~u2-sGgc_`F)bZ|Ui&7NxZ-e!O<2Tt!7>&^}ny z?Wo6(19_@FN3bKzm2Y2$H6kBuy%2rpfr4 zm6_Y_a%opz%??epqzO*@@m}JD?+y!R4d{w(+;0Dd>|A|2sL6W7dxIC-G(PvEbJ(w= zhK(PWpgQ+zB{8dE=u zE&Nt3Z(ucWfq?f`%UkY9rS#^Ekg1(7$%KSYpz)N(N0u}y5~eRf$OZ$Tn(+1X`KP5 zY3kcmw17=T#S9@4gNfs{Ebm>f8EyFgc8PXe6_Z+(%R~Kp1lSW{qdC-nS4wn}wjRdyq#^@aY;tj+y*wd#+r1(BPZEt-+b&_Io*8f zm;(*K+^1KS8&nmMM6f?sP^I=aDAD|^oe<1|Ynjj6_WY+DFFw+> zN?|_|p}9bn-mVO{IMKzKz3iDV_}%_#_~k$t=%w%#V$9V58hAeMcY8g1eKCe{ywo(T za&zdEyHnXxbvM~m+s$;NfVI>q?F>Ksxb2QP+0&wu>*stLD~O7ZZ%jC}u!_0>BZx8f z*XY`67o~F^SW*?{kOB;?eq1f{Y#&Z=B4>@V=)eEoBb>$p{%=@4BTzuNidwbR7+Z*v z;V#2~>7MwZUo+OU;cHOz@cm+IW7)nUs~_##m)gy#SHd^J|+-M8IHK zfq69?3?Fo3ymEdRnD24-Di=`lvj}FEi*&&LCX`ut`ak^NdL~=CdU{!{ftefH96P|q zJ+O;kprgFF>9bhkUm3=*2Sn$1Ll|KnyX@*uv^_1!?V?Q&G01Cv+=~jmKkG&iY{WZ? zU%No#1DvAP?On^wcBM8+kZRG+l}4}qQX=EgA91xP6i+dyidQCcP)g?u-?xXFH4%{o&M-!5YgLyNwZupS;f zg?WJk=?L)R8-3r2Kn)?zck%~!$*SC6WY46c^v|Fw1KFU{St3NJpK~`1l}DBr%JKs( zOVdG|d4*r(FioeH4R}C39W}6_U}M-;u)k|)v~S<^WcKOCX?y770u9cbE7(NWfRE#f zRtj4AB@gYmzOI4S)!G->->KQ|znQ(s(Oxzu`y>P;>FMoqUL`6%U4@@RTIa+JTl~YC zoX%gJrZ!%0D?)GbyCL@;;Qo6bY0KD)Y?(jCA%83E{ipRP|02v={7b;hxMOs2|2QJ@F`c{-?~R%pHYA30sJ7mT=kt6@%Mx)*H=bwDG#*>o=ISMMp=wAqfd8FmX!d^xsb*$d<*gJI3u@ zd`zaJoLTWx;xhB0?RlS#K>$GthQ3G8(#^Q^`DGa^LBBA}?xRpSX1=g~2a$PU8`aAh zZ@#%-%D1PYQ3N+QzE*qUib}z)D>$T0K2YJrM+A#XAwtX`hxktz9fKI7N_;j5sWIGC z@v>atf33IDZ!3>4l6CVqL+GK)*=9PyE-Nltr&mPckfzt0*B5S_6~&rt`jD#A@>nnyk9Lt?ihqvTaTERUwNP&dLGSg>Qli<|T4=76TJ#L?@P` zSZ}L&U4tqrE_VGZ-A?6HU%+~JmbZPu3`Sg-VAqB}7}mxrjU(Nb?|!v5iA0oc2Tt*G za?*WUzd2pVw83drT;aG;R+0Nsx)uuG%lMpYBv%7Q$3}BQc=+xSd_iL}$7Km|$Cg0Y5rte?&@f00gk*+mC|I6>&Y z_Soi=VS+c-E`7V}>_$^aHa32=CS^H-O$6AkH(z9n0ugG8OeB0j z!abTqG^aXN^g6rki^;rQ*<%jK;L4|6W9D|?^NJ!-ZNhBvw0e++}ni8?U&43 z1vR8rSiK#Ta~jPXR;j?bs@X&$A|HPbs{Gws|6(j6IK*pA!AvRkjjf4LFWV=6d{pQ! zE_ahWLmh*n&l|^*;wTlM{`9mO=&DN=H0iDt(WRInR-mDkUO%&+y6y7R{?^t`OA-4tqT3Hf_-t6K-(6cgrVz8WJW4 ze$x(C6(;s@QKG8UZ@*(tlsNZ&|Kz025hUm~qYXFAjsn<~gqJHlccE8TD*kN#siro1 z8b==|y~~^g5eJqW4+*uH#IkmYUY31dR;aQ(JYVb0iFHpYY}QDx&GArv`O%A%)Q0bM zFNtq19aVvC3dbWRaqOzX5yvPRyoFD>y)$viCf-`2y+*jOk*;JB&IQ}VGzI@|*%Yd< z5;msZWQzt+4ypw~<-RV94tR#r|3o9@2Di#kW<&&BA3 zi@x&WrekOY((>f1nx7#!ga}F9oLtkVCiw9ENGoSQs{oFkvHQAdtw_G*H_rn|BQ@ zqwp8eh&qpSoAOD0|Fp|=TTvmj4e{-l2X$y&Ez_AFj7E;Ntd4VhLo~ou@NHSKYHX~zuQPsJ^XT_!^ z=4Rs_Ejcz8WzFpJ-%`+nj;GQx4=hYEBO$aQRaCkH{Fq@M*jLe@}jjm~xxu~`^ z()lmKW&f>B=tbO+L?4fZeK0KT zWQQxu!uHQ~4>x-dwc*{7Qz!@EqSMa(M_*&`U9xk$CE?6Jo>Sfrb{uNt^a+gaC37z7k21z<0D<;UpQYc&B=ea07paLu5=TvDS5`}4=SB{|M4ay1bphZYh&~0 zd3ed<0gilp&l>sr_eV*Aan}HhZ(roe78_N@b$H49Hdia*bq7DqW}>&T5ezZu!c94uEYZ(`-H86Q={Zz9mYHYJOBtd&kiv?c|5s z44N@(AO#eshhx3VdwkvM?w!Ip5C}xJV$(o)doH&W{r8(*a;vd@pfn!4CMv^KcR9G5 zj`X+v4hAbaZitf%v6$3-*BgI*7X!iSwxYk84VX7ImA3aql{jV}kw{Ri?JF1g6ULx5 zEPMv8?hX4$Z+%JhsL1fSkCXc@U3VO{!VUvbsE|d;^P;Ixy@Ucn?3gCYDx*ZR)~$Hd zzGK_A+#MX=U_Jw|gT2YS@dBOx?H*-_Ko^-2(A6h96|uOv+x@AeaLdl|?}~Az^<6l( zEjM8ot_ZrrLX{Q9kIyoT-+=Rg%PyuS29!0{`+q2eNztRtCcPpx`xKzn-kNvg;{qlN zRyfRA{;jMJ*rVT3VdAZO2zE()^b)Rn@0rw1 z!HVR(EKsF;M8D+4CZ1eGMXU1i5tsY3WVIUg`jofHvPHA5E_Ejb`+Bg)ljy`K@nH)e z{$Y`v53mfXE~v5WsWMkupvJs$1|zD?)pg~8Q#{9|eb|$nM7AZ8XA|b2cU5G-odDOP zw3H498L;7z<2_GYH7>I|yPJlW4!BtP+dV#AzI}-LS2|L7!F{N+a5XY$CFfk@tgTPd z`qb!^BdlcMYc&r}_tW>yc2Vy7@Nf!F=L7p%x+xJ7?%4#9eyjDTm&Us+;zhYVLc){D zAp#0)6WaLO+RAF{{~TOIb$`Gc%w>_y&jl(ron6HO2-3|Or@ElGIB)0->#|+>Q7FJy zHUu84JN+lIQ220pMXlM7mN%CE{@SQu$WXUCMbymOavBUIEL=VMTDp<_mwa_8?}mg9 z`PWwNNJRr>b!IVv@^9}Zz{OJn;?{IP9br%9@QNBxkk|4I93>?5ww zuZ8x>ZcBJ|rP^D_myxnQ2JRNjV5X!LIfp^MWRQoWZHSmeO0*@~x8T>8P|)h?7k=0% zR*hT4TXhz-B?v-^0=z%v=pu)?)#(NOz&+Bdtx6~g0x?dBKlvJm!S3#$Fne%)NajiA zlmqqz$IlVF53Efl7GObwMk~VrA+P8w{^6YuZ-L7NpwyHwf7y+PfQ9v19~MI+))(!H zEyeGIk~OC?IeS~kYP(yI`jCeQQwr9K(60*-C_6~U^{!oCKazf(`*@x}Jc0j^lawx* z(pbyY6IU~t=Pr2_g+q}_P6@}`0oCbz!AKlaYj^GBcpjo8{d*lX? zV!)%+iP{5VsXbE^fsV&1c4--jix#vH&)Sl(u}<(Mn#OGxLrR)n@(A3I3Jd>pLZrex zqx)^S8MQWV+Q1`s+Uw=(B_5ceqZ&u6W66c0X7d%9<`}j8ShPmUlca1488Kf@Yu&gfEd?`x@S;B%iKhhb9sZ2_a? z-5mxE6$$Zb=$z_NZMipLe{}fyY;yXhk{z@eb?V44&YW-iTFcm|STJ{L7E;_H%xVAw zuLn{O{)^n)eX*7tXs<4RMZK;GpCivnaIqwyJ=h-reYX3}rhNu$sAduSc2~7wP zh}WzL!nomeaUkXh#>`?lH9D@)D@rqexhZwf5|xjlG{gPSy5cok&R3CkZ$ z|5^m4Ihl?RJ12NuKkynFYR`z5mt?#zDHF05`^bth>HwkotEcv1c`xh^;xFg-Muy)^ z$=KMKOjQDLCJ5A)20!i5gSIT&V;-iw&QM?cEL~UPh2FUo-etN-5up?d2fO+Jy!nRc?4U3(&DF> zh+O~CHj2`<_?hm*;rWQChxyOfGE4a%fkjs^QA+HL$oaUA?Q1XL*|d-#A)uHjdmn== zDT@46#*0`M`$B8W-;tdQm_+~6W$*stbw~J%w+7ZhM4EMF-M;nusl$AGaq;=PTk$-3 z_4A(?Y9IV?4s79zaz74K(HF~VZ916z2aW*^FP7lP&A&cNz&}CG*^`+`b)vr-z2+u2 zChC`!%^C`h&0XCU>V&NEXi)N*Vg$j`&r%EoGMIdshfm>OQ>feJro0Z?HD7BJn9i9qg*NQS(J{o zZlu&47(hyaYAV*=d@SWFXr(L226NEScaG_$e2T6RU%3qgP`UTTPuDK%Aa6n1 zmk2LLX_NuuFWVM5jK?nBB4n%@{(QFyK1cMeo-zhU&(Pl$y(_3r+w2eRnOmbm<2WvK z+vs&HoB%+gehE2VM@$UB`OPQo2R5>1$1<5MH@x)dW@*kszL2Q<#o%wex3B>XqsKK0 z_~|U%?vCp3L$mxzy{-x9d=6K6c3%yVZHSr`e|1KK6P+B77pY6a!k-si9{}MmCSuQ{ z(x8p`N9dFiH1A{Y$rN~@UAIjV2|Dw03kd~^XlVF-{0lh}Ns3ZXkI+sX-SR0wN!#3^ zKt;My{1qy6Zaw}-qfdmnp!rN)H++FlJvqLK{$0k&4;QM-RhC1W=rH-`q%tIquNQ&M zS4-}Gw)Q;;D)e}4`>AP-C3(1)he(0reV%*AIt%P`Pi-3;%P)JC&un(L9PU%wN{00t z28+%|Rg-ws{ktfh<>HKQ&YEi_8Pu~Vy28BG6wmT{VcED72}kDVmVz?59j_%XA7#sq z?_=L<8D*!QBp)d$uw$z%0TgO0EN3sA z`_7iiL45Bzb>L;RTcooFxdXbX$x(A9r+L}l8c9=VM#s~I31rZxmheuGCc=Ff?sInb z)92u`z10HneN^Ybf`=2PEkzC;Th6l*yFA)O+vXQNkQ}u!^$3SL9(Dqc5558kUG*{h zP)kmV3 z6mJ>n=V{v_@MoIOC3J&cJZCXF)#Bkeb@s-L^(Mb3^3TmQs{q4!?|!Wqj635nmSB>9 zzX%ukV~}u9J311_HntiXaY?GoZj%E=9|a-;3~uro(%sitf)r%Q+Sefy7HVcC}ATW61~fZVd9f@be6bS3=7zv&al z=Q9&n1GKDP3;_Q%z~WY6IH_B}0Bvo%se!j{?}KTmGc-&-~p z3*l_x>|>hBX@`zbnWnC6)B~R0^~t0ef^cJB0OLOel95(Ec87fdij?iAB8FtmYDA$V z9A#`A9L7f<@B{Qbwl`#BlmKoab{DKeWHT4*nI|7C5ymzI z6WB=16O+oQkdI`|cmB3PX1map7h z=ihI)b~k>qzuQlpP)v)I85jCh%%8Ozx8l45BeI(s?@{25+r0jG=+ zx285Gn>S@9?o;K?zJc)PsjKDS>*k*_Il?`rg`HSSM7I9zP$D_{F}c|{kDkH7U^I>$ zZVrUdbHcL^x=4b6Cl)!SLSIV~wJvqWf8<17c*hMUoU-IQ&ELRrEdglXN8}`zj|}|g znEM&Xc`~pqA|>e!4fSexgRv^W&Whe@yKVlJyLDI`poDO4Zy^L4frfPWSkKfQ%jgvb z35lYhOck*I38>GtJ>hxF#pU7hW@lK01F&XeaGD&HRFQ$XW<5cw3*8?YU;HE8@2otdV2TRWkQR!U+%5Hh7p?vcZ-sov>nrdhI+uQ$oh;NR${J`eGc%oCDq_$#bc z?GUGbY!pUWH1L{}9I07U>J=p6Lle%*(d)gRd|EjLd}k&Xc|mxLSfm;OT@LgqH^!J2 zl!eBsyNF9rGs>fvjjPurE&jH^PYVrZJ_Ldc5STTC7tIM>J?5GSGS$pZT$mwABQnoT z!wS3qhPbnSM|H45Ub20 zd>9B#VL${Aqqf_?nxm zbdxtpd;PjgqrJ8hA9Y1$jl!h=sI~0*FoPvy7Hn@=4=Knw3}od615Zy^n^87D#zs(B z$p(M=M*K;@E`14*dJI+}Odte5i*FTJI*%?Vv{F!a;xIyz1)4+q)2B z#W-gIv7f)(blWi&y_XJc+dEj@nQ|bhQ!8Xwu$UF-5hjrU7TB3+G3VDNI|Ou;nBa@jttVJ8zgB8~LdXBH2{jqGkt>xSFWECw;Cq>&~k%>pA(t2~2 zNq%dJ&kh0718jvBt8)SWazd^Yig_N~>1Ragu58hMXG3WZQ} zU%AoPqZ=P>cF2z`;Eih_v`#nh_>@d&tA6sS1l1L^43|%D_=M>gX#G$~&Uj9&Us~IE zgm6&r;rK6>y@wVNxqZ9e75Nr)B8hxx4n|19pY6-}v22@nGu?(7N*h+3bYz$o#u@uK zl&WYZGe2ffQ}HxXUl}X<1?t=7tX++42AUOxOWOpg_2~peMbqytXiEC2qqE*a)MUGb zsRy33Ce&YFlAlhf`m+mf(_4*Cq^cvi;geiw4!6XYOOoUx1D*!1;euP32H*)~^@vZs zc1+2^7m=H9-xYl^=uroUEhlHd=Gwo4!9C4wU8T?O6BvaFE^ehx`TLS}PU&iVYb$&)&?WV$^6e;mQ_F6^1QwOiXW+`gs63cYLzQ{oTso! zb(a{j(s@XEbBzzDl+XE~qbr2aW%L%V(np9Ga+*1Me&X_K; z={UM$;wZK$J%fQSC^Q0!Zo;vAL>RE_x&85iapH`>IN^!ob;thdG^f{k{UW)Zh&80; zhS{r`Y?48^h!QMO`Mg@FHzgKBxK`mxDQ}I^b9ocA|b#w zoT+L2gGp60vZZmhzTIvY5fSt>WgmKlxpcaCr0Cw!z-AvDAdF^A7q+Kq@0fDT@F&cg z@vJv>OvqG>^39>`e)PjbU~q{pHstL)a)$HJeN0{IwT2{v#i5vsAJ{lP3ud7=yZDzo z$+*iTY_oZ@&h=sph#I%%YEO7&ck))SYRUK8qPrpd-}SIa_PbUBn-txZR7@EI59zC+ zDv5|nw1bIM(F;B-Kn>!D2FEowCkF1Y@?XzMFS^dZ51Nej6VjN2c3Xx$Ygdg{GbjQV z{w`0R`M2`6_NEF^cY<#{Zv{C&Z0NAGm zVq;prHrjES5KwA=)qwXrX2`eR;ha3l@Gh#m1CCr^hrh0ob@IX2P?^Qh9~W*h3F+np zSlY6X)MVTVrMg;LLthnJ{cQG3C?c<#6sF>sfErWZe(J`M%2QjBjXf&qBTSA%+9thd zkb9g(?@c6BCR+9VWzenhb1;C`=o}#ND8Nwbhl(`7yf0z!?W8F3EO>8_Y(|u#py0l_ zE}i+gdty>HEyoNm@HM06>S@ZGix-@(w;$2EX6*JnA7r1R;(R3Nnbe-D_ZRK(-8%r= z#ote^ch;$CX0e~u1x{>v=zMP4+_0$g4neyPkNn3hwWQJ<#d`;DPLsw5YnRHJ?|wg6 zJxIsyb3@qK6QoBb#Xl$i$VY#$!Gaih>(`6%)4BKgD{h2@8`d)})LjIj4LSHgmE-~R zpG#tR?sjUsC7#uAQ&-f+@6b>R#tE$rd<;v;sFE3Bi)9y= z&(j9^4<*6bjLPMI8!3pcuMqVJpYFF^-J1X94kD&(9QaUs3KU4l`$)l3K4>eL8 z0khonVK;WD@2Nkya24EI0}F6~onrSC!+JKthz*gQ&oK+=p)$+N*>sq=dWYF37kF7h zO6Wdon&9(HHdv9s409X&MDg7u$wQr)0rfCBMe0IJK+kmfSjxw++oG6DkBPPW-G{_+ z1&+{O%|%6_6i;k??hpSZ>f2O-k<0u&eqet=L4*0pf<|{L-e&waqrkpo_WvpL+vAI3*|6}<>BGsz3|Bi z$ElgIqoe+Q>#knMAMXpyyf`O>LE)#NNIucJSJrduXBxQ$J@h9L0aHt=Ehu6~m2 ze96_GVm;}A8HXdMg6s7Fg^h%!6I-43bI)%YeJVUuA*=*9R@1KsRsdTnMA2#18_=Y4 zQf~Zn@Fie-%$r82I_h(440Xq2k!V4bbLQ*-mx$*m{QjF41vA+4#z5cTjCiZhr;XOV zFIZFTX^5@scDsP5!aqtK!ylgC{*r1+@uT1Zt#NUAs8L?D3d1lp6%lvn%3Q@2)`_Q} zG?Gex?>WMJVCh32R_tv2e$lm|fN@+we)4p%g=rMp_QSZwcwR(Wqm%+X>upfjY@OS4qv+jSYDy79Wz++d&~=abJEtq&t!bpJi{>9?1;3h;&8- zPV{E4UnR8urhZ`m@}@H1u1W=Fgi9`bc0 zDrw|6j1u9*>*-mucL;pFxU9iH9g74SGW*uYn0-Es59~&dd|yCk()SBAQFmk41P}NA z^#Efkv$PuiiZa2L(lUQ;@ZTaL4TEC-4^%Enk}U_x+Rcm+(WMIy3x4<^hX1#mO6rL4&k0=FeuaSut+V)em8?^GyP7?Wbrzk$NpBXWiMS^Wk6S(RBYBmRhFW=FX{wk zyZhn&Kl?wMI5_9nsdj^c9Hpc6=(TgUEAP-a!V*l05aF0Ixn7kL>4zIY!GC2bfs#D@i^+jP)GKzkebbz@Il%KnYwM1O{>~3q3@r4l-Q_AAs|Jx}f5c_8 zlRaaNQ_#jz@3}}h$~f!))T57*BGN^*kKMN!NT=H`(FL^)`M5Gf(chK6e&hRd$w(UG z0n5NBuU8_ptB(@J?5qDEPBS@P9YA9#{XXO^XI|K3Kx;whd`p~$-f4ODqgJk=)-c>o zQS4zsHt@Xk*lWwlRKDN0ud}LXtv^eXvI2L@WoTmqm+YQI0r8LmUVZPkMUr>co)nSG z20*I+)i5jL1Q_zb3*ow{_0P0O&xI)#H$lCrFb$JuDKZo` z%|0h$oA2||5?0i$>uh1ZWCQ+%wI>`Zm9M83y7tXx_^6U@ktp~V*#GJz|JE6^<4Bj1 z@u%ETq6k9+%x;V4-tBm;3Tf_>svA0Zy^#BF&7@k}YO^Q&wy(SQWvI3nwvor zrg=>53sZSi$C`g*5Zl1jCy z>aHxU?xr;7+Vb4X)AH8Gv-0*Q^YYwFBC`wH{S%@Kd>b-7;b2|bf0UKrmdlubarC}E zEP+w?^qPX;5Jf!wa~(1O?mU%ZjV>gYr3;--$CfT&(PewF3l}aF`{))Za0-m{%*Pif zA`~36TRX`RNgp`yqnnIEd!x7-RX^ zizB4tvBW{?9$&_M^oWwMuOaCm$@XMxS47_VU`c-OpFSrqzOgJz7b{Y4w(Mn=abfYh@-iFQy z(u;esk8XhiXN!~f-bVmtitav&ldM-|dbBJ_MnD1)$2kZz8LA-(^} zhK+?P3@i*XHqPkpsTr|PgZ}V$F6-cUQ(k&~US=2Btzlj2jjod4n%;!Mj!j}$_UHkHxYaZ3DD)w=RGHY|uZK}z1 zwpy)Bsmy5i~?aX$XYj3@@T$m)p-PYkL$fm*#J^2R$&`S1tV<;7PQWNxvo zBkDux_BZUSYkBJn7wT<(0W~stFNP$d4U2?G13XSA?p*SM{(EwmW%cyo3ICb zxlp&$GowO$K&GRU&UR-*)%&_mSW9y2rD=KpldJOHM=Nserjy)U9S`Z*^G6WdPN!p* z+ra4dV#PkX1qz%Eo}5uwl_cDvRx8`OtDbE$#p5gATXjG(^oNmK91oHJge4?Hu9V}* zO0ev;B~{KQcJ31XP*$PHJWWA>G7=QwM%X4JeoP27j*+fN_fbR($Oe%(A}2wlC*;Wm zOYvgVpdAHKWoxo>O^-@?r{_hUe@*0*-+fL#_~fQsxzUv73}0U3MU|{x)gx;J8E^rX zULTxepk{OWs7q}pd|O}Tz!MJBck~nbQRtCOKbem5zT~=*zC>TcKYrbRzf@Cc z=;U-t$~rsk^^`RB?@M!jLoVO!%Ioh=%g6uZlDzZbtSqnT4fJ;nw#xf%j|p9b@IqkY zMKs0>mM(nv-FJ3g?4w(tz}ex68-cOx`VyvWomRjUV_?5*g`d>#K^Pa#KmogQ?y4_{ zcuzX*UFq>%${}QmJHKyK#v#ZN$72ws;Ksp^M~_EBq-npjJ&7PM)Js}7@d9E;1(Ld} zgJ?_mQt0LDA|L&5QU36szbWs1bVDv)X-KuPZTs@J+MC(Fo1m=s(gw5ovGx$8mpGrM zGAvNw6d2Oa3JelvlmPUfl-H$xxmK2HMTxEwW3!HSw{(KKB}=P)dF}0a`SBlImv=u} zk>_5l*xtF2+tXenu=t z6>7Mvl$DGsH5nXp$<(PT-hpJ++gwVjJC$53Sz=!X6Mn0B`0TICH`sUWF_mE~!OUYD z5wvq6SYti{9X1z4UV2mHy-$|p&3D)2#aEVO?NUvub=DTTg{t4vdg)PL%8+eRqNS!4 z;cbjb5LPO67`v{wK!IlnwrfsI+*S7U3G`e=`=}CH6V5|Rm!#drlG{~PxTA!&D_3vT z#<<+-mWc8ZfF}0)pm;R}Gj83jmu=L?^0fd*e|E$Yp=|a4W2FWef=oTn& zws>+FjS@ce7cVN5ZF?B>nOo-^qht+*mnqbgaEv1!c^H`@4#hmQ?<4Msj22xN#i}&8 ztM`!%jJf@)s_B|3>^$sT0_pkw@DxV=M)EoIdq0G~R6rcZVZSs#dC)0~mLYZTYi-#* z1F`vv<&FAQKiak$Q|?5wxNt?}gC8x(2R~#j?~<%sEJ<^kx4zp_u5_&pmRb0lZJCs} z6@vzzuRlDfoC_3qieWmFNns`d)5Tf8$aN~34$1nE5m)+JTN=|lva~Al{L6E;w*HeJ zUzX=znw8pgM|(B9rm&=qxI))!uePnl9(~_KPq0*BeSO_XZdi07w+jmkc0`Ibx&;cH z4Nlatw6pf7g{S*kvCX(BJk*N&Ur}`H&u4gJ}vEK&-L*WquVEB|*0J zjeTuPVb(m2rn0L+Iq{iZ?8$qdT$K-hq@;(S$Tm?T1T(I*4^qTgde{R1r1|mV0E7Gu z5NQXc{AD{RANRXoatQ{L2K;h99R8CH^6S=E(aDEf&-IYPvLAJkm2b2M_1oGI+0gd) z*{3`5^MCwSe*5bOvhhH}=}hab&3p}Suh&xV9jRz}dwc0=+o|f@hms!j3F?OS7j3XW zfu|SrrCO#}v~QU%;^=xA>8bvK?8RQR>`1`4(do3L+uu?`+m`2^Uy@hfxFlC^)Ma7W zcT(Zy(y=hT8vPm2m(NzGML$mUFmC+rbUO0wx8K?xx`5>hnk^%Pa>O*#NFko!mlT0Ure*t+;nPgrR;^H-^Q}wwmerCpqy&c;HWp2JHYgcCF#;rNIbhRnho@>~4V*XJx z4NLFssqT)aeYt8I>ccoD{r(KFUmvFLGgh)b7ppG2FR*tmFQGx`A-!vBYmw>#1qz%I zPSnY?fk*|NUa@KY2?zYVx;@ea93Hjw~X!vnLiDFiz zs)`ybUb(~!>gKR6vIFjAS+FS}=om#sh5AQ*Gx8&D9{a!x*&ARMvP09KLZBM&ZCB1bk zL(0r{4(UO9o!|y+(qZk9_BMR2K!K+Xw0GB|XeD3%gHB?7E}f1((CuPOXiL4R<42<_ zjp>eDy|ygRzqBeZzS^|iQn2QFA9WpP3Nr26f!t5x?+nRqigf&AeJ&&yt1fxRnu{fu zF%!~@zv5-I0tL<;%_| zhx%6{%sqauGoT=gO6BdZt;a=SSDa|GF1J$cNv+wEskyQ$vxYQhs!DpxMtaTqTkA`$ zuB5nDQsP_52ys;!&9ahUKTc0K>>i!)8#%VebR-3x?nxO&_M3D=ln2E=tmykZlGpn! z3~p{l_%QI*MC7e+Aa3Mb)vhw)3$W;0SK-`Vk+gD zr85+wSwl@RYr1(<#({jWGy>w-tGIu@{G;H-w2~@gdr_j~dnT6ICau;{a$A*|nOQ5J zYPF(D8{!M$MX>VrWoEWvzl|hM@pwz6S<$1CXeGR*dRzTv)kZ86DK< zXmRg57&suy@jI=m(^lJK1M-iMAIlSiU|J}&-E1%nes zzW(i|-2J{KcfQ+^_O8|y-|J_xrFTXjpxrQ7N52TGSAhagC6w%z`fe29QHNP{Rfn4H zRab~^yR#)LYg4kgR+H6>b-DS%qC9tNN*0#%cAkzX5iVQ*$(}&veH5L`E;;mF27#;( z2Qoi--##PIe~}>Hj4$!A2n<5;p@`T+w;;L&3Y;%a)ZxDU_S-%km?aDh+VOH)iWta8 z&rb{`nVnWe9(*tIr~m0Y`TIY=uR3hr9)v-5t5pbtYR&GfW=a)esiS1JWox8bN_02Y zx22<`q?3KYCX^FPA9CwJRve@?#P?A}+1g)KncSy-dYD{Mv?y^s>$(!|ms=Xgu9DCx zji)80a!2|~yl1B8mH1$_tt*+W8?m*Q#%xbk-X_*??5%yYxGHBIAV?MjnRUSnD>bQ2 ziIQR-fngzN$n=cLbW=%jNfvcbz&`^Aa}JL2o1*U$q#k*!jyvZTle%++Fz4_rTRstx z7txc7EFXix4+%%01r-Bg>YSBRKx<#igbB~!QLI`0HMsSABHw)8m!JRRH%ff($mY5Z zdabG+J5nt--LKvg^i{D*()%{LP#!S4r3$B7sxY)50);lYyl~j zEfgql{y280``JQv2ioa7X^; zkMF3CTeLk*!?Md8zkMaU-A-8v?zZggZprr6t}398?Cxj?aFi^K5DX(L*?FWFSeoqx z2lsDcx{}9m?yqdyOi_ToI|CMF*7;Vd{z=Gcr764Z9VMH-2QRP}5}GwzsxUp%)Uxxh z!Lh`F^fMH=UsukyMwqm*6ND0D_7{fKv;7)d>Qt0Ov-TG&F>91@pC_3f75r zRf+ZNqD}!CJtfI3pAhxKeU>aTVWiidF7os2$Aw1-Z%f073=c9sXbpjm-=z(qoD>kv zLC0;YKblQntMB`7MZW%`C0~89A)o*1j(q*)hLn2?Hd$kkkG2=!JZ*mk3OrrV_TKY# zxjn4Bs_!b*jx?wHvb0v0rPYeO_Qq9NUaQLDny7BHTeM?jl7aUc`Y3UQ>&A439@wvc z5Bls`f$G^oe+*!Os>Fqqqn^&@}K_wJ^8Euq>Q4ypgw*5mJx=YreSwRws%P5L)qMN zrNf%sT6J3ed1z)W)pP|3q*RprHZ;tJ65XjrQ^{^e>a$9~Yh5L|PJo+Ax>+UxQRW4^ znb|2lI(a62ERRrb?n@-F4o8)wEr#=BwV)J~qnBk~=M*u>!;I@75^z$aVR1eh-tg~8 zN`Nirv{v-Y2UuR*qv&}F+{?!6svMRlt^TDFtJ*5 zT*;ptczvfx)03W)c9pCh8f+#O5*YC}`gpfMffFIx5y!NRA?lX5#bNLSjR|?F+Eu-z z`esgK?NURYyR~HNbFW?Vb-CX6=~#mvh!LTL5>oi43t5{sV5rD$%da7EKaS(mG)XYd zKy<(V{(H0RvSfj=k#P~|7-^|1P@ur0!Ld4^c4pg!ftf4oby8@x=9-Ttnnqs$H(SjzF_7qf7(wqhVB$RrRYa~yCF*#Ew~ZnchVj;E(P+rEp) zKm6^ceE#cu^7(IX%g&Z&u0Lg#-d;!BWVXBkFnNIh+wvMC2w233UHxf$;7Ng%i+#mS z-FsT^-Lh?a=8teSVy$0a9>dZY_vht1sq!oEtf6n)J8JtX>7-lRB*HQ*UeIN!7KQ_^ zceFkCy1Y21?T!1i|C>&$F!66mbGj?57n;7q!Yj*i;gU#wN`s|oX1XCio*2fln4zjBR_d!cZL|L}hYqGne%D1$m3e<^~Ej`HgVGM;f5OcP3$3Te<+(?c;KFg64 zS|_=o7_)=H+%pnPNMWT7A$*o4@B-V?@|=>&swzm<=xQL4Q%gS~^^_PAAU}v#B_%G9 z8}(yCUQ^gTq$QSac-%cBp}y>*Qc-eN!5WQKmn9NBBIH`OY(mGlN`svwAiibWMPh2E zDsu~U+Xu6uzvmb9-iAeGX(cSLJFN>P;H47#Y+_BPT=jaHcEEaP(o22o&5?BO%kFhY zeq{N6OcC`t3hKPQTb9hjf zVl>Ur0bp-;Iv3EFM?rrKy&a^t)9K{P`5?NnLKdPGpk7cZj^;4q@{_JJ&asLP)SHQ^xTB{3l!T$B^Ci8QYF*YrP{6 z?rz(5PpzGb5sXT`V_ zw<$x;BMyF(R^pzWo06HChLXo=v$Q%{gzyp|geL-yG8-i>9!^enGm;zr+!7OR{Prak z1|v>dzFAz5DZieT2^PhguMw`ZON4EkR+s6yhNhd{Bg!%}TbJ3zhODfKENPQ4!;VJB z*N^P$bM|;&NnA#FA=i3Ug_rX*ZD!rop8-p1mL~)G7|rwJ1L`rg{G|14`9d@++Z#%F zzh#f!UHRtA4Y~d0mfXA3lC6h&Q3kZ#w!StJpTZNPUO<&2n&Y;bXY47I@`Z#?W!RQm8{bkt#)?1b=#MWXE z-NKq%pupn;RL+sW5(YXu9h;6$XJ+|A?5%qw*kGKE`liiPf#r&gKL`Ukzcbi126`wF zWJ%=Pue$Q}XWO#9S&{WSUAg-`+dMJTRt2o261`cev9UK+GspptfC)!~%am1+U6ia_ z$^5s8lDnbbiKJop?{EucJnT21E=GWY1jTiZ3?e(*+tPy+tMI#0Wnl5I4t2Y#WOH2~ z;ZjIZcnOioqm7e@M+uacjger8ujZe}j(kjl_*f?47DczrluHdIschqh)O8}kRzX!Q z=ZY;Cd2p{ScfQ@$y4a8}Kff>Ee*IAHez&35Aj@o+u90f;DE~4Gi4BxBdFLDgtnPZQ zDbe5RnM`_evt#@qpGR)0j|^#@Q*XfBl02~nnh%Uzyi}FdwP}0Q$waT!+0uLXunCWa zwTw$J%qxjrqgzPToEzPBc?ygsdDx2h9ly_;r0*JC@!9fxfZ<*A=6a7ahe%^;rDQU@v3oJ-i6k?J9$6SLEk^FY;&q+jsJd zzkeWizS=QsZYe(UfbjUgnmy_@OR*9w4PP$}{NyrFWI+_{+>XPE2?CQMmNA&V&wl&S z4muF{(uIl=InMQe?mxm~kU(j&bb#F&=H{kkeql}(r+**bK7Cx~k-w*J7z{r9xeoxT zkGPR^ooK+WQPxo&8L;xQw8GpqT=Ga*-7N16T72GfX1-!;^5z!%a_hwvdGX~1v-B!w zmXcNj791zj4#Mz>MLM8m1rCOQR8@%MS^=R2C$>?{qeQ3$ln25v^6UvUd*9+Pw%00?c zOOVCxW7|oA0*8Y(#?m#`<5p~v?0TsyEMw62+TFH~;Vdps$>po_a{aj_xo~+(mREIh zr^MGRxu%k0X%a`E`b5R_blOMqzMm=9&ar8Z6gZFEwxH8%ezjbG!ES038ZmYJl#&XJpFzQ zYeQh5g`LCJh?w6pSlVCpx6h^X7gc-7#57(-Y-%67 z-IH%Ve<-)V-jREEI&%MROV%HBq_ta;_BNJWpP(?XazAy#ku}#4-y8+mEihrwzG!iz30XhpH$?x=ojbPU0=gP&E&{=g7txCKxdjS5zDViE zzF^BSI(W=#>EP_E8%r3*4({WSDLU6`{6Kk)xfdsM<}nw9K=0@(sZwHg_bZXV_>+6` zlfV309^PXmC}~h1`8}MYRI^9sMr0wcP86KrnwNwe^E2^Dn}-|e1=-Quk?h9D7^8z^3Y!CE&XhG)UEkV{ zfnUp}UY3RBl3cmol;@tGm8F$=snp7{+ul^NyCG9kOe%bxHD$=wc94WVU-Hv-;&IZd z^qdKe9Vs&}H+yVsF%>9qOlUu6o5Qm0?@e3nN~OLd({nvpyIhmY*QVsX51*4)UZ0nn zuPEuepzV{@IW#@n5d_`g>(PD4@ux$!bc#nldbX!&T3<=@o!ysppfiB$W)I(Wzn^2x zcG#sN4{WY1OdhBN(?cQn_F~;ExB=;yBW!J1fjut#yLMDUOQ&)@ta8kM@WdjpyvJ| zDSpl4AP>an_pp^u&lKs>@`5Zb%}CQWTK63*OpLrFuy6+CW*C$M_fZxe2NEwsL6JzC z4@MyJkdy&?WG3YTRR*4Z!qD>9N+K4@oezC}rzQ4ULJKGT1X$^yy`e@hD_Sv%}%1h&c?An@Lbtx>n1x^ap+2vYC+MNyI z)8@;oGjiqHlFEWyx-w;7Z=BZ2Y$HAfp`bOEDq)#r36=MCx<*WR4eDn7KkX2}e$!sL zA2>-qD|jCqB!b^8*JEui)?D;6Bp02GVDMqw!=hWP&n-~k@yC%mX>2+6?YG}rhi7ly zSi*o3I3C&MPY_;yIN8k=o)XKQ-A!pWe2W|9L{cl)N*zzT_TB=g?mv|rn`kS?`W`%?RJ1M{)=RqzZ#;)w}rbI%ogMspMGK`;r z__bID5SCf^4aWf)&hAqJ>wf*ZS>*H>{xe==fFwEj?3?vqX0|5FYcuv)P1Ykr-q{k2 zeDgT5T4mcR(#&80!N~@NoTQWgAUg*P7+Idi`Ee^D$ilR+y_^6gPd*G8af9TU)wsGX z*I#JL+wWhN=U%8tbAhWo2Gug?De=>2BWhc&Vo2jd9)GgCKd|1iOasIc5dURGMc%Xg zQ@6AkBgT5It+;Q44{eR_`u&pJzuT3a4fg7->FqpTCJ=9{+WIUk zz=VdqmkT_*h~Bgx(1+-F$QwWhh5oBH`!cuGvnLPpixr)`PRoT$Q?hn(Mi#Qq`i_OQ zYi)O-JEE;0702;=LWItWyz-lK^e@X6;v*4Qav`}KA-V<0El}XeLYVUQ1y)@;J{_K! zE}flS80h#msKREBgIqm?=JWf}HU2oeBju_pT83+^QavR($`gL}w<3S?AAc>s{MkL( z-L7lGXQWcr0bX?}TQiyURuwDBAuL}SfE5>|t>@-GAhIZThym&F$Mbp}vK;aGB#vgOy=trf3`e#6r4SJsQLk$l_Ymc{C--y`9}2ayNC@+1b_X^5rBQ zB$hQC3j>NA<*2Zr?SlU{kQOBIcL-v@O5s*?!f}jVKU+k+#F^DY7QG!JDR!g{W<*1U zX3B01^NTgPa%D!Y-&mHl3oFu`W^ZJk255h&um`gC0Z29NLd(9aWzBkbCP&pOQwY)! z5fymWaFm*-f4E-sbHMNExr)5}#+tnP#szu(?FD)9)oEG1QkUke>VS&x$bfNSD3bhq zB<4{+<76E6b3Y>X>-(Ii`l8eEy>rv`xwEsgMsQiS$GBGz-2w%kJRI6#@7}%Jhvf41 zDKr1&l=%IoA-!&7%Yk`PJ{;uwmK7kq$`U3GJk zOG*dU4g94F6Vk$OEVAaFS#sGT%Kc@(yK&v!v1Hm&iLPJsm(zF@jdhkX@aqu{>FUYc zB1;-(RA%jWr@LkA=coe|w39}a*k9GiD9DcCZvNt$V$@%b@Rya1raN~VcaLp{mF3mk z@t2(|A!E0O`4y43KVFgdKVFmOygJ)nyBa3Nqi2S!fehM77Sm@|$1Xk?(Ks$b&n(+Mf8LTGiTB zv@QC>pbZR=w(kN@F9xk^Jfi;5Cvi^Of!M8HuFLQJS8H zEK|_qk-J#*>l7BSpN=-iBZqr1B5!H`BA<*IEYpMFLUviMhhNAoUqhoD81r=On@~y$ z6ew_>IFzmatAF*c{%>@Ah%TLfX=%x3x+sfK7(SpLO$Q_@COZOmbt5rf+#*aRwfb-K zfykfy`v>+y+Si}$NTa6OwqH|%2g$8Tuj7geBccmS8nA5fLPS_}HCQEHv9~T{)`>c# zf_wC6{<7csG4rq2lzO@w|IA$-4Fs-G((2gfh?2F(d7;JCUE>*8dQ&TJ#NlKd>2`f` z&}h_++(S6^s^zJxW#H>=2|o)@!}c;paMOD%e&Xdff}iZ1L!A4MTBhplM9nb2jN5R^|unOUbn3TU5Wertjx}{m$3TDg2*Mq;513&0icZbd&?al9i>#NX}j%~@P;r- zH`2hpM*Q-DU5Q}!SUCTkosY^WOqm<;4L^ELToxbhE*?kfZy-Sq^WP)q0n2|DSBmi4 zZue#V;f}1YZ)rVf>9Jp}=F`{e9s`!%5eyO73`S5hv7cJ^i25Cfx`$w~)?k8I`SxU3 z5;dJFSQh);rriFzCBOc~ec61dm((wVjc+fv50W$-gtXi!%hWvoB)ii()`o@Ouhmqxyzg#qjg5gY z!`@;%7Dz|bTUw?8e#c-wTy|%PtgH;=*(U3xfbeso9e*?lN>`@tMll%-hCDMEW-a)~N%S+c^ef5bVW_46ocHZsx*^&t*rD5?A3qCNRgv_n5!-_A?gZS+I z4ViTEmOOayPK~G{Up!zCo)dm{ zrrx7V4HjR$49b6fMW zu9plDUDA~hUf|VrWOzAIKZ7!1P~(ki1~mpZ*5!?xu$?WEa-{66EcG-*VPBEc`rvC+ zBAC!9yJ7UyPgffOB-cXINfiGGQ**5YwuYfUD|O!rsy0=%b=|c(FS;SV)m*ggK^xz% z{Ss1t1yeL?u> z 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