From 34d691352c70caa3a45767396213c6acef905120 Mon Sep 17 00:00:00 2001 From: Nhat Nguyen Date: Wed, 21 Aug 2019 18:14:23 -0400 Subject: [PATCH 01/59] Assert translog stats busily (#45809) If soft-deletes is enabled, we will trim translog above the local checkpoint of the safe commit immediately. However, if the translog durability is async, the last commit might not be the safe commit as the local checkpoint won't advance until translog is synced. Therefore, we need to verify translog stats busily. Closes #45801 Relates #45473 --- .../indices/state/OpenCloseIndexIT.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/server/src/test/java/org/elasticsearch/indices/state/OpenCloseIndexIT.java b/server/src/test/java/org/elasticsearch/indices/state/OpenCloseIndexIT.java index 9477978a04d48..27a597f63906b 100644 --- a/server/src/test/java/org/elasticsearch/indices/state/OpenCloseIndexIT.java +++ b/server/src/test/java/org/elasticsearch/indices/state/OpenCloseIndexIT.java @@ -352,8 +352,7 @@ public void testOpenCloseIndexWithBlocks() { } } - @AwaitsFix(bugUrl = "https://github.com/elastic/elasticsearch/issues/45801") - public void testTranslogStats() { + public void testTranslogStats() throws Exception { final String indexName = "test"; createIndex(indexName, Settings.builder() .put(IndexMetaData.SETTING_NUMBER_OF_REPLICAS, 0) @@ -375,16 +374,20 @@ public void testTranslogStats() { } } - IndicesStatsResponse stats = client().admin().indices().prepareStats(indexName).clear().setTranslog(true).get(); - assertThat(stats.getIndex(indexName), notNullValue()); - assertThat(stats.getIndex(indexName).getPrimaries().getTranslog().estimatedNumberOfOperations(), equalTo( - softDeletesEnabled ? uncommittedOps : nbDocs)); - assertThat(stats.getIndex(indexName).getPrimaries().getTranslog().getUncommittedOperations(), equalTo(uncommittedOps)); + final int uncommittedTranslogOps = uncommittedOps; + assertBusy(() -> { + IndicesStatsResponse stats = client().admin().indices().prepareStats(indexName).clear().setTranslog(true).get(); + assertThat(stats.getIndex(indexName), notNullValue()); + assertThat(stats.getIndex(indexName).getPrimaries().getTranslog().estimatedNumberOfOperations(), equalTo( + softDeletesEnabled ? uncommittedTranslogOps : nbDocs)); + assertThat(stats.getIndex(indexName).getPrimaries().getTranslog().getUncommittedOperations(), equalTo(uncommittedTranslogOps)); + }); assertAcked(client().admin().indices().prepareClose("test")); IndicesOptions indicesOptions = IndicesOptions.STRICT_EXPAND_OPEN; - stats = client().admin().indices().prepareStats(indexName).setIndicesOptions(indicesOptions).clear().setTranslog(true).get(); + IndicesStatsResponse stats = client().admin().indices().prepareStats(indexName).setIndicesOptions(indicesOptions) + .clear().setTranslog(true).get(); assertThat(stats.getIndex(indexName), notNullValue()); assertThat(stats.getIndex(indexName).getPrimaries().getTranslog().estimatedNumberOfOperations(), equalTo(softDeletesEnabled ? 0 : nbDocs)); From 0fb695e2e44f3295f35de69e6c5fd63008a3adb6 Mon Sep 17 00:00:00 2001 From: Nhat Nguyen Date: Wed, 21 Aug 2019 18:16:58 -0400 Subject: [PATCH 02/59] Never release store using CancellableThreads (#45409) Today we can release a Store using CancellableThreads. If we are holding the last reference, then we will verify the node lock before deleting the store. Checking node lock performs some I/O on FileChannel. If the current thread is interrupted, then the channel will be closed and the node lock will also be invalid. Closes #45237 --- .../recovery/PeerRecoverySourceService.java | 5 ++++ .../recovery/RecoverySourceHandler.java | 24 +++++++++++++++++-- .../cluster/SimpleDataNodesIT.java | 1 - .../indices/recovery/IndexRecoveryIT.java | 17 +++++++++++++ 4 files changed, 44 insertions(+), 3 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/indices/recovery/PeerRecoverySourceService.java b/server/src/main/java/org/elasticsearch/indices/recovery/PeerRecoverySourceService.java index a4be25ae4fb9d..ef47b153f5354 100644 --- a/server/src/main/java/org/elasticsearch/indices/recovery/PeerRecoverySourceService.java +++ b/server/src/main/java/org/elasticsearch/indices/recovery/PeerRecoverySourceService.java @@ -112,6 +112,11 @@ public void messageReceived(final StartRecoveryRequest request, final TransportC } } + // exposed for testing + final int numberOfOngoingRecoveries() { + return ongoingRecoveries.ongoingRecoveries.size(); + } + final class OngoingRecoveries { private final Map ongoingRecoveries = new HashMap<>(); diff --git a/server/src/main/java/org/elasticsearch/indices/recovery/RecoverySourceHandler.java b/server/src/main/java/org/elasticsearch/indices/recovery/RecoverySourceHandler.java index fbbcb08eabe56..e5ab1d7890eb4 100644 --- a/server/src/main/java/org/elasticsearch/indices/recovery/RecoverySourceHandler.java +++ b/server/src/main/java/org/elasticsearch/indices/recovery/RecoverySourceHandler.java @@ -33,7 +33,9 @@ import org.elasticsearch.ExceptionsHelper; import org.elasticsearch.Version; import org.elasticsearch.action.ActionListener; +import org.elasticsearch.action.ActionRunnable; import org.elasticsearch.action.StepListener; +import org.elasticsearch.action.support.PlainActionFuture; import org.elasticsearch.action.support.ThreadedActionListener; import org.elasticsearch.action.support.replication.ReplicationResponse; import org.elasticsearch.cluster.metadata.IndexMetaData; @@ -230,8 +232,7 @@ && isTargetSameHistory() try { final int estimateNumOps = shard.estimateNumberOfHistoryOperations("peer-recovery", startingSeqNo); - shard.store().incRef(); - final Releasable releaseStore = Releasables.releaseOnce(shard.store()::decRef); + final Releasable releaseStore = acquireStore(shard.store()); resources.add(releaseStore); sendFileStep.whenComplete(r -> IOUtils.close(safeCommitRef, releaseStore), e -> { try { @@ -393,6 +394,25 @@ public void onFailure(Exception e) { }); } + /** + * Increases the store reference and returns a {@link Releasable} that will decrease the store reference using the generic thread pool. + * We must never release the store using an interruptible thread as we can risk invalidating the node lock. + */ + private Releasable acquireStore(Store store) { + store.incRef(); + return Releasables.releaseOnce(() -> { + final PlainActionFuture future = new PlainActionFuture<>(); + threadPool.generic().execute(new ActionRunnable<>(future) { + @Override + protected void doRun() { + store.decRef(); + listener.onResponse(null); + } + }); + FutureUtils.get(future); + }); + } + static final class SendFileResult { final List phase1FileNames; final List phase1FileSizes; diff --git a/server/src/test/java/org/elasticsearch/cluster/SimpleDataNodesIT.java b/server/src/test/java/org/elasticsearch/cluster/SimpleDataNodesIT.java index 8256a9f1c56e0..82744aa86f93b 100644 --- a/server/src/test/java/org/elasticsearch/cluster/SimpleDataNodesIT.java +++ b/server/src/test/java/org/elasticsearch/cluster/SimpleDataNodesIT.java @@ -95,7 +95,6 @@ public void testShardsAllocatedAfterDataNodesStart() { equalTo(false)); } - @AwaitsFix(bugUrl = "https://github.com/elastic/elasticsearch/issues/45237") public void testAutoExpandReplicasAdjustedWhenDataNodeJoins() { internalCluster().startNode(Settings.builder().put(Node.NODE_DATA_SETTING.getKey(), false).build()); client().admin().indices().create(createIndexRequest("test") diff --git a/server/src/test/java/org/elasticsearch/indices/recovery/IndexRecoveryIT.java b/server/src/test/java/org/elasticsearch/indices/recovery/IndexRecoveryIT.java index 1710bc937e07c..039e6da224a67 100644 --- a/server/src/test/java/org/elasticsearch/indices/recovery/IndexRecoveryIT.java +++ b/server/src/test/java/org/elasticsearch/indices/recovery/IndexRecoveryIT.java @@ -36,6 +36,7 @@ import org.elasticsearch.action.index.IndexRequestBuilder; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.action.search.SearchResponse; +import org.elasticsearch.action.support.ActiveShardCount; import org.elasticsearch.action.support.PlainActionFuture; import org.elasticsearch.action.support.WriteRequest.RefreshPolicy; import org.elasticsearch.action.support.replication.ReplicationResponse; @@ -1486,4 +1487,20 @@ public void testPeerRecoveryTrimsLocalTranslog() throws Exception { } ensureGreen(indexName); } + + public void testCancelRecoveryWithAutoExpandReplicas() throws Exception { + internalCluster().startMasterOnlyNode(); + assertAcked(client().admin().indices().prepareCreate("test") + .setSettings(Settings.builder().put(IndexMetaData.SETTING_AUTO_EXPAND_REPLICAS, "0-all")) + .setWaitForActiveShards(ActiveShardCount.NONE)); + internalCluster().startNode(); + internalCluster().startNode(); + client().admin().cluster().prepareReroute().setRetryFailed(true).get(); + assertAcked(client().admin().indices().prepareDelete("test")); // cancel recoveries + assertBusy(() -> { + for (PeerRecoverySourceService recoveryService : internalCluster().getDataNodeInstances(PeerRecoverySourceService.class)) { + assertThat(recoveryService.numberOfOngoingRecoveries(), equalTo(0)); + } + }); + } } From 3cf174d239a7f91f19d90d29580bd36bb430c56e Mon Sep 17 00:00:00 2001 From: Tal Levy Date: Wed, 21 Aug 2019 16:06:58 -0700 Subject: [PATCH 03/59] re-enable bwc tests and update cat.alias rest tests (#45822) * correct version bounds to 7.4 for cat.alias rest tests * re-enable bwc tests --- build.gradle | 4 +- .../test/cat.aliases/10_basic.yml | 60 +++++++++---------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/build.gradle b/build.gradle index 8cd58c204ffad..1719f70367bbc 100644 --- a/build.gradle +++ b/build.gradle @@ -176,8 +176,8 @@ task verifyVersions { * after the backport of the backcompat code is complete. */ -boolean bwc_tests_enabled = false -final String bwc_tests_disabled_issue = "https://github.com/elastic/elasticsearch/pull/45798" /* place a PR link here when committing bwc changes */ +boolean bwc_tests_enabled = true +final String bwc_tests_disabled_issue = "" /* place a PR link here when committing bwc changes */ if (bwc_tests_enabled == false) { if (bwc_tests_disabled_issue.isEmpty()) { throw new GradleException("bwc_tests_disabled_issue must be set when bwc_tests_enabled == false") diff --git a/rest-api-spec/src/main/resources/rest-api-spec/test/cat.aliases/10_basic.yml b/rest-api-spec/src/main/resources/rest-api-spec/test/cat.aliases/10_basic.yml index bb96c5d24f376..5669206ee87ad 100644 --- a/rest-api-spec/src/main/resources/rest-api-spec/test/cat.aliases/10_basic.yml +++ b/rest-api-spec/src/main/resources/rest-api-spec/test/cat.aliases/10_basic.yml @@ -2,8 +2,8 @@ --- "Help": - skip: - version: " - 7.99.99" - reason: "is_write_index is shown in cat.aliases starting version 8.0" + version: " - 7.3.99" + reason: "is_write_index is shown in cat.aliases starting version 7.4.0" - do: cat.aliases: @@ -20,15 +20,15 @@ $/ --- -"Help (pre 8.0)": +"Help (pre 7.4.0)": - skip: - version: "8.0.0 - " + version: "7.4.0 - " features: node_selector - reason: "is_write_index is shown in cat.aliases starting version 8.0" + reason: "is_write_index is shown in cat.aliases starting version 7.4.0" - do: node_selector: - version: " - 7.99.99" + version: " - 7.3.99" cat.aliases: help: true @@ -55,8 +55,8 @@ --- "Simple alias": - skip: - version: " - 7.99.99" - reason: "is_write_index is shown in cat.aliases starting version 8.0" + version: " - 7.3.99" + reason: "is_write_index is shown in cat.aliases starting version 7.4.0" - do: indices.create: @@ -82,11 +82,11 @@ $/ --- -"Simple alias (pre 8.0)": +"Simple alias (pre 7.4.0)": - skip: - version: "8.0.0 - " + version: "7.4.0 - " features: node_selector - reason: "is_write_index is shown in cat.aliases starting version 8.0" + reason: "is_write_index is shown in cat.aliases starting version 7.4.0" - do: indices.create: @@ -99,7 +99,7 @@ - do: node_selector: - version: " - 7.99.99" + version: " - 7.3.99" cat.aliases: {} - match: @@ -115,8 +115,8 @@ --- "Complex alias": - skip: - version: " - 7.99.99" - reason: "is_write_index is shown in cat.aliases starting version 8.0" + version: " - 7.3.99" + reason: "is_write_index is shown in cat.aliases starting version 7.4.0" - do: indices.create: @@ -153,11 +153,11 @@ $/ --- -"Complex alias (pre 8.0)": +"Complex alias (pre 7.4.0)": - skip: - version: "8.0.0 - " + version: "7.4.0 - " features: node_selector - reason: "is_write_index is shown in cat.aliases starting version 8.0" + reason: "is_write_index is shown in cat.aliases starting version 7.4.0" - do: indices.create: @@ -180,7 +180,7 @@ foo: bar - do: node_selector: - version: " - 7.99.99" + version: " - 7.3.99" cat.aliases: {} - match: @@ -279,8 +279,8 @@ --- "Column headers": - skip: - version: " - 7.99.99" - reason: "is_write_index is shown in cat.aliases starting version 8.0" + version: " - 7.3.99" + reason: "is_write_index is shown in cat.aliases starting version 7.4.0" - do: indices.create: @@ -313,11 +313,11 @@ $/ --- -"Column headers (pre 8.0)": +"Column headers (pre 7.4.0)": - skip: - version: "8.0.0 - " + version: "7.4.0 - " features: node_selector - reason: "is_write_index is shown in cat.aliases starting version 8.0" + reason: "is_write_index is shown in cat.aliases starting version 7.4.0" - do: indices.create: @@ -330,7 +330,7 @@ - do: node_selector: - version: " - 7.99.99" + version: " - 7.3.99" cat.aliases: v: true @@ -383,8 +383,8 @@ --- "Alias against closed index": - skip: - version: " - 7.99.99" - reason: "is_write_index is shown in cat.aliases starting version 8.0" + version: " - 7.3.99" + reason: "is_write_index is shown in cat.aliases starting version 7.4.0" - do: indices.create: @@ -412,11 +412,11 @@ $/ --- -"Alias against closed index (pre 8.0)": +"Alias against closed index (pre 7.4.0)": - skip: - version: "8.0.0 - " + version: "7.4.0 - " features: node_selector - reason: "is_write_index is shown in cat.aliases starting version 8.0" + reason: "is_write_index is shown in cat.aliases starting version 7.4.0" - do: indices.create: @@ -431,7 +431,7 @@ - do: node_selector: - version: " - 7.99.99" + version: " - 7.3.99" cat.aliases: {} - match: From 31f6e78acdb8dfc7c042be4ad0bc0bdea003e055 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Witek?= Date: Thu, 22 Aug 2019 08:27:38 +0200 Subject: [PATCH 04/59] Allow the user to specify 'query' in Evaluate Data Frame request (#45775) --- .../client/ml/EvaluateDataFrameRequest.java | 44 ++++++--- .../client/MLRequestConvertersTests.java | 12 +-- .../client/MachineLearningIT.java | 89 +++++++++++++++---- .../MlClientDocumentationIT.java | 47 +++++----- .../ml/EvaluateDataFrameRequestTests.java | 84 +++++++++++++++++ .../regression/RegressionTests.java | 8 +- .../BinarySoftClassificationTests.java | 8 +- .../ml/evaluate-data-frame.asciidoc | 17 ++-- .../apis/evaluate-dfanalytics.asciidoc | 8 +- .../ml/action/EvaluateDataFrameAction.java | 68 +++++++++++--- .../dataframe/DataFrameAnalyticsSource.java | 3 +- .../ml/dataframe/evaluation/Evaluation.java | 4 +- .../evaluation/regression/Regression.java | 6 +- .../BinarySoftClassification.java | 17 ++-- .../EvaluateDataFrameActionRequestTests.java | 32 ++++++- .../regression/RegressionTests.java | 19 ++++ .../BinarySoftClassificationTests.java | 19 ++++ .../TransportEvaluateDataFrameAction.java | 2 +- .../test/ml/evaluate_data_frame.yml | 35 ++++++++ 19 files changed, 414 insertions(+), 108 deletions(-) create mode 100644 client/rest-high-level/src/test/java/org/elasticsearch/client/ml/EvaluateDataFrameRequestTests.java diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/ml/EvaluateDataFrameRequest.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/ml/EvaluateDataFrameRequest.java index 2e3bbb170509c..cfb5eeb6ef3a7 100644 --- a/client/rest-high-level/src/main/java/org/elasticsearch/client/ml/EvaluateDataFrameRequest.java +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/ml/EvaluateDataFrameRequest.java @@ -21,7 +21,9 @@ import org.elasticsearch.client.Validatable; import org.elasticsearch.client.ValidationException; +import org.elasticsearch.client.ml.dataframe.QueryConfig; import org.elasticsearch.client.ml.dataframe.evaluation.Evaluation; +import org.elasticsearch.common.Nullable; import org.elasticsearch.common.ParseField; import org.elasticsearch.common.xcontent.ConstructingObjectParser; import org.elasticsearch.common.xcontent.ToXContentObject; @@ -37,20 +39,25 @@ import java.util.Optional; import static org.elasticsearch.common.xcontent.ConstructingObjectParser.constructorArg; +import static org.elasticsearch.common.xcontent.ConstructingObjectParser.optionalConstructorArg; import static org.elasticsearch.common.xcontent.XContentParserUtils.ensureExpectedToken; public class EvaluateDataFrameRequest implements ToXContentObject, Validatable { private static final ParseField INDEX = new ParseField("index"); + private static final ParseField QUERY = new ParseField("query"); private static final ParseField EVALUATION = new ParseField("evaluation"); @SuppressWarnings("unchecked") private static final ConstructingObjectParser PARSER = new ConstructingObjectParser<>( - "evaluate_data_frame_request", true, args -> new EvaluateDataFrameRequest((List) args[0], (Evaluation) args[1])); + "evaluate_data_frame_request", + true, + args -> new EvaluateDataFrameRequest((List) args[0], (QueryConfig) args[1], (Evaluation) args[2])); static { PARSER.declareStringArray(constructorArg(), INDEX); + PARSER.declareObject(optionalConstructorArg(), (p, c) -> QueryConfig.fromXContent(p), QUERY); PARSER.declareObject(constructorArg(), (p, c) -> parseEvaluation(p), EVALUATION); } @@ -67,14 +74,16 @@ public static EvaluateDataFrameRequest fromXContent(XContentParser parser) { } private List indices; + private QueryConfig queryConfig; private Evaluation evaluation; - public EvaluateDataFrameRequest(String index, Evaluation evaluation) { - this(Arrays.asList(index), evaluation); + public EvaluateDataFrameRequest(String index, @Nullable QueryConfig queryConfig, Evaluation evaluation) { + this(Arrays.asList(index), queryConfig, evaluation); } - public EvaluateDataFrameRequest(List indices, Evaluation evaluation) { + public EvaluateDataFrameRequest(List indices, @Nullable QueryConfig queryConfig, Evaluation evaluation) { setIndices(indices); + setQueryConfig(queryConfig); setEvaluation(evaluation); } @@ -87,6 +96,14 @@ public final void setIndices(List indices) { this.indices = new ArrayList<>(indices); } + public QueryConfig getQueryConfig() { + return queryConfig; + } + + public final void setQueryConfig(QueryConfig queryConfig) { + this.queryConfig = queryConfig; + } + public Evaluation getEvaluation() { return evaluation; } @@ -111,18 +128,22 @@ public Optional validate() { @Override public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { - return builder - .startObject() - .array(INDEX.getPreferredName(), indices.toArray()) - .startObject(EVALUATION.getPreferredName()) - .field(evaluation.getName(), evaluation) - .endObject() + builder.startObject(); + builder.array(INDEX.getPreferredName(), indices.toArray()); + if (queryConfig != null) { + builder.field(QUERY.getPreferredName(), queryConfig.getQuery()); + } + builder + .startObject(EVALUATION.getPreferredName()) + .field(evaluation.getName(), evaluation) .endObject(); + builder.endObject(); + return builder; } @Override public int hashCode() { - return Objects.hash(indices, evaluation); + return Objects.hash(indices, queryConfig, evaluation); } @Override @@ -131,6 +152,7 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) return false; EvaluateDataFrameRequest that = (EvaluateDataFrameRequest) o; return Objects.equals(indices, that.indices) + && Objects.equals(queryConfig, that.queryConfig) && Objects.equals(evaluation, that.evaluation); } } diff --git a/client/rest-high-level/src/test/java/org/elasticsearch/client/MLRequestConvertersTests.java b/client/rest-high-level/src/test/java/org/elasticsearch/client/MLRequestConvertersTests.java index 5cefeccb91eaa..f68cc6c20cbc2 100644 --- a/client/rest-high-level/src/test/java/org/elasticsearch/client/MLRequestConvertersTests.java +++ b/client/rest-high-level/src/test/java/org/elasticsearch/client/MLRequestConvertersTests.java @@ -36,6 +36,7 @@ import org.elasticsearch.client.ml.DeleteJobRequest; import org.elasticsearch.client.ml.DeleteModelSnapshotRequest; import org.elasticsearch.client.ml.EvaluateDataFrameRequest; +import org.elasticsearch.client.ml.EvaluateDataFrameRequestTests; import org.elasticsearch.client.ml.FindFileStructureRequest; import org.elasticsearch.client.ml.FindFileStructureRequestTests; import org.elasticsearch.client.ml.FlushJobRequest; @@ -85,9 +86,6 @@ import org.elasticsearch.client.ml.dataframe.DataFrameAnalyticsConfig; import org.elasticsearch.client.ml.dataframe.MlDataFrameAnalysisNamedXContentProvider; import org.elasticsearch.client.ml.dataframe.evaluation.MlEvaluationNamedXContentProvider; -import org.elasticsearch.client.ml.dataframe.evaluation.softclassification.BinarySoftClassification; -import org.elasticsearch.client.ml.dataframe.evaluation.softclassification.PrecisionMetric; -import org.elasticsearch.client.ml.dataframe.evaluation.softclassification.RecallMetric; import org.elasticsearch.client.ml.filestructurefinder.FileStructure; import org.elasticsearch.client.ml.job.config.AnalysisConfig; import org.elasticsearch.client.ml.job.config.Detector; @@ -779,13 +777,7 @@ public void testDeleteDataFrameAnalytics() { } public void testEvaluateDataFrame() throws IOException { - EvaluateDataFrameRequest evaluateRequest = - new EvaluateDataFrameRequest( - Arrays.asList(generateRandomStringArray(1, 10, false, false)), - new BinarySoftClassification( - randomAlphaOfLengthBetween(1, 10), - randomAlphaOfLengthBetween(1, 10), - PrecisionMetric.at(0.5), RecallMetric.at(0.6, 0.7))); + EvaluateDataFrameRequest evaluateRequest = EvaluateDataFrameRequestTests.createRandom(); Request request = MLRequestConverters.evaluateDataFrame(evaluateRequest); assertEquals(HttpPost.METHOD_NAME, request.getMethod()); assertEquals("/_ml/data_frame/_evaluate", request.getEndpoint()); diff --git a/client/rest-high-level/src/test/java/org/elasticsearch/client/MachineLearningIT.java b/client/rest-high-level/src/test/java/org/elasticsearch/client/MachineLearningIT.java index 9d7f1d9352caa..929fd48463892 100644 --- a/client/rest-high-level/src/test/java/org/elasticsearch/client/MachineLearningIT.java +++ b/client/rest-high-level/src/test/java/org/elasticsearch/client/MachineLearningIT.java @@ -149,6 +149,7 @@ import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.index.query.MatchAllQueryBuilder; +import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.rest.RestStatus; import org.elasticsearch.search.SearchHit; import org.junit.After; @@ -1427,7 +1428,7 @@ public void testStartDataFrameAnalyticsConfig() throws Exception { public void testStopDataFrameAnalyticsConfig() throws Exception { String sourceIndex = "stop-test-source-index"; String destIndex = "stop-test-dest-index"; - createIndex(sourceIndex, mappingForClassification()); + createIndex(sourceIndex, defaultMappingForTest()); highLevelClient().index(new IndexRequest(sourceIndex).source(XContentType.JSON, "total", 10000) .setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE), RequestOptions.DEFAULT); @@ -1525,27 +1526,28 @@ public void testDeleteDataFrameAnalyticsConfig_ConfigNotFound() { assertThat(exception.status().getStatus(), equalTo(404)); } - public void testEvaluateDataFrame() throws IOException { + public void testEvaluateDataFrame_BinarySoftClassification() throws IOException { String indexName = "evaluate-test-index"; createIndex(indexName, mappingForClassification()); BulkRequest bulk = new BulkRequest() .setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE) - .add(docForClassification(indexName, false, 0.1)) // #0 - .add(docForClassification(indexName, false, 0.2)) // #1 - .add(docForClassification(indexName, false, 0.3)) // #2 - .add(docForClassification(indexName, false, 0.4)) // #3 - .add(docForClassification(indexName, false, 0.7)) // #4 - .add(docForClassification(indexName, true, 0.2)) // #5 - .add(docForClassification(indexName, true, 0.3)) // #6 - .add(docForClassification(indexName, true, 0.4)) // #7 - .add(docForClassification(indexName, true, 0.8)) // #8 - .add(docForClassification(indexName, true, 0.9)); // #9 + .add(docForClassification(indexName, "blue", false, 0.1)) // #0 + .add(docForClassification(indexName, "blue", false, 0.2)) // #1 + .add(docForClassification(indexName, "blue", false, 0.3)) // #2 + .add(docForClassification(indexName, "blue", false, 0.4)) // #3 + .add(docForClassification(indexName, "blue", false, 0.7)) // #4 + .add(docForClassification(indexName, "blue", true, 0.2)) // #5 + .add(docForClassification(indexName, "green", true, 0.3)) // #6 + .add(docForClassification(indexName, "green", true, 0.4)) // #7 + .add(docForClassification(indexName, "green", true, 0.8)) // #8 + .add(docForClassification(indexName, "green", true, 0.9)); // #9 highLevelClient().bulk(bulk, RequestOptions.DEFAULT); MachineLearningClient machineLearningClient = highLevelClient().machineLearning(); EvaluateDataFrameRequest evaluateDataFrameRequest = new EvaluateDataFrameRequest( indexName, + null, new BinarySoftClassification( actualField, probabilityField, @@ -1596,7 +1598,48 @@ public void testEvaluateDataFrame() throws IOException { assertThat(curvePointAtThreshold1.getTruePositiveRate(), equalTo(0.0)); assertThat(curvePointAtThreshold1.getFalsePositiveRate(), equalTo(0.0)); assertThat(curvePointAtThreshold1.getThreshold(), equalTo(1.0)); + } + + public void testEvaluateDataFrame_BinarySoftClassification_WithQuery() throws IOException { + String indexName = "evaluate-with-query-test-index"; + createIndex(indexName, mappingForClassification()); + BulkRequest bulk = new BulkRequest() + .setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE) + .add(docForClassification(indexName, "blue", true, 1.0)) // #0 + .add(docForClassification(indexName, "blue", true, 1.0)) // #1 + .add(docForClassification(indexName, "blue", true, 1.0)) // #2 + .add(docForClassification(indexName, "blue", true, 1.0)) // #3 + .add(docForClassification(indexName, "blue", true, 0.0)) // #4 + .add(docForClassification(indexName, "blue", true, 0.0)) // #5 + .add(docForClassification(indexName, "green", true, 0.0)) // #6 + .add(docForClassification(indexName, "green", true, 0.0)) // #7 + .add(docForClassification(indexName, "green", true, 0.0)) // #8 + .add(docForClassification(indexName, "green", true, 1.0)); // #9 + highLevelClient().bulk(bulk, RequestOptions.DEFAULT); + MachineLearningClient machineLearningClient = highLevelClient().machineLearning(); + EvaluateDataFrameRequest evaluateDataFrameRequest = + new EvaluateDataFrameRequest( + indexName, + // Request only "blue" subset to be evaluated + new QueryConfig(QueryBuilders.termQuery(datasetField, "blue")), + new BinarySoftClassification(actualField, probabilityField, ConfusionMatrixMetric.at(0.5))); + + EvaluateDataFrameResponse evaluateDataFrameResponse = + execute(evaluateDataFrameRequest, machineLearningClient::evaluateDataFrame, machineLearningClient::evaluateDataFrameAsync); + assertThat(evaluateDataFrameResponse.getEvaluationName(), equalTo(BinarySoftClassification.NAME)); + assertThat(evaluateDataFrameResponse.getMetrics().size(), equalTo(1)); + + ConfusionMatrixMetric.Result confusionMatrixResult = evaluateDataFrameResponse.getMetricByName(ConfusionMatrixMetric.NAME); + assertThat(confusionMatrixResult.getMetricName(), equalTo(ConfusionMatrixMetric.NAME)); + ConfusionMatrixMetric.ConfusionMatrix confusionMatrix = confusionMatrixResult.getScoreByThreshold("0.5"); + assertThat(confusionMatrix.getTruePositives(), equalTo(4L)); // docs #0, #1, #2 and #3 + assertThat(confusionMatrix.getFalsePositives(), equalTo(0L)); + assertThat(confusionMatrix.getTrueNegatives(), equalTo(0L)); + assertThat(confusionMatrix.getFalseNegatives(), equalTo(2L)); // docs #4 and #5 + } + + public void testEvaluateDataFrame_Regression() throws IOException { String regressionIndex = "evaluate-regression-test-index"; createIndex(regressionIndex, mappingForRegression()); BulkRequest regressionBulk = new BulkRequest() @@ -1613,10 +1656,14 @@ public void testEvaluateDataFrame() throws IOException { .add(docForRegression(regressionIndex, 0.5, 0.9)); // #9 highLevelClient().bulk(regressionBulk, RequestOptions.DEFAULT); - evaluateDataFrameRequest = new EvaluateDataFrameRequest(regressionIndex, - new Regression(actualRegression, probabilityRegression, new MeanSquaredErrorMetric(), new RSquaredMetric())); + MachineLearningClient machineLearningClient = highLevelClient().machineLearning(); + EvaluateDataFrameRequest evaluateDataFrameRequest = + new EvaluateDataFrameRequest( + regressionIndex, + null, + new Regression(actualRegression, probabilityRegression, new MeanSquaredErrorMetric(), new RSquaredMetric())); - evaluateDataFrameResponse = + EvaluateDataFrameResponse evaluateDataFrameResponse = execute(evaluateDataFrameRequest, machineLearningClient::evaluateDataFrame, machineLearningClient::evaluateDataFrameAsync); assertThat(evaluateDataFrameResponse.getEvaluationName(), equalTo(Regression.NAME)); assertThat(evaluateDataFrameResponse.getMetrics().size(), equalTo(2)); @@ -1643,12 +1690,16 @@ private static XContentBuilder defaultMappingForTest() throws IOException { .endObject(); } + private static final String datasetField = "dataset"; private static final String actualField = "label"; private static final String probabilityField = "p"; private static XContentBuilder mappingForClassification() throws IOException { return XContentFactory.jsonBuilder().startObject() .startObject("properties") + .startObject(datasetField) + .field("type", "keyword") + .endObject() .startObject(actualField) .field("type", "keyword") .endObject() @@ -1659,10 +1710,10 @@ private static XContentBuilder mappingForClassification() throws IOException { .endObject(); } - private static IndexRequest docForClassification(String indexName, boolean isTrue, double p) { + private static IndexRequest docForClassification(String indexName, String dataset, boolean isTrue, double p) { return new IndexRequest() .index(indexName) - .source(XContentType.JSON, actualField, Boolean.toString(isTrue), probabilityField, p); + .source(XContentType.JSON, datasetField, dataset, actualField, Boolean.toString(isTrue), probabilityField, p); } private static final String actualRegression = "regression_actual"; @@ -1697,7 +1748,7 @@ public void testEstimateMemoryUsage() throws IOException { BulkRequest bulk1 = new BulkRequest() .setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE); for (int i = 0; i < 10; ++i) { - bulk1.add(docForClassification(indexName, randomBoolean(), randomDoubleBetween(0.0, 1.0, true))); + bulk1.add(docForClassification(indexName, randomAlphaOfLength(10), randomBoolean(), randomDoubleBetween(0.0, 1.0, true))); } highLevelClient().bulk(bulk1, RequestOptions.DEFAULT); @@ -1723,7 +1774,7 @@ public void testEstimateMemoryUsage() throws IOException { BulkRequest bulk2 = new BulkRequest() .setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE); for (int i = 10; i < 100; ++i) { - bulk2.add(docForClassification(indexName, randomBoolean(), randomDoubleBetween(0.0, 1.0, true))); + bulk2.add(docForClassification(indexName, randomAlphaOfLength(10), randomBoolean(), randomDoubleBetween(0.0, 1.0, true))); } highLevelClient().bulk(bulk2, RequestOptions.DEFAULT); diff --git a/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/MlClientDocumentationIT.java b/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/MlClientDocumentationIT.java index a581e6f39bcb1..f8e63ecc81323 100644 --- a/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/MlClientDocumentationIT.java +++ b/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/MlClientDocumentationIT.java @@ -178,7 +178,6 @@ import org.elasticsearch.search.builder.SearchSourceBuilder; import org.elasticsearch.search.fetch.subphase.FetchSourceContext; import org.elasticsearch.tasks.TaskId; -import org.hamcrest.CoreMatchers; import org.junit.After; import java.io.IOException; @@ -3179,16 +3178,16 @@ public void testEvaluateDataFrame() throws Exception { BulkRequest bulkRequest = new BulkRequest(indexName) .setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE) - .add(new IndexRequest().source(XContentType.JSON, "label", false, "p", 0.1)) // #0 - .add(new IndexRequest().source(XContentType.JSON, "label", false, "p", 0.2)) // #1 - .add(new IndexRequest().source(XContentType.JSON, "label", false, "p", 0.3)) // #2 - .add(new IndexRequest().source(XContentType.JSON, "label", false, "p", 0.4)) // #3 - .add(new IndexRequest().source(XContentType.JSON, "label", false, "p", 0.7)) // #4 - .add(new IndexRequest().source(XContentType.JSON, "label", true, "p", 0.2)) // #5 - .add(new IndexRequest().source(XContentType.JSON, "label", true, "p", 0.3)) // #6 - .add(new IndexRequest().source(XContentType.JSON, "label", true, "p", 0.4)) // #7 - .add(new IndexRequest().source(XContentType.JSON, "label", true, "p", 0.8)) // #8 - .add(new IndexRequest().source(XContentType.JSON, "label", true, "p", 0.9)); // #9 + .add(new IndexRequest().source(XContentType.JSON, "dataset", "blue", "label", false, "p", 0.1)) // #0 + .add(new IndexRequest().source(XContentType.JSON, "dataset", "blue", "label", false, "p", 0.2)) // #1 + .add(new IndexRequest().source(XContentType.JSON, "dataset", "blue", "label", false, "p", 0.3)) // #2 + .add(new IndexRequest().source(XContentType.JSON, "dataset", "blue", "label", false, "p", 0.4)) // #3 + .add(new IndexRequest().source(XContentType.JSON, "dataset", "blue", "label", false, "p", 0.7)) // #4 + .add(new IndexRequest().source(XContentType.JSON, "dataset", "blue", "label", true, "p", 0.2)) // #5 + .add(new IndexRequest().source(XContentType.JSON, "dataset", "blue", "label", true, "p", 0.3)) // #6 + .add(new IndexRequest().source(XContentType.JSON, "dataset", "blue", "label", true, "p", 0.4)) // #7 + .add(new IndexRequest().source(XContentType.JSON, "dataset", "blue", "label", true, "p", 0.8)) // #8 + .add(new IndexRequest().source(XContentType.JSON, "dataset", "blue", "label", true, "p", 0.9)); // #9 RestHighLevelClient client = highLevelClient(); client.indices().create(createIndexRequest, RequestOptions.DEFAULT); client.bulk(bulkRequest, RequestOptions.DEFAULT); @@ -3196,14 +3195,15 @@ public void testEvaluateDataFrame() throws Exception { // tag::evaluate-data-frame-request EvaluateDataFrameRequest request = new EvaluateDataFrameRequest( // <1> indexName, // <2> - new BinarySoftClassification( // <3> - "label", // <4> - "p", // <5> - // Evaluation metrics // <6> - PrecisionMetric.at(0.4, 0.5, 0.6), // <7> - RecallMetric.at(0.5, 0.7), // <8> - ConfusionMatrixMetric.at(0.5), // <9> - AucRocMetric.withCurve())); // <10> + new QueryConfig(QueryBuilders.termQuery("dataset", "blue")), // <3> + new BinarySoftClassification( // <4> + "label", // <5> + "p", // <6> + // Evaluation metrics // <7> + PrecisionMetric.at(0.4, 0.5, 0.6), // <8> + RecallMetric.at(0.5, 0.7), // <9> + ConfusionMatrixMetric.at(0.5), // <10> + AucRocMetric.withCurve())); // <11> // end::evaluate-data-frame-request // tag::evaluate-data-frame-execute @@ -3224,14 +3224,15 @@ public void testEvaluateDataFrame() throws Exception { metrics.stream().map(m -> m.getMetricName()).collect(Collectors.toList()), containsInAnyOrder(PrecisionMetric.NAME, RecallMetric.NAME, ConfusionMatrixMetric.NAME, AucRocMetric.NAME)); assertThat(precision, closeTo(0.6, 1e-9)); - assertThat(confusionMatrix.getTruePositives(), CoreMatchers.equalTo(2L)); // docs #8 and #9 - assertThat(confusionMatrix.getFalsePositives(), CoreMatchers.equalTo(1L)); // doc #4 - assertThat(confusionMatrix.getTrueNegatives(), CoreMatchers.equalTo(4L)); // docs #0, #1, #2 and #3 - assertThat(confusionMatrix.getFalseNegatives(), CoreMatchers.equalTo(3L)); // docs #5, #6 and #7 + assertThat(confusionMatrix.getTruePositives(), equalTo(2L)); // docs #8 and #9 + assertThat(confusionMatrix.getFalsePositives(), equalTo(1L)); // doc #4 + assertThat(confusionMatrix.getTrueNegatives(), equalTo(4L)); // docs #0, #1, #2 and #3 + assertThat(confusionMatrix.getFalseNegatives(), equalTo(3L)); // docs #5, #6 and #7 } { EvaluateDataFrameRequest request = new EvaluateDataFrameRequest( indexName, + new QueryConfig(QueryBuilders.termQuery("dataset", "blue")), new BinarySoftClassification( "label", "p", diff --git a/client/rest-high-level/src/test/java/org/elasticsearch/client/ml/EvaluateDataFrameRequestTests.java b/client/rest-high-level/src/test/java/org/elasticsearch/client/ml/EvaluateDataFrameRequestTests.java new file mode 100644 index 0000000000000..8cdeaf68ed648 --- /dev/null +++ b/client/rest-high-level/src/test/java/org/elasticsearch/client/ml/EvaluateDataFrameRequestTests.java @@ -0,0 +1,84 @@ +/* + * Licensed to Elasticsearch under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.elasticsearch.client.ml; + +import org.elasticsearch.client.ml.dataframe.QueryConfig; +import org.elasticsearch.client.ml.dataframe.evaluation.Evaluation; +import org.elasticsearch.client.ml.dataframe.evaluation.MlEvaluationNamedXContentProvider; +import org.elasticsearch.client.ml.dataframe.evaluation.regression.RegressionTests; +import org.elasticsearch.client.ml.dataframe.evaluation.softclassification.BinarySoftClassificationTests; +import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.common.xcontent.NamedXContentRegistry; +import org.elasticsearch.common.xcontent.XContentParser; +import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.search.SearchModule; +import org.elasticsearch.test.AbstractXContentTestCase; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.function.Predicate; + +import static java.util.function.Predicate.not; + +public class EvaluateDataFrameRequestTests extends AbstractXContentTestCase { + + public static EvaluateDataFrameRequest createRandom() { + int indicesCount = randomIntBetween(1, 5); + List indices = new ArrayList<>(indicesCount); + for (int i = 0; i < indicesCount; i++) { + indices.add(randomAlphaOfLength(10)); + } + QueryConfig queryConfig = randomBoolean() + ? new QueryConfig(QueryBuilders.termQuery(randomAlphaOfLength(10), randomAlphaOfLength(10))) + : null; + Evaluation evaluation = randomBoolean() ? BinarySoftClassificationTests.createRandom() : RegressionTests.createRandom(); + return new EvaluateDataFrameRequest(indices, queryConfig, evaluation); + } + + @Override + protected EvaluateDataFrameRequest createTestInstance() { + return createRandom(); + } + + @Override + protected EvaluateDataFrameRequest doParseInstance(XContentParser parser) throws IOException { + return EvaluateDataFrameRequest.fromXContent(parser); + } + + @Override + protected boolean supportsUnknownFields() { + return true; + } + + @Override + protected Predicate getRandomFieldsExcludeFilter() { + // allow unknown fields in root only + return not(String::isEmpty); + } + + @Override + protected NamedXContentRegistry xContentRegistry() { + List namedXContent = new ArrayList<>(); + namedXContent.addAll(new SearchModule(Settings.EMPTY, Collections.emptyList()).getNamedXContents()); + namedXContent.addAll(new MlEvaluationNamedXContentProvider().getNamedXContentParsers()); + return new NamedXContentRegistry(namedXContent); + } +} diff --git a/client/rest-high-level/src/test/java/org/elasticsearch/client/ml/dataframe/evaluation/regression/RegressionTests.java b/client/rest-high-level/src/test/java/org/elasticsearch/client/ml/dataframe/evaluation/regression/RegressionTests.java index 89e4823b93e75..5d2a614663d31 100644 --- a/client/rest-high-level/src/test/java/org/elasticsearch/client/ml/dataframe/evaluation/regression/RegressionTests.java +++ b/client/rest-high-level/src/test/java/org/elasticsearch/client/ml/dataframe/evaluation/regression/RegressionTests.java @@ -36,8 +36,7 @@ protected NamedXContentRegistry xContentRegistry() { return new NamedXContentRegistry(new MlEvaluationNamedXContentProvider().getNamedXContentParsers()); } - @Override - protected Regression createTestInstance() { + public static Regression createRandom() { List metrics = new ArrayList<>(); if (randomBoolean()) { metrics.add(new MeanSquaredErrorMetric()); @@ -50,6 +49,11 @@ protected Regression createTestInstance() { new Regression(randomAlphaOfLength(10), randomAlphaOfLength(10), metrics.isEmpty() ? null : metrics); } + @Override + protected Regression createTestInstance() { + return createRandom(); + } + @Override protected Regression doParseInstance(XContentParser parser) throws IOException { return Regression.fromXContent(parser); diff --git a/client/rest-high-level/src/test/java/org/elasticsearch/client/ml/dataframe/evaluation/softclassification/BinarySoftClassificationTests.java b/client/rest-high-level/src/test/java/org/elasticsearch/client/ml/dataframe/evaluation/softclassification/BinarySoftClassificationTests.java index 2fb8a21e3a1da..7fd9af2ab88ff 100644 --- a/client/rest-high-level/src/test/java/org/elasticsearch/client/ml/dataframe/evaluation/softclassification/BinarySoftClassificationTests.java +++ b/client/rest-high-level/src/test/java/org/elasticsearch/client/ml/dataframe/evaluation/softclassification/BinarySoftClassificationTests.java @@ -37,8 +37,7 @@ protected NamedXContentRegistry xContentRegistry() { return new NamedXContentRegistry(new MlEvaluationNamedXContentProvider().getNamedXContentParsers()); } - @Override - protected BinarySoftClassification createTestInstance() { + public static BinarySoftClassification createRandom() { List metrics = new ArrayList<>(); if (randomBoolean()) { metrics.add(new AucRocMetric(randomBoolean())); @@ -66,6 +65,11 @@ protected BinarySoftClassification createTestInstance() { new BinarySoftClassification(randomAlphaOfLength(10), randomAlphaOfLength(10), metrics.isEmpty() ? null : metrics); } + @Override + protected BinarySoftClassification createTestInstance() { + return createRandom(); + } + @Override protected BinarySoftClassification doParseInstance(XContentParser parser) throws IOException { return BinarySoftClassification.fromXContent(parser); diff --git a/docs/java-rest/high-level/ml/evaluate-data-frame.asciidoc b/docs/java-rest/high-level/ml/evaluate-data-frame.asciidoc index 660603d2e38e7..1fe4cc7af01da 100644 --- a/docs/java-rest/high-level/ml/evaluate-data-frame.asciidoc +++ b/docs/java-rest/high-level/ml/evaluate-data-frame.asciidoc @@ -18,14 +18,15 @@ include-tagged::{doc-tests-file}[{api}-request] -------------------------------------------------- <1> Constructing a new evaluation request <2> Reference to an existing index -<3> Kind of evaluation to perform -<4> Name of the field in the index. Its value denotes the actual (i.e. ground truth) label for an example. Must be either true or false -<5> Name of the field in the index. Its value denotes the probability (as per some ML algorithm) of the example being classified as positive -<6> The remaining parameters are the metrics to be calculated based on the two fields described above. -<7> https://en.wikipedia.org/wiki/Precision_and_recall[Precision] calculated at thresholds: 0.4, 0.5 and 0.6 -<8> https://en.wikipedia.org/wiki/Precision_and_recall[Recall] calculated at thresholds: 0.5 and 0.7 -<9> https://en.wikipedia.org/wiki/Confusion_matrix[Confusion matrix] calculated at threshold 0.5 -<10> https://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve[AuC ROC] calculated and the curve points returned +<3> The query with which to select data from indices +<4> Kind of evaluation to perform +<5> Name of the field in the index. Its value denotes the actual (i.e. ground truth) label for an example. Must be either true or false +<6> Name of the field in the index. Its value denotes the probability (as per some ML algorithm) of the example being classified as positive +<7> The remaining parameters are the metrics to be calculated based on the two fields described above. +<8> https://en.wikipedia.org/wiki/Precision_and_recall[Precision] calculated at thresholds: 0.4, 0.5 and 0.6 +<9> https://en.wikipedia.org/wiki/Precision_and_recall[Recall] calculated at thresholds: 0.5 and 0.7 +<10> https://en.wikipedia.org/wiki/Confusion_matrix[Confusion matrix] calculated at threshold 0.5 +<11> https://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve[AuC ROC] calculated and the curve points returned include::../execution.asciidoc[] diff --git a/docs/reference/ml/df-analytics/apis/evaluate-dfanalytics.asciidoc b/docs/reference/ml/df-analytics/apis/evaluate-dfanalytics.asciidoc index 10c6e1c0bcadd..92729c3b0e2c9 100644 --- a/docs/reference/ml/df-analytics/apis/evaluate-dfanalytics.asciidoc +++ b/docs/reference/ml/df-analytics/apis/evaluate-dfanalytics.asciidoc @@ -43,7 +43,13 @@ packages together commonly used metrics for various analyses. `index`:: (Required, object) Defines the `index` in which the evaluation will be performed. - + +`query`:: + (Optional, object) Query used to select data from the index. + The {es} query domain-specific language (DSL). This value corresponds to the query + object in an {es} search POST body. By default, this property has the following + value: `{"match_all": {}}`. + `evaluation`:: (Required, object) Defines the type of evaluation you want to perform. For example: `binary_soft_classification`. See <>. diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/action/EvaluateDataFrameAction.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/action/EvaluateDataFrameAction.java index 04b5d084a768d..3defdac611c14 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/action/EvaluateDataFrameAction.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/action/EvaluateDataFrameAction.java @@ -5,12 +5,14 @@ */ package org.elasticsearch.xpack.core.ml.action; +import org.elasticsearch.Version; import org.elasticsearch.action.ActionRequest; import org.elasticsearch.action.ActionRequestBuilder; import org.elasticsearch.action.ActionRequestValidationException; import org.elasticsearch.action.ActionResponse; import org.elasticsearch.action.ActionType; import org.elasticsearch.client.ElasticsearchClient; +import org.elasticsearch.common.Nullable; import org.elasticsearch.common.ParseField; import org.elasticsearch.common.Strings; import org.elasticsearch.common.io.stream.StreamInput; @@ -20,14 +22,21 @@ import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.common.xcontent.XContentParserUtils; +import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.xpack.core.ml.dataframe.evaluation.Evaluation; import org.elasticsearch.xpack.core.ml.dataframe.evaluation.EvaluationMetricResult; +import org.elasticsearch.xpack.core.ml.job.messages.Messages; import org.elasticsearch.xpack.core.ml.utils.ExceptionsHelper; +import org.elasticsearch.xpack.core.ml.utils.QueryProvider; import java.io.IOException; import java.util.Arrays; import java.util.List; import java.util.Objects; +import java.util.Optional; + +import static org.elasticsearch.common.xcontent.ConstructingObjectParser.constructorArg; +import static org.elasticsearch.common.xcontent.ConstructingObjectParser.optionalConstructorArg; public class EvaluateDataFrameAction extends ActionType { @@ -41,14 +50,20 @@ private EvaluateDataFrameAction() { public static class Request extends ActionRequest implements ToXContentObject { private static final ParseField INDEX = new ParseField("index"); + private static final ParseField QUERY = new ParseField("query"); private static final ParseField EVALUATION = new ParseField("evaluation"); - private static final ConstructingObjectParser PARSER = new ConstructingObjectParser<>(NAME, - a -> new Request((List) a[0], (Evaluation) a[1])); + private static final ConstructingObjectParser PARSER = new ConstructingObjectParser<>( + NAME, + a -> new Request((List) a[0], (QueryProvider) a[1], (Evaluation) a[2])); static { - PARSER.declareStringArray(ConstructingObjectParser.constructorArg(), INDEX); - PARSER.declareObject(ConstructingObjectParser.constructorArg(), (p, c) -> parseEvaluation(p), EVALUATION); + PARSER.declareStringArray(constructorArg(), INDEX); + PARSER.declareObject( + optionalConstructorArg(), + (p, c) -> QueryProvider.fromXContent(p, true, Messages.DATA_FRAME_ANALYTICS_BAD_QUERY_FORMAT), + QUERY); + PARSER.declareObject(constructorArg(), (p, c) -> parseEvaluation(p), EVALUATION); } private static Evaluation parseEvaluation(XContentParser parser) throws IOException { @@ -64,19 +79,25 @@ public static Request parseRequest(XContentParser parser) { } private String[] indices; + private QueryProvider queryProvider; private Evaluation evaluation; - private Request(List indices, Evaluation evaluation) { + private Request(List indices, @Nullable QueryProvider queryProvider, Evaluation evaluation) { setIndices(indices); + setQueryProvider(queryProvider); setEvaluation(evaluation); } - public Request() { - } + public Request() {} public Request(StreamInput in) throws IOException { super(in); indices = in.readStringArray(); + if (in.getVersion().onOrAfter(Version.CURRENT)) { + if (in.readBoolean()) { + queryProvider = QueryProvider.fromStream(in); + } + } evaluation = in.readNamedWriteable(Evaluation.class); } @@ -92,6 +113,14 @@ public final void setIndices(List indices) { this.indices = indices.toArray(new String[indices.size()]); } + public QueryBuilder getParsedQuery() { + return Optional.ofNullable(queryProvider).orElseGet(QueryProvider::defaultQuery).getParsedQuery(); + } + + public final void setQueryProvider(QueryProvider queryProvider) { + this.queryProvider = queryProvider; + } + public Evaluation getEvaluation() { return evaluation; } @@ -109,6 +138,14 @@ public ActionRequestValidationException validate() { public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); out.writeStringArray(indices); + if (out.getVersion().onOrAfter(Version.CURRENT)) { + if (queryProvider != null) { + out.writeBoolean(true); + queryProvider.writeTo(out); + } else { + out.writeBoolean(false); + } + } out.writeNamedWriteable(evaluation); } @@ -116,16 +153,20 @@ public void writeTo(StreamOutput out) throws IOException { public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { builder.startObject(); builder.array(INDEX.getPreferredName(), indices); - builder.startObject(EVALUATION.getPreferredName()); - builder.field(evaluation.getName(), evaluation); - builder.endObject(); + if (queryProvider != null) { + builder.field(QUERY.getPreferredName(), queryProvider.getQuery()); + } + builder + .startObject(EVALUATION.getPreferredName()) + .field(evaluation.getName(), evaluation) + .endObject(); builder.endObject(); return builder; } @Override public int hashCode() { - return Objects.hash(Arrays.hashCode(indices), evaluation); + return Objects.hash(Arrays.hashCode(indices), queryProvider, evaluation); } @Override @@ -133,7 +174,9 @@ public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Request that = (Request) o; - return Arrays.equals(indices, that.indices) && Objects.equals(evaluation, that.evaluation); + return Arrays.equals(indices, that.indices) + && Objects.equals(queryProvider, that.queryProvider) + && Objects.equals(evaluation, that.evaluation); } } @@ -200,5 +243,4 @@ public final String toString() { return Strings.toString(this); } } - } diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/dataframe/DataFrameAnalyticsSource.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/dataframe/DataFrameAnalyticsSource.java index e08c39a75208f..5ffa3119413ab 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/dataframe/DataFrameAnalyticsSource.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/dataframe/DataFrameAnalyticsSource.java @@ -143,7 +143,8 @@ public List getQueryDeprecations(NamedXContentRegistry namedXContentRegi return deprecations; } - public Map getQuery() { + // Visible for testing + Map getQuery() { return queryProvider.getQuery(); } } diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/dataframe/evaluation/Evaluation.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/dataframe/evaluation/Evaluation.java index c01c19e33e865..70f31273aba16 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/dataframe/evaluation/Evaluation.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/dataframe/evaluation/Evaluation.java @@ -9,6 +9,7 @@ import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.common.io.stream.NamedWriteable; import org.elasticsearch.common.xcontent.ToXContentObject; +import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.search.builder.SearchSourceBuilder; import java.util.List; @@ -25,8 +26,9 @@ public interface Evaluation extends ToXContentObject, NamedWriteable { /** * Builds the search required to collect data to compute the evaluation result + * @param queryBuilder User-provided query that must be respected when collecting data */ - SearchSourceBuilder buildSearch(); + SearchSourceBuilder buildSearch(QueryBuilder queryBuilder); /** * Computes the evaluation result diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/dataframe/evaluation/regression/Regression.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/dataframe/evaluation/regression/Regression.java index 610c065fd8106..bb2540a8691b7 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/dataframe/evaluation/regression/Regression.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/dataframe/evaluation/regression/Regression.java @@ -15,6 +15,7 @@ import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.index.query.BoolQueryBuilder; +import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.aggregations.AggregationBuilder; import org.elasticsearch.search.builder.SearchSourceBuilder; @@ -106,10 +107,11 @@ public String getName() { } @Override - public SearchSourceBuilder buildSearch() { + public SearchSourceBuilder buildSearch(QueryBuilder queryBuilder) { BoolQueryBuilder boolQuery = QueryBuilders.boolQuery() .filter(QueryBuilders.existsQuery(actualField)) - .filter(QueryBuilders.existsQuery(predictedField)); + .filter(QueryBuilders.existsQuery(predictedField)) + .filter(queryBuilder); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().size(0).query(boolQuery); for (RegressionMetric metric : metrics) { List aggs = metric.aggs(actualField, predictedField); diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/dataframe/evaluation/softclassification/BinarySoftClassification.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/dataframe/evaluation/softclassification/BinarySoftClassification.java index f594e7598fc20..20731eba5e83f 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/dataframe/evaluation/softclassification/BinarySoftClassification.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/dataframe/evaluation/softclassification/BinarySoftClassification.java @@ -155,10 +155,12 @@ public String getName() { } @Override - public SearchSourceBuilder buildSearch() { - SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); - searchSourceBuilder.size(0); - searchSourceBuilder.query(buildQuery()); + public SearchSourceBuilder buildSearch(QueryBuilder queryBuilder) { + BoolQueryBuilder boolQuery = QueryBuilders.boolQuery() + .filter(QueryBuilders.existsQuery(actualField)) + .filter(QueryBuilders.existsQuery(predictedProbabilityField)) + .filter(queryBuilder); + SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().size(0).query(boolQuery); for (SoftClassificationMetric metric : metrics) { List aggs = metric.aggs(actualField, Collections.singletonList(new BinaryClassInfo())); aggs.forEach(searchSourceBuilder::aggregation); @@ -166,13 +168,6 @@ public SearchSourceBuilder buildSearch() { return searchSourceBuilder; } - private QueryBuilder buildQuery() { - BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); - boolQuery.filter(QueryBuilders.existsQuery(actualField)); - boolQuery.filter(QueryBuilders.existsQuery(predictedProbabilityField)); - return boolQuery; - } - @Override public void evaluate(SearchResponse searchResponse, ActionListener> listener) { if (searchResponse.getHits().getTotalHits().value == 0) { diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/action/EvaluateDataFrameActionRequestTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/action/EvaluateDataFrameActionRequestTests.java index e93eb9b20132e..51fc319642d59 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/action/EvaluateDataFrameActionRequestTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/action/EvaluateDataFrameActionRequestTests.java @@ -7,26 +7,41 @@ import org.elasticsearch.common.io.stream.NamedWriteableRegistry; import org.elasticsearch.common.io.stream.Writeable; +import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.NamedXContentRegistry; import org.elasticsearch.common.xcontent.XContentParser; +import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.search.SearchModule; import org.elasticsearch.test.AbstractSerializingTestCase; import org.elasticsearch.xpack.core.ml.action.EvaluateDataFrameAction.Request; +import org.elasticsearch.xpack.core.ml.dataframe.evaluation.Evaluation; import org.elasticsearch.xpack.core.ml.dataframe.evaluation.MlEvaluationNamedXContentProvider; +import org.elasticsearch.xpack.core.ml.dataframe.evaluation.regression.RegressionTests; import org.elasticsearch.xpack.core.ml.dataframe.evaluation.softclassification.BinarySoftClassificationTests; +import org.elasticsearch.xpack.core.ml.utils.QueryProvider; +import java.io.IOException; +import java.io.UncheckedIOException; import java.util.ArrayList; +import java.util.Collections; import java.util.List; public class EvaluateDataFrameActionRequestTests extends AbstractSerializingTestCase { @Override protected NamedWriteableRegistry getNamedWriteableRegistry() { - return new NamedWriteableRegistry(new MlEvaluationNamedXContentProvider().getNamedWriteables()); + List namedWriteables = new ArrayList<>(); + namedWriteables.addAll(new MlEvaluationNamedXContentProvider().getNamedWriteables()); + namedWriteables.addAll(new SearchModule(Settings.EMPTY, Collections.emptyList()).getNamedWriteables()); + return new NamedWriteableRegistry(namedWriteables); } @Override protected NamedXContentRegistry xContentRegistry() { - return new NamedXContentRegistry(new MlEvaluationNamedXContentProvider().getNamedXContentParsers()); + List namedXContent = new ArrayList<>(); + namedXContent.addAll(new MlEvaluationNamedXContentProvider().getNamedXContentParsers()); + namedXContent.addAll(new SearchModule(Settings.EMPTY, Collections.emptyList()).getNamedXContents()); + return new NamedXContentRegistry(namedXContent); } @Override @@ -38,7 +53,18 @@ protected Request createTestInstance() { indices.add(randomAlphaOfLength(10)); } request.setIndices(indices); - request.setEvaluation(BinarySoftClassificationTests.createRandom()); + QueryProvider queryProvider = null; + if (randomBoolean()) { + try { + queryProvider = QueryProvider.fromParsedQuery(QueryBuilders.termQuery(randomAlphaOfLength(10), randomAlphaOfLength(10))); + } catch (IOException e) { + // Should never happen + throw new UncheckedIOException(e); + } + } + request.setQueryProvider(queryProvider); + Evaluation evaluation = randomBoolean() ? BinarySoftClassificationTests.createRandom() : RegressionTests.createRandom(); + request.setEvaluation(evaluation); return request; } diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/dataframe/evaluation/regression/RegressionTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/dataframe/evaluation/regression/RegressionTests.java index d0bcc1a11f470..7f089ab18cd9d 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/dataframe/evaluation/regression/RegressionTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/dataframe/evaluation/regression/RegressionTests.java @@ -10,11 +10,14 @@ import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.common.xcontent.NamedXContentRegistry; import org.elasticsearch.common.xcontent.XContentParser; +import org.elasticsearch.index.query.QueryBuilder; +import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.test.AbstractSerializingTestCase; import org.elasticsearch.xpack.core.ml.dataframe.evaluation.MlEvaluationNamedXContentProvider; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -69,4 +72,20 @@ public void testConstructor_GivenEmptyMetrics() { () -> new Regression("foo", "bar", Collections.emptyList())); assertThat(e.getMessage(), equalTo("[regression] must have one or more metrics")); } + + public void testBuildSearch() { + Regression evaluation = new Regression("act", "prob", Arrays.asList(new MeanSquaredError())); + QueryBuilder userProvidedQuery = + QueryBuilders.boolQuery() + .filter(QueryBuilders.termQuery("field_A", "some-value")) + .filter(QueryBuilders.termQuery("field_B", "some-other-value")); + QueryBuilder expectedSearchQuery = + QueryBuilders.boolQuery() + .filter(QueryBuilders.existsQuery("act")) + .filter(QueryBuilders.existsQuery("prob")) + .filter(QueryBuilders.boolQuery() + .filter(QueryBuilders.termQuery("field_A", "some-value")) + .filter(QueryBuilders.termQuery("field_B", "some-other-value"))); + assertThat(evaluation.buildSearch(userProvidedQuery).query(), equalTo(expectedSearchQuery)); + } } diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/dataframe/evaluation/softclassification/BinarySoftClassificationTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/dataframe/evaluation/softclassification/BinarySoftClassificationTests.java index 4f17df3536731..6a589c0d055ca 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/dataframe/evaluation/softclassification/BinarySoftClassificationTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/dataframe/evaluation/softclassification/BinarySoftClassificationTests.java @@ -10,11 +10,14 @@ import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.common.xcontent.NamedXContentRegistry; import org.elasticsearch.common.xcontent.XContentParser; +import org.elasticsearch.index.query.QueryBuilder; +import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.test.AbstractSerializingTestCase; import org.elasticsearch.xpack.core.ml.dataframe.evaluation.MlEvaluationNamedXContentProvider; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -76,4 +79,20 @@ public void testConstructor_GivenEmptyMetrics() { () -> new BinarySoftClassification("foo", "bar", Collections.emptyList())); assertThat(e.getMessage(), equalTo("[binary_soft_classification] must have one or more metrics")); } + + public void testBuildSearch() { + BinarySoftClassification evaluation = new BinarySoftClassification("act", "prob", Arrays.asList(new Precision(Arrays.asList(0.7)))); + QueryBuilder userProvidedQuery = + QueryBuilders.boolQuery() + .filter(QueryBuilders.termQuery("field_A", "some-value")) + .filter(QueryBuilders.termQuery("field_B", "some-other-value")); + QueryBuilder expectedSearchQuery = + QueryBuilders.boolQuery() + .filter(QueryBuilders.existsQuery("act")) + .filter(QueryBuilders.existsQuery("prob")) + .filter(QueryBuilders.boolQuery() + .filter(QueryBuilders.termQuery("field_A", "some-value")) + .filter(QueryBuilders.termQuery("field_B", "some-other-value"))); + assertThat(evaluation.buildSearch(userProvidedQuery).query(), equalTo(expectedSearchQuery)); + } } diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportEvaluateDataFrameAction.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportEvaluateDataFrameAction.java index bb7365cd53809..2ca09af7d33aa 100644 --- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportEvaluateDataFrameAction.java +++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportEvaluateDataFrameAction.java @@ -40,7 +40,7 @@ protected void doExecute(Task task, EvaluateDataFrameAction.Request request, ActionListener listener) { Evaluation evaluation = request.getEvaluation(); SearchRequest searchRequest = new SearchRequest(request.getIndices()); - searchRequest.source(evaluation.buildSearch()); + searchRequest.source(evaluation.buildSearch(request.getParsedQuery())); ActionListener> resultsListener = ActionListener.wrap( results -> listener.onResponse(new EvaluateDataFrameAction.Response(evaluation.getName(), results)), diff --git a/x-pack/plugin/src/test/resources/rest-api-spec/test/ml/evaluate_data_frame.yml b/x-pack/plugin/src/test/resources/rest-api-spec/test/ml/evaluate_data_frame.yml index a4d3c1f1979cf..7459e6959016b 100644 --- a/x-pack/plugin/src/test/resources/rest-api-spec/test/ml/evaluate_data_frame.yml +++ b/x-pack/plugin/src/test/resources/rest-api-spec/test/ml/evaluate_data_frame.yml @@ -5,6 +5,7 @@ setup: index: utopia body: > { + "dataset": "blue", "is_outlier": false, "is_outlier_int": 0, "outlier_score": 0.0, @@ -19,6 +20,7 @@ setup: index: utopia body: > { + "dataset": "blue", "is_outlier": false, "is_outlier_int": 0, "outlier_score": 0.2, @@ -33,6 +35,7 @@ setup: index: utopia body: > { + "dataset": "blue", "is_outlier": false, "is_outlier_int": 0, "outlier_score": 0.3, @@ -47,6 +50,7 @@ setup: index: utopia body: > { + "dataset": "blue", "is_outlier": true, "is_outlier_int": 1, "outlier_score": 0.3, @@ -61,6 +65,7 @@ setup: index: utopia body: > { + "dataset": "green", "is_outlier": true, "is_outlier_int": 1, "outlier_score": 0.4, @@ -75,6 +80,7 @@ setup: index: utopia body: > { + "dataset": "green", "is_outlier": true, "is_outlier_int": 1, "outlier_score": 0.5, @@ -89,6 +95,7 @@ setup: index: utopia body: > { + "dataset": "green", "is_outlier": true, "is_outlier_int": 1, "outlier_score": 0.9, @@ -103,6 +110,7 @@ setup: index: utopia body: > { + "dataset": "green", "is_outlier": true, "is_outlier_int": 1, "outlier_score": 0.95, @@ -305,6 +313,33 @@ setup: tn: 3 fn: 2 +--- +"Test binary_soft_classification with query": + - do: + ml.evaluate_data_frame: + body: > + { + "index": "utopia", + "query": { "bool": { "filter": { "term": { "dataset": "blue" } } } }, + "evaluation": { + "binary_soft_classification": { + "actual_field": "is_outlier", + "predicted_probability_field": "outlier_score", + "metrics": { + "confusion_matrix": { "at": [0.5] } + } + } + } + } + - match: + binary_soft_classification: + confusion_matrix: + '0.5': + tp: 0 + fp: 0 + tn: 3 + fn: 1 + --- "Test binary_soft_classification default metrics": - do: From 8010dd070b1a72c1718c764a1122375b2a017407 Mon Sep 17 00:00:00 2001 From: Tanguy Leroux Date: Thu, 22 Aug 2019 11:27:54 +0200 Subject: [PATCH 05/59] Add tests to check that requests are retried when writing/reading blobs on S3 (#45383) This commit adds tests to verify the behavior of the S3BlobContainer and its underlying AWS SDK client when the remote S3 service is responding errors or not responding at all. The expected behavior is that requests are retried multiple times before the client gives up and the S3BlobContainer bubbles up an exception. The test verifies the behavior of BlobContainer.writeBlob() and BlobContainer.readBlob(). In the case of S3 writing a blob can be executed as a single upload or using multipart requests; the test checks both scenario by writing a small then a large blob. --- .../s3/S3BlobContainerRetriesTests.java | 385 ++++++++++++++++++ 1 file changed, 385 insertions(+) create mode 100644 plugins/repository-s3/src/test/java/org/elasticsearch/repositories/s3/S3BlobContainerRetriesTests.java diff --git a/plugins/repository-s3/src/test/java/org/elasticsearch/repositories/s3/S3BlobContainerRetriesTests.java b/plugins/repository-s3/src/test/java/org/elasticsearch/repositories/s3/S3BlobContainerRetriesTests.java new file mode 100644 index 0000000000000..ab88cc9368292 --- /dev/null +++ b/plugins/repository-s3/src/test/java/org/elasticsearch/repositories/s3/S3BlobContainerRetriesTests.java @@ -0,0 +1,385 @@ +/* + * Licensed to Elasticsearch under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.elasticsearch.repositories.s3; + +import com.amazonaws.SdkClientException; +import com.amazonaws.services.s3.internal.MD5DigestCalculatingInputStream; +import com.amazonaws.util.Base16; +import com.sun.net.httpserver.HttpServer; +import org.apache.http.HttpStatus; +import org.elasticsearch.cluster.metadata.RepositoryMetaData; +import org.elasticsearch.common.Nullable; +import org.elasticsearch.common.SuppressForbidden; +import org.elasticsearch.common.blobstore.BlobContainer; +import org.elasticsearch.common.blobstore.BlobPath; +import org.elasticsearch.common.bytes.BytesReference; +import org.elasticsearch.common.io.Streams; +import org.elasticsearch.common.lucene.store.ByteArrayIndexInput; +import org.elasticsearch.common.lucene.store.InputStreamIndexInput; +import org.elasticsearch.common.settings.MockSecureSettings; +import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.common.unit.ByteSizeUnit; +import org.elasticsearch.common.unit.ByteSizeValue; +import org.elasticsearch.common.unit.TimeValue; +import org.elasticsearch.common.util.concurrent.CountDown; +import org.elasticsearch.core.internal.io.IOUtils; +import org.elasticsearch.mocksocket.MockHttpServer; +import org.elasticsearch.test.ESTestCase; +import org.junit.After; +import org.junit.Before; + +import java.io.IOException; +import java.io.InputStream; +import java.net.Inet6Address; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.SocketTimeoutException; +import java.nio.charset.StandardCharsets; +import java.util.Locale; +import java.util.Objects; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicLong; + +import static org.elasticsearch.repositories.s3.S3ClientSettings.DISABLE_CHUNKED_ENCODING; +import static org.elasticsearch.repositories.s3.S3ClientSettings.ENDPOINT_SETTING; +import static org.elasticsearch.repositories.s3.S3ClientSettings.MAX_RETRIES_SETTING; +import static org.elasticsearch.repositories.s3.S3ClientSettings.READ_TIMEOUT_SETTING; +import static org.hamcrest.Matchers.anyOf; +import static org.hamcrest.Matchers.containsString; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.instanceOf; +import static org.hamcrest.Matchers.is; + +/** + * This class tests how a {@link S3BlobContainer} and its underlying AWS S3 client are retrying requests when reading or writing blobs. + */ +@SuppressForbidden(reason = "use a http server") +public class S3BlobContainerRetriesTests extends ESTestCase { + + private HttpServer httpServer; + private S3Service service; + + @Before + public void setUp() throws Exception { + service = new S3Service(); + httpServer = MockHttpServer.createHttp(new InetSocketAddress(InetAddress.getLoopbackAddress(), 0), 0); + httpServer.start(); + super.setUp(); + } + + @After + public void tearDown() throws Exception { + IOUtils.close(service); + httpServer.stop(0); + super.tearDown(); + } + + private BlobContainer createBlobContainer(final @Nullable Integer maxRetries, + final @Nullable TimeValue readTimeout, + final @Nullable Boolean disableChunkedEncoding, + final @Nullable ByteSizeValue bufferSize) { + final Settings.Builder clientSettings = Settings.builder(); + final String clientName = randomAlphaOfLength(5).toLowerCase(Locale.ROOT); + + final String endpoint; + if (httpServer.getAddress().getAddress() instanceof Inet6Address) { + endpoint = "http://[" + httpServer.getAddress().getHostString() + "]:" + httpServer.getAddress().getPort(); + } else { + endpoint = "http://" + httpServer.getAddress().getHostString() + ":" + httpServer.getAddress().getPort(); + } + clientSettings.put(ENDPOINT_SETTING.getConcreteSettingForNamespace(clientName).getKey(), endpoint); + if (maxRetries != null) { + clientSettings.put(MAX_RETRIES_SETTING.getConcreteSettingForNamespace(clientName).getKey(), maxRetries); + } + if (readTimeout != null) { + clientSettings.put(READ_TIMEOUT_SETTING.getConcreteSettingForNamespace(clientName).getKey(), readTimeout); + } + if (disableChunkedEncoding != null) { + clientSettings.put(DISABLE_CHUNKED_ENCODING.getConcreteSettingForNamespace(clientName).getKey(), disableChunkedEncoding); + } + + final MockSecureSettings secureSettings = new MockSecureSettings(); + secureSettings.setString(S3ClientSettings.ACCESS_KEY_SETTING.getConcreteSettingForNamespace(clientName).getKey(), "access"); + secureSettings.setString(S3ClientSettings.SECRET_KEY_SETTING.getConcreteSettingForNamespace(clientName).getKey(), "secret"); + clientSettings.setSecureSettings(secureSettings); + service.refreshAndClearCache(S3ClientSettings.load(clientSettings.build())); + + final RepositoryMetaData repositoryMetaData = new RepositoryMetaData("repository", S3Repository.TYPE, + Settings.builder().put(S3Repository.CLIENT_NAME.getKey(), clientName).build()); + + return new S3BlobContainer(BlobPath.cleanPath(), new S3BlobStore(service, "bucket", + S3Repository.SERVER_SIDE_ENCRYPTION_SETTING.getDefault(Settings.EMPTY), + bufferSize == null ? S3Repository.BUFFER_SIZE_SETTING.getDefault(Settings.EMPTY) : bufferSize, + S3Repository.CANNED_ACL_SETTING.getDefault(Settings.EMPTY), + S3Repository.STORAGE_CLASS_SETTING.getDefault(Settings.EMPTY), + repositoryMetaData)); + } + + public void testReadBlobWithRetries() throws Exception { + final int maxRetries = randomInt(5); + final CountDown countDown = new CountDown(maxRetries + 1); + + final byte[] bytes = randomByteArrayOfLength(randomIntBetween(1, 512)); + httpServer.createContext("/bucket/read_blob_max_retries", exchange -> { + Streams.readFully(exchange.getRequestBody()); + if (countDown.countDown()) { + exchange.getResponseHeaders().add("Content-Type", "text/plain; charset=utf-8"); + exchange.sendResponseHeaders(HttpStatus.SC_OK, bytes.length); + exchange.getResponseBody().write(bytes); + exchange.close(); + return; + } + exchange.sendResponseHeaders(randomFrom(HttpStatus.SC_INTERNAL_SERVER_ERROR, HttpStatus.SC_BAD_GATEWAY, + HttpStatus.SC_SERVICE_UNAVAILABLE, HttpStatus.SC_GATEWAY_TIMEOUT), -1); + exchange.close(); + }); + + final BlobContainer blobContainer = createBlobContainer(maxRetries, null, null, null); + try (InputStream inputStream = blobContainer.readBlob("read_blob_max_retries")) { + assertArrayEquals(bytes, BytesReference.toBytes(Streams.readFully(inputStream))); + assertThat(countDown.isCountedDown(), is(true)); + } + } + + public void testReadBlobWithReadTimeouts() { + final TimeValue readTimeout = TimeValue.timeValueMillis(randomIntBetween(100, 500)); + final BlobContainer blobContainer = createBlobContainer(1, readTimeout, null, null); + + // HTTP server does not send a response + httpServer.createContext("/bucket/read_blob_unresponsive", exchange -> {}); + + Exception exception = expectThrows(SdkClientException.class, () -> blobContainer.readBlob("read_blob_unresponsive")); + assertThat(exception.getMessage().toLowerCase(Locale.ROOT), containsString("read timed out")); + assertThat(exception.getCause(), instanceOf(SocketTimeoutException.class)); + + // HTTP server sends a partial response + final byte[] bytes = randomByteArrayOfLength(randomIntBetween(10, 128)); + httpServer.createContext("/bucket/read_blob_incomplete", exchange -> { + exchange.getResponseHeaders().add("Content-Type", "text/plain; charset=utf-8"); + exchange.sendResponseHeaders(HttpStatus.SC_OK, bytes.length); + exchange.getResponseBody().write(bytes, 0, randomIntBetween(1, bytes.length - 1)); + if (randomBoolean()) { + exchange.getResponseBody().flush(); + } + }); + + exception = expectThrows(SocketTimeoutException.class, () -> { + try (InputStream stream = blobContainer.readBlob("read_blob_incomplete")) { + Streams.readFully(stream); + } + }); + assertThat(exception.getMessage().toLowerCase(Locale.ROOT), containsString("read timed out")); + } + + public void testWriteBlobWithRetries() throws Exception { + final int maxRetries = randomInt(5); + final CountDown countDown = new CountDown(maxRetries + 1); + + final byte[] bytes = randomByteArrayOfLength(randomIntBetween(1, 512)); + httpServer.createContext("/bucket/write_blob_max_retries", exchange -> { + final BytesReference body = Streams.readFully(exchange.getRequestBody()); + if (countDown.countDown()) { + if (Objects.deepEquals(bytes, BytesReference.toBytes(body))) { + exchange.sendResponseHeaders(HttpStatus.SC_OK, -1); + } else { + exchange.sendResponseHeaders(HttpStatus.SC_BAD_REQUEST, -1); + } + exchange.close(); + return; + } + exchange.sendResponseHeaders(randomFrom(HttpStatus.SC_INTERNAL_SERVER_ERROR, HttpStatus.SC_BAD_GATEWAY, + HttpStatus.SC_SERVICE_UNAVAILABLE, HttpStatus.SC_GATEWAY_TIMEOUT), -1); + exchange.close(); + }); + + final BlobContainer blobContainer = createBlobContainer(maxRetries, null, true, null); + try (InputStream stream = new InputStreamIndexInput(new ByteArrayIndexInput("desc", bytes), bytes.length)) { + blobContainer.writeBlob("write_blob_max_retries", stream, bytes.length, false); + } + assertThat(countDown.isCountedDown(), is(true)); + } + + public void testWriteBlobWithReadTimeouts() { + final TimeValue readTimeout = TimeValue.timeValueMillis(randomIntBetween(100, 500)); + final BlobContainer blobContainer = createBlobContainer(1, readTimeout, true, null); + + // HTTP server does not send a response + httpServer.createContext("/bucket/write_blob_timeout", exchange -> { + if (randomBoolean()) { + Streams.readFully(exchange.getRequestBody()); + } + }); + + final byte[] bytes = randomByteArrayOfLength(randomIntBetween(1, 128)); + Exception exception = expectThrows(IOException.class, () -> { + try (InputStream stream = new InputStreamIndexInput(new ByteArrayIndexInput("desc", bytes), bytes.length)) { + blobContainer.writeBlob("write_blob_timeout", stream, bytes.length, false); + } + }); + assertThat(exception.getMessage().toLowerCase(Locale.ROOT), + containsString("unable to upload object [write_blob_timeout] using a single upload")); + + assertThat(exception.getCause(), instanceOf(SdkClientException.class)); + assertThat(exception.getCause().getMessage().toLowerCase(Locale.ROOT), containsString("read timed out")); + + assertThat(exception.getCause().getCause(), instanceOf(SocketTimeoutException.class)); + assertThat(exception.getCause().getCause().getMessage().toLowerCase(Locale.ROOT), containsString("read timed out")); + } + + public void testWriteLargeBlob() throws Exception { + final boolean useTimeout = rarely(); + final TimeValue readTimeout = useTimeout ? TimeValue.timeValueMillis(randomIntBetween(100, 500)) : null; + final ByteSizeValue bufferSize = new ByteSizeValue(5, ByteSizeUnit.MB); + final BlobContainer blobContainer = createBlobContainer(null, readTimeout, true, bufferSize); + + final int parts = randomIntBetween(1, 2); + final long lastPartSize = randomLongBetween(10, 512); + final long blobSize = (parts * bufferSize.getBytes()) + lastPartSize; + + final int maxRetries = 2; // we want all requests to fail at least once + final CountDown countDownInitiate = new CountDown(maxRetries); + final AtomicInteger countDownUploads = new AtomicInteger(maxRetries * (parts + 1)); + final CountDown countDownComplete = new CountDown(maxRetries); + + httpServer.createContext("/bucket/write_large_blob", exchange -> { + if ("POST".equals(exchange.getRequestMethod()) + && exchange.getRequestURI().getQuery().equals("uploads")) { + // initiate multipart upload request + if (countDownInitiate.countDown()) { + byte[] response = ("\n" + + "\n" + + " bucket\n" + + " write_large_blob\n" + + " TEST\n" + + "").getBytes(StandardCharsets.UTF_8); + exchange.getResponseHeaders().add("Content-Type", "application/xml"); + exchange.sendResponseHeaders(HttpStatus.SC_OK, response.length); + exchange.getResponseBody().write(response); + exchange.close(); + return; + } + } else if ("PUT".equals(exchange.getRequestMethod())) { + // upload part request + MD5DigestCalculatingInputStream md5 = new MD5DigestCalculatingInputStream(exchange.getRequestBody()); + BytesReference bytes = Streams.readFully(md5); + assertThat((long) bytes.length(), anyOf(equalTo(lastPartSize), equalTo(bufferSize.getBytes()))); + + if (countDownUploads.decrementAndGet() % 2 == 0) { + exchange.getResponseHeaders().add("ETag", Base16.encodeAsString(md5.getMd5Digest())); + exchange.sendResponseHeaders(HttpStatus.SC_OK, -1); + exchange.close(); + return; + } + + } else if ("POST".equals(exchange.getRequestMethod()) + && exchange.getRequestURI().getQuery().equals("uploadId=TEST")) { + // complete multipart upload request + Streams.readFully(exchange.getRequestBody()); + if (countDownComplete.countDown()) { + byte[] response = ("\n" + + "\n" + + " bucket\n" + + " write_large_blob\n" + + "").getBytes(StandardCharsets.UTF_8); + exchange.getResponseHeaders().add("Content-Type", "application/xml"); + exchange.sendResponseHeaders(HttpStatus.SC_OK, response.length); + exchange.getResponseBody().write(response); + exchange.close(); + return; + } + } + + // sends an error back or let the request time out + if (useTimeout == false) { + exchange.sendResponseHeaders(randomFrom(HttpStatus.SC_INTERNAL_SERVER_ERROR, HttpStatus.SC_BAD_GATEWAY, + HttpStatus.SC_SERVICE_UNAVAILABLE, HttpStatus.SC_GATEWAY_TIMEOUT), -1); + exchange.close(); + } + }); + + blobContainer.writeBlob("write_large_blob", new ZeroInputStream(blobSize), blobSize, false); + + assertThat(countDownInitiate.isCountedDown(), is(true)); + assertThat(countDownUploads.get(), equalTo(0)); + assertThat(countDownComplete.isCountedDown(), is(true)); + } + + /** + * A resettable InputStream that only serves zeros. + * + * Ideally it should be wrapped into a BufferedInputStream but it seems that the AWS SDK is calling InputStream{@link #reset()} + * before calling InputStream{@link #mark(int)}, which is not permitted by the {@link #reset()} method contract. + **/ + private static class ZeroInputStream extends InputStream { + + private final AtomicBoolean closed = new AtomicBoolean(false); + private final long length; + private final AtomicLong reads; + private volatile long mark; + + private ZeroInputStream(final long length) { + this.length = length; + this.reads = new AtomicLong(length); + this.mark = -1; + } + + @Override + public int read() throws IOException { + ensureOpen(); + if (reads.decrementAndGet() < 0) { + return -1; + } + return 0; + } + + @Override + public boolean markSupported() { + return true; + } + + @Override + public synchronized void mark(int readlimit) { + mark = reads.get(); + } + + @Override + public synchronized void reset() throws IOException { + ensureOpen(); + reads.set(mark); + } + + @Override + public int available() throws IOException { + ensureOpen(); + return Math.toIntExact(length - reads.get()); + } + + @Override + public void close() throws IOException { + closed.set(true); + } + + private void ensureOpen() throws IOException { + if (closed.get()) { + throw new IOException("Stream closed"); + } + } + } +} From fab31abbcc0b52a985a7b3a7ab30a4138f8ec54b Mon Sep 17 00:00:00 2001 From: Andrey Ershov Date: Thu, 22 Aug 2019 12:02:19 +0200 Subject: [PATCH 06/59] Log deprecation warning if es.transport.cname_in_publish_address property is specified (#45662) Follow-up of #45626. Now we always output transport.publish_address with CNAME and log deprecation warning if es.transport.cname_in_publish_address property is specified. This commit also adds a test which will fail once Elasticsearch version is changed to 9, to make sure we remove the property when doing reversioning. Closes #39970 --- .../transport/TransportInfo.java | 20 ++++++------ .../transport/TransportInfoTests.java | 31 ++++++++++--------- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/transport/TransportInfo.java b/server/src/main/java/org/elasticsearch/transport/TransportInfo.java index 9212fef631776..ead1af8faca50 100644 --- a/server/src/main/java/org/elasticsearch/transport/TransportInfo.java +++ b/server/src/main/java/org/elasticsearch/transport/TransportInfo.java @@ -47,17 +47,17 @@ public class TransportInfo implements Writeable, ToXContentFragment { private BoundTransportAddress address; private Map profileAddresses; - private final boolean cnameInPublishAddress; + private final boolean cnameInPublishAddressProperty; public TransportInfo(BoundTransportAddress address, @Nullable Map profileAddresses) { this(address, profileAddresses, CNAME_IN_PUBLISH_ADDRESS); } public TransportInfo(BoundTransportAddress address, @Nullable Map profileAddresses, - boolean cnameInPublishAddress) { + boolean cnameInPublishAddressProperty) { this.address = address; this.profileAddresses = profileAddresses; - this.cnameInPublishAddress = cnameInPublishAddress; + this.cnameInPublishAddressProperty = cnameInPublishAddressProperty; } public TransportInfo(StreamInput in) throws IOException { @@ -71,7 +71,7 @@ public TransportInfo(StreamInput in) throws IOException { profileAddresses.put(key, value); } } - this.cnameInPublishAddress = CNAME_IN_PUBLISH_ADDRESS; + this.cnameInPublishAddressProperty = CNAME_IN_PUBLISH_ADDRESS; } @Override @@ -97,17 +97,15 @@ static final class Fields { static final String PROFILES = "profiles"; } - private String formatPublishAddressString(String propertyName, TransportAddress publishAddress){ + private String formatPublishAddressString(String propertyName, TransportAddress publishAddress) { String publishAddressString = publishAddress.toString(); String hostString = publishAddress.address().getHostString(); if (InetAddresses.isInetAddress(hostString) == false) { - if (cnameInPublishAddress) { - publishAddressString = hostString + '/' + publishAddress.toString(); - } else { + publishAddressString = hostString + '/' + publishAddress.toString(); + if (cnameInPublishAddressProperty) { deprecationLogger.deprecated( - propertyName + " was printed as [ip:port] instead of [hostname/ip:port]. " - + "This format is deprecated and will change to [hostname/ip:port] in a future version. " - + "Use -Des.transport.cname_in_publish_address=true to enforce non-deprecated formatting." + "es.transport.cname_in_publish_address system property is deprecated and no longer affects " + propertyName + + " formatting. Remove this property to get rid of this deprecation warning." ); } } diff --git a/server/src/test/java/org/elasticsearch/transport/TransportInfoTests.java b/server/src/test/java/org/elasticsearch/transport/TransportInfoTests.java index ea6ca96bb9b64..61dc3970093d7 100644 --- a/server/src/test/java/org/elasticsearch/transport/TransportInfoTests.java +++ b/server/src/test/java/org/elasticsearch/transport/TransportInfoTests.java @@ -19,6 +19,7 @@ package org.elasticsearch.transport; +import org.elasticsearch.Version; import org.elasticsearch.common.network.NetworkAddress; import org.elasticsearch.common.transport.BoundTransportAddress; import org.elasticsearch.common.transport.TransportAddress; @@ -34,45 +35,47 @@ public class TransportInfoTests extends ESTestCase { - private TransportInfo createTransportInfo(InetAddress address, int port, boolean cnameInPublishAddress) { + private TransportInfo createTransportInfo(InetAddress address, int port, boolean cnameInPublishAddressProperty) { BoundTransportAddress boundAddress = new BoundTransportAddress( new TransportAddress[]{new TransportAddress(address, port)}, new TransportAddress(address, port) ); Map profiles = Collections.singletonMap("test_profile", boundAddress); - return new TransportInfo(boundAddress, profiles, cnameInPublishAddress); + return new TransportInfo(boundAddress, profiles, cnameInPublishAddressProperty); + } + + public void testDoNotForgetToRemoveProperty() { + assertTrue("Remove es.transport.cname_in_publish_address property from TransportInfo in 9.0.0", Version.CURRENT.major < 9); } public void testCorrectlyDisplayPublishedCname() throws Exception { InetAddress address = InetAddress.getByName("localhost"); int port = 9200; assertPublishAddress( - createTransportInfo(address, port,true), + createTransportInfo(address, port, false), "localhost/" + NetworkAddress.format(address) + ':' + port ); } - public void testHideCnameIfDeprecatedFormat() throws Exception { + public void testDeprecatedWarningIfPropertySpecified() throws Exception { InetAddress address = InetAddress.getByName("localhost"); int port = 9200; assertPublishAddress( - createTransportInfo(address, port,false), - NetworkAddress.format(address) + ':' + port + createTransportInfo(address, port, true), + "localhost/" + NetworkAddress.format(address) + ':' + port ); - assertWarnings("transport.publish_address was printed as [ip:port] instead of [hostname/ip:port]. " + - "This format is deprecated and will change to [hostname/ip:port] in a future version. " + - "Use -Des.transport.cname_in_publish_address=true to enforce non-deprecated formatting.", + assertWarnings("es.transport.cname_in_publish_address system property is deprecated and no longer affects " + + "transport.publish_address formatting. Remove this property to get rid of this deprecation warning.", - "transport.test_profile.publish_address was printed as [ip:port] instead of [hostname/ip:port]. " + - "This format is deprecated and will change to [hostname/ip:port] in a future version. " + - "Use -Des.transport.cname_in_publish_address=true to enforce non-deprecated formatting."); + "es.transport.cname_in_publish_address system property is deprecated and no longer affects " + + "transport.test_profile.publish_address formatting. Remove this property to get rid of this deprecation warning."); } public void testCorrectDisplayPublishedIp() throws Exception { InetAddress address = InetAddress.getByName(NetworkAddress.format(InetAddress.getByName("localhost"))); int port = 9200; assertPublishAddress( - createTransportInfo(address, port,true), + createTransportInfo(address, port, false), NetworkAddress.format(address) + ':' + port ); } @@ -81,7 +84,7 @@ public void testCorrectDisplayPublishedIpv6() throws Exception { InetAddress address = InetAddress.getByName(NetworkAddress.format(InetAddress.getByName("0:0:0:0:0:0:0:1"))); int port = 9200; assertPublishAddress( - createTransportInfo(address, port,true), + createTransportInfo(address, port, false), new TransportAddress(address, port).toString() ); } From a5ceca7715818f47ec87dd5f17f8812c584b592b Mon Sep 17 00:00:00 2001 From: Andrey Ershov Date: Thu, 22 Aug 2019 12:04:38 +0200 Subject: [PATCH 07/59] Remove deprecated es.http.cname_in_publish_address setting (#45616) Follow up on #32806. The system property es.http.cname_in_publish_address is deprecated starting from 7.0.0 and deprecation warning should be added if the property is specified. This PR will go to 7.x and master. Follow-up PR to remove es.http.cname_in_publish_address property completely will go to the master. --- .../java/org/elasticsearch/http/HttpInfo.java | 16 ++++++------- .../org/elasticsearch/http/HttpInfoTests.java | 23 +++++++++++-------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/http/HttpInfo.java b/server/src/main/java/org/elasticsearch/http/HttpInfo.java index cf9e4672d6253..f3457495294a8 100644 --- a/server/src/main/java/org/elasticsearch/http/HttpInfo.java +++ b/server/src/main/java/org/elasticsearch/http/HttpInfo.java @@ -45,7 +45,7 @@ public class HttpInfo implements Writeable, ToXContentFragment { private final BoundTransportAddress address; private final long maxContentLength; - private final boolean cnameInPublishHost; + private final boolean cnameInPublishHostProperty; public HttpInfo(StreamInput in) throws IOException { this(new BoundTransportAddress(in), in.readLong(), CNAME_IN_PUBLISH_HOST); @@ -55,10 +55,10 @@ public HttpInfo(BoundTransportAddress address, long maxContentLength) { this(address, maxContentLength, CNAME_IN_PUBLISH_HOST); } - HttpInfo(BoundTransportAddress address, long maxContentLength, boolean cnameInPublishHost) { + HttpInfo(BoundTransportAddress address, long maxContentLength, boolean cnameInPublishHostProperty) { this.address = address; this.maxContentLength = maxContentLength; - this.cnameInPublishHost = cnameInPublishHost; + this.cnameInPublishHostProperty = cnameInPublishHostProperty; } @Override @@ -83,13 +83,11 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws String publishAddressString = publishAddress.toString(); String hostString = publishAddress.address().getHostString(); if (InetAddresses.isInetAddress(hostString) == false) { - if (cnameInPublishHost) { - publishAddressString = hostString + '/' + publishAddress.toString(); - } else { + publishAddressString = hostString + '/' + publishAddress.toString(); + if (cnameInPublishHostProperty) { deprecationLogger.deprecated( - "[http.publish_host] was printed as [ip:port] instead of [hostname/ip:port]. " - + "This format is deprecated and will change to [hostname/ip:port] in a future version. " - + "Use -Des.http.cname_in_publish_address=true to enforce non-deprecated formatting." + "es.http.cname_in_publish_address system property is deprecated and no longer affects http.publish_address " + + "formatting. Remove this property to get rid of this deprecation warning." ); } } diff --git a/server/src/test/java/org/elasticsearch/http/HttpInfoTests.java b/server/src/test/java/org/elasticsearch/http/HttpInfoTests.java index db149bd6d0db0..cd0cf7e189429 100644 --- a/server/src/test/java/org/elasticsearch/http/HttpInfoTests.java +++ b/server/src/test/java/org/elasticsearch/http/HttpInfoTests.java @@ -40,22 +40,25 @@ public void testCorrectlyDisplayPublishedCname() throws Exception { new BoundTransportAddress( new TransportAddress[]{new TransportAddress(localhost, port)}, new TransportAddress(localhost, port) - ), 0L, true + ), 0L, false ), "localhost/" + NetworkAddress.format(localhost) + ':' + port ); } - public void hideCnameIfDeprecatedFormat() throws Exception { + public void testDeprecatedWarningIfPropertySpecified() throws Exception { InetAddress localhost = InetAddress.getByName("localhost"); int port = 9200; assertPublishAddress( - new HttpInfo( - new BoundTransportAddress( - new TransportAddress[]{new TransportAddress(localhost, port)}, - new TransportAddress(localhost, port) - ), 0L, false - ), NetworkAddress.format(localhost) + ':' + port + new HttpInfo( + new BoundTransportAddress( + new TransportAddress[]{new TransportAddress(localhost, port)}, + new TransportAddress(localhost, port) + ), 0L, true + ), "localhost/" + NetworkAddress.format(localhost) + ':' + port ); + assertWarnings( + "es.http.cname_in_publish_address system property is deprecated and no longer affects http.publish_address " + + "formatting. Remove this property to get rid of this deprecation warning."); } public void testCorrectDisplayPublishedIp() throws Exception { @@ -66,7 +69,7 @@ public void testCorrectDisplayPublishedIp() throws Exception { new BoundTransportAddress( new TransportAddress[]{new TransportAddress(localhost, port)}, new TransportAddress(localhost, port) - ), 0L, true + ), 0L, false ), NetworkAddress.format(localhost) + ':' + port ); } @@ -77,7 +80,7 @@ public void testCorrectDisplayPublishedIpv6() throws Exception { new TransportAddress(InetAddress.getByName(NetworkAddress.format(InetAddress.getByName("0:0:0:0:0:0:0:1"))), port); assertPublishAddress( new HttpInfo( - new BoundTransportAddress(new TransportAddress[]{localhost}, localhost), 0L, true + new BoundTransportAddress(new TransportAddress[]{localhost}, localhost), 0L, false ), localhost.toString() ); } From a66170a68b7cc67a12c6dbdd3d4fd0b09856d2fa Mon Sep 17 00:00:00 2001 From: Andrey Ershov Date: Thu, 22 Aug 2019 12:05:25 +0200 Subject: [PATCH 08/59] Remove deprecated es.http.cname_in_publish_address setting (#45616) Follow up on #32806. The system property es.http.cname_in_publish_address is deprecated starting from 7.0.0 and deprecation warning should be added if the property is specified. This commit goes to 7.x and master. Follow-up PR to remove es.http.cname_in_publish_address property completely will go to the master. From 77267adc84f60fbedbd73a19c82486a3caf6aa8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Witek?= Date: Thu, 22 Aug 2019 13:19:12 +0200 Subject: [PATCH 09/59] Change supported version in serialization code to 7.4.0 after backport (#45828) --- .../xpack/core/ml/action/EvaluateDataFrameAction.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/action/EvaluateDataFrameAction.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/action/EvaluateDataFrameAction.java index 3defdac611c14..b3b2a3b6666a4 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/action/EvaluateDataFrameAction.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/action/EvaluateDataFrameAction.java @@ -93,7 +93,7 @@ public Request() {} public Request(StreamInput in) throws IOException { super(in); indices = in.readStringArray(); - if (in.getVersion().onOrAfter(Version.CURRENT)) { + if (in.getVersion().onOrAfter(Version.V_7_4_0)) { if (in.readBoolean()) { queryProvider = QueryProvider.fromStream(in); } @@ -138,7 +138,7 @@ public ActionRequestValidationException validate() { public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); out.writeStringArray(indices); - if (out.getVersion().onOrAfter(Version.CURRENT)) { + if (out.getVersion().onOrAfter(Version.V_7_4_0)) { if (queryProvider != null) { out.writeBoolean(true); queryProvider.writeTo(out); From 26323f0db35a7619fb8e02f75ee73643eba4af71 Mon Sep 17 00:00:00 2001 From: James Rodewig Date: Thu, 22 Aug 2019 08:40:09 -0400 Subject: [PATCH 10/59] [DOCS] Add template docs to scripts. Reorder template examples. (#45817) * [DOCS] Add template docs to scripts. Reorder template examples. * Adds a 'Search template' section to the 'How to use scripts' chapter. This links to the 'Search template' chapter for detailed info and examples. * Reorders and retitles several examples in the 'Search template' chapter. This is primarily to make examples for storing, deleting, and using search templates more prominent. * Change to --- docs/reference/scripting/using.asciidoc | 15 + .../reference/search/search-template.asciidoc | 402 +++++++++--------- 2 files changed, 218 insertions(+), 199 deletions(-) diff --git a/docs/reference/scripting/using.asciidoc b/docs/reference/scripting/using.asciidoc index a9646f2f3c8c6..5060c7fc67d2f 100644 --- a/docs/reference/scripting/using.asciidoc +++ b/docs/reference/scripting/using.asciidoc @@ -195,6 +195,21 @@ DELETE _scripts/calculate-score // CONSOLE // TEST[continued] +[float] +[[modules-scripting-search-templates]] +=== Search templates +You can also use the `_scripts` API to store **search templates**. Search +templates save specific <> with placeholder +values, called template parameters. + +You can use stored search templates to run searches without writing out the +entire query. Just provide the stored template's ID and the template parameters. +This is useful when you want to run a commonly used query quickly and without +mistakes. + +Search templates use the http://mustache.github.io/mustache.5.html[mustache +templating language]. See <> for more information and examples. + [float] [[modules-scripting-using-caching]] === Script caching diff --git a/docs/reference/search/search-template.asciidoc b/docs/reference/search/search-template.asciidoc index f68a71c10c2c1..950477aa7d320 100644 --- a/docs/reference/search/search-template.asciidoc +++ b/docs/reference/search/search-template.asciidoc @@ -32,7 +32,209 @@ disable scripts per type and context as described in the <> [float] -==== More template examples +==== Examples + +[float] +[[pre-registered-templates]] +===== Store a search template + +You can store a search template using the stored scripts API. + +[source,js] +------------------------------------------ +POST _scripts/ +{ + "script": { + "lang": "mustache", + "source": { + "query": { + "match": { + "title": "{{query_string}}" + } + } + } + } +} +------------------------------------------ +// CONSOLE +// TEST[continued] + +////////////////////////// + +We want to be sure that the template has been created, +because we'll use it later. + +[source,js] +-------------------------------------------------- +{ + "acknowledged" : true +} +-------------------------------------------------- +// TESTRESPONSE + +////////////////////////// + +This template can be retrieved by + +[source,js] +------------------------------------------ +GET _scripts/ +------------------------------------------ +// CONSOLE +// TEST[continued] + +which is rendered as: + +[source,js] +------------------------------------------ +{ + "script" : { + "lang" : "mustache", + "source" : "{\"query\":{\"match\":{\"title\":\"{{query_string}}\"}}}", + "options": { + "content_type" : "application/json; charset=UTF-8" + } + }, + "_id": "", + "found": true +} +------------------------------------------ +// TESTRESPONSE + +This template can be deleted by + +[source,js] +------------------------------------------ +DELETE _scripts/ +------------------------------------------ +// CONSOLE +// TEST[continued] + +////////////////////////// + +We want to be sure that the template has been created, +because we'll use it later. + +[source,js] +-------------------------------------------------- +{ + "acknowledged" : true +} +-------------------------------------------------- +// TESTRESPONSE + +////////////////////////// + +[float] +[[use-registered-templates]] +===== Use a stored search template + +To use a stored template at search time use: + +[source,js] +------------------------------------------ +GET _search/template +{ + "id": "", <1> + "params": { + "query_string": "search for these words" + } +} +------------------------------------------ +// CONSOLE +// TEST[catch:missing] +<1> Name of the stored template script. + +[float] +[[_validating_templates]] +==== Validate a search template + +A template can be rendered in a response with given parameters using + +[source,js] +------------------------------------------ +GET _render/template +{ + "source": "{ \"query\": { \"terms\": {{#toJson}}statuses{{/toJson}} }}", + "params": { + "statuses" : { + "status": [ "pending", "published" ] + } + } +} +------------------------------------------ +// CONSOLE + +This call will return the rendered template: + +[source,js] +------------------------------------------ +{ + "template_output": { + "query": { + "terms": { + "status": [ <1> + "pending", + "published" + ] + } + } + } +} +------------------------------------------ +// TESTRESPONSE +<1> `status` array has been populated with values from the `params` object. + +Stored templates can also be rendered using + +[source,js] +------------------------------------------ +GET _render/template/ +{ + "params": { + "..." + } +} +------------------------------------------ +// NOTCONSOLE + +[float] +===== Explain + +You can use `explain` parameter when running a template: + +[source,js] +------------------------------------------ +GET _search/template +{ + "id": "my_template", + "params": { + "status": [ "pending", "published" ] + }, + "explain": true +} +------------------------------------------ +// CONSOLE +// TEST[catch:missing] + +[float] +===== Profiling + +You can use `profile` parameter when running a template: + +[source,js] +------------------------------------------ +GET _search/template +{ + "id": "my_template", + "params": { + "status": [ "pending", "published" ] + }, + "profile": true +} +------------------------------------------ +// CONSOLE +// TEST[catch:missing] [float] ===== Filling in a query string with a single value @@ -397,204 +599,6 @@ The previous query will be rendered as: ------------------------------------------ // TESTRESPONSE - -[float] -[[pre-registered-templates]] -===== Pre-registered template - -You can register search templates by using the stored scripts api. - -[source,js] ------------------------------------------- -POST _scripts/ -{ - "script": { - "lang": "mustache", - "source": { - "query": { - "match": { - "title": "{{query_string}}" - } - } - } - } -} ------------------------------------------- -// CONSOLE -// TEST[continued] - -////////////////////////// - -We want to be sure that the template has been created, -because we'll use it later. - -[source,js] --------------------------------------------------- -{ - "acknowledged" : true -} --------------------------------------------------- -// TESTRESPONSE - -////////////////////////// - -This template can be retrieved by - -[source,js] ------------------------------------------- -GET _scripts/ ------------------------------------------- -// CONSOLE -// TEST[continued] - -which is rendered as: - -[source,js] ------------------------------------------- -{ - "script" : { - "lang" : "mustache", - "source" : "{\"query\":{\"match\":{\"title\":\"{{query_string}}\"}}}", - "options": { - "content_type" : "application/json; charset=UTF-8" - } - }, - "_id": "", - "found": true -} ------------------------------------------- -// TESTRESPONSE - -This template can be deleted by - -[source,js] ------------------------------------------- -DELETE _scripts/ ------------------------------------------- -// CONSOLE -// TEST[continued] - -////////////////////////// - -We want to be sure that the template has been created, -because we'll use it later. - -[source,js] --------------------------------------------------- -{ - "acknowledged" : true -} --------------------------------------------------- -// TESTRESPONSE - -////////////////////////// - -To use a stored template at search time use: - -[source,js] ------------------------------------------- -GET _search/template -{ - "id": "", <1> - "params": { - "query_string": "search for these words" - } -} ------------------------------------------- -// CONSOLE -// TEST[catch:missing] -<1> Name of the stored template script. - -[float] -==== Validating templates - -A template can be rendered in a response with given parameters using - -[source,js] ------------------------------------------- -GET _render/template -{ - "source": "{ \"query\": { \"terms\": {{#toJson}}statuses{{/toJson}} }}", - "params": { - "statuses" : { - "status": [ "pending", "published" ] - } - } -} ------------------------------------------- -// CONSOLE - -This call will return the rendered template: - -[source,js] ------------------------------------------- -{ - "template_output": { - "query": { - "terms": { - "status": [ <1> - "pending", - "published" - ] - } - } - } -} ------------------------------------------- -// TESTRESPONSE -<1> `status` array has been populated with values from the `params` object. - -Pre-registered templates can also be rendered using - -[source,js] ------------------------------------------- -GET _render/template/ -{ - "params": { - "..." - } -} ------------------------------------------- -// NOTCONSOLE - -[float] -===== Explain - -You can use `explain` parameter when running a template: - -[source,js] ------------------------------------------- -GET _search/template -{ - "id": "my_template", - "params": { - "status": [ "pending", "published" ] - }, - "explain": true -} ------------------------------------------- -// CONSOLE -// TEST[catch:missing] - -[float] -===== Profiling - -You can use `profile` parameter when running a template: - -[source,js] ------------------------------------------- -GET _search/template -{ - "id": "my_template", - "params": { - "status": [ "pending", "published" ] - }, - "profile": true -} ------------------------------------------- -// CONSOLE -// TEST[catch:missing] - [[multi-search-template]] === Multi Search Template From f989beb7399c92675d3cf3a17d801c75ffde8b30 Mon Sep 17 00:00:00 2001 From: Hendrik Muhs Date: Thu, 22 Aug 2019 14:44:34 +0200 Subject: [PATCH 11/59] [ML-DataFrame] version data frame transform internal index (#45375) Adds index versioning for the internal data frame transform index. Allows for new indices to be created and referenced, `GET` requests now query over the index pattern and takes the latest doc (based on INDEX name). --- .../AbstractTransportGetResourcesAction.java | 15 +- .../xpack/core/dataframe/DataFrameField.java | 3 +- .../transforms/DataFrameTransform.java | 5 +- .../transforms/DataFrameTransformConfig.java | 18 +- .../DataFrameConfigurationIndexIT.java | 4 +- .../integration/DataFrameRestTestCase.java | 2 +- .../DataFrameTransformInternalIndexIT.java | 132 ++++++ .../integration/DataFrameUsageIT.java | 4 +- .../xpack/dataframe/DataFrame.java | 2 +- .../DataFrameInfoTransportAction.java | 2 +- .../DataFrameUsageTransportAction.java | 2 +- ...TransportGetDataFrameTransformsAction.java | 10 +- ...TransportStopDataFrameTransformAction.java | 2 +- ...ansportUpdateDataFrameTransformAction.java | 33 +- .../persistence/DataFrameInternalIndex.java | 52 ++- .../DataFrameTransformsConfigManager.java | 406 ++++++++++++------ .../dataframe/persistence/DataframeIndex.java | 2 +- ...FrameTransformPersistentTasksExecutor.java | 2 +- .../transforms/DataFrameTransformTask.java | 21 +- .../DataFrameSingleNodeTestCase.java | 4 +- ...DataFrameTransformsConfigManagerTests.java | 79 ++++ ...TransformPersistentTasksExecutorTests.java | 4 +- 22 files changed, 607 insertions(+), 197 deletions(-) create mode 100644 x-pack/plugin/data-frame/qa/single-node-tests/src/test/java/org/elasticsearch/xpack/dataframe/integration/DataFrameTransformInternalIndexIT.java diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/action/AbstractTransportGetResourcesAction.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/action/AbstractTransportGetResourcesAction.java index 41e2605d9dba3..f4cc279aad7bc 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/action/AbstractTransportGetResourcesAction.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/action/AbstractTransportGetResourcesAction.java @@ -80,6 +80,7 @@ protected void searchResources(AbstractGetResourcesRequest request, ActionListen sourceBuilder.from(request.getPageParams().getFrom()) .size(request.getPageParams().getSize()); } + sourceBuilder.trackTotalHits(true); IndicesOptions indicesOptions = SearchRequest.DEFAULT_INDICES_OPTIONS; SearchRequest searchRequest = new SearchRequest(getIndices()) @@ -88,7 +89,7 @@ protected void searchResources(AbstractGetResourcesRequest request, ActionListen indicesOptions.expandWildcardsOpen(), indicesOptions.expandWildcardsClosed(), indicesOptions)) - .source(sourceBuilder.trackTotalHits(true)); + .source(customSearchOptions(sourceBuilder)); executeAsyncWithOrigin(client.threadPool().getThreadContext(), executionOrigin(), @@ -105,8 +106,12 @@ public void onResponse(SearchResponse response) { XContentParser parser = XContentFactory.xContent(XContentType.JSON).createParser( xContentRegistry, LoggingDeprecationHandler.INSTANCE, stream)) { Resource resource = parse(parser); - docs.add(resource); - foundResourceIds.add(extractIdFromResource(resource)); + String id = extractIdFromResource(resource); + // Do not include a resource with the same ID twice + if (foundResourceIds.contains(id) == false) { + docs.add(resource); + foundResourceIds.add(id); + } } catch (IOException e) { this.onFailure(e); } @@ -159,6 +164,10 @@ private QueryBuilder buildQuery(String[] tokens, String resourceIdField) { return boolQuery.hasClauses() ? boolQuery : QueryBuilders.matchAllQuery(); } + protected SearchSourceBuilder customSearchOptions(SearchSourceBuilder searchSourceBuilder) { + return searchSourceBuilder; + } + @Nullable protected QueryBuilder additionalQuery() { return null; diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/dataframe/DataFrameField.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/dataframe/DataFrameField.java index c0c209a9b542b..56867ee902973 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/dataframe/DataFrameField.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/dataframe/DataFrameField.java @@ -26,6 +26,8 @@ public final class DataFrameField { public static final ParseField INDEX_DOC_TYPE = new ParseField("doc_type"); public static final ParseField SOURCE = new ParseField("source"); public static final ParseField DESCRIPTION = new ParseField("description"); + public static final ParseField VERSION = new ParseField("version"); + public static final ParseField CREATE_TIME = new ParseField("create_time"); public static final ParseField DESTINATION = new ParseField("dest"); public static final ParseField FREQUENCY = new ParseField("frequency"); public static final ParseField FORCE = new ParseField("force"); @@ -65,7 +67,6 @@ public final class DataFrameField { // strings for meta information public static final String META_FIELDNAME = "_data_frame"; public static final String CREATION_DATE_MILLIS = "creation_date_in_millis"; - public static final String VERSION = "version"; public static final String CREATED = "created"; public static final String CREATED_BY = "created_by"; public static final String TRANSFORM = "transform"; diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/dataframe/transforms/DataFrameTransform.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/dataframe/transforms/DataFrameTransform.java index d6e37c80dfe21..4319a35c8f148 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/dataframe/transforms/DataFrameTransform.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/dataframe/transforms/DataFrameTransform.java @@ -24,7 +24,6 @@ public class DataFrameTransform extends AbstractDiffable implements PersistentTaskParams { public static final String NAME = DataFrameField.TASK_NAME; - public static final ParseField VERSION = new ParseField(DataFrameField.VERSION); public static final ParseField FREQUENCY = DataFrameField.FREQUENCY; private final String transformId; @@ -36,7 +35,7 @@ public class DataFrameTransform extends AbstractDiffable imp static { PARSER.declareString(ConstructingObjectParser.constructorArg(), DataFrameField.ID); - PARSER.declareString(ConstructingObjectParser.optionalConstructorArg(), VERSION); + PARSER.declareString(ConstructingObjectParser.optionalConstructorArg(), DataFrameField.VERSION); PARSER.declareString(ConstructingObjectParser.optionalConstructorArg(), FREQUENCY); } @@ -90,7 +89,7 @@ public void writeTo(StreamOutput out) throws IOException { public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { builder.startObject(); builder.field(DataFrameField.ID.getPreferredName(), transformId); - builder.field(VERSION.getPreferredName(), version); + builder.field(DataFrameField.VERSION.getPreferredName(), version); if (frequency != null) { builder.field(FREQUENCY.getPreferredName(), frequency.getStringRep()); } diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/dataframe/transforms/DataFrameTransformConfig.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/dataframe/transforms/DataFrameTransformConfig.java index fe31eaffbeffc..62865f5e1e5d3 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/dataframe/transforms/DataFrameTransformConfig.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/dataframe/transforms/DataFrameTransformConfig.java @@ -47,8 +47,6 @@ public class DataFrameTransformConfig extends AbstractDiffable STRICT_PARSER = createParser(false); private static final ConstructingObjectParser LENIENT_PARSER = createParser(true); static final int MAX_DESCRIPTION_LENGTH = 1_000; @@ -98,8 +96,8 @@ private static ConstructingObjectParser create // on strict parsing do not allow injection of headers, transform version, or create time if (lenient == false) { validateStrictParsingParams(args[6], HEADERS.getPreferredName()); - validateStrictParsingParams(args[9], CREATE_TIME.getPreferredName()); - validateStrictParsingParams(args[10], VERSION.getPreferredName()); + validateStrictParsingParams(args[9], DataFrameField.CREATE_TIME.getPreferredName()); + validateStrictParsingParams(args[10], DataFrameField.VERSION.getPreferredName()); } @SuppressWarnings("unchecked") @@ -132,8 +130,9 @@ private static ConstructingObjectParser create parser.declareObject(optionalConstructorArg(), (p, c) -> PivotConfig.fromXContent(p, lenient), PIVOT_TRANSFORM); parser.declareString(optionalConstructorArg(), DataFrameField.DESCRIPTION); parser.declareField(optionalConstructorArg(), - p -> TimeUtils.parseTimeFieldToInstant(p, CREATE_TIME.getPreferredName()), CREATE_TIME, ObjectParser.ValueType.VALUE); - parser.declareString(optionalConstructorArg(), VERSION); + p -> TimeUtils.parseTimeFieldToInstant(p, DataFrameField.CREATE_TIME.getPreferredName()), DataFrameField.CREATE_TIME, + ObjectParser.ValueType.VALUE); + parser.declareString(optionalConstructorArg(), DataFrameField.VERSION); return parser; } @@ -256,7 +255,7 @@ public Instant getCreateTime() { } public DataFrameTransformConfig setCreateTime(Instant createTime) { - ExceptionsHelper.requireNonNull(createTime, CREATE_TIME.getPreferredName()); + ExceptionsHelper.requireNonNull(createTime, DataFrameField.CREATE_TIME.getPreferredName()); this.createTime = Instant.ofEpochMilli(createTime.toEpochMilli()); return this; } @@ -332,10 +331,11 @@ public XContentBuilder toXContent(final XContentBuilder builder, final Params pa builder.field(DataFrameField.DESCRIPTION.getPreferredName(), description); } if (transformVersion != null) { - builder.field(VERSION.getPreferredName(), transformVersion); + builder.field(DataFrameField.VERSION.getPreferredName(), transformVersion); } if (createTime != null) { - builder.timeField(CREATE_TIME.getPreferredName(), CREATE_TIME.getPreferredName() + "_string", createTime.toEpochMilli()); + builder.timeField(DataFrameField.CREATE_TIME.getPreferredName(), DataFrameField.CREATE_TIME.getPreferredName() + "_string", + createTime.toEpochMilli()); } builder.endObject(); return builder; diff --git a/x-pack/plugin/data-frame/qa/single-node-tests/src/test/java/org/elasticsearch/xpack/dataframe/integration/DataFrameConfigurationIndexIT.java b/x-pack/plugin/data-frame/qa/single-node-tests/src/test/java/org/elasticsearch/xpack/dataframe/integration/DataFrameConfigurationIndexIT.java index 681599331c8af..499f62f13ea53 100644 --- a/x-pack/plugin/data-frame/qa/single-node-tests/src/test/java/org/elasticsearch/xpack/dataframe/integration/DataFrameConfigurationIndexIT.java +++ b/x-pack/plugin/data-frame/qa/single-node-tests/src/test/java/org/elasticsearch/xpack/dataframe/integration/DataFrameConfigurationIndexIT.java @@ -42,13 +42,13 @@ public void testDeleteConfigurationLeftOver() throws IOException { builder.endObject(); final StringEntity entity = new StringEntity(Strings.toString(builder), ContentType.APPLICATION_JSON); Request req = new Request("PUT", - DataFrameInternalIndex.INDEX_NAME + "/_doc/" + DataFrameTransformConfig.documentId(fakeTransformName)); + DataFrameInternalIndex.LATEST_INDEX_NAME + "/_doc/" + DataFrameTransformConfig.documentId(fakeTransformName)); req.setEntity(entity); client().performRequest(req); } // refresh the index - assertOK(client().performRequest(new Request("POST", DataFrameInternalIndex.INDEX_NAME + "/_refresh"))); + assertOK(client().performRequest(new Request("POST", DataFrameInternalIndex.LATEST_INDEX_NAME + "/_refresh"))); Request deleteRequest = new Request("DELETE", DATAFRAME_ENDPOINT + fakeTransformName); Response deleteResponse = client().performRequest(deleteRequest); diff --git a/x-pack/plugin/data-frame/qa/single-node-tests/src/test/java/org/elasticsearch/xpack/dataframe/integration/DataFrameRestTestCase.java b/x-pack/plugin/data-frame/qa/single-node-tests/src/test/java/org/elasticsearch/xpack/dataframe/integration/DataFrameRestTestCase.java index 09a6f1ee56ab4..728ff55a42a06 100644 --- a/x-pack/plugin/data-frame/qa/single-node-tests/src/test/java/org/elasticsearch/xpack/dataframe/integration/DataFrameRestTestCase.java +++ b/x-pack/plugin/data-frame/qa/single-node-tests/src/test/java/org/elasticsearch/xpack/dataframe/integration/DataFrameRestTestCase.java @@ -385,7 +385,7 @@ public void wipeDataFrameTransforms() throws IOException { assertTrue(transformConfigs.isEmpty()); // the configuration index should be empty - Request request = new Request("GET", DataFrameInternalIndex.INDEX_NAME + "/_search"); + Request request = new Request("GET", DataFrameInternalIndex.LATEST_INDEX_NAME + "/_search"); try { Response searchResponse = adminClient().performRequest(request); Map searchResult = entityAsMap(searchResponse); diff --git a/x-pack/plugin/data-frame/qa/single-node-tests/src/test/java/org/elasticsearch/xpack/dataframe/integration/DataFrameTransformInternalIndexIT.java b/x-pack/plugin/data-frame/qa/single-node-tests/src/test/java/org/elasticsearch/xpack/dataframe/integration/DataFrameTransformInternalIndexIT.java new file mode 100644 index 0000000000000..c76ca459694a6 --- /dev/null +++ b/x-pack/plugin/data-frame/qa/single-node-tests/src/test/java/org/elasticsearch/xpack/dataframe/integration/DataFrameTransformInternalIndexIT.java @@ -0,0 +1,132 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +package org.elasticsearch.xpack.dataframe.integration; + +import org.elasticsearch.action.get.GetRequest; +import org.elasticsearch.action.get.GetResponse; +import org.elasticsearch.action.index.IndexRequest; +import org.elasticsearch.action.support.WriteRequest; +import org.elasticsearch.client.RequestOptions; +import org.elasticsearch.client.RestHighLevelClient; +import org.elasticsearch.client.dataframe.GetDataFrameTransformRequest; +import org.elasticsearch.client.dataframe.GetDataFrameTransformResponse; +import org.elasticsearch.client.dataframe.UpdateDataFrameTransformRequest; +import org.elasticsearch.client.dataframe.UpdateDataFrameTransformResponse; +import org.elasticsearch.client.dataframe.transforms.DataFrameTransformConfigUpdate; +import org.elasticsearch.common.xcontent.XContentBuilder; +import org.elasticsearch.common.xcontent.XContentFactory; +import org.elasticsearch.search.SearchModule; +import org.elasticsearch.xpack.core.dataframe.DataFrameField; +import org.elasticsearch.xpack.core.dataframe.transforms.DataFrameTransformConfig; +import org.elasticsearch.client.indices.CreateIndexRequest; +import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.common.util.concurrent.ThreadContext; +import org.elasticsearch.common.xcontent.XContentType; +import org.elasticsearch.test.rest.ESRestTestCase; +import org.elasticsearch.xpack.dataframe.persistence.DataFrameInternalIndex; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.Base64; +import java.util.Collections; + +import static org.elasticsearch.xpack.dataframe.persistence.DataFrameInternalIndex.addDataFrameTransformsConfigMappings; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.equalTo; + + +public class DataFrameTransformInternalIndexIT extends ESRestTestCase { + + + private static final String CURRENT_INDEX = DataFrameInternalIndex.LATEST_INDEX_NAME; + private static final String OLD_INDEX = DataFrameInternalIndex.INDEX_PATTERN + "1"; + + + public void testUpdateDeletesOldTransformConfig() throws Exception { + TestRestHighLevelClient client = new TestRestHighLevelClient(); + // The mapping does not need to actually be the "OLD" mapping, we are testing that the old doc gets deleted, and the new one + // created. + try (XContentBuilder builder = XContentFactory.jsonBuilder()) { + builder.startObject(); + builder.startObject("properties"); + builder.startObject(DataFrameField.INDEX_DOC_TYPE.getPreferredName()).field("type", "keyword").endObject(); + addDataFrameTransformsConfigMappings(builder); + builder.endObject(); + builder.endObject(); + client.indices().create(new CreateIndexRequest(OLD_INDEX).mapping(builder), RequestOptions.DEFAULT); + } + String transformIndex = "transform-index-deletes-old"; + createSourceIndex(transformIndex); + String transformId = "transform-update-deletes-old-transform-config"; + String config = "{\"dest\": {\"index\":\"bar\"}," + + " \"source\": {\"index\":\"" + transformIndex + "\", \"query\": {\"match_all\":{}}}," + + " \"id\": \""+transformId+"\"," + + " \"doc_type\": \"data_frame_transform_config\"," + + " \"pivot\": {" + + " \"group_by\": {" + + " \"reviewer\": {" + + " \"terms\": {" + + " \"field\": \"user_id\"" + + " } } }," + + " \"aggregations\": {" + + " \"avg_rating\": {" + + " \"avg\": {" + + " \"field\": \"stars\"" + + " } } } }," + + "\"frequency\":\"1s\"" + + "}"; + client.index(new IndexRequest(OLD_INDEX) + .id(DataFrameTransformConfig.documentId(transformId)) + .source(config, XContentType.JSON) + .setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE), + RequestOptions.DEFAULT); + GetResponse getResponse = client.get(new GetRequest(OLD_INDEX, DataFrameTransformConfig.documentId(transformId)), + RequestOptions.DEFAULT); + assertThat(getResponse.isExists(), is(true)); + + GetDataFrameTransformResponse response = client.dataFrame() + .getDataFrameTransform(new GetDataFrameTransformRequest(transformId), RequestOptions.DEFAULT); + assertThat(response.getTransformConfigurations().get(0).getId(), equalTo(transformId)); + + UpdateDataFrameTransformResponse updated = client.dataFrame().updateDataFrameTransform( + new UpdateDataFrameTransformRequest(DataFrameTransformConfigUpdate.builder().setDescription("updated").build(), transformId), + RequestOptions.DEFAULT); + + assertThat(updated.getTransformConfiguration().getId(), equalTo(transformId)); + assertThat(updated.getTransformConfiguration().getDescription(), equalTo("updated")); + + // Old should now be gone + getResponse = client.get(new GetRequest(OLD_INDEX, DataFrameTransformConfig.documentId(transformId)), RequestOptions.DEFAULT); + assertThat(getResponse.isExists(), is(false)); + + // New should be here + getResponse = client.get(new GetRequest(CURRENT_INDEX, DataFrameTransformConfig.documentId(transformId)), + RequestOptions.DEFAULT); + assertThat(getResponse.isExists(), is(true)); + } + + + @Override + protected Settings restClientSettings() { + final String token = "Basic " + + Base64.getEncoder().encodeToString(("x_pack_rest_user:x-pack-test-password").getBytes(StandardCharsets.UTF_8)); + return Settings.builder() + .put(ThreadContext.PREFIX + ".Authorization", token) + .build(); + } + + private void createSourceIndex(String index) throws IOException { + TestRestHighLevelClient client = new TestRestHighLevelClient(); + client.indices().create(new CreateIndexRequest(index), RequestOptions.DEFAULT); + } + + private class TestRestHighLevelClient extends RestHighLevelClient { + TestRestHighLevelClient() { + super(client(), restClient -> {}, new SearchModule(Settings.EMPTY, Collections.emptyList()).getNamedXContents()); + } + } +} diff --git a/x-pack/plugin/data-frame/qa/single-node-tests/src/test/java/org/elasticsearch/xpack/dataframe/integration/DataFrameUsageIT.java b/x-pack/plugin/data-frame/qa/single-node-tests/src/test/java/org/elasticsearch/xpack/dataframe/integration/DataFrameUsageIT.java index f195005165b43..c9ee2081d3d63 100644 --- a/x-pack/plugin/data-frame/qa/single-node-tests/src/test/java/org/elasticsearch/xpack/dataframe/integration/DataFrameUsageIT.java +++ b/x-pack/plugin/data-frame/qa/single-node-tests/src/test/java/org/elasticsearch/xpack/dataframe/integration/DataFrameUsageIT.java @@ -54,7 +54,7 @@ public void testUsage() throws Exception { stopDataFrameTransform("test_usage", false); Request statsExistsRequest = new Request("GET", - DataFrameInternalIndex.INDEX_NAME+"/_search?q=" + + DataFrameInternalIndex.LATEST_INDEX_NAME+"/_search?q=" + INDEX_DOC_TYPE.getPreferredName() + ":" + DataFrameTransformStoredDoc.NAME); // Verify that we have one stat document @@ -96,7 +96,7 @@ public void testUsage() throws Exception { XContentMapValues.extractValue("data_frame.stats." + statName, statsMap)); } // Refresh the index so that statistics are searchable - refreshIndex(DataFrameInternalIndex.INDEX_TEMPLATE_NAME); + refreshIndex(DataFrameInternalIndex.LATEST_INDEX_VERSIONED_NAME); }, 60, TimeUnit.SECONDS); diff --git a/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/DataFrame.java b/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/DataFrame.java index 7ecbd5b7ac9dc..383c7b5e75c88 100644 --- a/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/DataFrame.java +++ b/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/DataFrame.java @@ -186,7 +186,7 @@ public Collection createComponents(Client client, ClusterService cluster public UnaryOperator> getIndexTemplateMetaDataUpgrader() { return templates -> { try { - templates.put(DataFrameInternalIndex.INDEX_TEMPLATE_NAME, DataFrameInternalIndex.getIndexTemplateMetaData()); + templates.put(DataFrameInternalIndex.LATEST_INDEX_VERSIONED_NAME, DataFrameInternalIndex.getIndexTemplateMetaData()); } catch (IOException e) { logger.error("Error creating data frame index template", e); } diff --git a/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/DataFrameInfoTransportAction.java b/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/DataFrameInfoTransportAction.java index dc0e4eefd0a5f..153c2d1b2b50d 100644 --- a/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/DataFrameInfoTransportAction.java +++ b/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/DataFrameInfoTransportAction.java @@ -110,7 +110,7 @@ static void getStatisticSummations(Client client, ActionListener waitForStopListener(Request request, ActionList waitResponse -> client.admin() .indices() - .prepareRefresh(DataFrameInternalIndex.INDEX_NAME) + .prepareRefresh(DataFrameInternalIndex.LATEST_INDEX_NAME) .execute(ActionListener.wrap( r -> listener.onResponse(waitResponse), e -> { diff --git a/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/action/TransportUpdateDataFrameTransformAction.java b/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/action/TransportUpdateDataFrameTransformAction.java index 6f3433a84b540..ae6b0090a6b9d 100644 --- a/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/action/TransportUpdateDataFrameTransformAction.java +++ b/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/action/TransportUpdateDataFrameTransformAction.java @@ -6,6 +6,8 @@ package org.elasticsearch.xpack.dataframe.action; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.elasticsearch.ElasticsearchStatusException; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.support.ActionFilters; @@ -19,6 +21,7 @@ import org.elasticsearch.cluster.service.ClusterService; import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.io.stream.StreamInput; +import org.elasticsearch.common.logging.LoggerMessageFormat; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.license.LicenseUtils; import org.elasticsearch.license.XPackLicenseState; @@ -59,6 +62,7 @@ public class TransportUpdateDataFrameTransformAction extends TransportMasterNodeAction { + private static final Logger logger = LogManager.getLogger(TransportUpdateDataFrameTransformAction.class); private final XPackLicenseState licenseState; private final Client client; private final DataFrameTransformsConfigManager dataFrameTransformsConfigManager; @@ -109,8 +113,6 @@ protected void masterOperation(Task task, Request request, ClusterState clusterS DataFrameTransformConfigUpdate update = request.getUpdate(); update.setHeaders(filteredHeaders); - String transformId = request.getId(); - // GET transform and attempt to update // We don't want the update to complete if the config changed between GET and INDEX dataFrameTransformsConfigManager.getTransformConfigurationForUpdate(request.getId(), ActionListener.wrap( @@ -136,12 +138,12 @@ protected ClusterBlockException checkBlock(Request request, ClusterState state) private void handlePrivsResponse(String username, Request request, DataFrameTransformConfig config, - DataFrameTransformsConfigManager.SeqNoPrimaryTermPair seqNoPrimaryTermPair, + DataFrameTransformsConfigManager.SeqNoPrimaryTermAndIndex seqNoPrimaryTermAndIndex, ClusterState clusterState, HasPrivilegesResponse privilegesResponse, ActionListener listener) { if (privilegesResponse.isCompleteMatch()) { - updateDataFrame(request, config, seqNoPrimaryTermPair, clusterState, listener); + updateDataFrame(request, config, seqNoPrimaryTermAndIndex, clusterState, listener); } else { List indices = privilegesResponse.getIndexPrivileges() .stream() @@ -159,7 +161,7 @@ private void handlePrivsResponse(String username, private void validateAndUpdateDataFrame(Request request, ClusterState clusterState, DataFrameTransformConfig config, - DataFrameTransformsConfigManager.SeqNoPrimaryTermPair seqNoPrimaryTermPair, + DataFrameTransformsConfigManager.SeqNoPrimaryTermAndIndex seqNoPrimaryTermAndIndex, ActionListener listener) { try { SourceDestValidator.validate(config, clusterState, indexNameExpressionResolver, request.isDeferValidation()); @@ -174,17 +176,17 @@ private void validateAndUpdateDataFrame(Request request, final String username = securityContext.getUser().principal(); HasPrivilegesRequest privRequest = buildPrivilegeCheck(config, indexNameExpressionResolver, clusterState, username); ActionListener privResponseListener = ActionListener.wrap( - r -> handlePrivsResponse(username, request, config, seqNoPrimaryTermPair, clusterState, r, listener), + r -> handlePrivsResponse(username, request, config, seqNoPrimaryTermAndIndex, clusterState, r, listener), listener::onFailure); client.execute(HasPrivilegesAction.INSTANCE, privRequest, privResponseListener); } else { // No security enabled, just create the transform - updateDataFrame(request, config, seqNoPrimaryTermPair, clusterState, listener); + updateDataFrame(request, config, seqNoPrimaryTermAndIndex, clusterState, listener); } } private void updateDataFrame(Request request, DataFrameTransformConfig config, - DataFrameTransformsConfigManager.SeqNoPrimaryTermPair seqNoPrimaryTermPair, + DataFrameTransformsConfigManager.SeqNoPrimaryTermAndIndex seqNoPrimaryTermAndIndex, ClusterState clusterState, ActionListener listener) { @@ -194,7 +196,18 @@ private void updateDataFrame(Request request, ActionListener putTransformConfigurationListener = ActionListener.wrap( putTransformConfigurationResult -> { auditor.info(config.getId(), "updated data frame transform."); - listener.onResponse(new Response(config)); + dataFrameTransformsConfigManager.deleteOldTransformConfigurations(request.getId(), ActionListener.wrap( + r -> { + logger.trace("[{}] successfully deleted old transform configurations", request.getId()); + listener.onResponse(new Response(config)); + }, + e -> { + logger.warn( + LoggerMessageFormat.format("[{}] failed deleting old transform configurations.", request.getId()), + e); + listener.onResponse(new Response(config)); + } + )); }, // If we failed to INDEX AND we created the destination index, the destination index will still be around // This is a similar behavior to _start @@ -204,7 +217,7 @@ private void updateDataFrame(Request request, // <2> Update our transform ActionListener createDestinationListener = ActionListener.wrap( createDestResponse -> dataFrameTransformsConfigManager.updateTransformConfiguration(config, - seqNoPrimaryTermPair, + seqNoPrimaryTermAndIndex, putTransformConfigurationListener), listener::onFailure ); diff --git a/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/persistence/DataFrameInternalIndex.java b/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/persistence/DataFrameInternalIndex.java index c24b37b29d449..cad4f0cba484d 100644 --- a/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/persistence/DataFrameInternalIndex.java +++ b/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/persistence/DataFrameInternalIndex.java @@ -31,11 +31,23 @@ public final class DataFrameInternalIndex { + /* Changelog of internal index versions + * + * Please list changes, increase the version if you are 1st in this release cycle + * + * version 1 (7.2): initial + * version 2 (7.4): cleanup, add config::version, config::create_time, checkpoint::timestamp, checkpoint::time_upper_bound, + * progress::docs_processed, progress::docs_indexed, + * stats::exponential_avg_checkpoint_duration_ms, stats::exponential_avg_documents_indexed, + * stats::exponential_avg_documents_processed + */ + // constants for the index - public static final String INDEX_TEMPLATE_VERSION = "1"; - public static final String INDEX_TEMPLATE_PATTERN = ".data-frame-internal-"; - public static final String INDEX_TEMPLATE_NAME = INDEX_TEMPLATE_PATTERN + INDEX_TEMPLATE_VERSION; - public static final String INDEX_NAME = INDEX_TEMPLATE_NAME; + public static final String INDEX_VERSION = "2"; + public static final String INDEX_PATTERN = ".data-frame-internal-"; + public static final String LATEST_INDEX_VERSIONED_NAME = INDEX_PATTERN + INDEX_VERSION; + public static final String LATEST_INDEX_NAME = LATEST_INDEX_VERSIONED_NAME; + public static final String INDEX_NAME_PATTERN = INDEX_PATTERN + "*"; public static final String AUDIT_TEMPLATE_VERSION = "1"; public static final String AUDIT_INDEX_PREFIX = ".data-frame-notifications-"; @@ -58,8 +70,8 @@ public final class DataFrameInternalIndex { public static final String KEYWORD = "keyword"; public static IndexTemplateMetaData getIndexTemplateMetaData() throws IOException { - IndexTemplateMetaData dataFrameTemplate = IndexTemplateMetaData.builder(INDEX_TEMPLATE_NAME) - .patterns(Collections.singletonList(INDEX_TEMPLATE_NAME)) + IndexTemplateMetaData dataFrameTemplate = IndexTemplateMetaData.builder(LATEST_INDEX_VERSIONED_NAME) + .patterns(Collections.singletonList(LATEST_INDEX_VERSIONED_NAME)) .version(Version.CURRENT.id) .settings(Settings.builder() // the configurations are expected to be small @@ -116,7 +128,7 @@ private static XContentBuilder auditMappings() throws IOException { return builder; } - private static XContentBuilder mappings() throws IOException { + public static XContentBuilder mappings() throws IOException { XContentBuilder builder = jsonBuilder(); builder.startObject(); @@ -133,6 +145,8 @@ private static XContentBuilder mappings() throws IOException { addDataFrameTransformsConfigMappings(builder); // add the schema for transform stats addDataFrameTransformStoredDocMappings(builder); + // add the schema for checkpoints + addDataFrameCheckpointMappings(builder); // end type builder.endObject(); // end properties @@ -225,15 +239,13 @@ private static XContentBuilder addDataFrameTransformStoredDocMappings(XContentBu .field(TYPE, DOUBLE) .endObject() .endObject() - .endObject() + .endObject(); // This is obsolete and can be removed for future versions of the index, but is left here as a warning/reminder that // we cannot declare this field differently in version 1 of the internal index as it would cause a mapping clash - .startObject("checkpointing") - .field(ENABLED, false) - .endObject(); + // .startObject("checkpointing").field(ENABLED, false).endObject(); } - private static XContentBuilder addDataFrameTransformsConfigMappings(XContentBuilder builder) throws IOException { + public static XContentBuilder addDataFrameTransformsConfigMappings(XContentBuilder builder) throws IOException { return builder .startObject(DataFrameField.ID.getPreferredName()) .field(TYPE, KEYWORD) @@ -257,6 +269,22 @@ private static XContentBuilder addDataFrameTransformsConfigMappings(XContentBuil .endObject() .startObject(DataFrameField.DESCRIPTION.getPreferredName()) .field(TYPE, TEXT) + .endObject() + .startObject(DataFrameField.VERSION.getPreferredName()) + .field(TYPE, KEYWORD) + .endObject() + .startObject(DataFrameField.CREATE_TIME.getPreferredName()) + .field(TYPE, DATE) + .endObject(); + } + + private static XContentBuilder addDataFrameCheckpointMappings(XContentBuilder builder) throws IOException { + return builder + .startObject(DataFrameField.TIMESTAMP_MILLIS.getPreferredName()) + .field(TYPE, DATE) + .endObject() + .startObject(DataFrameField.TIME_UPPER_BOUND_MILLIS.getPreferredName()) + .field(TYPE, DATE) .endObject(); } diff --git a/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/persistence/DataFrameTransformsConfigManager.java b/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/persistence/DataFrameTransformsConfigManager.java index 2c8281eeab223..3d5c8b28aaa18 100644 --- a/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/persistence/DataFrameTransformsConfigManager.java +++ b/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/persistence/DataFrameTransformsConfigManager.java @@ -9,16 +9,18 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.elasticsearch.ElasticsearchParseException; +import org.elasticsearch.ElasticsearchStatusException; import org.elasticsearch.ResourceAlreadyExistsException; import org.elasticsearch.ResourceNotFoundException; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.DocWriteRequest; -import org.elasticsearch.action.get.GetAction; -import org.elasticsearch.action.get.GetRequest; +import org.elasticsearch.action.bulk.BulkItemResponse; import org.elasticsearch.action.index.IndexAction; import org.elasticsearch.action.index.IndexRequest; +import org.elasticsearch.action.search.SearchAction; import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchResponse; +import org.elasticsearch.action.support.IndicesOptions; import org.elasticsearch.action.support.WriteRequest; import org.elasticsearch.client.Client; import org.elasticsearch.common.Strings; @@ -37,8 +39,11 @@ import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.index.reindex.BulkByScrollResponse; import org.elasticsearch.index.reindex.DeleteByQueryAction; import org.elasticsearch.index.reindex.DeleteByQueryRequest; +import org.elasticsearch.index.reindex.ScrollableHitSource; +import org.elasticsearch.rest.RestStatus; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.sort.SortOrder; import org.elasticsearch.xpack.core.action.util.ExpandedIdsMatcher; @@ -54,12 +59,34 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Set; import static org.elasticsearch.xpack.core.ClientHelper.DATA_FRAME_ORIGIN; import static org.elasticsearch.xpack.core.ClientHelper.executeAsyncWithOrigin; +/** + * Place of all interactions with the internal transforms index. For configuration and mappings see @link{DataFrameInternalIndex} + * + * Versioned Index: + * + * We wrap several indexes under 1 pattern: ".data-frame-internal-1", ".data-frame-internal-2", ".data-frame-internal-n" while + * n is the _current_ version of the index. + * + * - all gets/reads and dbq as well are searches on all indexes, while last-one-wins, so the result with the highest version is uses + * - all puts and updates go into the _current_ version of the index, in case of updates this can leave dups behind + * + * Duplicate handling / old version cleanup + * + * As we always write to the new index, updates of older documents leave a dup in the previous versioned index behind. However, + * documents are tiny, so the impact is rather small. + * + * Nevertheless cleanup would be good, eventually we need to move old documents into new indexes after major upgrades. + * + * TODO: Provide a method that moves old docs into the current index and delete old indexes and templates + */ public class DataFrameTransformsConfigManager { private static final Logger logger = LogManager.getLogger(DataFrameTransformsConfigManager.class); @@ -84,7 +111,7 @@ public void putTransformCheckpoint(DataFrameTransformCheckpoint checkpoint, Acti try (XContentBuilder builder = XContentFactory.jsonBuilder()) { XContentBuilder source = checkpoint.toXContent(builder, new ToXContent.MapParams(TO_XCONTENT_PARAMS)); - IndexRequest indexRequest = new IndexRequest(DataFrameInternalIndex.INDEX_NAME) + IndexRequest indexRequest = new IndexRequest(DataFrameInternalIndex.LATEST_INDEX_NAME) .opType(DocWriteRequest.OpType.INDEX) .setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE) .id(DataFrameTransformCheckpoint.documentId(checkpoint.getTransformId(), checkpoint.getCheckpoint())) @@ -116,30 +143,91 @@ public void putTransformConfiguration(DataFrameTransformConfig transformConfig, * but is an index operation that will fail with a version conflict * if the current document seqNo and primaryTerm is not the same as the provided version. * @param transformConfig the @link{DataFrameTransformConfig} - * @param seqNoPrimaryTermPair an object containing the believed seqNo and primaryTerm for the doc. + * @param seqNoPrimaryTermAndIndex an object containing the believed seqNo, primaryTerm and index for the doc. * Used for optimistic concurrency control * @param listener listener to call after request */ public void updateTransformConfiguration(DataFrameTransformConfig transformConfig, - SeqNoPrimaryTermPair seqNoPrimaryTermPair, + SeqNoPrimaryTermAndIndex seqNoPrimaryTermAndIndex, ActionListener listener) { - putTransformConfiguration(transformConfig, DocWriteRequest.OpType.INDEX, seqNoPrimaryTermPair, listener); + if (seqNoPrimaryTermAndIndex.getIndex().equals(DataFrameInternalIndex.LATEST_INDEX_NAME)) { + // update the config in the same, current index using optimistic concurrency control + putTransformConfiguration(transformConfig, DocWriteRequest.OpType.INDEX, seqNoPrimaryTermAndIndex, listener); + } else { + // create the config in the current version of the index assuming there is no existing one + // this leaves a dup behind in the old index, see dup handling on the top + putTransformConfiguration(transformConfig, DocWriteRequest.OpType.CREATE, null, listener); + } + } + + /** + * This deletes configuration documents that match the given transformId that are contained in old index versions. + * + * @param transformId The configuration ID potentially referencing configurations stored in the old indices + * @param listener listener to alert on completion + */ + public void deleteOldTransformConfigurations(String transformId, ActionListener listener) { + DeleteByQueryRequest deleteByQueryRequest = new DeleteByQueryRequest(DataFrameInternalIndex.INDEX_NAME_PATTERN) + .setQuery(QueryBuilders.constantScoreQuery(QueryBuilders.boolQuery() + .mustNot(QueryBuilders.termQuery("_index", DataFrameInternalIndex.LATEST_INDEX_NAME)) + .filter(QueryBuilders.termQuery("_id", DataFrameTransformConfig.documentId(transformId))))) + .setIndicesOptions(IndicesOptions.lenientExpandOpen()); + + executeAsyncWithOrigin(client, DATA_FRAME_ORIGIN, DeleteByQueryAction.INSTANCE, deleteByQueryRequest, ActionListener.wrap( + response -> { + if ((response.getBulkFailures().isEmpty() && response.getSearchFailures().isEmpty()) == false) { + Tuple statusAndReason = getStatusAndReason(response); + listener.onFailure( + new ElasticsearchStatusException(statusAndReason.v2().getMessage(), statusAndReason.v1(), statusAndReason.v2())); + return; + } + listener.onResponse(true); + }, + listener::onFailure + )); + } + + /** + * This deletes stored state/stats documents for the given transformId that are contained in old index versions. + * + * @param transformId The transform ID referenced by the documents + * @param listener listener to alert on completion + */ + public void deleteOldTransformStoredDocuments(String transformId, ActionListener listener) { + DeleteByQueryRequest deleteByQueryRequest = new DeleteByQueryRequest(DataFrameInternalIndex.INDEX_NAME_PATTERN) + .setQuery(QueryBuilders.constantScoreQuery(QueryBuilders.boolQuery() + .mustNot(QueryBuilders.termQuery("_index", DataFrameInternalIndex.LATEST_INDEX_NAME)) + .filter(QueryBuilders.termQuery("_id", DataFrameTransformStoredDoc.documentId(transformId))))) + .setIndicesOptions(IndicesOptions.lenientExpandOpen()); + + executeAsyncWithOrigin(client, DATA_FRAME_ORIGIN, DeleteByQueryAction.INSTANCE, deleteByQueryRequest, ActionListener.wrap( + response -> { + if ((response.getBulkFailures().isEmpty() && response.getSearchFailures().isEmpty()) == false) { + Tuple statusAndReason = getStatusAndReason(response); + listener.onFailure( + new ElasticsearchStatusException(statusAndReason.v2().getMessage(), statusAndReason.v1(), statusAndReason.v2())); + return; + } + listener.onResponse(true); + }, + listener::onFailure + )); } private void putTransformConfiguration(DataFrameTransformConfig transformConfig, DocWriteRequest.OpType optType, - SeqNoPrimaryTermPair seqNoPrimaryTermPair, + SeqNoPrimaryTermAndIndex seqNoPrimaryTermAndIndex, ActionListener listener) { try (XContentBuilder builder = XContentFactory.jsonBuilder()) { XContentBuilder source = transformConfig.toXContent(builder, new ToXContent.MapParams(TO_XCONTENT_PARAMS)); - IndexRequest indexRequest = new IndexRequest(DataFrameInternalIndex.INDEX_NAME) + IndexRequest indexRequest = new IndexRequest(DataFrameInternalIndex.LATEST_INDEX_NAME) .opType(optType) .setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE) .id(DataFrameTransformConfig.documentId(transformConfig.getId())) .source(source); - if (seqNoPrimaryTermPair != null) { - indexRequest.setIfSeqNo(seqNoPrimaryTermPair.seqNo).setIfPrimaryTerm(seqNoPrimaryTermPair.primaryTerm); + if (seqNoPrimaryTermAndIndex != null) { + indexRequest.setIfSeqNo(seqNoPrimaryTermAndIndex.seqNo).setIfPrimaryTerm(seqNoPrimaryTermAndIndex.primaryTerm); } executeAsyncWithOrigin(client, DATA_FRAME_ORIGIN, IndexAction.INSTANCE, indexRequest, ActionListener.wrap(r -> { listener.onResponse(true); @@ -170,19 +258,25 @@ private void putTransformConfiguration(DataFrameTransformConfig transformConfig, * @param resultListener listener to call after request has been made */ public void getTransformCheckpoint(String transformId, long checkpoint, ActionListener resultListener) { - GetRequest getRequest = new GetRequest(DataFrameInternalIndex.INDEX_NAME, - DataFrameTransformCheckpoint.documentId(transformId, checkpoint)); - executeAsyncWithOrigin(client, DATA_FRAME_ORIGIN, GetAction.INSTANCE, getRequest, ActionListener.wrap(getResponse -> { - - if (getResponse.isExists() == false) { - // do not fail if checkpoint does not exist but return an empty checkpoint - logger.trace("found no checkpoint for transform [" + transformId + "], returning empty checkpoint"); - resultListener.onResponse(DataFrameTransformCheckpoint.EMPTY); - return; - } - BytesReference source = getResponse.getSourceAsBytesRef(); - parseCheckpointsLenientlyFromSource(source, transformId, resultListener); - }, resultListener::onFailure)); + QueryBuilder queryBuilder = QueryBuilders.termQuery("_id", DataFrameTransformCheckpoint.documentId(transformId, checkpoint)); + SearchRequest searchRequest = client.prepareSearch(DataFrameInternalIndex.INDEX_NAME_PATTERN) + .setQuery(queryBuilder) + // use sort to get the last + .addSort("_index", SortOrder.DESC) + .setSize(1) + .request(); + + executeAsyncWithOrigin(client, DATA_FRAME_ORIGIN, SearchAction.INSTANCE, searchRequest, ActionListener.wrap( + searchResponse -> { + if (searchResponse.getHits().getHits().length == 0) { + // do not fail if checkpoint does not exist but return an empty checkpoint + logger.trace("found no checkpoint for transform [" + transformId + "], returning empty checkpoint"); + resultListener.onResponse(DataFrameTransformCheckpoint.EMPTY); + return; + } + BytesReference source = searchResponse.getHits().getHits()[0].getSourceRef(); + parseCheckpointsLenientlyFromSource(source, transformId, resultListener); + }, resultListener::onFailure)); } /** @@ -193,24 +287,25 @@ public void getTransformCheckpoint(String transformId, long checkpoint, ActionLi * @param resultListener listener to call after inner request has returned */ public void getTransformConfiguration(String transformId, ActionListener resultListener) { - GetRequest getRequest = new GetRequest(DataFrameInternalIndex.INDEX_NAME, DataFrameTransformConfig.documentId(transformId)); - executeAsyncWithOrigin(client, DATA_FRAME_ORIGIN, GetAction.INSTANCE, getRequest, ActionListener.wrap(getResponse -> { + QueryBuilder queryBuilder = QueryBuilders.termQuery("_id", DataFrameTransformConfig.documentId(transformId)); + SearchRequest searchRequest = client.prepareSearch(DataFrameInternalIndex.INDEX_NAME_PATTERN) + .setQuery(queryBuilder) + // use sort to get the last + .addSort("_index", SortOrder.DESC) + .setSize(1) + .request(); - if (getResponse.isExists() == false) { - resultListener.onFailure(new ResourceNotFoundException( - DataFrameMessages.getMessage(DataFrameMessages.REST_DATA_FRAME_UNKNOWN_TRANSFORM, transformId))); - return; - } - BytesReference source = getResponse.getSourceAsBytesRef(); - parseTransformLenientlyFromSource(source, transformId, resultListener); - }, e -> { - if (e.getClass() == IndexNotFoundException.class) { - resultListener.onFailure(new ResourceNotFoundException( - DataFrameMessages.getMessage(DataFrameMessages.REST_DATA_FRAME_UNKNOWN_TRANSFORM, transformId))); - } else { - resultListener.onFailure(e); - } - })); + executeAsyncWithOrigin(client, DATA_FRAME_ORIGIN, SearchAction.INSTANCE, searchRequest, + ActionListener.wrap( + searchResponse -> { + if (searchResponse.getHits().getHits().length == 0) { + resultListener.onFailure(new ResourceNotFoundException( + DataFrameMessages.getMessage(DataFrameMessages.REST_DATA_FRAME_UNKNOWN_TRANSFORM, transformId))); + return; + } + BytesReference source = searchResponse.getHits().getHits()[0].getSourceRef(); + parseTransformLenientlyFromSource(source, transformId, resultListener); + }, resultListener::onFailure)); } /** @@ -222,28 +317,30 @@ public void getTransformConfiguration(String transformId, ActionListener> configAndVersionListener) { - GetRequest getRequest = new GetRequest(DataFrameInternalIndex.INDEX_NAME, DataFrameTransformConfig.documentId(transformId)); - executeAsyncWithOrigin(client, DATA_FRAME_ORIGIN, GetAction.INSTANCE, getRequest, ActionListener.wrap(getResponse -> { + SeqNoPrimaryTermAndIndex>> configAndVersionListener) { + QueryBuilder queryBuilder = QueryBuilders.termQuery("_id", DataFrameTransformConfig.documentId(transformId)); + SearchRequest searchRequest = client.prepareSearch(DataFrameInternalIndex.INDEX_NAME_PATTERN) + .setQuery(queryBuilder) + // use sort to get the last + .addSort("_index", SortOrder.DESC) + .setSize(1) + .seqNoAndPrimaryTerm(true) + .request(); - if (getResponse.isExists() == false) { - configAndVersionListener.onFailure(new ResourceNotFoundException( - DataFrameMessages.getMessage(DataFrameMessages.REST_DATA_FRAME_UNKNOWN_TRANSFORM, transformId))); - return; - } - BytesReference source = getResponse.getSourceAsBytesRef(); - parseTransformLenientlyFromSource(source, transformId, ActionListener.wrap( - config -> configAndVersionListener.onResponse(Tuple.tuple(config, - new SeqNoPrimaryTermPair(getResponse.getSeqNo(), getResponse.getPrimaryTerm()))), - configAndVersionListener::onFailure)); - }, e -> { - if (e.getClass() == IndexNotFoundException.class) { - configAndVersionListener.onFailure(new ResourceNotFoundException( - DataFrameMessages.getMessage(DataFrameMessages.REST_DATA_FRAME_UNKNOWN_TRANSFORM, transformId))); - } else { - configAndVersionListener.onFailure(e); - } - })); + executeAsyncWithOrigin(client, DATA_FRAME_ORIGIN, SearchAction.INSTANCE, searchRequest, ActionListener.wrap( + searchResponse -> { + if (searchResponse.getHits().getHits().length == 0) { + configAndVersionListener.onFailure(new ResourceNotFoundException( + DataFrameMessages.getMessage(DataFrameMessages.REST_DATA_FRAME_UNKNOWN_TRANSFORM, transformId))); + return; + } + SearchHit hit = searchResponse.getHits().getHits()[0]; + BytesReference source = hit.getSourceRef(); + parseTransformLenientlyFromSource(source, transformId, ActionListener.wrap( + config -> configAndVersionListener.onResponse(Tuple.tuple(config, + new SeqNoPrimaryTermAndIndex(hit.getSeqNo(), hit.getPrimaryTerm(), hit.getIndex()))), + configAndVersionListener::onFailure)); + }, configAndVersionListener::onFailure)); } /** @@ -263,7 +360,7 @@ public void expandTransformIds(String transformIdsExpression, String[] idTokens = ExpandedIdsMatcher.tokenizeExpression(transformIdsExpression); QueryBuilder queryBuilder = buildQueryFromTokenizedIds(idTokens, DataFrameTransformConfig.NAME); - SearchRequest request = client.prepareSearch(DataFrameInternalIndex.INDEX_NAME) + SearchRequest request = client.prepareSearch(DataFrameInternalIndex.INDEX_NAME_PATTERN) .addSort(DataFrameField.ID.getPreferredName(), SortOrder.ASC) .setFrom(pageParams.getFrom()) .setTrackTotalHits(true) @@ -275,35 +372,33 @@ public void expandTransformIds(String transformIdsExpression, final ExpandedIdsMatcher requiredMatches = new ExpandedIdsMatcher(idTokens, allowNoMatch); - executeAsyncWithOrigin(client.threadPool().getThreadContext(), DATA_FRAME_ORIGIN, request, - ActionListener.wrap( - searchResponse -> { - long totalHits = searchResponse.getHits().getTotalHits().value; - List ids = new ArrayList<>(searchResponse.getHits().getHits().length); - for (SearchHit hit : searchResponse.getHits().getHits()) { - BytesReference source = hit.getSourceRef(); - try (InputStream stream = source.streamInput(); - XContentParser parser = XContentFactory.xContent(XContentType.JSON).createParser(NamedXContentRegistry.EMPTY, - LoggingDeprecationHandler.INSTANCE, stream)) { - ids.add((String) parser.map().get(DataFrameField.ID.getPreferredName())); - } catch (IOException e) { - foundIdsListener.onFailure(new ElasticsearchParseException("failed to parse search hit for ids", e)); - return; - } - } - requiredMatches.filterMatchedIds(ids); - if (requiredMatches.hasUnmatchedIds()) { - // some required Ids were not found - foundIdsListener.onFailure( - new ResourceNotFoundException( - DataFrameMessages.getMessage(DataFrameMessages.REST_DATA_FRAME_UNKNOWN_TRANSFORM, - requiredMatches.unmatchedIdsString()))); + executeAsyncWithOrigin(client.threadPool().getThreadContext(), DATA_FRAME_ORIGIN, request, ActionListener.wrap( + searchResponse -> { + long totalHits = searchResponse.getHits().getTotalHits().value; + // important: preserve order + Set ids = new LinkedHashSet<>(searchResponse.getHits().getHits().length); + for (SearchHit hit : searchResponse.getHits().getHits()) { + BytesReference source = hit.getSourceRef(); + try (InputStream stream = source.streamInput(); + XContentParser parser = XContentFactory.xContent(XContentType.JSON).createParser(NamedXContentRegistry.EMPTY, + LoggingDeprecationHandler.INSTANCE, stream)) { + ids.add((String) parser.map().get(DataFrameField.ID.getPreferredName())); + } catch (IOException e) { + foundIdsListener.onFailure(new ElasticsearchParseException("failed to parse search hit for ids", e)); return; } - foundIdsListener.onResponse(new Tuple<>(totalHits, ids)); - }, - foundIdsListener::onFailure - ), client::search); + } + requiredMatches.filterMatchedIds(ids); + if (requiredMatches.hasUnmatchedIds()) { + // some required Ids were not found + foundIdsListener.onFailure( + new ResourceNotFoundException( + DataFrameMessages.getMessage(DataFrameMessages.REST_DATA_FRAME_UNKNOWN_TRANSFORM, + requiredMatches.unmatchedIdsString()))); + return; + } + foundIdsListener.onResponse(new Tuple<>(totalHits, new ArrayList<>(ids))); + }, foundIdsListener::onFailure), client::search); } /** @@ -314,15 +409,14 @@ public void expandTransformIds(String transformIdsExpression, */ public void deleteTransform(String transformId, ActionListener listener) { DeleteByQueryRequest request = new DeleteByQueryRequest() - .setAbortOnVersionConflict(false); //since these documents are not updated, a conflict just means it was deleted previously + .setAbortOnVersionConflict(false); //since these documents are not updated, a conflict just means it was deleted previously - request.indices(DataFrameInternalIndex.INDEX_NAME); + request.indices(DataFrameInternalIndex.INDEX_NAME_PATTERN); QueryBuilder query = QueryBuilders.termQuery(DataFrameField.ID.getPreferredName(), transformId); request.setQuery(query); request.setRefresh(true); executeAsyncWithOrigin(client, DATA_FRAME_ORIGIN, DeleteByQueryAction.INSTANCE, request, ActionListener.wrap(deleteResponse -> { - if (deleteResponse.getDeleted() == 0) { listener.onFailure(new ResourceNotFoundException( DataFrameMessages.getMessage(DataFrameMessages.REST_DATA_FRAME_UNKNOWN_TRANSFORM, transformId))); @@ -343,9 +437,10 @@ public void putOrUpdateTransformStoredDoc(DataFrameTransformStoredDoc stats, Act try (XContentBuilder builder = XContentFactory.jsonBuilder()) { XContentBuilder source = stats.toXContent(builder, new ToXContent.MapParams(TO_XCONTENT_PARAMS)); - IndexRequest indexRequest = new IndexRequest(DataFrameInternalIndex.INDEX_NAME) + IndexRequest indexRequest = new IndexRequest(DataFrameInternalIndex.LATEST_INDEX_NAME) .setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE) .id(DataFrameTransformStoredDoc.documentId(stats.getId())) + .opType(DocWriteRequest.OpType.INDEX) .source(source); executeAsyncWithOrigin(client, DATA_FRAME_ORIGIN, IndexAction.INSTANCE, indexRequest, ActionListener.wrap( @@ -363,51 +458,56 @@ public void putOrUpdateTransformStoredDoc(DataFrameTransformStoredDoc stats, Act } public void getTransformStoredDoc(String transformId, ActionListener resultListener) { - GetRequest getRequest = new GetRequest(DataFrameInternalIndex.INDEX_NAME, DataFrameTransformStoredDoc.documentId(transformId)); - executeAsyncWithOrigin(client, DATA_FRAME_ORIGIN, GetAction.INSTANCE, getRequest, ActionListener.wrap(getResponse -> { + QueryBuilder queryBuilder = QueryBuilders.termQuery("_id", DataFrameTransformStoredDoc.documentId(transformId)); + SearchRequest searchRequest = client.prepareSearch(DataFrameInternalIndex.INDEX_NAME_PATTERN) + .setQuery(queryBuilder) + // use sort to get the last + .addSort("_index", SortOrder.DESC) + .setSize(1) + .request(); - if (getResponse.isExists() == false) { - resultListener.onFailure(new ResourceNotFoundException( - DataFrameMessages.getMessage(DataFrameMessages.DATA_FRAME_UNKNOWN_TRANSFORM_STATS, transformId))); - return; - } - BytesReference source = getResponse.getSourceAsBytesRef(); - try (InputStream stream = source.streamInput(); - XContentParser parser = XContentFactory.xContent(XContentType.JSON) - .createParser(xContentRegistry, LoggingDeprecationHandler.INSTANCE, stream)) { - resultListener.onResponse(DataFrameTransformStoredDoc.fromXContent(parser)); - } catch (Exception e) { - logger.error( - DataFrameMessages.getMessage(DataFrameMessages.FAILED_TO_PARSE_TRANSFORM_STATISTICS_CONFIGURATION, transformId), e); - resultListener.onFailure(e); - } - }, e -> { - if (e instanceof ResourceNotFoundException) { - resultListener.onFailure(new ResourceNotFoundException( - DataFrameMessages.getMessage(DataFrameMessages.DATA_FRAME_UNKNOWN_TRANSFORM_STATS, transformId))); - } else { - resultListener.onFailure(e); - } - })); + executeAsyncWithOrigin(client, DATA_FRAME_ORIGIN, SearchAction.INSTANCE, searchRequest, ActionListener.wrap( + searchResponse -> { + if (searchResponse.getHits().getHits().length == 0) { + resultListener.onFailure(new ResourceNotFoundException( + DataFrameMessages.getMessage(DataFrameMessages.DATA_FRAME_UNKNOWN_TRANSFORM_STATS, transformId))); + return; + } + BytesReference source = searchResponse.getHits().getHits()[0].getSourceRef(); + try (InputStream stream = source.streamInput(); + XContentParser parser = XContentFactory.xContent(XContentType.JSON) + .createParser(xContentRegistry, LoggingDeprecationHandler.INSTANCE, stream)) { + resultListener.onResponse(DataFrameTransformStoredDoc.fromXContent(parser)); + } catch (Exception e) { + logger.error(DataFrameMessages.getMessage(DataFrameMessages.FAILED_TO_PARSE_TRANSFORM_STATISTICS_CONFIGURATION, + transformId), e); + resultListener.onFailure(e); + } + }, resultListener::onFailure)); } public void getTransformStoredDoc(Collection transformIds, ActionListener> listener) { - QueryBuilder builder = QueryBuilders.constantScoreQuery(QueryBuilders.boolQuery() - .filter(QueryBuilders.termsQuery(DataFrameField.ID.getPreferredName(), transformIds)) - .filter(QueryBuilders.termQuery(DataFrameField.INDEX_DOC_TYPE.getPreferredName(), DataFrameTransformStoredDoc.NAME))); + .filter(QueryBuilders.termsQuery(DataFrameField.ID.getPreferredName(), transformIds)) + .filter(QueryBuilders.termQuery(DataFrameField.INDEX_DOC_TYPE.getPreferredName(), DataFrameTransformStoredDoc.NAME))); - SearchRequest searchRequest = client.prepareSearch(DataFrameInternalIndex.INDEX_NAME) - .addSort(DataFrameField.ID.getPreferredName(), SortOrder.ASC) - .setQuery(builder) - .setSize(Math.min(transformIds.size(), 10_000)) - .request(); + SearchRequest searchRequest = client.prepareSearch(DataFrameInternalIndex.INDEX_NAME_PATTERN) + .addSort(DataFrameField.ID.getPreferredName(), SortOrder.ASC) + .addSort("_index", SortOrder.DESC) + .setQuery(builder) + // the limit for getting stats and transforms is 1000, as long as we do not have 10 indices this works + .setSize(Math.min(transformIds.size(), 10_000)) + .request(); executeAsyncWithOrigin(client.threadPool().getThreadContext(), DATA_FRAME_ORIGIN, searchRequest, - ActionListener.wrap( - searchResponse -> { - List stats = new ArrayList<>(); - for (SearchHit hit : searchResponse.getHits().getHits()) { + ActionListener.wrap( + searchResponse -> { + List stats = new ArrayList<>(); + String previousId = null; + for (SearchHit hit : searchResponse.getHits().getHits()) { + // skip old versions + if (hit.getId().equals(previousId) == false) { + previousId = hit.getId(); BytesReference source = hit.getSourceRef(); try (InputStream stream = source.streamInput(); XContentParser parser = XContentFactory.xContent(XContentType.JSON) @@ -419,17 +519,11 @@ public void getTransformStoredDoc(Collection transformIds, ActionListene return; } } - - listener.onResponse(stats); - }, - e -> { - if (e.getClass() == IndexNotFoundException.class) { - listener.onResponse(Collections.emptyList()); - } else { - listener.onFailure(e); - } } - ), client::search); + + listener.onResponse(stats); + }, listener::onFailure + ), client::search); } private void parseTransformLenientlyFromSource(BytesReference source, String transformId, @@ -480,13 +574,37 @@ private QueryBuilder buildQueryFromTokenizedIds(String[] idTokens, String resour return QueryBuilders.constantScoreQuery(queryBuilder); } - public static class SeqNoPrimaryTermPair { + private static Tuple getStatusAndReason(final BulkByScrollResponse response) { + RestStatus status = RestStatus.OK; + Throwable reason = new Exception("Unknown error"); + //Getting the max RestStatus is sort of arbitrary, would the user care about 5xx over 4xx? + //Unsure of a better way to return an appropriate and possibly actionable cause to the user. + for (BulkItemResponse.Failure failure : response.getBulkFailures()) { + if (failure.getStatus().getStatus() > status.getStatus()) { + status = failure.getStatus(); + reason = failure.getCause(); + } + } + + for (ScrollableHitSource.SearchFailure failure : response.getSearchFailures()) { + RestStatus failureStatus = org.elasticsearch.ExceptionsHelper.status(failure.getReason()); + if (failureStatus.getStatus() > status.getStatus()) { + status = failureStatus; + reason = failure.getReason(); + } + } + return new Tuple<>(status, reason); + } + + public static class SeqNoPrimaryTermAndIndex { private final long seqNo; private final long primaryTerm; + private final String index; - public SeqNoPrimaryTermPair(long seqNo, long primaryTerm) { + public SeqNoPrimaryTermAndIndex(long seqNo, long primaryTerm, String index) { this.seqNo = seqNo; this.primaryTerm = primaryTerm; + this.index = index; } public long getSeqNo() { @@ -496,5 +614,9 @@ public long getSeqNo() { public long getPrimaryTerm() { return primaryTerm; } + + public String getIndex() { + return index; + } } } diff --git a/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/persistence/DataframeIndex.java b/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/persistence/DataframeIndex.java index 005be73e8cee2..170f8e9559914 100644 --- a/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/persistence/DataframeIndex.java +++ b/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/persistence/DataframeIndex.java @@ -100,7 +100,7 @@ private static XContentBuilder addMetaData(XContentBuilder builder, String id, C .field(DataFrameField.CREATED_BY, DataFrameField.DATA_FRAME_SIGNATURE) .startObject(DataFrameField.META_FIELDNAME) .field(DataFrameField.CREATION_DATE_MILLIS, clock.millis()) - .startObject(DataFrameField.VERSION) + .startObject(DataFrameField.VERSION.getPreferredName()) .field(DataFrameField.CREATED, Version.CURRENT) .endObject() .field(DataFrameField.TRANSFORM, id) diff --git a/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/transforms/DataFrameTransformPersistentTasksExecutor.java b/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/transforms/DataFrameTransformPersistentTasksExecutor.java index dc37e937ea135..593c3c6e8a560 100644 --- a/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/transforms/DataFrameTransformPersistentTasksExecutor.java +++ b/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/transforms/DataFrameTransformPersistentTasksExecutor.java @@ -104,7 +104,7 @@ static List verifyIndicesPrimaryShardsAreActive(ClusterState clusterStat IndexNameExpressionResolver resolver = new IndexNameExpressionResolver(); String[] indices = resolver.concreteIndexNames(clusterState, IndicesOptions.lenientExpandOpen(), - DataFrameInternalIndex.INDEX_TEMPLATE_PATTERN + "*"); + DataFrameInternalIndex.INDEX_NAME_PATTERN); List unavailableIndices = new ArrayList<>(indices.length); for (String index : indices) { IndexRoutingTable routingTable = clusterState.getRoutingTable().index(index); diff --git a/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/transforms/DataFrameTransformTask.java b/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/transforms/DataFrameTransformTask.java index 641e3a0d1d777..313efff756917 100644 --- a/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/transforms/DataFrameTransformTask.java +++ b/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/transforms/DataFrameTransformTask.java @@ -22,6 +22,7 @@ import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.Client; import org.elasticsearch.common.Strings; +import org.elasticsearch.common.logging.LoggerMessageFormat; import org.elasticsearch.common.settings.Setting; import org.elasticsearch.common.unit.TimeValue; import org.elasticsearch.index.IndexNotFoundException; @@ -58,6 +59,7 @@ import java.time.Instant; import java.util.Arrays; import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicReference; @@ -632,6 +634,7 @@ static class ClientDataFrameIndexer extends DataFrameIndexer { private volatile boolean auditBulkFailures = true; // Keeps track of the last exception that was written to our audit, keeps us from spamming the audit index private volatile String lastAuditedExceptionMessage = null; + private final AtomicBoolean oldStatsCleanedUp = new AtomicBoolean(false); ClientDataFrameIndexer(String transformId, DataFrameTransformsConfigManager transformsConfigManager, @@ -896,7 +899,23 @@ protected void doSaveState(IndexerState indexerState, DataFrameIndexerPosition p if (state.getTaskState().equals(DataFrameTransformTaskState.STOPPED)) { transformTask.shutdown(); } - next.run(); + // Only do this clean up once, if it succeeded, no reason to do the query again. + if (oldStatsCleanedUp.compareAndExchange(false, true) == false) { + transformsConfigManager.deleteOldTransformStoredDocuments(transformId, ActionListener.wrap( + nil -> { + logger.trace("[{}] deleted old transform stats and state document", transformId); + next.run(); + }, + e -> { + String msg = LoggerMessageFormat.format("[{}] failed deleting old transform configurations.", + transformId); + logger.warn(msg, e); + // If we have failed, we should attempt the clean up again later + oldStatsCleanedUp.set(false); + next.run(); + } + )); + } }, statsExc -> { logger.error("Updating stats of transform [" + transformConfig.getId() + "] failed", statsExc); diff --git a/x-pack/plugin/data-frame/src/test/java/org/elasticsearch/xpack/dataframe/DataFrameSingleNodeTestCase.java b/x-pack/plugin/data-frame/src/test/java/org/elasticsearch/xpack/dataframe/DataFrameSingleNodeTestCase.java index 2c2ad5ba0b336..34c16ebc9e73a 100644 --- a/x-pack/plugin/data-frame/src/test/java/org/elasticsearch/xpack/dataframe/DataFrameSingleNodeTestCase.java +++ b/x-pack/plugin/data-frame/src/test/java/org/elasticsearch/xpack/dataframe/DataFrameSingleNodeTestCase.java @@ -29,8 +29,8 @@ public abstract class DataFrameSingleNodeTestCase extends ESSingleNodeTestCase { public void waitForTemplates() throws Exception { assertBusy(() -> { ClusterState state = client().admin().cluster().prepareState().get().getState(); - assertTrue("Timed out waiting for the data frame templates to be installed", - TemplateUtils.checkTemplateExistsAndVersionIsGTECurrentVersion(DataFrameInternalIndex.INDEX_TEMPLATE_NAME, state)); + assertTrue("Timed out waiting for the data frame templates to be installed", TemplateUtils + .checkTemplateExistsAndVersionIsGTECurrentVersion(DataFrameInternalIndex.LATEST_INDEX_VERSIONED_NAME, state)); }); } diff --git a/x-pack/plugin/data-frame/src/test/java/org/elasticsearch/xpack/dataframe/persistence/DataFrameTransformsConfigManagerTests.java b/x-pack/plugin/data-frame/src/test/java/org/elasticsearch/xpack/dataframe/persistence/DataFrameTransformsConfigManagerTests.java index 45c792f8d1166..e403d102adff0 100644 --- a/x-pack/plugin/data-frame/src/test/java/org/elasticsearch/xpack/dataframe/persistence/DataFrameTransformsConfigManagerTests.java +++ b/x-pack/plugin/data-frame/src/test/java/org/elasticsearch/xpack/dataframe/persistence/DataFrameTransformsConfigManagerTests.java @@ -8,7 +8,16 @@ import org.elasticsearch.ResourceAlreadyExistsException; import org.elasticsearch.ResourceNotFoundException; +import org.elasticsearch.action.admin.indices.create.CreateIndexRequest; +import org.elasticsearch.action.admin.indices.refresh.RefreshRequest; +import org.elasticsearch.action.get.GetRequest; +import org.elasticsearch.action.index.IndexRequest; +import org.elasticsearch.action.support.WriteRequest; import org.elasticsearch.common.collect.Tuple; +import org.elasticsearch.common.xcontent.ToXContent; +import org.elasticsearch.common.xcontent.XContentBuilder; +import org.elasticsearch.common.xcontent.XContentFactory; +import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.xpack.core.action.util.PageParams; import org.elasticsearch.xpack.core.dataframe.DataFrameMessages; import org.elasticsearch.xpack.core.dataframe.transforms.DataFrameTransformCheckpoint; @@ -27,6 +36,9 @@ import java.util.List; import java.util.stream.Collectors; +import static org.elasticsearch.xpack.dataframe.persistence.DataFrameInternalIndex.mappings; +import static org.elasticsearch.xpack.dataframe.persistence.DataFrameTransformsConfigManager.TO_XCONTENT_PARAMS; +import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.instanceOf; @@ -278,4 +290,71 @@ public void testGetStoredDocMultiple() throws InterruptedException { expectedDocs.sort(Comparator.comparing(DataFrameTransformStoredDoc::getId)); assertAsync(listener -> transformsConfigManager.getTransformStoredDoc(ids, listener), expectedDocs, null, null); } + + public void testDeleteOldTransformConfigurations() throws Exception { + String oldIndex = DataFrameInternalIndex.INDEX_PATTERN + "1"; + String transformId = "transform_test_delete_old_configurations"; + String docId = DataFrameTransformConfig.documentId(transformId); + DataFrameTransformConfig transformConfig = DataFrameTransformConfigTests + .randomDataFrameTransformConfig("transform_test_delete_old_configurations"); + client().admin().indices().create(new CreateIndexRequest(oldIndex) + .mapping(MapperService.SINGLE_MAPPING_NAME, mappings())).actionGet(); + + try(XContentBuilder builder = XContentFactory.jsonBuilder()) { + XContentBuilder source = transformConfig.toXContent(builder, new ToXContent.MapParams(TO_XCONTENT_PARAMS)); + IndexRequest request = new IndexRequest(oldIndex) + .source(source) + .id(docId) + .setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE); + client().index(request).actionGet(); + } + + assertAsync(listener -> transformsConfigManager.putTransformConfiguration(transformConfig, listener), true, null, null); + + assertThat(client().get(new GetRequest(oldIndex).id(docId)).actionGet().isExists(), is(true)); + assertThat(client().get(new GetRequest(DataFrameInternalIndex.LATEST_INDEX_NAME).id(docId)).actionGet().isExists(), is(true)); + + assertAsync(listener -> transformsConfigManager.deleteOldTransformConfigurations(transformId, listener), true, null, null); + + client().admin().indices().refresh(new RefreshRequest(DataFrameInternalIndex.INDEX_NAME_PATTERN)).actionGet(); + assertThat(client().get(new GetRequest(oldIndex).id(docId)).actionGet().isExists(), is(false)); + assertThat(client().get(new GetRequest(DataFrameInternalIndex.LATEST_INDEX_NAME).id(docId)).actionGet().isExists(), is(true)); + } + + public void testDeleteOldTransformStoredDocuments() throws Exception { + String oldIndex = DataFrameInternalIndex.INDEX_PATTERN + "1"; + String transformId = "transform_test_delete_old_stored_documents"; + String docId = DataFrameTransformStoredDoc.documentId(transformId); + DataFrameTransformStoredDoc dataFrameTransformStoredDoc = DataFrameTransformStoredDocTests + .randomDataFrameTransformStoredDoc(transformId); + client().admin().indices().create(new CreateIndexRequest(oldIndex) + .mapping(MapperService.SINGLE_MAPPING_NAME, mappings())).actionGet(); + + try(XContentBuilder builder = XContentFactory.jsonBuilder()) { + XContentBuilder source = dataFrameTransformStoredDoc.toXContent(builder, new ToXContent.MapParams(TO_XCONTENT_PARAMS)); + IndexRequest request = new IndexRequest(oldIndex) + .source(source) + .id(docId); + client().index(request).actionGet(); + } + + assertAsync(listener -> transformsConfigManager.putOrUpdateTransformStoredDoc(dataFrameTransformStoredDoc, listener), + true, + null, + null); + + client().admin().indices().refresh(new RefreshRequest(DataFrameInternalIndex.INDEX_NAME_PATTERN)).actionGet(); + + assertThat(client().get(new GetRequest(oldIndex).id(docId)).actionGet().isExists(), is(true)); + assertThat(client().get(new GetRequest(DataFrameInternalIndex.LATEST_INDEX_NAME).id(docId)).actionGet().isExists(), is(true)); + + assertAsync(listener -> transformsConfigManager.deleteOldTransformStoredDocuments(transformId, listener), + true, + null, + null); + + client().admin().indices().refresh(new RefreshRequest(DataFrameInternalIndex.INDEX_NAME_PATTERN)).actionGet(); + assertThat(client().get(new GetRequest(oldIndex).id(docId)).actionGet().isExists(), is(false)); + assertThat(client().get(new GetRequest(DataFrameInternalIndex.LATEST_INDEX_NAME).id(docId)).actionGet().isExists(), is(true)); + } } diff --git a/x-pack/plugin/data-frame/src/test/java/org/elasticsearch/xpack/dataframe/transforms/DataFrameTransformPersistentTasksExecutorTests.java b/x-pack/plugin/data-frame/src/test/java/org/elasticsearch/xpack/dataframe/transforms/DataFrameTransformPersistentTasksExecutorTests.java index 4abcdf5646fa4..5195873576f22 100644 --- a/x-pack/plugin/data-frame/src/test/java/org/elasticsearch/xpack/dataframe/transforms/DataFrameTransformPersistentTasksExecutorTests.java +++ b/x-pack/plugin/data-frame/src/test/java/org/elasticsearch/xpack/dataframe/transforms/DataFrameTransformPersistentTasksExecutorTests.java @@ -134,7 +134,7 @@ public void testVerifyIndicesPrimaryShardsAreActive() { metaData = new MetaData.Builder(cs.metaData()); routingTable = new RoutingTable.Builder(cs.routingTable()); - String indexToRemove = DataFrameInternalIndex.INDEX_NAME; + String indexToRemove = DataFrameInternalIndex.LATEST_INDEX_NAME; if (randomBoolean()) { routingTable.remove(indexToRemove); } else { @@ -157,7 +157,7 @@ public void testVerifyIndicesPrimaryShardsAreActive() { private void addIndices(MetaData.Builder metaData, RoutingTable.Builder routingTable) { List indices = new ArrayList<>(); indices.add(DataFrameInternalIndex.AUDIT_INDEX); - indices.add(DataFrameInternalIndex.INDEX_NAME); + indices.add(DataFrameInternalIndex.LATEST_INDEX_NAME); for (String indexName : indices) { IndexMetaData.Builder indexMetaData = IndexMetaData.builder(indexName); indexMetaData.settings(Settings.builder() From 912d740802e2c15a4a91110356be288fced4fe75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Istv=C3=A1n=20Zolt=C3=A1n=20Szab=C3=B3?= Date: Thu, 22 Aug 2019 15:04:20 +0200 Subject: [PATCH 12/59] [DOCS] Reformats search API (#45786) Co-Authored-By: James Rodewig --- docs/reference/search/search.asciidoc | 223 +++++++++++++++++++++++++- 1 file changed, 215 insertions(+), 8 deletions(-) diff --git a/docs/reference/search/search.asciidoc b/docs/reference/search/search.asciidoc index 3fbeeaa29e4a9..66286cb47a049 100644 --- a/docs/reference/search/search.asciidoc +++ b/docs/reference/search/search.asciidoc @@ -1,13 +1,225 @@ [[search-search]] === Search -The search API allows you to execute a search query and get back search hits -that match the query. The query can either be provided using a simple +Returns search hits that match the query defined in the request. + +[source,js] +-------------------------------------------------- +GET /twitter/_search?q=user:kimchy +-------------------------------------------------- +// CONSOLE +// TEST[setup:twitter] + + +[[search-search-api-request]] +==== {api-request-title} + +`GET /{index}/_search` + + +`GET /all/_search` + + +[[search-search-api-desc]] +==== {api-description-title} + +Allows you to execute a search query and get back search hits that match the +query. The query can either be provided using a simple <>, or using a <>. +[[search-partial-responses]] +===== Partial responses + +To ensure fast responses, the search API will respond with partial results if +one or more shards fail. See <> for more +information. + +[[search-search-api-path-params]] +==== {api-path-parms-title} + +include::{docdir}/rest-api/common-parms.asciidoc[tag=index] + + +[[search-search-api-query-params]] +==== {api-query-parms-title} + +include::{docdir}/rest-api/common-parms.asciidoc[tag=allow-no-indices] + +`allow_partial_search_results`:: + (Optional, boolean) Indicates if an error should be returned if there is a + partial search failure or timeout. Defaults to `true`. + +`analyzer`:: + (Optional, string) Defines the analyzer to use for the query string. + +`analyze_wildcard`:: + (Optional, boolean) If `true`, wildcard and prefix queries will also be + analyzed. Defaults to `false`. + +`batched_reduce_size`:: + (Optional, integer) The number of shard results that should be reduced at once + on the coordinating node. This value should be used as a protection mechanism + to reduce the memory overhead per search request if the potential number of + shards in the request can be large. Defaults to `512`. + +`ccs_minimize_roundtrips`:: + (Optional, boolean) Indicates whether network round-trips should be minimized + as part of cross-cluster search requests execution. Defaults to `true`. + +`default_operator`:: + (Optional, string) The default operator for query string query (AND or OR). + Defaults to `OR`. + +`df`:: + (Optional, string) Defines the field to use as default where no field prefix + is given in the query string. + +`docvalue_fields`:: + (Optional, string) A comma-separated list of fields to return as the docvalue + representation of a field for each hit. + +include::{docdir}/rest-api/common-parms.asciidoc[tag=expand-wildcards] ++ +Defaults to `open`. + +`explain`:: + (Optional, boolean) If `true`, returns detailed information about score + computation as part of a hit. Defaults to `false`. + +`from`:: + (Optional, integer) Defines the starting offset. Defaults to `0`. + +`ignore_throttled`:: + (Optional, boolean) If `true`, concrete, expanded or aliased indices will be + ignored when throttled. Defaults to `false`. + +include::{docdir}/rest-api/common-parms.asciidoc[tag=index-ignore-unavailable] + +`lenient`:: + (Optional, boolean) If `true`, format-based query failures (such as + providing text to a numeric field) will be ignored. Defaults to `false`. + +`max_concurrent_shard_requests`:: + (Optional, integer) Defines the number of concurrent shard requests per node + this search executes concurrently. This value should be used to limit the + impact of the search on the cluster in order to limit the number of concurrent + shard requests. Defaults to `5`. + +`pre_filter_shard_size`:: + (Optional, integer) Defines a threshold that enforces a pre-filter roundtrip + to prefilter search shards based on query rewriting if the number of shards + the search request expands to exceeds the threshold. This filter roundtrip can + limit the number of shards significantly if for instance a shard can not match + any documents based on it's rewrite method ie. if date filters are mandatory + to match but the shard bounds and the query are disjoint. Defaults to `128`. + +`preference`:: + (Optional, string) Specifies the node or shard the operation should be + performed on. Random by default. + +`q`:: + (Optional, string) Query in the Lucene query string syntax. + +`request_cache`:: + (Optional, boolean) If `true`, request cache will be used for this request. + Defaults to index level settings. + +`rest_total_hits_as_int`:: + (Optional, boolean) Indicates whether hits.total should be rendered as an + integer or an object in the rest search response. Defaults to `false`. + +`routing`:: + (Optional, <>) Specifies how long a consistent view of + the index should be maintained for scrolled search. + +`search_type`:: + (Optional, string) Defines the type of the search operation. Available + options: + * `query_then_fetch` + * `dfs_query_then_fetch` + +`seq_no_primary_term`:: + (Optional, boolean) If `true`, returns sequence number and primary term of the + last modification of each hit. + +`size`:: + (Optional, integer) Defines the number of hits to return. Defaults to `10`. + +`sort`:: + (Optional, string) A comma-separated list of : pairs. + +`_source`:: + (Optional, string) True or false to return the `_source` field or not, or a + list of fields to return. + +`_source_excludes`:: + (Optional, string) A list of fields to exclude from the returned `_source` + field. + +`_source_includes`:: + (Optional, string) A list of fields to extract and return from the `_source` + field. + +`stats`:: + (Optional, string) Specific `tag` of the request for logging and statistical + purposes. + +`stored_fields`:: + (Optional, string) A comma-separated list of stored fields to return as part + of a hit. + +`suggest_field`:: + (Optional, string) Specifies which field to use for suggestions. + +`suggest_mode`:: + (Optional, string) Specifies suggest mode. Defaults to `missing`. Available + options: + * `always` + * `missing` + * `popular` + +`suggest_size`:: + (Optional, integer) Defines how many suggestions to return in response. + +`suggest_text`:: + (Optional, string) The source text for which the suggestions should be + returned. + +`terminate_after`:: + (Optional, integer) The maximum number of documents to collect for each shard, + upon reaching which the query execution will terminate early. + +include::{docdir}/rest-api/common-parms.asciidoc[tag=timeout] + +`track_scores`:: + (Optional, boolean) If `true`, then calculates and returns scores even if they + are not used for sorting. + +`track_total_hits`:: + (Optional, boolean) Indicates if the number of documents that match the query + should be tracked. + +`typed_keys`:: + (Optional, boolean) Specifies whether aggregation and suggester names should + be prefixed by their respective types in the response. + +`version`:: + (Optional, boolean) If `true`, returns document version as part of a hit. + + +[[search-search-api-request-body]] +==== {api-request-body-title} + +`query`:: + (Optional, <>) Defines the search definition using the + <>. + + +[[search-search-api-example]] +==== {api-examples-title} + ["float",id="search-multi-index"] -==== Multi-Index +===== Multi-Index All search APIs can be applied across multiple indices with support for the <>. For @@ -38,8 +250,3 @@ GET /_all/_search?q=tag:wow --------------------------------------------------- // CONSOLE // TEST[setup:twitter] - -[float] -[[search-partial-responses]] -==== Partial responses -To ensure fast responses, the search API will respond with partial results if one or more shards fail. See <> for more information. \ No newline at end of file From 3c04b913402b56ffbb47710bf244684debaf051b Mon Sep 17 00:00:00 2001 From: Jack Conradson Date: Thu, 22 Aug 2019 06:46:23 -0700 Subject: [PATCH 13/59] Move regex error to node (#45813) --- .../java/org/elasticsearch/painless/antlr/Walker.java | 5 ----- .../java/org/elasticsearch/painless/node/ERegex.java | 10 +++++++++- .../elasticsearch/painless/WhenThingsGoWrongTests.java | 2 +- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/antlr/Walker.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/antlr/Walker.java index 1567856044342..9d550ce5f5dd9 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/antlr/Walker.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/antlr/Walker.java @@ -817,11 +817,6 @@ public ANode visitString(StringContext ctx) { @Override public ANode visitRegex(RegexContext ctx) { - if (false == settings.areRegexesEnabled()) { - throw location(ctx).createError(new IllegalStateException("Regexes are disabled. Set [script.painless.regex.enabled] to [true] " - + "in elasticsearch.yaml to allow them. Be careful though, regexes break out of Painless's protection against deep " - + "recursion and long loops.")); - } String text = ctx.REGEX().getText(); int lastSlash = text.lastIndexOf('/'); String pattern = text.substring(1, lastSlash); diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ERegex.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ERegex.java index 356c1958c6e25..106549c1c1373 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ERegex.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ERegex.java @@ -40,6 +40,8 @@ public final class ERegex extends AExpression { private final int flags; private Constant constant; + private CompilerSettings settings; + public ERegex(Location location, String pattern, String flagsString) { super(location); @@ -56,7 +58,7 @@ public ERegex(Location location, String pattern, String flagsString) { @Override void storeSettings(CompilerSettings settings) { - // do nothing + this.settings = settings; } @Override @@ -66,6 +68,12 @@ void extractVariables(Set variables) { @Override void analyze(Locals locals) { + if (false == settings.areRegexesEnabled()) { + throw createError(new IllegalStateException("Regexes are disabled. Set [script.painless.regex.enabled] to [true] " + + "in elasticsearch.yaml to allow them. Be careful though, regexes break out of Painless's protection against deep " + + "recursion and long loops.")); + } + if (!read) { throw createError(new IllegalArgumentException("Regex constant may only be read [" + pattern + "].")); } diff --git a/modules/lang-painless/src/test/java/org/elasticsearch/painless/WhenThingsGoWrongTests.java b/modules/lang-painless/src/test/java/org/elasticsearch/painless/WhenThingsGoWrongTests.java index d1db6606c86aa..1dac5ae25735f 100644 --- a/modules/lang-painless/src/test/java/org/elasticsearch/painless/WhenThingsGoWrongTests.java +++ b/modules/lang-painless/src/test/java/org/elasticsearch/painless/WhenThingsGoWrongTests.java @@ -262,7 +262,7 @@ public void testStackOverflowError() { } public void testRegexDisabledByDefault() { - IllegalStateException e = expectThrows(IllegalStateException.class, () -> exec("return 'foo' ==~ /foo/")); + IllegalStateException e = expectScriptThrows(IllegalStateException.class, () -> exec("return 'foo' ==~ /foo/")); assertEquals("Regexes are disabled. Set [script.painless.regex.enabled] to [true] in elasticsearch.yaml to allow them. " + "Be careful though, regexes break out of Painless's protection against deep recursion and long loops.", e.getMessage()); } From c73a2ef614c8a1c1813abb9ea4fa50482a8cca9b Mon Sep 17 00:00:00 2001 From: Andrey Ershov Date: Thu, 22 Aug 2019 15:49:02 +0200 Subject: [PATCH 14/59] Remove deprecated es.http.cname_in_publish_address setting (#45831) Follow-up of #45616. Starting with 8.0.0 es.http.cname_in_publish_address setting support is completely removed. --- .../java/org/elasticsearch/http/HttpInfo.java | 24 +------------------ .../org/elasticsearch/http/HttpInfoTests.java | 22 +++-------------- 2 files changed, 4 insertions(+), 42 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/http/HttpInfo.java b/server/src/main/java/org/elasticsearch/http/HttpInfo.java index f3457495294a8..43dab6955e11f 100644 --- a/server/src/main/java/org/elasticsearch/http/HttpInfo.java +++ b/server/src/main/java/org/elasticsearch/http/HttpInfo.java @@ -19,11 +19,9 @@ package org.elasticsearch.http; -import org.apache.logging.log4j.LogManager; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.io.stream.Writeable; -import org.elasticsearch.common.logging.DeprecationLogger; import org.elasticsearch.common.network.InetAddresses; import org.elasticsearch.common.transport.BoundTransportAddress; import org.elasticsearch.common.transport.TransportAddress; @@ -33,32 +31,18 @@ import java.io.IOException; -import static org.elasticsearch.common.Booleans.parseBoolean; - public class HttpInfo implements Writeable, ToXContentFragment { - private static final DeprecationLogger deprecationLogger = new DeprecationLogger(LogManager.getLogger(HttpInfo.class)); - - /** Whether to add hostname to publish host field when serializing. */ - private static final boolean CNAME_IN_PUBLISH_HOST = - parseBoolean(System.getProperty("es.http.cname_in_publish_address"), true); - private final BoundTransportAddress address; private final long maxContentLength; - private final boolean cnameInPublishHostProperty; public HttpInfo(StreamInput in) throws IOException { - this(new BoundTransportAddress(in), in.readLong(), CNAME_IN_PUBLISH_HOST); + this(new BoundTransportAddress(in), in.readLong()); } public HttpInfo(BoundTransportAddress address, long maxContentLength) { - this(address, maxContentLength, CNAME_IN_PUBLISH_HOST); - } - - HttpInfo(BoundTransportAddress address, long maxContentLength, boolean cnameInPublishHostProperty) { this.address = address; this.maxContentLength = maxContentLength; - this.cnameInPublishHostProperty = cnameInPublishHostProperty; } @Override @@ -84,12 +68,6 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws String hostString = publishAddress.address().getHostString(); if (InetAddresses.isInetAddress(hostString) == false) { publishAddressString = hostString + '/' + publishAddress.toString(); - if (cnameInPublishHostProperty) { - deprecationLogger.deprecated( - "es.http.cname_in_publish_address system property is deprecated and no longer affects http.publish_address " + - "formatting. Remove this property to get rid of this deprecation warning." - ); - } } builder.field(Fields.PUBLISH_ADDRESS, publishAddressString); builder.humanReadableField(Fields.MAX_CONTENT_LENGTH_IN_BYTES, Fields.MAX_CONTENT_LENGTH, maxContentLength()); diff --git a/server/src/test/java/org/elasticsearch/http/HttpInfoTests.java b/server/src/test/java/org/elasticsearch/http/HttpInfoTests.java index cd0cf7e189429..115365a1fa36a 100644 --- a/server/src/test/java/org/elasticsearch/http/HttpInfoTests.java +++ b/server/src/test/java/org/elasticsearch/http/HttpInfoTests.java @@ -40,27 +40,11 @@ public void testCorrectlyDisplayPublishedCname() throws Exception { new BoundTransportAddress( new TransportAddress[]{new TransportAddress(localhost, port)}, new TransportAddress(localhost, port) - ), 0L, false + ), 0L ), "localhost/" + NetworkAddress.format(localhost) + ':' + port ); } - public void testDeprecatedWarningIfPropertySpecified() throws Exception { - InetAddress localhost = InetAddress.getByName("localhost"); - int port = 9200; - assertPublishAddress( - new HttpInfo( - new BoundTransportAddress( - new TransportAddress[]{new TransportAddress(localhost, port)}, - new TransportAddress(localhost, port) - ), 0L, true - ), "localhost/" + NetworkAddress.format(localhost) + ':' + port - ); - assertWarnings( - "es.http.cname_in_publish_address system property is deprecated and no longer affects http.publish_address " + - "formatting. Remove this property to get rid of this deprecation warning."); - } - public void testCorrectDisplayPublishedIp() throws Exception { InetAddress localhost = InetAddress.getByName(NetworkAddress.format(InetAddress.getByName("localhost"))); int port = 9200; @@ -69,7 +53,7 @@ public void testCorrectDisplayPublishedIp() throws Exception { new BoundTransportAddress( new TransportAddress[]{new TransportAddress(localhost, port)}, new TransportAddress(localhost, port) - ), 0L, false + ), 0L ), NetworkAddress.format(localhost) + ':' + port ); } @@ -80,7 +64,7 @@ public void testCorrectDisplayPublishedIpv6() throws Exception { new TransportAddress(InetAddress.getByName(NetworkAddress.format(InetAddress.getByName("0:0:0:0:0:0:0:1"))), port); assertPublishAddress( new HttpInfo( - new BoundTransportAddress(new TransportAddress[]{localhost}, localhost), 0L, false + new BoundTransportAddress(new TransportAddress[]{localhost}, localhost), 0L ), localhost.toString() ); } From 8faea7b83d963e90df057b607162320d36a88fe6 Mon Sep 17 00:00:00 2001 From: Armin Braun Date: Thu, 22 Aug 2019 15:49:17 +0200 Subject: [PATCH 15/59] Acknowledge Indices Were Wiped Successfully in REST Tests (#45832) In internal test clusters tests we check that wiping all indices was acknowledged but in REST tests we didn't. This aligns the behavior in both kinds of tests. Relates #45605 which might be caused by unacked deletes that were just slow. --- .../test/rest/ESRestTestCase.java | 43 +++++++++++-------- .../integration/DataFrameRestTestCase.java | 13 +----- .../sql/qa/security/SqlSecurityTestCase.java | 20 +++------ 3 files changed, 33 insertions(+), 43 deletions(-) diff --git a/test/framework/src/main/java/org/elasticsearch/test/rest/ESRestTestCase.java b/test/framework/src/main/java/org/elasticsearch/test/rest/ESRestTestCase.java index feb022045ac37..0f7ad85b46567 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/rest/ESRestTestCase.java +++ b/test/framework/src/main/java/org/elasticsearch/test/rest/ESRestTestCase.java @@ -190,7 +190,7 @@ protected String getTestRestCluster() { } return cluster; } - + /** * Helper class to check warnings in REST responses with sensitivity to versions * used in the target cluster. @@ -199,14 +199,14 @@ public static class VersionSensitiveWarningsHandler implements WarningsHandler { Set requiredSameVersionClusterWarnings = new HashSet<>(); Set allowedWarnings = new HashSet<>(); final Set testNodeVersions; - + public VersionSensitiveWarningsHandler(Set nodeVersions) { this.testNodeVersions = nodeVersions; } /** * Adds to the set of warnings that are all required in responses if the cluster - * is formed from nodes all running the exact same version as the client. + * is formed from nodes all running the exact same version as the client. * @param requiredWarnings a set of required warnings */ public void current(String... requiredWarnings) { @@ -214,11 +214,11 @@ public void current(String... requiredWarnings) { } /** - * Adds to the set of warnings that are permissible (but not required) when running + * Adds to the set of warnings that are permissible (but not required) when running * in mixed-version clusters or those that differ in version from the test client. * @param allowedWarnings optional warnings that will be ignored if received */ - public void compatible(String... allowedWarnings) { + public void compatible(String... allowedWarnings) { this.allowedWarnings.addAll(Arrays.asList(allowedWarnings)); } @@ -239,15 +239,15 @@ public boolean warningsShouldFailRequest(List warnings) { return false; } } - + private boolean isExclusivelyTargetingCurrentVersionCluster() { assertFalse("Node versions running in the cluster are missing", testNodeVersions.isEmpty()); - return testNodeVersions.size() == 1 && + return testNodeVersions.size() == 1 && testNodeVersions.iterator().next().equals(Version.CURRENT); - } - + } + } - + public static RequestOptions expectVersionSpecificWarnings(Consumer expectationsSetter) { Builder builder = RequestOptions.DEFAULT.toBuilder(); VersionSensitiveWarningsHandler warningsHandler = new VersionSensitiveWarningsHandler(nodeVersions); @@ -508,14 +508,7 @@ private void wipeCluster() throws Exception { if (preserveIndicesUponCompletion() == false) { // wipe indices - try { - adminClient().performRequest(new Request("DELETE", "*")); - } catch (ResponseException e) { - // 404 here just means we had no indexes - if (e.getResponse().getStatusLine().getStatusCode() != 404) { - throw e; - } - } + wipeAllIndices(); } // wipe index templates @@ -558,6 +551,20 @@ private void wipeCluster() throws Exception { assertThat("Found in progress snapshots [" + inProgressSnapshots.get() + "].", inProgressSnapshots.get(), anEmptyMap()); } + protected static void wipeAllIndices() throws IOException { + try { + final Response response = adminClient().performRequest(new Request("DELETE", "*")); + try (InputStream is = response.getEntity().getContent()) { + assertTrue((boolean) XContentHelper.convertToMap(XContentType.JSON.xContent(), is, true).get("acknowledged")); + } + } catch (ResponseException e) { + // 404 here just means we had no indexes + if (e.getResponse().getStatusLine().getStatusCode() != 404) { + throw e; + } + } + } + /** * Wipe fs snapshots we created one by one and all repositories so that the next test can create the repositories fresh and they'll * start empty. There isn't an API to delete all snapshots. There is an API to delete all snapshot repositories but that leaves all of diff --git a/x-pack/plugin/data-frame/qa/single-node-tests/src/test/java/org/elasticsearch/xpack/dataframe/integration/DataFrameRestTestCase.java b/x-pack/plugin/data-frame/qa/single-node-tests/src/test/java/org/elasticsearch/xpack/dataframe/integration/DataFrameRestTestCase.java index 728ff55a42a06..455009b49691e 100644 --- a/x-pack/plugin/data-frame/qa/single-node-tests/src/test/java/org/elasticsearch/xpack/dataframe/integration/DataFrameRestTestCase.java +++ b/x-pack/plugin/data-frame/qa/single-node-tests/src/test/java/org/elasticsearch/xpack/dataframe/integration/DataFrameRestTestCase.java @@ -355,7 +355,7 @@ public void waitForDataFrame() throws Exception { public static void removeIndices() throws Exception { // we might have disabled wiping indices, but now its time to get rid of them // note: can not use super.cleanUpCluster() as this method must be static - wipeIndices(); + wipeAllIndices(); } public void wipeDataFrameTransforms() throws IOException { @@ -403,17 +403,6 @@ protected static void waitForPendingDataFrameTasks() throws Exception { waitForPendingTasks(adminClient(), taskName -> taskName.startsWith(DataFrameField.TASK_NAME) == false); } - protected static void wipeIndices() throws IOException { - try { - adminClient().performRequest(new Request("DELETE", "*")); - } catch (ResponseException e) { - // 404 here just means we had no indexes - if (e.getResponse().getStatusLine().getStatusCode() != 404) { - throw e; - } - } - } - static int getDataFrameCheckpoint(String transformId) throws IOException { Response statsResponse = client().performRequest(new Request("GET", DATAFRAME_ENDPOINT + transformId + "/_stats")); diff --git a/x-pack/plugin/sql/qa/security/src/test/java/org/elasticsearch/xpack/sql/qa/security/SqlSecurityTestCase.java b/x-pack/plugin/sql/qa/security/src/test/java/org/elasticsearch/xpack/sql/qa/security/SqlSecurityTestCase.java index 313d0cdb5cf7f..aaf028181a156 100644 --- a/x-pack/plugin/sql/qa/security/src/test/java/org/elasticsearch/xpack/sql/qa/security/SqlSecurityTestCase.java +++ b/x-pack/plugin/sql/qa/security/src/test/java/org/elasticsearch/xpack/sql/qa/security/SqlSecurityTestCase.java @@ -13,7 +13,6 @@ import org.elasticsearch.action.fieldcaps.FieldCapabilitiesAction; import org.elasticsearch.action.fieldcaps.FieldCapabilitiesRequest; import org.elasticsearch.client.Request; -import org.elasticsearch.client.ResponseException; import org.elasticsearch.common.Strings; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentBuilder; @@ -97,14 +96,14 @@ private static Path lookupAuditLog() { } return Paths.get(auditLogFileString); } - + @SuppressForbidden(reason="security doesn't work with mock filesystem") private static Path lookupRolledOverAuditLog() { String auditLogFileString = System.getProperty("tests.audit.yesterday.logfile"); if (null == auditLogFileString) { throw new IllegalStateException("tests.audit.yesterday.logfile must be set to run this test. It should be automatically " + "set by gradle."); - } + } return Paths.get(auditLogFileString); } @@ -120,7 +119,7 @@ private static Path lookupRolledOverAuditLog() { * How much of the audit log was written before the test started. */ private static long auditLogWrittenBeforeTestStart; - + /** * If the audit log file rolled over. This is a rare case possible only at midnight. */ @@ -188,7 +187,7 @@ public void setInitialAuditLogOffset() { } catch (IOException e) { throw new RuntimeException(e); } - + // The log file can roll over without being caught by assertLogs() method: in those tests where exceptions are being handled // and no audit logs being read (and, thus, assertLogs() is not called) - for example testNoMonitorMain() method: there are no // calls to auditLogs(), and the method could run while the audit file is rolled over. @@ -205,12 +204,7 @@ public void setInitialAuditLogOffset() { @AfterClass public static void wipeIndicesAfterTests() throws IOException { try { - adminClient().performRequest(new Request("DELETE", "*")); - } catch (ResponseException e) { - // 404 here just means we had no indexes - if (e.getResponse().getStatusLine().getStatusCode() != 404) { - throw e; - } + wipeAllIndices(); } finally { // Clear the static state so other subclasses can reuse it later oneTimeSetup = false; @@ -586,7 +580,7 @@ public void assertLogs() throws Exception { if (sm != null) { sm.checkPermission(new SpecialPermission()); } - + BufferedReader[] logReaders = new BufferedReader[2]; AccessController.doPrivileged((PrivilegedAction) () -> { try { @@ -604,7 +598,7 @@ public void assertLogs() throws Exception { throw new RuntimeException(e); } }); - + // The "index" is used as a way of reading from both rolled over file and current audit file in order: rolled over file // first, then the audit log file. Very rarely we will read from the rolled over file: when the test happened to run // at midnight and the audit file rolled over during the test. From 89cff169ff8ea4bb467dd548bea46e0cde0b17fc Mon Sep 17 00:00:00 2001 From: William Brafford Date: Thu, 22 Aug 2019 10:49:09 -0400 Subject: [PATCH 16/59] Mute flaky RemoteClusterConnection test (#45850) --- .../elasticsearch/transport/RemoteClusterConnectionTests.java | 1 + 1 file changed, 1 insertion(+) diff --git a/server/src/test/java/org/elasticsearch/transport/RemoteClusterConnectionTests.java b/server/src/test/java/org/elasticsearch/transport/RemoteClusterConnectionTests.java index 2d0e1bb1aa2c3..08d162ceaf2e9 100644 --- a/server/src/test/java/org/elasticsearch/transport/RemoteClusterConnectionTests.java +++ b/server/src/test/java/org/elasticsearch/transport/RemoteClusterConnectionTests.java @@ -637,6 +637,7 @@ public void run() { } } + @AwaitsFix(bugUrl = "https://github.com/elastic/elasticsearch/issues/45845") public void testCloseWhileConcurrentlyConnecting() throws IOException, InterruptedException, BrokenBarrierException { List knownNodes = new CopyOnWriteArrayList<>(); try (MockTransportService seedTransport = startTransport("seed_node", knownNodes, Version.CURRENT); From 36d859fa7c9ca7abc736be3873e75747b028a591 Mon Sep 17 00:00:00 2001 From: Benjamin Trent Date: Thu, 22 Aug 2019 09:52:33 -0500 Subject: [PATCH 17/59] [ML][Transforms] unifying logging, adding some more logging (#45788) * [ML][Transforms] unifying logging, adding some more logging * using parameterizedMessage instead of string concat * fixing bracket closure --- .../transforms/DataFrameTransformTask.java | 99 ++++++++++++------- .../ClientDataFrameIndexerTests.java | 28 +++--- 2 files changed, 75 insertions(+), 52 deletions(-) diff --git a/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/transforms/DataFrameTransformTask.java b/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/transforms/DataFrameTransformTask.java index 313efff756917..973aa07b189f5 100644 --- a/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/transforms/DataFrameTransformTask.java +++ b/x-pack/plugin/data-frame/src/main/java/org/elasticsearch/xpack/dataframe/transforms/DataFrameTransformTask.java @@ -8,6 +8,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.message.ParameterizedMessage; import org.apache.lucene.util.SetOnce; import org.elasticsearch.ElasticsearchException; import org.elasticsearch.ElasticsearchStatusException; @@ -21,7 +22,6 @@ import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.Client; -import org.elasticsearch.common.Strings; import org.elasticsearch.common.logging.LoggerMessageFormat; import org.elasticsearch.common.settings.Setting; import org.elasticsearch.common.unit.TimeValue; @@ -248,7 +248,7 @@ public synchronized void setTaskStateStopped() { * @param listener Started listener */ public synchronized void start(Long startingCheckpoint, boolean force, ActionListener listener) { - logger.debug("[{}] start called with force [{}] and state [{}]", getTransformId(), force, getState()); + logger.debug("[{}] start called with force [{}] and state [{}].", getTransformId(), force, getState()); if (taskState.get() == DataFrameTransformTaskState.FAILED && force == false) { listener.onFailure(new ElasticsearchStatusException( DataFrameMessages.getMessage(DATA_FRAME_CANNOT_START_FAILED_TRANSFORM, @@ -290,7 +290,7 @@ public synchronized void start(Long startingCheckpoint, boolean force, ActionLis null, getIndexer().getProgress()); - logger.info("Updating state for data frame transform [{}] to [{}]", transform.getId(), state.toString()); + logger.info("[{}] updating state for data frame transform to [{}].", transform.getId(), state.toString()); // Even though the indexer information is persisted to an index, we still need DataFrameTransformTaskState in the clusterstate // This keeps track of STARTED, FAILED, STOPPED // This is because a FAILED state can occur because we cannot read the config from the internal index, which would imply that @@ -306,6 +306,7 @@ public synchronized void start(Long startingCheckpoint, boolean force, ActionLis listener.onResponse(new StartDataFrameTransformTaskAction.Response(true)); }, exc -> { + logger.error(new ParameterizedMessage("[{}] failed updating state to [{}].", getTransformId(), state), exc); getIndexer().stop(); listener.onFailure(new ElasticsearchException("Error while updating state for data frame transform [" + transform.getId() + "] to [" + state.getIndexerState() + "].", exc)); @@ -354,12 +355,12 @@ public synchronized void triggered(Event event) { } if (getIndexer() == null) { - logger.warn("Data frame task [{}] triggered with an unintialized indexer", getTransformId()); + logger.warn("[{}] data frame task triggered with an unintialized indexer.", getTransformId()); return; } if (taskState.get() == DataFrameTransformTaskState.FAILED) { - logger.debug("Schedule was triggered for transform [{}] but task is failed. Ignoring trigger.", getTransformId()); + logger.debug("[{}] schedule was triggered for transform but task is failed. Ignoring trigger.", getTransformId()); return; } @@ -368,15 +369,15 @@ public synchronized void triggered(Event event) { if (IndexerState.INDEXING.equals(indexerState) || IndexerState.STOPPING.equals(indexerState) || IndexerState.STOPPED.equals(indexerState)) { - logger.debug("Indexer for transform [{}] has state [{}], ignoring trigger", getTransformId(), indexerState); + logger.debug("[{}] indexer for transform has state [{}]. Ignoring trigger.", getTransformId(), indexerState); return; } - logger.debug("Data frame indexer [{}] schedule has triggered, state: [{}]", event.getJobName(), indexerState); + logger.debug("[{}] data frame indexer schedule has triggered, state: [{}].", event.getJobName(), indexerState); // if it runs for the 1st time we just do it, if not we check for changes if (currentCheckpoint.get() == 0) { - logger.debug("Trigger initial run"); + logger.debug("Trigger initial run."); getIndexer().maybeTriggerAsyncJob(System.currentTimeMillis()); } else if (getIndexer().isContinuous()) { getIndexer().maybeTriggerAsyncJob(System.currentTimeMillis()); @@ -407,12 +408,14 @@ void persistStateToClusterState(DataFrameTransformState state, ActionListener> listener) { updatePersistentTaskState(state, ActionListener.wrap( success -> { - logger.debug("Successfully updated state for data frame transform [{}] to [{}]", transform.getId(), state.toString()); + logger.debug("[{}] successfully updated state for data frame transform to [{}].", transform.getId(), state.toString()); listener.onResponse(success); }, failure -> { auditor.warning(transform.getId(), "Failed to persist to state to cluster state: " + failure.getMessage()); - logger.error("Failed to update state for data frame transform [" + transform.getId() + "]", failure); + logger.error(new ParameterizedMessage("[{}] failed to update cluster state for data frame transform.", + transform.getId()), + failure); listener.onFailure(failure); } )); @@ -422,7 +425,7 @@ synchronized void markAsFailed(String reason, ActionListener listener) { // If we are already flagged as failed, this probably means that a second trigger started firing while we were attempting to // flag the previously triggered indexer as failed. Exit early as we are already flagged as failed. if (taskState.get() == DataFrameTransformTaskState.FAILED) { - logger.warn("[{}] is already failed but encountered new failure; reason [{}] ", getTransformId(), reason); + logger.warn("[{}] is already failed but encountered new failure; reason [{}].", getTransformId(), reason); listener.onResponse(null); return; } @@ -430,7 +433,7 @@ synchronized void markAsFailed(String reason, ActionListener listener) { // the indexer to fail. Since `ClientDataFrameIndexer#doSaveState` will persist the state to the index once the indexer stops, // it is probably best to NOT change the internal state of the task and allow the normal stopping logic to continue. if (getIndexer() != null && getIndexer().getState() == IndexerState.STOPPING) { - logger.info("Attempt to fail transform [" + getTransformId() + "] with reason [" + reason + "] while it was stopping."); + logger.info("[{}] attempt to fail transform with reason [{}] while it was stopping.", getTransformId(), reason); auditor.info(getTransformId(), "Attempted to fail transform with reason [" + reason + "] while in STOPPING state."); listener.onResponse(null); return; @@ -438,7 +441,7 @@ synchronized void markAsFailed(String reason, ActionListener listener) { // If we are stopped, this means that between the failure occurring and being handled, somebody called stop // We should just allow that stop to continue if (getIndexer() != null && getIndexer().getState() == IndexerState.STOPPED) { - logger.info("[{}] encountered a failure but indexer is STOPPED; reason [{}]", getTransformId(), reason); + logger.info("[{}] encountered a failure but indexer is STOPPED; reason [{}].", getTransformId(), reason); listener.onResponse(null); return; } @@ -456,7 +459,8 @@ synchronized void markAsFailed(String reason, ActionListener listener) { persistStateToClusterState(newState, ActionListener.wrap( r -> listener.onResponse(null), e -> { - logger.error("Failed to set task state as failed to cluster state", e); + logger.error(new ParameterizedMessage("[{}] failed to set task state as failed to cluster state.", getTransformId()), + e); listener.onFailure(e); } )); @@ -469,8 +473,9 @@ synchronized void markAsFailed(String reason, ActionListener listener) { */ @Override public synchronized void onCancelled() { - logger.info( - "Received cancellation request for data frame transform [" + transform.getId() + "], state: [" + taskState.get() + "]"); + logger.info("[{}] received cancellation request for data frame transform, state: [{}].", + getTransformId(), + taskState.get()); if (getIndexer() != null && getIndexer().abort()) { // there is no background transform running, we can shutdown safely shutdown(); @@ -695,13 +700,15 @@ protected void onStart(long now, ActionListener listener) { } TransformProgressGatherer.getInitialProgress(this.client, buildFilterQuery(), getConfig(), ActionListener.wrap( newProgress -> { - logger.trace("[{}] reset the progress from [{}] to [{}]", transformId, progress, newProgress); + logger.trace("[{}] reset the progress from [{}] to [{}].", transformId, progress, newProgress); progress = newProgress; super.onStart(now, listener); }, failure -> { progress = null; - logger.warn("Unable to load progress information for task [" + transformId + "]", failure); + logger.warn(new ParameterizedMessage("[{}] unable to load progress information for task.", + transformId), + failure); super.onStart(now, listener); } )); @@ -778,14 +785,14 @@ public CheckpointProvider getCheckpointProvider() { @Override public synchronized boolean maybeTriggerAsyncJob(long now) { if (transformTask.taskState.get() == DataFrameTransformTaskState.FAILED) { - logger.debug("Schedule was triggered for transform [{}] but task is failed. Ignoring trigger.", getJobId()); + logger.debug("[{}] schedule was triggered for transform but task is failed. Ignoring trigger.", getJobId()); return false; } // ignore trigger if indexer is running, prevents log spam in A2P indexer IndexerState indexerState = getState(); if (IndexerState.INDEXING.equals(indexerState) || IndexerState.STOPPING.equals(indexerState)) { - logger.debug("Indexer for transform [{}] has state [{}], ignoring trigger", getJobId(), indexerState); + logger.debug("[{}] indexer for transform has state [{}]. Ignoring trigger.", getJobId(), indexerState); return false; } @@ -876,7 +883,7 @@ protected void doSaveState(IndexerState indexerState, DataFrameIndexerPosition p indexerState = IndexerState.STOPPED; auditor.info(transformConfig.getId(), "Data frame finished indexing all data, initiating stop"); - logger.info("Data frame [{}] finished indexing all data, initiating stop", transformConfig.getId()); + logger.info("[{}] data frame transform finished indexing all data, initiating stop.", transformConfig.getId()); } final DataFrameTransformState state = new DataFrameTransformState( @@ -886,7 +893,7 @@ protected void doSaveState(IndexerState indexerState, DataFrameIndexerPosition p transformTask.currentCheckpoint.get(), transformTask.stateReason.get(), getProgress()); - logger.debug("Updating persistent state of transform [{}] to [{}]", transformConfig.getId(), state.toString()); + logger.debug("[{}] updating persistent state of transform to [{}].", transformConfig.getId(), state.toString()); // Persist the current state and stats in the internal index. The interval of this method being // called is controlled by AsyncTwoPhaseIndexer#onBulkResponse which calls doSaveState every so @@ -900,7 +907,7 @@ protected void doSaveState(IndexerState indexerState, DataFrameIndexerPosition p transformTask.shutdown(); } // Only do this clean up once, if it succeeded, no reason to do the query again. - if (oldStatsCleanedUp.compareAndExchange(false, true) == false) { + if (oldStatsCleanedUp.compareAndSet(false, true)) { transformsConfigManager.deleteOldTransformStoredDocuments(transformId, ActionListener.wrap( nil -> { logger.trace("[{}] deleted old transform stats and state document", transformId); @@ -918,7 +925,9 @@ protected void doSaveState(IndexerState indexerState, DataFrameIndexerPosition p } }, statsExc -> { - logger.error("Updating stats of transform [" + transformConfig.getId() + "] failed", statsExc); + logger.error(new ParameterizedMessage("[{}] updating stats of transform failed.", + transformConfig.getId()), + statsExc); auditor.warning(getJobId(), "Failure updating stats of transform: " + statsExc.getMessage()); // for auto stop shutdown the task @@ -942,7 +951,9 @@ protected void onFailure(Exception exc) { } handleFailure(exc); } catch (Exception e) { - logger.error("Data frame transform encountered an unexpected internal exception: " ,e); + logger.error( + new ParameterizedMessage("[{}] data frame transform encountered an unexpected internal exception: ", transformId), + e); } } @@ -967,7 +978,6 @@ protected void onFinish(ActionListener listener) { if (progress != null && progress.getPercentComplete() != null && progress.getPercentComplete() < 100.0) { progress.incrementDocsProcessed(progress.getTotalDocs() - progress.getDocumentsProcessed()); } - logger.info("Last checkpoint for {} {}", getJobId(), Strings.toString(lastCheckpoint)); // If the last checkpoint is now greater than 1, that means that we have just processed the first // continuous checkpoint and should start recording the exponential averages if (lastCheckpoint != null && lastCheckpoint.getCheckpoint() > 1) { @@ -987,7 +997,7 @@ protected void onFinish(ActionListener listener) { "Finished indexing for data frame transform checkpoint [" + checkpoint + "]."); } logger.debug( - "Finished indexing for data frame transform [" + transformTask.getTransformId() + "] checkpoint [" + checkpoint + "]"); + "[{}] finished indexing for data frame transform checkpoint [{}].", getJobId(), checkpoint); auditBulkFailures = true; listener.onResponse(null); } catch (Exception e) { @@ -1009,7 +1019,10 @@ protected boolean shouldAuditOnFinish(long completedCheckpoint) { if (++logCount % logEvery != 0) { return false; } - int log10Checkpoint = (int) Math.floor(Math.log10(completedCheckpoint + 1)); + if (completedCheckpoint == 0) { + return true; + } + int log10Checkpoint = (int) Math.floor(Math.log10(completedCheckpoint)); logEvery = log10Checkpoint >= 3 ? 1_000 : (int)Math.pow(10.0, log10Checkpoint); logCount = 0; return true; @@ -1018,13 +1031,13 @@ protected boolean shouldAuditOnFinish(long completedCheckpoint) { @Override protected void onStop() { auditor.info(transformConfig.getId(), "Data frame transform has stopped."); - logger.info("Data frame transform [{}] has stopped", transformConfig.getId()); + logger.info("[{}] data frame transform has stopped.", transformConfig.getId()); } @Override protected void onAbort() { auditor.info(transformConfig.getId(), "Received abort request, stopping data frame transform."); - logger.info("Data frame transform [" + transformConfig.getId() + "] received abort request, stopping indexer"); + logger.info("[{}] data frame transform received abort request. Stopping indexer.", transformConfig.getId()); transformTask.shutdown(); } @@ -1034,11 +1047,17 @@ protected void createCheckpoint(ActionListener lis checkpoint -> transformsConfigManager.putTransformCheckpoint(checkpoint, ActionListener.wrap( putCheckPointResponse -> listener.onResponse(checkpoint), - createCheckpointException -> - listener.onFailure(new RuntimeException("Failed to create checkpoint", createCheckpointException)) + createCheckpointException -> { + logger.warn(new ParameterizedMessage("[{}] failed to create checkpoint.", transformId), + createCheckpointException); + listener.onFailure(new RuntimeException("Failed to create checkpoint", createCheckpointException)); + } )), - getCheckPointException -> - listener.onFailure(new RuntimeException("Failed to retrieve checkpoint", getCheckPointException)) + getCheckPointException -> { + logger.warn(new ParameterizedMessage("[{}] failed to retrieve checkpoint.", transformId), + getCheckPointException); + listener.onFailure(new RuntimeException("Failed to retrieve checkpoint", getCheckPointException)); + } )); } @@ -1047,12 +1066,14 @@ protected void sourceHasChanged(ActionListener hasChangedListener) { checkpointProvider.sourceHasChanged(getLastCheckpoint(), ActionListener.wrap( hasChanged -> { - logger.trace("[{}] change detected [{}]", transformId, hasChanged); + logger.trace("[{}] change detected [{}].", transformId, hasChanged); hasChangedListener.onResponse(hasChanged); }, e -> { logger.warn( - "Failed to detect changes for data frame transform [" + transformId + "], skipping update till next check.", + new ParameterizedMessage( + "[{}] failed to detect changes for data frame transform. Skipping update till next check.", + transformId), e); auditor.warning(transformId, "Failed to detect changes for data frame transform, skipping update till next check. Exception: " @@ -1068,7 +1089,9 @@ private boolean isIrrecoverableFailure(Exception e) { } synchronized void handleFailure(Exception e) { - logger.warn("Data frame transform [" + transformTask.getTransformId() + "] encountered an exception: ", e); + logger.warn(new ParameterizedMessage("[{}] data frame transform encountered an exception: ", + transformTask.getTransformId()), + e); if (handleCircuitBreakingException(e)) { return; } @@ -1083,7 +1106,7 @@ synchronized void handleFailure(Exception e) { @Override protected void failIndexer(String failureMessage) { - logger.error("Data frame transform [" + getJobId() + "]: " + failureMessage); + logger.error("[{}] transform has failed; experienced: [{}].", getJobId(), failureMessage); auditor.error(transformTask.getTransformId(), failureMessage); transformTask.markAsFailed(failureMessage, ActionListener.wrap( r -> { diff --git a/x-pack/plugin/data-frame/src/test/java/org/elasticsearch/xpack/dataframe/transforms/ClientDataFrameIndexerTests.java b/x-pack/plugin/data-frame/src/test/java/org/elasticsearch/xpack/dataframe/transforms/ClientDataFrameIndexerTests.java index 2090e75ab45a5..4a23a57efccc5 100644 --- a/x-pack/plugin/data-frame/src/test/java/org/elasticsearch/xpack/dataframe/transforms/ClientDataFrameIndexerTests.java +++ b/x-pack/plugin/data-frame/src/test/java/org/elasticsearch/xpack/dataframe/transforms/ClientDataFrameIndexerTests.java @@ -74,30 +74,30 @@ public void testAudiOnFinishFrequency() { // Audit every checkpoint for the first 10 assertTrue(shouldAudit.get(0)); assertTrue(shouldAudit.get(1)); - assertTrue(shouldAudit.get(9)); + assertTrue(shouldAudit.get(10)); // Then audit every 10 while < 100 - assertFalse(shouldAudit.get(10)); assertFalse(shouldAudit.get(11)); - assertTrue(shouldAudit.get(19)); - assertTrue(shouldAudit.get(29)); - assertFalse(shouldAudit.get(30)); - assertTrue(shouldAudit.get(99)); + assertTrue(shouldAudit.get(20)); + assertFalse(shouldAudit.get(29)); + assertTrue(shouldAudit.get(30)); + assertFalse(shouldAudit.get(99)); // Then audit every 100 < 1000 - assertFalse(shouldAudit.get(100)); + assertTrue(shouldAudit.get(100)); assertFalse(shouldAudit.get(109)); assertFalse(shouldAudit.get(110)); - assertTrue(shouldAudit.get(199)); + assertFalse(shouldAudit.get(199)); // Then audit every 1000 for the rest of time - assertTrue(shouldAudit.get(1999)); + assertFalse(shouldAudit.get(1999)); assertFalse(shouldAudit.get(2199)); - assertTrue(shouldAudit.get(2999)); - assertTrue(shouldAudit.get(9999)); - assertTrue(shouldAudit.get(10_999)); - assertFalse(shouldAudit.get(11_000)); - assertTrue(shouldAudit.get(11_999)); + assertTrue(shouldAudit.get(3000)); + assertTrue(shouldAudit.get(10_000)); + assertFalse(shouldAudit.get(10_999)); + assertTrue(shouldAudit.get(11_000)); + assertFalse(shouldAudit.get(11_001)); + assertFalse(shouldAudit.get(11_999)); } } From d1e00e3cf5cfd609057d74c8b2b3e8b852e35bff Mon Sep 17 00:00:00 2001 From: markharwood Date: Thu, 22 Aug 2019 16:32:42 +0100 Subject: [PATCH 18/59] Search - added HLRC support for PinnedQueryBuilder (#45779) * Added HLRC support for PinnedQueryBuilder Related #44074 --- .../org/elasticsearch/client/SearchIT.java | 19 ++- .../high-level/query-builders.asciidoc | 1 + .../core/index/query/PinnedQueryBuilder.java | 109 ++++++++++++++++++ 3 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/index/query/PinnedQueryBuilder.java diff --git a/client/rest-high-level/src/test/java/org/elasticsearch/client/SearchIT.java b/client/rest-high-level/src/test/java/org/elasticsearch/client/SearchIT.java index 00d905aa14006..171a0cae9da31 100644 --- a/client/rest-high-level/src/test/java/org/elasticsearch/client/SearchIT.java +++ b/client/rest-high-level/src/test/java/org/elasticsearch/client/SearchIT.java @@ -43,6 +43,7 @@ import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.common.xcontent.XContentType; +import org.elasticsearch.index.query.MatchAllQueryBuilder; import org.elasticsearch.index.query.MatchQueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.query.ScriptQueryBuilder; @@ -81,6 +82,7 @@ import org.elasticsearch.search.suggest.Suggest; import org.elasticsearch.search.suggest.SuggestBuilder; import org.elasticsearch.search.suggest.phrase.PhraseSuggestionBuilder; +import org.elasticsearch.xpack.core.index.query.PinnedQueryBuilder; import org.hamcrest.Matchers; import org.junit.Before; @@ -92,7 +94,10 @@ import java.util.Map; import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder; +import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertFirstHit; +import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSecondHit; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertToXContentEquivalent; +import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.hasId; import static org.hamcrest.Matchers.both; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.either; @@ -1373,7 +1378,19 @@ public void testCountAllIndicesMatchQuery() throws IOException { assertCountHeader(countResponse); assertEquals(3, countResponse.getCount()); } - + + public void testSearchWithBasicLicensedQuery() throws IOException { + SearchRequest searchRequest = new SearchRequest("index"); + SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); + PinnedQueryBuilder pinnedQuery = new PinnedQueryBuilder(new MatchAllQueryBuilder(), "2", "1"); + searchSourceBuilder.query(pinnedQuery); + searchRequest.source(searchSourceBuilder); + SearchResponse searchResponse = execute(searchRequest, highLevelClient()::search, highLevelClient()::searchAsync); + assertSearchHeader(searchResponse); + assertFirstHit(searchResponse, hasId("2")); + assertSecondHit(searchResponse, hasId("1")); + } + private static void assertCountHeader(CountResponse countResponse) { assertEquals(0, countResponse.getSkippedShards()); assertEquals(0, countResponse.getFailedShards()); diff --git a/docs/java-rest/high-level/query-builders.asciidoc b/docs/java-rest/high-level/query-builders.asciidoc index 9094513f44d5a..3c749a442e6d1 100644 --- a/docs/java-rest/high-level/query-builders.asciidoc +++ b/docs/java-rest/high-level/query-builders.asciidoc @@ -83,6 +83,7 @@ This page lists all the available search queries with their corresponding `Query | {ref}/query-dsl-percolate-query.html[Percolate] | {percolate-ref}/PercolateQueryBuilder.html[PercolateQueryBuilder] | | {ref}/query-dsl-wrapper-query.html[Wrapper] | {query-ref}/WrapperQueryBuilder.html[WrapperQueryBuilder] | {query-ref}/QueryBuilders.html#wrapperQuery-java.lang.String-[QueryBuilders.wrapperQuery()] | {ref}/query-dsl-rank-feature-query.html[Rank Feature] | {mapper-extras-ref}/RankFeatureQuery.html[RankFeatureQueryBuilder] | +| {ref}/query-dsl-pinned-query.html[Pinned Query] | The PinnedQueryBuilder is packaged as part of the xpack-core module | |====== ==== Span queries diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/index/query/PinnedQueryBuilder.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/index/query/PinnedQueryBuilder.java new file mode 100644 index 0000000000000..3aa5fe8e42497 --- /dev/null +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/index/query/PinnedQueryBuilder.java @@ -0,0 +1,109 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +package org.elasticsearch.xpack.core.index.query; + +import org.apache.lucene.search.Query; +import org.elasticsearch.common.ParseField; +import org.elasticsearch.common.io.stream.StreamOutput; +import org.elasticsearch.common.xcontent.XContentBuilder; +import org.elasticsearch.index.query.AbstractQueryBuilder; +import org.elasticsearch.index.query.QueryBuilder; +import org.elasticsearch.index.query.QueryShardContext; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Objects; + +/** + * A query that will promote selected documents (identified by ID) above matches produced by an "organic" query. In practice, some upstream + * system will identify the promotions associated with a user's query string and use this object to ensure these are "pinned" to the top of + * the other search results. + */ +public class PinnedQueryBuilder extends AbstractQueryBuilder { + public static final String NAME = "pinned"; + protected final QueryBuilder organicQuery; + protected final List ids; + protected static final ParseField IDS_FIELD = new ParseField("ids"); + protected static final ParseField ORGANIC_QUERY_FIELD = new ParseField("organic"); + + @Override + public String getWriteableName() { + return NAME; + } + + /** + * Creates a new PinnedQueryBuilder + */ + public PinnedQueryBuilder(QueryBuilder organicQuery, String... ids) { + if (organicQuery == null) { + throw new IllegalArgumentException("[" + NAME + "] organicQuery cannot be null"); + } + this.organicQuery = organicQuery; + if (ids == null) { + throw new IllegalArgumentException("[" + NAME + "] ids cannot be null"); + } + this.ids = new ArrayList<>(); + Collections.addAll(this.ids, ids); + + } + + + @Override + protected void doWriteTo(StreamOutput out) throws IOException { + out.writeStringCollection(this.ids); + out.writeNamedWriteable(organicQuery); + } + + /** + * @return the organic query set in the constructor + */ + public QueryBuilder organicQuery() { + return this.organicQuery; + } + + /** + * Returns the pinned ids for the query. + */ + public List ids() { + return Collections.unmodifiableList(this.ids); + } + + + @Override + protected void doXContent(XContentBuilder builder, Params params) throws IOException { + builder.startObject(NAME); + if (organicQuery != null) { + builder.field(ORGANIC_QUERY_FIELD.getPreferredName()); + organicQuery.toXContent(builder, params); + } + builder.startArray(IDS_FIELD.getPreferredName()); + for (String value : ids) { + builder.value(value); + } + builder.endArray(); + printBoostAndQueryName(builder); + builder.endObject(); + } + + @Override + protected Query doToQuery(QueryShardContext context) throws IOException { + throw new UnsupportedOperationException("Client side-only class for use in HLRC"); + } + + + @Override + protected int doHashCode() { + return Objects.hash(ids, organicQuery); + } + + @Override + protected boolean doEquals(PinnedQueryBuilder other) { + return Objects.equals(ids, other.ids) && Objects.equals(organicQuery, other.organicQuery) && boost == other.boost; + } + +} From f067a5b66cea2aa933e124e2a7ea7071615c72b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Witek?= Date: Thu, 22 Aug 2019 17:43:23 +0200 Subject: [PATCH 19/59] Add test that proves _timing_stats document is deleted when the job is deleted (#45840) --- .../xpack/ml/integration/MlJobIT.java | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/x-pack/plugin/ml/qa/native-multi-node-tests/src/test/java/org/elasticsearch/xpack/ml/integration/MlJobIT.java b/x-pack/plugin/ml/qa/native-multi-node-tests/src/test/java/org/elasticsearch/xpack/ml/integration/MlJobIT.java index 66bbe908fd004..114437a01c84e 100644 --- a/x-pack/plugin/ml/qa/native-multi-node-tests/src/test/java/org/elasticsearch/xpack/ml/integration/MlJobIT.java +++ b/x-pack/plugin/ml/qa/native-multi-node-tests/src/test/java/org/elasticsearch/xpack/ml/integration/MlJobIT.java @@ -20,6 +20,7 @@ import org.elasticsearch.xpack.core.ml.job.config.Job; import org.elasticsearch.xpack.core.ml.job.persistence.AnomalyDetectorsIndex; import org.elasticsearch.xpack.core.ml.job.persistence.AnomalyDetectorsIndexFields; +import org.elasticsearch.xpack.core.ml.job.process.autodetect.state.TimingStats; import org.elasticsearch.xpack.ml.MachineLearning; import org.junit.After; @@ -35,6 +36,7 @@ import static org.elasticsearch.xpack.core.security.authc.support.UsernamePasswordToken.basicAuthHeaderValue; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.hasEntry; import static org.hamcrest.Matchers.not; public class MlJobIT extends ESRestTestCase { @@ -413,6 +415,55 @@ public void testDeleteJob() throws Exception { client().performRequest(new Request("GET", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_stats"))); } + public void testDeleteJob_TimingStatsDocumentIsDeleted() throws Exception { + String jobId = "delete-job-with-timing-stats-document-job"; + String indexName = AnomalyDetectorsIndexFields.RESULTS_INDEX_PREFIX + AnomalyDetectorsIndexFields.RESULTS_INDEX_DEFAULT; + createFarequoteJob(jobId); + + assertThat( + EntityUtils.toString(client().performRequest(new Request("GET", indexName + "/_count")).getEntity()), + containsString("\"count\":0")); // documents related to the job do not exist yet + + Response openResponse = + client().performRequest(new Request("POST", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_open")); + assertThat(entityAsMap(openResponse), hasEntry("opened", true)); + + Request postDataRequest = new Request("POST", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_data"); + postDataRequest.setJsonEntity("{ \"airline\":\"LOT\", \"response_time\":100, \"time\":\"2019-07-01 00:00:00Z\" }"); + client().performRequest(postDataRequest); + postDataRequest.setJsonEntity("{ \"airline\":\"LOT\", \"response_time\":100, \"time\":\"2019-07-01 02:00:00Z\" }"); + client().performRequest(postDataRequest); + + Response flushResponse = + client().performRequest(new Request("POST", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_flush")); + assertThat(entityAsMap(flushResponse), hasEntry("flushed", true)); + + Response closeResponse = + client().performRequest(new Request("POST", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_close")); + assertThat(entityAsMap(closeResponse), hasEntry("closed", true)); + + String timingStatsDoc = + EntityUtils.toString( + client().performRequest(new Request("GET", indexName + "/_doc/" + TimingStats.documentId(jobId))).getEntity()); + assertThat(timingStatsDoc, containsString("\"bucket_count\":2")); // TimingStats doc exists, 2 buckets have been processed + + client().performRequest(new Request("DELETE", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId)); + + waitUntilIndexIsEmpty(indexName); // when job is being deleted, it also deletes all related documents from the shared index + + // check that the TimingStats documents got deleted + ResponseException exception = expectThrows( + ResponseException.class, + () -> client().performRequest(new Request("GET", indexName + "/_doc/" + TimingStats.documentId(jobId)))); + assertThat(exception.getResponse().getStatusLine().getStatusCode(), equalTo(404)); + + // check that the job itself is gone + exception = expectThrows( + ResponseException.class, + () -> client().performRequest(new Request("GET", MachineLearning.BASE_PATH + "anomaly_detectors/" + jobId + "/_stats"))); + assertThat(exception.getResponse().getStatusLine().getStatusCode(), equalTo(404)); + } + public void testDeleteJobAsync() throws Exception { String jobId = "delete-job-async-job"; String indexName = AnomalyDetectorsIndexFields.RESULTS_INDEX_PREFIX + AnomalyDetectorsIndexFields.RESULTS_INDEX_DEFAULT; From e8c82301dfb6c5c98922ff196390a61407ef2480 Mon Sep 17 00:00:00 2001 From: Jake Landis Date: Thu, 22 Aug 2019 12:24:49 -0500 Subject: [PATCH 20/59] introduce 7.3.2 to the master branch (#45865) --- server/src/main/java/org/elasticsearch/Version.java | 1 + 1 file changed, 1 insertion(+) diff --git a/server/src/main/java/org/elasticsearch/Version.java b/server/src/main/java/org/elasticsearch/Version.java index ff34da3a9aa7e..dae40f04b5c93 100644 --- a/server/src/main/java/org/elasticsearch/Version.java +++ b/server/src/main/java/org/elasticsearch/Version.java @@ -65,6 +65,7 @@ public class Version implements Comparable, ToXContentFragment { public static final Version V_7_2_1 = new Version(7020199, org.apache.lucene.util.Version.LUCENE_8_0_0); public static final Version V_7_3_0 = new Version(7030099, org.apache.lucene.util.Version.LUCENE_8_1_0); public static final Version V_7_3_1 = new Version(7030199, org.apache.lucene.util.Version.LUCENE_8_1_0); + public static final Version V_7_3_2 = new Version(7030299, org.apache.lucene.util.Version.LUCENE_8_1_0); public static final Version V_7_4_0 = new Version(7040099, org.apache.lucene.util.Version.LUCENE_8_2_0); public static final Version V_8_0_0 = new Version(8000099, org.apache.lucene.util.Version.LUCENE_8_2_0); public static final Version CURRENT = V_8_0_0; From 041250446438d931101ff8feb56e2dfa9b0d564d Mon Sep 17 00:00:00 2001 From: Benjamin Trent Date: Thu, 22 Aug 2019 12:49:49 -0500 Subject: [PATCH 21/59] [ML] Adding data frame analytics stats to _usage API (#45820) * [ML] Adding data frame analytics stats to _usage API * making the size of analytics stats 10k --- .../ml/MachineLearningFeatureSetUsage.java | 30 +++++++++---- .../MachineLearningUsageTransportAction.java | 44 ++++++++++++++++--- ...chineLearningInfoTransportActionTests.java | 32 ++++++++++++++ 3 files changed, 91 insertions(+), 15 deletions(-) diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/MachineLearningFeatureSetUsage.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/MachineLearningFeatureSetUsage.java index da38d1d2903a8..2437f00337842 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/MachineLearningFeatureSetUsage.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/MachineLearningFeatureSetUsage.java @@ -5,6 +5,7 @@ */ package org.elasticsearch.xpack.core.ml; +import org.elasticsearch.Version; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.xcontent.XContentBuilder; @@ -12,6 +13,7 @@ import org.elasticsearch.xpack.core.XPackField; import java.io.IOException; +import java.util.Collections; import java.util.Map; import java.util.Objects; @@ -26,16 +28,23 @@ public class MachineLearningFeatureSetUsage extends XPackFeatureSet.Usage { public static final String MODEL_SIZE = "model_size"; public static final String CREATED_BY = "created_by"; public static final String NODE_COUNT = "node_count"; + public static final String DATA_FRAME_ANALYTICS_JOBS_FIELD = "data_frame_analytics_jobs"; private final Map jobsUsage; private final Map datafeedsUsage; + private final Map analyticsUsage; private final int nodeCount; - public MachineLearningFeatureSetUsage(boolean available, boolean enabled, Map jobsUsage, - Map datafeedsUsage, int nodeCount) { + public MachineLearningFeatureSetUsage(boolean available, + boolean enabled, + Map jobsUsage, + Map datafeedsUsage, + Map analyticsUsage, + int nodeCount) { super(XPackField.MACHINE_LEARNING, available, enabled); this.jobsUsage = Objects.requireNonNull(jobsUsage); this.datafeedsUsage = Objects.requireNonNull(datafeedsUsage); + this.analyticsUsage = Objects.requireNonNull(analyticsUsage); this.nodeCount = nodeCount; } @@ -43,6 +52,11 @@ public MachineLearningFeatureSetUsage(StreamInput in) throws IOException { super(in); this.jobsUsage = in.readMap(); this.datafeedsUsage = in.readMap(); + if (in.getVersion().onOrAfter(Version.V_8_0_0)) { + this.analyticsUsage = in.readMap(); + } else { + this.analyticsUsage = Collections.emptyMap(); + } this.nodeCount = in.readInt(); } @@ -51,18 +65,18 @@ public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); out.writeMap(jobsUsage); out.writeMap(datafeedsUsage); + if (out.getVersion().onOrAfter(Version.V_8_0_0)) { + out.writeMap(analyticsUsage); + } out.writeInt(nodeCount); } @Override protected void innerXContent(XContentBuilder builder, Params params) throws IOException { super.innerXContent(builder, params); - if (jobsUsage != null) { - builder.field(JOBS_FIELD, jobsUsage); - } - if (datafeedsUsage != null) { - builder.field(DATAFEEDS_FIELD, datafeedsUsage); - } + builder.field(JOBS_FIELD, jobsUsage); + builder.field(DATAFEEDS_FIELD, datafeedsUsage); + builder.field(DATA_FRAME_ANALYTICS_JOBS_FIELD, analyticsUsage); if (nodeCount >= 0) { builder.field(NODE_COUNT, nodeCount); } diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MachineLearningUsageTransportAction.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MachineLearningUsageTransportAction.java index be9c8d4c4fd6d..ab815e17fe0c8 100644 --- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MachineLearningUsageTransportAction.java +++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/MachineLearningUsageTransportAction.java @@ -25,10 +25,13 @@ import org.elasticsearch.xpack.core.action.XPackUsageFeatureAction; import org.elasticsearch.xpack.core.action.XPackUsageFeatureResponse; import org.elasticsearch.xpack.core.action.XPackUsageFeatureTransportAction; +import org.elasticsearch.xpack.core.action.util.PageParams; import org.elasticsearch.xpack.core.ml.MachineLearningFeatureSetUsage; +import org.elasticsearch.xpack.core.ml.action.GetDataFrameAnalyticsStatsAction; import org.elasticsearch.xpack.core.ml.action.GetDatafeedsStatsAction; import org.elasticsearch.xpack.core.ml.action.GetJobsStatsAction; import org.elasticsearch.xpack.core.ml.datafeed.DatafeedState; +import org.elasticsearch.xpack.core.ml.dataframe.DataFrameAnalyticsState; import org.elasticsearch.xpack.core.ml.job.config.Job; import org.elasticsearch.xpack.core.ml.job.config.JobState; import org.elasticsearch.xpack.core.ml.job.process.autodetect.state.ModelSizeStats; @@ -69,22 +72,35 @@ protected void masterOperation(Task task, XPackUsageRequest request, ClusterStat ActionListener listener) { if (enabled == false) { MachineLearningFeatureSetUsage usage = new MachineLearningFeatureSetUsage(licenseState.isMachineLearningAllowed(), enabled, - Collections.emptyMap(), Collections.emptyMap(), 0); + Collections.emptyMap(), Collections.emptyMap(), Collections.emptyMap(), 0); listener.onResponse(new XPackUsageFeatureResponse(usage)); return; } Map jobsUsage = new LinkedHashMap<>(); Map datafeedsUsage = new LinkedHashMap<>(); + Map analyticsUsage = new LinkedHashMap<>(); int nodeCount = mlNodeCount(state); + // Step 3. Extract usage from data frame analytics stats and return usage response + ActionListener dataframeAnalyticsListener = ActionListener.wrap( + response -> { + addDataFrameAnalyticsUsage(response, analyticsUsage); + MachineLearningFeatureSetUsage usage = new MachineLearningFeatureSetUsage(licenseState.isMachineLearningAllowed(), + enabled, jobsUsage, datafeedsUsage, analyticsUsage, nodeCount); + listener.onResponse(new XPackUsageFeatureResponse(usage)); + }, + listener::onFailure + ); + // Step 2. Extract usage from datafeeds stats and return usage response ActionListener datafeedStatsListener = ActionListener.wrap(response -> { addDatafeedsUsage(response, datafeedsUsage); - MachineLearningFeatureSetUsage usage = new MachineLearningFeatureSetUsage(licenseState.isMachineLearningAllowed(), - enabled, jobsUsage, datafeedsUsage, nodeCount); - listener.onResponse(new XPackUsageFeatureResponse(usage)); + GetDataFrameAnalyticsStatsAction.Request dataframeAnalyticsStatsRequest = + new GetDataFrameAnalyticsStatsAction.Request(GetDatafeedsStatsAction.ALL); + dataframeAnalyticsStatsRequest.setPageParams(new PageParams(0, 10_000)); + client.execute(GetDataFrameAnalyticsStatsAction.INSTANCE, dataframeAnalyticsStatsRequest, dataframeAnalyticsListener); }, listener::onFailure); @@ -184,19 +200,33 @@ private void addDatafeedsUsage(GetDatafeedsStatsAction.Response response, Map Counter.newCounter()).addAndGet(1); } - datafeedsUsage.put(MachineLearningFeatureSetUsage.ALL, createDatafeedUsageEntry(response.getResponse().count())); + datafeedsUsage.put(MachineLearningFeatureSetUsage.ALL, createCountUsageEntry(response.getResponse().count())); for (DatafeedState datafeedState : datafeedCountByState.keySet()) { datafeedsUsage.put(datafeedState.name().toLowerCase(Locale.ROOT), - createDatafeedUsageEntry(datafeedCountByState.get(datafeedState).get())); + createCountUsageEntry(datafeedCountByState.get(datafeedState).get())); } } - private Map createDatafeedUsageEntry(long count) { + private Map createCountUsageEntry(long count) { Map usage = new HashMap<>(); usage.put(MachineLearningFeatureSetUsage.COUNT, count); return usage; } + private void addDataFrameAnalyticsUsage(GetDataFrameAnalyticsStatsAction.Response response, + Map dataframeAnalyticsUsage) { + Map dataFrameAnalyticsStateCounterMap = new HashMap<>(); + + for(GetDataFrameAnalyticsStatsAction.Response.Stats stats : response.getResponse().results()) { + dataFrameAnalyticsStateCounterMap.computeIfAbsent(stats.getState(), ds -> Counter.newCounter()).addAndGet(1); + } + dataframeAnalyticsUsage.put(MachineLearningFeatureSetUsage.ALL, createCountUsageEntry(response.getResponse().count())); + for (DataFrameAnalyticsState state : dataFrameAnalyticsStateCounterMap.keySet()) { + dataframeAnalyticsUsage.put(state.name().toLowerCase(Locale.ROOT), + createCountUsageEntry(dataFrameAnalyticsStateCounterMap.get(state).get())); + } + } + private static int mlNodeCount(final ClusterState clusterState) { int mlNodeCount = 0; for (DiscoveryNode node : clusterState.getNodes()) { diff --git a/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/MachineLearningInfoTransportActionTests.java b/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/MachineLearningInfoTransportActionTests.java index b3d4cc4f94d59..b2f69158aca05 100644 --- a/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/MachineLearningInfoTransportActionTests.java +++ b/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/MachineLearningInfoTransportActionTests.java @@ -34,10 +34,13 @@ import org.elasticsearch.xpack.core.action.util.QueryPage; import org.elasticsearch.xpack.core.ml.MachineLearningFeatureSetUsage; import org.elasticsearch.xpack.core.ml.MachineLearningField; +import org.elasticsearch.xpack.core.ml.action.GetDataFrameAnalyticsAction; +import org.elasticsearch.xpack.core.ml.action.GetDataFrameAnalyticsStatsAction; import org.elasticsearch.xpack.core.ml.action.GetDatafeedsStatsAction; import org.elasticsearch.xpack.core.ml.action.GetJobsStatsAction; import org.elasticsearch.xpack.core.ml.datafeed.DatafeedConfig; import org.elasticsearch.xpack.core.ml.datafeed.DatafeedState; +import org.elasticsearch.xpack.core.ml.dataframe.DataFrameAnalyticsState; import org.elasticsearch.xpack.core.ml.job.config.AnalysisConfig; import org.elasticsearch.xpack.core.ml.job.config.DataDescription; import org.elasticsearch.xpack.core.ml.job.config.Detector; @@ -95,6 +98,7 @@ public void init() { when(clusterService.state()).thenReturn(clusterState); givenJobs(Collections.emptyList(), Collections.emptyList()); givenDatafeeds(Collections.emptyList()); + givenDataFrameAnalytics(Collections.emptyList()); } private MachineLearningUsageTransportAction newUsageAction(Settings settings) { @@ -165,6 +169,11 @@ public void testUsage() throws Exception { buildDatafeedStats(DatafeedState.STARTED), buildDatafeedStats(DatafeedState.STOPPED) )); + givenDataFrameAnalytics(Arrays.asList( + buildDataFrameAnalyticsStats(DataFrameAnalyticsState.STOPPED), + buildDataFrameAnalyticsStats(DataFrameAnalyticsState.STOPPED), + buildDataFrameAnalyticsStats(DataFrameAnalyticsState.STARTED) + )); var usageAction = newUsageAction(settings.build()); PlainActionFuture future = new PlainActionFuture<>(); @@ -230,6 +239,10 @@ public void testUsage() throws Exception { assertThat(source.getValue("datafeeds.started.count"), equalTo(2)); assertThat(source.getValue("datafeeds.stopped.count"), equalTo(1)); + assertThat(source.getValue("data_frame_analytics_jobs._all.count"), equalTo(3)); + assertThat(source.getValue("data_frame_analytics_jobs.started.count"), equalTo(1)); + assertThat(source.getValue("data_frame_analytics_jobs.stopped.count"), equalTo(2)); + assertThat(source.getValue("jobs._all.forecasts.total"), equalTo(11)); assertThat(source.getValue("jobs._all.forecasts.forecasted_jobs"), equalTo(2)); @@ -391,6 +404,19 @@ private void givenDatafeeds(List }).when(client).execute(same(GetDatafeedsStatsAction.INSTANCE), any(), any()); } + private void givenDataFrameAnalytics(List dataFrameAnalyticsStats) { + doAnswer(invocationOnMock -> { + @SuppressWarnings("unchecked") + ActionListener listener = + (ActionListener) invocationOnMock.getArguments()[2]; + listener.onResponse(new GetDataFrameAnalyticsStatsAction.Response( + new QueryPage<>(dataFrameAnalyticsStats, + dataFrameAnalyticsStats.size(), + GetDataFrameAnalyticsAction.Response.RESULTS_FIELD))); + return Void.TYPE; + }).when(client).execute(same(GetDataFrameAnalyticsStatsAction.INSTANCE), any(), any()); + } + private static Detector buildMinDetector(String fieldName) { Detector.Builder detectorBuilder = new Detector.Builder(); detectorBuilder.setFunction("min"); @@ -431,6 +457,12 @@ private static GetDatafeedsStatsAction.Response.DatafeedStats buildDatafeedStats return stats; } + private static GetDataFrameAnalyticsStatsAction.Response.Stats buildDataFrameAnalyticsStats(DataFrameAnalyticsState state) { + GetDataFrameAnalyticsStatsAction.Response.Stats stats = mock(GetDataFrameAnalyticsStatsAction.Response.Stats.class); + when(stats.getState()).thenReturn(state); + return stats; + } + private static ForecastStats buildForecastStats(long numberOfForecasts) { return new ForecastStatsTests().createForecastStats(numberOfForecasts, numberOfForecasts); } From aa3e99c7ad498d6d2cf68c45b7a3ab9351ca202f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Witek?= Date: Thu, 22 Aug 2019 20:47:53 +0200 Subject: [PATCH 22/59] Put error message from inside the process into the exception that is thrown when the process doesn't start correctly. (#45846) --- .../dataframe/process/MemoryUsageEstimationProcessManager.java | 3 ++- .../process/MemoryUsageEstimationProcessManagerTests.java | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/dataframe/process/MemoryUsageEstimationProcessManager.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/dataframe/process/MemoryUsageEstimationProcessManager.java index fac084c0fc845..00d8c15e41876 100644 --- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/dataframe/process/MemoryUsageEstimationProcessManager.java +++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/dataframe/process/MemoryUsageEstimationProcessManager.java @@ -83,7 +83,8 @@ private MemoryUsageEstimationResult runJob(String jobId, onProcessCrash(jobId, processHolder)); processHolder.process = process; if (process.isProcessAlive() == false) { - String errorMsg = new ParameterizedMessage("[{}] Error while starting process", jobId).getFormattedMessage(); + String errorMsg = + new ParameterizedMessage("[{}] Error while starting process: {}", jobId, process.readError()).getFormattedMessage(); throw ExceptionsHelper.serverError(errorMsg); } try { diff --git a/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/dataframe/process/MemoryUsageEstimationProcessManagerTests.java b/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/dataframe/process/MemoryUsageEstimationProcessManagerTests.java index 2794716479b6f..5141709b17e4f 100644 --- a/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/dataframe/process/MemoryUsageEstimationProcessManagerTests.java +++ b/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/dataframe/process/MemoryUsageEstimationProcessManagerTests.java @@ -95,6 +95,7 @@ public void testRunJob_EmptyDataFrame() { public void testRunJob_ProcessNotAlive() { when(process.isProcessAlive()).thenReturn(false); + when(process.readError()).thenReturn("Error from inside the process"); processManager.runJobAsync(TASK_ID, dataFrameAnalyticsConfig, dataExtractorFactory, listener); @@ -103,8 +104,10 @@ public void testRunJob_ProcessNotAlive() { assertThat(exception.status(), equalTo(RestStatus.INTERNAL_SERVER_ERROR)); assertThat(exception.getMessage(), containsString(TASK_ID)); assertThat(exception.getMessage(), containsString("Error while starting process")); + assertThat(exception.getMessage(), containsString("Error from inside the process")); verify(process).isProcessAlive(); + verify(process).readError(); verifyNoMoreInteractions(process, listener); } From 6244c59eb91436d198423283ef57436f54403ca5 Mon Sep 17 00:00:00 2001 From: Jake Landis Date: Thu, 22 Aug 2019 14:24:14 -0500 Subject: [PATCH 23/59] update bwcVersions --- .ci/bwcVersions | 1 + 1 file changed, 1 insertion(+) diff --git a/.ci/bwcVersions b/.ci/bwcVersions index c01568d559e47..9a6d82b54ef8e 100644 --- a/.ci/bwcVersions +++ b/.ci/bwcVersions @@ -7,5 +7,6 @@ BWC_VERSION: - "7.2.1" - "7.3.0" - "7.3.1" + - "7.3.2" - "7.4.0" - "8.0.0" From 95655162f37be3e2ab6d2764d57349be43ca68e2 Mon Sep 17 00:00:00 2001 From: James Rodewig Date: Thu, 22 Aug 2019 15:29:14 -0400 Subject: [PATCH 24/59] [DOCS] Reformat match query (#45152) --- docs/reference/query-dsl/match-query.asciidoc | 155 ++++++++++++++++-- 1 file changed, 145 insertions(+), 10 deletions(-) diff --git a/docs/reference/query-dsl/match-query.asciidoc b/docs/reference/query-dsl/match-query.asciidoc index 3922e080b015c..a6b548c18c0d9 100644 --- a/docs/reference/query-dsl/match-query.asciidoc +++ b/docs/reference/query-dsl/match-query.asciidoc @@ -4,9 +4,15 @@ Match ++++ +Returns documents that match a provided text, number, date or boolean value. The +provided text is analyzed before matching. -`match` queries accept text/numerics/dates, analyzes -them, and constructs a query. For example: +The `match` query is the standard query for performing a full-text search, +including options for fuzzy matching. + + +[[match-query-ex-request]] +==== Example request [source,js] -------------------------------------------------- @@ -14,29 +20,158 @@ GET /_search { "query": { "match" : { - "message" : "this is a test" + "message" : { + "query" : "this is a test" + } } } } -------------------------------------------------- // CONSOLE -Note, `message` is the name of a field, you can substitute the name of -any field instead. + +[[match-top-level-params]] +==== Top-level parameters for `match` + +``:: +(Required, object) Field you wish to search. + + +[[match-field-params]] +==== Parameters for `` +`query`:: ++ +-- +(Required) Text, number, boolean value or date you wish to find in the provided +``. + +The `match` query <> any provided text before performing a +search. This means the `match` query can search <> fields for +analyzed tokens rather than an exact term. +-- + +`analyzer`:: +(Optional, string) <> used to convert the text in the `query` +value into tokens. Defaults to the <> mapped for the ``. If no analyzer is mapped, the index's +default analyzer is used. + +`auto_generate_synonyms_phrase_query`:: ++ +-- +(Optional, boolean) If `true`, <> +queries are automatically created for multi-term synonyms. Defaults to `true`. + +See <> for an +example. +-- + +`fuzziness`:: +(Optional, string) Maximum edit distance allowed for matching. See <> +for valid values and more information. See <> +for an example. + +`max_expansions`:: +(Optional, integer) Maximum number of terms to which the query will +expand. Defaults to `50`. + +`prefix_length`:: +(Optional, integer) Number of beginning characters left unchanged for fuzzy +matching. Defaults to `0`. + +`transpositions`:: +(Optional, boolean) If `true`, edits for fuzzy matching include +transpositions of two adjacent characters (ab → ba). Defaults to `true`. + +`fuzzy_rewrite`:: ++ +-- +(Optional, string) Method used to rewrite the query. See the +<> for valid values and more +information. + +If the `fuzziness` parameter is not `0`, the `match` query uses a `rewrite` +method of `top_terms_blended_freqs_${max_expansions}` by default. +-- + +`lenient`:: +(Optional, boolean) If `true`, format-based errors, such as providing a text +`query` value for a <> field, are ignored. Defaults to `false`. + +`operator`:: ++ +-- +(Optional, string) Boolean logic used to interpret text in the `query` value. +Valid values are: + +`OR` (Default):: +For example, a `query` value of `capital of Hungary` is interpreted as `capital +OR of OR Hungary`. + +`AND`:: +For example, a `query` value of `capital of Hungary` is interpreted as `capital +AND of AND Hungary`. +-- + +`minimum_should_match`:: ++ +-- +(Optional, string) Minimum number of clauses that must match for a document to +be returned. See the <> for valid values and more information. +-- + +`zero_terms_query`:: ++ +-- +(Optional, string) Indicates whether no documents are returned if the `analyzer` +removes all tokens, such as when using a `stop` filter. Valid values are: + +`none` (Default):: +No documents are returned if the `analyzer` removes all tokens. + +`all`:: +Returns all documents, similar to a <> +query. + +See <> for an example. +-- + + +[[match-query-notes]] +==== Notes + +[[query-dsl-match-query-short-ex]] +===== Short request example + +You can simplify the match query syntax by combining the `` and `query` +parameters. For example: + +[source,js] +---- +GET /_search +{ + "query": { + "match" : { + "message" : "this is a test" + } + } +} +---- +// CONSOLE [[query-dsl-match-query-boolean]] -==== match +===== How the match query works The `match` query is of type `boolean`. It means that the text provided is analyzed and the analysis process constructs a boolean query -from the provided text. The `operator` flag can be set to `or` or `and` +from the provided text. The `operator` parameter can be set to `or` or `and` to control the boolean clauses (defaults to `or`). The minimum number of optional `should` clauses to match can be set using the <> parameter. -Here is an example when providing additional parameters (note the slight -change in structure, `message` is the field name): +Here is an example with the `operator` parameter: [source,js] -------------------------------------------------- @@ -63,7 +198,7 @@ data-type mismatches, such as trying to query a numeric field with a text query string. Defaults to `false`. [[query-dsl-match-query-fuzziness]] -===== Fuzziness +===== Fuzziness in the match query `fuzziness` allows _fuzzy matching_ based on the type of field being queried. See <> for allowed settings. From 596a6c2155849c5494a6ed1224a4d05fd5e709b0 Mon Sep 17 00:00:00 2001 From: Henning Andersen <33268011+henningandersen@users.noreply.github.com> Date: Thu, 22 Aug 2019 22:02:49 +0200 Subject: [PATCH 25/59] Fix update-by-query script examples (#43907) Two examples had swapped the order of lang and code when creating a script. Relates #43884 --- .../client/documentation/ReindexDocumentationIT.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/reindex/src/test/java/org/elasticsearch/client/documentation/ReindexDocumentationIT.java b/modules/reindex/src/test/java/org/elasticsearch/client/documentation/ReindexDocumentationIT.java index c2b907acde44e..32f35d29a9e45 100644 --- a/modules/reindex/src/test/java/org/elasticsearch/client/documentation/ReindexDocumentationIT.java +++ b/modules/reindex/src/test/java/org/elasticsearch/client/documentation/ReindexDocumentationIT.java @@ -118,11 +118,14 @@ public void testUpdateByQuery() { .filter(QueryBuilders.termQuery("level", "awesome")) .maxDocs(1000) .script(new Script(ScriptType.INLINE, - "ctx._source.awesome = 'absolutely'", "painless", + "ctx._source.awesome = 'absolutely'", Collections.emptyMap())); BulkByScrollResponse response = updateByQuery.get(); // end::update-by-query-filter + + // validate order of string params to Script constructor + assertEquals(updateByQuery.request().getScript().getLang(), "painless"); } { // tag::update-by-query-size @@ -152,16 +155,19 @@ public void testUpdateByQuery() { updateByQuery.source("source_index") .script(new Script( ScriptType.INLINE, + "painless", "if (ctx._source.awesome == 'absolutely') {" + " ctx.op='noop'" + "} else if (ctx._source.awesome == 'lame') {" + " ctx.op='delete'" + "} else {" + "ctx._source.awesome = 'absolutely'}", - "painless", Collections.emptyMap())); BulkByScrollResponse response = updateByQuery.get(); // end::update-by-query-script + + // validate order of string params to Script constructor + assertEquals(updateByQuery.request().getScript().getLang(), "painless"); } { // tag::update-by-query-multi-index From c018647f11b47b12ce1c4dd0a729e96631cebfea Mon Sep 17 00:00:00 2001 From: Benjamin Trent Date: Thu, 22 Aug 2019 15:15:34 -0500 Subject: [PATCH 26/59] Adjusting ML usage object serialization bwc version (#45874) --- .../xpack/core/ml/MachineLearningFeatureSetUsage.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/MachineLearningFeatureSetUsage.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/MachineLearningFeatureSetUsage.java index 2437f00337842..4acfe8f091cb3 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/MachineLearningFeatureSetUsage.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/MachineLearningFeatureSetUsage.java @@ -52,7 +52,7 @@ public MachineLearningFeatureSetUsage(StreamInput in) throws IOException { super(in); this.jobsUsage = in.readMap(); this.datafeedsUsage = in.readMap(); - if (in.getVersion().onOrAfter(Version.V_8_0_0)) { + if (in.getVersion().onOrAfter(Version.V_7_4_0)) { this.analyticsUsage = in.readMap(); } else { this.analyticsUsage = Collections.emptyMap(); @@ -65,7 +65,7 @@ public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); out.writeMap(jobsUsage); out.writeMap(datafeedsUsage); - if (out.getVersion().onOrAfter(Version.V_8_0_0)) { + if (out.getVersion().onOrAfter(Version.V_7_4_0)) { out.writeMap(analyticsUsage); } out.writeInt(nodeCount); From 9f654fd67efce369105df6d5ea633db5664a59ad Mon Sep 17 00:00:00 2001 From: dengweisysu Date: Fri, 23 Aug 2019 04:16:13 +0800 Subject: [PATCH 27/59] Fsync translog without writeLock before rolling (#45765) Today, when rolling a new translog generation, we block all write threads until a new generation is created. This choice is perfectly fine except in a highly concurrent environment with the translog async setting. We can reduce the blocking time by pre-sync the current generation without writeLock before rolling. The new step would fsync most of the data of the current generation without blocking write threads. Close #45371 --- .../main/java/org/elasticsearch/index/translog/Translog.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/server/src/main/java/org/elasticsearch/index/translog/Translog.java b/server/src/main/java/org/elasticsearch/index/translog/Translog.java index b98f0f2b6438d..2faac1cb6671d 100644 --- a/server/src/main/java/org/elasticsearch/index/translog/Translog.java +++ b/server/src/main/java/org/elasticsearch/index/translog/Translog.java @@ -1641,6 +1641,9 @@ public TranslogGeneration getMinGenerationForSeqNo(final long seqNo) { * @throws IOException if an I/O exception occurred during any file operations */ public void rollGeneration() throws IOException { + // make sure we move most of the data to disk outside of the writeLock + // in order to reduce the time the lock is held since it's blocking all threads + sync(); try (Releasable ignored = writeLock.acquire()) { try { final TranslogReader reader = current.closeIntoReader(); From d05101b9e5356db2667bebd8fb0960945915d5f2 Mon Sep 17 00:00:00 2001 From: Jason Tedor Date: Thu, 22 Aug 2019 17:19:40 -0400 Subject: [PATCH 28/59] Add node.processors setting in favor of processors (#45855) This commit namespaces the existing processors setting under the "node" namespace. In doing so, we deprecate the existing processors setting in favor of node.processors. --- .../netty4/Netty4HttpServerTransport.java | 2 +- .../transport/netty4/Netty4Transport.java | 2 +- .../lib/aws-java-sdk-s3-1.11.562.jar | Bin 0 -> 1010205 bytes .../common/settings/ClusterSettings.java | 1 + .../common/settings/Setting.java | 9 ++++++ .../common/util/concurrent/EsExecutors.java | 17 ++++++++--- .../admin/cluster/stats/ClusterStatsIT.java | 2 +- .../util/concurrent/EsExecutorsTests.java | 27 ++++++++++++++---- .../index/MergeSchedulerSettingsTests.java | 4 +-- .../indices/IndicesServiceCloseTests.java | 2 +- .../nodesinfo/SimpleNodesInfoIT.java | 4 +-- .../threadpool/ScalingThreadPoolTests.java | 2 +- .../test/ESSingleNodeTestCase.java | 2 +- .../test/InternalTestCluster.java | 4 ++- 14 files changed, 58 insertions(+), 20 deletions(-) create mode 100644 plugins/repository-s3/lib/aws-java-sdk-s3-1.11.562.jar diff --git a/modules/transport-netty4/src/main/java/org/elasticsearch/http/netty4/Netty4HttpServerTransport.java b/modules/transport-netty4/src/main/java/org/elasticsearch/http/netty4/Netty4HttpServerTransport.java index 769e883205de3..6c1579bc28362 100644 --- a/modules/transport-netty4/src/main/java/org/elasticsearch/http/netty4/Netty4HttpServerTransport.java +++ b/modules/transport-netty4/src/main/java/org/elasticsearch/http/netty4/Netty4HttpServerTransport.java @@ -152,7 +152,7 @@ public class Netty4HttpServerTransport extends AbstractHttpServerTransport { public Netty4HttpServerTransport(Settings settings, NetworkService networkService, BigArrays bigArrays, ThreadPool threadPool, NamedXContentRegistry xContentRegistry, Dispatcher dispatcher) { super(settings, networkService, bigArrays, threadPool, xContentRegistry, dispatcher); - Netty4Utils.setAvailableProcessors(EsExecutors.PROCESSORS_SETTING.get(settings)); + Netty4Utils.setAvailableProcessors(EsExecutors.NODE_PROCESSORS_SETTING.get(settings)); this.maxChunkSize = SETTING_HTTP_MAX_CHUNK_SIZE.get(settings); this.maxHeaderSize = SETTING_HTTP_MAX_HEADER_SIZE.get(settings); diff --git a/modules/transport-netty4/src/main/java/org/elasticsearch/transport/netty4/Netty4Transport.java b/modules/transport-netty4/src/main/java/org/elasticsearch/transport/netty4/Netty4Transport.java index af5e8b66fe70e..d3e43e16dd5f4 100644 --- a/modules/transport-netty4/src/main/java/org/elasticsearch/transport/netty4/Netty4Transport.java +++ b/modules/transport-netty4/src/main/java/org/elasticsearch/transport/netty4/Netty4Transport.java @@ -112,7 +112,7 @@ public Netty4Transport(Settings settings, Version version, ThreadPool threadPool PageCacheRecycler pageCacheRecycler, NamedWriteableRegistry namedWriteableRegistry, CircuitBreakerService circuitBreakerService) { super(settings, version, threadPool, pageCacheRecycler, circuitBreakerService, namedWriteableRegistry, networkService); - Netty4Utils.setAvailableProcessors(EsExecutors.PROCESSORS_SETTING.get(settings)); + Netty4Utils.setAvailableProcessors(EsExecutors.NODE_PROCESSORS_SETTING.get(settings)); this.workerCount = WORKER_COUNT.get(settings); // See AdaptiveReceiveBufferSizePredictor#DEFAULT_XXX for default values in netty..., we can use higher ones for us, even fixed one diff --git a/plugins/repository-s3/lib/aws-java-sdk-s3-1.11.562.jar b/plugins/repository-s3/lib/aws-java-sdk-s3-1.11.562.jar new file mode 100644 index 0000000000000000000000000000000000000000..2df50f5c1c024664067e9aa1367c05797d8e7052 GIT binary patch literal 1010205 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

*wrZ<1jW-xn{31Mr$tx;^rv@Co3Z0l-;ean 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ξ#my}&?F6PN&szbAF&_D)p{ zj9Q~OOy%Lc(lB|j=l1~ObK`3RJI=+rNpd)SdrH*>hu>3i@%7*ZWx*?++K7CobbP7A ze0c_%lBH71jlorGk$fJfno0S~qZ?I4_kg7_;aDYBM56c6vpPG8`F_mCgqnxfFp?CB5Q@a{ zUuvmQG?vwt`!A1>R_HHiwL&~*-l6t$LYAGGDtFKscWsTpoxLC!f&m>_RU$wiH( zDfbMA_k|?v&>h+XgSh$DRTh!#=}%Ajh|`+<+uhyQ0+} zshPsqi#v{tZP{7$1q!VxS+-09n!;Hpe6F5WrA=lO4^8URWokWQjc<5WQf3bv>R8ED zo0jEzvr3vW<@^#eFL+gQjY%+TRd*WI%Cvucq^cttSAn}r|BXrvo&{GIfta@v&_2>X z5$OEKszb%p#{uBz{{P4NsH@8VRKa|AT&L!es{Q5e=~g@!S8k3pC7q}69X_-vPV+gC zp#DC6f0W8*>{XM1HU#A_)b4DbJ9Q_Ng^7&k&_DNb(hK=;Q)FWk>@kRlK(bp$3``%} z7TZYA8(^AKbeH#m%@%qqNr%=BkxxlZ_Gkv*4jTM?1@|+OcKgs-(5@w(LqY;rVwEI8 zLU@rea#>kwOnL|D69wckHf2ERiQY@lfMBXzxin(lDEQrmuy~{52%?=~)$oc7FX}ZM z31pZ?SJG^#Z~`Fx(1cAWV`*v3Cs4^DHG+J4?Ec#hvjzKa3u>E(Vwba+_$k6mVNu7p z$1nk%Q9Bs<20Y{g=RuW;{qCTzMGp?F=z-s_3_v$N-;e{`@yTP{gu{!>qB-Z6)e<4b zkhWMOiql}vme1Ghg#6mHr>Kr|E1#qxlurK zb6Q~lri?Wpj8wbQ+pfV|Fd|Or|IB^ zp$Qs~Ho4&tn2K5ots%6mG1h4#f0wBgre|cgnb11SlT6=Qg3Xpu$4gavNG zQ9Pt#C^&lk2k^dNPzZZ@C9VAq9 z<)Y9oV8~3nO=Iot&owYit9EnsQ>?3_>mVN0GCGwo2HjuLjA%|k$`!D;g;l5@j!}r<}syt zqLT-vH7hRWum^|($u>*e#8xZ>OpWK~ppSZ8W#v4UIj^592^gvN3N6lXt+=gT%iF8B zYHgs>M`qqFjP#e#p=w(aGnEeS5k>2p7N*>dur(%&g0@;*eI-rozAvzQQMWc3TKl{E z6O<+|R`XSS)~&^1Fl?1(EPtwaV-p~e`@nFp*oLt%H4*nJqfuOBMrf4~ z?rKs*T|eX`;iwnKE8GO>c>vg9jMaOp#9wO75DO|hfZ%EQSEpg=Y(-$F2w7oMdYL&m+D7WeQEaL3x?A}#${{$ZI2zy(r+ZL$O((!@JGR@`-+aJtFArnGVL{<8pvN3yAS=9Z zok$ckjPKEys^br}x$26s$~q9w9Yp8B3PsXk;?Lxu^OUU{*9I7&`5B*9pS8@lo@*SD z)=hN$2rKM3_I+#6HrYh|v_TKboWi+(nC-;d=MO9P2WV3z<CIS}-7<$Tc~F0an;`qzJl1B}R3e4Sr$>E6jmn3j=z$wTf_z zJDyH0%XGClavQ$W8LP`BFRMcooF{3R2|Z7m7$06{Pv7E-sEPZ&QoLH}jVvB5DVJg<+QLS)8*$O^oYOBiT_#ml<~qPQ`p)9dDI&gjm}Cfe4-%%%_@ zkLKnWtU%NndmlYY?Zkv(p2#<=IBy<02xu>#I(YvYNpxneM0`(KA6)}0=X9_~-I5Xm zzEbENzX^j0XQ<2UMi?!g*cY|M{DZT7<`|NV@AzMUwQkCdOn3?IHHEiwQ@#7=*W;cS zgxqL!h--sH@vM~L*D@KLCZ-n#b#Chsq+|5b2t<`hd*na+(O*V{j3zS_cHe-$L|#u& zSw}9yNT$v31GnG-@H1Yj{ec%!x#6?iCuRjFmaWV*1*R(o7GAG(o6kdmaqz*u8=u?O z;9h~rPH>Nf7o1^Cnf(=Qff=WP!#+Q8FewFQ$4Q9pjT|5tyt}?3wVcMPzxt=%UFEdh zv%LM6RG8@eSN$BQL#Kj*IR44qRZd-5>ED(5KR|7&q1#UhkX2i&;iOg?3lE$P!bn(o z>u<_(I^$Y-f-yyTG22C6NVSf&@t6{FeW`TyBas~(XL(D~i#faw3n0nzv94~Kp+50Z zxTp44kP*rSpVj?kjK~Lg1MpH~sw8ok(6NfsKfOOB*J*Mmp76(S6^+K=TX4}Q$`C6*8T>_r{h&oHKw9rU zOyoER!`{bgYh?d$$1&A=fSpUfj10$?fyb3*CHye#o*-4TGE}p5R)~-_M=_DpWU-iRlE~AS ztk|@PEbn?sA=9g~;i(FbSax(*_)1NPlyJp#@6tJM({)^aUXCKEH?CfPr`ALdWn?<{ z@g<2a{LMOTXl$^sR@Z5=Fg2`PFw7SPs21wAt9 z@!M~0sjLwTTg0;ajK~=c~kryiKdMr zpzPYgcXCnT_aI&mf~Qyv>}C<$g~QA)x&@sOM0X75bZlWv@2y8u`c`u1y8yYN#1{f^ z1Hw;~5dAM5g6Mg#5qUV`CF&1PGy0LqLaarHYK_cnu3tzOL*r@{R%|6^E z8ug8@UmYS}PVg5_1_DL~E?T?NZnXKxu@TPP^t~zIGOsD|1qS{F3!W_n9gnDT@E~)z z*0-ZOBA!wXUYHc)S@!YF(D*2JRyZdnUn~IFJoI`F_O8%hP_)S}(%)CVEzVx_kud9p zc6-v5x*&5u%+hg3m;y7)<}o*NcSC2XMu)HDQWvwmQ%idQVqNo*zw{dA3eqH0sm~`F9eBf*bGCBIxGG37X@%|G^DX#ns8m72xLfm+d^j z@&8$E#3@bMf{UWoXf>ZAB+Em7d}dLaE1_XKXfaW_5{{3 z(Y-#WD5~kP{QK~fpda@a<~b(O;NJXNkNM>x$->b#O3JTi z+Q%{$iQU>xuqZCY1(NP=(sT z)AWX6b}>pAz%cAMrAnl5s5{BBD+lh&Hv2~wM%%0hwPklHTy{WPhod&4s;aU&?v@u8 zGkhF*J^_A#U=2VYBvpkGw1E~WOR15XXg(}FUB~YR9yffsI)`^04`I%hFOX(~ zzy==vM_jfW9phf923EPT^VHWxlvQMLd+qgwEpy!QgJ{Ggh-!cgb}3W*X=}3ctj|R8 z6fW2|&HXyW&2x+4dYJ^%u8KcNSNb;v3l)Q3^@X_#GbCvy8?vVF`DAysp3_(qR@QnW zeJ4M7VjmnbYlZa-C9SQLesPTyA-=mEuuP=U_wDfS&be3OF0lb!lFz-sfk{Dg4IPG# zUZaWd>I-Z$kW5?2aV8HsrTVcU7ZJi#bLHl7DhjoUM8z4R`AG=}1^wBWv~v@qgZrH5 z7WZ0Uz$8lL6Wnv~E%9$JU`CHv3MK6WFB-Lp+P9M^DmO$O*yS0psYrASwN2cTs8FGh z-{}BKL z9LFlBL>hUKeh7J*U74TA(EtGYYx=TRv*prVLb^PYi8~HB!Bc7b?mD*jkcYhZk5J7% zCSN)~kkPp7(aad!NdOUJP#L;SGr4wBS95M3kXy7H?k|1T#buT-U z&aOy(=Uf6dyJ_-0Bym;c!qe)S>5IF%Yh_;~*e$e2_=ivgd$%_bRF}nJ6zm4LzKqSkZTK_Qm)dsNzTGs@ z@2F}H?x@ORw&onx?RY^*Z=~B2T6%U|=F*o%B{lNHbokL#u&^x33>?sa2fip31k|hNc zzg$588L;VxsvKc;)}Nxq_}8G6#|zGXQSe>imF*LTvS`4eHsq+jAf;0 zDXlJE+!w}yFJXiMLF79Hzdn1Cief>dWp-4<)p(1`sVKlj!v!}9kGibO1BzNWvcH$7 zMdLRHieG5TC9TYy;;+X-pdWRxSBy(HX9T@U>_-<`Xubmn0!LQ~VqbOEKEI>j)+ebi zxaE|xsA=|*opp{DL_U-+$jhP#D}GC}645P43c$^hgs^(oR4nNVcJ)mtQ&cYumm@#- z`=!y}K;LJcP{uxGO9ge_tL!7RS~@7Bi5oy4D}=G59+8V4KpK@3i9{dck2+>6m#%e@s3S`aPTB;#$!N55%ebqA6B<$8QQWdRDhf)YvXpIS?K z=)M&mdVPM|qX`n|I365G!^3o5F8iHbrKQk%vfUXIWbOp@oKT_dayp| z^{7PDtO~6{OyGMYgd+46lIzLUdm|{fjWD;&vG{WrnZ?2GCS{4kUUjpl!NO6M-u%}e zC+mZAIE`kT#F#aWMGOr;iyuP4C-rMo0&Y+LW#-pUF(@1inkxRvVYz+&^9o)V934!EjWBLDQP@;tE;&XoUPLn}1O0x?C0^w->WvLzHS#)b!3y;5#*44vke_t2DVp$;JI0mg z);q@KEXMXWd|xi0S!HcWZ`~bt8C&0$*G_=O*74|P<@aXL|%?w zVl(xMx+PBFkD)ypZ8M_b|Jh!#(e56`y2P5|*fG(P!$k+TNew1^iJ0CS`L=4s^rUR% zBw>6BdTR>bqV0A<;e&NiWa@jA?Kl3P12iOD5|1&m%s>ok+ zqogP3N8Q~OVCwMy_9E>32&AzBr88=}b-Nn#XsO^@vk98^rIgf@LlpJKJVZ6xFeY78 z5K7H$%$%CmJ+v5TkW4mFTmvtjMjWlM^Z(69prDSW=GHOFLB<+(?OpF`EiRpZJJ<}@%a z%SJ*>>|~Er=i2~WEk{cD1j0l*?M`)!9cqq&zk>Phjk0l^G|e5#>g4K>++OoN@C6iI zXFO52s4Sd7IT;L#{*r7zu85Gf0CN>}IN|WY(ZEZ#yZvdZ96!wr_v|&Z5oWr(+H5S2 zqY9dJin9wa97@b538}m`y%*EWBm9J-0yCRxCc<5&a#+Y=gRx-d^OgwQsi@+;bo#Yz zXc8JzFPLr*t^wf(VVy35C$<d(v%TB9u-cqh_9F;CH7|9)PXZsM?L&w{VZ3h zrM|)3nqI`h8$}Ir@~_EqiW%c$R5O#%Gi1sa)nlKH3~J%KX!RJqdgWE~5|Gs1>n(1h zfyM-nNP%|SUf%b0NPQmWat&JqI*GwIbT)5fW$7d5WePuD{X>ps}Fm20w zQk|Kpx&cX*v`1mpMN!dWiUxaWknI)=hJ%VJ(ra6e6n#pDGE-`cU3)+||(nLotRl@60PC!ga_5DZg+?#h#=e z*4=p%+zq$3NHEUjp~s<;Gw=z&iN9r0SQsVwHBiM#)qV31H>F=|+}&(U_mW7#2~V!_ zT?S@o=Q>bq1W&Zp%Q0OWZ7JMrr}!UCU4avqPM)Z;`oo%@r9kCfj6yV(FA7jH@b@6$ ziv&wozOlX;7G{z8UMf0}=EC=d%g_s<1`r5rhW^18YhNBrfu|NbAFCu1M^Rd2dSuHj z&i8iUBOa0dbWb%hUxrFjmSsw{ubGWe?&XTnI0)_QTIF%HNO5UGQv%U%lHH34^qM0W z3}1PFnZ0AmCQwz|i&V=g$$8=QJ%&UZW2Ey|l2uw_4VYkiCZP#TO>QW76p~^md3ahL zrN%e6s&rDzBENIGv-K7mT6*(VlLb8T3KzA^EIiO$V+P0)8Qpl`+Ws~wc_)5eIPFO2 z*m6{<$2-$i3o1d0@%~iy>AVOy0F>#mLC2y>;Ibiz%jaJs4to!`CQzqV*6d9i(K(U6Hf9xpIvz1n|fL=xM}oL&%tF(4ElAtx)`=u z1Z@o4|Hm;n&Dn?Kg8rL?9$8P6w<(4n0-X(r^6B{kL6S-AL-6vW@ry483_L{@588S^ zOwQo*(n8MuTE;|WJ!EXQBQ95*4`7M+&$ggLs0soaf7|2E7d1(G$%NFVco@fa-Babc ztHU5YHe>LV3S#3d?${#F*cG_FIAmN8DX3Pi(^za7jB@V%oX8D{OKSA+U>F|fE2k>h zb0s)pr>aSwgb#*UoDsI7J1tqN#BYi zJ{f*$x(Xy|vC?@oSG!1ep%64*6ngvD|C+Pfe5@qPK{M88P&elM2V?!ep&JD!b2~*R zi~pEMORNd%GKcAMVKrXaMLR6KGgbNb^ZF2du20-|e z@C%K<+taR{JeT`K)1S4iorJ5Z&RI&*sB5rW=Ra#!TfJ}RZq$8!&%dF9B>mCDV;?lS z6LR3oF&V$&jzsG?!cA7oO~RPzsyD_XK|w*aYg*GvIZKasp>1F!pS`WdlG5dhU^bFS zvNBu94q%7+ws-4qtQl=FW8&4NA-1O@4u+w3Icey^iUZaZ`fivStxCL zy$)k6c`0#pbNo>@DW{4QX<(vhSNxh#l$O=-T3k#s%WAig@r8$jK(m@b@k$&<3gL-x zxt(p`+O}uUX>lu=g)kLNptm(Y45FLR*3_4)*6y~?TLr4ma}##5qF|q04P=hY#QNtl zGkK3qB}O_vQ;<6VOCPJoOcd{W!tTO2fjr>KrZFiWjGOi^#?r>l)hDih_{3Pq5I%a5 zKiaLA^^Cmrm#77%fm%sB#FT?_#A_SFaD!{#3W@}UX4yV#q3*Jd++&y}F^F;}u@QiL z%Zn-CzLB2L@8k%KJqZ0qj-sDMqx)^Nk*q~S6WDLz=z3kAo0=18nWNGNYWN~gT4o~e z_hWR=4@yPndE3##bHk)-F!yA7+1}@n&rYfG@QG9*-HVZ`d35|)MFH7Yd1SGssJCG% z$i7oB0mgP7ckrrE=;kF~)R3t+WeFVeOSkD#-{9nUlD;8G0N1Cb8zd;Kp)MhVj{43q zZ}N##?pEP|1!TmPaJtHnCo)Ic3uWfR41PCkQuMR^`S}SQl3pQ&38-r>)m!BE(3^1k zU0?o7wpo+}b)o?}_kAEV@1F=1KtVJAKKi2O_J2d}T2mE4L29^T1vc%5`ZzvcVabeo>hhqixTc1omjSiv$Envl*qrxW{5gS;?2T>7*OcAvuI_L)@ zVM`zfpOQNz&TYzM;95#?(g0MtDtAv7qug8pfw4hfqUz9Lnba2-5Z`79<7sV!`%Uz? zqGih}Yw$Xo%&3@bneFIDW=xu_r{=|6)kc&V07q>$m_q-WJ_K5iaBDI;_ zU&3+O_d&u8s*~jh0f1%l&#sUmD_n-nV{rRsUG2MUu2)3E&5&W3O5|dCi^uL&nH2}I z$t+j592#YbnhJ3N0-+&2g=Cvoy%X$9y&1-()o~GfXGlEH`_7(CE3!>*n6~mRI%8Jv z_3j_*=0k$56>Vw0l-LjSe@L0TCQl3pl{~-hukqHenJz7>KTNT-YCfBDt)3aazUvUi z^h^}DosyuM@wKfTU`-o2E5>bW*^9XyMOy(oZ_qtj;yz*UVW^HU9OK{8f(&!thFj(b_I;3w4$e!RqQB z0V22rRf1Mx#H%@c{-$l-CMl~uGOjiu$(*664oS(xeyskGm)Ybe(-$!Ehx7rOhqM8f z6n0qGVnnbX2!XrL$Zg0Hu{9&pKaghr3{ zgrp7+84X(-P)C!mOtM6$#Vsa^9~hei#p(%tg@sY&zYZ;&H`MGYeEL}#Lp7koAJ&6h z9(n8@#y0m#mz~XPwUaw-3Zzfh%(TX$)(eliIla9l79bBcm$Vz$l^$O8H0}AElM#6j zzgR=@!;aH0)XnL1*!H(hMI$nUj;#IKbI>cEKf&_8sPJPvO%gpqE+yoQZ}gkvwV(1e zpK{|i_LnQnf(T+1mwu+rJ51xC7~6P->Xl0ph0jAo2Q}-zVIdm-*#ULzlBWy7 zLX{}3G?5S19GKO@j3c4M5|Lv)TJ#iH2tQZ)hCza)kDb;uf zo$rDylLuF1r*`-qHYwR6%@MUfez~BVXPWT7@c?CCnC%DJo~lh3?FBc1-tO9RE3q-XGJOJ$)Eo`r85N)pe_>R5xpY*ad5a+%4icf8!A`=!4P3?M#s@~?h zg%;!ZyI0hYf#*ARp5z-nP2mE+lXyCxwl!}njXHl|B7Hh<-j z`tnApn_h!UKEX)RAv(04QNC_4*5a(oq$O&67m8Z!Me3v_QxBh^s?Ny%b&a+DvPsl2tg#99OyPgdxDNxR+VkFM{X~<$zqEqPu2DO zNoT&>Fp?X0-E}43P@F^D&Za-TlYliGL@(Q|8JGlQuZKn5zHt8 zMT@f%`_281HGiVHVRRwRQ?amM3jD;%`7NgOC?I&4SRt~fyRr6L15PMnrqbU&1NVSE zU0dcB{L8_&R~tG*^!FkMIQH@dsPBiR+6I#%^m0jC%#*bn7^V|2yA@5evb**N-+u%r z=5!aDp2)Df6Gl>i`&lqdZR#x`dg;^N*GQ-RJdEi+#~{))Y+zHe`(E2M(nMLY9nLd} zn%YZ7IqNpT6`EO#&T8P0nY5!uW-#sCwfu@G{vzhcdDh1e71fEH%Xewlc?p!OA39df z4ONvy`N6%Ydfigw+mx&i)1n}<_>KK4$ducKOb_1Xv5JX=$1=Uj{D&673l8NPw)K>& zV1|2FhBb?F#Y{@YOPpzElmU|36c1WkCWCB&ev{~bD=D_Vu}Osd>HUEZzMGR^fC=E4!I{mW)i9*!`aukVA! zJ^72SH@+QywrMy0bMi@sqO#@WNb#Y%Cf4~e{Z}B9PrSI`a{8Qf*%>IAjIg5MJ1P4mGbkyqVzO9E&g}Onh<_M-KP1jfPayMHOkd+G=}D_^|JagG zwnTl!{8oO80^OKK4jf|Y)g92v2WxUn5(*jb48CJ1gPOJ#Q9cY>A8SceQj<9so~G|f zQXpC^uYwntk@+U+;ZR^|s-c7H!5Et;`H4djJ8#)}(MTnry6Ji!uJaw3B}-i5N5O?R zK3}_^Ny!(Fwk0oAUpZf|zb{}L8gVr6u!JaL&0Hc{ml$K4i`R6-iJoqTRn-752(hoa zUW)1?8SZW^)IzBs56Ja^vYr0JRISfYYJ47IewTY0LU3NFQ za)*d;_wmi>W8~xSY=dm2`ces~W(R?WsDF|T@IMNbzhI8PmG8gZd}`JHJx4XS80z4t zFd7$25ihk-#wST5L1y>Mhr)54-=6W?SDZ<21?0hU<+{1YmT=ONAN-W9##-!j;M}nA54o$bj_v zTd7%@7p|r4J+gRJmVX*z3=`I5iQtXJv!r(s=l(E`sdVZ0nz8BRi>lb7wVRa47#YN5 zom?xyl;f-$Dy*M^Q7C=CWmEvbgau&OD^sR>O+<>L+`k@8ImO zVfr8R@Bg{;DgdlZ?PZ+oL7J8SwNfcl`Ez-gz;DgHB-m<`=qDW%jPdJky`Zwvaa z30jq8)zZ&V-Q-$sqn!ke6Q|wJRJ4&0B0(hKxIe*4dB61oEImCBrhoFh>>ajWe##$g zHQjj^q+e~h{-mF^)^^-sZn`pwwM7v37BPo?&Z$v5uJf%$NNf)h^oVTP>Z20o-0S>S2^022&1HX|XgcUW~O zKR)tB;po+wvCpF1M-wx>Op_oLm&bg0YBxRha;~rh@UAm)F?Z;C>^;BPKrLe67*jRp zYbvzP&{X>-+mcKHoU2(xZz&XnTP6&Jvg_Oj7ag_7_-1*EbbeBSM_-Vkx`|1WJ(Y5u zc~p%$rU@RyzKv{UdbY^GBkPZDuEs2ER$Jj>+tBWF;ogBME8L4Q5m?W_X6dO1w^Th< zKCuaM06sa_bh}r#`czEPwxe!kSt4twEp897rwv zPau>3DI@<4ndGH9I4x>nj(xN%o>9BW{!Ck#cQ6cISPHmWud695o4Zkg$07~kkMmM; z)kO3`ZB&Q+**o}0v<*iAzlxJ`GY;p4bWfbLD9`OYd#MphBPl+ie)g&0|gd4pLvmCEUB_q;njU=3Agm3jGVx?yXlMUAz36Qs7V(2b|#hbB3j(pU8dyntcs95Fdnnx^;lkObX zG`R|g5SCoW?T%|Gv!X5SER?=e{M+{!B`b(@oxOxjEOzGW2_SeGEE zS1c|4CXR4#SwdOQ=g$i?x3%<1Kt$Zbj8F{zrYw984ehegud9HYxyw4a!#|2-?_%l7 zJ!A??gE(cHZ&XdO4I4{xp{Kou(xh|sbEs4FeoVk4hM3oL#OI)ou;s!3eUL-i$Gd@5 zsvram)<2&484WGKwsV!uFk$|gwYSha`NEM@k_5GIEH@kb1@%kyceH5TPVksH7i43# zKXJwp^;cYlO{#hr^aLd}^2hn`?q7;eFb$=r1KhJ%=HK>&)mRd_EA-~3jo3TRRoIPEp#cmlpTzgqJKa^lXe*#OkH5l0~?ZrwGhr~48e$!-O6 zE357m%N!v|dpoy3M2?KL^qayUdB|rv*Y-k0_8(|Jb0FIw8p-?#B6Y#^v%7!4M+WscK*&d! zxY>$#_%JyaXHl>u#;8OQE)>^KM`Gj8FTKo$;#?WREXyDSsM52Enms{QLo`Y*yIuU3 zfGLy%(m@1teDguh8UIAT_`d=sQIIpSkGqYz+uvpZkbvobn?bAQg!-Zh<`=rwU~~(+ zBuNbedC}tSkPyIe?2!UYhF0#tbs|tlSO$Xz0T$-t(;LFw?sN(aA()k*_k7Bi)IC2N zJ!|Yc6%<7yqfNiQ-!HufE0<1NU?zl3F4o~WOsEkPyhe_y?m5MD(dBfV;;O)6JYq|q z%stcm&_LOgC8n4OORW{7hGYjB?8R0>4kl!NSGxruWzlI{v)`I=IBVLbyrj3E}S z=7OBrCVQsV;GmWzHlltCmAvjwkp2N_6NjDJmLn;bK8`k*cSs8<>A z?FY*fXzkg5PB2^1>$^Nq;jHSx_7t#OU$J=uoTD69&zaH_iazELS%j`zkNBXd2}X4B z+oMBu7D6G4wYJTgvZJ^~E_2ItBy|UGckiE&*Wht@n^(*XUYXcy2HmSSK0TXLumg zQ5ZAW=x0n)*?GuFLPpMUs8@JGo!7#S^6^YLUb^xaAE<=B?`_BXL#T7wun!~>WMUF* zj$^axko;E>lzF%|0uQCP8$hl~g!-OG%H6!7m&QBoZD9dGfOj0<1lZBoR~5SciWKiL z5fDA(QMXU z9{a3`F;Jb|Q{8Ja>lj&GD!;GSP>o$sO~QL-6N+W@ca8 z6$&`-SD)w<;fDo+I|&r}Lb~{+U4aMPr!i%6HiltdkDb!!Oz~aa6V3rweU*z9vlhQ0 zBK*Dzx&uP=u$K?1$R}i1yh`YR1N`5xPfLxdR*rh*0Tu8U>9ZwrGNyW`WK`-x@YRGv z-v-=!@JhLd3R~zI%Db)@%5q7<6L8T5GGzZh zhdIn5R(Me=_pl|_Tp>qR^1U2y!`@&pjIWQGru*)E3Z>UkQKp!R2A@SBI5)UlPzu=Z zJ`ldl-wtCxSPs_8$v&!HFi6`=J8pB_jS@8xUA%}|)Fb??_s%B@Yom3LPGBCNE1}-( z&!HCDU<3Y1$;+?pAP!Cf?jaJnEq_*`^`^96^VFXi;J(HauE1*9yBKqkR=6u%kth(f zzhmbla^ju-ehqG%OL%?r46!4zv@t22VLr3>`$nRtN0>P6b^WBal+b5VmhHUpv3RiO zCQ7kJRA!3`qPK_X6$!Z0nQ-#unTt(GPDJ6?onL0=MQXsO$Un=KOmvKVYK3L;b+Fg6 zrTdiqSJ*CZ62He*p?-=FAibD(#ir1B)&8 zup~KPnVrid@eS0>Iyrtv77`cAsH@C7Anfn~?MST`E|43+eq z7q785{GWYiwi;X+f?!)36(Y_JEpT0;F)W2)_Zz3bSCh@1W2a+K zHGu(vlpO!y*7qNU14zDXJj^xzc+vQHzd6MDl2VnT z%P>eIslzf@f%qIc9np=pqMv^V43S2R|3TcDU|4|_Q?8DoDmYoFf%CJMpj~XnMD#^S z+YT~+&-Wsw->WY=H!>nYGIY;k^g4uT)BS{lp$gxx`8Kl=CA7QW80iVeETcOAScYLm zab?T%#D(_N0nf^z4L`xV`^-0zef1lR*P}m=k?WAOpv4?TacjeGo{dZ=HWLCwc!4HL zB@k(O^sVdRiI}~Co){}CoW|_g+^rAI-gLdShlo)-6Qeis5YIiMVg+v>`^ufxMDfx8 z+i!;(=jmVeay5lJ+$*X|dJI;~?`kG+ha$^zE#z>?w}_6n-jaPK12^u6OiZ4<#+Q!J z4Z9(pLRLuM;&3=oJ)lV#P8&+MWV#e+8#cgo0 z(OPif`TueDj?s~>UAJ(@s&t%=?R0G0wr$($*mlQuI<}p3%#Ljv9elMPooDayj_>UA z{-`l()X%%-y{>D`wdS1V-4wK)wA&vl3%o@XEMgzNwl|kkG{-GqFw=`-T+pXzU8U=1zRtpKSTU|i$*dP zI+JsF!#sj~9zCrS0iOr($@2~oa5#L$auz`N8lrTH^ctr;DOZjJvd><-Twm3b>~|@j(%|DYzP%0V3pNkM2O13sIA3 z&kkjRgDEWp;ihB>rFKWB_YC7Ghme3;=tPc|sn$CRGgWXIz#yS3cVlCk5P8%d)GLvo zg40e>?x>qpqGeiJ_{bIYrfZ5N;aVomELG_DI~UeN^fT=)<79PDR03nP=Cnc%mOQ3* zuoaa%Z?rml61TuBnvt$Cf#MhW?NiaX{LeQTNPDM$;1+CKutT9s076d9I?dd{}6e=2{+G6ut>%_Yd zkASW*P#T^RXhHWe@gGeT_C<<{c)ExX5s&E96LoTqEJ5GMK#n9S?g?Su&QSlka?rH_ z=Ko095e6DL$o-AV@y{Lfe~KRd=bquu{NaDQi}pExmPcBaHwFkrcTEd}fdE2U#s@H? zevIq1##HEFuYM-Vfkl}a_~QGCFX?)%opVSPSuc+CFf%*r_U>_QW7E&~9rOzEC%W|4 zDB{>UShUE#d{{T>HI`cA9lXGWleQe;wJqFU`AWaN(6#H9P1o-Z6mJhokU|$sdpQz% zL#KfBlQBFYSFT?r&w@HH`7`GY!cQU1+*ODzYpc6?%72)P;*W%Fo2S zM+v`@ZwrVJlMTJ&K5V@b{@TPmQ#{p4SLIPrGqpW)ToUcjC)S; zYqTk>8B#l?oZ5nyyx`Voj*?E^QAv!E7X!yTht<7I*J)2bwM&rpWWPgDK6nApmPhSc z$a&ECk)o~C!D=nNf)Q$BBp8f2zLM7ewf~~1m+5QP(#rgT){NzY@NXwlpAbg-BZN^N zkIIYBRL(jw^ijRJ__ebWtf;j63@3>Y5lVM^@}@~njrjU{_v-$Jx@?CI!TIahJu0Y_ z75i4BH(cK*t^?P%halMRjA6q6tqNTp-x zeFGgB2h?Ru3S)u(qNhNA(Fvfx=yA0W7eYgyv|V{@l3W}{^{!}sW4w8K(}zLZ;=OX>v`)0t(ctFHEzB@sw#@&y&!PPu^L4_fossW+cb_jrt1p})bOFBfm-pJ1}-(|xUBjP^RJ41{1QB#!|HfYInK>h&F zty{S7vzqs1pt%bu9?YhZdiARB>W)phhh7@FuFrMG) z?nIi#;@AuDA>*(hn6NI}9H&{Xb1)lM#TA9mtZr=X1bcqm>ETVnBQ>t&aUm!))H$P^ zx?DM2vKaB1GP}lb@0-QWDR#K#M-Oer%86}R2(hU$WY7uDC|pD6Y;2 z2JWVrUDKE`eah_a;fF)^t_GS-Hq%6Up|vAdn%P!QSv{_*!Q3Z}^}V(~nR1C^VQ`H` zjxj>3cZq0^TOu$+7Pd=`)Y)Yl3hQJ_mX8=8P9#s{VROQcPudLCHnf$G&}Mt+BT#)v zlJF{%<|TJ2CK7!kAYSUtjhSQ8_x(bu71`I{xg`&lbWsD-vBxB^vzG9X?=UmPMEHnz9ocgyTAc@)xT2Bql}@&UW;;PCVhQ%=Hgom`*=p&p_gNxCM*vM;h>! zO|&KKlP}!vnP<>&Yf03Oebwlo>sfmiS`1BEL^I;HEcb#cQiUHZzg2+MMf8pT)i`i9 zBT-5n2;mN3b!Gn>)m7Qf-oofl49veeJ*8D!V02lQOn?mXoM2+{nnWvSs$to_e*)FF zaw2dA68jN2x$5QONSt=Z#j+!8KV_0!WCZU|_`zwl(JNNX9KCxxo8%*dbi;Kd5gP!V@tnw;5)VA%Fg1|w0}pVH|?f9KB~iDc$I79CDf0l z36*Vi9vg-9I1H4%S7Hk7IYr^6|GHblWq|gUf}Ikv(8*yzRRN{MG5QG~LY7KXS9HbT zMk<-C_z6Jem+`yiaaG?7z009e!^tLcUem^SGQ)67lkqBkoI8GV?rLsvw)o1mNqAaO zGE2ar$Ape!uTEDABAQGflJYxA?m1lRZ>R@u_y<2T9s16m=4U2>k~(I%Ryjc|RDpt` zJOMn|Bo>wy$R*6mY~AGE7Y7*~xd>c?(5tcy#}=n;OtN9E{jk6zL6tkdwdsg#PxG3n zO9cq;(5Ii%)mO(@<&6MowoJht*wdnCB;>uw;0e&_9BBdV8+Co)1VcL0+NfS ze~CPWB}>)bswMWd3bQj2z9I%M#lOzL1ko9h2U6R!6tgAtdWW1D2v!CSl9vhfwj;AO zBgud%7h8)M`S|nD357@oNq(iQB@HR~F{B-9MBBLW6k+?hWMqRt!!JNuW@J9dn&YhX z`7Z@`&DS#(3OGBe1b(Fc23r5G1^54OhgI@FCBc9W0i#wfIx+yf4$nCpoaqAO>0DiO z2;$bM7^5?GF0l4`q+7LYa0K6P_@ocjzTcoMDB2<}@=K?FJR*D&!x%C*q88-qBj{`5 zzf8gjuI2ao&?lQtfAS)pmK#k!rJ9mYmwh+fQER4msN3snqW55Jm&i ztT;z88w9!@76#F^OJVKmX41Z&5seBwytDD+9tClSrB568xPgUk_9jm6Qh^vk{W;s0vYvdbf zmUdH?wte(SYIz6eZO8Q`lLvZ`ARh-ngqpUsvYAE1+Ul0R{7y0PT1yoE8J8Z1vlM6D zplnAPZxnVZA?0a@p?g5P@;f!zJCsnh0Rg<`{`B#FS?0*#5G0~18yQQMwC{-E#l#vG$o{C(Y70;nQMlw zMoxte1GfNG^;KzJFv^#|uBP_+3=mHTa>Dsmas*>7e@nrMv@6K+e;*{)6mYuXF!~}I3`dV_I1A5Xh-lN{$--HL0F#t=NW_En&PI=} z5vn=i*}PN>4%|Ss*2Eh<4LHxlF~6sYEeb=ng`-t6W=X|O|s!m@fp{t=soQhLwMFJ64229MgA+k z6RYoE60_^(^cB2;|7pPglc&0xiJ_B)v&sK(BPmjml0#8I<(*qnr)X$u0OkFpmlOb? z)BA?VFC&em9Dz}gk++rtH;0)8MGy|>_pMszR5K7JNEn5!&9R8fFW?iaqD#u|b&6nqlQsCjyjE63LbF$$R&h5}E{4 zfc)c?{Jvg&)*ngWwIsIGbuDEuSPE?B+4}TUNl9o#FmQ`Q5JE)II0|S&VxJ$%9T2G# zjU)RG7CgB=HZj=>Ca!dJ(zVMd<|h|1QV5uUr?dmoi~x8{5dLj2)-9Frn5=@ z6xKmaCGBg=-4n5pP^R>1P5|*q&L1hzFpGZWoWV~pi9RuwjfZP6FU^-l!z3k{3*{OI z1~cq+QY(q%Z(eh@H#z4l9TzoV-7|oip7aS z}B>&KwM2esSV#SND1H3*AJ5KixP!Vzo6*P~v&clumR=&cV>$sRs9 zd?f>3g|KH~A9WPAU2xz1G;D39v~&nQ(NDGGy!Po+TV4$a?>x}n%oTE5D-md)V&e^9 zuCw{MxJhnM5 zPHRMK?Y2534qa+QgZ(ggu)TJJcrg@9-I^YA5jc!8h;YkTxo37k@~oPeOF`T~O;~oI ze2&QI;z+t`Lf%kK2;qGl>bc<1Nnh%@?0NB5=d)^|(yNc6Nj5=#7(5*||3s_tRkjN8uyZHNvfJ^maJ?Idjzl4pFe;{Ro?QHf@7+sgzb4SQD*IdQI&K zEz)%gOsEu#Gp@G&bDsD^_3>j;tH>|+U-nvL~=4lW- zyDNQPdx&n7)B1GulVq~Fbb0uaP3CLC%|zEL`u42$6=PPhMXO71YHvgttbPf0{T}=5 zCdMA6s!5i(Z5!#m_-vcbMH_)L$%c{x!!>XtW$Et60JI0?w^u z^ij@cB)`gwK{K7GKo>y0B~4Zys0zh)qO9`*>Y8e;)W>n|r0}p`Xvj2DTa`S>sJc9P zn<|*So6h7lInuC`l>6HuLh-At4r=TiJ^Y|W0vSf9rB+PTkX$|b!U@Zi3Ag!RwOXU3 zy8f;!RRq|jBP_X+239X_HBtc_Y99jTZX3dA;dPWyPHrS>v291EKW~(o+Y5Q^-8@6^ z?A$Oauj1!a0Y{sik z#`;?|0Gx98SHv46P(INua(Ga;vhRD6s#tw5oaU|a6#GsPcbQy1 z`tpl`J++H1$)9j!`QV>hzm{6`Xx_JKT1Z|=JXZI9`1!uU_fR+*X!l5S1*E~>GLZkkr)ohN;=ULg=7E4S z2%<;n6Lb7fFE_OzGldr_2ur}_fdM?&U>rl%=H^^X#^k*Yq4Wn3r`g2$*eL0%M5b-H%%bNRHp*dMd zl2Ci|y|p+Q-s3R{q+MSbJcP-^imS@TO0FuuNlQZQ?j|OF$pb^m4rNN3POI=rXL0e& zGFX8uo{sUX<8r5`{cnvxrTiaJQ;UJ8HKrtI}j z&g|j;nXz1MV0*F;!y3U)Z>K3@7&9=1Q)@VgjWBBWQljvr zh-L;V`**Zu1NY4e_n={_>TMciu9J8z2Fmw@%g`2Id4>=-pvD&gy!tIi8(N!JRf}H6 zM~aD*sZ+pczuIKD;a7!#p1u=M6kBtyHtN;7P&j!#Wx`=`3V>X8A9 zgaaA>>;s}2=9rP1S&b}WODwr{m}pjrJxQU=ZVsi28toYrQkS4gbGx6=4kQhV5_Gn( zYhlezmR65=_vVT3Gth6LzBj0^kfWA)*5_mF>~Af7m+KHu^xq=4T1L8d#G10qnlN)x zJ*1qztObsOh2^+k5e}JU5T6l)=eEJNM6k8OEz{Es@%1-v8halr8#OhWaf{gG%*z)0 z`d|KX`4#_pmh6Jyu3Zx^fP0j^aF-n!Z?Pe?h(w9yDeF~4S2hyq zC>IJ{hiF76btlrCQAvr+YjxvnNu(#O(p;oB_nf6T?g;l{bQQaFNGt68USw!6OVhQJ z#-*W0aw41_iK$p^MC&&)RI|I*EO!@d!QFlM`%p)sDce8l?5!|*J%wb3cxVYjcw^io z2+!9r90Ys4I-J^g3^SnFS$(Wmpd)K@Ji@!8M_T7WUi{pMl*}>jU)?y4eZ)tJSwD8$ zrd*x3(0^{bzBrJjk-z^;J4=tx;W^1VyTh7fb9=EcVjM)vB^hHmKiYi%^5?qryWXv* z2Y9Uy2Xf?pr(OFOK@JqnS(`Wl{p$X^LKUfO{vl0y4_P-(JiqBL@(=n}7{&}!6t8Nj zMRC)wTxu~>9Gx%M<UG>*`P+iI?+6?tS|N)VSLm#T%X1`-S=i$t`e6MIi3NIevCB zbG>-$^6KVddVX7=qx+=YXC_hFQoPG~z!GJpJ{>;Ws2Huv;FB;-Q@+BF(ZgykQK2(6Z-TNofDnN}oWr^Y%@?+8Id1*pX z>8ZVm)ZDRk{;DZhNfV|@j7Yud>o#-_R6f=ff%PO4Nri!vSj#H1={L7CrnKZx@6=SB zi$$r0p5}GVLG#4M{joR4~j^wBV3^{bK2pBHO51231P1F}b(KOqeiRJPs zNbf^nA(HQ#DyXtk=BnJ0Tr3x>38fRoZ5;w+&pnS=EE41T%mraWf+4z~HF)a>T<6f8 zuhFEgpsP+2flmSFE4@TQT~gJjI zRW90eu39tc0Pd-*WEV6%yEfFgRw-aq8RVzbU`f& zPDxS3S`1#P?omD}?(u~;ufAXAlfRT_SYC4&(&b5hWTU(*F=K`5veUJ~5XwRGAoU?6 zSwx+!I1NzG(b-Z&8Wr#vT6><&y08>9<)Uecd&jzq`n+cK`M#XSf|0Nxr*6p&x2-*6exGkbSF2@E|DzB@5FoAkmDjAkUOIgPDeZLMi`?e zVWEgB`XGt2C?np_Da7DZI`3Et6A{H4Jf89CP{{Ovyd70I4-(i#wXnxC3%h42QQk3} zhvJ|{0;Uh=mueX1w$Cj#3ae6~Q@;c1m1g0FNunFKk>?{?U9Z+l?O)=#zqMI>raIW- zo#Yjv()?U@Am4x!^CoF!f>3r++!nfhqEtgJHo^NQx}%k_Gx$G(ASLq%X>5?ywqRpK zL?{at3n&E3(884(C7O@(2db^fOV{GvF=*`xkfHFtg$jq}L?rqZF$_r=NOMVnj4}icug=7VAn@;PA%ZYjcj%N*8MTV(Agz3kZipa47eYL=8 z?H(!Wl^?k}mUjG=9TKF)%ovUBPjI_0uXsPUyk32df`~B2Vh9df=g4)ZJW!t2`GX8x zC_2nj4f1@D!l&U|zGO!bAd&;l1IaisOU#j#O1LY;YQD+ z&Ac1qm%~>n7XwY3ceoL8@yg~Uowh{k=rkFVm|X{NU&F*^AI6E35bot?U(gh1oW102_tfDT)cE zIccj7#x|B&vS@XcxUfV+D^18DpeR;@^Fp7)bl*M|OR*AnwkGW!-YJJSR>L!MJ)9$5 zN~Ev#OT8-cgbyc6<&X=)yYD0RpD`tG$~Yto#MA*$rTusO5&zR_3OU+2ImtO%m|58V z|8<&nR{u;Qb&dWxt769X;e1joJEsiK?o%XfBOp9Rrb^v~G>cJRVG|(H);n!S@S;M- z4x#r1@+!a6%BHd2=8UEa`nZvqdCPUkk-7GdeF1wE6*O2{S)y1e!`8~#I+7G>*lMb2 zG-Zr=*D2pa;R@9ygEWhdM%J(OMjqA6QJ@#CZWyww{`etQAa1Q{kDY95=Mbs`KC#=r z{SWQM3yn?QQ!9XpX&Ba)^J#6X6z=*JT*}4fD%qc~E$(trt>#&wfLJk8Th5v7(Hzc8FW_u;AfWve+pV=w zZT3YQ`mueYm{}P5`^MhPi|(+RMa(X$ylbcz!~EUMsA!A;2lrPI9sFUE@yH=~xtrr7 ziJ@iZ#^XoORgaNDb={B69&AHoW>kIiw4ibW*zX}6nX~kDHiSl4yzc zCsqS*A=7q*DJdfv(8gbcAdE9>B<>>R1a=ym-LuLTIt6Lu3G`pQ?xn`aNoRB-nP5(J z`xK*2-1ef*LDEEO9`Mp;Ln(cJX(TBrn?R{}l$D!n&i?VuCpRrtNLfaLs^3FfT#3bj zf59xk2Q%ODOA~<+`UmKrky|tTGXVvNTtDC-_V37|_f2LVQ zO3T2)h{}^#%;2&XJX`mLqGDH)#WENiA~}>uR~**TTyM+7Fm|@AgTQN6@~xbx7MPs` z;*Gi!W0VlbUM^{3k#g!andx;g{$rER7gRmasIO<8QrUj0aJx&FXSyO35)ZQmejbB1 zNYEjNdh)8}VleNgkS~tdD}{?vJdUK?wBb6ukskQP>Z1RZGO-x98GR?aB9S8e2TZ^B z+c$hiwk?HKn{r`Mo3YZ4xOn9Z0E(+kY+i?mFreNAGyGik7xJjr25b=IFdo8#JJCHa zLdrsyG$yMo+5;_8nYCEorcA)PoWS@SZoDg~2xzfVUK6A;?MeY-V_iCN*#i_xb0qRq zQQ_N<1c-LkJ@w>Stj^-f<&qqZ*%V7o@mkxQWP#rX7JM%xy~`4lyUEK@T;b%pQaipkO)?lE$D$mxM}g}Xm184 zj|msGp2A7N#Md@S3^t>dwTUszyYla~j4w{4ho0$9n3H2{((L3y##3R|M&HJd;xT#Z zDq2_-7rrFPhLn4%s4uvzQG7}b1$r9y&i^8k8tYFvLoDVPLS85JxuU7->`53!lHx^N z9%e{+C2dbMNck%#hi~^yGYd!)TmV0R=UT3$BqHSEs~yhnB)qQ86J5?rib4{@%jE36YQGJv4V1rj z4BQyL?ab%bjqfQF^sDo+@sYBK;j6^55QC}N`&uYCmTQ^HQV|C-mpk(-_-dF+TE^?D z8fp*`2Vz=;^gA;#LVvqEJtR3OI{i&i=yx-rRRH)UD+BATxFXPGpgTl^nAdW{h8&(dZe4=}IF^tgXKrgXn zUM(9(_(B~r)$q)mYZHA^9Gq(C)|9hDK`Era>%3jNWd|6P)So10La)?RnBT8+@KCvD&f&P{_>kY^A)XVn9? zy4NMzQ2jyWbeE*1ekhJ>_$I%#{prb6E@y1Y7(s`J?8FlrPm#c9$Ew-dK6 zexK3`@QDC3#8Hf8JMOqTud3BvteN5HO1R6l4?zpYZBmu0mCvT|dL1`AC*1LJ>J&Cg zlnYbO3G`v-%cOOqQiM@{tg(}e9#pof_7g!zmp|#k=&j|;jT6iI%i;=8fIdmg`QN5R zr%9Z7Hv}L5a$l~>EsH+{;`Rc_@clpCZ4^!Hfn4AJjYU`10y;D_VO{5#iLlkQ6ebl$W~pxg01STuL}n7n&%^s4Q&R5mtObcZ^bfZr>~>`nhb#P z;czm2$h7OaTup!eN7Q-?NHbHM|2A`>K~U%n05~&a=ItD+KgF!XR@*8DMS+z@9!V-6 zg1kq+hb5hEt*N#<`Cg`FQgy^JPBn#i?~uW<|VkL4R&aNUR&D+^Bdx=!Zgs)N7AZN zlb(D%B~_AdfM3_1!5up6HSE(eqV?~KcaE6n%A7&=(J8799mqDuo?x%muC8p<-re%r zNS+wgwsS#9agjQ*Z)u`As5+QEhsmNUoh}!| zZm5`sdZW?~lA?0HY7{t9)0YgkXc5^ms0T;J;D&b5GnTU`J2F~4Z5voNWfk0o)33An z0Ks7YrF)-NR@L5AgywA2zyG0he+Ej%5*hNanJ`@BV(HG5;1xDD_f(9`4&o5zpmmiO z?O-gfVNdbTPypL^sX1J;&6-FJJSE~gnNENX)B?O3`ujQOY#{A(u9PIe|>+m&6uUBs3dv1dIQ;60s_-Tqz zK+X-Uv{ONayRw`_B^XMpm^A+EoWkYjr?q#-`ynGtv`)-RP~LdlTxcalafYKwQ6GW**v7EZFt`yYR)E=$!v z47Pxzc@!`pPT+5l=D>F0e=v3WZ}SutDMlf=oTO=4oknu3yjP3SCqn)Az}vs9o~R>x_?*f-W;Rm>QUA;NHsQ z@?%Hpp$8qg-`nl!<)rb7rrO5sf5Uz z>TD#Sv}vo$7*{2zs>?9mefi0uqhyLI!ZML$OMz`sa3!uqlWHu*1Pho0S`$f+WZW}DSKxM!|5&`h!5!$;v>^+7Z?l_+HSW!n zWxRej@5kF*O{L1{8S9T3dN|ryx2n=q8e5lAX+1tB(jI9sfEi#_*Lu*vJJIU`tEf0p zCp#9!8<4W?3?Dc(&TzNbpj2LY?9rH180w!VF%u2y@!d1}249XvbJt*qm!_<>a@SJt z@oHL`BT_Ag$}*mO1C<|qpi+UB@`NRN>avGnTdb7{CJ-aR9{mm3FieU)6a?mSE8!ap z4AvrM0=ztG4dJ#<2RVOg+yHog88M?&@RMX887wkU7^C>_TOMBi)P7{qcmmO3w#}zc zZh~*UT`Bazr9sTqH~U5*a6ghQBpcurn8Gl4LfRh2J>dF(kIZ$v$J}*@ahjH-(Od+`3S~u z1TXRLO*k;=jrZ{Df<`oy$Q4r9-^3Qv!5HJ3w=~WTw4tTr<$>WtOdxt4lO%H>Bk@QQLtg0B^BnVgK#NNy{w^`t^U zPqYUGJb}-pIlwgbJi;n~l<6W*N1hwvJDCxRPxV_^B3`n4JL%&D#O%gkzMn0PD?)VY z?s85=+IUAdyvH&ifr64eC;2YfykY;fd@9&Ag8q^2>jUgr|IX#?zvBV^CEOd@g~?PK|_WnbvShhivYf3=V(3 z;7$+1mKdQan}CG&A!sV*kSz((ad59~Z0|9Q-oOrgY>dc2&u5IW`l5%11qwQM-f!gn!l-g&MeIv33zdu6wU=0l;`#_Ah0^IGFy1xgC?qh0fi|WQO%D(1ccI)n%)SFyA2Q_ikvaEJE8c z*4$?>k4DF{uS+WOP@I2}8-@nOv4{J$Y)gMx0K@~Ewml|-cX-z-)Aw z6RBgR$R8!hqa@+p;-rqmS>j|8K`6!b-$rJGMr76`2@QQ^5jmtu9W!+4B#h4irU_wk zX}zFCC&3Fl?PW2>i7^9Z!WTtc2{Opf!fA;R!mukyV5eA4Ih?uF=&bUh7YKju^SU29 z{o#NIyFYN5?C|MElw?ybrIXHI|Qzy50|o~5d#v}%gTQ`ZYxfN@gHpQ$TO7f#1) zOW2GaAO%fA$v(|VIQJkif+bHSRZTLN*35gid6$<(*u=`IJ(VGsL_&nZiA-&K{2j_7B=(+G%QWH+&z#Vr@A5Ez| z5G%&ml~hY(Bqpj7@Y=btp#(41w>If?uTIn6w&)1>p|kOsR+WUpwtZ%rXL$N3k^T~@ zi^58_{djr*do@SfFt%vSf{R)rJuZJEcmG$l1u{A^tD(FiPa3gQ`}#*$mM4qyMT6EM zqQz~=ZnJ2NGL?SD4i=c!SH$vQAH`oar)|0V>My&hyZmn1rBGx%%eY!f6Fv(J1DDer z2e_EkxrNKobu036)>3aXq;*c#=A6;{j)Cr`9&QtDxFCR;!*dO{|`6+p$9#%$}HJaUi?U#-SpiI#{P>o)IpEoIN5o>p4T zPc|;|2eT84uYwThidHRo9r>pE;ZhMNqhVW@!TV{vAd*JmSC~qjsnU^NOsVn~Zy|UrshOH0Gu^&gLoG!z!mzC2Nv|7Zv`_$HR zcixy_Y%+~jfRS;~GwIZ8#T46N=HEYqp#F#?f#B$%iy2-!c5=Zhzd%A$q>to)(C8@J zBHBQ9XlHyt^$z}lHeW-%z2b3PlCo;aYBM}{+Ag!MAksMT<@-gd$`!aA>G(jpq&l9! z243!Z;9=W=g5ah}7@q->aVEG?$(6T=@$aVSNjM(b5LT^$R+MD+PkP6Xs4qI+>&W`+ z%;5vAgCQ*32x?Dn=^*4ia`LJp6LPAm6c>CPU>g&2vRlZgD;(Mf&#XLXrX){Ek)+3f zSv%ipF7COm_HU>W?x~B`h#`+PpPo`Eh@bVB7tYd(ZwcLmhG*NUv2`l6&b%2e_Nr6yU9ZE<|l=Q1|jthssKyacfZ-_*|Qp9k|fzAl5;2tQ-z`T z4GCu-s)r6iHUxK~nN|~~B&owdmJoLUX9uc^8YsFWkbOQ9h9C>Fc=mjRqLX5Bk9(rT2*a57f~d=-c5djz_wY z?k}$CFzp?2J)0u~#8jX0kRKSM7pkIdpkV%6 zk+`a8Kpjpep6DcNH}$-J*xK3s@%jp}MW`x+q5fSMLtbX~>3wIlB`%%<#f^EF??Z^JB!bLDAB5xU4y=mmd{9NHyy`bAhAkc!Q_57d+*a2B>DvvMx(|7@ zfKO7W6@`VOLO-!IqK6C%%ade_EAr9#FX&P1jL12=37s-~;5=)y%j4fAxI6M<{o5M5 z6jE6yxTk}bOR3|P!$=vlhojRPG3%oaR^0Z!4-?mjfqQvFnv&2H`>#v8B;&d?rk_~y zuB*7tFR)IWX>XNdz-frPCF46Sko`J^)6VKczaOva{`0Z7(HY>Z0|aFg5S09X1C&D6 zb}q)EF1G(rZ2W2N^)FSIveqBMjdxRxTQaR%8X0ak)BI6v=#h_zxS+_Ypuq;~^37~xlwdpps# zu-IFMT!OGa#;(fg?P|q$z4};BX7L+Z)hJyt?!M3M1E}E%J?8Ln93OkQ8(Q-P2F_xR zVH#|8%a#i$e#Fa zP{t;psOmjXB*suj7=(FKU&)L6W}=!Enln|WQ(a-6OywclAfop@`!a#acQitmB%kX2 z!{uVVLlV#0mDvQFJ^dV$q3z7xuV4CuYeX*$ReUBlTVH6$) z+F8t1ZGJ^|(TusI_Ito2#8^ntlD10y>94tmEt`}ls<$#8hLODViay4_d ze3cTH#)dcC$_5Y6ss@*U5w%&78k}Fpy&ohIj2`YWXdSsw6w&8Lx?rG`Lhl*`CK9ut zl%W-SEzTvaNA=nbl(b$0MY7rt;lrnJ4y_XLn6}#w zB>4grf+A9zxjxTd$j~V^A*+WQ3Q(2+Zi3OoX3+?OQN+KX<=x8oPTKec_&&Y=g_&pb zT3*QolDz!DTbsz=fUdQLsfm$?k+lh(^uNCW1s=eunDHM}=f5&Bs+3k~!37X`SiG=} z)-K)fYTA)exRKp<42Y34eC(>KQkHSkajCu0V36>~-&;0@8aK~o!DUcFSL@yl%kuRP$F7ab8ETQFYY^P&KIZ1Cpv9@+AsY7U= z(?da6qY@wkU#3&i#*;!@W2mbx0W z)#hybi})zqF%|ivrNbbP9Z6|9 zf_JF3A2BdmABw^H=U!%A%B!3>+gl}I={!g(2K@tJ(IkpM^)yC5yTN{JB3b1}fPWF> zn4cK3RA~RoQ>X_b^1?Kc_4^4rA9sN?h|{YD@@x3hU`V17^-xnd*#?d1D!n_1>ci)x ztkz(Mi4lIL%PJf=08>BoaBQFHyjG+rTn4gvzU#&Y(5?2Xy|Yc^G-1WfQ`K=j!l%dn}NjuRxD7Sv)VDH|xamqx=6*qgzVTSiWvImFuFpG1_;bm;R4~@4Jfi#YeK_3>kq23y0|t!Zm;&1c zE_~1qr-BV6IRpCzl9mfAT}b2R;BcTG3^-G**RAo5sHkSC5veERo@N7AVT(7>lu>nP zgz(0cs-*x`@dhh`5W_UU4*NDv_82r>Qc0p;Blf*<;>wed3XtrS7h6nI!SdaYwaPmI zpkjU@!&3QCbvZSG`Gr-I)VlT8kkXgO>u-6tewX3f3pn7RIxJnL?CShk7!kyQVK&tl z8?QtYpV}#=g?{48et2bJGn> zjy9}y2`{2kqT+H|Wcn^4IhYxeEsuVGMgHfb4{D}6e+&qkLLh)7{&(Q{Pw`N-0BVZ< zji9VJ9@{>C#Nf>$&3lh%#9hy=DMr#lWCpGK-I6HL;ZT0x_{P|6W`wT_aaPhjxVSDS&N}=$xLnw3Q+!&ub8_<|1{ja+G$#iJok zQ%Wk4W#<$qLAr8YIo}xTpu+BFbU}zgqznm#xWrN(!Use$aN$wJHE5W8qHrVuW#jmo zqG@WMzbu)oqFm}W0{?SuV1@lVR`LJCAq&*?0tu3TUJt7hCS+InQG=)0d&#N^312_p zegzR=l<71I)a1e{hJS(?@ZA9z#Gw!m6I#0Z5K}cO8}@?Tu48+taG1x1cKx!N++&}Tnwl=D_c~E3ymw7i2JM2r5cbpzaLkjyXiQyBiLe@7 z4v-aDD3I;iY477g@t<{BlMek-J}B?W1&eg{1=0Zp{&L>L{q>41_B50QEv3?67SrcVfOrl|JPfZ#QlN~UUY`yih_A0@+c@u5Sqh7md zx{J_YPYa26Kjgp3zwpTpb0v@`47GbD2N1t(1H$8XCs}RE7*xRNT{9i0v(nvt+`WM7 z{LEpnU=QPmH4PjU2?2)F&#HeKJ7m@~Kj9b1@Uq8EVRFBu? z2a%f2RwLycd7O$zNbN|p+#Oz+=NQpQUW+5Qd8vqcLcQ{pUX%FJ2k}H>x@4i7vX>^S z=!giG#qylLtC}porBcBz`q%;PvnWL8tmu>FpdpdK4ux{^gnD4lce+<3ErxI^{%c&BXMTgb&Q|W}D zncD1a%^wlKS%E(V6NS`IdKuPJVx2h`!c3k${iYUha*8>EYOAl^({JqTAlkn? z83G!TpLxv2QA-{)v9b%I2+nt`&UH1@+DAcs$c={5bv$4AdY|L3_V4wR`X`DVE&vGk zfY1LB2>+ypzW||Fp+mM`05MA{3sahqs7M&q$v+@554Hd(h>}(S+QGM*)^2tsbV?TS znTDDan$Is*sA{sX(BH(>)P?QU!_(IttS(kCh}?r{QTR^S3bF}7#%7Gf|Im&C2~u`F z2(-O^^u!>gc)wP~BK>4omL`+ZmikQu{2-eORMzkU;Ii_=uFZqeNYKZI)!vSfWwCKC z17|LFH6f~}ki}5yw^|OlXk~&ZPsCitrIi2ejxMNg5wcR++_S*DQ*J4j{>PZqS16vu@-hSFs$Rce83iz7YweVBITQ;~SzQ6T| zcmu|{R>w4=oU=!`bq6^|{Y3Mvh94x203l{AGrD?ZWyfD`lw47OsTlw&i3}7VAojnp z75^E>`;X}sV*n-p>%zKPUBd}w3G1VV)-xy#QsX-^2J$yy6fI&(HY2K#AOU}_djDUj zz#3!fIqHT+(U{RzgkKsMbP}9oga|xVL+29hJj658$c?-qHFQ@?%;z4;FSO(kp*My&pzxOJZ9(&*2)GihN0t*`r$FN=-u8s|)|jF9nj%!ILAfRxbb3D7ZZCTZH=}2)&!PkLw+LtE)>^a( zJJXwir9z?ty1RHdE3`VAW;<_nOjO6O7LO-?P{6Kn7Lv~JUu}|je4k$BW|PYNWxYXd zzgJ_wQB(SDdv&w>uXEsiZ5v&~`Q@Zpi^<>sWd)4 zcB4&Y_TPr>Y(HQ9YF0Wm^3GPL?X|xkLA8HZXzVu$Z{BDU8yhSzUwK(h5!UEBW*k}@ z&}~fKEm2qYyttjRvA#yGvcAYLCLs6sxix98Jxv z$Q&d?T{D!baz0R9l@u&mwo9X4x-CZSvV%iyGa#xO9-*}lzE&^X8>@2Oe=$)DPMVnS zsmv2?is|9apq-l3Zff2nNyyhCxkLu`t3sT<0~lFhY)}EMaNEE3jR%6LuG4}&ZTf6a zGw0&xq9v`(hRLb~-3lhDdyBCw`Npl*MUlL%u43*Sj0Cr7%CO_8`Mac)>ldR)4I;Vo zptlKHl6zC2QTuNp>E)nD>s5H&e%dFe!S@}UI8%$FpMAFU{%kT%(5hXkw5P#L{*}NC zDWV4_jky=dpZ$Dje!3(p$&C}{qlDbVs@H5wk%%vGLTMyY;jy!Ew4|mJZX}VRh7dtj zUq5ONsQVS{tYotN-FlfiLVB!Yu93CJbr;xvI=AK&#u+Ogy%7tQdQZLkPgU7XKZ9$A z7CBSDBMU857sfdG@txrX*({9-$FX4LuDgLSX;sw@*M*y$;ss|qRvzbjmnOy__rjLs+E*bb=$7FbkATJZNafh(x=HoNJCK%|Hl zZ}}6;3K5yD(b`DCU49veukDplwnG`%knFV1dL(2m+qT3w#@;Q{o58Uy>80~GqV{2y z@;8D9ODumH?M&qp!--43*(HD{XHgV8Bmwno`jXzL*GUFkpt&D=8ve7)%^XbR#|Xi~ z{GEG=pmKxX!I18-xV-Xgdzp`DT`otM1$tCVJ`DMXOeXs2ROwugfaR0&3vR(lOWhNw zrj~5+*1+zL3X6O??@l6QOOeGP0uPN$(E~2mK4CIT>v0f8%)-~f(=3A;C24BYI-^CZ z?|Z1Vju9QQ_T^Rf7PWw1M+?{N)nW&5s9`FviiFQsaTL3RqW1()-eE6a{Ol(*$9L9y zhPX~$7H;4EZ*E8^Zs97-fv@)92)iv$RNu)rYULeLD%Ea~zV{Ei;e8I^JYj4)!4sX# zX>kVKT0we>`ykNS7Sir3tA3G6E_;HNQkTUUoZJm~<11}?_>DnCq}fsU$q)8;)Hp2V z-= z91rS@*21=lg#k;piTMX7gSJW{HL1rU6p3=fX9 zi`bRt&jHmpDD&r}Z|_*>9|8SOfI* zo9F@*y3o2tEMIw@&}kmYyOa0=X*TULvW3dVyW}D{P477*KVn3l#Ei9`eQTL=%9^h3 z`1CT@xYCndhiwyTbyp`Z8dzHAwu}Qe$vHoQsoJu9Lk#(EbpO2xQj9_)O$MBYjR9qt z=5Lf>F$aAcr++rQ$;#G_D1X$`?4u?6!mD$Ny%v#vR_x|#FzP>KkSb6af5r5UMVhso z$Tk`$MrXoJT`RrS_?$pw$8Z0H-J?jqL3lF7y=m)M!%)QSH*&b-Jj!vL_Rev9_;{Y) zD+MyKql+Y(fE5_jpqi4n^+LarU<%SeyBfa-K_f6>@=J$3+~;Bt;S3Chr5C>^LBmkd zMwaLBuEbhy7RXn;#V%Q>!*`Q8>u6qSet(snEOA)0a>Hr1q!-C|1YSwG;K*`WyU749 z{*=*Pi8itE*fi(r4frY3brn&om|sU7r(L8*sB53`;80p`^U6`>oSL%}q1L#rGVWT0 z$DJs+VGfgZa>a%GQG!Q%ajp7GH@FQ~N$nw?V?*o#=Fa$3wFAFb>8?-3UwPaWy9xBZ z$+m^t<|p&Q&x(x>n;$}9xX_m?TQ0PzU&ZdnQk=J#bt>D;eVV(Cmjc@QtnrVkZ6!kB ztr|iwep%-Zg4AL^$vP_O1z~JOMs+4+R4mie(IO}w$jRi(H zCA~TfhWcRoVU|jEh(TxkZ;nFUoLZuv7sUEjj|G-LBwph&AYrn9Th?jPb+i#N784ZR z681CwYRh@brvEVIk-e_Q1YU~-^|b;aNDMj$U1EJVbc_CtS?zg8qaBMCO9*>|2t|cj zNcjW#hi>1my`<$Y05?DZ2X z*QKy}h;MFf;+>9pF!0MnzTEf+fXQ}}YMjV)U(XrI>SeuY!MeNH8SrV~XJOWk)9?gV zyaiP$cZke8=s63QirPu=+b$>3fT&PdGJfXC8>s=R?;vGL^lq#;Sxe+}oMLk{{hY{$ zZ=C3jYuOTsm1g)j0j4o%vLYn&t#_KBUQ;q7NgIUC7xyu02Cu;WJ1}^CG)}Kko2~s1 zx`!Kf|8=6E+U1xI$~{ZwPdF-dVX#F$+Cf!hY_ zd3|59k?H>YFLxA}t@n^CJHk3<3Xu-|p(Hx-9yuNufn9~$=Qv>AuBe+(g`4kxks=#W zG)3(IJV?B;fq)qP#_kqYQk8RdvUC2|4)0Raa6?%_`>5@Vq8(pOfg3;#$kVfevciRJ zIv2$>u$V9a@z>L%MM#OFg)$G)5cVq~r6MXaN6v$h!8jJeF+<4|z-dTsGEc10eO+8? z*6rzTs%^T_zU}q3>4MrOdfN;<_^K8n;x;8b>5h;y zjNyIN1n78$91o*Xv_8aF^C%w4xf?c+IIVmXdIrmcpU!2 z4>p_cu7*Lc3N|+FH{g#gt!)=Wa;=}`IJT0l{oGxHUwY_v@Sv{RZ*m}{u34a5$vPQ! zj(`s!n4wfOa8wN5&A;d#<$1~5#EjnfAKI{?MI+Fnl`W(+mG(O*LW%4r;i@Jl2^dR4 zQ7FD!CaF77R!ESa8)7yJG_tNF(MJvyon3$T_eYBHBSnQABq}4ltuN%%uq}v@n_&OLn0dKG=T?iPf=LRd6)iY^4RI zZdc*#^bO4Vl^|g%+{ZxbMOf#U!)xNmn(wCTNu}Nf`lVqTauu7L?2=E5BX2XMeAXyc?^}2*J^DM{LW?CG{Rla=DB-CVwRW{;M5)ZoKzE#0? zBkHkBNc>R4@KyslFHTIs3J=E$H@4zJ?nG&F#frHtAId7y1v6q<`W}+)6ImlgeQF5p z1d4rG4-^u&di1kS^H&hBry?sC5wYs}WuoyQsu}=H(s;2~ z7D5O6xPTn8C(4-WJlAXEuH?dS&hBP4p+rCRBIpWkz6FZ9T zeXuXE+VB{vdSsGirBV_EKk2)JH3^ts*hIH#?i-1o;FVq(Co{@R$Ac4oQVzgbYe4)c z&ah)%3}nb@2FewtxDU7z@xQUO(`mtEXkaVJ(8sLJTcH1r2iXm;=3^O4eh{W=4w-nT z0uCJeRd&;jr5RJ529A~r5m!)QyB(}5@aJOY&m!EkB#^=vV?Pntx>JE`Z}DAfQeZlA z?T7ji(6wmlyEMH@$GQd3HDNm~b8QH<&>(AorM^g4(1qw{7MxlsX zS>>)l6+!y4W@Ma zXuXhQ-l?dccqZfa$P#kk9>ZW^shyux(vHmF?2prh!W#F!WS>+v%{|hS9r8lF2#F4% zdA?LYXT8Q{y^a9>s#Pwp_X7Lf`)Eq{7p<3y>LK6eVg>`L-08g9Rmm;gk((amkuBU~ zEkh$73prgG!H^G$?zeFwVU4;l7H>AymrDhMj|+hTrg{Hv7m_{UhdUYi5qUpmRHqSn zblOAdEh8B30yJZTd=T#o(V@`u6VJS#ZD{-Jl43`g6NA23;OeRDrL<|^ued^Jnd=c9 z#I+Rz*D3@%)`@(Ibl!vw^=wCdurZepdJB-G+rs5EZU|hSXvHntCU$ER^X8CW)R?bT zP%W1nn{BDxc`u0ZJEI|7*N5)#3a_W}dSSPuEkv(R6eijeKXGRfL?{ltNKC>fS2um| zC|e$_JnYw+lsGasH`rHQDoq$n;;-!<&Y^RWcEAkhr}Avst=o7R1714PQ12%5vE-K1 z!G-6`%z@j<%@!vXSZ|$V5;f+l%n#2p&>Ii)JCby_fOY1_`toe^7ZtXjzcJ+35jFSG zHRmf@4U^tLVh_SkU~nTL#~O4k2Y;W9^r^?`H$Zsjz8usb+5?+4B|Zv>C*+vggN(u6 zcT;dch(?ZC0Q@9Geem4BwYHB&B=XWAb_OKuTK0BagKiBKNKsO?qkF+bvLniPaYfV? zv{LF}=eCbXse59ut)H}IxQrq$Wk#LCM4dVpdhp(J7Lq3_DETWS+Waay;xqkaz-&Rq zXfYeD>7?l(T1{TK2wbSTQKn)l%|YFrvS)#)L}?1*6ieb{3%-N$sz9?_h9W_W3Q?zC zG($Ca7g}i`Z-j^fVXp|g*Yq`Le3$V%k{Ba#%x=lo5dN^er$RSaUkr+Cgqv1M6bg~H zuVin#O=(m)BLqHND?>Y_0CNpl*u`*%7uj=G_)n~fIG$a6>Jvw=WOati#-7#EXDW*w z`^C8D}deb5VUmz{9bivy&M>c=#{P-9OKV#fszq zP-O4%tQUnO&4E(NYkrr}4kA;}FA$v~SaWn#d&LjL^V0&0Jw=joHw1p%7@CG_y~%!j$Qs8L z^YC#n|4u||AOV8A-$!gf*$V$!_!5lg+yf9&TGufpFF%We#EeQXE?)r`vhZTGW>h?D zGGZ(83YY{;$`>~|zmX-p%Nsco%$&FLkc)I*NCXMFFCn<+-8>pr7>Nbn6d2H?B17on zy8+vb)X&>ze^f!Wg;$Xal6=t~r6m2aP$NIhQbqR*N8_*}@ch9dMC_u>g;a$BrY;lg ziGhM;--toueL^oOrOA(#p`}3oJkq+nrG+*5tQ-CCXRi(fSrXpFsl3Q!FR=w|?1u(f z|9bk##+3gxn)Pau(LNbW!tm(Uji3x=M`$(G`M{J*I1sxQdExcV=Vt>MzQ1r&=44aSMCYZgpo&_$g>D-ks%M) zeM`VA*y3ndr&$D`B1vE?3YB1_25>~doU*?Fz7&~zH2v>5A)0e+3Chxd0lvP2q%(;z z;|@#RcvrchkxgWcH;i;%;zlteHD;ZIA)T&qrypq-)Et+my!w37_H3EZZ5bC8j60_! z@!lD`rwA)-fo&guaj?j}sIqbfKu!Q22uSE}98&&^xbvIwpR}C+qVxP0@>HiC*OU=I z_DNL>#_Yute@Q?)!_dW`5KE57vYRU|$>bBs5W@Qd7bgeXC66eICTL+#*@cpD$WHtW zp1NB?1#bmn(cbRs0Xa`J8jjE1HSwD5er$TZ@acF}eYxEl<_B?u;vmHxDCUFRbw;wi z+ieJsYDgB_99Cd`PWF`?%W}B?h$N^fpw-T#97EyB6`GVz<-(fS`%rnfs zguCD%v%q2{^>c-6vWD71WuuwyzPYls-Eo}Ic#yYP`6AX?iE3aup zK-oeT(zAr_9C#~9KCv;x*v%2R-2vqcxIMCnfw0R+{l%eLb1|Fkht(-9L~}{TS%qPp zx7+f?25Z=jw$^9mONzN!_jF|Y8CFU=3Je&Ln$uOEYtK=^v&9k&}}4UukV&-&`oJ zv&lW8=CB=a!6tYFRriL6(mEjStUTxJM`(-pXp8H&UAcg+So6Db@L*xv_sBX9&0fd? zqtgmKS7aK^N%qWnNDMJafMYJAa>q-`)s!2zl>w{x8=Y_AuG;TVow2?lMRTDs!$PAu zmF`TV(j)`+%pHqjc@I(4NV;AnL=fQ{1L|H_18#^OQ zL=|^F${%F6q&7asazYT303ra7Y6m-=fO?G^(}KAryc-&JGp=n&?QZ53?c;<@8cO~t za4P1cgLm!|mZSSS@iAV{-|1OB@VMlNhj+S=0E6Ii%HUa2aOgIYo${jv@|0 zXEKpl3F9^qA#UR88};+>IO>)pO2x7Ony~VhMD00)q&u$EJLSMTZA^)TS=1|0;5J!y zjtpQ4c3_DY5#t!$?Z#7UePhIBQP@hZWmf*WZZkc2{Wd0lV{CQFupd|ka0lg03D-15 zwnU0i5cmR{>Rw2R z@m!JfzgoVeVFkcBsz1$4vUZbV>#_+VaO8#NCJoW7!=FXEEHACYd!p6aM=2@n*|rX` z%DC&qMY#038r^zJW7J{w<4)_Ps6~CG7_5`jy)q4!1!foeX=)S~R{88U6fl6qs&I{+ zax^^ihM;ApP1yUBBZMvpz*P1?o?l_AI@b}G&ct3TCoS-6t73Rp2me(l25Qz%t_L8s zS%A*=@5pifq<;QW5$34M{9hA3vy-)K0S<7()1)rAYnfjGp_{D1>srIX^rT5bC_+jc z!K_ooKcHB(m!^JM?QPI`LfMlc>iYQrbp!ES3y>8^D(|8VKx~8jB&p?5%WB+Q&b+Cj zzSp0g$VzuS^x23>7TL6=7t52cx(cZx!3NhL3bY3F^Z!-VN-JC z&19j3+>jcqFfPl;=dF{zpb>L!_0Ch{R7F?rU)=+Y=+>cS6xO#!VZAbq)J<4tZY>~~ zFQ&&d`E=Bzv;Ej#ZP&Qnn`>8U=54HK^NRhlW*k@Hw%~nfV*%a==Pb%}ym1sAaF9+9 zUd4pT^qj9%C#}Z8JGnsDXm#P3C^+p+0In7})1Ke4ZW71X)bG40AP}6XVu`?#g7au! z(raNFlC)>h+~Kekd#*7jv!P=$lbyMyk4Te;PU)(^@myl6+^Vxk?M$#zVR4U#n!D=H za_E!4mzA1RPA9RTytIlNz#P%P5vN|iPVaxW(CSG?x?*P|ORkyg=&&qa z}s_W;@2ge)i3!n8~8c znM1c)5pcvp(N&w!g*dNB^^ztK|&F z<^DYv#VB2uUZAY$b$J$~R6FGzAAQGY7?yRDI5Mr;}cQ0?l9UDS;NbL z+e{AR*l1oB^h;^rgS7nAi!r)mp@o^_@~WRr)t9IP0+4Zj{~GSte1NX~!s0ESfG4z> z075AMv%tu%ou@g;nS3%9Tik09@)aYl>;4d0&)<6PCys@NDiQF7N`jloQn-Q{v-wrCxwww1rZDJ zBnx%Yh023Mro{MRA`qqkE)&1y+F7r}p#olkodmXjT%Zt5eG`}o6ixh|D0CNz*r*s5 zfLov&Bu_$E0vvWWcQFFF)=Mu%q`>Dlh@QW)HGC$cIEsE@UM^nDH6?IMYHd zgN%{rg_XWf{<4^lNxA}GJMu~6)KZJ{ioJWD8K%PKYlc&;F_LKgzROM1qrYRlvycB+jFXQqtVy9%4?Mfos3|6|V`!=2OR z_CE75W$tRw7Nz=nRB>62t#3nn@yZSSVZ2;(}^IlXX-zFeIy%RVM`Kv(5n4!Adk z)0)cwn>IbSV4)tzd8ofF0XvKgezQ&}N~5wFDBC5PWb@Un<}8tZBkGd^rkimK7M-Q| zMN>u2+4`=FO#eua9)pv}@vH%j$Itf>XG*1N%Vc_pd&_mlHJ&$(^k{8sPX6C!uQNyb zOJ<#74YR*_l2!WUZ|d4UP<)eT6_VXEgWSt{X|L9-JGNJRy7WZy&z8z1ybz8BVSzt#T^FkH_TLoOXTLxyib<_p{o8;1O_t>XWe)|grFT8bVrTG3i2XZ zql_Eghx%1<<&qJ{AycdIE1i25)ZNdf)COZT1!v`XTIh=q@Yl1XQs3 zV@|w7dMY+U*^%XG#`kC15j_=m!DoT2IEPWl!2zT}Z?2lo`RWY;Rm`kBliMsCY4?L5 zyQkxCtfaUM*UyE{$#LwuP~xWIZ=N+-Vy++;aRijdy3#)iPmM z5Qy0-PO`J^A{eNXlo=|l6qM3TD1^LJAu?b61yQe&ShFZtg_U{A;hRb^-NKg{f>>XS zK_tpE$zRE|sZ{-la7WblicpXk#(h93xFU8U?leoJX`ZAP)Cj4WDI9u)d>flw z3^54n+JB-|7^ zhRJxy09F=RadwJ*k8=`^lDp>Na;46<-r>_lD=-NIT$l~iH}E0Vk_CYZl?ms16BWmJ zSq;=xffAJovB%cAJccjzmYLnA|3OTXNM zEy*X{o$~)XC;ZyVxqt$2f)U^$>F5G93)B169R#LDv$E6L?HS`Oj$3e7$1Sm2CAUbP| z(Xm}%g;xfpm6PS@e8RQc)@17A_49}UDC(yHD5@KFh$SOZuW>>r)$fwgOd{KqPSd6$ zGj5E4Bce2f-T+XCnyf987|@FoI%_c{fU~4LOH6SpGz&7TRU**8$ zO|gAEla+Q2O(7$9RfZE;XohHt24qkSB)Ho-k8rxwNKTWk1qX1F0+a774H?Dro4l}G znOp`_zl>A$W2CN=vZP=**)h@@e~#Bzp&>P~_jpSMI6qe$)*tq%C8l4}9a$ zi#IZQ%g{t6mR(P@eiZMuJ-Ho{88}lyZmCJHtBk99D)y^UMH=kRGx?o>+u+q{_j^@5 z$&^^>=DspMidX`{1d*vR*~DntG&{A)LhiJpIX+6G`S*FSY~hC1?T~&36j=LqJ22f$ z#ZSCrB|^zfAb0DT8Ub8nXeWVEV5S#FU~gn;9nB)pKn%yDww57>bm$QcZ3+VQjc>GG z7egk$T(`Zn?OElfW6gKodV&fwO|&B&UfM-AiP-PAd1 znEB5`GFz#WfsXyP%*a~dy1Mtb5T6bt@Da%kWj6LXqu}%4$U@PXDgxv%}AiA(Fb^d5s60={d^3u%BDXb9$3xl3!7^^%@4W1)^) z+>L4q$=06wZG=JqYc!}WR>-5vc8I5(C;kYLxUyi(XDZ4}Tvqb0ij!OP+`r3*SBHQP z)m5E$jiuG1JVSzgO}oPtN|alqkbcn)gzBPh*9ab_S04jQPTButZS(vWo*xrq4YNP(MU}sy8Fe$3j^y};bL!_ z*okZbR24Tv-4-y_ObD^&AM6SbJ;L&ac~S}MelfZ7W zJP>X53Tg&;Zh8jj4q}GwM&3&ftu*n(=HSbD3Ni@12#XE9VM4(zmmih%eEHz>w@$Hn z@a$%EwZ%*QJKU1E{IV~q5;trv)ZMZavRw1x*xMi`A%2&7>##uHuMF};V5<^-6JId7 zFKrS`DiH>x1t(CA&>h2&v9JCy*O= zRR7W~&V$5%`|?3)pP)P#fpJ2Vp5Bt^ZfnABd&N)-#I7LG|5FiKftI2!K_HyyG6NCC(-pe`{?&t_X>surM2Kx%F6v} zA5-!%=iH&DM~(a2#g!C5yHfOR4dR<&X4tOGiDcKLe3@)T*$>Pp9qN&|A4N3q;2Sjg zvd_uF;+wy%E}L2te0ad&yy?nwyFQ_LmK6$xeQ8&fimIOy4S&7vw`Kj}8jOF^nRW`| zd()Kb)_m>Ci`3m#UP|D*0Utwm`gWoEfjJw(Kp2QRhBbg_x}4p&j`dJF4JphLppjtQhSr{awfVuq=!U+h1)shIM z?&T=Cwz0uv(MSYa>L2x_W1~b&88C({_s=6z6uO7!Y&F=-_%@JN(dL$$3kr=xWfJHN z@Vl*bm!c7>564Z?GQ>eX?*X5|nWq?w(GS`UTkCH`Y`8ncz!gD_*_wb+q)2-I86lMm z`21*iyW8zc9e$#q?^i8rS<*QjAB-N~_wM0- zf}`V+GR_8mCHG_sK0!566h|@0r$kAC_L0B;rm_ykX0P>ls>qSVz`1-^(HmUlCZe!O zOxmI%6U-eXeJF>wf=tvs9LFdx&*tu>#GBeqIYpC&MGx9tmK3B4-jZ;0t+)X7+B0YA zuA|TmsUm+X+hdU9QE(6}I0s2TUS}rTnlSotAJzAG;4Du0<}(COyb3K@QPU?N#y4?1 z1r}6TGfDi_v^V;}_&b*HJl=#x2Qu7F-%wQ~Kw3M|mNpEmUkfvZ^83?Be>VTuR+s^n z;ih2fIuR*0IWg|X>(xiA!3y%?vjW*u{7p2wtOM%avM9n8d?63*cfUkW@B`IcJzmC! znQ>44C17)tw1XGU)~KP(h2y>2Fyem6PH@KM-8*7fQis^O%QdG_$~Mf|*2w^LIQ_5# zwoF&8fb)fQ7z6a~{jUl>>BH4ti3Tmj%b2}ptRA$dSf8N(4g*2#C8rGl44?tN0Dni^ z@&BOB|Ddj&{S&>!+t{>LtW%8srJgW=uZheagf9gVS`-ixLtKPF$_Kj!6|-{5-Z+o_ zMD0fW^hfVA#J#p^u#mdyo#uIXp6zIJnf?5+cg6v<=9VsoegLdmXED==yXfFHrFS(V zeyS7l9Pyd{*t)d9eCL&Z?D1nXjx$UvKz}MV{_A=3bTHS!5fKv^KfK%WzGTKbz%5sf zS>J6B!hUVf+6PVSO=_1+=-!ABvh!iJ2*X3tNeIi1Zg1q3u`jyJ`4>{enfd}&*7A0l zNW|dHDki!w!*;`MWmseVdbUKRJB={iuXaMYsOQAiN?<{}yqJ_vAB^wm zO7vFy4(hJ;{uuNr*FpLK4Fy(zZxC@PoHM7QJ4bO1laVKQ{O*8K&u3JHj1`eE!=@LD zUP)x#_RM8kfyiu)^=80E(Wj~TWa&9{wgwq2?L(uyUuMO!n_p-VtJre!vS~yRK2ozh zF>CB_6LxBse`KRZN1*Wz`6SkJl@c$`qgPgbY#`XKdcA%Kuly|~_OR6jI?IwU6*pO` zQo4`Cia#vLq7m;q)W1W>BH9$L762hm0Fy}nujuzbiN$m*{{f@t5Fh{hOkw(&ajZmRUW@nB=cX6tI>XBz${<1AF>2Qpr)F9Zek+hUwk< zWiP(AEibUouA>5sRZhmVd~#wCLf!`u@iR^mBZYiwimw`sxju;~AqX3cSYTcQa*1gK zaslD;ELhOMwSh=CBL2vG;vqcA61ZL(+unuA=K>I*P_%F&?YYkKH(HR@}ixhD@-ksc=Z%vF`=4ZGkLX7<9*&VYkHs0*iy}0k$`b#+TWdt(Mo z=DIll<`4=CuAh1|lfWkv%At9+C$6zBZZD%%?m)Ap=qraJZdIXyq}pWq>R<9WoeRqw z@c_X16Xo!~0LFh5k5wzw{|V*w&eV3mE(~YN4qg_4!DxzFhV0#yXG-vC#B%D}v|i>W z*{`hvh2j4hi+m(IJ0@yna@d8p*`4nGM?Gd27iclImu;J^)I8gMo$im_?&ax>&keWOBfAn|7Afmp~_BU!XMW z$Tibf&j$7?z4i8s#04z)OrS9#FMpY7ajrmK9NZV}Jtfm_Dj1>Pp=NQJA5`jh{_^JQ zM&Il@tqcwvE1KvhOR`W4>cW(f>x%^!1ZBcTpj0LbDVzBNrhe^W?5U1ZtkzlF@so;pDg8aIghvbRA3D;dy z;`Xez8xR88xdKsZmS(4#{B@T{X-_}WPsms#eByy18)L~msKg!RHEsJTPpxaYa!LE- zS>%-ZF>B)Vu|e)aDYlN6zR{sKaG59*hT3V%K2O83h?d8&mZ7j%;&k6gL)(pDM23qg z^Jms{#GH?wu8^v;?!~SmZF_Oc?=SGen7;^kRa)P&0iv}9s^-qZFXYN z2T_{AytDi}m3eGBL;UfRJ_3Bc{S7Mn%ToPEq!ugi$^ll&8wR2@EI_qPktIa~4C%F(-V$Wj*g*;7ubnOt6Xm2q*-QNH!`ec^oAWP%go z=yeb`IzH1=N>O~3=c(&_bb?kIh3yv__-Cd-zE0Z7fKlv=4KoQ%p_5d2Hh#Pn-Hu9q z(=j3%r~kR^r2%ur5G=36w9%_|=Rs@f>dBNx0G&Gn%}$UeJ_ zJTMUx*EOu1=Q~ROoAplPrS8qNVLggk{h!Xm9~lqOt7NPdv3pa-8rFD5fOf|K(uye4 z@Yi@Czp1f!Rmn(xEwC6@&bY+twz#_z4p|I*#*!Qsx{3u?E?>BcDRWD^QzksNEw^0g zVDT|z)?TJWyxc>@{G(Vu!>HdCZZAB=? z@XJd{uSDuk>)}@=vS?GK>#t*S1c=*Uxhim92=adxM3www?GbyOmSzI5_JGJ?&Zh{X zQ-+*0h*2$UU{SVT#M#oz`}o&ksc|G|C*P}~3Aauh3R{5kJ`uy@U2UKLvK z>NY`O{t_#uj*wFUExxkUK9dBvM5x}VQBf8k{MoNxS3nWYBU6G$wO=PW5?5LtQ`LYh z)mh^NiDFsFUm1f>a3eS;7>#PZ?CEVWMNd;Z`>WAiGZ*cTrCQnqXJt;t>V_D}&YF+Z*LPZS#%n=n5Pif} z1CpG_i8@mbAgT2s76spU6>%kUBr-z-!VWTtc_hu5Zv!d!eNcf z+^ST9m3qeMmzsKk?=4%tHZP~nW<_kgeh+VF%{N^9hTevIC_Q25pTD@q^9e7&D!k(h zBA#4;WPSe?B1D>E4%6lHcG~A$yv<)_^#RtJ-`bFsVNS8=Y$TC&WHnS2f{|KIFZq{edq!BoFynV5<7h@$48eLeW(O1t*+&##|3X>tZbB zqm1R{YmW|P>^++{943i4XUA>II~TV=wyozf|3(vXh$YHzDLVaqJjR_YsFAg}%p(6= zN1-xIK&16R`qU8(nccVeu?Rj1hbwfFL5&-JKiwfXC4Q#j*FjlhvGzx87t~U6YDV3s zr|nim3yqp`SrY*u3CM$=0NI86kV2i}LuGpm1P#vmJd}u5H!P%1-(Xb~I~~@`MM;;#vw3yIuj_H_+U)-TTD8@m3{mhaiP%BWghUo7!pY>=%HD^)YHRp!WV z8zwHlUYI)Q*gT<|FGF}FAUd6ocC?J6uu8c6aGA5>EZ7@f5z7(k;c5&onpv_@{>nS} zL)Mw}c-%(@*d16i1w?m^ohH9!rQ$Sbd5HA4g=5fOF2a7}Zvf^F; zy6J4uxSK3ZDNM}>l5Y2_3Sve*-cPwqkdpr`D z9@ri~xFGlX+mPv4Vw3xD;Ia4%Ph8SInU}4eYvZ@*Wz~F199S0F_qhCDMP?z-DbNQ# z496o+mB&wtOR+pV1QF^dkLwzea>{)(t>*V8sQ8sO4Cv(%LKX$<$tR}B?px&;qqG!( z)8kY7Y8y_)wR0$VcJio<){ZI`HXOOPDUOEgc5@3x1JB#*$b|=*nwMndzLs-Mj`gbw z3=gC`$K+M0VAiMob@mXh*2?-TWjp@SoXhMv+f@AztayyHQByBcN6H>lI(ZYt#G5Hj z3f|5&S5&Geq0GIEFoF1|K_9%rkAkYN<${_=C(((t%x;_pRgFNY8?3+Gf1bqcfYqvUbE9e{StdpPZcs*h@L zbB;T4_!tazVFp?wN9p>f3#V}g@%HTjs}$R-Xa!ds+eIoT52>(G9nG^<95Pe)vt(%d zSNsmD;0?IYEj&ejARgCv|BGL6?)S6(MgYC=0qBMMzfUj!^_`(OVfqiahI*U>WTJ?6 zbn}X%CFO|X)uBLf%Yf;SOOuEd4!Z4C>qcVYFF<>h{6UpZ^ATo3g|eNsQRZ?I0!>|p zUcFy$J$(2--@x=>&~TL0=?G&v*n?Zp7il{iuXFP4(8gjML};<#Gi|mVcOuvFXlh9C zN9$^}B_gdaA@EM@b%*jDNIsn7Vv{k(ukUL6`2wFMoK*l`o+=!gu+Jn3OsJU^G;$t3 zS|M8^YlTxnEOx<5$oX^5s}sW*)CS8q2!XQv6|yg2*sGkWHz(uOUgb8@J`A#VV~!7+ zgBZg1ll$9-x*6W+cS354)t}>)Et#nW47jLz+;xl>dPrm;+4Zspl;#|l;g_7Bi`_{! z6Lm>V%0H(`WdcfV?g{m>O`M=vrSC9b^so(dP#^}eD!v+*bo?ODdu(C^SmGp_fHk6K z_kvI4i)%zml|QAq;3Qeo)hrO`cYd8961xHUQkA%CxT}nRE}MNPNn-BjPWuLO2efAc zTK1uvHwar651dZI=rXrKG?$UYzjfQ2$ZyYW9LHUHslL2>*aUO4k5R~FujnlSBFG?+8SKL`UV%?8En zxn&^mMuo{yME=~BYCnDPNpee6?mZQC0tiy3*8%pm+3wz+K40o$M3KPJp~VYR`VHWn zLppt_P#;6S^d~v@*0y3kc2Is{Bi6wO4vcgTiyZNIBEZ=n%lcfL=+N1##>L& z4w4`9{FBIJ=(qLdU0Z?zA2FOa{RysCkF}Mr*2Y}{lbNo9+(PXtM=HS!#UAfRKV*SY z%2d#$_xFD3#`|~Tn4bTSvUiM*L~Yt|XJXr&Boo`t#I|itY|SJSb!^+VZQHhO`}BU_ z59i%KzO&C-onFaW{iD8huy?z*q&Po|HZXhJHjDHQz5hhB~a;#npbbs*S@M(7Z+ z*5v4;+zjAUJI}6q^cD9m%R*H_$)9sXacEY|7DJ>5g|X0|vd8chx~%;rXpYy!BJTKy z1k{{_S+ENWgMbEWaX~!{l34HyTE9t;|FHLq%pm?)#G3R-PKxyF*W%WuZ%iWtdk$7n zLB^sG!9#fVxAw}v|0eO7nl`re2Y%_B5x;z)`v+fqAvr}QMQ5x3_LocqN~?v@1~bo= zYQks9WYZStIwiCQvyrC+y*XIzg;tWde&8g|^nmwoD9lCYM|@|OvDqKNwz2cY9gD-} zI=A~G%g_sF_GF2*A=yBDUcn_X(tSEV+wptz(cN}&IP>%44fabLXy)EGNJ3L0*u~?i zk#3l>nPnXOg=0HE1YD*%lP1buF{ZVcE%9E4GV2)~qKkxi=kG)8GO2w4;*;1db1C-WpPh{oXQ?Lz z0u&Ubxj2o=T7{FKyFsn_y9D#U4?~%h5bRUMJJh#lfj(j>pI$XgBqcH)TCR;puPsBL z-vkE~pjL@d(HmxzXOvkU(>;6N)Ry-rmE3WT9rkC1F8SZ-@i*{&%z2`Es$jM^^tQt$ z7q7uJmDp~0^g{fUU0=Ov$BAC4IC=`*S$&z$?r~iHTxm-~okgdBcgsSLkhC%OtbtzM zzf15!MKgY{L1|ADrIJaROB!hJ_JpFZu%`-lcZB$jpczDZ@R8f5o*L+*)uh%R#B2%6 z3>VhiFyF|%S0YOvJe{4#Il_oYzSYlz7f{U;CL{oeytTu<*vp0r;KB3Tb*Grtz=lCl zen_Q_S)-m=InbH0zlOM%Zpp8M-p~egoa$*FBDy007~2NSml|4xy!n&^AA-QhNq(P7 z71_H&wgEb4Iit3~#f5woyY!yGzgb^kukC)MkighBWrZ zb^fdZO`nc4-?HEshJJ=diNqpu6eKES@V|Wf;14>3F6J|g)8;P>B_egm5=Mwq)`!@f z9$)CyAhl2(p3;SFQX?Uw?&P26r>d8RI5OKN5_Na{*31|bQ$E2L5G{~Zbz~XkvoD`z zg+vj$nsF^WNz?!qNI$%zg}!ym+8)r*cpWL`9gAxaCV^iyVR^wFOV&on~Sp z_-mnhSEd0PD}-G%sCJ)9FU2MCmgAK!+!h+Fx=@!EVx`yV=d zU9LThf!UtePdvI)k?s&8RqL}RskOdky||Z=Rwb>lmXu!A4z|Wk?ti3h7G+p z&#AIDZm{-pGhO}l%?3BwGL`)3jpg5OJ-uN(2Fnfr{zfhOObcO`461GVg}xtTqUw*g zSeJL-7dpf*dgy=s`RPHnWog)jjc~Pj^d<+V&*sb-;{pF;bfXMftnK}Z&}z)cDf{kk zCQ>VKgQMcW%W?$}fcj5t$^Qp{Ds5{9WS^S-$8GsPluG4sm5dT9T!95N-R?29g#kEU?oBdL${RRevpW@@t$q+}5&S*~$(?~k1^s>Si0ATz!P8#%X-NujY0Ld@Z zX0z42gRbYIcrcs5(f19=BB?9s)ndRZe7ZUqU$0_2zLQnq?j6YHa>!XwU~10zaI=Z4 zZ{k|*C6xnjeoE0Z>2_$-z||1X(jCQ-WGqpmpaxuj%hj`H&S|lP$FdNpb8hA&C8ftV3K1 zZ}G~6o!2khlwe~oQ%g5OG&^xT_u`4NS^W6QRm?Ba(%@cn3V!vM$`Fa#b7l^%Ln1ty zK6aA7jXn&(hcga7t=ApkxtkPbVE^MF;wIxpHFpwsFMci?^{c`0?X_^_=e_Z`Br5Ek z+H{v49CnMj`pZ|7y*8)BYmkCrjN@a@{#qw`&CTwz69lG(dwk>0BHvwOvnUeJ%rj7s z`Qj@gS$X3QJ<&@!kdavHq#NU0xM$KaGHa`rQCHLjHRA@zt2P)uCH~yZs4vOdOLV>#^1RjIMS;UP!mj5I*H7z5xX}~${HaH;PqF&xImZz zv8RD5?Q$w2&cDf99SJm26lgHM%3AzFg3Ad@ zKxQ%$9~gW;8$YFrS;Dw%jZ-bIEBm+hTiJKWeMGn30B2=+Gd$1TfFHxhMVFk*0K{1? zj`ktW%Z|gg$=9^U-L$vs#mP<(tieJiF8gpqTPZj42v>U@Q7jE?Xz4zQ-$Da2ZR7?u z==Rd~&awk64!^8Ld&R z34svu+^7rJsviMt(^=wTSa97&RA`i@Sl(RnV_%OJ4BD|)a-*x1nj_+Ctv)DE+BHhA zeLb7+iXwPD}9f4}B* zPSRwDbQ|?#N$^1a)~dBee-*%OZINLnPdL_I|22J^a)fLR-9)ni>_9vJ%gKB3PVF8s$5xatss9bE!L45xcRg?=AB!$QG zJ!=wjN{>WxtBe2V7BZKYz|)3nP~Ic*yQp;a+!10_Q*D)90@4;$as;ZCD2Md?R~!UL z-~%L3+d~GamEQqTFkor(yRab&og`LXqpy?`NDBZ&S8r+zJ`i!LCe+-G{vPaF>`3Ar z;KuikY7Ed3M>fRX2t8wcx+fCdb;hYR?}o3N9bFHQfFmYv${?Ado9Xaj2k$lLM)y?% ziB2dyijPV&_71U{ibtC&4yu~|nBz0q_7v|FI+%@=H~;DB+gCBwSPfeDgHOOL9HdTm zx>N3WerOvay_VvL;%l(S5l1kTU^;%Dj1h}n`OKKBNOPwxu0e4LAL zlE_yko+(P2;Vb!G5_mE{UE5Ydk+xo-)}rRchtQ#Q_#JTGmwm{t%P{7!h%SSCqizN9 z(XnW*bOO%T>oE_n$!2>!=`$Hg%#E_0eF!6&v0T2@ZoYyW(iS7jzxJG%aoKMP=Xv0M zELD?e3D+zG!h}|uLGQ9s-U9XL)?SgZq!O4^~VY3M(@ke-F#VmKPR+I*Ag9JvpI#URgS2fhp8q|M6Urvch%A86ny z{LV;o&!nRKpgEV0V1k**I?75jqb8OcsR;0zOBg9)=3-?yY2df_&DfawoiLGe4?3pF zCorJNDezEAMWL7`9FZe)4L!}1pQECkn;IaCT>w>RGn5tmmXy_cP22IBSiN(=x90mHS)rZqJnM zUk+&u{x)tEK1d^)Z86qNEc0(hQ(N{@vsKcWmd$G(d1ysZuKm#!|0`1QiSA%lJ3JlO zMAl&Gnx|a$Ezx-Uo8i6&g&xFTcF-)q1pH6VTDNIun{te6%dHCI!`Dn&Fo zW5gf8!l#^mPorashF%6|4sj@D8*j&M?#B{$Qj%a7Y_1$igXSuU4rjA{8Z1EVOOu9l zcd8BoEH%JT7p)>?+2o-hQFra_4UAbP4U1dmIWUv2NV4VL1t412Un1on6iu9VwrEdf zW+R2%i_YE_2>mvz#R;hF@Y-$}0^t!u-6qlHc;tEx?HQp`a}hvSAF3r%-*qSZiqGC` z_K@Yz));+ z7bK#8qOb1v?Ht=xV@M^Gb+05Sxcu9gRtfO96Az4E&A`p4f8s?eY+`Bv^gjUp`@rJ> zq^SM(%G2s!B?GVQ3tg0=Hj&26{O~UfeUcEVAFNxFC`2tb7KO=>M_(eR7yD%S z;F?EIc_GyZ6^1emm3ZAcZGnE-3X7{ut_c^sQSYNwVYRTW)`6E;_fvA?V#FlQSngo< zZ&Q!El(MCWb9(Ba(`TIiHYB%Rl~n`VmUFIKws8+BV>{Yf6=vSl%-&J|PHWTw?Rke) zz%m=6_Tbtn7XHEc3I>VM#@3tW0M)CNi`EDC0rOy^P9Rhf{6S@?F{+2I=#P4{*Hxdv z6awcV#F)DB$8ZlVTc%O+dTw%`v_Ac33`kiq@Dn`Dq8q}p;zA9L`=0`ks{KL6pC?_% zQ9&4Bbd^rQgZ!-9Eg)lQXt7E8LCb^se6wkS=7n73i^=efry5q{2S!Qf<4mIltYHS) zy&~F**V4TxWUSh~&K=SgSOYcnKOW==@;E6{;rt)`Bw ze;<9X=Ziy^376klX;K)Nx5$~4+*KV*5)2+hWt3}}OTGLXKz*Bqhor(8W&}1!dkaI* zE)-S?Y)KjFfd@q|| zVif`mDD*hY#Ltoc7_?FG+Amowir9^u(#aH*bo8z}5{Ns?0g8)Ag#b5=fI%N9lUda8 z+OGA-){N8JfnX@^3QeL_G==iccg>Eg)c4wLts9SzLv8fMvymd!tVS=PPd)S816L3+ zJn{PoYCR!#x+hY0#xP`5>?1NV#{Q~zS6cuysYUCW$NA!;UuKm^GDc?bJ;k6?Ar%Q*d<0ZV9CC>BcCUlFi^Xj%zQX@@oz}!nuth%uchPA zwuiY*k@13{qf$35c#AKS-^xkj=C%Idi9I0yMay!LsWrhUHM|Qo;&&#|rb{||&xNPz zH|;=!_6--$g8AA9oxzn`nM}{tzq%l14{M8UmNt?@hi&_ze-;6y&~%M-c*x4w8Aq|} zvLHG(OvXRs`sIsY126A9X)kzdHFb)|thLq)_Ji&4A(;ilp5RsoU97M4J$4Jc!UlbJV=Aak$zHL0)lIbxy>g2GEIg8J%Eq~2U>OsbXF!w@f*!@8+am5=ph;pZ z3-95HB2Zx=ZWGXz$e`awp;?csSc;^R)TC#xmh?sdhbxTA2^^Y{BSXK*cg31C^0D$! zrKij&aP59VFjYo~X0jn9eiy+&8>S-?a*4GH|I<)(MT9|FgAzaeIQ!?WhfUhUAQ$bK zCACRL1?8(lO~0O#iYOsb=pf3ybQ~-Hcz;n?M_PEbbTdTFfLa~`gghtqFCqhAwFWTY z2)wnw7L^ueq}q&PL>Nd~Ql7&$%z;ay041wimMEFoE#c|8DJ)7!M8l@rcJM8^Ybrqu zE~(i18B=oRUm~Y`=N?i5?1|Qx-v6x=veb6p6%M?JDFZtp|76+tf03pCQ7Qaa7y@$0 zQPqGPayqM^P=D}jO)JCt6j&5k#Sm?k*ekTUY)&#d6sj0cv(4BLq_z1rr4~Z8`?DIWGg8kAfCR?&yj4`V4>!YbA_nUN z4ob5-6ulA*_U8H$8yszl)RdoP#R+s11kC!FcQC!;qRgQd^+kNlQYW&cI@=2k752ms zvm!NSd1g{6_jOjMrWPwSybHG~Qs|I3m3z(YGeLFK8Rh_$VwPxL^dD4I#K&vX=RL^B z{iZXvUw;^Xo>v_$V>3^$lqt9aHFC8VDz3{$?o)t3BJ#>r`_ZSH6F zWV!xRVrXO2uEBX3Lu9@JZlj!~?qdFeRbemY7^hiV9m2Y{or2YmKarv$wae~2E!#f$bb+aA+!m^f zU1%>l0RF3M%2B!i`UsPW?TUZkm1A;hdJ1gO@cXpbW+Ky$p#GD0fpCuycH%VsE)~G| zSC~Bj_LGzsZd$0Cvv%*ceM?z7S@zi zFX;SA3d0pX$cvjCHH>=ggM7T+{eoMk zH#lLON~{2KV-5_pzVd_!b*-)9tpA*K#X|z-q$5W z;ioHta$1C1NCiz3wJ(fJP&vhN5fqZ zu4hoaDmCsX;7agg0G1OcI0AftWO~CFGwzeK#|G*=a=;Vun)>b$l3-dQAB%-4rnDFH z{_45-^9Ql<-I7vz1zR~R5OW_R*$-|Bv0J;$Ah}_ zUFF?6R@`~$7m&W=tjiXXAJ2b_b8B(3(Wt;U2b^sFqtfCp2L&MH!U+frw|53QT>U%1 zr6*|pYw|j|QiDzn)4WVax+WE}tE;Ukh^q-AVG&ZC-Xx=G%GEYB5fk);@|}~^eH*lk z{Er#|HU)DN1Kicv6vn*UZju~tozu=W?f-LnMG!tR*Ji8l=qC!~$2qId8^{FWfaY#kpV`^Y|FnltijOSk zEuE`d(aLw8tX|bh#QyI3#OD`%VN+{loxpCtRKr)U5pl?rL_k5&$lKA6UzW7gzdUbK zI+0$oe`XixGrSr;K?Y-UcDWdwYZ*Xk(7f%2v87{2T%<<`)X(xa8FCxg96yc=4s1&fCt z8{;_yX!-(5u0mQXzRh_N_mi>WLf7{K)!y<+_-O(gJ_$TiivXtTYKJTr4(3Q^F`r~n z%=)3{6c?50UjhcvZ^pw?ET1h*pA>Y1)BE+?B$p%6&`gYYk{Ab91k(B?PP}zJIybx$ zq%(6oviSWu)f>lL@EwM;yhFp#X2&8)c6c@^3<#)X(u&L?<1EI`O(s2DR!LEQWzg<0 z^j*-X5#6(7+CGg~X|J6LSYrr@G{Mu5Z5`W60~K zOO0_lz1JXFVGU=iZPGWIh_AYWQ$zw?Prqf5YL5zi35G>7VPAeBiTymgRrkir=yrj~ zOu<^Ln#Ax1Q{|cW6TWsrjOl0Qo$A0;nG8umYfu@}4uC7$eqq(#C*uj6&e21h?1lYe zDBO{R6HGSalA?kc;}YBIgI27P;;tb|)_9EU z7w~?s@a&V&bO190w`xLJ*L4c?mYp*5q5S4@`;Xo%`wv|3F+!7L*)vi4#X>@CBfhs)^7*%ZT794 zpMy@xA=pudxs2Qkn5}s{fg~vCqm;!MbBA`qIfk|7d&Y1od>mZ1B@^4AJRnT-B518> zLi3p15Q*r@1MDa&DiQ&mI>;r-1XxV*0iq|2%6E?Zu=K>?(yX^%L`jriDO`|%FZUFi zqj~>(Zz~XqYXl0o3xWI3d>Z7Pog{1=ogAG1#li&&x=j8f-qfpG0I@pg9~m?}30SLG zVcpph=;kOSVIqPc29&{!mWF;Nu?6~og~y|NRK5S`Ei7C zR%m1-S6FmD>pDGGW`De|e^|b@Cr4X_iw@RsazakFxgM@xZoIa;UbgO}e|FqZ{n5HQ z2u| zcjJnX+n#l}N#-ETjL$XOJ92cmbANvFP4i-mpx+*KaAJ!vyN>7R2&t4X(o38@+`DUr z;Gy5#l)oD1Aii-F_R{dN9Ug4l-{ro!)`51Ejp!f;UM#BL_`4C&-^9Bk(cgr>*;KA` zJ4wrNw+4c9dCoRlNsj(RJdi%mORsUZ>=8f3E0ZyC?DZgHmDg;S(2uq$C?B>T97_J3 zk_#mDRD;{3A{%?=<4nhu9aznt*YP`EGFl5t?cGl&7e25p84015eNH}*#nf+% z36FmT&*4>$)iOwW$@t|W-Uv~j9Y(jD%bom=(-`ikhvhr~$5m$`%KmaYVKeJe_DfT= zu6O9@^$yj29iAg*AK8jJFcXhH#T?JB?#`a;Y+_yL&DZx9h7L+vTjY&3BhxMcs6(d< zMmAON4*hPd>Q|G3S{d#lNPPS4P?g${ z$>m47R%k>#dEE#puM%f_F@)B9t!Djb7u#gp`Fz!0u?3F>htcfTPYw~4?Fy=0&0z&_ zGHNS$?SSgJpMgE)shn+g85mL-f?oy?!Q51&X^E9ysZOqmxusj0NZQovM(n5(FX6Sk zR3_L)&nQ|cQ_i!DeVhukogCr&tx|k(l@`yG!6GIXhEy1*6B?Wn;OVYUGCoDN%+CW_ z*)T`0ESj^I)S$mxviGOXVKD+MEwDitThV#>qDHkWbSA(nN+qQed2Fc~b_&<-G**$- z`J8oK&6r+_5{?^0Z#CAP8ZsqMKk#Q-R@0`K2JCutQ-_+TNy7{*?yxGY(CN3ULP9B^ zXzpKXgxPGlgNb+zB2O)1vK+5z)l0WxLK3Sp5@+VlYo%%j-9RPkGK<~76IIH3JnHcQ+vJC&|I-vs&zugTe( z9Ve)La7Ub5*QdY!HtzzZEMMh`4X=90-5im@>TMydvPT&2MxY(PVH_?iZO7aR*Irnz z;)0-NVs=27fSPk|8fRgwc?&RFTCLrk$fM@#3pE`1DHjpEha!`|^w9Cq?f3ZT{8+nw z0p(c6#%qxLLa5VX_{D`1Nv=}tHHJBs#3KVI9c-j)^>d`*I2ilYvc5; zxKeM*i_?kfCzj$nX@0UvzpKNF7co0bs~E1LY9<0J#t1g{y5qIv^~Dr_;I)DAdvF=6 zhld8y>D5^)PHo9INgBz;NI!KB&6GZl2w70f)Yp&(S3@yNrioYad4M=B_C;k;%U7M& zZC%}IuH{R=E__cLn_fwQX{^0K;YP0@vbbt#w`&6xxHS7y$_ldz1ddR>*7^bZ{xfJQ^}0lgJTmS$fT&3M>3L(UZAYS z_o;*(i8FLyw1~Tj!2|kMSL-);cqwcVJwN3LZXQqb39(_iEy)A%&f%03_AR1|uI~#I z4!daV`E;ncWJO2NL0(f3IHoyK$oYkLPw}sd{W8MwCdl)pz*L4VC`fGJnnX|gQLlg` zg1r;g<2ICw{I2Sx)Y%?P6Ui{ZPAn!ch&u*uPN5ULl`?dPPIC3l_H;<0@3X;Y^P=ER zbM7PV?dEZZ`Obs*(pr?0SKlk|*$PXg;h0#u;`(o6=c`Nou%^o0k&H5`>! zEHR_Z9$uiJiIeLMVZkMu5)oSf$Npn9ob^~HB0Fq$5;bqs!9vobBiuU%Yi=xFJsrD?TUs6%-!-+`Tmo>!gWv&6S6(;jqTUr=3$hQ$#Vi^v& z@u@>!^itocgr)CKbL&3-x}*mbw_(8qhxLA|(> z%}omN7{`x{3+$T-#z$WLQl+AYq545sG6pfPw$U^1V0N;ft?rbahwqwCFMrq;x`n_0 zGIO!eT1*H3T!E{_PB`7M5m*R9Z zB_J!*IV%!XIx0C-zSnBWhzsX_{oj{Zi8}B_{WzH5=~R6~6`uVsQ_&ArYhX6*~ba(`fU@HOWD@i!CDtcN!|E(Ko62@}brLqeA=Xg>5hY&}dHzohr_fXM=7e>Wc}LKFaQ799lQ?m9H>6`C4? z(itgsqyK2by5Aw;^rms;yWT0$F4C2DkB&2x^dUR1944Y|H$^*wDQIuH5JRoGSqt+` z0}&F?%^IOGuGjEsd8*?o9Dqs42=BkwD3$6;oSNmFr%FoUZ!>J=&R{V$JPGp{9V))9 zt=1S%n~lW@=&i;k$u}{A{>j3eU0CO%J)=FO)e?=nt)tWKq_bXr=v1oKg>Qq4dUbaj z#BZ%VY0(>yOgWCHQdlzwwkxVQ9#LFCw-_;FWa318;Y|(oE_#uYL6=mbjTFpYu0bLK zpF4o{rIWsK=%Ia)!u5WrB-5@oh8%KL}MV)R6XDu8XjuWFC~{UDgVtk zLd0f1bPH_g(K$y8pO^ie(UNATvZDL|OP7%TTEjzOfyn}v*fSl2z-b$_IhxvHB5hMQ zo1ZE6F7-MGsJKeAHQi-P#&RrWVWu^)HF79&qUqykxM;2O-x_ZV_JVzPsr5<|$@f3Tv01Jy^pHzu)zF~%YNq{8sla#4(S0)3DsUmmrXxheWB?W@G z_t&$&iZ3o%BKotX!pF=q&H`)#&7FD(>>%cYUf`x*YL8IOJ$g$S>Q=w1Q-DnYg8mp{ zdYXx!95gLYY?^&_%GS!V9hZi%!~6X;t>^g5#7K!UL5c+IDVW^#Xk z5&&IM$kqj=#T17*dq)bds+MF8W9FbvduRkJz=@2d@|?Lo2Xt9Ui!}5W#WYQCd!%s> zc9m*9O5pUTYNv`-Un&)d17G;Iz_N^`?x!K6{k(DrYxcpdW<<}&)kuw|hQ;W;vO%Y| z(5F73M!$EmDT@)#EeeCy56$PmJZw6vUYDvmlM#D_Yuo5hPp^?N;fU7aV0(E=}v85q~Hq=ZIqa=a0m z+QdcBWV7EZ+Z7>hfmk2QV0a1G6{R<22wblP4&qbBUjCw%Svg0-+565;XcP?OD@Ie}2|u!dw6JX3N1cZ4Q5 z=wLtgwc>`9Mz=(S9kfDya^R9%dRC{4uT8n-@x$F*z11j(LGvX&qyoKNz1eChl<%13 z7MU7s*bdukccBTC77*}Q(Df}Au&MtLp%fPa)!2I<(=93Q3ohrsu^%8sWt{6=l@H_` znsHlvdqv!pn_@v;8#COvsf{($jZyViG1Bu6Orh79c9oLYBIy^xYB)c|w+jpj->>s^ zbpCwRc7;cg7agYFyDYYoRWk`fbLzdLpJ7^1LOe~;9{u+eJD)vsU=(X!Dou-osb z-Q63JHDOjOT5KCJ)g|iK_bQ!g-(C1ssj0D{{}!fpeNy`tN1&%9PNT}M9ngVZxzn+@ zr0Z%)$aQL>wpAih*mf|-@j?cUZ55-f1Xx*&QqqE2I)27YRRoTozIxQN~X)H zmgMFA-l0`SZ%f0{b_38dqHVsToViid9y97jEgU9Zlxgfhl8ljz6bm+F+N(G+oK@$J zD_H#@&6~=XK}nkI#k}|1N66tk56y%(=xy|sCnR8)`g3(HW?#(Tkb z+&e;u0KeCp5x5F3m-III`tQIq4;bgdruvg#<$=CJ#ZxK{Z;A{Oc%>#bijME1$=xCJ z!-Dk+)GduX*xB1gEaWECxRh!2*Ti&7M}vRD8LJ`sTPPNgAkdg5WtFcItlL6cVbtWx z+XB#WQJV~na4M*i;tG3*x}~sE_Z9fC^@1>`Pl`AIwj0fR=bq*85ey zDOf%CP0AY2$Eg0p|0y;?Q!l*CnTBckNP0q)OfO8jfh*QAdN@&>PCNr%g^5{X#F0Ww z(X%j#d7aE>Ii_n4J}#VI%m_PO-4^9^1zO#YXkm0(U6p(R-f&;83kRlJH~Zx4f_9LJ zMMN?=zJ4uOswHTxroL*ZF&EAl2SkH-RVw)(R*eWTKaIhz3nZ&&uqv`~xWin^e^6@URVE8uSsG zc@HM5Ebo1x)F6A>41C9bafwcw@)DH*7x*KPIZdF?0$K(NHzb(Z|3~L8_#U#Xj}GN} zkcPMdc2XW~3p9o%>O+jiG5q_*^*1kH>|c^EnY+xtx-)Z!!@G zuLV(V8s-eH6M)A z=_O+v{}71f%AQWWlc`xG2Q_AH&%nvVI3*i_&Yd0 zO&_?;CX$z*Zyy(JzYKNfLJ4oVVD;FM`}UUbr|`Riw~))rX8nS?2;35YB0!P|>*HF^YC!tfuuGSa;?y;@eH+pCut3N@UGY=7gU6A=G$VsrdG@5+ksBm)&afkU zz}&=gPoF(`q$v{Xv{#;$(-@a$cRxB^#GE?%vPx3GEmaYciow^4A_m&27=A{d7?6Gg zK-Y?QDrptd*t(s3{QL-Sw3l8_GlGrzlaEq5VelqW!nJ|$pDs=)L4Ngqa&#oobR0+O zls=q(K52g=5HlQAUuULU)S>EGw!qvS8eLy^ym?(v?LVRF&=tB5(VaqDsex&6G1p)^ zH>hU_`tT+-Fsl2CbEL{QoRBArW!Nks&neGW&IKSa+`SX8HQ zEoE>lB?zdGLhsQea7ognTV)gWtI2*>vrW$~U{#;asE4qtO5jjaM&>^mszfQ{Z+}1F zY9@+Azv=e~%-D!T4($#3zA&dIN27#uO15^xslnkxsaF;${=(7|>?UJ)h?b{Q?Mq$2 zVYs23sc<^_Ct+q$@kJ9mF!t|CJ) ze6Q?03p7W0fyj!qK~<>(wSriJnS!pOo#J3DzAglrZ-1}mKVOrT$ih#Fqq{X0T&_>) z(?0fBEp;nnQaY+M9N)wyXMn4h$&;MxDL5IH5L;d|H)M)}ehf7+Px}Gn*SfokL~;Vl zw5c$w42u>9kQVbj@u$RxwZ&k0%EL6+1GC3wMtBbS{5=NxnSm>$!4z0PJ zrlNk)3usCOJnMOMnd4Rm79se`PgCe~@`tUkUTvVeFw`19v%IcAuE+9xRR%;g&a#J> zG;yj1%7Q8rE5hae^Ah8I*A#sO{G8!{7a7ri@LB(_v9qm_<$p*p{@;4Aazz$+7{`~W_WF9M#d3zUtKs+ewaXn9kNN~b} z&`+IwUGv^ZFv^*_v4hn>E?$PTC%VS0TAtb924C} zfw0`xk*r)-zB6ZQ=J2fd8$-&9(XGAb-_ ztvKswmv=L@q-U_v&nw*SaXmJRn{vE-RpST+rqTZOwrAco`t5QrpWgw?xuei+5Z7CJ zevQ&=#%|Q^<0pSROM%@y9@RiaVKgvV{Sz(Eza`buz=QNZ3R)RkEmUicN-W(D1C0!b#cgPk`hC%Rxyn3FNotB~N-^Mgu9B5xA4| z5f6K7XZLz}<0f6EHIIzNXT*x$PRl*qf<_~3GG6V8#dX@*2{kstRDhmCIJsqkEmy}r zmx;p|s(iL$hn}VdXn0fmF4olH!l8ZR!L@uk<9Wi?8mjRN_%ULKb^rTO1n77vn+y06H!(xbTpL zS)Q;WbIc+UmelXmUMFNHicPM(vs%sGetc_+;OS? z7Rd7RoZ{DahuBOHp1hA!=A`Nk?$A&kUU%T z*1gR2HX>XZAecA;rG<;}mM6@~4tRXX`V>)D?4lvq${1uQW)yfPJLVMn1O@bB^@$i# zK(ZeAwfwMAyTecbM==U!_wVlGJ+2y$Mdu1|=oC1{a5xBx%9g!G)-J%PW3L4FKQd}Y zbQdB_xZCDU`yHXq5I*Vwq$c}+B-h%}bAwDrI;~Jet@H?t1-igkK=lvuin7Ij*Tdl|TCPB({D&;_urvT@E1(-QGb&HbR!oW^ zETtt$4?zJ@QlJb)oTK_bb4cc9afT@7I;<6Ui^Z$7C=oBkfXm zj@Pr=$LEJedb69s(9F!Q9HI2F@(hK$#0M&2#Z7reNU#nXaS5dGqg;Ia0{tfNYEDN@ zC9}^V+7-o5@?w}FI2BUvLcJw%i!5*wuVN_MM(`wxUOC+{HF<{N0@ML(t9#vKy~jD{ zYBy~?o%g&SGPHWA-4RBxD`}%@Z!+5li+IRmOcYYiuBk*CO?v35vJ^))zXDsGyY(?H zukkZnn;YZl1AKO^qdU18I@H@VC>YzEUz-?FkoCifxHEVkNKKMi02MjA!MOJ$0H}p0 zfE4*p{|1jl1Jk!oxZ1&f_Rx;;b!P$&l!oAPw>Cjy#zQw*j!A|MvL4CQtWzh}w~=hL zSW>gmT?5{4NgFP2Ln^TEfPpFI3~ROhz4fljGWL}yG~IT^tDdc|LLppMwt9#2WO~*U zE~&~!yC@znNSZzuK*SN=Et(Sj^L-aaB0h9l+@RU_1RwT2s7UN4Xcz_;JRVSuUqAIx zGO;-V6d;NyaGL^F;c`DwwC#1O``7#ROLdWT)thWXe;z#%^xDO>nmA703Rw!N>#jS~ z{-_ep$Km53%`Sv%3!a5&Z*YWrFK5**;l3#N&J=6`xN`sm8zq{v2lUPNCswEYp<(RWqaB(!|GN1qfoaNR_TrvJ1$M@!eioo{Km9G#Ggd=6vt`L8&X>F82S;aJ^QKSBwW~1 zyq7`zffsUj$+7c8pmh4GXO)R-FW2 z{cupH_{VAMjt0osvw~+XTF;|s4m4tnX`F&Uh!Ta6lUcdvJ&M#vid5LTPT|(X<-;Sy zeIEDGmUWA}*s?k0KBZyIDdj#asZWtT*0xBXCURAQsVg3o!lahn^x-1+lJSLvwLIxq zd|dd1e+@5aE;d+CJn}rJQ(4s|nlgU3l|#b=?%`-&KM6USk9b}#Z$`KyP@HYW{ws5I z+TTlnc;!Dr+`#bR2J_{M)ISIx|62n5m$T=8Tup%@y8qo(C|A)^n&n61)A|WY3MClY zzXM*GPoZ!H&~J8XlNHH>W8P7MveYm~CC8N4ef#gRlUfi! zhU+}Q$HK|UdH5@FUB>(4Ud7%@Rn^TjjbAG|-f7-NT2g=F(IY1d z8(pNlNDEM5qZ#u5Fm{g7m9E{Iu8M8jwryK0X2rIXO2uZyHdbugwq3DZNrj#7>~l_^ zZ};f#Jx1~?>({&T&gYr;ocDE$Pr?@~!$~B4ngYfnAdC1=gkp{yUXdqfY>RpA%z8CT zc>FJEUWm5s@aaj;$<|+T%|LX zT5dSt?%Aa{z9HcKurLePS?ZfrC-PkI2I~;S^fqOg;cG0vqs2w?ZgFELh3%9J2 zIKw3Yoh4^feDeVJ9XJW|-OSM20nzw6QSX_A&ELHnlBtl8hJ`#)Xg}g{45y42Krunw zE`{!YPREPqWwm5<9O`a{-!q6kViw3K_h%;|Q9i*q@6f?{)>E8$&3liSt#eNF8M%dR zt<^+2NaxZV8XPT)0Q&7z3utt=Qw2ptc5nhn&|bS|K2(_jq>~8ezuOQ zpT7eC;2r(crc_x!oxb+2b}owUcBW4MwrZB8EdPn7M9aL;U{fz|+!+o0?ABWh5hEg$ zz&gRe3m!V830o3O&dlaTK9VSV0|k2s$-4?kJdlJjLOkp5wyxc_1@*VT;N>0_#KeRG z5UmN?2$sOLOL*ol<#M~~dC@E~GmxQOK(b~5@e(HXfW(?Pc)5y%yt=lE?tu{Rnbsah zqzpBn+N4}@aqGmWf{UEoGs}Tzcn2BgZ%9X*hzUJK);i96HKj`hu-6$hj$&9ngpJq9 zmXA^jU^E7wf5AsFw9SVNzS?%xif#B~fgo zsO2t&bV)auny&7Nuq_eaeo7~mmCc?~r*N-94~|TQPoy#?VW#Hy-;sP5;#8CFyJ(Zx zR#DMB7&*4~p<{Bl{kpqC`2aY~ct;w=231|bVk}d0c#=FUNGL_PQ$n42p=<2)iemigQH?O3Z9TZmCh#}^=*W&ZhVs=X z*-V6&M+f};er?S=9BaUN#MS-%;|baj|IyZ@*2);h6xJHUj&(mrhP;5LU(K>{Fs|~? zC*OBDQKsX>b)CdxdYxdBj>9*_o1Q?5KZde?mJ*wV&%W*Z@~+mn7BQcpfO zaNFNNwi~;_f*pC^jZCcb+ANg$fc~1?9NERa_~7S9S-KFcJGR+2#QS%m zzFoo(9{(dhrJ*YYZ6?@9tn-wkB>n1r z)?r5ar1-JrzUD}#Mu7<=N#p)iRrfT>PBd9g`I$1rdndSYT+G-6ien=T^OW?kZ=c7g zgp&2_2(f8l>#ciD^}?uO`dUX?M+oWy2E^AIW>J|z|34m%N%^ciZ5_Yi)A|>i(mKVh z)!~dRk(c`28{z`r5sTjIR`MnDj@Fvc*QHa@R;Wjvs!X&9(OmFT8NohGrJvU!yE!?pthx>>pc7Qfj zmMv4c(N)`3RrJePUP~my@Yqr4)2PCO2S!vDJRdDqFYu9^Pq5p2)1tI!|7ycm(_uHg~{@UK>DPU;)=-c3lHcefTX;&{xFSR|aNo>&Fi(uqsM zff85*Bx+(gw`;7VqY%hk@jkCrdw{p2GvdVc*aoI|8TsN(rFYCaht5s9qu3g_{j1R| z;wgr`leesHgccU~qoCl&%(qqV8OE-V7 zKl9r^Iz>-u=c>tZKo@=kJ7t3eL-wG%!V&ghU%uqHZBmgx*a&nUnp@Ps-5xqU91r7XFIo#l8hoauNkE-7h_hlg)~XTR4@ z`rZ5Jo=qOL>^|@1e0**DxvOzmd(!-)l8YDgj%rWDgI0f{(8$!0lcn+6 z2$z?3t~XIqR?OM_^Mj2qKT=tCQCEw9I&? zD95jk`b0CvW^yHphVCX0MT@-nq#*AFWD*@;S&iWiN`~RiJ|O@ch3hslim}HgV~y=6 z?iBLg@*=F%)*O=GDB;XK&RMv#IjZ*I*NGo@GzHjAxkR7YkbTie9313*#%W7Ctu#4| zlMRu6#kaG_UNT-wN0qM&uj|0NyyvWg#Ix55Fm49PufzW^%9=CB?r(zb*NR6FUnQEs zJ<-%)X(@sW0x!+I4bYA}{N0P)u%8FenV1tdC#N!2d%E^x>3_DMxtm zXklRaI+c1zUQ4a%Dyu-!UiZ;12}C}N5t=NtQ^erm5+?%#Iww=F19$igvE2mZ%MDpF znpHyJDtdg;p)caUi&#jK1zFm_=K&C~@t}!mL*2v%oroKZbfDH9 zx3zO=91(WOAViLb9pN=ZxPtm|Dv%U*vHd&UMd`tf)ytJKRy|bWIjS+OTI|G6n4d-a zMc?2Yh>iEJzVu^jy)!Pf09ToUPh|}p2i1w2YkzigY4@-MAOcw4UrklXL5sSg(7PY_ z?1vFzcw4=2zOR9>&uW%v26;$oZA~+eFwVfj`+geFVgm39dIEo>^NZ=`nYDA5tF$0v zKEgP@y*8mVTO$Kz-FMre{TiIVF3whggC*m$7o_hY^PG~s6|4jqqs>%jO286j&#O;c zmY=Cj@o?QyKPoT#22kEsFyQC}9r75swJKYBM#S(U=ie}hi|SqLE)ox^<{7r@uE16S znEVaC;GbXA#wH(rSE&HR{O8@YkGqTryI z+9Q2VjEXH^OJj!w#OW=kdI_D&o+GxFbI-y_-W~`hy^;h$UI1a`3RWKbF=V~fA)s3t zJIZ{AJpB7Si}|(S3lb^Zm_FPl>5R8Uo?UFqDPZ22<|yanA@bVnvf$~d{UL}*e8Wc@ zH9;4Qec!R=J&K^(SNrWKehZTb?heXcx-inpQkkZgmkz5gl^;LO#@XggWCY1z8`=Y)9#F6{^sxc1 zcjQ2fF(6OxDK%ix4b`;>D6pHQgRVCEoeZCHC0GU^T>$_JP_AI2tI_+{=Cm97%}S^n zbKrQRF24U+8D1G7dO0*zgeuoMC$+&#%wJ7D-BvQMXwfT>8}@;a-F6i5<6(vjS+py3u9avW9{r-`lSu@ZsEgYu|p0 z`f$NNE6(=NWSc=(S{_MbnnAuEX{BQcjHKb899(~>ZUr*@w$s6AN{WSi?OUw2dGC&2 zxuV+;Ohxm-AIDycpv(@y`uz|b^Dt{Kt7&fx zcVK1ZRFDmGH7D&Du!uDTrAt$OW9>3jRk!b>$(iU2r= zdc&o?Hq}}moA%S3fKMZfX5ol1j7se8&vbThAPi!f(b*4Kv^>vpf64D<)uNJz(MJwcWCa zTjkisMqwkX)oH~qE3gMyQUYw}sj6{f;0)8N_XWvCta@@v2f}Y*Q*ZJ`O=#dEyD4=8@*cZ_1m3PLul@Vz+w?16B^j7gu z7$DygM{)4minzr@I3FwL<%opUDL7!X-#ajoz1}#09*i?LRvYZC~YbIY}5Z`kt_{ zrt3Iw_aeO32;iXmIe&R$12%ri90pG>i)F%+evcSPQMz@oVF9p6eHWUAPFHQM6(w`> zo1cIGjYS^)64s@y`6G^Yk+atUI;Eh--eQ#ts<&8b-UW399r$fQoyEqQV+o^CJhRed zV2OmBo?VILN;aD>DxOQH5?KdPdcJ_7h9PQbMMWUghCi~=6;xYnbcZ-GtdfTOfAuwEze(mE+!(Ui(*MePcKTrlIAUPbxM6M>w#Zf8j$BD}6?KvOIB zcA#zi__I{H0K32Z6ZiAqNU;Ste0=<$yAHIUEjrsjd0|w=MO~d;>}^e*WKBK)YI%~> zbTmFUHs2L~$g#)~iO5nvBw&;q)yM@0e2eGsSE`*+SDnEy2-(GgpkU=<)m@V`xSw=4 zxTjRI6~55E5M8!fzE$=Me1~Rq%^Bqia;Z~)ajNq6ds+APJ9>S-VnqA`XDltjIb_-q zdWS-x;$a{GOEKT_Ba#I^n5~W~!boO_P39uCmprYBFsxpy_F2gzO16cLWA9t)PbS7) z7*RK^$ETIn1Y0gzp97Ze!5Q}EV*8WyqILAj^Y&sr?rjUsZkDmQrOJrC^mnTyVs4|g zV!=@dwvUR(9umAY#*512r`>@Y?erf%>8)5Ovf|Js*a{04R~8}O*8T1cES$QRuu{8AbquF->l0#q>~*8C<0j-> z-?$P8!)Oac9)knxsJHTL%`y(#-duE<4LT?S)Mjc6F&X9-lV&aJ`}lK&QG^5M-(i|t zWgEGpnD$zhbuZJ5TWr zTUDd%>nr3T*&dZjh;()uuZu!V^>Ft5kc~XzWUxiI*T+~z_k1j2c+z0Qi0k&x#YO0W zobuBFkkf5D;^%|j;q%pUDli{kyo&z#7m+B;xzE7^;oq3`^6~F2$;EC0TRBtF+e+SN zJp$Ye;!Oh%zq%6ITr=H}9C@yu=mW zkZ3ClQAU7iiwOF9cu zOBX>9vK8H$tNdc#D6FGXzMnqTEJLP6uikUvFP9rRjsDQ;TvY<%lv7SZ zy+yf&c&J+sSm9G^F5rbuafU5o%4;5+R1E=9&#Ac=G|Pl3Pn1IoDJ+I9lEJByf`w6q zXAoczY?NngWlSld3KuH+g$g}0q2t-o2lX<%Fi$q2$guIgYaMN1a3c=#l;C7_hr2G3 zz$+v)N(oYfCG+esLY8dDPd~bf%SedJKty2ppTt7dG6ZQR$cU&fY(mr!LZ92=r=s~w zBd<8vsHY885Dc2JqvQaJnaj6FjvgtrvS7obhRhdlvteKM+VA4|DRNA`IwWcr~q#+6ke(7LsU|q=a$M%5C{`2KNZ#%$9Lk0b1pDXcZ z;&L{-^L6Ty`~58^#}C{AWswfS$P^0FF=jA>ZtI(4ws`m;O=MjRtQMTnU=PljD~3I; z$8b+O1kG!s(GLGo2E-QU^;bs5(VCL>;L5i#bFn@@>RR->oaXUHA5)ZFRz=UPV!BgabQs!3S zuknU*qr&rs0qqhk^b7d*HK>-&^v#uqbp$`jp~R0OQGnvBdE?lt*F!?-pCpBP%Vv9} z&E2-^6t8C%?M!u7vz0UVb%TwI!3}Jg<}vvRk697QahVyV%}5QCa+@E)#C%-M_hUH8EN);Q#F;hBTwL5WhiP|F<&eXYJX(ESwt+>LtNLKJ0VuX_O~ay z6^^zP^yc}haA$;ACpDZ|M}e4d^P9}@5+<{6nS)@FC5|ftWHG5+5$1AoMsoeao;0%f zCAEW;SScuejdwU0Fcbp4C3FG>MiUBiteR9vd*@_=;Q9&iIsG6nJ_<)^S?9he{;S2I z!utFrQBGj?{<_IbCB4r%8i@&)c+?wt6yOxYjWhvU!u_iVIl@C-PT~#67!zf7M+~Y9 zI5_tnj-FQ+bNcJPiy{O3z+I@fH2i=N$~@9R)}roSv{?2T)cE3Ei1b6;x?8o?&fO*1~sNs)}5DBVGTzn<+d2GG5q@xmY!QSU2A0g4#@IPi5 zAw;`7`hxV`MfVB*0H4_;t~-&)e8GJnPWZhz^#xR@IG?u;Ezn0%^pI!SuXkq9d*qPt ztZ%XE&=Upw;ysApc$?UTD<|hd!??5TEFnf1)FO%13`qd;Ygq@!#g(|D_`_@LNLJ z$}>WN$R8wA*anISQw2BG9$;u&%2-E|l#Ehv#~lv*Lt(Y{M@!|bkg&lUpW6;-j z3pMbNCNU@FHRHw&e#>f*wB$wYQHp?ma7+7eHAB9wc2a1PqAZJwp9rU}T6Er8dY8@nj9G`CKQuv}#keAiOop%Bg7ZA=1^ zA}%kcdU9DWRb*x|EzIC;us#2{MeY5L7iLJf6|n;q19QGwxEAy*4o0}U2ZgX()00QP zzGowMvYl^4n8QeVEH1J$@lll=qDUgO>j75cz!Om4(sQ$>Z~)e(vB;1jQRVo~4er z37?dtNvhQZT&D@2!&S>~cIehQicXdIgAO4-pSR2k!mP!wC)*ZK`gwxSYbgOj-$0|_ z6Vmcc8Oj?x4Dvz^^7*fK<ev?1mmvrGOT}+ZbV`& zhm{Mt+dE?dMVGNZv06Xbhxl=EoZBodq1p%93g9DDr82*3m3@4zBsrsfISzso10Qyd#@yY>+!e0j?pnnwEQM^N~R@xeCA0`K>mjUMn z=XUOWNVdJb@n$_r zF%?#jo3C26P&W#4$9pspov!zgXsFl^I|rpS^7Hu~3Fh&PARx@(^7&JynOo$AN z-)WTmVJ9$O2weIV#Hjks35oVW!onbmEly}(7f|4);$E2-*Lw`y}hRikS2 z>`2Ttv=Yhz>*;aq+uy>gwCn}}F`p$e_469V@(-?2l1}!n4w6nrpD^eDTsKYvY-`|( zqrDfel4V?otlvWxiA1A;gG|a;mV?89!!)qduc0L_0sGCM)*0H*E+Hyo2|l0=d~cFe zz+>^ObKZDgNqvA@t8~ord&oPPozCW$ZLq~IJ@!RQ{8iTuF!K2oWX;IZPKz`@{q*W>Ki0EmW zre6AG-Sqf7tGUSAF*NO;I%HcUd!!2`!Q+$#v_Gi_09x zYx|%>-Z3`pnsVC*;;6OILqh>MB-u8uSW%)nwal!g|)zf0QU60My7iS_`nR|yzGzwIT^MQf92Xu zbUR${>JT_bWl02kX5H25E9>fz7y@XeC&4d3k^Zy%z07+nzs3}*j~5$+kV4D$7z={7 z;3UaDxH4A;c7^e%$w0%3#mH+bpIhEVD=yRRl9nUrP>B6Eyz{GT^}32`0M?uWWa4V(I1d8Gqi%)E+KT?P7L6{q!E0E9dxp#5Ko2Q=h-1;1TCyD8arJ>6y64fEE0Wbw zx;va=^N>6=BwR!-u*N@2u&kq(ZI*3IDca-}G*sB^%2{%^24Bvx)|5OHPfD4*ga#yz4AK-zWqve$|Pg{!7b! z+Q4v0Ryay|x!2Ej&UT)%{qw#z&iMtNjm^Z-4}%7-RSmGfMx~jUL5_~7wg5<_NycvQ zy#!~J=&!oQ(u@>FUiax?TK+zc*kb8yZs-Ow?F1pu)9^}vV@LKXrpEjaT(sLXe!9;HqF!kC zqr8C!q`Klve*`y~z`9SXeS1f@bU<^EU>&GRB4L=}T@YxxBEju@PD#XULYJA%A|HI3f-z&65h|q*exd0^C%=#M)J>$Swy> zu2`EMcXV>JH*pj^G!nEYP7Xh}F6mTKgG1N=GGSdIiEz{v`x#akau8Byd>3-Ss8hKM ztaH^B^?Y_z0)3G*b$%-$aLiH`-NHMrCsq~0Z#!NjPb?TiJAhM#(aW_yWR-47>)jL5 zK0X9&8s+6wVSxh?^$^;YbRx1hW(pH}w>9F#hbAQxS!45n#CWRk$7KzpTopgTxaAvL(+6gUb&Gycu! znQ*>X+#vF7QLRW-9(-Y9D91Y3H^xyCrDfU zFA1;y0f^{61G)QROB2wMMr=v!u#WmW8uEdRD~>vvciQSRzZ`T~@rmijs{yo9TSOnCM?|^zx3bWSb%?9+QZI^tZ?=^WQjJW&@<$M4$pR+C0~j& zvzTJ)*Hr8@?8L-+H69qPp)dNxFsr2^FOlWUhR-Fl)a!Ql(92)aigl|68HGZge`-E@oI|pO2FR zp9Y7MY`zriyFsNM?n!{_g(0)V_`b82XvUi`>maTY(NU3c8)om7nD=Icn;d!OCTA~% z1r!}KY7=OL?pSMb-_>S8nAVrR%crdZsWKGmg%hQ!O+^>CG|>@G&Z90kfWJ(no3p%S zzATl+05=&|Jd3&a61~aIpzRv`%8gf{hn|h1WQNtPt)Scxrpq2KP>%UWd4?yDIFVUa zT|INgWXEl>tJ47DM}+T6^)K%8r1Iv{(?uN-@))JraDFv!AT!4|tq!{WEE2Urx?7k- zHH(&tornl37j*D_Y>6h|$D4&YSMrU5I3G4?9}%pi*+7M5I20#I)oXl()*N|~0B<_^ zz0-g-S?l+*fV@62<-y?^stmQ2k@926#c0lE8)9&B^gB(Z+Ax;>R&xVq>?wh}I1>xs z7DHtYHE00C^lCb`V)pkQO!i+VCke56d6E|L%0_T18A-7wne(CR}`D0OJn{W*O3XxCK z@TmAYjSFtK>YSO56pq4BX+M8<6%edF<*72hd7L7zrUt{FJ#Ne7Abz(+Eq2VlE_|g& zxMtD{+GnIC6+S1#1}r!9$aaHvM?8-ivg^f+t~F&7)7b59h#Jy?@;MO^vw&;0v9=g$ z_V8Dy`8vbg5td@{d(X5(Ln^13ZZrYS%i{1AU&S zN6rO=>K{xHxV*R;GZf6f#}^SK^3U<$ z26#Z5YpuaA1avzbuc~n$1!8@7Bgh5?M5bMLc)@P?wQoS7UrF1pQN6A|{rN3{#IFHA zpU^#DB~0(#fj|6mqXhNPLy?KvWI8$c0IT%DSY)K_@#! zcZ7>;ML_AyGK>8{y7ATx4L<`sH(^G*&jNSY!6n~&zq(=aekSGl6|9GH>f)Cc8qc`) z%`%x_Ry^5eQo*x9=GU6m05d?Ube44gkP=9Wi?ret^QN`)gzPZ{gz`r)yAw!qPI`xR zWxT(*Ae%yMRR{hi{l5J-nYf|>#fbD%CPw<~Z-o9qp_TtkX0ZIrUisJhuegV?sl)${ zC}{*-D9kHieV-aq=NMbYg9>Abi?t;}Kcp0Ov57M*CQ~5F7d&r5r907{bEDD?zsYgW z4G$>|$J}v!TIZd4YQkqR6vJkfpZ1)7dEh(huvhGUdwxalVZ+E^Mi)bx2SE|`aHRk7 zrE0xD8e?OCe%(!{C+bJx53R56SlTSQ2N(uSaGQomDQwZWmH-ZUI~JGJ4J8xTB;4YB zYg$=s2)CR(_Dbtwa_c2vMRMy^`+f1#^QRjHLa=#$#eY@aQzv;WIbTL=upt4?KeH}x zRDE>^?o4u`elClj|xaMcz3AI1$!rOgwm{VAMqKtA_CzCsFSQ z;7Uy)E9uNCqv_eJ_UL`fEL&o($V~r{k(+Rb%o#p?omYs^Y5Ndrxi5b!r0xWS9W|~s1LD<&+ z>_8A#tq=OGS1vf-Xgns7ZO%|<1h}Kj;U~J0|QQPc5l*(vysy();3fp zs7kd}Q?86g^a^^}(k6>o8IlohPLLVu`EAyq4)NlcsP*T29zoD?9`KWEsg+aWs<`+J zk}h>QES|s^e@Jh7J(n34xS-Su4WHWVBC+E*( zp#OKqXwvq-lFf#v^_l@P&D6J|y#}SnOYp!Qdo&O-EYzLecx+VPW2;pL8(SM*DG#;1 zK*k|Ip$~8=F%;A{(1mW{54i2mj59Y-iRO44MBc~Yskh8Ke*WgSo2xVTFIb_{&}2&O zxv*8t&UzxOQ)Z|(Zh>hT6B{VIO;GM)EwVym8u#q|dUInC{@K9*TRm0TbSV@|Pt^DM$=%9Wa)1uLtVbMs-s z2{kF{&qB#H?bE5tFk~&eEZ3RS*v&HO0X48^Uls~4(fkkgckkCHn3715vPC69!ojU@ zWRsk>YEl|~!ZpU{8dVhPsdZj5jGCqJL1MKbrf}@$S7M`6(EA;g4dnzie?Mj|uMUA4 zl1F?l7<34n$`=RlP#@yCoWUaXIo!aXVm$H+AUd5J21CNaXF*Mn>4aJ>9tA4={8B%P z;BtaguGNopwT3X;Yb9B`7J0rU$R%Q$vE?%iDc_j9+~F^-&L88ojsXk=B-E)7E=7Be zZPBEWX5$(!i-i!hPzJ&=WB-aX9RJCJ7mCV~8SKoW8!*mNC`5c+BYJ{@#VwV-TTdw= za7JwXz4Mho6?XJ#jc!){s*;*al^bhF@h2EqoA3`LSwcZ8;^H5%se&<^Pl98@>yhOp zEsQ&m-Z#AK1XB5K%=hqGX}n6ZASe(@RVLl)qT?nXjn zJr4B@*@_~iJ(*w#N}9zFJ0A>lUZM@_vzEJpKcda{i)LJYs+%@vrI7B~B<9+aRB<%X zM?PQ;YO*5E_qhX=9M2Anr8tj&4lS9<@Gs~<@rIW1c_hvLGXVXTtwG;fnuF(mr->EI zeo-$*{s!)^<61)>WP24D&Yr3n2;V>W1t8K1wD$+rNCv7wKLEe~N;800tDQ3Pm)wzw zqq&I#ZbQAy3jxsG&=bA_Ngjaj5WqfJ%t9KKl86Cf5tPr*7907`$3d&OR_LQk6U$lV z0%33u%!l6pChq-dztH9R+;7Uq{AXdQf3?4VoqqqmL91cuf~$f4K2*nF%j$+V>~>x^ zU@04KIy^SI6qkxN?5GWCADvZbNo7W+m|5G%H8-O517b|YO`A$K@0{Kgwy+_2{xGvo z5W(RI^5gU8M-JTq9!}Sb1or5hlpEU1@npv1R_9~;qwixEXSerV9K3h!bkadKZSJr(X-~FKQV0ENr&EZJ_hN8Qg*^IHrUC};~ zCLAmRtlSG+V-n)9;k`2*0G)I@$>F<4NVN_dW=c0hPMV5k%pEU_mk`@tfrKG`{_CxVU}rPH8xnf z+XYfIYeJGPT~rbD*%NohXs_+1r5Y198ZU_rX-#mk8KybHL(+KIQy!c4k?9I*g$Lp) zatfd#$2Y1Zk$Uw>ih!_Nmtaa`0_gtW8d{Z@#1i9_iAYH|HL^0mWJdpF+fCckT zbshp==T0HqAmm$8HQh)r#$#>k5gV}$6tM1EZzZV|{2F$YB9aLzXY=R+i|Tlo{AruK;FeSsrp#H|~}>HAZ<2 zT-|@or`i{7cSLyDRd#oK*lePIw{FYKS~85smfnq71f0+1>x_D=oIMron*f-^>Lc0& z6AH+sfN)k7G9G|*>qn2)=Y{HtF_xq6-fIS{mokZTIuSYthVF|80N4HS?llSVwU_l$ z789ItTSKq(&Ve46q8DLL@=!a%3KmVwXmZr#4B18hY7HDS*NzG6Gi|^UfDKEUmzwod z&MfnrEkF6MK%o0r#C}Z3>sph}pX#tPtAv-{>%r2Z1ggqC^e#nm*0NGpwM_^f-^^o7 za)^)~>&r`;0K*-kXV2LYV{CbfLpVH%Zi}oL2lww*WEk~_6Dx*R45&xFM@EY^Z%d8! zyxG#co5!P)RA=_ z`jSgMFjcrU%=U(izp)+Sn6HU_7JAA(CVRAytY9obrIn76<#4&8e?kxpVuN1w8$)cx zVuKQXF=ivLr!?URDD~H>f$E}Lqx$|8v*^(XW55bp=(&RYRD+IEb(Gv&JqFmM<6c4C zIMQ{l@0zZTE(HJ9oI;CpIcdKWH{;89B4>($`ICA$oqnayEvLK)E&F%JTOJuS65xD4 znEPig|4Rjr23pKfQU5e~i^`iF$T_t5)zqED+#T9Au6kRcb{)_jFf^7N%gXXHBXXgWCj8Aami9{P z@}AD!E1CBX^cxes>=oC6HTU%ExDk|dbVW66XFywdcCQz^hXgkB1~@lq`o68g=SiL4 zVvXx4c!!s6XSjEwZVWEp4P%QcSmnr~w9~6)(}VZI!Jn!z#)~$@FdfLy7>J`lEnS(k zDe2S8ffgwL62O1q@B8B!tb$<%2aQdmLs{4(Q$z!X=!AewFFs_rJdp)4{E*nPOFd{` z+JKDCpCAEeS*+9@dy-r#JAY>0G!CkAkVUo(F+qM%D*Hja59K`6L=`&Wi27axn=C=| zTN?NVq_iw^LV1^z=F?kTLn2YDLY~GrQTzhNIG;b4MwE#&bHcK3T+72A-mpj4L84DU zRHbA69p_9V=By8BWr?>&%>mC^a;;Wfz50o*ddD+8$KK=q10jqdhFP&r83x}vixbiC zJ;OrOao8rB{htNo$83fMFw9%sNnvj;!V0=I*t!Y$CBl>CoH4L+tl(_X-E{70f@y~w z_zNn8y&PZ8#FT){>pZ+6uhp3tA8Kdf_h1%3`X8EC!WHIP8zpdeByo4k`>G-vMDKR+ z(GLgwZpI&+z!zTMKcOnC7Yx7EIQG>})ttkP*|R?`M@*ZlJ_z@*stKxK*9N&1}%j?&GnwI+9TB$A4Y;*o^0A#9nA^Ob+vFZHy1| z*0tD&(iUBf{L0b-tM(M*5pw_GS10uz+39Bt`!1T^;ZN|I0{QDh^K#q7vm?A8?m28| ztQ6cqqTGnxqhN<9eU!V)f59u0pWuNH&ScNJ^g`Ix1)>9~#o5UP26&9idcjiI{CE_ z7EguRANwDFvw3=%;DNM$%AU8M&A>k~KC7DkpY&)ISDXI=9jVKzqJ2W6FZqs*@CdMx z^8K0ecbGtPT**NBn6%oZMZR#e6Y;Qq-4F#9U)X=CO)P@88 zQ2s$wpKx#I?FXAtsyX(a=JqAn=6=jvfBTQnvK`Svf-ASTql3bG@#iO?HrjQu()-$Ha)g~Y^gr14-Co`wYX~^@;M43*on*XVn1gWDyqfwQW z#Azi01C$!vDfea<)lRHC9W>aG1-TMy!BIo&ub~JtJ%9$BOg^ib1becYY)S_u+=^Bw z5t9QITBNur>5nG%Ndj&mAn8pEDdoC4muAK66SC;2N|XJG+i#*-0(|Z@j*z~7EKr`h$8r$+T?|Q2(OIQT3b(wYpHTd5{ zHy&xbuVZb=#9J9QoX)0tZj0F|Aj0!gRv1UY^Flsajd8B+3G_UZ%bv2^M3iJ%%oBJg zy`mhU8lb|M7p6)>h0EOY3Yd4E^L34j;f$>5#t#0X?d?kBJG%)usE8$#`AM@BuH00U z_Ap!Yn_@FThfoT?I-%BP7-pVAv{6qApah01p%nI_deT1ZtNl~iTI9zS1PsJy{DXu( zj3SG6BB4~cFohYPNw9jDl<^83K@Z33=vhiQ-lu4bt|lmROoiWIBo*A`G%5o~{`b ze*9$cjx%VLnX{3uy88Lo3dYfYtY8FN2b0=}MOhC3a@*A}Mcj@E_6T>qo5ovQ4UA)c znES-936y0?y@PEl9M_Ou6w0UU<@GM!@=3`Y5`*T5Z``q;|4~61wS7XJcH=%PsDEcM zml;h{aT=Pv$@JahKJ)bNxpf9JPneCcrCLT^|6IWcF=L%>l`* z{yP3tD5TFr&<1$_7!9mA`qJ5t>cMdb;yOP2yzh+nv1s`{co_R37r?uFrTWbg3ARY0 z)Fcm*dH;CXd#7zfIbFq})=g|{XyN5*!M4EYap8iqF69Y~D*P7P@m})pMG=l<;KuTE zNE!3#c;x#B66JrJ9RHI^@IObDS!&*&qe`?7J;Ta{I{BtuV*!pM(1@yV`%M;hiY}1_ zc#&7hpM7?1?LxCnHOD1uD1_mDpYTAXA?Niz86!txvgV^tX8x6HC&-RC$G7+xpGbL;8BNRcqXY z|Har_2DQ1j-@?V+-HN+IaVzc~9EwA6cemi~THM{;rMMS|;_j|J+2{Gc&pCU~nR)kz zWRgtsA#?xkOV+inwG8#R`?n0z=&5LBT!0ho?UJTG804j(qYJYAw2? zkIHPjm$0$heSRzY_J3@QQ@MN+3=eD!~ zyBSqpqG||3vt)27YZxC2mDOz3wl~No(pHQap54q}1Rq1mM|TzZPKg4o<|O@YJ)K_? zb)NXIE2$0_%CoE2_NGI;wXjE0t7O!8iyc%$fr-2dBo(_1Q^%V9hyz`t%g3ku-eCPs zK<7HZ2%FCt-8)Xy`I7vZVtOt&5C~Y3!s_U7a&X*>?<~}E**+j zvO8efW^LE8GBjEIRew>E_+EMIEOKfFB=(IGV>k6A$&=&d24~1cD>}(yFZ7VL^_+dn zXP)Z!@xH70DOG8FU~rKT`noQljlb&FBdLzWu6lIC1%hkuUfx5M^{OnOJU|DZjo!K; zPq?Dg<|hZD263(Age9=Q3H!)QJ7@*=-JhrPtR5OKRt%fzmaqaFv`P1qijSNhZOZb9 zK1YYFw!TNiAf){2>DOBN+f4@T+Uq|)&9e_w-X2(a;ZEMad`bT zWbdw0rRlwW=;W;KvhE(Z_`8qX&}mh-`2=&k=^*n#^t1X9T?>~@YO0T&8uz5XbZfYP z$&Te0_txB-DNOo=bCxYljCj+b$Q<0MY9varMLbQM?f0X683h3oRT9o7AE<6ke$?&_ zL+xS~7j7IRNlVfO;!Pu~I_Qx|3oT0fKIyp*C4TOAF&0to9O5f1Bn%s6y6SPFgDEJ5 zhN-TrRp8_jK)F<>i~##dyVu52*paVp`A$UnP&S`5>>}&%Ij@}Z8qX$Z{Wh=E81BR= znuZx^geC-8o}WQ{^T*kNVbhVJx%Y~6Le6vm;Y-2L-h%9L=)*7>TO?5ALc$ec`6DOH zTuiVh75a?y+I!LtnzM(=WH-k*XDi9Xa0fRg6IUdFLP33D5HbSVHnTNImP*2YVbJ_Z zcOX58K<%a5!U&fcPjkV(Koal5*u(r8tVPsP%Z1XrV)%IDIAUaWIY&s&EkP`=hYzA{ zvA2eqwMCldmU+PBK14dc~gr;nfe*e;GD#yJGUeSjiYY` z9QvNnRfTqODj7UdcKp-ZIL-b+YL@>7?T0XR90nJv`DEs zqr+#7j2hFFxP}eJS(l&ows7ez{POHz(y4J7G#~ zX?Ck(e8 z3-yiv{HM&BWZ?)(Hz;YMg5b@6!&_7_HL-9sHFo|#-9vVw-d}2FKt&mg+~_-uh#z73 zNzI(_zTiRZEW1a`!q!BDU2MTkdQ>)+_+Q&*`MPdY{ye)hG38^-~Df5}oN5x2|$ zWGo<-A(m;WXi3Q^eWZ?$C@y&U#5TLuMrmcEb1m`?)J*?|xx3yjgL~_s;07B&&69c> z7pIA1FWKPPozgN_*!HF9bpY3(n?j!&7$PR|acJImh~gRIm)j}56udxShdyrc8bD?=dy3GWlWJ}d!N)WGTmX-ghngVEC&@Ag=;iO0eDLlB!&3b zs^%~3FOc#^DW~xassYjma@`TrD=WEw12-f$~zj$*y<@6_dlIqir;>tsSg2MQXCugP% znDM6#`G&vq!-BPg#>@a zojiz(-JL$D1rOhxP|#w6y%AaQw83+8p~}d2!3nWqS@BPM&PB2wFa_?y6IkR0v>|G) zk}mjJ>(^?KdgCeGW2EzvmFd>TZiUG$?|LBn0LgVr?mhekzI)bSJ!ghbx8n@+iH6Ig z@6P}${{=4ZK#q8xM4OwWoun-^cQnt^{OD|X0hG*>4ez8{)ax(bl>*60y;rXoZk(sy( zbB#Ff$WL#NL)(qz`V069_2JQGWY>+)Am z2m6*e0lAtCxG0(``i_|#dBtUbA2~y$^Sd+qn-HG*ijzM@a+*Y90QR?Fy;d`|qbS}= zFph2^UD|L-!V1ZOl~0hOhf*syQRu|%xN}L zaTI;|4y>u0& zRju_QFPe)|z8p>sxHE{1=sME4X8FZxjdaqeJ|q5&^Gki@OOx~(X&Q*UL+GeBMCHtm z_@ikYE2w_F$zd&XE|8$KSO-Jf-euld@wT}2;DoX|T(AHy1@o2#dNelof^jjnfVwc!o&&u&~#SWCMvP~4#3Q1pp`_ac{>90$}1&E5j033L~wrn&W5ZQ&! zRVsKS9(goOVop{@zN?JRPR+@_^REv#y9r7$x))yUtM2e%WSS5a z@}Wv*W6+4(1z1q>hU8F-N}p3ILy9|U`PR=rF=CIicQxu2yY+#Lt$bp1`H6)m0m|&8 zbOWl(fb)#iGRcmnZ@jm|q%}jAGJER3o_OG+hd3V}C5W6X&GVS<2LAkk>wA zs$a)Rxh481#EeUXAX)=@58N_&Et)dBfc3}PLT zz5cPZ2S0N0e&i$lP!9A{7=05DmUc^)Zt+75Eal3r_DEi+BFBZ_XqT-&2sY72>!?ws zK;TU16ACh?EXx}ff0M|-2PlZ{7MjqDjwS`0SnAdji2cCbhDkWXmVUsHcI6XiQ^w0r zVC4@r)KaLDfxRQ}@TC^d{ge{!N)lf{$ux4Q!c$uEQ$a@dt?*5l)2}!y>E5>x7b}Vs zui_VEMGx%Ry045s=S{AZT)zrB_8!c3AP0Ad*`B# z*F?()Qn74@R;^PxD?ThIGJFcN>}VlCbobT}`JkL@k>KaMG@g<{;rFk3SZB^4OmfL133=>{5gm%K~{6G6S)X_$E8Ihmwu ziAly$lhN+2yZErBeBh!mIDwR*8km=wqi?sQdDdcF(jt^!@`uph6BI@G)>y|i zyNdh^j6>AX!`|8MZ&I`rDyD`einiAOv$|W9V&yb10TSA9IpfAnOtXTJCV;naXoZ7) z3~nrw?loXZj6+PtGvmD3p-HBkuFgXB#UMVSHd{@9;1i12uH0LWfnE{0mt(Ma?3`{p zyH*zTdw$jbw4^j@i2LaDbH^83mIo0EWn7E@=ML$>Rp-9uCisAogIPAIo}*QuVWknz zjzvWs>7G-!;rv*9gq5RLwydmB3(ovzaS^VBI%JI+kyk3IzAGWAET@Ld%#_HGGXb>S z)noO5TT))|db6A`SA#?l|B8h41*bsE9x_&WA?GYI-%&4iXL~!Q-mP^&Ti3( zvL=$+x0WlCwd=0*z_}hqjoFM7EQGGf*dz0`e?&3iqBD2n8r{Vxbgay7BKX-joGZC88gnPJ+m$z#(Tht;F6Q`Dzcf{iGAf%`r=%~u@g)@2!6<^SVhA65KN#wVk<>s^@kIl2L zrOjE167P&Y9pk*=C*JV}IwOn!_!4x>Ds2ZH$Mi&m8#+iXm1@62jduqTE?JI5q8IJs znu%6ubsjN2EXe2e>6q7ckfIH(Ftc?((RNosF5yg)j$tk=r=aT!cFY^mFr}L{@ZgwP zp8gRY|4E0Bgh;bI+HhOCc>zPd7(*Vq$9OjNeS0mH1!(Z~#E?fO(NH)OOQQQ93%5s^ zesvt6+nf``w){6xrmBUFy|t;lA&9eXVQ8)7Xy*zt3jH7IdXt*XU)(O=3r_VFUX#*X zGP=@MoTAQ1&YM6sUabKYu;rJ{3^-}*NYRQbvnyXJmL*Xz|utR&wtgzg@4 z=ACj5c@Ec`dwl&~!3+q;;hYWS`rN_MqFl&A!YQa&iwv~!-O$5~B|I;ves)s3LA6cL zwbmFY^g%$O;N=&8Gw0UxF0nh(9>4-V$kpKB^2+9G&u;)H@ivLQdA$lPj+)BV9c`2= zu#vqE;D_o>E!)fNbU1wGX9;cX!q`eCgUz(DY`;e~)px16g{XNIcdTQ#Z!6)8u9M6= z;1!DqqxM#o!nws*PMT=o8r@>j%VKkUbQ)GWye4;>#g&wNPj)dDFX6BEF`v-GK^~Y0 zU#B$uh15OrI@io87P2O`rL%v5){mRQW}`O^WMDB;4?D)R}Bu6*Rj{|Fu%uT=iwNHNAUj#)m~ zTx*!fU4E;Y%yyw`GvPR6(?`FFyC=>TAWJSi8t?$#b)S{AHz>@h70wp?j*l2gGf#tM z<-$6gsW1YIq)WLH8$v>?aF6i7YO&8W6-Z{`E@`TJetHxeskI_eRys>(*efc6QxitcW2lo5nkyK zpJnXW=Op7hDsoo){DnP%;O|TP#i!kt(HCsRL1{_ZUo8_2O2y42NfKjne{{+@Qh2N; zKI4^0S(;;3v}HGEgq9_8=`0jOG+Ep{dg8Nzok5($MadjEK67;_36jrNGi-sUAoeDJ zX=3yABv<&-tNPL>qUq~5ivN%(D`1Q(`^4r_npp<1F)<&rDW?BixHTC}@d}^3Et+{X znvy~lm=Xh7LUXy|>|-t4xt8!VP;4?1|DVg9`QY!wJ_0Ik048!yI??2xmWJJp)68-DPq$BId4b`=Nvsy}>1?bvJCWfvh#dM< z@s7K$xNmA*U(mzhA%N;5NIp#74usGMYdFQHgmT29!>boCSoxtm9j zXp1mPksPawxNDet7C*VZ15@vZszEOmUmRu0ReYt7hQA^%m12kSUHTK|@F>RhqX?@! zDNal2>dfNQ8D3OqRTaY;MRX$C@MXDUV9XuQ-7rVgeq~XXDR09e4G*=VfeJpBJfT_D8vw;ti?6T?l`c57X&c)5E?T$k%e*>C^5LKL{VNklV?KV5cjdI~w?c z!tTvhVaOEi!BG0ssx?OfpSaNC4>U?7ouFI+6c-2P^5$IapsTWI56~32ZbnUPfxA%K zKc64L2X5(W;aVN1kD5le>`QB&TxsVs{lYsD!nW*aEu9$Ime51Gq05@YC2P3Z5OnTH z!IiQ^EX@ZW8IPsb4+myrSf_cLyk5T^fyn|NTgga&sJ&@cjSCgiBF%k&c4ED4+fBpb z^QSN?npK&GB@>UQj@>jz37ipXBvCebt{w40^OWhlly&?@G$47Rha8`Wwnq8NW?Zic zJoMNyE5bba=NARu91M9llM@!^UuX?78U@URGScNo)}CT$ahVUE?QrGdzAlvZyzDA9 z+GU{u`r1_~?37(Hw3p(2&0jG_TY5T8ldU{K4QrLOyvg$Yx#;GNv)zq}MFtt;alSsB zwa12Gf8L*nFNP8-O5a^_kk32#`?+|7*?|b-~RLjm+v{oO(6f-0joRhlxd>hf~EZYSihT@G~ zGOFHbC15l7jTKP+Tu#mxr%oZy6g8U6=HeYOU1~bnY99I&;-#C1)XiO7Kn(E)$gXYX z`FVO!P?Qg2-O)`Q%O%c14hS0$U9;G1>bK9|?BG60zHnKvGO|tiwY#?Pd{Ysz4;=Aq zp)%b23|8r=_WWnw`XT`0PgelauiuH;q1iusXoZs(B2~8*JoQoZ7#AQtbksf zMtrLAo;&10Cj4(?*JJR0aQxc{tBw<$GXXpoS65IL168)$igKN2{wr<~5Ez+;MjwMx%_2w9BTZ zvaHVNCe$)hF!Kxa)Xnga(yl*X3WmoChu1Bfw5$0+*j@O1hci6` z!1eKEWL?~Pgm{sB9jT$)7-Pz)=pDA*zjlMW-qrWJiuP%&JkMKnH^za^CXgUN>foOA z4I@Jv$Ipd<8B@mCFG*}Pr_FGq&3LpBj2?%XH9ywBM9<@~Ln*&6RHdU!kS|-B0Z;@V zy(A7=IscJi%u43QeZkobtv73=j*1a*78KX$JX4R#abL-NOa2v3gLFeb5!)v2aCw=cu>sbsJdCPUe7kwsqR`W zWBF9GjGzdB(=}VgQNgl2&-N@cF&)FQ7?><$Se_nBhr?;|<=kEkPH;~4e3Xi82LyC> zu&db&q<`hVbt#*~;@C_SIwNFWl%YH_CW-qPKmsoqR@UCfzTwozpPc(fA8!ufyE)hX zOayaepFjvULf85PJsg&9%`+q98RWiS9E3D1On+gV$oh=;HLA*0z@ntN=O5&$Mx+pk zO;7;W00nT?f050VUF@7qB`i#>P5vidC#y~WZ}q*;Ab+T0jNZC8SW0e#DrwX?m9l0f zl8{Dm)mr(?jP@fuphgyNdUzsUWA!`rdb`7#O2}uPU+oUtTie9j<(^v{UgH)z!Qy_D1OFL^hQiB$n;qf;q6XNSCm@`{NkYE>cg_fMpTqToLL6FT;BZ5?Otv{LRf(`Bok} zLzcMQo7m5^=2k^xU2NiMA7{a&39Pn}+ulrma}76aHf(olgt0Z^(MX@yn>ck>m5pZZ zB@v6({hkjLafeHvn)iQI_M#nSqt=^qNKqUTO~c{fI_iN}xrXZ%6l@f~Ta zfb}6d7f4rI9<^`)=i9tn=1M+8`4;@TkdN?EE;tM6!vH#SG@dcrYE2^RyKK7h0gAHx zzwrmF7dzcjmydym{3`dwTy7-4dPUJHfvQJVje2N}S!*3&@c?%wI#gOz?$skQc8>&u zzc?=4791GtsnpO*wbQbtU5>zCM;O;%>%`;j9$~@88Ej+(c|$n`Wq#XhFD6dwoJIT* zg>Ym+gyF6uiFSwwjKO)(-fPX|M~!Jf92mDD;rp%rQ(oCrHECnvn)c+2tr@=^>qTJ< zJMLoq5RK^NEc!fSz24UDNM>92b=n%Kn)AaIE<=ZU1;>(&H^>;OtJCiEK z4^PYXba}#sW{)^7XwllyE^!lE?{ex-lBMl2c$b~T(LEKjsTka+1T9j-FedPKaw7^U zMKa0=6ktQ4d>p2b4U9F80LUzkGI~3ES#=ru=O4n&^QWHJ9Cr=&y?z9WZ^GCg0+Me| zjVCtDd*ashs&?P8V7W-qG;V0*VlGIv(q7=k8X%&+)d#Xkp+Bl71@z)mWPbH#o|5Db zkD`zpDk-K#pHvRjk1q_%qIrYe=Weguu*C)|S_x4cJ{u$#NduHN#5Rnz{HoN93XSP?eC36HwC8%539+7F zIJ5C=r?EE=RYlG!>H@oz&4P?wY#kwKgp$lTJqL%?E6yiCkd<9bW8vJe<43F1A76^O zvLz)fsVF3nE0o&Fj5T#Op99<7=vt^Q7c_;j0ZPy`D`v$&Ju6{F`XF_>?tOST$)^xC!^s;VRiBf392@p9^B_DzVZn=zyC98J*Pd!+n1HBqWn1KNJZg zAZ2i4c5^Uka`3);kJL-6O`1}RXF&gzy_Zw;T*P9(9g#0|HYg1)2R{2MuR(@7`ynlF zmAxe)4~>=)Mw~O=m4b>^JR?3_oEKX?`9q`jvh zC9lKP`3?L*t~3yqHjK5zJ%$pkgbA{XSoHOwmmTBE6T2^oDWmx#{CV!goAw z7&myv&$3QAc(*T2gzWqmUdl&TaX-W( zdWiUp(G&}*VV$$$p1@0{2e#q1Vi%-dq$lJziodd=$zTWz6yO67E)y;l{6-&A1|Fvv z`_2h*n`~p#WUKG6mZarOE8sBqq|d@d zE%2QL3Z_xyRj?@6Yx2Wnp#=<%-bMy-U8l$K#k6AzQ-Oct*Q6p-<9FflzmrTCH(0Ow zwS~*`HRvxFE-8J|`}|^g5PMX#2b-z{41v$)Uv+BKSmo32U0wTO=pz?Y-dJ5+jjh~B zYe(d&T!Ob-o_LBxniy0M7V~^ZbOp2wy~kaPkZ+0_WOUFpzpj36vm(%`V}N+ z^7UVwp#N+z|EF{NFIn*a600ssm;@ap)DiRDL8@VClEM)1BHB1A2N{OGkl1oq8mX{S z5|yHzR#%PV;uuD2YOJnaa;)&c!2p=wd8iEpT=E!);HfL=E9rkG?9R9Rd_TbbUk#4q zLOQfsKVcdEa{i)bXh~LyFujnQ*VhjH2z&I<%VRLhdCm?#q#lc0wy#oS)l}f`wLuM; z1o065)%9m!-0SA40Qd>?qkE%tu6CwP+T;Qs{M} zxM?DOXw}2U4E#fS!*9@KyLGK}iSo4EmQ#a)V*K{&o#BhL%8ZYEI`XM2q06^YbPO@& z!}Mj>GLY2+(VC|gl||{%mvNl2C49gGyLw5I+2Ge2)Jsy8iz0sem57d%_L zf;X?z)B2xSkSajNcs6*LY4C=ell_PY4Gims6>eH-#)df|P;l6knh6H!{#n%~u4PSm zI5Yv>gE8GDRvukxiwWv0G-j!=kgmt{;CUdO^JtapSx&Igxdts=id;&zqQGLDyC4WeK5_YzcXGJimpBBm+G?xT@jm3#H{@^`AMIYyY)SGi+34jgW>Av z$;knmy4|np4Zxj=@@6D;rpu@KS$1n*n8ZDivn>1_!dDt<(84iL@XK;Ck*zYQ_aN9vIiK=erYj)G{Hy)WTn{oosfeK9u-pei_=004y>OL$5o@Mki&pn7aPbd^=tLUV08x=;55CC?%}E+D+kp->xHGLoSP0i-dR1o= z^j4s`squzWEd|F1#6TX5H9}v`Qh+p5+Fszsl?$c2Ue}ci$Ihk9Rr{D>>} zPsIb3234RIqwZp_gpVFnSM|5ocKlm6th;v4NP$c3))SZD^&2-VOUL`qeS(elY7mh- zvX-uto_aoaE+IX*LK^u?i_~Y&>-|_>@KNrBRByVY^3~lW%S+hRmIjHPlCKDVFFtU* z^NKM*g@-rdzuUa|FUcI#sT-Pr{Hy-H51c&i2-5rm{%PKer;Od}0LKlr3S;0?t|i_3 zjGhQN62qAP`)kCS)P*C}EagPhnGANNJ49(97YPD(o_!V_HlQzou@fxzlU0P1Hn~>D zahX9U&&Isdi_jk~pY*Md=VS9vPERBuhPpC_u&F${+gD7XLlhwugelw%POZbt>a8tf zU1X1&yPNlrGH~lszuzH$L8|PV?N{HaS7u=1>UA62Xor-mZP6t0k5t=bVTWxbKSCvB z&N-Y*_&Dep{B*4upU#{EAta3#9pF1DUx!`xMdt7EIgS~wlZ?lcC8`V-D`BGBoA$AF zkF8g+q_dwzs_K|3LR5}bmJrL6+s%14Wg65|VtO@GGl$x#xe7&Thw(aWy$&If5BqHg z$ma)f^>ZyvyjH5mQ=X72bk#beBh>U72s3}Y_qDpMQ5C8xy7-BER_ycD@8~7wG}(Hj z{89e7H~ME!{*tqcv@23Ck}W6m7o+UzxqRkKl1bY{%K65Hg6=Hk1Mp$)ARof|zOJ0(xwX zZj$S@Gv2l}yipc2(kk0G5+8yyF}-6(b=MoVQ`M=LQMhY63yZr?adq))AXUQDRj z9Qg8=$V3;b#;4i{POB=1OSYAV)2@GUz~#YcAS||@5ex7##^qw|BOTxVl*4+Aox^p_ zki+f(PAxCDgij+$l_rW0hCH( zRr!0a%j~R$&VcNlEUpBx1PgqSc3|-jd19vu&eImL8f_yD#&}gepVMc#%t9SO%P5xpk(iQbB~P?N({aHeh+`(7?iAz)#@(Tmx>zYE1vuwQ#yU?@ zpTp|4Mkb~w1cmwiOkmzSIM`$=q**d?2UF&zTWNcEO{z~ zdXRRNOM>&DdjNB0^nIz=o$+s@hcuZX(QgyRxE;`{mUr|Sw@oTPo9lTG5Vx{=zu?(f zWIr~cSJk}GkUS8D3!I_LIuD`~)!{L!kx4aG6=f`{QU(HgX0r6jOR2ocCGP-rsEd~r z50a2-I%lORmLyX5B`M{(CHSx^@8V7$F}Y(e5;4bRFF^pKPw!-S!i(5^{!1Ky(Mzwg zL19KLJ!R7J(Ge-=(m_JJ^jOf4dMaeAHxu+3QK1MxL)w})u$*^q(pqJslwULP@X~Ne{Nn@gq}W(%K>~uZ5Rjmq#ZR!G zMhdzVem#T5QGtS~J}8*}n@&#D(G>K*{_SP z5<%j4C$k9L<@8R+Jfq4p?E5)3plm5CoUoS8^n_GvJ|2SyK2OCyF++*qS{q8lx7?Sq z-EF?jedCnPnm#(8?0ngFNVxTQH!rj$1Z|H-Jfzeg&8_g;EGyp>tqX4iaua=a&B%jV zV!XqMHgaF!+FD$!MeMFSOb}I>GQtwGr9d;lH54E)y&R#=I7D78OD{A!{zAuW6xmrJQ!j& zOz0ij__I|`uFiU!^)8EJir~UJBy<5g?c$bRmgI|j3eoNm+2GMQnoMkc3l6LGHpa1# z(B?d@U(O?#j~@fIEv5;qsnAxg+#XF7eu?mZ8iy#yPvOxa^5|~N6HVqN<;~KRn^bsN z4jk>utlWoBLN61Kqb#$Gs+E4_lxn_{{GwqZiW(tQLlGj$@Pf7Wtp$6pEu4ETZdrtC zxfS{i%<`vbn-7wJaDhw(d{F37uJ8BtFCfdqg<|@ziGm>?&sy9ZsoV20uPN}wk|s^f zObL>g3euiidK!O+zDUFihSSb!Q|s8r^*e2Ow7(-lk<^iSx}-oxr})ZKb0AqB|^MYOu0Ne%!!*hbBF?pYTL}am8~yC z%!ZSzBXmZvU$_%~QH^rbnXe%T=kZ!BNhG5l%5hk-TlA4kD1Kw4&e|3wp1~#TbFU(q z9DT_>hNbcdcXRtH1+NWyHYeN`AC=jRUBlPMKr@O=ui#k{kJPNk_K7fOC2}Hm$F%#p zo14#KkE9ZAd`f7~SL|>FO&H#|R1aXY=cMQe=+9Y}-AAGnl;L;CkONTp*e7||2r92C z!tzk5BlPe^*Cgv2GDVFYYAGW@GCg@28-g-J{*l8_od?E@FPh4%q$3R-V70`sXAU@; zjS$%9{(AkUA#{wTCz3^Uyk&s$#@zBBWe2H(<%6zR(KXvH$>nvQ)q2pE?R)_5Fr1+t zA?4RK5aqra<@u^Dp`&GzxR-`EFj(&^q2b&I@}Nd&Ir8lq z>GGwdq_8mq;cE!YliMAw_gu7RYv|B%!eIpcV?`!x&ncRS;J&$1IP z45H&N?dRuTxMC6ig`G}WAM>*r;9l6@49^MH^~ht^c{)d8-~*0y7@VWBR?^q&+HX)R zn@fdusmUKfF&OtaK;w*en6I>Q3(mYrt;Dt_2|32xFG#NB*6H8%8Oe*mQ_)LMU0dNu zH4)|f&M;@OC=I@xx)auQbc?EwOr z35L(;$t+>k!u9B_a4qQ7=5VQ&F5RM|?LXsO;;gMA?DByQ+=0^A6^;ucGk zyOa^~)jG+#ND5FfFp%JJ(T#%!Gw{O&8g@i8gxSCbU?vZ2G&D$}e4W9zs5+&rEPQr3tQxjlpVxnQ%EWd5n%>)=(RZSs_n|JuaF>eprYDo(67;gh4NhSG|?E$FxV;jLqdD z<>G_*KyENg#ZK<4<##=Cd?5)x@bCa)!O>`6lplp93Pw`qVK)wPaq=@u2obNxQKmhC zrcOjp^|wS%LKVPy6AaimpRcYVxf*aLNYW9yC(VZFs{S{7+{OGnGm;;8a(u>!yrxWP z?}5FBD7vbB@=(h*$h`h?7t0pkiY5XIy$o>p)u1-YS98kEI{$jHsWRO`T26)>AGuln22s9=u^dWT z9@CfaTmZsj6`9nC1=MC6h?SCg0}s^ivpszgl_~X02)(hEpaDg^ChO(C7|TEY`hl6+ z^u6ET%Q|)06D~RsI>ie**Z;;YO85kTiJE5MK94cAl^NP3bm5#gk7{_r#r z`(*fb(u?2WBz#tFCEIH^%GMZZhJ|)euEJq_0>m(w6{$XGcGEZH%Sgg!L$leP4$j=V zFSF90uWxtFKh0~#GD>dl&b>y1tFf=Ize%w&GgiYtI44Tf_|dh-%|i zE5wa5XG6WM1*a6-ntg9(@!%6m;D;#R5<#)r0Wy@>b0p9fEinfmyAU+T%eC(PLK}`z zV)~sd)Maxs#fX}CuGefNytAqm&V0Dm7@rf6cYMdDFLrUBEk2nk%$mh+{ zZxs$56D;w(-ar)M)AxbQXHoA+^P-(F#&ohD--cK=HWk{}^|%$7zhcTgBo5nZ@Bd`0 zkDvIw43iN&g8>OfJu7Rxj*_cJtVKmY`1Tf+FKPlKNP1_2vMs`ycSd%@of+n7hI8^t zWdaT#oiGkt$0Iva@Y%Zt1+CX=(E3w}fVw#gE(N-9ez)8M5!sl+10UIT_8HfAyM3{h zysp|*Q&hTWi~P*I6>foV7)QNOBI)^Z?2LG?fl-c}!4#(W4<^9HFo{UC{3Gfg)bxHz zNzVb<#aU^G9U{BB2&L%$GVSCPN@KY}=p@M&`VuZ6aJO5;OaCeOfjZpX6@^H@ldb~b zuSv3xt7Q<*zcd5fH%s9}=Kv<*Y!U4dJb1ZEinm*7ZIVR1c6D`dH*ZB2tYzMd&Afiy zYQ+({{zrQ8z{K8b0L{s4LAT<+Arb#~bg5(qT59w7dxlBSlU-B79r;6TgOOR}GJo>z z1iAxt6&4zE!yw-p0;U>MOESd6C4=ZB-J_2}?V!Z5R{p9V<#%X;0MDpMRaZhB_4MiG zo8nYkTUR@DEl`7s&Rts^Z(5FR8mW_I=1c9M0kXtJomBfe4x&>w@mmt#XB40UbGQkM z_eieY=vS&WM1-o>eUL2c8|$0GKm!q8*u_ucup@e6cX*uk_0wCaVuu_CYDqRT_caI6 zt!+Ue6bN5zzPd1lBKn_NZr(c{Q`GU^N~;f|itR!@VTti!80Y|kj~bJ5f~tov8%$2x^^;1_s0ZgmS>i(5lf|Z?~(i8|1;< zRJ4e0;A#mX5uMb<=xf)UN<=<^Dpe1B;u(2_D{al}QX_NUS+dZK zuX14@nT}-m8MM6h+#taMjrK%)87Be_a}k^8=UwS3X8&n*A0&x zo11VKxIO<<^SE?LECgn4yb&A_;(%FO+Mgh8s17wNbK{pJ8qrmZ0nL)o z)n_-|i>7P|OsSf#@woUA#1QJa#M#fH&Gin0achsUWj%n@9PT663^Mo0%xbD9#*5F_ zU&|leS#h#|#%-&0?Yj|fZkuw)owvwT%Rh1sx2je{V9r|o} zF|Td-OU^wa50zBIk|#8M!^7fh&mY8IBP&O4%__Gpd}aWqt`)0tDz%QP;$vKW*evev@*U(D@U+uHwn4Nu!M$YGEi6f;XX^HozcyzBCs1Y#|zp za@_nteh_a-rpZVO@Yt*MCje-@Q>}}o*MqM|fZ3I?%eEDMdN_b$dl*14`I9#W2}V0+ zn4VNQGgB_X^e|#nSe~R%Tmi@Ezi!C8IV|n$D}KNqfOD6hT^{c%$KP2J8_?d=ZI~MS z-Ao6=>_soUP=q0ToAY9@vV?WKmaB)<{0Bv2u3C zR)0H_|G~M60ROY`fP2bY-q{+!tm++NJCDUVgez=}{hq73V|L}FaRQoTNiPZa*CdFs zUI&3z(M|bVstno_igYs8y}TTA4*92fTHgQnGCBwUl<;tQ6vG0c49(#Y0Bu|p&5J@o z4K5>?1MU>@R>6GhOJ}h$VQ2GwjOhg%!oaQI&%rILClBb+s;OGx+^!>eRa1Xvi~i{p7%9Tma2HE-NtYUMu8nw}zYJXuvPn~X?J^*vTbuplA) z1gI!Z{`r?U{|`m7_8iphVOYKYMcFq-=ef7}Hc4ZfjcwbuZQFJlJz>MfXza$eZQHh; z^gMgsnR8~pYi6x|KHi`2>wobFv2~aceKA)#i4%4!WgU`wx;=Np<9yO>R*x?4?{WDJ#MK{-f zMeW}bXG4mPBdQwKP?yST5qwm=U^%*yQXDI|GVFmdEGxV!tR0mcRU`-d36ZUod!PB7 zay#ti)zcezd++mimeonl{Jm&}*WE-1{+Ink#Mk5Ky(hb5){RU#cGxWW&diO>tEWGc zTw7d6XAFP*p1{7ic7qF4gh~waN*^*Y$G&aX6IgG<@$m{BN--)Fm}ZmR;iVmo zvi?FQx9RuE8pk!=B)!8(YZ_@6In-mmiud|84r$6ydWW1AJCaG} zG70(Xd0PcSCTSc>ApQV5_^j{N6#&9Bp3|tKgl<9+JlWkH!b=sFP@4`V2Ct`tsweM& zMmJwf>ZNgp6?_`bJ{ixS12p>1h;;H(jUl_4s0E>;rx-HT%e6Q&YjBbkI*18uPKFtw zdihy2s*8dx9bCKwxxbup2YPrJ`s#-in(ELPep z5mwfih)wEwgb~+#28gfZ+&PI2Ia(?L@=D0o;$szBZx~g*G-n!{5HOS4!`W4kn)9e7ydBCul+se z!s|fH4Z2j^RPA7I$1_2wto^)j^O+fSMpa}f0Su;>_hf14sJ_W3dGLqm9_4GGP~N*| z<+LQuf$@VJe*evVVGUX)B-|@luS>5=W>k{!EzB$q6*odkS_X3~MZ&=E)ZNw=6}^Ie zUrYy(MRVr$d76ORm3>D?w5O6x$?cwg!b^8VEqwevwtdl`d)8sps&(c8noB6$tR-qDJ zEb;@G%*_eGwUHEdk>!Kc6=PJc^STGw%WG@v^@cdyVk)1L9taSy8Gvu z=oTV{Bvt5bkSY&R=%OgSqk~7<+*G~c*S%Zyu3hKykoC<-nn9H62pWBY6eJruZpB{n zGo)BCm&}$mG||yoFlt%p>a)^0q^9V##S3A?7U8M(JsI z&BA&OZ$jy7E?=S^`e`z##FL4%M3noUpI<$?3%>dg(exl09w84)I>xm|_dr8;hTNg7 zLs~&|TB1}0fB%Z=m>IMpbQLpO^`vqnvcD+uoig_k)s3{)U>kpLF~XkP z*lP56*ZaRiNCqJ)SA*#E=n5=D5q+s!KxiTk)&90z#;lWJ$U@7E&OHF5<{mm%;#dS4 zO1C^pW!r!jvrTCeE&)TgP**)%>4b5*lUZ8BwZu}jGiCF9hvUBtv8EKP-6Vu5K0sMR z*WiCH(t#6Pr}#lK5BGJ=JO=|8(=P9bX&JW2(q*y-<#(T@+0^x)1)zo}VuWLqXq(vIJr|scnXhwFce=><1#S;JIcG+IjiRxA5 zeDs4XZ}`pIV^h;CvfaV)=tpST@S8aB^DMGmqwN8sa#`-Oz0de6W5eqT#iz>YXajz3 zvq^^|vzA@9aPs<#e@TKjk^o}b2f-)7-?u*#iN6pmfFq|6P*F(qA50puRxYmcW}dFX zMy@873g-W5SK#vZDye3tGB1hb4-f-wxh4jU^xh0|7^_49M_1rOLTXRi01xfG4JH6E z(vqy0GNg&!xBVF^=kDPypNv(1$*1*6sP2aL$TPFEn{ri{np5y-O^p5Z`3c#LbSR4_ zGAK#`p)F|&zn|_jB1%G!i^XcR7m1%kZu@FfWmlAkV&2lx^nc0hg3d`s8RYo8n<)#M|_q@ z+E_%+@t|U|k~FYSVmCG&3Vr614wlVB5FNk_7FH$V;K^us*1kKb9j}qdD$k!{{XlrM zeeL%C>Fi2l@b-T8-Dsaix@JmDnDyvGdpq2!6qWyN>np^s8#ntMPI0;dr(R(WZ>-mb z1@{(>#=AD z-je(uN^|}q&JdT{SVJM9QgoMAOoapW7*98Cf$gD?sWVJ47?G>Gy|jJDPka=BJ0Fn2 z{0);DRsxcRkJh|dsjVWg5xp1Y%QjWqyu%7;wY*yu zRqJGiIBe}*C7pO&xNr4K(39bqV)zvi-}S{KsD!2%90)XB9Tl2uiIddjl%sru?Ey;U zUV!{I?tYcLij8Qu%f&V)M&}`Al#TUq zexU+iAZm3cn0`h0p}-w$n|tEN{sciKM~80YhC*eSy3dy96`X*#B34x{UqzFiZ6Zm$1wRr^n{wX)t{TU@@n4R^b? z$VRlN$a;s1JbOxpuaX8(qKV@9Y<|D&DV$tAidVAKd%KvCB|Wzxuk)il8j}Q72)2#P zr#ha-TL^rr{^;t19Oq~WgPe)&-}L6B9C{xZ_Vw5Rs0qqM?~EunZTK$FM6bhl>=+c| zr%3$Ej6Yc(%qqlC?xwF|{qe@)q7iRA^DOTD0KI|Hg_q2D4c=QXKi`yJny{Y|Y!I=| zMc7c_X!x+BViPSX6RL{D0n!TKym;55I6jy44;*RC=X3>9V$4Z_gw=Zz1rjf!l%OAC zU#YPRJ#S&fnMbDH z+ST^9V#X`Gqx=u}--BXY*1&@f7!cyX$w&AfWcUBRNBSr0eOT(q6bxi$RJ zV5?(vL(%5`Wto|Cy6lPDZrua!`XPSTBJ(eot0I%uDx7Sx%&_*A+74`p2~@MGhD5^X8YgVI8uh8dz^&xX_c z;Q4SUlla!9m_dJDA;ohciYs1=YBu96=RcMJ${ZkLD6C8tFD%fP%LgOP)hTa`p<#7P z9?{3ytN2c^AeAYcZM1J7%96PZ*l4ipv|XMjiuEAGU&qj2mAsNm@IQ?7<_2C7wpwlJ zCp20TAFcBmbY-e;m{K6W)}CQ&#dD<{Qi^O%TB{)XrjXq;7tp&~8@m|{ z%n#-iqtQcBrP$|tNU+E_{rqu&|Wi=n8ZJmGWQ;wwehJ9e`?p&@;Z`T}UZX z1lNuWdW%DDuMk0*j5O&4AyJSj7(seiwa_mDC&$>sFZ8kV9(p5IWuzCwyYpF1z4S|j z;wXP@x7zJ^F6`X}r5>p@oECuq(%{%vzP5bgB@PA$q#b{UEAmIXC*!L}3}57X>1mJE zq1ZqFMn&%|zv~SJW@vxlgZwA0mW-Ur|9gY~r557yce#+lgf(d(V-)abA>EQ!)kbG3 z$a4<_jxt=4N?Hj?2bnl1#isRCIw5JI(Rgc=MyLn!I=5d+TTB&=nkX@AMPTdve0=O| zkLA1D_!=d*VXEVFm=q*Nk*(}nY7Ntvq1~8dI-&+&D!#hPje{|51GXZ|q>uGg^~2;BPJh{^tKL4w{CUF;D>b@3O#u>#Kh!OvtYZqJ>UzMr>d~ zQht>VD5Q@=Au%eY)d8neYqjjpD^)ISi{MGk{X~AmBF&DJwu{%i2YFQtKLa`+j^@Fd zzPxVoJo$37WD97dbb++@!s62LTIWZwW%QcBD$w#aTu1k0AAWM=K6;S?59ku_AwER0 zU=9_^*pOA&;~dP%*4@>!ZyqfIMwXXk22$;e2{p@8`K6KqH&!K15mSB83T8?g6GhxV zvHKkNDdLAn{FD3NfjETtY)J#f+5@qE*p4URj)hJBC@b=$Wtm+t?0qT?<_LkvJzdkt zbGO3i=)otBOw=no(C64sP}wzcq7_;zRJdCSM(I`GiX1vm%Rj@?HRXJ-A)kT$nmOj^ zkYVDhv&G>h-%&P;%hS`ZUtM1ep_BKJf`#EG1>?clVsiU?L3uWf+r+?G!R=`rC4xNj z?b=B1;AI<-_K~TiPaX zYyd*K8bPJ}0JkBg2zwGS*QC{X8W~0dtP93;szov=2hJ%ar7~f=+J#1(f`)t!*~%Fv z*Sg9kN*>6O>L!Vrw~oji&2;+{$e7<(ZRs-F-y(ZiJ+$iLrsl2t@4z)$O6_i2<#Z9r z$TKz=KGjTN#AeJ$H+pI-x{(qEY7{y;K6@ieuK(<-zioz|oC@51enjwsvVVTKuYimV zRi$_+gdDvG{MEqwGI?PD7)PXKG2uo;F zD5l)!sIXM^&OAxoy=Om^Nh8_46X-)TU6oVBxcOP+koi!OxGv{zv_aMorb$apIWz86Tw^;>3 zjdkUfrgo-9dAL_UwzI#Qf--AdNEM6*XeA^_N?vlOh$bH%u}`Gw)a&q1{Ipq;42;%< zFg>N*a_kx!ujQmDEQjcFQ^NhSWi`|O1s+l#fkCwt+SoppQ)=$>)8J`z`OaZA*X0F? zeqWruNI41{U$8^b%Ad#@zv9owur%~)Gw@jcVE#SkuSzlA_<%9*0E~Irf6$8lZ{E+O z|Ap-P58vm1O)I~D{>KSv=#Pi(d=hbZcwQb5W{6;!=O9an#7u~T$(pwER@sJ~;@VNy zu@)ZTPcDmwYVa=ufHtP;+UsXypaDSk9Z&4pm4HA1h$qNUNFaq)G_l3(&3r!#?^0`f zU=T<~Pl?L`jDT_VShg*<{oDsBSQ9Q6G9pj!9%;L4dhMj&ksl>4QEZ+WU6rg<1-WRExMS6h+^+Z;iFWI#MvPpIAw6kg_Z3@RjTcXS&0flPaay-|qCre{HBenN`rt zPj>5M4ZWR~O}UDamUQ73hY<``SO>xFrANzO^;Y{^;gcP`Fy~~Y7L}g2ep|ZP$l1B) zb$#M^;@wmhhKLU&-k_=d=ItwU%$JS}FqkEUB_E{K6ZQuaWZxQJ=hq!~y6G^7@6ry>c=Y z+}ldxkfn)>6^n6%Wk+XYzdiu3X~L9^>X}Ahn_4o8ILtlv`_K` zI<2I{oJA?!-5mZe0+Q>jc0_XNhe|0B>wsO>%Y9k6lgR7FRvKCHuj zW(HObRa(pDNHK63>SQ)c&6(rRbWLfPN*k=+Flu|Kma<(EA{pvg;XgHklr+sFglhIF z*po?iUF!ALi%p#tesh%Up4EHHnd~eB>0J{W#wS92+dlw%K4)!i{6mbxZT48vw|+K5 z)UC-Hbn3m`H)W=UnH!qaTU2UTMO~cU(a$jl>|Vh}dM6q%L*{NMT=i8IcYg8MtVtL(y~t)@E6fA5F((2Lj>`=wNbB!4W( zm2d9+o?NpJtNn>il#H00JRI;@0_g=->!BWV>p;5zkvTbEiug6xfi$xicM(Hc~F(G+pNRNAlm99LI)WUm&IA>WFLhc zVsLa6ou&I5-fHu$^O5Dia&HEe?(xYoM?b22x12Pu@gf0O;7n-#OKZYibrGW zs?r0=dPNMY{4B|Wp809q#Vh`m-TCUGpM99>Y*d(p@jwI4j~4&A^&isyBp(n;tlrH} z=|w348};krQ|~~T34RK&a{Z%C_CC`si4%b`)+SE5svIWoIjJbCc)km`8BW9J0<5px zL-9xt5PekKS>#myt0vVL5c-1Nk`&hVrc|y}wF1F)-`-%c!tL2aCIv*!!A*?>rp^Aa z|Mp&kxe8w{D0ZKwMzR+qjxmjAh`u7q{^bjEFat73XeHFX*Z+$30#kuJ3*E2#GjM**kOcM zTo{T9DsfMd$0ihuN*POP#w0Cz+y4hxI+GtYN*4nxeic{A#vezvZjg19oUnd`AMJYu|Gn_Yn$}N6(C+R!cx$EaoxCDwe3C zDbHVm(u?2D{u}T-Fr07q3|O-~fFk2!{~#g!3xp%@;A&<5pIYPp1LmPYL(2tC4d~$| z%gmR?idu^#*aME7AZ3V_QW9Z_A_z((+LxDS$zqj&z%u7l1POP!+xg{kH%8_qPffE> zuwHkpR(i|#M$F(HJXt$gEqM)S<;AkWf~rE67}oMMc>*-_+VV*5{FvAx@CP+S-;CUb zvt-kZ)`LMo{+cWHY|)It?LKBCijeQjh!#EKr9hV;xj+oBg0Kf;A3+#gfmZ?LyiCJ( zuHtC(Rc?AeK0^CkLb}JULG$~XjT7YMPoK-kZTt27ZGCV^v~`N<>H$0sln!(6CZ>cj z%VeV>@cB+x?Wue623z$h7*W*CA+-62SSz0f&q?Nl8@W}_V!??xri8@`U2)9ilYrHO zcRA~m_~*DJrdg7#4`>$jCFNCrmfsg+gLU5KRq@j;&4k&^VGpLh-SyEM;=PSWcfVcO zeuTD0*BkxDfNHF_M=d!$z&`mIzX<7Es^@JU)kq^HCDN5Pov>CPP4uU&m)d5YFys>3 z?|6jl@p$n*8w##b6)pV-+3!NzDH$|aT3H1T)os;t7}`w>&HOogq~@YR%I)9ihE*#B zSrIp-P~Ys*HolgH+_^OD><}j)XmH|EZ<~FD+dp6|*!#)YNIh)o(w6&9ELzCuSy4*S zsDEc)n<@TrXsqu|4sqVPrb`ZBf!ys9o=%-nIn?i<)WGl-dQ2ZF$R2L`9yezP-k50( zK}&aWF-uY|nx3?vxkwafx&or6Y;vmO_R-}r8#caVo5ncSG+oU_1KW*Phz9w(U9H9 zjGDQ`ea9QXqiG%0qVSNKSJ_gS4j9X-@U>XeGxbVNQ0xf?%_obV&?W-V&Fx6!SdEtb z;YYz{c1a8AoQz|*C}c_1qCzjx1RPK&Z{u|$!Ei3xtSCW94h$SCUdKg-9aKt87w#(Y z7VSFWp*7zJNJtG3;hEwpIbkVOr<8c2D3p5QOkJC+cs-)=mhW=$R_%(Pt2&Afz23Ssm$ZXh<%ns?E%EEdpu zTfLUBGAM)XqTpEg3+~L5Ss!^)YKxpdlF4+Dp0v0Z(y{#+o>hLzZ9qmhWJ#XlZ~z8f z)IFF-qIfYuQ#`jiV+67a6Bd<`(W{4`Xle3u&L89M)XkG|y{a<&8rVVs8A(cXJULs| zD_girV?3=NLk8$x3;5SMO^?5g(oE~`tJ9o6pLMc-y2*>>#-ZC<5Ye3}deCpt&l%ma zw^eVjhmpd5;^K>CbwVxs^zPeaB#*}j5mwdO)*Y0PEVF!YncHBErJp=QbQaY;4&|BI zZyT3sjiZ4z`EA?!|HuZx*=8Wr0X-^w7ev_B9p6dM0^;$=a9<*5Ij5qszK2I3B8B^f zY`ak?4jlMA#;eD`m+W$O-@wcpvIvAgBIk>`A>_kfWESqCSMD-VBRK1;$~#s3{@^TY z!o26mPv1k(_ya#5Kq5aRzc#29gTDmO{VlrQ*amg9<7#!^D8lp!SZd)cUmL95C493 z=W4`fHJDBFY)?~q(a9|-%QG-Qb3zFG4E>&J`OA9`^_C@pThMf@Pjv(t&UHLSL_?Nn zpA&1c>F$&33nZddd^-&?&ZcZ%j62a*CB55K^Ss-B)LFo-8%{pNyJ)4qxyWni#j%F^ zwF7PO)*UY$1)@e9uiJjs8RbrCU!MvcXh2@X`_J0GHztcB`YE_3Q=pOq<+Orz#u zf|TH7q1$BrXz3UU^IE!4R$1Vg0ElB^nqCabWSSAFF!?vgSDx=Fyag=3Syaqd`3qS- zDwNej-TA%QeH6?fO9iwQviR_z>_dt7CX;*f75j5#0Oh#+l zj}OOUlK>qW=SkM5XTDcPed^|=3Ism~6$uziNh`Cjuv+AVM-$Ox8)r5$-wcA3I2?yE zE$Pun-lI>I@6;|$P0s(l@hQJRZSQ8qnPF0iNvN!me=BxtzM$N|!~H8FDy)rQM-XLm z037;iyFG+RH~tzb7JKkBKpC|2XPl^X?_2Yv<6#`P^68e$GmL>ubI2In?aVq(V#_Uu zDVyvRB8vSs7&ONXQ(s|IDL%Tfg54xzeV#Fr4&HB}z0Hb~;YeT3@b`Y^C9|qy5_+&* zXsxyB(OMPe@_~f*QoR~h#P2MQ-!V0Ij5dvr?d@^d=Fm^fxvOUQ%#Wu!Y-ksM#!;Z3 zXpiDV%E8B6kOb0@BACjvcd!OX7v?1`VO0+59Ob#GZo-Kser9;_2@80A@eej_F-^v@)v)B=Q&v%#nXd+qA2!P9gjt0EJ8@RB7I`KRq2a77A=wR91#X21pC5I zQP1q+_9*;LxH%P(H5%8O4Fe?MDkK4e!A1KuWm$p5M(}= zr$TbZSQ;Dj@WvsgAktrsMKh*HK83oz+r(4hGwY%F4|{xw_qUgDC)kVjeloT^R-zhv{)$S+pmIezP#kR=>Tz3Q5yyAny@CB7A?e6t;*iZ)uec-1E>k-uMZ$n#0x ziZ5vTb;6cuW&SE;l8{Rwnt;WZSot|0@b@i20Y_3G3vkCz23%+<{ev|2-|wm-&JHdv z3eHv*R`!3J4F10ASCW$f%FSiXuP!ub|6XXz*@nbY`b%!^xThf~X>-m^SHc5z94I$u z;Dy5b4ECoT6w}64Y|n9NMHCOieeBpRmp0#)(o% zr8P6BR4H7m$OFTZf#azRNffDheS5_If=dnLQw(%u1#RM6%F3Dt!^bqfw2U5hAUo5T zkE(|RpF}@tUW=-kvXx7XuMp4M$h5u{<&tl|6R5#*zW=y@W7CeLaNV+_`@_RrJ0+Dg z+nh;TAr#6n1a`;F)BrrQEicm7+x4C@!zwf?t5 zzNMfmE8l-RwoO@=Qab_vjy15@{3BMIikOgxi;S6KRP4S-P!>l86|`goC%SWko?~p_gRo7fx?fF@ak>6+b9bll#lvx``wMv_qak)PK+3H0ta&Cj0|F+M z+89SIcsx2LJ*G8A3jorYQSo&o@|f0v5$?DB%{Tiu-g{e$A7;mN%=dI7ibaT6&I@U7 zfcHL25k|PmQAJ*RNIGPJJvswQ$9?C3tRdxr4O9M&pU{1~Ww_w%h|l_HDEV38o)WD= znczG*{+$<`6N8nrHG?9T5rQEnD)@JVMBpR~0&Y}PWE2ONc!_YT?tMojX| zwlMLZaBG&-j}L7$T+_}6U54@&7o8l&PDo3kYAe>Ob@2g8)(s)(jeZ6-YOdoM^#|an z9!#T-f4Ufc=K9j!O4-OXQ*9_EC&XVst^Q(oLRiw^_j9n$uYtpIO=Atds88gJN`b4h znA!7DqMefqI#OT61GKR4MUkLg0M(NCB2WCvDHOC`0rSkq0>g<4ZA3oVd1RLRAmSHa zDhBz5d=%ov7jjPVR-A-obD&@`DVY(=nWB-o)rzH?=5Wgvk26)XPPdfGu1K0<-*tX= z=3E<>Tzz?M(gu=P#;~aG*FaSI8ReYNO-d3ESE5Uumw%5H@D~2sA$~El?1IWUX)f4f zmi*R-9_^mA>`I*!x+-CL<-K=rHWG?zg63@!{m^}D$@FYi5tut)VhNRm5NIC-G6L8?q;v{ZH1H{DW`-IyOF=@9Wk7(chAYar^tMU+Z|zL9ZS3Y!fmL?sG4sEUBtJ3%h4s4mN+*hfJq2dJqi=Ip%-_}R6KEd%j?D|AIg$>QPd|j$PlRCxfo8|P-bS!CBX-U1gWNkEO z)_2!SG~G)I<12aOKau?r`F?4OXjWguNK4W?GzZXIBP!tmj!EtaOO9FfERzP%N9}Hh zorF$+7!v}Dli?+>$E@s*vlaLRr9YmWI{ldW9YZ%%0g(kqs_P)AnL|xq>rcLz>zX0P zWv%BpyqU_*UKJaq%9Awj#dqXot=zS|b7;qiurhNiLQh}w!*7ZAHBCqFvdl!kw76S^ z=zhXw9m&>wNtEYe0+kJ#B1O8?qiA}Hd$?BT<&8h!{_{NBZjzD0Ohvm=WbgjOxa3TctG#;w$mzX4&T@4Re@^m(93nim@Zc910M}RSVsW zv*B6lMOD1$z|uWwPlfJ?ZIdFIR1#5l%9KR)%4B7Fq)0w)u}_6FeoeaclsdpF`cVMy zp80K-@`;+nqUxGxh}8zV1VLC!gKTGofVm~_$hqn!8V3F?;Bb?n#F`Nn9R%}Fk!JUd zgYJ>#Ok#F|UlUv3)bI#CMN+O5lgjdUl&ffoF<3NTO}e%4e0B?IUk&#seL>zjjUcYZ zh41#x2N>gZP5i%&eL)C4*)-vFWpax@q5q!hG)rC$h=4_V6PW5m{y$r*{|A@(+aD=Z zvvWaJL-V)abZ@h@l+BeaEkY}kYa~;orL@yd=p;-nTAo*T8g#1D%Am`zUAGl--SnX&mlH3FR@~*|f^H@|qBcF>B6v)>e~%P#ZQdPqxprRY#G z`?>S^k^*NmR(i}X7xdi&T2jnTwH-rQz+u*HgWVGZYl&^HEIvDnpZmeoAiARb;e?5}^uJHxalM}o6x;8oyD~Tzv4z5^V(bf1* zXf$!7S$pKy;Ptd<8&p>=kuC-^*_*cUco>pxK5QyVW_ly}LEg&S1DL+~fHL%?(LzH_ zt5!zUInV8mx_E>-^i7c~)% zC$#Q*Z?6Z{pMRO9hofXh;)0{}6z197{RyyJH-jGhd)Fgjs z3QJoNrFyTU+GYpooxqUS2SamSL1tLjy{;m%|6vg(;1%Mm>L;OtYAeO)-(o8353?NN zAl*gjQraEToe3IOf!vrk2|*hc7DedO%w;W?H2#L^ln*=FjwseotKWC_)o692#zGRt zbn1EhwfmDamT=_v&s(IO>A+jGo$bI|+`O%p(W-F!aiq#(B;i;jn4;GEs?Gy)7J8t1 zEHCJg-qf@Z?gO41+^|XydkJR-Ct!_LOe{UePPkoU*ux3^YL9MR2!vqvLV`X68d0mQ zT4%mPtJe=u!7#1Wec*;5BCP2PFakL_JIC;uyi1_pCjJe@h;g`)gL$g*Iar(-PKF_p zrfJ;1n+U@nw6BEq$;qHp}Z9a>u1~ z5Qha1z7zFc2Yn6pIdC06@lwYy+ZUm9;4`#!juS8=gFALRCBL<1wNt2n1cEr_=AT&c z8OzcDtBM7%xz};L!2EZ62RGBw$ai3Es0EU*|B29xn4OW8t&pkdUw2>$po_b!*?--E zm1TfK0~TM?+=<|~uU_SbJ&@BFSl~V2h<4#PDAVAhy`pB68r+N*-LBoo4%e8?8XUB& zO0v3G80HX<94bPP*_rE+K$0LTN72^o!vc(52v&23$(PDwH=ToUC~#K_%g=( z3vxPmU0k!~|Ekyl53TmxRx5!a#cZb&U~u5Frpy{*<*9I#tv8wviGV=;X362W&~KH= z!~}2(ocWWQ8-afh!}`sPYWfdHJyc*A62CjIjgWIwVHC?L#2wpD^1r-kh*mx z^u^3v+jxu;hdDoSGBQDqS#4W*S9vchiM&_VEO9JuMLI0e8qE~3q#2cYq=W>zFE^-y zY3*13Zdt$#*Kul9kF;tHidw~_b*%b)ezq6lg=NZtJ8%9=DSOjzOb`QBumE$+oB-7@P zWqwpvFe;%%<6o>K6h)w?c<@@GghCGY#{SRfcTZ6zirY(+_D4O>`XRXy{w zB$u-Fm<6uM>C}{5o_xObQK8vwuh9U&f2(;m7~0kMmy5?GDRF=EFzsc_Q?|?IU3P5R z%g2Gj6bP*m1p@R{S#vZEv;3H*Qha}zW+lu-dXNqEVtk5|o{&&zBrf#^=0Gjc9v^ys zb7>Cg{u>NGlCwxpeNZi93z;Ch88DqVpq1+sPQ0s^){ex{=;-rVEKWG^F12rsv$b?N z=wz~Ey0|&S^0bWlrMxBiUA{fy8yI2LK4IP8^0{n{a~0`~sex^|+Z4nfHQpVp4N&*( z9)a}@KFSpjWWdRsjBjr$2UcQ>k2Q{Q=sf6MI;6EBYz!0G9?**reHcup1%jQJO)+QL z%{77hbA<1wyP?#mtu+L*0bGA67V^(Djj%oU78UHNwH>AljZvhke1s>IqIhPZ_IYy8 zRe{{Jb!u#3K+k2j{q~-Le}{yd`Iywp!%1CCX&M(#X{xp6(i@Ghhl&>fXp{a~06D7@ zC!H@_x~1zhih_ED{_qN{G*X9qwt^?vB>{v65?iMB4dKj|Sf>g_f-pC-u0zBNyfHi_ z>|Ljy?0;yNPj2KqHw@qgUbMi~8F|5tx#}@6y0`2!;tgH<1~1|E1has?WvVeo zMmCuZ99AarpF(%Y0Hwl^!?!Kijw18xNOFvV51zo z9BGi)l%`$9rz_Cu#V07^l6>paRQ7(h3;DQSBIw;i%IAT^nlrExq3EdWl9s{U`wL@H zz$U|hNg4aqj7dtgRjAS3ON5dwvYQMhoaa%XxBzpx3|Cp;(SvSig z+2;uW`+L_6e~=*lFCzATY59MvpZ(SH|JmSem06xf$;06QjnXH@x%{9`7VU11m zGHGZ1#eS~h&3y#0GP_^5+F(D}!~|qkXrUb&2$4<-VY-mTB@VukHTm^UBG5o%?VR70%aAhW_N&!qu!VShEFQWH%^zdP7JugAvuPIV z=S001hdJL`C!Odk?$7sBP6=Q_=qPNKGkw8rS=h=k>o%VqlVh%%4Kr&0gzU3$(J1&E zihaBJ+N|e>0MNaRj+gh!rf!WzROUJ#9)`s3bJJ0EOndvOR?9M2LM74ace3UoWq`w7 zt=5OpUXlyz1kaGGCxTK1W2;MiGu|DBV;;9~4Z{syKkE4Cc3rI_g6IxyYtX3i%3VN^ z$j-rf9^d(z&7THi&ek5$gf?!4)ei#ShZVnXhtM6VJPy|uCnwX`QhGFgw%OKPnGj*5 z<)N^utOJYS{$scKpg=k_$c$&uwME)ixkHih_TBlO)ps=6{yAG*?&Ir6@+wJSu0^(^ z?ZHzOJcwZb`AcK zf>#VZQ_RY#OO(mcc5N)yE&t_ff!dXSa_&cI5|P^aUCm+_HvBz!QPh^r!?};F=!HV* z$@GT@ik@JdM?!c*^BCyjXikv5;#y9EK4C|=xvsIIN`-rR+KA&YJl?=TnIXlyq1xfT zTYC@TlXDYHVA!$p^qM%x77T;CQ#iR0{#GP~zbL0G$IX|W?T!Ae@D2C0E+n4KiD?2s z=nWxCtg2ms51}%k4#CpMKwtA^BSVZjw%A#8UbfPFaMvaq%m$qa{($x@7Y6ZA!BGtk z#?jcIH(Eqp|4Uo%V4F1I5@XC+YQMyMyU;|e*DW-EpPX;t)JD6jC(@W$dno_82`Kwq z-mlv48M*$fG)50ZRF4Em5(6aIuwLL`1yE4P_CILd1RZ=mKLF2t3f2xXJ^_{iGH=Nh zzZ$o*21xBvwSP*`I3MP^S^r6vMq#h<3S?+`i;Q?qzq^MoKGDH=Xrngl;IAee;|mFf zBOVtgAUy&(6FNq|BNxFq*B#udZ#FtlWb;YC>)Rn&xj?KK<*+63$#pmHs!G>dfXz3P z^!Gc3@CRX-$Kmh<)7w+B=KI0)_6CEVbj);uF;D zq)Xrf?h9%+`f+F>nyHai&(KTu z1xYKZ5^^DhUL3H()%m98x{?L1;Otqui%Otn#G!cZIV+sY9&zwIP8GIW-wr$kHHVuG z{9e+V2cv-2(k1$fUq;W2;6c#IHT-7xY=0Jn0mmiN@gm(E(|FM#RGS+Ow{K4S{^7UFIMgRn@pzO=GWs_qn}o#|+2TuxbTxx$!z5~U;omeRahL5dOZu`w2BCEFR)K~h$wrLs z(T)aor5#qQDot(;?P^=2W35XQ)i93%ISb*Cw-N)Wi0-5yEqm1*g!V_2(}+_rSw(iL-7!1MF(1gwh&HQIkJ8OOdzZ}L7dpU(d#EDe zt{E|Cd_Zc31Zybh1~=UXl#=oD&R&-h`tOre*UjNAe^>U^bbOogL(2fAI*Hw9`slBiK@a$g!xL$ByfSHMkL6dIP#P$Hhr9SnAh7VqdY_F;g<1FxGLXd`6tt){0>Dh8W%-LXN^r-k!-^v zd(u5*<$%pA*%41?GGVp|Qx;_9&J}d(1R6#30%bKVWlVqN(#ssf1gKnMThuv++)1Pu zpzs0|$(9v_DY>vtR3M+VM9Ad_xiD)rs18XCs(|p8lcp2FCLA*SnIO0DEjWrdw!nT` z2l=^z=-G^#VlKFQ6f?;T2eNSAW{qyrLotu=EguSBIMMZlXg=R>WY2n9a+*dDR`jz^ zi6=eZK*TGK0NXCUwZvvo9&xFe`Mnuff~`wmg~sc@gu0~|n;qADf=3Y8f3H#fW7+;s zXNtc!s`xFJd1bW0E|xe7Cvh=zsR9rh8fKXf;hfxt0`+bZ_2%qKgNog(1n41l_PAp* zB`dvd%4yf>1Mtd&_=e_7(W>@f%1ij$)q_p5SwNaZv86}d)X2!@*1HcS<>^_(k;K z5J{a5?09Rg{wkhaHf}w?%YWGG*udP{4vT(r+$SLG6+dQ?lXV>WTF>V*Dj4kuL|w>m zaWiQF4l|X(i21f#HqSLp$IbT3>gI!%%)j`SLL>r}#VphGcodvS$u_#7wcXVQ(~%%R z3`KrqeL7BOVkVb3r9Jc08mW9e$9Y0>GZ=y0&oJ$vz|G=h)AIvX?x|$}ho(kyF{<2S zx(h&CDy6ciY+^a)mjO_WyP-Da(pGn zkxI@s06Ez&@tMj2HzWh+fVFFfl1Blw@9npA+vs;kzzC*ZrVzc%4FR;1GH$^7celKm zz*@M-EhetrWwaaINx9|7Fz^mNG_I;aS=*zVorKZ_RN~*}bibeU(lh$w1joi;&5I`j zcx9ggMX$&`t^qoE_RAh{1`$p2)fAdknsIdIUB#tJXky}o&2lMOxrA8?Q&SReu<3;= zWjawTZrJj5Mx~Hb%Mt<;%Tfx?KIA9uqR!=-jf0dFgn3gq3!2leo{7|ij~Ec_Ar4Y^ zsWxg(9tk`hqZzsf`IuA5+IbIEv$73stE>(_S$DKBQQQ+w4UZWXhK;DP6#iX4io9|w z>w;>y4VDf0s$E5?gz>%NJY_~oa#k?yevToF3BqI5gH6=Dk|Cd|75wMOEZl~oVrLW5 zrG}{%JaNCh*j1Qh?syhnV}#g}u}X}U@K16*Bn_t=ie35#nM>+f7xYq;RoN2~3!l?0 z-bZq9B*Vkal`WrcdOjDvId*_3LAXmTpy7k#=Rc(1HiTH1$x>3bp+MKk)RC2Ku&W;%;pVz>Oux(+%wX8ru&J?5ewg({ z6T+MT?cY>lWBJz?3r`-UCf_GWr2T9J|IQTYKSO*(Y@8h2|2aic{l_YZU7}6`${LWSChH`{P4srM|RH$T@&&j+uhM9i# zi3%P6*vzrY;HOAm@I9`mP6_U9%GREgn#wrV-+f=qux9r zeebW2riVHqMQ0(l>RI_hANr*DrS7XX!uH;m@5rIFAeW_~mNb=+*+EDH>6eqG!zI%y z>+;*Q01+JlGL|Yj3xE>s!Q7n70M!8^wYk>(I1a}fspv?x82ar1N2>KanJE;H>A~?z z43p%uaRq0Q8ojw=A@A_0#bLNAQ~#>U^O?VbO7x_0g`p;`MN>s=qq2kgaMhF7}5S?@Xw_rViWkCW#9&K!2nfHgZIrHZCc0q%C`k zZEljH-Uv@S@dZY+VH>R+%%c1!{OJt z=u$Z#;kcFI{W?YAxT)!@kMs{2&3mT`?M9l$OdfldvLx$1nyYfl3ATzj_=Sn&^67e& zGUK~ApjD+aB?8PAqv3Gy7564oo){c7S)Vv*iT-xME@B>{J$ewM?QcIu2xLSfEI6|v ziYJn-sb0qJ)F+Xj@I%EXW>TXbV+$FKqTrKE>5A1yA7r8eQ>iP>fZy&D#uL^ZJ-e^e zW08QG2?0Y68davleMk94mdsx#VII_`nB|(CNLsTmG_9aS&&6tF_5y)ih1qp2B;|3+ z*s30%i52V-Ym*h5i^9V*wV-B;Ipr={dbCM*C~MBy2W;!*wCH3XFDk9_#p+VKR=TdY z*H3HEh`N3BkpwfCUY>lpY@ES4(Ex^_4ebfVKL_hEULfQt9&mECA588162Tl?qT72| zd&^-&I;$lcq-?YBwgwDD#> z#k8s>r?q7%+oRJc(5ky;uS?CI+NUV@SpTtUGf`>{S{4S@Ru5g~O^?OU4qAxkq_ykA zd4vY0b1`)Sn%%qGxsO>Z#{W$#GM-o+F!Zk- zF-5$B6ovXWtCYH;T#tvgKvp}%GJ>IUzjDt>2=>EE)F5?_VCJ+IH0om7x zaP*{_D7u;fc)!oEukbIJDF}a8C zO;I*Jg;`~wFp2q;&qJyqq}_`bwV}rIRB`h3Jj>Fc#LU4o(k-o=i~8>2M`qm|Jo;O8 z?JsnV9d-sYVf=yXv^idTD}#-%HPHeJmNy3iF8rwfn1N^8xoV^biT4aHQb^% z%Ov5(U5WAVSNoatIpUvo;fQug8MQ5bO7z`YK!m@RJG4)azSp_95}Ksruh=y{Qn(ru zZM#G4g=tMA3^Wge++pqdZqazdLw`Q?uXzZsUtbfAKi6b=pW-Ote*-`MLm2gcV?X|* zJy*o9{FU(v{1`bLWV05RQirWCh~|U}yN?w9ic>6%jw~)8)W1NM>=bH5%22TiOSV~@ zu-p%h*eygHiNBPOpoK=yJ9ahxkumXp|2C%frK~wc1SgCcUWz%|gnvjC_m zysJoR%~?pRa0#oYWs6PyePUzzWfW5?uUI+bf^nQZu!R5q8GplPkOxBJ8oq2Sg3bo^ zCn1i~MI%vx=g&KXjnmG>jaF+e**Oe8gGIWVgkyJh*B}#=CidO&W?wG0^>s246!wh_IQQs2`wJybzJZO6Y}lmT)7v zdI&An?k;LuNIuR=Dz|2Fb{n&9y_gXye$ggTwgU=%H{9(1QTMSFvD(bM|=fxDR+W}>!d$2 z!3sg!{FUl6iNi#BL>)D~5nZtGQVN(*v67|Z<^68W+%}7BWvq0Vgx7`c20`H~y1AG-Gk`O~ku62SXHDh$ic;4_ztcOr&8XKgskVgT<&FIj8#_a-tyGn^~Z?6@vwy=PXO^@_BMWs7;b*$oW@<{h&^C{%(qGz+Sy-u0Uci)$WXnmJpZ zHz=`4&q9wT?^`cjf4rAGZ#q_nCcitObdzAv3x6Sm-phMbhw>D9bi;x`2pyvAeI&cU zoXdil+nW=4g!@iQkOgayyywTry3d6G9nmMaC&1)R78rvR2~+?Y;UPlvPF}hDQT9>| zNaQ@(VHI71M`j{jAnl29dT@18ee(|K+kdP@l5@PZ=cVbdvLoZ_r0E~xeC8rJdQ8Rg z&LADQ0vqD!KTg8~#oI#JZQ^Ql^b-5Ebs+BOCHHIVXxQ%c$1nc(xEF$;&-6Yue~P0SNtK_ z$Sv3_M7*DHdvb2FaPN4%dRU>{dmHvk)gJIgNyMwE)hrF7gUd!*gOgU)i%vjA=(xbv z)$k3=LQ9V1k$CF`7PQ%3Q_@ox21BTr_L1>c0$Q>jn7Oj^oWlAH(z&_zm?l$Vq2`vl zwgINO{nW&n?1e@T>oC8#bsNr-ZvmpaG(**m4+nTlTC=7+HeKp^^UIqZgN?D4CsC{b zG&v0kqiGlET1sG>C!Hh53TaE{e>31{Hgm95yKqQ6ro_$2b-j8mLOV6SS0-XZ zrtpAUR1{#APXQTJ_H*a#TA7;n<3fGtzh zcPxR58hgL^z{D!d5MFmZ%O|XP9vHJJ4k>`8x(J#W!!)oCo=6=Bj8AY#QhZk8v{_*m zVZ*%z69ccs4GoASpS{L*s;1=X|6#k*=P#5s=3Q!|_KlIe@-I!BC`fqnWx> z0K52??BZNer13oO=2tM+1 zLqNj{`TLY)%;$5P?OYBxdyjc_V83=|h=`VUpj!7}2jIS_J#r>@X_~eBl2S z!m0l-5>O>7Z#U774r9F~*+I^Q4=J921_Rte8{!~Kc$!Poa%JA46etG?6?sPPi?@TU<=~p^d!yxmvy%WJI}% zrxKcoTDB@xtC^iPDlb`u*|fBnYN;G7rq<-OH2`HDoGc@ff2q*J)N#|RSrLRjaKENeI+ly)QbWX7qL|8TYlt%K*$aEa*D&2}*xttz>nmgec zaok0Lke&|I>I;r3F)8c1*@M@X@D*BN(%t4y4lQ7g;2muc^#muDG!Y8Q3x4m|5qk_*eiQoqhDwj86_)WN2nl!vW<+%C?I z3amisk>yZ-$4g|$XW$6v{8Y;7(zl}jST37ZUM^xRsn#=)-0|%_hna(6fuRd(>=g*& zLF0z0gV71%3KD{Gg%NJyya+^|$>_PniS=$4$)aohJ`!}BrAa@rE}G{axU0vB=mOTM zbcs0kYv=CvTeKt7>{c)b)!TrvRP~NHkqcUn5)_=&%if)BQPCk_C&CSN$2zwxHnG}{ z=T%urU$xv~5(>s}p$NJ1d+4+P*mA%&;&i-TDlG+Anef*z1B$X(Q?poP&CsS%<)C^< z*XYeP@k-zyJQIAVok^t4Nx^2k+vXcQnTR7VMW5i(F&=8!Rw!kchCq@FeJik_I25C> zA#x05WJY^e?a|$5YK)iug%XUk(n?sv;2ya=;clitYy_fy1VK!r4<@vyV~%)s-V)I< z#$dW3uihJ33@XZ8X1sUBpS0+{jn^IZ37ew4Vr%k0l0z~E!_|#fk zZ+G&NH#MEFAwFhX9500GEiQ7&{jR@=)RL(a@J5^*^ei(8do4%#Uw2=A=jU;|7}=vb z=Z>tcL>~V&&MVj^{WE6l*dFYFH2JN186NwY7Y4RGps^9PZiPa*F0DG**?@d4e1TPW zsBy%JhH7Bo7FRL-kjVPlsyzw?m69spVQj8JkNh04A*e|L!0$(-Qr`9D4Xb8cn|d%DL#*s{G?NnP@CIh^jMo& zHj%2^V^fK$*&=F>2C=Fbr!d{}V>ORkO^K%8EIswSi%4ikHHq0|QS2am zQMk~BM>7IQBSxqK0D?5=(d%UlelU!dC#qJ&9TmjzyQlB1EWX^*L(JL{4b5NEkcQY> zyF7|-9`P6ax3&C}~A)4TU`&GqlBxD;)jod7mw ziq2Mlxv&`noc{MyFC+Fp{7`{g)CII_D%EHWxgxKU)X-^<&UuTlAUJduno3noYc=@m z7spN*@p?fagdv!Jal5a^UB1@oFd8sSrgM2t@=Woh{6~VI9b}WWdhukoFL_!oTO3{5 zS!)n3hK*+P0OL#MPoIiMo-4qf(LOjSP|A{VR0exF6c&#ZMmz~{W z51bX`4HXYnYPmmiU&matQ8G_!k=lm!g=OnWGgo;TzJlI&xDH}- zF4{VI*c__Oj2Dt<(x%blJ+QY7@Ym=qZ)n4B($QgHoCH3xzUp@if09f86p0he$?p-O zoJRL^la&~^jTY%x$1ctpX``c7jHOgw1JtxqDlzJGWaOHEPfxEIY2!z0hnQ8q|BI#S z#qdHC-DgcrL&uR;oaJ*eyu_)Z@x!&n0Woo9EmMuD69lOp zryQcPVOr?}?C&^E{<7j%-sfj|`1~yY4r%wlDl-4JBg%+fk;D`D96_WOXsr=E(Aj@w z2-F}dK!}CKoCb4baoag|)0tBWPq<}1sZ_lzL6Zj2ef;uWc{n9CCyxqhR^Itt>B#F& z&6)4LJ=u+(QPpjRAd(6%G; z71OUdQqVr(Qg|?FG!AXv{ReN>&xFqT>*-~l7=EP`a|b2K{O?|dE%V-$W@8CU2s^BK ztoQpdzqQo8z~4%?_IrCm!>GesuzIM3-tZ}~7qeXPlaI9<(*o|xZ5FXqkc+^{y`1@) zbEa&qSIY_A2(0m7>85(g&hK*7#}I@%wE+eZJ`TuS>eW5wg#pt%!%AoR;i5_N$On$B zJPZ8#3#+#KHWCN&x%TN6UuEOrf3K6lk0X{c`AKvOd(-6E(imMJrl>aD!#;iR4jH?S z%x$73Ce)ONvqhv3hvCAbmAMXY8B>jsbzz6|P+=J!Gs`Tj^Z)(Jzo#o$lYKULp-;gG zCP zO&`l}+4wQ`&ox{h+ygej<%SRt8CZoyaJ8X|r6*;cS+(p^cmT0KFZqfEJ78A6aYv5H9Otv+Phy|lSx>`}> zuASyxa=0feZW(&^%WQNuW61>I0)67P z8(-)EWQ49sKS-8J=xscyJXvFp61AiM#B3p1aD4XM3>KB<$M?Vs&GhvLA|8_S>G%Wn z&HBI*2p+Z;z4Z_cEfN`NL$7R~}Xg_E#NaWNHx)#%vWNXwN!3{&|jy;Wn|=yDO8;*uAswR?`?opbv)o z+(Z~mG~Vq&G()gAS1)<08*GrY-O6m=kpI1bu$vU|4)ZyE?7mz*%n4iSCb6A3&vV{1 z4vJYuK7S-_=R4c(p1E>DTo=(J!gbE2LKVM2nc`fp3O__DgeF&?5Ev3!3B{1d7E!!( zhal$)T^ER_eSf}UW4DfBd$8&Lbf`!V_m9TcTca4_k6o@s#>|3nIj|x4>vw93x8yl8 zch;W$DgB|oh2OpK&;2Mi?5qfc96s~ioc<+w7T$8JylONmWE}VRs`{-}50tkNcQVqW z8_dWQdZf>!f*aR6h+j{hwth;k3;l3AMoJ{F-+_MKL2(UX=0zgl`PBr^v`!MQMiT;1 zI9j{S6xrq@F#sbgIc3<@PwpuvoN^3J7uuBI`Nk%k#>gK(NwZ0QZ(qb~?iHT&1z#QqHP_K9yTb z2I3A*oGJq3@h@zy@v~S(3N3zI#x=5}^ZOjvEXIN9FaI(#q=H0!o&M}Ng`XxS|CW8L zqluKY<3E|ICdU6HQT?O)6sTw^p_*a&bmA==NBjU4@ zeDol)zqw3bwxqU^X26mTuyLkgZn<@Rk_rHQRg0rQt>mPMFmVYvz>GuIk(DQw>> zx1lopi@z`br?m|d7Drg?54pwS-z*W5x=p4HUK&Y*rUJBE3*Uq``3$=0vBAEl(IqE@ ztIlMmsaTg}mYgo;Dond`rj#I6rH?G!ok)7;YF2j^uXtREzL)4$pE?ohPM@a_Rq@B1 z^)qU3DX%2B=?KlLCc(AU=ft1q-`=BTk#Ei}9@OD4VKyFV=u^rCO;uX573rVhfy<$d z!v!n%; zfcZiO{pfzZm8GVRB0-iQ65PiaXv1&+9(#J2sDW_1(oMeoT!2Q@i zNyz5IVs`SsgVuX9qHg+-e(FJ|`?M)n4tRIm3C307M3 z424a6GxctP`zHKWynl{!>T@$K=kN2O;%ETH4er!=NfOkio{$pf;prSyrJOFAN{ms z=!a6n5)Z%Lgkbp})=F*>p&)b_X$3yQZV8XyH@RLTFHVK_2aLfJkuQrhC-r_(ssPiG zp7#$SruWn#bXhgB24ySj%IEMGjS+b4qGE%Ohe(-y#&P(1u*YvsMvUOV2bKC|zHuTC z=(tR*Z<#t3jd(NAP0AlS8uI+AMuF=PL{$1Ip^bVv+oS}n)80WP;rv0`X|21wzp0Um`|`C>1_;nj`fBalguQeg2no*aGG z+hqldwuD4A;YgL`-fkSoQ>^=Vs1sS(@>Gg<@QU6@r|{OB`A-k{HXp}B83XD(f(o0V zHxhCws6CB3=w9h-5p9Rt7d{7ot49?L)+v6R9PeEt!ZQuTDrCnTEz_i)Z!FbMLY`;T ze`RbaE9>i#ep0vSK6O9F|Hj+Q=~F)EXlmpx2gX1kMX#!mi~_Ii`awf z>+@*+bRP8+N<}u`aM~ThOQJ#hKmZEHKrq3`4 zAH>6OuA_;UXy$d1r0vjQFP%gmls_l9FPr!Ho%ysrw8F~sDcZuY)j^!Y5qgn8;kr| zDTc!*MQhwxpw^Y7;b^?%Lt_ALv@nk5OrgH9+{9A!pbvOSMG7_NE#^9u`P$xI!Yr)7 zDpn<6*hsq%jG|;|X@C|UoSLGvdZiXfEzK-V>-PHdA#t$g<;zp9oFsLz5ouvwHs6hT zngL(F|A0e~Rz0qD8l_L(qjtRiwBJlb3#lrAQuD;ns?IW^6RK3Fj9zPvy^M5;MAm0s z1pGz(aYe|Z^nRJ=cD8O=aEeL?oXay-IrfuevL?Gql}q-uK4ky+%LGKPul5Ei{=2&OIbD=C!l4zkV$dH9Ty4bW5C~i&$ z)RxUxgrM%5g)Fx0cn^D4G9|n4d~qs#N@^TQO1s!&m0MyZ*vkYgWo)W4AJH=bR(uZj z?nU|G0#sacb)hh6o;JUIi2Dj7qNK&fRNSSR7%7gR!$Q47(-a3*=_e|b_-iOdD>NM| zIPY&!0_>3r>>&WvZfkbb#JGw=MTVi`B%}E;CX0jH;Ea&_hCh^!>}QkIcu(6s(ZeaC!_#Dap3qkz9{^372`+ww6nLd*< zHzw%LHlmL$Tjxfx)H)C7knjf2h1Xtmww z#{<{V`djS6!u@`w-0oH7O7S?g>N6I449;3fal|f_SV^5gGuHyBjm0gg7;+TTMB=aJ zHBgXw5&N0!6#~g@v&6$9g6hmb*RPk5>|utg9MVQZ)LeBWLw zV!#Cl_COJgu&`k;M5CzkD>XJWr-(e9EX#^J7ef*z&kq^c(^@*FQXoq*0;&VIQd>?% zAo_LSVoxC0yUYqdtidMvl@YP(*E-su+pdAO&%{??jVW7C^y?Af5l z%G;&gj)B}LQZpUad{+kbrHf^yN>$Wtk5f3E@4O<2(Dv`XSQ%HlAwty234^Mq)Pszg zobT{yk5fv6RD5<6Sd-IR_(ha_VSw7T837Z@hQsJwM8>c+{ejLZaqmJ^7#-!tI0ktU zh*(Zb;V+Ya+(^YRP-qKhL9vU-A_m66Q!zacI!WJLa8q`6G4mVkEMTp(?tA!BE1}NL z{f<&E@#uF^a$bff<-J>OkVmvj#=@79GU*UL0&9Zi+Ai50Akx7s$Xyx{taHUX`LDV{ zEhW71`IKGb5=4-X#66%J~X{02K3IXijLCVf|`!X&D+vZ)fZF7I57kx4Em#(9(6D65hFY`I_dqHC`*h= zEh=>?=GzG=@(Bef<*qd%VcNJ+A?Ae-4zN{7*U}K!!do+5)t-Y5?$r{j696zlR6`YfODLMh~75wt5 zll_=B4IQ)@T}foJcohb5kj)- z9u@GrJGcYE`jw|^<26TRrKUBgxzhs)pthbg^7y*YEQx2dhh+s^d$E0o-O9_C8Kvvx z-trRk62Bg9D;U6z^1|h@F!R?AuL>N?e(88g<0LBR4CH5!17?o4)E9gL& z5`H$3x#I%`)p`+|H6@rk`Hu;l0MZW}QqK?iWw6(bob z$LxrlELTK{Raow*xe4MC@%zNap6@ZSJz zn8vy`c}49(XBZy*jXkf@`l4Eu)Y9b)LLQ0xD?L15-tOsHTfy*V|fQ9y8PB{|K95zio77SKZ`x*v)Il4ABz1S zh5nZ*=V$Bxe31Rk$?m@^^nb+3%_Y)nscD97H&Lmc1=oTge*eMPFe7d?uWo&7--&D@dOSSMVlGSTP#xVexNFO3c!?;FQpa9Pl#;qf)s_YGummZ=TrKZpt77mo=>IXaq}4CrdTAfE?J&&sQbfRjL8^b(T|uz zn)tq6ETtndd*8)vvP=HY24oO?{A2Q%Y5&zuGro^7HZZrS()=BffJRX2@x=ve^eK*i z&vWREaC~N|)Sm$St;fE0{+TtiFhw>o2A|p{z?*~;$b=I&vx}Gyn0En&c|#7q}NJlt#mB zLxa_UX;6O#8bgjQeu=QatcMi2P0D>7Yercq8;+fb*}s8`3T3Uo@(|w(<87$J4oHYX^%ZL9;zf{bw+oQq zLwupxuu%01$J8;J)=XVPhr{@L`TZG?$eF&s{J3h;bO4IYW9tQ zg~k>^#Jp;n=x|ryW5`kohPusFZkvVTM}i~!_b{$>cl=PmgVY12ak}J!+@3J6vi(cM z%pGXgK4x&PIMJ9(E1}l)tIdSz#;lcjX)0L9wFHaLb@csEPM z#0Ymysse2XUZxBS&X~K7C6cT%#U(^$;f-!HalEjxX-V9%yKqr*u}fj?E&^bPQQOQi z=;#I4@@CY5X4qDye9!oa1|h2L*-9bx=qw2o`~$Y8gKE!C?Jmk)(T6LdnKFkn3izp4 z04}>L%;4B-E29d>2I=uPF_@*D#+V6D*2KbbnZ<5@4PHxH$AVDH(4)lG#&@AZFX@tn znMefSPTXCj!E3z-EAR9b5*dxXTd5=py?3Wh8n*8G=)SjaI4uk-JdUXoFGvUM`ODjc z#F7IHcjk6UHbO+V z@Vx;aYMNF8+R1UGtLP#t0P7*Jd_n7y&G{om)B3pH!%eGQQx0cxep@X%+m#35&Jsk4 zRM?X8jb)g*cH%^*nqfb1TEwy+@qU-2!sG5s>x@uhi6<#i!fT3EvXup54o920=DJX_ z)s3R5F=Wi-v08oLC1?$PeWa;Nc9hM_YiM@x7e60i`-FKoeW-wD5gK%ZRu~*4nkvMk z5KhS#H7ZJBZ0~rEAL;>q-M=^4R;A?0q+^J+AI4f{GRa3cMwDWQMu5tGfY{|mZ{eO8 z-=BmGXhaBciY9SgU;ln&4DtEr#y@2h3!g$z<^R!<`S0ABm7EOR{?7}bLTybBO%3Y< zUmeQ@TR17KJPD(p2Fkfi)$*%CCC1mBY}NA#11x=G7vSVL$+Tx#$4VNaclC)<+~9XM zP1JgF!0PwgoO7u-3Yq63){65#aIlqQDCJN)=`34MlYd^klb$9oZz^oNK&x?+dW-vG zpc=Ea1mwUz=eh!f&!ocxaSm9~ecAp-$bkiuS5PoBbcC|Q8AUMmC`J2rnh0{3+t}1T z?EXiW?Rb;o-W6Yj92Q|2znSHIA$1@~FdIZmMy};7)7PG4HKZ1YLQ8HuvTU@0x_vm7 zC8;E@#~xaobhn?fqmGH`08QQrBlpaYF=T5#`$0%KLt^%`O=a$1s(Z_E9g6jOxaE6FJ7_nnf$V+LL*o_ zO=KHrRV{A+znz{MbL}dW4-^Fi?ai$+IV4(D}e4yBn1y=_Uvw9^fj$DnlRa6!fi^iqD%xTMu6pJL%!Gw{{pS zc0pSdMBh6te^U=>#yvOh+{_0z7w?h++Q_6}3Pzf{XI|EzB>3xu!5cSaB4Cs&=OZ!j zpt~{k==>sFcPYK+LbIgRhq&rWL{~%~(V90)PCEBw;}m7iXD`HfPBbG{s7#Kb;(y1# z41x@O6~axNJkzW6G!v5MS)ppFC?;cwHGE!3bkdPj(uu`{<2mA`#l+SV)&u)1spvsfbgfp%U;eg0n+$l!*}PW! zHQob1t)E9zl2C_Ue`rSFx!>foKG-GBw&Qa|J4S@1|6uFI27^Pc&7^hKg+_!N475t0 zC-Qxa;0BL>;|g9^;y^A<6WN5{e^{In1Z?7Q*D>^~^qA~tA%<`T%5D6}C$>ch(k_O7 zs%ck${}x(YTPP4hy_K!*+gj6Jc5P76T|^aI=B&u8Oc;?EWUAnRJy7$SMs-kAs}a8> zwq%B^HZNwR(U1E(4_9gT9Iz{+CQl4+od{eMzfR*vbklxX%64rLP!>hnQx}UmRTx)~ zXGUP+?R7dcR3|KOV)*%x109uz4u32_`q9Gq1%IO29*M=g2mC@?kmtJ)WM{vD_7LhL zve+eU>lKgOYY!^(E@-#~?RVm5dMf75lI5|53nJ@*#~}6xX2gQW5LH6bF)W{MpGva6 zs^MHeuC*|R;k=L&{_Z&ys4c+;e^cUjfgt|?7=*WoV*kY0>+9=fJuu6J1R+psORZ!5 z7q46ZGbL5%Wn}B0tL|?E?XBu`H$itlGz$WitT1zqWrhrAR3Lx+*ukUGfK*u`t~5~w zkY}90!Qq+u?ymd;+?Lqi?dno-+Z;yYxxBfp5m;cM< z@t=W!GjX~d|FMX7yziNDSXKRQCqJ>c>fQ|NHu1#3Cn$(rFxmt$W_F(#41>^+S-gCvM`-3~&ARQ_Xnbg5e0f7?TxED$y!wL%-ZiK&RfAZvWJtK->c3@YDeN^yB zUUFCKuhx4UyNcY7GicdN1j*;mgr&$+(Eah0ny9cjR!;(T`2yP7f@7q%`7-+7Kj?7{XeeEu4^Z3u3xRpB?%Z3-%(thV}**QIn|vymy+J zu29%uI&cx8B%+W`B0f`L!e*|y&Hr9uX{vx*Tf`fKj<5uK^_;nM$W!8*j1bm3P)8mq%zxq=$^0MTNQf=ctNZjDZ$;R-(;OLrjf?4V2^|3i3hm zR5cAb>S(IF7G|apn}c)71?Y&bxYHJ?ohr-L+rAN})-7HDVrs32(O5Ha8(C~9-Et`j zkO1PG7*@ouAoq)wfWiQpZW3c845naEFaRj@!6OaqC&dg1<&alo3XqETLbo;49ME!b z(|X1jcEeD+LfBNfBG@!Lz6`kw1OT9iX3S;_rR=?Y$6zXpj|YQkTy{yp3CkYAvPzq2 z6u2#ng?{r*Futmj5JqX!&YcwJjZd=d3sISoPuwOg{=q0mg&hASO-V42|66t9!-@lU? z*-|v_tHgpU*cWJ1UB3@6o~SJ>LmTJZSZ8#Wn6Lw-}X#Y$Th%C*Yqv$B-OoM(1&rXBay;L61s z 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

v$E3+0Rx(YU1O<}gx%l>358B60icopH!PYDJ{T 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

y_Vo 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

ZNJGzz$Z)U)tD^jU8aO8-z+BV7!Hk4))fyHn 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