From af64bac8ca5f1867bcbb82edb01e78f9a624be01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tiago=20Concei=C3=A7=C3=A3o?= Date: Tue, 15 Aug 2023 06:59:08 +0100 Subject: [PATCH] v1.2.0 - **BaseClient**: - Add methods and types for Xml requests - Add methods for download files - Do not convert query parameters to lower-case - Handle `enums` with flags as lists on query parameters - **WormsClient:** Add `GetAphiaLink(string|int)` method to get a link to WoRMS - **IUCN:** Make `GetSpecieRedirectLink(string|int)` method static - Add Barcode of Life Data Sytem (`BoldSystemsClient`) --- CHANGELOG.md | 15 +- Directory.Build.props | 9 +- README.md | 24 +- SpeciesDatabaseApi/ApiToken.cs | 23 ++ SpeciesDatabaseApi/BaseClient.cs | 391 +++++++++++++++--- SpeciesDatabaseApi/BoldSystems/BoldRecords.cs | 50 +++ .../BoldSystems/BoldSystemsClient.cs | 241 +++++++++++ SpeciesDatabaseApi/BoldSystems/CoiMatch.cs | 69 ++++ SpeciesDatabaseApi/BoldSystems/CoiMatches.cs | 10 + .../BoldSystems/CollectionEvent.cs | 66 +++ .../BoldSystems/CollectionLocation.cs | 52 +++ SpeciesDatabaseApi/BoldSystems/Coordinate.cs | 59 +++ .../BoldSystems/Enumerations.cs | 88 ++++ .../BoldSystems/PublicApiParameters.cs | 125 ++++++ SpeciesDatabaseApi/BoldSystems/Sequence.cs | 57 +++ .../BoldSystems/SequenceData.cs | 60 +++ SpeciesDatabaseApi/BoldSystems/Sequences.cs | 48 +++ SpeciesDatabaseApi/BoldSystems/Specimen.cs | 52 +++ .../BoldSystems/SpecimenDesc.cs | 63 +++ .../BoldSystems/SpecimenIdentifiers.cs | 57 +++ .../BoldSystems/SpecimenRecord.cs | 86 ++++ .../BoldSystems/SpecimenResults.cs | 48 +++ SpeciesDatabaseApi/BoldSystems/Stat.cs | 52 +++ .../BoldSystems/StatDrillDown.cs | 48 +++ SpeciesDatabaseApi/BoldSystems/StatEntity.cs | 51 +++ SpeciesDatabaseApi/BoldSystems/Stats.cs | 82 ++++ SpeciesDatabaseApi/BoldSystems/Taxomony.cs | 66 +++ .../BoldSystems/TaxomonyRank.cs | 48 +++ SpeciesDatabaseApi/BoldSystems/Taxon.cs | 51 +++ SpeciesDatabaseApi/BoldSystems/TaxonData.cs | 137 ++++++ .../BoldSystems/TaxonDataBasic.cs | 63 +++ .../BoldSystems/TaxonDataImage.cs | 123 ++++++ .../TaxonDataRepresentitiveImage.cs | 52 +++ .../BoldSystems/TaxonDataStats.cs | 55 +++ SpeciesDatabaseApi/BoldSystems/TaxonSearch.cs | 51 +++ SpeciesDatabaseApi/BoldSystems/TraceFile.cs | 66 +++ SpeciesDatabaseApi/BoldSystems/TraceFiles.cs | 48 +++ .../Extensions/StringExtensions.cs | 19 + SpeciesDatabaseApi/Iucn/IucnClient.cs | 54 +-- .../MarineRegions/MarineRegionsClient.cs | 2 +- .../MarineSpecies/WormsClient.cs | 29 +- SpeciesDatabaseApi/RequestContentType.cs | 14 + .../SpeciesPlus/SpeciesPlusClient.cs | 2 - SpeciesDatabaseCmd/BoldSystemsCommand.cs | 281 +++++++++++++ SpeciesDatabaseCmd/Program.cs | 5 +- .../Properties/launchSettings.json | 16 + SpeciesDatabaseCmd/icon.ico | Bin 0 -> 132383 bytes icon.png | Bin 80025 -> 0 bytes images/banner.png | Bin 0 -> 63367 bytes images/icon-128.png | Bin 0 -> 9743 bytes images/icon-32.png | Bin 0 -> 1761 bytes images/icon-512.png | Bin 0 -> 48668 bytes images/icon-64.png | Bin 0 -> 4344 bytes images/icon.ico | Bin 0 -> 132383 bytes 54 files changed, 3003 insertions(+), 105 deletions(-) create mode 100644 SpeciesDatabaseApi/BoldSystems/BoldRecords.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/BoldSystemsClient.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/CoiMatch.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/CoiMatches.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/CollectionEvent.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/CollectionLocation.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/Coordinate.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/Enumerations.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/PublicApiParameters.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/Sequence.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/SequenceData.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/Sequences.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/Specimen.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/SpecimenDesc.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/SpecimenIdentifiers.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/SpecimenRecord.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/SpecimenResults.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/Stat.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/StatDrillDown.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/StatEntity.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/Stats.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/Taxomony.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/TaxomonyRank.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/Taxon.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/TaxonData.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/TaxonDataBasic.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/TaxonDataImage.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/TaxonDataRepresentitiveImage.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/TaxonDataStats.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/TaxonSearch.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/TraceFile.cs create mode 100644 SpeciesDatabaseApi/BoldSystems/TraceFiles.cs create mode 100644 SpeciesDatabaseApi/RequestContentType.cs create mode 100644 SpeciesDatabaseCmd/BoldSystemsCommand.cs create mode 100644 SpeciesDatabaseCmd/icon.ico delete mode 100644 icon.png create mode 100644 images/banner.png create mode 100644 images/icon-128.png create mode 100644 images/icon-32.png create mode 100644 images/icon-512.png create mode 100644 images/icon-64.png create mode 100644 images/icon.ico diff --git a/CHANGELOG.md b/CHANGELOG.md index a3c0206..b08b1de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,17 @@ # Change Log -## 12/08/2023 - v1.1.0 +## 15/08/2023 - v1.2.0 + +- **BaseClient**: + - Add methods and types for Xml requests + - Add methods for download files + - Do not convert query parameters to lower-case + - Handle `enums` with flags as lists on query parameters +- **WormsClient:** Add `GetAphiaLink(string|int)` method to get a link to WoRMS +- **IUCN:** Make `GetSpecieRedirectLink(string|int)` method static +- Add Barcode of Life Data Sytem (`BoldSystemsClient`) + +## 13/08/2023 - v1.1.0 - Add Species+/CITES (`SpeciesPlusClient`) - Move `Worms` to `MarineSpecies` namespace @@ -17,5 +28,5 @@ - Fix the regex for `WebsiteUrl` to better remove the api sub-domain ## 11/08/2023 - v1.0.0 - + - First release \ No newline at end of file diff --git a/Directory.Build.props b/Directory.Build.props index 9c1331b..1cfc5f8 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,11 +1,12 @@ net6.0;net7.0 - Tiago Conceição; sn4k3 + Tiago Conceição (sn4k3) PTRTECH Copyright 2023-$([System.DateTime]::Now.ToString(`yyyy`)) © PTRTECH 1.1.0 Queries and fetch data from species, taxon, regions and conservation database(s) to retrieve information using the provider API. + $(MSBuildThisFileDirectory)images/icon.ico MIT true @@ -13,8 +14,8 @@ https://github.com/sn4k3/SpeciesDatabaseApi https://github.com/sn4k3/SpeciesDatabaseApi/releases README.md - icon.png - species, taxomy, taxomony, biota, database, api, rest, world, register, marine, wrms, worms, iucn, mr, conservation, nature, regions + icon-128.png + species taxomy taxomony biota database api rest world register marine wrms worms iucn mr conservation nature regions bold systems Git enable @@ -26,7 +27,7 @@ - + diff --git a/README.md b/README.md index ca9146b..20a5cfa 100644 --- a/README.md +++ b/README.md @@ -7,18 +7,19 @@ -# Species Database Api +# ![Icon](https://raw.githubusercontent.com/sn4k3/SpeciesDatabaseApi/master/images/icon-64.png) Species Database Api Queries and fetch data from species, taxon, regions and conservation database(s) to retrieve information using the provider API. ## 🌐 Clients -| Name / Provider | Class | Terms of use | -| ------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | -| [International Union for Conservation of Nature (IUCN)](https://iucn.org) | [IucnClient](https://github.com/sn4k3/SpeciesDatabaseApi/blob/master/SpeciesDatabaseApi/Iucn/IucnClient.cs) | [Terms of use](http://apiv3.iucnredlist.org/about) | -| [Marine Regions](https://marineregions.org) | [MarineRegionsClient](https://github.com/sn4k3/SpeciesDatabaseApi/blob/master/SpeciesDatabaseApi/MarineRegions/MarineRegionsClient.cs) | [Terms of use](https://marineregions.org/disclaimer.php) | -| [Species+/CITES](https://speciesplus.net) | [SpeciesPlusClient](https://github.com/sn4k3/SpeciesDatabaseApi/blob/master/SpeciesDatabaseApi/SpeciesPlus/SpeciesPlusClient.cs) | [Terms of use](https://speciesplus.net/terms-of-use) | -| [World Register of Marine Species (WoRMS)](https://marinespecies.org) | [WormsClient](https://github.com/sn4k3/SpeciesDatabaseApi/blob/master/SpeciesDatabaseApi/MarineSpecies/WormsClient.cs) | [Terms of use](https://marinespecies.org/about.php#terms) | +| Name / Provider | Class | Terms of use | +| ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | +| [Barcode of Life Data Sytem (BoldSystems)](https://www.boldsystems.org) | [BoldSystemsClient](https://github.com/sn4k3/SpeciesDatabaseApi/blob/master/SpeciesDatabaseApi/BoldSystems/BoldSystemsClient.cs) | [Terms of use](https://www.boldsystems.org/index.php/Resources/whatIsBOLD) | +| [International Union for Conservation of Nature (IUCN)](https://www.iucn.org) | [IucnClient](https://github.com/sn4k3/SpeciesDatabaseApi/blob/master/SpeciesDatabaseApi/Iucn/IucnClient.cs) | [Terms of use](http://apiv3.iucnredlist.org/about) | +| [Marine Regions](https://www.marineregions.org) | [MarineRegionsClient](https://github.com/sn4k3/SpeciesDatabaseApi/blob/master/SpeciesDatabaseApi/MarineRegions/MarineRegionsClient.cs) | [Terms of use](https://www.marineregions.org/disclaimer.php) | +| [Species+/CITES](https://www.speciesplus.net) | [SpeciesPlusClient](https://github.com/sn4k3/SpeciesDatabaseApi/blob/master/SpeciesDatabaseApi/SpeciesPlus/SpeciesPlusClient.cs) | [Terms of use](https://www.speciesplus.net/terms-of-use) | +| [World Register of Marine Species (WoRMS)](https://www.marinespecies.org) | [WormsClient](https://github.com/sn4k3/SpeciesDatabaseApi/blob/master/SpeciesDatabaseApi/MarineSpecies/WormsClient.cs) | [Terms of use](https://www.marinespecies.org/about.php#terms) | ## 🤝 Terms of use @@ -117,10 +118,11 @@ Run the "SpeciesDatabaseCmd.exe" and follow the in-terminal instructions to call # -?, -h, --help Show help and usage information # # Commands: -# WORMS Query - World Register of Marine Species (https://marinespecies.org) -# IUCN Query - International Union for Conservation of Nature (http://iucnredlist.org) -# MARINEREGIONS Query - Marine Regions (https://marineregions.org) -# SPECIES+ Query - Species+/CITES (https://speciesplus.net) +# BOLDSYSTEMS Query - Barcode of Life Data Sytem (https://www.boldsystems.org) +# IUCN Query - International Union for Conservation of Nature (http://www.iucnredlist.org) +# MARINEREGIONS Query - Marine Regions (https://www.marineregions.org) +# SPECIES+ Query - Species+/CITES (https://www.speciesplus.net) +# WORMS Query - World Register of Marine Species (https://www.marinespecies.org) SpeciesDatabaseCmd.exe IUCN SpecieCommonNames "Carcharodon carcharias" diff --git a/SpeciesDatabaseApi/ApiToken.cs b/SpeciesDatabaseApi/ApiToken.cs index ee34b00..745323a 100644 --- a/SpeciesDatabaseApi/ApiToken.cs +++ b/SpeciesDatabaseApi/ApiToken.cs @@ -1,5 +1,7 @@ using System; using System.Diagnostics.CodeAnalysis; +using System.Net.Http; +using System.Net.Http.Headers; namespace SpeciesDatabaseApi; @@ -101,6 +103,27 @@ protected internal void Set(string key, string value, ApiTokenPlacement placemen Placement = placement; } + /// + /// Try to inject this token into a if configured and possible + /// + /// The where it will try to inject the token + /// + public bool TryInject(HttpRequestMessage request) + { + if (!CanUse) return false; + switch (Placement) + { + case ApiTokenPlacement.Header: + request.Headers.Add(Key, Value); + return true; + case ApiTokenPlacement.HeaderAuthorization: + request.Headers.Authorization = new AuthenticationHeaderValue(Key, Value); + return true; + default: + return false; + } + } + #endregion #region Equality and Format diff --git a/SpeciesDatabaseApi/BaseClient.cs b/SpeciesDatabaseApi/BaseClient.cs index a2408c6..8a0688d 100644 --- a/SpeciesDatabaseApi/BaseClient.cs +++ b/SpeciesDatabaseApi/BaseClient.cs @@ -2,11 +2,13 @@ using System.Collections; using System.Collections.Generic; using System.Diagnostics; +using System.IO; using System.Linq; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Net.Http.Json; +using System.Net.Mime; using System.Reflection; using System.Security.Cryptography; using System.Text; @@ -17,6 +19,7 @@ using System.Threading.Tasks; using System.Timers; using System.Web; +using System.Xml.Serialization; namespace SpeciesDatabaseApi; @@ -109,7 +112,7 @@ public virtual string WebsiteUrl get { var domain = ApiAddress.GetLeftPart(UriPartial.Authority); - return Regex.Replace(domain, @"\/\/(.*api([a-zA-Z0-9_-]+)?|www)[.]", "//"); + return Regex.Replace(domain, @"\/\/(.*api([a-zA-Z0-9_-]+)?|www)[.]", "//www."); } } @@ -200,6 +203,7 @@ public void Dispose() #region Methods + #region Query parameters /// /// Escapes the data query to be safe in the url /// @@ -232,7 +236,7 @@ public string GetRequestUrl(string path) var url = GetRawRequestUrl(path); if (ApiToken is { CanUse: true, Placement: ApiTokenPlacement.Get }) { - return $"{url}?{UrlEncode(ApiToken.Key)}={UrlEncode(ApiToken.Value)}"; + return $"{url}?{EscapeDataString(ApiToken.Key)}={EscapeDataString(ApiToken.Value)}"; } return url; @@ -300,28 +304,44 @@ public string GetUrlParametersString(IEnumerable> foreach (var obj in list) { if (obj is null) continue; - value = obj.ToString()?.Trim().ToLowerInvariant(); + value = obj.ToString()?.Trim(); if (string.IsNullOrWhiteSpace(value)) continue; items.Add(value); } value = string.Join(',', items); break; + case Enum enumValue: + if (enumValue.GetType().IsDefined(typeof(FlagsAttribute), false)) + { + // Treat as list + var enumList = Enum.GetValues(enumValue.GetType()).Cast().Where(enumValue.HasFlag); + value = string.Join(',', enumList); + } + else + { + // Treat as string + value = enumValue.ToString(); + } + break; + case bool boolValue: + value = boolValue.ToString().ToLowerInvariant(); + break; case string str: - value = str.Trim().ToLowerInvariant(); + value = str.Trim(); if (string.IsNullOrWhiteSpace(value)) continue; break; default: - value = item.Value.ToString()?.Trim().ToLowerInvariant(); + value = item.Value.ToString()?.Trim(); if (string.IsNullOrWhiteSpace(value)) continue; break; } - builder.Append($"{(builder.Length == 0 ? "?" : "&")}{UrlEncode(item.Key.ToLowerInvariant())}={UrlEncode(value)}"); + builder.Append($"{(builder.Length == 0 ? "?" : "&")}{EscapeDataString(item.Key)}={EscapeDataString(value)}"); } if (ApiToken is { CanUse: true, Placement: ApiTokenPlacement.Get }) { - builder.Append($"{(builder.Length == 0 ? "?" : "&")}{UrlEncode(ApiToken.Key)}={UrlEncode(ApiToken.Value)}"); + builder.Append($"{(builder.Length == 0 ? "?" : "&")}{EscapeDataString(ApiToken.Key)}={EscapeDataString(ApiToken.Value)}"); } return builder.ToString(); @@ -347,6 +367,11 @@ public string GetUrlParametersString(IEnumerable> /// /// The formatted string public string GetUrlParametersString(object? obj) + { + return GetUrlParametersString(GetDictionaryFromClassProperties(obj)); + } + + public Dictionary GetDictionaryFromClassProperties(object? obj) { var dict = new Dictionary(); @@ -359,42 +384,50 @@ public string GetUrlParametersString(object? obj) var method = propertyInfo.GetMethod; if (method is null) continue; var value = propertyInfo.GetValue(obj); + if (value is null) continue; var attr = propertyInfo.GetCustomAttribute(); dict.Add(attr?.Name ?? method.Name, value); } } - return GetUrlParametersString(dict); + return dict; } + #endregion - protected HttpRequestMessage PrepareJsonHttpRequestMessage(string requestUrl, HttpMethod httpMethod) + protected HttpRequestMessage CreateHttpRequestMessage(string requestUrl, HttpMethod httpMethod, RequestContentType contentType = RequestContentType.Json) { var request = new HttpRequestMessage(httpMethod, requestUrl); - request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); - if (ProductInfoHeader is not null) + + switch (contentType) { - request.Headers.UserAgent.Add(ProductInfoHeader); + case RequestContentType.Raw: + break; + case RequestContentType.Json: + request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); + break; + case RequestContentType.Xml: + request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml")); + break; + default: + throw new ArgumentOutOfRangeException(nameof(contentType), contentType, null); } - - if (ApiToken.CanUse) + + if (ProductInfoHeader is not null) { - switch (ApiToken.Placement) - { - case ApiTokenPlacement.Header: - request.Headers.Add(ApiToken.Key, ApiToken.Value); - break; - case ApiTokenPlacement.HeaderAuthorization: - request.Headers.Authorization = new AuthenticationHeaderValue(ApiToken.Key, ApiToken.Value); - break; - } + request.Headers.UserAgent.Add(ProductInfoHeader); } + ApiToken.TryInject(request); + AuthToken.TryInject(request); + return request; } + + #region Json Requests public Task PostJsonAsync(string requestUrl, object postData, IEnumerable> urlParameters, CancellationToken cancellationToken = default) { - using var request = PrepareJsonHttpRequestMessage(GetRequestUrl(requestUrl, urlParameters), HttpMethod.Post); + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, urlParameters), HttpMethod.Post); var requestJson = JsonSerializer.Serialize(postData); request.Content = new StringContent(requestJson, Encoding.UTF8, "application/json"); @@ -404,7 +437,7 @@ protected HttpRequestMessage PrepareJsonHttpRequestMessage(string requestUrl, Ht public Task PostJsonAsync(string requestUrl, object postData, IReadOnlyDictionary urlParameters, CancellationToken cancellationToken = default) { - using var request = PrepareJsonHttpRequestMessage(GetRequestUrl(requestUrl, urlParameters), HttpMethod.Post); + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, urlParameters), HttpMethod.Post); var requestJson = JsonSerializer.Serialize(postData); request.Content = new StringContent(requestJson, Encoding.UTF8, "application/json"); @@ -414,7 +447,7 @@ protected HttpRequestMessage PrepareJsonHttpRequestMessage(string requestUrl, Ht public Task PostJsonAsync(string requestUrl, object postData, KeyValuePair urlParameter, CancellationToken cancellationToken = default) { - using var request = PrepareJsonHttpRequestMessage(GetRequestUrl(requestUrl, urlParameter), HttpMethod.Post); + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, urlParameter), HttpMethod.Post); var requestJson = JsonSerializer.Serialize(postData); request.Content = new StringContent(requestJson, Encoding.UTF8, "application/json"); @@ -424,7 +457,7 @@ protected HttpRequestMessage PrepareJsonHttpRequestMessage(string requestUrl, Ht public Task PostJsonAsync(string requestUrl, object postData, object classUrlParameters, CancellationToken cancellationToken = default) { - using var request = PrepareJsonHttpRequestMessage(GetRequestUrl(requestUrl, classUrlParameters), HttpMethod.Post); + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, classUrlParameters), HttpMethod.Post); var requestJson = JsonSerializer.Serialize(postData); request.Content = new StringContent(requestJson, Encoding.UTF8, "application/json"); @@ -434,7 +467,7 @@ protected HttpRequestMessage PrepareJsonHttpRequestMessage(string requestUrl, Ht public Task PostJsonAsync(string requestUrl, object postData, CancellationToken cancellationToken = default) { - using var request = PrepareJsonHttpRequestMessage(GetRequestUrl(requestUrl), HttpMethod.Post); + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl), HttpMethod.Post); var requestJson = JsonSerializer.Serialize(postData); request.Content = new StringContent(requestJson, Encoding.UTF8, "application/json"); @@ -444,63 +477,242 @@ protected HttpRequestMessage PrepareJsonHttpRequestMessage(string requestUrl, Ht public Task GetJsonAsync(string requestUrl, IEnumerable> urlParameters, CancellationToken cancellationToken = default) { - using var request = PrepareJsonHttpRequestMessage(GetRequestUrl(requestUrl, urlParameters), HttpMethod.Get); + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, urlParameters), HttpMethod.Get); return SendRequestAsync(request, cancellationToken); } public Task GetJsonAsync(string requestUrl, IReadOnlyDictionary urlParameters, CancellationToken cancellationToken = default) { - using var request = PrepareJsonHttpRequestMessage(GetRequestUrl(requestUrl, urlParameters), HttpMethod.Get); + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, urlParameters), HttpMethod.Get); return SendRequestAsync(request, cancellationToken); } public Task GetJsonAsync(string requestUrl, KeyValuePair urlParameter, CancellationToken cancellationToken = default) { - using var request = PrepareJsonHttpRequestMessage(GetRequestUrl(requestUrl, urlParameter), HttpMethod.Get); + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, urlParameter), HttpMethod.Get); return SendRequestAsync(request, cancellationToken); } public Task GetJsonAsync(string requestUrl, object classUrlParameters, CancellationToken cancellationToken = default) { - using var request = PrepareJsonHttpRequestMessage(GetRequestUrl(requestUrl, classUrlParameters), HttpMethod.Get); + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, classUrlParameters), HttpMethod.Get); return SendRequestAsync(request, cancellationToken); } public Task GetJsonAsync(string requestUrl, CancellationToken cancellationToken = default) { - using var request = PrepareJsonHttpRequestMessage(GetRequestUrl(requestUrl), HttpMethod.Get); + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl), HttpMethod.Get); return SendRequestAsync(request, cancellationToken); } public Task DeleteJsonAsync(string requestUrl, IEnumerable> urlParameters, CancellationToken cancellationToken = default) { - using var request = PrepareJsonHttpRequestMessage(GetRequestUrl(requestUrl, urlParameters), HttpMethod.Delete); + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, urlParameters), HttpMethod.Delete); return SendRequestAsync(request, cancellationToken); } public Task DeleteJsonAsync(string requestUrl, IReadOnlyDictionary urlParameters, CancellationToken cancellationToken = default) { - using var request = PrepareJsonHttpRequestMessage(GetRequestUrl(requestUrl, urlParameters), HttpMethod.Delete); + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, urlParameters), HttpMethod.Delete); return SendRequestAsync(request, cancellationToken); } public Task DeleteJsonAsync(string requestUrl, KeyValuePair urlParameter, CancellationToken cancellationToken = default) { - using var request = PrepareJsonHttpRequestMessage(GetRequestUrl(requestUrl, urlParameter), HttpMethod.Delete); + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, urlParameter), HttpMethod.Delete); return SendRequestAsync(request, cancellationToken); } public Task DeleteJsonAsync(string requestUrl, object classUrlParameters, CancellationToken cancellationToken = default) { - using var request = PrepareJsonHttpRequestMessage(GetRequestUrl(requestUrl, classUrlParameters), HttpMethod.Delete); + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, classUrlParameters), HttpMethod.Delete); return SendRequestAsync(request, cancellationToken); } public Task DeleteJsonAsync(string requestUrl, CancellationToken cancellationToken = default) { - using var request = PrepareJsonHttpRequestMessage(GetRequestUrl(requestUrl), HttpMethod.Delete); + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl), HttpMethod.Delete); return SendRequestAsync(request, cancellationToken); } + #endregion + + #region Xml Requests + public Task PostXmlAsync(string requestUrl, object postData, IEnumerable> urlParameters, CancellationToken cancellationToken = default) + { + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, urlParameters), HttpMethod.Post); + + var requestJson = JsonSerializer.Serialize(postData); + request.Content = new StringContent(requestJson, Encoding.UTF8, "application/json"); + + return SendRequestAsync(request, RequestContentType.Xml, cancellationToken); + } + + public Task PostXmlAsync(string requestUrl, object postData, IReadOnlyDictionary urlParameters, CancellationToken cancellationToken = default) + { + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, urlParameters), HttpMethod.Post); + + var requestJson = JsonSerializer.Serialize(postData); + request.Content = new StringContent(requestJson, Encoding.UTF8, "application/json"); + + return SendRequestAsync(request, RequestContentType.Xml, cancellationToken); + } + + public Task PostXmlAsync(string requestUrl, object postData, KeyValuePair urlParameter, CancellationToken cancellationToken = default) + { + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, urlParameter), HttpMethod.Post); + + var requestJson = JsonSerializer.Serialize(postData); + request.Content = new StringContent(requestJson, Encoding.UTF8, "application/json"); + + return SendRequestAsync(request, RequestContentType.Xml, cancellationToken); + } + + public Task PostXmlAsync(string requestUrl, object postData, object classUrlParameters, CancellationToken cancellationToken = default) + { + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, classUrlParameters), HttpMethod.Post); + + var requestJson = JsonSerializer.Serialize(postData); + request.Content = new StringContent(requestJson, Encoding.UTF8, "application/json"); + + return SendRequestAsync(request, RequestContentType.Xml, cancellationToken); + } + + public Task PostXmlAsync(string requestUrl, object postData, CancellationToken cancellationToken = default) + { + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl), HttpMethod.Post); + + var requestJson = JsonSerializer.Serialize(postData); + request.Content = new StringContent(requestJson, Encoding.UTF8, "application/json"); + + return SendRequestAsync(request, RequestContentType.Xml, cancellationToken); + } + + public Task GetXmlAsync(string requestUrl, IEnumerable> urlParameters, CancellationToken cancellationToken = default) + { + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, urlParameters), HttpMethod.Get); + return SendRequestAsync(request, RequestContentType.Xml, cancellationToken); + } + + public Task GetXmlAsync(string requestUrl, IReadOnlyDictionary urlParameters, CancellationToken cancellationToken = default) + { + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, urlParameters), HttpMethod.Get); + return SendRequestAsync(request, RequestContentType.Xml, cancellationToken); + } + + public Task GetXmlAsync(string requestUrl, KeyValuePair urlParameter, CancellationToken cancellationToken = default) + { + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, urlParameter), HttpMethod.Get); + return SendRequestAsync(request, RequestContentType.Xml, cancellationToken); + } + + public Task GetXmlAsync(string requestUrl, object classUrlParameters, CancellationToken cancellationToken = default) + { + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, classUrlParameters), HttpMethod.Get); + return SendRequestAsync(request, RequestContentType.Xml, cancellationToken); + } + + public Task GetXmlAsync(string requestUrl, CancellationToken cancellationToken = default) + { + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl), HttpMethod.Get); + return SendRequestAsync(request, RequestContentType.Xml, cancellationToken); + } + + public Task DeleteXmlAsync(string requestUrl, IEnumerable> urlParameters, CancellationToken cancellationToken = default) + { + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, urlParameters), HttpMethod.Delete); + return SendRequestAsync(request, RequestContentType.Xml, cancellationToken); + } + + public Task DeleteXmlAsync(string requestUrl, IReadOnlyDictionary urlParameters, CancellationToken cancellationToken = default) + { + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, urlParameters), HttpMethod.Delete); + return SendRequestAsync(request, RequestContentType.Xml, cancellationToken); + } + + public Task DeleteXmlAsync(string requestUrl, KeyValuePair urlParameter, CancellationToken cancellationToken = default) + { + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, urlParameter), HttpMethod.Delete); + return SendRequestAsync(request, RequestContentType.Xml, cancellationToken); + } + + public Task DeleteXmlAsync(string requestUrl, object classUrlParameters, CancellationToken cancellationToken = default) + { + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, classUrlParameters), HttpMethod.Delete); + return SendRequestAsync(request, RequestContentType.Xml, cancellationToken); + } + + public Task DeleteXmlAsync(string requestUrl, CancellationToken cancellationToken = default) + { + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl), HttpMethod.Delete); + return SendRequestAsync(request, RequestContentType.Xml, cancellationToken); + } + #endregion + + #region Download Requests + + public Task DownloadAsync(string requestUrl, IEnumerable> urlParameters, Stream stream, CancellationToken cancellationToken = default) + { + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, urlParameters), HttpMethod.Get, RequestContentType.Raw); + return SendDownloadRequestAsync(request, stream, cancellationToken); + } + + public Task DownloadAsync(string requestUrl, IReadOnlyDictionary urlParameters, Stream stream, CancellationToken cancellationToken = default) + { + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, urlParameters), HttpMethod.Get, RequestContentType.Raw); + return SendDownloadRequestAsync(request, stream, cancellationToken); + } + + public Task DownloadAsync(string requestUrl, KeyValuePair urlParameter, Stream stream, CancellationToken cancellationToken = default) + { + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, urlParameter), HttpMethod.Get, RequestContentType.Raw); + return SendDownloadRequestAsync(request, stream, cancellationToken); + } + + public Task DownloadAsync(string requestUrl, object classUrlParameters, Stream stream, CancellationToken cancellationToken = default) + { + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, classUrlParameters), HttpMethod.Get, RequestContentType.Raw); + return SendDownloadRequestAsync(request, stream, cancellationToken); + } + + public Task DownloadAsync(string requestUrl, Stream stream, CancellationToken cancellationToken = default) + { + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl), HttpMethod.Get, RequestContentType.Raw); + return SendDownloadRequestAsync(request, stream, cancellationToken); + } + + #endregion + + #region + public Task GetResponseAsync(string requestUrl, IEnumerable> urlParameters, CancellationToken cancellationToken = default) + { + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, urlParameters), HttpMethod.Get, RequestContentType.Raw); + return SendRequestAsync(request, cancellationToken); + } + + public Task GetResponseAsync(string requestUrl, IReadOnlyDictionary urlParameters, CancellationToken cancellationToken = default) + { + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, urlParameters), HttpMethod.Get, RequestContentType.Raw); + return SendRequestAsync(request, cancellationToken); + } + + public Task GetResponseAsync(string requestUrl, KeyValuePair urlParameter, CancellationToken cancellationToken = default) + { + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, urlParameter), HttpMethod.Get, RequestContentType.Raw); + return SendRequestAsync(request, cancellationToken); + } + + public Task GetResponseAsync(string requestUrl, object classUrlParameters, CancellationToken cancellationToken = default) + { + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl, classUrlParameters), HttpMethod.Get, RequestContentType.Raw); + return SendRequestAsync(request, cancellationToken); + } + + public Task GetResponseAsync(string requestUrl, CancellationToken cancellationToken = default) + { + using var request = CreateHttpRequestMessage(GetRequestUrl(requestUrl), HttpMethod.Get, RequestContentType.Raw); + return SendRequestAsync(request, cancellationToken); + } + #endregion /// /// Trigger before SendRequestAsync is executed. @@ -514,35 +726,62 @@ protected virtual Task OnBeforeSendRequestAsync(HttpRequestMessage request, Canc } /// - /// Sends a request to the Api + /// Sends a request to the Api and return the /// - /// /// /// /// /// - private async Task SendRequestAsync(HttpRequestMessage request, CancellationToken cancellationToken = default) + /// Don't forget to dispose the + private async Task SendRequestAsync(HttpRequestMessage request, CancellationToken cancellationToken = default) { await OnBeforeSendRequestAsync(request, cancellationToken).ConfigureAwait(false); +#if DEBUG Debug.WriteLine($"{ClientAcronym}: Sending request {request.RequestUri}"); + Console.WriteLine($"{ClientAcronym}: Sending request {request.RequestUri}"); +#endif if (_autoWaitForRequestLimit && RequestsHitLimit) { do { var waitTime = RandomNumberGenerator.GetInt32(500, 2000); +#if DEBUG Debug.WriteLine($"{ClientAcronym}: Api limit hit, waiting {waitTime}ms before re-try."); + Console.WriteLine($"{ClientAcronym}: Api limit hit, waiting {waitTime}ms before re-try."); +#endif await Task.Delay(waitTime, cancellationToken).ConfigureAwait(false); } while (RequestsHitLimit); } - using var response = await _httpClient.SendAsync(request, cancellationToken).ConfigureAwait(false); - + var response = await _httpClient.SendAsync(request, cancellationToken).ConfigureAwait(false); Interlocked.Increment(ref _totalRequests); + if (_autoWaitForRequestLimit && _maximumRequestsPerSecond > 0) + { + Interlocked.Increment(ref _requestsInCurrentSecond); + _resetRequestsTimer.Start(); + } + if (ThrowExceptionIfRequestStatusCodeFails) response.EnsureSuccessStatusCode(); - else if (!response.IsSuccessStatusCode) return default; + + return response; + } + + /// + /// Sends a request to the Api and return a data model from the + /// + /// + /// + /// + /// + /// + /// + private async Task SendRequestAsync(HttpRequestMessage request, RequestContentType contentType = RequestContentType.Json, CancellationToken cancellationToken = default) + { + using var response = await SendRequestAsync(request, cancellationToken).ConfigureAwait(false); + if (!ThrowExceptionIfRequestStatusCodeFails && !response.IsSuccessStatusCode) return default; switch (response.StatusCode) { @@ -550,20 +789,62 @@ protected virtual Task OnBeforeSendRequestAsync(HttpRequestMessage request, Canc return default; } - if (_autoWaitForRequestLimit && _maximumRequestsPerSecond > 0) + switch (contentType) { - Interlocked.Increment(ref _requestsInCurrentSecond); - _resetRequestsTimer.Start(); - } - + case RequestContentType.Json: #if DEBUG - var json = await response.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - Debug.WriteLine(json); - return JsonSerializer.Deserialize(json, DefaultJsonSerializerOptions); + var json = await response.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); + Debug.WriteLine(json); + Console.WriteLine(json); + return JsonSerializer.Deserialize(json, DefaultJsonSerializerOptions); #endif +#pragma warning disable CS0162 // Unreachable code detected + return await response.Content.ReadFromJsonAsync(DefaultJsonSerializerOptions, cancellationToken).ConfigureAwait(false); +#pragma warning restore CS0162 // Unreachable code detected + case RequestContentType.Xml: + var xmlStream = await response.Content.ReadAsStreamAsync(cancellationToken).ConfigureAwait(false); + var serializer = new XmlSerializer(typeof(T)); + var obj = serializer.Deserialize(xmlStream); + if (obj is null) return default; + return (T)obj; + default: + throw new ArgumentOutOfRangeException(nameof(contentType), contentType, null); + } + } + + /// + /// Sends a request to the Api and return a data model from json + /// + /// + /// + /// + /// + /// + private Task SendRequestAsync(HttpRequestMessage request, CancellationToken cancellationToken = default) + => SendRequestAsync(request, RequestContentType.Json, cancellationToken); + + + /// + /// Sends a download request to the Api and copy the content to a + /// + /// + /// The stream to copy the content to + /// + /// + /// + private async Task SendDownloadRequestAsync(HttpRequestMessage request, Stream stream, CancellationToken cancellationToken = default) + { + using var response = await SendRequestAsync(request, cancellationToken).ConfigureAwait(false); + if (!ThrowExceptionIfRequestStatusCodeFails && !response.IsSuccessStatusCode) return Task.FromException(new HttpRequestException("Request return not success status code", null, response.StatusCode)); - return await response.Content.ReadFromJsonAsync(DefaultJsonSerializerOptions, cancellationToken).ConfigureAwait(false); - } + switch (response.StatusCode) + { + case HttpStatusCode.NoContent: + return Task.FromException(new HttpRequestException("Request return no content", null, response.StatusCode)); + } -#endregion + return response.Content.CopyToAsync(stream, cancellationToken); + } + + #endregion } \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/BoldRecords.cs b/SpeciesDatabaseApi/BoldSystems/BoldRecords.cs new file mode 100644 index 0000000..cda79d2 --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/BoldRecords.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.Text.Json.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +public class BoldRecords : IEquatable +{ + [JsonPropertyName("records")] + public Dictionary Records { get; set; } = new(); + + /// + public override string ToString() + { + return $"{nameof(Records)}: {Records}"; + } + + /// + public bool Equals(BoldRecords? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return Records.Equals(other.Records); + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((BoldRecords)obj); + } + + /// + public override int GetHashCode() + { + return Records.GetHashCode(); + } + + public static bool operator ==(BoldRecords? left, BoldRecords? right) + { + return Equals(left, right); + } + + public static bool operator !=(BoldRecords? left, BoldRecords? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/BoldSystemsClient.cs b/SpeciesDatabaseApi/BoldSystems/BoldSystemsClient.cs new file mode 100644 index 0000000..06e8c00 --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/BoldSystemsClient.cs @@ -0,0 +1,241 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Net; +using System.Net.Http; +using System.Text.Json.Nodes; +using System.Threading; +using System.Threading.Tasks; +using System.Xml.Linq; +using SpeciesDatabaseApi.Extensions; + +namespace SpeciesDatabaseApi.BoldSystems; + +/// +/// The client for https://iucn.org API +/// +public class BoldSystemsClient : BaseClient +{ + #region Static objects + /// + /// The client full name/provider + /// + public const string FullName = "Barcode of Life Data Sytem"; + + /// + /// The Api default address + /// + public static readonly Uri DefaultApiAddress = new("https://www.boldsystems.org/index.php"); + #endregion + + #region Properties + /// + public override decimal Version => 4; + + /// + public override string ClientAcronym => "BoldSystems"; + + /// + public override string ClientFullName => FullName; + + #endregion + + #region Constructor + + public BoldSystemsClient(HttpClient? httpClient = null) : base(DefaultApiAddress, httpClient) + { + } + + #endregion + + #region Methods + + /// + /// Users only interested in count data for a given query can now use the API to retrieve the summary information that is provided by BOLD public searches. + /// + /// Parameters for the request, null values are ignored + /// Returns all records in one of the specified formats. + /// + /// + public Task GetStats(PublicApiParameters requestParameters, BoldStatsDataType dataType = BoldStatsDataType.DrillDown, CancellationToken token = default) + { + var parameters = GetDictionaryFromClassProperties(requestParameters); + if (parameters.Count == 0) throw new ArgumentException("The call require at least one parameter", nameof(requestParameters)); + parameters.TryAdd("dataType", StringExtensions.PrependCharByUpperChar(dataType.ToString(), '_').ToLowerInvariant()); + parameters.TryAdd("format", "json"); + return GetJsonAsync("API_Public/stats", parameters, token); + } + + /// + /// Users can query the system to retrieve matching specimen data records for a combination of parameters. + /// + /// Parameters for the request, null values are ignored + /// + /// + public Task GetSpecimen(PublicApiParameters requestParameters, CancellationToken token = default) + { + var parameters = GetDictionaryFromClassProperties(requestParameters); + if (parameters.Count == 0) throw new ArgumentException("The call require at least one parameter", nameof(requestParameters)); + parameters.TryAdd("format", "json"); + return GetJsonAsync("API_Public/specimen", parameters, token); + } + + + /// + /// Users can query the system to retrieve matching sequences for a combination of parameters. + /// + /// Parameters for the request, null values are ignored + /// + /// + public async Task> GetSequences(PublicApiParameters requestParameters, CancellationToken token = default) + { + var parameters = GetDictionaryFromClassProperties(requestParameters); + if (parameters.Count == 0) throw new ArgumentException("The call require at least one parameter", nameof(requestParameters)); + using var response = await GetResponseAsync("API_Public/sequence", parameters, token).ConfigureAwait(false); + + var list = new List(); + + if (response.StatusCode == HttpStatusCode.NoContent) return list; + + var stream = await response.Content.ReadAsStreamAsync(token).ConfigureAwait(false); + var streamReader = new StreamReader(stream); + + while (await streamReader.ReadLineAsync().ConfigureAwait(false) is { } line1) + { + // Example: >FCCA006-09|Ogilbia|COI-5P|JQ841943 + if (line1.Length == 0 || line1[0] != '>') continue; + var splitLine = line1[1..].Split('|', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries); + if (splitLine.Length != 4) continue; + if (await streamReader.ReadLineAsync().ConfigureAwait(false) is not { } line2) break; + if (line2.Length < 10) continue; + if (line2[0] != '-' && !char.IsUpper(line2[0])) continue; + + list.Add(new SequenceData + { + ProcessId = splitLine[0], + Identification = splitLine[1], + Marker = splitLine[2], + Accession = splitLine[3], + Nucleotides = line2 + }); + } + + return list; + } + + /// + /// Users can query the system to retrieve matching specimen data and sequence records for a combination of parameters. + /// + /// Parameters for the request, null values are ignored + /// + /// + public Task GetSpecimenAndSequence(PublicApiParameters requestParameters, CancellationToken token = default) + { + var parameters = GetDictionaryFromClassProperties(requestParameters); + if (parameters.Count == 0) throw new ArgumentException("The call require at least one parameter", nameof(requestParameters)); + parameters.TryAdd("format", "json"); + return GetJsonAsync("API_Public/combined", parameters, token); + } + + /// + /// Users can query the system to retrieve matching specimen data records for a combination of parameters + /// + /// Parameters for the request, null values are ignored + /// The stream to copy the content to + /// + /// + public Task DownloadTraceFile(PublicApiParameters requestParameters, Stream stream, CancellationToken token = default) + { + var parameters = GetDictionaryFromClassProperties(requestParameters); + if (parameters.Count == 0) throw new ArgumentException("The call require at least one parameter", nameof(requestParameters)); + return DownloadAsync("API_Public/trace", parameters, stream, token); + } + + /// + /// Users can query the system to retrieve matching specimen data records for a combination of parameters + /// + /// Parameters for the request, null values are ignored + /// The destination file to save the content + /// + /// + public async Task DownloadTraceFile(PublicApiParameters requestParameters, string filePath, CancellationToken token = default) + { + var parameters = GetDictionaryFromClassProperties(requestParameters); + if (parameters.Count == 0) throw new ArgumentException("The call require at least one parameter", nameof(requestParameters)); + + await using var fs = File.Open(filePath, FileMode.Create); + await DownloadAsync("API_Public/trace", parameters, fs, token).ConfigureAwait(false); + } + + /// + /// Retrieves taxonomy information by BOLD taxonomy ID + /// + /// The taxID to search for. + /// Specifies the datatypes that will be returned. + /// + /// the top public matches (up to 100) can be retrieved by querying a COI sequence. + public Task GetTaxonData(int taxId, BoldDataTypesEnum dataTypes = BoldDataTypesEnum.Basic, CancellationToken token = default) + { + var parameters = new Dictionary + { + {"taxId", taxId}, + {"dataTypes", dataTypes}, + {"includeTree", false} + }; + return GetJsonAsync("API_Tax/TaxonData", parameters, token); + } + + /// + /// Retrieves taxonomy information by BOLD taxonomy ID and list containing information for parent taxa as well as the specified taxon + /// + /// The taxID to search for. + /// Specifies the datatypes that will be returned. + /// + /// the top public matches (up to 100) can be retrieved by querying a COI sequence. + public Task?> GetTaxonDataIncludeTree(int taxId, BoldDataTypesEnum dataTypes = BoldDataTypesEnum.Basic, CancellationToken token = default) + { + var parameters = new Dictionary + { + {"taxId", taxId}, + {"dataTypes", dataTypes}, + {"includeTree", true} + }; + return GetJsonAsync>("API_Tax/TaxonData", parameters, token); + } + + /// + /// Retrieves taxonomy information by taxon name. + /// + /// The tax name to search for. + /// Specifies if the search should only find exact matches. All searches are case sensitive. + /// + /// the top public matches (up to 100) can be retrieved by querying a COI sequence. + public Task GetTaxonData(string taxName, bool fuzzy = false, CancellationToken token = default) + { + var parameters = new Dictionary + { + {"taxName", taxName}, + {"fuzzy", fuzzy}, + }; + return GetJsonAsync("API_Tax/TaxonSearch", parameters, token); + } + + /// + /// Query the COI ID Engine. + /// + /// Specifies the identification database to query (db names are case sensitive). + /// Specifies the query sequence (sequences are not case sensitive). + /// + /// the top public matches (up to 100) can be retrieved by querying a COI sequence. + public Task GetCoiMatches(BoldDatabaseEnum db, string sequence, CancellationToken token = default) + { + var parameters = new Dictionary + { + {"db", db}, + {"sequence", sequence} + }; + return GetXmlAsync("Ids_xml", parameters, token); + } + + #endregion +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/CoiMatch.cs b/SpeciesDatabaseApi/BoldSystems/CoiMatch.cs new file mode 100644 index 0000000..388ce72 --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/CoiMatch.cs @@ -0,0 +1,69 @@ +using System; +using System.Xml.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +[XmlRoot("match")] +[XmlType("match")] +public class CoiMatch : IEquatable +{ + [XmlElement("ID")] + public string Id { get; set; } = string.Empty; + + [XmlElement("sequencedescription")] + public string SequenceDescription { get; set; } = string.Empty; + + [XmlElement("database")] + public string Database { get; set; } = string.Empty; + + [XmlElement("citation")] + public string Citation { get; set; } = string.Empty; + + [XmlElement("taxonomicidentification")] + public string TaxonomicIdentification { get; set; } = string.Empty; + + [XmlElement("similarity")] + public decimal Similarity { get; set; } + + [XmlElement("specimen")] + public Specimen Specimen { get; set; } = new(); + + /// + public override string ToString() + { + return $"{nameof(Id)}: {Id}, {nameof(SequenceDescription)}: {SequenceDescription}, {nameof(Database)}: {Database}, {nameof(Citation)}: {Citation}, {nameof(TaxonomicIdentification)}: {TaxonomicIdentification}, {nameof(Similarity)}: {Similarity}, {nameof(Specimen)}: {Specimen}"; + } + + public bool Equals(CoiMatch? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return Id == other.Id && SequenceDescription == other.SequenceDescription && Database == other.Database && Citation == other.Citation && TaxonomicIdentification == other.TaxonomicIdentification && Similarity == other.Similarity && Specimen.Equals(other.Specimen); + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((CoiMatch)obj); + } + + /// + public override int GetHashCode() + { + return HashCode.Combine(Id, SequenceDescription, Database, Citation, TaxonomicIdentification, Similarity, Specimen); + } + + public static bool operator ==(CoiMatch? left, CoiMatch? right) + { + return Equals(left, right); + } + + public static bool operator !=(CoiMatch? left, CoiMatch? right) + { + return !Equals(left, right); + } +} + diff --git a/SpeciesDatabaseApi/BoldSystems/CoiMatches.cs b/SpeciesDatabaseApi/BoldSystems/CoiMatches.cs new file mode 100644 index 0000000..1c55be6 --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/CoiMatches.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; +using System.Xml.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +[XmlRoot("matches")] +public class CoiMatches : List +{ + +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/CollectionEvent.cs b/SpeciesDatabaseApi/BoldSystems/CollectionEvent.cs new file mode 100644 index 0000000..232208f --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/CollectionEvent.cs @@ -0,0 +1,66 @@ +using System; +using System.Text.Json.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +public class CollectionEvent : IEquatable +{ + [JsonPropertyName("collectors")] + public string Collectors { get; set; } = string.Empty; + + [JsonPropertyName("country")] + public string Country { get; set; } = string.Empty; + + [JsonPropertyName("province_state")] + public string? ProvinceState { get; set; } + + [JsonPropertyName("sector")] + public string? Sector { get; set; } + + [JsonPropertyName("exactsite")] + public string? ExactSite { get; set; } + + [JsonPropertyName("coordinates")] + public Coordinate? Coordinates { get; set; } + + [JsonPropertyName("elev")] + public string? Elev { get; set; } + + /// + public override string ToString() + { + return $"{nameof(Collectors)}: {Collectors}, {nameof(Country)}: {Country}, {nameof(ProvinceState)}: {ProvinceState}, {nameof(Sector)}: {Sector}, {nameof(ExactSite)}: {ExactSite}, {nameof(Coordinates)}: {Coordinates}, {nameof(Elev)}: {Elev}"; + } + + public bool Equals(CollectionEvent? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return Collectors == other.Collectors && Country == other.Country && ProvinceState == other.ProvinceState && Sector == other.Sector && ExactSite == other.ExactSite && Equals(Coordinates, other.Coordinates) && Elev == other.Elev; + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((CollectionEvent)obj); + } + + /// + public override int GetHashCode() + { + return HashCode.Combine(Collectors, Country, ProvinceState, Sector, ExactSite, Coordinates, Elev); + } + + public static bool operator ==(CollectionEvent? left, CollectionEvent? right) + { + return Equals(left, right); + } + + public static bool operator !=(CollectionEvent? left, CollectionEvent? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/CollectionLocation.cs b/SpeciesDatabaseApi/BoldSystems/CollectionLocation.cs new file mode 100644 index 0000000..76ba287 --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/CollectionLocation.cs @@ -0,0 +1,52 @@ +using System; +using System.Xml.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +[XmlRoot("collectionlocation")] +public class CollectionLocation : IEquatable +{ + [XmlElement("country")] + public string? Country { get; set; } + + [XmlElement("coord")] + public Coordinate? Coordinate { get; set; } + + /// + public override string ToString() + { + return $"{nameof(Country)}: {Country}, {nameof(Coordinate)}: {Coordinate}"; + } + + public bool Equals(CollectionLocation? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return Country == other.Country && Equals(Coordinate, other.Coordinate); + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((CollectionLocation)obj); + } + + /// + public override int GetHashCode() + { + return HashCode.Combine(Country, Coordinate); + } + + public static bool operator ==(CollectionLocation? left, CollectionLocation? right) + { + return Equals(left, right); + } + + public static bool operator !=(CollectionLocation? left, CollectionLocation? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/Coordinate.cs b/SpeciesDatabaseApi/BoldSystems/Coordinate.cs new file mode 100644 index 0000000..5e1ceaf --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/Coordinate.cs @@ -0,0 +1,59 @@ +using System; +using System.Text.Json.Serialization; +using System.Xml.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +[XmlRoot("coord")] +public class Coordinate : IEquatable +{ + [XmlElement("lat")] + public decimal? Latitude { get; set; } + + [XmlElement("lon")] + public decimal? Longitude { get; set; } + + [JsonPropertyName("coord_source")] + public string? CoordSource { get; set; } + + [JsonPropertyName("coord_accuracy")] + public string? CoordAccuracy { get; set; } + + /// + public override string ToString() + { + return $"{nameof(Latitude)}: {Latitude}, {nameof(Longitude)}: {Longitude}, {nameof(CoordSource)}: {CoordSource}, {nameof(CoordAccuracy)}: {CoordAccuracy}"; + } + + public bool Equals(Coordinate? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return Latitude == other.Latitude && Longitude == other.Longitude && CoordSource == other.CoordSource && CoordAccuracy == other.CoordAccuracy; + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((Coordinate)obj); + } + + /// + public override int GetHashCode() + { + return HashCode.Combine(Latitude, Longitude, CoordSource, CoordAccuracy); + } + + public static bool operator ==(Coordinate? left, Coordinate? right) + { + return Equals(left, right); + } + + public static bool operator !=(Coordinate? left, Coordinate? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/Enumerations.cs b/SpeciesDatabaseApi/BoldSystems/Enumerations.cs new file mode 100644 index 0000000..a99aaa4 --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/Enumerations.cs @@ -0,0 +1,88 @@ +using System; + +namespace SpeciesDatabaseApi.BoldSystems; + +public enum BoldDatabaseEnum +{ + /// + /// Every COI barcode record on BOLD with a minimum sequence length of 500bp (warning: unvalidated library and includes records without species level identification).
+ /// This includes many species represented by only one or two specimens as well as all species with interim taxonomy.
+ /// This search only returns a list of the nearest matches and does not provide a probability of placement to a taxon. + ///
+ COX1, + + /// + /// Every COI barcode record with a species level identification and a minimum sequence length of 500bp.
+ /// This includes many species represented by only one or two specimens as well as all species with interim taxonomy. + ///
+ COX1_SPECIES, + + /// + /// All published COI records from BOLD and GenBank with a minimum sequence length of 500bp.
+ /// This library is a collection of records from the published projects section of BOLD. + ///
+ COX1_SPECIES_PUBLIC, + + /// + /// Subset of the Species library with a minimum sequence length of 640bp and containing both public and private records.
+ /// This library is intended for short sequence identification as it provides maximum overlap with short reads from the barcode region of COI. + ///
+ COX1_L640bp +} + +[Flags] +public enum BoldDataTypesEnum +{ + /// + /// basic taxonomy info: includes taxid, taxon name, tax rank, tax division, parent taxid, parent taxon name + /// + Basic = 1, + + /// + /// specimen and sequence statistics: includes public species count, public BIN count, public marker counts, public record count, specimen count, sequenced specimen count, barcode specimen count, species count, barcode species count + /// + Stats = 2, + + /// + /// collection site information: includes country, collection site map + /// + Geo = 4, + + /// + /// specimen images: includes copyright information, image URL, image metadata + /// + Images = 8, + + /// + /// sequencing labs: includes lab name, record count + /// + SequencingLabs = 16, + + /// + /// specimen depositories: includes depository name, record count + /// + Depository = 32, + + /// + /// information from third parties: includes Wikipedia summary, Wikipedia URL + /// + ThirdParty = 64, + + /// + /// all information: identical to specifying all data types at once + /// + All = 128, +} + +public enum BoldStatsDataType +{ + /// + /// Provides record counts by [BINs, Country, Storing Institution, Species] + /// + DrillDown, + + /// + /// Provides the total counts of [BINs, Countries, Storing Institutions, Orders, Families, Genus, Species] found by the query + /// + Overview +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/PublicApiParameters.cs b/SpeciesDatabaseApi/BoldSystems/PublicApiParameters.cs new file mode 100644 index 0000000..87c3604 --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/PublicApiParameters.cs @@ -0,0 +1,125 @@ +using System; +using System.Text.Json.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +/// +/// Query parameters for the public API +/// +public class PublicApiParameters : IEquatable +{ + /// + /// Returns all records containing matching taxa, defined in a pipe delimited list.
+ /// Taxa includes scientific names at phylum, class, order, family, subfamily, genus, and species levels. + ///
+ /// + /// Bos taurus returns all records matching the taxon Bos taurus.
+ /// Aves|Reptilia returns all records matching the taxa Aves or Reptilia + ///
+ [JsonPropertyName("taxon")] + public string? Taxon { get; set; } + + /// + /// Returns all records containing matching IDs, defined in a pipe delimited list. + /// IDs include Sample IDs, Process IDs, Museum IDs and Field IDs. + /// + /// + /// ids=ACRJP618-11|ACRJP619-11 returns records matching these Process IDs.
+ /// ids=Example 10|Example 11|Example 12 returns records matching these Sample IDs. + ///
+ [JsonPropertyName("ids")] + public string? Ids { get; set; } + + /// + /// Returns all records contained in matching BINs, defined in a pipe delimited list.
+ /// A BIN is defined by a Barcode Index Number URI. + ///
+ /// + /// bin=BOLD:AAA5125|BOLD:AAA5126 returns records matching these BIN URIs. + /// + [JsonPropertyName("bin")] + public string? Bin { get; set; } + + /// + /// Returns all records contained in matching projects or datasets, in a pipe delimited list.
+ /// Containers include project codes and dataset codes. + ///
+ /// + ///container=SSBAA|SSBAB returns records contained within matching projects.
+ /// container=DS-EZROM returns records contained within the matching dataset. + ///
+ [JsonPropertyName("container")] + public string? Container { get; set; } + + /// + /// Returns all records stored in matching institutions, defined in a pipe delimited list.
+ /// Institutions are the Specimen Storing Site. + ///
+ /// institutions=Biodiversity Institute of Ontario|York University returns records for specimens stored within matching institutions. + [JsonPropertyName("institutions")] + public string? Institutions { get; set; } + + /// + /// Returns all records containing matching researcher names, defined in a pipe delimited list.
+ /// Researchers include collectors and specimen identifiers. + ///
+ [JsonPropertyName("researchers")] + public string? Researchers { get; set; } + + /// + /// Returns all records collected in matching geographic sites, defined in a pipe delimited list.
+ /// Geographic sites includes countries and province/states. + ///
+ /// geo=Canada|Alaska returns records for specimens collected in the matching geographic sites. + [JsonPropertyName("geo")] + public string? Geo { get; set; } + + /// + /// Returns all specimen records containing matching marker codes defined in a pipe delimited list.
+ /// All markers for a specimen matching the search string will be returned. ie. A record with COI-5P and ITS will return sequence data for both markers even if only COI-5P was specified. + ///
+ /// + ///marker=matK|rbcL
+ /// marker=COI-5P + ///
+ [JsonPropertyName("marker")] + public string? Marker { get; set; } + + /// + public override string ToString() + { + return $"{nameof(Taxon)}: {Taxon}, {nameof(Ids)}: {Ids}, {nameof(Bin)}: {Bin}, {nameof(Container)}: {Container}, {nameof(Institutions)}: {Institutions}, {nameof(Researchers)}: {Researchers}, {nameof(Geo)}: {Geo}, {nameof(Marker)}: {Marker}"; + } + + public bool Equals(PublicApiParameters? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return Taxon == other.Taxon && Ids == other.Ids && Bin == other.Bin && Container == other.Container && Institutions == other.Institutions && Researchers == other.Researchers && Geo == other.Geo && Marker == other.Marker; + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((PublicApiParameters)obj); + } + + /// + public override int GetHashCode() + { + return HashCode.Combine(Taxon, Ids, Bin, Container, Institutions, Researchers, Geo, Marker); + } + + public static bool operator ==(PublicApiParameters? left, PublicApiParameters? right) + { + return Equals(left, right); + } + + public static bool operator !=(PublicApiParameters? left, PublicApiParameters? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/Sequence.cs b/SpeciesDatabaseApi/BoldSystems/Sequence.cs new file mode 100644 index 0000000..3afd562 --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/Sequence.cs @@ -0,0 +1,57 @@ +using System; +using System.Text.Json.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +public class Sequence : IEquatable +{ + [JsonPropertyName("sequenceID")] + public int SequenceId { get; set; } + + [JsonPropertyName("markercode")] + public string MarkerCode { get; set; } = string.Empty; + + [JsonPropertyName("genbank_accession")] + public string GenBankAccession { get; set; } = string.Empty; + + [JsonPropertyName("nucleotides")] + public string Nucleotides { get; set; } = string.Empty; + + /// + public override string ToString() + { + return $"{nameof(SequenceId)}: {SequenceId}, {nameof(MarkerCode)}: {MarkerCode}, {nameof(GenBankAccession)}: {GenBankAccession}, {nameof(Nucleotides)}: {Nucleotides}"; + } + + public bool Equals(Sequence? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return SequenceId == other.SequenceId && MarkerCode == other.MarkerCode && GenBankAccession == other.GenBankAccession && Nucleotides == other.Nucleotides; + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((Sequence)obj); + } + + /// + public override int GetHashCode() + { + return HashCode.Combine(SequenceId, MarkerCode, GenBankAccession, Nucleotides); + } + + public static bool operator ==(Sequence? left, Sequence? right) + { + return Equals(left, right); + } + + public static bool operator !=(Sequence? left, Sequence? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/SequenceData.cs b/SpeciesDatabaseApi/BoldSystems/SequenceData.cs new file mode 100644 index 0000000..33ad12b --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/SequenceData.cs @@ -0,0 +1,60 @@ +using System; +using System.Text.Json.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +public class SequenceData : IEquatable +{ + [JsonPropertyName("processid")] + public string ProcessId { get; set; } = string.Empty; + + [JsonPropertyName("identification")] + public string Identification { get; set; } = string.Empty; + + [JsonPropertyName("marker")] + public string Marker { get; set; } = string.Empty; + + [JsonPropertyName("accession")] + public string Accession { get; set; } = string.Empty; + + [JsonPropertyName("nucleotides")] + public string Nucleotides { get; set; } = string.Empty; + + /// + public override string ToString() + { + return $"{nameof(ProcessId)}: {ProcessId}, {nameof(Identification)}: {Identification}, {nameof(Marker)}: {Marker}, {nameof(Accession)}: {Accession}, {nameof(Nucleotides)}: {Nucleotides}"; + } + + public bool Equals(SequenceData? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return ProcessId == other.ProcessId && Identification == other.Identification && Marker == other.Marker && Accession == other.Accession && Nucleotides == other.Nucleotides; + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((SequenceData)obj); + } + + /// + public override int GetHashCode() + { + return HashCode.Combine(ProcessId, Identification, Marker, Accession, Nucleotides); + } + + public static bool operator ==(SequenceData? left, SequenceData? right) + { + return Equals(left, right); + } + + public static bool operator !=(SequenceData? left, SequenceData? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/Sequences.cs b/SpeciesDatabaseApi/BoldSystems/Sequences.cs new file mode 100644 index 0000000..d4ccd91 --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/Sequences.cs @@ -0,0 +1,48 @@ +using System; +using System.Text.Json.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +public class Sequences : IEquatable +{ + [JsonPropertyName("sequence")] + public Sequence[] Items { get; set; } = Array.Empty(); + + /// + public override string ToString() + { + return $"{nameof(Items)}: {Items.Length}"; + } + + /// + public bool Equals(Sequences? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return Items.Equals(other.Items); + } + + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((Sequences)obj); + } + + /// + public override int GetHashCode() + { + return Items.GetHashCode(); + } + + public static bool operator ==(Sequences? left, Sequences? right) + { + return Equals(left, right); + } + + public static bool operator !=(Sequences? left, Sequences? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/Specimen.cs b/SpeciesDatabaseApi/BoldSystems/Specimen.cs new file mode 100644 index 0000000..e01294f --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/Specimen.cs @@ -0,0 +1,52 @@ +using System; +using System.Xml.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +[XmlRoot("specimen")] +public class Specimen : IEquatable +{ + [XmlElement("url")] + public string? Url { get; set; } + + [XmlElement("collectionlocation")] + CollectionLocation? CollectionLocation { get; set; } + + /// + public override string ToString() + { + return $"{nameof(Url)}: {Url}, {nameof(CollectionLocation)}: {CollectionLocation}"; + } + + public bool Equals(Specimen? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return Equals(Url, other.Url) && Equals(CollectionLocation, other.CollectionLocation); + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((Specimen)obj); + } + + /// + public override int GetHashCode() + { + return HashCode.Combine(Url, CollectionLocation); + } + + public static bool operator ==(Specimen? left, Specimen? right) + { + return Equals(left, right); + } + + public static bool operator !=(Specimen? left, Specimen? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/SpecimenDesc.cs b/SpeciesDatabaseApi/BoldSystems/SpecimenDesc.cs new file mode 100644 index 0000000..af36c90 --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/SpecimenDesc.cs @@ -0,0 +1,63 @@ +using System; +using System.Text.Json.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +public class SpecimenDesc : IEquatable +{ + [JsonPropertyName("voucher_status")] + public string VoucherStatus { get; set; } = string.Empty; + + [JsonPropertyName("reproduction")] + public char? Reproduction { get; set; } + + [JsonPropertyName("sex")] + public char? Sex { get; set; } + + [JsonPropertyName("lifestage")] + public string? LifeStage { get; set; } + + [JsonPropertyName("tissue_type")] + public string? TissueType { get; set; } + + [JsonPropertyName("extrainfo")] + public string? ExtraInfo { get; set; } + + /// + public override string ToString() + { + return $"{nameof(VoucherStatus)}: {VoucherStatus}, {nameof(Reproduction)}: {Reproduction}, {nameof(Sex)}: {Sex}, {nameof(LifeStage)}: {LifeStage}, {nameof(TissueType)}: {TissueType}, {nameof(ExtraInfo)}: {ExtraInfo}"; + } + + public bool Equals(SpecimenDesc? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return VoucherStatus == other.VoucherStatus && Reproduction == other.Reproduction && Sex == other.Sex && LifeStage == other.LifeStage && TissueType == other.TissueType && ExtraInfo == other.ExtraInfo; + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((SpecimenDesc)obj); + } + + /// + public override int GetHashCode() + { + return HashCode.Combine(VoucherStatus, Reproduction, Sex, LifeStage, TissueType, ExtraInfo); + } + + public static bool operator ==(SpecimenDesc? left, SpecimenDesc? right) + { + return Equals(left, right); + } + + public static bool operator !=(SpecimenDesc? left, SpecimenDesc? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/SpecimenIdentifiers.cs b/SpeciesDatabaseApi/BoldSystems/SpecimenIdentifiers.cs new file mode 100644 index 0000000..30aa862 --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/SpecimenIdentifiers.cs @@ -0,0 +1,57 @@ +using System; +using System.Text.Json.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +public class SpecimenIdentifiers : IEquatable +{ + [JsonPropertyName("sampleid")] + public string SampleId { get; set; } = string.Empty; + + [JsonPropertyName("catalognum")] + public string CatalogNum { get; set; } = string.Empty; + + [JsonPropertyName("fieldnum")] + public string FieldNum { get; set; } = string.Empty; + + [JsonPropertyName("institution_storing")] + public string InstitutionStoring { get; set; } = string.Empty; + + /// + public override string ToString() + { + return $"{nameof(SampleId)}: {SampleId}, {nameof(CatalogNum)}: {CatalogNum}, {nameof(FieldNum)}: {FieldNum}, {nameof(InstitutionStoring)}: {InstitutionStoring}"; + } + + public bool Equals(SpecimenIdentifiers? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return SampleId == other.SampleId && CatalogNum == other.CatalogNum && FieldNum == other.FieldNum && InstitutionStoring == other.InstitutionStoring; + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((SpecimenIdentifiers)obj); + } + + /// + public override int GetHashCode() + { + return HashCode.Combine(SampleId, CatalogNum, FieldNum, InstitutionStoring); + } + + public static bool operator ==(SpecimenIdentifiers? left, SpecimenIdentifiers? right) + { + return Equals(left, right); + } + + public static bool operator !=(SpecimenIdentifiers? left, SpecimenIdentifiers? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/SpecimenRecord.cs b/SpeciesDatabaseApi/BoldSystems/SpecimenRecord.cs new file mode 100644 index 0000000..5d1cc8c --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/SpecimenRecord.cs @@ -0,0 +1,86 @@ +using System; +using System.Text.Json.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +public class SpecimenRecord : IEquatable +{ + [JsonPropertyName("record_id")] + public string RecordId { get; set; } = string.Empty; + + [JsonPropertyName("processid")] + public string ProcessId { get; set; } = string.Empty; + + [JsonPropertyName("bin_uri")] + public string? BinUri { get; set; } + + [JsonPropertyName("specimen_identifiers")] + public SpecimenIdentifiers SpecimenIdentifiers { get; set; } = new(); + + [JsonPropertyName("taxomony")] + public Taxomony Taxomony { get; set; } = new(); + + [JsonPropertyName("specimen_desc")] + public SpecimenDesc SpecimenDesc { get; set; } = new (); + + [JsonPropertyName("collection_event")] + public CollectionEvent CollectionEvent { get; set; } = new(); + + [JsonPropertyName("tracefiles")] + public TraceFiles? TraceFiles { get; set; } + + [JsonPropertyName("sequences")] + public Sequences? Sequences { get; set; } + + [JsonPropertyName("notes")] + public string? Notes { get; set; } + + /// + public override string ToString() + { + return $"{nameof(RecordId)}: {RecordId}, {nameof(ProcessId)}: {ProcessId}, {nameof(BinUri)}: {BinUri}, {nameof(SpecimenIdentifiers)}: {SpecimenIdentifiers}, {nameof(Taxomony)}: {Taxomony}, {nameof(SpecimenDesc)}: {SpecimenDesc}, {nameof(CollectionEvent)}: {CollectionEvent}, {nameof(TraceFiles)}: {TraceFiles}, {nameof(Sequences)}: {Sequences}, {nameof(Notes)}: {Notes}"; + } + + public bool Equals(SpecimenRecord? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return RecordId == other.RecordId && ProcessId == other.ProcessId && BinUri == other.BinUri && SpecimenIdentifiers.Equals(other.SpecimenIdentifiers) && Taxomony.Equals(other.Taxomony) && SpecimenDesc.Equals(other.SpecimenDesc) && CollectionEvent.Equals(other.CollectionEvent) && Equals(TraceFiles, other.TraceFiles) && Equals(Sequences, other.Sequences) && Notes == other.Notes; + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((SpecimenRecord)obj); + } + + /// + public override int GetHashCode() + { + var hashCode = new HashCode(); + hashCode.Add(RecordId); + hashCode.Add(ProcessId); + hashCode.Add(BinUri); + hashCode.Add(SpecimenIdentifiers); + hashCode.Add(Taxomony); + hashCode.Add(SpecimenDesc); + hashCode.Add(CollectionEvent); + hashCode.Add(TraceFiles); + hashCode.Add(Sequences); + hashCode.Add(Notes); + return hashCode.ToHashCode(); + } + + public static bool operator ==(SpecimenRecord? left, SpecimenRecord? right) + { + return Equals(left, right); + } + + public static bool operator !=(SpecimenRecord? left, SpecimenRecord? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/SpecimenResults.cs b/SpeciesDatabaseApi/BoldSystems/SpecimenResults.cs new file mode 100644 index 0000000..cac1c25 --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/SpecimenResults.cs @@ -0,0 +1,48 @@ +using System; +using System.Text.Json.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +public class SpecimenResults : IEquatable +{ + [JsonPropertyName("bold_records")] + public BoldRecords BoldRecords { get; set; } = new(); + + /// + public override string ToString() + { + return $"{nameof(BoldRecords)}: {BoldRecords}"; + } + + public bool Equals(SpecimenResults? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return BoldRecords.Equals(other.BoldRecords); + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((SpecimenResults)obj); + } + + /// + public override int GetHashCode() + { + return BoldRecords.GetHashCode(); + } + + public static bool operator ==(SpecimenResults? left, SpecimenResults? right) + { + return Equals(left, right); + } + + public static bool operator !=(SpecimenResults? left, SpecimenResults? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/Stat.cs b/SpeciesDatabaseApi/BoldSystems/Stat.cs new file mode 100644 index 0000000..9988cb2 --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/Stat.cs @@ -0,0 +1,52 @@ +using System; +using System.Text.Json.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +public class Stat : IEquatable +{ + [JsonPropertyName("count")] + public int Count { get; set; } + + [JsonPropertyName("drill_down")] + public StatDrillDown? DrillDown { get; set; } + + + /// + public override string ToString() + { + return $"{nameof(Count)}: {Count}, {nameof(DrillDown)}: {DrillDown}"; + } + + public bool Equals(Stat? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return Count == other.Count && Equals(DrillDown, other.DrillDown); + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((Stat)obj); + } + + /// + public override int GetHashCode() + { + return HashCode.Combine(Count, DrillDown); + } + + public static bool operator ==(Stat? left, Stat? right) + { + return Equals(left, right); + } + + public static bool operator !=(Stat? left, Stat? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/StatDrillDown.cs b/SpeciesDatabaseApi/BoldSystems/StatDrillDown.cs new file mode 100644 index 0000000..7a98f78 --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/StatDrillDown.cs @@ -0,0 +1,48 @@ +using System; +using System.Text.Json.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +public class StatDrillDown : IEquatable +{ + [JsonPropertyName("entity")] + public StatEntity[] Entity { get; set; } = Array.Empty(); + + /// + public override string ToString() + { + return $"{nameof(Entity)}: {Entity}"; + } + + public bool Equals(StatDrillDown? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return Entity.Equals(other.Entity); + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((StatDrillDown)obj); + } + + /// + public override int GetHashCode() + { + return Entity.GetHashCode(); + } + + public static bool operator ==(StatDrillDown? left, StatDrillDown? right) + { + return Equals(left, right); + } + + public static bool operator !=(StatDrillDown? left, StatDrillDown? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/StatEntity.cs b/SpeciesDatabaseApi/BoldSystems/StatEntity.cs new file mode 100644 index 0000000..3cda389 --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/StatEntity.cs @@ -0,0 +1,51 @@ +using System; +using System.Text.Json.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +public class StatEntity : IEquatable +{ + [JsonPropertyName("name")] + public string Name { get; set; } = string.Empty; + + [JsonPropertyName("records")] + public int Records { get; set; } + + /// + public override string ToString() + { + return $"{nameof(Name)}: {Name}, {nameof(Records)}: {Records}"; + } + + public bool Equals(StatEntity? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return Name == other.Name && Records == other.Records; + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((StatEntity)obj); + } + + /// + public override int GetHashCode() + { + return HashCode.Combine(Name, Records); + } + + public static bool operator ==(StatEntity? left, StatEntity? right) + { + return Equals(left, right); + } + + public static bool operator !=(StatEntity? left, StatEntity? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/Stats.cs b/SpeciesDatabaseApi/BoldSystems/Stats.cs new file mode 100644 index 0000000..7bd190b --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/Stats.cs @@ -0,0 +1,82 @@ +using System; +using System.Text.Json.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +public class Stats : IEquatable +{ + [JsonPropertyName("total_records")] + public int TotalRecords { get; set; } + + [JsonPropertyName("records_with_species_name")] + public int RecordsWithSpeciesName { get; set; } + + [JsonPropertyName("bins")] + public Stat Bins { get; set; } = new(); + + [JsonPropertyName("countries")] + public Stat Countries { get; set; } = new(); + + [JsonPropertyName("depositories")] + public Stat Depositories { get; set; } = new(); + + [JsonPropertyName("order")] + public Stat Order { get; set; } = new(); + + [JsonPropertyName("family")] + public Stat Family { get; set; } = new(); + + [JsonPropertyName("genus")] + public Stat Genus { get; set; } = new(); + + [JsonPropertyName("species")] + public Stat Species { get; set; } = new(); + + /// + public override string ToString() + { + return $"{nameof(TotalRecords)}: {TotalRecords}, {nameof(RecordsWithSpeciesName)}: {RecordsWithSpeciesName}, {nameof(Bins)}: {Bins}, {nameof(Countries)}: {Countries}, {nameof(Depositories)}: {Depositories}, {nameof(Order)}: {Order}, {nameof(Family)}: {Family}, {nameof(Genus)}: {Genus}, {nameof(Species)}: {Species}"; + } + + public bool Equals(Stats? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return TotalRecords == other.TotalRecords && RecordsWithSpeciesName == other.RecordsWithSpeciesName && Bins.Equals(other.Bins) && Countries.Equals(other.Countries) && Depositories.Equals(other.Depositories) && Order.Equals(other.Order) && Family.Equals(other.Family) && Genus.Equals(other.Genus) && Species.Equals(other.Species); + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((Stats)obj); + } + + /// + public override int GetHashCode() + { + var hashCode = new HashCode(); + hashCode.Add(TotalRecords); + hashCode.Add(RecordsWithSpeciesName); + hashCode.Add(Bins); + hashCode.Add(Countries); + hashCode.Add(Depositories); + hashCode.Add(Order); + hashCode.Add(Family); + hashCode.Add(Genus); + hashCode.Add(Species); + return hashCode.ToHashCode(); + } + + public static bool operator ==(Stats? left, Stats? right) + { + return Equals(left, right); + } + + public static bool operator !=(Stats? left, Stats? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/Taxomony.cs b/SpeciesDatabaseApi/BoldSystems/Taxomony.cs new file mode 100644 index 0000000..cc12e27 --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/Taxomony.cs @@ -0,0 +1,66 @@ +using System; +using System.Text.Json.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +public class Taxomony : IEquatable +{ + [JsonPropertyName("identification_provided_by")] + public string IdentificationProvidedBy { get; set; } = string.Empty; + + [JsonPropertyName("phylum")] + public TaxomonyRank? Phylum { get; set; } + + [JsonPropertyName("class")] + public TaxomonyRank? Class { get; set; } + + [JsonPropertyName("order")] + public TaxomonyRank? Order { get; set; } + + [JsonPropertyName("family")] + public TaxomonyRank? Family { get; set; } + + [JsonPropertyName("genus")] + public TaxomonyRank? Genus { get; set; } + + [JsonPropertyName("species")] + public TaxomonyRank? Species { get; set; } + + /// + public override string ToString() + { + return $"{nameof(IdentificationProvidedBy)}: {IdentificationProvidedBy}, {nameof(Phylum)}: {Phylum}, {nameof(Class)}: {Class}, {nameof(Order)}: {Order}, {nameof(Family)}: {Family}, {nameof(Genus)}: {Genus}, {nameof(Species)}: {Species}"; + } + + public bool Equals(Taxomony? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return IdentificationProvidedBy == other.IdentificationProvidedBy && Equals(Phylum, other.Phylum) && Equals(Class, other.Class) && Equals(Order, other.Order) && Equals(Family, other.Family) && Equals(Genus, other.Genus) && Equals(Species, other.Species); + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((Taxomony)obj); + } + + /// + public override int GetHashCode() + { + return HashCode.Combine(IdentificationProvidedBy, Phylum, Class, Order, Family, Genus, Species); + } + + public static bool operator ==(Taxomony? left, Taxomony? right) + { + return Equals(left, right); + } + + public static bool operator !=(Taxomony? left, Taxomony? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/TaxomonyRank.cs b/SpeciesDatabaseApi/BoldSystems/TaxomonyRank.cs new file mode 100644 index 0000000..9042734 --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/TaxomonyRank.cs @@ -0,0 +1,48 @@ +using System; +using System.Text.Json.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +public class TaxomonyRank : IEquatable +{ + [JsonPropertyName("taxon")] + public Taxon Taxon { get; set; } = new(); + + /// + public override string ToString() + { + return $"{nameof(Taxon)}: {Taxon}"; + } + + public bool Equals(TaxomonyRank? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return Taxon.Equals(other.Taxon); + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((TaxomonyRank)obj); + } + + /// + public override int GetHashCode() + { + return Taxon.GetHashCode(); + } + + public static bool operator ==(TaxomonyRank? left, TaxomonyRank? right) + { + return Equals(left, right); + } + + public static bool operator !=(TaxomonyRank? left, TaxomonyRank? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/Taxon.cs b/SpeciesDatabaseApi/BoldSystems/Taxon.cs new file mode 100644 index 0000000..5454d9d --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/Taxon.cs @@ -0,0 +1,51 @@ +using System; +using System.Text.Json.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +public class Taxon : IEquatable +{ + [JsonPropertyName("taxID")] + public int TaxId { get; set; } + + [JsonPropertyName("name")] + public string Name { get; set; } = string.Empty; + + /// + public override string ToString() + { + return $"{nameof(TaxId)}: {TaxId}, {nameof(Name)}: {Name}"; + } + + public bool Equals(Taxon? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return TaxId == other.TaxId && Name == other.Name; + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((Taxon)obj); + } + + /// + public override int GetHashCode() + { + return HashCode.Combine(TaxId, Name); + } + + public static bool operator ==(Taxon? left, Taxon? right) + { + return Equals(left, right); + } + + public static bool operator !=(Taxon? left, Taxon? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/TaxonData.cs b/SpeciesDatabaseApi/BoldSystems/TaxonData.cs new file mode 100644 index 0000000..d9e5e67 --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/TaxonData.cs @@ -0,0 +1,137 @@ +using System; +using System.Collections.Generic; +using System.Text.Json.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +public class TaxonData : TaxonDataBasic, IEquatable +{ + #region Stats + + [JsonPropertyName("stats")] + public TaxonDataStats? Stats { get; set; } + + + [JsonPropertyName("publicrecords")] + public int? PublicRecords { get; set; } + + [JsonPropertyName("specimenrecords")] + public int? SpecimenRecords { get; set; } + + [JsonPropertyName("sequencedspecimens")] + public int? SequencedSpecimens { get; set; } + + [JsonPropertyName("barcodespecimens")] + public int? BarcodeSpecimens { get; set; } + + [JsonPropertyName("species")] + public int? Species { get; set; } + + [JsonPropertyName("barcodespecies")] + public int? BarcodeSpecies { get; set; } + #endregion + + #region Geo + + [JsonPropertyName("country")] + public Dictionary? Country { get; set; } + + [JsonPropertyName("sitemap")] + public string? Sitemap { get; set; } + #endregion + + #region Images + + [JsonPropertyName("images")] + public TaxonDataImage? Images { get; set; } + + [JsonPropertyName("representitive_image")] + public TaxonDataRepresentitiveImage? RepresentitiveImage { get; set; } + + #endregion + + #region SequencingLabs + + /// + /// sequencing labs: includes lab name, record count + /// + [JsonPropertyName("sequencinglabs")] + public Dictionary? SequencingLabs { get; set; } + + #endregion + + #region Depository + + /// + /// specimen depositories: includes depository name, record count + /// + [JsonPropertyName("depository")] + public Dictionary? Depository { get; set; } + + #endregion + + #region Thirdparty + + [JsonPropertyName("wikipedia_summary")] + public string? WikipediaSummary { get; set; } + + [JsonPropertyName("wikipedia_link")] + public string? WikipediaLink { get; set; } + + #endregion + + /// + public override string ToString() + { + return $"{base.ToString()}, {nameof(Stats)}: {Stats}, {nameof(PublicRecords)}: {PublicRecords}, {nameof(SpecimenRecords)}: {SpecimenRecords}, {nameof(SequencedSpecimens)}: {SequencedSpecimens}, {nameof(BarcodeSpecimens)}: {BarcodeSpecimens}, {nameof(Species)}: {Species}, {nameof(BarcodeSpecies)}: {BarcodeSpecies}, {nameof(Country)}: {Country}, {nameof(Sitemap)}: {Sitemap}, {nameof(Images)}: {Images}, {nameof(RepresentitiveImage)}: {RepresentitiveImage}, {nameof(SequencingLabs)}: {SequencingLabs}, {nameof(Depository)}: {Depository}, {nameof(WikipediaSummary)}: {WikipediaSummary}, {nameof(WikipediaLink)}: {WikipediaLink}"; + } + + public bool Equals(TaxonData? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return base.Equals(other) && Equals(Stats, other.Stats) && PublicRecords == other.PublicRecords && SpecimenRecords == other.SpecimenRecords && SequencedSpecimens == other.SequencedSpecimens && BarcodeSpecimens == other.BarcodeSpecimens && Species == other.Species && BarcodeSpecies == other.BarcodeSpecies && Equals(Country, other.Country) && Sitemap == other.Sitemap && Equals(Images, other.Images) && Equals(RepresentitiveImage, other.RepresentitiveImage) && Equals(SequencingLabs, other.SequencingLabs) && Equals(Depository, other.Depository) && WikipediaSummary == other.WikipediaSummary && WikipediaLink == other.WikipediaLink; + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((TaxonData)obj); + } + + /// + public override int GetHashCode() + { + var hashCode = new HashCode(); + hashCode.Add(base.GetHashCode()); + hashCode.Add(Stats); + hashCode.Add(PublicRecords); + hashCode.Add(SpecimenRecords); + hashCode.Add(SequencedSpecimens); + hashCode.Add(BarcodeSpecimens); + hashCode.Add(Species); + hashCode.Add(BarcodeSpecies); + hashCode.Add(Country); + hashCode.Add(Sitemap); + hashCode.Add(Images); + hashCode.Add(RepresentitiveImage); + hashCode.Add(SequencingLabs); + hashCode.Add(Depository); + hashCode.Add(WikipediaSummary); + hashCode.Add(WikipediaLink); + return hashCode.ToHashCode(); + } + + public static bool operator ==(TaxonData? left, TaxonData? right) + { + return Equals(left, right); + } + + public static bool operator !=(TaxonData? left, TaxonData? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/TaxonDataBasic.cs b/SpeciesDatabaseApi/BoldSystems/TaxonDataBasic.cs new file mode 100644 index 0000000..a789623 --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/TaxonDataBasic.cs @@ -0,0 +1,63 @@ +using System; +using System.Text.Json.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +public class TaxonDataBasic : IEquatable +{ + [JsonPropertyName("taxid")] + public int? TaxId { get; set; } + + [JsonPropertyName("taxon")] + public string? Taxon { get; set; } + + [JsonPropertyName("tax_rank")] + public string? TaxRank { get; set; } + + [JsonPropertyName("tax_division")] + public string? TaxDivision { get; set; } + + [JsonPropertyName("parentid")] + public int? ParentId { get; set; } + + [JsonPropertyName("parentname")] + public string? ParentName { get; set; } + + /// + public override string ToString() + { + return $"{nameof(TaxId)}: {TaxId}, {nameof(Taxon)}: {Taxon}, {nameof(TaxRank)}: {TaxRank}, {nameof(TaxDivision)}: {TaxDivision}, {nameof(ParentId)}: {ParentId}, {nameof(ParentName)}: {ParentName}"; + } + + public bool Equals(TaxonDataBasic? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return TaxId == other.TaxId && Taxon == other.Taxon && TaxRank == other.TaxRank && TaxDivision == other.TaxDivision && ParentId == other.ParentId && ParentName == other.ParentName; + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((TaxonDataBasic)obj); + } + + /// + public override int GetHashCode() + { + return HashCode.Combine(TaxId, Taxon, TaxRank, TaxDivision, ParentId, ParentName); + } + + public static bool operator ==(TaxonDataBasic? left, TaxonDataBasic? right) + { + return Equals(left, right); + } + + public static bool operator !=(TaxonDataBasic? left, TaxonDataBasic? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/TaxonDataImage.cs b/SpeciesDatabaseApi/BoldSystems/TaxonDataImage.cs new file mode 100644 index 0000000..5ac19b3 --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/TaxonDataImage.cs @@ -0,0 +1,123 @@ +using System; +using System.Text.Json.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +public class TaxonDataImage : IEquatable +{ + + [JsonPropertyName("copyright_institution")] + public string? CopyrightInstitution { get; set; } + + [JsonPropertyName("specimenid")] + public int? SpecimenId { get; set; } + + [JsonPropertyName("copyright")] + public string? Copyright { get; set; } + + [JsonPropertyName("imagequality")] + public int Imagequality { get; set; } + + [JsonPropertyName("photographer")] + public string? Photographer { get; set; } + + [JsonPropertyName("image")] + public string Image { get; set; } = string.Empty; + + [JsonPropertyName("fieldnum")] + public string? FieldNum { get; set; } + + [JsonPropertyName("sampleid")] + public string? SampleId { get; set; } + + [JsonPropertyName("mam_uri")] + public string? MamUri { get; set; } + + [JsonPropertyName("copyright_license")] + public string? CopyrightLicense { get; set; } + + [JsonPropertyName("meta")] + public string? Meta { get; set; } + + [JsonPropertyName("copyright_holder")] + public string? CopyrightHolder { get; set; } + + [JsonPropertyName("catalognum")] + public string? CatalogNum { get; set; } + + [JsonPropertyName("copyright_contact")] + public string? CopyrightContact { get; set; } + + [JsonPropertyName("copyright_year")] + public int? CopyrightYear { get; set; } + + [JsonPropertyName("taxonrep")] + public string? TaxonRep { get; set; } + + [JsonPropertyName("aspectratio")] + public decimal AspectRatio { get; set; } + + [JsonPropertyName("original")] + public bool Original { get; set; } + + [JsonPropertyName("external")] + public string? External { get; set; } + + /// + public override string ToString() + { + return $"{nameof(CopyrightInstitution)}: {CopyrightInstitution}, {nameof(SpecimenId)}: {SpecimenId}, {nameof(Copyright)}: {Copyright}, {nameof(Imagequality)}: {Imagequality}, {nameof(Photographer)}: {Photographer}, {nameof(Image)}: {Image}, {nameof(FieldNum)}: {FieldNum}, {nameof(SampleId)}: {SampleId}, {nameof(MamUri)}: {MamUri}, {nameof(CopyrightLicense)}: {CopyrightLicense}, {nameof(Meta)}: {Meta}, {nameof(CopyrightHolder)}: {CopyrightHolder}, {nameof(CatalogNum)}: {CatalogNum}, {nameof(CopyrightContact)}: {CopyrightContact}, {nameof(CopyrightYear)}: {CopyrightYear}, {nameof(TaxonRep)}: {TaxonRep}, {nameof(AspectRatio)}: {AspectRatio}, {nameof(Original)}: {Original}, {nameof(External)}: {External}"; + } + + public bool Equals(TaxonDataImage? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return CopyrightInstitution == other.CopyrightInstitution && SpecimenId == other.SpecimenId && Copyright == other.Copyright && Imagequality == other.Imagequality && Photographer == other.Photographer && Image == other.Image && FieldNum == other.FieldNum && SampleId == other.SampleId && MamUri == other.MamUri && CopyrightLicense == other.CopyrightLicense && Meta == other.Meta && CopyrightHolder == other.CopyrightHolder && CatalogNum == other.CatalogNum && CopyrightContact == other.CopyrightContact && CopyrightYear == other.CopyrightYear && TaxonRep == other.TaxonRep && AspectRatio == other.AspectRatio && Original == other.Original && External == other.External; + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((TaxonDataImage)obj); + } + + /// + public override int GetHashCode() + { + var hashCode = new HashCode(); + hashCode.Add(CopyrightInstitution); + hashCode.Add(SpecimenId); + hashCode.Add(Copyright); + hashCode.Add(Imagequality); + hashCode.Add(Photographer); + hashCode.Add(Image); + hashCode.Add(FieldNum); + hashCode.Add(SampleId); + hashCode.Add(MamUri); + hashCode.Add(CopyrightLicense); + hashCode.Add(Meta); + hashCode.Add(CopyrightHolder); + hashCode.Add(CatalogNum); + hashCode.Add(CopyrightContact); + hashCode.Add(CopyrightYear); + hashCode.Add(TaxonRep); + hashCode.Add(AspectRatio); + hashCode.Add(Original); + hashCode.Add(External); + return hashCode.ToHashCode(); + } + + public static bool operator ==(TaxonDataImage? left, TaxonDataImage? right) + { + return Equals(left, right); + } + + public static bool operator !=(TaxonDataImage? left, TaxonDataImage? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/TaxonDataRepresentitiveImage.cs b/SpeciesDatabaseApi/BoldSystems/TaxonDataRepresentitiveImage.cs new file mode 100644 index 0000000..64b04e4 --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/TaxonDataRepresentitiveImage.cs @@ -0,0 +1,52 @@ +using System; +using System.Text.Json.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +public class TaxonDataRepresentitiveImage : IEquatable +{ + [JsonPropertyName("image")] + public string Image { get; set; } = string.Empty; + + [JsonPropertyName("apectratio")] + public decimal AspectRatio { get; set; } + + /// + public override string ToString() + { + return $"{nameof(Image)}: {Image}, {nameof(AspectRatio)}: {AspectRatio}"; + } + + + public bool Equals(TaxonDataRepresentitiveImage? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return Image == other.Image && AspectRatio == other.AspectRatio; + } + /// + + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((TaxonDataRepresentitiveImage)obj); + } + + /// + public override int GetHashCode() + { + return HashCode.Combine(Image, AspectRatio); + } + + public static bool operator ==(TaxonDataRepresentitiveImage? left, TaxonDataRepresentitiveImage? right) + { + return Equals(left, right); + } + + public static bool operator !=(TaxonDataRepresentitiveImage? left, TaxonDataRepresentitiveImage? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/TaxonDataStats.cs b/SpeciesDatabaseApi/BoldSystems/TaxonDataStats.cs new file mode 100644 index 0000000..2256112 --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/TaxonDataStats.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using System.Text.Json.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +public class TaxonDataStats : IEquatable +{ + [JsonPropertyName("publicspecies")] + public int PublicSpecies { get; set; } + + [JsonPropertyName("publicbins")] + public int PublicBins { get; set; } + + [JsonPropertyName("publicmarkersequences")] + public Dictionary? PublicMarkerSequences { get; set; } + + /// + public override string ToString() + { + return $"{nameof(PublicSpecies)}: {PublicSpecies}, {nameof(PublicBins)}: {PublicBins}, {nameof(PublicMarkerSequences)}: {PublicMarkerSequences}"; + } + + public bool Equals(TaxonDataStats? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return PublicSpecies == other.PublicSpecies && PublicBins == other.PublicBins && Equals(PublicMarkerSequences, other.PublicMarkerSequences); + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((TaxonDataStats)obj); + } + + /// + public override int GetHashCode() + { + return HashCode.Combine(PublicSpecies, PublicBins, PublicMarkerSequences); + } + + public static bool operator ==(TaxonDataStats? left, TaxonDataStats? right) + { + return Equals(left, right); + } + + public static bool operator !=(TaxonDataStats? left, TaxonDataStats? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/TaxonSearch.cs b/SpeciesDatabaseApi/BoldSystems/TaxonSearch.cs new file mode 100644 index 0000000..0366734 --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/TaxonSearch.cs @@ -0,0 +1,51 @@ +using System; +using System.Text.Json.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +public class TaxonSearch : IEquatable +{ + [JsonPropertyName("top_matched_names")] + public TaxonData[] TopMatchedNames { get; set; } = Array.Empty(); + + [JsonPropertyName("total_matched_names")] + public int TotalMatchedNames { get; set; } + + /// + public override string ToString() + { + return $"{nameof(TopMatchedNames)}: {TopMatchedNames}, {nameof(TotalMatchedNames)}: {TotalMatchedNames}"; + } + + public bool Equals(TaxonSearch? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return TopMatchedNames.Equals(other.TopMatchedNames) && TotalMatchedNames == other.TotalMatchedNames; + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((TaxonSearch)obj); + } + + /// + public override int GetHashCode() + { + return HashCode.Combine(TopMatchedNames, TotalMatchedNames); + } + + public static bool operator ==(TaxonSearch? left, TaxonSearch? right) + { + return Equals(left, right); + } + + public static bool operator !=(TaxonSearch? left, TaxonSearch? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/TraceFile.cs b/SpeciesDatabaseApi/BoldSystems/TraceFile.cs new file mode 100644 index 0000000..b9b61ee --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/TraceFile.cs @@ -0,0 +1,66 @@ +using System; +using System.Text.Json.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +public class TraceFile : IEquatable +{ + [JsonPropertyName("trace_id")] + public int TraceId { get; set; } + + [JsonPropertyName("run_date")] + public DateTime RunDate { get; set; } + + [JsonPropertyName("sequencing_center")] + public string SequencingCenter { get; set; } = string.Empty; + + [JsonPropertyName("direction")] + public char Direction { get; set; } = char.MinValue; + + [JsonPropertyName("seq_primer")] + public string SeqPrimer { get; set; } = string.Empty; + + [JsonPropertyName("trace_name")] + public Uri? TraceName { get; set; } + + [JsonPropertyName("markercode")] + public string MarkerCode { get; set; } = string.Empty; + + /// + public override string ToString() + { + return $"{nameof(TraceId)}: {TraceId}, {nameof(RunDate)}: {RunDate}, {nameof(SequencingCenter)}: {SequencingCenter}, {nameof(Direction)}: {Direction}, {nameof(SeqPrimer)}: {SeqPrimer}, {nameof(TraceName)}: {TraceName}, {nameof(MarkerCode)}: {MarkerCode}"; + } + + public bool Equals(TraceFile? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return TraceId == other.TraceId && RunDate.Equals(other.RunDate) && SequencingCenter == other.SequencingCenter && Direction == other.Direction && SeqPrimer == other.SeqPrimer && Equals(TraceName, other.TraceName) && MarkerCode == other.MarkerCode; + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((TraceFile)obj); + } + + /// + public override int GetHashCode() + { + return HashCode.Combine(TraceId, RunDate, SequencingCenter, Direction, SeqPrimer, TraceName, MarkerCode); + } + + public static bool operator ==(TraceFile? left, TraceFile? right) + { + return Equals(left, right); + } + + public static bool operator !=(TraceFile? left, TraceFile? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/BoldSystems/TraceFiles.cs b/SpeciesDatabaseApi/BoldSystems/TraceFiles.cs new file mode 100644 index 0000000..edf38b4 --- /dev/null +++ b/SpeciesDatabaseApi/BoldSystems/TraceFiles.cs @@ -0,0 +1,48 @@ +using System; +using System.Text.Json.Serialization; + +namespace SpeciesDatabaseApi.BoldSystems; + +public class TraceFiles : IEquatable +{ + [JsonPropertyName("read")] + public TraceFile[] Traces { get; set; } = Array.Empty(); + + /// + public override string ToString() + { + return $"{nameof(Traces)}: {Traces.Length}"; + } + + public bool Equals(TraceFiles? other) + { + if (ReferenceEquals(null, other)) return false; + if (ReferenceEquals(this, other)) return true; + return Traces.Equals(other.Traces); + } + + /// + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return Equals((TraceFiles)obj); + } + + /// + public override int GetHashCode() + { + return Traces.GetHashCode(); + } + + public static bool operator ==(TraceFiles? left, TraceFiles? right) + { + return Equals(left, right); + } + + public static bool operator !=(TraceFiles? left, TraceFiles? right) + { + return !Equals(left, right); + } +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/Extensions/StringExtensions.cs b/SpeciesDatabaseApi/Extensions/StringExtensions.cs index 3a688f8..ed38c6e 100644 --- a/SpeciesDatabaseApi/Extensions/StringExtensions.cs +++ b/SpeciesDatabaseApi/Extensions/StringExtensions.cs @@ -22,4 +22,23 @@ public static string PrependSpaceByUpperChar(string str) return sb.ToString(); } + + /// + /// Prepend a defined char on a found Upper char, first char excluded. + /// + /// + public static string PrependCharByUpperChar(string str, char prependChar) + { + if (str.Length <= 1) return str; + var sb = new StringBuilder(); + + sb.Append(str[0]); + for (var i = 1; i < str.Length; i++) + { + if (char.IsUpper(str[i])) sb.Append(prependChar); + sb.Append(str[i]); + } + + return sb.ToString(); + } } \ No newline at end of file diff --git a/SpeciesDatabaseApi/Iucn/IucnClient.cs b/SpeciesDatabaseApi/Iucn/IucnClient.cs index c07c951..64b59ef 100644 --- a/SpeciesDatabaseApi/Iucn/IucnClient.cs +++ b/SpeciesDatabaseApi/Iucn/IucnClient.cs @@ -40,7 +40,7 @@ public IucnClient(string apiToken, HttpClient? httpClient = null) : base(Default #endregion - #region Attributes + #region Methods /// /// Check what version of the IUCN Red List is driving the API /// @@ -614,29 +614,31 @@ public IucnClient(string apiToken, HttpClient? httpClient = null) : base(Default return GetJsonAsync($"weblink/{EscapeDataString(specieName)}", token); } - /// - /// Gets an link which will redirect to the selected specie by name - /// - /// - /// Url - public string GetSpecieRedirectLink(string specieName) - { - return GetRawRequestUrl($"website/{EscapeDataString(specieName)}"); - } - - /// - /// Gets an link which will redirect to the selected specie by taxonId and/or region - /// - /// The taxonId of the specie - /// The region identifier, use null or global for the global link - /// Url - public string GetSpecieRedirectLink(int taxonId, string? regionIdentifier = null) - { - return string.IsNullOrWhiteSpace(regionIdentifier) - ? GetRawRequestUrl($"taxonredirect/{taxonId}") - : GetRawRequestUrl($"taxonredirect/{taxonId}/{EscapeDataString(regionIdentifier)}"); - - } - - #endregion + #endregion + + #region Static Methods + /// + /// Gets an link which will redirect to the selected specie by name + /// + /// + /// Url + public static string GetSpecieRedirectLink(string specieName) + { + return $"{DefaultApiAddress}/website/{EscapeDataString(specieName)}"; + } + + /// + /// Gets an link which will redirect to the selected specie by taxonId and/or region + /// + /// The taxonId of the specie + /// The region identifier, use null or global for the global link + /// Url + public static string GetSpecieRedirectLink(int taxonId, string? regionIdentifier = null) + { + return string.IsNullOrWhiteSpace(regionIdentifier) + ? $"{DefaultApiAddress}/taxonredirect/{taxonId}" + : $"{DefaultApiAddress}/taxonredirect/{taxonId}/{EscapeDataString(regionIdentifier)}"; + + } + #endregion } \ No newline at end of file diff --git a/SpeciesDatabaseApi/MarineRegions/MarineRegionsClient.cs b/SpeciesDatabaseApi/MarineRegions/MarineRegionsClient.cs index c8dd354..aae3242 100644 --- a/SpeciesDatabaseApi/MarineRegions/MarineRegionsClient.cs +++ b/SpeciesDatabaseApi/MarineRegions/MarineRegionsClient.cs @@ -22,7 +22,7 @@ public class MarineRegionsClient : BaseClient /// /// The Api default address /// - public static readonly Uri DefaultApiAddress = new("https://marineregions.org/rest"); + public static readonly Uri DefaultApiAddress = new("https://www.marineregions.org/rest"); #endregion #region Properties diff --git a/SpeciesDatabaseApi/MarineSpecies/WormsClient.cs b/SpeciesDatabaseApi/MarineSpecies/WormsClient.cs index 3c82d8d..d8b584b 100644 --- a/SpeciesDatabaseApi/MarineSpecies/WormsClient.cs +++ b/SpeciesDatabaseApi/MarineSpecies/WormsClient.cs @@ -22,7 +22,7 @@ public class WormsClient : BaseClient /// /// The Api default address /// - public static readonly Uri DefaultApiAddress = new("https://marinespecies.org/rest"); + public static readonly Uri DefaultApiAddress = new("https://www.marinespecies.org/rest"); #endregion #region Properties @@ -401,5 +401,30 @@ public WormsClient(HttpClient? httpClient = null) : base(DefaultApiAddress, http { return GetJsonAsync($"AphiaVernacularsByAphiaID/{aphiaId}", token); } - #endregion + #endregion + + #region Static Methods + + /// + /// Gets the link for an aphia based on aphia name
+ /// (This assumes that you have no idea if the taxon exists, or you do not want to look up the AphiaID) + ///
+ /// The aphia name to look for + /// + public static string GetAphiaLink(string aphiaName) + { + return $"https://www.marinespecies.org/aphia.php?p=taxlist&tName={EscapeDataString(aphiaName)}"; + } + + /// + /// Gets the link for an aphia based on aphiaId + /// + /// The aphiaId to look for + /// + public static string GetAphiaLink(int aphiaId) + { + return $"https://www.marinespecies.org/aphia.php?p=taxdetails&id={aphiaId}"; + } + + #endregion } \ No newline at end of file diff --git a/SpeciesDatabaseApi/RequestContentType.cs b/SpeciesDatabaseApi/RequestContentType.cs new file mode 100644 index 0000000..873ab9c --- /dev/null +++ b/SpeciesDatabaseApi/RequestContentType.cs @@ -0,0 +1,14 @@ +using System.ComponentModel; + +namespace SpeciesDatabaseApi; + +public enum RequestContentType +{ + Raw, + + [Description("application/json")] + Json, + + [Description("application/xml")] + Xml +} \ No newline at end of file diff --git a/SpeciesDatabaseApi/SpeciesPlus/SpeciesPlusClient.cs b/SpeciesDatabaseApi/SpeciesPlus/SpeciesPlusClient.cs index c6b1e46..464282a 100644 --- a/SpeciesDatabaseApi/SpeciesPlus/SpeciesPlusClient.cs +++ b/SpeciesDatabaseApi/SpeciesPlus/SpeciesPlusClient.cs @@ -1,11 +1,9 @@ using System; using System.Collections.Generic; using System.Net.Http; -using System.Text.Json.Nodes; using System.Threading; using System.Threading.Tasks; using SpeciesDatabaseApi.Extensions; -using static System.Formats.Asn1.AsnWriter; namespace SpeciesDatabaseApi.SpeciesPlus; diff --git a/SpeciesDatabaseCmd/BoldSystemsCommand.cs b/SpeciesDatabaseCmd/BoldSystemsCommand.cs new file mode 100644 index 0000000..4821e44 --- /dev/null +++ b/SpeciesDatabaseCmd/BoldSystemsCommand.cs @@ -0,0 +1,281 @@ +using System.CommandLine; +using SpeciesDatabaseApi.BoldSystems; + +namespace SpeciesDatabaseCmd; + +internal static class BoldSystemsCommand +{ + private static readonly BoldSystemsClient Client = new(); + + private static readonly Argument StatsDataTypeArgument = new("data-type", () => BoldStatsDataType.DrillDown, "Returns all records in one of the specified formats."); + private static readonly Option TaxonOption = new(new[] { "--taxon" }, "Returns all records containing matching taxa, defined in a pipe delimited list."); + private static readonly Option IdsOption = new(new[] { "--ids" }, "Returns all records containing matching IDs, defined in a pipe delimited list."); + private static readonly Option BinOption = new(new[] { "--bin" }, "Returns all records contained in matching BINs, defined in a pipe delimited list."); + private static readonly Option ContainerOption = new(new[] { "--container" }, "Returns all records contained in matching projects or datasets, in a pipe delimited list."); + private static readonly Option InstitutionsOption = new(new[] { "--institutions" }, "Returns all records stored in matching institutions, defined in a pipe delimited list."); + private static readonly Option ResearchersOption = new(new[] { "--researchers" }, "Returns all records containing matching researcher names, defined in a pipe delimited list."); + private static readonly Option GeoOption = new(new[] { "--geo" }, "Returns all records collected in matching geographic sites, defined in a pipe delimited list."); + private static readonly Option MarkerOption = new(new[] { "--marker" }, "Returns all specimen records containing matching marker codes defined in a pipe delimited list."); + + private static readonly Argument FilePathArgument = new("file-path", "Specifies where to save the file."); + + + private static readonly Argument DataBaseArgument = new("db", "Specifies the identification database to query."); + private static readonly Argument SequenceArgument = new("sequence", "Specifies the query sequence."); + private static readonly Argument TaxIdArgument = new("tax-id", "The taxId to search for."); + private static readonly Argument DataTypesArgument = new("data-types", () => BoldDataTypesEnum.Basic, "Specifies the datatypes that will be returned."); + + private static readonly Argument TaxNameArgument = new("tax-name", "The tax name to search for."); + private static readonly Argument FuzzyArgument = new("fuzzy", () => false, "Specifies if the search should only find exact matches."); + + private static readonly Option IncludeTreeOption = new(new[] { "-t", "--include-tree" }, () => false, "Returns a list containing information for parent taxa as well as the specified taxon."); + + internal static Command CreateCommand() + { + var command = new Command(Client.ClientAcronym.ToUpper(), Program.GetRootCommandDescription(Client)) + { + StatsCommand(), + SpecimenCommand(), + SequencesCommand(), + SpecimenAndSequenceCommand(), + + DownloadTraceFileCommand(), + + TaxonDataByIdCommand(), + TaxonDataByNameCommand(), + CoiMatchesCommand(), + }; + + return command; + } + + private static Command StatsCommand() + { + var command = new Command("Stats", "Users only interested in count data for a given query can now use the API to retrieve the summary information that is provided by BOLD public searches.") + { + StatsDataTypeArgument, + TaxonOption, + IdsOption, + BinOption, + ContainerOption, + InstitutionsOption, + ResearchersOption, + GeoOption + }; + + command.SetHandler(async (dataType, taxon, ids, bin, container, institutions, researchers, geo) => + { + var result = await Client.GetStats(new PublicApiParameters + { + Taxon = taxon, + Ids = ids, + Bin = bin, + Container = container, + Institutions = institutions, + Researchers = researchers, + Geo = geo + }, dataType); + Program.Print(result); + + }, StatsDataTypeArgument, TaxonOption, IdsOption, BinOption, ContainerOption, InstitutionsOption, ResearchersOption, GeoOption); + + return command; + } + + private static Command SpecimenCommand() + { + var command = new Command("Specimen", "Users can query the system to retrieve matching specimen data records for a combination of parameters.") + { + TaxonOption, + IdsOption, + BinOption, + ContainerOption, + InstitutionsOption, + ResearchersOption, + GeoOption + }; + + command.SetHandler(async (taxon, ids, bin, container, institutions, researcher, geo) => + { + var result = await Client.GetSpecimen(new PublicApiParameters + { + Taxon = taxon, + Ids = ids, + Bin = bin, + Container = container, + Institutions = institutions, + Researchers = researcher, + Geo = geo + }); + Program.Print(result?.BoldRecords.Records); + + }, TaxonOption, IdsOption, BinOption, ContainerOption, InstitutionsOption, ResearchersOption, GeoOption); + + return command; + } + + private static Command SequencesCommand() + { + var command = new Command("Sequences", "Users can query the system to retrieve matching sequences for a combination of parameters.") + { + TaxonOption, + IdsOption, + BinOption, + ContainerOption, + InstitutionsOption, + ResearchersOption, + GeoOption, + MarkerOption + }; + + command.SetHandler(async (taxon, ids, bin, container, institutions, researcher, geo, marker) => + { + var result = await Client.GetSequences(new PublicApiParameters + { + Taxon = taxon, + Ids = ids, + Bin = bin, + Container = container, + Institutions = institutions, + Researchers = researcher, + Geo = geo, + Marker = marker + }); + Program.Print(result); + + }, TaxonOption, IdsOption, BinOption, ContainerOption, InstitutionsOption, ResearchersOption, GeoOption, MarkerOption); + + return command; + } + + private static Command SpecimenAndSequenceCommand() + { + var command = new Command("SpecimenAndSequence", "Users can query the system to retrieve matching specimen data and sequence records for a combination of parameters.") + { + TaxonOption, + IdsOption, + BinOption, + ContainerOption, + InstitutionsOption, + ResearchersOption, + GeoOption, + MarkerOption + }; + + command.SetHandler(async (taxon, ids, bin, container, institutions, researcher, geo, marker) => + { + var result = await Client.GetSpecimenAndSequence(new PublicApiParameters + { + Taxon = taxon, + Ids = ids, + Bin = bin, + Container = container, + Institutions = institutions, + Researchers = researcher, + Geo = geo, + Marker = marker + }); + Program.Print(result?.BoldRecords.Records); + + }, TaxonOption, IdsOption, BinOption, ContainerOption, InstitutionsOption, ResearchersOption, GeoOption, MarkerOption); + + return command; + } + + private static Command DownloadTraceFileCommand() + { + var command = new Command("DownloadTraceFile", "Users can query the system to retrieve matching specimen data records for a combination of parameters.") + { + FilePathArgument, + TaxonOption, + IdsOption, + BinOption, + ContainerOption, + ResearchersOption, + GeoOption, + MarkerOption + }; + + command.SetHandler(async (filePath, taxon, ids, bin, container, researcher, geo, marker) => + { + await Client.DownloadTraceFile(new PublicApiParameters + { + Taxon = taxon, + Ids = ids, + Bin = bin, + Container = container, + Researchers = researcher, + Geo = geo, + Marker = marker + }, filePath.FullName); + + }, FilePathArgument, TaxonOption, IdsOption, BinOption, ContainerOption, ResearchersOption, GeoOption, MarkerOption); + + return command; + } + + private static Command TaxonDataByIdCommand() + { + var command = new Command("TaxonDataById", "Retrieves taxonomy information by BOLD taxonomy ID.") + { + TaxIdArgument, + DataTypesArgument, + IncludeTreeOption + }; + + command.SetHandler(async (taxId, dataTypes, includeTree) => + { + if (includeTree) + { + var result = await Client.GetTaxonDataIncludeTree(taxId, dataTypes); + Program.Print(result); + } + else + { + var result = await Client.GetTaxonData(taxId, dataTypes); + Program.Print(result); + } + + }, TaxIdArgument, DataTypesArgument, IncludeTreeOption); + + return command; + } + + private static Command TaxonDataByNameCommand() + { + var command = new Command("TaxonDataByName", "Retrieves taxonomy information by BOLD taxonomy name.") + { + TaxNameArgument, + FuzzyArgument, + }; + + command.SetHandler(async (taxName, fuzzy) => + { + var result = await Client.GetTaxonData(taxName, fuzzy); + Program.Print(result?.TopMatchedNames); + + }, TaxNameArgument, FuzzyArgument); + + return command; + } + + private static Command CoiMatchesCommand() + { + var command = new Command("CoiMatches", "Query the COI ID Engine.") + { + DataBaseArgument, + SequenceArgument, + }; + + command.SetHandler(async (db, sequence) => + { + var result = await Client.GetCoiMatches(db, sequence); + Program.Print(result); + }, DataBaseArgument, SequenceArgument); + + return command; + } + + + +} \ No newline at end of file diff --git a/SpeciesDatabaseCmd/Program.cs b/SpeciesDatabaseCmd/Program.cs index 84a8e0d..c022846 100644 --- a/SpeciesDatabaseCmd/Program.cs +++ b/SpeciesDatabaseCmd/Program.cs @@ -10,10 +10,11 @@ static async Task Main(string[] args) { var rootCommand = new RootCommand("Query specific taxonomy and species database") { - WormsCommand.CreateCommand(), + BoldSystemsCommand.CreateCommand(), IucnCommand.CreateCommand(), MarineRegionsCommand.CreateCommand(), - SpeciesPlusCommand.CreateCommand() + SpeciesPlusCommand.CreateCommand(), + WormsCommand.CreateCommand(), }; try diff --git a/SpeciesDatabaseCmd/Properties/launchSettings.json b/SpeciesDatabaseCmd/Properties/launchSettings.json index ef3cec1..7ee2a7a 100644 --- a/SpeciesDatabaseCmd/Properties/launchSettings.json +++ b/SpeciesDatabaseCmd/Properties/launchSettings.json @@ -63,6 +63,22 @@ "SPECIES+ TaxonConcepts carcharodon carcharias": { "commandName": "Project", "commandLineArgs": "SPECIES+ TaxonConcepts apikey \"carcharodon carcharias\" --with-descendants --with-eu-listings" + }, + "BOLDSYSTEMS CoiMatches COX1_SPECIES seq": { + "commandName": "Project", + "commandLineArgs": "BOLDSYSTEMS CoiMatches COX1_SPECIES \"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTCTTTAGATTTTATTTTTGGAGCTTGGTCTGGCATAGTAGGCACCGCCCTAAGACTTATTATTCGGGCTGAATTAGGACAACCTGGTAGACTTATTGGTGATGATCAAATTTACAACGTGGTCGTAACAGCTCATGCTTTTGTGATAATTTTTTTTATAGTTATGCCCATTATAATTGGTGGATTTGGAAATTGACTTGTTCCCTTAATATTAGGTGCTCCTGATATAGCTTTTCCTCGTATAAATAATATAAGATTTTGACTTCTTCCACCTTCTTTAACTCTTCTCCTATCCAGAGGAATAGTTGAAAGAGGTGTTGGCACAGGATGAACTGTTTATCCTCCTTTAGCTGCTGGAATCGCCCATGCAGGCGCTTCTGTGGACTTAGGAATTTTTTCTCTTCATATAGCGGGAGCTTCTTCTATTTTAGGGGCGGTAAATTTTATTACTACTTCTATTAATATGCGTGCCAATGGTATAACTTTAGATCGAATACCTTTATTTGTCTGATCCGTTTTTATTACTGCTATTCTTTTACTACTCTCTCTTCCCGTTTTAGCAGGGGCAATCACAATACTTCTCACTGACCGTAACTTAAATACTTCTTTCTTTGACCCCGCTGGAGGAGGAGATCCATTCTTTATCAACATAAATGCC\"" + }, + "BOLDSYSTEMS TaxonData 88899 Images": { + "commandName": "Project", + "commandLineArgs": "BOLDSYSTEMS TaxonData 88899 Images" + }, + "BOLDSYSTEMS Specimen --taxon Aves --geo Canada": { + "commandName": "Project", + "commandLineArgs": "BOLDSYSTEMS Specimen --taxon Aves --geo Canada" + }, + "BOLDSYSTEMS SpecimenAndSequence --taxon Aves --geo Canada": { + "commandName": "Project", + "commandLineArgs": "BOLDSYSTEMS SpecimenAndSequence --taxon Aves --geo Canada" } } } \ No newline at end of file diff --git a/SpeciesDatabaseCmd/icon.ico b/SpeciesDatabaseCmd/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..d717bb299081c1a272ad65c2a5bd26692903bf58 GIT binary patch literal 132383 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%0AHYuo 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 literal 0 HcmV?d00001 diff --git a/icon.png b/icon.png deleted file mode 100644 index d57460e13f58e4238317b716d74a8e19daeffd6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80025 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
X5PAnCgrk z#d)Q#&k3ve*YJork7*(H(ZPXlc{#@x-wnk~9HUWFEhUhI|oPeQfI6=9wIiaL{;EAsl{g_8FSrbcdyT!N26?$?c!*nSKrs-qS^2f zTpj4Ul0g|<{4IFn9X=K8vQKqwcgdFO=Q2nWj$U(g^qW@ zz_huuu@TrFr6=z2Yj5^bNC->e-pV?50>yQJ{Z+P$UG=$SSnUI&6`v(LM@Po68qh}Y zOGEL3NQ(8IRQd}#CMNn0s;!A`l)g8IFP0U86&niiN+_EGp@kqkfzJ`ej$ECC!#2uN zJEujBJ+^UdEIL;1XZDP05%)5qi89;g+S*bqjiwhew70VqT`^J7a7>jjyRCW&1+KR3vyP&|*fUsX zihq^ONV?i}?^3qRl?Y>H8R41{FaYz=z~kGZ%2Vra{D{=JJ|Fb z91HizMrLQ9(=$4!{>{GHo}0te(-YIBGBL?yV*1_P?)QX|CQ=@Ga3iJt$;pv5*A>(T z8YQcqI8>~YCqzzu^**0J(?YB<;Klv+^ESIZ0qi`hqmRb&x|*A182C6;CVr0OO%YNd zDt%YDC?vz`>;2sK;4L+&85waIdmr(fpOpwFG=XJ{_0_ixAd34Q&V)vZ)T0}qieg%8=zbv`Md>x z#QtWVV38+$rX?7+n0l$qX2eNCKtl2%Bcmr#7z#5mAv-$L|NJ2&C0&CUw^hk2yQ5VG zL?9zlqg7pBA-~VAAi3%vRp!Pj*AS$zmsqIJxGhJot(~AWPS^2-UgahlTI0mTLiV_$l1StU%}^=g&#;peiz&#X-7wHEp6>@YUI7H z3iO5`2-=Lfe*Y%n<8yO!Yv|=bfYlD~MEs!0z&(+i$u-gOLfnC%g2|K9g2cww~3p)n(0sZ!7S0Mn*$}ADn}> z+IV5uCoMJ(te|LZYx@nIWLP(E-qg&{$G{=yy#Xp0p67VYcuaw8Wlzj>xrmj;?z;nw z-<}V_SbNGUQYNrv2#KO-VucbemKPSlzzOGnyUuTRnUy8GxH3Zv@B9$>ZCsYYA?czq zk^J1xVQ=0wPv?|<<88kp31uA>%yKJl_heG7kzAT(vCQ9Fk$n61E(ne1IyyeSz8-h( z-u+fq28?4V)K=M~-UUPqO@s-Rl|o>{&aMz6z$ij$Ebv+D>+i#Po4pkEO`c7|)V)Se zhXZUti7Ld7qW?{`BYDx!hg5FjJugHi z;!s*;@1chpFcwT*4+TkDSy2eSeJbI0CeXua16$1m!Cb0ar)_}Cnxi@*GYjF z7s7DoB`qy;pSTkS-$d@6d78G9FMOTi$6ShKaztYszqBt; zKYDX{O&x@aUgw^me9NCi zHZ?!c-x^l}jGnSUxBEAdq%|ze_ZqAcD?JZg=KM7o#x7Z3m@`LX!HE|D&T3W54EX65 z7M|cQnQ_VbJQAE;Sm@j^&iVTW5Qm?`<sK0)(1C*EqLp+?pmWiqv9Xu(H7V*B~Vb|eD z%~1`g@kBRl`y|(wt1fnOj@}oue{yEFCDeG=z`jl}NSbzhjo9cz;8m|~_R{7&!kkCY zwuWAOc9djQd_w%yJvO#(u)J>Qt8>yuVr*|yEoQMW<1fo?EiQf-8sY(U+P^=;9W4p& z@zKupT`=o|B>V#UOc`RB(!YNvsXE_gh8*yDjw)=65>Us&wnRXlpx ztSW#UAt^OsZ^KF7;qK-Z_3>+1V7)#KAE_1{x4NdKs~rHQp0Oec10!or(A4l6lo2~w zQs-zzMFljO1S4HSt%Mj7S4+x!qKpdJgY!+n=_ktx9QF__4tHjM7xpKy(H6oY3nP<@ zpla$*N54%yLj?m`S*g4|?tqVPVWf}0fR7>cc;3h4Q|Hnr`R%WUMmNQsR<3s#P(MaI zJE*Z=__Nke%c38HR*1ZR`mTePty0NfKG8Z6@YZ12HCq%^$3HF^DE&urk| zzRmnXL@Z3mZkZp^bB-S}IGP{}jKpoRw_~!moC62zrv^^2bXNk-cgqpg1lyYz=)Jc5 zpAlmqh`;xLPgTi56p?$=Hf^o1KfUTU!9f@Wl)XrAsfPzvwZy7JzHlTR9u~;;WIJ*D z)J%*Ie4C*T4c(1fYN;(NL)#cBl$DkJ^W^n1I4-4)qd$pgqNfkr#>O2%>(NmvQb`L$ z|A_ATVy+Cf`6!hzYmy9VU3N-AQ^9L7xYqH*w(Lg7tLb!)9G5BJG(EN*W#8<*va#z{ zjTeS$UBBLUq{zIVoZsz$bAA0y>feDB(qaxp&b6VRMJt5wm9wQ_mqR`^%^yu%)-uhM zjtoYbwVE6-kHVe$1dur*2r9dggyYg9c_^x; zNT~i$W|o6u#Da~8<Lo#9~EDt@>HsgGjP8Q~hm-X3qjn&OB~jt8U|TMg-D zN6q(&`L&r`s&)UH?m3wC*4)BkZjn!6-nvx#^%8GxBI7Wt*?YDJR1p!qx3)YP( zN0;G3yBhLH@$$ODz`^m2h@b|Y)OJ1%dZoz_(@Bt$hYT0=R^McvG&n|(4*^gkuBrKO z%l9EKyk_w1kae;uJ_M2?!-Lg57~#iwE9`bu&&sGn`@HxB4G-z3gar35`4eS>4-u%L zJDBRpx8+XK=(Cf+NOpg}q_2g4^PuZiU_2z%5oyF6v$pKFY>G zF%&2|lyA|g;xQzJ$iZi54X12~VI#MPKUMteMhoZU!CEl^C1ooMda1P|9;@E#<(=!r zF1;WM@Lo>lL!Rx8ndLso4#@SsSq-5V%*u0y{Zf2kV%ST&Q!0DV@cL>7xoLufA+_6; z6t=yz6c!i94lM&JlEThTe$|32pBO{=N7hs@GJZajJN zXn)@(t*Yv#jLa?5mk%AoY5@=dH{?Fwu^<-qzrBOOC@8*r$wWAhld(^yDT=6c+I@l+ z-lL(q5XF|>eP<7Ewf5P1eLHx&28@_?Uj6X&ew1&Fg$B&HU{_Z*Kl>iJHdc(ErR+(X ztL`nH9Ju^4t=x8|DNV+fhVPgx*~JhC^ktjJPM4tMB4>66+_s(+u`sc#(U2seTDoIN zyHcq>6E0G~wS5Dry}rEUO{0?FW^kBGxg{hdl#ubRG;^=~-R1|fffm_Y$fgqDJ>qs} z&%%YAM`M$ za|c2YbF;lM949aZNE=M9WS2T+Q+OIUT1Vee6?B_$=(F!6ay{+i3mG}C|pMX~|l`1qk8LjvLX z+e?J})vLR3+$S#d%FY1Uz|7nM6JZRa5?J#eU*VzG@%FtbHNNSCwLT*%D#|N%OTQ4q zr+gvl#Jx_{tA);M8}Zw0<*5nL*ROXLXJW|0L5Rz}dUfk)>)d}3gX^w5EZi6lJ>RM- z@;DLT`_Iua-b6gZy8&5^*mV^p3>E!UKBEen2CjtD&NPwZGAj+=cT5X>crBq-KWkc| zJUwj$mc!m`+C&5JOUN*K#;Xz&#s_8eSKwqx(@J=F(B5M^LnH|~-_jqm@hV>Ex z|B-%0g#f?ZEFY0cPxhS$gbxMZDYkrm&O8rHae#b&caz(E{7x?LDyAD zH2Msy&A(+_@u!6GSe>GqW=f>-U#Z`gkufqop7fuBnL`S&Qsk+TGpdii|GghzYG_ zbFqtm`&{||SOEV%l-Y#{u_nG54}WCj(Lz^U`+?Z*4&kl2NVh+6S% z<%bO6yxP|oUIGFmMSzAuN!QGRK7uo2aIwPyVuF)IKejT2au#jR0LuUR&Q5ce-;)23 zWRJ|_Auh@2NI=yT6@{0(wUOiTso2>Is)BvLA0T5`x|GruYEDxzRp#i#t=l}2ZNJ&Y z+zwo-j;F5)h)1Xle`@T8ewocy<&B?8Ws4R1IsHI?Ew5uhv*dv=g7;P-H2>82?bKd> z6<+CWi5fTazD9H6udW>UF*x3OwuhNWjy?EcQ?a2d?Cv3*?YnzI^fXm+)>Q!%tU~gfWXH!fm*$` z!Wb0+r0A_%u8CVHK42u|;}%@Sr)!gOl?5OVVGyF>Fu5KJ90y}kQ|cUVbTl-h?a5}~ zLNcBh(mQVLJvjaO0sU3W*_j|r9}jdU6r1W!Y$3kAe{|FWv*r9<|J_3d9pL{>82|R~ zu*ziuH&VjMi2_FO-rcFKCF}41Nf7*jt<}U-x2eIuFtvztChh7`N;F-<#tb^x_z4rQ zS_$hsgMg>hl|di?7+lPh7@7&@ieci3ln?dwok*08eX;{SmbGVM2wwt@m5I>Xr}a|! zA`O-o!J-yCZxTg4DOw}09|rM}=R>YCHm2@MhYJN6&Gw&_`OcB#OtfY#ss|5bG=A?s zhTi+6C!eXy+#nz|FxcWW>yZ>bUDN=6O~Obn^Ix~{L<4Av`He!cR#4Pfx_Il;BDmBZ zyO>$et~mhp)9Bo5m!LFLFzr{=(oW_BO+yXMl_+2&iYrt#kJv&|78>fr`udCk>{KN$ zh+XN(?7Zvd5R(h~+Uf9A1*D{i*;WHY1XvA9-Q{iU(^+k8ZRG2h5(ON6U)rnmgVKX+ zkt@M+CXrhr)78bra3JF$Krp|*y>5qO?x)Svb>HasZ~doV$fDJBbn5;D`eMPy0I+U< z|8cgo_3fCu4Rk{1%rF*^O{+!P5z>(s7(wn2`Eh4^Wj>yQw(I8jAsw7$mRw840yv~x z6xjDz8>R4Zjg~Bf>(48b?@~uVk^%37SRxU9~TQhn4s=N}hgo!kOkCyGI1h z$iF>?J4FIUif}^SL#~d6)@K2gmFQ-*n8wCBO{f2|mDs%=m0x^Q%XKxozS+<)UOzY( za>(bn^|ODgd110*5b#@3JnAddAp=AAfSYW*yeLS;xeyV-%MzGb++Ma1f6vwX$Ut1guMViAlsG`}sS+E8UBFuHxT9svZPn zyJYU)xM;tPONZI%4~;0lpNU_7^8;Lq+E!7m!Q?xfR}i%GRul{qreh;2Dn=|?KaP$^ zJvBi>8Az6vE%+mWOxoW!=G=n3OLDt=`}-}B(?*yj$KO;}R}Ye&lpBUuK7y6x7Z8B7 z#Ai-V%k7pr9z=<%oU=u>Yfy4JUX~4i+TYV30N@$yu@BH!aCdEOrHf1nCbp=n^EqvO z{bo;cUtFZ`4bI*t1?!=AqsfOz6+YLXIekRYa((3oUm3sdf@x|>gn)V``K`L> zVPo~%4K#SIPaBs`OSA&%nv>SJJ#7K0v#KhOX;)krX>j8$)GrvBzc8)zH~91^igVRD{*iS7 z(j62Q#+TDMVmsfKKtR`4=GsGnZ+d5;R}5c&u0fzAHv!aFAM}C=I&XiB5Iwt-lT-a| z&?0qkjX&($^LRGpxe*-ZLSvGY@za>g~Pz0d;3X#>!Fu`oo$11EQ-Lc^LrL|EnxegVz599 z&$(l1X=w*pCX7jp986!q=2KHs`&1cpYD$ds+j^5d6@+^RSY(F(8>MpD)>F{a2R zK}kXJ5nytNwMco{W!MjN-4$FeF8)QFY!?6hp2wQqf0~>MwyzGm90c;u*q}bj2k8Gu!{q?v`&Ytlg&ND{&wNZTtbauCBN}vhmUo1d%mnxprgYz)pTX zUQ>cCy9~I}S0@Y3!|%Rd3V67Pz1uvw2VIv{-$-lrG}rDE?&*mx*VPi^q0dsGYh%2i zC%jKXLy#nxIolOaWGpc6d;{!$WcUp1ll;O%Ck7P=>|xK-ZM;oJ7LY7*{wYW96vr6~ z2h(1!+tJZ?!AKkE02sxfG2roYCNg+Uh}H0!^bCkex8v;yps)5>g%ak6&3S-oOeLii zUDA1OM-Du%(plZ6vz3*wbqcCpZAEBO=6$F8!b5K!59gg?AVJEGPK8_km#{Xq62-g& ze%Y(y#4DoVZOgfH7FVuC>N~vC*v+5 zWdm^EmR6vGd*hfkL&Uvjd<)*%F-8h&{2map?IL12y;}Kd3w7^j`fIQK7SYsv&e_os z1R<0y*SZ1lIJMT7$ubfKBgtRbSLfgwC8oMUi4O@k2%)eKAEdb+;zeOr8B(? zkG=BIr<$s$j5Il3~X;aP^bD?W<^5EuW&cE01h@4`5!xgtt=i@UbY_3=joN1L=weKZReY5)^L(E)`WWlv=XJ#yl_yn1DFe2gu5X z_I616?!UN!$oMJfesl-wyA>hjzLhS`AQV(8npppj9m1`AjyWjs>O5~O%RPh`0Z1zFkO6@&P7Xl})jX}azOrO} z{ik7(kA3u5761Xd-Es}cs21J1|G51PJO1>2o#K^`zHQD|54?0_Dkck^5rQgYkG%{^xU`Q4& z=pgPlkg~9N1gFn~wi6&o=>L-znOr?J`=w^qU%s&k#~qaMW2p-7)=9PX*81ONiP;lX zhqf9zxvM%5;Qot?cj~v08xQCO^jVd4U>jBk%@E-f0&QnP2>1}Qv-Q<5CWv`{ejHm( zw&i){mze$trH4bqYEXVt0JfA@Ysmuy&;^wKSH4l`QC?RU7En(i3ahx#w9hZM1|7-b3wnk-PZW4&6(@}N7GlwWtDE>euR`XNVifV z(k0yzk}9GgDHupg3DPNzf=IVWgVGJsAu`h4NO!|s``mlaZ_fNPGx)K;{jPVdrxq7- z;|~oz)?l#O$H4yJ3x^HD5Ga7ck+I#LylL3FR4ibr@n!qPE+HOX_C|EJ&x$ib1Fes$ z+;z6?TwY#|fMQmth?_-UE~8^Xj+`z#tFIwPfZE!0ApDGl%IXD5P;0Kkcb1p|y? zMo^1(b|!&xLJxG`K2U)XV5`G*t zX^IlyGl{Enb#wE~j2}NnG6~TN9{a+l1AQAE%vxws_glx4q1pWZ&j<@x3I6z${Q~Uc4iOi;O7fW9rbDQ(CgJOq>KOT`k zAooz+d*}JncZ2b{RlGv7(qQHQ^5o-e3uAkuHxV=NZm)mhfo#}xyu6^&*;HQXZcOfbcRS73Vsu{b zY5#YF#mzE-G&LM-CRn2+5!UMOF?#f5rg6P3ufkOJwA4G#GJ2?H5w@K|8>1@+UJ_uqt2ZcPx#WTAbz` z&hf`$3-)3G1hn2Mo>P5a8$W)_c$|l5vJmODMp8ANRLN{(-L*grTSo6U8#c$=?8P2u z6+eiDf6{4hLGynMBN5++bMroj5p@u_dV?p8TSO{l&XUIS84c0Tr`%rx4eqvM5aILb z(`I+U&)z|h^@k6QABUr1VBO>^xjACoXDiTMs)*aO1A1KBnZ~UrWlJ~tYu{Mkfqo7K zW-w16(lR(JNF$k*1?hr#a3Kwhjo~F}s0A~S;JR+IC7L);SlxI94~kO6dchdHOfLHa z?4bMU$doqNP`O2lyu6Tlax1Lgm{h=I&f-DcbLX6JDj23sOK?CuBGJ{==Bu*&m7A>Z z^K+a0yn%09RtkS*i-x0uoj{5K<{9TpHvEF1gH57Bn;4ab8uA%mkn@;b0A>T)6&BAWSzo4%;J(^4oFZYZ*NpZvp$~jr)xC z#DwQMiUsIG*kVVtv)4ba;(xalve~@Qh>T%ahaR6bEcO4Yso?2>j0%|X2+*2AcnIRp z0l7cK%E~D!iUH`Te-vl?lU+erxLPBp)KuT8aZ z{QUeT?eM_%@WXlY#c#O`ZTSqo%Ljq!$v_FT}A5l6Abn8KZc339wNol|Y zED0p}Z<^y^p@Zb@q*Ta3hf_m@xFf--Or;!7_e1~F45a=yft+1F`MTwycCJ-3Hsc*R z>&T_w7GW13e)abo~VTPlbO@*ZANS{h&BbHdsN_E z%KU6rZi(;xaVzx3GqhMMfgl7LWm^zVU!Jb;zwtEl5K_XKf8HOB#^H z`1JSa06x#yVQKs+c-%^s0Wm`rg4m6MyXnaHI#BRT)5X;_p;phTFCXKG5L#kMLgu!V z#*B#YR`};T<2KTR|8&<-GSI#vjZ1N{6Qt_r>(`S8liySh_gBqo2IBM8s&{;?Kh>3# z$0_XF=|lvzC}VK-0XXQhG2Xz+lR7(RQdoy5)PQj7Na|GwX#_;b++H6)`p6W|u9+Ne zJ?ZvGhrY~zmmBxYVTTDZ@<0p?De{C~zj-4X){tA@qrY%pzwYEK?K2t!0nY}wbKJd z@QVT%%|xN5rKg7>yj_=}4tQrMtqApGO-_8r9cao^QUYNZ0ix<6QNphr!1CE<|FV}> z523}!Pw~9ubJ{#dgTnz=F-uTj*2R2=-lIoM0(&fgHz?@q<4Q<|<$mdXKs+%aVf*ht zBbeYt$Me8Cmm-DHNqhGsxdP*@JoL8^`?DLnv%RfQ^gMTKq|^{;He`eB3Gwj*9^U@t zf8Da9_n85sBXrnzpGyP+OAb>xa|abXHfA9qWCs1c7FLr7aA_y6$WLwpWb=ptwI=-TZu=`?04u|l4)RUsKO_l<7`&UBfQL3Wdi%ouRRKOA z3ZC+_+!mw}`f$GU3^@fHpC@vCaiJ?mz_Xx_H8q116ak;!ETzCBg5&cGE(GLa%yGBc z#lpk{Xf_uCms;B^M8=a@`E?hGn-OC$^zbjI>u)091x);DAcOz~*0g@NaB4{jN!zof zJ0JG}uQfeCUVaj12Hg+hV4SR}*xN16l!S>BtRJF)x{&lh{0}4{@yrnW_*R+^=@3-)|E}@rUEG+8PX7jpx zIJ1Eg@9|&ww%^Y1o)mFrj+b*=+|Y!(bE!8W*m?Sb(e2=$TK4P3H$31(Km?=6>j4%d zMbO`U`a~|9YvuDe4?w0s5PyToR2jP3{eOQW?6UIFX6|p%Qc#5Bl4Tn=`*DI{9-Uu+ zCmoDui;G!W9OT3we*uD`3@|av&5Wq%=nydX?uHve4f}Ai$e#baF40-?6C!m-u6ptN|5tPxpqe$eAt1X2Gemm2>67un)gJ&7C-#PIHh5z{8-<4r zEOt9=nDRkH*C2IXJ65};15Iw*>L9zzo+S`#FkPbqT|gIb#pnYe3qOQ3#l=wHL=djV z+eWyvT(%vUFu?W@<$A~HEe9tJWN^vPCkKp(l!E7ZxU4UO512>tNR4SQfMN=z6T^a% z&HM`Vh|a#TtXNr4z5v!$oqZe1!Poz04{4FNq2)FKf$b|3t@0gk7mnTtg!X-P&@#%g zUf}fYz5{}^$t(1s;p!Z6T1eOxSXo0bIi`m?hT)E;Y)P}D5Snv z1c(7$3w(m}?NEaGp>ukuP+Q83eByTyMn>Mh1#~mweMd~&*m97s0}Tk!(y?iyVXU!Wd_a>F<}D@1K!**?MEY9NbQ>?F=E^q`UBc) zhy(j*)=ns&_HB7xL{@|fA9{a?1?2$*iV$UT-#=w<`8i9fI5%SPe2_2%NI}O!m965d z&AxL(M3%&Bzwl(J?4Lo~7n}1@~UWV?&Y;Wxmt@WGrqH#`9g0&)NgN}KGXN2~>Rj2`-= z9)Uv%UaU~4Oz^Evnumgdd&s+NxeQ%~ZGgG)5P32j?f;D|x*X58BX=bM?a-GWYKwWp zYf&jF*triwAOx5iTDz9r#gCoDV!9eq^IMyn-ca{5z%Yl{>;NYK`T5NHIzBu5Vcs{~ zm4kcV{?b6mx(ryR)4sJMp*paxUN;R_9Pn?5k!)wJREi`2U z>W!6r8z7qji%tm0FHFvluOe06jf~AjwsObfHwqTz$iDLU{l{3b<^_; zheQ1bK#giIPtlRnV_!AF!mbvSkqRvWs4Glh%7R)-mqXT^Nm2_W@Xmw-k7;WVI|&(? z%^#wFF1BK!J*7SMBWL<01GsRJ$md$k2|1CF4CD`E>vmVwyf@xmSVg$?Lc?(vf+Y|u z0j5V%dpzgK=eS~9SyN-ymq-o&oZQ?I(gR=t7$!cQC{Jo}HY`|DwG5h_DKEUscYMy7aPim?1O+SVTBR zh|N_!ewP%ob_qcc`G@g#1ay%zo$T%Dpu6laSBu?GP_g`j7!AOF1a`NTsXBH-#;J&{ zhG}&NjmlVb(8>CGoPB7D(F|wp4pv|RBo34s*CG8QQR3gfP-jZaYXdQoVu;d9GJYZS z^ugHpKxqO-V^#va({y?9!xB>CKZcOr@Mee>`mvE8s{&(f0(W1aQ)Qq*f@mXLw!FrT zzEpxQabSuI_wr)uySFsN!!5*N;F16Rdt;W`D$*1Iar!`j8d8{`4;1gPOqjb9XZAr}Fpv&3)c!BB*B zNO0wQ1EF8=p!`z*o>NaL{P*JJ<1q9qfC_6-u4VhH!-NVC- zFrp+ni=x_W>Poa_A&b2CDP&fG_y$;%UueeD$FJUuyuy|FR5VyZ{l5Co5?EH^^>0umYl4412X)kAP~m@W5hl>m4|C2>3}epEp#BF;A~cJkap?Gp>_ z1MoJesE}AsRE8t29mwUl-@@~Q2ZflRbaVO|A%L=zQ~4SGD^RNgYvjFEKdzpPjNI&2%vyQtvNepxvNH*9S z$PUOu+!mIev(uwsE&<@W8zyR);RNHoRM}z>JP?LyeS}0Ud!TmuAnUsRb87ge;GHtv znX5v)9_~3KQyJqGVU*`TY^I~mL2E?Dz`#&Tf|*qs>?FW8Od5?53*siickhIp@20VA zPFKD+4YI{~{U#3#edQo73|9D5^mva4ZGscKUYOOdNVZ%bS?K;sRqAFQ2g8~e%i@|C+kjVBm)9Ji7Ks3F}C z4AM654Z4Y9JI*y}JsZEImE`6IJBLCZLT9$J!&Y>ICrrohqd4g98tB7gn+x4gA~-)sK$m%cIT4tdM{ZOzn?#PFRV z`Hjo~!avc(s(6u8-D(~lOGoY9_ySwKJqfPd#kE_@Ey@m4Nsxc(u$&BGlt&Y>6q{`o zxw<@UgPIYI-yd;l8@QuTydT`rD7c?CcdC$BO^Us!!GR=6dzMstS|=X^do7%6j+%a6K;m9m?gLfn zh!B1zW@hc*BWPZ~OqDb>i46E&KV-YyjcaJOC~KN6e*ccXh`d_lMSBEKV^6#TT+W)- z6?A_P_V~Zy;pSN;*_>W*xoYM8O+PIjf7|o9hq+}-8oGpSg*Sbf8qVR~glx+nrAdgf zWs3AD6V!zx7UhyUJh$6>rr#BR5q^6QOqwZA>dzG+B`EetpLxFjvZkT}8``!;pbJv9 zI3mA%0e#XyM+a3H1Xwb2a#91k0Z|7&8abA97$GbsB~N}&PZMR7T;JFzfFw}`Lqh_H z6@bhy@595#BO9BHffL1U;H8V@uA%IXy&yC(>FYH&?F`FI-m|f>f$5m5#O)okn_IPF z%O7|CH-a<?l(w#secMqeyzs&sn zT?P0FMU$JvwIkTJQ<`ay^TY&8B3+m=*aU&7N51-z;#v0RW`v>{7KOALk8a;!XS|jo zbw7H+ikPrT8op|?X!)wm*|fM`;3FU^sxM3zbuVcQLjNrTwk{v|H7j5GOvE?*hZewu z6G|5!4xun;l+RsoFHic9#At^ysd#CeY8=SoT4rne%CoX?A>#ImG+JzrV3yv-@dXvS==+>RS-D9Q)FsoLATerLG*Y1bHrVWI@7^L1*VrY zNkTd+N%&Gt^7HMZ#pZIvcol<8?$gqWJ8MxFS8@%3Ge%nEopc%5f7KfpEj?|M|9k!N zo4Cj>>bK~iB@P3&S3f6??A=zmO4L;&r!(7^$Vk7n!WwEwZEc}6A~!wwCnqAdKxNqI z+7n`Z3 zUc5kG^QnILO-w7skvgkIF7mqBIz=aU!RiKK=Z-F>XpIHd)wJ@<6gU6~W)Sbbq=U6g z)rkY#(IlQ{y0^EGiSzk$x9@`lUK3LFY&2+pJ`Oq0wc6zyo-v;9L}=P~1yO%TmSc^U zVHmmZP?y_GuRm_kdN$Hv?T1!u#@aC0L|OUSxqw|#l5BL;Of>B*IoW#u@Nid39+DE#Nk~Z2H*jR7 zBv{eVy*4-RHrSvr(QB|9aki=7TPsuGg#|DX)f4gx8g5$MgP#EM8ENZE6Hce~5g(xB zXODOIf#paqDDc-)VjivIUQ>mH1}fn@3}8Hvk!`wlN57OjDQN>-Tshj>b_T^#A@;~> zm6c85X5%0%*c+=$@T0|+962%w{>~eZb*o!_ji2?!t))IguPn7VX4V&(GiC1fF8rDH z`1wTx=`z%wG}_u&-yXiMShE^^yRx$4)nan=g@D-hdG!yAUOk4SKEP}!1-(S3Tp$jl-L8e8!W2gLo(oJl5;UX4JAp0XgE^X}XNTOdPE2HAlG{Cx z^})yR@TPRdVTZ#<#C`(3JmbN0^YEnnL8B#7CAZC>6N8FZ&-OAXrsTzLj3@Z*5m>%P zMXidpAl_=>+@yMH%Bz5!8OUBmEY#pJN`O^ZkKz5uXlStE4GxN@ZuO^=ma2ZD02{kt z1o!jzzj@~lJ{+~1(w;1An)SqR)S6XPBs?!cUMDdt%v*X@SSS^Ye5cW@6?j(G_6%<% zT(&8}z-j;K6J7LVY*5hsg@w>xhR&0LVh&4t|DkET&q|)mIoaE>&H9*xk2BO`bUR{X z#N_wdfx6pksg|L!vC#T@skRxszr&Mn6-;K8Vc(4xEs-8OzjOnNCJf7|hJckd5MVFt zo{cC|k9|-j{(?}O63113$jKzWsdNiKepN^3daAGo6{GoZ@hRKD{+z98U!MA7@?XEO z702ZU;i`g_jiGr(^+OvKaCuXO%@Hc7tKWgXUHNW_iabs-vkqv* zCM*~^Fjlr!GBcB;p?)5oN(N5OoAC?k zh5di}A$y9C1U;?3(r*49+$_V^!T!gghL0cLg=rsYph{lWrww#E_8@QP9iD<_tp9POwx}oZiqtWN4TKE=K^{ABldb#lLZb z{rAuidd=ir7qgs^(zeffmw0hTQYlAOOG`=-Z|&+Zacon}{g{YgT|p>e)kQ4oiHg@f zaq;gM+MbPcULE%h-#J%|z75zqeH%cBnr@^#bS5AoT3ioj!hy>5yWL=LP$2T_J<`W{ z1i}fQRdQZeh|6d%7=Jg4#?{Vyc-x|FK_W2Ulnx_I>1MU~(4!?d-3IPES+Kn>LIHah z`~{z48QP$E|1w=+bwa&Wcf{7!9noxB(vf(Q2mA4kX2#yw$UPn7V0)i9!CPz4!o6&G zjZ4qVfWfN$dM>!+=-wCcCg(lpVzJY3xgS2J;p%6zm>cjQUbJ$FEA- zrS-b)BO!xh|z~p42T7WEY{DeV#gle(jMN%Dtnr&0x>Wn(6$>3CwvjCo$4rg zIdD+9oQ#bnU}b+WJ@O=?y!^2?!|R_8Mg+8JCF9P}Hzu~(ZpHM)IAY1;htqKu5-MDH zYhXS^H%6~WsdW1K`?Nut_dgR)u@|3JZ|u9lU)F^0Y?zh9_xH77^ja^+>R~vB2H)=7 zg&I-RMc;xT<*gauDwN;86?&uM<0*|EhXs#JeZp;x{>!}s7GSz;&0}c0mNQO#1IZ^{ z2Swa-BeKaby`ydpV#zNzxAndLnO=QLez*Qu=Q#ts?$(r7LDW6)!J!QaxrdkRvOSQb zQREP?#Z6T80!&^?K=hKqjqK9!8Ln7J^V9g`3`GjWO?|)R+NPypZ|NR^_+QmE2H&eJ zRrE)mUi7Hu4r^k{ePzb`xP3&JW=urceB1AaID`}Eq$JP=bBx+VQSJfbR>HGjk>}tP z^ZT239kSG(;^S{yhLO#YFiO*@#Z3i6g01oXidE5z!$()i_`{>WEhXw~em?cx-&bEB z`}v^w0lDJr%76~s@x1L=hOWQYHj?qP^YZIyR?_Cu9)90mGnx*r*}8-TK275P-r4QQ zg3#&XF2u0DuxIfLZMZV#j~CtYFL>r-d-)(b+zUWi^mU|aumrXUQF^@(T%?tekHliG z3#OLMeIZHxNoFTf?nsHyhY7O#ym#i=QMP@_C&!|6gy4i^08uDdB~71y5IkOqGvFtK zB^*iC;^)3;;+*!$AGgH0xUi$5w5@5;MvoWcCPiIKNv~atnfx&LQm}Hy=M@Ln-j&_! z)1bLg{s3)qei|Aj5-3bs~3OIIXh6k$RL$@T}OvSB%rgh~Zvlpd%`R0vXw^?KR#|IxFXN{|RYluT+=Q@iW=g`>Mg7^f^AzGFJl0r{ff=^KPoDMyP{%ay?^|`mt|mf!9K-dqFgW@ znHJ+?R>6M#S_AvmbtYot{{ag`_#;e1njE(m6i=^Pp2^&e!!~Nz#wN;&`j)CIM}(eP+;pN5ju-VyZ*-Wk@HypRe5-Y)B&L|3t8!xEAkFB%28Ae@@0 zB$AYDYjVv0^wBzT3!IuP+;7Rj;TQzZWpd*_U6@JBoLx6}#r#r&O-qTHaGN|chiK>DUO(b*yuC6Cv?!BYATfL&Apkz;Gq%zRZ zYw_#!;Eij<)xe9DilNJVN%09<9iSh6tr%QKnQUtENy&awhQblFIEYh zz!~aGy2KNgvo863t72D_mt2}T)&rYRX+>=+aVH5_^hOQ1@L!uYqmGlgadTEdoS0j< z3BB=V-b=YUxv78uO(aLna|8`|EHXa=fdHFH&lfw0&dYp8U494JRJ(rebnG#R;sc>+TCJueUTJa9sHm7bA7KRKzie{j%b{x7i8+~@BE@^Z)p#x90`|b|i473ynXxXU1~4I0UNaQp1(dBbW@uaE1p57(ID}s5 zW7f{ouQo#9$!!ti%y0F|Z1ONn4Y9|y1K?|1F)k)3cauycCoAqZ$u+s!LMni~rBOB&+^gyDmb~yY90t=_(N4fAGjhmk9XszMuEfwfG z8%;}60pWe{pl|wUYr4hiwwkJH+c)iusJJ*taK39hJ|RjT#R}+9Rpr0$ir>E3HvEk; z1Z!Rf$DMQHeu+K2W2Oa{;7+zyc@4(JjO$|h-jVRVgWAjn7Fd|bx}q%SGJ&)J&@Xi1 z{$rd!v(;#k01<+m_UEz_Cez)!wcqONuiJKFbyy3^`rV5u+CE~sfzM#-Ysv&yRnf2A zMV`5wl={6VBD6>kax}4rjTGsI4rT=rni`lRsjvyxf5Av;3xC{~UJKcb&0Om$-gtE+ zEDnzH;l?=RW_&z{MWFmIXtJSlot%)x)8f~?N{P(3cY*iNz`pa2`^jPh^vFyj6d!;2 zyj!bpzoBQ~|B=FQ=W0?50$^u>{#^%dDXt&hb0 zQ54mU8)1wej%~D=7IE6xWKasYUbsC*wE~ovKZg;9qDeMri7Uc*xLvs@SIi$)lQAR+ z7mx|bS;06nTiRXNcr)T0IL1yN`(v5{sQtmfvmrQ<)o7`#4mt~8j*P0lCRS8B2mF%I zomnIQ52cC`WTQS9TC($x=x0?4H`2Sjf zo&J&1Ma$>&9hM5Zx`Vd!VGV7%nsr{^zP*$cTlg15zX7PTJRFwudB!b-G*JR6Agn2u z>|&=_au%X6Z8Q3wAw%5P?FeH=o2Il!V4Ko%nA_|uNzan3%>i@Hor~vxUkgEaCPIXS z*87dY7>l3K8{p%^*+b)59NM5o8`ymOtl+Wx&aa%r(FQGPgt(BtSmk6pYREa2BlMP_ zlm0;d=+Rz^lz+Tn9Ot_=nW>#_NQ z|B8;qaq>U1xf0jC{*l@f%bu_AuEClrqK-~#U#QPh%PW=_lMT_)I<`Ooz*^80|CXkP zINzm%BF_slcxwTY60)vY@ejRgn8FhSSmG@aOndOZ91|GL7hEbUG+mYJE+0e0$dFFRavjUFx z=GJfC`~vsdozY{MtssI-;_|qRAxwJGx{5Xv%mCY)HAVAk1r<>pve+M1nZh3;{bDPs|T>GcIJt(KFpU$ePy_Z&cV2kC6l&8U~7%Cva#XD z`*BCs^}U_ltfJ!(*P*oVNZJ5#t*?jxhNpS*-bHQA)r-yb^+x#op@44g4*jw;82qC& z8*ll%DU>>{>hJPd47X$zIffMP_&PmW z|HYV{zZHg^BQCVCoQoR>BF>kUi#^+BX7iCrl2`~@^5sh?f|e*!!*CZ4jXhkr9OSB6 z!$R>%zp1{|&@1ruCv4G$jc*yD7^H3WhGje2M2Ci)!lSyv0K zvUh}r*~u>D&V0lhpkpNttJHXs!k|G-iech1Kfkzsh$SOzFs=5#r{IYCq?#U--Y1GW z$9aLdk2QtQYmaSdvzD>i#D58bZJ=7QOWq6%Yv}W}I5l0PoQDN}M8HYSbI(6b;cD&M zqo8DL?fT4B{C3;|AAi65>ulL7mb@VN=WnvJ6S=z1|33f;zGkpCY=3DDn8bp54<~hh zUo^=ZL>ACI&W)7ZL{^`8dNSsGs6X8MIlsRe18aAW5UgH&s}_FFiFNiW!>nxEgALFW!m7z9C4 z|H4Z>-?n%Y1_T|QKjzf$^)4~(*w*OZqSyhj2C*ls+yMQYW_o@;CeRXKkKswzTiX4Z z0kq4T;SV3j#$Nw#VA<_5!Yv;hK6)@16CJ(NanrLcBVwvQ*rKuv3k4nCn;~}sAExa< z>2t>D7+q0jTh4>3KPQg!+(btIG6p6m!LT~j2Kg&J@2{t=IjCmgRZM>%f&}rq9eVe} zpbGUb%DQdxXv5{L{cm>lU!~&cVKB z*>?vj;dDB3YdbqFcB3!!j1hwVVCV&8`2mTnbW_-g>fvqYlu5=d)hzp|$S?8nVIS{) z^@dxeqo)V<+64}b_ya-t{Da&9avN;VVgNGV(M`+qzQJ!oDh9IT3mykTZWG@TQ{}Gd zASkRu;4~wIG1wiB_X}LO$|@v|yZ(Utz8w~S`vK_g`1`lZrUO7k-mqAlk|yl&;~(MK z{&c8Sq+|hDhJ9uK@9(3Arv()3nvbO_tVTD^r}7y|1d(xD#MwE4A)7;0S-US@deWwn zKFF(uytiGZE?>o5h~{7$4< zy?1D+sNBv3`f2bjvd+!TnN*Aq3=dzA>1=gvdn97z2B!$rxdBjp%wH_ZWejx0%4>|m z5BNR#wzb48%lcLFiK7u5ENFIEI61Gupk|-Q#aX?#+ygj>Aoygx;T5?-D|~)y%v#t3 zkz1Uu#)(lgWOb47U+w}VZF01^0Wys{b#_UpkaYN5gBK^uDH7!P@jgo^l#FJCD~%#^ z98;p@<;gu_S<%nLsyMe8s4{ z;;Ai86jVe9$JPb;~-g$KB_j{?TQw;D@jOJ(^a*5Lg5AwwtealTc9f zy{h=lbmx)tJDyOl?&7i{K7KzmkS1I_8onDF3?OW0whL{IeVckAe=;0 zU(4k$=Z%c*L;2k%Wuu_i7NL6WEZyHjNg(QC%VTO5hz#`B-Bk7W?pS?&&Im!Se88E( zprRCc%Xyk4#p-e1HF#=iprwe9*AEH`GBwBlG#fkKaJ)hoNDsI_QkZvkyZhlL>-a?S zo*lX|AhKN!{x%3GUm7sy*!VFaRM_u{iB_r)K3cr@EY_;)>NZ+f)e0wR;T`#hdQw1G zHmSjXhC3fwA;wuM4j-8%$c0v0`O4*eIs zTLPY_Ov^rpb8zTW3zRI%0CCMy~=6WzUB{O)b&FGDX~_%#Yl`9 zYWKCPA7dk1>|fTdWVFc8_&Cxz?y%rE^L)jUW%@)U!_pTJA0(oNSs2*@3Or0OU+BRK ziOSEjw5ay51TSTV69Iny(p!Jo+mBPE4E-VREWRq`xjNxjr)dwO`PgUH%lUPxxtjN# zB_$_EN?%~WZ<`LC6+JzD@n}AHJpq7_1054=AqfGyh(ctMLA7d@l8z1@gU5b9APm2N z_3z!6bV?X?=LkVMi=EAyZt%QxO>nGyq?6l%KwK7JnUg&)g=!Cm@?Lxx2h}K~szc9 z8!W;$?ax(vQZJwDl?Azax1SVH#GP4>c(hROY;J9F;bj}hI-~x3{UT~|^T|Tz8+_N# ze`fM#4=IUqUw8;z0%Pj3S=Da0K0*?}CXBMMT%L>YbdRo@@avZe{>$#v*HBXfTO6)3 z+c5?AW#|CEyg0hTRg0Ynfsv<(WIN z3k$Ksp1}$w`bxmvCV;?&Z1AR-E2F%r<>5F{iRkqG&AZ6r zch4gA_o$ebF~2?$#vFa{EzT!*oJ8Dk&bKX=wp5QOfpyB-eF^fm7|lx(NQ$(5A8v!9 z6XU0kkiMk5+u$yh<5909fwFX))_d+sk>YV!qAZ4DlKOzT*>I&c6 zzP$|{jBOz?#r1a>eFr<>=9wLOwiPKvM*d!Je>(4R0g^J;X@I}5dNK8Gcng{|O`u9u zoB|g1sfGK)!=3V5%l)zpwe=CIXQ&2{egj`zv(j=AlZU`8mH9 z^9qF+vU79W07J4}xX%aACM_>-kSiVyw(YLj!E5ipVr+FhKaMX;2OpdWWQc%eHgR~J zaf(70)Dn24IZeo3e2I4fvB_r1)mx(KJKJjIH(*9fY zf?mA#^q<2qlyp(YG+AC|W?a|-PFGm{I_ewU6qP3^K7PKr`l!r!A*oEr+(OGJjSela zXdxu&G<0Y`dlt6XZPW@#wPfGSRh4Vy(G)gh`Tp&h#I|3Y$?$-g&Sg1i82FCc zok6uHOMzdcJ=4bB98(kfgx=K4Az})*AD?s|uV3t}>gGOVhLR2pRb+B{r$#) z0Y)^);(=9|u-URj>|n-L)VNIl|8l6m$Hy@;25>+C3C~UR-FMO)jYqQ!op>-D+bzWH z7LM)%hzl#AF*d8$r25|VCOeXUJvpOHf%)rkoM!VbW8Y%unv_50T3&sG?n7A3JB{3I6xkp<@f(EKO@v5#)PDJTXU!@hvQo&^=P?Uk@T!F>6&RW?HVr5xYbiWqN4H#w&##1^)B z9uXns)?RS89*tM(gQ#`QhBcxcPIq7R*4VUAiRtu%rFSCVzjs|*Oic+33u}2>F}Wc! zuNi%-{(M(}Z7|`Bl!T%)M~IxB9{ZHbJS$-9Ga+1spUyQTdNFOP7M-ZV3=x1-$t*4b zf8COct9xhq>VtnzkJZY7$p^kmId-#^Qh;=Jjv72eL6}89?QtXov)>njcZK)tKkIj_ zjBN;m+ZEiNO>Y?LsXXu9Mx2j8`yfwY*1+kOp0YjNB5`Yzvrce>!CUP}1ykNz&qN6V ziiM~q_GPrm??+>*MB9ocwq5ni(5VWo;=&KH2}^CT#FvvmrPiKPwMYJzIKh$$Q}X31 zti%J#ET#PvbvYlIY(7=}4g=(W)9Lo8zUz;ddg3FX+D>QC=^Pjs8GXDu53E`0XU875 z#Tj^oj6Z~W!BUKKxHZ_YKvJtF0;Ul?!X%O-q zl1n4_Ec@IMEl2LdPT^`fM?DYBXi!bk)r$U;1OLt%>>!cG{_l9u4f-Nx+kwA-gTH^b zrxagCsp$BY_vvfo{hgm_@_6IJJsl~EGBKgaXqn}(6TKgK>({yX;B5c-^#h*ONHeXM z9Z6BUO^ma0%%?diml(?7pKQBusXwg_^0Yu=64%p|FD=bEH{DV(5?=+vT69#|=z?9_ zV=Z242#2H87CRo}&R)JcUshww*O2D2IQKVq$fB2i9&j}6DPKybGroH~-_Il>(w{*G zR8xXT(Y&au)l|JwTB{4#JJ38Y)@Y#_bw;$urT7(Z#QnOkzJea=Hqt8B9zACUKss_z zDYuW6v6XHwayBjiWI3qYz9Om-0I8=d=3TukB=^(Tt#eB4ae^lcn zHB87L5#RTs1DAEs(a0imYS%U^SnS%>aeEEqEOOHkinr*#B!(DVgk|FaSW9AvUBu*i zSbF+{ksq%lm#NF?1h2q_iOlsqicK`eT|`j9;HyzEt*bJa&Jsz25hND{uf zx$os<+yDUjv9W#ZlGP?3D!Kymjm`4kz)z>g=^}Db3{Dr&ghK%I7oj(V zU<7`P)Y!_EbZYC}61#E*+&_Z?+bbEKO@WMs%|##H(Ubi$?*Dx<)_e5)WW{TrLm%fH z;y)I%YLqblt-ZnX<%%bhFU3ZoaC~m3i^q)^XKN8Nb^dmXp<00VneH0k3aj=Ob||ff zKS)5P$r&>cu1VphrLL~thCw9Z0|&0@^yPiNOLt!*&|a2<;0EL&4A>i7MdvpVy^_s^ z{ee1h-@zhu20;GJ;IF%5)ukHq$8w+1lafY*qcXIp{*(?@ryf$VA}zvlN>S_jr~`Fau09=P~Bre2qHA9IV?BL1ec#*7dze78;ulbB)WIrkNwmVQx@#7 z>FIMW+Qf=xyyk>5uV1^{J$Rr@;3X*2(btSGME(Zxqk_jj%|-?Zahwwtan6t&^f_McggDYOL4zDu`zV2v03T4?IK_ z`Asw&R9^pY+fjARq^6h)e^9bHK2bzt5J~X;2lT;U!JrZsW&|h_+S#2B0pe*s0!~5& z9LpJoOXuMmD$yVj!#Q1&rjg%3k(2n%$uj-GpW$BUDa`7VLcbwNoEO1_11cW`lmztH z==t-)AJEp!%>~SY!3FMZfDK{y7rdR2DGsFrnw?Fji~L9fcdToOM%y1`FcV!hT~1&_ z;4=$&zcQ^yFGfcQ9RhxG^z0QDgzUlLf&db1_7b8Qd<3DMM<^{YdgIY>1-5usSJRN+ zc-uVpO9W=p&hRN5>aU=DMX(%XqE?9Gg*Fq>dswS+G=>j};WFVTNG;vP zguyBU6kmvNWniE$aZ4lt+ZZ%#@K>2WwuqScQ49xp-@F@WVQIoBOiWAwI#4h-CkLts z#sXx$N@i9TG`a@2ZdFcG&fZ%iZ0nIWKVOv9IBuw_%H;@3x8uzulzIB}{Oi}R;npZD zlxwse8YERjIs^fc20=QcEJCDH8tLv3B%~1mkq!wd0g-O$5|ol0 z>27Jbd(ORgEq#RiuqRK07b z&d56qR02695doHXjfckpG>pFX%!#4!fFY%$we=3b@lZMr#>%f4#X&LKR->Mv)Cd>> zN_b*qWOPx&=pWE-^h&_6%rqlig)KfbjJMgvfDmZ>Xqc&n8nq&&qZ2;K%%e>UikeER zruNT?15z(;2)<`fGAoGyRUVYf*I~*qs+!iHmsTOAq@qI6`4JfOmD|{!9^ub_t+#a;Q8|C*8mR5mav=8KnZG+FF20VHhn)8V|&?#p=D}7r>7&50g+)brwF- z5DIv8K7mW&cM?N+37#cqKd3MV$8ZsVFi|!q-P$3L?nO8vx#qb9_=rq=Kp*3NG`;v$ zll?uo@R`G@`U{JT)xH)%e$);UPvQRv=U5&}OUvw!ZxW+up?Zj71k5IMc-Uy*F{W#> z1q#sx3A_;h6}caRKI0{uP*Y8h)O#jR&j|X*ICk240rWBO3&L-6!3pgb0MLS^7-w{A-;?k z_aMpfhYZ^B@%W}Iifje4!La1iCH_&SGAL+nLWh=Lx;&t)I|+#}QJ|Xn(N1{t!yr}m z2SDB7H=#5drHY`{F*g?h@lu-u;;r*?VVUqGwduW`2igpBiK+>%WYR>4+sjXm=^o-! zBT!!e|9G?*gQENhhghH(W^+JS{I;8aE^hY-=FUyppnf#jSJu~My}a&6(Q$#HB)GAW zR7 z`Q-iF+-}49dGdMiCkn?gP1HkS+K#@)66TfKFm5~o3>v^Y)tg$(%rLvWzf;j<-th=& z-F0vMo-8*Vai$O7GEh7_65MZ-5EJycuL(u??<}YUZ();!#K_ZjQ3UGJmV86)^)#_b zEJ8P6;OU6NvcUZl{{1@{NCGX_FrDSVrn)^czJYVgc0U0n%6@!LnVk`*OGWF1<}Jx}nwN_QF1nph(W+ z@>FMo;jJ{`z(@>v0#Fr2%kgHy+BGhD`uk9J1t{a&&ZzpUDl6mT&<5!S?t%;P7q{;@ zW>v4-_@E{`843*&NY+#LF;a}=5?wfOGH8-ANM)}fdO!7Vcj%FQtLkyO+{+J{XVB6R z2_eiSZ#m+;;p@qIJTRM68lTEVLTQa*bM8}6T2X?k3+t~?n5uet;i5@LKu;H4l^Ov!P zcc0>J?Ii^tr?J3;JD5lojSj6csDnwbeTiYZ6{v-F@9Ux4(!ApgB`)iUW=bOYm!zgrQB-%j zF-o z>*lAgo!1TRkat@I+a0&ZUJy900|vunsYT;W$COk^VPs4ghmHU@pSO6;eYPkt#L(^T z{;ekrCXe3CR+8B1-VBdLtwH`(bSQeqtp)UjHe5x(M~Siyh>8YiU}v753+*TNw2hq} zrx7y|`>llLhESukfcjop#UWs5Bx!{JF)9v2lfoJ0!|+376mF+H_}_xp#l?$IR>hJ( zQiNMMFzps1hCZ}{)t%>U2J4CWrx3?EG+=m|PRuGNDfy)A$Chqg!vfcFfW*~_Y>QOK z>&jM>HF-Zj3FvTsj*Pq+7*K=;ePzW0738Z8Lybm9Q7rJsXUsqwx0&#Q({`UyMMG%Z z#<1!hr!Bdoqoc>*H2!Lvjub`H49SN`@i2*ygoF-MXr13*M{=@Y9^?|z&`+SA!4KQRJML8`^2NRSDE&t=q`8uddoqD z0j_8szq+W~8%@c{$=3q!CbFcc5g}wJuA%kwZN$8*s2Jk&tEEOflqAXgj1XAxT$>?a z_KxXkLw$(MuZt2;sWAQK@KX zfV_1c$btxH=uq&RdSN^xj=`jhFbxQ6+!yVGnhvNbDB7ur%q5H~wWrJ&yg`oV>_vcA zp(OAXnZCpQ1_qCtQTQ7WWfT;kfx%-Q(G@A(?Q$*P?SY@XiYBH#p&#oMQd*B0q@^gILAJs%{{<#8YL(bd_f9Q-} zvsGx{QWo1EYIk0K7c%l%Rzo8sS+s;#R!;8md#%?xT#1gqB|*MEKr0?ZwSu*jR8S&Za(eC=#w7#+!#P zf@ns5Ekz5JwZ6OO_V7k#zrP|TuP*D$@37^8c)J#aP8pftdOz3)l>$l60bx5m>?$y88kFs@9&%Rs%L-2An|yVd2?SG|&BXmKA4D02PT&h9m?AgmLIuSU!KPuSaqa z7P!VCe%SzDa{! z3S=!PQUT?E@9i~@Pyr*9_~{A_N_9BDopKm^JiSdTE!AS8C}a>(KQ$4dUbw8A(B_-4 z^jW}Q||LGq7#4aNR|9zB<P@79*7!PASR+43o!4)f-5>M1TXVz>(8kB@< zgZ+V^Ch*R4lP@dk!xlwv;NdhrBklXLa zKkx*uBWfZq2FbpI-$SfnqNR)o{snTWPiDM?b1OrPD1HjGn9=pvpE%cxcN2Sz&yUeT zAIP;|#TA$(0X-5!(uwq7BhijDKTu2Sqdw7q{8u?z>w_2y6g2St<~uMDwRLs>ef{QU z|2f0bmtVMFwVHr@hO>rarcdEsj|YFWzTmAjdDpt>O(BgLM?xySD(WPkMF&m_zfYW% zKFjw}g{!_V^}u5`H#!n3;Z#~+kb_!2JZBsDgLROS@fp?f@h{(rZhLQh8pf_wLJtELMQ0UtOLTCOI885`{HV`UTkAT9aB;IWe-`V++yr zahy>Dj{%k7C1&Bs5;G1VydB6tX@#b?-Vu^bV6Q=jVP{f|upU>P4_o{VND4S~f8U(! zTCs|We0J2ED42Rt1R(}4t_!1`xmfEz{HuI;NJJOD4JOaWETdxLTdrO0&tjp$HupIk z`O=z!$BbcK414<|!ODE;{K%;~NlUj52UBt?bjFad5?T;LKKRuRdMFL z#{CC0J6qF}+}zyF2jP5Ch_kCy1R2-Ka)DZ_m|EW zma03LnDx&8A=CJzsZ}64&?l^xl6v5M(PQgYJ)OX!0mQWB>(|XNc1I?gA6ECT+~@L8 zvgJ|tLrqQ$aJ;dtoQcF>i3V^aU@i{Ur|Zy>E8;LRJ&Cv>s{-bwASdGJx)!vQj=Oj6 z40CAsQ$Ko=D3-W|gDXJ%J<8ifU;yW#`PCU(iUUDvoC?k|oop=F`^Ckm1h0l3S_z^J zgP$0JO-=>;(VJ(HD^UvXU0LJ*c7|PQFqo16ySfNeq;!jksB{M>J3IBs2^QGdq&+>c z;f8_AS%{oD4~5k6yFztx9UR=OToQoM61gw)gLB74(JsUvii6x30l27VJAuW^a zwyr&o@rpMOcG{okDx^?>BkgzO1y*=tV|8(wsoFT0LtfIh@J=mD`*s8`(8zMf=O?3l?)>o6Wy78i__6Wv;lF>!rc5xOg&YE5QZD$4yfce zE&~KSxhS~X0tPW80V67DJk_qU3i#Z$@x1Qwdl@Gu#%0ayI&VzSS@GmiE_5+0ZFF(m z2eQ}nqW=+5Ki#HCdZZr|=WwC%D)LUQRJh2fFp*ws{|-1UDPd5`3x`n=pzKwmq=Td% z+?=Dl;PboLhYxN)QW!3-neid1CG*kQZU+??v`l!x#}nV6MXl1Bm;Bu%cS-Nk#y<+;1uBx4mgr* zV*b327M6v*e|dC^C^cu;UVR%agU8p~EED1t8E}`io(2UVq*$>BuiqEqnipLQNBnr? zkN7z}{1!AD*fusCDMUTkBEQ8PO@x6TlVUfxq%GZD_L`|wq=ecPCF1z%ed1NUm@o-u z;HhG9aUsCCjYqyHJ)Af`zs?*l{4*#h$jSE9I59h&ik#fOj$Ppk^@|?3$DyIIy-qde z_Axd#64cZE_i^ST?tr)8%*oB=VWC1t zZk)8e*~yE_NjQuTnfmu`XpjYby~LMvEgMN0nc!lBJ zBGri}a;x5TfrC}1h_cAX7#J5&I9O4OdpBnf-Ni*;U8QjUH=*IM-9WrYL@tey%EH2g z(rQRt@Pfep6%$L|&i6L8Mi}{o1NzS`*FGL{j6!H(fco5jvoE9w2^A3g2U#L}qs!}a zQ~!~>*NFPnLGs+QuZdnV=R7&bZ5>u8#g?T1)dU6lj5GUyNG z@98b77JL8%dFlCWc9ZJ%608K{a~M=9E1%X#S1=H)yF9ExlNvpSUUBp4XNJpM%7+_$ zHn~vT4-zG1@Y;jY+{0rv=vq+LWP!ay+2Gg@$r3s%8yiB<$1u+12sjIYIOgRSlqV9_ zXf(h#Hy1Y7`#>)&vbzw+#a%bDYJQS(6C}?dZwDNVy+GU`vczfvmM_TeAubEkWo%|9 z?8}#HW|oig#qFHO0MkA_rBw7OafEz7dWojy=K`)i5JXU)e9JNo#BU4?*Wv5S9wHx` z6`bM>yuC_Jrkd{gx(Y9xV2@I0(q&SwK9%3KJdi+_~uG^1WT+ z3*YSQ>^cBKTweXeIzV3@*CDuzeIsC9-kO)t5ISj8bO2SpZlvwAX9Oq}Sp-!gSC`Hc z+*l_q#4)aR3f;Nv`1iW1|A@u_~%Nn6%>*)z=0q{$=_8A4u z^&{-y6t6sdHsCAXmiqBySYIFYkZbZYX0X`Si>~Z}Z!U!(;L`rzkJAV~ESGz6NqC89j&OSM~4 zN{j}8;oCQrtiz;d7`7cFl{7;`JSlqpjeWfB?mrj%&G?9DPGt{pGeE)z0d~v!7)lk| z29N$+R?{^n`rc*@39_XF3F+C7gY%{+$XL#7YD$kg2;tg|hIuTUY=1}{5$JD+!_HW22*wLGrw;j)JDPh;ba^RbtnC16(GR6X=76i zEe?QL@4&#}?D{<$080*z=KyM(_VnTv1P2ApyES>?0*i`_kB$U!AVlE5sB%5CA|d-* z_$vrC-sKslKbQ8aN^Qt|)CYM|&F+p`6bc3FXI8;Mpq5{BP#A3s8 za{e+pO99xy#*sgNtPlDQH=2bU2x20)wnnR3+vaJ}SuyO*xX-Wt4T#o9u1#Id4k?sZ zYRznJFf%YoN~3>3+$F)__)v^#OL^^i_#3Y}-6zRs*`GHXY$$ELG84b^D`zC4Hz*=s zXb-=C>*MyXU5i@!hDh?}Tc#Nfk0J3-vvl)}{Sjs+-3c5|eI*9tSh|N+`jUqFJerop zwmqVC7t3*eZ67fR3SQP8K9jdP_yZ3W`qdTJy$H)+1Fc7mN6OEbB@i%R;AZ_!D<70k zDonxeY8x^8lHGXVv@>9oV;xcqoPYQs{(1BJyKa!+&}Ls#>oOhBq9l<0-Bm>VsHS&* zG_@y+ItCq$tJVT-!_|u^`b}-cP1);k7J)$KeorsU9TparyB&y_y?YkVr@LMq>8~vUJbwC*s7+8b7why84ci?n6pY;`RF`KH z)h%e0pXeFNCPY2r)>qdz97jrNDjrQw>lMN`;4?cQHW?>HWY^W1-a=Ff(?7akp(X;$ z3(ov2Hc3S&pA=J1pQ+^fCf#StMVaWwirb9JR%|(XSy@@%4q5ybWsW84SncbK*U&E} z7qarnD_A8bq6yRM24x-Y5j zaAcP>Mni;7?1*yjM~?A zw@B8}V(`&})!F`7Kiay0*@_A|DK&nJ_S7N!1IghvPRpIY8R#r~3|xzazva@6n`_(r z5_a91I(fL9;$+;&B{7@Cm*;R`5okNjhgB#W{fpAW_4luWtOnO61#6|)%0g*D5}BB3a3QFhb!xj zB&qDjXG;;(7Z?=m2uRPJXXE4 zxGUG}>CzP)>z8}ks9sYaSf*JNJ0PBxmswHqNX3pf^@D!iM++J#Pzif_d*^4Offu*_ zbHG!tU;3A?*p+E`3FaAmNK^`CY?PrE*NuLjEIukmM_+8#)$7zj%~&c(dTrIS8#bJ# z7AxtG1da!>93Lv%KYaLLfoy#;?MmP(PJiOF`OC&RuA%Ye?@YI78J?QrxQY=fkda{@ zd+U=E>=jj%9X%n9jdi+;h`5D7*#G@8gnDm_G<;syKcDvv)1@sl;4<{b>f~n69OvhC z5+)Xklps0T*rNKj*BgFlGfHt_h<#9eGTj2+yiS_cu&jKAnq+I1&+=I=V6%w)$bZjO z=8NsVRp|vG$ePA%LiEiG)Wj`^NmE=#BdV7%{6BpKz{G#&hM zN(6O0y3a?BIZrZ(*)_xbhut8qsTg~a8$2DmQO`eQiW+oN9t;&d8vMnld;L8jTwgE} zN?WVM@5DK8m=WlXY3LXGx`rfTkmz&&ChZ(fE*j(acq?}kSxUOpx%{c4^XPnhdOTiL zB2jrWAVOK-6WVxKI)frxXJ`L! z6=REuT#z^R&N4k^MqhBo+o|}DgmnFWyOq3t+D)e=8Dstf%wdpF?H*w%UzE2qR+)o$2?;KTR>oN6MOP0{moZgUfkp_*|mQ0QrFawX|fCS3zLKY z2@ZZKD=U0QCk`H(?}N)hBd;I9|6aonztf@h8V6yIi;eMB+s6Lkp0m6u!cbrtvI*Gq zgZ!z@8raBh0iLVws)QB%uRq9=e^qpYfGk#i}$>V zqlVcls6#jX>RbbE&v32WP6z69UkPn(#rd+%OXw#yo9JsgvO4hs{NZ4}{~pUSRq0di zJGuIGo|IIyL*1Nr*FYNMsOz2s~#B2iS!)LyaA5(x6vt+UnIaQ}5 zF&&bqf2#W9einP3{7;{|?a90|6`9}`qxQ^;k%b)=w|_S{HPWHlPIf+LI7 z1FNo9SUt)YU-hXvu0J%YsttaA#2uORztU5KM zPEVq|(N=QUy1aaQZun_wsMnTW-S>H9h+olhV=abbo!;^3*p-kitb>@ppMOzqQWA*v zEm2PkW8Y64d+=M>7WCFAi`3+Io3H|*|#Oa zKm|22J1dUri>@vcb%+xU4B?4e=^xt5x_%i=16ECje)`L8*(wRuu#4#sDQ=F z8~MiH?Jh~`ejGmHB>lfHjK)D`Wg@O&$3N#<2RVUO4dZLug}vV5bWfi2+?gHYoeBz) z4ZE1C6#ke->t-TWmsU9Wx>9Z_IAo2PW^2X#?~m@|9*wPlw%EKA8joZ_+jA1X(_eJh zqKsu@aTX#_n!VfhyOIz4A*tOISxXZbIiooNmC;`S0K+C5O}1(1-}Qkuin;uW)U=t0 z2z8XG_hI2|^IN<)Bk@E(!KCl2(}6PUKSd09T~=tQN~2_=X%uM+_Ha$&c9ob{qd~~z zN_G#7O}79UjacIYs6u2xR0A40J3@>k!B zS;pP#k1Y8HsUYyvpd;07rud}pb>$=9*}oKig(JZ_c6tF574bq0-~PlZBx}`-t+xZS zdJRx-Vq8pg2R{u&^=j@U=}c~BRK((-arsP`NeNfHOU@JPh+M;=y1}GAdAf$YKSHV! zt0041hiWzdv4NGU{3z^P`#OLzb30q}G+q=YPH4w-;HK5gvtS0igTsu<)nY53FgG zBxpTMP(yXeeVYs%ta-76mOai_{LqG_h&OmyN=uZ?-*i#OjyriV0ufH=)sMy@OFT*>u(zC8`pjo`GX!a}5{e<-3 zUuKs~PP4?~i$5zFvPlQfRot$uoJ_PDiF;=f- zptxDf4K|%sNzBX2{#Dp!!H>i@s78b2<80exEe}>wFsb2RUd&z*LTmKy1B+++;v$?O z&?J&v&P(|6tnf#litg=|`fSp|>%Gro`b2hWzo69X>mIa}hV5Z=kkX`AmYg|?djkQk zB{N7-IPB_vhwaAfB(B~eSNSfgME*6ugt{2|2CZd0i)UlYmQ$|dfd$5Et13%f9F{Z2 zmi^$RXNsrUvZHwZAiHi~JoHpYFC#7=#o*WsN~=*t)2^w8A$(ylY)B7-A?yy2qS4V3 zzDm1EWV><*+Gw2V>C~{=k=aAf2HYU&T9@CWw$as{hid>SUt1bTy{#($MfjDAR=qHJ z9P{%Qh@A?BE_m3w;#^xstFO9 z_pX;~vcnc^2N#|M5@Ir7)}wQf`_obK{Ov0+I0mL)Y)GYuP83ZLRnn&mIgurBU6tLr zYF3`)N%>vLXzDCq9%Yi|RHI23wQKH@AKh<)Hs|Ov54P?%W9vg=!D92Ec)7T^ph!KC z4=>Wh&NoB0;upGY+vfj$Xd9dMG#(G3LW(@}G^`LB{yB`ye&CtPW6TU0*W?c#Y~PQH zYbw$&#evR(*0#>(-nDCCq_axjoWMi=QDBoDaF7mrM z6r99o{%UIq-{Idx1-Iq!!YjS1Q6HU(B~y6LaXe+zo<~^_!gpU?G^}D!+ zr{$+=G~H=Rdg34UO<_jWF_CDRFXDZ*%B-EoY|s9AFmRjM!Ze%IkIP@6eDO+SdjSFO z8~VnrE?#AuM|WaW2+6<7=fyhg?Qx)n+~2q03Szs1IM5%yI9uOYmXL`4?{X3T1}&8D zR*ln6MY~lp;MrBf7 zA)`VcMzyJF=mmz*YQHf!|0{8a5l@T(0|6qt<9<8ecL@o6$A8AQ-X#Sp{a!(TA^Ep8 zC|kZT>0Xw_E$xUhcIh?_La5Vw1E$?w6)4xr;T#J?gt}(7A-AE972|2sD-8F$= z6cKnG=@6?##_TfPc2WF0LXIXdp0G0NC4T73spV&oYl*!vUUrw)B9>VH_n2v=Hbh?J zY27?#VX?w$9?>w+uQFF^yGd<+-01m(Ze1X8wBt4zS-W*f+`TRXqqJr4d@Q3H+X-2v zUe?EQ$9LH^cRWy&3c?1zt*IwMA;a33sBor9<9E{gx?R!LvjZrh(&lAxH?1jGre8}h zDg1=M0~-XQP|=Hn`Pl10qm|sCg4(gXE2vantc{f_fNw?-R zfT>$z3!wqq$Xyw%I@XS@pk^pKeLy7fr}iUpIl_0bCw|qoEfn07b<@bMCRNgQZ=d~aUPgpBF zO$p7y1r_v{FLr<5Kjj>&?{JPhuZ(Is{)@G9b^&@>Ka=UEbM4<_I0zgf?||A`J?>;D zr2WG==cVY6BA(SQ+@Q9f?-v~VyW2_E4)iAJtcpQ;{S>mRt>MU*YWDKGBYk|>nFOuw zNn5dTz7b=rFmI&btS+bpDUC{^8RDN_2~eIa0e$6rm>J^xQS51liAg0yU0UUCcg1!v zR|qW^?!D#rd@IcWqMaS@C3m!iH8q$W%$cIdGUI90aA&i0CiGj`F1cC1um%JAi)o4= zX{n9Ls@oDL-A6;ij&l1)F;sm|xh_N-|5bW1t~&n``(kA3nfe!{_f4Y}B%%|4D@ji> zc3c5Lzlz=mLv@f=$oDW63;G)P`7}$>bJ+egKDp1u&G{RsKxp8IoXw~`jRw4sbatpt zT=LJv4)p#Vdy5i^?;wz1UgG!u=L({ROOvn5_fho4!ZqnGQ(e*fs~BENV#IQ`tj<5^C1Jx$S+3Ge(H z9N*Ah&hY7I`c#^A!%j|E_0`jy)WQdreQP1^M^})YgKDYaUXFsm*Jj(na4oZY624zu zS85)_)!0gr%pIM9Rs0n!db{1^+4CE474t{dpV#f}O-<=exr~Xq&%Fu3evU`8t$jm` zOhNx3XY#-LW*j+seVdlht!}d{tal`mCGA-4$Kha%-R}J>!9l9AhQra?_*Kizl^6miDrN31NipjK;ejwvXrRU>%)f6C>vd`g31-`b0lLE z3$?lbM9Tb3MV`QYjH?Bc2H@xh#N2WVYfipJFGm{mj20jy&pv;f++^kCY=`2uP+_1o zDsC2Eg#fTkd@!8LfO;P8c97=lw(ka}D*3W^I-nL4cpRPJG~Tfw5+u0iCX?TvZ|4-ZWMd{qTpMt9 z-4fNrFuY!8HrkROs}ECW!ov8>)FkT@hqsUB!H0td>Eu|r0j}}`jlDhA0wUmG4JjK@Sh*9Q8ATZ~ z8B3f;R5}(INhQ(xOGzT?QHVIrL2V`G8&JS%O<b-v71TX(IAvT+Pa> z097|$BK~ccqO$IX07j>w*#xPbN@%5fhr#p`K4&$_(d-qy_|?h%Sm5`}+}X+N%Jk)# zQo6m6OpCC|UFmFNbRq0LHq3(z# zPZ_q`IMCt}b?%5v#L5-kR8Fj_szS!ftIt7HK)5%v{GhB&l?b=f68p1s@tfx9V)&|g zijOQUg#da1AqIHRK%Ic1k{~e~u#g*vhd6-rVgS3vf6o{PF?;#%Xm@)1QWCtKIfO@s zN1U;ql|2(z5+^2H`aXxIFo|w0XFH@8bxcDQpsX%{wzznc$K^E^^gha(ngn&zXd!KA z;qBKdCI|o}k|H6&Jx1=IfK@&a((~cU&V=Mr7Dav-T&HSbBNoVKt_Uc++fS<(iG`E( z))Nhym>l0{B8&QnRX!rK ziU~c9DzD2jn{CYUrarW&WZt);EK{ z9UaEUkfZkooV`yStVOePN($?}@4(_hIxj(f*lpz3g>u(AJ&4Yg)X`bba9K~?-l}VQ zM|VCa!7m@VX7yNYIo_J)U2Vz8^7^WS@#dc2Lbws^XOI8O))I*Lon| zlM!8M&UnkkL_1lQM*!D@-Qn0??DDvi1?Ro91CLF7IHGU_JALrTZhf@jliJDUJkJ&; zf<)w2^OD8L9m!LP5b&P0>mF;~Ns7fp@C(pF4)g_!_%Xe3!{-O5)LRMlH>q<_B@mb9e0sas;(L@my; z-CFMb0jRxX#9bn~l1`{h@k%wWttCV>Fd=@UA*lr$b*~~E?jaUb(UA7!eN>39JOo08 zfRUQ4#Q}u3GCSwvN+}-|mhG4N?wzk`+*eWEN2}LY(vI{4peljA2ERA)%6%NoFHrAD zVJ!Ap1B7OwkCyn{f^{Qz;||XY({okRg~~Nh<^sB>1#w=bbL$38T)EHpw%;R1xdw9u zqVMXKY`r;{8oH(T!t1lZzNkcr9(<&-Ym)sn%LC3d629f_CcGS@VL!=azxSp++>!4g z_)MD`^2L8-j<(xMaXPlDNy=l54}A<_eS*t@bzwj z7?lfhV3#x7H3b45iOp&jFb)}yEM`6Y#w3wsc8+FvaoRM$GIZK?mA$FWa+{v>ytPC(A3#>1%0hB2h+p+CvH9Cl&cyeVJ0B&k?f{WK=zt7L54S9>zm(~bcY2$CEi+^5 z?Ia{X{+nFiJ%#9;M{QD=fl}?mEy$TGB)Q+e4WRt{(tN}rbvum9XO)cf)-Cxcs(Z#M zTd}qRBe5GN(3Q7Jzbg7~#V-4$`HxM~Sr&R93|k7Z{424KEy%wLUC z{Jfh4(|k~q#j2(pMV>tEHOf^R9@1iV+WzgrB=TjrkdXv80|av5=I)@fJI8<{15G+} z?(3FcIiq*6W18UKwZbNU2=~O}Y&f_!ZvC(8TI7%bzj2FK%sZEe5B4KgkAz?CU(zbk z`L8_a!a~#$Q+GnQSZxIe67+DPkzq7A5msmj1fBQS&%9ivbMv48fzyuYDWl&i8V{KE zR4_YUi~6hMTw@w*LHI*M10*9vL_UY9Lu|lElFq&&5NOp%EE66OvExKRL1Y}YuJj|t zjJZ)r%B^QE1z)hV+}v0o?J+1-qzZ*!kJq_rn0#U$I+LKDx2ybP53z{gk|jf;+6{pA z;P}O?m?+A3;@_UuJZ=DTO<^`0nZl*!l7nCD;YUAuF}QSDtWNbQIod!^r>?=wSx4BF z{0JR^0RL!JkKr8X{qcEdvRUQk(Q*c>-=t1n<6oz=`AsuyFJEh0g%5CQnVTKQcbiER z91mw>#P6ht-E`=rfnOHltXbGcU5?L^)#3R6GJ)M7z@jbw$A!SmI>bplcx;_QGjBEk z#t~bea&h-oG zw@lW$nA%c%_6hT7=DUwEn&G0l@%r^l^tr)=z~Tx_-U0(SIQ8$HJ@2ZAY^dD=)a`clfN%3h2kQl*n}Oy^+gPsT^W^?SU~Bcs(yeHS~p!=HeF>$ zPjCX!Fay!vN~61{g}`Z{s7SQo+9~N+D7paTZcYvXm_gwPx!2Rf3<-?7eA7G1lPO=k z5+4uBv8^d2Dw8YHtTIn{T(!1l`M|l?dd~mAtxpo&&>w~mlp3|ZEpS2FkKb!YH&GXD zR&X6ac@3*|_3Z1WQPT^#$^BcJ;Q~XI2p%4aDDW^hzdu1mQCN7&9XG%q+7?gGDQMeK zKPTR?{)%u%XAgx!L9WR@8j1k+)8%G$M39%DI>Ds7d!yVb1&w7e@3w(PmH8CM$*%xR z|A_wNqnAnjHCM@&yNF%=9us*+#$BW6px75|YvfO{O>>0j%8ZmdS`|cZxkR|MrG^RQ zsS*&F&NNkx`3!iaY_KYSmuUc3DZ~OEQ+va#CCxfBCzmXV~VvGSuyAWU>2Py+DA~(-A|Sa#}R2 z)E9#M)UBY|=NCt2xL!~ZU~94`_>7DUsz;hpbqX^f_$@4jYQ_z@t0&spgjG#LSZSz; z@GWd?-V82Bs?K+1R>~+8@(n%NVHCWv=4fb5?#J;$MV{AYw9c*DQ!`jK#JT97-L2B7 zapSl`#w3Atyl2J2{tLd_GV7sk1IP&dxElH0HH6#}#q%ZFRlGI;^KT|*KYrB4aE>Hy z3hewvtn$0jcT^l|`Q+qvNO}2H{p{aO;xM$InYm`mMuj7npM+@2o(aVIg%SN~28M2C>6U z;b)_O_<`)X&!ub0ZNDBNH!n%#wVHXOog0&(=p$K7k1XsaX%gwx*Su0BGU|UFU5JYg zj{6(Nx| zS;Gyy{`9zaCf&Ci1OX&8@hO(NizyR?Adz)2c;0`eW@)|mF$DfPwJHjk5XbUJ+1ECRWFsW3n! zdX&kj*MGA4Gl7u$xtgoj%+<93grzJ3(UsW3s(~Gv6$+VlmbU(n;6wb#gB~-@_q1x~ zB*(+AA=K}?bT7=psj50kBNlhB6ZR<{pzgwm!8AA>jvw)_{$s-XX8GieMDWLWD8k(7 z)#=|3ii-%5ls$pp#q`AILJA^>?O=eXAa}-a^zrgT4DfI6?WMqeVIlHB1jCde94i?W zUDD|X%Dm^+7-Wan&;nch@2Td#XF)wwG+-0|9yMLLnC$$>)wnw*!R2%!pJ%YYmqG~!06Iy*xJ*4UB(;GJskLCtM60701;v@=@ty(|}rSxk!Uq#w~%*DVBp#R%EbqRw! z1pB}8+LV#*`pq@7gx~us;h}&ai2eN3&PLd^DDwrWY?bITzs~gxCQ3%sljuiXAPc#n6A`bte>8WOTv@_c)HI?l2*OyJ_5}Ui_L|ukAG9 z4O}MVNkjaTf1=sqdK>f4A68RtSk-QB8cgk6_&agLDc>Ss;D)?`!M2#!zu%)dRfkE0 zc>bi2pB_Krc)gj{um+)gnT|o9mDicN1#^(3a^eBq#h_L4dlqI;DX(U84uKn~YtB_- zzZlSB?%39sm1~noD}8)sMjq)Mfi#~%ODMjEO8dD^fIU3r7(gF-plslWNERIX!Jce( z&v()9<8GBEyHd=q65$6N`gZH7>by_$1aA1!tmVA^6uus#Z1*($5mLA?+aV)ApPV^P zDD^oDyti9m+(FfdkZ|6)<1UIJH~Y}=m@)Z8lJs-^6)MCRrV3P@LQ-V@6RY_OU_cm~ zbDw)L-l0E5Jhk=n_+lu9%Rqt)uLD#`6$78p>ZW6tM&bKKP_zG;onO_6IFFQ@_s2E7 zUyvgn_xaf6;hy@{$>5;I=dx8T96bN)M*B;(ucPL-%#JjAZqvhgfs6eJHz)uXJJ4_f z6Rp{V7g?_5zgs{lP6pBG5Hnmv#i(`pFzP?A^p++J zb9Pc&wek4}>i~12zNX~U@=0B`7X~h96@YBKJ`Z+CH2U(wjBXQ1&%gCS;3Iu#Q2>Qs zbe_TW1sqmc{~?Qjp)O)vG>izjUu%c!V=q5f9Zuk3p+(VmM$_pIIE(}J--_f8XvxUk zO~k>+aPJ4j&#|E@juRj?mb%wrt`OcN6+OH^4L!S6Ar1>e8GPz%tx^@{-Q+J41b{^ zeV}eG*x1^-GcOUKOwi2g0GfyeE*)0`LVu4v!oUc*Z1%ru+C20=eY(b?Hg}(q$aJW{ zvVv$%JM5)%W5Iv1N@!mPWqAnvy+p@d5Qy7(s9b=_DnCCxQ>EzSh%4MjwEil8>8_3o z*ZnTd)jrQ|>u_+mAzLm5$lZh35<)%E6;mwKts@_kVDcoqf^e-1pHJz%4e5QTi2sEJ zO?5ia>hy>!Rybn#0dS+!NPf0dhvr}?{;XlP(y^}B{vp5*sMD&&tRk-z2}>Xl);$RX z4BkIDI_e!hmJ>tlOb?j?)#;Grd}www2E^;8Dj88o3kcZyK0emMzzZP1 ziMoG(DP0NN_(r|i_Tyvf#c!&!htyFcTnz_#Uk>zJj^7#~h80W~m%m_2xwl&I6XrC% zwDrTI?>NSQgW1AbG*_fa4jvm|?{tun|78DS&*fsT@}lSPvM17~>o|}22EuablNA~J z_PW!oF`RQ;gc%X|$}IgPve%)-R+8r7q$55es}lm$>GWVZ+l z*v*je?L`y4&{Y4G&&o|12?gC2Kt>#ZkA7!v(2znfAv&lb*!1r?oFQ8Chn}e|hTMDT z-H{UE`D&dw|pClg7M=CR~};y6~j^AlePE7G0}qJJt@Pd@wc zF1IH*_>qfcJ*G4^oi(Ad)%S*}k3q8H`j(`s#kCamov3Q4}QZ*FY^yfG{D^!{FEoweqRTWFa zZMdO2T68am^9{t6N!6}2S{!Y{mzu=>q#I+ClRA~4{H@F$du_xTgXp5C^>H3K2cc3anXCh?Q&l%% zgC`@yryFp7QT(ktN2{5Xc##!~)(is?624^1Q?U+9V9=w*yh4fpPOi=eXNv`r`>V$YH!d^2KtC zA&GxJE-tn86Mra-?!Cd|PPT-<-oeMIA^1PdUHLcEZP@?Lm|-w6WEo2tONe4fma>dp z$=V}Jl2o!~O-zx=)(9clQr0X{A#D?dvPF1oJ&~nih-?oK5#SoY8jOqrMK*|e%tjQP>O;mW{Its0BpI4u5 z%WRMLu+Nt^`>;~0zW+TlKi7Bkd04>w*K~#4T(g=P6CSwwcR^jjaDUHASX-_j{SxMl z+Tn5FGu#RBOxL239^YXTrP>Vi#d5x9t#R0?Qk?$H8D=g9YCBdruLKW%dv?cSzZ~+I zKAq39bO;K1r}S_)iYim+q?HfkXLu?xDhE!6H!Wpj*MwB=-{uS0)I@~QX+T&~9e*-2 zG5f?7lV)#$oDsWp6y3+Whw?hYmVcR(U~;i==TFOK9t7by)ErAkNLf*<5H4Ff*G}Da z(9zKu=jV(`dq4|Dk%^PrNc8t@Ko@5BLZ1Jm)t0oeOZyu)Ezn7v0-~+SDVKaubq_L& zMgpYsF^Up83SC z2~~4T1ZRZv47pMF^ymAp0CoGA6?Zj%g9qwlOx^yz0`_=Z6;|^74{vIb9%L^ju5H%p zafOf3`ufy?Hw)e=Vh3h|iM zqkPm5MJ!FX3?X5;LGL38P~;2)P6#1My|<-^4}E-+&ZO>MV!>16*UcFLY`ma^TWmFo&IFdM@&@?O?_?3-Pcjzkl7SmB}(iuYE=W|VSqLb4f@W3uT$AhjzX8Q#MI!Jf?) zfhPf;7ytU|<yvg$=6yM>QQC5xPhC=%3%Ao!$cmucc8GlkmBkG7*~`_0SB(>;2iH zH0HL{MFj%iHLlpJ!B3>QF?^gcSJ7B*8PjUSAiswTN-a0`;pmGtTQI(6c_9QVz!K}zsQ>#U$p%T(u*jD z(L}yk!~jVPOH4p?T#kl67=c`{pZvSp}&AwI>e!+WtTGQ$oAMJ8iL#9x5c~~Z7)-p!0so=jf%GI z9U8g{@Vxul!d;N2aE;}EoUhBlk%{3}s>t>k&X__Vq*ZMJhrXgeP{)Lmf~FB~vB#dJ za^hM2ix-pAR~igt5a0oZ7LdNbhrl_>Y-dYL37cRI$7BM^W26uM16&h-4_uJE#xE7! zHerYT(Zc!56ibu#R059ucHV30JjWtK|iudkv3PG{9~0=C6P zbClSd3*F5f;1f!^;c3!-R6rtG{z#rKw!ieQsS%B+Ro(k%>{T6r*{F7o^;>9)a-)qU z2K>W-5$O*@>rB~kaOBpQvYa|f5Hab4iu(1AknWsUeSY1}LOgMeEANHxODQUbovT=r zA`|iC+%9&Pdtm+?Hlnq=uxI`(@A0<9M1k(*Tdz7|T{{p1PN)$K%|Tx?3F|yRH->kA z+y0rl12X+26a}BtCdD!y1nA8XovrCqP~d_nPVdX%G8{ff`--9a8S6Fho0N4A=xBPF z(*C-3jFvyT;B}GVs(do)_u`=UOAVPASh@IIXv`AC=y$HRCm2~jq%@WD9-ToUBwo)q zjWtkm0B9Kuqb%D>1e#M5v>H^gE#g8l2;J(FvM92Q7^J_O96a$o z(+){MSfE6xQnbJ7oCd@Wg6Yv$*U?+_zhF67?1pvg{HL$v>M%a7RbT z3Q`H%q2Tm7m@=~~wJJ(8=ZGToo~}aFrre8vvunH>lF{Rfi4mn2zMF45NHcte*z+L* zaMb!|Rr(IXY2g@p@nY&11$#6%;$gxjlyheCWvW2tRYtP7nMB*U-2byUWce!w0xE4p0U@^DE(&5iDUlmHMTSby#G_ z-E3{2xWfE03?1uOPj!)5K4IHSSm4bcK3t@OwZIc(t-w+mAoV18WQf&cp)wdzI+$OP ze|CNA^)N@{7`Ao@a<>D3e*;2N&JI<1mOyCI-eEy`lU;tkqam z!U`nwdEwNahvLa*P*5+duEv#=oR#CG-)c(wld#>2O#^VNQjj?&R$&$9(J|C8*pD2+ zvlA*Nv+lTy^}}Jf%pE{(2!j!b!ysz2y36g072pL{Z%>Hz_H&^qTO+hbIQRS+tfN@6 z{H@H)bRxujnY~%XPb*Acy)ivenl~u-S! zSET)r8UBAU0K8^yB<9g|Vj@7-?~<E<;h>yz|s`d&r|%u#PH4wS`58bHCF?^^$8 zU$D<0NQNr?y|f23&{?L0LvRNX)Bl@8;2u_lk5wxY@v|>kgT+yMzb2qEy}P_L-h62{ z29XDqN>$vu_uA+Jv9MCsOyb>VDKP%z1(%54;bC;cxTq{?LLyR8{g}EFCI5rhxX;t* z3B1I{#-+-C9#9#V22`?1f;4zxr3?_CD*>yhG=tB4%;TverRTR4|5Kvv;)_-fZV;(K zyA5!Hp+u87>?F2US2ce{bWG|l`=z^dT0c#C?SceK^12Iqm~BQz>iIqo7_Yx+w%P0i zOCe3|zhOw;sBeLN^qe!MDRzYQFMTxRggTF(M%zVgIYaVl5Cb}W|FV1XEKiKQaX5yb zvj1AuNapRm?<||YN#O7Jj7bq<34l9e44tM|)<5)l<+o$tRf@HBX^kHXT4y>Q%gD%Z z#G;$Lo7{u1#`N}hV3AxITQ2dAT7kz$Vl{JjfC~VqOxQ>Y;Pna7c8$zgv(po5U~JHBMcH6nSIa9}cyyp+*PnSK%0O^>59MU0b!+S^9 z{B|)cHzHH){A_M)J!HDON=ZrSJ`V=neWsZfQ7i08_+igb>K9f{Z>ToV(P2RTDaT_^ z&#U3bY*pNsn)&6We*fbcyS}mQoTg*AnS(WGgdXtYu60@6!-r2dmcDGvLOk~&xo;j4 zMmQbX#jk8lWF&TWbci05>~2Y*qn^bk&Qlam_LV3gA8|)53Dpq`ay;>7>aBSbcm$!! z>(8(t!@12FMMjaX$4EqGbv}JoTpT$MeGfj|_z)>gPm6|^lYy7#{3uy{E7H~yAr>$N zQtPsv_2!5Sgs#8?L~|g#P!ihD*6_X-WEOkKhhEqX!iHjutF7E(3lOjisdp z_mQknCfl?ngdcx4C_z#&sO`w?q^ip%gTtkWblcQgMLyhZSY*hr8?F_O9tj9R+T$Uj z(mCxWSDsv_7=Mbql=gisd;?BYU=j@Pw;ASrLy&zmSwn7+dhPcz3f^843ZU)a5`FNlkY1@^7X82{!Z&D;&jmu zdmx1Q7ekYbv}_-uTgUck;bc zBh>68W<%#DGN3Ft{;{(qBjT{x&H+*1C7o_0u?3yj(l-K0dC2U* zyW696VUNzA*E2r2C@=vfLW~+)&)ij2p6#X+^!481%0ai8pQ{H!@WG9&MnxJ+SzefD z2$jp9k7(XT3^$&9VQWDo&)qE45T}C1%qoq5!^p}`Uyv3>4o~b9MrcHaie^U^FG5kD z?2Am}Mf6Tf37?(IGy7C5gupK5GtaAQXs9YJVIJuMwW-fD|51zL2#*nCG>vrOZ$XTH zzG`b@rFr?KB8vZmdr9%90`Ewxvs8D8hO&5#h>{8=yE8GgObeW8sbF8+YV!Ke21dFryN6jU6bXnTGwWWY77EW9Y=1LHD^AF^C|{0lxt@XR(0>*+>@@Z z2O7%DU-X?(@A|&DXig^5b&gpIRY#d;-93b+1kcwNye;=NkQ6yZ4&(@#F|$f*9AV8w zq?p5|nR&2kzqHVk39#IKLkP1i**p zL!s`T+N3}?gl$B4`#JCO>l4my`h|U-wGP^n-Ru9Fpa{vD=XN47SEa}cy(+5euABfU7264zYemUb@_Da>z?Tlz|msgqK%|AS^P`&LGC<_1OYBc zk(%6bG;Q*A&6(>MMyKwHb`I2F>)q*Oa<0{9?HK%F zK?XT%o&P6E2E3Lq5X=(1J%OvE4E!@?AaE(qT{Mqta&Heiurkd7Ld@PGs08m#Ba2M2 z#DY;Itpz~Fp_UB0f2WG0H(;z1}|`@>{VVjfZSC657D2EAhugKU!FLbU+geSx@i4hYx*n zIJ6hWhHx5kYA8Nq)cDl!S8(u$Az_G<8;NE^U)La>10;(cg!_N;K|70!H1saLBfSO{=@2^7 zQJVBl2qEx0QQ!I2nl&?P{?V-WHRs-Y?o;;O&pruOS5=~;VWojUAau$P6*M6b3hrv#reFy}rs;qEV>&4jW#9h^ILgy7V_R;t1l12ixO|E#xa(_LPOu4ia+VpCB z@NSXe;g%1Q1OjP7bNPe6&NP8VE)ze^RFVr3*S!e-`19$M3HbEC|1S?AgFyTtl;A&- zoCbgV`G^1e^#9{4|MxHde}Cow@p}KSU-|P0;42^d-y`>4_(X5#?QO~z`r_pAQoZ4b zsZ6rj%;SZoBevGK9Wn_-?l3zaYFmQuNjps71g1lJrb*s^fT}<|k+b^Sx5F3E$nZ3~ zk|bl-tY0|Oz0Oxua+Bzj-Sx@(@hTVlNw37@j<|sJ53`sZt_?e>AzjtOl7GP>{m+*ftY}x^WQ*jFCh@Fve&XN@Xq6n zpgD7dz;MnJ5rMUzk=HCfL{)ahi^<6ze+nQA+W*~`uaZEo5?{}HR-;b8f)&N5o2!1M zz;&tr%9XTC7>ZZ7$mjbz)YotMLj^2b9eiQNehu0&Hz!R^sp#04<&Z~%xSbdu{95t{ zuHuOMJ)PbQg!_o(Qmq4$Sf|~>^qgi4$O6iX5R;_T_9aD90j+zgf;)5V8y1)>yRmYv zTTVYCu6#>RPtVuN)vtApd-nYu0dsPMIl-;mRXg7QLUkS)x`_WC5_37_(Z1x3EKG*7 zNVFj0WYS|%L>S4h?{skm8HrmZTm!j7yb8;nRg0i3M5^Io>KoW#j?YX}uwbJeGu!P{ z)g&)754x_x9kLuR!wTycuC58MUk9^^uio)HzR?nO1j!+XK!lng5St&nZn(CkH?WKF zbTWl`$-|9O(+d`u<8-4s)xjLw(Fq#*&7&Bf7oQ%eJP5s5W;Y(dCh__BxL+t*X!h@2 z$TShI8i;Lbzl2c)6fvSj?rUhXNvyL9%`~)xB^>rmz!*}Qz9&h$C5bHZSz}s4y>Z7k zsk5$w@&T%WZ9t;&b<2A9AYJt&T-x!MN5n zNH8q2^KI$*175Jnr-dN$erp%vFo)+X(=>Z?6pCeBx!r#Ep8ffAXfMH_k0dSa`)v=T zO<%h9d1&_qw%=AQu}%yBzS$%j5I+FFY{0}z;j1cWXDI40^(!YwLb73W!Y5D8-?_}v zBU8p(lT@brqKIk%x;UDru8fAYh9kUA2$4^pGHHA3($3FU+TFeZwL@;t zF@$DbPH_SoLv|V>zaTPw=?b_=Ll^Jbm|KQY_|za9yX%6EqdeiT`1*~TsRe?=2$a@E_GP>IN~Q zuAIjxhkkJ@$$eM*x$NHUOHowOH>9v{ctcn~S1iRKr&JzF zQGuY9YN({6PMHFUt`aZ$$*^WysLFhAaedNMHL;rgx2f{oHQfr>KFOb$kdH9W?|1RT zNrNhJ5p&yN^s}JwXOgbMZzBB0^$PdCHWw5iNIm(Vwp=;S`e&ni5qP&-J8`GpjukJM z+2&-V8MkI+%dy-!Amh}3T)>_+8TFftVx*O^R^Vk1f%H$+a74HHJcutd#dE zXkPGTf|*Z;pTFRlf)8or(@5jQ!rTV^r6w0>QTxu?r`t+ zdv+=BwXs(dhVLJX&-EltJkBn%pH8l~?Ca?JB)9&flr~ee47%Sb7R5DP>n4|CkQxf@ zl7v7`!H8kFScaE~#2p(Us8Fd#^sjUK1Z#^=&3xdT+Q{W2jOfIabXR|rLS42{=8-Xrd6Lxb(!80r?+0H zRLw?bl(X~k!-uhR=DI@PVIC{PI|FKq>~hGZzE6HHlA;7q^?u>IsFe|sTwkx5rZl&e zVGoyi#{_YXo+LQ!QR(%)A`-dTdi38Af|$w5F}wvaN{;I9zvQ+&IK+X4bM$Df8kL#b zczIQhC`)Sx3+V*6gWjxOdN7C?b8m6x~0|s~FODkDoHjYEjwYOmk$sqnD z0CLn^(J&esTw6)iyxW^!?v2%0makkx=C&TJRe3|9cFJ&XOQp=k_uA=L!2@i{L)909 zIZpMoAJ^V|DIX9{NtiF)H9QHWeQRd>G8wGM2I?>5C}9AOP>L@V2OC=&y0aiaPbXkM zL=d;^wHzyNc3HHi%z=U3eB4m$vREZ4+Bs!GF5|VEsj(09ARtLPcx8t$cjf}6z@g%tds_Or^;R?`IhO;=g*(OT8eZEA2@IGU|TgcwC;7( zz8n+$({vya=Aojd?Mb3q>2_`g71lQ22!XF(N9|>5S%eSD>Mns+y}u!s99u1P(_Ra| zpTsI|%YIfP;bjGAssog&8XA42rDR-c$u-Zu2lDBzdm7L0lqy7fA0I(0Y(^@sTq}$* zZa6e>IQ!D0g^4@S$q{`>LhN-AY>4Qr55cO1Tx;8Oapw(f)zxckVT;qtSfD_SpMT}uNalAEJd>k`tn-BS%bvX~`;-;EufIK6kz zZuXnk8&hq{-hV~q7ZL9@xo8@kGTo3M;l8TyzHNK$tI2YO`-FUvU&|84ClF8Zr>c=o z6RhDP3-C>wFbZC#huWGE@_gz%(0QNv4sD+mq|H!X!;38mS>1LK#%TU0DjYpWWnB{+ z=qiiW@4jsb3HB9V6Prr(q$=W119W^umEpm=>VjtxfTsHI1ubM6m=H`FwpSzERuNd(}bp*nW z%no-kb6h-{DxW9vJ?mKm zKxoMVlJ+;X*kOEv0Z!~QRiobt55dygbSXqI8gV!QNs4CeVU$j+$&6L zzn--7+#`Sx4l+D%i6M}Cv>?Uic zlVQz>D?{0q30D^vhF2l)$|@zI4-7ok=XQVhjn{lzv=5%F zbeBQE0Eqx{5E*G+pbk*?Z{wr0N>cB{Z*1|x|h zu{KZi{re75g|l^cTCVs&v}oi}E&br+)a3WT3`Z1*(X z49z5?Qq?NZYsWcQ&v%6BVORD;%NYKZKAhp17XSga@5$&-`;;ZPsEIxAupQBo_C54o zr>eBFr=SYuxE(1tu&npXAv41;)&EuyeM%l7Th*w-2>(6Q@yKEMjA;n^aJNbRiew492On@^zAQN$W(SH6Is`k6-o&wXZn=9lv}Sa&lsAca8iUo ze@nx22+hc#bDG`sm!d{WN??mUnM{h%<@e%zf}Ap5J@ci_dyYM1BJaQd8WS^5#QVkk zmpTch+&R|Ey41W|Lx8z{Ja}O6#>5vG)$PL1QMTgC_pfA0easV9{9ga#bsR)9(lzn%zAKJ(r(h z((-h&`08KeL(6v0y3Fn+Ylt)I4wXFAlm%Dkjm>f#D2T%s>P317PwE6esj{yN5HtF0 zR*`cLiM7A92oKgupRz(yp+hrcV`WvNN`vS*eh$bP;(Ywyu>|#4{0rocB{2`Qy9E8y zR7UiD#~cMU00M2t%HuvXI9hF$ptaKd(8pedgM@xrwQ?(Uup49to`6qh@&c+BCpbX3 z=-#vYKGfE70f}4LZGWht{dpQ^s|>}9&?jMlNJR`lfH%4+>^(0jN2*xLgS_N`y zr*qL>Knl?L(9q_$(T%5%U|#7niyMz_>lnx2eq9{7g|%adAQRlLW&7 zOHkLp+rHd=F%F}?w7+6+h=df5DHVp{7f{1@eFPN^$DCM}#GB+L4CfAD=C5nb*ydy|g0FHnXuhM38H z>g_$pGFQ_pwK6Zsc-dTpGh8~-DmKp85{xe^c;(R|QzbOp4Bz@IPo#41j9S|mmSnN4 zfDm?49_TvXSE&rsf~m@W7dLjL{usf}3Qv&O5L34r%psr7YrdG{I@3f=hB`oJ!eanZ z&gmvl;@<((T0)dyAXY8=E?#L-{p4fUlzIRfjIEj0udv=>)u-dl%(l?YIdh|dyw=^h zM=>%IQ~$ivl5C~gvJWO>YPI`&tHt1I7`xQ45A0b>doiew1%PovO6FD~%nQJ_?hYH= zGGC9mG>xp&MZt<2$Bw>xsv1*?TJ}m_o3+wt>2Kv!yH)l+h#{r#6QjgExc2t>06@#~ z(K~TlKSS@YUHH>5n*y62iVWv6YB6f118{1;iUfj=^<(gGPUek8cH{50?YIG!9cq1{9~JMk18}Fm&1e>O3gBV$|gzyG32l zPoJWG+~U;;PJ35go;|XYV^p^uNO${W-;RezTHHOtY25MABLrvO+{DP1q~~Ii2L&&6 zdKsvJSmBhPppynTfPIuls5<EhF+icW4&bD z-8Hi1VNm{p@IlSoZaUfL=m4tE_Q-&5ZA$6glZ$CojczF6&&z72kQYHzSq)sO;LXf3 z1~uw6CAKqsYc@NN10H^f@X3Di(0rs#03tr&06KIv0^)B>WIhi?qNkrzHp0|{$-?M- zI2ILywVdU$tJG4C6}w!11wpZ$e3>An(jRN)FqWCMTZ^E$mE!9lABTVz_U|_Gb9E2% z;}^u33E-W4(0*%p81gnpV9)L7JCJcc=DRL*h4uFSB6YD@gN!-FU>>jOb#xOxu#R;X zIS~#yVx44<>YAs47EV+)frV})VVrYhj{q#t>5hw z++DgBWo3hd=JQ2YEPzA@_NV++`ACb#uzBJUgm!)8P}TMb$T|gVAey;hFHZM|Qn1|7 zx8Z-7`g{r?hqy&$RoOx*7Vq&&GA2HqC{JBHRdcIf7h3QQpMG$C{bCrKgjn?heH-7U zemgHt(8?aKT`27PR}y`+hZN#V7XUw=TRL-NAmXlM+?wT7|=f;{Xk|#iZKt%OH<1@nY9b7u^DijM7snM5sR+4oV?- zjlG|ReiZZR)9y|ycmev$gd!9yn44{uUbYZp}z37uOtpZ#)@fJ-lFZVYzPbo(vpEX~ECt+x`?}0LK z=HPEHVQ;f);eQ!Ou210IVo{A1>Task_&m5auJ(I=Oh?J@#P|tty=Z?lw z|MQF%!Ryy|K{AbLd2P;QFAv$!)aQ4QMMYJXMCG+;;`bd`4QJ~;L-x8Q@26^ zuigQ@@F}Q`O{l~vAGs`+Yd}ve)URl7ssxRlPs?hlKf~W0ePlUObPZ9ESE`^hJi|Ke z#n<8p`?V2;CuR(>pKN+mStI2$S?)tAu)mzoPI)_22iPS@xg_T$8fO8WMm5nQNqP^E zps{kR5g>r)Hm-GV&BnY1GXK$<$I^=TKD){z!`?<;u348E$=@OtMK*AeM(6oU9(O|m zY3x3t;&3jP&1DUyf($R|f$&`?rhNonIs;r$R^AHwu2J=gjwaTiK(7>Z$Yszb8vNiW z-scN<+Q+(MZ^abGtNm!eb8~Se2%J7%Eqg=Ls@WOcN4dA=i+|74<})ljI|G`;Asv{m z<*0~6OPtYf)1k9OrS|WwJTYTc^i(zE>Fy>xM!|MB-Z8CoPdL1IQSpjOZQB6n$p8E~ zf$`ixD?f9-K~*wMYyWHNfz!2hK;kDApc~xoC7OQBvGO9P->xktOT_ z?kj&X4F!-EG9l3ffuxFd|M=M$|JtrK-4L4742qm>iKY8w?V2-+e_?lf2dK|%1vN>+ z&zVmy!%dg^GjGp#pki2OA|lSvj}Ct@f8?NgWxTxgvt^DWx@oo*-Iu@}>oi<7Lm&U2 zAoWtNJ67-~wB08V_6T5b*rZ^^BSifRg9I3{=^zQZ8S7PG*2BUg*WX#VunV-*;e*GN zHLyw_jugnAdB}ud@kKS2hL(*_J}p~7Qlb2#*Z3a;DIi$uV__b+ZG{ufyWx2*{V$CH zb<*S1=Iyg@neWt%SP(#;9G^ngG?apWLGv-&rTTZN-p-<6+K4q9{5+F+giZHtw$A6x z(@>CGpx*v2CM+ZRtmO=}(V*QW8`j5OVr1kM_`SCx5o?^UlGz!vu}vK!o(D3kA=6$v z{M7EzF(F$!Pm8Grq2^FoSz2y0a`u%(ToKt9!T@E_ncuB0|vXLL~J>j!gc*o|LBK% zcs8(!GM2?l_4O99PLvxnOT-D41Q<_1^m0q}s{Q&?%ul24L{DDZVTm)L%nBYhRyUY7!pGg9kJ-xLIW(@>TMTGbYuDYn2b$VEcNbKYS;gzI?fYUy3n(+|0hubqUTZ>6SPI;R1 zjgloS=m6P&!X`Ue2``=cHd;C+Z)yvljkNdOmsC=`h{97)7&e(&<^>?tJD8AI@YXte*6@p>s zVb=?l`-N5QfB$b?&&9F>ht=fUqtLH{K@~;ky7@ zP7sxoR3G?h%v$97m_y^|oz7zzqhi6ybm?nhsQx!)1CzdT2_x+q1_2s_ld;{Ln0 z=J$FGdc1i0GO|z{^#cO8iL&)Kx(Elsc$`RAQd!z;J6VgELoVG-P)(6ZU_KJ*Io1P! z`VSB|`e1H&rWz>9%6?EFL09%?P27F;YcNk?0j7@M6K<+pabtf8{qZ91e#vea6zM|4 zaBit9d?35HG!*o{-~WWhGtE{lZ8~pY8X697LA7C#c6|*4cQPGOix3C09TX%Nwv$qC zQ7@gVy**n|dS~`v3%;vQA#!tik0ppM;9vjzfxzZVfrfF{F(y|t^B%oFOeLZ5hBJEi zqB#GQ7PQ7Rvf%v!P03xAsK=>Kpx)~-2C07@(HCnY9IdH&^DQVLK#%-g!EBz$jN&J5 zTrUxzG5hge z{PXy{Z0uY+Upl#%>`ZT(7P4lYC8l_vi0OV1Tc?R!wyvLAaR7b@@IkM&3g-TJGsB4> zm^P?!#mehbz8{Tk!~&C4!|6)e2+pUX$4Xsye@o@!Gg|?K+44|s_&0ih2&c@8F?Rz5 zodw9Zm5MXy@7CJCeEl%ZJWZ*E8; zobp#S*wl2D6?rHU2s7r5>ulrc)g+q$pc_f`r?@TXZ;b9Ft(ER>@bq2{>G|^>I%*zT z$X*uP^K!&U+L%%o0Za&*j1WZ}rVaFJAL_Mnv~se-T*u))$L7d$W^S!ux)M;9PDPLE zF&11|q$w$pPl^yyUYmwaQGq=Jb@I1IhFi;gKA@mBbBkbuzJT)WFFbAzG?Ingdr*91 zPa_QA-KgQ~b#5!|8=urcRA}n9T+!Qa1*IxZ4y@TzT5dgbLjx%(1LkOMOZ`br?LOvb z3);9ht`R$Q6IgNLD`DcJ|09u`FM;YZuE#3++t*6vGZ6SaJu$9%&BQ{|N%aI|tN$F^S>C zEd8Stc*K{!nRoe;Qb>c!dK3pOR36UJ;JY@fl*F`MX5sLVn4P||(e(^7XZR!W&q31j z_kF0Y*624%iWj$QDc0`A8Ky37L>>Q!p;mPnBFt@p;3DdGtQkp?#RY{&KLR?>184wA zmIKo>f4gvSj{|BK^jyW8I;2x%sI9>yGn#b7a z6BhA1Hedl2Ov6U>FBEzy`A4#~0(KtC5UDD=+o_Jk-o{dmKmyxX_=@drF@p{IXn}G) zhOXo*Q{gUfl#IE7#>sKp9Z5YxIJD-k86l^|v6F8VTJ8-K?DvnKT=kQE-ogLIbZK{KgXfN6t+x&+#m?9e zH2lBU7XPf2y{Pzp{4K3*=_Wgr{X`qDL1kjO^;p_{i#L0Sg-WIJ_I zMFe{uor2hNSa|qQK3W^VN+!Nxw(~z0F^G38i%0+K0xsb?v_oWyfeJ*<&^QH1y%ol> z!deVCOSCc>(b2yOGS)}%toS{)RmaJVmaw`U=Cxiz^i89{{aj73EEoj?crFKK|A8#o z=>5O)1!T>trA4NJSco6luF8WP6}%+ntdjuS_1T#Ec-8pcPb%P05^7tThgZM2)c_nj zJ(#DPGYoUQqbefiL=9q)5Y6*gT!uj15FEv#dqBb}obm(!#!WOa6xMRne8Pza4z0Ov zMT_ouE?YM95Mp|1q1`NHM@x+A_L~Zfl>+*E)GqTETut!@)Ljh(j<^R-EdCOI@)#9RG`b<_Iig`2qdA|dD5#s$4=h*R@rq2h_VUgIVK~s~ELA|b4qA^%F9U_I$dP}`50B-1 z7IE`I&66YNFQMQ5BYKy2o|tNj5KVDF9u_LG1JjQ=J5q9zpmH&CrmAET@ZoGfDmOQ+ZO^*pDPVX!V`WMP zD@#cLB(mf$B@s8k^0}fZ*0Wi{FWzdIc@-6Tt@TiFFYmIvaLN$>>A(H6i8h}KltQN5 z>*!zwQUR$3AQ>to%x{~13rvdFe#X!hr}u#JKw?SnaOM>Qoms|>pJFzZhw4zTLQE@T z?%A^%L27y>jqy~$UsJT;z&=9NSrf;O(Y->}%eN=vPoE`v$ z5A6)}F6#O}7jF3;Cj7%W_;K;a@XVy!4Dd<8jYZc*)tlyqmunDz=T_kLT)vl@OOA>y zMjP`1{^yrJMSay!dz-dG_tSeCpq5NmH zS7G-{6hM&^LcdxlEjRfxLb+ZAMock+(=AayR*40UocYe~0G@Coa9~^4tkC^Q&&jVJbqe*6gDIvY9 zQ5s}V(zom?;pprTLA2$y-vUit90aO$?mJuwtfyAu}?5{xk`z?f4Ir&iSUnOMSB( zx%m0xMVk@f?yQWC((5Ts4;x7TV8#d>ztP17WPGW|0i9TN)Ds|R?T7HQ71^+_+V>X9!b%nJTMs7%%FP{lcR}#Vvd@CjNRh)%_^AjMtRWWR(CG75 zWy-<$3?uM+3qVT)B`{XfNm}4%zD{9a`E_pIbDo^?Pnzl2#DjyE;Oz}OJiu9;>@|IA zOjr3iWjFzLe&|lVZn4#72t7mb{>&FOYa-cT%{TK0vmhoZX249Bnuy^3*_5AO#^}fC zlBZk^cesU9QqCa@2wqo*0UG*)1sVg&^i4G)%)3xi6QHI5p~#1@r(-x%VPdb+<)Wal zmMk+JC*h!My}SoRBVm?E9Dnfv(f78W0DEMZBi0>DS7IVmMzV0;vK^=|{Ele$m-7aw zi@<6nN6Tka8|rv{v%GNUcc0wBJ^n|^Roa^8mKY$AeWDyj?y<0wbi0O6$M*MR9jC6B zK!U*znWUX0FRvHSM?kmFh!B{bQn(s0JnN~NT+a?5$Yw&i_B5~`%R8hKIYWA18$kIi zQWW~4Gk=7dWV^8Lg;n6mlp(OjIx)xVfai=SHoC?2m}DClG)qSN^Z>(-B644)$~%onZEtm6QA}2y=O7 zl*=@D-!ZE@zv}_1Z#~$pF?YCh?C9T;x#aVdtU#bUc6-sXF91YG#mXt+l%$ir1>htm z%0Fj9ffpF7mb@`l9VzCvY}=91r!!XJL<*)1#%Ls!jSVox6)Q05ZMyNcFvdKZN1w9y zYba8Jn)f6YXAlc%j&bW1z5cB(Kp@nYY8ZAB$I6#X#G#))jq5G@xIclq%Kn48`Z7fC z*>swJ3J_UkeGV*Z!*wm~*EpKqKWmQ~0+Y@j=^q#$W(Fn#cpTAmx|D9@S_SBerJ93X-L= zv8w&BKd{ydAHBx82`ZFM(ZoY%mIMQQ#q?r)E29|w#gnVRs8px~rT-FT{E~}8-)tO6 zc&tT0R1}UrC}WrnJiDB@_}aZok`F%wUWPDW%l`Q8sxoL`6Tujr%))u%H2Qh|e5?Tz zm4af!U6sCVZ>Kfta-Tq*R!y(NbG)Q%q2yByQh*0~o#WtjQmQiHccLJ2p`{Aa)~}R$ zl4(C6<2t$Axw>6B8q_T!??2BonaLVxDZ`1AC?fS$$9MM}ukB#a1v-Vbj61m<0Uql| z(H5BN*L#_r=%g+Lg!%QIr~1B;B@gHzZ40BWKaaHPpdyA+PnrYBn(cb&DwRBjleR5l zR@=NWe!lhnKuA2<;sF91arp>bz14ty-ZdVfDlc970XvyOOvXbYoz;2O)Na9N+C=5- zCTRlUDj3oiDG>7zZbHW2L6q^dgUyRjUvB6IukzJ6&9b!S`_XE&6IfcQeycU`zJvX5 z*7|EL6797JT*Hm{^%)bPs(pqTx(}AOx%~?74c>|-4}3lQDb(-m-m;?Rg;G+`18Hvt z&#X-Ol$%c{qytN?Zvj2D(49{(Y$sxVZi27K)q{+$gQm3G< zR*@maf{vFw@XTV8;2-J`GDv&6CDY1ZAw%tYfzBBzXL`d3i$Kp{ux zm%A)JdHqQvWuXXn|z@-}=H>!FY0%se|1IF|5t{$=m zDyhH%o&TX!;mHJ27bJvb&ZcbB)$tZeJ>tT0@1g5%*%QLE)I*@X?TiVUCoZd7{tZ#? zHlG_x8ksO{biz0wc1*ml6(5M(4rF~Bcfei}<+cZ<@f??GitzK{P!<=SNE=|l1Y^H` zFi=Q=jSGKoq0bQFefJ!=f+_9#njO}ayt^`I@^v>ZFzSSo>mS?KxpQ;}(%f#}S#&6k zLTUs*PR+dkhOR_3J0=~S0p#!f4ZU~4OQv_yh_cH<7oC|b+#=Eb9}n? zm{e_sLw^tEuDm^Kx`07^c3TMmX2E{k+=A@6T&0)?Ntx##xNXklIy8%C)>e)Dx3Jt%ICuX+|^AL1^M;o+IU^r;*~1NgJ)Q({2r zVmex*YC@;jWN*hg?Uu&W6z^a{!B7WRF!7If$lqOXfpy@3CSJXSynp}xC(y&a9S(r8 zC#P)(G{*&ACYb$tN|nRn>XfhRuV%H}Si?^b1Y$UjfA`HUv9CgVd0FAxiN=j*Pd2}W zC;letWq$L!&L3l3b3l=4CpH-ng7{nAFLo9hTF$+bJKx#%f>)h74#S9oK;-j5he_SH zLGO4j^t5ksgyB|A!Z2sI|-=Lnl1U8}dWa%=)_YVMWJ_Sfm_ z)D$a7fgIo-`$sw4&d=>`U&xhR`WmnISpt}?5BA4pu9=E!IvqcdR z>f={?f0+qS`4J}kcpj!|SJ6aHy#MyLf{x9-wwMv9&_VA&!OH*zLy^~s;>VI+l&;vu zwBK^crwniefo7O6rcJ%_PwB-1Cvwar5VGwZ?qBQqy!@jSuGw#1du9K~@Xcr*m#X3M z+=nOS(C{HrNz^F7hda}%4AkYNrLRKI4N3|v0VOp?`_~!%zK1h3jyl7FyZQkj1K&uw zfOB69$DyABPxjZQMUw;z)D-pG!@;nt=)c#kR>dp9t?8YSNf%ZBlT&hP zvSZSo$7v~M*y&bZwzV4PdbeQ5O!w4J*ja0Tf7P6xoen2A6|?;#zEBO=i!p46OQj392qy!ZV= zXHGr49`J`b2m0W_VKE>$*;qZ@>`lA2y`9YSD0L6tZ~)|c_GQCjl}3{g6r1m)PD zb_Llm{S?1%_Ss$BhvNxi*?pne6r4ebw&6FHMgS><`C*J8;!Dfd835PPUb;Z?&3+mu zq7_rMY`evgqV#jW)UUB1iha0JXI!EE8x(J>N*Vvs5dk^^p*BcKuHz zkmEn5j&-C;J{342w$NlTU5lWpPa7(<^%XG7ug#8<&{EAv*J+P}`u;}B^!2U=bZhsc zX*7(3(_M4GVKUa0Rjd0m&lmTJn3RqByxb+0(UQBbT2AhM3nZ62VY7T*;962j;%>pO z;eg&j^WJu6|Mg|2rxwvA+4uk`6G2442D&kjTQYAufQ#$9;Q$Ixxr6(rTA4=}>Ql^7 zX3SPYe2Oo`n3e)$(ZqI{R=Xb&ER4Re_(<3|(5{{)Nk(Yx#MS`xrXHo2nU|%BqlZjj zags)p^IrCrZkja2hWtAr1Mw(D$e3U|u}QM^L%?>s+MN(?oXpy}(Cyu>gA->C5q}D} zuuzVIFK~o%t;cX`iOugd@qeNNSZz$jg-_C-u7pr3YOVEh$7Z!RZ3p3SEVxtpdaM|X z^MI*{xS4}UUqhK6)lL`I9?pF;Sc?|;#K11Ov>|FLH>j60EaSP|_3JzQptrO)`4-?b ztkt|vocX~)r9?BHtxxW2wM1XC#B4Qb!2n@fwrO9p_+X{peEg@F<_*pb@7G-x9)CUA z@x)k7!Yrhv0y>c@py}(Dui~H>Lik+fSLSi9ovJz;biLVDL2!U0_Y5k-++W<2df16bu|DTTvG4ptLcwdwcJ2Bz}h>EU~>dC9EsfV*LDqBr(e zB!1`;iptEpKVeVHqC!Wkw`trF6?E8Tri3`0NJ@s97ASQwU4@3^;!TYla9U=c?f}vr z!8DHzJ)|0yb~mXk#4m>Y-@(VrZNe$I5TJ?fYg~92)0{KIuripN+HgO^@=R&{N|Ut&+!E6HOqvWBfH=H|j!zs>Sz=IK8N9 z1O;($jTh+w?p09ShKZ2)hs5>9TD8n>2cz+v=w$NUmMaF8tND7RQ9In9fLJ~7pgK!9 zPp7?$;N>2_hjPexPsuxe2qQ``;}TVYraZj7W4hYi8;!S50G9S~3j@bEl+`c`9+l$J zyCcXQidWsLYa?ZVaQ@M@?JsY-MGZ?fUh_ca%UBOeHo9zkSLUf{eYQBd6XSTei!H|% zd~@d1<=L3TU%99)%-?$JTTuAc(~w|jA+v*H{5nVkn6 zgyH-P?Rb%u>8-Y}>rbpLz~J@oZ0=jBx-8xEDQUDC0T_0YIbYijrR$~_AuvRq+XH_I z#v=>Z)6wK(q(OnNPdFqUbBgPs4svzwYvMt?lQkdMn05MmT1M}ffYu%)vOZB$UN!Y@ zD^0Ojo9`DeTdWu3>1Kd;U7Hl*?=K2cz5KyW!wUrkyC4s6R{09TuOa%=lcb8vvVKx! z+JKw?r1(J(e_7tmh)`6|yUqb8m&?w}a^TAcU9tMI)g5TiX_l;3g4Z#e4!2A7vwXc(T**P@unND-=X`_Yv5-A=EyIN zHK;HsjQ#_rniTU6L6f_^1|=SHxKPE%3J*1e2H>@Y{urEqy5v6-`u%XblZk%gaR?J% zrPHkaG0$iTBW6SAi?F0#j8ei|v z0ipG}A9%6jRU43{(Ah-*&o7DdCy&YdcvFMZLASm41KqHEa`LH~z1@;vwqycGmi!ua zbyO6Vd#h1x-l6bG8ES>B(%~x3e@0a#3s`NArZV9kLGOP9ut{DH+i&UL{Q1dFlnJ{u zASbq0o0HlaQ-UPW8=vlCkZXCSaq5oU6RlmARyA;9gKO`OZm#CgA|*H_+oE;dBN-RU z#KNov2IJ#IhaCT0R__SUi}nMZ1ayTDPP(zxYe^)9)+e^`aPwy|(72a+RX2N@Iv6c! z!BN9bpY8TXY;Ge_P&kk{rCkE~qF++vpJx#>Y4Qf9MPae31u91>C9OfWJNoY=XYUNh zq|aUhhvc{sRkkcD?T&9wmb|TmQ+7~)j)rReA(zh?&s~tLS4)y`pguVdU&lUI73pbv z(ZQC(8bki=TmDwj!+^}FwbHrK-H^G@8c#Cm;&NGHz4$VCeNTK_-Z8NO&v0afkkv$W zyC1D@2=}gkuuqc`r||%2V^KfFT2IzL}MT5$~d=1{MshNzYCw$)*ABr-G!_s zq5L{JVCQ_p-2S+IaOeKo;_jgy6r;|5>)GkGhh}1xUckOek{$J?XVJ&wad8*XB~Fw& zOgI{AoPHG6`ry2{u(^Zr@VhFzvi&Gi;(5?{PcUOq4AD_ZlJ*7`_)ia@p{&5sDJ(~D zrMJ8G2#+b{3b{H%^p(z|HPmM|*E1B3{K{vFwBFS0vsQ}1I*!o0(%ep%do}l zDA~Nr>^b4H{p3E9K)C}mD&x;|p6?h?A_I(;XYS^QWcAM4(&y?_k z(2w(>P(XBRiTO`-n)|+9$4=BF*eZ3~o8_wSgR$k24<`A%KB2AHx&8~!?Vr+HTb$nU z4+%p9o$ON1fy4KQ3s`>Mmy-{x2DiV6#TJcda9INeGF$TN%PTo`z2N@n0r>5U750-o zn*76lD;_zIv!{B~zFBEBwSUmfVJ3K>-}=CLZ-IW7+5qNHDXbimSqj07>#I^-44+5O z`>e4D-4%(Bok?~Y15yWI2s21r(VKT+<`OFtS+O5>T4^UYz)0*B<@YCJ=<*j^jOB_n zBXEKyezI~+9=m=kEiG+7?)RFayG;6d9IW~i zxiu(G`GpUM9K=KO&CPGXfb5#wBLPZ5Luil6_SGB?f9CNI^8hv5mYEB5#1zj=Ot7-| z78!Br3t)85el!iHPGzCO=5ziXY&&{4$5olV?y@)Q{K%6K@6`}-`_A!F`T1zgnBOnP z-L5ZRe$KY4N_M5n1sqTKLh*PP{Io}o$i4$6prfZ{WBQYlLjw3EiI`_Jr>Sw@DCtp-#P=KlhYqH-N^@Y5vVP&*JL@D7Xs4Jn7b07p*XH>IU; z=L;_%9PJ45ya8U@OXZ$|0<%>n;80-1Q1+YNl>~5 z-Z1k%*r8aW-t-vNrBWm<%=F^eL2o?D*W^h|WL|-}ReC`Dl4RfI>5C=4{KYC^4~)%a z%mT&^qr&mhRXjOTyvuYjONaisA>el`znL_Qe9V)8$XR3r=XO@&%Dh?_g;O-}Lkxcg zK9|81*zQi)#=_E6{01ql6Z+%MBc)oue3hz$a$zZv4+)CCPfUNt@{Q#OcP#XD7w)ny z#eic@H#X>9^1RtPA9jY$^De2SR>Tg#IazvVupw@9i#-gzv&i;ZOrliycZ;M~9{g8! zSpMz^^O;EnO{#*?Bv;_i0zVI-c~FZOYZ^dTd~R!_bfuRqD0So)YA8gXruO#McV6|) zR|(cJ=Z*Xz=gK{#56!#G?c&7~YYmDrP`JKKNK2&xeWCu>h)6UT(VQXq4|$)Nl9gmg-GNr}=*ceivLIz_s>qz~Qo zEoSCZKmS$Kf<+nBIqQxDRZV?s6-OmSf&>fwaMSv*)oAu|)DifP$5wJUU zZT|n-mo_@8Uh&21CyKRc612nku3jqc6Hf93j4eswuIu8)7pO`h_y5d}1kqp*1Ejij z;sS10C{?RQZHy>${UrKIihfyVxd9~GW*+@Zcb1Hs+v_>L-MN}~k+j#a{^kD#Dy*sM zg}|DL2A|>H)B!5QS59&G6|i%hn0}im^4ObN7gt@wcd(?NvVL2i|I}RM3yIC6_q^~j zzo51_ooNAE*qw?YKevl|)vckyZ=56pi3Y^=ag>c)0CJK6d z902*?)G{;zAu;l59h=5{wz~@k4hJLAAeh&-3ugoIo{tK-02q;QTfD>!2?{80zGZK) zw>hE)L^;;>5707@(4>a&b#taNV#1A_O#dFZ;qxX>^qN{z<9=NOS3z7fZK~dxf1Zl4 zCB);O_^{s`o74I3Jphx$3p=%zleORGsatciP2h58)XMcYa^>rGemzR$I&Fp zGcN`afj<79z)b-oo(ZfVcAx26%!Z~q>?&S?UGtorzHaVUtPLp7n6EvUX><`l!O41@ z<9g;b_;7zol!LXQrwAKdPB9V4ACdM}^i!lj*J#32rjyKnyqu!;+jSm765rv&uCo8w*L{~MN zy!M;~6Y4xW4dDOA9Y@?x@y9nuUVAi3I5|FmVg!!Y2~HmxXK%}O8%A&Inmx|z%o0WC zuNev?8Nu(YP>)T=0TMc}-6RBjH}I};_vgtmPEeC za@S9$3EiTO3atTytg#7VmB!iRfsgfm1_+>gYuaRw?@ik&0UO+?0*!0FJX@xGBGmWx z1KsI!T2ShB!v6j;qp!RN@`mDe@KUmPx`1n}+~?<1)-x5c`p{l@ z?TxcBb4*}b$Z&y$HZ4Cf7vg@vw>PeBx@+HRPnk-K0+J%-k>j0E1iA`B@*{dC2`zRDPwDEGPY_Vs{>~rE9 zkXS2xwzcTjG9TkELKA59QjqVf{+>M^6{yLgXHuRQ49?ZM=gtR^?F<>$2CBe{H!<@r z;=pyE&-vbi&X=ycV$M>nN+e;U+vtA>L` zMJO#Itz`l^l<(S!p%~<(uI7w55`$fDKaunq;uqr5!*d?Sg><=|~l7E@X} zdhap(q{m*~zILbN9@?MYsoc0T|-U;*co2@L=B|8GZV-J316gpKeI+eYSlK z8FL}`!D-V#=)mqYJkqV!GizJ9(f`4@dGyoB7Of{)zroQUxWk?#91-;3;HIns7C{70 zI>{3`0LH+0Ry|p`B}5Dc*p*+aLat8^S(3x%(*3?jl(=m{m^{xVEUBvVn_^#q z+AEc@=*$VkG=W44%mffGDetF9TQ97T?Byv-k;5fpDX7YtZ#XWIw)mxbh369v@l zQynz<6>mny@(Bzrxu4sTywXT|vz|*OC>>$FD zS0~@-%zVx;U1ocL)<^g!B^NAr1V8uw`#B1Yx2WiX%<3wQVSh4elMS zuK%h+EU3aq8Wi&U`kavhSA(#Kx>&7vvvkX;RQsG|)2F@G<`&_mS*NbGJv(Sa(7DDI zb0DEKBh3~ny64*ZzA<6{_N*v4h}fm_Mhzl$3H#ikiJaDVI_9SI4OFJTocTSb(VKt& z(Jh!_QbMx3!kUt{qfdhg-rDooj353YjTPxNo>e89xL+OF_`?M^t3ZNL3B2#FTA~)p zvrKxS0sChuZ{#02Xs7Nmie6ic5s;FW#p0@NEQ%%8qfQ1`nNQh=N{xo&=~^!M)eMto&j_o z#a7oHF>SlpNZxWhT`tmd**0G%ve&o1ed(ocg^Y0*^w0Ng1l1UA^(N5!L`;%=vDBiW z?H!4T?nTYO^ylYmlG+?gR10bx1iQ>Q#t%O{h4W=&r4?9fH%i0#XWsp&LQ>fV`_s)J zLlhy0K1K1-z}ZgC#(44evTu@myl`X9eRRwjUP&2k^T~SeA$z~q@!IPO#LkxIzdmgY zCXyQEbL&a)DE{QOy1jVDYbPA+(0HrN30b?V>!u1)g254gdz3ysdsOB5>`(;0eAChFz&w<~#!N&(s-l-a4EM(cfLyHb0|LY}#w>j&+#&m-g$=O|ihP z!)nl~0yI_xjg}RdFP8N%#^`SZx4tp>9IYr+eZZ4sv@GNMcj5M7aT|ywW~HdP#)hJZ ziusZjAtEIA0qh0wzKwPF)%!*P!hrK1^L6syKRcIYJ)dszeUu-~qJ=j{k||Tla=tlp zu^w@$yS0Fe{z=JwQu8tMkbp(65#NaCrQ%|aENbVCJz{o_%Q$OW7*3-3u>L}o>HI>& zX_lK9b0p7(LkJoXB?J+Jtj2Uue?p!_L%7Meo8wacpFM@Iv%#rOCI5YC6T(Yg+ah(7 zq&Y()45oR>GOg+%eF7>!Da-(h`JJAgyoS#QSo&T1zKd0+Bp-DSXyvCuu!A(pA7ZIx z-Y?dPZVGyP2wi$T*QtZv?pF_^P1=FHvXR}zr8AfM%KG6FY4qG*<8C=)#~R%QZDE*1 zvhZBs(}v}JVEEi~K_rfZz)l%daDYX&KZnOQV`(>2fjT@nM3#Z|N{va@m-Hl^J-#wF ztb^H0>2(ih3y0Oz+OqzD`d5Tq-0s+bQl0^U(R@<5xQTB}i**HB)ny}wQ{Kbo*V>#4 z+JH-Yerb&66q7{$dA$ecGW(;%bmk;}o^pk`t{ z%#R0L1PZm2wo@f)E35%uSvtxMgQnCjSywz#f6>ZAMjp1tK=(IgMk|w0g?QhfsqkX$zp!X<+!V%c z$Vzplkbk6fi-REpOsVXpFcMtw8x^-Q7YwpnoM^9M%c7ev&F-hkRz*=Ht}+&J9~;pb zfy`SsQKm=kvi>SUr#+)aJQyWgk&x@hhO*;Ecs0hqPe@$N6hQjP#q`Z#1DG<^s#3yNuuslc!Af_{luKB1PIf`z*ZcJZLSpuH&J?e2l$^s|ORJe%g5 zjVrX-j|i3tOZ6p{+=Asxzi^TnMChWYASTMK#zOCQi5J~JJ41m_yM{r{_+qD8*-LYk z@raZVH=M$dpKIr(W?3-do~wUQv;uhMfJdg(0OIubckqY&KN4j-1M!Ido%`q0tMo;! z-8u&xCUom~;?dZ1bO=q?5~1&t>DzwXcIWKL#jpKV8_y7<){Bfm;9UoL4TvJ+UYrLo z^rPF0iS%|)YBqf)3D~*ByZpX8&HB%x!z|UKbBt{C?8;MsaE`k0+6qc*tJNZO;ZVvP zQ>l|$NX)ir9awY^gQR;W`#XGEG%e7ema87ePX9d2c5#URF1%aE#zVN+S5fW;YqRNZ z)eG0EEIK(cbvU%Fk>co+TL#R!s%PxA-a|i2kp{`L;qO}4gyBVCM7#t4+sz493;-oq z(i9fdS>*P3=9?g|*QF!MC!SqDjhL=qm|Q7(pH+8pIvnwZcL3~kYUTJIaoe73{&B^y@(QMEwH9T;=` zMX&92g9{kDW_2m8IIHp8doQXNkc zS!5aVh=&u>MPmBv)pGN-q(&t$0P$N*SvPt|79eBz#w|>^1hg6ef!xzcN;ON85m)(^ zoL1n^43n&|`^i3wR+V&3eY`XJdh*fsC@Pbju&#scoH5qFE9r|OTaWd|P_m+{Z^%%A zd%0P;{&q zHpW2Ba~4a|T3HOY~R@GfPLoOj{1 zuQq4nxZIH%z*>)c$MYS8Xp#1F4g^N#T)5Cv1j7XtK9AYY_?&I0wzd5Qbt&vlQm$;m z#$E7>45O!7_bBhz|Ncag9R=Y|8G|@n0=6ap>cEZ562YSl-HTZZ{kK)g#co?Apk#XY6S&cqMfk*MwE> z8{z&z+}KIN;R(u%LR4lw9&5=b7YDU!<#JOR2E5VZ)6+WbipBEP@8K@Ky$Y5XH+vOj}d`4AYFq4)+3q^h?g6 z#>-nDQvZL@9I{)nI1EHKmA?i`hb_T(q`N-%=Jo#8%cX96RKSGD)VpihXW-Qn$p;*r zY(jK?S(p&Q|AM2srapC2G1sj6_-WB;do(+J#-9g8w;X=g^>-3uT3>B2s)m$7oT?g9 z>-U#fb$mE{onUXPP%Y#HJu_hu#h?w-=66ZJIWCRIWYKF-L=E)cZU8p{ONdzAyTDl1 z<8G|`hB+PipC@wiXw}xa-W$E#+tXud3;71SkJ+uq%Wrk?t*Zm`fNa_-eIySU^)Lp07ftu6qlb66xg{Fv$rQchnSdO6#8c|I_ zm%_bVvG^W7gA&qsPDM`s`&7_$mj*@@Pyq__SB0<<|08T5ubod90b@xYm@q2Mhrc7B zs-u(e)P5RIsLvS5IndZ*N9iMA)xNJg{cpc~d*r+jOTTRPJ4qHS4N|hSy~zvU15f9O znDL^HX!#4qkHJ0m++B^&e#ZAVsc$)c9R6Kjvs^hq!$SqLP2F4({Li%E%!1`l}z_7*&W1rqzB!p1^_e9I6S1!}lgFg;OBnVu&#Nw)sf z!s)EaZA#<0pHL-z(>1`J3-!lc6&g4)PxH)T>4hI`XJj&(h;-A|sSL)X-6hmJn@w)L zS5XGm*KNYi+FE;pHCz5-uRL1F^CJ4AIksTrU*$&o)r%O~r#ya&fa_9)nrkBC2VgeP zfusiBg-1M}X8!lL?Gj`(VuTSa-gQP2p$ZO@wP_9(r`nEYb=TQ0Zk23R%iU3tZcM%> z2viw5b&-`7$(&Zcd0r$%JO5FJN{gG3xw4zT=JiNfoIB^RT7Q>Cj}zixz8V$+}GXYyOWp;Or|+ z4oc^9_`Ce(67^y1-11~&Hf@`Ko3}ZYZE-Xq%lTlA+8Hvh4gq!AX}or`2lK;=k=SuZ zpw$JqGH8=}%SduJmgjxWzO9S#QT%iE_T|GP-`L5=--y@UlxdX1CRi)C-c=QbB4bXd zfrz~b$FV?Et-e+KFyTA6U~(Ls^~{@K*Iyc?Neo%iy!B9ZPk_(I7_NWZs)@D1*53Ni zEBxG%l zkKGq|TaRyP{(V#Mqb_~lwxOIlHMVj@M|*4SXXB66wz( ztA8r75vH!$gi)t-vfuR=TdEPx^mOG+ELxUp*L3GE9Lik7wt5JoI+IFbodk{I(&8TE zzxy!|bJMLv<*bXy0f#Bs|JjwB4Dm~}NGO|TS8oifdW*-4(YyUeZK{7J!!HKhwhQ8} ziD9xy7gdNy3Q`6sb(_ARKVLMgT-v*S+P25Qd-BhR^9V)NllDLw47|bizT1t%3VLX)QA`t2nmEMw0FnYGk9z0nD$TbLPs%_QbGG zEjF>;>&gE+(H+Cqd^jA*Ool!nKYyS0*C&?T?>HHp)t8@{%z!oI?!;@U-l48;-W!cY z;jP=>1O1m|ZyL?NJW7QXs>3#f$LzysoVZXH7`O$xpM*+#!r3}Weux7WL(9$s1jRa%+X3Jx7~f6v=eQIE_8hCE3;R zZy?=XJFU251C=envVZ~E;u6-&m2)7oy>zgGA@4dZy_hI;0`tGx&$rW_c(lynQe?CZ zdw8!H%46=3?6{>q0d$iT^lZPB)v&4G;MEMn0ks@s7wh@$oE4JleQgv&& zcv^HZ_IH{PqDSqqu6x`@c(>1HwdDN+hG}tHJyG^|JXs&B-RV$<7o_}jecITP$T&|L zSd{)UQdA5S7HoTLI<*0HQSF2>V9?dOxX1nn9{5t97o#{M6j^Wmkx*|@n=A)WFl~Tm z%6Dm!d2EPyhPT>eG^@>$HFgOy>s^>foznFM^{(yqpgE(mR~HA0Ze@IO$|Ivi!rA=8 z7Y9wmC^4dz=*%JjCHLKCMziooQqDnGo`U85+cY&h&$o)#41v@NRwnIjFut zB5n}CoZeASp{K@U{wL;W;tyr#hZ;)-#XRE)*3Yl)MM%W6B-YC-b)BZx&)uoFxXmd7Ag?Ox!+WjY`T_y`6~`G9iL z?p*oH-D$gxOjdl``iupN8z;zrsTk zfI9mFD!i_rcX~6~Dz2<|&QGN!bJRirw=vEl{h|a`EG~=bGU9x;!svq{yew$w9$6t( zQ2xnfUKr{P0b5^>c2sK(&32#Y9*Wls!4$mw{V6KW{{~^q(lfXR4ue*>#@l@2*SnfC zWUGFL0y~jJT(Xnpa#>SqI!0npjpoU((IQrK;S_!*pZEDJUgOl54=XpPLWzv$ik8== z9v9eptR_pedYMJ&x!q(w#7&hiht2b*6&UbQDy9hvgipt0a9r)rCIcjKJb+&;7r)D9 z@Ib<5#U{6Fhl~C%Yni3GoPY5O{M^w+kr~03vAX%3lzW9ChLH6O|i0jx=40mea}CSkF#{Jg6cP4PB2)6)xuVT7zU_Tug@Lk+UV;9Ox@?7t(KJ{o37hJaP(%8gl)!NLKgod3`|1*}pCoEneS6je30ZjMIzWA?nC%_XC-v-m%>ZIVIco)R$iOQS}$>A3K^jPZ+0iSqK+o{|=07&dVvx0un zyzGcY5W~*}_A=>9ZO+Rqjp6Qtw=6V@)|D&s<|1%zqSu%GNG>IZd*7m#P>k9I2#j?S1nMYMhF<0k+FJrR%%);|046 zQ{u}Hg2!GxrJ*FeX_8uThF@%;*O5E3z=8BNyoN>@0_T3W(w+<=XT*S0SajOxbH7#o z@2pU))pYxobmd)ZJ?o-IRQ1zt=}zOopXGq__;A-einvB$f=zfaRe-HC{Z_3Y+IM$C zO^t*3&zPY}I88-{2G8oDWFFD$nUGraYU`f@2tisUo|bp~Jb{W?PFWaxb8KS+bJ{ql>w z3;zBG4hh2H8g0=l9hYTIqgBvPZL>ED8*>6rWmj>ZEVZGt355!?Z8+ z@RncW_!pItXL1QF-j~opfP4UyFr2n7@NwE42n-Kn(2<98U>1OZ1Q_@=u;OdKUxH|) zseS)(OZy+?x8L6P9S02Lz(1~2^IlC6SWXi)?I`*~hJJ|>%}I%^{lA|bnBlE!YGZbSGbw51A{_L!Ma8eF>I3Qj{V zEWN98!}eiN#Yt@-|5Y03o_C(eXNMxc7jTKy$jGF_{#_@+m|gh zy_O#)`4hM1&+}=mQJ4BfiZbOC5nrh)h9BFFfVD>U@-TAvNGS)sxL@ND11g$OKE%8ikdotWlr$PWG{Gx6+k%+pO(Vl5{+bzrX?t`mms!NiV%nbUjm#XG`zt=9TbhNx1`HfQBiPDISdQI-H2}qv~Y! z-&pHaBXuxa`Wu7xJCU>p*CQ{`{U#Ux4QCd_L+1A0Nz0Tc&Ym0~hascf9%-`_5) z9i)lV*lBy|Th$8@t)Ol%ByR)^JyFCyQgiLW# zU~uc@Zr1}PD;3#hAdep}_TLEZ+y)1_PM5W8Dm%`Tpy7Lfcj7qB3^+vSHH#VqHc>$0 zg9V?XXB>=1zRbV7_aWvXR{Lo77Q%cs_ouOp;i<7#r@NDggosRiwW)j#TDqbIUx7JM ztvg&Tpjm3R3Xeka1(z}~``{skfRA;(fo@kL6^7}@IbK9jd(WO%r0wt);NkM*6aO$z zGoMvHF{2+!My$Y2u-N1ZfnQ>9%+7i6zS!@kQw|Rcn{7D76iPpE`IxbtVK&5Xd|sT= z4_=3UYM7BX-~Z7sL7W8_-4VWkfK{px`pIq-GPmpo9dGiy#PVMfz0qhKyvvx&JVv2> zZnQnZK}RMybAx&^4|pw3-Xtk218}gyhnvp*a(DB~8pO3vHw z)G}pktqjWJOFC+Qbj$n{$!%iV9NI;=IIQ`M8KWw4= z4(90UxC!vXNhMo=P+fOnDWMhk?+EHr_}Ke(5n-M>lGx+)uZ*>=;Bcj=6*5h4I9~F{ zdzXRZ0*g^>Z81VFvnmgScKy49`E*o*S4Fo(tM3BqxSTWenm#wR6(S*DpKjq~&78hr z-01~-_P}DK6yk~lAb!<55)F8|VUlO76RnqhU^X$XC~T#XAIp|V|IW~fwcTeIXv+sY z+xHwT&NpbfU;tm#+AS`lN)FJv;3oh56tQh`NBimrYGs-}cMsNPwtrwK7@Z_dK&5oJ zy>N2y)dQ#>!Ltjbe+v|uki-GJcER%jToB03OxYJl?OOR8GisD!3(HGhpIJ&GLyeR6 zHw)|I&7+MfzhVsm$&H-bqH7>NIhwTT>h4-ZNEY2Q=9j7g0iAM@0i^OaZ8$`^YUGlc zT=i=c6H=4)>!M>lH<==Xf5sh}BH}=xD^h~fBH%!IJdf1|4gGqz_;aHNxI`%2O+hPo zwMb3pV|cFDwVWI2th(oD)?_1X%{OVnL`xMjcj!VXE~7DgmCfDNPAe+5eE8Yw zZt8gqG`d||i4VDQE*JYlAB`pkBr^vzj)+G4P*z!)r0=)uKa7If76%W4yVv#d0s6Fzkw*YnEv2sYtiiSv0U8N(%qOzy+Ma zJ!aaqLgI|&bxrSTG{)6XE#xLF(@|fJRGI4Fhy{#U<)|S%^Iu;d-pzaI(6qYIKWL1o z9rs0IA6eL>#n))&L1_Y-hr5XQkkX1f{-p{c6^dI414Zzq50J&ty;T$9@&?-hj;XJ>+CWN6pmF z<r-BsV9;ez8IJ5qu zP8(EuP$x;)lKeY2_tnV|4h2MgHDnVuY_oq&ITfowLsn-q&)A22xAO+9h?fZyZe?>J zAyr{P)4wzVa^C%LOv=K&Q76GL`=eVxvV}&(2~Zd2FkZp(?WKVUD)UvO+Z53JSXGN} z=-z^fC%oj-H$J4SjXBu9aZnxZ@Fyh~M2MtQgdDh}4`1O2?xR&YPtMq{JZL*EpK4*! zp6hUneIb|!%x9@}5SsbmS z$yH>XwHc45?^$OC18%zhIblCP(611(IWe)VYbxF28;D#F=H^3;+lg*CbHS|;u@)9* zmKon~PY7vm>IJwQH@X1*Pi;Y0Wz+X^8U~(r-wVdfYQ(LOq0h88K?5`IF90gO|;p5 zk)*1SCP=bbBNl*JAcfm36^5OAq$`F&SzEd@ZvL&GrygG_N|CJ!%6=A(?!e3kV>S(T zm#dpS6R^SwMn|;eG00no;ux!0jA~| zONM~$a%*f=DbKIv&B4oN6_&ouf!a9`Zt}go*i!V?oWL;YVCVl-y8D7=0krjek2@O& z3gsfC?+5BqmTYW-TO$QdFiY7!*V=nAw^J8#)B=Iv+r2?f@GNGIHOLUxg zab0;pvc;x~hT}5ANgsbLr}fXRo@_PnJYQA#`RiLL?E-vzDW*Rc4;heg`QU*Ph~&r; z&(z)jxe<&($4tEeA!>2+{TDZ&a1orHv;z(4LbttxiI37lN7tuyM(byri3*uxoq4?W z#1>H@q*xw-U~9#{XmCAj?RW&;i+C~va7uMz z+Xr-r0hdw9_Vm$Fy#3aKYggk672Hq@rgV&^Glszl1UD%7-3#5A-Q&?%bO5c9!mN(U z-MB#WD_IN0j43Fb)49MJnT+iEu)|0;FxtXQQmPLl_JOt(=a{8fAi4<40Mv zVi#DL?hE(G&F_JAqVmS&2p{Gh>_>S7)-#5e88@^+lFt@6rE-s@&5*c* zRY>cCi;6Ag!b{9&Pmv;ah1|{flGxBZGmsLSk-0lYHKvW0yemD zfty756l0zNzDB0ID%zv1=9!XG>3s0j)v-X%N{)LPT)F-|VmXTjOY6;9#{vFV+piXb zUp}lbxJlOuMrLEl{z4hd3hMt@pDaDRwSfr#7-TTSy59Z+;3DDFu-|4Fy?XV)t*omH4riPA2fXHoD$_lHygA|Hhv9TsiW}dP z(T?I>f*~6fmw`r;sX_%@UYT{kfF=Ir$!+jOv~s0AhSsWEU|bXA<$bbfKL z#h}LLvdc6DOtka%(}rDNkb$P^zfNpjXHUQg07r$`g%Rs@>T*xtt2>wGA}{HJ;gkm0 z2>;DN-gm$e0nTOyTkv5+0V4XAA?zy*%cHmZ*0W(*MCcI_BgWpCy-ug;^X;!sr@)y% zTBf)4cSy$scA`j)?NymHfS_R9BqY!vt-}V?tSp#CI5@!FXtE6GPgmjX_X2V~sAgle zju##2K0Ht$1AO@cLt^Lu`UfztACNJ=N#NMkC?g&8>kjd|5Z?`XdmNLWu+Dt6+VnYG z^h{;e&_5a<7JS7ctbdxuWa9~4`DsPKWQmeXYzHeS#L*5-_U zZ4`0f@fs=C#E=O6+AhS%p!186@PX9CWPELdGG5^Ge#o22Afp$qP?j1dck`{Bh(nI~sEr{sce>tU=@0M)Nt;Lv?r9ab$; zCHi7BZv@J#P{+FOZ(b}`u2X2w4ne>*kVXS>Z@_wV+%$_i1iO%fD)=aqZWV;Z^1r$j zM|~oiY1#28emK^63wzCAJG!M+2Tc@4!T!<+)OqnUFZI=Kvqc&tKu2~*NG2$oIOz#6I}g0(w{pggv<+R&HRSm+G3b2yc<53vZtxZfic zL8k0#1v?g|$@B;g{VQr_+NI9+Zn>87usSAvSe35Cj|A9S1qR)3oVQ1Y2&7<duh>;2hsK*@cmli^AV4lCNs61Ey zMu7yR;ETch%MS#o&rjF%(L5x9D4|rf@yOieGKF94w3W7N5`fwHB|3yo(~|&Kuwdl< zOD|T+XVFuaVAm1QH~RXU$NHBN3+9y>d-K{6&g-T6QAR%5a|GHXR4F7%aG5k^P!c_& z62i~dRy?snFFnGJ`RVdT-0bgfOx~te9B^`ozJ1LR(8fbbn%rj_%sT)4gI4Ln;q4_v zy;OUA10MVtIPVd)ankjFjiM8A&N+$203^QH6x}yje$G(1yFd;a2N4q)3DL8S<_mia z@0yCVkc8x}DC&1GLyW_Lkor)_6d2EIYe(4&H6cWBkk)G}(+hQYNc**BGLX0;Eeqb# zqvM+1N(ee-P>{sa#+vy7OG!XARuKDhT?G$b@p9V(a(5YF#YfM?ACwY3U`X?_tVSpO znrci~WiwL}x@3^=GnuDAA4`!jOE@6+>Tdt?{y7RGn_go?Q07(ud^xfmQ^U;*`M8)C z;jbbtyTt19+0sLRURrOmmgp_H@uQSR{yebCvIL!X?K@O_o;z0`6_8@N@s+4oh;5;Y z1G1)GzC?AkCLVkZplT9ep6Xvc9r!EbI_3HjIC`O7#P4*)XUPymV4Q5V>!22PiL(Ic zy6RE!8j!pE1A+iWW8)VO~ImY?sdm7%n4vEyZ7__zNcDRLu2! zBWb8V7m$NVa{~5MqBoA>z(Do==u9de`0#n15no^F1uvVD-rwzFpp@4G3$#=(?lB0y zuL{3i@xUs{%~ym-$3OxYO)dSc1^Te zbRv?d*A;7Q2cQ6%VC{+o_AOa^xE4oqo#jfe_DWkl^yi3FSIX^n+m*yp3 z^+Ku}{N71?+`0>NLJniWgdnI&J1?!+-?AJ$BU=WE8lig{c@Sh!i@=@pci10667NdVF%>@M<=r8$RA{?cCd9{$= z<{3HxH6?cV6Rxq_h{i3*sjgxUD&&*-@F5T%JejXP9sBvDMFq&lP5eAaF%{*Q>4Y4 zhq1RW;Fx|p)D?g_7KZQaVNQ<^o#GhcQN%6`ww?Acbb_D&0RryD?fP4qcjGpWula^TbWquK2wjo`yY!^>+f9r=V+TB9YaGO*1IL zhrF@;VM7VlNJ0)+a!SnK+XnLd{i~pKD*ELcEE_mRl`f<;G}PRYZ1_$i|C`);V8aR= znhdH|NE${$-pJ4L5KVz`*M>Qg5P zpXeAVYgkP1vm>C#`ud)$2`HYmb%k-AcUrublMAGMau?=rHITI}CICYq;={t%VgpRG zbCQ*zWb*GL<1JYLyk-3rIb#?~s$>_8AHIsN)gnQEPOhnoJfnW#xEXwY*aFjuA zPv*!j{U5Z?qdMAWVih*P#qZuqkN~KK2z(g7sFuD)neJq4lw;H9RK19ppJpi>CekS- z;Cvv>2foS4-ZNL$RX_VOT7L@n+lzcb_miFQS2-^vzQ+7ye!z6HQg9}H?z(QKwA6e} zy7MvwkuW5-a{;|N0{~`5l?A{`?~Ub}gUeC?Pczx-oj6r0VEn*t36W2H6)_&-?#Q?4 z@bzVb;V8j?wsxymHU$!44E@yw06>RNw%2WD{HSL<)-%C2>GVX{`{=7m=Y{t;p09x* zlf)9n$RV6(*}T?t{|y6kcz`EJ<*v}rX}g6fUx+XUo?%;#7Av35XS?a)Hl0)(jp zO`{EX|KRpt4`=QSwiY0H*wBYk{^9VsW}C(?Xjo^3x=ir3+rUCUMk#6q6~p z2E_k<7DS_|*e`F3-T7Z#y@@0f>M!8nmMutuW{u= zEs^m_f>La~uYk`5d{LUUX_KWdEY91Q%k`Q_|1Q<;C5%?VjtT$=ABb~;u}iow>bc%L z{lbF;22bQ3@UWxoO{pB$Hd?_1u;AUHSn6KFgA*usbq-*(si!BZ*(ZtMrSKe$5UO@e z=4AmU|28i@Kj6(Y={$(PkwU*7%WZ;6BGU&}{!Ty<@Z9h-~ zBHICoZ-N@Ua+)xG+2JmFz%2BPE%#;QDyy9dYi1`As>@^%>)X@0G}0H~!StpH$$X=f zu@@|d_Ndmb=lHi(m6L_C6CcTxO%B8F>0-wVHrlxvX$27Yn2Veu$Ct8vK`j z(JLj2_eD)-{^Su=*bHW-{;(hf}8VF z`e|yxq0@;eUyIG&&ZmW0rtkg54&$^&wb@M;mqsGsdDh0dc6hYNJYZMLi<&?IH}*%? zLLEC`2z={&M|!MlF!7((<24hp9-qwpY1QT#nF=|*qJC}VAeyjCzf8J*()PP#9*kLS zjCjfzF3?!zOeuHeY|{JQzc=Ouut|{dJEJYBX82@-=jRCVX8_)MRKai;0+NNKV_k>1 zHb9k`qLNi%Dk|dV;xY65D50fE;0V*kJ8P^?fO%Ja6mRiR<2P?q5rl$pt zq{TJVDADYWQDn3pFnUnzO1ja^_c=^cJn2sI|*{P;^YZekc5zbN>EbUdpmj~1>N z1{Sm0mcZixCau`e(Z`w~(<5ae;6g<82z)^jXrxd2u@K~ik*J~0Z2dq8U2h1&Tq^?O zmD0WTTW&`G@RZ0cF4j>L0n>pL01{u@q1D<+(!7C@h<|qNWak6{Na{pL?rk0=FKRIj zfXc-1Zu8;@{Rm;%4a)|dzyHqzij{Fs&~f-%RJuKLYnQ+UTuPma1}T&O z4C4_kAICt8U)PS&mWoBw_1j$LmW-ApZJ6)HA_awf^vv!9rIPWAY#ftXIF2gp@05mZ zMFWttD9iK>8Wv&83Sp8O(GCzu>_4D!=0nty-`<;Qp*gN0UocF;6ki|!Sj0nkaF7K| zg*57rb_@oUoGUPzb4aST4mwlI0ser(+r(I9?hCe@#H5lbd3I2VHE=^Xa3-k3(dE(6 z2ofO0P#{WfYjY0YGbu@z-G;Ue1C->3oeSnlB-^+)pF_pvwWXG6kXJ+6#8dK)N+~+r z)liZGZb+141O#gSbH)ef!ZuU|S6Z)Y)A5gN9pB#uVUj;ha#!1;U{ACbcn=vUpd;YN z2vn3u*>BT5+UZ7y_X^>$dmv7h@*Kb%SK_Fba$>V3&i#mJJzom}g;5E@)PLz|d65%u z&u)ll1;E3SScPTQu*Hv?HK@1mjfHLl2_eH;>{34aWB*vXBbT&Fol<5;y8-2^vJe%> z!^J(yRE)*W{INR$}zbAVHM}}*29oQsIua*J!C2I>(t|5bIa~TVQ5df3KtSE79ykZ za~|*HZk>|*-&R6te}JHgfUCY69&L&KVmU$*4?UgFWg)}rf}zTNemN#dGX68W(F~{~ zz_{)uWPrKXxj1Mv9b8gu5tgRi@nJKvS6%T;dghNz+4_W!kK6s#4<3Op;rV8L*8Ptj z*uGN=%E-%(Ta;55{Hz?mLYChy-%h$ibZBf}qi+Msht0N!!hVqYI(=SXc*}WbEc-@} zx>$DDJc^;Pc8syH7|Rz50Q@GfQYGYhX2ZL-gV+KR8T_wjXvExbyTm(dD!Hu%1`rNn zi`6SUQY++Iq$@aFT_rKEWMCvOYQkO_^{ecEDE?Qh3%Y`eMo>y`^Wtptx5G+BBoGR^ zO+4JwKU3%cxk~+JH&@`f0e+I(dtD+=v9~`sCl?w9@A@nsh_9HlNpQ@K86kQ#mO}u{ zAu6++d7*p3YsDQoT^%_z7FU8JU3t=ujJCT-Eg3-`!O2P@4BPE|R|J+oXlptqM6gFA zY9%}nu{}Rr-R!q!MiVw*Pws)*xTx~qFnK)akN-FZq?F1doR{A~1PcxSC$HTbIy7*n z<%8ld4pJ6wkWL*o$WM~98@gSe#IyTpTwuW?ZVVe>61NeE(4P~2tzrnSiCdOVWW4F0 zL=5B0r)p@gzYE7PdwmSU8}0n40s?R!%%T0-{Ga#XUXHrh#eqwa$cOI-8T?n4qrNvK zzy(G)H+>dykw;0@?S|45JGM>xycFO)jgE{b~D{rtoB8@#`$2uDpv=&(@H*{euBLmifI-^dr z3tc+IbnFCf6ej*8>+JNkgMdBsoy0i=VlKAMH8Icui`=d{%S)2gVeaT z<$P@{6fYFAn4bm6a_z-foY2I+sq9L`FgJbzQ6pBJ&ipoZf6T5K|ZcwiH0$xY!+g=KY!gs3Y=D{|)*4D&H8q}!~y;lS|IZ6qPdlog* zI1yYy7MHoG$_*%!MQX!ioi z99r!Ju4>%y_ye2Hn13>Ob+7os~Um<54zlj@0t-}W$tpdN$D24JV-z^W_T zF~5e*;))EDZ7}LAI}#Xabw4#&fcVK(;=;RyfYcC@9q#Hi|6@6ySez1EX%jKWT~8-N z`wt>i9aq+NPhHI10xkJn4RAT;bjuohp-xL5`LI1mBQ`R_1_q0m3iTjs31-U#9;-JLclsIxL-XX0^m+cwlwoO_J|jWCg~A9*)ACjMdu+Uhn93^(bBv-6qhgCv*1{Xv~TThD!B`WO9GGx6s z>ugmyDjmyH=v~&|QWS=Zym!_JAP&qqzE}KjgHN)nDFv|+pBj_ib^vUY7Iw+}N(QrK z4lzZGJsmbc2%^~HkSoiBi*nWdZ> z-O#=CkF9D7Id(kodPl0gfi#}r%vGNqjCU0MieJ#-wM(7Rlqw|u+LP3Wf?%ag-;Xt zKS6i1^g_nd(_#NNyDhIy?LIgGHeuYt+;u{)p^G3*_P$G(L0&n)X$%k_h=1DcS!c<_ zP0BPEAZrs&VA#xPB0grTS2iZ2HEpKRw6>Z5d^0}mb_tb_iw!!#V((|9T>Wtf;O==u z4AC*IR{r}y#gvW5qiUb~p8rSGdB;=Tzki&N8IqMb-6D9pDWXY66`bKc^IA-{Th%;H@J)l>H&4d$TouMmtdgF6r z@W*KvTcF}kC?c*=ZZ4LODXt7T;v3zOIkRLju6yuYZ_ZDUC%MO7y`SV}PjZun&*&J! zzM=LXD$kjmyB1VvnEBT9Ndr$-9Je$+r4-nBj`AYCE4&@z_2+U*nQ)=LMo0&emoGVk zC&4L4K4Se6D$Sda;55zGynu;`J=;}2DbjVc;+bDi>#nwH$OQEpuP1C#PXRaAA-M51 z{vruDA4r5V9jXTow=ZW+-u?UIk@^5a7hLTPjqxjkMS^Z2$qkf*Mp$p{pq$2gDkb8u zc*Qjc-Zsr@Jy;NRU{tB7atQHSm`$7y*E%wX$kZkRd?k=cF&Wtrecmo7s!5kRrm*TE zL0>TLEjf#}d7XAhT;P2CO8(Z%K{B5KI$cGtM(~?9I3`T&k%{JbbA14iL&}2~r9JL$ zxmy_qduQ&tzD)m%EP<|j`aD{B1=>a0aIL)8DGAm^nB>F>+1wuZdXL8lES@-4nA~rl z@J?pmGFgYjP?Kr|hennyw9bU)>;!YDLt0ky&U^lg`pS@GP@-eqS+%B#;=V=HewaM3 zU26TI$+n&wqgw)dI8lXcc}<%D9x?pr&W{FRu*X)G`1UXD!Rk{M;$HV4SnxGf2C+7@ z@lhFdsPl$>tp|pLCot4Z@KtZhIg0G~<(>2xmYz$1e2(gRo*8oI=`X}bPsSThZ^q?( z@2PU&ytpb5=^YBT;2f9+BGFj@AI#RoywDV+TgWzA(u zcGct7m{YTty@D?X!=dDbCpDZ>byz%$wXl9R^Kj>m!u*YPJ$$*3k_dvN6gG;QWxZGR zGk;>Q@nULudC9D|Y+3V7aXy0yoavw8^=I5q*yu9!khIdXk00U&Hgs5DbmIm$h2&ls zSS-0SG`)4QUjI#FM!SlCU+bbB2TMOx#wJiN8o-ijj}ve4L8BVwuTY!-i&du@c`f4t z)-^^W>Wzy}n=cgwUGcj}5oc{&Y)^p3wz*6RL-d%nm_sAmR%>`P}L586BPio}>#0;;8;pk3?O|L+EI{*yeLof%)x;h z-$eiiSIT--)63RCm$;nsiuD|81R`C&5Hw4H_g^3buf{~XtyB-9nXSoKtUYt>cu3!{AojIkn)m!)2STM4FU#zQ%|ZU@c#ws=)) z5wxOy`3qGzlo&m^if6j?sz`e?A>PcU5c`7c&0+oO6Y3bGP^qER%I*rTvYWqi1yCJ| z%m{aT;kFv76k#~Yq!tVmyZ$N%5(%V|p%0RM?L!l|F4w2+b9n@Zxdew>b*8*#HC?9U z9%NdhA2DxI9xnH&N8Q5O#eK@;u;w%VD$HeuG}%|>p4`NzdEsx=KPoOr*RDE^BvR2_ zcZ7x08IKDsVg6?wl?@mSxFueUlp6yV!)D>i_n@xpx}{p+`mJ^Ii@y0T!U16p%h4UY zOFZ9-{#AQwhjY8cD}`|F9Qj<8q@8U12_zn^0;3~b8b1WHU<`+Vydb|v=4cGKuBU&@ z+0Ar&dyIuLmozYcU@h#fP&rxpt4IcwicQQ#Uy3_r#B|_H^T4;^c32zLT&GOKe^?yZ z|2K^yrMlYZ9uHG$@k&D&^m}Jp!#~>N^m5PCMdk*b!I#M^mwh5iBY(PA3pqP@il{)G zCe4r)h)bOIJT6aVlke%2=l)1UPTXOf)Rx4u29Jk*8)+p8_}c?3{%4<7jMsNe@{Lbx zl_|_wmATB_3=Xoi$%OND-MM4G8Z=-e_c<-n{s}ieal)KkC>DASs>J~t4DiJi*6(+c zmXMcpVkyUZnFNwX1=@DXyeMClz1vgL71wr_=HZMV0dT>?To)oox{=tMbiqoou#V_dg^`B_-NWbYz3Ms%l`$4OgzAK4Ed$lsHFt^?Ce_(8n<-#;rBztHvF z<5a#zsr*6AJ1BzSE43UhJ;>I1*i&Z1ExkeUh85TY5R$mShi9$(^{~j^kJ<>l-drO^ zDJJ!h*m<-^r_5zNQTuX-io}vv>8uFhxkx?T{TQ8-eu&$pBUGOM~4lrF7>QBlxi}@;Jl+gID9I<^MhBA~tMa}@K`n1=LAx)x>*>sEtdR5CWq=%ZjRJCf>svISSYFPZ7_ zFo5|Cpc-)I3lnVa{0%mJpnoiaH8QA=%#VT)UFp`;to=COP=E11^Cyew<#D|Eqk7B} zLNd+do8bRsEE!C*g0fs@+^2M`qq*oQ1M4w1^&4g_#Y@-z{9HO#k6^04Gr0kro!VR^ z_%FWxd0OL55gklVA6u8L?cnKE*re@pyzlm_9tK-Vppj zaMuLt>TvD90H}O}8#lL3vHtpH^o)I4)#Mqkm<%C>(z|kEaNM^amWl)7q zag>ft7jRRuxx$`;Nr)jc6^*+Ak;s+g$?B8luDE7!9SGxxeuG3_-a{B?^ z?v@Y*Dq>+dw%cliz}lt zMna}BPH_SUCHwyG2aXXMz!2K}JEe$~_i~sH?U=Q8~ zWnR}>aZ*l}iG^fi?PvCNN;Z|+E+GDeP%U?+Qhiyjr5br<%v;b4wNuSo4BapFxXJqnRlFY7geyX{mx5KctI^1dLF*`>H<0OphKE8ucjh3e{IJlmdnaY-cHub7UU*o##7yHPx+56(WA zX{!rINS|wn<)QWR_}oh}=};j@ipF2z0IC~vpTlZ)s%K&cXiKBt_rQKAJNJhb+Se&q zsy)9VYCC<5ZpScgOx3;~0()n*-JG=1)hP$p(Cx4qu|wD4pkh^?a=A5>RIE%Q^WyoYN$^ zZG^}~EWpjzTd63D2g7JI;H#$L7bfmtNDJzd6n>=WExPA~6dZ2rm#^76@^03=m#ab7LtJ#txv$D#`O-zUW~x(QE=V zjx_v9TnF13wS!+C=n&J~G^!7LAh(@fr7^A?u{>rq2ri^I}tn;`cwnvLs$Hn znF3^BhPruRZ`j|P!Kf<09wZp&+%HoqW)K7`S#*RG@?v+#;R%Wd`tVpjV+lBK-VfIQ zP&JUrn{eIb`6!0p=+-ft4*so*>=>!`TNW-j|h{t8N z{5`pFXrq-FTfJ*-`BK$$g(HZ>pv}zOLFf5{U`+m)TPygkYzkzoEn(#K_9uCj6B{ z^`XD(!83^g8JFfNt+l@mv7x041f{jcx;^nj78l_GfIWeG>)kEDs{yIow6dD3w zmEmR*xp;9bnR>~q`sMaK+POkPffCKlNxlshUvq?zJYIHlmcT<-cqMTqGxr>;V&Yjo z#kb6WQ8eDhbE?c>x)pdi(}_9eV^xG1uk?acF@lj0EE2J|f*#mie&y3#BzP4xa`kC7 zeptsVF<@V_t+v&}1-~tO5ZTGa>(88Cr_CQZOuNc6usT?-yM}W+4M)1{uXF25(P96^ z`-LCvXrcm1+WV!NgH%uGx&(Gp8S~#rg{+B8u@HE?_jKU z!LP-q?v>$(t9TdP>(g6A$*Z^&K-N|b{N=>$&YSD@YTi{IS>HtRqYY-8fmFu;3)~=B zo%?%c88Kg)LB38rUDPDSZlUs`*;e=f!l5&S(1~U6S6ci1VJ+y8Gy0WoA3JYF0u`fD zQS-BI-ws?IbgV*eKIXFSB~S0~by{WbSV7az{(Um^M7`&NS~ao6e*hXt63$&NbFa>$ zYS``ORQF>Sf4*zSt&sLgrjd({T3XFa6L}Y$39`Y_p6Rvkk@X{$N2UG4AM+kqWG_g+U(2QyezbKumFwp?bpT<(+1;fEGDoF<{&m>a=V+<^S%VcIqa#7oyyBv=yQBfybO z@-^v$PEE+5Wcd_xJ{V#G_p!?^Pt8SgyFTz%E;OOHc|af*kE1e}_av$b2d+51EkxNF zSFE;kK7`mQ^Mqz3u8oi?2d#ODcBr9C-&vUNJMluf9c+M(FJKH~N*J%7s!PQ*-x@+H zEtY_E(anMfZHmpn)<9*mX<6!NeURgm>}yq%s$cH!fMy`AVzhb&f7qaP5f_=cD+06E z+^6c$(ZWKt70C!-rUyrSiJ9!O!FgAv43T<&a=|HxvVVOTU&Ep>PZYIKp0@55Nyp?* zRz*ob!C_ILt0MC6x?MZ>GT(xVR7PSfS4aVLwq1oj0jtr&ou$)52G;wfHQ$ENfjUO7 zVy)_uH5m>qWA1~#7kBJtCBvD<`3`#?1kWD_k}(La9%Lo?=Dy}o&-j?t0G1AbA2Ws{ z9{;UgPu^*601YbCc!N_RPkd9M*a0F-V~F%d@RVe!B)_Ykq`a3xK#ow$H~Ij}_x2VA z3?ZU#H+TJYO+R$-Z$s{&1q(D?N#PiZNbpkxgxql){~PIJnjvxg&27J+aa^Ixtc+%=-Izj*!!-Q5K%$Mk z84~uloX>LGttRY1uJ#F%#DR+E`XQW-*Ra$;MHM#R>13v6U{2P@ZShhcBca z&SZFFCH;|RPhg<`aBj7x?z{@Dz56~v(U+}bfL5l_KF$n-quY^byKZ2f$kdE$n`(Hl zC8)4i2Yy`M&(E45v6l`cGx4K$^tc^<8To1{ltoZ126YrsBf%CL1vphaQ`=GqK0S;_ zzOl334a5S2J1^0>B!Xl%yPe-_sXs8&Ji&+^NWpn9+ZwV7V~YPyLHFuyG)=|v{(Xgq zESDfnBZHq-Fb9(ozeXDlXu6-jgR3Nl<_hiIxZF$93ma2=(H6l!UBSj$+x0P+?f!n? zT0V8X*SiA&y1&MM?VT(2W9c0rGV#0L)Oe+&2 z=oiggs4B^r`p^c;INrT|E1>xxw4IuM**K!xs)Npd&~WHwC3rL!db8UixsRZLoY=dz zu%>-Z?j49Dbg^}L{Y82-7Yb+K_9%0ycURM>gZAnMktAe*0Vg#vy4Q(Yhj?AKStc8T zoXxaB1A{=+w2=5urwwItl`6~G^0;)sXWO#|@w+Q%me>t`I6k)d6fg|bj{%=sq zsC>P6NYPj|1}(gor2SUCMya*Rw^-NJ$JAA1&(FT={x+1%&!5R5$euT#pb5gib5<-r z9kz(%Plbj&@LPPFP{Wlzc6>m1KbjZyCpHR(+896UKtp=M^pss;XHmfWp@Vhhgt129 zi>_SJGLjnryr}pzHKw>ajkFq3IGzmJoYkA>-EJ5W{;pDRc34WzA1uer!Nz8uP_mnQ zZcwYOz<}5-m<(A3O%L15Ag`Nb@>&GD9oePo#_v*xFrYx+E1+73*4(nl2d9ir%PW2b z9{uA?serIJmLC(-DdKq5QQkbah%oM96uD$+!^adC`I;}ZU!G`U4LFC4DJI^%@*nEKKNsjK`VTxB z#cPU6OUu15z-I^hI!@%NCPAY_4pjd#&m#{G ziIolUYA48@XSa%6=}J`u7n99t(zXgk5ybZzhu-x9vH?s%-QT59+g$Y!Mg+**)Jtj= zBlopY&WchW6&OBdzG-b^mbveAw0o`QZ5S{uyc`>!&%<&wm!inf7qUKBVrQ(l&@`Yw z+ghnVj^Hittr(?nuQu>-Z)rrNR~bwr#Ufs&Im>jIj6eF-r}}g^G*`cp)u8H_f#Y5p zllt9N!w4{Kj32TaZ{# zttfA(oMK$XlXHQFwm%*&T|0g-3{5CW56^56xLt3O$_$w|wF;k8lSndV`cPNroQDZ?>9*I%jx}gtsC=sK$ zer$@SIk4ZGWkdA$b)3aHA9|@IvrPzZDx)a5_MIhbx7MWs?7+PUhkWS#mfJfb2}tbs zyfIe2c>V>=>du{`8TuwLjhbQ@pK zj@$Wz`&R1C5kEfi3$~A&>CXim}GJ)nYF1E`tf04IQZ)clsU; z`295Fw3uar9d`qLf<8Rw#vzo1auzb&=w>>3-*sVqqLBIyr6{p?s_M7r_-O`5Dn>7E z{#OA{;(C1S!3H`=09mQ~(e2qHL(>-s&k5RTW2z(<6y$WS)|rd~qqC+Fzxp8$17fuD z=wPz`J2)i4-!f9+{QF52&XbVADJqs??*6nxy@nJ$vPx!CX`&25)m;ol>A8rRmLPxE$Hber{)pk1xl zZzxF0by<2_N(SZp)`p#h;N6Seea1!3V?sOw!c^DuQzyTD67NEo#lYNqw8Gg6#04+S zb#rcDcEGRu+$=_kONMg`jf$;X9k6 z3j4Vb8HDWf&gsyQ_?Z?EpwKo)QspY{18KugnFjuR9?2%2G;2EY9z|wVRhvl0)=Gmv)+!hQ7k@REbuuH zZyrZHdBgBDrdmZcJ|7_8vpOsANZtGW+K$@`hOG_@ooFeN%`8zR*+j1Dpdhlly4qz2 zizU#x1gLioBNda~jiOHL-He$;qMr$0i!f<5ZETocsEQKzn+qiD<^scG9t7{TCEDMT zt!|D#n9=+!`VV4+1HI5M6c9H%D(>dPh|GzqZuR*V;)!SYfyQ?j@une&=d{m3P3D`h znW9QgRu1g*w2MV0k={c_Xe4!}27ODA9?Yp|S%Sg3V{Pa?ddXiWn<;@0)6OSX-#vOc zd~nZ=Sbjgz&=sQ0**XB!=MSf_v_fP0lX_{DYUT6U|eIhuj*kglffJEOWOA@ zNK=tB2a>smbb?qPNv{aw|t}(x7Mht1SG^6DA->&v~(?-rooLK2~N(sKb_Xq`dM1?EVS++WZE7o zB^HR=3CJhsDI1D>u?MTcjr>AhV4@m&zqI}6EY_Vjq}YjIzV~C7=nuPRK9Q)>(YNG)Vy^0M?+x{ah52&$q59k(F`&mn zbtCSw?M^XD|sQ(fR3yG|`#Y*hcn{YWWJ%ykP&|NXAIkIRo3N#j=s3Ox+Z z@4qH=gvn?1v)|&s^!&}#?vZn-QH$Z2WU3(V0vW3>Yhbar#Ib;y?5rFsGm!ZDEZW_r zCkUj-U&AT5Q>J?UoiONtO&fzxGxZYgCW7_V*Nz)AxE%lMXN3A9;l6f^X2+5YK1q8a z4V7lyH1qVY_kqRTo5&men{flfI*g4+W_60@QZY`*cBH#bXf&I=}^peI%Pbe}t6r3=O z6Coe&_q`vq77?;ko2f6KEQ$b~=eDXV87&siCxy%YopALl*QOM)(Wr^eX>|_xlk)-&IvF#yH0c+W!|WgoXVNF z

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 K>(ppFME*Y%or&N8 literal 0 HcmV?d00001 diff --git a/images/icon-64.png b/images/icon-64.png new file mode 100644 index 0000000000000000000000000000000000000000..67dcd68d06cefad98c92cc3cb6e40cc9b2c4c3b3 GIT binary patch literal 4344 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%0AHYuo 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 literal 0 HcmV?d00001