From c239b62ea9e7fde86ead17b0bcdc12810dae587d Mon Sep 17 00:00:00 2001 From: Luca Cavanna Date: Mon, 6 Jan 2025 16:45:28 +0100 Subject: [PATCH 01/35] Remove @UpdateForV9 in IndexMetadata#withTimestampRanges (#119084) --- .../cluster/metadata/IndexMetadata.java | 15 ++------------- .../cluster/metadata/Metadata.java | 3 +-- .../allocation/IndexMetadataUpdater.java | 19 ++++--------------- .../routing/allocation/RoutingAllocation.java | 2 +- .../MetadataCreateIndexServiceTests.java | 2 +- 5 files changed, 9 insertions(+), 32 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/IndexMetadata.java b/server/src/main/java/org/elasticsearch/cluster/metadata/IndexMetadata.java index c74275991c899..056292177646b 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/IndexMetadata.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/IndexMetadata.java @@ -41,7 +41,6 @@ import org.elasticsearch.common.xcontent.XContentHelper; import org.elasticsearch.common.xcontent.XContentParserUtils; import org.elasticsearch.core.Nullable; -import org.elasticsearch.core.UpdateForV9; import org.elasticsearch.gateway.MetadataStateFormat; import org.elasticsearch.index.Index; import org.elasticsearch.index.IndexMode; @@ -944,22 +943,12 @@ public IndexMetadata withIncrementedPrimaryTerm(int shardId) { /** * @param timestampRange new @timestamp range * @param eventIngestedRange new 'event.ingested' range - * @param minClusterTransportVersion minimum transport version used between nodes of this cluster * @return copy of this instance with updated timestamp range */ - public IndexMetadata withTimestampRanges( - IndexLongFieldRange timestampRange, - IndexLongFieldRange eventIngestedRange, - TransportVersion minClusterTransportVersion - ) { + public IndexMetadata withTimestampRanges(IndexLongFieldRange timestampRange, IndexLongFieldRange eventIngestedRange) { if (timestampRange.equals(this.timestampRange) && eventIngestedRange.equals(this.eventIngestedRange)) { return this; } - @UpdateForV9(owner = UpdateForV9.Owner.SEARCH_FOUNDATIONS) // remove this check when 8.15 is no longer communicable - IndexLongFieldRange allowedEventIngestedRange = eventIngestedRange; - if (minClusterTransportVersion.before(TransportVersions.V_8_15_0)) { - allowedEventIngestedRange = IndexLongFieldRange.UNKNOWN; - } return new IndexMetadata( this.index, this.version, @@ -990,7 +979,7 @@ public IndexMetadata withTimestampRanges( this.isSystem, this.isHidden, timestampRange, - allowedEventIngestedRange, + eventIngestedRange, this.priority, this.creationDate, this.ignoreDiskWatermarks, diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/Metadata.java b/server/src/main/java/org/elasticsearch/cluster/metadata/Metadata.java index 71de9ac88a360..a9617058acd60 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/Metadata.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/Metadata.java @@ -12,7 +12,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.lucene.util.CollectionUtil; -import org.elasticsearch.TransportVersion; import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.cluster.Diff; import org.elasticsearch.cluster.Diffable; @@ -521,7 +520,7 @@ public Metadata withLastCommittedValues( /** * Creates a copy of this instance updated with the given {@link IndexMetadata} that must only contain changes to primary terms * and in-sync allocation ids relative to the existing entries. This method is only used by - * {@link org.elasticsearch.cluster.routing.allocation.IndexMetadataUpdater#applyChanges(Metadata, RoutingTable, TransportVersion)}. + * {@link org.elasticsearch.cluster.routing.allocation.IndexMetadataUpdater#applyChanges(Metadata, RoutingTable)}. * @param updates map of index name to {@link IndexMetadata}. * @return updated metadata instance */ diff --git a/server/src/main/java/org/elasticsearch/cluster/routing/allocation/IndexMetadataUpdater.java b/server/src/main/java/org/elasticsearch/cluster/routing/allocation/IndexMetadataUpdater.java index 1980cb17417d4..ec4bd4b2d077a 100644 --- a/server/src/main/java/org/elasticsearch/cluster/routing/allocation/IndexMetadataUpdater.java +++ b/server/src/main/java/org/elasticsearch/cluster/routing/allocation/IndexMetadataUpdater.java @@ -10,7 +10,6 @@ package org.elasticsearch.cluster.routing.allocation; import org.apache.logging.log4j.Logger; -import org.elasticsearch.TransportVersion; import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.cluster.metadata.IndexMetadata; import org.elasticsearch.cluster.metadata.Metadata; @@ -106,10 +105,9 @@ public void relocationCompleted(ShardRouting removedRelocationSource) { * * @param oldMetadata {@link Metadata} object from before the routing nodes was changed. * @param newRoutingTable {@link RoutingTable} object after routing changes were applied. - * @param minClusterTransportVersion minimum TransportVersion used between nodes of this cluster * @return adapted {@link Metadata}, potentially the original one if no change was needed. */ - public Metadata applyChanges(Metadata oldMetadata, RoutingTable newRoutingTable, TransportVersion minClusterTransportVersion) { + public Metadata applyChanges(Metadata oldMetadata, RoutingTable newRoutingTable) { Map>> changesGroupedByIndex = shardChanges.entrySet() .stream() .collect(Collectors.groupingBy(e -> e.getKey().getIndex())); @@ -122,14 +120,7 @@ public Metadata applyChanges(Metadata oldMetadata, RoutingTable newRoutingTable, for (Map.Entry shardEntry : indexChanges.getValue()) { ShardId shardId = shardEntry.getKey(); Updates updates = shardEntry.getValue(); - updatedIndexMetadata = updateInSyncAllocations( - newRoutingTable, - oldIndexMetadata, - updatedIndexMetadata, - shardId, - updates, - minClusterTransportVersion - ); + updatedIndexMetadata = updateInSyncAllocations(newRoutingTable, oldIndexMetadata, updatedIndexMetadata, shardId, updates); updatedIndexMetadata = updates.increaseTerm ? updatedIndexMetadata.withIncrementedPrimaryTerm(shardId.id()) : updatedIndexMetadata; @@ -150,8 +141,7 @@ private static IndexMetadata updateInSyncAllocations( IndexMetadata oldIndexMetadata, IndexMetadata updatedIndexMetadata, ShardId shardId, - Updates updates, - TransportVersion minClusterTransportVersion + Updates updates ) { assert Sets.haveEmptyIntersection(updates.addedAllocationIds, updates.removedAllocationIds) : "allocation ids cannot be both added and removed in the same allocation round, added ids: " @@ -183,8 +173,7 @@ private static IndexMetadata updateInSyncAllocations( allocationId = RecoverySource.ExistingStoreRecoverySource.FORCED_ALLOCATION_ID; updatedIndexMetadata = updatedIndexMetadata.withTimestampRanges( updatedIndexMetadata.getTimestampRange().removeShard(shardId.id(), oldIndexMetadata.getNumberOfShards()), - updatedIndexMetadata.getEventIngestedRange().removeShard(shardId.id(), oldIndexMetadata.getNumberOfShards()), - minClusterTransportVersion + updatedIndexMetadata.getEventIngestedRange().removeShard(shardId.id(), oldIndexMetadata.getNumberOfShards()) ); } else { assert recoverySource instanceof RecoverySource.SnapshotRecoverySource diff --git a/server/src/main/java/org/elasticsearch/cluster/routing/allocation/RoutingAllocation.java b/server/src/main/java/org/elasticsearch/cluster/routing/allocation/RoutingAllocation.java index e0ada293e5508..1f6832649edf9 100644 --- a/server/src/main/java/org/elasticsearch/cluster/routing/allocation/RoutingAllocation.java +++ b/server/src/main/java/org/elasticsearch/cluster/routing/allocation/RoutingAllocation.java @@ -340,7 +340,7 @@ public RoutingChangesObserver changes() { * Returns updated {@link Metadata} based on the changes that were made to the routing nodes */ public Metadata updateMetadataWithRoutingChanges(RoutingTable newRoutingTable) { - Metadata metadata = indexMetadataUpdater.applyChanges(metadata(), newRoutingTable, clusterState.getMinTransportVersion()); + Metadata metadata = indexMetadataUpdater.applyChanges(metadata(), newRoutingTable); return resizeSourceIndexUpdater.applyChanges(metadata, newRoutingTable); } diff --git a/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexServiceTests.java b/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexServiceTests.java index d45b2c119d2ae..0411b951cb16c 100644 --- a/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexServiceTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexServiceTests.java @@ -1585,7 +1585,7 @@ public void testClusterStateCreateIndexWithClusterBlockTransformer() { .numberOfShards(1) .numberOfReplicas(nbReplicas) .build() - .withTimestampRanges(IndexLongFieldRange.UNKNOWN, IndexLongFieldRange.UNKNOWN, minTransportVersion), + .withTimestampRanges(IndexLongFieldRange.UNKNOWN, IndexLongFieldRange.UNKNOWN), null, MetadataCreateIndexService.createClusterBlocksTransformerForIndexCreation(settings), TestShardRoutingRoleStrategies.DEFAULT_ROLE_ONLY From 7bee0c1e1aef806aafd7cb41a07082ee7a7a8ef8 Mon Sep 17 00:00:00 2001 From: Alexey Ivanov Date: Mon, 6 Jan 2025 15:51:35 +0000 Subject: [PATCH 02/35] Remove legacy node selector from tests (ES-9378) (#119095) Part of addressing and removing all occurrences of the Java annotation @UpdateForV9 --- .../test/rest/ClientYamlTestSuiteIT.java | 9 +-- .../rest/yaml/ESClientYamlSuiteTestCase.java | 26 -------- .../test/rest/yaml/section/DoSection.java | 34 +++-------- .../yaml/section/PrerequisiteSection.java | 13 ---- .../rest/yaml/section/DoSectionTests.java | 59 ------------------- 5 files changed, 9 insertions(+), 132 deletions(-) diff --git a/rest-api-spec/src/yamlRestTest/java/org/elasticsearch/test/rest/ClientYamlTestSuiteIT.java b/rest-api-spec/src/yamlRestTest/java/org/elasticsearch/test/rest/ClientYamlTestSuiteIT.java index 084e212a913b2..675092bffe8d5 100644 --- a/rest-api-spec/src/yamlRestTest/java/org/elasticsearch/test/rest/ClientYamlTestSuiteIT.java +++ b/rest-api-spec/src/yamlRestTest/java/org/elasticsearch/test/rest/ClientYamlTestSuiteIT.java @@ -14,7 +14,6 @@ import com.carrotsearch.randomizedtesting.annotations.TimeoutSuite; import org.apache.lucene.tests.util.TimeUnits; -import org.elasticsearch.core.UpdateForV9; import org.elasticsearch.test.cluster.ElasticsearchCluster; import org.elasticsearch.test.cluster.FeatureFlag; import org.elasticsearch.test.rest.yaml.ClientYamlTestCandidate; @@ -43,15 +42,9 @@ public ClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandidate super(testCandidate); } - @UpdateForV9(owner = UpdateForV9.Owner.CORE_INFRA) // remove restCompat check @ParametersFactory public static Iterable parameters() throws Exception { - String restCompatProperty = System.getProperty("tests.restCompat"); - if ("true".equals(restCompatProperty)) { - return createParametersWithLegacyNodeSelectorSupport(); - } else { - return createParameters(); - } + return createParameters(); } @Override diff --git a/test/yaml-rest-runner/src/main/java/org/elasticsearch/test/rest/yaml/ESClientYamlSuiteTestCase.java b/test/yaml-rest-runner/src/main/java/org/elasticsearch/test/rest/yaml/ESClientYamlSuiteTestCase.java index 54602090050ab..15ebcf3d1feb7 100644 --- a/test/yaml-rest-runner/src/main/java/org/elasticsearch/test/rest/yaml/ESClientYamlSuiteTestCase.java +++ b/test/yaml-rest-runner/src/main/java/org/elasticsearch/test/rest/yaml/ESClientYamlSuiteTestCase.java @@ -25,7 +25,6 @@ import org.elasticsearch.common.Strings; import org.elasticsearch.common.xcontent.support.XContentMapValues; import org.elasticsearch.core.IOUtils; -import org.elasticsearch.core.UpdateForV9; import org.elasticsearch.test.ClasspathUtils; import org.elasticsearch.test.rest.ESRestTestCase; import org.elasticsearch.test.rest.TestFeatureService; @@ -33,10 +32,8 @@ import org.elasticsearch.test.rest.yaml.restspec.ClientYamlSuiteRestSpec; import org.elasticsearch.test.rest.yaml.section.ClientYamlTestSection; import org.elasticsearch.test.rest.yaml.section.ClientYamlTestSuite; -import org.elasticsearch.test.rest.yaml.section.DoSection; import org.elasticsearch.test.rest.yaml.section.ExecutableSection; import org.elasticsearch.xcontent.NamedXContentRegistry; -import org.elasticsearch.xcontent.ParseField; import org.junit.AfterClass; import org.junit.Before; @@ -58,7 +55,6 @@ import java.util.SortedSet; import java.util.TreeSet; import java.util.stream.Collectors; -import java.util.stream.Stream; /** * Runs a suite of yaml tests shared with all the official Elasticsearch @@ -217,28 +213,6 @@ public static void closeClient() throws IOException { } } - /** - * Create parameters for this parameterized test. - * Enables support for parsing the legacy version-based node_selector format. - */ - @Deprecated - @UpdateForV9(owner = UpdateForV9.Owner.CORE_INFRA) - public static Iterable createParametersWithLegacyNodeSelectorSupport() throws Exception { - var executableSectionRegistry = new NamedXContentRegistry( - Stream.concat( - ExecutableSection.DEFAULT_EXECUTABLE_CONTEXTS.stream().filter(entry -> entry.name.getPreferredName().equals("do") == false), - Stream.of( - new NamedXContentRegistry.Entry( - ExecutableSection.class, - new ParseField("do"), - DoSection::parseWithLegacyNodeSelectorSupport - ) - ) - ).toList() - ); - return createParameters(executableSectionRegistry, null); - } - /** * Create parameters for this parameterized test. Uses the * {@link ExecutableSection#XCONTENT_REGISTRY list} of executable sections diff --git a/test/yaml-rest-runner/src/main/java/org/elasticsearch/test/rest/yaml/section/DoSection.java b/test/yaml-rest-runner/src/main/java/org/elasticsearch/test/rest/yaml/section/DoSection.java index 627554f6b261d..5a212e5b1ec58 100644 --- a/test/yaml-rest-runner/src/main/java/org/elasticsearch/test/rest/yaml/section/DoSection.java +++ b/test/yaml-rest-runner/src/main/java/org/elasticsearch/test/rest/yaml/section/DoSection.java @@ -19,7 +19,6 @@ import org.elasticsearch.common.Strings; import org.elasticsearch.common.logging.HeaderWarning; import org.elasticsearch.core.Tuple; -import org.elasticsearch.core.UpdateForV9; import org.elasticsearch.index.mapper.SourceFieldMapper; import org.elasticsearch.rest.action.admin.indices.RestPutIndexTemplateAction; import org.elasticsearch.test.rest.yaml.ClientYamlTestExecutionContext; @@ -84,16 +83,6 @@ */ public class DoSection implements ExecutableSection { public static DoSection parse(XContentParser parser) throws IOException { - return parse(parser, false); - } - - @UpdateForV9(owner = UpdateForV9.Owner.CORE_INFRA) - @Deprecated - public static DoSection parseWithLegacyNodeSelectorSupport(XContentParser parser) throws IOException { - return parse(parser, true); - } - - private static DoSection parse(XContentParser parser, boolean enableLegacyNodeSelectorSupport) throws IOException { String currentFieldName = null; XContentParser.Token token; @@ -183,7 +172,7 @@ private static DoSection parse(XContentParser parser, boolean enableLegacyNodeSe if (token == XContentParser.Token.FIELD_NAME) { selectorName = parser.currentName(); } else { - NodeSelector newSelector = buildNodeSelector(selectorName, parser, enableLegacyNodeSelectorSupport); + NodeSelector newSelector = buildNodeSelector(selectorName, parser); nodeSelector = nodeSelector == NodeSelector.ANY ? newSelector : new ComposeNodeSelector(nodeSelector, newSelector); @@ -604,11 +593,10 @@ private String formatStatusCodeMessage(ClientYamlTestResponse restTestResponse, ) ); - private static NodeSelector buildNodeSelector(String name, XContentParser parser, boolean enableLegacyVersionSupport) - throws IOException { + private static NodeSelector buildNodeSelector(String name, XContentParser parser) throws IOException { return switch (name) { case "attribute" -> parseAttributeValuesSelector(parser); - case "version" -> parseVersionSelector(parser, enableLegacyVersionSupport); + case "version" -> parseVersionSelector(parser); default -> throw new XContentParseException(parser.getTokenLocation(), "unknown node_selector [" + name + "]"); }; } @@ -673,7 +661,7 @@ private static boolean matchWithRange( } } - private static NodeSelector parseVersionSelector(XContentParser parser, boolean enableLegacyVersionSupport) throws IOException { + private static NodeSelector parseVersionSelector(XContentParser parser) throws IOException { if (false == parser.currentToken().isValue()) { throw new XContentParseException(parser.getTokenLocation(), "expected [version] to be a value"); } @@ -687,16 +675,10 @@ private static NodeSelector parseVersionSelector(XContentParser parser, boolean nodeMatcher = nodeVersion -> Build.current().version().equals(nodeVersion) == false; versionSelectorString = "version is not current (original)"; } else { - if (enableLegacyVersionSupport) { - var acceptedVersionRange = VersionRange.parseVersionRanges(parser.text()); - nodeMatcher = nodeVersion -> matchWithRange(nodeVersion, acceptedVersionRange, parser.getTokenLocation()); - versionSelectorString = "version ranges " + acceptedVersionRange; - } else { - throw new XContentParseException( - parser.getTokenLocation(), - "unknown version selector [" + parser.text() + "]. Only [current] and [original] are allowed." - ); - } + throw new XContentParseException( + parser.getTokenLocation(), + "unknown version selector [" + parser.text() + "]. Only [current] and [original] are allowed." + ); } return new NodeSelector() { diff --git a/test/yaml-rest-runner/src/main/java/org/elasticsearch/test/rest/yaml/section/PrerequisiteSection.java b/test/yaml-rest-runner/src/main/java/org/elasticsearch/test/rest/yaml/section/PrerequisiteSection.java index bbbf73d74e4ca..ef18a7852840b 100644 --- a/test/yaml-rest-runner/src/main/java/org/elasticsearch/test/rest/yaml/section/PrerequisiteSection.java +++ b/test/yaml-rest-runner/src/main/java/org/elasticsearch/test/rest/yaml/section/PrerequisiteSection.java @@ -12,7 +12,6 @@ import org.elasticsearch.common.Strings; import org.elasticsearch.common.util.set.Sets; import org.elasticsearch.core.CheckedFunction; -import org.elasticsearch.core.UpdateForV9; import org.elasticsearch.test.rest.yaml.ClientYamlTestExecutionContext; import org.elasticsearch.test.rest.yaml.Features; import org.elasticsearch.xcontent.XContentLocation; @@ -305,7 +304,6 @@ static void parseSkipSection(XContentParser parser, PrerequisiteSectionBuilder b boolean valid = false; if (parser.currentToken().isValue()) { valid = switch (parser.currentName()) { - case "version" -> parseRestCompatVersion(parser, builder); case "reason" -> parseString(parser, builder::setSkipReason); case "features" -> parseString(parser, f -> parseFeatureField(f, builder)); case "os" -> parseString(parser, builder::skipIfOs); @@ -328,17 +326,6 @@ static void parseSkipSection(XContentParser parser, PrerequisiteSectionBuilder b parser.nextToken(); } - @UpdateForV9(owner = UpdateForV9.Owner.CORE_INFRA) - private static boolean parseRestCompatVersion(XContentParser parser, PrerequisiteSectionBuilder builder) throws IOException { - // allow skip version only for v7 REST compatibility tests, to be removed for V9 - if ("true".equals(System.getProperty("tests.restCompat"))) return parseString(parser, builder::skipIfVersion); - throw new IllegalArgumentException( - "Skipping by version is no longer supported, please skip based on cluster features. Please check the docs: \n" - + "https://github.com/elastic/elasticsearch/tree/main" - + "/rest-api-spec/src/yamlRestTest/resources/rest-api-spec/test#skipping-tests" - ); - } - private static void throwUnexpectedField(String section, XContentParser parser) throws IOException { throw new ParsingException( parser.getTokenLocation(), diff --git a/test/yaml-rest-runner/src/test/java/org/elasticsearch/test/rest/yaml/section/DoSectionTests.java b/test/yaml-rest-runner/src/test/java/org/elasticsearch/test/rest/yaml/section/DoSectionTests.java index ee8d75b4c034b..465ff7c73e74b 100644 --- a/test/yaml-rest-runner/src/test/java/org/elasticsearch/test/rest/yaml/section/DoSectionTests.java +++ b/test/yaml-rest-runner/src/test/java/org/elasticsearch/test/rest/yaml/section/DoSectionTests.java @@ -16,9 +16,6 @@ import org.elasticsearch.common.ParsingException; import org.elasticsearch.common.logging.HeaderWarning; import org.elasticsearch.core.Strings; -import org.elasticsearch.core.UpdateForV9; -import org.elasticsearch.test.rest.yaml.ClientYamlTestExecutionContext; -import org.elasticsearch.test.rest.yaml.ClientYamlTestResponse; import org.elasticsearch.xcontent.XContentLocation; import org.elasticsearch.xcontent.XContentParseException; import org.elasticsearch.xcontent.XContentParser; @@ -31,11 +28,9 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.regex.Pattern; import static java.util.Collections.emptyList; -import static java.util.Collections.emptyMap; import static java.util.Collections.singletonList; import static java.util.Collections.singletonMap; import static org.hamcrest.CoreMatchers.equalTo; @@ -43,9 +38,6 @@ import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.notNullValue; import static org.hamcrest.Matchers.nullValue; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; public class DoSectionTests extends AbstractClientYamlTestFragmentParserTestCase { @@ -580,57 +572,6 @@ public void testParseDoSectionAllowedWarnings() throws Exception { assertThat(e.getMessage(), equalTo("the warning [foo] was both allowed and expected")); } - @UpdateForV9(owner = UpdateForV9.Owner.CORE_INFRA) // remove - public void testLegacyNodeSelectorByVersionRange() throws IOException { - parser = createParser(YamlXContent.yamlXContent, """ - node_selector: - version: 5.2.0-6.0.0 - indices.get_field_mapping: - index: test_index"""); - - DoSection doSection = DoSection.parseWithLegacyNodeSelectorSupport(parser); - assertNotSame(NodeSelector.ANY, doSection.getApiCallSection().getNodeSelector()); - Node v170 = nodeWithVersion("1.7.0"); - Node v521 = nodeWithVersion("5.2.1"); - Node v550 = nodeWithVersion("5.5.0"); - Node v612 = nodeWithVersion("6.1.2"); - List nodes = new ArrayList<>(); - nodes.add(v170); - nodes.add(v521); - nodes.add(v550); - nodes.add(v612); - doSection.getApiCallSection().getNodeSelector().select(nodes); - assertEquals(Arrays.asList(v521, v550), nodes); - ClientYamlTestExecutionContext context = mock(ClientYamlTestExecutionContext.class); - ClientYamlTestResponse mockResponse = mock(ClientYamlTestResponse.class); - when( - context.callApi( - "indices.get_field_mapping", - singletonMap("index", "test_index"), - emptyList(), - emptyMap(), - doSection.getApiCallSection().getNodeSelector() - ) - ).thenReturn(mockResponse); - when(context.nodesVersions()).thenReturn(Set.of(randomAlphaOfLength(10))); - when(mockResponse.getHeaders("X-elastic-product")).thenReturn(List.of("Elasticsearch")); - doSection.execute(context); - verify(context).callApi( - "indices.get_field_mapping", - singletonMap("index", "test_index"), - emptyList(), - emptyMap(), - doSection.getApiCallSection().getNodeSelector() - ); - - { - List badNodes = new ArrayList<>(); - badNodes.add(new Node(new HttpHost("dummy"))); - Exception e = expectThrows(IllegalStateException.class, () -> doSection.getApiCallSection().getNodeSelector().select(badNodes)); - assertEquals("expected [version] metadata to be set but got [host=http://dummy]", e.getMessage()); - } - } - public void testNodeSelectorByVersionRangeFails() throws IOException { parser = createParser(YamlXContent.yamlXContent, """ node_selector: From ee63638ef8e06ae2773f39b476df031b6fef527a Mon Sep 17 00:00:00 2001 From: Tanguy Leroux Date: Mon, 6 Jan 2025 16:55:18 +0100 Subject: [PATCH 03/35] Add random index settings and mappings updates in N-2 BWC tests (#119529) Relates ES-10434 --- .../AbstractIndexCompatibilityTestCase.java | 46 +++++++++++++++++-- ...earchableSnapshotIndexCompatibilityIT.java | 9 ++++ ...earchableSnapshotIndexCompatibilityIT.java | 6 +++ 3 files changed, 58 insertions(+), 3 deletions(-) diff --git a/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/AbstractIndexCompatibilityTestCase.java b/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/AbstractIndexCompatibilityTestCase.java index 68375cec5171d..8047255a33be6 100644 --- a/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/AbstractIndexCompatibilityTestCase.java +++ b/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/AbstractIndexCompatibilityTestCase.java @@ -9,14 +9,20 @@ package org.elasticsearch.lucene; +import org.apache.http.entity.ContentType; +import org.apache.http.entity.InputStreamEntity; import org.elasticsearch.client.Request; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.core.Strings; +import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.mapper.MapperService; +import org.elasticsearch.test.XContentTestUtils; import org.elasticsearch.test.cluster.ElasticsearchCluster; import org.elasticsearch.test.cluster.local.LocalClusterConfigProvider; import org.elasticsearch.test.cluster.local.distribution.DistributionType; import org.elasticsearch.test.cluster.util.Version; import org.elasticsearch.test.rest.ESRestTestCase; +import org.elasticsearch.xcontent.XContentType; import org.junit.After; import org.junit.Before; import org.junit.ClassRule; @@ -153,9 +159,9 @@ protected static void indexDocs(String indexName, int numDocs) throws Exception var request = new Request("POST", "/_bulk"); var docs = new StringBuilder(); IntStream.range(0, numDocs).forEach(n -> docs.append(Strings.format(""" - {"index":{"_id":"%s","_index":"%s"}} - {"test":"test"} - """, n, indexName))); + {"index":{"_index":"%s"}} + {"field_0":"%s","field_1":%d,"field_2":"%s"} + """, indexName, Integer.toString(n), n, randomFrom(Locale.getAvailableLocales()).getDisplayName()))); request.setJsonEntity(docs.toString()); var response = assertOK(client().performRequest(request)); assertThat(entityAsMap(response).get("errors"), allOf(notNullValue(), is(false))); @@ -192,4 +198,38 @@ protected static void restoreIndex(String repository, String snapshot, String in assertThat(responseBody.evaluate("snapshot.shards.total"), equalTo((int) responseBody.evaluate("snapshot.shards.failed"))); assertThat(responseBody.evaluate("snapshot.shards.successful"), equalTo(0)); } + + protected static void updateRandomIndexSettings(String indexName) throws IOException { + final var settings = Settings.builder(); + int updates = randomIntBetween(1, 3); + for (int i = 0; i < updates; i++) { + switch (i) { + case 0 -> settings.putList(IndexSettings.DEFAULT_FIELD_SETTING.getKey(), "field_" + randomInt(2)); + case 1 -> settings.put(IndexSettings.MAX_INNER_RESULT_WINDOW_SETTING.getKey(), randomIntBetween(1, 100)); + case 2 -> settings.put(MapperService.INDEX_MAPPING_TOTAL_FIELDS_LIMIT_SETTING.getKey(), randomLongBetween(0L, 1000L)); + case 3 -> settings.put(IndexSettings.MAX_SLICES_PER_SCROLL.getKey(), randomIntBetween(1, 1024)); + default -> throw new IllegalStateException(); + } + } + updateIndexSettings(indexName, settings); + } + + protected static void updateRandomMappings(String indexName) throws IOException { + final var runtime = new HashMap<>(); + runtime.put("field_" + randomInt(2), Map.of("type", "keyword")); + final var properties = new HashMap<>(); + properties.put(randomIdentifier(), Map.of("type", "long")); + var body = XContentTestUtils.convertToXContent(Map.of("runtime", runtime, "properties", properties), XContentType.JSON); + var request = new Request("PUT", indexName + "/_mappings"); + request.setEntity( + new InputStreamEntity( + body.streamInput(), + body.length(), + + ContentType.create(XContentType.JSON.mediaTypeWithoutParameters()) + ) + ); + assertOK(client().performRequest(request)); + } + } diff --git a/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/FullClusterRestartSearchableSnapshotIndexCompatibilityIT.java b/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/FullClusterRestartSearchableSnapshotIndexCompatibilityIT.java index 4d59badcba7ef..90171caa36c26 100644 --- a/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/FullClusterRestartSearchableSnapshotIndexCompatibilityIT.java +++ b/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/FullClusterRestartSearchableSnapshotIndexCompatibilityIT.java @@ -82,6 +82,9 @@ public void testSearchableSnapshot() throws Exception { assertThat(indexVersion(mountedIndex), equalTo(VERSION_MINUS_2)); assertDocCount(client(), mountedIndex, numDocs); + updateRandomIndexSettings(mountedIndex); + updateRandomMappings(mountedIndex); + logger.debug("--> adding replica to test peer-recovery"); updateIndexSettings(mountedIndex, Settings.builder().put(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, 1)); ensureGreen(mountedIndex); @@ -130,6 +133,9 @@ public void testSearchableSnapshotUpgrade() throws Exception { ensureGreen(mountedIndex); + updateRandomIndexSettings(mountedIndex); + updateRandomMappings(mountedIndex); + assertThat(indexVersion(mountedIndex), equalTo(VERSION_MINUS_2)); assertDocCount(client(), mountedIndex, numDocs); return; @@ -141,6 +147,9 @@ public void testSearchableSnapshotUpgrade() throws Exception { assertThat(indexVersion(mountedIndex), equalTo(VERSION_MINUS_2)); assertDocCount(client(), mountedIndex, numDocs); + updateRandomIndexSettings(mountedIndex); + updateRandomMappings(mountedIndex); + logger.debug("--> adding replica to test peer-recovery"); updateIndexSettings(mountedIndex, Settings.builder().put(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, 1)); ensureGreen(mountedIndex); diff --git a/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/RollingUpgradeSearchableSnapshotIndexCompatibilityIT.java b/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/RollingUpgradeSearchableSnapshotIndexCompatibilityIT.java index 89c159c15f708..0851d8f7cc726 100644 --- a/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/RollingUpgradeSearchableSnapshotIndexCompatibilityIT.java +++ b/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/RollingUpgradeSearchableSnapshotIndexCompatibilityIT.java @@ -76,6 +76,9 @@ public void testMountSearchableSnapshot() throws Exception { ensureGreen(mountedIndex); + updateRandomIndexSettings(mountedIndex); + updateRandomMappings(mountedIndex); + assertThat(indexVersion(mountedIndex), equalTo(VERSION_MINUS_2)); assertDocCount(client(), mountedIndex, numDocs); @@ -134,6 +137,9 @@ public void testSearchableSnapshotUpgrade() throws Exception { ensureGreen(mountedIndex); + updateRandomIndexSettings(mountedIndex); + updateRandomMappings(mountedIndex); + assertThat(indexVersion(mountedIndex), equalTo(VERSION_MINUS_2)); assertDocCount(client(), mountedIndex, numDocs); } From ee12925a1c8bb410cf40536d6d4fdb82d69ef310 Mon Sep 17 00:00:00 2001 From: Armin Braun Date: Mon, 6 Jan 2025 16:57:45 +0100 Subject: [PATCH 04/35] Some cleanups to OperationRouting (#119440) Two small cleanups that remove duplication and dead-code: 1. The shardId method can be made `static`, it's only non-static use in mocking was unnecessary and could just be deleted 2. Filtering for searchable shards is the same logic now for stateful and stateless. We also only use it when building a filtered `PlainShardIterator` so it might as well live there to remove some duplication. --- .../recovery/RecoveryWhileUnderLoadIT.java | 7 +++--- .../action/fieldcaps/RequestDispatcher.java | 2 +- .../action/get/TransportGetAction.java | 3 +-- .../action/get/TransportMultiGetAction.java | 3 ++- .../get/TransportShardMultiGetAction.java | 3 +-- .../TransportMultiTermVectorsAction.java | 9 +++++-- .../TransportTermVectorsAction.java | 21 ++++++++++++---- .../cluster/routing/OperationRouting.java | 25 ++----------------- .../cluster/routing/PlainShardIterator.java | 15 +++++++++++ .../get/TransportMultiGetActionTests.java | 6 ----- .../TransportMultiTermVectorsActionTests.java | 6 ----- 11 files changed, 48 insertions(+), 52 deletions(-) diff --git a/server/src/internalClusterTest/java/org/elasticsearch/recovery/RecoveryWhileUnderLoadIT.java b/server/src/internalClusterTest/java/org/elasticsearch/recovery/RecoveryWhileUnderLoadIT.java index 77c4f8a26f478..43bca39c02ce5 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/recovery/RecoveryWhileUnderLoadIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/recovery/RecoveryWhileUnderLoadIT.java @@ -16,8 +16,8 @@ import org.elasticsearch.action.support.broadcast.BroadcastResponse; import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.cluster.routing.IndexShardRoutingTable; +import org.elasticsearch.cluster.routing.OperationRouting; import org.elasticsearch.cluster.routing.ShardRouting; -import org.elasticsearch.cluster.service.ClusterService; import org.elasticsearch.common.Priority; import org.elasticsearch.common.settings.Setting; import org.elasticsearch.common.util.CollectionUtils; @@ -365,11 +365,10 @@ private void iterateAssertCount(final int numberOfShards, final int iterations, ); } - ClusterService clusterService = clusterService(); - final ClusterState state = clusterService.state(); + final ClusterState state = clusterService().state(); for (int shard = 0; shard < numberOfShards; shard++) { for (String id : ids) { - ShardId docShard = clusterService.operationRouting().shardId(state, "test", id, null); + ShardId docShard = OperationRouting.shardId(state, "test", id, null); if (docShard.id() == shard) { final IndexShardRoutingTable indexShardRoutingTable = state.routingTable().shardRoutingTable("test", shard); for (int copy = 0; copy < indexShardRoutingTable.size(); copy++) { diff --git a/server/src/main/java/org/elasticsearch/action/fieldcaps/RequestDispatcher.java b/server/src/main/java/org/elasticsearch/action/fieldcaps/RequestDispatcher.java index 802f5d196569a..fce925d868532 100644 --- a/server/src/main/java/org/elasticsearch/action/fieldcaps/RequestDispatcher.java +++ b/server/src/main/java/org/elasticsearch/action/fieldcaps/RequestDispatcher.java @@ -95,7 +95,7 @@ final class RequestDispatcher { for (String index : indices) { final GroupShardsIterator shardIts; try { - shardIts = clusterService.operationRouting().searchShards(clusterState, new String[] { index }, null, null, null, null); + shardIts = clusterService.operationRouting().searchShards(clusterState, new String[] { index }, null, null); } catch (Exception e) { onIndexFailure.accept(index, e); continue; diff --git a/server/src/main/java/org/elasticsearch/action/get/TransportGetAction.java b/server/src/main/java/org/elasticsearch/action/get/TransportGetAction.java index a2c7c8664e81a..29b926598ac32 100644 --- a/server/src/main/java/org/elasticsearch/action/get/TransportGetAction.java +++ b/server/src/main/java/org/elasticsearch/action/get/TransportGetAction.java @@ -30,7 +30,6 @@ import org.elasticsearch.cluster.node.DiscoveryNode; import org.elasticsearch.cluster.routing.PlainShardIterator; import org.elasticsearch.cluster.routing.ShardIterator; -import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.service.ClusterService; import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.core.TimeValue; @@ -109,7 +108,7 @@ protected ShardIterator shards(ClusterState state, InternalRequest request) { if (iterator == null) { return null; } - return new PlainShardIterator(iterator.shardId(), iterator.getShardRoutings().stream().filter(ShardRouting::isSearchable).toList()); + return PlainShardIterator.allSearchableShards(iterator); } @Override diff --git a/server/src/main/java/org/elasticsearch/action/get/TransportMultiGetAction.java b/server/src/main/java/org/elasticsearch/action/get/TransportMultiGetAction.java index 01dc705d7146b..e5087a790a292 100644 --- a/server/src/main/java/org/elasticsearch/action/get/TransportMultiGetAction.java +++ b/server/src/main/java/org/elasticsearch/action/get/TransportMultiGetAction.java @@ -19,6 +19,7 @@ import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.cluster.block.ClusterBlockLevel; import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver; +import org.elasticsearch.cluster.routing.OperationRouting; import org.elasticsearch.cluster.service.ClusterService; import org.elasticsearch.common.util.concurrent.AtomicArray; import org.elasticsearch.common.util.concurrent.EsExecutors; @@ -81,7 +82,7 @@ protected void doExecute(Task task, final MultiGetRequest request, final ActionL lastResolvedIndex = Tuple.tuple(item.index(), concreteSingleIndex); } item.routing(clusterState.metadata().resolveIndexRouting(item.routing(), item.index())); - shardId = clusterService.operationRouting().shardId(clusterState, concreteSingleIndex, item.id(), item.routing()); + shardId = OperationRouting.shardId(clusterState, concreteSingleIndex, item.id(), item.routing()); } catch (RoutingMissingException e) { responses.set(i, newItemFailure(e.getIndex().getName(), e.getId(), e)); continue; diff --git a/server/src/main/java/org/elasticsearch/action/get/TransportShardMultiGetAction.java b/server/src/main/java/org/elasticsearch/action/get/TransportShardMultiGetAction.java index 0fa770df8e4ef..d9a04acc0466e 100644 --- a/server/src/main/java/org/elasticsearch/action/get/TransportShardMultiGetAction.java +++ b/server/src/main/java/org/elasticsearch/action/get/TransportShardMultiGetAction.java @@ -30,7 +30,6 @@ import org.elasticsearch.cluster.node.DiscoveryNode; import org.elasticsearch.cluster.routing.PlainShardIterator; import org.elasticsearch.cluster.routing.ShardIterator; -import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.service.ClusterService; import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.core.TimeValue; @@ -113,7 +112,7 @@ protected ShardIterator shards(ClusterState state, InternalRequest request) { if (iterator == null) { return null; } - return new PlainShardIterator(iterator.shardId(), iterator.getShardRoutings().stream().filter(ShardRouting::isSearchable).toList()); + return PlainShardIterator.allSearchableShards(iterator); } @Override diff --git a/server/src/main/java/org/elasticsearch/action/termvectors/TransportMultiTermVectorsAction.java b/server/src/main/java/org/elasticsearch/action/termvectors/TransportMultiTermVectorsAction.java index c8b53e0185606..b3230fae9834a 100644 --- a/server/src/main/java/org/elasticsearch/action/termvectors/TransportMultiTermVectorsAction.java +++ b/server/src/main/java/org/elasticsearch/action/termvectors/TransportMultiTermVectorsAction.java @@ -17,6 +17,7 @@ import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.cluster.block.ClusterBlockLevel; import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver; +import org.elasticsearch.cluster.routing.OperationRouting; import org.elasticsearch.cluster.service.ClusterService; import org.elasticsearch.common.util.concurrent.AtomicArray; import org.elasticsearch.common.util.concurrent.EsExecutors; @@ -72,8 +73,12 @@ protected void doExecute(Task task, final MultiTermVectorsRequest request, final clusterState.metadata().resolveIndexRouting(termVectorsRequest.routing(), termVectorsRequest.index()) ); String concreteSingleIndex = indexNameExpressionResolver.concreteSingleIndex(clusterState, termVectorsRequest).getName(); - shardId = clusterService.operationRouting() - .shardId(clusterState, concreteSingleIndex, termVectorsRequest.id(), termVectorsRequest.routing()); + shardId = OperationRouting.shardId( + clusterState, + concreteSingleIndex, + termVectorsRequest.id(), + termVectorsRequest.routing() + ); } catch (RoutingMissingException e) { responses.set( i, diff --git a/server/src/main/java/org/elasticsearch/action/termvectors/TransportTermVectorsAction.java b/server/src/main/java/org/elasticsearch/action/termvectors/TransportTermVectorsAction.java index 7567577c78452..02479a9f8d143 100644 --- a/server/src/main/java/org/elasticsearch/action/termvectors/TransportTermVectorsAction.java +++ b/server/src/main/java/org/elasticsearch/action/termvectors/TransportTermVectorsAction.java @@ -62,16 +62,27 @@ public TransportTermVectorsAction( @Override protected ShardIterator shards(ClusterState state, InternalRequest request) { + final var operationRouting = clusterService.operationRouting(); if (request.request().doc() != null && request.request().routing() == null) { // artificial document without routing specified, ignore its "id" and use either random shard or according to preference - GroupShardsIterator groupShardsIter = clusterService.operationRouting() - .searchShards(state, new String[] { request.concreteIndex() }, null, request.request().preference()); + GroupShardsIterator groupShardsIter = operationRouting.searchShards( + state, + new String[] { request.concreteIndex() }, + null, + request.request().preference() + ); return groupShardsIter.iterator().next(); } - ShardIterator shards = clusterService.operationRouting() - .getShards(state, request.concreteIndex(), request.request().id(), request.request().routing(), request.request().preference()); - return clusterService.operationRouting().useOnlyPromotableShardsForStateless(shards); + return operationRouting.useOnlyPromotableShardsForStateless( + operationRouting.getShards( + state, + request.concreteIndex(), + request.request().id(), + request.request().routing(), + request.request().preference() + ) + ); } @Override diff --git a/server/src/main/java/org/elasticsearch/cluster/routing/OperationRouting.java b/server/src/main/java/org/elasticsearch/cluster/routing/OperationRouting.java index 5e2dbf1c5df5d..49da00eae8a5a 100644 --- a/server/src/main/java/org/elasticsearch/cluster/routing/OperationRouting.java +++ b/server/src/main/java/org/elasticsearch/cluster/routing/OperationRouting.java @@ -27,7 +27,6 @@ import java.util.Arrays; import java.util.Collections; import java.util.HashSet; -import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; @@ -125,32 +124,12 @@ public GroupShardsIterator searchShards( nodeCounts ); if (iterator != null) { - final List shardsThatCanHandleSearches; - if (isStateless) { - shardsThatCanHandleSearches = statelessShardsThatHandleSearches(clusterState, iterator); - } else { - shardsThatCanHandleSearches = statefulShardsThatHandleSearches(iterator); - } - set.add(new PlainShardIterator(iterator.shardId(), shardsThatCanHandleSearches)); + set.add(PlainShardIterator.allSearchableShards(iterator)); } } return GroupShardsIterator.sortAndCreate(new ArrayList<>(set)); } - private static List statefulShardsThatHandleSearches(ShardIterator iterator) { - final List shardsThatCanHandleSearches = new ArrayList<>(iterator.size()); - for (ShardRouting shardRouting : iterator) { - if (shardRouting.isSearchable()) { - shardsThatCanHandleSearches.add(shardRouting); - } - } - return shardsThatCanHandleSearches; - } - - private static List statelessShardsThatHandleSearches(ClusterState clusterState, ShardIterator iterator) { - return iterator.getShardRoutings().stream().filter(ShardRouting::isSearchable).toList(); - } - public static ShardIterator getShards(ClusterState clusterState, ShardId shardId) { final IndexShardRoutingTable shard = clusterState.routingTable().shardRoutingTable(shardId); return shard.activeInitializingShardsRandomIt(); @@ -297,7 +276,7 @@ private static IndexMetadata indexMetadata(ClusterState clusterState, String ind return indexMetadata; } - public ShardId shardId(ClusterState clusterState, String index, String id, @Nullable String routing) { + public static ShardId shardId(ClusterState clusterState, String index, String id, @Nullable String routing) { IndexMetadata indexMetadata = indexMetadata(clusterState, index); return new ShardId(indexMetadata.getIndex(), IndexRouting.fromIndexMetadata(indexMetadata).getShard(id, routing)); } diff --git a/server/src/main/java/org/elasticsearch/cluster/routing/PlainShardIterator.java b/server/src/main/java/org/elasticsearch/cluster/routing/PlainShardIterator.java index b49f37c7440dd..a429cc040de3c 100644 --- a/server/src/main/java/org/elasticsearch/cluster/routing/PlainShardIterator.java +++ b/server/src/main/java/org/elasticsearch/cluster/routing/PlainShardIterator.java @@ -11,6 +11,7 @@ import org.elasticsearch.index.shard.ShardId; +import java.util.ArrayList; import java.util.List; /** @@ -21,6 +22,20 @@ public class PlainShardIterator extends PlainShardsIterator implements ShardIter private final ShardId shardId; + public static PlainShardIterator allSearchableShards(ShardIterator shardIterator) { + return new PlainShardIterator(shardIterator.shardId(), shardsThatCanHandleSearches(shardIterator)); + } + + private static List shardsThatCanHandleSearches(ShardIterator iterator) { + final List shardsThatCanHandleSearches = new ArrayList<>(iterator.size()); + for (ShardRouting shardRouting : iterator) { + if (shardRouting.isSearchable()) { + shardsThatCanHandleSearches.add(shardRouting); + } + } + return shardsThatCanHandleSearches; + } + /** * Creates a {@link PlainShardIterator} instance that iterates over a subset of the given shards * this the a given shardId. diff --git a/server/src/test/java/org/elasticsearch/action/get/TransportMultiGetActionTests.java b/server/src/test/java/org/elasticsearch/action/get/TransportMultiGetActionTests.java index 667d6686767fa..dad392970b6a1 100644 --- a/server/src/test/java/org/elasticsearch/action/get/TransportMultiGetActionTests.java +++ b/server/src/test/java/org/elasticsearch/action/get/TransportMultiGetActionTests.java @@ -145,15 +145,9 @@ public static void beforeClass() throws Exception { when( operationRouting.getShards(eq(clusterState), eq(index1.getName()), anyString(), nullable(String.class), nullable(String.class)) ).thenReturn(index1ShardIterator); - when(operationRouting.shardId(eq(clusterState), eq(index1.getName()), nullable(String.class), nullable(String.class))).thenReturn( - new ShardId(index1, randomInt()) - ); when( operationRouting.getShards(eq(clusterState), eq(index2.getName()), anyString(), nullable(String.class), nullable(String.class)) ).thenReturn(index2ShardIterator); - when(operationRouting.shardId(eq(clusterState), eq(index2.getName()), nullable(String.class), nullable(String.class))).thenReturn( - new ShardId(index2, randomInt()) - ); clusterService = mock(ClusterService.class); when(clusterService.localNode()).thenReturn(transportService.getLocalNode()); diff --git a/server/src/test/java/org/elasticsearch/action/termvectors/TransportMultiTermVectorsActionTests.java b/server/src/test/java/org/elasticsearch/action/termvectors/TransportMultiTermVectorsActionTests.java index df2b716ab691c..4655d2e47bac5 100644 --- a/server/src/test/java/org/elasticsearch/action/termvectors/TransportMultiTermVectorsActionTests.java +++ b/server/src/test/java/org/elasticsearch/action/termvectors/TransportMultiTermVectorsActionTests.java @@ -146,15 +146,9 @@ public static void beforeClass() throws Exception { when( operationRouting.getShards(eq(clusterState), eq(index1.getName()), anyString(), nullable(String.class), nullable(String.class)) ).thenReturn(index1ShardIterator); - when(operationRouting.shardId(eq(clusterState), eq(index1.getName()), nullable(String.class), nullable(String.class))).thenReturn( - new ShardId(index1, randomInt()) - ); when( operationRouting.getShards(eq(clusterState), eq(index2.getName()), anyString(), nullable(String.class), nullable(String.class)) ).thenReturn(index2ShardIterator); - when(operationRouting.shardId(eq(clusterState), eq(index2.getName()), nullable(String.class), nullable(String.class))).thenReturn( - new ShardId(index2, randomInt()) - ); clusterService = mock(ClusterService.class); when(clusterService.localNode()).thenReturn(transportService.getLocalNode()); From f1ebbfce93718b1b3ed3d8e06db1426943e3446c Mon Sep 17 00:00:00 2001 From: Armin Braun Date: Mon, 6 Jan 2025 16:58:12 +0100 Subject: [PATCH 05/35] A few small speedup in authz hot path for fieldcaps (#119558) A few obvious things I noticed looking at profiling (right now security is literally 10%+ of large fieldcaps call). * streams are needlessly expensive * using an unnecessary atomic has unpredictable overhead --- .../authz/permission/IndicesPermission.java | 15 ++++++++------- .../xpack/security/authz/RBACEngine.java | 7 ++++++- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/authz/permission/IndicesPermission.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/authz/permission/IndicesPermission.java index 558f8e6f22ac1..f4a101eabd38a 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/authz/permission/IndicesPermission.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/authz/permission/IndicesPermission.java @@ -39,7 +39,6 @@ import java.util.Objects; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.atomic.AtomicInteger; import java.util.function.BiPredicate; import java.util.function.Predicate; import java.util.function.Supplier; @@ -443,25 +442,27 @@ public IndicesAccessControl authorize( FieldPermissionsCache fieldPermissionsCache ) { // Short circuit if the indicesPermission allows all access to every index - if (Arrays.stream(groups).anyMatch(Group::isTotal)) { - return IndicesAccessControl.allowAll(); + for (Group group : groups) { + if (group.isTotal()) { + return IndicesAccessControl.allowAll(); + } } final Map resources = Maps.newMapWithExpectedSize(requestedIndicesOrAliases.size()); - final AtomicInteger totalResourceCountHolder = new AtomicInteger(0); + int totalResourceCount = 0; for (String indexOrAlias : requestedIndicesOrAliases) { final IndexResource resource = new IndexResource(indexOrAlias, lookup.get(indexOrAlias)); resources.put(resource.name, resource); - totalResourceCountHolder.getAndAdd(resource.size()); + totalResourceCount += resource.size(); } final boolean overallGranted = isActionGranted(action, resources); - + final int finalTotalResourceCount = totalResourceCount; final Supplier> indexPermissions = () -> buildIndicesAccessControl( action, resources, - totalResourceCountHolder.get(), + finalTotalResourceCount, fieldPermissionsCache ); diff --git a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authz/RBACEngine.java b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authz/RBACEngine.java index 2353d710059ff..df6189351162f 100644 --- a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authz/RBACEngine.java +++ b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authz/RBACEngine.java @@ -528,7 +528,12 @@ private static boolean isChildActionAuthorizedByParentOnLocalNode(RequestInfo re + Arrays.stream(indices).filter(Regex::isSimpleMatchPattern).toList(); // Check if the parent context has already successfully authorized access to the child's indices - return Arrays.stream(indices).allMatch(indicesAccessControl::hasIndexPermissions); + for (String index : indices) { + if (indicesAccessControl.hasIndexPermissions(index) == false) { + return false; + } + } + return true; } @Override From f5cffbf300ab5519fcb0b73c2ad5ba63980159f0 Mon Sep 17 00:00:00 2001 From: Dan Rubinstein Date: Mon, 6 Jan 2025 11:00:16 -0500 Subject: [PATCH 06/35] Deprecating data_frame_transforms roles (#117519) * Deprecating data_frame_transforms roles * Update docs/changelog/117519.yaml * Update changelog * Removing deprecation warning * Cleaning up unused role retrieval function * Update docs/changelog/117519.yaml * Update changelog with breaking change details * Revert ClusterPrivilegeResolver * Remove Deprecated Transform Role permissions * Update docs/changelog/117519.yaml Co-authored-by: Nikolaj Volgushev * Revert "Remove Deprecated Transform Role permissions" This reverts commit 4599256dcf23b802c1256a5ad870322d56e22dba. * Revert docs, update changelog * Revert privilege tests --------- Co-authored-by: Elastic Machine Co-authored-by: Nikolaj Volgushev Co-authored-by: Pat Whelan --- docs/changelog/117519.yaml | 20 ++ .../authorization/built-in-roles.asciidoc | 12 - .../authz/store/ReservedRolesStore.java | 64 ----- .../core/transform/TransformDeprecations.java | 7 - .../transform/transforms/TransformConfig.java | 36 --- .../authz/store/ReservedRolesStoreTests.java | 242 ++++++------------ .../transforms/TransformConfigTests.java | 43 ---- 7 files changed, 97 insertions(+), 327 deletions(-) create mode 100644 docs/changelog/117519.yaml diff --git a/docs/changelog/117519.yaml b/docs/changelog/117519.yaml new file mode 100644 index 0000000000000..f228278983785 --- /dev/null +++ b/docs/changelog/117519.yaml @@ -0,0 +1,20 @@ +pr: 117519 +summary: Remove `data_frame_transforms` roles +area: Transform +type: breaking +issues: [] +breaking: + title: Remove `data_frame_transforms` roles + area: Transform + details: >- + `data_frame_transforms_admin` and `data_frame_transforms_user` were deprecated in + Elasticsearch 7 and are being removed in Elasticsearch 9. + `data_frame_transforms_admin` is now `transform_admin`. + `data_frame_transforms_user` is now `transform_user`. + Users must call the `_update` API to replace the permissions on the Transform before the + Transform can be started. + impact: >- + Transforms created with either the `data_frame_transforms_admin` or the + `data_frame_transforms_user` role will fail to start. The Transform will remain + in a `stopped` state, and its health will be red while displaying permission failures. + notable: false diff --git a/docs/reference/security/authorization/built-in-roles.asciidoc b/docs/reference/security/authorization/built-in-roles.asciidoc index 13812b915dc5e..846ab3b6f73aa 100644 --- a/docs/reference/security/authorization/built-in-roles.asciidoc +++ b/docs/reference/security/authorization/built-in-roles.asciidoc @@ -33,18 +33,6 @@ suitable for writing beats output to {es}. -- -[[built-in-roles-data-frame-transforms-admin]] `data_frame_transforms_admin` :: -Grants `manage_data_frame_transforms` cluster privileges, which enable you to -manage {transforms}. This role also includes all -{kibana-ref}/kibana-privileges.html[Kibana privileges] for the {ml-features}. -deprecated:[7.5.0,"Replaced by <>"]. - -[[built-in-roles-data-frame-transforms-user]] `data_frame_transforms_user` :: -Grants `monitor_data_frame_transforms` cluster privileges, which enable you to -use {transforms}. This role also includes all -{kibana-ref}/kibana-privileges.html[Kibana privileges] for the {ml-features}. -deprecated:[7.5.0,"Replaced by <>"]. - [[built-in-roles-editor]] `editor` :: Grants full access to all features in {kib} (including Solutions) and read-only access to data indices. diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/authz/store/ReservedRolesStore.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/authz/store/ReservedRolesStore.java index 3ab9bcc024614..3648d8a0c7daa 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/authz/store/ReservedRolesStore.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/authz/store/ReservedRolesStore.java @@ -539,70 +539,6 @@ private static Map initializeReservedRoles() { + "and roles that grant access to Kibana." ) ), - // DEPRECATED: to be removed in 9.0.0 - entry( - "data_frame_transforms_admin", - new RoleDescriptor( - "data_frame_transforms_admin", - new String[] { "manage_data_frame_transforms" }, - new RoleDescriptor.IndicesPrivileges[] { - RoleDescriptor.IndicesPrivileges.builder() - .indices( - TransformInternalIndexConstants.AUDIT_INDEX_PATTERN, - TransformInternalIndexConstants.AUDIT_INDEX_PATTERN_DEPRECATED, - TransformInternalIndexConstants.AUDIT_INDEX_READ_ALIAS - ) - .privileges("view_index_metadata", "read") - .build() }, - new RoleDescriptor.ApplicationResourcePrivileges[] { - RoleDescriptor.ApplicationResourcePrivileges.builder() - .application("kibana-*") - .resources("*") - .privileges("reserved_ml_user") - .build() }, - null, - null, - MetadataUtils.getDeprecatedReservedMetadata("Please use the [transform_admin] role instead"), - null, - null, - null, - null, - "Grants manage_data_frame_transforms cluster privileges, which enable you to manage transforms. " - + "This role also includes all Kibana privileges for the machine learning features." - ) - ), - // DEPRECATED: to be removed in 9.0.0 - entry( - "data_frame_transforms_user", - new RoleDescriptor( - "data_frame_transforms_user", - new String[] { "monitor_data_frame_transforms" }, - new RoleDescriptor.IndicesPrivileges[] { - RoleDescriptor.IndicesPrivileges.builder() - .indices( - TransformInternalIndexConstants.AUDIT_INDEX_PATTERN, - TransformInternalIndexConstants.AUDIT_INDEX_PATTERN_DEPRECATED, - TransformInternalIndexConstants.AUDIT_INDEX_READ_ALIAS - ) - .privileges("view_index_metadata", "read") - .build() }, - new RoleDescriptor.ApplicationResourcePrivileges[] { - RoleDescriptor.ApplicationResourcePrivileges.builder() - .application("kibana-*") - .resources("*") - .privileges("reserved_ml_user") - .build() }, - null, - null, - MetadataUtils.getDeprecatedReservedMetadata("Please use the [transform_user] role instead"), - null, - null, - null, - null, - "Grants monitor_data_frame_transforms cluster privileges, which enable you to use transforms. " - + "This role also includes all Kibana privileges for the machine learning features. " - ) - ), entry( "transform_admin", new RoleDescriptor( diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/TransformDeprecations.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/TransformDeprecations.java index 1de584d5593f1..79a679441de3a 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/TransformDeprecations.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/TransformDeprecations.java @@ -27,12 +27,5 @@ public class TransformDeprecations { public static final String MAX_PAGE_SEARCH_SIZE_BREAKING_CHANGES_URL = "https://ela.st/es-deprecation-7-transform-max-page-search-size"; - public static final String DATA_FRAME_TRANSFORMS_ROLES_BREAKING_CHANGES_URL = - "https://ela.st/es-deprecation-9-data-frame-transforms-roles"; - - public static final String DATA_FRAME_TRANSFORMS_ROLES_IS_DEPRECATED = "This transform configuration uses one or more obsolete roles " - + "prefixed with [data_frame_transformers_] which will be unsupported after the next upgrade. Switch to a user with the equivalent " - + "roles prefixed with [transform_] and use [/_transform/_upgrade] to upgrade all transforms to the latest roles.";; - private TransformDeprecations() {} } diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/TransformConfig.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/TransformConfig.java index 745da71539992..d84040aaf7a85 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/TransformConfig.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/TransformConfig.java @@ -24,13 +24,11 @@ import org.elasticsearch.xcontent.ToXContentObject; import org.elasticsearch.xcontent.XContentBuilder; import org.elasticsearch.xcontent.XContentParser; -import org.elasticsearch.xpack.core.ClientHelper; import org.elasticsearch.xpack.core.common.time.TimeUtils; import org.elasticsearch.xpack.core.common.validation.SourceDestValidator; import org.elasticsearch.xpack.core.common.validation.SourceDestValidator.SourceDestValidation; import org.elasticsearch.xpack.core.deprecation.DeprecationIssue; import org.elasticsearch.xpack.core.deprecation.DeprecationIssue.Level; -import org.elasticsearch.xpack.core.security.authc.support.AuthenticationContextSerializer; import org.elasticsearch.xpack.core.security.xcontent.XContentUtils; import org.elasticsearch.xpack.core.transform.TransformConfigVersion; import org.elasticsearch.xpack.core.transform.TransformDeprecations; @@ -43,7 +41,6 @@ import java.io.IOException; import java.time.Instant; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Locale; @@ -52,7 +49,6 @@ import static org.elasticsearch.xcontent.ConstructingObjectParser.constructorArg; import static org.elasticsearch.xcontent.ConstructingObjectParser.optionalConstructorArg; -import static org.elasticsearch.xpack.core.security.authc.AuthenticationField.AUTHENTICATION_KEY; /** * This class holds the configuration details of a data frame transform @@ -69,10 +65,6 @@ public final class TransformConfig implements SimpleDiffable, W public static final ParseField HEADERS = new ParseField("headers"); /** Version in which {@code FieldCapabilitiesRequest.runtime_fields} field was introduced. */ private static final TransportVersion FIELD_CAPS_RUNTIME_MAPPINGS_INTRODUCED_TRANSPORT_VERSION = TransportVersions.V_7_12_0; - private static final List DEPRECATED_DATA_FRAME_TRANSFORMS_ROLES = List.of( - "data_frame_transforms_admin", - "data_frame_transforms_user" - ); /** Specifies all the possible transform functions. */ public enum Function { @@ -413,37 +405,9 @@ public List checkForDeprecations(NamedXContentRegistry namedXC retentionPolicyConfig.checkForDeprecations(getId(), namedXContentRegistry, deprecations::add); } - var deprecatedTransformRoles = getRolesFromHeaders().stream().filter(DEPRECATED_DATA_FRAME_TRANSFORMS_ROLES::contains).toList(); - if (deprecatedTransformRoles.isEmpty() == false) { - deprecations.add( - new DeprecationIssue( - Level.CRITICAL, - "Transform [" + id + "] uses deprecated transform roles " + deprecatedTransformRoles, - TransformDeprecations.DATA_FRAME_TRANSFORMS_ROLES_BREAKING_CHANGES_URL, - TransformDeprecations.DATA_FRAME_TRANSFORMS_ROLES_IS_DEPRECATED, - false, - null - ) - ); - } - return deprecations; } - private List getRolesFromHeaders() throws IOException { - if (headers == null) { - return Collections.emptyList(); - } - - var encodedAuthenticationHeader = ClientHelper.filterSecurityHeaders(headers).getOrDefault(AUTHENTICATION_KEY, ""); - if (encodedAuthenticationHeader.isEmpty()) { - return Collections.emptyList(); - } - - var decodedAuthenticationHeader = AuthenticationContextSerializer.decode(encodedAuthenticationHeader); - return Arrays.asList(decodedAuthenticationHeader.getEffectiveSubject().getUser().roles()); - } - @Override public void writeTo(final StreamOutput out) throws IOException { out.writeString(id); diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/authz/store/ReservedRolesStoreTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/authz/store/ReservedRolesStoreTests.java index 141b9a7092337..b08dd90ae9065 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/authz/store/ReservedRolesStoreTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/authz/store/ReservedRolesStoreTests.java @@ -277,8 +277,6 @@ public void testIsReserved() { assertThat(ReservedRolesStore.isReserved("reporting_user"), is(true)); assertThat(ReservedRolesStore.isReserved("machine_learning_user"), is(true)); assertThat(ReservedRolesStore.isReserved("machine_learning_admin"), is(true)); - assertThat(ReservedRolesStore.isReserved("data_frame_transforms_user"), is(true)); - assertThat(ReservedRolesStore.isReserved("data_frame_transforms_admin"), is(true)); assertThat(ReservedRolesStore.isReserved("transform_user"), is(true)); assertThat(ReservedRolesStore.isReserved("transform_admin"), is(true)); assertThat(ReservedRolesStore.isReserved("watcher_user"), is(true)); @@ -3424,185 +3422,99 @@ public void testTransformAdminRole() { final TransportRequest request = mock(TransportRequest.class); final Authentication authentication = AuthenticationTestHelper.builder().build(); - RoleDescriptor[] roleDescriptors = { - ReservedRolesStore.roleDescriptor("data_frame_transforms_admin"), - ReservedRolesStore.roleDescriptor("transform_admin") }; + RoleDescriptor roleDescriptor = ReservedRolesStore.roleDescriptor("transform_admin"); - for (RoleDescriptor roleDescriptor : roleDescriptors) { - assertNotNull(roleDescriptor); - assertThat(roleDescriptor.getMetadata(), hasEntry("_reserved", true)); - if (roleDescriptor.getName().equals("data_frame_transforms_admin")) { - assertThat(roleDescriptor.getMetadata(), hasEntry("_deprecated", true)); - } else { - assertThat(roleDescriptor.getMetadata(), not(hasEntry("_deprecated", true))); - } + assertNotNull(roleDescriptor); + assertThat(roleDescriptor.getMetadata(), hasEntry("_reserved", true)); + assertThat(roleDescriptor.getMetadata(), not(hasEntry("_deprecated", true))); - final String allowedApplicationActionPattern = "example/custom/action/*"; - final String kibanaApplicationWithRandomIndex = "kibana-" + randomFrom(randomAlphaOfLengthBetween(8, 24), ".kibana"); - List lookup = roleDescriptor.getName().equals("data_frame_transforms_admin") - ? List.of( - new ApplicationPrivilegeDescriptor( - kibanaApplicationWithRandomIndex, - "reserved_ml_user", - Set.of(allowedApplicationActionPattern), - Map.of() - ) - ) - : List.of(); - Role role = Role.buildFromRoleDescriptor(roleDescriptor, new FieldPermissionsCache(Settings.EMPTY), RESTRICTED_INDICES, lookup); - assertThat(role.cluster().check(DeleteTransformAction.NAME, request, authentication), is(true)); - assertThat(role.cluster().check(GetTransformAction.NAME, request, authentication), is(true)); - assertThat(role.cluster().check(GetTransformStatsAction.NAME, request, authentication), is(true)); - assertThat(role.cluster().check(PreviewTransformAction.NAME, request, authentication), is(true)); - assertThat(role.cluster().check(PutTransformAction.NAME, request, authentication), is(true)); - assertThat(role.cluster().check(StartTransformAction.NAME, request, authentication), is(true)); - assertThat(role.cluster().check(StopTransformAction.NAME, request, authentication), is(true)); - assertThat(role.cluster().check(SetTransformUpgradeModeAction.NAME, request, authentication), is(true)); - assertThat(role.cluster().check(DelegatePkiAuthenticationAction.NAME, request, authentication), is(false)); - - assertThat(role.runAs().check(randomAlphaOfLengthBetween(1, 30)), is(false)); - - assertOnlyReadAllowed(role, TransformInternalIndexConstants.AUDIT_INDEX_READ_ALIAS); - assertOnlyReadAllowed(role, TransformInternalIndexConstants.AUDIT_INDEX_PATTERN); - assertOnlyReadAllowed(role, TransformInternalIndexConstants.AUDIT_INDEX_PATTERN_DEPRECATED); - assertNoAccessAllowed(role, "foo"); - assertNoAccessAllowed(role, TransformInternalIndexConstants.LATEST_INDEX_NAME); // internal use only - - assertNoAccessAllowed(role, TestRestrictedIndices.SAMPLE_RESTRICTED_NAMES); - assertNoAccessAllowed(role, XPackPlugin.ASYNC_RESULTS_INDEX + randomAlphaOfLengthBetween(0, 2)); + final String allowedApplicationActionPattern = "example/custom/action/*"; + final String kibanaApplicationWithRandomIndex = "kibana-" + randomFrom(randomAlphaOfLengthBetween(8, 24), ".kibana"); + List lookup = List.of(); + Role role = Role.buildFromRoleDescriptor(roleDescriptor, new FieldPermissionsCache(Settings.EMPTY), RESTRICTED_INDICES, lookup); + assertThat(role.cluster().check(DeleteTransformAction.NAME, request, authentication), is(true)); + assertThat(role.cluster().check(GetTransformAction.NAME, request, authentication), is(true)); + assertThat(role.cluster().check(GetTransformStatsAction.NAME, request, authentication), is(true)); + assertThat(role.cluster().check(PreviewTransformAction.NAME, request, authentication), is(true)); + assertThat(role.cluster().check(PutTransformAction.NAME, request, authentication), is(true)); + assertThat(role.cluster().check(StartTransformAction.NAME, request, authentication), is(true)); + assertThat(role.cluster().check(StopTransformAction.NAME, request, authentication), is(true)); + assertThat(role.cluster().check(SetTransformUpgradeModeAction.NAME, request, authentication), is(true)); + assertThat(role.cluster().check(DelegatePkiAuthenticationAction.NAME, request, authentication), is(false)); - assertThat( - role.application() - .grants(ApplicationPrivilegeTests.createPrivilege(kibanaApplicationWithRandomIndex, "app-foo", "foo"), "*"), - is(false) - ); + assertThat(role.runAs().check(randomAlphaOfLengthBetween(1, 30)), is(false)); - if (roleDescriptor.getName().equals("data_frame_transforms_admin")) { - assertThat( - role.application() - .grants( - ApplicationPrivilegeTests.createPrivilege( - kibanaApplicationWithRandomIndex, - "app-reserved_ml", - allowedApplicationActionPattern - ), - "*" - ), - is(true) - ); - } + assertOnlyReadAllowed(role, TransformInternalIndexConstants.AUDIT_INDEX_READ_ALIAS); + assertOnlyReadAllowed(role, TransformInternalIndexConstants.AUDIT_INDEX_PATTERN); + assertOnlyReadAllowed(role, TransformInternalIndexConstants.AUDIT_INDEX_PATTERN_DEPRECATED); + assertNoAccessAllowed(role, "foo"); + assertNoAccessAllowed(role, TransformInternalIndexConstants.LATEST_INDEX_NAME); // internal use only - final String otherApplication = "logstash-" + randomAlphaOfLengthBetween(8, 24); - assertThat( - role.application().grants(ApplicationPrivilegeTests.createPrivilege(otherApplication, "app-foo", "foo"), "*"), - is(false) - ); - if (roleDescriptor.getName().equals("data_frame_transforms_admin")) { - assertThat( - role.application() - .grants( - ApplicationPrivilegeTests.createPrivilege(otherApplication, "app-reserved_ml", allowedApplicationActionPattern), - "*" - ), - is(false) - ); - } - } + assertNoAccessAllowed(role, TestRestrictedIndices.SAMPLE_RESTRICTED_NAMES); + assertNoAccessAllowed(role, XPackPlugin.ASYNC_RESULTS_INDEX + randomAlphaOfLengthBetween(0, 2)); + + assertThat( + role.application().grants(ApplicationPrivilegeTests.createPrivilege(kibanaApplicationWithRandomIndex, "app-foo", "foo"), "*"), + is(false) + ); + + final String otherApplication = "logstash-" + randomAlphaOfLengthBetween(8, 24); + assertThat( + role.application().grants(ApplicationPrivilegeTests.createPrivilege(otherApplication, "app-foo", "foo"), "*"), + is(false) + ); } public void testTransformUserRole() { final TransportRequest request = mock(TransportRequest.class); final Authentication authentication = AuthenticationTestHelper.builder().build(); - RoleDescriptor[] roleDescriptors = { - ReservedRolesStore.roleDescriptor("data_frame_transforms_user"), - ReservedRolesStore.roleDescriptor("transform_user") }; + RoleDescriptor roleDescriptor = ReservedRolesStore.roleDescriptor("transform_user"); - for (RoleDescriptor roleDescriptor : roleDescriptors) { - assertNotNull(roleDescriptor); - assertThat(roleDescriptor.getMetadata(), hasEntry("_reserved", true)); - if (roleDescriptor.getName().equals("data_frame_transforms_user")) { - assertThat(roleDescriptor.getMetadata(), hasEntry("_deprecated", true)); - } else { - assertThat(roleDescriptor.getMetadata(), not(hasEntry("_deprecated", true))); - } + assertNotNull(roleDescriptor); + assertThat(roleDescriptor.getMetadata(), hasEntry("_reserved", true)); + assertThat(roleDescriptor.getMetadata(), not(hasEntry("_deprecated", true))); - final String allowedApplicationActionPattern = "example/custom/action/*"; - final String kibanaApplicationWithRandomIndex = "kibana-" + randomFrom(randomAlphaOfLengthBetween(8, 24), ".kibana"); - List lookup = roleDescriptor.getName().equals("data_frame_transforms_user") - ? List.of( - new ApplicationPrivilegeDescriptor( - kibanaApplicationWithRandomIndex, - "reserved_ml_user", - Set.of(allowedApplicationActionPattern), - Map.of() - ) - ) - : List.of(); - Role role = Role.buildFromRoleDescriptor(roleDescriptor, new FieldPermissionsCache(Settings.EMPTY), RESTRICTED_INDICES, lookup); - assertThat(role.cluster().check(DeleteTransformAction.NAME, request, authentication), is(false)); - assertThat(role.cluster().check(GetTransformAction.NAME, request, authentication), is(true)); - assertThat(role.cluster().check(GetTransformStatsAction.NAME, request, authentication), is(true)); - assertThat(role.cluster().check(PreviewTransformAction.NAME, request, authentication), is(false)); - assertThat(role.cluster().check(PutTransformAction.NAME, request, authentication), is(false)); - assertThat(role.cluster().check(StartTransformAction.NAME, request, authentication), is(false)); - assertThat(role.cluster().check(StopTransformAction.NAME, request, authentication), is(false)); - assertThat(role.cluster().check(SetTransformUpgradeModeAction.NAME, request, authentication), is(false)); - assertThat(role.cluster().check(DelegatePkiAuthenticationAction.NAME, request, authentication), is(false)); - assertThat(role.cluster().check(ActivateProfileAction.NAME, request, authentication), is(false)); - assertThat(role.cluster().check(SuggestProfilesAction.NAME, request, authentication), is(false)); - assertThat(role.cluster().check(UpdateProfileDataAction.NAME, request, authentication), is(false)); - assertThat(role.cluster().check(GetProfilesAction.NAME, request, authentication), is(false)); - assertThat(role.cluster().check(ProfileHasPrivilegesAction.NAME, request, authentication), is(false)); - - assertThat(role.runAs().check(randomAlphaOfLengthBetween(1, 30)), is(false)); - - assertOnlyReadAllowed(role, TransformInternalIndexConstants.AUDIT_INDEX_READ_ALIAS); - assertOnlyReadAllowed(role, TransformInternalIndexConstants.AUDIT_INDEX_PATTERN); - assertOnlyReadAllowed(role, TransformInternalIndexConstants.AUDIT_INDEX_PATTERN_DEPRECATED); - assertNoAccessAllowed(role, "foo"); - assertNoAccessAllowed(role, TransformInternalIndexConstants.LATEST_INDEX_NAME); - - assertNoAccessAllowed(role, TestRestrictedIndices.SAMPLE_RESTRICTED_NAMES); - assertNoAccessAllowed(role, XPackPlugin.ASYNC_RESULTS_INDEX + randomAlphaOfLengthBetween(0, 2)); + final String allowedApplicationActionPattern = "example/custom/action/*"; + final String kibanaApplicationWithRandomIndex = "kibana-" + randomFrom(randomAlphaOfLengthBetween(8, 24), ".kibana"); + List lookup = List.of(); + Role role = Role.buildFromRoleDescriptor(roleDescriptor, new FieldPermissionsCache(Settings.EMPTY), RESTRICTED_INDICES, lookup); + assertThat(role.cluster().check(DeleteTransformAction.NAME, request, authentication), is(false)); + assertThat(role.cluster().check(GetTransformAction.NAME, request, authentication), is(true)); + assertThat(role.cluster().check(GetTransformStatsAction.NAME, request, authentication), is(true)); + assertThat(role.cluster().check(PreviewTransformAction.NAME, request, authentication), is(false)); + assertThat(role.cluster().check(PutTransformAction.NAME, request, authentication), is(false)); + assertThat(role.cluster().check(StartTransformAction.NAME, request, authentication), is(false)); + assertThat(role.cluster().check(StopTransformAction.NAME, request, authentication), is(false)); + assertThat(role.cluster().check(SetTransformUpgradeModeAction.NAME, request, authentication), is(false)); + assertThat(role.cluster().check(DelegatePkiAuthenticationAction.NAME, request, authentication), is(false)); + assertThat(role.cluster().check(ActivateProfileAction.NAME, request, authentication), is(false)); + assertThat(role.cluster().check(SuggestProfilesAction.NAME, request, authentication), is(false)); + assertThat(role.cluster().check(UpdateProfileDataAction.NAME, request, authentication), is(false)); + assertThat(role.cluster().check(GetProfilesAction.NAME, request, authentication), is(false)); + assertThat(role.cluster().check(ProfileHasPrivilegesAction.NAME, request, authentication), is(false)); - assertThat( - role.application() - .grants(ApplicationPrivilegeTests.createPrivilege(kibanaApplicationWithRandomIndex, "app-foo", "foo"), "*"), - is(false) - ); + assertThat(role.runAs().check(randomAlphaOfLengthBetween(1, 30)), is(false)); - if (roleDescriptor.getName().equals("data_frame_transforms_user")) { - assertThat( - role.application() - .grants( - ApplicationPrivilegeTests.createPrivilege( - kibanaApplicationWithRandomIndex, - "app-reserved_ml", - allowedApplicationActionPattern - ), - "*" - ), - is(true) - ); - } + assertOnlyReadAllowed(role, TransformInternalIndexConstants.AUDIT_INDEX_READ_ALIAS); + assertOnlyReadAllowed(role, TransformInternalIndexConstants.AUDIT_INDEX_PATTERN); + assertOnlyReadAllowed(role, TransformInternalIndexConstants.AUDIT_INDEX_PATTERN_DEPRECATED); + assertNoAccessAllowed(role, "foo"); + assertNoAccessAllowed(role, TransformInternalIndexConstants.LATEST_INDEX_NAME); - final String otherApplication = "logstash-" + randomAlphaOfLengthBetween(8, 24); - assertThat( - role.application().grants(ApplicationPrivilegeTests.createPrivilege(otherApplication, "app-foo", "foo"), "*"), - is(false) - ); - if (roleDescriptor.getName().equals("data_frame_transforms_user")) { - assertThat( - role.application() - .grants( - ApplicationPrivilegeTests.createPrivilege(otherApplication, "app-reserved_ml", allowedApplicationActionPattern), - "*" - ), - is(false) - ); - } - } + assertNoAccessAllowed(role, TestRestrictedIndices.SAMPLE_RESTRICTED_NAMES); + assertNoAccessAllowed(role, XPackPlugin.ASYNC_RESULTS_INDEX + randomAlphaOfLengthBetween(0, 2)); + + assertThat( + role.application().grants(ApplicationPrivilegeTests.createPrivilege(kibanaApplicationWithRandomIndex, "app-foo", "foo"), "*"), + is(false) + ); + + final String otherApplication = "logstash-" + randomAlphaOfLengthBetween(8, 24); + assertThat( + role.application().grants(ApplicationPrivilegeTests.createPrivilege(otherApplication, "app-foo", "foo"), "*"), + is(false) + ); } public void testWatcherAdminRole() { diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/transform/transforms/TransformConfigTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/transform/transforms/TransformConfigTests.java index 2e7e5293c835f..a9b4fa984ea1e 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/transform/transforms/TransformConfigTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/transform/transforms/TransformConfigTests.java @@ -27,8 +27,6 @@ import org.elasticsearch.xpack.core.common.validation.SourceDestValidator.SourceDestValidation; import org.elasticsearch.xpack.core.deprecation.DeprecationIssue; import org.elasticsearch.xpack.core.deprecation.DeprecationIssue.Level; -import org.elasticsearch.xpack.core.security.authc.AuthenticationTestHelper; -import org.elasticsearch.xpack.core.security.user.User; import org.elasticsearch.xpack.core.transform.AbstractSerializingTransformTestCase; import org.elasticsearch.xpack.core.transform.TransformConfigVersion; import org.elasticsearch.xpack.core.transform.TransformDeprecations; @@ -46,7 +44,6 @@ import java.util.Map; import static org.elasticsearch.test.TestMatchers.matchesPattern; -import static org.elasticsearch.xpack.core.security.authc.AuthenticationField.AUTHENTICATION_KEY; import static org.elasticsearch.xpack.core.transform.transforms.DestConfigTests.randomDestConfig; import static org.elasticsearch.xpack.core.transform.transforms.SourceConfigTests.randomInvalidSourceConfig; import static org.elasticsearch.xpack.core.transform.transforms.SourceConfigTests.randomSourceConfig; @@ -61,8 +58,6 @@ public class TransformConfigTests extends AbstractSerializingTransformTestCase roles) throws IOException { - var authentication = AuthenticationTestHelper.builder() - .realm() - .user(new User(randomAlphaOfLength(10), roles.toArray(String[]::new))) - .build(); - Map headers = Map.of(AUTHENTICATION_KEY, authentication.encode()); - TransformConfig deprecatedConfig = randomTransformConfigWithHeaders(headers); - - // important: checkForDeprecations does _not_ create new deprecation warnings - assertThat( - deprecatedConfig.checkForDeprecations(xContentRegistry()), - equalTo( - List.of( - new DeprecationIssue( - Level.CRITICAL, - "Transform [" + deprecatedConfig.getId() + "] uses deprecated transform roles " + roles, - TransformDeprecations.DATA_FRAME_TRANSFORMS_ROLES_BREAKING_CHANGES_URL, - TransformDeprecations.DATA_FRAME_TRANSFORMS_ROLES_IS_DEPRECATED, - false, - null - ) - ) - ) - ); - } - public void testSerializingMetadataPreservesOrder() throws IOException { String json = Strings.format(""" { From 9cbbd2d00863028c173a4d747803937712010613 Mon Sep 17 00:00:00 2001 From: Luca Cavanna Date: Mon, 6 Jan 2025 17:10:20 +0100 Subject: [PATCH 07/35] Restore some of the v7 index versions related metadata tests (#119135) These were awaited fix because v7 index versions were filtered out from the randomized versions. They are now reinstated as we will keep supporting them. --- .../metadata/MetadataCreateIndexServiceTests.java | 3 --- .../elasticsearch/cluster/metadata/MetadataTests.java | 9 --------- 2 files changed, 12 deletions(-) diff --git a/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexServiceTests.java b/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexServiceTests.java index 0411b951cb16c..633a678733f07 100644 --- a/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexServiceTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexServiceTests.java @@ -43,7 +43,6 @@ import org.elasticsearch.common.settings.Setting; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.core.TimeValue; -import org.elasticsearch.core.UpdateForV9; import org.elasticsearch.index.Index; import org.elasticsearch.index.IndexMode; import org.elasticsearch.index.IndexModule; @@ -1496,8 +1495,6 @@ public void testRejectTranslogRetentionSettings() { ); } - @UpdateForV9(owner = UpdateForV9.Owner.DATA_MANAGEMENT) - @AwaitsFix(bugUrl = "looks like a test that's not applicable to 9.0 after version bump") public void testDeprecateTranslogRetentionSettings() { request = new CreateIndexClusterStateUpdateRequest("create index", "test", "test"); final Settings.Builder settings = Settings.builder(); diff --git a/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataTests.java b/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataTests.java index e07ef15f7cf84..fc46afd10c18d 100644 --- a/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataTests.java @@ -34,7 +34,6 @@ import org.elasticsearch.core.Nullable; import org.elasticsearch.core.Predicates; import org.elasticsearch.core.SuppressForbidden; -import org.elasticsearch.core.UpdateForV9; import org.elasticsearch.index.Index; import org.elasticsearch.index.IndexMode; import org.elasticsearch.index.IndexNotFoundException; @@ -1987,8 +1986,6 @@ public void testHiddenAliasValidation() { } } - @UpdateForV9(owner = UpdateForV9.Owner.DATA_MANAGEMENT) - @AwaitsFix(bugUrl = "this test needs to be updated or removed after the version 9.0 bump") public void testSystemAliasValidationMixedVersionSystemAndRegularFails() { final IndexVersion random7xVersion = IndexVersionUtils.randomVersionBetween( random(), @@ -2039,8 +2036,6 @@ public void testSystemAliasValidationNewSystemAndRegularFails() { ); } - @UpdateForV9(owner = UpdateForV9.Owner.DATA_MANAGEMENT) - @AwaitsFix(bugUrl = "this test needs to be updated or removed after the version 9.0 bump") public void testSystemAliasOldSystemAndNewRegular() { final IndexVersion random7xVersion = IndexVersionUtils.randomVersionBetween( random(), @@ -2054,8 +2049,6 @@ public void testSystemAliasOldSystemAndNewRegular() { metadataWithIndices(oldVersionSystem, regularIndex); } - @UpdateForV9(owner = UpdateForV9.Owner.DATA_MANAGEMENT) - @AwaitsFix(bugUrl = "this test needs to be updated or removed after the version 9.0 bump") public void testSystemIndexValidationAllRegular() { final IndexVersion random7xVersion = IndexVersionUtils.randomVersionBetween( random(), @@ -2070,8 +2063,6 @@ public void testSystemIndexValidationAllRegular() { metadataWithIndices(currentVersionSystem, currentVersionSystem2, oldVersionSystem); } - @UpdateForV9(owner = UpdateForV9.Owner.DATA_MANAGEMENT) - @AwaitsFix(bugUrl = "this test needs to be updated or removed after the version 9.0 bump") public void testSystemAliasValidationAllSystemSomeOld() { final IndexVersion random7xVersion = IndexVersionUtils.randomVersionBetween( random(), From f7444ae7a7cc5ab5f84e2b088dfab0e6abc50e7e Mon Sep 17 00:00:00 2001 From: Rene Groeschke Date: Mon, 6 Jan 2025 17:35:34 +0100 Subject: [PATCH 08/35] [Gradle] Fix deprecation warning in branchConsistency task (#119587) The groovy syntax we use in branchConsistency task was deprecated in gradle 8.12 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index b85742be9632f..e6fc1f4eba28c 100644 --- a/build.gradle +++ b/build.gradle @@ -365,7 +365,7 @@ tasks.register("verifyBwcTestsEnabled") { tasks.register("branchConsistency") { description = 'Ensures this branch is internally consistent. For example, that versions constants match released versions.' - group 'Verification' + group = 'Verification' dependsOn ":verifyVersions", ":verifyBwcTestsEnabled" } From 501df74d501293109e4ce455157e56804ba83d71 Mon Sep 17 00:00:00 2001 From: elasticsearchmachine <58790826+elasticsearchmachine@users.noreply.github.com> Date: Tue, 7 Jan 2025 03:39:38 +1100 Subject: [PATCH 09/35] Mute org.elasticsearch.xpack.security.authc.ldap.MultiGroupMappingIT org.elasticsearch.xpack.security.authc.ldap.MultiGroupMappingIT #119599 --- muted-tests.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/muted-tests.yml b/muted-tests.yml index 2fed822506e28..407d49c271cbd 100644 --- a/muted-tests.yml +++ b/muted-tests.yml @@ -282,6 +282,8 @@ tests: - class: org.elasticsearch.xpack.ml.integration.ForecastIT method: testOverflowToDisk issue: https://github.com/elastic/elasticsearch/issues/117740 +- class: org.elasticsearch.xpack.security.authc.ldap.MultiGroupMappingIT + issue: https://github.com/elastic/elasticsearch/issues/119599 # Examples: # From 0ec851f7276d8dbb2cc5f36d8d876a59f1b42f59 Mon Sep 17 00:00:00 2001 From: Nikolaj Volgushev Date: Mon, 6 Jan 2025 17:45:51 +0100 Subject: [PATCH 10/35] Fix license headers for minimize operations (#119588) Fix license headers in minimization-related files. --- .../automaton/MinimizationOperations.java | 23 ++++++++++++++----- .../MinimizationOperationsTests.java | 20 +++++++++++----- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/lucene/util/automaton/MinimizationOperations.java b/server/src/main/java/org/elasticsearch/lucene/util/automaton/MinimizationOperations.java index 0f1445e3afc3d..68d848d8af165 100644 --- a/server/src/main/java/org/elasticsearch/lucene/util/automaton/MinimizationOperations.java +++ b/server/src/main/java/org/elasticsearch/lucene/util/automaton/MinimizationOperations.java @@ -1,10 +1,21 @@ /* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * @notice + * Copyright (c) 2001-2009 Anders Moeller + * Modifications copyright (C) 2024 Elasticsearch B.V. + * + * Licensed 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. + * + * Sourced from: https://github.com/apache/lucene/blob/main/lucene/core/src/test/org/apache/lucene/util/automaton/MinimizationOperations.java */ package org.elasticsearch.lucene.util.automaton; diff --git a/server/src/test/java/org/elasticsearch/lucene/util/automaton/MinimizationOperationsTests.java b/server/src/test/java/org/elasticsearch/lucene/util/automaton/MinimizationOperationsTests.java index bc9cafc792a8c..0f231ecd57c13 100644 --- a/server/src/test/java/org/elasticsearch/lucene/util/automaton/MinimizationOperationsTests.java +++ b/server/src/test/java/org/elasticsearch/lucene/util/automaton/MinimizationOperationsTests.java @@ -1,10 +1,18 @@ /* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * @notice + * Licensed 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. + * + * Sourced from: https://github.com/apache/lucene/blob/main/lucene/core/src/test/org/apache/lucene/util/automaton/TestMinimize.java */ package org.elasticsearch.lucene.util.automaton; From a5716c8f99dfc8232dbb28d19de50f7f785f54c6 Mon Sep 17 00:00:00 2001 From: Benjamin Trent Date: Mon, 6 Jan 2025 12:06:59 -0500 Subject: [PATCH 11/35] Add new experimental rank_vectors mapping for late-interaction second order ranking (#118804) Late-interaction models are powerful rerankers. While their size and overall cost doesn't lend itself for HNSW indexing, utilizing them as second order "brute-force" reranking can provide excellent boosts in relevance. At generally lower inference times than large cross-encoders. This commit exposes a new experimental `rank_vectors` field that allows for maxSim operations. This unlocks the initial, and most common use of late-interaction dense-models. For example, this is how you would use it via the API: ``` PUT index { "mappings": { "properties": { "late_interaction_vectors": { "type": "rank_vectors" } } } } ``` Then to index: ``` POST index/_doc { "late_interaction_vectors": [[0.1, ...],...] } ``` For querying, scoring can be exposed with scripting: ``` POST index/_search { "query": { "script_score": { "query": { "match_all": {} }, "script": { "source": "maxSimDotProduct(params.query_vector, 'my_vector')", "params": { "query_vector": [[0.42, ...], ...] } } } } } ``` Of course, the initial ranking should be done before re-scoring or combining via the `rescore` parameter, or simply passing whatever first phase retrieval you want as the inner query in `script_score`. --- docs/changelog/118804.yaml | 15 ++ docs/reference/mapping/types.asciidoc | 2 + .../mapping/types/dense-vector.asciidoc | 1 - .../mapping/types/rank-vectors.asciidoc | 201 ++++++++++++++++++ .../org.elasticsearch.script.score.txt | 2 - .../vectors/DenseVectorFieldMapper.java | 57 +++-- .../vectors/RankVectorsDVLeafFieldData.java | 61 ------ .../elasticsearch/indices/IndicesModule.java | 4 - .../action/search/SearchCapabilities.java | 12 -- .../ByteRankVectorsDocValuesField.java | 4 +- .../FloatRankVectorsDocValuesField.java | 4 +- .../aggregations/AggregatorTestCase.java | 2 - x-pack/plugin/rank-vectors/build.gradle | 24 +++ .../src/main/java/module-info.java | 25 +++ .../rank/vectors/RankVectorsFeatures.java | 23 ++ .../xpack/rank/vectors/RankVectorsPlugin.java | 46 ++++ .../mapper/RankVectorsDVLeafFieldData.java | 158 ++++++++++++++ .../mapper}/RankVectorsFieldMapper.java | 82 +++---- .../mapper}/RankVectorsIndexFieldData.java | 27 +-- .../script/RankVectorsPainlessExtension.java | 29 +++ .../script/RankVectorsScoreScriptUtils.java | 11 +- ...lasticsearch.features.FeatureSpecification | 8 + ...asticsearch.painless.spi.PainlessExtension | 1 + .../vectors/script/rank_vector_whitelist.txt | 13 ++ .../rank/vectors/LocalStateRankVectors.java | 42 ++++ .../mapper}/RankVectorsFieldMapperTests.java | 25 +-- .../mapper}/RankVectorsFieldTypeTests.java | 43 ++-- .../RankVectorsScriptDocValuesTests.java | 17 +- .../RankVectorsScoreScriptUtilsTests.java | 29 +-- .../vectors/script}/RankVectorsTests.java | 21 +- .../test/rank_vectors/rank_vectors.yml | 8 +- .../rank_vectors_dv_fields_api.yml | 44 +++- .../rank_vectors/rank_vectors_max_sim.yml | 8 +- 33 files changed, 777 insertions(+), 272 deletions(-) create mode 100644 docs/changelog/118804.yaml create mode 100644 docs/reference/mapping/types/rank-vectors.asciidoc delete mode 100644 server/src/main/java/org/elasticsearch/index/mapper/vectors/RankVectorsDVLeafFieldData.java create mode 100644 x-pack/plugin/rank-vectors/build.gradle create mode 100644 x-pack/plugin/rank-vectors/src/main/java/module-info.java create mode 100644 x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/RankVectorsFeatures.java create mode 100644 x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/RankVectorsPlugin.java create mode 100644 x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/mapper/RankVectorsDVLeafFieldData.java rename {server/src/main/java/org/elasticsearch/index/mapper/vectors => x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/mapper}/RankVectorsFieldMapper.java (88%) rename {server/src/main/java/org/elasticsearch/index/mapper/vectors => x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/mapper}/RankVectorsIndexFieldData.java (76%) create mode 100644 x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/script/RankVectorsPainlessExtension.java rename {server/src/main/java/org/elasticsearch => x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors}/script/RankVectorsScoreScriptUtils.java (97%) create mode 100644 x-pack/plugin/rank-vectors/src/main/resources/META-INF/services/org.elasticsearch.features.FeatureSpecification create mode 100644 x-pack/plugin/rank-vectors/src/main/resources/META-INF/services/org.elasticsearch.painless.spi.PainlessExtension create mode 100644 x-pack/plugin/rank-vectors/src/main/resources/org/elasticsearch/xpack/rank/vectors/script/rank_vector_whitelist.txt create mode 100644 x-pack/plugin/rank-vectors/src/test/java/org/elasticsearch/xpack/rank/vectors/LocalStateRankVectors.java rename {server/src/test/java/org/elasticsearch/index/mapper/vectors => x-pack/plugin/rank-vectors/src/test/java/org/elasticsearch/xpack/rank/vectors/mapper}/RankVectorsFieldMapperTests.java (97%) rename {server/src/test/java/org/elasticsearch/index/mapper/vectors => x-pack/plugin/rank-vectors/src/test/java/org/elasticsearch/xpack/rank/vectors/mapper}/RankVectorsFieldTypeTests.java (67%) rename {server/src/test/java/org/elasticsearch/index/mapper/vectors => x-pack/plugin/rank-vectors/src/test/java/org/elasticsearch/xpack/rank/vectors/mapper}/RankVectorsScriptDocValuesTests.java (95%) rename {server/src/test/java/org/elasticsearch => x-pack/plugin/rank-vectors/src/test/java/org/elasticsearch/xpack/rank/vectors}/script/RankVectorsScoreScriptUtilsTests.java (93%) rename {server/src/test/java/org/elasticsearch/script/field/vectors => x-pack/plugin/rank-vectors/src/test/java/org/elasticsearch/xpack/rank/vectors/script}/RankVectorsTests.java (80%) rename rest-api-spec/src/yamlRestTest/resources/rest-api-spec/test/search.vectors/30_rank_vectors.yml => x-pack/plugin/src/yamlRestTest/resources/rest-api-spec/test/rank_vectors/rank_vectors.yml (92%) rename modules/lang-painless/src/yamlRestTest/resources/rest-api-spec/test/painless/181_rank_vectors_dv_fields_api.yml => x-pack/plugin/src/yamlRestTest/resources/rest-api-spec/test/rank_vectors/rank_vectors_dv_fields_api.yml (71%) rename modules/lang-painless/src/yamlRestTest/resources/rest-api-spec/test/painless/141_rank_vectors_max_sim.yml => x-pack/plugin/src/yamlRestTest/resources/rest-api-spec/test/rank_vectors/rank_vectors_max_sim.yml (95%) diff --git a/docs/changelog/118804.yaml b/docs/changelog/118804.yaml new file mode 100644 index 0000000000000..1548367a5485f --- /dev/null +++ b/docs/changelog/118804.yaml @@ -0,0 +1,15 @@ +pr: 118804 +summary: Add new experimental `rank_vectors` mapping for late-interaction second order + ranking +area: Vector Search +type: feature +issues: [] +highlight: + title: Add new experimental `rank_vectors` mapping for late-interaction second order + ranking + body: + Late-interaction models are powerful rerankers. While their size and overall + cost doesn't lend itself for HNSW indexing, utilizing them as second order reranking + can provide excellent boosts in relevance. The new `rank_vectors` mapping allows for rescoring + over new and novel multi-vector late-interaction models like ColBERT or ColPali. + notable: true diff --git a/docs/reference/mapping/types.asciidoc b/docs/reference/mapping/types.asciidoc index babe4f508b5f0..e5155b7d4ce5b 100644 --- a/docs/reference/mapping/types.asciidoc +++ b/docs/reference/mapping/types.asciidoc @@ -180,6 +180,8 @@ include::types/rank-feature.asciidoc[] include::types/rank-features.asciidoc[] +include::types/rank-vectors.asciidoc[] + include::types/search-as-you-type.asciidoc[] include::types/semantic-text.asciidoc[] diff --git a/docs/reference/mapping/types/dense-vector.asciidoc b/docs/reference/mapping/types/dense-vector.asciidoc index 199a59a5b143c..c16b979043a57 100644 --- a/docs/reference/mapping/types/dense-vector.asciidoc +++ b/docs/reference/mapping/types/dense-vector.asciidoc @@ -1,4 +1,3 @@ -[role="xpack"] [[dense-vector]] === Dense vector field type ++++ diff --git a/docs/reference/mapping/types/rank-vectors.asciidoc b/docs/reference/mapping/types/rank-vectors.asciidoc new file mode 100644 index 0000000000000..a718a5e47ec85 --- /dev/null +++ b/docs/reference/mapping/types/rank-vectors.asciidoc @@ -0,0 +1,201 @@ +[role="xpack"] +[[rank-vectors]] +=== Rank Vectors +++++ + Rank Vectors +++++ +experimental::[] + +The `rank_vectors` field type enables late-interaction dense vector scoring in Elasticsearch. The number of vectors +per field can vary, but they must all share the same number of dimensions and element type. + +The purpose of vectors stored in this field is second order ranking documents with max-sim similarity. + +Here is a simple example of using this field with `float` elements. + +[source,console] +-------------------------------------------------- +PUT my-rank-vectors-float +{ + "mappings": { + "properties": { + "my_vector": { + "type": "rank_vectors" + } + } + } +} + +PUT my-rank-vectors-float/_doc/1 +{ + "my_vector" : [[0.5, 10, 6], [-0.5, 10, 10]] +} + +-------------------------------------------------- +// TESTSETUP + +In addition to the `float` element type, `byte` and `bit` element types are also supported. + +Here is an example of using this field with `byte` elements. + +[source,console] +-------------------------------------------------- +PUT my-rank-vectors-byte +{ + "mappings": { + "properties": { + "my_vector": { + "type": "rank_vectors", + "element_type": "byte" + } + } + } +} + +PUT my-rank-vectors-byte/_doc/1 +{ + "my_vector" : [[1, 2, 3], [4, 5, 6]] +} +-------------------------------------------------- + +Here is an example of using this field with `bit` elements. + +[source,console] +-------------------------------------------------- +PUT my-rank-vectors-bit +{ + "mappings": { + "properties": { + "my_vector": { + "type": "rank_vectors", + "element_type": "bit" + } + } + } +} + +POST /my-rank-vectors-bit/_bulk?refresh +{"index": {"_id" : "1"}} +{"my_vector": [127, -127, 0, 1, 42]} +{"index": {"_id" : "2"}} +{"my_vector": "8100012a7f"} +-------------------------------------------------- + +[role="child_attributes"] +[[rank-vectors-params]] +==== Parameters for rank vectors fields + +The `rank_vectors` field type supports the following parameters: + +[[rank-vectors-element-type]] +`element_type`:: +(Optional, string) +The data type used to encode vectors. The supported data types are +`float` (default), `byte`, and bit. + +.Valid values for `element_type` +[%collapsible%open] +==== +`float`::: +indexes a 4-byte floating-point +value per dimension. This is the default value. + +`byte`::: +indexes a 1-byte integer value per dimension. + +`bit`::: +indexes a single bit per dimension. Useful for very high-dimensional vectors or models that specifically support bit vectors. +NOTE: when using `bit`, the number of dimensions must be a multiple of 8 and must represent the number of bits. + +==== + +`dims`:: +(Optional, integer) +Number of vector dimensions. Can't exceed `4096`. If `dims` is not specified, +it will be set to the length of the first vector added to the field. + +[[rank-vectors-synthetic-source]] +==== Synthetic `_source` + +IMPORTANT: Synthetic `_source` is Generally Available only for TSDB indices +(indices that have `index.mode` set to `time_series`). For other indices +synthetic `_source` is in technical preview. Features in technical preview may +be changed or removed in a future release. Elastic will work to fix +any issues, but features in technical preview are not subject to the support SLA +of official GA features. + +`rank_vectors` fields support <> . + +[[rank-vectors-scoring]] +==== Scoring with rank vectors + +Rank vectors can be accessed and used in <>. + +For example, the following query scores documents based on the maxSim similarity between the query vector and the vectors stored in the `my_vector` field: + +[source,console] +-------------------------------------------------- +GET my-rank-vectors-float/_search +{ + "query": { + "script_score": { + "query": { + "match_all": {} + }, + "script": { + "source": "maxSimDotProduct(params.query_vector, 'my_vector')", + "params": { + "query_vector": [[0.5, 10, 6], [-0.5, 10, 10]] + } + } + } + } +} +-------------------------------------------------- + +Additionally, asymmetric similarity functions can be used to score against `bit` vectors. For example, the following query scores documents based on the maxSimDotProduct similarity between a floating point query vector and bit vectors stored in the `my_vector` field: + +[source,console] +-------------------------------------------------- +PUT my-rank-vectors-bit +{ + "mappings": { + "properties": { + "my_vector": { + "type": "rank_vectors", + "element_type": "bit" + } + } + } +} + +POST /my-rank-vectors-bit/_bulk?refresh +{"index": {"_id" : "1"}} +{"my_vector": [127, -127, 0, 1, 42]} +{"index": {"_id" : "2"}} +{"my_vector": "8100012a7f"} + +GET my-rank-vectors-bit/_search +{ + "query": { + "script_score": { + "query": { + "match_all": {} + }, + "script": { + "source": "maxSimDotProduct(params.query_vector, 'my_vector')", + "params": { + "query_vector": [ + [0.35, 0.77, 0.95, 0.15, 0.11, 0.08, 0.58, 0.06, 0.44, 0.52, 0.21, + 0.62, 0.65, 0.16, 0.64, 0.39, 0.93, 0.06, 0.93, 0.31, 0.92, 0.0, + 0.66, 0.86, 0.92, 0.03, 0.81, 0.31, 0.2 , 0.92, 0.95, 0.64, 0.19, + 0.26, 0.77, 0.64, 0.78, 0.32, 0.97, 0.84] + ] <1> + } + } + } + } +} +-------------------------------------------------- +<1> Note that the query vector has 40 elements, matching the number of bits in the bit vectors. + diff --git a/modules/lang-painless/src/main/resources/org/elasticsearch/painless/org.elasticsearch.script.score.txt b/modules/lang-painless/src/main/resources/org/elasticsearch/painless/org.elasticsearch.script.score.txt index a5118db4876cb..e76db7cfb1d26 100644 --- a/modules/lang-painless/src/main/resources/org/elasticsearch/painless/org.elasticsearch.script.score.txt +++ b/modules/lang-painless/src/main/resources/org/elasticsearch/painless/org.elasticsearch.script.score.txt @@ -50,7 +50,5 @@ static_import { double cosineSimilarity(org.elasticsearch.script.ScoreScript, Object, String) bound_to org.elasticsearch.script.VectorScoreScriptUtils$CosineSimilarity double dotProduct(org.elasticsearch.script.ScoreScript, Object, String) bound_to org.elasticsearch.script.VectorScoreScriptUtils$DotProduct double hamming(org.elasticsearch.script.ScoreScript, Object, String) bound_to org.elasticsearch.script.VectorScoreScriptUtils$Hamming - double maxSimDotProduct(org.elasticsearch.script.ScoreScript, Object, String) bound_to org.elasticsearch.script.RankVectorsScoreScriptUtils$MaxSimDotProduct - double maxSimInvHamming(org.elasticsearch.script.ScoreScript, Object, String) bound_to org.elasticsearch.script.RankVectorsScoreScriptUtils$MaxSimInvHamming } diff --git a/server/src/main/java/org/elasticsearch/index/mapper/vectors/DenseVectorFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/vectors/DenseVectorFieldMapper.java index 3584523505aea..a99f21803556f 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/vectors/DenseVectorFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/vectors/DenseVectorFieldMapper.java @@ -102,7 +102,7 @@ public class DenseVectorFieldMapper extends FieldMapper { public static final String COSINE_MAGNITUDE_FIELD_SUFFIX = "._magnitude"; private static final float EPS = 1e-3f; - static final int BBQ_MIN_DIMS = 64; + public static final int BBQ_MIN_DIMS = 64; public static boolean isNotUnitVector(float magnitude) { return Math.abs(magnitude - 1.0f) > EPS; @@ -487,8 +487,12 @@ private VectorData parseHexEncodedVector( } @Override - VectorData parseKnnVector(DocumentParserContext context, int dims, IntBooleanConsumer dimChecker, VectorSimilarity similarity) - throws IOException { + public VectorData parseKnnVector( + DocumentParserContext context, + int dims, + IntBooleanConsumer dimChecker, + VectorSimilarity similarity + ) throws IOException { XContentParser.Token token = context.parser().currentToken(); return switch (token) { case START_ARRAY -> parseVectorArray(context, dims, dimChecker, similarity); @@ -518,17 +522,17 @@ public void parseKnnVectorAndIndex(DocumentParserContext context, DenseVectorFie } @Override - int getNumBytes(int dimensions) { + public int getNumBytes(int dimensions) { return dimensions; } @Override - ByteBuffer createByteBuffer(IndexVersion indexVersion, int numBytes) { + public ByteBuffer createByteBuffer(IndexVersion indexVersion, int numBytes) { return ByteBuffer.wrap(new byte[numBytes]); } @Override - int parseDimensionCount(DocumentParserContext context) throws IOException { + public int parseDimensionCount(DocumentParserContext context) throws IOException { XContentParser.Token currentToken = context.parser().currentToken(); return switch (currentToken) { case START_ARRAY -> { @@ -692,8 +696,12 @@ && isNotUnitVector(squaredMagnitude)) { } @Override - VectorData parseKnnVector(DocumentParserContext context, int dims, IntBooleanConsumer dimChecker, VectorSimilarity similarity) - throws IOException { + public VectorData parseKnnVector( + DocumentParserContext context, + int dims, + IntBooleanConsumer dimChecker, + VectorSimilarity similarity + ) throws IOException { int index = 0; float squaredMagnitude = 0; float[] vector = new float[dims]; @@ -712,12 +720,12 @@ VectorData parseKnnVector(DocumentParserContext context, int dims, IntBooleanCon } @Override - int getNumBytes(int dimensions) { + public int getNumBytes(int dimensions) { return dimensions * Float.BYTES; } @Override - ByteBuffer createByteBuffer(IndexVersion indexVersion, int numBytes) { + public ByteBuffer createByteBuffer(IndexVersion indexVersion, int numBytes) { return indexVersion.onOrAfter(LITTLE_ENDIAN_FLOAT_STORED_INDEX_VERSION) ? ByteBuffer.wrap(new byte[numBytes]).order(ByteOrder.LITTLE_ENDIAN) : ByteBuffer.wrap(new byte[numBytes]); @@ -890,8 +898,12 @@ private VectorData parseHexEncodedVector(DocumentParserContext context, IntBoole } @Override - VectorData parseKnnVector(DocumentParserContext context, int dims, IntBooleanConsumer dimChecker, VectorSimilarity similarity) - throws IOException { + public VectorData parseKnnVector( + DocumentParserContext context, + int dims, + IntBooleanConsumer dimChecker, + VectorSimilarity similarity + ) throws IOException { XContentParser.Token token = context.parser().currentToken(); return switch (token) { case START_ARRAY -> parseVectorArray(context, dims, dimChecker, similarity); @@ -921,18 +933,18 @@ public void parseKnnVectorAndIndex(DocumentParserContext context, DenseVectorFie } @Override - int getNumBytes(int dimensions) { + public int getNumBytes(int dimensions) { assert dimensions % Byte.SIZE == 0; return dimensions / Byte.SIZE; } @Override - ByteBuffer createByteBuffer(IndexVersion indexVersion, int numBytes) { + public ByteBuffer createByteBuffer(IndexVersion indexVersion, int numBytes) { return ByteBuffer.wrap(new byte[numBytes]); } @Override - int parseDimensionCount(DocumentParserContext context) throws IOException { + public int parseDimensionCount(DocumentParserContext context) throws IOException { XContentParser.Token currentToken = context.parser().currentToken(); return switch (currentToken) { case START_ARRAY -> { @@ -975,16 +987,16 @@ public void checkDimensions(Integer dvDims, int qvDims) { abstract void parseKnnVectorAndIndex(DocumentParserContext context, DenseVectorFieldMapper fieldMapper) throws IOException; - abstract VectorData parseKnnVector( + public abstract VectorData parseKnnVector( DocumentParserContext context, int dims, IntBooleanConsumer dimChecker, VectorSimilarity similarity ) throws IOException; - abstract int getNumBytes(int dimensions); + public abstract int getNumBytes(int dimensions); - abstract ByteBuffer createByteBuffer(IndexVersion indexVersion, int numBytes); + public abstract ByteBuffer createByteBuffer(IndexVersion indexVersion, int numBytes); public abstract void checkVectorBounds(float[] vector); @@ -1002,7 +1014,7 @@ public void checkDimensions(Integer dvDims, int qvDims) { } } - int parseDimensionCount(DocumentParserContext context) throws IOException { + public int parseDimensionCount(DocumentParserContext context) throws IOException { int index = 0; for (Token token = context.parser().nextToken(); token != Token.END_ARRAY; token = context.parser().nextToken()) { index++; @@ -1089,7 +1101,7 @@ public static ElementType fromString(String name) { } } - static final Map namesToElementType = Map.of( + public static final Map namesToElementType = Map.of( ElementType.BYTE.toString(), ElementType.BYTE, ElementType.FLOAT.toString(), @@ -2501,9 +2513,10 @@ public String fieldName() { } /** - * @FunctionalInterface for a function that takes a int and boolean + * Interface for a function that takes a int and boolean */ - interface IntBooleanConsumer { + @FunctionalInterface + public interface IntBooleanConsumer { void accept(int value, boolean isComplete); } } diff --git a/server/src/main/java/org/elasticsearch/index/mapper/vectors/RankVectorsDVLeafFieldData.java b/server/src/main/java/org/elasticsearch/index/mapper/vectors/RankVectorsDVLeafFieldData.java deleted file mode 100644 index 0125d0249ec2b..0000000000000 --- a/server/src/main/java/org/elasticsearch/index/mapper/vectors/RankVectorsDVLeafFieldData.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -package org.elasticsearch.index.mapper.vectors; - -import org.apache.lucene.index.BinaryDocValues; -import org.apache.lucene.index.DocValues; -import org.apache.lucene.index.LeafReader; -import org.elasticsearch.index.fielddata.LeafFieldData; -import org.elasticsearch.index.fielddata.SortedBinaryDocValues; -import org.elasticsearch.script.field.DocValuesScriptFieldFactory; -import org.elasticsearch.script.field.vectors.BitRankVectorsDocValuesField; -import org.elasticsearch.script.field.vectors.ByteRankVectorsDocValuesField; -import org.elasticsearch.script.field.vectors.FloatRankVectorsDocValuesField; - -import java.io.IOException; - -final class RankVectorsDVLeafFieldData implements LeafFieldData { - private final LeafReader reader; - private final String field; - private final DenseVectorFieldMapper.ElementType elementType; - private final int dims; - - RankVectorsDVLeafFieldData(LeafReader reader, String field, DenseVectorFieldMapper.ElementType elementType, int dims) { - this.reader = reader; - this.field = field; - this.elementType = elementType; - this.dims = dims; - } - - @Override - public DocValuesScriptFieldFactory getScriptFieldFactory(String name) { - try { - BinaryDocValues values = DocValues.getBinary(reader, field); - BinaryDocValues magnitudeValues = DocValues.getBinary(reader, field + RankVectorsFieldMapper.VECTOR_MAGNITUDES_SUFFIX); - return switch (elementType) { - case BYTE -> new ByteRankVectorsDocValuesField(values, magnitudeValues, name, elementType, dims); - case FLOAT -> new FloatRankVectorsDocValuesField(values, magnitudeValues, name, elementType, dims); - case BIT -> new BitRankVectorsDocValuesField(values, magnitudeValues, name, elementType, dims); - }; - } catch (IOException e) { - throw new IllegalStateException("Cannot load doc values for multi-vector field!", e); - } - } - - @Override - public SortedBinaryDocValues getBytesValues() { - throw new UnsupportedOperationException("String representation of doc values for multi-vector fields is not supported"); - } - - @Override - public long ramBytesUsed() { - return 0; - } -} diff --git a/server/src/main/java/org/elasticsearch/indices/IndicesModule.java b/server/src/main/java/org/elasticsearch/indices/IndicesModule.java index 3dc25b058b1d6..09be98630d5c4 100644 --- a/server/src/main/java/org/elasticsearch/indices/IndicesModule.java +++ b/server/src/main/java/org/elasticsearch/indices/IndicesModule.java @@ -67,7 +67,6 @@ import org.elasticsearch.index.mapper.VersionFieldMapper; import org.elasticsearch.index.mapper.flattened.FlattenedFieldMapper; import org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper; -import org.elasticsearch.index.mapper.vectors.RankVectorsFieldMapper; import org.elasticsearch.index.mapper.vectors.SparseVectorFieldMapper; import org.elasticsearch.index.seqno.RetentionLeaseBackgroundSyncAction; import org.elasticsearch.index.seqno.RetentionLeaseSyncAction; @@ -211,9 +210,6 @@ public static Map getMappers(List mappe mappers.put(DenseVectorFieldMapper.CONTENT_TYPE, DenseVectorFieldMapper.PARSER); mappers.put(SparseVectorFieldMapper.CONTENT_TYPE, SparseVectorFieldMapper.PARSER); - if (RankVectorsFieldMapper.FEATURE_FLAG.isEnabled()) { - mappers.put(RankVectorsFieldMapper.CONTENT_TYPE, RankVectorsFieldMapper.PARSER); - } for (MapperPlugin mapperPlugin : mapperPlugins) { for (Map.Entry entry : mapperPlugin.getMappers().entrySet()) { diff --git a/server/src/main/java/org/elasticsearch/rest/action/search/SearchCapabilities.java b/server/src/main/java/org/elasticsearch/rest/action/search/SearchCapabilities.java index 06f8f8f3c1be6..d9e2eaa8f92b6 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/search/SearchCapabilities.java +++ b/server/src/main/java/org/elasticsearch/rest/action/search/SearchCapabilities.java @@ -10,7 +10,6 @@ package org.elasticsearch.rest.action.search; import org.elasticsearch.Build; -import org.elasticsearch.index.mapper.vectors.RankVectorsFieldMapper; import java.util.HashSet; import java.util.Set; @@ -34,14 +33,8 @@ private SearchCapabilities() {} private static final String TRANSFORM_RANK_RRF_TO_RETRIEVER = "transform_rank_rrf_to_retriever"; /** Support kql query. */ private static final String KQL_QUERY_SUPPORTED = "kql_query"; - /** Support rank-vectors field mapper. */ - private static final String RANK_VECTORS_FIELD_MAPPER = "rank_vectors_field_mapper"; /** Support propagating nested retrievers' inner_hits to top-level compound retrievers . */ private static final String NESTED_RETRIEVER_INNER_HITS_SUPPORT = "nested_retriever_inner_hits_support"; - /** Support rank-vectors script field access. */ - private static final String RANK_VECTORS_SCRIPT_ACCESS = "rank_vectors_script_access"; - /** Initial support for rank-vectors maxSim functions access. */ - private static final String RANK_VECTORS_SCRIPT_MAX_SIM = "rank_vectors_script_max_sim_with_bugfix"; /** Fixed the math in {@code moving_fn}'s {@code linearWeightedAvg}. */ private static final String MOVING_FN_RIGHT_MATH = "moving_fn_right_math"; @@ -62,11 +55,6 @@ private SearchCapabilities() {} capabilities.add(OPTIMIZED_SCALAR_QUANTIZATION_BBQ); capabilities.add(KNN_QUANTIZED_VECTOR_RESCORE); capabilities.add(MOVING_FN_RIGHT_MATH); - if (RankVectorsFieldMapper.FEATURE_FLAG.isEnabled()) { - capabilities.add(RANK_VECTORS_FIELD_MAPPER); - capabilities.add(RANK_VECTORS_SCRIPT_ACCESS); - capabilities.add(RANK_VECTORS_SCRIPT_MAX_SIM); - } if (Build.current().isSnapshot()) { capabilities.add(KQL_QUERY_SUPPORTED); } diff --git a/server/src/main/java/org/elasticsearch/script/field/vectors/ByteRankVectorsDocValuesField.java b/server/src/main/java/org/elasticsearch/script/field/vectors/ByteRankVectorsDocValuesField.java index db81bb6ebe1cb..1bff1b50fb5ac 100644 --- a/server/src/main/java/org/elasticsearch/script/field/vectors/ByteRankVectorsDocValuesField.java +++ b/server/src/main/java/org/elasticsearch/script/field/vectors/ByteRankVectorsDocValuesField.java @@ -111,13 +111,13 @@ public boolean isEmpty() { return value == null; } - static class ByteVectorIterator implements VectorIterator { + public static class ByteVectorIterator implements VectorIterator { private final byte[] buffer; private final BytesRef vectorValues; private final int size; private int idx = 0; - ByteVectorIterator(BytesRef vectorValues, byte[] buffer, int size) { + public ByteVectorIterator(BytesRef vectorValues, byte[] buffer, int size) { assert vectorValues.length == (buffer.length * size); this.vectorValues = vectorValues; this.size = size; diff --git a/server/src/main/java/org/elasticsearch/script/field/vectors/FloatRankVectorsDocValuesField.java b/server/src/main/java/org/elasticsearch/script/field/vectors/FloatRankVectorsDocValuesField.java index 39bc1e621113b..d47795a3b2401 100644 --- a/server/src/main/java/org/elasticsearch/script/field/vectors/FloatRankVectorsDocValuesField.java +++ b/server/src/main/java/org/elasticsearch/script/field/vectors/FloatRankVectorsDocValuesField.java @@ -110,14 +110,14 @@ private void decodeVectorIfNecessary() { } } - static class FloatVectorIterator implements VectorIterator { + public static class FloatVectorIterator implements VectorIterator { private final float[] buffer; private final FloatBuffer vectorValues; private final BytesRef vectorValueBytesRef; private final int size; private int idx = 0; - FloatVectorIterator(BytesRef vectorValues, float[] buffer, int size) { + public FloatVectorIterator(BytesRef vectorValues, float[] buffer, int size) { assert vectorValues.length == (buffer.length * Float.BYTES * size); this.vectorValueBytesRef = vectorValues; this.vectorValues = ByteBuffer.wrap(vectorValues.bytes, vectorValues.offset, vectorValues.length) diff --git a/test/framework/src/main/java/org/elasticsearch/search/aggregations/AggregatorTestCase.java b/test/framework/src/main/java/org/elasticsearch/search/aggregations/AggregatorTestCase.java index f057d35d6e7a9..9e2dee4d94212 100644 --- a/test/framework/src/main/java/org/elasticsearch/search/aggregations/AggregatorTestCase.java +++ b/test/framework/src/main/java/org/elasticsearch/search/aggregations/AggregatorTestCase.java @@ -112,7 +112,6 @@ import org.elasticsearch.index.mapper.TextFieldMapper; import org.elasticsearch.index.mapper.TimeSeriesIdFieldMapper; import org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper; -import org.elasticsearch.index.mapper.vectors.RankVectorsFieldMapper; import org.elasticsearch.index.mapper.vectors.SparseVectorFieldMapper; import org.elasticsearch.index.query.SearchExecutionContext; import org.elasticsearch.index.shard.IndexShard; @@ -206,7 +205,6 @@ public abstract class AggregatorTestCase extends ESTestCase { private static final List TYPE_TEST_BLACKLIST = List.of( ObjectMapper.CONTENT_TYPE, // Cannot aggregate objects DenseVectorFieldMapper.CONTENT_TYPE, // Cannot aggregate dense vectors - RankVectorsFieldMapper.CONTENT_TYPE, // Cannot aggregate dense vectors SparseVectorFieldMapper.CONTENT_TYPE, // Sparse vectors are no longer supported NestedObjectMapper.CONTENT_TYPE, // TODO support for nested diff --git a/x-pack/plugin/rank-vectors/build.gradle b/x-pack/plugin/rank-vectors/build.gradle new file mode 100644 index 0000000000000..53aabb8fdbf74 --- /dev/null +++ b/x-pack/plugin/rank-vectors/build.gradle @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +apply plugin: 'elasticsearch.internal-es-plugin' +apply plugin: 'elasticsearch.internal-cluster-test' + +esplugin { + name = 'rank-vectors' + description = 'Rank vectors in search.' + classname = 'org.elasticsearch.xpack.rank.vectors.RankVectorsPlugin' + extendedPlugins = ['x-pack-core', 'lang-painless'] +} + +dependencies { + compileOnly project(path: xpackModule('core')) + compileOnly(project(':modules:lang-painless:spi')) + + testImplementation(testArtifact(project(xpackModule('core')))) + testImplementation(testArtifact(project(':server'))) +} diff --git a/x-pack/plugin/rank-vectors/src/main/java/module-info.java b/x-pack/plugin/rank-vectors/src/main/java/module-info.java new file mode 100644 index 0000000000000..4af3c994edd38 --- /dev/null +++ b/x-pack/plugin/rank-vectors/src/main/java/module-info.java @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module org.elasticsearch.rank.vectors { + requires org.elasticsearch.xcore; + requires org.elasticsearch.painless.spi; + requires org.elasticsearch.server; + requires org.apache.lucene.core; + requires org.elasticsearch.xcontent; + + exports org.elasticsearch.xpack.rank.vectors; + exports org.elasticsearch.xpack.rank.vectors.mapper; + exports org.elasticsearch.xpack.rank.vectors.script; + + // whitelist resource access + opens org.elasticsearch.xpack.rank.vectors.script to org.elasticsearch.painless.spi; + + provides org.elasticsearch.painless.spi.PainlessExtension with org.elasticsearch.xpack.rank.vectors.script.RankVectorsPainlessExtension; + provides org.elasticsearch.features.FeatureSpecification with org.elasticsearch.xpack.rank.vectors.RankVectorsFeatures; + +} diff --git a/x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/RankVectorsFeatures.java b/x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/RankVectorsFeatures.java new file mode 100644 index 0000000000000..44b1b7a068860 --- /dev/null +++ b/x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/RankVectorsFeatures.java @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +package org.elasticsearch.xpack.rank.vectors; + +import org.elasticsearch.features.FeatureSpecification; +import org.elasticsearch.features.NodeFeature; + +import java.util.Set; + +public class RankVectorsFeatures implements FeatureSpecification { + public static final NodeFeature RANK_VECTORS_FEATURE = new NodeFeature("rank_vectors"); + + @Override + public Set getTestFeatures() { + return Set.of(RANK_VECTORS_FEATURE); + } + +} diff --git a/x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/RankVectorsPlugin.java b/x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/RankVectorsPlugin.java new file mode 100644 index 0000000000000..35c87f1fc1847 --- /dev/null +++ b/x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/RankVectorsPlugin.java @@ -0,0 +1,46 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +package org.elasticsearch.xpack.rank.vectors; + +import org.elasticsearch.index.mapper.FieldMapper; +import org.elasticsearch.index.mapper.Mapper; +import org.elasticsearch.license.License; +import org.elasticsearch.license.LicenseUtils; +import org.elasticsearch.license.LicensedFeature; +import org.elasticsearch.license.XPackLicenseState; +import org.elasticsearch.plugins.MapperPlugin; +import org.elasticsearch.plugins.Plugin; +import org.elasticsearch.xpack.core.XPackPlugin; +import org.elasticsearch.xpack.rank.vectors.mapper.RankVectorsFieldMapper; + +import java.util.Map; + +import static org.elasticsearch.index.mapper.FieldMapper.notInMultiFields; +import static org.elasticsearch.xpack.rank.vectors.mapper.RankVectorsFieldMapper.CONTENT_TYPE; + +public class RankVectorsPlugin extends Plugin implements MapperPlugin { + public static final LicensedFeature.Momentary RANK_VECTORS_FEATURE = LicensedFeature.momentary( + null, + "rank-vectors", + License.OperationMode.ENTERPRISE + ); + + @Override + public Map getMappers() { + return Map.of(CONTENT_TYPE, new FieldMapper.TypeParser((n, c) -> { + if (RANK_VECTORS_FEATURE.check(getLicenseState()) == false) { + throw LicenseUtils.newComplianceException("Rank Vectors"); + } + return new RankVectorsFieldMapper.Builder(n, c.indexVersionCreated(), getLicenseState()); + }, notInMultiFields(CONTENT_TYPE))); + } + + protected XPackLicenseState getLicenseState() { + return XPackPlugin.getSharedLicenseState(); + } +} diff --git a/x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/mapper/RankVectorsDVLeafFieldData.java b/x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/mapper/RankVectorsDVLeafFieldData.java new file mode 100644 index 0000000000000..b858b935c1483 --- /dev/null +++ b/x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/mapper/RankVectorsDVLeafFieldData.java @@ -0,0 +1,158 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +package org.elasticsearch.xpack.rank.vectors.mapper; + +import org.apache.lucene.index.BinaryDocValues; +import org.apache.lucene.index.DocValues; +import org.apache.lucene.index.LeafReader; +import org.apache.lucene.util.BytesRef; +import org.elasticsearch.index.fielddata.FormattedDocValues; +import org.elasticsearch.index.fielddata.LeafFieldData; +import org.elasticsearch.index.fielddata.SortedBinaryDocValues; +import org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper; +import org.elasticsearch.script.field.DocValuesScriptFieldFactory; +import org.elasticsearch.script.field.vectors.BitRankVectorsDocValuesField; +import org.elasticsearch.script.field.vectors.ByteRankVectorsDocValuesField; +import org.elasticsearch.script.field.vectors.FloatRankVectorsDocValuesField; +import org.elasticsearch.script.field.vectors.VectorIterator; +import org.elasticsearch.search.DocValueFormat; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +final class RankVectorsDVLeafFieldData implements LeafFieldData { + private final LeafReader reader; + private final String field; + private final DenseVectorFieldMapper.ElementType elementType; + private final int dims; + + RankVectorsDVLeafFieldData(LeafReader reader, String field, DenseVectorFieldMapper.ElementType elementType, int dims) { + this.reader = reader; + this.field = field; + this.elementType = elementType; + this.dims = dims; + } + + @Override + public FormattedDocValues getFormattedValues(DocValueFormat format) { + int dims = elementType == DenseVectorFieldMapper.ElementType.BIT ? this.dims / Byte.SIZE : this.dims; + return switch (elementType) { + case BYTE, BIT -> new FormattedDocValues() { + private final byte[] vector = new byte[dims]; + private BytesRef ref = null; + private int numVecs = -1; + private final BinaryDocValues binary; + { + try { + binary = DocValues.getBinary(reader, field); + } catch (IOException e) { + throw new IllegalStateException("Cannot load doc values", e); + } + } + + @Override + public boolean advanceExact(int docId) throws IOException { + if (binary == null || binary.advanceExact(docId) == false) { + return false; + } + ref = binary.binaryValue(); + assert ref.length % dims == 0; + numVecs = ref.length / dims; + return true; + } + + @Override + public int docValueCount() { + return 1; + } + + public Object nextValue() { + // Boxed to keep from `byte[]` being transformed into a string + List vectors = new ArrayList<>(numVecs); + VectorIterator iterator = new ByteRankVectorsDocValuesField.ByteVectorIterator(ref, vector, numVecs); + while (iterator.hasNext()) { + byte[] v = iterator.next(); + Byte[] vec = new Byte[dims]; + for (int i = 0; i < dims; i++) { + vec[i] = v[i]; + } + vectors.add(vec); + } + return vectors; + } + }; + case FLOAT -> new FormattedDocValues() { + private final float[] vector = new float[dims]; + private BytesRef ref = null; + private int numVecs = -1; + private final BinaryDocValues binary; + { + try { + binary = DocValues.getBinary(reader, field); + } catch (IOException e) { + throw new IllegalStateException("Cannot load doc values", e); + } + } + + @Override + public boolean advanceExact(int docId) throws IOException { + if (binary == null || binary.advanceExact(docId) == false) { + return false; + } + ref = binary.binaryValue(); + assert ref.length % (Float.BYTES * dims) == 0; + numVecs = ref.length / (Float.BYTES * dims); + return true; + } + + @Override + public int docValueCount() { + return 1; + } + + @Override + public Object nextValue() { + List vectors = new ArrayList<>(numVecs); + VectorIterator iterator = new FloatRankVectorsDocValuesField.FloatVectorIterator(ref, vector, numVecs); + while (iterator.hasNext()) { + float[] v = iterator.next(); + vectors.add(Arrays.copyOf(v, v.length)); + } + return vectors; + } + }; + }; + } + + @Override + public DocValuesScriptFieldFactory getScriptFieldFactory(String name) { + try { + BinaryDocValues values = DocValues.getBinary(reader, field); + BinaryDocValues magnitudeValues = DocValues.getBinary(reader, field + RankVectorsFieldMapper.VECTOR_MAGNITUDES_SUFFIX); + return switch (elementType) { + case BYTE -> new ByteRankVectorsDocValuesField(values, magnitudeValues, name, elementType, dims); + case FLOAT -> new FloatRankVectorsDocValuesField(values, magnitudeValues, name, elementType, dims); + case BIT -> new BitRankVectorsDocValuesField(values, magnitudeValues, name, elementType, dims); + }; + } catch (IOException e) { + throw new IllegalStateException("Cannot load doc values for multi-vector field!", e); + } + } + + @Override + public SortedBinaryDocValues getBytesValues() { + throw new UnsupportedOperationException("String representation of doc values for multi-vector fields is not supported"); + } + + @Override + public long ramBytesUsed() { + return 0; + } +} diff --git a/server/src/main/java/org/elasticsearch/index/mapper/vectors/RankVectorsFieldMapper.java b/x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/mapper/RankVectorsFieldMapper.java similarity index 88% rename from server/src/main/java/org/elasticsearch/index/mapper/vectors/RankVectorsFieldMapper.java rename to x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/mapper/RankVectorsFieldMapper.java index d57dbf79b450c..873d67e76b04a 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/vectors/RankVectorsFieldMapper.java +++ b/x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/mapper/RankVectorsFieldMapper.java @@ -1,13 +1,11 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ -package org.elasticsearch.index.mapper.vectors; +package org.elasticsearch.xpack.rank.vectors.mapper; import org.apache.lucene.document.BinaryDocValuesField; import org.apache.lucene.index.BinaryDocValues; @@ -15,7 +13,6 @@ import org.apache.lucene.search.FieldExistsQuery; import org.apache.lucene.search.Query; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.common.util.FeatureFlag; import org.elasticsearch.common.xcontent.support.XContentMapValues; import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.FieldDataContext; @@ -31,7 +28,10 @@ import org.elasticsearch.index.mapper.SourceLoader; import org.elasticsearch.index.mapper.TextSearchInfo; import org.elasticsearch.index.mapper.ValueFetcher; +import org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper; import org.elasticsearch.index.query.SearchExecutionContext; +import org.elasticsearch.license.LicenseUtils; +import org.elasticsearch.license.XPackLicenseState; import org.elasticsearch.search.DocValueFormat; import org.elasticsearch.search.aggregations.support.CoreValuesSourceType; import org.elasticsearch.search.vectors.VectorData; @@ -50,11 +50,11 @@ import static org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper.MAX_DIMS_COUNT; import static org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper.MAX_DIMS_COUNT_BIT; import static org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper.namesToElementType; +import static org.elasticsearch.xpack.rank.vectors.RankVectorsPlugin.RANK_VECTORS_FEATURE; public class RankVectorsFieldMapper extends FieldMapper { public static final String VECTOR_MAGNITUDES_SUFFIX = "._magnitude"; - public static final FeatureFlag FEATURE_FLAG = new FeatureFlag("rank_vectors"); public static final String CONTENT_TYPE = "rank_vectors"; private static RankVectorsFieldMapper toType(FieldMapper in) { @@ -111,10 +111,12 @@ public static class Builder extends FieldMapper.Builder { private final Parameter> meta = Parameter.metaParam(); private final IndexVersion indexCreatedVersion; + private final XPackLicenseState licenseState; - public Builder(String name, IndexVersion indexCreatedVersion) { + public Builder(String name, IndexVersion indexCreatedVersion, XPackLicenseState licenseState) { super(name); this.indexCreatedVersion = indexCreatedVersion; + this.licenseState = licenseState; } @Override @@ -122,18 +124,12 @@ protected Parameter[] getParameters() { return new Parameter[] { elementType, dims, meta }; } - public RankVectorsFieldMapper.Builder dimensions(int dimensions) { - this.dims.setValue(dimensions); - return this; - } - - public RankVectorsFieldMapper.Builder elementType(DenseVectorFieldMapper.ElementType elementType) { - this.elementType.setValue(elementType); - return this; - } - @Override public RankVectorsFieldMapper build(MapperBuilderContext context) { + // Validate on Mapping creation + if (RANK_VECTORS_FEATURE.check(licenseState) == false) { + throw LicenseUtils.newComplianceException("Rank Vectors"); + } // Validate again here because the dimensions or element type could have been set programmatically, // which affects index option validity validate(); @@ -143,36 +139,32 @@ public RankVectorsFieldMapper build(MapperBuilderContext context) { context.buildFullName(leafName()), elementType.getValue(), dims.getValue(), - indexCreatedVersion, + licenseState, meta.getValue() ), builderParams(this, context), - indexCreatedVersion + indexCreatedVersion, + licenseState ); } } - public static final TypeParser PARSER = new TypeParser( - (n, c) -> new RankVectorsFieldMapper.Builder(n, c.indexVersionCreated()), - notInMultiFields(CONTENT_TYPE) - ); - public static final class RankVectorsFieldType extends SimpleMappedFieldType { private final DenseVectorFieldMapper.ElementType elementType; private final Integer dims; - private final IndexVersion indexCreatedVersion; + private final XPackLicenseState licenseState; public RankVectorsFieldType( String name, DenseVectorFieldMapper.ElementType elementType, Integer dims, - IndexVersion indexCreatedVersion, + XPackLicenseState licenseState, Map meta ) { super(name, false, false, true, TextSearchInfo.NONE, meta); this.elementType = elementType; this.dims = dims; - this.indexCreatedVersion = indexCreatedVersion; + this.licenseState = licenseState; } @Override @@ -195,9 +187,7 @@ protected Object parseSourceValue(Object value) { @Override public DocValueFormat docValueFormat(String format, ZoneId timeZone) { - throw new IllegalArgumentException( - "Field [" + name() + "] of type [" + typeName() + "] doesn't support docvalue_fields or aggregations" - ); + return DocValueFormat.DENSE_VECTOR; } @Override @@ -207,7 +197,10 @@ public boolean isAggregatable() { @Override public IndexFieldData.Builder fielddataBuilder(FieldDataContext fieldDataContext) { - return new RankVectorsIndexFieldData.Builder(name(), CoreValuesSourceType.KEYWORD, indexCreatedVersion, dims, elementType); + if (RANK_VECTORS_FEATURE.check(licenseState) == false) { + throw LicenseUtils.newComplianceException("Rank Vectors"); + } + return new RankVectorsIndexFieldData.Builder(name(), CoreValuesSourceType.KEYWORD, dims, elementType); } @Override @@ -230,10 +223,18 @@ DenseVectorFieldMapper.ElementType getElementType() { } private final IndexVersion indexCreatedVersion; - - private RankVectorsFieldMapper(String simpleName, MappedFieldType fieldType, BuilderParams params, IndexVersion indexCreatedVersion) { + private final XPackLicenseState licenseState; + + private RankVectorsFieldMapper( + String simpleName, + MappedFieldType fieldType, + BuilderParams params, + IndexVersion indexCreatedVersion, + XPackLicenseState licenseState + ) { super(simpleName, fieldType, params); this.indexCreatedVersion = indexCreatedVersion; + this.licenseState = licenseState; } @Override @@ -248,6 +249,9 @@ public boolean parsesArrayValue() { @Override public void parse(DocumentParserContext context) throws IOException { + if (RANK_VECTORS_FEATURE.check(licenseState) == false) { + throw LicenseUtils.newComplianceException("Rank Vectors"); + } if (context.doc().getByKey(fieldType().name()) != null) { throw new IllegalArgumentException( "Field [" @@ -281,10 +285,10 @@ public void parse(DocumentParserContext context) throws IOException { fieldType().name(), fieldType().elementType, currentDims, - indexCreatedVersion, + licenseState, fieldType().meta() ); - Mapper update = new RankVectorsFieldMapper(leafName(), updatedFieldType, builderParams, indexCreatedVersion); + Mapper update = new RankVectorsFieldMapper(leafName(), updatedFieldType, builderParams, indexCreatedVersion, licenseState); context.addDynamicMapper(update); return; } @@ -366,12 +370,12 @@ protected String contentType() { @Override public FieldMapper.Builder getMergeBuilder() { - return new RankVectorsFieldMapper.Builder(leafName(), indexCreatedVersion).init(this); + return new Builder(leafName(), indexCreatedVersion, licenseState).init(this); } @Override protected SyntheticSourceSupport syntheticSourceSupport() { - return new SyntheticSourceSupport.Native(new RankVectorsFieldMapper.DocValuesSyntheticFieldLoader()); + return new SyntheticSourceSupport.Native(new DocValuesSyntheticFieldLoader()); } private class DocValuesSyntheticFieldLoader extends SourceLoader.DocValuesBasedSyntheticFieldLoader { diff --git a/server/src/main/java/org/elasticsearch/index/mapper/vectors/RankVectorsIndexFieldData.java b/x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/mapper/RankVectorsIndexFieldData.java similarity index 76% rename from server/src/main/java/org/elasticsearch/index/mapper/vectors/RankVectorsIndexFieldData.java rename to x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/mapper/RankVectorsIndexFieldData.java index 7f54d2b9a8ad8..7ec426b904ce0 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/vectors/RankVectorsIndexFieldData.java +++ b/x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/mapper/RankVectorsIndexFieldData.java @@ -1,20 +1,18 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ -package org.elasticsearch.index.mapper.vectors; +package org.elasticsearch.xpack.rank.vectors.mapper; import org.apache.lucene.index.LeafReaderContext; import org.apache.lucene.search.SortField; import org.elasticsearch.common.util.BigArrays; -import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.IndexFieldData; import org.elasticsearch.index.fielddata.IndexFieldDataCache; +import org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper; import org.elasticsearch.indices.breaker.CircuitBreakerService; import org.elasticsearch.search.DocValueFormat; import org.elasticsearch.search.MultiValueMode; @@ -26,19 +24,16 @@ public class RankVectorsIndexFieldData implements IndexFieldData build(IndexFieldDataCache cache, CircuitBreakerService breakerService) { - return new RankVectorsIndexFieldData(name, dims, valuesSourceType, indexVersion, elementType); + return new RankVectorsIndexFieldData(name, dims, valuesSourceType, elementType); } } } diff --git a/x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/script/RankVectorsPainlessExtension.java b/x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/script/RankVectorsPainlessExtension.java new file mode 100644 index 0000000000000..5893452f5fdf8 --- /dev/null +++ b/x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/script/RankVectorsPainlessExtension.java @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +package org.elasticsearch.xpack.rank.vectors.script; + +import org.elasticsearch.painless.spi.PainlessExtension; +import org.elasticsearch.painless.spi.Whitelist; +import org.elasticsearch.painless.spi.WhitelistLoader; +import org.elasticsearch.script.ScoreScript; +import org.elasticsearch.script.ScriptContext; + +import java.util.List; +import java.util.Map; + +public class RankVectorsPainlessExtension implements PainlessExtension { + private static final Whitelist WHITELIST = WhitelistLoader.loadFromResourceFiles( + RankVectorsPainlessExtension.class, + "rank_vector_whitelist.txt" + ); + + @Override + public Map, List> getContextWhitelists() { + return Map.of(ScoreScript.CONTEXT, List.of(WHITELIST)); + } +} diff --git a/server/src/main/java/org/elasticsearch/script/RankVectorsScoreScriptUtils.java b/x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/script/RankVectorsScoreScriptUtils.java similarity index 97% rename from server/src/main/java/org/elasticsearch/script/RankVectorsScoreScriptUtils.java rename to x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/script/RankVectorsScoreScriptUtils.java index 2d11641cb5aa7..3d692db08ff9e 100644 --- a/server/src/main/java/org/elasticsearch/script/RankVectorsScoreScriptUtils.java +++ b/x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/script/RankVectorsScoreScriptUtils.java @@ -1,16 +1,15 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ -package org.elasticsearch.script; +package org.elasticsearch.xpack.rank.vectors.script; import org.elasticsearch.ExceptionsHelper; import org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper; +import org.elasticsearch.script.ScoreScript; import org.elasticsearch.script.field.vectors.DenseVector; import org.elasticsearch.script.field.vectors.RankVectorsDocValuesField; diff --git a/x-pack/plugin/rank-vectors/src/main/resources/META-INF/services/org.elasticsearch.features.FeatureSpecification b/x-pack/plugin/rank-vectors/src/main/resources/META-INF/services/org.elasticsearch.features.FeatureSpecification new file mode 100644 index 0000000000000..388dbe7dead96 --- /dev/null +++ b/x-pack/plugin/rank-vectors/src/main/resources/META-INF/services/org.elasticsearch.features.FeatureSpecification @@ -0,0 +1,8 @@ +# +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. +# + +org.elasticsearch.xpack.rank.vectors.RankVectorsFeatures diff --git a/x-pack/plugin/rank-vectors/src/main/resources/META-INF/services/org.elasticsearch.painless.spi.PainlessExtension b/x-pack/plugin/rank-vectors/src/main/resources/META-INF/services/org.elasticsearch.painless.spi.PainlessExtension new file mode 100644 index 0000000000000..06c77434c77a6 --- /dev/null +++ b/x-pack/plugin/rank-vectors/src/main/resources/META-INF/services/org.elasticsearch.painless.spi.PainlessExtension @@ -0,0 +1 @@ +org.elasticsearch.xpack.rank.vectors.script.RankVectorsPainlessExtension diff --git a/x-pack/plugin/rank-vectors/src/main/resources/org/elasticsearch/xpack/rank/vectors/script/rank_vector_whitelist.txt b/x-pack/plugin/rank-vectors/src/main/resources/org/elasticsearch/xpack/rank/vectors/script/rank_vector_whitelist.txt new file mode 100644 index 0000000000000..ce3d04f73dea8 --- /dev/null +++ b/x-pack/plugin/rank-vectors/src/main/resources/org/elasticsearch/xpack/rank/vectors/script/rank_vector_whitelist.txt @@ -0,0 +1,13 @@ +# +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. +# + +# This file contains a rank vectors whitelist for functions to be used in Score context + +static_import { + double maxSimDotProduct(org.elasticsearch.script.ScoreScript, Object, String) bound_to org.elasticsearch.xpack.rank.vectors.script.RankVectorsScoreScriptUtils$MaxSimDotProduct + double maxSimInvHamming(org.elasticsearch.script.ScoreScript, Object, String) bound_to org.elasticsearch.xpack.rank.vectors.script.RankVectorsScoreScriptUtils$MaxSimInvHamming +} diff --git a/x-pack/plugin/rank-vectors/src/test/java/org/elasticsearch/xpack/rank/vectors/LocalStateRankVectors.java b/x-pack/plugin/rank-vectors/src/test/java/org/elasticsearch/xpack/rank/vectors/LocalStateRankVectors.java new file mode 100644 index 0000000000000..ba085b8f0d705 --- /dev/null +++ b/x-pack/plugin/rank-vectors/src/test/java/org/elasticsearch/xpack/rank/vectors/LocalStateRankVectors.java @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +package org.elasticsearch.xpack.rank.vectors; + +import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.index.mapper.Mapper; +import org.elasticsearch.license.License; +import org.elasticsearch.license.XPackLicenseState; +import org.elasticsearch.license.internal.XPackLicenseStatus; +import org.elasticsearch.xpack.core.LocalStateCompositeXPackPlugin; + +import java.util.Map; + +public class LocalStateRankVectors extends LocalStateCompositeXPackPlugin { + + private final RankVectorsPlugin rankVectorsPlugin; + private final XPackLicenseState licenseState = new XPackLicenseState( + System::currentTimeMillis, + new XPackLicenseStatus(License.OperationMode.TRIAL, true, null) + ); + + public LocalStateRankVectors(Settings settings) { + super(settings, null); + LocalStateRankVectors thisVar = this; + rankVectorsPlugin = new RankVectorsPlugin() { + @Override + protected XPackLicenseState getLicenseState() { + return licenseState; + } + }; + } + + @Override + public Map getMappers() { + return rankVectorsPlugin.getMappers(); + } +} diff --git a/server/src/test/java/org/elasticsearch/index/mapper/vectors/RankVectorsFieldMapperTests.java b/x-pack/plugin/rank-vectors/src/test/java/org/elasticsearch/xpack/rank/vectors/mapper/RankVectorsFieldMapperTests.java similarity index 97% rename from server/src/test/java/org/elasticsearch/index/mapper/vectors/RankVectorsFieldMapperTests.java rename to x-pack/plugin/rank-vectors/src/test/java/org/elasticsearch/xpack/rank/vectors/mapper/RankVectorsFieldMapperTests.java index e81c28cbcc444..25264976c58a5 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/vectors/RankVectorsFieldMapperTests.java +++ b/x-pack/plugin/rank-vectors/src/test/java/org/elasticsearch/xpack/rank/vectors/mapper/RankVectorsFieldMapperTests.java @@ -1,13 +1,11 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ -package org.elasticsearch.index.mapper.vectors; +package org.elasticsearch.xpack.rank.vectors.mapper; import org.apache.lucene.document.BinaryDocValuesField; import org.apache.lucene.index.IndexableField; @@ -29,18 +27,21 @@ import org.elasticsearch.index.mapper.ValueFetcher; import org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper.ElementType; import org.elasticsearch.index.query.SearchExecutionContext; +import org.elasticsearch.plugins.Plugin; import org.elasticsearch.search.lookup.Source; import org.elasticsearch.search.lookup.SourceProvider; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.xcontent.XContentBuilder; +import org.elasticsearch.xpack.rank.vectors.LocalStateRankVectors; import org.junit.AssumptionViolatedException; -import org.junit.BeforeClass; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.FloatBuffer; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.Set; import java.util.stream.Stream; @@ -53,11 +54,6 @@ public class RankVectorsFieldMapperTests extends MapperTestCase { - @BeforeClass - public static void setup() { - assumeTrue("Requires rank vectors support", RankVectorsFieldMapper.FEATURE_FLAG.isEnabled()); - } - private final ElementType elementType; private final int dims; @@ -66,6 +62,11 @@ public RankVectorsFieldMapperTests() { this.dims = ElementType.BIT == elementType ? 4 * Byte.SIZE : 4; } + @Override + protected Collection getPlugins() { + return Collections.singletonList(new LocalStateRankVectors(SETTINGS)); + } + @Override protected void minimalMapping(XContentBuilder b) throws IOException { indexMapping(b, IndexVersion.current()); diff --git a/server/src/test/java/org/elasticsearch/index/mapper/vectors/RankVectorsFieldTypeTests.java b/x-pack/plugin/rank-vectors/src/test/java/org/elasticsearch/xpack/rank/vectors/mapper/RankVectorsFieldTypeTests.java similarity index 67% rename from server/src/test/java/org/elasticsearch/index/mapper/vectors/RankVectorsFieldTypeTests.java rename to x-pack/plugin/rank-vectors/src/test/java/org/elasticsearch/xpack/rank/vectors/mapper/RankVectorsFieldTypeTests.java index b4cbbc4730d7c..59c5b0414910d 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/vectors/RankVectorsFieldTypeTests.java +++ b/x-pack/plugin/rank-vectors/src/test/java/org/elasticsearch/xpack/rank/vectors/mapper/RankVectorsFieldTypeTests.java @@ -1,20 +1,21 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ -package org.elasticsearch.index.mapper.vectors; +package org.elasticsearch.xpack.rank.vectors.mapper; -import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.FieldDataContext; import org.elasticsearch.index.mapper.FieldTypeTestCase; import org.elasticsearch.index.mapper.MappedFieldType; -import org.elasticsearch.index.mapper.vectors.RankVectorsFieldMapper.RankVectorsFieldType; -import org.junit.BeforeClass; +import org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper; +import org.elasticsearch.license.License; +import org.elasticsearch.license.XPackLicenseState; +import org.elasticsearch.license.internal.XPackLicenseStatus; +import org.elasticsearch.search.DocValueFormat; +import org.elasticsearch.xpack.rank.vectors.mapper.RankVectorsFieldMapper.RankVectorsFieldType; import java.io.IOException; import java.util.Collections; @@ -25,23 +26,17 @@ public class RankVectorsFieldTypeTests extends FieldTypeTestCase { - @BeforeClass - public static void setup() { - assumeTrue("Requires rank-vectors support", RankVectorsFieldMapper.FEATURE_FLAG.isEnabled()); - } + private final XPackLicenseState licenseState = new XPackLicenseState( + System::currentTimeMillis, + new XPackLicenseStatus(License.OperationMode.TRIAL, true, null) + ); private RankVectorsFieldType createFloatFieldType() { - return new RankVectorsFieldType( - "f", - DenseVectorFieldMapper.ElementType.FLOAT, - BBQ_MIN_DIMS, - IndexVersion.current(), - Collections.emptyMap() - ); + return new RankVectorsFieldType("f", DenseVectorFieldMapper.ElementType.FLOAT, BBQ_MIN_DIMS, licenseState, Collections.emptyMap()); } - private RankVectorsFieldType createByteFieldType() { - return new RankVectorsFieldType("f", DenseVectorFieldMapper.ElementType.BYTE, 5, IndexVersion.current(), Collections.emptyMap()); + private RankVectorsFieldMapper.RankVectorsFieldType createByteFieldType() { + return new RankVectorsFieldType("f", DenseVectorFieldMapper.ElementType.BYTE, 5, licenseState, Collections.emptyMap()); } public void testHasDocValues() { @@ -84,9 +79,9 @@ public void testFielddataBuilder() { public void testDocValueFormat() { RankVectorsFieldType fft = createFloatFieldType(); - expectThrows(IllegalArgumentException.class, () -> fft.docValueFormat(null, null)); + assertEquals(DocValueFormat.DENSE_VECTOR, fft.docValueFormat(null, null)); RankVectorsFieldType bft = createByteFieldType(); - expectThrows(IllegalArgumentException.class, () -> bft.docValueFormat(null, null)); + assertEquals(DocValueFormat.DENSE_VECTOR, bft.docValueFormat(null, null)); } public void testFetchSourceValue() throws IOException { diff --git a/server/src/test/java/org/elasticsearch/index/mapper/vectors/RankVectorsScriptDocValuesTests.java b/x-pack/plugin/rank-vectors/src/test/java/org/elasticsearch/xpack/rank/vectors/mapper/RankVectorsScriptDocValuesTests.java similarity index 95% rename from server/src/test/java/org/elasticsearch/index/mapper/vectors/RankVectorsScriptDocValuesTests.java rename to x-pack/plugin/rank-vectors/src/test/java/org/elasticsearch/xpack/rank/vectors/mapper/RankVectorsScriptDocValuesTests.java index c38ed0f60f0ae..f0b00849557bd 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/vectors/RankVectorsScriptDocValuesTests.java +++ b/x-pack/plugin/rank-vectors/src/test/java/org/elasticsearch/xpack/rank/vectors/mapper/RankVectorsScriptDocValuesTests.java @@ -1,24 +1,22 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ -package org.elasticsearch.index.mapper.vectors; +package org.elasticsearch.xpack.rank.vectors.mapper; import org.apache.lucene.index.BinaryDocValues; import org.apache.lucene.util.BytesRef; import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper.ElementType; +import org.elasticsearch.index.mapper.vectors.RankVectorsScriptDocValues; import org.elasticsearch.script.field.vectors.ByteRankVectorsDocValuesField; import org.elasticsearch.script.field.vectors.FloatRankVectorsDocValuesField; import org.elasticsearch.script.field.vectors.RankVectors; import org.elasticsearch.script.field.vectors.RankVectorsDocValuesField; import org.elasticsearch.test.ESTestCase; -import org.junit.BeforeClass; import java.io.IOException; import java.nio.ByteBuffer; @@ -29,11 +27,6 @@ public class RankVectorsScriptDocValuesTests extends ESTestCase { - @BeforeClass - public static void setup() { - assumeTrue("Requires rank-vectors support", RankVectorsFieldMapper.FEATURE_FLAG.isEnabled()); - } - public void testFloatGetVectorValueAndGetMagnitude() throws IOException { int dims = 3; float[][][] vectors = { { { 1, 1, 1 }, { 1, 1, 2 }, { 1, 1, 3 } }, { { 1, 0, 2 } } }; diff --git a/server/src/test/java/org/elasticsearch/script/RankVectorsScoreScriptUtilsTests.java b/x-pack/plugin/rank-vectors/src/test/java/org/elasticsearch/xpack/rank/vectors/script/RankVectorsScoreScriptUtilsTests.java similarity index 93% rename from server/src/test/java/org/elasticsearch/script/RankVectorsScoreScriptUtilsTests.java rename to x-pack/plugin/rank-vectors/src/test/java/org/elasticsearch/xpack/rank/vectors/script/RankVectorsScoreScriptUtilsTests.java index 917cc2069a293..da0340a22c074 100644 --- a/server/src/test/java/org/elasticsearch/script/RankVectorsScoreScriptUtilsTests.java +++ b/x-pack/plugin/rank-vectors/src/test/java/org/elasticsearch/xpack/rank/vectors/script/RankVectorsScoreScriptUtilsTests.java @@ -1,26 +1,23 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ -package org.elasticsearch.script; +package org.elasticsearch.xpack.rank.vectors.script; import org.apache.lucene.util.VectorUtil; import org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper.ElementType; -import org.elasticsearch.index.mapper.vectors.RankVectorsFieldMapper; -import org.elasticsearch.index.mapper.vectors.RankVectorsScriptDocValuesTests; -import org.elasticsearch.script.RankVectorsScoreScriptUtils.MaxSimDotProduct; -import org.elasticsearch.script.RankVectorsScoreScriptUtils.MaxSimInvHamming; +import org.elasticsearch.script.ScoreScript; import org.elasticsearch.script.field.vectors.BitRankVectorsDocValuesField; import org.elasticsearch.script.field.vectors.ByteRankVectorsDocValuesField; import org.elasticsearch.script.field.vectors.FloatRankVectorsDocValuesField; import org.elasticsearch.script.field.vectors.RankVectorsDocValuesField; import org.elasticsearch.test.ESTestCase; -import org.junit.BeforeClass; +import org.elasticsearch.xpack.rank.vectors.mapper.RankVectorsScriptDocValuesTests; +import org.elasticsearch.xpack.rank.vectors.script.RankVectorsScoreScriptUtils.MaxSimDotProduct; +import org.elasticsearch.xpack.rank.vectors.script.RankVectorsScoreScriptUtils.MaxSimInvHamming; import java.io.IOException; import java.util.Arrays; @@ -33,11 +30,6 @@ public class RankVectorsScoreScriptUtilsTests extends ESTestCase { - @BeforeClass - public static void setup() { - assumeTrue("Requires rank-vectors support", RankVectorsFieldMapper.FEATURE_FLAG.isEnabled()); - } - public void testFloatMultiVectorClassBindings() throws IOException { String fieldName = "vector"; int dims = 5; @@ -88,7 +80,7 @@ public void testFloatMultiVectorClassBindings() throws IOException { // Check each function rejects query vectors with the wrong dimension IllegalArgumentException e = expectThrows( IllegalArgumentException.class, - () -> new RankVectorsScoreScriptUtils.MaxSimDotProduct(scoreScript, invalidQueryVector, fieldName) + () -> new MaxSimDotProduct(scoreScript, invalidQueryVector, fieldName) ); assertThat( e.getMessage(), @@ -336,7 +328,4 @@ public void testByteBoundaries() throws IOException { } } - public void testDimMismatch() throws IOException { - - } } diff --git a/server/src/test/java/org/elasticsearch/script/field/vectors/RankVectorsTests.java b/x-pack/plugin/rank-vectors/src/test/java/org/elasticsearch/xpack/rank/vectors/script/RankVectorsTests.java similarity index 80% rename from server/src/test/java/org/elasticsearch/script/field/vectors/RankVectorsTests.java rename to x-pack/plugin/rank-vectors/src/test/java/org/elasticsearch/xpack/rank/vectors/script/RankVectorsTests.java index ca7608b10aed9..570e2a59926aa 100644 --- a/server/src/test/java/org/elasticsearch/script/field/vectors/RankVectorsTests.java +++ b/x-pack/plugin/rank-vectors/src/test/java/org/elasticsearch/xpack/rank/vectors/script/RankVectorsTests.java @@ -1,19 +1,19 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. */ -package org.elasticsearch.script.field.vectors; +package org.elasticsearch.xpack.rank.vectors.script; import org.apache.lucene.util.BytesRef; import org.apache.lucene.util.VectorUtil; -import org.elasticsearch.index.mapper.vectors.RankVectorsFieldMapper; +import org.elasticsearch.script.field.vectors.ByteRankVectors; +import org.elasticsearch.script.field.vectors.FloatRankVectors; +import org.elasticsearch.script.field.vectors.RankVectors; +import org.elasticsearch.script.field.vectors.VectorIterator; import org.elasticsearch.test.ESTestCase; -import org.junit.BeforeClass; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -21,11 +21,6 @@ public class RankVectorsTests extends ESTestCase { - @BeforeClass - public static void setup() { - assumeTrue("Requires rank-vectors support", RankVectorsFieldMapper.FEATURE_FLAG.isEnabled()); - } - public void testByteUnsupported() { int count = randomIntBetween(1, 16); int dims = randomIntBetween(1, 16); diff --git a/rest-api-spec/src/yamlRestTest/resources/rest-api-spec/test/search.vectors/30_rank_vectors.yml b/x-pack/plugin/src/yamlRestTest/resources/rest-api-spec/test/rank_vectors/rank_vectors.yml similarity index 92% rename from rest-api-spec/src/yamlRestTest/resources/rest-api-spec/test/search.vectors/30_rank_vectors.yml rename to x-pack/plugin/src/yamlRestTest/resources/rest-api-spec/test/rank_vectors/rank_vectors.yml index ecf34f46c3383..791712ee925a5 100644 --- a/rest-api-spec/src/yamlRestTest/resources/rest-api-spec/test/search.vectors/30_rank_vectors.yml +++ b/x-pack/plugin/src/yamlRestTest/resources/rest-api-spec/test/rank_vectors/rank_vectors.yml @@ -1,11 +1,7 @@ setup: - requires: - capabilities: - - method: POST - path: /_search - capabilities: [ rank_vectors_field_mapper ] - test_runner_features: capabilities - reason: "Support for rank vectors field mapper capability required" + cluster_features: [ "rank_vectors" ] + reason: "requires rank_vectors feature" --- "Test create multi-vector field": - do: diff --git a/modules/lang-painless/src/yamlRestTest/resources/rest-api-spec/test/painless/181_rank_vectors_dv_fields_api.yml b/x-pack/plugin/src/yamlRestTest/resources/rest-api-spec/test/rank_vectors/rank_vectors_dv_fields_api.yml similarity index 71% rename from modules/lang-painless/src/yamlRestTest/resources/rest-api-spec/test/painless/181_rank_vectors_dv_fields_api.yml rename to x-pack/plugin/src/yamlRestTest/resources/rest-api-spec/test/rank_vectors/rank_vectors_dv_fields_api.yml index f37e554fca7bf..bcfb9bcd79b90 100644 --- a/modules/lang-painless/src/yamlRestTest/resources/rest-api-spec/test/painless/181_rank_vectors_dv_fields_api.yml +++ b/x-pack/plugin/src/yamlRestTest/resources/rest-api-spec/test/rank_vectors/rank_vectors_dv_fields_api.yml @@ -1,11 +1,7 @@ setup: - requires: - capabilities: - - method: POST - path: /_search - capabilities: [ rank_vectors_script_access ] - test_runner_features: capabilities - reason: "Support for rank vector field script access capability required" + cluster_features: [ "rank_vectors" ] + reason: "requires rank_vectors feature" - skip: features: headers @@ -17,6 +13,8 @@ setup: number_of_shards: 1 mappings: properties: + id: + type: keyword vector: type: rank_vectors dims: 5 @@ -33,6 +31,7 @@ setup: index: test-index id: "1" body: + id: "1" vector: [[230.0, 300.33, -34.8988, 15.555, -200.0], [-0.5, 100.0, -13, 14.8, -156.0]] byte_vector: [[8, 5, -15, 1, -7], [-1, 115, -3, 4, -128]] bit_vector: [[8, 5, -15, 1, -7], [-1, 115, -3, 4, -128]] @@ -42,6 +41,7 @@ setup: index: test-index id: "3" body: + id: "3" vector: [[0.5, 111.3, -13.0, 14.8, -156.0]] byte_vector: [[2, 18, -5, 0, -124]] bit_vector: [[2, 18, -5, 0, -124]] @@ -176,3 +176,35 @@ setup: - match: {hits.hits.1._id: "3"} - close_to: {hits.hits.1._score: {value: 2, error: 0.01}} +--- +"Test doc value vector access": + - skip: + features: close_to + + - do: + search: + _source: false + index: test-index + body: + docvalue_fields: [name, bit_vector, byte_vector, vector] + sort: [{id: "asc"}] + + - match: {hits.hits.0._id: "1"} + # vector: [[230.0, 300.33, -34.8988, 15.555, -200.0], [-0.5, 100.0, -13, 14.8, -156.0]] + - close_to: {hits.hits.0.fields.vector.0.0.0: {value: 230, error: 0.0001}} + - close_to: {hits.hits.0.fields.vector.0.0.1: {value: 300.33, error: 0.0001}} + - close_to: {hits.hits.0.fields.vector.0.0.2: {value: -34.8988, error: 0.0001}} + - close_to: {hits.hits.0.fields.vector.0.0.3: {value: 15.555, error: 0.0001}} + - close_to: {hits.hits.0.fields.vector.0.0.4: {value: -200, error: 0.0001}} + - close_to: {hits.hits.0.fields.vector.0.1.0: {value: -0.5, error: 0.0001}} + - close_to: {hits.hits.0.fields.vector.0.1.1: {value: 100, error: 0.0001}} + - close_to: {hits.hits.0.fields.vector.0.1.2: {value: -13, error: 0.0001}} + - close_to: {hits.hits.0.fields.vector.0.1.3: {value: 14.8, error: 0.0001}} + - close_to: {hits.hits.0.fields.vector.0.1.4: {value: -156, error: 0.0001}} + + # byte_vector: [[8, 5, -15, 1, -7], [-1, 115, -3, 4, -128]] + - match: {hits.hits.0.fields.byte_vector.0.0: [8, 5, -15, 1, -7]} + - match: {hits.hits.0.fields.bit_vector.0.0: [8, 5, -15, 1, -7]} + - match: {hits.hits.0.fields.byte_vector.0.1: [-1, 115, -3, 4, -128]} + - match: {hits.hits.0.fields.bit_vector.0.1: [-1, 115, -3, 4, -128]} + diff --git a/modules/lang-painless/src/yamlRestTest/resources/rest-api-spec/test/painless/141_rank_vectors_max_sim.yml b/x-pack/plugin/src/yamlRestTest/resources/rest-api-spec/test/rank_vectors/rank_vectors_max_sim.yml similarity index 95% rename from modules/lang-painless/src/yamlRestTest/resources/rest-api-spec/test/painless/141_rank_vectors_max_sim.yml rename to x-pack/plugin/src/yamlRestTest/resources/rest-api-spec/test/rank_vectors/rank_vectors_max_sim.yml index 7c46fbc9a26a5..acaf1b99b626e 100644 --- a/modules/lang-painless/src/yamlRestTest/resources/rest-api-spec/test/painless/141_rank_vectors_max_sim.yml +++ b/x-pack/plugin/src/yamlRestTest/resources/rest-api-spec/test/rank_vectors/rank_vectors_max_sim.yml @@ -1,11 +1,7 @@ setup: - requires: - capabilities: - - method: POST - path: /_search - capabilities: [ rank_vectors_script_max_sim_with_bugfix ] - test_runner_features: capabilities - reason: "Support for rank vectors max-sim functions capability required" + cluster_features: [ "rank_vectors" ] + reason: "requires rank_vectors feature" - skip: features: headers From 17111e12587d448c8ad09c179e020c8ef3678143 Mon Sep 17 00:00:00 2001 From: shainaraskas <58563081+shainaraskas@users.noreply.github.com> Date: Mon, 6 Jan 2025 12:07:15 -0500 Subject: [PATCH 12/35] [DOCS] Concept cleanup 2 - ES settings (#119373) --- docs/plugins/discovery-ec2.asciidoc | 4 +- docs/reference/cat/nodeattrs.asciidoc | 2 +- docs/reference/cluster.asciidoc | 2 +- docs/reference/commands/node-tool.asciidoc | 4 +- docs/reference/data-management.asciidoc | 2 +- .../migrate-index-allocation-filters.asciidoc | 2 +- .../data-store-architecture.asciidoc | 8 +- .../data-streams/downsampling.asciidoc | 39 ++ docs/reference/datatiers.asciidoc | 2 +- .../high-availability/cluster-design.asciidoc | 10 +- .../ilm/apis/migrate-to-data-tiers.asciidoc | 2 +- .../allocation/data_tier_allocation.asciidoc | 2 +- .../allocation/filtering.asciidoc | 4 +- .../indices/downsample-data-stream.asciidoc | 44 +- docs/reference/modules/cluster.asciidoc | 18 +- .../cluster/allocation_awareness.asciidoc | 15 +- .../cluster/allocation_filtering.asciidoc | 6 +- .../modules/cluster/disk_allocator.asciidoc | 76 +-- docs/reference/modules/cluster/misc.asciidoc | 3 + .../modules/discovery/bootstrapping.asciidoc | 2 +- .../modules/discovery/publishing.asciidoc | 33 +- .../modules/discovery/voting.asciidoc | 2 +- docs/reference/modules/gateway.asciidoc | 17 +- .../modules/indices/fielddata.asciidoc | 18 +- .../modules/indices/request_cache.asciidoc | 137 +----- docs/reference/modules/network.asciidoc | 19 + docs/reference/modules/node.asciidoc | 423 ++--------------- .../modules/remote-clusters.asciidoc | 2 +- docs/reference/modules/shard-ops.asciidoc | 4 +- docs/reference/monitoring/index.asciidoc | 3 + docs/reference/node-roles.asciidoc | 437 ++++++++++++++++++ .../reference/path-settings-overview.asciidoc | 112 +++++ .../search/multi-search-template-api.asciidoc | 2 +- docs/reference/search/multi-search.asciidoc | 2 +- docs/reference/settings/ml-settings.asciidoc | 13 +- docs/reference/setup.asciidoc | 18 +- docs/reference/setup/add-nodes.asciidoc | 2 +- .../setup/advanced-configuration.asciidoc | 40 +- .../setup/important-settings.asciidoc | 10 + .../important-settings/cluster-name.asciidoc | 1 - .../important-settings/error-file.asciidoc | 1 - .../important-settings/gc-logging.asciidoc | 4 +- .../heap-dump-path.asciidoc | 1 - .../important-settings/node-name.asciidoc | 4 - .../important-settings/path-settings.asciidoc | 115 +---- docs/reference/setup/logging-config.asciidoc | 5 +- docs/reference/shard-request-cache.asciidoc | 134 ++++++ .../apis/restore-snapshot-api.asciidoc | 2 +- .../snapshot-restore/take-snapshot.asciidoc | 2 +- docs/reference/transform/setup.asciidoc | 2 +- .../upgrade/disable-shard-alloc.asciidoc | 2 +- 51 files changed, 958 insertions(+), 856 deletions(-) create mode 100644 docs/reference/node-roles.asciidoc create mode 100644 docs/reference/path-settings-overview.asciidoc create mode 100644 docs/reference/shard-request-cache.asciidoc diff --git a/docs/plugins/discovery-ec2.asciidoc b/docs/plugins/discovery-ec2.asciidoc index 44acba4752aaa..164e3398d7a4f 100644 --- a/docs/plugins/discovery-ec2.asciidoc +++ b/docs/plugins/discovery-ec2.asciidoc @@ -241,7 +241,7 @@ The `discovery-ec2` plugin can automatically set the `aws_availability_zone` node attribute to the availability zone of each node. This node attribute allows you to ensure that each shard has copies allocated redundantly across multiple availability zones by using the -{ref}/modules-cluster.html#shard-allocation-awareness[Allocation Awareness] +{ref}/shard-allocation-awareness.html#[Allocation Awareness] feature. In order to enable the automatic definition of the `aws_availability_zone` @@ -333,7 +333,7 @@ labelled as `Moderate` or `Low`. * It is a good idea to distribute your nodes across multiple https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html[availability -zones] and use {ref}/modules-cluster.html#shard-allocation-awareness[shard +zones] and use {ref}/shard-allocation-awareness.html[shard allocation awareness] to ensure that each shard has copies in more than one availability zone. diff --git a/docs/reference/cat/nodeattrs.asciidoc b/docs/reference/cat/nodeattrs.asciidoc index 0d354ab570e93..6c8093846030c 100644 --- a/docs/reference/cat/nodeattrs.asciidoc +++ b/docs/reference/cat/nodeattrs.asciidoc @@ -17,7 +17,7 @@ console. They are _not_ intended for use by applications. For application consumption, use the <>. ==== -Returns information about <>. +Returns information about <>. [[cat-nodeattrs-api-request]] ==== {api-request-title} diff --git a/docs/reference/cluster.asciidoc b/docs/reference/cluster.asciidoc index b4359c2bf4fbb..398ece616fe07 100644 --- a/docs/reference/cluster.asciidoc +++ b/docs/reference/cluster.asciidoc @@ -35,7 +35,7 @@ one of the following: master-eligible nodes, all data nodes, all ingest nodes, all voting-only nodes, all machine learning nodes, and all coordinating-only nodes. * a pair of patterns, using `*` wildcards, of the form `attrname:attrvalue`, - which adds to the subset all nodes with a custom node attribute whose name + which adds to the subset all nodes with a <> whose name and value match the respective patterns. Custom node attributes are configured by setting properties in the configuration file of the form `node.attr.attrname: attrvalue`. diff --git a/docs/reference/commands/node-tool.asciidoc b/docs/reference/commands/node-tool.asciidoc index cdd2bb8f0f9d7..265006aa3df17 100644 --- a/docs/reference/commands/node-tool.asciidoc +++ b/docs/reference/commands/node-tool.asciidoc @@ -23,8 +23,8 @@ bin/elasticsearch-node repurpose|unsafe-bootstrap|detach-cluster|override-versio This tool has a number of modes: * `elasticsearch-node repurpose` can be used to delete unwanted data from a - node if it used to be a <> or a - <> but has been repurposed not to have one + node if it used to be a <> or a + <> but has been repurposed not to have one or other of these roles. * `elasticsearch-node remove-settings` can be used to remove persistent settings diff --git a/docs/reference/data-management.asciidoc b/docs/reference/data-management.asciidoc index 7ef021dc6370b..849a14e00e698 100644 --- a/docs/reference/data-management.asciidoc +++ b/docs/reference/data-management.asciidoc @@ -43,7 +43,7 @@ Data older than this period can be deleted by {es} at a later time. **Elastic Curator** is a tool that allows you to manage your indices and snapshots using user-defined filters and predefined actions. If ILM provides the functionality to manage your index lifecycle, and you have at least a Basic license, consider using ILM in place of Curator. Many stack components make use of ILM by default. {curator-ref-current}/ilm.html[Learn more]. -NOTE: <> is a deprecated Elasticsearch feature that allows you to manage the amount of data that is stored in your cluster, similar to the downsampling functionality of {ilm-init} and data stream lifecycle. This feature should not be used for new deployments. +NOTE: <> is a deprecated {es} feature that allows you to manage the amount of data that is stored in your cluster, similar to the downsampling functionality of {ilm-init} and data stream lifecycle. This feature should not be used for new deployments. [TIP] ==== diff --git a/docs/reference/data-management/migrate-index-allocation-filters.asciidoc b/docs/reference/data-management/migrate-index-allocation-filters.asciidoc index 85d42e4105a92..ee7d5640d53df 100644 --- a/docs/reference/data-management/migrate-index-allocation-filters.asciidoc +++ b/docs/reference/data-management/migrate-index-allocation-filters.asciidoc @@ -2,7 +2,7 @@ [[migrate-index-allocation-filters]] == Migrate index allocation filters to node roles -If you currently use custom node attributes and +If you currently use <> and <> to move indices through <> in a https://www.elastic.co/blog/implementing-hot-warm-cold-in-elasticsearch-with-index-lifecycle-management[hot-warm-cold architecture], diff --git a/docs/reference/data-store-architecture.asciidoc b/docs/reference/data-store-architecture.asciidoc index 4ee75c15562ea..a0d504eb117c8 100644 --- a/docs/reference/data-store-architecture.asciidoc +++ b/docs/reference/data-store-architecture.asciidoc @@ -9,10 +9,16 @@ from any node. The topics in this section provides information about the architecture of {es} and how it stores and retrieves data: * <>: Learn about the basic building blocks of an {es} cluster, including nodes, shards, primaries, and replicas. +* <>: Learn about the different roles that nodes can have in an {es} cluster. * <>: Learn how {es} replicates read and write operations across shards and shard copies. * <>: Learn how {es} allocates and balances shards across nodes. +** <>: Learn how to use custom node attributes to distribute shards across different racks or availability zones. +* <>: Learn how {es} caches search requests to improve performance. -- include::nodes-shards.asciidoc[] +include::node-roles.asciidoc[] include::docs/data-replication.asciidoc[leveloffset=-1] -include::modules/shard-ops.asciidoc[] \ No newline at end of file +include::modules/shard-ops.asciidoc[] +include::modules/cluster/allocation_awareness.asciidoc[leveloffset=+1] +include::shard-request-cache.asciidoc[leveloffset=-1] diff --git a/docs/reference/data-streams/downsampling.asciidoc b/docs/reference/data-streams/downsampling.asciidoc index 0b08b0972f9a1..10a0241cf0732 100644 --- a/docs/reference/data-streams/downsampling.asciidoc +++ b/docs/reference/data-streams/downsampling.asciidoc @@ -72,6 +72,45 @@ the granularity of `cold` archival data to monthly or less. .Downsampled metrics series image::images/data-streams/time-series-downsampled.png[align="center"] +[discrete] +[[downsample-api-process]] +==== The downsampling process + +The downsampling operation traverses the source TSDS index and performs the +following steps: + +. Creates a new document for each value of the `_tsid` field and each +`@timestamp` value, rounded to the `fixed_interval` defined in the downsample +configuration. +. For each new document, copies all <> from the source index to the target index. Dimensions in a +TSDS are constant, so this is done only once per bucket. +. For each <> field, computes aggregations +for all documents in the bucket. Depending on the metric type of each metric +field a different set of pre-aggregated results is stored: + +** `gauge`: The `min`, `max`, `sum`, and `value_count` are stored; `value_count` +is stored as type `aggregate_metric_double`. +** `counter`: The `last_value` is stored. +. For all other fields, the most recent value is copied to the target index. + +[discrete] +[[downsample-api-mappings]] +==== Source and target index field mappings + +Fields in the target, downsampled index are created based on fields in the +original source index, as follows: + +. All fields mapped with the `time-series-dimension` parameter are created in +the target downsample index with the same mapping as in the source index. +. All fields mapped with the `time_series_metric` parameter are created +in the target downsample index with the same mapping as in the source +index. An exception is that for fields mapped as `time_series_metric: gauge` +the field type is changed to `aggregate_metric_double`. +. All other fields that are neither dimensions nor metrics (that is, label +fields), are created in the target downsample index with the same mapping +that they had in the source index. + [discrete] [[running-downsampling]] === Running downsampling on time series data diff --git a/docs/reference/datatiers.asciidoc b/docs/reference/datatiers.asciidoc index 65e029d876e6f..066765368ec5e 100644 --- a/docs/reference/datatiers.asciidoc +++ b/docs/reference/datatiers.asciidoc @@ -189,7 +189,7 @@ tier]. [[configure-data-tiers-on-premise]] ==== Self-managed deployments -For self-managed deployments, each node's <> is configured +For self-managed deployments, each node's <> is configured in `elasticsearch.yml`. For example, the highest-performance nodes in a cluster might be assigned to both the hot and content tiers: diff --git a/docs/reference/high-availability/cluster-design.asciidoc b/docs/reference/high-availability/cluster-design.asciidoc index 105c8b236b0b1..d187db83c43f9 100644 --- a/docs/reference/high-availability/cluster-design.asciidoc +++ b/docs/reference/high-availability/cluster-design.asciidoc @@ -87,7 +87,7 @@ the same thing, but it's not necessary to use this feature in such a small cluster. We recommend you set only one of your two nodes to be -<>. This means you can be certain which of your +<>. This means you can be certain which of your nodes is the elected master of the cluster. The cluster can tolerate the loss of the other master-ineligible node. If you set both nodes to master-eligible, two nodes are required for a master election. Since the election will fail if either @@ -164,12 +164,12 @@ cluster that is suitable for production deployments. [[high-availability-cluster-design-three-nodes]] ==== Three-node clusters -If you have three nodes, we recommend they all be <> and +If you have three nodes, we recommend they all be <> and every index that is not a <> should have at least one replica. Nodes are data nodes by default. You may prefer for some indices to have two replicas so that each node has a copy of each shard in those indices. You should also configure each node to be -<> so that any two of them can hold a master +<> so that any two of them can hold a master election without needing to communicate with the third node. Nodes are master-eligible by default. This cluster will be resilient to the loss of any single node. @@ -188,8 +188,8 @@ service provides such a load balancer. Once your cluster grows to more than three nodes, you can start to specialise these nodes according to their responsibilities, allowing you to scale their -resources independently as needed. You can have as many <>, <>, <>, etc. as needed to +resources independently as needed. You can have as many <>, <>, <>, etc. as needed to support your workload. As your cluster grows larger, we recommend using dedicated nodes for each role. This allows you to independently scale resources for each task. diff --git a/docs/reference/ilm/apis/migrate-to-data-tiers.asciidoc b/docs/reference/ilm/apis/migrate-to-data-tiers.asciidoc index 76810170daa19..bbcdd71c45f1a 100644 --- a/docs/reference/ilm/apis/migrate-to-data-tiers.asciidoc +++ b/docs/reference/ilm/apis/migrate-to-data-tiers.asciidoc @@ -11,7 +11,7 @@ For the most up-to-date API details, refer to {api-es}/group/endpoint-ilm[{ilm-cap} APIs]. -- -Switches the indices, ILM policies, and legacy, composable and component templates from using custom node attributes and +Switches the indices, ILM policies, and legacy, composable and component templates from using <> and <> to using <>, and optionally deletes one legacy index template. Using node roles enables {ilm-init} to <> between diff --git a/docs/reference/index-modules/allocation/data_tier_allocation.asciidoc b/docs/reference/index-modules/allocation/data_tier_allocation.asciidoc index d08af21007622..2d59e9be31cd4 100644 --- a/docs/reference/index-modules/allocation/data_tier_allocation.asciidoc +++ b/docs/reference/index-modules/allocation/data_tier_allocation.asciidoc @@ -13,7 +13,7 @@ This setting corresponds to the data node roles: * <> * <> -NOTE: The <> role is not a valid data tier and cannot be used +NOTE: The <> role is not a valid data tier and cannot be used with the `_tier_preference` setting. The frozen tier stores <> exclusively. diff --git a/docs/reference/index-modules/allocation/filtering.asciidoc b/docs/reference/index-modules/allocation/filtering.asciidoc index 07a2455ca1eff..5da8e254cb4f2 100644 --- a/docs/reference/index-modules/allocation/filtering.asciidoc +++ b/docs/reference/index-modules/allocation/filtering.asciidoc @@ -6,7 +6,7 @@ a particular index. These per-index filters are applied in conjunction with <> and <>. -Shard allocation filters can be based on custom node attributes or the built-in +Shard allocation filters can be based on <> or the built-in `_name`, `_host_ip`, `_publish_ip`, `_ip`, `_host`, `_id`, `_tier` and `_tier_preference` attributes. <> uses filters based on custom node attributes to determine how to reallocate shards when moving @@ -114,7 +114,7 @@ The index allocation settings support the following built-in attributes: NOTE: `_tier` filtering is based on <> roles. Only a subset of roles are <> roles, and the generic -<> will match any tier filtering. +<> will match any tier filtering. You can use wildcards when specifying attribute values, for example: diff --git a/docs/reference/indices/downsample-data-stream.asciidoc b/docs/reference/indices/downsample-data-stream.asciidoc index a99d7b246ba43..6354f8e30d254 100644 --- a/docs/reference/indices/downsample-data-stream.asciidoc +++ b/docs/reference/indices/downsample-data-stream.asciidoc @@ -81,6 +81,8 @@ DELETE _index_template/* //// // end::downsample-example[] +Check the <> documentation for an overview, details about the downsampling process, and examples of running downsampling manually and as part of an ILM policy. + [[downsample-api-request]] ==== {api-request-title} @@ -121,44 +123,4 @@ to aggregate the original time series index. For example, `60m` produces a document for each 60 minute (hourly) interval. This follows standard time formatting syntax as used elsewhere in {es}. + -NOTE: Smaller, more granular intervals take up proportionally more space. - -[[downsample-api-process]] -==== The downsampling process - -The downsampling operation traverses the source TSDS index and performs the -following steps: - -. Creates a new document for each value of the `_tsid` field and each -`@timestamp` value, rounded to the `fixed_interval` defined in the downsample -configuration. -. For each new document, copies all <> from the source index to the target index. Dimensions in a -TSDS are constant, so this is done only once per bucket. -. For each <> field, computes aggregations -for all documents in the bucket. Depending on the metric type of each metric -field a different set of pre-aggregated results is stored: - -** `gauge`: The `min`, `max`, `sum`, and `value_count` are stored; `value_count` -is stored as type `aggregate_metric_double`. -** `counter`: The `last_value` is stored. -. For all other fields, the most recent value is copied to the target index. - -[[downsample-api-mappings]] -==== Source and target index field mappings - -Fields in the target, downsampled index are created based on fields in the -original source index, as follows: - -. All fields mapped with the `time-series-dimension` parameter are created in -the target downsample index with the same mapping as in the source index. -. All fields mapped with the `time_series_metric` parameter are created -in the target downsample index with the same mapping as in the source -index. An exception is that for fields mapped as `time_series_metric: gauge` -the field type is changed to `aggregate_metric_double`. -. All other fields that are neither dimensions nor metrics (that is, label -fields), are created in the target downsample index with the same mapping -that they had in the source index. - -Check the <> documentation for an overview and -examples of running downsampling manually and as part of an ILM policy. +NOTE: Smaller, more granular intervals take up proportionally more space. \ No newline at end of file diff --git a/docs/reference/modules/cluster.asciidoc b/docs/reference/modules/cluster.asciidoc index b3eaa5b47c238..cf8e97de5e188 100644 --- a/docs/reference/modules/cluster.asciidoc +++ b/docs/reference/modules/cluster.asciidoc @@ -27,7 +27,23 @@ include::cluster/shards_allocation.asciidoc[] include::cluster/disk_allocator.asciidoc[] -include::cluster/allocation_awareness.asciidoc[] +[[shard-allocation-awareness-settings]] +==== Shard allocation awareness settings + +You can use <> as _awareness attributes_ to enable {es} +to take your physical hardware configuration into account when allocating shards. +If {es} knows which nodes are on the same physical server, in the same rack, or +in the same zone, it can distribute the primary shard and its replica shards to +minimize the risk of losing all shard copies in the event of a failure. <>. + +`cluster.routing.allocation.awareness.attributes`:: + (<>) + The node attributes that {es} should use as awareness attributes. For example, if you have a `rack_id` attribute that specifies the rack in which each node resides, you can set this setting to `rack_id` to ensure that primary and replica shards are not allocated on the same rack. You can specify multiple attributes as a comma-separated list. + +`cluster.routing.allocation.awareness.force.*`:: + (<>) + The shard allocation awareness values that must exist for shards to be reallocated in case of location failure. Learn more about <>. + include::cluster/allocation_filtering.asciidoc[] diff --git a/docs/reference/modules/cluster/allocation_awareness.asciidoc b/docs/reference/modules/cluster/allocation_awareness.asciidoc index 9c6197f9ba40d..34164cd364fc5 100644 --- a/docs/reference/modules/cluster/allocation_awareness.asciidoc +++ b/docs/reference/modules/cluster/allocation_awareness.asciidoc @@ -1,5 +1,5 @@ [[shard-allocation-awareness]] -==== Shard allocation awareness +== Shard allocation awareness You can use custom node attributes as _awareness attributes_ to enable {es} to take your physical hardware configuration into account when allocating shards. @@ -7,12 +7,7 @@ If {es} knows which nodes are on the same physical server, in the same rack, or in the same zone, it can distribute the primary shard and its replica shards to minimize the risk of losing all shard copies in the event of a failure. -When shard allocation awareness is enabled with the -<> -`cluster.routing.allocation.awareness.attributes` setting, shards are only -allocated to nodes that have values set for the specified awareness attributes. -If you use multiple awareness attributes, {es} considers each attribute -separately when allocating shards. +When shard allocation awareness is enabled with the `cluster.routing.allocation.awareness.attributes` setting, shards are only allocated to nodes that have values set for the specified awareness attributes. If you use multiple awareness attributes, {es} considers each attribute separately when allocating shards. NOTE: The number of attribute values determines how many shard copies are allocated in each location. If the number of nodes in each location is @@ -22,11 +17,11 @@ unassigned. TIP: Learn more about <>. [[enabling-awareness]] -===== Enabling shard allocation awareness +=== Enabling shard allocation awareness To enable shard allocation awareness: -. Specify the location of each node with a custom node attribute. For example, +. Specify the location of each node with a <>. For example, if you want Elasticsearch to distribute shards across different racks, you might use an awareness attribute called `rack_id`. + @@ -94,7 +89,7 @@ copies of a particular shard from being allocated in the same location, you can enable forced awareness. [[forced-awareness]] -===== Forced awareness +=== Forced awareness By default, if one location fails, {es} spreads its shards across the remaining locations. This might be undesirable if the cluster does not have sufficient diff --git a/docs/reference/modules/cluster/allocation_filtering.asciidoc b/docs/reference/modules/cluster/allocation_filtering.asciidoc index e70e43682973b..d0d2652059048 100644 --- a/docs/reference/modules/cluster/allocation_filtering.asciidoc +++ b/docs/reference/modules/cluster/allocation_filtering.asciidoc @@ -6,7 +6,7 @@ allocates shards from any index. These cluster wide filters are applied in conjunction with <> and <>. -Shard allocation filters can be based on custom node attributes or the built-in +Shard allocation filters can be based on <> or the built-in `_name`, `_host_ip`, `_publish_ip`, `_ip`, `_host`, `_id` and `_tier` attributes. The `cluster.routing.allocation` settings are <>, enabling live indices to @@ -59,9 +59,9 @@ The cluster allocation settings support the following built-in attributes: NOTE: `_tier` filtering is based on <> roles. Only a subset of roles are <> roles, and the generic -<> will match any tier filtering. +<> will match any tier filtering. a subset of roles that are <> roles, but the generic -<> will match any tier filtering. +<> will match any tier filtering. You can use wildcards when specifying attribute values, for example: diff --git a/docs/reference/modules/cluster/disk_allocator.asciidoc b/docs/reference/modules/cluster/disk_allocator.asciidoc index 02cc48c6e27fc..8efe4c0132e86 100644 --- a/docs/reference/modules/cluster/disk_allocator.asciidoc +++ b/docs/reference/modules/cluster/disk_allocator.asciidoc @@ -41,6 +41,23 @@ on the affected node drops below the high watermark, {es} automatically removes the write block. Refer to <> to resolve persistent watermark errors. +[NOTE] +.Max headroom settings +=================================================== + +Max headroom settings apply only when watermark settings are percentages or ratios. + +A max headroom value is intended to cap the required free disk space before hitting +the respective watermark. This is useful for servers with larger disks, where a percentage or ratio watermark could translate to an overly large free disk space requirement. In this case, the max headroom can be used to cap the required free disk space amount. + +For example, where `cluster.routing.allocation.disk.watermark.flood_stage` is 95% and `cluster.routing.allocation.disk.watermark.flood_stage.max_headroom` is 100GB, this means that: + +* For a smaller disk, e.g., of 100GB, the flood watermark will hit at 95%, meaning at 5GB of free space, since 5GB is smaller than the 100GB max headroom value. +* For a larger disk, e.g., of 100TB, the flood watermark will hit at 100GB of free space. That is because the 95% flood watermark alone would require 5TB of free disk space, but is capped by the max headroom setting to 100GB. + +Max headroom settings have their default values only if their respective watermark settings are not explicitly set. If watermarks are explicitly set, then the max headroom settings do not have their default values, and need to be explicitly set if they are needed. +=================================================== + [[disk-based-shard-allocation-does-not-balance]] [TIP] ==== @@ -100,18 +117,7 @@ is now `true`. The setting will be removed in a future release. + -- (<>) -Controls the flood stage watermark, which defaults to 95%. {es} enforces a read-only index block (`index.blocks.read_only_allow_delete`) on every index that has one or more shards allocated on the node, and that has at least one disk exceeding the flood stage. This setting is a last resort to prevent nodes from running out of disk space. The index block is automatically released when the disk utilization falls below the high watermark. Similarly to the low and high watermark values, it can alternatively be set to a ratio value, e.g., `0.95`, or an absolute byte value. - -An example of resetting the read-only index block on the `my-index-000001` index: - -[source,console] --------------------------------------------------- -PUT /my-index-000001/_settings -{ - "index.blocks.read_only_allow_delete": null -} --------------------------------------------------- -// TEST[setup:my_index] +Controls the flood stage watermark, which defaults to 95%. {es} enforces a read-only index block (<>) on every index that has one or more shards allocated on the node, and that has at least one disk exceeding the flood stage. This setting is a last resort to prevent nodes from running out of disk space. The index block is automatically released when the disk utilization falls below the high watermark. Similarly to the low and high watermark values, it can alternatively be set to a ratio value, e.g., `0.95`, or an absolute byte value. -- // end::cluster-routing-flood-stage-tag[] @@ -121,10 +127,10 @@ Defaults to 100GB when `cluster.routing.allocation.disk.watermark.flood_stage` is not explicitly set. This caps the amount of free space required. -NOTE: You cannot mix the usage of percentage/ratio values and byte values across +NOTE: You can't mix the usage of percentage/ratio values and byte values across the `cluster.routing.allocation.disk.watermark.low`, `cluster.routing.allocation.disk.watermark.high`, and `cluster.routing.allocation.disk.watermark.flood_stage` settings. Either all values -are set to percentage/ratio values, or all are set to byte values. This enforcement is +must be set to percentage/ratio values, or all must be set to byte values. This is required so that {es} can validate that the settings are internally consistent, ensuring that the low disk threshold is less than the high disk threshold, and the high disk threshold is less than the flood stage threshold. A similar comparison check is done for the max @@ -150,44 +156,6 @@ set. This caps the amount of free space required on dedicated frozen nodes. cluster. Defaults to `30s`. NOTE: Percentage values refer to used disk space, while byte values refer to -free disk space. This can be confusing, since it flips the meaning of high and +free disk space. This can be confusing, because it flips the meaning of high and low. For example, it makes sense to set the low watermark to 10gb and the high -watermark to 5gb, but not the other way around. - -An example of updating the low watermark to at least 100 gigabytes free, a high -watermark of at least 50 gigabytes free, and a flood stage watermark of 10 -gigabytes free, and updating the information about the cluster every minute: - -[source,console] --------------------------------------------------- -PUT _cluster/settings -{ - "persistent": { - "cluster.routing.allocation.disk.watermark.low": "100gb", - "cluster.routing.allocation.disk.watermark.high": "50gb", - "cluster.routing.allocation.disk.watermark.flood_stage": "10gb", - "cluster.info.update.interval": "1m" - } -} --------------------------------------------------- - -Concerning the max headroom settings for the watermarks, please note -that these apply only in the case that the watermark settings are percentages/ratios. -The aim of a max headroom value is to cap the required free disk space before hitting -the respective watermark. This is especially useful for servers with larger -disks, where a percentage/ratio watermark could translate to a big free disk space requirement, -and the max headroom can be used to cap the required free disk space amount. -As an example, let us take the default settings for the flood watermark. -It has a 95% default value, and the flood max headroom setting has a default value of 100GB. -This means that: - -* For a smaller disk, e.g., of 100GB, the flood watermark will hit at 95%, meaning at 5GB -of free space, since 5GB is smaller than the 100GB max headroom value. -* For a larger disk, e.g., of 100TB, the flood watermark will hit at 100GB of free space. -That is because the 95% flood watermark alone would require 5TB of free disk space, but -that is capped by the max headroom setting to 100GB. - -Finally, the max headroom settings have their default values only if their respective watermark -settings are not explicitly set (thus, they have their default percentage values). -If watermarks are explicitly set, then the max headroom settings do not have their default values, -and would need to be explicitly set if they are desired. +watermark to 5gb, but not the other way around. \ No newline at end of file diff --git a/docs/reference/modules/cluster/misc.asciidoc b/docs/reference/modules/cluster/misc.asciidoc index 75eaca88c66b1..b66ac1fdb0cca 100644 --- a/docs/reference/modules/cluster/misc.asciidoc +++ b/docs/reference/modules/cluster/misc.asciidoc @@ -1,6 +1,9 @@ [[misc-cluster-settings]] === Miscellaneous cluster settings +[[cluster-name]] +include::{es-ref-dir}/setup/important-settings/cluster-name.asciidoc[] + [discrete] [[cluster-read-only]] ==== Metadata diff --git a/docs/reference/modules/discovery/bootstrapping.asciidoc b/docs/reference/modules/discovery/bootstrapping.asciidoc index 5120c1d17e69b..a885f1633ea49 100644 --- a/docs/reference/modules/discovery/bootstrapping.asciidoc +++ b/docs/reference/modules/discovery/bootstrapping.asciidoc @@ -2,7 +2,7 @@ === Bootstrapping a cluster Starting an Elasticsearch cluster for the very first time requires the initial -set of <> to be explicitly defined on one or +set of <> to be explicitly defined on one or more of the master-eligible nodes in the cluster. This is known as _cluster bootstrapping_. This is only required the first time a cluster starts up. Freshly-started nodes that are joining a running cluster obtain this diff --git a/docs/reference/modules/discovery/publishing.asciidoc b/docs/reference/modules/discovery/publishing.asciidoc index af664585085c2..22fed9528e615 100644 --- a/docs/reference/modules/discovery/publishing.asciidoc +++ b/docs/reference/modules/discovery/publishing.asciidoc @@ -1,5 +1,23 @@ +[[cluster-state-overview]] +=== Cluster state + +The _cluster state_ is an internal data structure which keeps track of a +variety of information needed by every node, including: + +* The identity and attributes of the other nodes in the cluster + +* Cluster-wide settings + +* Index metadata, including the mapping and settings for each index + +* The location and status of every shard copy in the cluster + +The elected master node ensures that every node in the cluster has a copy of +the same cluster state. The <> lets you retrieve a +representation of this internal state for debugging or diagnostic purposes. + [[cluster-state-publishing]] -=== Publishing the cluster state +==== Publishing the cluster state The elected master node is the only node in a cluster that can make changes to the cluster state. The elected master node processes one batch of cluster state @@ -58,3 +76,16 @@ speed of the storage on each master-eligible node, as well as the reliability and latency of the network interconnections between all nodes in the cluster. You must therefore ensure that the storage and networking available to the nodes in your cluster are good enough to meet your performance goals. + +[[dangling-indices]] +==== Dangling indices + +When a node joins the cluster, if it finds any shards stored in its local +data directory that do not already exist in the cluster state, it will consider +those shards to belong to a "dangling" index. You can list, import or +delete dangling indices using the <>. + +NOTE: The API cannot offer any guarantees as to whether the imported data +truly represents the latest state of the data when the index was still part +of the cluster. \ No newline at end of file diff --git a/docs/reference/modules/discovery/voting.asciidoc b/docs/reference/modules/discovery/voting.asciidoc index 04cae9d02ab66..f4bd4756d8978 100644 --- a/docs/reference/modules/discovery/voting.asciidoc +++ b/docs/reference/modules/discovery/voting.asciidoc @@ -2,7 +2,7 @@ === Voting configurations Each {es} cluster has a _voting configuration_, which is the set of -<> whose responses are counted when making +<> whose responses are counted when making decisions such as electing a new master or committing a new cluster state. Decisions are made only after a majority (more than half) of the nodes in the voting configuration respond. diff --git a/docs/reference/modules/gateway.asciidoc b/docs/reference/modules/gateway.asciidoc index bf7e6de64f093..4716effb43083 100644 --- a/docs/reference/modules/gateway.asciidoc +++ b/docs/reference/modules/gateway.asciidoc @@ -4,7 +4,7 @@ The local gateway stores the cluster state and shard data across full cluster restarts. -The following _static_ settings, which must be set on every <>, +The following _static_ settings, which must be set on every <>, control how long a freshly elected master should wait before it tries to recover the <> and the cluster's data. @@ -36,17 +36,4 @@ These settings can be configured in `elasticsearch.yml` as follows: gateway.expected_data_nodes: 3 gateway.recover_after_time: 600s gateway.recover_after_data_nodes: 3 --------------------------------------------------- - -[[dangling-indices]] -==== Dangling indices - -When a node joins the cluster, if it finds any shards stored in its local -data directory that do not already exist in the cluster, it will consider -those shards to belong to a "dangling" index. You can list, import or -delete dangling indices using the <>. - -NOTE: The API cannot offer any guarantees as to whether the imported data -truly represents the latest state of the data when the index was still part -of the cluster. +-------------------------------------------------- \ No newline at end of file diff --git a/docs/reference/modules/indices/fielddata.asciidoc b/docs/reference/modules/indices/fielddata.asciidoc index 1383bf74d6d4c..688685c0a2247 100644 --- a/docs/reference/modules/indices/fielddata.asciidoc +++ b/docs/reference/modules/indices/fielddata.asciidoc @@ -5,10 +5,6 @@ The field data cache contains <> and <>. This behavior can be configured. @@ -20,16 +16,12 @@ at the cost of rebuilding the cache as needed. If the circuit breaker limit is reached, further requests that increase the cache size will be prevented. In this case you should manually <>. +TIP: You can monitor memory usage for field data as well as the field data circuit +breaker using +the <> or the <>. + `indices.fielddata.cache.size`:: (<>) The max size of the field data cache, eg `38%` of node heap space, or an absolute value, eg `12GB`. Defaults to unbounded. If you choose to set it, -it should be smaller than <> limit. - -[discrete] -[[fielddata-monitoring]] -==== Monitoring field data - -You can monitor memory usage for field data as well as the field data circuit -breaker using -the <> or the <>. +it should be smaller than <> limit. \ No newline at end of file diff --git a/docs/reference/modules/indices/request_cache.asciidoc b/docs/reference/modules/indices/request_cache.asciidoc index 4d4d349c685a1..f6ad65245836f 100644 --- a/docs/reference/modules/indices/request_cache.asciidoc +++ b/docs/reference/modules/indices/request_cache.asciidoc @@ -1,4 +1,4 @@ -[[shard-request-cache]] +[[shard-request-cache-settings]] === Shard request cache settings When a search request is run against an index or against many indices, each @@ -10,139 +10,16 @@ The shard-level request cache module caches the local results on each shard. This allows frequently used (and potentially heavy) search requests to return results almost instantly. The requests cache is a very good fit for the logging use case, where only the most recent index is being actively updated -- -results from older indices will be served directly from the cache. +results from older indices will be served directly from the cache. You can use shard request cache settings to control the size and expiration of the cache. -[IMPORTANT] -=================================== - -By default, the requests cache will only cache the results of search requests -where `size=0`, so it will not cache `hits`, -but it will cache `hits.total`, <>, and -<>. - -Most queries that use `now` (see <>) cannot be cached. - -Scripted queries that use the API calls which are non-deterministic, such as -`Math.random()` or `new Date()` are not cached. -=================================== - -[discrete] -==== Cache invalidation - -The cache is smart -- it keeps the same _near real-time_ promise as uncached -search. - -Cached results are invalidated automatically whenever the shard refreshes to -pick up changes to the documents or when you update the mapping. In other -words you will always get the same results from the cache as you would for an -uncached search request. - -The longer the refresh interval, the longer that cached entries will remain -valid even if there are changes to the documents. If the cache is full, the -least recently used cache keys will be evicted. - -The cache can be expired manually with the <>: - -[source,console] ------------------------- -POST /my-index-000001,my-index-000002/_cache/clear?request=true ------------------------- -// TEST[s/^/PUT my-index-000001\nPUT my-index-000002\n/] - -[discrete] -==== Enabling and disabling caching - -The cache is enabled by default, but can be disabled when creating a new -index as follows: - -[source,console] ------------------------------ -PUT /my-index-000001 -{ - "settings": { - "index.requests.cache.enable": false - } -} ------------------------------ - -It can also be enabled or disabled dynamically on an existing index with the -<> API: - -[source,console] ------------------------------ -PUT /my-index-000001/_settings -{ "index.requests.cache.enable": true } ------------------------------ -// TEST[continued] - - -[discrete] -==== Enabling and disabling caching per request - -The `request_cache` query-string parameter can be used to enable or disable -caching on a *per-request* basis. If set, it overrides the index-level setting: - -[source,console] ------------------------------ -GET /my-index-000001/_search?request_cache=true -{ - "size": 0, - "aggs": { - "popular_colors": { - "terms": { - "field": "colors" - } - } - } -} ------------------------------ -// TEST[continued] - -Requests where `size` is greater than 0 will not be cached even if the request cache is -enabled in the index settings. To cache these requests you will need to use the -query-string parameter detailed here. - -[discrete] -==== Cache key - -A hash of the whole JSON body is used as the cache key. This means that if the JSON -changes -- for instance if keys are output in a different order -- then the -cache key will not be recognised. - -TIP: Most JSON libraries support a _canonical_ mode which ensures that JSON -keys are always emitted in the same order. This canonical mode can be used in -the application to ensure that a request is always serialized in the same way. +To learn more about the shard request cache, see <>. [discrete] ==== Cache settings -The cache is managed at the node level, and has a default maximum size of `1%` -of the heap. This can be changed in the `config/elasticsearch.yml` file with: - -[source,yaml] --------------------------------- -indices.requests.cache.size: 2% --------------------------------- - -Also, you can use the +indices.requests.cache.expire+ setting to specify a TTL -for cached results, but there should be no reason to do so. Remember that -stale results are automatically invalidated when the index is refreshed. This -setting is provided for completeness' sake only. - -[discrete] -==== Monitoring cache usage - -The size of the cache (in bytes) and the number of evictions can be viewed -by index, with the <> API: - -[source,console] ------------------------- -GET /_stats/request_cache?human ------------------------- +`indices.requests.cache.size`:: +(<>) The maximum size of the cache, as a percentage of the heap. Default: `1%`. -or by node with the <> API: +`indices.requests.cache.expire`:: +(<>) The TTL for cached results. Stale results are automatically invalidated when the index is refreshed, so you shouldn't need to use this setting. -[source,console] ------------------------- -GET /_nodes/stats/indices/request_cache?human ------------------------- diff --git a/docs/reference/modules/network.asciidoc b/docs/reference/modules/network.asciidoc index 1e4c5a21d386c..2ea4dcb9b18f5 100644 --- a/docs/reference/modules/network.asciidoc +++ b/docs/reference/modules/network.asciidoc @@ -286,3 +286,22 @@ include::remote-cluster-network.asciidoc[] include::network/tracers.asciidoc[] include::network/threading.asciidoc[] + +[[readiness-tcp-port]] +==== TCP readiness port + +preview::[] + +If configured, a node can open a TCP port when the node is in a ready state. A node is deemed +ready when it has successfully joined a cluster. In a single node configuration, the node is +said to be ready, when it's able to accept requests. + +To enable the readiness TCP port, use the `readiness.port` setting. The readiness service will bind to +all host addresses. + +If the node leaves the cluster, or the <> is used to mark the node +for shutdown, the readiness port is immediately closed. + +A successful connection to the readiness TCP port signals that the {es} node is ready. When a client +connects to the readiness port, the server simply terminates the socket connection. No data is sent back +to the client. If a client cannot connect to the readiness port, the node is not ready. \ No newline at end of file diff --git a/docs/reference/modules/node.asciidoc b/docs/reference/modules/node.asciidoc index 022e8b5d1e2fe..e8dd995623a1d 100644 --- a/docs/reference/modules/node.asciidoc +++ b/docs/reference/modules/node.asciidoc @@ -1,5 +1,5 @@ [[modules-node]] -=== Nodes +=== Node settings Any time that you start an instance of {es}, you are starting a _node_. A collection of connected nodes is called a <>. If you @@ -18,24 +18,33 @@ TIP: The performance of an {es} node is often limited by the performance of the Review our recommendations for optimizing your storage for <> and <>. +[[node-name-settings]] +==== Node name setting + +include::{es-ref-dir}/setup/important-settings/node-name.asciidoc[] + [[node-roles]] -==== Node roles +==== Node role settings You define a node's roles by setting `node.roles` in `elasticsearch.yml`. If you set `node.roles`, the node is only assigned the roles you specify. If you don't set `node.roles`, the node is assigned the following roles: -* `master` -* `data` +* [[master-node]]`master` +* [[data-node]]`data` * `data_content` * `data_hot` * `data_warm` * `data_cold` * `data_frozen` * `ingest` -* `ml` +* [[ml-node]]`ml` * `remote_cluster_client` -* `transform` +* [[transform-node]]`transform` + +The following additional roles are available: + +* `voting_only` [IMPORTANT] ==== @@ -65,386 +74,7 @@ As the cluster grows and in particular if you have large {ml} jobs or {ctransforms}, consider separating dedicated master-eligible nodes from dedicated data nodes, {ml} nodes, and {transform} nodes. -<>:: - -A node that has the `master` role, which makes it eligible to be -<>, which controls the cluster. - -<>:: - -A node that has one of several data roles. Data nodes hold data and perform data -related operations such as CRUD, search, and aggregations. A node with a generic `data` role can fill any of the specialized data node roles. - -<>:: - -A node that has the `ingest` role. Ingest nodes are able to apply an -<> to a document in order to transform and enrich the -document before indexing. With a heavy ingest load, it makes sense to use -dedicated ingest nodes and to not include the `ingest` role from nodes that have -the `master` or `data` roles. - -<>:: - -A node that has the `remote_cluster_client` role, which makes it eligible to act -as a remote client. - -<>:: - -A node that has the `ml` role. If you want to use {ml-features}, there must be -at least one {ml} node in your cluster. For more information, see -<> and {ml-docs}/index.html[Machine learning in the {stack}]. - -<>:: - -A node that has the `transform` role. If you want to use {transforms}, there -must be at least one {transform} node in your cluster. For more information, see -<> and <>. - -[NOTE] -[[coordinating-node]] -.Coordinating node -=============================================== - -Requests like search requests or bulk-indexing requests may involve data held -on different data nodes. A search request, for example, is executed in two -phases which are coordinated by the node which receives the client request -- -the _coordinating node_. - -In the _scatter_ phase, the coordinating node forwards the request to the data -nodes which hold the data. Each data node executes the request locally and -returns its results to the coordinating node. In the _gather_ phase, the -coordinating node reduces each data node's results into a single global -result set. - -Every node is implicitly a coordinating node. This means that a node that has -an explicit empty list of roles via `node.roles` will only act as a coordinating -node, which cannot be disabled. As a result, such a node needs to have enough -memory and CPU in order to deal with the gather phase. - -=============================================== - -[[master-node]] -==== Master-eligible node - -The master node is responsible for lightweight cluster-wide actions such as -creating or deleting an index, tracking which nodes are part of the cluster, -and deciding which shards to allocate to which nodes. It is important for -cluster health to have a stable master node. - -Any master-eligible node that is not a <> may -be elected to become the master node by the <>. - -IMPORTANT: Master nodes must have a `path.data` directory whose contents -persist across restarts, just like data nodes, because this is where the -cluster metadata is stored. The cluster metadata describes how to read the data -stored on the data nodes, so if it is lost then the data stored on the data -nodes cannot be read. - -[[dedicated-master-node]] -===== Dedicated master-eligible node - -It is important for the health of the cluster that the elected master node has -the resources it needs to fulfill its responsibilities. If the elected master -node is overloaded with other tasks then the cluster will not operate well. The -most reliable way to avoid overloading the master with other tasks is to -configure all the master-eligible nodes to be _dedicated master-eligible nodes_ -which only have the `master` role, allowing them to focus on managing the -cluster. Master-eligible nodes will still also behave as -<> that route requests from clients to -the other nodes in the cluster, but you should _not_ use dedicated master nodes -for this purpose. - -A small or lightly-loaded cluster may operate well if its master-eligible nodes -have other roles and responsibilities, but once your cluster comprises more -than a handful of nodes it usually makes sense to use dedicated master-eligible -nodes. - -To create a dedicated master-eligible node, set: - -[source,yaml] -------------------- -node.roles: [ master ] -------------------- - -[[voting-only-node]] -===== Voting-only master-eligible node - -A voting-only master-eligible node is a node that participates in -<> but which will not act as the cluster's -elected master node. In particular, a voting-only node can serve as a tiebreaker -in elections. - -It may seem confusing to use the term "master-eligible" to describe a -voting-only node since such a node is not actually eligible to become the master -at all. This terminology is an unfortunate consequence of history: -master-eligible nodes are those nodes that participate in elections and perform -certain tasks during cluster state publications, and voting-only nodes have the -same responsibilities even if they can never become the elected master. - -To configure a master-eligible node as a voting-only node, include `master` and -`voting_only` in the list of roles. For example to create a voting-only data -node: - -[source,yaml] -------------------- -node.roles: [ data, master, voting_only ] -------------------- - -IMPORTANT: Only nodes with the `master` role can be marked as having the -`voting_only` role. - -High availability (HA) clusters require at least three master-eligible nodes, at -least two of which are not voting-only nodes. Such a cluster will be able to -elect a master node even if one of the nodes fails. - -Voting-only master-eligible nodes may also fill other roles in your cluster. -For instance, a node may be both a data node and a voting-only master-eligible -node. A _dedicated_ voting-only master-eligible nodes is a voting-only -master-eligible node that fills no other roles in the cluster. To create a -dedicated voting-only master-eligible node, set: - -[source,yaml] -------------------- -node.roles: [ master, voting_only ] -------------------- - -Since dedicated voting-only nodes never act as the cluster's elected master, -they may require less heap and a less powerful CPU than the true master nodes. -However all master-eligible nodes, including voting-only nodes, are on the -critical path for <>. Cluster state updates are usually independent of -performance-critical workloads such as indexing or searches, but they are -involved in management activities such as index creation and rollover, mapping -updates, and recovery after a failure. The performance characteristics of these -activities are a function of the speed of the storage on each master-eligible -node, as well as the reliability and latency of the network interconnections -between the elected master node and the other nodes in the cluster. You must -therefore ensure that the storage and networking available to the nodes in your -cluster are good enough to meet your performance goals. - -[[data-node]] -==== Data nodes - -Data nodes hold the shards that contain the documents you have indexed. Data -nodes handle data related operations like CRUD, search, and aggregations. -These operations are I/O-, memory-, and CPU-intensive. It is important to -monitor these resources and to add more data nodes if they are overloaded. - -The main benefit of having dedicated data nodes is the separation of the master -and data roles. - -In a multi-tier deployment architecture, you use specialized data roles to -assign data nodes to specific tiers: `data_content`,`data_hot`, `data_warm`, -`data_cold`, or `data_frozen`. A node can belong to multiple tiers. - -If you want to include a node in all tiers, or if your cluster does not use multiple tiers, then you can use the generic `data` role. - -include::../how-to/shard-limits.asciidoc[] - -WARNING: If you assign a node to a specific tier using a specialized data role, then you shouldn't also assign it the generic `data` role. The generic `data` role takes precedence over specialized data roles. - -[[generic-data-node]] -===== Generic data node - -Generic data nodes are included in all content tiers. - -To create a dedicated generic data node, set: -[source,yaml] ----- -node.roles: [ data ] ----- - -[[data-content-node]] -===== Content data node - -Content data nodes are part of the content tier. -include::{es-ref-dir}/datatiers.asciidoc[tag=content-tier] - -To create a dedicated content node, set: -[source,yaml] ----- -node.roles: [ data_content ] ----- - -[[data-hot-node]] -===== Hot data node - -Hot data nodes are part of the hot tier. -include::{es-ref-dir}/datatiers.asciidoc[tag=hot-tier] - -To create a dedicated hot node, set: -[source,yaml] ----- -node.roles: [ data_hot ] ----- - -[[data-warm-node]] -===== Warm data node - -Warm data nodes are part of the warm tier. -include::{es-ref-dir}/datatiers.asciidoc[tag=warm-tier] - -To create a dedicated warm node, set: -[source,yaml] ----- -node.roles: [ data_warm ] ----- - -[[data-cold-node]] -===== Cold data node - -Cold data nodes are part of the cold tier. -include::{es-ref-dir}/datatiers.asciidoc[tag=cold-tier] - -To create a dedicated cold node, set: -[source,yaml] ----- -node.roles: [ data_cold ] ----- - -[[data-frozen-node]] -===== Frozen data node - -Frozen data nodes are part of the frozen tier. -include::{es-ref-dir}/datatiers.asciidoc[tag=frozen-tier] - -To create a dedicated frozen node, set: -[source,yaml] ----- -node.roles: [ data_frozen ] ----- - -[[node-ingest-node]] -==== Ingest node - -Ingest nodes can execute pre-processing pipelines, composed of one or more -ingest processors. Depending on the type of operations performed by the ingest -processors and the required resources, it may make sense to have dedicated -ingest nodes, that will only perform this specific task. - -To create a dedicated ingest node, set: - -[source,yaml] ----- -node.roles: [ ingest ] ----- - -[[coordinating-only-node]] -==== Coordinating only node - -If you take away the ability to be able to handle master duties, to hold data, -and pre-process documents, then you are left with a _coordinating_ node that -can only route requests, handle the search reduce phase, and distribute bulk -indexing. Essentially, coordinating only nodes behave as smart load balancers. - -Coordinating only nodes can benefit large clusters by offloading the -coordinating node role from data and master-eligible nodes. They join the -cluster and receive the full <>, like every other -node, and they use the cluster state to route requests directly to the -appropriate place(s). - -WARNING: Adding too many coordinating only nodes to a cluster can increase the -burden on the entire cluster because the elected master node must await -acknowledgement of cluster state updates from every node! The benefit of -coordinating only nodes should not be overstated -- data nodes can happily -serve the same purpose. - -To create a dedicated coordinating node, set: - -[source,yaml] ----- -node.roles: [ ] ----- - -[[remote-node]] -==== Remote-eligible node - -A remote-eligible node acts as a cross-cluster client and connects to -<>. Once connected, you can search -remote clusters using <>. You can also sync -data between clusters using <>. - -[source,yaml] ----- -node.roles: [ remote_cluster_client ] ----- - -[[ml-node]] -==== [xpack]#Machine learning node# - -{ml-cap} nodes run jobs and handle {ml} API requests. For more information, see -<>. - -To create a dedicated {ml} node, set: - -[source,yaml] ----- -node.roles: [ ml, remote_cluster_client] ----- - -The `remote_cluster_client` role is optional but strongly recommended. -Otherwise, {ccs} fails when used in {ml} jobs or {dfeeds}. If you use {ccs} in -your {anomaly-jobs}, the `remote_cluster_client` role is also required on all -master-eligible nodes. Otherwise, the {dfeed} cannot start. See <>. - -[[transform-node]] -==== [xpack]#{transform-cap} node# - -{transform-cap} nodes run {transforms} and handle {transform} API requests. For -more information, see <>. - -To create a dedicated {transform} node, set: - -[source,yaml] ----- -node.roles: [ transform, remote_cluster_client ] ----- - -The `remote_cluster_client` role is optional but strongly recommended. -Otherwise, {ccs} fails when used in {transforms}. See <>. - -[[change-node-role]] -==== Changing the role of a node - -Each data node maintains the following data on disk: - -* the shard data for every shard allocated to that node, -* the index metadata corresponding with every shard allocated to that node, and -* the cluster-wide metadata, such as settings and index templates. - -Similarly, each master-eligible node maintains the following data on disk: - -* the index metadata for every index in the cluster, and -* the cluster-wide metadata, such as settings and index templates. - -Each node checks the contents of its data path at startup. If it discovers -unexpected data then it will refuse to start. This is to avoid importing -unwanted <> which can lead -to a red cluster health. To be more precise, nodes without the `data` role will -refuse to start if they find any shard data on disk at startup, and nodes -without both the `master` and `data` roles will refuse to start if they have any -index metadata on disk at startup. - -It is possible to change the roles of a node by adjusting its -`elasticsearch.yml` file and restarting it. This is known as _repurposing_ a -node. In order to satisfy the checks for unexpected data described above, you -must perform some extra steps to prepare a node for repurposing when starting -the node without the `data` or `master` roles. - -* If you want to repurpose a data node by removing the `data` role then you - should first use an <> to safely - migrate all the shard data onto other nodes in the cluster. - -* If you want to repurpose a node to have neither the `data` nor `master` roles - then it is simplest to start a brand-new node with an empty data path and the - desired roles. You may find it safest to use an - <> to migrate the shard data elsewhere - in the cluster first. - -If it is not possible to follow these extra steps then you may be able to use -the <> tool to delete any -excess data that prevents a node from starting. +To learn more about the available node roles, see <>. [discrete] === Node data path settings @@ -495,6 +125,25 @@ modify the contents of the data directory. The data directory contains no executables so a virus scan will only find false positives. // end::modules-node-data-path-warning-tag[] +[[custom-node-attributes]] +==== Custom node attributes + +If needed, you can add custom attributes to a node. These attributes can be used to <>, or to group nodes together for <>. + +[TIP] +=============================================== +You can also set a node attribute using the `-E` command line argument when you start a node: + +[source,sh] +-------------------------------------------------------- +./bin/elasticsearch -Enode.attr.rack_id=rack_one +-------------------------------------------------------- +=============================================== + +`node.attr.`:: + (<>) + A custom attribute that you can assign to a node. For example, you might assign a `rack_id` attribute to each node to ensure that primary and replica shards are not allocated on the same rack. You can specify multiple attributes as a comma-separated list. + [discrete] [[other-node-settings]] === Other node settings @@ -504,4 +153,4 @@ including: * <> * <> -* <> +* <> \ No newline at end of file diff --git a/docs/reference/modules/remote-clusters.asciidoc b/docs/reference/modules/remote-clusters.asciidoc index ca1c507aa4ed9..87078c0f1956f 100644 --- a/docs/reference/modules/remote-clusters.asciidoc +++ b/docs/reference/modules/remote-clusters.asciidoc @@ -80,7 +80,7 @@ The _gateway nodes_ selection depends on the following criteria: + * *version*: Remote nodes must be compatible with the cluster they are registered to. -* *role*: By default, any non-<> node can act as a +* *role*: By default, any non-<> node can act as a gateway node. Dedicated master nodes are never selected as gateway nodes. * *attributes*: You can define the gateway nodes for a cluster by setting <> to `true`. diff --git a/docs/reference/modules/shard-ops.asciidoc b/docs/reference/modules/shard-ops.asciidoc index 66ceebcfa0319..93d6b6d3468f8 100644 --- a/docs/reference/modules/shard-ops.asciidoc +++ b/docs/reference/modules/shard-ops.asciidoc @@ -25,7 +25,7 @@ By default, the primary and replica shard copies for an index can be allocated t You can control how shard copies are allocated using the following settings: -- <>: Use these settings to control how shard copies are allocated and balanced across the entire cluster. For example, you might want to allocate nodes availability zones, or prevent certain nodes from being used so you can perform maintenance. +- <>: Use these settings to control how shard copies are allocated and balanced across the entire cluster. For example, you might want to <>, or prevent certain nodes from being used so you can perform maintenance. - <>: Use these settings to control how the shard copies for a specific index are allocated. For example, you might want to allocate an index to a node in a specific data tier, or to an node with specific attributes. @@ -80,4 +80,4 @@ When a shard copy is relocated, it is created as a new shard copy on the target You can control how and when shard copies are relocated. For example, you can adjust the rebalancing settings that control when shard copies are relocated to balance the cluster, or the high watermark for disk-based shard allocation that can trigger relocation. These settings are part of the <>. -Shard relocation operations also respect shard allocation and recovery settings. \ No newline at end of file +Shard relocation operations also respect shard allocation and recovery settings. \ No newline at end of file diff --git a/docs/reference/monitoring/index.asciidoc b/docs/reference/monitoring/index.asciidoc index 1b83f4c11ba54..82e1447ba8a1f 100644 --- a/docs/reference/monitoring/index.asciidoc +++ b/docs/reference/monitoring/index.asciidoc @@ -9,6 +9,7 @@ performance of your {es} cluster. * <> * <> +* <> * <> * <> * <> @@ -23,6 +24,8 @@ include::overview.asciidoc[] include::how-monitoring-works.asciidoc[] +include::{es-ref-dir}/setup/logging-config.asciidoc[] + include::production.asciidoc[] include::configuring-elastic-agent.asciidoc[] diff --git a/docs/reference/node-roles.asciidoc b/docs/reference/node-roles.asciidoc new file mode 100644 index 0000000000000..e8c1d9143a38e --- /dev/null +++ b/docs/reference/node-roles.asciidoc @@ -0,0 +1,437 @@ +[[node-roles-overview]] +== Node roles + +Any time that you start an instance of {es}, you are starting a _node_. A +collection of connected nodes is called a <>. If you +are running a single node of {es}, then you have a cluster of one node. All nodes know about all the other nodes in the cluster and can forward client +requests to the appropriate node. + +Each node performs one or more roles. Roles control the behavior of the node in the cluster. + +[discrete] +[[set-node-roles]] +=== Set node roles + +You define a node's roles by setting `node.roles` in <>. If you set `node.roles`, the node is only assigned the roles you specify. If you don't set `node.roles`, the node is assigned the following roles: + +* `master` +* `data` +* `data_content` +* `data_hot` +* `data_warm` +* `data_cold` +* `data_frozen` +* `ingest` +* `ml` +* `remote_cluster_client` +* `transform` + +[IMPORTANT] +==== +If you set `node.roles`, ensure you specify every node role your cluster needs. +Every cluster requires the following node roles: + +* `master` +* {blank} ++ +-- +`data_content` and `data_hot` + +OR + +`data` +-- + +Some {stack} features also require specific node roles: + +- {ccs-cap} and {ccr} require the `remote_cluster_client` role. +- {stack-monitor-app} and ingest pipelines require the `ingest` role. +- {fleet}, the {security-app}, and {transforms} require the `transform` role. + The `remote_cluster_client` role is also required to use {ccs} with these + features. +- {ml-cap} features, such as {anomaly-detect}, require the `ml` role. +==== + +As the cluster grows and in particular if you have large {ml} jobs or +{ctransforms}, consider separating dedicated master-eligible nodes from +dedicated data nodes, {ml} nodes, and {transform} nodes. + +[discrete] +[[change-node-role]] +=== Change the role of a node + +Each data node maintains the following data on disk: + +* the shard data for every shard allocated to that node, +* the index metadata corresponding with every shard allocated to that node, and +* the cluster-wide metadata, such as settings and index templates. + +Similarly, each master-eligible node maintains the following data on disk: + +* the index metadata for every index in the cluster, and +* the cluster-wide metadata, such as settings and index templates. + +Each node checks the contents of its data path at startup. If it discovers +unexpected data then it will refuse to start. This is to avoid importing +unwanted <> which can lead +to a red cluster health. To be more precise, nodes without the `data` role will +refuse to start if they find any shard data on disk at startup, and nodes +without both the `master` and `data` roles will refuse to start if they have any +index metadata on disk at startup. + +It is possible to change the roles of a node by adjusting its +`elasticsearch.yml` file and restarting it. This is known as _repurposing_ a +node. In order to satisfy the checks for unexpected data described above, you +must perform some extra steps to prepare a node for repurposing when starting +the node without the `data` or `master` roles. + +* If you want to repurpose a data node by removing the `data` role then you + should first use an <> to safely + migrate all the shard data onto other nodes in the cluster. + +* If you want to repurpose a node to have neither the `data` nor `master` roles + then it is simplest to start a brand-new node with an empty data path and the + desired roles. You may find it safest to use an + <> to migrate the shard data elsewhere + in the cluster first. + +If it is not possible to follow these extra steps then you may be able to use +the <> tool to delete any +excess data that prevents a node from starting. + +[discrete] +[[node-roles-list]] +=== Available node roles + +The following is a list of the roles that a node can perform in a cluster. A node can have one or more roles. + +* <> (`master`): A node that is eligible to be +<>, which controls the cluster. + +* <> (`data`, `data_content`, `data_hot`, `data_warm`, `data_cold`, `data_frozen`): A node that has one of several data roles. Data nodes hold data and perform data related operations such as CRUD, search, and aggregations. You might use multiple data roles in a cluster so you can implement <>. + +* <> (`ingest`): Ingest nodes are able to apply an <> to a document in order to transform and enrich the document before indexing. With a heavy ingest load, it makes sense to use dedicated ingest nodes and to not include the `ingest` role from nodes that have the `master` or `data` roles. + +* <> (`remote_cluster_client`): A node that is eligible to act as a remote client. + +* <> (`ml`): A node that can run {ml-features}. If you want to use {ml-features}, there must be at least one {ml} node in your cluster. For more information, see <> and {ml-docs}/index.html[Machine learning in the {stack}]. + +* <> (`transform`): A node that can perform {transforms}. If you want to use {transforms}, there must be at least one {transform} node in your cluster. For more information, see <> and <>. + +[NOTE] +[[coordinating-node]] +.Coordinating node +=============================================== + +Requests like search requests or bulk-indexing requests may involve data held +on different data nodes. A search request, for example, is executed in two +phases which are coordinated by the node which receives the client request -- +the _coordinating node_. + +In the _scatter_ phase, the coordinating node forwards the request to the data +nodes which hold the data. Each data node executes the request locally and +returns its results to the coordinating node. In the _gather_ phase, the +coordinating node reduces each data node's results into a single global +result set. + +Every node is implicitly a coordinating node. This means that a node that has +an explicit empty list of roles in the `node.roles` setting will only act as a coordinating +node, which cannot be disabled. As a result, such a node needs to have enough +memory and CPU in order to deal with the gather phase. + +=============================================== + +[discrete] + +[[master-node-role]] +==== Master-eligible node + +The master node is responsible for lightweight cluster-wide actions such as +creating or deleting an index, tracking which nodes are part of the cluster, +and deciding which shards to allocate to which nodes. It is important for +cluster health to have a stable master node. + +Any master-eligible node that is not a <> may +be elected to become the master node by the <>. + +IMPORTANT: Master nodes must have a `path.data` directory whose contents +persist across restarts, just like data nodes, because this is where the +cluster metadata is stored. The cluster metadata describes how to read the data +stored on the data nodes, so if it is lost then the data stored on the data +nodes cannot be read. + +[discrete] +[[dedicated-master-node]] +===== Dedicated master-eligible node + +It is important for the health of the cluster that the elected master node has +the resources it needs to fulfill its responsibilities. If the elected master +node is overloaded with other tasks then the cluster will not operate well. The +most reliable way to avoid overloading the master with other tasks is to +configure all the master-eligible nodes to be _dedicated master-eligible nodes_ +which only have the `master` role, allowing them to focus on managing the +cluster. Master-eligible nodes will still also behave as +<> that route requests from clients to +the other nodes in the cluster, but you should _not_ use dedicated master nodes +for this purpose. + +A small or lightly-loaded cluster may operate well if its master-eligible nodes +have other roles and responsibilities, but once your cluster comprises more +than a handful of nodes it usually makes sense to use dedicated master-eligible +nodes. + +To create a dedicated master-eligible node, set: + +[source,yaml] +------------------- +node.roles: [ master ] +------------------- + +[discrete] +[[voting-only-node]] +===== Voting-only master-eligible node + +A voting-only master-eligible node is a node that participates in +<> but which will not act as the cluster's +elected master node. In particular, a voting-only node can serve as a tiebreaker +in elections. + +It may seem confusing to use the term "master-eligible" to describe a +voting-only node since such a node is not actually eligible to become the master +at all. This terminology is an unfortunate consequence of history: +master-eligible nodes are those nodes that participate in elections and perform +certain tasks during cluster state publications, and voting-only nodes have the +same responsibilities even if they can never become the elected master. + +To configure a master-eligible node as a voting-only node, include `master` and +`voting_only` in the list of roles. For example to create a voting-only data +node: + +[source,yaml] +------------------- +node.roles: [ data, master, voting_only ] +------------------- + +IMPORTANT: Only nodes with the `master` role can be marked as having the +`voting_only` role. + +High availability (HA) clusters require at least three master-eligible nodes, at +least two of which are not voting-only nodes. Such a cluster will be able to +elect a master node even if one of the nodes fails. + +Voting-only master-eligible nodes may also fill other roles in your cluster. +For instance, a node may be both a data node and a voting-only master-eligible +node. A _dedicated_ voting-only master-eligible nodes is a voting-only +master-eligible node that fills no other roles in the cluster. To create a +dedicated voting-only master-eligible node, set: + +[source,yaml] +------------------- +node.roles: [ master, voting_only ] +------------------- + +Since dedicated voting-only nodes never act as the cluster's elected master, +they may require less heap and a less powerful CPU than the true master nodes. +However all master-eligible nodes, including voting-only nodes, are on the +critical path for <>. Cluster state updates are usually independent of +performance-critical workloads such as indexing or searches, but they are +involved in management activities such as index creation and rollover, mapping +updates, and recovery after a failure. The performance characteristics of these +activities are a function of the speed of the storage on each master-eligible +node, as well as the reliability and latency of the network interconnections +between the elected master node and the other nodes in the cluster. You must +therefore ensure that the storage and networking available to the nodes in your +cluster are good enough to meet your performance goals. + +[discrete] +[[data-node-role]] +==== Data nodes + +Data nodes hold the shards that contain the documents you have indexed. Data +nodes handle data related operations like CRUD, search, and aggregations. +These operations are I/O-, memory-, and CPU-intensive. It is important to +monitor these resources and to add more data nodes if they are overloaded. + +The main benefit of having dedicated data nodes is the separation of the master +and data roles. + +In a multi-tier deployment architecture, you use specialized data roles to +assign data nodes to specific tiers: `data_content`,`data_hot`, `data_warm`, +`data_cold`, or `data_frozen`. A node can belong to multiple tiers. + +If you want to include a node in all tiers, or if your cluster does not use multiple tiers, then you can use the generic `data` role. + +include::{es-ref-dir}/how-to/shard-limits.asciidoc[] + +WARNING: If you assign a node to a specific tier using a specialized data role, then you shouldn't also assign it the generic `data` role. The generic `data` role takes precedence over specialized data roles. + +[discrete] +[[generic-data-node]] +===== Generic data node + +Generic data nodes are included in all content tiers. A node with a generic `data` role can fill any of the specialized data node roles. + +To create a dedicated generic data node, set: +[source,yaml] +---- +node.roles: [ data ] +---- + +[discrete] +[[data-content-node]] +===== Content data node + +Content data nodes are part of the content tier. +include::{es-ref-dir}/datatiers.asciidoc[tag=content-tier] + +To create a dedicated content node, set: +[source,yaml] +---- +node.roles: [ data_content ] +---- + +[discrete] +[[data-hot-node]] +===== Hot data node + +Hot data nodes are part of the hot tier. +include::{es-ref-dir}/datatiers.asciidoc[tag=hot-tier] + +To create a dedicated hot node, set: +[source,yaml] +---- +node.roles: [ data_hot ] +---- + +[discrete] +[[data-warm-node]] +===== Warm data node + +Warm data nodes are part of the warm tier. +include::{es-ref-dir}/datatiers.asciidoc[tag=warm-tier] + +To create a dedicated warm node, set: +[source,yaml] +---- +node.roles: [ data_warm ] +---- + +[discrete] +[[data-cold-node]] +===== Cold data node + +Cold data nodes are part of the cold tier. +include::{es-ref-dir}/datatiers.asciidoc[tag=cold-tier] + +To create a dedicated cold node, set: +[source,yaml] +---- +node.roles: [ data_cold ] +---- + +[discrete] +[[data-frozen-node]] +===== Frozen data node + +Frozen data nodes are part of the frozen tier. +include::{es-ref-dir}/datatiers.asciidoc[tag=frozen-tier] + +To create a dedicated frozen node, set: +[source,yaml] +---- +node.roles: [ data_frozen ] +---- + +[discrete] +[[node-ingest-node]] +==== Ingest node + +Ingest nodes can execute pre-processing pipelines, composed of one or more +ingest processors. Depending on the type of operations performed by the ingest +processors and the required resources, it may make sense to have dedicated +ingest nodes, that will only perform this specific task. + +To create a dedicated ingest node, set: + +[source,yaml] +---- +node.roles: [ ingest ] +---- + +[discrete] +[[coordinating-only-node]] +==== Coordinating only node + +If you take away the ability to be able to handle master duties, to hold data, +and pre-process documents, then you are left with a _coordinating_ node that +can only route requests, handle the search reduce phase, and distribute bulk +indexing. Essentially, coordinating only nodes behave as smart load balancers. + +Coordinating only nodes can benefit large clusters by offloading the +coordinating node role from data and master-eligible nodes. They join the +cluster and receive the full <>, like every other +node, and they use the cluster state to route requests directly to the +appropriate place(s). + +WARNING: Adding too many coordinating only nodes to a cluster can increase the +burden on the entire cluster because the elected master node must await +acknowledgement of cluster state updates from every node! The benefit of +coordinating only nodes should not be overstated -- data nodes can happily +serve the same purpose. + +To create a dedicated coordinating node, set: + +[source,yaml] +---- +node.roles: [ ] +---- + +[discrete] +[[remote-node]] +==== Remote-eligible node + +A remote-eligible node acts as a cross-cluster client and connects to +<>. Once connected, you can search +remote clusters using <>. You can also sync +data between clusters using <>. + +[source,yaml] +---- +node.roles: [ remote_cluster_client ] +---- + +[discrete] +[[ml-node-role]] +==== [xpack]#Machine learning node# + +{ml-cap} nodes run jobs and handle {ml} API requests. For more information, see +<>. + +To create a dedicated {ml} node, set: + +[source,yaml] +---- +node.roles: [ ml, remote_cluster_client] +---- + +The `remote_cluster_client` role is optional but strongly recommended. +Otherwise, {ccs} fails when used in {ml} jobs or {dfeeds}. If you use {ccs} in +your {anomaly-jobs}, the `remote_cluster_client` role is also required on all +master-eligible nodes. Otherwise, the {dfeed} cannot start. See <>. + +[discrete] +[[transform-node-role]] +==== [xpack]#{transform-cap} node# + +{transform-cap} nodes run {transforms} and handle {transform} API requests. For +more information, see <>. + +To create a dedicated {transform} node, set: + +[source,yaml] +---- +node.roles: [ transform, remote_cluster_client ] +---- + +The `remote_cluster_client` role is optional but strongly recommended. +Otherwise, {ccs} fails when used in {transforms}. See <>. \ No newline at end of file diff --git a/docs/reference/path-settings-overview.asciidoc b/docs/reference/path-settings-overview.asciidoc new file mode 100644 index 0000000000000..0740b9769c9b2 --- /dev/null +++ b/docs/reference/path-settings-overview.asciidoc @@ -0,0 +1,112 @@ +[[path-settings-overview]] +=== Path settings + +include::{es-ref-dir}/setup/important-settings/path-settings.asciidoc[] + +[[multiple-data-paths]] +==== Multiple data paths +deprecated::[7.13.0] + +If needed, you can specify multiple paths in `path.data`. {es} stores the node's +data across all provided paths but keeps each shard's data on the same path. + +{es} does not balance shards across a node's data paths. High disk +usage in a single path can trigger a <> for the entire node. If triggered, {es} will not add shards to +the node, even if the node’s other paths have available disk space. If you need +additional disk space, we recommend you add a new node rather than additional +data paths. + +include::{es-ref-dir}/tab-widgets/multi-data-path-widget.asciidoc[] + +[[mdp-migrate]] +===== Migrate from multiple data paths + +Support for multiple data paths was deprecated in 7.13 and will be removed +in a future release. + +As an alternative to multiple data paths, you can create a filesystem which +spans multiple disks with a hardware virtualisation layer such as RAID, or a +software virtualisation layer such as Logical Volume Manager (LVM) on Linux or +Storage Spaces on Windows. If you wish to use multiple data paths on a single +machine then you must run one node for each data path. + +If you currently use multiple data paths in a +{ref}/high-availability-cluster-design.html[highly available cluster] then you +can migrate to a setup that uses a single path for each node without downtime +using a process similar to a +{ref}/restart-cluster.html#restart-cluster-rolling[rolling restart]: shut each +node down in turn and replace it with one or more nodes each configured to use +a single data path. In more detail, for each node that currently has multiple +data paths you should follow the following process. In principle you can +perform this migration during a rolling upgrade to 8.0, but we recommend +migrating to a single-data-path setup before starting to upgrade. + +1. Take a snapshot to protect your data in case of disaster. + +2. Optionally, migrate the data away from the target node by using an +{ref}/modules-cluster.html#cluster-shard-allocation-filtering[allocation filter]: ++ +[source,console] +-------------------------------------------------- +PUT _cluster/settings +{ + "persistent": { + "cluster.routing.allocation.exclude._name": "target-node-name" + } +} +-------------------------------------------------- ++ +You can use the {ref}/cat-allocation.html[cat allocation API] to track progress +of this data migration. If some shards do not migrate then the +{ref}/cluster-allocation-explain.html[cluster allocation explain API] will help +you to determine why. + +3. Follow the steps in the +{ref}/restart-cluster.html#restart-cluster-rolling[rolling restart process] +up to and including shutting the target node down. + +4. Ensure your cluster health is `yellow` or `green`, so that there is a copy +of every shard assigned to at least one of the other nodes in your cluster. + +5. If applicable, remove the allocation filter applied in the earlier step. ++ +[source,console] +-------------------------------------------------- +PUT _cluster/settings +{ + "persistent": { + "cluster.routing.allocation.exclude._name": null + } +} +-------------------------------------------------- + +6. Discard the data held by the stopped node by deleting the contents of its +data paths. + +7. Reconfigure your storage. For instance, combine your disks into a single +filesystem using LVM or Storage Spaces. Ensure that your reconfigured storage +has sufficient space for the data that it will hold. + +8. Reconfigure your node by adjusting the `path.data` setting in its +`elasticsearch.yml` file. If needed, install more nodes each with their own +`path.data` setting pointing at a separate data path. + +9. Start the new nodes and follow the rest of the +{ref}/restart-cluster.html#restart-cluster-rolling[rolling restart process] for +them. + +10. Ensure your cluster health is `green`, so that every shard has been +assigned. + +You can alternatively add some number of single-data-path nodes to your +cluster, migrate all your data over to these new nodes using +{ref}/modules-cluster.html#cluster-shard-allocation-filtering[allocation filters], +and then remove the old nodes from the cluster. This approach will temporarily +double the size of your cluster so it will only work if you have the capacity to +expand your cluster like this. + +If you currently use multiple data paths but your cluster is not highly +available then you can migrate to a non-deprecated configuration by taking +a snapshot, creating a new cluster with the desired configuration and restoring +the snapshot into it. diff --git a/docs/reference/search/multi-search-template-api.asciidoc b/docs/reference/search/multi-search-template-api.asciidoc index 010320c6b05ed..2fdb412575eb4 100644 --- a/docs/reference/search/multi-search-template-api.asciidoc +++ b/docs/reference/search/multi-search-template-api.asciidoc @@ -85,7 +85,7 @@ cross-cluster search requests. Defaults to `true`. `max_concurrent_searches`:: (Optional, integer) Maximum number of concurrent searches the API can run. -Defaults to +max(1, (# of <> * +Defaults to +max(1, (# of <> * min(<>, 10)))+. `rest_total_hits_as_int`:: diff --git a/docs/reference/search/multi-search.asciidoc b/docs/reference/search/multi-search.asciidoc index ea2dd59779332..6adcc62e5ec4f 100644 --- a/docs/reference/search/multi-search.asciidoc +++ b/docs/reference/search/multi-search.asciidoc @@ -97,7 +97,7 @@ include::{es-ref-dir}/rest-api/common-parms.asciidoc[tag=index-ignore-unavailabl `max_concurrent_searches`:: (Optional, integer) Maximum number of concurrent searches the multi search API can execute. Defaults -to +max(1, (# of <> * min(<>, 10)))+. +to +max(1, (# of <> * min(<>, 10)))+. `max_concurrent_shard_requests`:: + diff --git a/docs/reference/settings/ml-settings.asciidoc b/docs/reference/settings/ml-settings.asciidoc index 1077a63b00249..08163b1391f2d 100644 --- a/docs/reference/settings/ml-settings.asciidoc +++ b/docs/reference/settings/ml-settings.asciidoc @@ -19,6 +19,8 @@ at all. // end::ml-settings-description-tag[] +TIP: To control memory usage used by {ml} jobs, you can use the <>. + [discrete] [[general-ml-settings]] ==== General machine learning settings @@ -67,7 +69,7 @@ limitations as described <>. The inference cache exists in the JVM heap on each ingest node. The cache affords faster processing times for the `inference` processor. The value can be a static byte sized value (such as `2gb`) or a percentage of total allocated -heap. Defaults to `40%`. See also <>. +heap. Defaults to `40%`. See also <>. [[xpack-interference-model-ttl]] // tag::interference-model-ttl-tag[] @@ -249,11 +251,4 @@ nodes in your cluster, you shouldn't use this setting. + If this setting is `true` it also affects the default value for `xpack.ml.max_model_memory_limit`. In this case `xpack.ml.max_model_memory_limit` -defaults to the largest size that could be assigned in the current cluster. - -[discrete] -[[model-inference-circuit-breaker]] -==== {ml-cap} circuit breaker settings - -The relevant circuit breaker settings can be found in the <>. - +defaults to the largest size that could be assigned in the current cluster. \ No newline at end of file diff --git a/docs/reference/setup.asciidoc b/docs/reference/setup.asciidoc index 80828fdbfbb02..922f1bdba4d1f 100644 --- a/docs/reference/setup.asciidoc +++ b/docs/reference/setup.asciidoc @@ -27,6 +27,8 @@ the only resource-intensive application on the host or container. For example, you might run {metricbeat} alongside {es} for cluster statistics, but a resource-heavy {ls} deployment should be on its own host. +// alphabetized + include::run-elasticsearch-locally.asciidoc[] include::setup/install.asciidoc[] @@ -47,30 +49,28 @@ include::settings/ccr-settings.asciidoc[] include::modules/discovery/discovery-settings.asciidoc[] +include::settings/data-stream-lifecycle-settings.asciidoc[] + include::modules/indices/fielddata.asciidoc[] +include::modules/gateway.asciidoc[] + include::settings/health-diagnostic-settings.asciidoc[] include::settings/ilm-settings.asciidoc[] -include::settings/data-stream-lifecycle-settings.asciidoc[] - include::modules/indices/index_management.asciidoc[] include::modules/indices/recovery.asciidoc[] include::modules/indices/indexing_buffer.asciidoc[] -include::settings/license-settings.asciidoc[] - -include::modules/gateway.asciidoc[] +include::settings/inference-settings.asciidoc[] -include::setup/logging-config.asciidoc[] +include::settings/license-settings.asciidoc[] include::settings/ml-settings.asciidoc[] -include::settings/inference-settings.asciidoc[] - include::settings/monitoring-settings.asciidoc[] include::modules/node.asciidoc[] @@ -79,6 +79,8 @@ include::modules/network.asciidoc[] include::modules/indices/query_cache.asciidoc[] +include::{es-ref-dir}/path-settings-overview.asciidoc[] + include::modules/indices/search-settings.asciidoc[] include::settings/security-settings.asciidoc[] diff --git a/docs/reference/setup/add-nodes.asciidoc b/docs/reference/setup/add-nodes.asciidoc index ba749782c092f..941a3e6c40f79 100644 --- a/docs/reference/setup/add-nodes.asciidoc +++ b/docs/reference/setup/add-nodes.asciidoc @@ -48,7 +48,7 @@ For more information about discovery and shard allocation, refer to As nodes are added or removed Elasticsearch maintains an optimal level of fault tolerance by automatically updating the cluster's _voting configuration_, which -is the set of <> whose responses are counted +is the set of <> whose responses are counted when making decisions such as electing a new master or committing a new cluster state. diff --git a/docs/reference/setup/advanced-configuration.asciidoc b/docs/reference/setup/advanced-configuration.asciidoc index 2a7ccc56742de..73b210ea559b2 100644 --- a/docs/reference/setup/advanced-configuration.asciidoc +++ b/docs/reference/setup/advanced-configuration.asciidoc @@ -1,13 +1,7 @@ [[advanced-configuration]] -=== Advanced configuration - -Modifying advanced settings is generally not recommended and could negatively -impact performance and stability. Using the {es}-provided defaults -is recommended in most circumstances. +=== Set JVM options [[set-jvm-options]] -==== Set JVM options - If needed, you can override the default JVM options by adding custom options files (preferred) or setting the `ES_JAVA_OPTS` environment variable. @@ -21,10 +15,14 @@ Where you put the JVM options files depends on the type of installation: * Docker: Bind mount custom JVM options files into `/usr/share/elasticsearch/config/jvm.options.d/`. +CAUTION: Setting your own JVM options is generally not recommended and could negatively +impact performance and stability. Using the {es}-provided defaults +is recommended in most circumstances. + NOTE: Do not modify the root `jvm.options` file. Use files in `jvm.options.d/` instead. [[jvm-options-syntax]] -===== JVM options syntax +==== JVM options syntax A JVM options file contains a line-delimited list of JVM arguments. Arguments are preceded by a dash (`-`). @@ -66,7 +64,7 @@ and ignored. Lines that aren't commented out and aren't recognized as valid JVM arguments are rejected and {es} will fail to start. [[jvm-options-env]] -===== Use environment variables to set JVM options +==== Use environment variables to set JVM options In production, use JVM options files to override the default settings. In testing and development environments, @@ -155,23 +153,11 @@ options. We do not recommend using `ES_JAVA_OPTS` in production. NOTE: If you are running {es} as a Windows service, you can change the heap size using the service manager. See <>. -[[readiness-tcp-port]] -===== Enable the Elasticsearch TCP readiness port - -preview::[] - -If configured, a node can open a TCP port when the node is in a ready state. A node is deemed -ready when it has successfully joined a cluster. In a single node configuration, the node is -said to be ready, when it's able to accept requests. - -To enable the readiness TCP port, use the `readiness.port` setting. The readiness service will bind to -all host addresses. - -If the node leaves the cluster, or the <> is used to mark the node -for shutdown, the readiness port is immediately closed. - -A successful connection to the readiness TCP port signals that the {es} node is ready. When a client -connects to the readiness port, the server simply terminates the socket connection. No data is sent back -to the client. If a client cannot connect to the readiness port, the node is not ready. +[[heap-dump-path]] +include::important-settings/heap-dump-path.asciidoc[leveloffset=-1] +[[gc-logging]] +include::important-settings/gc-logging.asciidoc[leveloffset=-1] +[[error-file-path]] +include::important-settings/error-file.asciidoc[leveloffset=-1] \ No newline at end of file diff --git a/docs/reference/setup/important-settings.asciidoc b/docs/reference/setup/important-settings.asciidoc index 03c891af70743..26f9c79cb6693 100644 --- a/docs/reference/setup/important-settings.asciidoc +++ b/docs/reference/setup/important-settings.asciidoc @@ -19,10 +19,20 @@ of items which *must* be considered before using your cluster in production: Our {ess-trial}[{ecloud}] service configures these items automatically, making your cluster production-ready by default. +[[path-settings]] +[discrete] +==== Path settings + include::important-settings/path-settings.asciidoc[] +Elasticsearch offers a deprecated setting that allows you to specify multiple paths in `path.data`. +To learn about this setting, and how to migrate away from it, refer to <>. + include::important-settings/cluster-name.asciidoc[] +[[node-name]] +[discrete] +==== Node name setting include::important-settings/node-name.asciidoc[] include::important-settings/network-host.asciidoc[] diff --git a/docs/reference/setup/important-settings/cluster-name.asciidoc b/docs/reference/setup/important-settings/cluster-name.asciidoc index 3f1516f21de1e..6d489eee76cf6 100644 --- a/docs/reference/setup/important-settings/cluster-name.asciidoc +++ b/docs/reference/setup/important-settings/cluster-name.asciidoc @@ -1,4 +1,3 @@ -[[cluster-name]] [discrete] ==== Cluster name setting diff --git a/docs/reference/setup/important-settings/error-file.asciidoc b/docs/reference/setup/important-settings/error-file.asciidoc index ca95ded78d53f..2f654002d51f8 100644 --- a/docs/reference/setup/important-settings/error-file.asciidoc +++ b/docs/reference/setup/important-settings/error-file.asciidoc @@ -1,4 +1,3 @@ -[[error-file-path]] [discrete] ==== JVM fatal error log setting diff --git a/docs/reference/setup/important-settings/gc-logging.asciidoc b/docs/reference/setup/important-settings/gc-logging.asciidoc index 3534e1335c9fd..873c85d58d914 100644 --- a/docs/reference/setup/important-settings/gc-logging.asciidoc +++ b/docs/reference/setup/important-settings/gc-logging.asciidoc @@ -1,4 +1,3 @@ -[[gc-logging]] [discrete] ==== GC logging settings @@ -20,9 +19,8 @@ To see further options not contained in the original JEP, see https://docs.oracle.com/en/java/javase/13/docs/specs/man/java.html#enable-logging-with-the-jvm-unified-logging-framework[Enable Logging with the JVM Unified Logging Framework]. -[[gc-logging-examples]] [discrete] -==== Examples +===== Examples Change the default GC log output location to `/opt/my-app/gc.log` by creating `$ES_HOME/config/jvm.options.d/gc.options` with some sample diff --git a/docs/reference/setup/important-settings/heap-dump-path.asciidoc b/docs/reference/setup/important-settings/heap-dump-path.asciidoc index 8f01379842a90..8b06ae752f360 100644 --- a/docs/reference/setup/important-settings/heap-dump-path.asciidoc +++ b/docs/reference/setup/important-settings/heap-dump-path.asciidoc @@ -1,4 +1,3 @@ -[[heap-dump-path]] [discrete] ==== JVM heap dump path setting diff --git a/docs/reference/setup/important-settings/node-name.asciidoc b/docs/reference/setup/important-settings/node-name.asciidoc index eda3052d119c9..f1260844a0549 100644 --- a/docs/reference/setup/important-settings/node-name.asciidoc +++ b/docs/reference/setup/important-settings/node-name.asciidoc @@ -1,7 +1,3 @@ -[[node-name]] -[discrete] -==== Node name setting - {es} uses `node.name` as a human-readable identifier for a particular instance of {es}. This name is included in the response of many APIs. The node name defaults to the hostname of the machine when diff --git a/docs/reference/setup/important-settings/path-settings.asciidoc b/docs/reference/setup/important-settings/path-settings.asciidoc index a0a444ca5090a..002e08e2dc746 100644 --- a/docs/reference/setup/important-settings/path-settings.asciidoc +++ b/docs/reference/setup/important-settings/path-settings.asciidoc @@ -1,7 +1,3 @@ -[[path-settings]] -[discrete] -==== Path settings - {es} writes the data you index to indices and data streams to a `data` directory. {es} writes its own application logs, which contain information about cluster health and operations, to a `logs` directory. @@ -20,113 +16,4 @@ Supported `path.data` and `path.logs` values vary by platform: include::{es-ref-dir}/tab-widgets/customize-data-log-path-widget.asciidoc[] -include::{es-ref-dir}/modules/node.asciidoc[tag=modules-node-data-path-warning-tag] - -[discrete] -==== Multiple data paths -deprecated::[7.13.0] - -If needed, you can specify multiple paths in `path.data`. {es} stores the node's -data across all provided paths but keeps each shard's data on the same path. - -{es} does not balance shards across a node's data paths. High disk -usage in a single path can trigger a <> for the entire node. If triggered, {es} will not add shards to -the node, even if the node’s other paths have available disk space. If you need -additional disk space, we recommend you add a new node rather than additional -data paths. - -include::{es-ref-dir}/tab-widgets/multi-data-path-widget.asciidoc[] - -[discrete] -[[mdp-migrate]] -==== Migrate from multiple data paths - -Support for multiple data paths was deprecated in 7.13 and will be removed -in a future release. - -As an alternative to multiple data paths, you can create a filesystem which -spans multiple disks with a hardware virtualisation layer such as RAID, or a -software virtualisation layer such as Logical Volume Manager (LVM) on Linux or -Storage Spaces on Windows. If you wish to use multiple data paths on a single -machine then you must run one node for each data path. - -If you currently use multiple data paths in a -{ref}/high-availability-cluster-design.html[highly available cluster] then you -can migrate to a setup that uses a single path for each node without downtime -using a process similar to a -{ref}/restart-cluster.html#restart-cluster-rolling[rolling restart]: shut each -node down in turn and replace it with one or more nodes each configured to use -a single data path. In more detail, for each node that currently has multiple -data paths you should follow the following process. In principle you can -perform this migration during a rolling upgrade to 8.0, but we recommend -migrating to a single-data-path setup before starting to upgrade. - -1. Take a snapshot to protect your data in case of disaster. - -2. Optionally, migrate the data away from the target node by using an -{ref}/modules-cluster.html#cluster-shard-allocation-filtering[allocation filter]: -+ -[source,console] --------------------------------------------------- -PUT _cluster/settings -{ - "persistent": { - "cluster.routing.allocation.exclude._name": "target-node-name" - } -} --------------------------------------------------- -+ -You can use the {ref}/cat-allocation.html[cat allocation API] to track progress -of this data migration. If some shards do not migrate then the -{ref}/cluster-allocation-explain.html[cluster allocation explain API] will help -you to determine why. - -3. Follow the steps in the -{ref}/restart-cluster.html#restart-cluster-rolling[rolling restart process] -up to and including shutting the target node down. - -4. Ensure your cluster health is `yellow` or `green`, so that there is a copy -of every shard assigned to at least one of the other nodes in your cluster. - -5. If applicable, remove the allocation filter applied in the earlier step. -+ -[source,console] --------------------------------------------------- -PUT _cluster/settings -{ - "persistent": { - "cluster.routing.allocation.exclude._name": null - } -} --------------------------------------------------- - -6. Discard the data held by the stopped node by deleting the contents of its -data paths. - -7. Reconfigure your storage. For instance, combine your disks into a single -filesystem using LVM or Storage Spaces. Ensure that your reconfigured storage -has sufficient space for the data that it will hold. - -8. Reconfigure your node by adjusting the `path.data` setting in its -`elasticsearch.yml` file. If needed, install more nodes each with their own -`path.data` setting pointing at a separate data path. - -9. Start the new nodes and follow the rest of the -{ref}/restart-cluster.html#restart-cluster-rolling[rolling restart process] for -them. - -10. Ensure your cluster health is `green`, so that every shard has been -assigned. - -You can alternatively add some number of single-data-path nodes to your -cluster, migrate all your data over to these new nodes using -{ref}/modules-cluster.html#cluster-shard-allocation-filtering[allocation filters], -and then remove the old nodes from the cluster. This approach will temporarily -double the size of your cluster so it will only work if you have the capacity to -expand your cluster like this. - -If you currently use multiple data paths but your cluster is not highly -available then you can migrate to a non-deprecated configuration by taking -a snapshot, creating a new cluster with the desired configuration and restoring -the snapshot into it. +include::{es-ref-dir}/modules/node.asciidoc[tag=modules-node-data-path-warning-tag] \ No newline at end of file diff --git a/docs/reference/setup/logging-config.asciidoc b/docs/reference/setup/logging-config.asciidoc index e382bbdacb464..04e9ba3f0bef9 100644 --- a/docs/reference/setup/logging-config.asciidoc +++ b/docs/reference/setup/logging-config.asciidoc @@ -1,5 +1,5 @@ [[logging]] -=== Logging +== Elasticsearch application logging You can use {es}'s application logs to monitor your cluster and diagnose issues. If you run {es} as a service, the default location of the logs varies based on @@ -11,7 +11,7 @@ If you run {es} from the command line, {es} prints logs to the standard output (`stdout`). [discrete] -[[loggin-configuration]] +[[logging-configuration]] === Logging configuration IMPORTANT: Elastic strongly recommends using the Log4j 2 configuration that is shipped by default. @@ -304,6 +304,7 @@ The user ID is included in the `X-Opaque-ID` field in deprecation JSON logs. Deprecation logs can be indexed into `.logs-deprecation.elasticsearch-default` data stream `cluster.deprecation_indexing.enabled` setting is set to true. +[discrete] ==== Deprecation logs throttling :es-rate-limiting-filter-java-doc: {elasticsearch-javadoc}/org/elasticsearch/common/logging/RateLimitingFilter.html Deprecation logs are deduplicated based on a deprecated feature key diff --git a/docs/reference/shard-request-cache.asciidoc b/docs/reference/shard-request-cache.asciidoc new file mode 100644 index 0000000000000..ec79dfb531bdb --- /dev/null +++ b/docs/reference/shard-request-cache.asciidoc @@ -0,0 +1,134 @@ +[[shard-request-cache]] +=== The shard request cache + +When a search request is run against an index or against many indices, each +involved shard executes the search locally and returns its local results to +the _coordinating node_, which combines these shard-level results into a +``global'' result set. + +The shard-level request cache module caches the local results on each shard. +This allows frequently used (and potentially heavy) search requests to return +results almost instantly. The requests cache is a very good fit for the logging +use case, where only the most recent index is being actively updated -- +results from older indices will be served directly from the cache. + +You can control the size and expiration of the cache at the node level using the <>. + +[IMPORTANT] +=================================== + +By default, the requests cache will only cache the results of search requests +where `size=0`, so it will not cache `hits`, +but it will cache `hits.total`, <>, and +<>. + +Most queries that use `now` (see <>) cannot be cached. + +Scripted queries that use the API calls which are non-deterministic, such as +`Math.random()` or `new Date()` are not cached. +=================================== + +[discrete] +==== Cache invalidation + +The cache is smart -- it keeps the same _near real-time_ promise as uncached +search. + +Cached results are invalidated automatically whenever the shard refreshes to +pick up changes to the documents or when you update the mapping. In other +words you will always get the same results from the cache as you would for an +uncached search request. + +The longer the refresh interval, the longer that cached entries will remain +valid even if there are changes to the documents. If the cache is full, the +least recently used cache keys will be evicted. + +The cache can be expired manually with the <>: + +[source,console] +------------------------ +POST /my-index-000001,my-index-000002/_cache/clear?request=true +------------------------ +// TEST[s/^/PUT my-index-000001\nPUT my-index-000002\n/] + +[discrete] +==== Enabling and disabling caching + +The cache is enabled by default, but can be disabled when creating a new +index as follows: + +[source,console] +----------------------------- +PUT /my-index-000001 +{ + "settings": { + "index.requests.cache.enable": false + } +} +----------------------------- + +It can also be enabled or disabled dynamically on an existing index with the +<> API: + +[source,console] +----------------------------- +PUT /my-index-000001/_settings +{ "index.requests.cache.enable": true } +----------------------------- +// TEST[continued] + + +[discrete] +==== Enabling and disabling caching per request + +The `request_cache` query-string parameter can be used to enable or disable +caching on a *per-request* basis. If set, it overrides the index-level setting: + +[source,console] +----------------------------- +GET /my-index-000001/_search?request_cache=true +{ + "size": 0, + "aggs": { + "popular_colors": { + "terms": { + "field": "colors" + } + } + } +} +----------------------------- +// TEST[continued] + +Requests where `size` is greater than 0 will not be cached even if the request cache is +enabled in the index settings. To cache these requests you will need to use the +query-string parameter detailed here. + +[discrete] +==== Cache key + +A hash of the whole JSON body is used as the cache key. This means that if the JSON +changes -- for instance if keys are output in a different order -- then the +cache key will not be recognised. + +TIP: Most JSON libraries support a _canonical_ mode which ensures that JSON +keys are always emitted in the same order. This canonical mode can be used in +the application to ensure that a request is always serialized in the same way. + +[discrete] +==== Monitoring cache usage + +The size of the cache (in bytes) and the number of evictions can be viewed +by index, with the <> API: + +[source,console] +------------------------ +GET /_stats/request_cache?human +------------------------ + +or by node with the <> API: + +[source,console] +------------------------ +GET /_nodes/stats/indices/request_cache?human +------------------------ diff --git a/docs/reference/snapshot-restore/apis/restore-snapshot-api.asciidoc b/docs/reference/snapshot-restore/apis/restore-snapshot-api.asciidoc index 2f2c7fcd8ebd2..89cd0f96915b9 100644 --- a/docs/reference/snapshot-restore/apis/restore-snapshot-api.asciidoc +++ b/docs/reference/snapshot-restore/apis/restore-snapshot-api.asciidoc @@ -75,7 +75,7 @@ POST /_snapshot/my_repository/my_snapshot/_restore // tag::restore-prereqs[] * You can only restore a snapshot to a running cluster with an elected -<>. The snapshot's repository must be +<>. The snapshot's repository must be <> and available to the cluster. * The snapshot and cluster versions must be compatible. See diff --git a/docs/reference/snapshot-restore/take-snapshot.asciidoc b/docs/reference/snapshot-restore/take-snapshot.asciidoc index 711fcfe4cc484..1ae2258c7da89 100644 --- a/docs/reference/snapshot-restore/take-snapshot.asciidoc +++ b/docs/reference/snapshot-restore/take-snapshot.asciidoc @@ -46,7 +46,7 @@ taking snapshots at different time intervals. include::register-repository.asciidoc[tag=kib-snapshot-prereqs] * You can only take a snapshot from a running cluster with an elected -<>. +<>. * A snapshot repository must be <> and available to the cluster. diff --git a/docs/reference/transform/setup.asciidoc b/docs/reference/transform/setup.asciidoc index dab357546d93e..3171086e43d61 100644 --- a/docs/reference/transform/setup.asciidoc +++ b/docs/reference/transform/setup.asciidoc @@ -11,7 +11,7 @@ To use {transforms}, you must have: -* at least one <>, +* at least one <>, * management features visible in the {kib} space, and * security privileges that: + diff --git a/docs/reference/upgrade/disable-shard-alloc.asciidoc b/docs/reference/upgrade/disable-shard-alloc.asciidoc index f69a673095257..4672ea65446b4 100644 --- a/docs/reference/upgrade/disable-shard-alloc.asciidoc +++ b/docs/reference/upgrade/disable-shard-alloc.asciidoc @@ -5,7 +5,7 @@ starting to replicate the shards on that node to other nodes in the cluster, which can involve a lot of I/O. Since the node is shortly going to be restarted, this I/O is unnecessary. You can avoid racing the clock by <> of replicas before -shutting down <>: +shutting down <>: [source,console] -------------------------------------------------- From c19ee3023e1a8841f4094a5cfd79bf08c7abc4da Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Mon, 6 Jan 2025 09:07:28 -0800 Subject: [PATCH 13/35] Move SlowLogFieldProvider instantiation to node construction (#117949) SPI from plugins should be created at node startup. This commit moves creation of SlowLogFieldProvider into node construction and passes it in to IndicesService so that it is not recreated on each index creation. relates #102103 --- docs/changelog/117949.yaml | 5 ++ .../org/elasticsearch/index/IndexModule.java | 5 +- .../elasticsearch/index/IndexingSlowLog.java | 42 ++---------- .../elasticsearch/index/SearchSlowLog.java | 23 ++++--- .../index/SlowLogFieldProvider.java | 18 +----- .../elasticsearch/index/SlowLogFields.java | 30 +++++++++ .../elasticsearch/indices/IndicesService.java | 31 ++------- .../indices/IndicesServiceBuilder.java | 24 +++++++ .../elasticsearch/node/NodeConstruction.java | 28 ++++++++ .../index/IndexingSlowLogTests.java | 18 +++--- .../index/SearchSlowLogTests.java | 18 +++--- .../indices/IndicesServiceTests.java | 64 ++++++++++--------- .../slowlog/SecuritySlowLogFieldProvider.java | 58 +++++++++-------- 13 files changed, 200 insertions(+), 164 deletions(-) create mode 100644 docs/changelog/117949.yaml create mode 100644 server/src/main/java/org/elasticsearch/index/SlowLogFields.java diff --git a/docs/changelog/117949.yaml b/docs/changelog/117949.yaml new file mode 100644 index 0000000000000..b67f36a224094 --- /dev/null +++ b/docs/changelog/117949.yaml @@ -0,0 +1,5 @@ +pr: 117949 +summary: Move `SlowLogFieldProvider` instantiation to node construction +area: Infra/Logging +type: bug +issues: [] diff --git a/server/src/main/java/org/elasticsearch/index/IndexModule.java b/server/src/main/java/org/elasticsearch/index/IndexModule.java index 2168ad1df5d2f..7d63a0432cdbc 100644 --- a/server/src/main/java/org/elasticsearch/index/IndexModule.java +++ b/server/src/main/java/org/elasticsearch/index/IndexModule.java @@ -203,8 +203,9 @@ public IndexModule( this.engineFactory = Objects.requireNonNull(engineFactory); // Need to have a mutable arraylist for plugins to add listeners to it this.searchOperationListeners = new ArrayList<>(searchOperationListeners); - this.searchOperationListeners.add(new SearchSlowLog(indexSettings, slowLogFieldProvider)); - this.indexOperationListeners.add(new IndexingSlowLog(indexSettings, slowLogFieldProvider)); + SlowLogFields slowLogFields = slowLogFieldProvider.create(indexSettings); + this.searchOperationListeners.add(new SearchSlowLog(indexSettings, slowLogFields)); + this.indexOperationListeners.add(new IndexingSlowLog(indexSettings, slowLogFields)); this.directoryFactories = Collections.unmodifiableMap(directoryFactories); this.allowExpensiveQueries = allowExpensiveQueries; this.expressionResolver = expressionResolver; diff --git a/server/src/main/java/org/elasticsearch/index/IndexingSlowLog.java b/server/src/main/java/org/elasticsearch/index/IndexingSlowLog.java index 3ae4c0eb82ad0..5a7990a4e70c5 100644 --- a/server/src/main/java/org/elasticsearch/index/IndexingSlowLog.java +++ b/server/src/main/java/org/elasticsearch/index/IndexingSlowLog.java @@ -103,7 +103,7 @@ public final class IndexingSlowLog implements IndexingOperationListener { * characters of the source. */ private int maxSourceCharsToLog; - private final SlowLogFieldProvider slowLogFieldProvider; + private final SlowLogFields slowLogFields; /** * Reads how much of the source to log. The user can specify any value they @@ -125,8 +125,8 @@ public final class IndexingSlowLog implements IndexingOperationListener { Property.IndexScope ); - IndexingSlowLog(IndexSettings indexSettings, SlowLogFieldProvider slowLogFieldProvider) { - this.slowLogFieldProvider = slowLogFieldProvider; + IndexingSlowLog(IndexSettings indexSettings, SlowLogFields slowLogFields) { + this.slowLogFields = slowLogFields; this.index = indexSettings.getIndex(); indexSettings.getScopedSettings().addSettingsUpdateConsumer(INDEX_INDEXING_SLOWLOG_REFORMAT_SETTING, this::setReformat); @@ -179,47 +179,19 @@ public void postIndex(ShardId shardId, Engine.Index indexOperation, Engine.Index final long tookInNanos = result.getTook(); if (indexWarnThreshold >= 0 && tookInNanos > indexWarnThreshold) { indexLogger.warn( - IndexingSlowLogMessage.of( - this.slowLogFieldProvider.indexSlowLogFields(), - index, - doc, - tookInNanos, - reformat, - maxSourceCharsToLog - ) + IndexingSlowLogMessage.of(this.slowLogFields.indexFields(), index, doc, tookInNanos, reformat, maxSourceCharsToLog) ); } else if (indexInfoThreshold >= 0 && tookInNanos > indexInfoThreshold) { indexLogger.info( - IndexingSlowLogMessage.of( - this.slowLogFieldProvider.indexSlowLogFields(), - index, - doc, - tookInNanos, - reformat, - maxSourceCharsToLog - ) + IndexingSlowLogMessage.of(this.slowLogFields.indexFields(), index, doc, tookInNanos, reformat, maxSourceCharsToLog) ); } else if (indexDebugThreshold >= 0 && tookInNanos > indexDebugThreshold) { indexLogger.debug( - IndexingSlowLogMessage.of( - this.slowLogFieldProvider.indexSlowLogFields(), - index, - doc, - tookInNanos, - reformat, - maxSourceCharsToLog - ) + IndexingSlowLogMessage.of(this.slowLogFields.indexFields(), index, doc, tookInNanos, reformat, maxSourceCharsToLog) ); } else if (indexTraceThreshold >= 0 && tookInNanos > indexTraceThreshold) { indexLogger.trace( - IndexingSlowLogMessage.of( - this.slowLogFieldProvider.indexSlowLogFields(), - index, - doc, - tookInNanos, - reformat, - maxSourceCharsToLog - ) + IndexingSlowLogMessage.of(this.slowLogFields.indexFields(), index, doc, tookInNanos, reformat, maxSourceCharsToLog) ); } } diff --git a/server/src/main/java/org/elasticsearch/index/SearchSlowLog.java b/server/src/main/java/org/elasticsearch/index/SearchSlowLog.java index e4836a391bfec..81e7cff862e32 100644 --- a/server/src/main/java/org/elasticsearch/index/SearchSlowLog.java +++ b/server/src/main/java/org/elasticsearch/index/SearchSlowLog.java @@ -45,7 +45,7 @@ public final class SearchSlowLog implements SearchOperationListener { private static final Logger queryLogger = LogManager.getLogger(INDEX_SEARCH_SLOWLOG_PREFIX + ".query"); private static final Logger fetchLogger = LogManager.getLogger(INDEX_SEARCH_SLOWLOG_PREFIX + ".fetch"); - private final SlowLogFieldProvider slowLogFieldProvider; + private final SlowLogFields slowLogFields; public static final Setting INDEX_SEARCH_SLOWLOG_INCLUDE_USER_SETTING = Setting.boolSetting( INDEX_SEARCH_SLOWLOG_PREFIX + ".include.user", @@ -126,9 +126,8 @@ public final class SearchSlowLog implements SearchOperationListener { private static final ToXContent.Params FORMAT_PARAMS = new ToXContent.MapParams(Collections.singletonMap("pretty", "false")); - public SearchSlowLog(IndexSettings indexSettings, SlowLogFieldProvider slowLogFieldProvider) { - slowLogFieldProvider.init(indexSettings); - this.slowLogFieldProvider = slowLogFieldProvider; + public SearchSlowLog(IndexSettings indexSettings, SlowLogFields slowLogFields) { + this.slowLogFields = slowLogFields; indexSettings.getScopedSettings() .addSettingsUpdateConsumer(INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_WARN_SETTING, this::setQueryWarnThreshold); this.queryWarnThreshold = indexSettings.getValue(INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_WARN_SETTING).nanos(); @@ -159,26 +158,26 @@ public SearchSlowLog(IndexSettings indexSettings, SlowLogFieldProvider slowLogFi @Override public void onQueryPhase(SearchContext context, long tookInNanos) { if (queryWarnThreshold >= 0 && tookInNanos > queryWarnThreshold) { - queryLogger.warn(SearchSlowLogMessage.of(this.slowLogFieldProvider.searchSlowLogFields(), context, tookInNanos)); + queryLogger.warn(SearchSlowLogMessage.of(this.slowLogFields.searchFields(), context, tookInNanos)); } else if (queryInfoThreshold >= 0 && tookInNanos > queryInfoThreshold) { - queryLogger.info(SearchSlowLogMessage.of(this.slowLogFieldProvider.searchSlowLogFields(), context, tookInNanos)); + queryLogger.info(SearchSlowLogMessage.of(this.slowLogFields.searchFields(), context, tookInNanos)); } else if (queryDebugThreshold >= 0 && tookInNanos > queryDebugThreshold) { - queryLogger.debug(SearchSlowLogMessage.of(this.slowLogFieldProvider.searchSlowLogFields(), context, tookInNanos)); + queryLogger.debug(SearchSlowLogMessage.of(this.slowLogFields.searchFields(), context, tookInNanos)); } else if (queryTraceThreshold >= 0 && tookInNanos > queryTraceThreshold) { - queryLogger.trace(SearchSlowLogMessage.of(this.slowLogFieldProvider.searchSlowLogFields(), context, tookInNanos)); + queryLogger.trace(SearchSlowLogMessage.of(this.slowLogFields.searchFields(), context, tookInNanos)); } } @Override public void onFetchPhase(SearchContext context, long tookInNanos) { if (fetchWarnThreshold >= 0 && tookInNanos > fetchWarnThreshold) { - fetchLogger.warn(SearchSlowLogMessage.of(this.slowLogFieldProvider.searchSlowLogFields(), context, tookInNanos)); + fetchLogger.warn(SearchSlowLogMessage.of(this.slowLogFields.searchFields(), context, tookInNanos)); } else if (fetchInfoThreshold >= 0 && tookInNanos > fetchInfoThreshold) { - fetchLogger.info(SearchSlowLogMessage.of(this.slowLogFieldProvider.searchSlowLogFields(), context, tookInNanos)); + fetchLogger.info(SearchSlowLogMessage.of(this.slowLogFields.searchFields(), context, tookInNanos)); } else if (fetchDebugThreshold >= 0 && tookInNanos > fetchDebugThreshold) { - fetchLogger.debug(SearchSlowLogMessage.of(this.slowLogFieldProvider.searchSlowLogFields(), context, tookInNanos)); + fetchLogger.debug(SearchSlowLogMessage.of(this.slowLogFields.searchFields(), context, tookInNanos)); } else if (fetchTraceThreshold >= 0 && tookInNanos > fetchTraceThreshold) { - fetchLogger.trace(SearchSlowLogMessage.of(this.slowLogFieldProvider.searchSlowLogFields(), context, tookInNanos)); + fetchLogger.trace(SearchSlowLogMessage.of(this.slowLogFields.searchFields(), context, tookInNanos)); } } diff --git a/server/src/main/java/org/elasticsearch/index/SlowLogFieldProvider.java b/server/src/main/java/org/elasticsearch/index/SlowLogFieldProvider.java index c61d4d4c85a86..e93edccc83b15 100644 --- a/server/src/main/java/org/elasticsearch/index/SlowLogFieldProvider.java +++ b/server/src/main/java/org/elasticsearch/index/SlowLogFieldProvider.java @@ -9,28 +9,14 @@ package org.elasticsearch.index; -import java.util.Map; - /** * Interface for providing additional fields to the slow log from a plugin. * Intended to be loaded through SPI. */ public interface SlowLogFieldProvider { /** - * Initialize field provider with index level settings to be able to listen for updates and set initial values + * Create a field provider with index level settings to be able to listen for updates and set initial values * @param indexSettings settings for the index */ - void init(IndexSettings indexSettings); - - /** - * Slow log fields for indexing events - * @return map of field name to value - */ - Map indexSlowLogFields(); - - /** - * Slow log fields for search events - * @return map of field name to value - */ - Map searchSlowLogFields(); + SlowLogFields create(IndexSettings indexSettings); } diff --git a/server/src/main/java/org/elasticsearch/index/SlowLogFields.java b/server/src/main/java/org/elasticsearch/index/SlowLogFields.java new file mode 100644 index 0000000000000..e018e3a4d6bb7 --- /dev/null +++ b/server/src/main/java/org/elasticsearch/index/SlowLogFields.java @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +package org.elasticsearch.index; + +import java.util.Map; + +/** + * Fields for the slow log. These may be different each call depending on the state of the system. + */ +public interface SlowLogFields { + + /** + * Slow log fields for indexing events + * @return map of field name to value + */ + Map indexFields(); + + /** + * Slow log fields for search events + * @return map of field name to value + */ + Map searchFields(); +} diff --git a/server/src/main/java/org/elasticsearch/indices/IndicesService.java b/server/src/main/java/org/elasticsearch/indices/IndicesService.java index a5765a1a707d2..f22a99cb27faf 100644 --- a/server/src/main/java/org/elasticsearch/indices/IndicesService.java +++ b/server/src/main/java/org/elasticsearch/indices/IndicesService.java @@ -264,6 +264,7 @@ public class IndicesService extends AbstractLifecycleComponent private final PostRecoveryMerger postRecoveryMerger; private final List searchOperationListeners; private final QueryRewriteInterceptor queryRewriteInterceptor; + final SlowLogFieldProvider slowLogFieldProvider; // pkg-private for testingå @Override protected void doStart() { @@ -383,6 +384,7 @@ public void onRemoval(ShardId shardId, String fieldName, boolean wasEvicted, lon this.timestampFieldMapperService = new TimestampFieldMapperService(settings, threadPool, this); this.postRecoveryMerger = new PostRecoveryMerger(settings, threadPool.executor(ThreadPool.Names.FORCE_MERGE), this::getShardOrNull); this.searchOperationListeners = builder.searchOperationListener; + this.slowLogFieldProvider = builder.slowLogFieldProvider; } private static final String DANGLING_INDICES_UPDATE_THREAD_NAME = "DanglingIndices#updateTask"; @@ -753,7 +755,7 @@ private synchronized IndexService createIndexService( () -> allowExpensiveQueries, indexNameExpressionResolver, recoveryStateFactories, - loadSlowLogFieldProvider(), + slowLogFieldProvider, mapperMetrics, searchOperationListeners ); @@ -833,7 +835,7 @@ public synchronized MapperService createIndexMapperServiceForValidation(IndexMet () -> allowExpensiveQueries, indexNameExpressionResolver, recoveryStateFactories, - loadSlowLogFieldProvider(), + slowLogFieldProvider, mapperMetrics, searchOperationListeners ); @@ -1439,31 +1441,6 @@ int numPendingDeletes(Index index) { } } - // pkg-private for testing - SlowLogFieldProvider loadSlowLogFieldProvider() { - List slowLogFieldProviders = pluginsService.loadServiceProviders(SlowLogFieldProvider.class); - return new SlowLogFieldProvider() { - @Override - public void init(IndexSettings indexSettings) { - slowLogFieldProviders.forEach(provider -> provider.init(indexSettings)); - } - - @Override - public Map indexSlowLogFields() { - return slowLogFieldProviders.stream() - .flatMap(provider -> provider.indexSlowLogFields().entrySet().stream()) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); - } - - @Override - public Map searchSlowLogFields() { - return slowLogFieldProviders.stream() - .flatMap(provider -> provider.searchSlowLogFields().entrySet().stream()) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); - } - }; - } - /** * Checks if all pending deletes have completed. Used by tests to ensure we don't check directory contents * while deletion still ongoing. * The reason is that, on Windows, browsing the directory contents can interfere diff --git a/server/src/main/java/org/elasticsearch/indices/IndicesServiceBuilder.java b/server/src/main/java/org/elasticsearch/indices/IndicesServiceBuilder.java index f0f0f453e3be8..d88bbfa3eba17 100644 --- a/server/src/main/java/org/elasticsearch/indices/IndicesServiceBuilder.java +++ b/server/src/main/java/org/elasticsearch/indices/IndicesServiceBuilder.java @@ -23,6 +23,8 @@ import org.elasticsearch.features.FeatureService; import org.elasticsearch.gateway.MetaStateService; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.SlowLogFieldProvider; +import org.elasticsearch.index.SlowLogFields; import org.elasticsearch.index.analysis.AnalysisRegistry; import org.elasticsearch.index.engine.EngineFactory; import org.elasticsearch.index.mapper.MapperMetrics; @@ -79,6 +81,22 @@ public class IndicesServiceBuilder { MapperMetrics mapperMetrics; List searchOperationListener = List.of(); QueryRewriteInterceptor queryRewriteInterceptor = null; + SlowLogFieldProvider slowLogFieldProvider = new SlowLogFieldProvider() { + @Override + public SlowLogFields create(IndexSettings indexSettings) { + return new SlowLogFields() { + @Override + public Map indexFields() { + return Map.of(); + } + + @Override + public Map searchFields() { + return Map.of(); + } + }; + } + }; public IndicesServiceBuilder settings(Settings settings) { this.settings = settings; @@ -191,6 +209,11 @@ public IndicesServiceBuilder searchOperationListeners(List slowLogFieldProviders = pluginsService.loadServiceProviders(SlowLogFieldProvider.class); + // NOTE: the response of index/search slow log fields below must be calculated dynamically on every call + // because the responses may change dynamically at runtime + SlowLogFieldProvider slowLogFieldProvider = indexSettings -> { + final List fields = new ArrayList<>(); + for (var provider : slowLogFieldProviders) { + fields.add(provider.create(indexSettings)); + } + return new SlowLogFields() { + @Override + public Map indexFields() { + return fields.stream() + .flatMap(f -> f.indexFields().entrySet().stream()) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + } + + @Override + public Map searchFields() { + return fields.stream() + .flatMap(f -> f.searchFields().entrySet().stream()) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + } + }; + }; + IndicesService indicesService = new IndicesServiceBuilder().settings(settings) .pluginsService(pluginsService) .nodeEnvironment(nodeEnvironment) @@ -826,6 +853,7 @@ private void construct( .requestCacheKeyDifferentiator(searchModule.getRequestCacheKeyDifferentiator()) .mapperMetrics(mapperMetrics) .searchOperationListeners(searchOperationListeners) + .slowLogFieldProvider(slowLogFieldProvider) .build(); final var parameters = new IndexSettingProvider.Parameters(clusterService, indicesService::createIndexMapperServiceForValidation); diff --git a/server/src/test/java/org/elasticsearch/index/IndexingSlowLogTests.java b/server/src/test/java/org/elasticsearch/index/IndexingSlowLogTests.java index c626be7983c46..ce8b0e457b762 100644 --- a/server/src/test/java/org/elasticsearch/index/IndexingSlowLogTests.java +++ b/server/src/test/java/org/elasticsearch/index/IndexingSlowLogTests.java @@ -81,7 +81,7 @@ public void testLevelPrecedence() { String uuid = UUIDs.randomBase64UUID(); IndexMetadata metadata = createIndexMetadata("index-precedence", settings(uuid)); IndexSettings settings = new IndexSettings(metadata, Settings.EMPTY); - IndexingSlowLog log = new IndexingSlowLog(settings, mock(SlowLogFieldProvider.class)); + IndexingSlowLog log = new IndexingSlowLog(settings, mock(SlowLogFields.class)); ParsedDocument doc = EngineTestCase.createParsedDoc("1", null); Engine.Index index = new Engine.Index(Uid.encodeId("doc_id"), randomNonNegativeLong(), doc); @@ -142,7 +142,7 @@ public void testTwoLoggersDifferentLevel() { ), Settings.EMPTY ); - IndexingSlowLog log1 = new IndexingSlowLog(index1Settings, mock(SlowLogFieldProvider.class)); + IndexingSlowLog log1 = new IndexingSlowLog(index1Settings, mock(SlowLogFields.class)); IndexSettings index2Settings = new IndexSettings( createIndexMetadata( @@ -155,7 +155,7 @@ public void testTwoLoggersDifferentLevel() { ), Settings.EMPTY ); - IndexingSlowLog log2 = new IndexingSlowLog(index2Settings, mock(SlowLogFieldProvider.class)); + IndexingSlowLog log2 = new IndexingSlowLog(index2Settings, mock(SlowLogFields.class)); ParsedDocument doc = EngineTestCase.createParsedDoc("1", null); Engine.Index index = new Engine.Index(Uid.encodeId("doc_id"), randomNonNegativeLong(), doc); @@ -179,12 +179,12 @@ public void testMultipleSlowLoggersUseSingleLog4jLogger() { LoggerContext context = (LoggerContext) LogManager.getContext(false); IndexSettings index1Settings = new IndexSettings(createIndexMetadata("index1", settings(UUIDs.randomBase64UUID())), Settings.EMPTY); - IndexingSlowLog log1 = new IndexingSlowLog(index1Settings, mock(SlowLogFieldProvider.class)); + IndexingSlowLog log1 = new IndexingSlowLog(index1Settings, mock(SlowLogFields.class)); int numberOfLoggersBefore = context.getLoggers().size(); IndexSettings index2Settings = new IndexSettings(createIndexMetadata("index2", settings(UUIDs.randomBase64UUID())), Settings.EMPTY); - IndexingSlowLog log2 = new IndexingSlowLog(index2Settings, mock(SlowLogFieldProvider.class)); + IndexingSlowLog log2 = new IndexingSlowLog(index2Settings, mock(SlowLogFields.class)); context = (LoggerContext) LogManager.getContext(false); int numberOfLoggersAfter = context.getLoggers().size(); @@ -355,7 +355,7 @@ public void testReformatSetting() { .build() ); IndexSettings settings = new IndexSettings(metadata, Settings.EMPTY); - IndexingSlowLog log = new IndexingSlowLog(settings, mock(SlowLogFieldProvider.class)); + IndexingSlowLog log = new IndexingSlowLog(settings, mock(SlowLogFields.class)); assertFalse(log.isReformat()); settings.updateIndexMetadata( newIndexMeta("index", Settings.builder().put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_REFORMAT_SETTING.getKey(), "true").build()) @@ -372,7 +372,7 @@ public void testReformatSetting() { metadata = newIndexMeta("index", Settings.builder().put(IndexMetadata.SETTING_VERSION_CREATED, IndexVersion.current()).build()); settings = new IndexSettings(metadata, Settings.EMPTY); - log = new IndexingSlowLog(settings, mock(SlowLogFieldProvider.class)); + log = new IndexingSlowLog(settings, mock(SlowLogFields.class)); assertTrue(log.isReformat()); try { settings.updateIndexMetadata( @@ -405,7 +405,7 @@ public void testSetLevels() { .build() ); IndexSettings settings = new IndexSettings(metadata, Settings.EMPTY); - IndexingSlowLog log = new IndexingSlowLog(settings, mock(SlowLogFieldProvider.class)); + IndexingSlowLog log = new IndexingSlowLog(settings, mock(SlowLogFields.class)); assertEquals(TimeValue.timeValueMillis(100).nanos(), log.getIndexTraceThreshold()); assertEquals(TimeValue.timeValueMillis(200).nanos(), log.getIndexDebugThreshold()); assertEquals(TimeValue.timeValueMillis(300).nanos(), log.getIndexInfoThreshold()); @@ -436,7 +436,7 @@ public void testSetLevels() { assertEquals(TimeValue.timeValueMillis(-1).nanos(), log.getIndexWarnThreshold()); settings = new IndexSettings(metadata, Settings.EMPTY); - log = new IndexingSlowLog(settings, mock(SlowLogFieldProvider.class)); + log = new IndexingSlowLog(settings, mock(SlowLogFields.class)); assertEquals(TimeValue.timeValueMillis(-1).nanos(), log.getIndexTraceThreshold()); assertEquals(TimeValue.timeValueMillis(-1).nanos(), log.getIndexDebugThreshold()); diff --git a/server/src/test/java/org/elasticsearch/index/SearchSlowLogTests.java b/server/src/test/java/org/elasticsearch/index/SearchSlowLogTests.java index 50e3269a6b9ba..359118c7cb5a1 100644 --- a/server/src/test/java/org/elasticsearch/index/SearchSlowLogTests.java +++ b/server/src/test/java/org/elasticsearch/index/SearchSlowLogTests.java @@ -103,7 +103,7 @@ public void testLevelPrecedence() { try (SearchContext ctx = searchContextWithSourceAndTask(createIndex("index"))) { String uuid = UUIDs.randomBase64UUID(); IndexSettings settings = new IndexSettings(createIndexMetadata("index", settings(uuid)), Settings.EMPTY); - SearchSlowLog log = new SearchSlowLog(settings, mock(SlowLogFieldProvider.class)); + SearchSlowLog log = new SearchSlowLog(settings, mock(SlowLogFields.class)); // For this test, when level is not breached, the level below should be used. { @@ -187,7 +187,7 @@ public void testTwoLoggersDifferentLevel() { ), Settings.EMPTY ); - SearchSlowLog log1 = new SearchSlowLog(settings1, mock(SlowLogFieldProvider.class)); + SearchSlowLog log1 = new SearchSlowLog(settings1, mock(SlowLogFields.class)); IndexSettings settings2 = new IndexSettings( createIndexMetadata( @@ -200,7 +200,7 @@ public void testTwoLoggersDifferentLevel() { ), Settings.EMPTY ); - SearchSlowLog log2 = new SearchSlowLog(settings2, mock(SlowLogFieldProvider.class)); + SearchSlowLog log2 = new SearchSlowLog(settings2, mock(SlowLogFields.class)); { // threshold set on WARN only, should not log @@ -223,7 +223,7 @@ public void testMultipleSlowLoggersUseSingleLog4jLogger() { try (SearchContext ctx1 = searchContextWithSourceAndTask(createIndex("index-1"))) { IndexSettings settings1 = new IndexSettings(createIndexMetadata("index-1", settings(UUIDs.randomBase64UUID())), Settings.EMPTY); - SearchSlowLog log1 = new SearchSlowLog(settings1, mock(SlowLogFieldProvider.class)); + SearchSlowLog log1 = new SearchSlowLog(settings1, mock(SlowLogFields.class)); int numberOfLoggersBefore = context.getLoggers().size(); try (SearchContext ctx2 = searchContextWithSourceAndTask(createIndex("index-2"))) { @@ -231,7 +231,7 @@ public void testMultipleSlowLoggersUseSingleLog4jLogger() { createIndexMetadata("index-2", settings(UUIDs.randomBase64UUID())), Settings.EMPTY ); - SearchSlowLog log2 = new SearchSlowLog(settings2, mock(SlowLogFieldProvider.class)); + SearchSlowLog log2 = new SearchSlowLog(settings2, mock(SlowLogFields.class)); int numberOfLoggersAfter = context.getLoggers().size(); assertThat(numberOfLoggersAfter, equalTo(numberOfLoggersBefore)); @@ -323,7 +323,7 @@ public void testSetQueryLevels() { .build() ); IndexSettings settings = new IndexSettings(metadata, Settings.EMPTY); - SearchSlowLog log = new SearchSlowLog(settings, mock(SlowLogFieldProvider.class)); + SearchSlowLog log = new SearchSlowLog(settings, mock(SlowLogFields.class)); assertEquals(TimeValue.timeValueMillis(100).nanos(), log.getQueryTraceThreshold()); assertEquals(TimeValue.timeValueMillis(200).nanos(), log.getQueryDebugThreshold()); assertEquals(TimeValue.timeValueMillis(300).nanos(), log.getQueryInfoThreshold()); @@ -354,7 +354,7 @@ public void testSetQueryLevels() { assertEquals(TimeValue.timeValueMillis(-1).nanos(), log.getQueryWarnThreshold()); settings = new IndexSettings(metadata, Settings.EMPTY); - log = new SearchSlowLog(settings, mock(SlowLogFieldProvider.class)); + log = new SearchSlowLog(settings, mock(SlowLogFields.class)); assertEquals(TimeValue.timeValueMillis(-1).nanos(), log.getQueryTraceThreshold()); assertEquals(TimeValue.timeValueMillis(-1).nanos(), log.getQueryDebugThreshold()); @@ -429,7 +429,7 @@ public void testSetFetchLevels() { .build() ); IndexSettings settings = new IndexSettings(metadata, Settings.EMPTY); - SearchSlowLog log = new SearchSlowLog(settings, mock(SlowLogFieldProvider.class)); + SearchSlowLog log = new SearchSlowLog(settings, mock(SlowLogFields.class)); assertEquals(TimeValue.timeValueMillis(100).nanos(), log.getFetchTraceThreshold()); assertEquals(TimeValue.timeValueMillis(200).nanos(), log.getFetchDebugThreshold()); assertEquals(TimeValue.timeValueMillis(300).nanos(), log.getFetchInfoThreshold()); @@ -460,7 +460,7 @@ public void testSetFetchLevels() { assertEquals(TimeValue.timeValueMillis(-1).nanos(), log.getFetchWarnThreshold()); settings = new IndexSettings(metadata, Settings.EMPTY); - log = new SearchSlowLog(settings, mock(SlowLogFieldProvider.class)); + log = new SearchSlowLog(settings, mock(SlowLogFields.class)); assertEquals(TimeValue.timeValueMillis(-1).nanos(), log.getFetchTraceThreshold()); assertEquals(TimeValue.timeValueMillis(-1).nanos(), log.getFetchDebugThreshold()); diff --git a/server/src/test/java/org/elasticsearch/indices/IndicesServiceTests.java b/server/src/test/java/org/elasticsearch/indices/IndicesServiceTests.java index 17975b7d18dd8..b56afadb14924 100644 --- a/server/src/test/java/org/elasticsearch/indices/IndicesServiceTests.java +++ b/server/src/test/java/org/elasticsearch/indices/IndicesServiceTests.java @@ -44,6 +44,7 @@ import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.IndexVersions; import org.elasticsearch.index.SlowLogFieldProvider; +import org.elasticsearch.index.SlowLogFields; import org.elasticsearch.index.engine.Engine; import org.elasticsearch.index.engine.EngineConfig; import org.elasticsearch.index.engine.EngineFactory; @@ -209,16 +210,18 @@ static void setFields(Map fields) { } @Override - public void init(IndexSettings indexSettings) {} - - @Override - public Map indexSlowLogFields() { - return fields; - } - - @Override - public Map searchSlowLogFields() { - return fields; + public SlowLogFields create(IndexSettings indexSettings) { + return new SlowLogFields() { + @Override + public Map indexFields() { + return fields; + } + + @Override + public Map searchFields() { + return fields; + } + }; } } @@ -231,16 +234,18 @@ static void setFields(Map fields) { } @Override - public void init(IndexSettings indexSettings) {} - - @Override - public Map indexSlowLogFields() { - return fields; - } - - @Override - public Map searchSlowLogFields() { - return fields; + public SlowLogFields create(IndexSettings indexSettings) { + return new SlowLogFields() { + @Override + public Map indexFields() { + return fields; + } + + @Override + public Map searchFields() { + return fields; + } + }; } } @@ -805,33 +810,34 @@ public void testLoadSlowLogFieldProvider() { TestAnotherSlowLogFieldProvider.setFields(Map.of("key2", "value2")); var indicesService = getIndicesService(); - SlowLogFieldProvider fieldProvider = indicesService.loadSlowLogFieldProvider(); + SlowLogFieldProvider fieldProvider = indicesService.slowLogFieldProvider; + SlowLogFields fields = fieldProvider.create(null); // The map of fields from the two providers are merged to a single map of fields - assertEquals(Map.of("key1", "value1", "key2", "value2"), fieldProvider.searchSlowLogFields()); - assertEquals(Map.of("key1", "value1", "key2", "value2"), fieldProvider.indexSlowLogFields()); + assertEquals(Map.of("key1", "value1", "key2", "value2"), fields.searchFields()); + assertEquals(Map.of("key1", "value1", "key2", "value2"), fields.indexFields()); TestSlowLogFieldProvider.setFields(Map.of("key1", "value1")); TestAnotherSlowLogFieldProvider.setFields(Map.of("key1", "value2")); // There is an overlap of field names, since this isn't deterministic and probably a // programming error (two providers provide the same field) throw an exception - assertThrows(IllegalStateException.class, fieldProvider::searchSlowLogFields); - assertThrows(IllegalStateException.class, fieldProvider::indexSlowLogFields); + assertThrows(IllegalStateException.class, fields::searchFields); + assertThrows(IllegalStateException.class, fields::indexFields); TestSlowLogFieldProvider.setFields(Map.of("key1", "value1")); TestAnotherSlowLogFieldProvider.setFields(Map.of()); // One provider has no fields - assertEquals(Map.of("key1", "value1"), fieldProvider.searchSlowLogFields()); - assertEquals(Map.of("key1", "value1"), fieldProvider.indexSlowLogFields()); + assertEquals(Map.of("key1", "value1"), fields.searchFields()); + assertEquals(Map.of("key1", "value1"), fields.indexFields()); TestSlowLogFieldProvider.setFields(Map.of()); TestAnotherSlowLogFieldProvider.setFields(Map.of()); // Both providers have no fields - assertEquals(Map.of(), fieldProvider.searchSlowLogFields()); - assertEquals(Map.of(), fieldProvider.indexSlowLogFields()); + assertEquals(Map.of(), fields.searchFields()); + assertEquals(Map.of(), fields.indexFields()); } public void testWithTempIndexServiceHandlesExistingIndex() throws Exception { diff --git a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/slowlog/SecuritySlowLogFieldProvider.java b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/slowlog/SecuritySlowLogFieldProvider.java index 1610aedd1d363..b5327b6779656 100644 --- a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/slowlog/SecuritySlowLogFieldProvider.java +++ b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/slowlog/SecuritySlowLogFieldProvider.java @@ -9,6 +9,7 @@ import org.elasticsearch.index.IndexSettings; import org.elasticsearch.index.SlowLogFieldProvider; +import org.elasticsearch.index.SlowLogFields; import org.elasticsearch.xpack.security.Security; import java.util.Map; @@ -18,8 +19,36 @@ public class SecuritySlowLogFieldProvider implements SlowLogFieldProvider { private final Security plugin; - private boolean includeUserInIndexing = false; - private boolean includeUserInSearch = false; + + private class SecuritySlowLogFields implements SlowLogFields { + private boolean includeUserInIndexing = false; + private boolean includeUserInSearch = false; + + SecuritySlowLogFields(IndexSettings indexSettings) { + indexSettings.getScopedSettings() + .addSettingsUpdateConsumer(INDEX_SEARCH_SLOWLOG_INCLUDE_USER_SETTING, newValue -> this.includeUserInSearch = newValue); + this.includeUserInSearch = indexSettings.getValue(INDEX_SEARCH_SLOWLOG_INCLUDE_USER_SETTING); + indexSettings.getScopedSettings() + .addSettingsUpdateConsumer(INDEX_INDEXING_SLOWLOG_INCLUDE_USER_SETTING, newValue -> this.includeUserInIndexing = newValue); + this.includeUserInIndexing = indexSettings.getValue(INDEX_INDEXING_SLOWLOG_INCLUDE_USER_SETTING); + } + + @Override + public Map indexFields() { + if (includeUserInIndexing) { + return plugin.getAuthContextForSlowLog(); + } + return Map.of(); + } + + @Override + public Map searchFields() { + if (includeUserInSearch) { + return plugin.getAuthContextForSlowLog(); + } + return Map.of(); + } + } public SecuritySlowLogFieldProvider() { throw new IllegalStateException("Provider must be constructed using PluginsService"); @@ -30,28 +59,7 @@ public SecuritySlowLogFieldProvider(Security plugin) { } @Override - public void init(IndexSettings indexSettings) { - indexSettings.getScopedSettings() - .addSettingsUpdateConsumer(INDEX_SEARCH_SLOWLOG_INCLUDE_USER_SETTING, newValue -> this.includeUserInSearch = newValue); - this.includeUserInSearch = indexSettings.getValue(INDEX_SEARCH_SLOWLOG_INCLUDE_USER_SETTING); - indexSettings.getScopedSettings() - .addSettingsUpdateConsumer(INDEX_INDEXING_SLOWLOG_INCLUDE_USER_SETTING, newValue -> this.includeUserInIndexing = newValue); - this.includeUserInIndexing = indexSettings.getValue(INDEX_INDEXING_SLOWLOG_INCLUDE_USER_SETTING); - } - - @Override - public Map indexSlowLogFields() { - if (includeUserInIndexing) { - return plugin.getAuthContextForSlowLog(); - } - return Map.of(); - } - - @Override - public Map searchSlowLogFields() { - if (includeUserInSearch) { - return plugin.getAuthContextForSlowLog(); - } - return Map.of(); + public SlowLogFields create(IndexSettings indexSettings) { + return new SecuritySlowLogFields(indexSettings); } } From 92d1aa960aaad75935a8985c9ba55dafd8648c1f Mon Sep 17 00:00:00 2001 From: Armin Braun Date: Mon, 6 Jan 2025 18:12:32 +0100 Subject: [PATCH 14/35] Don't intern leafName in Mapper.Builder (#119554) We shouldn't intern in the builder already. It's redundant since we'll be interning the mapper name when we actually build the mapper instance anyway and introduces a non-trivial slowdown into mapper serialization because we create temporary builders during serialization that never turn into concrete instances. --- .../src/main/java/org/elasticsearch/index/mapper/Mapper.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/index/mapper/Mapper.java b/server/src/main/java/org/elasticsearch/index/mapper/Mapper.java index 5cbdffc28ba74..916de60dc80ce 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/Mapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/Mapper.java @@ -107,9 +107,8 @@ public abstract static class Builder { private String leafName; - @SuppressWarnings("this-escape") protected Builder(String leafName) { - setLeafName(leafName); + this.leafName = leafName; } public final String leafName() { @@ -120,7 +119,7 @@ public final String leafName() { public abstract Mapper build(MapperBuilderContext context); void setLeafName(String leafName) { - this.leafName = internFieldName(leafName); + this.leafName = leafName; } } From 51e81135be6546dfa49553d85515e352a2eb8042 Mon Sep 17 00:00:00 2001 From: Nhat Nguyen Date: Mon, 6 Jan 2025 09:21:28 -0800 Subject: [PATCH 15/35] Unmute SmokeTestMultiNodeClientYamlTestSuiteIT (#119593) Closes #119191 --- muted-tests.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/muted-tests.yml b/muted-tests.yml index 407d49c271cbd..fbeb35674701e 100644 --- a/muted-tests.yml +++ b/muted-tests.yml @@ -238,8 +238,6 @@ tests: - class: org.elasticsearch.xpack.test.rest.XPackRestIT method: test {p0=ml/data_frame_analytics_cat_apis/Test cat data frame analytics all jobs with header} issue: https://github.com/elastic/elasticsearch/issues/119332 -- class: org.elasticsearch.smoketest.SmokeTestMultiNodeClientYamlTestSuiteIT - issue: https://github.com/elastic/elasticsearch/issues/119191 - class: org.elasticsearch.xpack.logsdb.qa.LogsDbVersusLogsDbReindexedIntoStandardModeChallengeRestIT method: testEsqlTermsAggregationByMethod issue: https://github.com/elastic/elasticsearch/issues/119355 From c7b61bdc63e8b4c8e30eb106ff7cc1a0ae2d88b3 Mon Sep 17 00:00:00 2001 From: Liam Thompson <32779855+leemthompo@users.noreply.github.com> Date: Mon, 6 Jan 2025 18:56:35 +0100 Subject: [PATCH 16/35] =?UTF-8?q?[DOCS]=C2=A0Add=20full-text=20search=20ov?= =?UTF-8?q?erview=20(#119462)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/reference/analysis.asciidoc | 3 +- docs/reference/analysis/tokenizers.asciidoc | 8 ++ .../search/full-text-search-overview.svg | 81 ++++++++++++++++++ docs/reference/intro.asciidoc | 7 +- .../full-text-filtering-tutorial.asciidoc | 3 +- .../full-text-search.asciidoc | 82 +++++++++++++++++++ .../search-your-data.asciidoc | 3 +- 7 files changed, 179 insertions(+), 8 deletions(-) create mode 100644 docs/reference/images/search/full-text-search-overview.svg create mode 100644 docs/reference/search/search-your-data/full-text-search.asciidoc diff --git a/docs/reference/analysis.asciidoc b/docs/reference/analysis.asciidoc index 72ab42d22b911..e8fbc3bd81b6d 100644 --- a/docs/reference/analysis.asciidoc +++ b/docs/reference/analysis.asciidoc @@ -9,8 +9,7 @@ -- _Text analysis_ is the process of converting unstructured text, like -the body of an email or a product description, into a structured format that's -optimized for search. +the body of an email or a product description, into a structured format that's <>. [discrete] [[when-to-configure-analysis]] diff --git a/docs/reference/analysis/tokenizers.asciidoc b/docs/reference/analysis/tokenizers.asciidoc index 38e4ebfcabc39..89928f07b5638 100644 --- a/docs/reference/analysis/tokenizers.asciidoc +++ b/docs/reference/analysis/tokenizers.asciidoc @@ -1,6 +1,14 @@ [[analysis-tokenizers]] == Tokenizer reference +.Difference between {es} tokenization and neural tokenization +[NOTE] +==== +{es}'s tokenization process produces linguistic tokens, optimized for search and retrieval. +This differs from neural tokenization in the context of machine learning and natural language processing. Neural tokenizers translate strings into smaller, subword tokens, which are encoded into vectors for consumptions by neural networks. +{es} does not have built-in neural tokenizers. +==== + A _tokenizer_ receives a stream of characters, breaks it up into individual _tokens_ (usually individual words), and outputs a stream of _tokens_. For instance, a <> tokenizer breaks diff --git a/docs/reference/images/search/full-text-search-overview.svg b/docs/reference/images/search/full-text-search-overview.svg new file mode 100644 index 0000000000000..e7a1c5ba14cfa --- /dev/null +++ b/docs/reference/images/search/full-text-search-overview.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + Full-text search with Elasticsearch + + + + + Source documents + + + + Analysis pipeline + Transforms text to normalized terms + + + + Inverted index + Search-optimized data structure + + + + Search query + + + + Relevance scoring + Similarity algorithm scores documents + + + + Search results + Most relevant first + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/reference/intro.asciidoc b/docs/reference/intro.asciidoc index 391439df2ae85..2fd0722bcd660 100644 --- a/docs/reference/intro.asciidoc +++ b/docs/reference/intro.asciidoc @@ -260,7 +260,7 @@ Refer to <> for a hands-on examp *{esql}* is a new piped query language and compute engine which was first added in version *8.11*. -{esql} does not yet support all the features of Query DSL, like full-text search and semantic search. +{esql} does not yet support all the features of Query DSL. Look forward to new {esql} features and functionalities in each release. Refer to <> for a full overview of the query languages available in {es}. @@ -280,7 +280,7 @@ The <> accepts queries written in Query DS Query DSL support a wide range of search techniques, including the following: -* <>: Search text that has been analyzed and indexed to support phrase or proximity queries, fuzzy matches, and more. +* <>: Search text that has been analyzed and indexed to support phrase or proximity queries, fuzzy matches, and more. * <>: Search for exact matches using `keyword` fields. * <>: Search `semantic_text` fields using dense or sparse vector search on embeddings generated in your {es} cluster. * <>: Search for similar dense vectors using the kNN algorithm for embeddings generated outside of {es}. @@ -328,8 +328,7 @@ directly executed within {es} itself. The <> accepts queries written in {esql} syntax. -Today, it supports a subset of the features available in Query DSL, like aggregations, filters, and transformations. -It does not yet support full-text search or semantic search. +Today, it supports a subset of the features available in Query DSL, but it is rapidly evolving. It comes with a comprehensive set of <> for working with data and has robust integration with {kib}'s Discover, dashboards and visualizations. diff --git a/docs/reference/quickstart/full-text-filtering-tutorial.asciidoc b/docs/reference/quickstart/full-text-filtering-tutorial.asciidoc index a024305588cae..b602ee5076434 100644 --- a/docs/reference/quickstart/full-text-filtering-tutorial.asciidoc +++ b/docs/reference/quickstart/full-text-filtering-tutorial.asciidoc @@ -4,7 +4,7 @@ Basics: Full-text search and filtering ++++ -This is a hands-on introduction to the basics of full-text search with {es}, also known as _lexical search_, using the <> and <>. +This is a hands-on introduction to the basics of <> with {es}, also known as _lexical search_, using the <> and <>. You'll also learn how to filter data, to narrow down search results based on exact criteria. In this scenario, we're implementing a search function for a cooking blog. @@ -632,6 +632,7 @@ This tutorial introduced the basics of full-text search and filtering in {es}. Building a real-world search experience requires understanding many more advanced concepts and techniques. Here are some resources once you're ready to dive deeper: +* <>: Learn about the core components of full-text search in {es}. * <>: Understand all your options for searching and analyzing data in {es}. * <>: Understand how text is processed for full-text search. * <>: Learn about more advanced search techniques using the `_search` API, including semantic search. diff --git a/docs/reference/search/search-your-data/full-text-search.asciidoc b/docs/reference/search/search-your-data/full-text-search.asciidoc new file mode 100644 index 0000000000000..8641d0e45748a --- /dev/null +++ b/docs/reference/search/search-your-data/full-text-search.asciidoc @@ -0,0 +1,82 @@ +[[full-text-search]] +== Full-text search + +.Hands-on introduction to full-text search +[TIP] +==== +Would you prefer to jump straight into a hands-on tutorial? +Refer to our quick start <>. +==== + +Full-text search, also known as lexical search, is a technique for fast, efficient searching through text fields in documents. +Documents and search queries are transformed to enable returning https://www.elastic.co/what-is/search-relevance[relevant] results instead of simply exact term matches. +Fields of type <> are analyzed and indexed for full-text search. + +Built on decades of information retrieval research, full-text search delivers reliable results that scale predictably as your data grows. Because it runs efficiently on CPUs, {es}'s full-text search requires minimal computational resources compared to GPU-intensive vector operations. + +You can combine full-text search with <> to build modern hybrid search applications. While vector search may require additional GPU resources, the full-text component remains cost-effective by leveraging existing CPU infrastructure. + +[discrete] +[[full-text-search-how-it-works]] +=== How full-text search works + +The following diagram illustrates the components of full-text search. + +image::images/search/full-text-search-overview.svg[Components of full-text search from analysis to relevance scoring, align=center, width=500] + +At a high level, full-text search involves the following: + +* <>: Analysis consists of a pipeline of sequential transformations. Text is transformed into a format optimized for searching using techniques such as stemming, lowercasing, and stop word elimination. {es} contains a number of built-in <> and tokenizers, including options to analyze specific language text. You can also create custom analyzers. ++ +[TIP] +==== +Refer to <> to learn how to test an analyzer and inspect the tokens and metadata it generates. +==== +* *Inverted index creation*: After analysis is complete, {es} builds an inverted index from the resulting tokens. +An inverted index is a data structure that maps each token to the documents that contain it. +It's made up of two key components: +** *Dictionary*: A sorted list of all unique terms in the collection of documents in your index. +** *Posting list*: For each term, a list of document IDs where the term appears, along with optional metadata like term frequency and position. +* *Relevance scoring*: Results are ranked by how relevant they are to the given query. The relevance score of each document is represented by a positive floating-point number called the `_score`. The higher the `_score`, the more relevant the document. ++ +The default <> {es} uses for calculating relevance scores is https://en.wikipedia.org/wiki/Okapi_BM25[Okapi BM25], a variation of the https://en.wikipedia.org/wiki/Tf–idf[TF-IDF algorithm]. BM25 calculates relevance scores based on term frequency, document frequency, and document length. +Refer to this https://www.elastic.co/blog/practical-bm25-part-2-the-bm25-algorithm-and-its-variables[technical blog post] for a deep dive into BM25. +* *Full-text search query*: Query text is analyzed <>, and the resulting tokens are used to search the inverted index. ++ +Query DSL supports a number of <>. ++ +As of 8.17, {esql} also supports <> functions. + +[discrete] +[[full-text-search-getting-started]] +=== Getting started + +For a hands-on introduction to full-text search, refer to the <>. + +[discrete] +[[full-text-search-learn-more]] +=== Learn more + +Here are some resources to help you learn more about full-text search with {es}. + +*Core concepts* + +Learn about the core components of full-text search: + +* <> +* <> +** <> +** <> + +*{es} query languages* + +Learn how to build full-text search queries using {es}'s query languages: + +* <> +* <> + +*Advanced topics* + +For a technical deep dive into {es}'s BM25 implementation read this blog post: https://www.elastic.co/blog/practical-bm25-part-2-the-bm25-algorithm-and-its-variables[The BM25 Algorithm and its Variables]. + +To learn how to optimize the relevance of your search results, refer to <>. \ No newline at end of file diff --git a/docs/reference/search/search-your-data/search-your-data.asciidoc b/docs/reference/search/search-your-data/search-your-data.asciidoc index 9ef1ae0ebc59b..90a273a8cfe4d 100644 --- a/docs/reference/search/search-your-data/search-your-data.asciidoc +++ b/docs/reference/search/search-your-data/search-your-data.asciidoc @@ -18,7 +18,7 @@ Search for exact values:: Search for <> of numbers, dates, IPs, or strings. -Full-text search:: +<>:: Use <> to query <> and find documents that best match query terms. @@ -43,6 +43,7 @@ DSL, with a simplified user experience. Create search applications based on your results directly in the Kibana Search UI. include::search-api.asciidoc[] +include::full-text-search.asciidoc[] include::../../how-to/recipes.asciidoc[] // ☝️ search relevance recipes include::retrievers-overview.asciidoc[] From 359592f79c6cddacc47932d911aa227fb35eb69f Mon Sep 17 00:00:00 2001 From: Nik Everett Date: Mon, 6 Jan 2025 13:52:51 -0500 Subject: [PATCH 17/35] ESQL: Explain IN (#119514) * ESQL: Explain IN Adds javadoc to IN to explain it's three-valued null logic and why it isn't using the standard code generators. * Paste more examples --- .../predicate/operator/comparison/In.java | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/predicate/operator/comparison/In.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/predicate/operator/comparison/In.java index f6c23304c189b..f596d589cdde2 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/predicate/operator/comparison/In.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/predicate/operator/comparison/In.java @@ -11,6 +11,8 @@ import org.elasticsearch.common.io.stream.NamedWriteableRegistry; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; +import org.elasticsearch.compute.data.Block; +import org.elasticsearch.compute.data.Vector; import org.elasticsearch.compute.operator.EvalOperator; import org.elasticsearch.xpack.esql.EsqlIllegalArgumentException; import org.elasticsearch.xpack.esql.core.expression.Expression; @@ -50,6 +52,52 @@ import static org.elasticsearch.xpack.esql.core.type.DataType.VERSION; import static org.elasticsearch.xpack.esql.core.util.StringUtils.ordinal; +/** + * The {@code IN} operator. + *

+ * This function has quite "unique" null handling rules around {@code null} and multivalued + * fields. The {@code null} rules are inspired by PostgreSQL, and, presumably, every other + * SQL implementation. The multivalue rules are pretty much an extension of the "multivalued + * fields are like null in scalars" rule. Here's some examples: + *

+ *
    + *
  • {@code 'x' IN ('a', 'b', 'c')} => @{code false}
  • + *
  • {@code 'x' IN ('a', 'x', 'c')} => @{code true}
  • + *
  • {@code null IN ('a', 'b', 'c')} => @{code null}
  • + *
  • {@code ['x', 'y'] IN ('a', 'b', 'c')} => @{code null} and a warning
  • + *
  • {@code 'x' IN ('a', null, 'c')} => @{code null}
  • + *
  • {@code 'x' IN ('x', null, 'c')} => @{code true}
  • + *
  • {@code 'x' IN ('x', ['a', 'b'], 'c')} => @{code true} and a warning
  • + *
  • {@code 'x' IN ('a', ['a', 'b'], 'c')} => @{code false} and a warning
  • + *
+ *

+ * And here's the decision tree for {@code WHERE x IN (a, b, c)}: + *

+ *
    + *
  1. {@code x IS NULL} => return {@code null}
  2. + *
  3. {@code MV_COUNT(x) > 1} => emit a warning and return {@code null}
  4. + *
  5. {@code a IS NULL AND b IS NULL AND c IS NULL} => return {@code null}
  6. + *
  7. {@code MV_COUNT(a) > 1 OR MV_COUNT(b) > 1 OR MV_COUNT(c) > 1} => emit a warning and continue
  8. + *
  9. {@code MV_COUNT(a) > 1 AND MV_COUNT(b) > 1 AND MV_COUNT(c) > 1} => return {@code null}
  10. + *
  11. {@code x == a OR x == b OR x == c} => return {@code true}
  12. + *
  13. {@code a IS NULL OR b IS NULL OR c IS NULL} => return {@code null}
  14. + *
  15. {@code else} => {@code false}
  16. + *
+ *

+ * I believe the first five entries are *mostly* optimizations and making the + * Three-valued logic of SQL + * explicit and integrated with our multivalue field rules. And make all that work with the + * actual evaluator code. You could probably shorten this to the last three points, but lots + * of folks aren't familiar with SQL's three-valued logic anyway, so let's be explicit. + *

+ *

+ * Because of this chain of logic we don't use the standard evaluator generators. They'd just + * require too many special cases and nothing else quite works like this. I mean, everything + * works just like this in that "three-valued logic" sort of way, but not in the "java code" + * sort of way. So! Instead of using the standard evaluator generators we use the + * String Template generators that we use for things like {@link Block} and {@link Vector}. + *

+ */ public class In extends EsqlScalarFunction { public static final NamedWriteableRegistry.Entry ENTRY = new NamedWriteableRegistry.Entry(Expression.class, "In", In::new); From bf3edffedd1b911c66d9abcab82baaa0af7765f0 Mon Sep 17 00:00:00 2001 From: Mark Vieira Date: Mon, 6 Jan 2025 11:06:30 -0800 Subject: [PATCH 18/35] Use unsecure entropy source in docker packaging tests (#119598) --- .../elasticsearch/packaging/util/docker/DockerRun.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/qa/packaging/src/test/java/org/elasticsearch/packaging/util/docker/DockerRun.java b/qa/packaging/src/test/java/org/elasticsearch/packaging/util/docker/DockerRun.java index 5dc47993072a8..554ae871ea9fa 100644 --- a/qa/packaging/src/test/java/org/elasticsearch/packaging/util/docker/DockerRun.java +++ b/qa/packaging/src/test/java/org/elasticsearch/packaging/util/docker/DockerRun.java @@ -29,6 +29,9 @@ */ public class DockerRun { + // Use less secure entropy source to avoid hanging when generating certificates + private static final String DEFAULT_JAVA_OPTS = "-Djava.security.egd=file:/dev/urandom"; + private Distribution distribution; private final Map envVars = new HashMap<>(); private final Map volumes = new HashMap<>(); @@ -112,6 +115,11 @@ String build() { // Limit container memory cmd.add("--memory " + memory); + // Add default java opts + for (String envVar : List.of("CLI_JAVA_OPTS", "ES_JAVA_OPTS")) { + this.envVars.put(envVar, this.envVars.getOrDefault(envVar, "") + " " + DEFAULT_JAVA_OPTS); + } + this.envVars.forEach((key, value) -> cmd.add("--env " + key + "=\"" + value + "\"")); // Map ports in the container to the host, so that we can send requests From ce7b606f7ba70253617d66d859bd91f75e889321 Mon Sep 17 00:00:00 2001 From: Oleksandr Kolomiiets Date: Mon, 6 Jan 2025 12:34:46 -0800 Subject: [PATCH 19/35] Unmute all logsdb tests (#119612) --- muted-tests.yml | 554 +++++++++++++++++++++++------------------------- 1 file changed, 271 insertions(+), 283 deletions(-) diff --git a/muted-tests.yml b/muted-tests.yml index fbeb35674701e..b83c4f2eba3b0 100644 --- a/muted-tests.yml +++ b/muted-tests.yml @@ -1,287 +1,275 @@ tests: -- class: "org.elasticsearch.client.RestClientSingleHostIntegTests" - issue: "https://github.com/elastic/elasticsearch/issues/102717" - method: "testRequestResetAndAbort" -- class: org.elasticsearch.smoketest.WatcherYamlRestIT - method: test {p0=watcher/usage/10_basic/Test watcher usage stats output} - issue: https://github.com/elastic/elasticsearch/issues/112189 -- class: org.elasticsearch.ingest.geoip.IngestGeoIpClientYamlTestSuiteIT - issue: https://github.com/elastic/elasticsearch/issues/111497 -- class: org.elasticsearch.packaging.test.PackagesSecurityAutoConfigurationTests - method: test20SecurityNotAutoConfiguredOnReInstallation - issue: https://github.com/elastic/elasticsearch/issues/112635 -- class: org.elasticsearch.xpack.sql.qa.single_node.JdbcSqlSpecIT - method: test {case-functions.testSelectInsertWithLcaseAndLengthWithOrderBy} - issue: https://github.com/elastic/elasticsearch/issues/112642 -- class: org.elasticsearch.xpack.sql.qa.single_node.JdbcSqlSpecIT - method: test {case-functions.testUcaseInline1} - issue: https://github.com/elastic/elasticsearch/issues/112641 -- class: org.elasticsearch.xpack.sql.qa.single_node.JdbcSqlSpecIT - method: test {case-functions.testUpperCasingTheSecondLetterFromTheRightFromFirstName} - issue: https://github.com/elastic/elasticsearch/issues/112640 -- class: org.elasticsearch.xpack.sql.qa.single_node.JdbcSqlSpecIT - method: test {case-functions.testUcaseInline3} - issue: https://github.com/elastic/elasticsearch/issues/112643 -- class: org.elasticsearch.xpack.sql.qa.security.JdbcSqlSpecIT - method: test {case-functions.testUcaseInline1} - issue: https://github.com/elastic/elasticsearch/issues/112641 -- class: org.elasticsearch.xpack.sql.qa.security.JdbcSqlSpecIT - method: test {case-functions.testUcaseInline3} - issue: https://github.com/elastic/elasticsearch/issues/112643 -- class: org.elasticsearch.xpack.sql.qa.security.JdbcSqlSpecIT - method: test {case-functions.testUpperCasingTheSecondLetterFromTheRightFromFirstName} - issue: https://github.com/elastic/elasticsearch/issues/112640 -- class: org.elasticsearch.xpack.sql.qa.security.JdbcSqlSpecIT - method: test {case-functions.testSelectInsertWithLcaseAndLengthWithOrderBy} - issue: https://github.com/elastic/elasticsearch/issues/112642 -- class: org.elasticsearch.packaging.test.WindowsServiceTests - method: test30StartStop - issue: https://github.com/elastic/elasticsearch/issues/113160 -- class: org.elasticsearch.packaging.test.WindowsServiceTests - method: test33JavaChanged - issue: https://github.com/elastic/elasticsearch/issues/113177 -- class: org.elasticsearch.packaging.test.WindowsServiceTests - method: test80JavaOptsInEnvVar - issue: https://github.com/elastic/elasticsearch/issues/113219 -- class: org.elasticsearch.packaging.test.WindowsServiceTests - method: test81JavaOptsInJvmOptions - issue: https://github.com/elastic/elasticsearch/issues/113313 -- class: org.elasticsearch.backwards.MixedClusterClientYamlTestSuiteIT - method: test {p0=mtermvectors/10_basic/Tests catching other exceptions per item} - issue: https://github.com/elastic/elasticsearch/issues/113325 -- class: org.elasticsearch.xpack.transform.integration.TransformIT - method: testStopWaitForCheckpoint - issue: https://github.com/elastic/elasticsearch/issues/106113 -- class: org.elasticsearch.kibana.KibanaThreadPoolIT - method: testBlockedThreadPoolsRejectUserRequests - issue: https://github.com/elastic/elasticsearch/issues/113939 -- class: org.elasticsearch.xpack.inference.TextEmbeddingCrudIT - method: testPutE5Small_withPlatformAgnosticVariant - issue: https://github.com/elastic/elasticsearch/issues/113983 -- class: org.elasticsearch.xpack.inference.TextEmbeddingCrudIT - method: testPutE5WithTrainedModelAndInference - issue: https://github.com/elastic/elasticsearch/issues/114023 -- class: org.elasticsearch.xpack.inference.TextEmbeddingCrudIT - method: testPutE5Small_withPlatformSpecificVariant - issue: https://github.com/elastic/elasticsearch/issues/113950 -- class: org.elasticsearch.xpack.remotecluster.RemoteClusterSecurityWithApmTracingRestIT - method: testTracingCrossCluster - issue: https://github.com/elastic/elasticsearch/issues/112731 -- class: org.elasticsearch.xpack.inference.DefaultEndPointsIT - method: testInferDeploysDefaultE5 - issue: https://github.com/elastic/elasticsearch/issues/115361 -- class: org.elasticsearch.xpack.restart.MLModelDeploymentFullClusterRestartIT - method: testDeploymentSurvivesRestart {cluster=UPGRADED} - issue: https://github.com/elastic/elasticsearch/issues/115528 -- class: org.elasticsearch.xpack.shutdown.NodeShutdownIT - method: testStalledShardMigrationProperlyDetected - issue: https://github.com/elastic/elasticsearch/issues/115697 -- class: org.elasticsearch.xpack.test.rest.XPackRestIT - method: test {p0=transform/transforms_start_stop/Verify start transform reuses destination index} - issue: https://github.com/elastic/elasticsearch/issues/115808 -- class: org.elasticsearch.search.StressSearchServiceReaperIT - method: testStressReaper - issue: https://github.com/elastic/elasticsearch/issues/115816 -- class: org.elasticsearch.xpack.application.connector.ConnectorIndexServiceTests - issue: https://github.com/elastic/elasticsearch/issues/116087 -- class: org.elasticsearch.xpack.ml.integration.DatafeedJobsRestIT - method: testLookbackWithIndicesOptions - issue: https://github.com/elastic/elasticsearch/issues/116127 -- class: org.elasticsearch.xpack.test.rest.XPackRestIT - method: test {p0=transform/transforms_start_stop/Test start already started transform} - issue: https://github.com/elastic/elasticsearch/issues/98802 -- class: org.elasticsearch.action.search.SearchPhaseControllerTests - method: testProgressListener - issue: https://github.com/elastic/elasticsearch/issues/116149 -- class: org.elasticsearch.search.basic.SearchWithRandomDisconnectsIT - method: testSearchWithRandomDisconnects - issue: https://github.com/elastic/elasticsearch/issues/116175 -- class: org.elasticsearch.xpack.deprecation.DeprecationHttpIT - method: testDeprecatedSettingsReturnWarnings - issue: https://github.com/elastic/elasticsearch/issues/108628 -- class: org.elasticsearch.xpack.shutdown.NodeShutdownIT - method: testAllocationPreventedForRemoval - issue: https://github.com/elastic/elasticsearch/issues/116363 -- class: org.elasticsearch.xpack.downsample.ILMDownsampleDisruptionIT - method: testILMDownsampleRollingRestart - issue: https://github.com/elastic/elasticsearch/issues/114233 -- class: org.elasticsearch.reservedstate.service.RepositoriesFileSettingsIT - method: testSettingsApplied - issue: https://github.com/elastic/elasticsearch/issues/116694 -- class: org.elasticsearch.xpack.security.authc.ldap.ActiveDirectoryGroupsResolverTests - issue: https://github.com/elastic/elasticsearch/issues/116182 -- class: org.elasticsearch.xpack.test.rest.XPackRestIT - method: test {p0=snapshot/20_operator_privileges_disabled/Operator only settings can be set and restored by non-operator user when operator privileges is disabled} - issue: https://github.com/elastic/elasticsearch/issues/116775 -- class: org.elasticsearch.search.basic.SearchWithRandomIOExceptionsIT - method: testRandomDirectoryIOExceptions - issue: https://github.com/elastic/elasticsearch/issues/114824 -- class: org.elasticsearch.xpack.apmdata.APMYamlTestSuiteIT - method: test {yaml=/10_apm/Test template reinstallation} - issue: https://github.com/elastic/elasticsearch/issues/116445 -- class: org.elasticsearch.xpack.inference.DefaultEndPointsIT - method: testMultipleInferencesTriggeringDownloadAndDeploy - issue: https://github.com/elastic/elasticsearch/issues/117208 -- class: org.elasticsearch.ingest.geoip.EnterpriseGeoIpDownloaderIT - method: testEnterpriseDownloaderTask - issue: https://github.com/elastic/elasticsearch/issues/115163 -- class: org.elasticsearch.versioning.ConcurrentSeqNoVersioningIT - method: testSeqNoCASLinearizability - issue: https://github.com/elastic/elasticsearch/issues/117249 -- class: org.elasticsearch.discovery.ClusterDisruptionIT - method: testAckedIndexing - issue: https://github.com/elastic/elasticsearch/issues/117024 -- class: org.elasticsearch.xpack.test.rest.XPackRestIT - method: test {p0=snapshot/10_basic/Create a source only snapshot and then restore it} - issue: https://github.com/elastic/elasticsearch/issues/117295 -- class: org.elasticsearch.xpack.inference.DefaultEndPointsIT - method: testInferDeploysDefaultElser - issue: https://github.com/elastic/elasticsearch/issues/114913 -- class: org.elasticsearch.xpack.inference.InferenceRestIT - method: test {p0=inference/40_semantic_text_query/Query a field that uses the default ELSER 2 endpoint} - issue: https://github.com/elastic/elasticsearch/issues/117027 -- class: org.elasticsearch.xpack.inference.InferenceRestIT - method: test {p0=inference/30_semantic_text_inference/Calculates embeddings using the default ELSER 2 endpoint} - issue: https://github.com/elastic/elasticsearch/issues/117349 -- class: org.elasticsearch.xpack.inference.InferenceRestIT - method: test {p0=inference/30_semantic_text_inference_bwc/Calculates embeddings using the default ELSER 2 endpoint} - issue: https://github.com/elastic/elasticsearch/issues/117349 -- class: org.elasticsearch.xpack.test.rest.XPackRestIT - method: test {p0=transform/transforms_reset/Test reset running transform} - issue: https://github.com/elastic/elasticsearch/issues/117473 -- class: org.elasticsearch.search.ccs.CrossClusterIT - method: testCancel - issue: https://github.com/elastic/elasticsearch/issues/108061 -- class: org.elasticsearch.test.rest.yaml.CcsCommonYamlTestSuiteIT - method: test {p0=search.highlight/50_synthetic_source/text multi unified from vectors} - issue: https://github.com/elastic/elasticsearch/issues/117815 -- class: org.elasticsearch.xpack.ml.integration.DatafeedJobsRestIT - issue: https://github.com/elastic/elasticsearch/issues/111319 -- class: org.elasticsearch.xpack.esql.plugin.ClusterRequestTests - method: testFallbackIndicesOptions - issue: https://github.com/elastic/elasticsearch/issues/117937 -- class: org.elasticsearch.xpack.ml.integration.RegressionIT - method: testTwoJobsWithSameRandomizeSeedUseSameTrainingSet - issue: https://github.com/elastic/elasticsearch/issues/117805 -- class: org.elasticsearch.upgrades.QueryBuilderBWCIT - method: testQueryBuilderBWC {cluster=UPGRADED} - issue: https://github.com/elastic/elasticsearch/issues/116990 -- class: org.elasticsearch.xpack.restart.QueryBuilderBWCIT - method: testQueryBuilderBWC {p0=UPGRADED} - issue: https://github.com/elastic/elasticsearch/issues/116989 -- class: org.elasticsearch.xpack.remotecluster.CrossClusterEsqlRCS2UnavailableRemotesIT - method: testEsqlRcs2UnavailableRemoteScenarios - issue: https://github.com/elastic/elasticsearch/issues/117419 -- class: org.elasticsearch.xpack.inference.DefaultEndPointsIT - method: testInferDeploysDefaultRerank - issue: https://github.com/elastic/elasticsearch/issues/118184 -- class: org.elasticsearch.xpack.esql.action.EsqlActionTaskIT - method: testCancelRequestWhenFailingFetchingPages - issue: https://github.com/elastic/elasticsearch/issues/118193 -- class: org.elasticsearch.packaging.test.ArchiveTests - method: test44AutoConfigurationNotTriggeredOnNotWriteableConfDir - issue: https://github.com/elastic/elasticsearch/issues/118208 -- class: org.elasticsearch.packaging.test.ArchiveTests - method: test51AutoConfigurationWithPasswordProtectedKeystore - issue: https://github.com/elastic/elasticsearch/issues/118212 -- class: org.elasticsearch.datastreams.DataStreamsClientYamlTestSuiteIT - method: test {p0=data_stream/120_data_streams_stats/Multiple data stream} - issue: https://github.com/elastic/elasticsearch/issues/118217 -- class: org.elasticsearch.action.search.SearchQueryThenFetchAsyncActionTests - method: testBottomFieldSort - issue: https://github.com/elastic/elasticsearch/issues/118214 -- class: org.elasticsearch.xpack.remotecluster.CrossClusterEsqlRCS1UnavailableRemotesIT - method: testEsqlRcs1UnavailableRemoteScenarios - issue: https://github.com/elastic/elasticsearch/issues/118350 -- class: org.elasticsearch.xpack.searchablesnapshots.RetrySearchIntegTests - method: testSearcherId - issue: https://github.com/elastic/elasticsearch/issues/118374 -- class: org.elasticsearch.xpack.security.operator.OperatorPrivilegesIT - method: testEveryActionIsEitherOperatorOnlyOrNonOperator - issue: https://github.com/elastic/elasticsearch/issues/118220 -- class: org.elasticsearch.xpack.esql.action.EsqlActionBreakerIT - issue: https://github.com/elastic/elasticsearch/issues/118238 -- class: org.elasticsearch.reservedstate.service.FileSettingsServiceTests - method: testInvalidJSON - issue: https://github.com/elastic/elasticsearch/issues/116521 -- class: org.elasticsearch.xpack.ccr.rest.ShardChangesRestIT - method: testShardChangesNoOperation - issue: https://github.com/elastic/elasticsearch/issues/118800 -- class: org.elasticsearch.smoketest.DocsClientYamlTestSuiteIT - method: test {yaml=reference/indices/shard-stores/line_150} - issue: https://github.com/elastic/elasticsearch/issues/118896 -- class: org.elasticsearch.cluster.service.MasterServiceTests - method: testThreadContext - issue: https://github.com/elastic/elasticsearch/issues/118914 -- class: org.elasticsearch.repositories.blobstore.testkit.analyze.SecureHdfsRepositoryAnalysisRestIT - issue: https://github.com/elastic/elasticsearch/issues/118970 -- class: org.elasticsearch.aggregations.bucket.SearchCancellationIT - method: testCancellationDuringTimeSeriesAggregation - issue: https://github.com/elastic/elasticsearch/issues/118992 -- class: org.elasticsearch.xpack.security.authc.AuthenticationServiceTests - method: testInvalidToken - issue: https://github.com/elastic/elasticsearch/issues/119019 -- class: org.elasticsearch.backwards.MixedClusterClientYamlTestSuiteIT - method: test {p0=synonyms/90_synonyms_reloading_for_synset/Reload analyzers for specific synonym set} - issue: https://github.com/elastic/elasticsearch/issues/116777 -- class: org.elasticsearch.xpack.security.authc.ldap.ActiveDirectoryRunAsIT - issue: https://github.com/elastic/elasticsearch/issues/115727 -- class: org.elasticsearch.smoketest.DocsClientYamlTestSuiteIT - method: test {yaml=reference/search/search-your-data/retrievers-examples/line_98} - issue: https://github.com/elastic/elasticsearch/issues/119155 -- class: org.elasticsearch.xpack.esql.action.EsqlNodeFailureIT - method: testFailureLoadingFields - issue: https://github.com/elastic/elasticsearch/issues/118000 -- class: org.elasticsearch.index.mapper.AbstractShapeGeometryFieldMapperTests - method: testCartesianBoundsBlockLoader - issue: https://github.com/elastic/elasticsearch/issues/119201 -- class: org.elasticsearch.xpack.test.rest.XPackRestIT - method: test {p0=ml/data_frame_analytics_cat_apis/Test cat data frame analytics all jobs with header} - issue: https://github.com/elastic/elasticsearch/issues/119332 -- class: org.elasticsearch.xpack.logsdb.qa.LogsDbVersusLogsDbReindexedIntoStandardModeChallengeRestIT - method: testEsqlTermsAggregationByMethod - issue: https://github.com/elastic/elasticsearch/issues/119355 -- class: org.elasticsearch.xpack.logsdb.qa.LogsDbVersusLogsDbReindexedIntoStandardModeChallengeRestIT - method: testMatchAllQuery - issue: https://github.com/elastic/elasticsearch/issues/119432 -- class: org.elasticsearch.xpack.logsdb.qa.LogsDbVersusLogsDbReindexedIntoStandardModeChallengeRestIT - method: testTermsQuery - issue: https://github.com/elastic/elasticsearch/issues/119486 -- class: org.elasticsearch.xpack.test.rest.XPackRestIT - method: test {p0=transform/transforms_start_stop/Test start/stop/start transform} - issue: https://github.com/elastic/elasticsearch/issues/119508 -- class: org.elasticsearch.xpack.logsdb.qa.LogsDbVersusLogsDbReindexedIntoStandardModeChallengeRestIT - method: testEsqlSource - issue: https://github.com/elastic/elasticsearch/issues/119510 -- class: org.elasticsearch.smoketest.MlWithSecurityIT - method: test {yaml=ml/sparse_vector_search/Test sparse_vector search with query vector and pruning config} - issue: https://github.com/elastic/elasticsearch/issues/119548 -- class: org.elasticsearch.lucene.RollingUpgradeSearchableSnapshotIndexCompatibilityIT - method: testSearchableSnapshotUpgrade {p0=[9.0.0, 8.18.0, 8.18.0]} - issue: https://github.com/elastic/elasticsearch/issues/119549 -- class: org.elasticsearch.lucene.RollingUpgradeSearchableSnapshotIndexCompatibilityIT - method: testMountSearchableSnapshot {p0=[9.0.0, 8.18.0, 8.18.0]} - issue: https://github.com/elastic/elasticsearch/issues/119550 -- class: org.elasticsearch.lucene.RollingUpgradeSearchableSnapshotIndexCompatibilityIT - method: testMountSearchableSnapshot {p0=[9.0.0, 9.0.0, 8.18.0]} - issue: https://github.com/elastic/elasticsearch/issues/119551 -- class: org.elasticsearch.index.engine.LuceneSyntheticSourceChangesSnapshotTests - method: testSkipNonRootOfNestedDocuments - issue: https://github.com/elastic/elasticsearch/issues/119553 -- class: org.elasticsearch.lucene.RollingUpgradeSearchableSnapshotIndexCompatibilityIT - method: testSearchableSnapshotUpgrade {p0=[9.0.0, 9.0.0, 8.18.0]} - issue: https://github.com/elastic/elasticsearch/issues/119560 -- class: org.elasticsearch.lucene.RollingUpgradeSearchableSnapshotIndexCompatibilityIT - method: testMountSearchableSnapshot {p0=[9.0.0, 9.0.0, 9.0.0]} - issue: https://github.com/elastic/elasticsearch/issues/119561 -- class: org.elasticsearch.lucene.RollingUpgradeSearchableSnapshotIndexCompatibilityIT - method: testSearchableSnapshotUpgrade {p0=[9.0.0, 9.0.0, 9.0.0]} - issue: https://github.com/elastic/elasticsearch/issues/119562 -- class: org.elasticsearch.xpack.ml.integration.ForecastIT - method: testOverflowToDisk - issue: https://github.com/elastic/elasticsearch/issues/117740 -- class: org.elasticsearch.xpack.security.authc.ldap.MultiGroupMappingIT - issue: https://github.com/elastic/elasticsearch/issues/119599 + - class: "org.elasticsearch.client.RestClientSingleHostIntegTests" + issue: "https://github.com/elastic/elasticsearch/issues/102717" + method: "testRequestResetAndAbort" + - class: org.elasticsearch.smoketest.WatcherYamlRestIT + method: test {p0=watcher/usage/10_basic/Test watcher usage stats output} + issue: https://github.com/elastic/elasticsearch/issues/112189 + - class: org.elasticsearch.ingest.geoip.IngestGeoIpClientYamlTestSuiteIT + issue: https://github.com/elastic/elasticsearch/issues/111497 + - class: org.elasticsearch.packaging.test.PackagesSecurityAutoConfigurationTests + method: test20SecurityNotAutoConfiguredOnReInstallation + issue: https://github.com/elastic/elasticsearch/issues/112635 + - class: org.elasticsearch.xpack.sql.qa.single_node.JdbcSqlSpecIT + method: test {case-functions.testSelectInsertWithLcaseAndLengthWithOrderBy} + issue: https://github.com/elastic/elasticsearch/issues/112642 + - class: org.elasticsearch.xpack.sql.qa.single_node.JdbcSqlSpecIT + method: test {case-functions.testUcaseInline1} + issue: https://github.com/elastic/elasticsearch/issues/112641 + - class: org.elasticsearch.xpack.sql.qa.single_node.JdbcSqlSpecIT + method: test {case-functions.testUpperCasingTheSecondLetterFromTheRightFromFirstName} + issue: https://github.com/elastic/elasticsearch/issues/112640 + - class: org.elasticsearch.xpack.sql.qa.single_node.JdbcSqlSpecIT + method: test {case-functions.testUcaseInline3} + issue: https://github.com/elastic/elasticsearch/issues/112643 + - class: org.elasticsearch.xpack.sql.qa.security.JdbcSqlSpecIT + method: test {case-functions.testUcaseInline1} + issue: https://github.com/elastic/elasticsearch/issues/112641 + - class: org.elasticsearch.xpack.sql.qa.security.JdbcSqlSpecIT + method: test {case-functions.testUcaseInline3} + issue: https://github.com/elastic/elasticsearch/issues/112643 + - class: org.elasticsearch.xpack.sql.qa.security.JdbcSqlSpecIT + method: test {case-functions.testUpperCasingTheSecondLetterFromTheRightFromFirstName} + issue: https://github.com/elastic/elasticsearch/issues/112640 + - class: org.elasticsearch.xpack.sql.qa.security.JdbcSqlSpecIT + method: test {case-functions.testSelectInsertWithLcaseAndLengthWithOrderBy} + issue: https://github.com/elastic/elasticsearch/issues/112642 + - class: org.elasticsearch.packaging.test.WindowsServiceTests + method: test30StartStop + issue: https://github.com/elastic/elasticsearch/issues/113160 + - class: org.elasticsearch.packaging.test.WindowsServiceTests + method: test33JavaChanged + issue: https://github.com/elastic/elasticsearch/issues/113177 + - class: org.elasticsearch.packaging.test.WindowsServiceTests + method: test80JavaOptsInEnvVar + issue: https://github.com/elastic/elasticsearch/issues/113219 + - class: org.elasticsearch.packaging.test.WindowsServiceTests + method: test81JavaOptsInJvmOptions + issue: https://github.com/elastic/elasticsearch/issues/113313 + - class: org.elasticsearch.backwards.MixedClusterClientYamlTestSuiteIT + method: test {p0=mtermvectors/10_basic/Tests catching other exceptions per item} + issue: https://github.com/elastic/elasticsearch/issues/113325 + - class: org.elasticsearch.xpack.transform.integration.TransformIT + method: testStopWaitForCheckpoint + issue: https://github.com/elastic/elasticsearch/issues/106113 + - class: org.elasticsearch.kibana.KibanaThreadPoolIT + method: testBlockedThreadPoolsRejectUserRequests + issue: https://github.com/elastic/elasticsearch/issues/113939 + - class: org.elasticsearch.xpack.inference.TextEmbeddingCrudIT + method: testPutE5Small_withPlatformAgnosticVariant + issue: https://github.com/elastic/elasticsearch/issues/113983 + - class: org.elasticsearch.xpack.inference.TextEmbeddingCrudIT + method: testPutE5WithTrainedModelAndInference + issue: https://github.com/elastic/elasticsearch/issues/114023 + - class: org.elasticsearch.xpack.inference.TextEmbeddingCrudIT + method: testPutE5Small_withPlatformSpecificVariant + issue: https://github.com/elastic/elasticsearch/issues/113950 + - class: org.elasticsearch.xpack.remotecluster.RemoteClusterSecurityWithApmTracingRestIT + method: testTracingCrossCluster + issue: https://github.com/elastic/elasticsearch/issues/112731 + - class: org.elasticsearch.xpack.inference.DefaultEndPointsIT + method: testInferDeploysDefaultE5 + issue: https://github.com/elastic/elasticsearch/issues/115361 + - class: org.elasticsearch.xpack.restart.MLModelDeploymentFullClusterRestartIT + method: testDeploymentSurvivesRestart {cluster=UPGRADED} + issue: https://github.com/elastic/elasticsearch/issues/115528 + - class: org.elasticsearch.xpack.shutdown.NodeShutdownIT + method: testStalledShardMigrationProperlyDetected + issue: https://github.com/elastic/elasticsearch/issues/115697 + - class: org.elasticsearch.xpack.test.rest.XPackRestIT + method: test {p0=transform/transforms_start_stop/Verify start transform reuses destination index} + issue: https://github.com/elastic/elasticsearch/issues/115808 + - class: org.elasticsearch.search.StressSearchServiceReaperIT + method: testStressReaper + issue: https://github.com/elastic/elasticsearch/issues/115816 + - class: org.elasticsearch.xpack.application.connector.ConnectorIndexServiceTests + issue: https://github.com/elastic/elasticsearch/issues/116087 + - class: org.elasticsearch.xpack.ml.integration.DatafeedJobsRestIT + method: testLookbackWithIndicesOptions + issue: https://github.com/elastic/elasticsearch/issues/116127 + - class: org.elasticsearch.xpack.test.rest.XPackRestIT + method: test {p0=transform/transforms_start_stop/Test start already started transform} + issue: https://github.com/elastic/elasticsearch/issues/98802 + - class: org.elasticsearch.action.search.SearchPhaseControllerTests + method: testProgressListener + issue: https://github.com/elastic/elasticsearch/issues/116149 + - class: org.elasticsearch.search.basic.SearchWithRandomDisconnectsIT + method: testSearchWithRandomDisconnects + issue: https://github.com/elastic/elasticsearch/issues/116175 + - class: org.elasticsearch.xpack.deprecation.DeprecationHttpIT + method: testDeprecatedSettingsReturnWarnings + issue: https://github.com/elastic/elasticsearch/issues/108628 + - class: org.elasticsearch.xpack.shutdown.NodeShutdownIT + method: testAllocationPreventedForRemoval + issue: https://github.com/elastic/elasticsearch/issues/116363 + - class: org.elasticsearch.xpack.downsample.ILMDownsampleDisruptionIT + method: testILMDownsampleRollingRestart + issue: https://github.com/elastic/elasticsearch/issues/114233 + - class: org.elasticsearch.reservedstate.service.RepositoriesFileSettingsIT + method: testSettingsApplied + issue: https://github.com/elastic/elasticsearch/issues/116694 + - class: org.elasticsearch.xpack.security.authc.ldap.ActiveDirectoryGroupsResolverTests + issue: https://github.com/elastic/elasticsearch/issues/116182 + - class: org.elasticsearch.xpack.test.rest.XPackRestIT + method: test {p0=snapshot/20_operator_privileges_disabled/Operator only settings can be set and restored by non-operator user when operator privileges is disabled} + issue: https://github.com/elastic/elasticsearch/issues/116775 + - class: org.elasticsearch.search.basic.SearchWithRandomIOExceptionsIT + method: testRandomDirectoryIOExceptions + issue: https://github.com/elastic/elasticsearch/issues/114824 + - class: org.elasticsearch.xpack.apmdata.APMYamlTestSuiteIT + method: test {yaml=/10_apm/Test template reinstallation} + issue: https://github.com/elastic/elasticsearch/issues/116445 + - class: org.elasticsearch.xpack.inference.DefaultEndPointsIT + method: testMultipleInferencesTriggeringDownloadAndDeploy + issue: https://github.com/elastic/elasticsearch/issues/117208 + - class: org.elasticsearch.ingest.geoip.EnterpriseGeoIpDownloaderIT + method: testEnterpriseDownloaderTask + issue: https://github.com/elastic/elasticsearch/issues/115163 + - class: org.elasticsearch.versioning.ConcurrentSeqNoVersioningIT + method: testSeqNoCASLinearizability + issue: https://github.com/elastic/elasticsearch/issues/117249 + - class: org.elasticsearch.discovery.ClusterDisruptionIT + method: testAckedIndexing + issue: https://github.com/elastic/elasticsearch/issues/117024 + - class: org.elasticsearch.xpack.test.rest.XPackRestIT + method: test {p0=snapshot/10_basic/Create a source only snapshot and then restore it} + issue: https://github.com/elastic/elasticsearch/issues/117295 + - class: org.elasticsearch.xpack.inference.DefaultEndPointsIT + method: testInferDeploysDefaultElser + issue: https://github.com/elastic/elasticsearch/issues/114913 + - class: org.elasticsearch.xpack.inference.InferenceRestIT + method: test {p0=inference/40_semantic_text_query/Query a field that uses the default ELSER 2 endpoint} + issue: https://github.com/elastic/elasticsearch/issues/117027 + - class: org.elasticsearch.xpack.inference.InferenceRestIT + method: test {p0=inference/30_semantic_text_inference/Calculates embeddings using the default ELSER 2 endpoint} + issue: https://github.com/elastic/elasticsearch/issues/117349 + - class: org.elasticsearch.xpack.inference.InferenceRestIT + method: test {p0=inference/30_semantic_text_inference_bwc/Calculates embeddings using the default ELSER 2 endpoint} + issue: https://github.com/elastic/elasticsearch/issues/117349 + - class: org.elasticsearch.xpack.test.rest.XPackRestIT + method: test {p0=transform/transforms_reset/Test reset running transform} + issue: https://github.com/elastic/elasticsearch/issues/117473 + - class: org.elasticsearch.search.ccs.CrossClusterIT + method: testCancel + issue: https://github.com/elastic/elasticsearch/issues/108061 + - class: org.elasticsearch.test.rest.yaml.CcsCommonYamlTestSuiteIT + method: test {p0=search.highlight/50_synthetic_source/text multi unified from vectors} + issue: https://github.com/elastic/elasticsearch/issues/117815 + - class: org.elasticsearch.xpack.ml.integration.DatafeedJobsRestIT + issue: https://github.com/elastic/elasticsearch/issues/111319 + - class: org.elasticsearch.xpack.esql.plugin.ClusterRequestTests + method: testFallbackIndicesOptions + issue: https://github.com/elastic/elasticsearch/issues/117937 + - class: org.elasticsearch.xpack.ml.integration.RegressionIT + method: testTwoJobsWithSameRandomizeSeedUseSameTrainingSet + issue: https://github.com/elastic/elasticsearch/issues/117805 + - class: org.elasticsearch.upgrades.QueryBuilderBWCIT + method: testQueryBuilderBWC {cluster=UPGRADED} + issue: https://github.com/elastic/elasticsearch/issues/116990 + - class: org.elasticsearch.xpack.restart.QueryBuilderBWCIT + method: testQueryBuilderBWC {p0=UPGRADED} + issue: https://github.com/elastic/elasticsearch/issues/116989 + - class: org.elasticsearch.xpack.remotecluster.CrossClusterEsqlRCS2UnavailableRemotesIT + method: testEsqlRcs2UnavailableRemoteScenarios + issue: https://github.com/elastic/elasticsearch/issues/117419 + - class: org.elasticsearch.xpack.inference.DefaultEndPointsIT + method: testInferDeploysDefaultRerank + issue: https://github.com/elastic/elasticsearch/issues/118184 + - class: org.elasticsearch.xpack.esql.action.EsqlActionTaskIT + method: testCancelRequestWhenFailingFetchingPages + issue: https://github.com/elastic/elasticsearch/issues/118193 + - class: org.elasticsearch.packaging.test.ArchiveTests + method: test44AutoConfigurationNotTriggeredOnNotWriteableConfDir + issue: https://github.com/elastic/elasticsearch/issues/118208 + - class: org.elasticsearch.packaging.test.ArchiveTests + method: test51AutoConfigurationWithPasswordProtectedKeystore + issue: https://github.com/elastic/elasticsearch/issues/118212 + - class: org.elasticsearch.datastreams.DataStreamsClientYamlTestSuiteIT + method: test {p0=data_stream/120_data_streams_stats/Multiple data stream} + issue: https://github.com/elastic/elasticsearch/issues/118217 + - class: org.elasticsearch.action.search.SearchQueryThenFetchAsyncActionTests + method: testBottomFieldSort + issue: https://github.com/elastic/elasticsearch/issues/118214 + - class: org.elasticsearch.xpack.remotecluster.CrossClusterEsqlRCS1UnavailableRemotesIT + method: testEsqlRcs1UnavailableRemoteScenarios + issue: https://github.com/elastic/elasticsearch/issues/118350 + - class: org.elasticsearch.xpack.searchablesnapshots.RetrySearchIntegTests + method: testSearcherId + issue: https://github.com/elastic/elasticsearch/issues/118374 + - class: org.elasticsearch.xpack.security.operator.OperatorPrivilegesIT + method: testEveryActionIsEitherOperatorOnlyOrNonOperator + issue: https://github.com/elastic/elasticsearch/issues/118220 + - class: org.elasticsearch.xpack.esql.action.EsqlActionBreakerIT + issue: https://github.com/elastic/elasticsearch/issues/118238 + - class: org.elasticsearch.reservedstate.service.FileSettingsServiceTests + method: testInvalidJSON + issue: https://github.com/elastic/elasticsearch/issues/116521 + - class: org.elasticsearch.xpack.ccr.rest.ShardChangesRestIT + method: testShardChangesNoOperation + issue: https://github.com/elastic/elasticsearch/issues/118800 + - class: org.elasticsearch.smoketest.DocsClientYamlTestSuiteIT + method: test {yaml=reference/indices/shard-stores/line_150} + issue: https://github.com/elastic/elasticsearch/issues/118896 + - class: org.elasticsearch.cluster.service.MasterServiceTests + method: testThreadContext + issue: https://github.com/elastic/elasticsearch/issues/118914 + - class: org.elasticsearch.repositories.blobstore.testkit.analyze.SecureHdfsRepositoryAnalysisRestIT + issue: https://github.com/elastic/elasticsearch/issues/118970 + - class: org.elasticsearch.aggregations.bucket.SearchCancellationIT + method: testCancellationDuringTimeSeriesAggregation + issue: https://github.com/elastic/elasticsearch/issues/118992 + - class: org.elasticsearch.xpack.security.authc.AuthenticationServiceTests + method: testInvalidToken + issue: https://github.com/elastic/elasticsearch/issues/119019 + - class: org.elasticsearch.backwards.MixedClusterClientYamlTestSuiteIT + method: test {p0=synonyms/90_synonyms_reloading_for_synset/Reload analyzers for specific synonym set} + issue: https://github.com/elastic/elasticsearch/issues/116777 + - class: org.elasticsearch.xpack.security.authc.ldap.ActiveDirectoryRunAsIT + issue: https://github.com/elastic/elasticsearch/issues/115727 + - class: org.elasticsearch.smoketest.DocsClientYamlTestSuiteIT + method: test {yaml=reference/search/search-your-data/retrievers-examples/line_98} + issue: https://github.com/elastic/elasticsearch/issues/119155 + - class: org.elasticsearch.xpack.esql.action.EsqlNodeFailureIT + method: testFailureLoadingFields + issue: https://github.com/elastic/elasticsearch/issues/118000 + - class: org.elasticsearch.index.mapper.AbstractShapeGeometryFieldMapperTests + method: testCartesianBoundsBlockLoader + issue: https://github.com/elastic/elasticsearch/issues/119201 + - class: org.elasticsearch.xpack.test.rest.XPackRestIT + method: test {p0=ml/data_frame_analytics_cat_apis/Test cat data frame analytics all jobs with header} + issue: https://github.com/elastic/elasticsearch/issues/119332 + - class: org.elasticsearch.xpack.test.rest.XPackRestIT + method: test {p0=transform/transforms_start_stop/Test start/stop/start transform} + issue: https://github.com/elastic/elasticsearch/issues/119508 + - class: org.elasticsearch.smoketest.MlWithSecurityIT + method: test {yaml=ml/sparse_vector_search/Test sparse_vector search with query vector and pruning config} + issue: https://github.com/elastic/elasticsearch/issues/119548 + - class: org.elasticsearch.lucene.RollingUpgradeSearchableSnapshotIndexCompatibilityIT + method: testSearchableSnapshotUpgrade {p0=[9.0.0, 8.18.0, 8.18.0]} + issue: https://github.com/elastic/elasticsearch/issues/119549 + - class: org.elasticsearch.lucene.RollingUpgradeSearchableSnapshotIndexCompatibilityIT + method: testMountSearchableSnapshot {p0=[9.0.0, 8.18.0, 8.18.0]} + issue: https://github.com/elastic/elasticsearch/issues/119550 + - class: org.elasticsearch.lucene.RollingUpgradeSearchableSnapshotIndexCompatibilityIT + method: testMountSearchableSnapshot {p0=[9.0.0, 9.0.0, 8.18.0]} + issue: https://github.com/elastic/elasticsearch/issues/119551 + - class: org.elasticsearch.index.engine.LuceneSyntheticSourceChangesSnapshotTests + method: testSkipNonRootOfNestedDocuments + issue: https://github.com/elastic/elasticsearch/issues/119553 + - class: org.elasticsearch.lucene.RollingUpgradeSearchableSnapshotIndexCompatibilityIT + method: testSearchableSnapshotUpgrade {p0=[9.0.0, 9.0.0, 8.18.0]} + issue: https://github.com/elastic/elasticsearch/issues/119560 + - class: org.elasticsearch.lucene.RollingUpgradeSearchableSnapshotIndexCompatibilityIT + method: testMountSearchableSnapshot {p0=[9.0.0, 9.0.0, 9.0.0]} + issue: https://github.com/elastic/elasticsearch/issues/119561 + - class: org.elasticsearch.lucene.RollingUpgradeSearchableSnapshotIndexCompatibilityIT + method: testSearchableSnapshotUpgrade {p0=[9.0.0, 9.0.0, 9.0.0]} + issue: https://github.com/elastic/elasticsearch/issues/119562 + - class: org.elasticsearch.xpack.ml.integration.ForecastIT + method: testOverflowToDisk + issue: https://github.com/elastic/elasticsearch/issues/117740 + - class: org.elasticsearch.xpack.security.authc.ldap.MultiGroupMappingIT + issue: https://github.com/elastic/elasticsearch/issues/119599 # Examples: # From 7b6d4d192f38ab77c17c4c022960be8b8c121c29 Mon Sep 17 00:00:00 2001 From: Rene Groeschke Date: Tue, 7 Jan 2025 09:08:06 +0100 Subject: [PATCH 20/35] [Gradle] Fix deprecation warning in release tests after 8.12 update (#119608) --- distribution/docker/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/distribution/docker/build.gradle b/distribution/docker/build.gradle index e9327efa50c33..204cfc18950a8 100644 --- a/distribution/docker/build.gradle +++ b/distribution/docker/build.gradle @@ -45,7 +45,7 @@ if (useDra == false) { ivy { name = 'beats' if (useLocalArtifacts) { - url getLayout().getBuildDirectory().dir("artifacts").get().asFile + url = getLayout().getBuildDirectory().dir("artifacts").get().asFile patternLayout { artifact '/[organisation]/[module]-[revision]-[classifier].[ext]' } From a40ea8841201c317e9c9ebad2aeb08846db4e35a Mon Sep 17 00:00:00 2001 From: Tanguy Leroux Date: Tue, 7 Jan 2025 09:18:59 +0100 Subject: [PATCH 21/35] Add tests to randomly close and re-open searchable snapshots in N-2 version (#119594) Relates ES-10433 --- .../AbstractIndexCompatibilityTestCase.java | 6 ++++ ...earchableSnapshotIndexCompatibilityIT.java | 36 +++++++++++++++++-- ...earchableSnapshotIndexCompatibilityIT.java | 21 ++++++++++- 3 files changed, 60 insertions(+), 3 deletions(-) diff --git a/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/AbstractIndexCompatibilityTestCase.java b/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/AbstractIndexCompatibilityTestCase.java index 8047255a33be6..8c9a42dc926e9 100644 --- a/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/AbstractIndexCompatibilityTestCase.java +++ b/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/AbstractIndexCompatibilityTestCase.java @@ -12,6 +12,7 @@ import org.apache.http.entity.ContentType; import org.apache.http.entity.InputStreamEntity; import org.elasticsearch.client.Request; +import org.elasticsearch.cluster.metadata.IndexMetadata; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.core.Strings; import org.elasticsearch.index.IndexSettings; @@ -232,4 +233,9 @@ protected static void updateRandomMappings(String indexName) throws IOException assertOK(client().performRequest(request)); } + protected static boolean isIndexClosed(String indexName) throws Exception { + var responseBody = createFromResponse(client().performRequest(new Request("GET", "_cluster/state/metadata/" + indexName))); + var state = responseBody.evaluate("metadata.indices." + indexName + ".state"); + return IndexMetadata.State.fromString((String) state) == IndexMetadata.State.CLOSE; + } } diff --git a/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/FullClusterRestartSearchableSnapshotIndexCompatibilityIT.java b/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/FullClusterRestartSearchableSnapshotIndexCompatibilityIT.java index 90171caa36c26..a7dc5e41fd327 100644 --- a/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/FullClusterRestartSearchableSnapshotIndexCompatibilityIT.java +++ b/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/FullClusterRestartSearchableSnapshotIndexCompatibilityIT.java @@ -76,7 +76,6 @@ public void testSearchableSnapshot() throws Exception { var mountedIndex = suffix("index-mounted"); logger.debug("--> mounting index [{}] as [{}]", index, mountedIndex); mountIndex(repository, snapshot, index, randomBoolean(), mountedIndex); - ensureGreen(mountedIndex); assertThat(indexVersion(mountedIndex), equalTo(VERSION_MINUS_2)); @@ -88,6 +87,23 @@ public void testSearchableSnapshot() throws Exception { logger.debug("--> adding replica to test peer-recovery"); updateIndexSettings(mountedIndex, Settings.builder().put(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, 1)); ensureGreen(mountedIndex); + + logger.debug("--> closing index [{}]", mountedIndex); + closeIndex(mountedIndex); + ensureGreen(mountedIndex); + + logger.debug("--> adding replica to test peer-recovery for closed shards"); + updateIndexSettings(mountedIndex, Settings.builder().put(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, 2)); + ensureGreen(mountedIndex); + + logger.debug("--> re-opening index [{}]", mountedIndex); + openIndex(mountedIndex); + ensureGreen(mountedIndex); + + assertDocCount(client(), mountedIndex, numDocs); + + logger.debug("--> deleting index [{}]", mountedIndex); + deleteIndex(mountedIndex); } } @@ -138,12 +154,28 @@ public void testSearchableSnapshotUpgrade() throws Exception { assertThat(indexVersion(mountedIndex), equalTo(VERSION_MINUS_2)); assertDocCount(client(), mountedIndex, numDocs); + + logger.debug("--> adding replica to test replica upgrade"); + updateIndexSettings(mountedIndex, Settings.builder().put(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, 1)); + ensureGreen(mountedIndex); + + if (randomBoolean()) { + logger.debug("--> random closing of index [{}] before upgrade", mountedIndex); + closeIndex(mountedIndex); + ensureGreen(mountedIndex); + } return; } if (isFullyUpgradedTo(VERSION_CURRENT)) { ensureGreen(mountedIndex); + if (isIndexClosed(mountedIndex)) { + logger.debug("--> re-opening index [{}] after upgrade", mountedIndex); + openIndex(mountedIndex); + ensureGreen(mountedIndex); + } + assertThat(indexVersion(mountedIndex), equalTo(VERSION_MINUS_2)); assertDocCount(client(), mountedIndex, numDocs); @@ -151,7 +183,7 @@ public void testSearchableSnapshotUpgrade() throws Exception { updateRandomMappings(mountedIndex); logger.debug("--> adding replica to test peer-recovery"); - updateIndexSettings(mountedIndex, Settings.builder().put(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, 1)); + updateIndexSettings(mountedIndex, Settings.builder().put(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, 2)); ensureGreen(mountedIndex); } } diff --git a/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/RollingUpgradeSearchableSnapshotIndexCompatibilityIT.java b/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/RollingUpgradeSearchableSnapshotIndexCompatibilityIT.java index 0851d8f7cc726..1117d36024bf0 100644 --- a/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/RollingUpgradeSearchableSnapshotIndexCompatibilityIT.java +++ b/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/RollingUpgradeSearchableSnapshotIndexCompatibilityIT.java @@ -73,7 +73,6 @@ public void testMountSearchableSnapshot() throws Exception { try { logger.debug("--> mounting index [{}] as [{}]", index, mountedIndex); mountIndex(repository, snapshot, index, randomBoolean(), mountedIndex); - ensureGreen(mountedIndex); updateRandomIndexSettings(mountedIndex); @@ -82,6 +81,14 @@ public void testMountSearchableSnapshot() throws Exception { assertThat(indexVersion(mountedIndex), equalTo(VERSION_MINUS_2)); assertDocCount(client(), mountedIndex, numDocs); + logger.debug("--> closing mounted index [{}]", mountedIndex); + closeIndex(mountedIndex); + ensureGreen(mountedIndex); + + logger.debug("--> re-opening index [{}]", mountedIndex); + openIndex(mountedIndex); + ensureGreen(mountedIndex); + logger.debug("--> deleting mounted index [{}]", mountedIndex); deleteIndex(mountedIndex); @@ -137,10 +144,22 @@ public void testSearchableSnapshotUpgrade() throws Exception { ensureGreen(mountedIndex); + if (isIndexClosed(mountedIndex)) { + logger.debug("--> re-opening index [{}] after upgrade", mountedIndex); + openIndex(mountedIndex); + ensureGreen(mountedIndex); + } + updateRandomIndexSettings(mountedIndex); updateRandomMappings(mountedIndex); assertThat(indexVersion(mountedIndex), equalTo(VERSION_MINUS_2)); assertDocCount(client(), mountedIndex, numDocs); + + if (randomBoolean()) { + logger.debug("--> random closing of index [{}] before upgrade", mountedIndex); + closeIndex(mountedIndex); + ensureGreen(mountedIndex); + } } } From 7a21e8241b03ab53ce99b1760ba9fc5325cb1752 Mon Sep 17 00:00:00 2001 From: Ievgen Degtiarenko Date: Tue, 7 Jan 2025 09:31:53 +0100 Subject: [PATCH 22/35] Simplify EsIndex class (#119582) This change simplifies EsIndex class by replacing it with a record --- .../xpack/esql/index/EsIndex.java | 86 +++++-------------- .../xpack/esql/plan/logical/Enrich.java | 2 +- .../xpack/esql/plan/logical/EsRelation.java | 2 +- .../xpack/esql/plan/physical/EnrichExec.java | 2 +- .../xpack/esql/plan/physical/EsQueryExec.java | 2 +- .../esql/plan/physical/EsSourceExec.java | 2 +- .../esql/index/EsIndexSerializationTests.java | 2 +- .../esql/tree/EsqlNodeSubclassTests.java | 5 ++ 8 files changed, 32 insertions(+), 71 deletions(-) diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/index/EsIndex.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/index/EsIndex.java index d3fc9e15e2e04..1edab8ce0e4a6 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/index/EsIndex.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/index/EsIndex.java @@ -15,15 +15,16 @@ import java.io.IOException; import java.util.Map; -import java.util.Objects; import java.util.Set; -import java.util.stream.Collectors; -public class EsIndex implements Writeable { +import static java.util.stream.Collectors.toMap; - private final String name; - private final Map mapping; - private final Map indexNameWithModes; +public record EsIndex(String name, Map mapping, Map indexNameWithModes) implements Writeable { + + public EsIndex { + assert name != null; + assert mapping != null; + } /** * Intended for tests. Returns an index with an empty index mode map. @@ -32,56 +33,32 @@ public EsIndex(String name, Map mapping) { this(name, mapping, Map.of()); } - public EsIndex(String name, Map mapping, Map indexNameWithModes) { - assert name != null; - assert mapping != null; - this.name = name; - this.mapping = mapping; - this.indexNameWithModes = indexNameWithModes; - } - - public EsIndex(StreamInput in) throws IOException { - this(in.readString(), in.readImmutableMap(StreamInput::readString, EsField::readFrom), readIndexNameWithModes(in)); - } - - @Override - public void writeTo(StreamOutput out) throws IOException { - out.writeString(name()); - out.writeMap(mapping(), (o, x) -> x.writeTo(out)); - writeIndexNameWithModes(indexNameWithModes, out); - } - - @SuppressWarnings("unchecked") - private static Map readIndexNameWithModes(StreamInput in) throws IOException { + public static EsIndex readFrom(StreamInput in) throws IOException { + String name = in.readString(); + Map mapping = in.readImmutableMap(StreamInput::readString, EsField::readFrom); + Map indexNameWithModes; if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { - return in.readMap(IndexMode::readFrom); + indexNameWithModes = in.readMap(IndexMode::readFrom); } else { + @SuppressWarnings("unchecked") Set indices = (Set) in.readGenericValue(); assert indices != null; - return indices.stream().collect(Collectors.toMap(e -> e, e -> IndexMode.STANDARD)); + indexNameWithModes = indices.stream().collect(toMap(e -> e, e -> IndexMode.STANDARD)); } + return new EsIndex(name, mapping, indexNameWithModes); } - private static void writeIndexNameWithModes(Map concreteIndices, StreamOutput out) throws IOException { + @Override + public void writeTo(StreamOutput out) throws IOException { + out.writeString(name()); + out.writeMap(mapping(), (o, x) -> x.writeTo(out)); if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_16_0)) { - out.writeMap(concreteIndices, (o, v) -> IndexMode.writeTo(v, out)); + out.writeMap(indexNameWithModes, (o, v) -> IndexMode.writeTo(v, out)); } else { - out.writeGenericValue(concreteIndices.keySet()); + out.writeGenericValue(indexNameWithModes.keySet()); } } - public String name() { - return name; - } - - public Map mapping() { - return mapping; - } - - public Map indexNameWithModes() { - return indexNameWithModes; - } - public Set concreteIndices() { return indexNameWithModes.keySet(); } @@ -90,25 +67,4 @@ public Set concreteIndices() { public String toString() { return name; } - - @Override - public int hashCode() { - return Objects.hash(name, mapping, indexNameWithModes); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj == null || getClass() != obj.getClass()) { - return false; - } - - EsIndex other = (EsIndex) obj; - return Objects.equals(name, other.name) - && Objects.equals(mapping, other.mapping) - && Objects.equals(indexNameWithModes, other.indexNameWithModes); - } } diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plan/logical/Enrich.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plan/logical/Enrich.java index fcb5d9dbd61cf..b46a563867367 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plan/logical/Enrich.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plan/logical/Enrich.java @@ -116,7 +116,7 @@ private static Enrich readFrom(StreamInput in) throws IOException { if (in.getTransportVersion().onOrAfter(TransportVersions.V_8_13_0)) { concreteIndices = in.readMap(StreamInput::readString, StreamInput::readString); } else { - EsIndex esIndex = new EsIndex(in); + EsIndex esIndex = EsIndex.readFrom(in); if (esIndex.concreteIndices().size() > 1) { throw new IllegalStateException("expected a single enrich index; got " + esIndex); } diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plan/logical/EsRelation.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plan/logical/EsRelation.java index 794a52b8e3f89..df0b258679d4c 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plan/logical/EsRelation.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plan/logical/EsRelation.java @@ -58,7 +58,7 @@ public EsRelation(Source source, EsIndex index, List attributes, Inde private static EsRelation readFrom(StreamInput in) throws IOException { Source source = Source.readFrom((PlanStreamInput) in); - EsIndex esIndex = new EsIndex(in); + EsIndex esIndex = EsIndex.readFrom(in); List attributes = in.readNamedWriteableCollectionAsList(Attribute.class); if (supportingEsSourceOptions(in.getTransportVersion())) { // We don't do anything with these strings diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plan/physical/EnrichExec.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plan/physical/EnrichExec.java index a14332ebef7c3..42cf3528f2ae6 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plan/physical/EnrichExec.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plan/physical/EnrichExec.java @@ -87,7 +87,7 @@ private static EnrichExec readFrom(StreamInput in) throws IOException { concreteIndices = in.readMap(StreamInput::readString, StreamInput::readString); } else { mode = Enrich.Mode.ANY; - EsIndex esIndex = new EsIndex(in); + EsIndex esIndex = EsIndex.readFrom(in); if (esIndex.concreteIndices().size() != 1) { throw new IllegalStateException("expected a single concrete enrich index; got " + esIndex.concreteIndices()); } diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plan/physical/EsQueryExec.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plan/physical/EsQueryExec.java index 267b9e613abef..ab533899aaff6 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plan/physical/EsQueryExec.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plan/physical/EsQueryExec.java @@ -138,7 +138,7 @@ public EsQueryExec( */ public static EsQueryExec deserialize(StreamInput in) throws IOException { var source = Source.readFrom((PlanStreamInput) in); - var index = new EsIndex(in); + var index = EsIndex.readFrom(in); var indexMode = EsRelation.readIndexMode(in); var attrs = in.readNamedWriteableCollectionAsList(Attribute.class); var query = in.readOptionalNamedWriteable(QueryBuilder.class); diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plan/physical/EsSourceExec.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plan/physical/EsSourceExec.java index cd167b4683493..eeeafc52f158b 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plan/physical/EsSourceExec.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plan/physical/EsSourceExec.java @@ -51,7 +51,7 @@ public EsSourceExec(Source source, EsIndex index, List attributes, Qu private EsSourceExec(StreamInput in) throws IOException { this( Source.readFrom((PlanStreamInput) in), - new EsIndex(in), + EsIndex.readFrom(in), in.readNamedWriteableCollectionAsList(Attribute.class), in.readOptionalNamedWriteable(QueryBuilder.class), EsRelation.readIndexMode(in) diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/index/EsIndexSerializationTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/index/EsIndexSerializationTests.java index 82dd5a88ffaf1..8f846edf2b41c 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/index/EsIndexSerializationTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/index/EsIndexSerializationTests.java @@ -56,7 +56,7 @@ private static Map randomConcreteIndices() { @Override protected Writeable.Reader instanceReader() { - return a -> new EsIndex(new PlanStreamInput(a, a.namedWriteableRegistry(), null)); + return a -> EsIndex.readFrom(new PlanStreamInput(a, a.namedWriteableRegistry(), null)); } @Override diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/tree/EsqlNodeSubclassTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/tree/EsqlNodeSubclassTests.java index f01a125bc3c23..c3f7080ebdd92 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/tree/EsqlNodeSubclassTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/tree/EsqlNodeSubclassTests.java @@ -40,6 +40,7 @@ import org.elasticsearch.xpack.esql.expression.function.scalar.math.Pow; import org.elasticsearch.xpack.esql.expression.function.scalar.string.Concat; import org.elasticsearch.xpack.esql.expression.predicate.fulltext.FullTextPredicate; +import org.elasticsearch.xpack.esql.index.EsIndex; import org.elasticsearch.xpack.esql.plan.logical.Dissect; import org.elasticsearch.xpack.esql.plan.logical.Grok; import org.elasticsearch.xpack.esql.plan.logical.LogicalPlan; @@ -87,6 +88,7 @@ import static java.util.Collections.emptyList; import static org.elasticsearch.xpack.esql.ConfigurationTestUtils.randomConfiguration; import static org.elasticsearch.xpack.esql.core.type.DataType.GEO_POINT; +import static org.elasticsearch.xpack.esql.index.EsIndexSerializationTests.randomEsIndex; import static org.mockito.Mockito.mock; /** @@ -491,6 +493,9 @@ public void accept(Page page) { if (argClass == Configuration.class) { return randomConfiguration(); } + if (argClass == EsIndex.class) { + return randomEsIndex(); + } if (argClass == JoinConfig.class) { return new JoinConfig( JoinTypes.LEFT, From 21d234318d62ab1e48d5afe789397360e130d3af Mon Sep 17 00:00:00 2001 From: elasticsearchmachine <58790826+elasticsearchmachine@users.noreply.github.com> Date: Tue, 7 Jan 2025 20:09:28 +1100 Subject: [PATCH 23/35] Mute org.elasticsearch.lucene.FullClusterRestartSearchableSnapshotIndexCompatibilityIT testSearchableSnapshotUpgrade {p0=8.18.0} #119631 --- muted-tests.yml | 545 ++++++++++++++++++++++++------------------------ 1 file changed, 274 insertions(+), 271 deletions(-) diff --git a/muted-tests.yml b/muted-tests.yml index b83c4f2eba3b0..4af623e706ec2 100644 --- a/muted-tests.yml +++ b/muted-tests.yml @@ -1,275 +1,278 @@ tests: - - class: "org.elasticsearch.client.RestClientSingleHostIntegTests" - issue: "https://github.com/elastic/elasticsearch/issues/102717" - method: "testRequestResetAndAbort" - - class: org.elasticsearch.smoketest.WatcherYamlRestIT - method: test {p0=watcher/usage/10_basic/Test watcher usage stats output} - issue: https://github.com/elastic/elasticsearch/issues/112189 - - class: org.elasticsearch.ingest.geoip.IngestGeoIpClientYamlTestSuiteIT - issue: https://github.com/elastic/elasticsearch/issues/111497 - - class: org.elasticsearch.packaging.test.PackagesSecurityAutoConfigurationTests - method: test20SecurityNotAutoConfiguredOnReInstallation - issue: https://github.com/elastic/elasticsearch/issues/112635 - - class: org.elasticsearch.xpack.sql.qa.single_node.JdbcSqlSpecIT - method: test {case-functions.testSelectInsertWithLcaseAndLengthWithOrderBy} - issue: https://github.com/elastic/elasticsearch/issues/112642 - - class: org.elasticsearch.xpack.sql.qa.single_node.JdbcSqlSpecIT - method: test {case-functions.testUcaseInline1} - issue: https://github.com/elastic/elasticsearch/issues/112641 - - class: org.elasticsearch.xpack.sql.qa.single_node.JdbcSqlSpecIT - method: test {case-functions.testUpperCasingTheSecondLetterFromTheRightFromFirstName} - issue: https://github.com/elastic/elasticsearch/issues/112640 - - class: org.elasticsearch.xpack.sql.qa.single_node.JdbcSqlSpecIT - method: test {case-functions.testUcaseInline3} - issue: https://github.com/elastic/elasticsearch/issues/112643 - - class: org.elasticsearch.xpack.sql.qa.security.JdbcSqlSpecIT - method: test {case-functions.testUcaseInline1} - issue: https://github.com/elastic/elasticsearch/issues/112641 - - class: org.elasticsearch.xpack.sql.qa.security.JdbcSqlSpecIT - method: test {case-functions.testUcaseInline3} - issue: https://github.com/elastic/elasticsearch/issues/112643 - - class: org.elasticsearch.xpack.sql.qa.security.JdbcSqlSpecIT - method: test {case-functions.testUpperCasingTheSecondLetterFromTheRightFromFirstName} - issue: https://github.com/elastic/elasticsearch/issues/112640 - - class: org.elasticsearch.xpack.sql.qa.security.JdbcSqlSpecIT - method: test {case-functions.testSelectInsertWithLcaseAndLengthWithOrderBy} - issue: https://github.com/elastic/elasticsearch/issues/112642 - - class: org.elasticsearch.packaging.test.WindowsServiceTests - method: test30StartStop - issue: https://github.com/elastic/elasticsearch/issues/113160 - - class: org.elasticsearch.packaging.test.WindowsServiceTests - method: test33JavaChanged - issue: https://github.com/elastic/elasticsearch/issues/113177 - - class: org.elasticsearch.packaging.test.WindowsServiceTests - method: test80JavaOptsInEnvVar - issue: https://github.com/elastic/elasticsearch/issues/113219 - - class: org.elasticsearch.packaging.test.WindowsServiceTests - method: test81JavaOptsInJvmOptions - issue: https://github.com/elastic/elasticsearch/issues/113313 - - class: org.elasticsearch.backwards.MixedClusterClientYamlTestSuiteIT - method: test {p0=mtermvectors/10_basic/Tests catching other exceptions per item} - issue: https://github.com/elastic/elasticsearch/issues/113325 - - class: org.elasticsearch.xpack.transform.integration.TransformIT - method: testStopWaitForCheckpoint - issue: https://github.com/elastic/elasticsearch/issues/106113 - - class: org.elasticsearch.kibana.KibanaThreadPoolIT - method: testBlockedThreadPoolsRejectUserRequests - issue: https://github.com/elastic/elasticsearch/issues/113939 - - class: org.elasticsearch.xpack.inference.TextEmbeddingCrudIT - method: testPutE5Small_withPlatformAgnosticVariant - issue: https://github.com/elastic/elasticsearch/issues/113983 - - class: org.elasticsearch.xpack.inference.TextEmbeddingCrudIT - method: testPutE5WithTrainedModelAndInference - issue: https://github.com/elastic/elasticsearch/issues/114023 - - class: org.elasticsearch.xpack.inference.TextEmbeddingCrudIT - method: testPutE5Small_withPlatformSpecificVariant - issue: https://github.com/elastic/elasticsearch/issues/113950 - - class: org.elasticsearch.xpack.remotecluster.RemoteClusterSecurityWithApmTracingRestIT - method: testTracingCrossCluster - issue: https://github.com/elastic/elasticsearch/issues/112731 - - class: org.elasticsearch.xpack.inference.DefaultEndPointsIT - method: testInferDeploysDefaultE5 - issue: https://github.com/elastic/elasticsearch/issues/115361 - - class: org.elasticsearch.xpack.restart.MLModelDeploymentFullClusterRestartIT - method: testDeploymentSurvivesRestart {cluster=UPGRADED} - issue: https://github.com/elastic/elasticsearch/issues/115528 - - class: org.elasticsearch.xpack.shutdown.NodeShutdownIT - method: testStalledShardMigrationProperlyDetected - issue: https://github.com/elastic/elasticsearch/issues/115697 - - class: org.elasticsearch.xpack.test.rest.XPackRestIT - method: test {p0=transform/transforms_start_stop/Verify start transform reuses destination index} - issue: https://github.com/elastic/elasticsearch/issues/115808 - - class: org.elasticsearch.search.StressSearchServiceReaperIT - method: testStressReaper - issue: https://github.com/elastic/elasticsearch/issues/115816 - - class: org.elasticsearch.xpack.application.connector.ConnectorIndexServiceTests - issue: https://github.com/elastic/elasticsearch/issues/116087 - - class: org.elasticsearch.xpack.ml.integration.DatafeedJobsRestIT - method: testLookbackWithIndicesOptions - issue: https://github.com/elastic/elasticsearch/issues/116127 - - class: org.elasticsearch.xpack.test.rest.XPackRestIT - method: test {p0=transform/transforms_start_stop/Test start already started transform} - issue: https://github.com/elastic/elasticsearch/issues/98802 - - class: org.elasticsearch.action.search.SearchPhaseControllerTests - method: testProgressListener - issue: https://github.com/elastic/elasticsearch/issues/116149 - - class: org.elasticsearch.search.basic.SearchWithRandomDisconnectsIT - method: testSearchWithRandomDisconnects - issue: https://github.com/elastic/elasticsearch/issues/116175 - - class: org.elasticsearch.xpack.deprecation.DeprecationHttpIT - method: testDeprecatedSettingsReturnWarnings - issue: https://github.com/elastic/elasticsearch/issues/108628 - - class: org.elasticsearch.xpack.shutdown.NodeShutdownIT - method: testAllocationPreventedForRemoval - issue: https://github.com/elastic/elasticsearch/issues/116363 - - class: org.elasticsearch.xpack.downsample.ILMDownsampleDisruptionIT - method: testILMDownsampleRollingRestart - issue: https://github.com/elastic/elasticsearch/issues/114233 - - class: org.elasticsearch.reservedstate.service.RepositoriesFileSettingsIT - method: testSettingsApplied - issue: https://github.com/elastic/elasticsearch/issues/116694 - - class: org.elasticsearch.xpack.security.authc.ldap.ActiveDirectoryGroupsResolverTests - issue: https://github.com/elastic/elasticsearch/issues/116182 - - class: org.elasticsearch.xpack.test.rest.XPackRestIT - method: test {p0=snapshot/20_operator_privileges_disabled/Operator only settings can be set and restored by non-operator user when operator privileges is disabled} - issue: https://github.com/elastic/elasticsearch/issues/116775 - - class: org.elasticsearch.search.basic.SearchWithRandomIOExceptionsIT - method: testRandomDirectoryIOExceptions - issue: https://github.com/elastic/elasticsearch/issues/114824 - - class: org.elasticsearch.xpack.apmdata.APMYamlTestSuiteIT - method: test {yaml=/10_apm/Test template reinstallation} - issue: https://github.com/elastic/elasticsearch/issues/116445 - - class: org.elasticsearch.xpack.inference.DefaultEndPointsIT - method: testMultipleInferencesTriggeringDownloadAndDeploy - issue: https://github.com/elastic/elasticsearch/issues/117208 - - class: org.elasticsearch.ingest.geoip.EnterpriseGeoIpDownloaderIT - method: testEnterpriseDownloaderTask - issue: https://github.com/elastic/elasticsearch/issues/115163 - - class: org.elasticsearch.versioning.ConcurrentSeqNoVersioningIT - method: testSeqNoCASLinearizability - issue: https://github.com/elastic/elasticsearch/issues/117249 - - class: org.elasticsearch.discovery.ClusterDisruptionIT - method: testAckedIndexing - issue: https://github.com/elastic/elasticsearch/issues/117024 - - class: org.elasticsearch.xpack.test.rest.XPackRestIT - method: test {p0=snapshot/10_basic/Create a source only snapshot and then restore it} - issue: https://github.com/elastic/elasticsearch/issues/117295 - - class: org.elasticsearch.xpack.inference.DefaultEndPointsIT - method: testInferDeploysDefaultElser - issue: https://github.com/elastic/elasticsearch/issues/114913 - - class: org.elasticsearch.xpack.inference.InferenceRestIT - method: test {p0=inference/40_semantic_text_query/Query a field that uses the default ELSER 2 endpoint} - issue: https://github.com/elastic/elasticsearch/issues/117027 - - class: org.elasticsearch.xpack.inference.InferenceRestIT - method: test {p0=inference/30_semantic_text_inference/Calculates embeddings using the default ELSER 2 endpoint} - issue: https://github.com/elastic/elasticsearch/issues/117349 - - class: org.elasticsearch.xpack.inference.InferenceRestIT - method: test {p0=inference/30_semantic_text_inference_bwc/Calculates embeddings using the default ELSER 2 endpoint} - issue: https://github.com/elastic/elasticsearch/issues/117349 - - class: org.elasticsearch.xpack.test.rest.XPackRestIT - method: test {p0=transform/transforms_reset/Test reset running transform} - issue: https://github.com/elastic/elasticsearch/issues/117473 - - class: org.elasticsearch.search.ccs.CrossClusterIT - method: testCancel - issue: https://github.com/elastic/elasticsearch/issues/108061 - - class: org.elasticsearch.test.rest.yaml.CcsCommonYamlTestSuiteIT - method: test {p0=search.highlight/50_synthetic_source/text multi unified from vectors} - issue: https://github.com/elastic/elasticsearch/issues/117815 - - class: org.elasticsearch.xpack.ml.integration.DatafeedJobsRestIT - issue: https://github.com/elastic/elasticsearch/issues/111319 - - class: org.elasticsearch.xpack.esql.plugin.ClusterRequestTests - method: testFallbackIndicesOptions - issue: https://github.com/elastic/elasticsearch/issues/117937 - - class: org.elasticsearch.xpack.ml.integration.RegressionIT - method: testTwoJobsWithSameRandomizeSeedUseSameTrainingSet - issue: https://github.com/elastic/elasticsearch/issues/117805 - - class: org.elasticsearch.upgrades.QueryBuilderBWCIT - method: testQueryBuilderBWC {cluster=UPGRADED} - issue: https://github.com/elastic/elasticsearch/issues/116990 - - class: org.elasticsearch.xpack.restart.QueryBuilderBWCIT - method: testQueryBuilderBWC {p0=UPGRADED} - issue: https://github.com/elastic/elasticsearch/issues/116989 - - class: org.elasticsearch.xpack.remotecluster.CrossClusterEsqlRCS2UnavailableRemotesIT - method: testEsqlRcs2UnavailableRemoteScenarios - issue: https://github.com/elastic/elasticsearch/issues/117419 - - class: org.elasticsearch.xpack.inference.DefaultEndPointsIT - method: testInferDeploysDefaultRerank - issue: https://github.com/elastic/elasticsearch/issues/118184 - - class: org.elasticsearch.xpack.esql.action.EsqlActionTaskIT - method: testCancelRequestWhenFailingFetchingPages - issue: https://github.com/elastic/elasticsearch/issues/118193 - - class: org.elasticsearch.packaging.test.ArchiveTests - method: test44AutoConfigurationNotTriggeredOnNotWriteableConfDir - issue: https://github.com/elastic/elasticsearch/issues/118208 - - class: org.elasticsearch.packaging.test.ArchiveTests - method: test51AutoConfigurationWithPasswordProtectedKeystore - issue: https://github.com/elastic/elasticsearch/issues/118212 - - class: org.elasticsearch.datastreams.DataStreamsClientYamlTestSuiteIT - method: test {p0=data_stream/120_data_streams_stats/Multiple data stream} - issue: https://github.com/elastic/elasticsearch/issues/118217 - - class: org.elasticsearch.action.search.SearchQueryThenFetchAsyncActionTests - method: testBottomFieldSort - issue: https://github.com/elastic/elasticsearch/issues/118214 - - class: org.elasticsearch.xpack.remotecluster.CrossClusterEsqlRCS1UnavailableRemotesIT - method: testEsqlRcs1UnavailableRemoteScenarios - issue: https://github.com/elastic/elasticsearch/issues/118350 - - class: org.elasticsearch.xpack.searchablesnapshots.RetrySearchIntegTests - method: testSearcherId - issue: https://github.com/elastic/elasticsearch/issues/118374 - - class: org.elasticsearch.xpack.security.operator.OperatorPrivilegesIT - method: testEveryActionIsEitherOperatorOnlyOrNonOperator - issue: https://github.com/elastic/elasticsearch/issues/118220 - - class: org.elasticsearch.xpack.esql.action.EsqlActionBreakerIT - issue: https://github.com/elastic/elasticsearch/issues/118238 - - class: org.elasticsearch.reservedstate.service.FileSettingsServiceTests - method: testInvalidJSON - issue: https://github.com/elastic/elasticsearch/issues/116521 - - class: org.elasticsearch.xpack.ccr.rest.ShardChangesRestIT - method: testShardChangesNoOperation - issue: https://github.com/elastic/elasticsearch/issues/118800 - - class: org.elasticsearch.smoketest.DocsClientYamlTestSuiteIT - method: test {yaml=reference/indices/shard-stores/line_150} - issue: https://github.com/elastic/elasticsearch/issues/118896 - - class: org.elasticsearch.cluster.service.MasterServiceTests - method: testThreadContext - issue: https://github.com/elastic/elasticsearch/issues/118914 - - class: org.elasticsearch.repositories.blobstore.testkit.analyze.SecureHdfsRepositoryAnalysisRestIT - issue: https://github.com/elastic/elasticsearch/issues/118970 - - class: org.elasticsearch.aggregations.bucket.SearchCancellationIT - method: testCancellationDuringTimeSeriesAggregation - issue: https://github.com/elastic/elasticsearch/issues/118992 - - class: org.elasticsearch.xpack.security.authc.AuthenticationServiceTests - method: testInvalidToken - issue: https://github.com/elastic/elasticsearch/issues/119019 - - class: org.elasticsearch.backwards.MixedClusterClientYamlTestSuiteIT - method: test {p0=synonyms/90_synonyms_reloading_for_synset/Reload analyzers for specific synonym set} - issue: https://github.com/elastic/elasticsearch/issues/116777 - - class: org.elasticsearch.xpack.security.authc.ldap.ActiveDirectoryRunAsIT - issue: https://github.com/elastic/elasticsearch/issues/115727 - - class: org.elasticsearch.smoketest.DocsClientYamlTestSuiteIT - method: test {yaml=reference/search/search-your-data/retrievers-examples/line_98} - issue: https://github.com/elastic/elasticsearch/issues/119155 - - class: org.elasticsearch.xpack.esql.action.EsqlNodeFailureIT - method: testFailureLoadingFields - issue: https://github.com/elastic/elasticsearch/issues/118000 - - class: org.elasticsearch.index.mapper.AbstractShapeGeometryFieldMapperTests - method: testCartesianBoundsBlockLoader - issue: https://github.com/elastic/elasticsearch/issues/119201 - - class: org.elasticsearch.xpack.test.rest.XPackRestIT - method: test {p0=ml/data_frame_analytics_cat_apis/Test cat data frame analytics all jobs with header} - issue: https://github.com/elastic/elasticsearch/issues/119332 - - class: org.elasticsearch.xpack.test.rest.XPackRestIT - method: test {p0=transform/transforms_start_stop/Test start/stop/start transform} - issue: https://github.com/elastic/elasticsearch/issues/119508 - - class: org.elasticsearch.smoketest.MlWithSecurityIT - method: test {yaml=ml/sparse_vector_search/Test sparse_vector search with query vector and pruning config} - issue: https://github.com/elastic/elasticsearch/issues/119548 - - class: org.elasticsearch.lucene.RollingUpgradeSearchableSnapshotIndexCompatibilityIT - method: testSearchableSnapshotUpgrade {p0=[9.0.0, 8.18.0, 8.18.0]} - issue: https://github.com/elastic/elasticsearch/issues/119549 - - class: org.elasticsearch.lucene.RollingUpgradeSearchableSnapshotIndexCompatibilityIT - method: testMountSearchableSnapshot {p0=[9.0.0, 8.18.0, 8.18.0]} - issue: https://github.com/elastic/elasticsearch/issues/119550 - - class: org.elasticsearch.lucene.RollingUpgradeSearchableSnapshotIndexCompatibilityIT - method: testMountSearchableSnapshot {p0=[9.0.0, 9.0.0, 8.18.0]} - issue: https://github.com/elastic/elasticsearch/issues/119551 - - class: org.elasticsearch.index.engine.LuceneSyntheticSourceChangesSnapshotTests - method: testSkipNonRootOfNestedDocuments - issue: https://github.com/elastic/elasticsearch/issues/119553 - - class: org.elasticsearch.lucene.RollingUpgradeSearchableSnapshotIndexCompatibilityIT - method: testSearchableSnapshotUpgrade {p0=[9.0.0, 9.0.0, 8.18.0]} - issue: https://github.com/elastic/elasticsearch/issues/119560 - - class: org.elasticsearch.lucene.RollingUpgradeSearchableSnapshotIndexCompatibilityIT - method: testMountSearchableSnapshot {p0=[9.0.0, 9.0.0, 9.0.0]} - issue: https://github.com/elastic/elasticsearch/issues/119561 - - class: org.elasticsearch.lucene.RollingUpgradeSearchableSnapshotIndexCompatibilityIT - method: testSearchableSnapshotUpgrade {p0=[9.0.0, 9.0.0, 9.0.0]} - issue: https://github.com/elastic/elasticsearch/issues/119562 - - class: org.elasticsearch.xpack.ml.integration.ForecastIT - method: testOverflowToDisk - issue: https://github.com/elastic/elasticsearch/issues/117740 - - class: org.elasticsearch.xpack.security.authc.ldap.MultiGroupMappingIT - issue: https://github.com/elastic/elasticsearch/issues/119599 +- class: "org.elasticsearch.client.RestClientSingleHostIntegTests" + issue: "https://github.com/elastic/elasticsearch/issues/102717" + method: "testRequestResetAndAbort" +- class: org.elasticsearch.smoketest.WatcherYamlRestIT + method: test {p0=watcher/usage/10_basic/Test watcher usage stats output} + issue: https://github.com/elastic/elasticsearch/issues/112189 +- class: org.elasticsearch.ingest.geoip.IngestGeoIpClientYamlTestSuiteIT + issue: https://github.com/elastic/elasticsearch/issues/111497 +- class: org.elasticsearch.packaging.test.PackagesSecurityAutoConfigurationTests + method: test20SecurityNotAutoConfiguredOnReInstallation + issue: https://github.com/elastic/elasticsearch/issues/112635 +- class: org.elasticsearch.xpack.sql.qa.single_node.JdbcSqlSpecIT + method: test {case-functions.testSelectInsertWithLcaseAndLengthWithOrderBy} + issue: https://github.com/elastic/elasticsearch/issues/112642 +- class: org.elasticsearch.xpack.sql.qa.single_node.JdbcSqlSpecIT + method: test {case-functions.testUcaseInline1} + issue: https://github.com/elastic/elasticsearch/issues/112641 +- class: org.elasticsearch.xpack.sql.qa.single_node.JdbcSqlSpecIT + method: test {case-functions.testUpperCasingTheSecondLetterFromTheRightFromFirstName} + issue: https://github.com/elastic/elasticsearch/issues/112640 +- class: org.elasticsearch.xpack.sql.qa.single_node.JdbcSqlSpecIT + method: test {case-functions.testUcaseInline3} + issue: https://github.com/elastic/elasticsearch/issues/112643 +- class: org.elasticsearch.xpack.sql.qa.security.JdbcSqlSpecIT + method: test {case-functions.testUcaseInline1} + issue: https://github.com/elastic/elasticsearch/issues/112641 +- class: org.elasticsearch.xpack.sql.qa.security.JdbcSqlSpecIT + method: test {case-functions.testUcaseInline3} + issue: https://github.com/elastic/elasticsearch/issues/112643 +- class: org.elasticsearch.xpack.sql.qa.security.JdbcSqlSpecIT + method: test {case-functions.testUpperCasingTheSecondLetterFromTheRightFromFirstName} + issue: https://github.com/elastic/elasticsearch/issues/112640 +- class: org.elasticsearch.xpack.sql.qa.security.JdbcSqlSpecIT + method: test {case-functions.testSelectInsertWithLcaseAndLengthWithOrderBy} + issue: https://github.com/elastic/elasticsearch/issues/112642 +- class: org.elasticsearch.packaging.test.WindowsServiceTests + method: test30StartStop + issue: https://github.com/elastic/elasticsearch/issues/113160 +- class: org.elasticsearch.packaging.test.WindowsServiceTests + method: test33JavaChanged + issue: https://github.com/elastic/elasticsearch/issues/113177 +- class: org.elasticsearch.packaging.test.WindowsServiceTests + method: test80JavaOptsInEnvVar + issue: https://github.com/elastic/elasticsearch/issues/113219 +- class: org.elasticsearch.packaging.test.WindowsServiceTests + method: test81JavaOptsInJvmOptions + issue: https://github.com/elastic/elasticsearch/issues/113313 +- class: org.elasticsearch.backwards.MixedClusterClientYamlTestSuiteIT + method: test {p0=mtermvectors/10_basic/Tests catching other exceptions per item} + issue: https://github.com/elastic/elasticsearch/issues/113325 +- class: org.elasticsearch.xpack.transform.integration.TransformIT + method: testStopWaitForCheckpoint + issue: https://github.com/elastic/elasticsearch/issues/106113 +- class: org.elasticsearch.kibana.KibanaThreadPoolIT + method: testBlockedThreadPoolsRejectUserRequests + issue: https://github.com/elastic/elasticsearch/issues/113939 +- class: org.elasticsearch.xpack.inference.TextEmbeddingCrudIT + method: testPutE5Small_withPlatformAgnosticVariant + issue: https://github.com/elastic/elasticsearch/issues/113983 +- class: org.elasticsearch.xpack.inference.TextEmbeddingCrudIT + method: testPutE5WithTrainedModelAndInference + issue: https://github.com/elastic/elasticsearch/issues/114023 +- class: org.elasticsearch.xpack.inference.TextEmbeddingCrudIT + method: testPutE5Small_withPlatformSpecificVariant + issue: https://github.com/elastic/elasticsearch/issues/113950 +- class: org.elasticsearch.xpack.remotecluster.RemoteClusterSecurityWithApmTracingRestIT + method: testTracingCrossCluster + issue: https://github.com/elastic/elasticsearch/issues/112731 +- class: org.elasticsearch.xpack.inference.DefaultEndPointsIT + method: testInferDeploysDefaultE5 + issue: https://github.com/elastic/elasticsearch/issues/115361 +- class: org.elasticsearch.xpack.restart.MLModelDeploymentFullClusterRestartIT + method: testDeploymentSurvivesRestart {cluster=UPGRADED} + issue: https://github.com/elastic/elasticsearch/issues/115528 +- class: org.elasticsearch.xpack.shutdown.NodeShutdownIT + method: testStalledShardMigrationProperlyDetected + issue: https://github.com/elastic/elasticsearch/issues/115697 +- class: org.elasticsearch.xpack.test.rest.XPackRestIT + method: test {p0=transform/transforms_start_stop/Verify start transform reuses destination index} + issue: https://github.com/elastic/elasticsearch/issues/115808 +- class: org.elasticsearch.search.StressSearchServiceReaperIT + method: testStressReaper + issue: https://github.com/elastic/elasticsearch/issues/115816 +- class: org.elasticsearch.xpack.application.connector.ConnectorIndexServiceTests + issue: https://github.com/elastic/elasticsearch/issues/116087 +- class: org.elasticsearch.xpack.ml.integration.DatafeedJobsRestIT + method: testLookbackWithIndicesOptions + issue: https://github.com/elastic/elasticsearch/issues/116127 +- class: org.elasticsearch.xpack.test.rest.XPackRestIT + method: test {p0=transform/transforms_start_stop/Test start already started transform} + issue: https://github.com/elastic/elasticsearch/issues/98802 +- class: org.elasticsearch.action.search.SearchPhaseControllerTests + method: testProgressListener + issue: https://github.com/elastic/elasticsearch/issues/116149 +- class: org.elasticsearch.search.basic.SearchWithRandomDisconnectsIT + method: testSearchWithRandomDisconnects + issue: https://github.com/elastic/elasticsearch/issues/116175 +- class: org.elasticsearch.xpack.deprecation.DeprecationHttpIT + method: testDeprecatedSettingsReturnWarnings + issue: https://github.com/elastic/elasticsearch/issues/108628 +- class: org.elasticsearch.xpack.shutdown.NodeShutdownIT + method: testAllocationPreventedForRemoval + issue: https://github.com/elastic/elasticsearch/issues/116363 +- class: org.elasticsearch.xpack.downsample.ILMDownsampleDisruptionIT + method: testILMDownsampleRollingRestart + issue: https://github.com/elastic/elasticsearch/issues/114233 +- class: org.elasticsearch.reservedstate.service.RepositoriesFileSettingsIT + method: testSettingsApplied + issue: https://github.com/elastic/elasticsearch/issues/116694 +- class: org.elasticsearch.xpack.security.authc.ldap.ActiveDirectoryGroupsResolverTests + issue: https://github.com/elastic/elasticsearch/issues/116182 +- class: org.elasticsearch.xpack.test.rest.XPackRestIT + method: test {p0=snapshot/20_operator_privileges_disabled/Operator only settings can be set and restored by non-operator user when operator privileges is disabled} + issue: https://github.com/elastic/elasticsearch/issues/116775 +- class: org.elasticsearch.search.basic.SearchWithRandomIOExceptionsIT + method: testRandomDirectoryIOExceptions + issue: https://github.com/elastic/elasticsearch/issues/114824 +- class: org.elasticsearch.xpack.apmdata.APMYamlTestSuiteIT + method: test {yaml=/10_apm/Test template reinstallation} + issue: https://github.com/elastic/elasticsearch/issues/116445 +- class: org.elasticsearch.xpack.inference.DefaultEndPointsIT + method: testMultipleInferencesTriggeringDownloadAndDeploy + issue: https://github.com/elastic/elasticsearch/issues/117208 +- class: org.elasticsearch.ingest.geoip.EnterpriseGeoIpDownloaderIT + method: testEnterpriseDownloaderTask + issue: https://github.com/elastic/elasticsearch/issues/115163 +- class: org.elasticsearch.versioning.ConcurrentSeqNoVersioningIT + method: testSeqNoCASLinearizability + issue: https://github.com/elastic/elasticsearch/issues/117249 +- class: org.elasticsearch.discovery.ClusterDisruptionIT + method: testAckedIndexing + issue: https://github.com/elastic/elasticsearch/issues/117024 +- class: org.elasticsearch.xpack.test.rest.XPackRestIT + method: test {p0=snapshot/10_basic/Create a source only snapshot and then restore it} + issue: https://github.com/elastic/elasticsearch/issues/117295 +- class: org.elasticsearch.xpack.inference.DefaultEndPointsIT + method: testInferDeploysDefaultElser + issue: https://github.com/elastic/elasticsearch/issues/114913 +- class: org.elasticsearch.xpack.inference.InferenceRestIT + method: test {p0=inference/40_semantic_text_query/Query a field that uses the default ELSER 2 endpoint} + issue: https://github.com/elastic/elasticsearch/issues/117027 +- class: org.elasticsearch.xpack.inference.InferenceRestIT + method: test {p0=inference/30_semantic_text_inference/Calculates embeddings using the default ELSER 2 endpoint} + issue: https://github.com/elastic/elasticsearch/issues/117349 +- class: org.elasticsearch.xpack.inference.InferenceRestIT + method: test {p0=inference/30_semantic_text_inference_bwc/Calculates embeddings using the default ELSER 2 endpoint} + issue: https://github.com/elastic/elasticsearch/issues/117349 +- class: org.elasticsearch.xpack.test.rest.XPackRestIT + method: test {p0=transform/transforms_reset/Test reset running transform} + issue: https://github.com/elastic/elasticsearch/issues/117473 +- class: org.elasticsearch.search.ccs.CrossClusterIT + method: testCancel + issue: https://github.com/elastic/elasticsearch/issues/108061 +- class: org.elasticsearch.test.rest.yaml.CcsCommonYamlTestSuiteIT + method: test {p0=search.highlight/50_synthetic_source/text multi unified from vectors} + issue: https://github.com/elastic/elasticsearch/issues/117815 +- class: org.elasticsearch.xpack.ml.integration.DatafeedJobsRestIT + issue: https://github.com/elastic/elasticsearch/issues/111319 +- class: org.elasticsearch.xpack.esql.plugin.ClusterRequestTests + method: testFallbackIndicesOptions + issue: https://github.com/elastic/elasticsearch/issues/117937 +- class: org.elasticsearch.xpack.ml.integration.RegressionIT + method: testTwoJobsWithSameRandomizeSeedUseSameTrainingSet + issue: https://github.com/elastic/elasticsearch/issues/117805 +- class: org.elasticsearch.upgrades.QueryBuilderBWCIT + method: testQueryBuilderBWC {cluster=UPGRADED} + issue: https://github.com/elastic/elasticsearch/issues/116990 +- class: org.elasticsearch.xpack.restart.QueryBuilderBWCIT + method: testQueryBuilderBWC {p0=UPGRADED} + issue: https://github.com/elastic/elasticsearch/issues/116989 +- class: org.elasticsearch.xpack.remotecluster.CrossClusterEsqlRCS2UnavailableRemotesIT + method: testEsqlRcs2UnavailableRemoteScenarios + issue: https://github.com/elastic/elasticsearch/issues/117419 +- class: org.elasticsearch.xpack.inference.DefaultEndPointsIT + method: testInferDeploysDefaultRerank + issue: https://github.com/elastic/elasticsearch/issues/118184 +- class: org.elasticsearch.xpack.esql.action.EsqlActionTaskIT + method: testCancelRequestWhenFailingFetchingPages + issue: https://github.com/elastic/elasticsearch/issues/118193 +- class: org.elasticsearch.packaging.test.ArchiveTests + method: test44AutoConfigurationNotTriggeredOnNotWriteableConfDir + issue: https://github.com/elastic/elasticsearch/issues/118208 +- class: org.elasticsearch.packaging.test.ArchiveTests + method: test51AutoConfigurationWithPasswordProtectedKeystore + issue: https://github.com/elastic/elasticsearch/issues/118212 +- class: org.elasticsearch.datastreams.DataStreamsClientYamlTestSuiteIT + method: test {p0=data_stream/120_data_streams_stats/Multiple data stream} + issue: https://github.com/elastic/elasticsearch/issues/118217 +- class: org.elasticsearch.action.search.SearchQueryThenFetchAsyncActionTests + method: testBottomFieldSort + issue: https://github.com/elastic/elasticsearch/issues/118214 +- class: org.elasticsearch.xpack.remotecluster.CrossClusterEsqlRCS1UnavailableRemotesIT + method: testEsqlRcs1UnavailableRemoteScenarios + issue: https://github.com/elastic/elasticsearch/issues/118350 +- class: org.elasticsearch.xpack.searchablesnapshots.RetrySearchIntegTests + method: testSearcherId + issue: https://github.com/elastic/elasticsearch/issues/118374 +- class: org.elasticsearch.xpack.security.operator.OperatorPrivilegesIT + method: testEveryActionIsEitherOperatorOnlyOrNonOperator + issue: https://github.com/elastic/elasticsearch/issues/118220 +- class: org.elasticsearch.xpack.esql.action.EsqlActionBreakerIT + issue: https://github.com/elastic/elasticsearch/issues/118238 +- class: org.elasticsearch.reservedstate.service.FileSettingsServiceTests + method: testInvalidJSON + issue: https://github.com/elastic/elasticsearch/issues/116521 +- class: org.elasticsearch.xpack.ccr.rest.ShardChangesRestIT + method: testShardChangesNoOperation + issue: https://github.com/elastic/elasticsearch/issues/118800 +- class: org.elasticsearch.smoketest.DocsClientYamlTestSuiteIT + method: test {yaml=reference/indices/shard-stores/line_150} + issue: https://github.com/elastic/elasticsearch/issues/118896 +- class: org.elasticsearch.cluster.service.MasterServiceTests + method: testThreadContext + issue: https://github.com/elastic/elasticsearch/issues/118914 +- class: org.elasticsearch.repositories.blobstore.testkit.analyze.SecureHdfsRepositoryAnalysisRestIT + issue: https://github.com/elastic/elasticsearch/issues/118970 +- class: org.elasticsearch.aggregations.bucket.SearchCancellationIT + method: testCancellationDuringTimeSeriesAggregation + issue: https://github.com/elastic/elasticsearch/issues/118992 +- class: org.elasticsearch.xpack.security.authc.AuthenticationServiceTests + method: testInvalidToken + issue: https://github.com/elastic/elasticsearch/issues/119019 +- class: org.elasticsearch.backwards.MixedClusterClientYamlTestSuiteIT + method: test {p0=synonyms/90_synonyms_reloading_for_synset/Reload analyzers for specific synonym set} + issue: https://github.com/elastic/elasticsearch/issues/116777 +- class: org.elasticsearch.xpack.security.authc.ldap.ActiveDirectoryRunAsIT + issue: https://github.com/elastic/elasticsearch/issues/115727 +- class: org.elasticsearch.smoketest.DocsClientYamlTestSuiteIT + method: test {yaml=reference/search/search-your-data/retrievers-examples/line_98} + issue: https://github.com/elastic/elasticsearch/issues/119155 +- class: org.elasticsearch.xpack.esql.action.EsqlNodeFailureIT + method: testFailureLoadingFields + issue: https://github.com/elastic/elasticsearch/issues/118000 +- class: org.elasticsearch.index.mapper.AbstractShapeGeometryFieldMapperTests + method: testCartesianBoundsBlockLoader + issue: https://github.com/elastic/elasticsearch/issues/119201 +- class: org.elasticsearch.xpack.test.rest.XPackRestIT + method: test {p0=ml/data_frame_analytics_cat_apis/Test cat data frame analytics all jobs with header} + issue: https://github.com/elastic/elasticsearch/issues/119332 +- class: org.elasticsearch.xpack.test.rest.XPackRestIT + method: test {p0=transform/transforms_start_stop/Test start/stop/start transform} + issue: https://github.com/elastic/elasticsearch/issues/119508 +- class: org.elasticsearch.smoketest.MlWithSecurityIT + method: test {yaml=ml/sparse_vector_search/Test sparse_vector search with query vector and pruning config} + issue: https://github.com/elastic/elasticsearch/issues/119548 +- class: org.elasticsearch.lucene.RollingUpgradeSearchableSnapshotIndexCompatibilityIT + method: testSearchableSnapshotUpgrade {p0=[9.0.0, 8.18.0, 8.18.0]} + issue: https://github.com/elastic/elasticsearch/issues/119549 +- class: org.elasticsearch.lucene.RollingUpgradeSearchableSnapshotIndexCompatibilityIT + method: testMountSearchableSnapshot {p0=[9.0.0, 8.18.0, 8.18.0]} + issue: https://github.com/elastic/elasticsearch/issues/119550 +- class: org.elasticsearch.lucene.RollingUpgradeSearchableSnapshotIndexCompatibilityIT + method: testMountSearchableSnapshot {p0=[9.0.0, 9.0.0, 8.18.0]} + issue: https://github.com/elastic/elasticsearch/issues/119551 +- class: org.elasticsearch.index.engine.LuceneSyntheticSourceChangesSnapshotTests + method: testSkipNonRootOfNestedDocuments + issue: https://github.com/elastic/elasticsearch/issues/119553 +- class: org.elasticsearch.lucene.RollingUpgradeSearchableSnapshotIndexCompatibilityIT + method: testSearchableSnapshotUpgrade {p0=[9.0.0, 9.0.0, 8.18.0]} + issue: https://github.com/elastic/elasticsearch/issues/119560 +- class: org.elasticsearch.lucene.RollingUpgradeSearchableSnapshotIndexCompatibilityIT + method: testMountSearchableSnapshot {p0=[9.0.0, 9.0.0, 9.0.0]} + issue: https://github.com/elastic/elasticsearch/issues/119561 +- class: org.elasticsearch.lucene.RollingUpgradeSearchableSnapshotIndexCompatibilityIT + method: testSearchableSnapshotUpgrade {p0=[9.0.0, 9.0.0, 9.0.0]} + issue: https://github.com/elastic/elasticsearch/issues/119562 +- class: org.elasticsearch.xpack.ml.integration.ForecastIT + method: testOverflowToDisk + issue: https://github.com/elastic/elasticsearch/issues/117740 +- class: org.elasticsearch.xpack.security.authc.ldap.MultiGroupMappingIT + issue: https://github.com/elastic/elasticsearch/issues/119599 +- class: org.elasticsearch.lucene.FullClusterRestartSearchableSnapshotIndexCompatibilityIT + method: testSearchableSnapshotUpgrade {p0=8.18.0} + issue: https://github.com/elastic/elasticsearch/issues/119631 # Examples: # From 8ce07dc37e2478c64d4f8f541ef587dbb5ce9120 Mon Sep 17 00:00:00 2001 From: elasticsearchmachine <58790826+elasticsearchmachine@users.noreply.github.com> Date: Tue, 7 Jan 2025 20:09:39 +1100 Subject: [PATCH 24/35] Mute org.elasticsearch.lucene.FullClusterRestartSearchableSnapshotIndexCompatibilityIT testSearchableSnapshotUpgrade {p0=9.0.0} #119632 --- muted-tests.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/muted-tests.yml b/muted-tests.yml index 4af623e706ec2..1c1fe2d172c4f 100644 --- a/muted-tests.yml +++ b/muted-tests.yml @@ -273,6 +273,9 @@ tests: - class: org.elasticsearch.lucene.FullClusterRestartSearchableSnapshotIndexCompatibilityIT method: testSearchableSnapshotUpgrade {p0=8.18.0} issue: https://github.com/elastic/elasticsearch/issues/119631 +- class: org.elasticsearch.lucene.FullClusterRestartSearchableSnapshotIndexCompatibilityIT + method: testSearchableSnapshotUpgrade {p0=9.0.0} + issue: https://github.com/elastic/elasticsearch/issues/119632 # Examples: # From 5688c369d492b81af7c7e19bcd8b3fc1c4827977 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Tue, 7 Jan 2025 20:38:06 +1100 Subject: [PATCH 25/35] [CI] Unmute SecureHdfsRepositoryAnalysisRestIT (#119571) Should be fixed by #118331 Resolves: #118970 --- muted-tests.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/muted-tests.yml b/muted-tests.yml index 1c1fe2d172c4f..e36ccb56614a9 100644 --- a/muted-tests.yml +++ b/muted-tests.yml @@ -213,8 +213,6 @@ tests: - class: org.elasticsearch.cluster.service.MasterServiceTests method: testThreadContext issue: https://github.com/elastic/elasticsearch/issues/118914 -- class: org.elasticsearch.repositories.blobstore.testkit.analyze.SecureHdfsRepositoryAnalysisRestIT - issue: https://github.com/elastic/elasticsearch/issues/118970 - class: org.elasticsearch.aggregations.bucket.SearchCancellationIT method: testCancellationDuringTimeSeriesAggregation issue: https://github.com/elastic/elasticsearch/issues/118992 From a7d344ee10bfa11b8cdf16e735d5b84b25bfec11 Mon Sep 17 00:00:00 2001 From: Kostas Krikellas <131142368+kkrik-es@users.noreply.github.com> Date: Tue, 7 Jan 2025 12:06:56 +0200 Subject: [PATCH 26/35] [TEST] Clean up skipped tests in rest compat (#119627) --- rest-api-spec/build.gradle | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/rest-api-spec/build.gradle b/rest-api-spec/build.gradle index 147b04ccd6722..c627335af6263 100644 --- a/rest-api-spec/build.gradle +++ b/rest-api-spec/build.gradle @@ -59,25 +59,5 @@ tasks.named("yamlRestCompatTestTransform").configure ({ task -> task.replaceValueInMatch("profile.shards.0.dfs.knn.0.query.0.description", "DocAndScoreQuery[0,...][0.009673266,...],0.009673266", "dfs knn vector profiling with vector_operations_count") task.skipTest("cat.aliases/10_basic/Deprecated local parameter", "CAT APIs not covered by compatibility policy") task.skipTest("cat.shards/10_basic/Help", "sync_id is removed in 9.0") - task.skipTest("tsdb/20_mapping/exact match object type", "skip until pr/116687 gets backported") - task.skipTest("tsdb/25_id_generation/delete over _bulk", "skip until pr/116687 gets backported") - task.skipTest("tsdb/80_index_resize/split", "skip until pr/116687 gets backported") - task.skipTest("tsdb/90_unsupported_operations/noop update", "skip until pr/116687 gets backported") - task.skipTest("tsdb/90_unsupported_operations/regular update", "skip until pr/116687 gets backported") - task.skipTest("tsdb/90_unsupported_operations/search with routing", "skip until pr/116687 gets backported") - task.skipTest("tsdb/90_unsupported_operations/index with routing over _bulk", "skip until pr/116687 gets backported") - task.skipTest("tsdb/90_unsupported_operations/update over _bulk", "skip until pr/116687 gets backported") - task.skipTest("tsdb/90_unsupported_operations/index with routing", "skip until pr/116687 gets backported") task.skipTest("search/500_date_range/from, to, include_lower, include_upper deprecated", "deprecated parameters are removed in 9.0") - task.skipTest("tsdb/20_mapping/stored source is supported", "no longer serialize source_mode") - task.skipTest("tsdb/20_mapping/Synthetic source", "no longer serialize source_mode") - task.skipTest("logsdb/10_settings/create logs index", "no longer serialize source_mode") - task.skipTest("logsdb/20_source_mapping/stored _source mode is supported", "no longer serialize source_mode") - task.skipTest("logsdb/20_source_mapping/include/exclude is supported with stored _source", "no longer serialize source_mode") - task.skipTest("logsdb/20_source_mapping/synthetic _source is default", "no longer serialize source_mode") - task.skipTest("search/520_fetch_fields/fetch _seq_no via fields", "error code is changed from 5xx to 400 in 9.0") - task.skipTest("search.vectors/41_knn_search_bbq_hnsw/Test knn search", "Scoring has changed in latest versions") - task.skipTest("search.vectors/42_knn_search_bbq_flat/Test knn search", "Scoring has changed in latest versions") - task.skipTest("synonyms/90_synonyms_reloading_for_synset/Reload analyzers for specific synonym set", "Can't work until auto-expand replicas is 0-1 for synonyms index") - task.skipTest("search/90_search_after/_shard_doc sort", "restriction has been lifted in latest versions") }) From 9424bd2d9bfbe2b2603b74c67a3ede4cb050519c Mon Sep 17 00:00:00 2001 From: Jan Kuipers <148754765+jan-elastic@users.noreply.github.com> Date: Tue, 7 Jan 2025 11:08:00 +0100 Subject: [PATCH 27/35] Fix change point detection for uncertain non-stationary distributions. (#119578) * Fix change point detection for uncertain non-stationary distributions. * Replace -1 by ChangeType.NO_CHANGE_POINT --- .../xpack/ml/aggs/changepoint/ChangeDetector.java | 12 +++++++----- .../ml/aggs/changepoint/ChangePointAggregator.java | 2 +- .../xpack/ml/aggs/changepoint/ChangeType.java | 4 +++- .../ml/aggs/changepoint/ChangeDetectorTests.java | 11 +++++++++++ 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/aggs/changepoint/ChangeDetector.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/aggs/changepoint/ChangeDetector.java index e771fb3b94568..cf97ed629cfc5 100644 --- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/aggs/changepoint/ChangeDetector.java +++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/aggs/changepoint/ChangeDetector.java @@ -189,7 +189,7 @@ private TestStats testTrendVs(TestStats H0, double[] values, double[] weights) { private TestStats testStepChangeVs(TestStats H0, double[] values, double[] weights, int[] candidateChangePoints) { double vStep = Double.MAX_VALUE; - int changePoint = -1; + int changePoint = ChangeType.NO_CHANGE_POINT; // Initialize running stats so that they are only missing the individual changepoint values RunningStats lowerRange = new RunningStats(); @@ -226,7 +226,7 @@ private TestStats testStepChangeVs(TestStats H0, double[] values, double[] weigh private TestStats testTrendChangeVs(TestStats H0, double[] values, double[] weights, int[] candidateChangePoints) { double vChange = Double.MAX_VALUE; - int changePoint = -1; + int changePoint = ChangeType.NO_CHANGE_POINT; // Initialize running stats so that they are only missing the individual changepoint values RunningStats lowerRange = new RunningStats(); @@ -349,7 +349,7 @@ private TestStats testDistributionChange( ) { double maxDiff = 0.0; - int changePoint = -1; + int changePoint = ChangeType.NO_CHANGE_POINT; // Initialize running stats so that they are only missing the individual changepoint values RunningStats lowerRange = new RunningStats(); @@ -378,10 +378,12 @@ private TestStats testDistributionChange( // before we run the tests. SampleData sampleData = sample(values, weights, discoveredChangePoints); final double[] sampleValues = sampleData.values(); - final double[] sampleWeights = sampleData.weights(); double pValue = 1; for (int cp : sampleData.changePoints()) { + if (cp == ChangeType.NO_CHANGE_POINT) { + continue; + } double[] x = Arrays.copyOfRange(sampleValues, 0, cp); double[] y = Arrays.copyOfRange(sampleValues, cp, sampleValues.length); double statistic = KOLMOGOROV_SMIRNOV_TEST.kolmogorovSmirnovStatistic(x, y); @@ -451,7 +453,7 @@ private record TestStats(Type type, double pValue, double var, double nParams, i } TestStats(Type type, double pValue, double var, double nParams, DataStats dataStats) { - this(type, pValue, var, nParams, -1, dataStats); + this(type, pValue, var, nParams, ChangeType.NO_CHANGE_POINT, dataStats); } boolean accept(double pValueThreshold) { diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/aggs/changepoint/ChangePointAggregator.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/aggs/changepoint/ChangePointAggregator.java index d643a937180a1..ce622df184617 100644 --- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/aggs/changepoint/ChangePointAggregator.java +++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/aggs/changepoint/ChangePointAggregator.java @@ -47,7 +47,7 @@ public InternalAggregation doReduce(InternalAggregations aggregations, Aggregati ChangeType change = ChangePointDetector.getChangeType(bucketValues); ChangePointBucket changePointBucket = null; - if (change.changePoint() >= 0) { + if (change.changePoint() != ChangeType.NO_CHANGE_POINT) { changePointBucket = extractBucket(bucketsPaths()[0], aggregations, change.changePoint()).map( b -> new ChangePointBucket(b.getKey(), b.getDocCount(), b.getAggregations()) ).orElse(null); diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/aggs/changepoint/ChangeType.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/aggs/changepoint/ChangeType.java index c62355dc47451..7df542b59107b 100644 --- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/aggs/changepoint/ChangeType.java +++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/aggs/changepoint/ChangeType.java @@ -21,8 +21,10 @@ */ public interface ChangeType extends NamedWriteable, NamedXContentObject { + int NO_CHANGE_POINT = -1; + default int changePoint() { - return -1; + return NO_CHANGE_POINT; } default double pValue() { diff --git a/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/aggs/changepoint/ChangeDetectorTests.java b/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/aggs/changepoint/ChangeDetectorTests.java index 75f668a96e77e..36076bbb0ec25 100644 --- a/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/aggs/changepoint/ChangeDetectorTests.java +++ b/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/aggs/changepoint/ChangeDetectorTests.java @@ -17,6 +17,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.DoubleStream; +import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.lessThan; @@ -243,4 +244,14 @@ public void testProblemDistributionChange() { ChangeType type = new ChangeDetector(bucketValues).detect(0.05); assertThat(type, instanceOf(ChangeType.DistributionChange.class)); } + + public void testUncertainNonStationary() { + MlAggsHelper.DoubleBucketValues bucketValues = new MlAggsHelper.DoubleBucketValues( + null, + new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 700, 735, 715 } + ); + ChangeType type = new ChangeDetector(bucketValues).detect(0.01); + assertThat(type, instanceOf(ChangeType.NonStationary.class)); + assertThat(((ChangeType.NonStationary) type).getTrend(), equalTo("increasing")); + } } From 56becc55ccc6ed5e971e27c38db99ff10ec9ea21 Mon Sep 17 00:00:00 2001 From: Dimitris Rempapis Date: Tue, 7 Jan 2025 12:15:44 +0200 Subject: [PATCH 28/35] Searchable snapshot upgrade compatibility (#118770) Added tests for Searchable snapshot upgrade-compatibility --- .../MountFromVersion5IT.java | 21 ++++++++ .../MountFromVersion6IT.java | 21 ++++++++ .../SearchableSnapshotTestCase.java | 49 +++++++++++++++++++ 3 files changed, 91 insertions(+) create mode 100644 x-pack/qa/repository-old-versions-compatibility/src/javaRestTest/java/org/elasticsearch/oldrepos/searchablesnapshot/MountFromVersion5IT.java create mode 100644 x-pack/qa/repository-old-versions-compatibility/src/javaRestTest/java/org/elasticsearch/oldrepos/searchablesnapshot/MountFromVersion6IT.java create mode 100644 x-pack/qa/repository-old-versions-compatibility/src/javaRestTest/java/org/elasticsearch/oldrepos/searchablesnapshot/SearchableSnapshotTestCase.java diff --git a/x-pack/qa/repository-old-versions-compatibility/src/javaRestTest/java/org/elasticsearch/oldrepos/searchablesnapshot/MountFromVersion5IT.java b/x-pack/qa/repository-old-versions-compatibility/src/javaRestTest/java/org/elasticsearch/oldrepos/searchablesnapshot/MountFromVersion5IT.java new file mode 100644 index 0000000000000..3e371b5128b6a --- /dev/null +++ b/x-pack/qa/repository-old-versions-compatibility/src/javaRestTest/java/org/elasticsearch/oldrepos/searchablesnapshot/MountFromVersion5IT.java @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +package org.elasticsearch.oldrepos.searchablesnapshot; + +import org.elasticsearch.test.cluster.util.Version; + +public class MountFromVersion5IT extends SearchableSnapshotTestCase { + + public MountFromVersion5IT(Version version) { + super(version); + } + + public void testSearchableSnapshot() throws Exception { + verifyCompatibility("5"); + } +} diff --git a/x-pack/qa/repository-old-versions-compatibility/src/javaRestTest/java/org/elasticsearch/oldrepos/searchablesnapshot/MountFromVersion6IT.java b/x-pack/qa/repository-old-versions-compatibility/src/javaRestTest/java/org/elasticsearch/oldrepos/searchablesnapshot/MountFromVersion6IT.java new file mode 100644 index 0000000000000..29b81fe595e5f --- /dev/null +++ b/x-pack/qa/repository-old-versions-compatibility/src/javaRestTest/java/org/elasticsearch/oldrepos/searchablesnapshot/MountFromVersion6IT.java @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +package org.elasticsearch.oldrepos.searchablesnapshot; + +import org.elasticsearch.test.cluster.util.Version; + +public class MountFromVersion6IT extends SearchableSnapshotTestCase { + + public MountFromVersion6IT(Version version) { + super(version); + } + + public void testSearchableSnapshot() throws Exception { + verifyCompatibility("6"); + } +} diff --git a/x-pack/qa/repository-old-versions-compatibility/src/javaRestTest/java/org/elasticsearch/oldrepos/searchablesnapshot/SearchableSnapshotTestCase.java b/x-pack/qa/repository-old-versions-compatibility/src/javaRestTest/java/org/elasticsearch/oldrepos/searchablesnapshot/SearchableSnapshotTestCase.java new file mode 100644 index 0000000000000..08a5db2111904 --- /dev/null +++ b/x-pack/qa/repository-old-versions-compatibility/src/javaRestTest/java/org/elasticsearch/oldrepos/searchablesnapshot/SearchableSnapshotTestCase.java @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +package org.elasticsearch.oldrepos.searchablesnapshot; + +import org.elasticsearch.client.Request; +import org.elasticsearch.client.RestClient; +import org.elasticsearch.common.Strings; +import org.elasticsearch.oldrepos.AbstractUpgradeCompatibilityTestCase; +import org.elasticsearch.test.cluster.util.Version; + +import static org.elasticsearch.test.rest.ObjectPath.createFromResponse; + +/** + * Test suite for Archive indices backward compatibility with N-2 versions. + * The test suite creates a cluster in the N-1 version, where N is the current version. + * Restores snapshots from old-clusters (version 5/6) and upgrades it to the current version. + * Test methods are executed after each upgrade. + */ +public class SearchableSnapshotTestCase extends AbstractUpgradeCompatibilityTestCase { + + static { + clusterConfig = config -> config.setting("xpack.license.self_generated.type", "trial"); + } + + public SearchableSnapshotTestCase(Version version) { + super(version); + } + + /** + * Overrides the snapshot-restore operation for archive-indices scenario. + */ + @Override + public void recover(RestClient client, String repository, String snapshot, String index) throws Exception { + var request = new Request("POST", "/_snapshot/" + repository + "/" + snapshot + "/_mount"); + request.addParameter("wait_for_completion", "true"); + request.addParameter("storage", "full_copy"); + request.setJsonEntity(Strings.format(""" + { + "index": "%s", + "renamed_index": "%s" + }""", index, index)); + createFromResponse(client.performRequest(request)); + } +} From 355aed7fc80c1e9a2ce58ffd45615ed110312f0f Mon Sep 17 00:00:00 2001 From: Ioana Tagirta Date: Tue, 7 Jan 2025 12:19:19 +0100 Subject: [PATCH 29/35] Add semantic_text to mapping_all_types and switch to TranslationAware in PushFiltersToSource (#118982) * Add semantic_text to mapping-all-types.json and switch to TranslationAware in PushFiltersToSource * Continue to use FullTextFunction for now --------- Co-authored-by: Elastic Machine --- .../testFixtures/src/main/resources/mapping-all-types.json | 4 ++++ .../optimizer/rules/physical/local/PushFiltersToSource.java | 3 --- .../esql/optimizer/LocalPhysicalPlanOptimizerTests.java | 5 ----- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/x-pack/plugin/esql/qa/testFixtures/src/main/resources/mapping-all-types.json b/x-pack/plugin/esql/qa/testFixtures/src/main/resources/mapping-all-types.json index 04b59f347ebfc..17348adb6af4f 100644 --- a/x-pack/plugin/esql/qa/testFixtures/src/main/resources/mapping-all-types.json +++ b/x-pack/plugin/esql/qa/testFixtures/src/main/resources/mapping-all-types.json @@ -59,6 +59,10 @@ }, "wildcard": { "type": "wildcard" + }, + "semantic_text": { + "type": "semantic_text", + "inference_id": "foo_inference_id" } } } diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/optimizer/rules/physical/local/PushFiltersToSource.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/optimizer/rules/physical/local/PushFiltersToSource.java index 6fcdd538fdfc8..dae84bb6b6494 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/optimizer/rules/physical/local/PushFiltersToSource.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/optimizer/rules/physical/local/PushFiltersToSource.java @@ -31,7 +31,6 @@ import org.elasticsearch.xpack.esql.core.util.CollectionUtils; import org.elasticsearch.xpack.esql.core.util.Queries; import org.elasticsearch.xpack.esql.expression.function.fulltext.FullTextFunction; -import org.elasticsearch.xpack.esql.expression.function.fulltext.Term; import org.elasticsearch.xpack.esql.expression.function.scalar.ip.CIDRMatch; import org.elasticsearch.xpack.esql.expression.function.scalar.spatial.BinarySpatialFunction; import org.elasticsearch.xpack.esql.expression.function.scalar.spatial.SpatialRelatesFunction; @@ -252,8 +251,6 @@ static boolean canPushToSource(Expression exp, LucenePushdownPredicates lucenePu && Expressions.foldable(cidrMatch.matches()); } else if (exp instanceof SpatialRelatesFunction spatial) { return canPushSpatialFunctionToSource(spatial, lucenePushdownPredicates); - } else if (exp instanceof Term term) { - return term.field() instanceof FieldAttribute && DataType.isString(term.field().dataType()); } else if (exp instanceof FullTextFunction) { return true; } diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/optimizer/LocalPhysicalPlanOptimizerTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/optimizer/LocalPhysicalPlanOptimizerTests.java index 928c849b847d5..fc2f6320274f7 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/optimizer/LocalPhysicalPlanOptimizerTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/optimizer/LocalPhysicalPlanOptimizerTests.java @@ -1450,11 +1450,6 @@ private void checkMatchFunctionPushDown( var analyzer = makeAnalyzer("mapping-all-types.json"); // Check for every possible query data type for (DataType fieldDataType : fieldDataTypes) { - // TODO: semantic_text is not present in mapping-all-types.json so we skip it for now - if (fieldDataType == DataType.SEMANTIC_TEXT) { - continue; - } - var queryValue = randomQueryValue(fieldDataType); String fieldName = fieldDataType == DataType.DATETIME ? "date" : fieldDataType.name().toLowerCase(Locale.ROOT); From 0adc32898c0cd1729b7036e356911fa5d82f8a10 Mon Sep 17 00:00:00 2001 From: Dimitris Rempapis Date: Tue, 7 Jan 2025 13:25:07 +0200 Subject: [PATCH 30/35] Archive index version compatibility remove changelog (#119634) Revert changelog, accidentally added --- docs/changelog/118599.yaml | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 docs/changelog/118599.yaml diff --git a/docs/changelog/118599.yaml b/docs/changelog/118599.yaml deleted file mode 100644 index b410ddf5c5d19..0000000000000 --- a/docs/changelog/118599.yaml +++ /dev/null @@ -1,5 +0,0 @@ -pr: 118599 -summary: Archive-Index upgrade compatibility -area: Search -type: enhancement -issues: [] From 8ded6c456863d0649e6bbee990d94c01e6d9062c Mon Sep 17 00:00:00 2001 From: Srikanth Manvi Date: Tue, 7 Jan 2025 07:30:14 -0500 Subject: [PATCH 31/35] Update search-application-api.asciidoc (#118494) Fixing minor Typo --- .../search/search-your-data/search-application-api.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/search/search-your-data/search-application-api.asciidoc b/docs/reference/search/search-your-data/search-application-api.asciidoc index 2fe28faed546f..89d9a4318944b 100644 --- a/docs/reference/search/search-your-data/search-application-api.asciidoc +++ b/docs/reference/search/search-your-data/search-application-api.asciidoc @@ -206,7 +206,7 @@ will return: // TEST[continued] This uses the default parameters that were defined with the template. -You can also specify one or mre parameters to the render call, for example: +You can also specify one or more parameters to the render call, for example: [source,console] ---- From 5f9a9e0641d09aa2ffe6b129dec872181376a47a Mon Sep 17 00:00:00 2001 From: Nikolaj Volgushev Date: Tue, 7 Jan 2025 13:55:21 +0100 Subject: [PATCH 32/35] Skip operator privilege action test on release builds (#119386) The `testEveryActionIsEitherOperatorOnlyOrNonOperator` test has been reliably muted because release builds frequently miss actions due to disabled feature flags. There's no straight-forward way to account for this. This PR changes the test to only run on snapshot builds. This way we get test coverage while reducing maintenance burden. Closes: https://github.com/elastic/elasticsearch/issues/118220 --- muted-tests.yml | 3 --- .../xpack/security/operator/OperatorPrivilegesIT.java | 2 ++ 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/muted-tests.yml b/muted-tests.yml index e36ccb56614a9..a731d3422f96c 100644 --- a/muted-tests.yml +++ b/muted-tests.yml @@ -196,9 +196,6 @@ tests: - class: org.elasticsearch.xpack.searchablesnapshots.RetrySearchIntegTests method: testSearcherId issue: https://github.com/elastic/elasticsearch/issues/118374 -- class: org.elasticsearch.xpack.security.operator.OperatorPrivilegesIT - method: testEveryActionIsEitherOperatorOnlyOrNonOperator - issue: https://github.com/elastic/elasticsearch/issues/118220 - class: org.elasticsearch.xpack.esql.action.EsqlActionBreakerIT issue: https://github.com/elastic/elasticsearch/issues/118238 - class: org.elasticsearch.reservedstate.service.FileSettingsServiceTests diff --git a/x-pack/plugin/security/qa/operator-privileges-tests/src/javaRestTest/java/org/elasticsearch/xpack/security/operator/OperatorPrivilegesIT.java b/x-pack/plugin/security/qa/operator-privileges-tests/src/javaRestTest/java/org/elasticsearch/xpack/security/operator/OperatorPrivilegesIT.java index 9e680688edeaa..16485479e8a45 100644 --- a/x-pack/plugin/security/qa/operator-privileges-tests/src/javaRestTest/java/org/elasticsearch/xpack/security/operator/OperatorPrivilegesIT.java +++ b/x-pack/plugin/security/qa/operator-privileges-tests/src/javaRestTest/java/org/elasticsearch/xpack/security/operator/OperatorPrivilegesIT.java @@ -6,6 +6,7 @@ */ package org.elasticsearch.xpack.security.operator; +import org.elasticsearch.Build; import org.elasticsearch.client.Request; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.Response; @@ -165,6 +166,7 @@ public void testServiceAccountUpdateOperatorSettings() throws IOException { @SuppressWarnings("unchecked") public void testEveryActionIsEitherOperatorOnlyOrNonOperator() throws IOException { + assumeTrue("Exclude release builds due to maintenance burden around feature flags", Build.current().isSnapshot()); final String message = "An action should be declared to be either operator-only in [" + DefaultOperatorOnlyRegistry.class.getName() + "] or non-operator in [" From 6a0550656f1447bf95d37f3e0019d46e15c188fc Mon Sep 17 00:00:00 2001 From: Luca Cavanna Date: Tue, 7 Jan 2025 14:00:48 +0100 Subject: [PATCH 33/35] Restore use of v7 index versions in snapshot tests (#119133) Versions v7 have been filtered out when we bumped to v9, but that was not necessary. Actually, given we decided to keep on supporting v7 indices, it is important to restore such tests. --- .../elasticsearch/repositories/IndexSnapshotsServiceIT.java | 5 +---- .../snapshots/AbstractSnapshotIntegTestCase.java | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/server/src/internalClusterTest/java/org/elasticsearch/repositories/IndexSnapshotsServiceIT.java b/server/src/internalClusterTest/java/org/elasticsearch/repositories/IndexSnapshotsServiceIT.java index 4460bd2e0c302..c10217b93c868 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/repositories/IndexSnapshotsServiceIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/repositories/IndexSnapshotsServiceIT.java @@ -19,7 +19,6 @@ import org.elasticsearch.cluster.metadata.IndexMetadata; import org.elasticsearch.common.util.CollectionUtils; import org.elasticsearch.core.Strings; -import org.elasticsearch.core.UpdateForV9; import org.elasticsearch.index.Index; import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.IndexVersions; @@ -109,8 +108,6 @@ public void testGetShardSnapshotOnEmptyRepositoriesListThrowsAnError() { expectThrows(IllegalArgumentException.class, () -> getLatestSnapshotForShardFuture(Collections.emptyList(), "idx", 0, false)); } - @UpdateForV9(owner = UpdateForV9.Owner.DISTRIBUTED_COORDINATION) - // below we were selecting an index version between current and 7.5.0, this has been updated to 8.0.0 now but that might need to change public void testGetShardSnapshotReturnsTheLatestSuccessfulSnapshot() throws Exception { final String repoName = "repo-name"; final Path repoPath = randomRepoPath(); @@ -118,7 +115,7 @@ public void testGetShardSnapshotReturnsTheLatestSuccessfulSnapshot() throws Exce final boolean useBwCFormat = randomBoolean(); if (useBwCFormat) { - final IndexVersion version = randomVersionBetween(random(), IndexVersions.MINIMUM_COMPATIBLE, IndexVersion.current()); + final IndexVersion version = randomVersionBetween(random(), IndexVersions.V_7_5_0, IndexVersion.current()); initWithSnapshotVersion(repoName, repoPath, version); } diff --git a/test/framework/src/main/java/org/elasticsearch/snapshots/AbstractSnapshotIntegTestCase.java b/test/framework/src/main/java/org/elasticsearch/snapshots/AbstractSnapshotIntegTestCase.java index a2bf70bf6e087..076453c8a48d8 100644 --- a/test/framework/src/main/java/org/elasticsearch/snapshots/AbstractSnapshotIntegTestCase.java +++ b/test/framework/src/main/java/org/elasticsearch/snapshots/AbstractSnapshotIntegTestCase.java @@ -34,7 +34,6 @@ import org.elasticsearch.common.unit.ByteSizeUnit; import org.elasticsearch.common.util.concurrent.EsExecutors; import org.elasticsearch.core.Nullable; -import org.elasticsearch.core.UpdateForV9; import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.IndexVersions; import org.elasticsearch.plugins.Plugin; @@ -367,14 +366,12 @@ protected static Settings.Builder indexSettingsNoReplicas(int shards) { /** * Randomly write an empty snapshot of an older version to an empty repository to simulate an older repository metadata format. */ - @UpdateForV9(owner = UpdateForV9.Owner.DISTRIBUTED_COORDINATION) - // This used to pick an index version from 7.0.0 to 8.9.0. The minimum now is 8.0.0 but it's not clear what the upper range should be protected void maybeInitWithOldSnapshotVersion(String repoName, Path repoPath) throws Exception { if (randomBoolean() && randomBoolean()) { initWithSnapshotVersion( repoName, repoPath, - IndexVersionUtils.randomVersionBetween(random(), IndexVersions.MINIMUM_COMPATIBLE, IndexVersions.V_8_9_0) + IndexVersionUtils.randomVersionBetween(random(), IndexVersions.V_7_0_0, IndexVersions.V_8_9_0) ); } } From 3310ca9314ff40cabd523150cb000ebc643ee883 Mon Sep 17 00:00:00 2001 From: Jan Kuipers <148754765+jan-elastic@users.noreply.github.com> Date: Tue, 7 Jan 2025 14:14:37 +0100 Subject: [PATCH 34/35] Fix spike detection for short spikes at the tail of the data. (#119637) * Fix spike detection for short spikes at the tail of the data. * Update docs/changelog/119637.yaml --- docs/changelog/119637.yaml | 5 +++++ .../xpack/ml/aggs/changepoint/SpikeAndDipDetector.java | 2 +- .../ml/aggs/changepoint/SpikeAndDipDetectorTests.java | 10 ++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 docs/changelog/119637.yaml diff --git a/docs/changelog/119637.yaml b/docs/changelog/119637.yaml new file mode 100644 index 0000000000000..c2fd6dc51f068 --- /dev/null +++ b/docs/changelog/119637.yaml @@ -0,0 +1,5 @@ +pr: 119637 +summary: Fix spike detection for short spikes at the tail of the data +area: Machine Learning +type: bug +issues: [] diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/aggs/changepoint/SpikeAndDipDetector.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/aggs/changepoint/SpikeAndDipDetector.java index 365ebe8562d6a..fa632f643ffdf 100644 --- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/aggs/changepoint/SpikeAndDipDetector.java +++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/aggs/changepoint/SpikeAndDipDetector.java @@ -58,7 +58,7 @@ private SpikeOrDip findSpikeOrDip(double[] values, int extent, boolean negate) { int maxEnd = Math.min(maxStart + extent, values.length); double maxSum = sum(values, maxStart, maxEnd, negate); for (int start = maxStart + 1; start <= argmax; start++) { - if (start + extent >= values.length) { + if (start + extent > values.length) { break; } double average = sum(values, start, start + extent, negate); diff --git a/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/aggs/changepoint/SpikeAndDipDetectorTests.java b/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/aggs/changepoint/SpikeAndDipDetectorTests.java index b21a7c4625e83..c80cfffbd7328 100644 --- a/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/aggs/changepoint/SpikeAndDipDetectorTests.java +++ b/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/aggs/changepoint/SpikeAndDipDetectorTests.java @@ -184,4 +184,14 @@ public void testMissingBuckets() { assertThat(change, instanceOf(ChangeType.Spike.class)); assertThat(change.changePoint(), equalTo(10)); } + + public void testSpikeAtTail() { + MlAggsHelper.DoubleBucketValues bucketValues = new MlAggsHelper.DoubleBucketValues( + null, + new double[] { 2, 2, 2, 2, 3, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 9, 8 } + ); + ChangeType change = new SpikeAndDipDetector(bucketValues).detect(0.01); + assertThat(change, instanceOf(ChangeType.Spike.class)); + assertThat(change.changePoint(), equalTo(27)); + } } From 45383c871c8b83b332c1df873d2f7c7da546655c Mon Sep 17 00:00:00 2001 From: Jim Ferenczi Date: Tue, 7 Jan 2025 13:33:03 +0000 Subject: [PATCH 35/35] Add support for highlighting the new format of the semantic text field (#119604) This change adapts the semantic highlighter to work with the new format introduced in #119183. Co-authored-by: Kathleen DeRusso --- .../highlight/DefaultHighlighter.java | 4 +- .../highlight/SemanticTextHighlighter.java | 128 +- .../SemanticTextHighlighterTests.java | 42 +- .../highlight/sample-doc-legacy.json.gz | Bin 0 -> 388105 bytes .../xpack/inference/highlight/sample-doc.json | 4310 ----------------- .../inference/highlight/sample-doc.json.gz | Bin 388098 -> 272830 bytes .../90_semantic_text_highlighter.yml | 13 +- .../90_semantic_text_highlighter_bwc.yml | 246 + 8 files changed, 377 insertions(+), 4366 deletions(-) create mode 100644 x-pack/plugin/inference/src/test/resources/org/elasticsearch/xpack/inference/highlight/sample-doc-legacy.json.gz delete mode 100644 x-pack/plugin/inference/src/test/resources/org/elasticsearch/xpack/inference/highlight/sample-doc.json create mode 100644 x-pack/plugin/inference/src/yamlRestTest/resources/rest-api-spec/test/inference/90_semantic_text_highlighter_bwc.yml diff --git a/server/src/main/java/org/elasticsearch/search/fetch/subphase/highlight/DefaultHighlighter.java b/server/src/main/java/org/elasticsearch/search/fetch/subphase/highlight/DefaultHighlighter.java index 75f8e5588761a..3b13cf475b258 100644 --- a/server/src/main/java/org/elasticsearch/search/fetch/subphase/highlight/DefaultHighlighter.java +++ b/server/src/main/java/org/elasticsearch/search/fetch/subphase/highlight/DefaultHighlighter.java @@ -227,7 +227,7 @@ protected static BreakIterator getBreakIterator(SearchHighlightContext.Field fie } } - protected static String convertFieldValue(MappedFieldType type, Object value) { + public static String convertFieldValue(MappedFieldType type, Object value) { if (value instanceof BytesRef) { return type.valueForDisplay(value).toString(); } else { @@ -235,7 +235,7 @@ protected static String convertFieldValue(MappedFieldType type, Object value) { } } - protected static String mergeFieldValues(List fieldValues, char valuesSeparator) { + public static String mergeFieldValues(List fieldValues, char valuesSeparator) { // postings highlighter accepts all values in a single string, as offsets etc. need to match with content // loaded from stored fields, we merge all values using a proper separator String rawValue = Strings.collectionToDelimitedString(fieldValues, String.valueOf(valuesSeparator)); diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/highlight/SemanticTextHighlighter.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/highlight/SemanticTextHighlighter.java index cd3cde65e12ea..ae8997dd8c1f0 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/highlight/SemanticTextHighlighter.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/highlight/SemanticTextHighlighter.java @@ -26,20 +26,31 @@ import org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper.DenseVectorFieldType; import org.elasticsearch.index.mapper.vectors.SparseVectorFieldMapper.SparseVectorFieldType; import org.elasticsearch.index.query.SearchExecutionContext; +import org.elasticsearch.search.fetch.FetchSubPhase; +import org.elasticsearch.search.fetch.subphase.highlight.DefaultHighlighter; import org.elasticsearch.search.fetch.subphase.highlight.FieldHighlightContext; import org.elasticsearch.search.fetch.subphase.highlight.HighlightField; +import org.elasticsearch.search.fetch.subphase.highlight.HighlightUtils; import org.elasticsearch.search.fetch.subphase.highlight.Highlighter; import org.elasticsearch.search.vectors.VectorData; import org.elasticsearch.xpack.core.ml.search.SparseVectorQueryWrapper; +import org.elasticsearch.xpack.inference.mapper.OffsetSourceField; +import org.elasticsearch.xpack.inference.mapper.OffsetSourceFieldMapper; import org.elasticsearch.xpack.inference.mapper.SemanticTextField; import org.elasticsearch.xpack.inference.mapper.SemanticTextFieldMapper; +import org.elasticsearch.xpack.inference.mapper.SemanticTextFieldMapper.SemanticTextFieldType; import java.io.IOException; +import java.io.UncheckedIOException; import java.util.ArrayList; import java.util.Comparator; +import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.function.Function; + +import static org.elasticsearch.lucene.search.uhighlight.CustomUnifiedHighlighter.MULTIVAL_SEP_CHAR; /** * A {@link Highlighter} designed for the {@link SemanticTextFieldMapper}. @@ -49,20 +60,19 @@ public class SemanticTextHighlighter implements Highlighter { public static final String NAME = "semantic"; - private record OffsetAndScore(int offset, float score) {} + private record OffsetAndScore(int index, OffsetSourceFieldMapper.OffsetSource offset, float score) {} @Override public boolean canHighlight(MappedFieldType fieldType) { - if (fieldType instanceof SemanticTextFieldMapper.SemanticTextFieldType semanticTextFieldType) { - // TODO: Implement highlighting when using inference metadata fields - return semanticTextFieldType.useLegacyFormat(); - } - return false; + return fieldType instanceof SemanticTextFieldType; } @Override public HighlightField highlight(FieldHighlightContext fieldContext) throws IOException { - SemanticTextFieldMapper.SemanticTextFieldType fieldType = (SemanticTextFieldMapper.SemanticTextFieldType) fieldContext.fieldType; + if (canHighlight(fieldContext.fieldType) == false) { + return null; + } + SemanticTextFieldType fieldType = (SemanticTextFieldType) fieldContext.fieldType; if (fieldType.getEmbeddingsField() == null) { // nothing indexed yet return null; @@ -105,28 +115,36 @@ public HighlightField highlight(FieldHighlightContext fieldContext) throws IOExc int size = Math.min(chunks.size(), numberOfFragments); if (fieldContext.field.fieldOptions().scoreOrdered() == false) { chunks = chunks.subList(0, size); - chunks.sort(Comparator.comparingInt(c -> c.offset)); + chunks.sort(Comparator.comparingInt(c -> c.index)); } Text[] snippets = new Text[size]; - List> nestedSources = XContentMapValues.extractNestedSources( - fieldType.getChunksField().fullPath(), - fieldContext.hitContext.source().source() - ); + final Function offsetToContent; + if (fieldType.useLegacyFormat()) { + List> nestedSources = XContentMapValues.extractNestedSources( + fieldType.getChunksField().fullPath(), + fieldContext.hitContext.source().source() + ); + offsetToContent = entry -> getContentFromLegacyNestedSources(fieldType.name(), entry, nestedSources); + } else { + Map fieldToContent = new HashMap<>(); + offsetToContent = entry -> { + String content = fieldToContent.computeIfAbsent(entry.offset().field(), key -> { + try { + return extractFieldContent( + fieldContext.context.getSearchExecutionContext(), + fieldContext.hitContext, + entry.offset.field() + ); + } catch (IOException e) { + throw new UncheckedIOException("Error extracting field content from field " + entry.offset.field(), e); + } + }); + return content.substring(entry.offset().start(), entry.offset().end()); + }; + } for (int i = 0; i < size; i++) { var chunk = chunks.get(i); - if (nestedSources.size() <= chunk.offset) { - throw new IllegalStateException( - String.format( - Locale.ROOT, - "Invalid content detected for field [%s]: the chunks size is [%d], " - + "but a reference to offset [%d] was found in the result.", - fieldType.name(), - nestedSources.size(), - chunk.offset - ) - ); - } - String content = (String) nestedSources.get(chunk.offset).get(SemanticTextField.CHUNKED_TEXT_FIELD); + String content = offsetToContent.apply(chunk); if (content == null) { throw new IllegalStateException( String.format( @@ -143,10 +161,43 @@ public HighlightField highlight(FieldHighlightContext fieldContext) throws IOExc return new HighlightField(fieldContext.fieldName, snippets); } + private String extractFieldContent(SearchExecutionContext searchContext, FetchSubPhase.HitContext hitContext, String sourceField) + throws IOException { + var sourceFieldType = searchContext.getMappingLookup().getFieldType(sourceField); + if (sourceFieldType == null) { + return null; + } + + var values = HighlightUtils.loadFieldValues(sourceFieldType, searchContext, hitContext) + .stream() + .map((s) -> DefaultHighlighter.convertFieldValue(sourceFieldType, s)) + .toList(); + if (values.size() == 0) { + return null; + } + return DefaultHighlighter.mergeFieldValues(values, MULTIVAL_SEP_CHAR); + } + + private String getContentFromLegacyNestedSources(String fieldName, OffsetAndScore cand, List> nestedSources) { + if (nestedSources.size() <= cand.index) { + throw new IllegalStateException( + String.format( + Locale.ROOT, + "Invalid content detected for field [%s]: the chunks size is [%d], " + + "but a reference to offset [%d] was found in the result.", + fieldName, + nestedSources.size(), + cand.index + ) + ); + } + return (String) nestedSources.get(cand.index).get(SemanticTextField.CHUNKED_TEXT_FIELD); + } + private List extractOffsetAndScores( SearchExecutionContext context, LeafReader reader, - SemanticTextFieldMapper.SemanticTextFieldType fieldType, + SemanticTextFieldType fieldType, int docId, List leafQueries ) throws IOException { @@ -164,10 +215,31 @@ private List extractOffsetAndScores( } else if (scorer.iterator().nextDoc() == DocIdSetIterator.NO_MORE_DOCS) { return List.of(); } + + OffsetSourceField.OffsetSourceLoader offsetReader = null; + if (fieldType.useLegacyFormat() == false) { + var terms = reader.terms(fieldType.getOffsetsField().fullPath()); + if (terms == null) { + // The field is empty + return List.of(); + } + offsetReader = OffsetSourceField.loader(terms); + } + List results = new ArrayList<>(); - int offset = 0; + int index = 0; while (scorer.docID() < docId) { - results.add(new OffsetAndScore(offset++, scorer.score())); + if (offsetReader != null) { + var offset = offsetReader.advanceTo(scorer.docID()); + if (offset == null) { + throw new IllegalStateException( + "Cannot highlight field [" + fieldType.name() + "], missing offsets for doc [" + docId + "]" + ); + } + results.add(new OffsetAndScore(index++, offset, scorer.score())); + } else { + results.add(new OffsetAndScore(index++, null, scorer.score())); + } if (scorer.iterator().nextDoc() == DocIdSetIterator.NO_MORE_DOCS) { break; } diff --git a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/highlight/SemanticTextHighlighterTests.java b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/highlight/SemanticTextHighlighterTests.java index 20119bf933e14..b808dce4f9750 100644 --- a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/highlight/SemanticTextHighlighterTests.java +++ b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/highlight/SemanticTextHighlighterTests.java @@ -7,6 +7,8 @@ package org.elasticsearch.xpack.inference.highlight; +import com.carrotsearch.randomizedtesting.annotations.ParametersFactory; + import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.index.DirectoryReader; import org.apache.lucene.index.IndexWriterConfig; @@ -51,7 +53,6 @@ import org.elasticsearch.xpack.core.ml.search.WeightedToken; import org.elasticsearch.xpack.inference.InferencePlugin; import org.elasticsearch.xpack.inference.mapper.SemanticTextFieldMapper; -import org.junit.Before; import org.mockito.Mockito; import java.io.IOException; @@ -71,31 +72,35 @@ public class SemanticTextHighlighterTests extends MapperServiceTestCase { private static final String SEMANTIC_FIELD_E5 = "body-e5"; private static final String SEMANTIC_FIELD_ELSER = "body-elser"; - private Map queries; + private final boolean useLegacyFormat; + private final Map queries; - @Override - protected Collection getPlugins() { - return List.of(new InferencePlugin(Settings.EMPTY)); + public SemanticTextHighlighterTests(boolean useLegacyFormat) throws IOException { + this.useLegacyFormat = useLegacyFormat; + var input = Streams.readFully(SemanticTextHighlighterTests.class.getResourceAsStream("queries.json")); + this.queries = XContentHelper.convertToMap(input, false, XContentType.JSON).v2(); + } + + @ParametersFactory + public static Iterable parameters() throws Exception { + return List.of(new Object[] { true }, new Object[] { false }); } @Override - @Before - public void setUp() throws Exception { - super.setUp(); - var input = Streams.readFully(SemanticTextHighlighterTests.class.getResourceAsStream("queries.json")); - this.queries = XContentHelper.convertToMap(input, false, XContentType.JSON).v2(); + protected Collection getPlugins() { + return List.of(new InferencePlugin(Settings.EMPTY)); } @SuppressWarnings("unchecked") public void testDenseVector() throws Exception { - var mapperService = createDefaultMapperService(); + var mapperService = createDefaultMapperService(useLegacyFormat); Map queryMap = (Map) queries.get("dense_vector_1"); float[] vector = readDenseVector(queryMap.get("embeddings")); var fieldType = (SemanticTextFieldMapper.SemanticTextFieldType) mapperService.mappingLookup().getFieldType(SEMANTIC_FIELD_E5); KnnVectorQueryBuilder knnQuery = new KnnVectorQueryBuilder(fieldType.getEmbeddingsField().fullPath(), vector, 10, 10, null, null); NestedQueryBuilder nestedQueryBuilder = new NestedQueryBuilder(fieldType.getChunksField().fullPath(), knnQuery, ScoreMode.Max); var shardRequest = createShardSearchRequest(nestedQueryBuilder); - var sourceToParse = new SourceToParse("0", readSampleDoc("sample-doc.json.gz"), XContentType.JSON); + var sourceToParse = new SourceToParse("0", readSampleDoc(useLegacyFormat), XContentType.JSON); String[] expectedScorePassages = ((List) queryMap.get("expected_by_score")).toArray(String[]::new); for (int i = 0; i < expectedScorePassages.length; i++) { @@ -124,7 +129,7 @@ public void testDenseVector() throws Exception { @SuppressWarnings("unchecked") public void testSparseVector() throws Exception { - var mapperService = createDefaultMapperService(); + var mapperService = createDefaultMapperService(useLegacyFormat); Map queryMap = (Map) queries.get("sparse_vector_1"); List tokens = readSparseVector(queryMap.get("embeddings")); var fieldType = (SemanticTextFieldMapper.SemanticTextFieldType) mapperService.mappingLookup().getFieldType(SEMANTIC_FIELD_ELSER); @@ -138,7 +143,7 @@ public void testSparseVector() throws Exception { ); NestedQueryBuilder nestedQueryBuilder = new NestedQueryBuilder(fieldType.getChunksField().fullPath(), sparseQuery, ScoreMode.Max); var shardRequest = createShardSearchRequest(nestedQueryBuilder); - var sourceToParse = new SourceToParse("0", readSampleDoc("sample-doc.json.gz"), XContentType.JSON); + var sourceToParse = new SourceToParse("0", readSampleDoc(useLegacyFormat), XContentType.JSON); String[] expectedScorePassages = ((List) queryMap.get("expected_by_score")).toArray(String[]::new); for (int i = 0; i < expectedScorePassages.length; i++) { @@ -165,9 +170,11 @@ public void testSparseVector() throws Exception { ); } - private MapperService createDefaultMapperService() throws IOException { + private MapperService createDefaultMapperService(boolean useLegacyFormat) throws IOException { var mappings = Streams.readFully(SemanticTextHighlighterTests.class.getResourceAsStream("mappings.json")); - var settings = Settings.builder().put(InferenceMetadataFieldsMapper.USE_LEGACY_SEMANTIC_TEXT_FORMAT.getKey(), true).build(); + var settings = Settings.builder() + .put(InferenceMetadataFieldsMapper.USE_LEGACY_SEMANTIC_TEXT_FORMAT.getKey(), useLegacyFormat) + .build(); return createMapperService(settings, mappings.utf8ToString()); } @@ -282,7 +289,8 @@ private ShardSearchRequest createShardSearchRequest(QueryBuilder queryBuilder) { return new ShardSearchRequest(OriginalIndices.NONE, request, new ShardId("index", "index", 0), 0, 1, AliasFilter.EMPTY, 1, 0, null); } - private BytesReference readSampleDoc(String fileName) throws IOException { + private BytesReference readSampleDoc(boolean useLegacyFormat) throws IOException { + String fileName = useLegacyFormat ? "sample-doc-legacy.json.gz" : "sample-doc.json.gz"; try (var in = new GZIPInputStream(SemanticTextHighlighterTests.class.getResourceAsStream(fileName))) { return new BytesArray(new BytesRef(in.readAllBytes())); } diff --git a/x-pack/plugin/inference/src/test/resources/org/elasticsearch/xpack/inference/highlight/sample-doc-legacy.json.gz b/x-pack/plugin/inference/src/test/resources/org/elasticsearch/xpack/inference/highlight/sample-doc-legacy.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..8e6a6dd0a72a5e7e5b9604b3a3e115c171197f86 GIT binary patch literal 388105 zcmV(^K-Iq=iwFou^I~TJ19M?*aBO8QWN%|FY-ML*V|gxWb8l_{?7hp5ELWBtIPb6U zW^{q15ck5~kJ5-_GBa7qOtO>tkf0O_7VZ`i#_R6pY36=|Q9=RLJ=3Ho)q@_^OjSVl zOkYs!FR3r-wa(ec%-okLqJ0X25XaVpx_5Uo3eDl!l_muhMx8MFx@!P1#Hs`_q^zw{V((JywjO_IzKk=Jy zKDBig-@6_>V^q1CR~Pcz&1c(fKe#DB_g-MjmC@lBUmeda-t)vcr}%mEd#=J4?7Ynv zT=QXfN_Cj^*+G2=@|cnZf_)iShzNc>4%mOTIaYq9U$ur+@E9KZ@f5?K*m0%heOTt+DUwJj!GMxkQ6R z8rQcg=++N?V2_T^dgpZVaKHtDe64M2Du%vemgG+oNr}S--=v@ zhsN45rJ3xXfB)NG{hR;b+i^hDwG73iWO$*xjxw2As)fFphj1d#c=3&CoaV`gPg%eI zi?}E-`M2M3*!$Kfk8(LjsIFLZT*T?^E2u2Ae&y$NS>iL-j>*vkvZTtA+qqb10bZ=C zQtY7B^EMn9d6^_hDV;G*&5PhXkWbyUet^eU>C;O&vh`ATis z+S4jY3OQbfes|eUn;^rX5LeahppVU=vv!;Zx=Z>;-&$bx;3B-;0$$NKku;9$SPnNo z8e1=umslF2Y?z{LB00_#S%=Nx`zUMnTF|s61>Nvgqjw<)9c<$|dAH0@o?bv9QjMV7#Mw3YJnXz`? z7FC8@23rC#~v;$JXsOyL9`r2^1LY+fl$i_T5a& zB+kqHb_em$@?VP6KdEGw?wjM&rFpVmVoB7oTzP+Hjnts)+rb>Vt$hGieyY0Rp*dM| zj)9U>qG|K?Zl2$k43x?QvOQ z*-Iya^=v|1lKJg|J+#oWPW_%Iu*pFKNu@t9YcB_XYNZ$xjLWSERldJ!k3pu$pttI{ zbapMzG#cu9_dKu6^o75tt8EE}b2EyQ>n~Cut`Apb6A> zHX13-gxfWiK>xAk7zeam&o6DW51)ejuBc?joSo9|O{B!9h^p`XCtdw#aSen=#1+huTbb^-gJEtrFKixkwz&P8GbW}R4<>>^jpcKo&scL(Rke)A z!(e7zM7t@0X{$HZ!7IYub~L%D&P8L#)V#9=5aT@=7K!Mv*mbR)=rI)gIuRq%X`$0& zurYOhlE~&SE^91h(T4BtQfuZrQc;$@8ET(WMleKWox%L`%}|wbX~{Chr&>F{Q?xSY z*0Oe-wW%1Av|jA}c@1U!b|~-e5^F7@6rXUrFv4%K#C3R{8f(t5L1HDmnK=zb(- z^r<<9%MRBy>{z*I#uNQIrhGsqj@7<1UzCZ!_^L~p2q>?YqxU&LC`qE4mf(%lC)Ucz zPH!7`SS!9g&a<-2R=)P!(P!_4BB+H$Dtb2EA~t4G0c}eiBRJf`MubR&+et2!X0Tz! z`HK5hROF$v<~YagD96@A|Gl+Gbs5Y3-|SDY8B9;-<)5bFAEFL2>4cEM+{rJUV5zsaumw~9&N@JefO5O&SkuQGgUT$ZvQOyiGIOsSf#4-17F zx=58{Ym1MnKkkA^g3GanPO@&qhg}726Dpyo=FR&iG-KlAe%vjZhqEWFrk~ze47s)oS(a4_vYa;c68L+&*-7|K?MKquNeZepS|6D z4Qs4*kuE41(f#E8|9IStmj`rsGro@J_TXFm=l$}Be}F=N@B2J%a%g^x&iN3>sezt# ze8Ljg?C|ZcZ#Q3^L)>TN3Yt6U>;ilK+{;b#h>v&jzw9x6FPmRd?k&D}Xg9md=2!i& z3r|e4^YipP8|%$z!L6%UUWfn&;r?=_<972GSO6io1Z8~nLtK<3&fhNLeTz_^3nz}y z92;D~515l_W_>sO2U-wr`elFI`?>aR?CZ{+pBsEmyKOrz3jY1u#q)nNt(?zZ8jQvH z1s0FRUZw@;BX$fiG4N-$m0x_r_PIN^+w*0>;)0>O!(I9gtBddXMSpoewDY^GxAiosN?^JcphCQD@q%8 z@<%S9h8t7V^t(Guv2RZDSmI%}b)7(3L(vys-`(Bb0&01hsbBQ&4lByHXJs6T2QM77 zUIaR0ExN0Tm_(5jqNgoR0wqM&h|l(mF8-PZE$Q0OtXVtWib-wZWOt*_}ChCo^tsVs{rxCDVDsv>a+ z`j7Pju;5}D&wjARBu~|K>&`SU5XE&YAJ|RjfD?);+9bNR>={tuQ+dP`%7tQFmEv`E zSD|l*0UL?e^vT`kCcv1LIE*e2PC=>bC}E88rrAzbFH%+9d*W-K?lUh1^;K^pfLHpLm!osE6fds7+f5=xXKufBGMLK>mS&{}gi~?61kS8j z4jfZvyhK)U$kY<{t+0Y&lzqS(MW-3|?(JyZ-L;_|2BEq>Fk0p($Hy13`WVqX#mrzr zm3k;Y+wEc^*rF02{EkYPYcJ{orj)pbLr?*Gt0-#uJ$gw{kQaf;0n_C65maw|dtR;v zKXAlY7&Om$3fb4v@YeW^NPBcD5_+|4LUT3@F_X0GclZT zkwn%CMKKp&)XD2cUL-GLIf{a=X%bKu#4C7>7swfhNySQBIO8qQXMDD=oDke$qIHUm=#VatFd3ydjfsWBBu05s89cK5!%lP zfGEV3undD_PUV!ZX=o&QfufA^NIbBUL1aR>U^T2{_M#V|?pn&QOu>{a!=BPzbp`my z&|C3o%y?*+KVbuJjS_yX@fw*T_xkS58wl=Wt<>#TEp^t-3Cul7T3_@ z<;Iz?M7XbTN3Xly>ZNI*F*B>1%*E}cO+U`WJuCdajgXfr4y@*sClx8YG~y%L9jfn=>NEH0)1 z?A)h;o7SWvtT6dx9zZs7bcI9bz5U>2I4|W9SIg$nVlY9Du*_g$uZg; z-xKl`LfaLzYU%90+wZ5qb+R_5?-yvxB!%)_sP1hL432o7Y4o%;#X3o0bXFRqT7UqP z6h^w@OL6nRZ$n_aPHQ;<&dv9oHN$X?WM=7hwDvT~N?E{Hkq~MhSt0>FrxAqV#4x0l zgp%9i`)=rubc5SjltkDOYE3v*rVH_HJggFRsCORaAQ7wni8Hx*AigI=orwX`X#8`# z@3#Hv91K>7WjfD`&~J@djAUI>d7Jc^xGGEN_P1T05g`zWlUQT4nCsIt*|7_x3$h7E z!2w!N2t?J*3zsvrvqJj$#F)|?rj5&_6q#K+c2CC{Vi4t7siCDqurlKacV(5! zW9HaYU6(~AV8jJV6cYJLw!n;rcOn@z&Kr@`^u&l;HIdD@3|eb;B2>iN z?`(qd?jYJa4%Z=NsNQv~AgKO0o`(f&GJ$;`UK9t&T%GG<0#6n1vRV zFsf^D?0GG2ib>~n9;+oV!FwSkzqy22_eF zc5e5rvlhKjPH>M#N$F7!dntn}QUxnaLfC|f9T&I& zn&FXLQOoEst{5CmvQME+8Cs1is;<>sd*r(U&@ZAJ2gjG3IWwAw2744|f(PFBHZbT0 zW54SN1usHFn0rk87o7p?Bb+F4C29u!Wg&PRWw;d81;4!v%@jVyKB{RysPPb)01rsH zcXtE_q&;rABoa$(vjCGMf$F?728mZ|OAQ?qTaUN$v-j-}3l`|NUlhWT}V zor1&juUo7#ADDHY)eP@ieB$&AAC!CS`!jBY{RUIZY}lxT?12X_l?U6{dG@25hMFJ z#FlTcsP~LX;E{Dd4JQL$n{O}7#n^nke?6SKt&LY)resB3 z?{;ruril6smd)p15YU3}>n`YJ(~ix+;rqqq+-^Ip5%<8ZAJBzQKIUJ~T@z3hzODQC z(}0^G%p5;IQ}^{zZ2S2H^vLH7({Nr@f zc%c|}x1dqC0kn(b1`3bpA`-5wovy8JLf+XX5J4-FK-vpWL@$shbVlAz3QtAfo)W1o zHjow=}0TY`7sCNVULzoCbl{IX)$89iUs&gMb5XEMV!a0Lp7QJ zW8fmN$UZJ{RFvZDAE~JL_B@NT=)+kmWsX&qNZ6xsilUduicE33tUAm#&E#Oh0=nQ)fsEfqe{WS`;e?$)hkBm-CgK>PKSd; zP`k&*ni=H3ZJq))=vbU-!rU^}QV;|!qhq?0NtCfh(CmP-AbrY^vn==kGmAWXh0M}( z2qhLtUEmPYjF13eDU!TU2j39BA&$ygf&pH`_5x9z$SCb*3(yJWWRW}p_jhUS7$>=EsNdKZq=iG*h#%A(OL-a> znjwj=d+MfueNqY>gI0+(V-#03lqL8ehSefYw!#h(a;Y-LYh}ikUJx%vg-QX16XMW?;-MhO?fl#}yFXr< zVG2;-N}!G{2jbqKdzp`ADse{0M9$JUk5&>lXg7I*q=pe8YiPSPG`(O{=he!ofZ+`( z?8LLB;#>R9*=kNA#omg=lU4B%i1j;EpLiE0GA) zRbDe;&t)k-aBGB(Cx^%!;Yw*gtb`?O$OxHM<_%}UdjVW#Lpf#R_V(Ilc>N*(ot!s~dAliY6t6>^YvsW?du&uM9B^u$4l9InPSP=#HnLTO>tR zW~KOjN9Qv#3EaDpm}@hF21+9Kvt)bDL7*h77<<;NqX~+eWO*883S_@ZM#g!MJ*_Mc zQEBbiOO>4XZqtV+q?&X;0Z*|Yt6V^D4_j-*idA#7CtHzyWC|4`7kzqyQzi@yDYJ*i zW!XT&z^^hnYtAr6?Xbt`nxz{0+4Yx){gn0%Lr6dl?D-GJnJX;8O!nJ@ca)n*QpIwFI=d@mc4M8Uq79Gdej9SP z%LwZ5?P7!KV%A|?B!opOHfcJ6LLN2@ay@6CpyW&fDGq!AbObC9Y|s@(g((n82TT%a zK1CODpK*xBg(yIWww;jBaYT%9B0e#6;oYQ+MRk=Vm3%Lq#MWNmgi(9CIfnMUu2R8R zz4RfBUEzw)6?+TYBv=nHF{@f(DKic+!bjj8qWuu4?58y<>12^JB=}fD>=(vlsae)T z^AOrorP+FUZihKGTq;l^vO_2;Nj?#;KqclJQGzz`|0z0V*mtu64vD0$C2rropH^Q~ zNmH>;e(j~6>*Bc^1a zPon-2D&g4Kon;rh*Mz2g7pDHIBhsdx8E`&ib`BO*zHyR<(q6F^e>My|Nn8HpZM@5fAMSH zIh#{Ebp6iJ-16fX_jFmg6WQ(5wITGKPx}Q8Hp}CNOnZ3;<>1{9|Cek08PCQ0&C4^c z){T2RdVd;P>w4R{$UKvV4(!Y$Za>ed+wRZZb~E(-dGoLKeB>L94NtH3<4+w`trJDl zxpytiFh1XJ#usRTAAhTyP^RYj^9yYkbp)Iga5A?C!P}%<5=6#2e z`ANHP@NL8#U|J5%t9`=yNHIX?hGUDD?a)OG#pbj9BV)`z@Ata^g0KlVhw;HoeC!r( z^A6Vg#~fbw-&_I>_15v@doE$BY|Y?vn#1P!Jrwt6e)#L-Bi_8nC*03JDgealesHyEg) zee>^_eE*B)@X!utQhDQz{KkG0I7g;w4KeGF#}np%#*D;_o$_My zBFa{>n0dhYb|~bk;Nk791zJ_5#LNtd9ZEYD6Tq^O8JkerxS;(raLzc3rd}ARAtu;Y)W#`DXna?2cSDzB#WnL^d7fCQ_~tA)V}4@gi;C`=3(uy9o3e-y9;dQ%&Vz$aZ#Apk5v1WW3u8;*z+2?TQIvjrZe?M zFI_b-Bcp{p|fG5pGqg>&!PgpZvsTa20PkD@?aC+*@0g&MKu53pDv z!?yx;>nvLqZQ?_@iLF9JJ)q-u+L;-X78JKNndBw}RY*S5-AA@m7?)56UVg_E6^$hl zwWJj%K~Jt+6x}fKN2f)i6h5ZudlBe7N?P0O+wYrc^Wv~(q(~^~gNu_KJ(b*v`$coE zeBpLXnFL2u9h3ASOu4%;3H4MpoEWCdm5BViW1vbTEl8D%jcQ?K4&It8IZ)7I|pnvk)J`(4i{EDCGR5)A<0I1lmSl?8UI)_1ikauKyq(9x1hCCAQPbyG2+>Amp`51uF2wUn-k@4!Xn_KX znOeA_2P`;%NuiU!;xADZlgvXf555s9e6D4no@Q2K(qf1L z=-uEZ0u4D;Pu6MZ-_M-3Ijgp4X#y6<*mZMKXins%Y~%%S0um*mk9ui8S>`V866S;o z%w_1q6UeWvwU`))3<3!YWXRkuK`asdmW3Len4Zo|#)!(Z0<7An*VB}5ONIo6sCVzX ziO4y{Mi9MqrtyFP)Ce8@@0?UURw*2q8Hs0}+i|mHLUf?bb;PKaGRH!bjx4reS;`;&A%y8* zf9)=~9A87V%jUT04vw&kL6E^$*z}C5i&~If=ij^YS*ZtxIo#c{Ar4^Nd@}Yv)bz;k zCy9wI4D;0kjtjiw8}hJ?mwn@7od-wLVf?TRWI$;+j*HNq3%M~)dHmz09j-?9^JeT^ zp#jz^w@V74)s1aH!K$W2;tCAT$R?x z%bvlg@W(l(d%yX^N9#e|KYVl_V#^kVf!q&&zimHtEYV@~8O(wzg6SL=l_(pA%J}pL z7-tMyVw>zO)3`aioMRV~J#L!A>AADN+VFk;>iW?_z`FE%hLh0||J7f*EoUs+VFac) zu*)qM-|Y@8#<;=@U|6N@osnz<=$lxbB%U zJN@|4~a75{m=B?cgtCPw+Ng6vUQ5W6Ay^p>#-Tn*km*x=TIl7ER<(Il7Mh2d_Fn&k;gjD0X5!m6od zRZ8z3jr_(HUCjh)J+?k(la{!6Md3VzbWd_dXkcoQathOeXl!vggrwG#rQKG-mHqpV ze8JU%b<5Q9ux#I?j;cstXc*i}$eArG)kE*@4vmph({Qhpi?y?otxP(S&s!FZg-H^r zX}5^X)yxQ1UQq9-WZ;nC)(?kknQ^Njj=Q_(E(8Wi>L;^r1!oC~UQf5NxAV6$yi+hb zhC-VO`{E%~qm5~$uMnh}CyN2SWF?p!h(KA+mdHIR2jWfzFAypBj42vUU90N~Mv9v7 zy?M*(GE)q)*G7DML8duz5ruom%i!2ZG@}1NRl*BUsbAsdJ51@liI!Wm5L3;#t&%r) zAvKsNYb_tM471fy%G@{!H9%=`?NwbzTJ|~AV66CtR8J48R9>KDv_(+$LAUZU1&n}N zmeCxitMbYf?!H|Ii?C3|tbQ@AucL)2$wVbdnc9xEm-$N8Pk1!fA?hCqs0E5igFv-{d%8)COPx!Zp<2+a~?;yHeB+PewhycPkcE&28&NtIvLTfAO?896fV z+ld^kh$>eyV`U3Z0?FEEP63jFPM&CmkKY!S%L_|olTmZ`?ImkZXc_nC%V7AD97``& zjcv{`$yr2eB~K{$YI9b+6-Vgoh0K$@P!E$glT3i~pqHAN0A408<3x_@DT0&7#cE-+ zIe-Jjq^LB3b_zqM(A$2T$DCxfT1gPfQyaP%r4mEByW3ivJt7&z3KZ@TnpYA&I`6bF z37in(Hh=LJwUZ!6v4$GQQ=oZ-+L5eyC8t`6Oc1WsA3WR5CY2_o5@h;w#^Tf^X?x{v znG>Rml+Zlk30QyzNMTSa1?|GMi7%~~gSDnkTV2yECkwvB4tes2w~$j(QXUrN#4~~m zG(Y$TK#;;-%OzAwyV=^I3g|Vr09a*28!7=OxABxb%%GrN_q%S~_U|X{DPz97q6oAO zcAT+njC^?$YKJo_n`@olzzC8>Rkc#DWlF|@nHVuM<@QQk);dY6!cpVi&QEX%m=L$7 z2rXd|DQ@^!D@D&i#Wh;F>^0*rg~UmNN}QFV?D`bIdq}iBuFy%VmvZ zA<-L=fxB)h%ne&tiJuQlJP)U78Yhg9YdCj~Dq~qzxt5vwt{ubTj^l{b5i9r3l-LcM zyp{K{9KDtuXsa#|G1tO%< zJl|7r$(u-;r&?ASx7!MjJpb?K0EUq$v z-8kR52}C%sG|k<|DZEHT7CG^11-H7%;K)!G_tEtwoO|R`qxkbx~4Izm0KE4 zqDkOdO=Jhy(vK@*4nz%|Gsa80J_J#4g%0tI(&A-%ovMiwqx^vyWG0c+IH1?c(-`ca zfErS)K;DM{0fAnyl6Epeck}Ie4V6mz_!9Dt(aw| zuyd7xL)C9rKS$!;OE@*_Yr*=LTloqk5yv%2fNAu7rg8%$t3QAiEkK=z7MU}Qd~>Lv1u#YR?YjTlP7OW`G~vb(S;Y6j%hRJkyxh@Em+xFc)D0 zD<6hWt~3$cz*K`&U!UMTROvO3@d|g7mKZ(p@?23F#8JdlOa&xE*?R1z+T>-mb^2B5hZ8eY71BdNs0&(WDL(4_`zZ}8y|9brSv&F-id%MGh;5lhs zDlcwK4@tTAVR09WZvysa(;W`olaaqayv|Q@k$yuD9T$ifcF)mdcP;t}W2xPqjbt0< z;qmR}r%^&f&dCxRzOs^XZbm4cMkLP#C4b$>A50~?VoEf29p4+Ex zJAntb?LYm^|L$-q%(D0T_P99>jyQx*^eo_RxK8eHeBuvC2{2zqeC>GIZrgEu#BlA} zM{;Hah{(5H`_#^S44+h0{!f4Nw^dbqdha;kJr2VmScv!df)?UJ9Ea4|eZ2c`{O0Rj z?`vUuGI`e*4kP*z76d^uHp~r%bV|W*NMtlG5RZiMfFm~s6soJzKhMVh=a;8v|I7Q^ zzHw%Ma(OqwUu@<-* z{U#_-_cI2?<4gRRgbfll+%#hWiMDSX&%*-M=2-S=32ZDkAxv+m1c1qMMb`}iwdnQj z266fOP_fhd&2Fa8aFkp8i64XCef8D-=9dlHx9-Q^dSuwcH8$yfr3bA|Qxd&nGEgTYVIXOBb=c{Yb(eBOKP+xdl6&s}F7B+ml@ z9R&cMHST#|Y(Cz>?AkQL;bTrH8$6!KQ=K@>8dvaZJGMsg>RYaP78PsR#pjS_O$yi*BD|@%c|kjBjaB)bVP;@^=W?SPq=Ynl z%ES9;x7kOQXio_3t(Iwd;xPZCNX)opZFRgLmhXGt1;yTFvq#FphUuM(muoH8XB?}p z73xZ)20K6CBTIx&m3VR&NC3$1t8`^N#C&tY0!5nSa0sm|uX(E~@xJoy)REMMxx_#) zwMMXHQ^29FYN+qZxb3f5FG4hyIKFlv?opGeS@R~ZwP9v3|Bh{VgklCVRtOzuz0C_^<%x&AszMv|=9Tn^FdAu9 zL>m6XnX!C+#-wJo>B86GXvoEoKKT32Bv`*z;4|NM?|pMzrilPYmhb>9ZI&O^knGj~ zIIJI=i<`=V5G9#el=gC_?azq@TPar@oQ32b)6&^56KaKN%ZkNV*4HgD;VZ2Au`$eH z)wAH*>IfM81~yq;uP_=+xRj_Sy{Fnx*R}9UoO5L^w(70Nhm;KPAxU@=Zz-;eEO7oJd%p+qowS2(UbV{)d1r2NX7FgaNjX&V0( z1~Sh|p7vUfW zId0Et5gPhmVkmPK!`A$^nUoy@^dH`OuI9iSdbmajI>+v^y1-Ye_i=$RWMEZsGd?%i zjy0AM&K1l_*N3&^z^^3FJx+{lH7ltd$c+rc>*>-w%>)yf)^uN#rzeU^iLv{DAIi$Q z5?wd8V#rX#$nPs`2eZGIX@GSl;}9H0CKH!h%*KqViRA*DT~+?8lQoO06{P*_{xYF5 z&6TRRZT1t&CBxLpH(hyRv#2bKN>=d|@G8n<%+v=C$?bwU-$9$jT$)fdDeGy}df_g7 zq-n+S&mZPQzl6`dzNl)X7PId{J zE(35$UDib+8~8DhK07wwTB2f0%v-{Aa7`e%CayQN9$q1?z#b_KoSHKnCj z7Jy~u^XfCMDJaScQzvtO6GKg~d$LjhN&ZPDQRJy|l*}O6q~zT$y4W>J1BdiVyz2(+ zkw>MTp(p3fGl`VEReH*X+yjg~CP)Ns!8Sa}<(yTnkgSA}E>UXl1T%>&O|?+&|L7Z2 zLNqkrWC>(q9fDL%u>}M&!BGIyQ`WXQkxd3l$qG2dEAF-$QVdKaSf?c%iU7t)9aV80 zup9|_=HxWC`@=*SeU`WEF7EKJdrB)~i z>29vNKvt;{K4%@o1y-LLm@Y&zhQMB2uuQ#J!q+Iy821Q^z^&c`a{+;>(4rUDP}?|% z(YZn60!AT}xbUO9jbZ0TMisd^#aA}2bcTJ|) zQkHyB{k>3Clxd~K0392R;Xt!vgd_Zp+}E;-lG%MN=Du@xm9TH zgpcPTt9AS=zUW0*Ei2aKm!}4EF;2h@$6zR2KD&#N%g_d1VPFfPBQKN^=Ov&0{rfI7 z<7`srZF?pG_?|pBCg+@vx&kfa=!FtkH?``-56$~#2qg}1@$)7W-~WCp4na7$CX6hY zYomnfrs@aKRiJQAh^2%ao4Sq;L{ma!g4mM(<;<*1DRUW1n|DvYCa(`=6Ii;tfB0)L)*;S)#B<~T;i z&Cf|6GJd)lTG!}1a(?MId={_jiB7O!yzXlJND@dE~942F{vohf{0w#1(iX%G$!) zUmXp*a28C#Gp^6m<}+93=`u1fPJpog$Y1oA_atdCE1GlYbfw*bG5?9>7|!Q z#c{5*K)=HM=BatV!2WQZ`98nk!^UZ`#<;26RK)})Vya#E;R+0cE`;(I-Ogb>*y>gs z0YD=czXv^>8Wt5`D=S89SZ0*N`Pkr7Z0*&NBPDTEZ5(Bz=66HN{~R_`Xm2xapZk7K z(v_afMdu6Y8sD7TX3Nejrh3WfvcPHl_ULSst7<5YO~eV}6))kTHh7KaIQi0zgeU*P7`am#BCEanqa!?jmDCDufV4vX27VB=rv2fWw^N_)x`54%F1{}hI;@mo4 zw)MjgYN)z^VfzXnL-3Gy`+LmRv2o>4V8*pA#-wq_qN^LtZ#}ne)TN5KSgF?xc0d-CDADAzQ#TsmgS@Be(4S~ZV2Nmb$$+|u zSt3{T+7NAHJ3a7g^f(hqN|vXZ&oyz-z$Qy0!J{s&d6QyvSc{1Jf{8?ytPq*Rt{OWV zG5F%phFNLA5vcA;>)_|!3nVN%a?{Qv6#IQlREVgZ!KLepE|glkZU$UXqEzEyQDwcZ zS-ew&CFVY(+xMXVVX;7Xmvn*z>wM-rze z$vlflIe8Ew^&L?cSU_7~cxhO4)-kf;pPGk|@L{hk5j8Uzf&>s~}N-fqqB^1FX#2QjN*02j@8P$=7`ex0~OEJo%5kc7a z55c)nk~vgq!{#`0Nq&CCS%k=CiO1qgYV`!|(~IENU9noB zWBO($KNRwc1zISAHLLJ1r;|H@qGAw4@*J%bCX({*zwJU)&#j86dffNMp<5IzIwU^n z>w+8%8_AIs$C)+fWudifW)ue#=3fxd;xxyN++~Ijq zXyG0jD8AJpgJscNg|~C6Gn)5}S6FjWXifWFXRrkpf+}l;XD$NPd73kPdfSI7)$&M-9%E746Z>)rx*$eU~nMIV`d}@p^aJ=Ybtb7LWT@Hw4i6pgUm8$SfWZhFPXJt=2rP`=E5#1xzSy;T1(&zh4-VNjBeZ*|=VnwbK(-wH7*{a+?Q z5`lk?=ssnxs%(zui!~-|^~vdKpOmh&!qHdD&R7DMvDz>_vSbg_kGaMNfh3volL!D9+he74+7+xZb@k(Qk2rs-mmp?$1x7bT-cu|WDChzuX??A# z6yp-)iAlfp8Ub7e^@hr6(jHF!_N?rEAM^rX;wA_3H!5@euQziWmWmZw&v*K>Qc z5F=UpS8m>+oz;*uX11(c2-jiLlr`8@HxAVtDFFLR?RmNb0xYQ}%IgEAl!6R&bg|fB za5u-mFO#LQhTZS(3`Ky?(2|odv8@qbD#0bMH!k2bWyx9;Yu)Sv7K!*Oi9uZ<+7bfq zwaVUb3AKbU;wyIT63H!*{ZWxYn7r45;I>EVs|2fq?x>o!6r`f zIxSQI?7TDBM9^Jz#su!mB&%Uq-*&}&j!mFgNqCf)U zJkq{*0g^@1IZ@iL!?KB609tX*xxhkSp)nRRY)h08i`1@Sm-kobF4{V|(u=T~&L1yL zKvofYrMUFFyTEu$0@M|#=ORp;#5q(38JtDsNt{HiRVp5s8BdbL5tgJ_G;R0v{Ll|j zba#RDhZR^v^MmO$1_7uQu_*0^or2Dot{~nPkuMV~>Plk)ED|>zd{I%=T8N0H0NyXo zu88?0YgoQT4q4)00rIH%i=dRL-+SswjGYWEb)7Lah~TEsT+?%RXeTBOQbeZeXRwf> ziBP8&1#*$Y6W2^iQCbQMRtFiJ`nPKVrt5wtT)}3o@iI~HXR^8&x?!yw*2iVNM9Cc3 zmDH3_i;C?^;j={U#-)oG$zsX^p06ND%?dC71jU2)nJAWPNxBpFBIMmu?@j1rp4Yj0h`jk2AbL!_TJw<3OPL>%*W%fnLfu{{BS22Ip9z^CL&051 z9i8&GV%9`fo}w$52o>o}d8TgD(qfj=&Lj)w2Gh%141@E*d_6L87o~c?1SAB(gqaj; z`zJuqYGRB!JFihP2dHt{7wg4K|I3?NK?D(Ke#48>_g%}EI=Crlzsk`>B7h0Qke=2R@^r&PJ^ zLvw|egXu5!$ei^Xm01}n5gM*4Xh(~oDI;h&az;65iWevdCzUeyk4uy-WJ>b2%F*mS zGuEMk48dBHlO<+snMQd*Qa)w24DZQt1Fx{oPr;UHQRFdnrECS_cU+zZ5rQKwq6 z5&6?9O|)FrS>?$`8hEj)uQLrIm!GtP4Q{bc7rbLBOWKv9fCY43mE#7KyUX2@i_c1m zw2sAX`qGS3Ge1gPap%javu>~oDD*ew*YZINT;`4zLhlTF1@Dwt4ZFtjP1v4k!O}P? ztvP2=X7Tr5F=$3HDWMgTz3qqNBm$)xN{MXi%W&EUaTr z-F$u-p73iTX?#UZk3Aww<$b8-^w2uCobZ_ba(0obz_9eCU)jDs)X!<}Z+_7j6@VsmPG%W|A6g#ZapUt6JIy&BR#Nu$zSx1<97LM*t&XDBoQZ&Ex^g{ zH(kJ64Xwj^IoHzEG1qes&AJ@V-F`z)#2PTJI6uD$1+%QD7)uB5`?W{^AD0756xh%o zpPu{uM14cT8Enq&<`-@AbTPz`;ra%=c4f*ytwU;kLU?WZycb{&Ch9Qom+GW zc+B%NKB2XF`|5Z1hMK~UNo8dvz`|E`JH>`bab)f&8q^F5P#^Hg#LWvzL|uWpA3 zhhtYF-p(;G(G_gn^WE_4DR|C1BGHH^2(Nb#)nAij0e?C6FB6J&-2AQ|pA5=4ZJscX z_)5Ql+_>2|`We}F!`8z4{vF3=;Cv9^xfrB?qVp>qpGb<&i~GpOW{Z1@Q_Im0JdJ*b zQGs9Jb+7QeTnj}U+16VeU~##G27b}7_8bP{*I4)1ckShVvwiN`M;15in58cp|m~%zPW#3F7$BHt0V&(Zb3M7{{NtHo1>b3LF;MP%9HO`MEi@dk6P( zyPRgMr&0U1A09aURyT0tlLnmRb9Wfq{i98!OUio_zU@zAZc3`P{PBnR^!SKiqY4*K zsm}5RU=G@EnTzHce6>UbMk|z_3&0v_1H@@DjjtEM1t|K$v%jgl0R6#g=}vGVS6waD zP;NLHO(f4$ExEh9Jo@I8Ra%8wBb4aEH{{A49B`LtuLvz$;e`q9tQ#RV-2xn!WKk50 zX10LlC6%T&FLH@o1v6OuGSnenL;=_sqV{~(hYD*cE9Tz*o>!f3j+9c#p9dd#zNd60 zr)z7A*o)+)Br(nYBF70;s)da^!CKQ?qr@+b2Omahr6n_PYg%KuV!AiO)>>mN;Cpw6 zn8LXTS#kiIkKAo3XC$P*NvUq)V0Q1jvJq4ShYIGZ)IJ~F66q%5=FF* zcGh?i5}1nb5vr55Lbp`R>8!ALDV9#x3LFzEkR_ayiUsPEH4~sFrk6`j@B&elDO=bg z7oM=!TB|e83Y(W=S(Hq?z6*3Cu|!2GgAuNEFO$;WE3WV>jANBXE6j9D)2+hEscZ#M zmwjst`$u92*Jaw`EJH6oj6`-wIaph32tw*$PK33yBAxxayUEAFh-sQ@a$vJSfzdO) z!r(F0=z?kCFv-xD=3v7@W&t_@ z_gP0G9QFDwi&z?6UC{^DqM^O&qRN%Q>N+tPbDNX1UW6w7&Wn|Gp_RC1v?Q*TELPMu zCfMknTr@=?<=(6_k+jt4F^)hVyDwa!ba}$E+!#(*1?zfM$OJHCKf)qMW`~tTMYBu1 z2==7nkWQ0bIR$`N(g^b)Z-%RNRA?PhCB1mw-f9xYnwCxjubm!)S{#;l>H|_InezIN7!nKLBkf+ zn02kFx1h(s5y@m)S$;P)h_b472`sk@oyLX(&lyw4OU2ZnqVH?GQ`g5Km6G&DxAdg5k zffxsz3`NKoNUOR~=;(ExM#@;YWYL>9#U!AW6f4)gcNcn@B4-gD%`31oA4{09;~(Rc z%2_o;)Y1^;W`XipU?A5F4=GoVtny{d7q&7iMcI_$Ly3#gyp{(80wzq%Utvg{Tuojq zu5seZ76=@_6o6V1$r%{uRcIy#bM11p_N>%8YKuIplq@A$L+d8+0&_airN!9aR0u69 zSnfrlwby~YG-Bl$S%C`#2^7|%Q0CcL{|QCYc;t%NvEaFYs#aH8NBevUty!JPuAEZf zDB+lf1kLE(#a^T$;&H{;vsSXZ$lbDp|FaNUq*hw+CIq-zvJyMIyBiIiRg{=wS%xzU zZIUO7B%NI0CK55BR%`k$xO;FrmGw%EmSt_=Bum$hs4Ju{>yp*U8hBtq^_B86l*ra1 z`vNCAqtW6{2!+X5#awpo0-eHQOLZwuBImFRb;)o-tvN&rYbNucjH`ftYO<@!{<{#o zGGTtO5-U|ruLATj&k}vmHTg?i0R$9%mJ50Eo zlH9|$Yv#QtmBpP`SJj%GYe5u~DkB^RvKHQ3D`7}0q_YR(S0e0H{aqbyffKKSiL8rN z>Qb?VuCU87xt#Qvoms^okgxF|U9kufLz}N~U*4j!v9yvzt^0HHuI&S3=qd?M`ucFB0sVS8wkZ^*A_Togl z6&32-brDD}Kz=!OPQP>kLdDpBE?@J6J-3}@(j-<`Ur@FK=T*X*ZEEYgYA3j{yc7}O zt7%7}kXp(NLj^5d0)WZYTGo@h3e6-#6PM<5-_IK)g1x5kjq%iO&kYp`8-Lc}N@Q_f z;r=4*fkOS>E@&Af=)zrr8*HDOmSC5;Y98qcVgc@jgJvr1mXzuYxeAU2!I&(fns0Os z$fz?W1bu*wGO%{Bkh$nP*K|@9jBKBH_eSrXv(B*gqH8GP6MrB3xh32&^ zs6HXXBy|BmQf9^|mE?C6FQ1XrqdCtjG5MZcR5c)in5~~_ciZo~KnhlrNiOF6GT7|J za(ZjzM83OAteL!ukpNzh_N{^tt|e82gXCl6nuTYiV*>4*PvxI(-*dRS8;XrbWm|UAxL0Euql*q!}`E9&Xg85c=+P;CYzYFxSAub zDCou0pP)5i{rH_0K72E;^Dmy8!)bi;!++Ypjz9cEd&8aPXMvUC@YEmv6TXB9o|k9* zkLN|}2hQ4??H&rk#u7d*F5_dWVAovur>D)gTtja@!@)-iKjXLyrOW~k+VoQUWoz~ZcMZKSwD*&bKid-` zgI#~RggS@#X-Aab_I11OPi`anY0KjYyXcBh_Q&&6zklrTai0(FBgf6YxnL7sA+ezC za4$T%UhqlH=9%xuOCGSBdVbzZfZlM4q<30&w+lE}#Y!aXB)gGB~UOni*73cghkZk}-`;>&7gw zKCaHJs2%NcNjSNbxkutE3A@va;IdZ2+XZ@wKET^I`7%pvW9d3ANAMb`&REVwiBJ6c z@Ddo06_j&8o}|n^5Lb+aWeGW2VRR26Rac&FtpLe3)RtrY5q*Bk7J*biCdb6nPOkyR@! z+A}{uUBU=jsoh`!8fQT(oeb+j8|EjkGOe_;M0H@VCu*koW6=w+q=%$>-=rllQMVA6 zGp|`|W+99Zm&&P=EZ17nC7 z-1cNnP^)8!CczO@<#Nbe)$}4{L0xQ^sEhS8D~m+76K*4G&9#)`RVWajkSmwYOqf>j zs1rBD1XidVcJa2^++-z-nypn6!yRk_Sy9UMhEs0v-lnoDU`~nY9H`C9iX1vxDKfBA zktnQIRAU{mKx|k1!#Q{pv4L=wt zBo*3=H78XfyYL1Q#mWE@454Oc1?sYd8Ok~hR9+?t-DXaY_w8v_CK7p|(r?YIxFxh} z!Dm<|#cCnfP?UvC{D}lUukdnA0*zOUbFapEk*KOmt?Ji!bvcM6bt2iOS7Dekipw<; z(_;t{6m?V=`mvV(RFrjEts#*gd~;DJ>UX}v^*|)b`D1%g;g2Tox-YY6m@6 zHPV`~(8O`LsNF|OH$h>1-*whKe4FMq^K`Sf=XqHwRt<+!Z0&JbYbCweL7I~mGM9~M zHl@jANun3HKs%|5mvYcI-uK}paKw~KCbo6fwMi72M!y%u6w#h4LCLPY=}LnADWfu@ z2biy?r|FUeFNqTkf(CDq7s1F@`jTrhj2yadp_I83QYeq0KlEwnUqbP_yws@Bl3$3B|5~#R%opNC(zw>1(q$5wV;pU3Op4YHrD)}7 zSdvaMG@%ERS&%kfagI~?#{&kL&%0MrZDWsub{*lEzHJXBK$r;*b4rfc5D3j8D45DI zT7|KWa2i(1p|k{{W-JD#F8-OEFD0*#XmRcs4+xry8%3e00TP#z?@O7{zkhG7g(m4f z`P>%AY=(PEj?o(wVhW2hRgSKy2v5rTzAI~c0p2PcTdJJ4Lu1WYx3XDhY-x(SAX2j6 zq2ErRCL9QyF1-%|KAKEqsoIQlP$wnyGnLiwVi8wI%^)+mK>Vg@nOBh<(M$9XgODo~ z?G^-KEPSX2$=zL8ElE|8a%=tgH4#$Di;rQ+rekt(q<5FQFZ$PsjI4G{E24*lFn~!F z#Pxo-ZqMh+yt^j}>T+4`e8Zp&kg{wADC)HJ=72PMc4_B&D z`7ZA6n$R9ql@h|-)L>jGFg@jGK%uDwqo^eWOULOV3u%}jWRZq{LnO(IK({PZIW-r! zi4-g_qUv9$6$u4PVT6H}FUj+4r8u~ED0_(vM}kB@56$<6e`j^4NQsMJ9Zw|;>r{Ck zJhfopA%p#mBV4elrlJL88N^D#CGiNHhRdn4GBJxJEf02)-m=1owHK~Vw5TgrSjdEr zks-h0M@k%V*V>&z@0bk@J<)5lmZO>W#FrInu})EgAjA~e+mF71fkG2dFv=B65{r13 zV&7W8W2%fu=%!pCR{#t${z4y9Gki&>8WW7XQpmxZx#s}W;o?^#@chi%z$CIrm5aN( zt$lSBL8DW?X&)x`BGevJxpm{REUcXc8RSm$e&#?hMKqg0mP6&{n4H@V}e`E?ybh>8W3J^Ev&t2~eRNhwBQX%aUN03R|YcBBNoec(&>#e}#^T z^T?4X$~`|ZWs zvxEt3>Yog%cuY@(vK<@nIf#%XN5W26;MUG6cXCX7LujhR$TUdNTo$mIIANNbAh4I| zA2_U;rTU=&R{+^X$%;e!ic~*lVSrkWoe+vN8E!yP>xcHCo!N?`x+*iR3_0Z&NA!nj zl#1?GD*#w$tf-=qqH}NUR7+)47R-iF_R@5PllShfAHy?no>$`N3Cxmc#;y{Uvf#oF zMgJ;TAdGl!j9- z7}}xPD%U2#yk4MS5J+xozqJB=7mk5Md;<&YRYBG~b;MsK;Sf?@MQXg65dc9_>FA_Tj{u(iQ>OVqFNK6oU_G8R>0 zyRj5)JC5c&A@nWI)U|67K_*{U%1SbaUjr2xDLKRqe_a_pO45uqI?zaQMrHKOSem-&&!H<#Ez z@*ZJukNi*17IaV4(hDwQ_amGN&?sN6jr9mUE{e#?hrWLoKHC8R9~=AwT?s%ybo@dt zrHcnrJrdmYco~kJ`wOM^m+whN_Cy-sx0|o=70Kr7?YZ~g09#;5N46h5!g4e&sCk4= z&Co!F!=Jyq98N~uL>T!!`PF{bko~SZUQ?otm&3s`Eit<#yvTdQmk6-&+&oRMGic+l zCmq^#I?n#_@BZSle- zd0w>cyy2$=P~PVxyxbFN*KFL8?FyofuZM@;O{hciY?=$pfp+ItPnG6JX-=gHtXyC8 zhr@-aS6s&qk0fMsW{l(J!=4*_xl+HFxT;;Xlxe`c z<>EGo571$KjqPqm<8oeEyx1%p{|PvloY3f~{e}gOmVnUlvV|QR@QzmoqvJ+%@X6t_ z59MTycCfxWfa-el36|4ov-|jme>h|P?=G9T!gO8^IJw$S?>%APuS_4_e2(XzSZ6M5 zpOY)#jPLrXTfJZ4rI-DGLlIKw{FSKV)5-CXV-`zX7O-e73%DWlUojha==jz=Nwxg> z51e6adJCwo6z9e&y#AHyJbP#8I|D2(c(? z!D?6H;WnTb@q}cB)%s>LCNF`t8m~bDJ-t^99jq1~+QMt>i=%2$Ne=^y9k05kiSX3= zC_oNXM_ydoA6W^~L}}(HRAZ8sm1cLj?Gyx7Xha?wtG5Jp35rP<{(6IodlE33?)QZ=g&rxE~Lz?_)UsVn^o{!ESR|ciaUI*)1kY7WvR!jz9(+iYHA_on z{+W~f30Y59SP{b&>4g%StZR2wz-ZC~B4bhzM>k~gE-_Ul(`A(${=xc)%Pdmg z3ZC!12xY=lNDU8O$I^?ML=tm;mhc)<+t=b7o6v-rD@Oc*l@qFu<|L9_nG~y# znwGiNWw-*GkjrW1W-%CCke*UgI2UuTLXW0sNet}%Z%FS2m z3uBwN0l|g?UWvrK6>b8M5MS254OLp>dX0-{$-9A!{&7Aa}@{LnGns$;Rj@`bu_IQmnXps_wO%bn@PH93qLxyjRS2UJ( z+#1Y>duoNd>ZZ~u%aGP9AClW(yJ~E5&0hiLanF+wT9dr43IJ!Y>`JW`b_3eT7&VK3 z4EUAB1<}|)S{jnv2P@&K?*eWJx_g-``eE|Xd7&s<;TmqD zk)zdE85)>8Hlr2ltP`>hOGg5Y7|qT|lAfOEu@5Y87zkw|G!{B2?|G$_h@2xKyn%%S zCG`CQy&$NpNkylU76H2gT_sgSV6G-w(y0@i3Ru3ysv$dJB% zNRgDR`X+JS)6CD4;OfGpXui!dwhf^?(t1&cK;DN>RWibfIV>rP9Hy$^8LyERNkLjG zS%e&qP@B4X-g$E8$$KNggU$?q>#;Q*V{Xwu~eF)+Flhh zWd+zub@Bb{#F)iekqXwcn2;B#NRqdntQ3HbRRQB&92tkHm?JdZS`(+|gcWkWGPOdw zF;nP386)O))h?M4mj(8}s!`X84{?F7R+i(Jsc>Wz)k<*mM78GF2L?ANwdG2(-gLFl z-i-AC385{MVM4s@E9O>B?WtB+e;KAkYM8~fQdlp-!T~Htr`t-l&JrfWnq;wbc!4=# zNwTC;Q@z_>fgPFGtBi8np?M5_#vz@r6s5aPwjx_xsc`>bAI(#qI@SH3VFM<$SfuV_ z7YCh4Ba@mWm8=#bN;Ah;8Bl5URQKUXlOdi==^SU^ z8u1*sZ^bKe2_{k=0wCQd#U1(t)V4R3Jjr0|B$HAhpJz^Q275ZE1p<35gY zCC6gzFCE|046x8=rrEmW!R#idY8>Hk)Xeg06lBCgeab|!AQ_8!IA)rd(*-|t?2_O# zL-9GJ(36QT*EGwi=(q{xxt?2B4C2g;NGfH%821zAh8}rYQY2TJFpMP$dKEuKJs}|a zYF62n_00=1@E$;hxr358Hu<+AuKrqU=F(s1;^sk$@U#`WmVh0^?Fh|g#gn#g0~)W6 z)c}cWi`cL{K%`8aGb*h}>PqPZuc$b@RI2yV^JUmgOno@hI5jOG?7da!2?QnwD$&oe5AQTBDcjf*B8kuU;X&HO!fb#Hp)xfBP-X(R&!7*ClR^ z-}d$LfQL-DK~}ykSFjn!{sA|v-DzYvgmo#$`)v}JqdCMFYU=Q^Qce`XTwuKcIYyQh zl*xQfOo-@nZT~bhr{~bKEOBV_55sz~ZEzt(b-57uuc^1{07o;6T&R@jSoe0g`A;73 z6dR@7g41wD!?A|s*(z*01Q5Y%m*FW;v!RRb$7GzFl7H^;&t^*m;ij;5z6W>L+Zi1+ zG5a}YI76R#otHkpxx4N?gvPax5b|t)_;Jtr9-Cb^;E#J(*7LbL_`-~FDD93mE1AVFe>1FmO}<+GZ*PWTIm9*%(yFz_aB_RR!>{B(&9G`yIvirSsM z?zZQI(g_`iHovhX!_8MqXygFX_oaE=(9oWdhPZJ&NRT}(iQUCve&l!=FQ;QZ<(Tj~ zC26V4M4DL`J%YA>-#NC;P~g?UGKo!O;`mN zXC2+lhbDe)V^5|Mia3mHU6!UNcQjw63%&2x-2I4%O=X zhMYLZGkotvnm=Bc7{J3~Y+neOyTqzzF)-`nmbvoIZ{zDV%PalEQ<+d4G1>)b$6*KQm=xAOhQv0=EMS%uaf2jRHc zI;P??7TKX&+kg)G*}wV5_@Y^xdGkqJmC--_&EMjG;!l@o=!e!-6`6L-^sCQ?!|R_$ z*_h%U(&8moh`O3M4Y8;GAL`y^Ns{Es68jaC3>m2^k;oJ^wfA6EZvb6Ys6nC8B292% z;b9Tsl^*U6e?%Z^Md6CQ;ez}D>^LPPg zb2BwH)%!U2oC^jy6xEr^S=X1hKuAHEF1KU7^0KBD3|w@DNTdyTVrRMUJSv}7j&7ey zGUttlgh@C9iV}9kg6b#)!dP(aFmI9G3f(Cbu_S%W01yrp)9Izmkk+8BoS-eTHeY#! zU?Z^=_scB+q2*9BfNh3qLS2sIcmGescIMOybPNcQJy%mSF!)+O^-1qaESH1fbKcqnJ8 zAFhFKpsh+ymhkswTXr04CP=~3${v+bcTBtsZz${EQ1&Bwb7~{5Ikyz+vF1!bAHXS+ zWn|a&U0bp2ElvkN4&r}9SyDaKyh&RQ3`g*?!fq5qDx`iFtAP@r)-CG-%PHlD!I7FN z7^U=3=s#?jnC1}553)MA=s7cIqSciNJ|ilulYp?!uS-{I-E;Gvy@~v=?HM`B;}irl3<}$lQAFg>Ph` z)zl`zxNPyuTE;2uBOL@-4?9{aa|o?Q8A;t(Xl*LnXC&=Il&m%-bcE^iP2kZDC|NQp zjSC1K8X9PeaACNPn~Iy9Q$gIafwnz^W&Wtc)zC3<0umiMUiKLoHrb*;Sm90J6=fP! zBsh2D_0YG2p){rQaszm-20_;c^|U>k#pUZy!C}ZWxAdUMnYsj$H|oT@VuGwd#S8J( zhT*tGc330r%9w%>i+CG300w?_7eFvs_a!q8$iC-?}NkS;{-=Gn%X} z=vRZj#QR~_`xvBB-4ZsOQs|Y!w z@NO#c1SL+&_@q8ZTXmrI&S|GhR2kq{9S|O5<5LQ1fvt_OZ8IpRY9a4QOT;;WYS5S9 zJ0Ra>JO$FWRz7onCn;o9zFyE7T$%*>lS*Q~o)*wdY}kl<&#fm*)j~098B3@M7;jO- zJ)*Ejy!^)y_MkDOVO~vS^mH6_X$*Q_oi|QaFAxCsC9_P-ouLkL*syb=c`$EbL1jU; zo4M^rZdBqP+Uz4EP-W|~Wu}ls9~NChAH=g()(#z$!_QEc3cwwPmn>SzaK!iAn|Z&B zGPSL^VFdGa3osSSt!t)@bm>DKhb9<#3G%V5pQ4a$FMApN&~CLl@7EFE*dZ0fXIAXG zsZ4{SK5sye`!HT{-_3r;HX2se+>SqaF93QMJt6%sa6!(9dCbwasN+?pg(?#E^_9ds z6lY8kG}f18S-p%^7{%H!ROF5x2lzuhIen1qh<$4P*%)vvmy-X)gZis4a&a6fR0gV~>%;gImWF z(ijjtqC<=pZAm=LoQck`Eo{3}k z1$-6sO5ze;?g$G8&0bC@T0SYEnpjwqOH4z1G$83@cdmx4Ak7SFDm%0~G1}rmr&vyX zX2FULt}YeISWYe4L_A*G$or%`w-$%h1kwU@*eo<#u|1UxdAKBUMEazrO=cgoIZCM5 zwA`K?if?LU+8jx@7G=Fn4SjLi130FkGOBy&xqV)RxW{t$wRXQ`g+JcsnI$Wm);q@A5%hZC5QIe8fqM8R#w+ zfYFeifyR4fRazEj0AM?4RLiC-tDOso33sL)+09QG{`y)T zg_fjpu()w_NimPAiJHnts_?n7z_`lpDIPX`Unwi1T&8ChlT`k;D-o|!Q97kM2XK^o z+d?r^O}e4s4#!2J(Hh3~x9}nBWa6925NcP2v)TNvZl;wq#oGH{*<)l%qt>7A_Va<2afW=rD0n zt-k#V2L|(1ERcl~tC^Z9@AZ_OCl|qGIb^&zWP<`HWhIgqoX9aIcUzZMTfH4`r|aV33@z%&L$@seKOPUa4z77|VMRPf5$LE4lh?at8|M2QF?2|9WKTXry zKfDSAk@BpV#&1V`!Ubg|Iy+M(=$G))9(G4S(%jvRKkhIGAa&LrIN;HCM;AvO|D(H* zL^nh6kK48LE;hxNar|0IC-0`wwPyvSVDaVp?rz!?zr##iyLaSf1{hiK$0J|nv_)m} zy=B{D#fnw*6Fl9>A#7;wn&D#!uXZe{eh>ZtQb;@#35n zpN;3+X#--z!r#|<1G#qjH(O90j{dd&>d`F@c})By^YUJ3Pki`hFu{_u4=IFQ@HcEzfvDd8k11 z<@}o02U)|9pzJ(FzS^6$?6|I~<)pgD^OH>4b@BQ629t*?jyI5zU!8D={x>|Qg2TW* z;Dg4uFU$6O@FJf)X4#Xh;C>x;Q$E+-=!h{-SQ;mAipt9WckoP#$J1nF*xc9t%Bfxh zO2M3dGc{w|fh?Khp9KEcwl?FxNBCnS=T1#Y{J5FEQUb_%a zQ@y0l+cA8r-bNmU*cD{2@gS#MuwQDW~mb4p~0qR*! zK^=x-E2X+dWoU(nI+F)JPN%>X*;GAiY6P#uo7BMdQFqvkmNk$FrBLE=3=b$_L{F*f z0P6zWwKuGDqT0O<4QsjeDzY065~6qQ2isBAup7W^#C1(Y;tfqLFM<)$etQlk5}eT& z48;{cUZe0%v5f2h`uCOmF(qNHt~QE*8Eo5Cl#)zivH@ieP7rVX>FZ5UqR;4k-%J4+ z+qN>L98PV55cL2#O2%%)vp5*lOf(=RfMzP*k?ua5!Y+jf@uW>%`uE8ivW4aeZhsEIMGoiiWA-l(?nb#T9( zo-F~vTgi6T({~O>#gEIIrr2D*fGJj~llii& ze3L{f-VCaz%-XP&s%}hKQNnE@Sl-oD%ZXFBJ1Zu&&M~&h8uX);`yAtH8;%UMZf?`t8#Qq!(AYo7z3)36A2f>~>ZzN-uo+FU|DL70@GR5~a?6?%nCce{tL z?+vhN(58b3(+|sM$erbj_*CrxDa&l*fvr%Mf5nW8G2He>tsK3yHAVbP1GX7{p$Y1{ zX@-WobyBjwrh&Ey0pJtXE;+1B%c;l&ve`7Hf!2E7!B-PgatBl*2@M1v^;ReCG7Y-* zX|qAtt;1Fxm3Ge*Tq6g88K^Kh)0;IYS1=gCM_}Fp-YPBO2#skZ%4zA1|Dqj*ROi89R zHi^h^$CxO;afTbLB`)L>U{?DBpX9*gWOqQsC;+%_4GRdw`bEvWcgvnL^u(3S1->k+ z*Hu%Z@tzk?RLsuEOz#74riDrzOR6ui7P4O$P+dsJ0Bs& zG2>t1jgzmRP}ahC$e@A~?4Yb~7N=dn_Qk|xq~G^5yb%2b+=?jAr<8^rST5;HT=Yy- zPypq2#0A8lYUNWkw0a)nFwnlVzb=7;a{e>ERddbWqG_wLr!8=gM5H&UYw^kX?fYF! zP0Ud8GGB;<%LhL&wVXtHRUEH5Ciky4z&^nZO~-J+TUCfi8SIllimfbAKAqD(l?wb5 zEIC40pQ@}t0!vJ3$PRh~5C$?)M@Yy9UdsVMH+DNZg<6}g9xQi(r4qxHsjHe7LDCn1 za$yE$AUo~)G=n$MJH>UWONb}pSSB1@vil9D^BwXP*SqPt_5v6%M&c{jG*zMRLBKzA7#gi9pSWF z!FFZSF+M7TClz<0;}8n*tv8UfwWJr|^4vNuOD3ab5MNExcO@mS7F}>)#6ixHK9dAr zZ5sqGw4Y-kY}OH933A#@e^Z2UcI{wtnbQ5<=RTpJt6o)Q$$@do=?Oj8*FsE20)$@Mv9?xpi=5fx82m)C2Mpz|0H^H$zU?l~B84+Sf>+*;XJ>r- zq(=tH7*I}Si+n11|0qy~@iLPYAp%X=3Jw{c@W|a3M8mlt%8KFY%$F18bbC0@-q?|*|_;&_1foPpX& zUn?|jGceG*^^3 zxv>`6XmwQpMnou;|3174$czUH8B$oW0p>NM>7EGWn5q^VZogc1E&_bl*_JSTOCk(| zScv_n3(PN?w5c;R_5O8Wo zFak@&dvsifw_rt^Hg|#H@9wa3>}cER7lmvJ0OXX84pL!4an2nd$IZs^ zO+Kve0lkX~>8ggjUKNMk#_RGPfv=sPS%8G^wcOABal3u@v-~&kmr#)Q)8fTI&mJy$GeLrSTCGM0SM>3bn2JXaT3fxT z4+6SUKD{sHX=M(6IX%ihJ&!Nf#joz=vOmatKFJflm4ESTFgzB&-o30Q`G?(c+CN|p zKNF`z?*GfDvG|AGY4rf0=(U4@y%gWN9pYM^XMFd69gFYQ+w0^DeDZS!T2Z_Z$e|m>J&(^7DpWu)KM!9ov%|n0~YUHO2X?;kI z16u8uyW;bQwam}<;kx+ehuyjOa=RJV?l-=9_cMZKnU{Az-;VMQrtQ6K|2i*DguM7Q z5Ub)y8ih#u1?P~bsH{IYF3Z4f8K9m32i`#C`gU4vMqobWZ~owb%x(t%@XBkPw?GPa zo|zLOK-aRu0uESzX?M7Ft1ZEPBFfw2P`sq#aot*g*F{yW4 zxHo;DJ(zw{jA@;T9wYTYq$^SA?&nj)3%J(3#^M}S93FdTu$Dk?t6xs{up*?Z&TsWC#t;} z<_Vr2?ncriAmD;c$tn&&c;bL~rI^8nIS_u*gVLLz9f_Q-hxOAdPfrPg#k?X4@Ori3 zg?M#^qeKmCh6>OflRAz7gG-UO8tgcROWRVp{RW4eA1`go0?j|k79NHzL19wFVOeI9 zN^xI$rLe+*`9+cr8!9l!Q#*c=* z(VK|R&-x1y7%=eeXP2=?PyVA`_^&5+?b+j1|~w0v1h`&nA(Oj zoe}AIbgoUX$naB+;p9-87HQ4Qx1}VOU72Y@$0_26q3BJ(WZ6M{jMg_@2JMn4GW1mi zS#b_^6h9^7rl-PI@Rq!ZlZv5xa1NO>=;S@g{&4vWKgyBs#{qWbtYnhe?^;k^a*n)K z%FEWuJy5Q7a^8}+04#`-%L!1bYaqmzsjvIv*W1)6a8eBZcyr!Fb+@i;8Qbv`#!Qvb zMZAEjbOyprA3~ggDIue&5M{_(ITZU$k~@kG12o2Xuk8-Aar+W%pf~@493aX*6`yd4 zC#7a>!+Xhv%1PVE8s}4LiS(;Gn_0_IdAO||%`!iXt}=+=45IHjAq(O;ST0 z!jkl10`F*srsfprB9YMet^Wgg81cJWPM*xHyG5MV`+oi)3d;h+{Ss_LqP}XUtM=j7FLm9QhZl?;5O(|yuzuFk_t5KEV zO24{_&nib^Cij=1Mj8V$NoJpjXqv{jcSkpRUcC({L75R|wMuH4b#LJuzLi?U|rQr*t6ges<8lD)`s0|0uHNg z9hKmR%C@q9+YB3&Pat`V21g8&T5X?pL1SAMD04Tef9*|balm=|yQt~okz3}4^@$L* z5EEkhn$?YEhchTc(C6l|Ox{G65A$y!-RXzR2CZP1FJ%)bHN?fo7Ipbz(z;rO(p%4M z9xhL(78OXVxRYzvvaJSFW%vjeT@h6;hYme#nz2kw*H z&@Cn4jGUHXwB|D4+qH`OI%4sPzKJCU5@#KwH@t3N@Jp%&Xcw+^x#V%MK!uz3)S&!a z11HHpG8g7#OSS`tB66%peolxPvp8nL@+ezG#c1>gl}4`&3h)H$4_|dvI^RTI%`&4hIX#VG6wOYYMM3J(TYwUY8Hn3Jw~Fm;pwA;>Gi^Vx2w=#=dK<(I z8HEe*{oF>POmR5KMNCnk7NpngDl90%QAqD|*zDCg;2=x!5g9Wi_ZyXgE%=&i`rMNa z2eS@DMZCYQaE{P#Ac~(a0Rmm-`aK_>)=%+q zp`O?i>e0Dp-T*|5xt4$c{p-q}(Wsi55=VJ3d;-a`s&pJ|N8A|~k-HM;c0DtI&Ex>i z#>h9AY2BaYxk2s3NxYQJ+HF{t_T0yrg|n22;so`gA;2OirSM~OzB@gScXt6oSc*?g zAL^cMK$t zAt&%KMs3luM}rGPJ1}GVQ{HQkwGGsdz0LF~tilHhcgB$GL=x#Wz+)Nu*|`CvM8<{B+9gCC@;*KHx?bWv zWQT_=QjQ!r04pWNX-i5jT{834Q2V5>C4m~E-otDehe(Pk{+PHYEGQnnYVqjhHZCs^ zA!=w(7ypJ>|Nj(5ZASj%E_g?>7eHR>^7gmu)!XfC1NKO!9GJV;N(&h*D#akonu2V2 z0}vJqYit9~v24IHO{JD;bHCOjt(3X!dv1M={ZP>9mYs>{iIp7E4DxC6Is`UB4Ui;d zt@+Jvm7sTld#+lF(T|U3eIKYv8CDpXlKd$2ZW`90T5q4m86+lWQ6{Um4)8}L4e8*7 z9C^eD4PDyZ?r#F0_4{89K!y%gCMCsIC@|*!bYRI)G`kE9doX@^n{uKD9LO- z&(F#<3c>NrC-JmC1Qp<}6<>nG(o1AsSJ{m6wJ*Eftpk$SfB=G5w(oS&eFBiXmgPM}i>?LeA(6Zv2*5Rrj zm})r@ewV$k$u&9zI@223HRNocLYdou3Q@oEHo#0bBIvYTE1%9Y>}xBhntaQS2A7C%;^uR z$y{RWDXcbe?CYK@TRyf_6Y)&~$1rc= z9@I5A$oX$c9~+cS18<6m_xCfV6e%vQnSku`5PE?Ozzq%8o*pJ~oOb(I0)n=93r#r& zfV*bGI1#2nQiq@`vg2<8fvB8b5|YV8Bqo17Q1ibMMAFxO7K^~3cRLkdk7s$tVl!(B zTDKwE+ps{}I4n4i6FhMe}_fX387(Ttv zjYqUTt#=!6bRrbN#K#QL8Fk%enpV%E7q)@?r@=P*2@&mOge2U0Fou5q) z=#{0rUQYgR4)^GX@b@ccjV!X_IIRxv{_|-nKK{+8KYUUkC$*M41*hUDgVVtnHcfKwD(-}PV2Rx)KeEEY}FdU2XW^)-e;24!KZUf}&E}<8Js@NWb2OgL^Q`(0aCG~ChYBYjk%tgpJ965_ z@l!tFcRC=cSCD)F1o$wnQfg99VygPMG9@pvm&6}Cf}mW!$f5fCP@ayjfgGpXQIT(L z52Pha&iF6anYcy=!X>DQw`fWUm59wo#kd>S+D3u^*u>pW z)|Jw=m)C@&bnC&78wYfug!0*Y4v-0Vdsh$(X#KE3O ziv<+zVZ4<1lom@6kR7@KG8!44fOQZX?`tMETOjKOgjSrxRZ_&J5>GhS^)p4@L;!K< zqm(mFN5%iGsGxO@+oZQbv_lcdgDeI8jY{4G{i_zmjB(dkHiuCK>d{sJE!W`Jegv{iv;mfr}qAVnh~$L^BM=yFeiJkXWLu=@N?5 zOJv00zf`}y>t&~5CJmfYI^Jfq)VxEk2G(TSkQHI?m>XLbOHXS(9dKxdRpuiKr<0}K za0s}d+y(9vY;UaGu6}^plqRPgde*SDLv6UCHS`oCI?(i0OkN>@yvn{?RFt^ZID^5u z(rKj7@=-t0+sN?%CA{1N2XrZ59|WF*FBQg1u1zJ-mbR0*q77pg#>xx`5^k#>Z(G)q zSwQp9;hGVhm1zomkY(9qdfOYHf^VC;=PfY-Gqpg?(AtlFsoIz-!-tpv4O(o8)Eg3d zM;zW%P6vW2xC)2vt59C6m|8mmFmNMY2ygeq+oPo#&$UaUlJ_TU_hB6Q= zVV2aXQSE1<;uPBjR8XcMh)B?ncMarrGQHF~4C!^2u$~(WP)n>>+f@$LPRGH+Ll1FT zo2y%-=Q-IOOLOSLZaG68MV)JT`#tv#%xGapGRPirS}Ct(I+>x`hkxDxRdAXtmoL)s z8ie7L>s_#1)wTqiF#~ZCj(Q8kNW3MaxP3W>43mZ?keJ$ZIp~4XIbl;``N*`CR6&fM zPTk{v6Zq~1d2FVWT42a4S$wQSzYtcefb3y~1fM8Wix#Zk%x@;1X=EZSEjQr%Z!wq{ z`P66^^cknXR@WOjRG6G|w0Sq`uwDBGe zG{u*RLsm89ry#YU<3MoJ;()#*JUcC|RxOxaK1|0@wP2BD!OHVK441rvp>*emL5##? zUz+Aq6Y(C0On4ah4&l&~zkOKm!k+{3PN!o?M|zvufm?Wo+Z_UvCDwXNKHCK{Ucw*C zr_Wr}udHlfR3pAXu7G_Jb3&W`?rngTqJgrbNm~#oSE!9}-<{941)yaKnB%`ufdI-- zoNp?nE!adMVm7dX^F!#c149(&bbQ)Q4df7EMCaQC-v=3ccDo}Ljs+)bNADS_%;`Sx zqe&>kSJ`XsQ%w-*v)se^Fq7Gf2QgGUw+Toc7A3=_W0xALeU|IC{$9NWME?j!A6qD7 zAxX$i&h4@~34+6pOTS6;rfr+9;ZC>BeUxbf`C!SN7HN}@90F}d6?p+$u#O&@`}!hU z4LxIC<3(aj~%BKAYB?;TeU zyMTTykuJ)_9RbpZ-Za*SNjL}bd2_4%C4(puYngt0UmQ}CZs^&sLTy#YWoM-BL1ZD~ ztCgL-VdCV~DDNb|V+LU4Gep>ja2A#5%`Iu#m*@hCXf3CX5=a2*&T^rwV;T+z!2E8JzWT zqrI6W*glyR>^9&%N(-)4!be{yqQD((?7x9*>s&mN$!qC&T|+uMgJ?>)f1&;>=N0EX z(M%9AZU&Tim%G~ANI!+UAU`m{m5U!CyDYtz3wo*n`V%cB;Uex^JQjH1m$$LIyIZd! zasq-g6jOx6P_QvWnem}yGW{NGK*q{Rm$U;H?L~FZ-T1nl#M|jAxmZJ?8lD{9V`Tf2 zPmQqAixPM+1oZ{oxlVz%X@LmgO}*4nEBhBUGAuB{VDGLiqoWsH&Zh2LiOeVg7P_Mh zWRxX#ySzv&8bnZ$>gwC1vXmOpN!e(dWN5IPbK~-Ly&^6}0cV^w%SR{#z_JK`-`;Mf*Q<@pTOr5rdV{xy(C#+ChK}bOS@y>_ z#i#l|$8B*K*PG|@rP#`x><(}Jg#Y%--xeSL_TA6NX*@%~6_N&p{PVqAPM@T6DVGLB zZ{u+zj!4gGvHrpfx4!%Nu--r5KV_9bpc9wE@5$0yA6A>dDu{{lm-SauyoY-+9!2x* z?ik@$d->lIZWJ*@iU^di)^{h!((cbUUwfp2@j611!C~nXZSyf$U-Yj(1+g5) zHe>O{yPwg5F)e=ullRR$=oaGhwAlp3C|GXdw{USGfA5dog({f0ou!7wlA{TIcd|+8Cw1E=ygoD#zkNoy& z!CO;&Hh~gcX5ouzGj4b9{&(I%k2`c0$w}__(7z7~REa0dKH-I&YTF^zK{bvDLTQH1 zFkn8#*+6xNJh26i#@Y;$I}nzM-&*I?oMapF3eNa%90FMbKW?DDfSgwlQ=n{D4HBuYP8U~>ar-Z-Q zv%?eX05A~WlzjKOfDgj6A=AonbtQY4j!S%>DRRcz9S}Hu#}&w{tD~~p88mAWnkgbb zoX~2`XkRGQ(Xl$-x;I)9QwM95!yZaZc2LR5UH+2vQg%#OcUKjS!-)%)rGK zS|1WabzFj2pkvxP18tkLeiF1WQOF&RFC7M|oV%?UQWioE->@A63JCa!j8m*{0%a}A^al4tO(1qipY`4!Dry3{ zvrOAq+WOfKbwyalpfBu1Tr+||jjyrvGRhJ^P8%X{!pRF`*w}tK;eA^}Ea>t&^RxC4 z)u7aQrGO`i1- zwI$f$_!H3^Y}_|=F}&2DZTf~RVs=tqgvp#c zx}WJIHaPmZVNM5a&w{1py{{)oGQ1kx^Z!|h73jQA<)*fa{N%5 zfTT-WCzh9K^z-qPw`sZ@eb;6eC=pt4#c(EGaa({L_cR(kc5ej2O~b&K88+p*p178y z(V&{hah&leB56J{fDF?~<%}9RhS;arE9V*nI2imGqd+wRZjkO1@p?E8AtBpP9x+j? zXi%!>jCCpzTcgDKKCuFwF{hxCDQ>2~lE$eAUcTCtiVmP9azUIwA5>fiXlq@*{B2O8 z1*(U4w%f@Cduk$QKPxG&1IVH&D_c`RKSCEEh1=Bx!NH8X@wzWFZM;tR%a3(eVSR#9A&gw6s8``M;B!9wIq*43xY_1D z>ElXikI<*ggjs*|NX4ojWR@t=EV1V9DWTHpTPqs_fe{vvqZXYJv{|Q_?}U^6b?lTKbeywvAzP8NW;z>66$_j4zq@J zHBq>`KaBF4S30XGk7hWMV|#&>jdNf=!pH#t0E}Vr;8?Y`4ProsV=ifDELf=xeajb3 z4A%B_muaRL0t}`_(usRdqDmJMaszt_&W}j+RZFmF6PKr)7Xb(ZFgDM<%&mOr4*|qd zHdWbCxnBHtrH?ZMy2EI{@X2>IK^czxI1(O(fIX8RxX#l6yMn-c#~P;R?RvG|2jqu% zDuy^%54=`rXN6+m_uLA z3ew`cm7ofu4|rT_11QLoGVHG*R|=BrCZlN@u^>JA_qcH)QRPOabKq0wcDf1aXVXE( zgQhFOHz7Y+@=kwsg*vgfXo2vhp6kPI475N7{s1L1=XMzb{%S+Bd4Y=u^rb8_K;l^! z(uI$7PK@WnIx0u@_+}_hO~p)YC#OwAC+MPAz(DT2;e5^2RY1j936?Xe-Y$BKJTu}G zbj;qEZ8CL(0qTWfP1sg%J}uDVet~ZM71k+BJCR zqP1Wl{#i}#bE8PFvII+(vB~J)1daLkR$hNOIf%kxdL3Xb>*S)ntL|EG3FF_7+hV%A z+Z`N6;xOHwp<_25AVLNJ*mVIS7o;FC;_LblHe26(bPc|d7YQ1JpxMCz6>iq6m(>OY z7JTnc2hVX$%P&596-6HdhtfZCDga)LP-O7M`RNWKh}*Zpn31%DCSjJnjd0hYeVG zz)^HLc?#^o8Xbb3scemKCGVac2~Q9g4<7TsWiD>E;^WZIkS;?vFR z|1?gwV^}7iIo@jV!HkMb^MS&eJ=m7PxG>a9G3oH|DjdGT}WSJoSVCL#tT;6|ce zVvOrSHO1So@& z4t4pNdmTpa774ldYm3Ken0)p)1vCtlno434OzW&Ag(1=sWp*ggh1LwN#2B^w;7 ze%RJMtC%NSsJC+MHScRDbK@Pm?@N%t06_)T9p8vY;K$qAwiIa2;F1<>!S9#CKx04a zTQA!G2T)*A@;^rBXhLtfjFu9SfVQ^e)YjG2Ps(s(B?jUqqxDgvtwC0U;XasUa(Xbp z@RKX;{S#*aju}}syhSL3Oj{3`cKf%AIjPGsQ&XaJ7MRvqQT%2nr`uDg!vY=BG0q@H zmvWyyGXL4QPC+as+VZ%RD_^iaEIO{3$$B3S#$bfDnap<{@FQpsq&$}Ta%$3`X_8Y6 zTBgqxITFU5uIqcIaMBjl_1pA;kGwa{h2x2p;g6@ zH0PrG@v80^ZtL7|KQ61X;S}l;($>nMUGbubd78GgwlXxANl@s`WM|4yI;DkNF?}-bB^CVaOn%)54#a$mhlgRTt=}Mb~un;^53gxjQRoaF-FQ(|}No>LJs3 z4sGIal^VdS%z2<`FEnUbCVan?DzxGr(IZQE`;)#D>v+ki_7NPspaBSdZ_)uv_{n7Z z5$A|oMgwn=Y;gncErFT4k;}6T4Pm$B?8xXjFKbUSt@4gJL`v(?DF0d}j(pO=M!sL# zfe!O2Ru5L(2CA*c7$cAhRqep6P~kSkk2I`K>LXya0M*mwdx<>cHS}sSnh%=@XlV!8 zuz4FSl?tfEDkXTPu2MZhJ*@$ACoPaULyjIZsg2aAuC$rs+~q-niRmbAT>_Eo8u}3o zSxspL0p4ceoK!fit}S5fG;Q9IQ4?qd=2+wv1yuD=M50|JL9EnO4IMhBtx6y%*efgE zNm7w>&>#&Q?E18*j?47(CXiB3fuV>c{I<%ZS3{(Rp&35Sp%(JxG6l{hy0eBOM4!~v zmH((Ju++DV5|JP-C?kSng#xrWjPq6!+;ps#GNZUqEZ{2JMfG2Nx;mp>ZH?0DwBkW9 z!GAn4Q%%CwRLlqJH&3+yhJ)Pt1*-=jP%N$zaS<{sZa?jMQAG%Pr5P67c)Q+6LX@6? zM>BJXBLK=&HJ0GXsscov_GzDs4HmMd`TO!|GjD==O-mm~^k~(nLfRw8y5h%6Fv!sP z>GPQ0LY$s~chKlU#g~XPh4#Tk-%2I^yLcxQ&|aVsfOIn))H>hb7{N!KoTcQ#EQ-A1 zM|CY@Sdi5A<2{7#8K!{@b1-NO6E|uORZTh&;!;&bsVaOUmoISKsybcM^;Jg48;f=};FKmB zb5@8tA@3oa3@1NSOZugb9$=s(K_)ESf> zUc#;#aSIt_yd<(MC35InT9OGHutV)Pw3A#iMuU?VDDKSmtm6o@nXzvbOUD zt4(c8MhX?5&^B@f0T51oi2De^5CcbHLhgxps*xE-J|qdxvPGq+l~-CrE@sM2C!tE6 z5xh#fh)Sp)@U$g8Ao3$ncH~av=kN*x<{^M#a>vjqB*VW=}swZu0hKSK*4@F_Z; z5nfHv;fex;Wz}VFcRz;F+O%BwK?+Ep270;3r$82 ze(rvR@E*h?$zO}=XcEyh{4`65oIyIva6)~?40tn$ME9(;y_vQVIyOiUO~KD)&!*Uc zb&CSalz7qfCD5G|Olz6h+dyEi<=ny^)sbTWP01ohQ!8C(iItZfMgnt!^4@LcMgv*I zWhRy%XtvOY?BsK*%Qrx8c1 zW4!Mr#H~Rm4TD{yP&AU=Lr=kGiaj+Ix~K@#9{bVdqq0pV{pKN1YSI7#OMc;Ij5!Sh zQMQ(YcuoID;krtWTMipi(Lvcx>XtVc2s+wdB#L4y%( zImp)faMa+lG*lX1P$#2nuN$~)$Dv?mjXfwxXO>Lb3u6GDww#N1F-=tcLo*ULf6k0{ zkieC#mZgqn=%E2$IE6LPX&A#&C?U^X(e{Uzq~!g^fbf~=FJ<|TH%Xs^SNb#Dl08GU z#l%3AlDb`%O(4e9y(Wa(e+ZPvhmV$_yQk0cxdIwks=e#U@67J<#$G zTj&tl;#07oIwae5f{gl9UacpK0{9IovmSaRt3|PKJS$ZiaPovfws zbO%uD&0xvhaRL3LUxs&ad)=(>0R^JXf3Kp*GpZ+7Pd1?c)(4u0H& zFh5_P-u)avnDFI1W!VNQ=G@(U1k~jD^iZgH+n3vWtZFy2+i6pL{LNT= zI|7RN3FctDf#jWR1Aqz^A6K0N4}Rig9FOpJA3cki{!E;^<6g$V26YQ)ru^2;PJR<< zj^ko--W0!i0u|`ydj8wPv~dX&`NKQ;U$b_dyhHbBJDD9AR*fTp6BpN$z{$-%LE~>M zHk15$xSa?TKZjP8jT<=FDEnC{%F|kJ=q?0z-9PeY0atRt z-==f+k*qI=iT-hSD6la86v3_WDFa#P+DjIeeQSz)FtEwj2m&x4qq~LaUtvJO;`glq zZg=(ed3~H-ANT8nqEpAiVJDvv7$F>>^y64BlNID77$IW$RS^AjKZ*&!oppVfAQLAj zQAc(A#L+89O5Bcs5S)dF`}J0S`~_P{-@X~bHL5r5Vw$~hs5L=c&<{``0=QDUYL{ODWUp!wH`*UT4?wcy8rMWRe=09>|x-O~fyhl9!6 zG#2DIm$62m>4Fjqg9s9>d&g+ja)EGz!{wDSn$?T|@u#*ouyxxp!N?4|EM;kO9z&0{ zV1bUZd}IO9K?xg}i#m|1iQ6M9g;Vp}dmT3D{d$id=Ee2Y!fpj1t{(CvpU;41LLkqa@8VbjYDo4pp5IH7RSGX*jyy z2B@dR;4CP#P29x+N>1F^GzVEj)6|V2XZSIoMQb23DCUcdR6_+Pn5M~{(cYl!ZH7t0 zxiV@{l@!*;62Tx5yJeTy`$}rjWE9vY9FnuTUN1XRMhhk!WZtN)s*a*f^&7oKBRdA+ z2jJ?2VcRjJW9B$Q(!3|+u3N7P;k4G&T<$>9YDR%}hG~+b&+UyM6iEATaD|t}U2W3*+CAZp|{k(1}nH}Do+RdN{a-F0t({)C!~ z!VBnd+n}|MZTw)3^}^+;O@c!Je;SJztq$P>0zq0sVePeaIR%8G z1#=>w>WZ|IGutrDNes$^Q4ImB%eTK;?GCfrV3ncv`Y9+0_HvWtm$@)I7}VTu-~%l+ zsB6nY&i9+$O+W_9_Qo*U)8p>Ams4hnHu6%kzoQ0nPW7}sFXb%cNX0Ye>_n4T}5J>;NSI1^w7= zC~Z&MLyAPOVE?R$mLW*!TG>0r2O+svnYjpD11$~huC9!>pvSW1G!-)Bs77O@fI_V#Ui^FwIlwbV(3qpG~8yqKpn|PBZoERSR%edA|$Aa<#0gTuror`!7#e%@DRa7P|vC8BFHuSartPt zAfBKB%U(|LjC!an)4M2s);kxPrV;krnp!~On99%8qUY&{BM$j$`55^&vqf zpk@ibpS{ljg#*x)oc<`QTh<*UV9A$A(6*%Wq z(OWz|jNwisHf#n8E$(KBS38s$%=;f@p#=V}9y7w}8g=~)^fG%(<&i_+|B_v%Ljx*J zd{`mi95o~`c-(|cjH!BYvKh*9Kkan95pSJ#iP%>rA43g(j|}?kDH2>86nXlLUU_JG z2KJ}!8x}KOU}Y>=c{zFkHA@t->(PS1?fbjHoh1RKWr*y(~w^2SuqZuX*7FXbY1NY z#kKH;E;SFMZ^y%Nf+H%I>jRdc8WO8;W8Xo5?dVJVWq=*@b>eMF0;7wzT^G5AXgT*+sWAwg)03aU)_q8-#bhmYXGrE+~y2r(s}#A z{ZMf`zW6^mqk($!;_t@sw{1MPU*IMK?&W@3-au4GY`mIc^l7OSD*Oj z9E&^Ip^DK39gcnwIA?0L+q#=@kLhO#ug*zI?!c>s zOe}CiTNJXwo7;OZ52o~dIzMh@$v;g_a8qB>wSSBL-8$JkS(@$=@*_90k70gY(KTF1 z-UMKY@+y8fALRNtZ9s*GB`FW$*S4-SH&@5FxW#O(u&kr37zu3tPT9G(>bcu+MuN1E zZ@4_t=2|2OwCb{>!q5SGg^rgcQ(Z;`MAOyWt(_uO`k`SI$*qqPWVmZHb>$hrQCDd0 zy8Lr&^nMr}0>rAd-FcpUux|C1A1=u!LNKpwS>$8uc2zZ~Gh{o;v7jGaZjG-h-0w9v_4&2=DOFDU?u$mpFD5KYP1NR<2hBL|A zw2&ovKdb|7y94>23GxCRQaN&|`)~nxr_^-t7TT?f?ErR&9PyNo44`H5q+%t}p+mr7 zoy(U63M}xU5bAjb84u_yWCu3Z*M`2&s0^gZkU>JQjLP?-Hh`BkP|Yh5R+CV@XBq58 z)~uKKHN%_c&NF8quRN1Ah`CUt%Q%s#73{9Jrs9W~kqAwnQAE6*?t_+jCoWLW;ZiKb zbXCnb9Pc*xaq!77d48xVcOYbEaq?K{m5^NG9KyeZeoKk?8beo4kz(czWU`sw+9f5& zvroUa5-D?bHL20}_0V#?c_#YlO{U(br+(6-tpD_lL;egV2H6 zeF2E6fmx_1k+zJWoMk1G%M6~&{ICRswiyVMq;8})>0DNovt^4Kn|Mb!H>fO~2m^_G z*Y=d8noGVQKjJR2b5Jm92JxIeP=pU89|oD#tg8^KoEhapJzOf+aK#xDc||&2_8rS$ zt{%>@>Lf=S&-#T3g+=bZCtrFS!EzRp#nrV1e~X1&TSo_F%rb*}z2TJWA>{mQ-2>0Y zu3fT*Y~57YVJ~geb%TLz>WcDM@#D29YY*&BEYO%1jEIIN&295)0NOe#_s3j_H?mN? zCgjl7RXmO?)LOYg^)ZN`A&bf(z%e3IEo$ftFN`P~i&pZUiUTqG99|q6@>)(V%ZIt% zryvOw7Bjo-g6l+f>XykBHEaqt(0rtN(~RA;rt1xJ3p&>_5@X0~?8${jfa}NQ7?)i( z2etF#P$c3_JeGsyNx`hc2#DB~4knA1xGoljx2{3|{0I0_pmEnQoKRCfYJw(v0@%SwTwL2O#{-k%Uk!Lk&4-nG4Jc2zf|uZ`F>3>>T}N^RBVT0(c6@VKN8Evd(hb^t zGB&4it87zi0N2_;qO#C3oZ^!MqV{C|@4`_)#{-`6p->!lUY z6#b_7B4nCzU7zdp{+a&E&8}z^Lnc(cF+jP4{lfSR*?0$lj)Sl0fmY@?<8hV(-w`253Uh%r*nX)HR-&4 zyG8C9X>9jWALV15Pz@Mw4(I&|k~HJfi_@ZT^@`sm{jYMn$QCTB6|RN5wr|>)1MlC& z@_;;*ZHix?H%?Y#@K@6=UHqNA09&D@(*3FYQ(3+-$sd=d_+nal9Sd=h2c1*@e?PtT zER~1YneF6JW&l4xz`sHh{Hw3fpSp2sB$zF&xHO^Gi~$PP8#g%U%k z#NmGZwUNJf@s2ze>T?r__2G!2DLJ+;zjce-P1H_49l3bq--n5B5Z7K&iD%PaIUu)t zTgRB`fKk#c$mQ#HGus)2d>uBm_ zjNnIJLkS6;(D$)``q435-(Aq@JL9F4z5wPIp4S0e~`XAKm4>i#kKDL zH~tjWo$xYs0<571WOv=-(XG*AC^&yE8|Ngqd>a@KKK|U}S>r8z68iGp-}}mxDonZQ zQghe!{kV6H+w!MnTZNzc`-(AW#^TgjT5W;)R!Ld&%VGke@{Wba=LA1sM$FDKYqMBT zTXTLtsmoZixfvJbtz?R{T>wq;JkH*X_Y6-PvFBE&d9|n;ZB^zVw=`eJx zl98tPC7$NIvnH+4dn#^8o}xx~=2t$yUREWGtS9;D0SRIzGYv`69>`0|yQZ1hUQ8H< zc&iPVviXWPPQI%<$JC&%2X6F9QZ;=i&U!9;e;33N`*wg*?fcRseQPs->zI`7>!Hah zO($8W9s-;cPU2|NVcXP15EFy69wM$R-?>PG_Lcl!VnBk_@><7hh^lkqB5ImAdKu;! zOz`lXT%>04=tYjalaIr4nr6-gbr6u}uEU2Ie02tl?9>{+$h5Wqi&Fc0$gV;Cky&ff z?y(l~tgO

~atzsJvvp&$w_}G(d-s$lski?<* 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

j`Dzk0F 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 z
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 literal 0 HcmV?d00001 diff --git a/x-pack/plugin/inference/src/test/resources/org/elasticsearch/xpack/inference/highlight/sample-doc.json b/x-pack/plugin/inference/src/test/resources/org/elasticsearch/xpack/inference/highlight/sample-doc.json deleted file mode 100644 index 2ae09697d55af..0000000000000 --- a/x-pack/plugin/inference/src/test/resources/org/elasticsearch/xpack/inference/highlight/sample-doc.json +++ /dev/null @@ -1,4310 +0,0 @@ -{ - "_inference_fields": { - "dense_field": { - "inference": { - "inference_id": ".multilingual-e5-small-elasticsearch", - "model_settings": { - "task_type": "text_embedding", - "dimensions": 384, - "similarity": "cosine", - "element_type": "float" - }, - "chunks": { - "field": [ - { - "start_offset": 0, - "end_offset": 1329, - "embeddings": [ - 0.04979738, - -0.049024884, - -0.06267286, - -0.06284121, - 0.031987894, - -0.08689449, - 0.044664543, - 0.076699525, - 0.06471937, - 0.028753767, - 0.02369647, - 0.011940286, - 0.041063324, - -0.0031249018, - -0.012605156, - 0.020917466, - 0.0698649, - -0.07892161, - -0.010968826, - -0.060116883, - 0.012380837, - -0.022275316, - -0.02007232, - 0.053651124, - 0.045564346, - 0.06287834, - -0.026206115, - 0.034378637, - 0.028786598, - -0.07342769, - -0.05178595, - -0.03394133, - 0.06494073, - -0.07682645, - 0.039480515, - 8.8730786E-4, - -0.035883103, - -0.02245836, - 0.051104713, - -0.02161596, - -0.0014411546, - 0.011840296, - 0.044061452, - 0.018550612, - 0.07816852, - 0.023765374, - -0.04192663, - 0.056223065, - -0.029935915, - -0.039640833, - -0.061091922, - 0.048074532, - 0.03252561, - 0.07752945, - 0.0374488, - -0.0938137, - -0.06071223, - -0.053990547, - -0.06630911, - 0.040193927, - 0.038531914, - -0.023115646, - -0.0046846615, - 0.025255106, - 0.074686274, - 0.10130572, - 0.06328507, - 0.017575556, - -0.040289026, - -0.013285351, - -0.06927493, - 0.08576633, - -0.003492294, - -0.041360997, - 0.036476493, - 0.04270745, - 0.060671005, - -0.0651591, - 0.014901469, - -0.04655241, - -0.006525806, - -0.037813406, - -0.02792913, - 0.0472146, - -0.07142533, - 0.06478618, - 0.0716035, - -0.04885643, - 0.073330306, - -0.055672232, - 0.057761118, - 0.07276108, - -0.076485656, - -0.06970012, - -0.0692586, - -0.051378023, - -0.06273683, - 0.03469511, - 0.05773398, - -0.08031594, - 0.10501066, - 7.310874E-4, - 0.050745558, - -0.016756695, - -0.031716295, - 0.0050844094, - 0.031707063, - -0.039744828, - 0.05837439, - -0.09262242, - -0.04054004, - -0.0075583286, - 0.061934657, - 0.035783943, - -0.055616625, - -0.047291458, - -0.027218537, - -0.011617415, - 0.026992036, - -0.03259098, - 0.08588563, - -0.015476044, - -0.04406553, - -0.058256716, - -0.049162734, - -0.018606737, - 0.02703335, - 0.023426747, - 0.028659008, - 0.014869456, - 0.04368826, - 0.03709602, - 0.0059531354, - 0.012405994, - 0.023295961, - 0.09050855, - -0.025719937, - -0.038713705, - 0.02654418, - -0.07065918, - -0.04294843, - 0.050370634, - -0.0033409365, - 0.052235987, - 0.07693816, - 0.043221552, - 0.07534102, - -0.048658077, - 0.06533618, - -0.016787754, - 0.034524675, - -0.0312765, - 0.05486932, - 0.06286382, - 0.03278902, - -0.06772777, - -0.087687664, - -0.0665437, - 0.032016467, - 0.066101246, - -0.11844821, - -0.032777846, - -0.053238686, - -0.015841002, - -0.067591116, - -0.048692815, - -0.013267198, - 0.09390532, - -0.029956369, - -0.021315884, - -0.03857401, - 0.03929155, - -0.023058, - 0.051734913, - -0.023478175, - 0.035602726, - -0.08242782, - 0.058339056, - 0.045796614, - 0.05448777, - -0.047254823, - 0.020266606, - -0.08056925, - 0.0015524789, - -0.041604258, - 0.00718068, - -0.044556983, - 0.02106678, - 0.04749506, - -0.01840031, - 0.023407241, - 0.070747316, - -0.04295862, - -0.07703961, - -0.0660327, - 0.013576343, - -0.023668775, - 0.056404322, - 0.09587012, - 0.05701044, - -0.036240827, - -0.004225128, - 0.0067939283, - 0.035346694, - 0.026707595, - 0.017638108, - -0.032440145, - 0.04708931, - 0.012399647, - 0.07325736, - 0.027942428, - -0.08172854, - -0.07065871, - 0.033890083, - -0.033598673, - -0.08178952, - 0.028348992, - 0.04411821, - -0.044644725, - 0.03074351, - 0.0935692, - -0.04762361, - 0.051226508, - -0.08009367, - -0.03847554, - 0.016323369, - 0.038776945, - -0.059975337, - -0.057062503, - 0.010849399, - -0.030187564, - -0.026308322, - -0.067967005, - -0.079719126, - -0.08646553, - -0.09048591, - -0.018597756, - 0.0047154897, - 0.058588482, - -0.09175631, - -0.08307076, - -0.035472285, - 0.009541795, - -0.026162423, - 0.03335252, - 0.018381111, - -0.015803808, - 0.021074254, - -0.010327698, - 0.025227644, - 0.06197503, - -0.059137702, - -0.018673804, - 0.00707259, - -0.019355131, - 0.026796991, - 0.025893785, - 0.0685412, - -0.06301929, - 0.003187423, - 0.029026637, - -0.019066911, - 0.09354283, - 0.1061943, - 0.053696748, - -0.0016658951, - -0.0030081598, - -0.028984388, - -0.037768397, - -0.035445668, - -0.026019065, - 0.028805656, - 0.021448314, - -0.059069104, - -0.06226507, - -0.05508101, - 0.022365203, - 0.09221683, - -0.07698258, - -0.055819187, - 0.061300304, - 0.05965072, - 0.029480126, - 0.057750076, - 0.05180143, - -0.0159732, - -0.0823228, - 0.09240897, - -0.08318623, - 0.002020457, - 0.010953976, - -0.09685372, - 0.05271347, - -0.04232834, - 0.061398283, - 0.044973806, - -0.02088832, - 0.044399235, - -0.014687839, - 0.06304118, - -0.022936989, - -0.033005796, - 0.074231274, - 0.023939423, - -0.087914266, - 0.036014125, - 0.0062753465, - -0.03355067, - 0.036039222, - 0.012712498, - 0.057161637, - 0.05654562, - -0.018600527, - -0.035825036, - 0.06950757, - 0.05828935, - 3.8511172E-4, - -0.008722925, - -0.0522819, - -0.10943554, - -0.033790745, - -0.03357093, - -0.031342223, - -0.07834354, - 0.032603115, - 0.026984481, - -0.02969966, - -0.048259087, - -0.012163297, - 0.007793295, - 0.05574152, - -0.022157356, - -0.03623348, - 0.037055306, - -0.033247784, - -0.0070533184, - -0.057643052, - 0.08567554, - -0.07278431, - -0.06556353, - 0.0308075, - 0.052940007, - -0.0566871, - 0.0287218, - -0.06409354, - -0.0627855, - 0.06254832, - -0.027221028, - -0.049813032, - 0.03935744, - 0.07234624, - -0.09398941, - 0.011342199, - 0.028675176, - -0.022932779, - 0.009481765, - -0.022316003, - -0.015413267, - 0.039174553, - 0.061736017, - -0.04229645, - -0.052905895, - 0.018588098, - 0.070939854, - 0.0748456, - 0.08648295, - -0.036223643, - 0.008473833, - 0.053857446, - -0.07680301, - 0.0785199, - 0.03982, - -0.039509695, - 0.03373825, - -0.063460656, - -0.038993217, - -0.073084034, - 0.062789686, - -0.081148736, - -0.035036374, - 0.0754924, - 0.087299235, - 0.04096056, - 0.027776068 - ] - }, - { - "start_offset": 1281, - "end_offset": 2685, - "embeddings": [ - 0.035266396, - -0.044093177, - -0.04158629, - -0.045926083, - 0.06521479, - -0.050932676, - 0.03961649, - 0.037828345, - 0.025232289, - 0.029732272, - 0.034696255, - -8.805868E-4, - 0.053202488, - -0.0047244085, - -0.037418325, - 0.0770543, - 0.105328426, - -0.036611717, - -0.039531372, - -0.082817726, - 0.021342339, - -0.01843601, - -0.042259317, - 0.06317797, - 0.036926534, - 0.069380246, - -0.059219223, - 0.043066744, - -0.006286799, - -0.06797077, - -0.042236328, - -0.036919896, - 0.034179892, - -0.026980922, - 0.051384695, - 0.03826208, - -0.012975077, - -0.025295, - 0.015923942, - -0.027602347, - -0.022515642, - -5.98229E-4, - 0.06122002, - 0.050380763, - 0.04684541, - 0.08975921, - -0.03755087, - 0.046912387, - -0.038697798, - -0.06988436, - -0.05219296, - 0.041337684, - 0.023435602, - 0.023100449, - 0.0352068, - -0.060556572, - -0.042356305, - -0.04503575, - -0.07377149, - 0.084542595, - 0.028644886, - -0.024366854, - -0.009185593, - 0.01255741, - 0.06999743, - 0.09439326, - 0.03800093, - -0.008208419, - -0.09673358, - 0.0023752274, - -0.07626475, - 0.098563485, - -0.012569254, - -0.08954541, - -0.010908005, - 0.016228944, - 0.05984263, - -0.051004995, - 0.024147974, - -0.050623365, - -0.01668758, - -0.007899899, - -0.029833568, - 0.034388572, - -0.03505155, - 0.08271141, - 0.08569518, - -0.053716324, - 0.06806682, - -0.067159526, - 0.043537326, - 0.09806787, - -0.041304354, - -0.05103136, - -0.109280586, - -0.06120091, - -0.09363793, - 0.032154918, - 0.12145496, - -0.049101993, - 0.07359592, - -0.010511772, - 0.074003994, - -0.013990566, - -0.026140982, - 0.052602872, - 0.09067435, - -0.070553906, - 0.057253607, - -0.048433788, - -0.024026526, - 0.018851176, - 0.04090621, - 0.058670815, - -0.08735305, - -0.022817774, - -0.042838365, - -0.016657954, - 0.03224679, - -0.01952135, - 0.016957905, - -2.0869492E-4, - -0.0039428347, - -0.05186959, - -0.062616155, - -0.056938402, - 0.00882266, - 0.055156156, - 0.03221514, - 0.026071686, - 0.073993444, - 0.060973227, - 0.040219847, - 0.030080495, - 0.074190594, - 0.10667069, - -0.035753082, - -0.031658202, - 0.024792355, - -0.056956623, - -0.04320206, - 0.042175233, - -0.04459597, - 0.063075, - 0.03682348, - 0.087945856, - 0.060606126, - -0.02543529, - 0.101843245, - -0.02052844, - 0.065993346, - -0.01580399, - 0.01996002, - 0.025750767, - 0.044288505, - -0.055157375, - -0.0834102, - -0.07820265, - 0.01860491, - 0.052071907, - -0.082538106, - -0.06682723, - -0.031070147, - -5.8769673E-4, - -0.05546835, - -0.041754596, - 0.007750717, - 0.06550786, - -0.024858464, - -0.018027157, - -0.070528544, - 0.04311053, - -0.04646167, - 0.038272627, - -0.023141516, - 0.035724208, - -0.044601943, - 0.031177005, - 0.060686704, - -0.008791896, - -0.045239996, - -0.0015549486, - -0.023560282, - -0.02124949, - -0.028758224, - -0.01994061, - -0.031099308, - 0.033113, - 0.04315839, - -0.014818203, - -0.016493127, - 0.03928858, - -0.049371842, - -0.057269108, - -0.07144285, - 0.045010682, - -0.02822895, - 0.026698994, - 0.08181065, - 0.0497983, - -0.0033907534, - -0.023786934, - 0.013289109, - 0.011108559, - 0.075379916, - 0.012320797, - -0.045297462, - 0.09245994, - -0.027429234, - 0.058199212, - 0.06857553, - -0.0705278, - -0.055046707, - 0.025127407, - -0.044880733, - -0.07819047, - -0.016903652, - 0.031777192, - -0.027202426, - 0.033661053, - 0.082595035, - -0.010536667, - 0.067396104, - -0.048291907, - -0.038250096, - 0.009253138, - 0.040732533, - -0.06330689, - -0.074753396, - 0.04644269, - -0.029993957, - -0.033248927, - -0.053877644, - -0.098819815, - -0.0260293, - -0.030682972, - -0.034318104, - -0.014064486, - -0.020334287, - -0.12791014, - -0.017047742, - -0.052973263, - 0.017977173, - -0.04006773, - 0.066867575, - -0.07052264, - -0.02385362, - 0.028173303, - -0.07004571, - 0.053027462, - 0.039910827, - -0.026693301, - -0.07183149, - -0.073637374, - 0.008942395, - 0.012631494, - 0.040236488, - 0.07312884, - -0.1052349, - 0.013788912, - 0.05933606, - -0.012417836, - 0.07844875, - 0.035665687, - 0.0692123, - 0.011978119, - 0.0032255524, - -0.02082568, - -0.027911682, - -0.008114962, - -0.100171834, - 0.012006536, - 0.027355125, - -0.069779284, - -0.06982269, - -0.02499225, - 0.06460924, - 0.10172508, - -0.036987256, - -0.027838582, - 0.06524349, - 0.03478602, - 0.047589943, - 0.0034753575, - 0.035028856, - 0.03955437, - -0.056392808, - 0.097454645, - -0.067250304, - -0.016183723, - -0.010761581, - -0.046665948, - 0.052830804, - -0.06562526, - 0.0143448245, - 0.035826858, - -0.030075911, - 0.074224986, - -0.01484229, - 0.047223467, - -0.05010028, - -0.08323114, - 0.024850823, - 0.0035780836, - -0.04660368, - 0.012318496, - 0.035511326, - -0.006625753, - 0.023968346, - 0.04152267, - 0.066447295, - 0.031807587, - -0.026121954, - -0.06298641, - 0.09144068, - 0.07982457, - -0.047639504, - -0.011746696, - -0.03417992, - -0.066457696, - -0.015668094, - -0.036196046, - -0.0029406173, - -0.054462895, - 0.0029062356, - 0.019851439, - 0.0064928187, - -0.06603669, - 0.016133538, - 0.0441623, - -0.013663719, - -0.027901169, - -0.05862742, - 0.035473794, - -0.080742985, - -0.012147599, - -0.06269955, - 0.045475967, - -0.07024215, - -0.09113673, - 0.018147662, - 0.037072584, - -0.011495025, - 0.049087547, - 0.00970628, - -0.043941073, - 0.052213665, - -0.027107846, - -0.05408287, - 0.04391075, - 0.05903725, - -0.11579457, - 0.0179941, - 0.023727184, - -0.027765218, - 0.058974497, - -0.041185096, - -0.06411593, - 0.05297974, - 0.014402285, - -0.07491701, - -0.046273973, - 0.025595015, - 0.072552234, - 0.07913544, - 0.05780724, - 0.010108354, - -0.032680638, - 0.07236567, - -0.059348762, - 0.07916222, - 0.06330368, - -0.040674247, - 0.014580703, - -0.056963094, - -0.05973973, - -0.028593862, - 0.054875106, - -0.083951905, - -0.030538274, - 0.04507664, - 0.057579767, - 0.047284584, - 0.029037142 - ] - }, - { - "start_offset": 2660, - "end_offset": 3932, - "embeddings": [ - 0.060263444, - -0.011627793, - -0.07406454, - -0.061137985, - 0.035276245, - -0.06492958, - 0.036304567, - 0.03849267, - 0.032589767, - 0.034697585, - 0.055276874, - 0.0067610983, - 0.07107068, - -0.028453767, - -0.023335157, - 0.066190325, - 0.09514554, - -0.031573914, - -0.036566608, - -0.03254594, - 0.01258663, - -0.008238347, - -0.024652604, - 0.058704935, - 0.029146092, - 0.0538354, - -0.033388253, - 0.035337757, - 0.048961233, - -0.06575967, - -0.060514227, - -0.054762013, - 0.049676932, - -0.062150035, - -0.019077798, - 0.018297857, - -0.043477535, - -0.06992983, - 0.041489013, - -0.06091549, - 0.00857616, - 0.0013787356, - 0.059843466, - 0.065656655, - 0.07694915, - 0.07400389, - -0.008740612, - 0.02598118, - -0.04293424, - -0.029819168, - -0.057130232, - 0.08674767, - 0.0020843677, - 0.094413035, - 0.026790254, - -0.07488432, - -0.06260386, - -0.059874497, - -0.022945922, - 0.07328087, - 0.0012629362, - -0.014891515, - -0.017552191, - 0.04158861, - 0.074740976, - 0.13079657, - 0.03465537, - 0.033060353, - -0.071494736, - -0.042101286, - -0.09333479, - 0.075504355, - -0.048976846, - -0.07538883, - 0.016815975, - 0.014265034, - 0.04265424, - -0.055298902, - 0.021028202, - -0.043243185, - -0.035213232, - -0.03872826, - -0.03735794, - -0.009753857, - -0.06591585, - 0.06382551, - 0.070999734, - -0.07432682, - 0.051665448, - -0.06200163, - 0.035289973, - 0.052576542, - -0.08547946, - -0.051438782, - -0.06883237, - -0.04034897, - -0.1139505, - 0.029103009, - 0.056813173, - -0.033878006, - 0.065993756, - 0.0012909115, - 0.030890198, - -0.026131464, - -0.042535, - 0.044831734, - 0.075214975, - -0.045039084, - 0.056481812, - -0.052748743, - -0.042459268, - 0.016207209, - 0.032704834, - 0.04342557, - -0.031859122, - -0.037544478, - -0.023973966, - -0.056660555, - 0.03458018, - -0.043174002, - 0.07610799, - -0.040468093, - -0.041871496, - -0.04984353, - -0.040546015, - -0.019524354, - 0.04170828, - 0.020450952, - 0.0404415, - 0.03985574, - 0.032101743, - 0.05156037, - 0.048545454, - 0.03334057, - 0.025009904, - 0.090053804, - -0.030840183, - 0.0017696177, - 0.01567415, - -0.04152217, - -0.031758398, - 0.020865917, - -0.05755524, - 0.04980784, - 0.050742626, - 0.07122176, - 0.06281647, - -0.012783542, - 0.08377948, - -0.029796185, - 0.017047247, - 0.011766123, - 0.03557249, - 0.019037597, - 0.028088165, - -0.07208148, - -0.08005564, - -0.057871744, - 0.0153855365, - 0.054635677, - -0.05614729, - -0.031374976, - -0.06079491, - -0.041638877, - -0.055767294, - -0.048497472, - -0.007389678, - 0.012500725, - 0.02392964, - -0.03444656, - -0.032773327, - 0.050030876, - -0.062147807, - 0.03894452, - 0.005381243, - 0.005100098, - -0.082184665, - 0.01259893, - 0.06914528, - 0.0502573, - -0.014370648, - -0.039859537, - -0.06393138, - -0.061919075, - -0.014192415, - -0.032273103, - -0.0464307, - -7.1235467E-4, - 0.051684704, - -0.006423554, - 0.0010265269, - 0.057130195, - -0.044715635, - -0.08753112, - -0.060454912, - 0.04602993, - -0.009173136, - 0.030031096, - 0.05415974, - 0.040149722, - -0.030073693, - -0.0026639393, - 0.06262825, - 0.0073858122, - 0.07543514, - 0.013202129, - -0.055555925, - 0.076006316, - 0.0069068773, - 0.037352845, - 0.05844025, - -0.087049164, - -0.0934209, - 0.021478496, - -0.06904104, - -0.035960656, - 0.012564326, - 0.08203622, - -0.0589588, - 0.038763568, - 0.059626605, - -0.0015563822, - 0.056733213, - -0.06597729, - -0.0487247, - 0.030533105, - 0.059536766, - -0.043689486, - -0.044405177, - 0.039805703, - -0.033027582, - -0.034072082, - -0.080049135, - -0.08942587, - 0.019459073, - -0.044563998, - -0.06931994, - 0.021550108, - 0.022951653, - -0.051044974, - -0.03676219, - -0.050016202, - 0.03538716, - -0.06436871, - 0.09116231, - -0.03250418, - -0.008333591, - 0.02689493, - -0.023252478, - 0.04825159, - 0.07439804, - -0.08796822, - -0.04385184, - -0.05042988, - -0.056784004, - 0.057135444, - 0.055787697, - 0.056427166, - -0.09837734, - -0.0036608325, - 0.013839507, - -0.020212527, - 0.09865649, - 0.080563836, - 0.07525103, - 0.033415828, - -0.02267602, - -0.067864396, - -0.05965757, - -0.010466497, - -0.047837727, - 0.017926434, - 0.032667693, - -0.069811225, - -0.011690649, - -0.044193, - 0.023269301, - 0.07142345, - -0.0031622057, - -0.0047916253, - 0.07077121, - 0.03767678, - 0.03410683, - 0.036370695, - 0.01696176, - -0.026317174, - -0.008320507, - 0.09212631, - -0.07694487, - -0.034243643, - 0.0110022295, - -0.060418822, - 0.07019466, - -0.051362276, - 0.078166254, - 0.055226926, - -0.04018289, - 0.063233584, - -0.032110535, - 0.08297619, - -0.009597479, - -0.057851054, - 0.042411964, - 0.01997834, - -0.07460758, - 0.061238132, - 0.0050869896, - 0.023704918, - 0.03991232, - 0.07121017, - 0.067201145, - 0.04065065, - -0.05990329, - -0.04676335, - 0.08255157, - 0.039478876, - -0.05370604, - -0.015417656, - -0.061638564, - -0.113423236, - -0.020872636, - -0.06506326, - -0.019086778, - -0.07550901, - 0.023448454, - 0.031439524, - -0.018936215, - -0.061786037, - 0.06917624, - -0.016625067, - 0.04495578, - -0.05168137, - -0.06433023, - 0.019382514, - -0.030735377, - 0.010870069, - -0.05917494, - 0.033261493, - -0.04571641, - -0.078268915, - 0.03133073, - 0.04491661, - -0.036725685, - 0.05521663, - -0.02092035, - -0.04205282, - 0.035851613, - -0.0015220186, - -0.02102678, - 0.054027468, - 0.07405003, - -0.09111273, - 0.005834604, - 0.053133536, - -0.018385805, - 0.024131889, - -0.04136735, - -0.060419146, - 0.006526669, - 0.046679422, - -0.07396608, - -0.031180743, - 0.032524955, - 0.05950253, - 0.08502798, - 0.05705178, - 0.041140076, - 0.015673824, - 0.052156717, - 0.008876251, - 0.05783481, - 0.06875354, - -0.01914275, - 0.019451428, - 0.0017306518, - -0.09160311, - -0.06650555, - 0.06903168, - -0.11052152, - -0.08185994, - 0.0152816, - 0.056960557, - 0.06667231, - 0.042444445 - ] - }, - { - "start_offset": 3811, - "end_offset": 5053, - "embeddings": [ - 0.08132793, - -0.047893565, - -0.038560215, - -0.03994145, - 0.0558572, - -0.03973998, - 0.020470386, - 0.058355197, - 0.01980108, - 0.03896921, - 0.04879353, - -0.0074668517, - 0.05397047, - -0.010254351, - -0.042885937, - 0.08040558, - 0.091155075, - -0.052957732, - -0.035930026, - -0.03653066, - 0.013761402, - -0.018923452, - -0.04685841, - 0.04731581, - 0.027308341, - 0.020014657, - -0.04545417, - 0.028795317, - 0.04793647, - -0.0704067, - -0.042252712, - -0.05682541, - 0.066968046, - -0.09382263, - 0.02506045, - 0.019845745, - -0.015298284, - -0.044756494, - 0.032255, - -0.03357616, - -0.01634103, - 0.012012115, - 0.05378444, - 0.036496706, - 0.06764162, - 0.08833494, - -0.021727582, - 0.0363613, - -0.08750663, - -0.006557421, - -0.037404615, - 0.083952226, - -0.005245814, - 0.06731529, - 0.027517168, - -0.069114335, - -0.06600843, - -0.055819273, - -0.09175115, - 0.0908832, - 0.045391496, - -0.03755004, - 0.0018628142, - 0.015974216, - 0.034663454, - 0.07421443, - 0.045072228, - -0.0134752095, - -0.053152926, - -0.011296686, - -0.052672, - 0.064373136, - -0.009546203, - -0.08377613, - -0.0018304663, - 0.023774406, - 0.029625371, - -0.07841949, - 0.025992012, - -0.034211818, - -0.04341797, - -0.074051395, - -0.022789141, - -0.014875852, - -0.050796572, - 0.08730017, - 0.09586879, - -0.06974203, - 0.048677806, - -0.04995857, - 0.038378827, - 0.06020236, - -0.060032416, - -0.05082279, - -0.08157444, - -0.05524207, - -0.09547329, - 0.061129954, - 0.07330997, - -0.060067892, - 0.08218149, - -0.011082627, - 0.041907076, - -0.0016668623, - -0.020462176, - 0.0074657737, - 0.04153701, - -0.053815063, - 0.08984907, - -0.04856424, - -0.019359102, - 0.025180845, - 0.0580883, - 0.051315922, - -0.07716719, - -0.06010258, - -0.024739653, - -0.020786842, - 0.021310974, - -0.049855735, - 0.058490653, - -0.019344086, - -0.064905055, - -0.043594714, - -0.0414785, - -0.026626132, - 0.010384775, - 0.035636406, - 0.023757294, - 0.02353357, - 0.038512193, - 0.043469686, - 0.025641369, - 0.06005725, - 0.033108205, - 0.093584485, - -0.008513592, - 0.001993488, - 0.0266426, - -0.0135798985, - -0.058448963, - 0.030007407, - -0.03873391, - 0.012962885, - 0.03407742, - 0.052897573, - 0.048484456, - -0.0037075893, - 0.10519477, - -0.05359505, - 0.062401634, - -0.02432665, - 0.006226394, - 0.027923357, - 0.0724623, - -0.050624184, - -0.08479024, - -0.08688512, - 0.032354686, - 0.06821751, - -0.077089824, - -0.0014580968, - -0.04177363, - -0.027564395, - -0.0448798, - -0.042052064, - -0.009614605, - 0.07208001, - 7.672266E-4, - -0.075805336, - -0.05364635, - 0.06561775, - -0.032068495, - 0.04494038, - -0.044013828, - -0.0190166, - -0.022102332, - 0.034658328, - 0.050540138, - -0.01942592, - -0.020942092, - -0.02782304, - -0.065396436, - -0.04059357, - -0.049896274, - -0.0376796, - -0.043743063, - 0.040360678, - 0.07515184, - -0.018274747, - -0.009190847, - 0.055620983, - -0.041216724, - -0.073044226, - -0.05465287, - 0.010405976, - -0.013486699, - 0.02830836, - 0.06836122, - 0.020561688, - -0.01688864, - -0.020571496, - 0.04652389, - 0.020004654, - 0.060006775, - 0.00938477, - -0.05559232, - 0.08781834, - -0.025533192, - 0.052398734, - 0.057509296, - -0.09851155, - -0.09180138, - 0.038183447, - -0.06369883, - -0.054243114, - 0.020855743, - 0.10808265, - -0.04326038, - 0.023134552, - 0.088371366, - -0.03126334, - 0.044376496, - -0.07867371, - -0.03890121, - 0.051151622, - 0.037706945, - -0.03370568, - -0.008004474, - 0.041355547, - -0.023588097, - -0.026358435, - -0.04786497, - -0.108022444, - -0.04574715, - -0.03736998, - -0.048178125, - 0.034921553, - 0.06676284, - -0.060398124, - -0.024748335, - -0.02818482, - 0.02239888, - -0.07246388, - 0.04970122, - -0.010178895, - -0.010817003, - 0.05318733, - -0.050516233, - 0.04490196, - 0.057144474, - -0.031509876, - -0.06828971, - -0.057091262, - -0.041589297, - 0.034988903, - 0.05772322, - 0.08349064, - -0.07048785, - 0.02914558, - 0.037508357, - -0.018101186, - 0.09606959, - 0.09399272, - 0.033781327, - 0.026298832, - -0.007974394, - -0.04828518, - -0.030074345, - -0.008707313, - -0.06095452, - 0.0052815387, - 0.053281322, - -0.07403459, - -0.04375484, - -0.0024250182, - 0.030269688, - 0.08677468, - -0.044580005, - -0.023698311, - 0.09059957, - 0.03502518, - 0.039508294, - 0.03801833, - 0.051657647, - -0.023771202, - -0.021416105, - 0.08418382, - -0.07468558, - -0.022965085, - -0.037451513, - -0.070336066, - 0.07278321, - -0.06958301, - 0.061745293, - 0.034864236, - -0.05098527, - 0.075577505, - -0.01925352, - 0.028659336, - -0.01881169, - -0.09233528, - 0.052659664, - 0.046592344, - -0.08144535, - 0.04045172, - 0.021832049, - 0.01539719, - 0.036698546, - 0.048459183, - 0.0750458, - 0.03523083, - -0.093105264, - -0.042830218, - 0.08817936, - 0.05500005, - -0.03145603, - 0.002137886, - -0.09369107, - -0.0859627, - -0.00988302, - -0.03224872, - 0.009135905, - -0.07538188, - 0.01729995, - 0.05211995, - -0.028220842, - -0.09644254, - 0.08197546, - 0.021641405, - 0.044149674, - -0.02265579, - -0.03705849, - 0.0066629667, - -0.038971607, - 0.0077898037, - -0.07302501, - 0.050258975, - -0.031734023, - -0.05120743, - 0.006855154, - 0.03317757, - -0.054895062, - 0.020226864, - -0.028702717, - -0.054496907, - 0.03333692, - -0.01552826, - -0.024065949, - 0.034094118, - 0.06990785, - -0.11025783, - -0.022972278, - 0.094185725, - -0.034931783, - 0.045400895, - 0.0029167728, - -0.040711746, - 0.0069749537, - 0.02316794, - -0.07623587, - -0.032300122, - 0.040407263, - 0.056106865, - 0.084427394, - 0.09241687, - -0.014235544, - -9.3176577E-4, - 0.056472927, - -0.066110075, - 0.07017728, - 0.06319923, - -0.026196225, - 0.013847319, - -0.047189496, - -0.034471143, - -0.035234082, - 0.015169919, - -0.06258794, - -0.044817522, - 0.052238535, - 0.052592035, - 0.024454227, - 0.04652183 - ] - }, - { - "start_offset": 5013, - "end_offset": 6270, - "embeddings": [ - 0.050837185, - -0.058507636, - -0.08578978, - -0.07158996, - 0.062322024, - -0.06394126, - 0.033397503, - 0.066029586, - 0.059980292, - 0.014527764, - 0.027411256, - -0.019332865, - 0.09169677, - -0.028353753, - -0.024152989, - 0.026958432, - 0.06263654, - -0.057214282, - -0.01730705, - -0.06580778, - 0.012587115, - -0.0013240383, - -0.034304086, - 0.07279054, - 0.03153362, - 0.022333346, - -0.019766338, - 0.01765917, - 0.018127792, - -0.031060342, - -0.035549946, - -0.055531062, - 0.020338904, - -0.102598086, - 0.01697388, - 0.01325798, - -0.05225683, - -0.028536074, - 0.018755725, - -0.03648683, - 0.0047455817, - 0.007937342, - 0.05206842, - 0.07168695, - 0.08550893, - 0.0469701, - -0.053452007, - 0.050660927, - -0.028207462, - -0.038872562, - -0.044887412, - 0.0740998, - -0.013441051, - 0.07634305, - 0.0055091325, - -0.11408244, - -0.06909077, - -0.07962894, - -0.066142306, - 0.07568293, - 0.0025674207, - -0.080196865, - -0.006201128, - 0.00818501, - 0.07924847, - 0.10414052, - 0.042439207, - 0.035281047, - -0.040974326, - -0.04297422, - -0.024786443, - 0.06963027, - -0.016090378, - -0.077486746, - 0.013267866, - 0.0382188, - 0.075773925, - -0.045972046, - 0.021897435, - -0.057650458, - -0.026901621, - -0.047625203, - 0.0012063365, - 0.025827816, - -0.023581855, - 0.059192963, - 0.06759525, - -0.06503824, - 0.051352326, - -0.04751885, - 0.06295226, - 0.03710186, - -0.05161417, - -0.049769994, - -0.08769117, - -0.045511324, - -0.051784497, - 0.056573063, - 0.040720508, - -0.035331022, - 0.073139556, - -8.214206E-4, - 0.037490595, - -0.0021819966, - -0.024999384, - 0.019722067, - 0.024325203, - -0.044025563, - 0.06545914, - -0.019343818, - -0.0023573453, - 0.0018968938, - 0.06038538, - 0.02333629, - -0.06574865, - -0.027746813, - -0.025081333, - -0.014503653, - 0.02887482, - -0.034452263, - 0.07113403, - -0.03859757, - -0.06710839, - -0.0383765, - -0.06811556, - 0.0061613885, - 0.034110006, - 0.05640678, - 0.06142383, - 0.009073967, - 0.043047454, - 0.03466423, - 0.027530612, - 0.032211494, - 0.053615883, - 0.07377551, - -0.01758648, - -0.02144349, - 0.03956204, - -0.031308886, - -0.062522896, - 0.07004273, - -0.041059777, - 0.03381151, - 0.096379966, - 0.059807573, - 0.076913215, - 7.038924E-4, - 0.081829004, - -0.06641827, - 0.044492118, - -0.036664132, - 0.08141791, - 0.039923627, - 0.079390235, - -0.05483655, - -0.092164926, - -0.07556358, - 0.024775334, - 0.039525755, - -0.052411165, - -0.044712305, - -0.1251298, - 0.019936236, - -0.05971529, - -0.071407795, - -0.013429681, - 0.045429856, - 9.2904486E-7, - -0.011094936, - -0.053897448, - 0.05120436, - -0.051203646, - 0.05109921, - -3.9564449E-4, - -0.0018849113, - -0.04667166, - 0.051931337, - 0.07190472, - 0.03911436, - 0.0045251944, - -0.048008155, - -0.03397076, - -0.028034845, - -0.048654392, - -0.02667819, - -0.04844982, - 0.04652294, - 0.08667334, - -0.03595206, - 0.0059883194, - 0.04574355, - -0.049042065, - -0.0949724, - -0.0883229, - 0.022961965, - 0.0010751986, - 0.034764428, - 0.07906372, - 0.063135885, - 0.011506904, - -0.01975833, - 0.036684997, - 0.060913093, - 0.045704674, - 0.007864406, - -0.10908467, - 0.05677562, - -0.011089532, - 0.038626347, - 0.009512805, - -0.064039044, - -0.072748266, - 0.077210315, - -0.038597148, - -0.035940252, - 0.028666161, - 0.07342884, - -0.05140841, - 0.03324692, - 0.087146066, - -0.063568234, - 0.046904817, - -0.101345256, - -0.089092165, - 0.020936692, - 0.03865168, - -0.05066454, - -0.020703398, - 0.037939124, - -0.069670096, - -0.04573288, - -0.042975515, - -0.08133061, - -0.04999254, - -0.07754444, - -0.015807157, - 0.005468936, - 0.058917798, - -0.047519706, - -0.011129669, - -0.023593048, - 0.017224371, - -0.08876406, - 0.021552147, - -0.0042216736, - 3.2073245E-4, - 0.020970272, - -0.018367162, - 0.05507523, - 0.049186505, - -0.053686555, - -0.05892317, - -0.04681065, - -0.0346258, - 0.025476422, - 0.018746119, - 0.07847266, - -0.061995696, - 0.054043338, - 0.05290739, - -0.03922319, - 0.09967812, - 0.11260788, - 0.079831325, - 0.038233027, - -0.007090767, - -0.025567437, - -0.059230927, - -0.0053755366, - -0.05934471, - 0.019243969, - 0.028365586, - -0.092337005, - -0.042283885, - -0.02478212, - 0.036973756, - 0.06046009, - -0.08319817, - -0.03466979, - 0.0052572396, - 0.03651634, - 0.0098519325, - 0.054537416, - 0.106752776, - -0.03245272, - -0.021710223, - 0.067718424, - -0.0716523, - -0.0467586, - 0.04351528, - -0.06902318, - 0.0840498, - -0.06641164, - 0.049778968, - 0.068722665, - 0.006945258, - 0.052571226, - -0.018321687, - 0.08851911, - -0.06484523, - -0.05621622, - 0.0138798375, - 0.062657684, - -0.044570502, - 0.04102728, - 0.018748704, - -0.00942585, - 0.031132046, - 0.028199397, - 0.04842188, - 0.05593715, - -0.059101623, - -0.06402159, - 0.098776296, - 0.02233127, - -0.026724212, - -0.0065241847, - -0.04349072, - -0.034313653, - 0.0035007112, - -0.05192231, - -0.038924325, - -0.06474185, - 0.015219527, - 0.015206849, - -0.006182916, - -0.047223445, - 0.03093224, - 0.0028494631, - 0.029578412, - -0.03084317, - -0.064933576, - 0.04518858, - -0.039695684, - 0.00936517, - -0.057235852, - 0.07411994, - -0.03560979, - -0.058608506, - 0.011952328, - 0.038545735, - -0.0027342425, - 0.034396514, - -0.05941442, - -0.059142824, - 0.07352255, - -0.043796647, - -0.02323201, - 0.021158574, - 0.04281619, - -0.06509553, - 0.025277078, - 0.028309572, - -0.025768865, - 0.017667482, - -0.054695044, - -0.0071169212, - 0.024850225, - 0.045802698, - -0.06463908, - -0.06887592, - 0.015381043, - 0.07519754, - 0.057192106, - 0.04958389, - -0.0055669746, - 0.011448934, - 0.03116414, - -0.047596138, - 0.0854336, - 0.04283707, - -0.0740198, - 0.012606065, - -0.06125597, - -0.051641334, - -0.08642954, - 0.051201824, - -0.06496548, - -0.052257292, - 0.042111978, - 0.06265747, - 0.020205691, - 0.030658716 - ] - }, - { - "start_offset": 6143, - "end_offset": 7446, - "embeddings": [ - 0.0424085, - -0.034002542, - -0.03464202, - -0.050363787, - 0.07952863, - -0.06934173, - 0.032258246, - 0.0323823, - 0.058361948, - 0.024646914, - 0.033364307, - 0.014893917, - 0.082809135, - -0.029873388, - -0.029152617, - 0.04554002, - 0.0795821, - -0.036626082, - -0.0474332, - -0.07305637, - 0.013581792, - -0.004326934, - -0.014103911, - 0.034649894, - -0.0026006806, - 0.02861443, - -0.04941399, - 0.04220857, - 0.03800667, - -0.08277502, - 0.0030204614, - -0.053834133, - 0.056124337, - -0.049811907, - 0.039426923, - 0.020071387, - -0.058887776, - -0.028534504, - 0.017018566, - -0.058147434, - -0.004793465, - 0.044247996, - 0.09460399, - 0.015196105, - 0.06281946, - 0.044713628, - -0.060649756, - 0.027246455, - -0.076060586, - -0.049838327, - -0.08404265, - 0.029550698, - -0.03708172, - 0.07957659, - 0.005638496, - -0.06591597, - -0.06454032, - -0.031200824, - -0.08628952, - 0.063782215, - 0.07779158, - -0.030862262, - -5.435849E-4, - 0.019658469, - 0.057832543, - 0.07795239, - 0.0381484, - -7.929322E-4, - -0.0592228, - -0.005782202, - -0.030597664, - 0.087376595, - -0.010526408, - -0.048925165, - -0.02034168, - 0.03517407, - 0.11462333, - -0.045529578, - 0.03299401, - -0.037767082, - -0.042070027, - -0.058737356, - -0.024921589, - 0.034654282, - -0.055172887, - 0.06289939, - 0.020921186, - -0.05699275, - 0.09581658, - -0.06115032, - 0.08512388, - 0.054141954, - -0.0934276, - -0.105145365, - -0.08745115, - -0.06042352, - -0.07095655, - 0.055074938, - 0.0759865, - -0.0045393603, - 0.06166128, - -0.0054426217, - -0.0013491446, - 0.020781914, - -0.013829525, - 0.012210793, - 0.0570243, - -0.026055835, - 0.050172452, - -0.0491802, - -0.03582268, - 0.0012494406, - 0.040490862, - 0.040501244, - -0.098037206, - -0.039755426, - -0.022896642, - 0.003485195, - 0.016366435, - -0.026002685, - 0.06318523, - -0.050691966, - -0.09513729, - -0.064722195, - -0.06132966, - -0.020495446, - 0.014939301, - 0.054761756, - 0.028909337, - -0.0023375573, - 0.042052656, - 0.022837669, - 0.0230999, - 0.03036407, - 0.018764673, - 0.072496034, - -0.036595833, - -0.036863085, - 0.028396215, - -0.091672495, - -0.08657466, - 0.047359336, - -0.055880774, - 0.0070424355, - 0.069609754, - 0.043904763, - 0.07389961, - -0.0059867557, - 0.116695836, - -0.03913718, - 0.036678135, - -0.010901363, - 0.08819442, - 0.03855831, - 0.07974421, - -0.051924232, - -0.10385839, - -0.033763383, - 0.019493395, - 0.050680365, - -0.058339395, - -0.02083137, - -0.08609875, - 0.017414644, - -0.063257225, - -0.056500446, - 0.023052368, - 0.04622413, - -0.018110551, - -0.007981176, - -0.024779806, - 0.0448911, - -0.08686634, - 0.06575812, - -0.04816167, - 0.049937073, - -0.04870519, - 0.078450456, - 0.06596584, - 0.026573703, - -0.054720048, - -0.016695132, - -0.06281992, - -0.033874605, - -0.034129698, - -0.018373003, - -0.050729766, - 0.037208032, - 0.08663066, - 0.0057553193, - 0.018936101, - 0.0683749, - -0.019277481, - -0.111216776, - -0.08299779, - 0.064380944, - -0.023994485, - 0.02228393, - 0.037532013, - 0.027998803, - 0.010780377, - -0.02866339, - 0.035218086, - 0.040947795, - 0.047251962, - 0.022822948, - -0.04361859, - 0.03929657, - -0.02838609, - 0.06326206, - 0.061787914, - -0.06487332, - -0.05326772, - 0.08467877, - -0.037987698, - -0.030701924, - 0.03693124, - 0.079549454, - -0.06695752, - 0.038511194, - 0.059876252, - -0.04255189, - 0.04926685, - -0.06254431, - -0.056073554, - 0.0059021385, - 0.06375891, - -0.028473105, - -0.020516206, - 0.053688798, - -0.0505003, - -0.013776076, - -0.056746498, - -0.074674286, - -0.036429465, - -0.078277834, - -0.033130404, - 0.026524864, - 0.010027121, - -0.052846454, - -0.03245234, - -0.0045730877, - 0.06279463, - -0.09209112, - 0.030202646, - -0.027974173, - -0.018735087, - 0.0051772078, - -0.034461137, - 0.031503055, - 0.024202514, - -0.0384219, - -0.028417397, - -0.0141932685, - -0.01493018, - 0.05603126, - 0.032856, - 0.0636288, - -0.08880921, - 0.0027978476, - 0.07799859, - -0.0328014, - 0.1109901, - 0.103224635, - 0.021524789, - 0.06495574, - 0.008971255, - -0.025503872, - -0.05471651, - -0.037969336, - -0.052947987, - 0.025896605, - 0.040142477, - -0.04655958, - -0.037604652, - -0.04057517, - 0.024616593, - 0.10586181, - -0.018084457, - -0.045486886, - 0.043346837, - 0.040528644, - 0.07145432, - 0.06723152, - 0.0444014, - 0.039035454, - -0.01685273, - 0.09862476, - -0.04053366, - -0.011219273, - 9.4339694E-4, - -0.04893209, - 0.08255836, - -0.06254635, - 0.0643953, - 0.057366677, - -0.035574544, - 0.05627519, - -0.053370558, - 0.07825556, - -0.0464488, - -0.06944344, - 0.06384285, - 0.022012226, - -0.059294943, - 0.015924655, - 0.015040029, - -0.024862552, - 0.0372234, - 0.07461155, - 0.037966266, - 0.05571149, - -0.062487237, - -0.05230138, - 0.09539987, - 0.050107345, - -0.045335423, - -0.008107003, - -0.04972419, - -0.053539097, - -0.022092147, - 0.0025375162, - -0.034666307, - -0.02502986, - -0.0051417495, - 0.051072195, - 0.0013976014, - -0.05035485, - 0.032701, - 0.029351933, - 0.030166088, - -0.056991193, - -0.05375353, - 0.046652608, - -0.0428863, - -0.029472742, - -0.052559793, - 0.091564216, - -0.080590494, - -0.0837016, - -0.019702932, - 0.039997194, - -0.006878238, - 0.03106036, - 0.0039084614, - -0.0647739, - 0.047937315, - -0.04196034, - -0.016512591, - 0.002820003, - 0.06303794, - -0.08405546, - 0.026794465, - 0.027069453, - -0.01786329, - 0.014802783, - -0.05162349, - -0.013761013, - -0.008544942, - 0.058489725, - -0.04009345, - -0.07866012, - 0.050363623, - 0.03921136, - 0.10168464, - 0.017203555, - -0.036566544, - -0.0041820146, - 0.017140131, - -0.04071419, - 0.028168127, - 0.04408699, - -0.051891476, - 0.018359438, - -0.05747516, - -0.042995404, - -0.050385248, - 0.016142845, - -0.097052485, - -0.054681405, - 0.015732065, - 0.04252675, - 0.04927429, - 0.034856237 - ] - }, - { - "start_offset": 7274, - "end_offset": 8428, - "embeddings": [ - 0.053351756, - -0.016210953, - -0.07376261, - -0.053941812, - 0.02817351, - -0.049927928, - 0.037769757, - 0.024953691, - 0.08055997, - 0.032674763, - 0.052936487, - 0.036146153, - 0.09430347, - -0.0028838688, - -0.007466441, - 0.023164729, - 0.10583723, - -0.031802896, - -0.041414317, - -0.0475711, - 0.009346337, - -0.0023871146, - -0.02213494, - 0.050703954, - 0.035117928, - 0.049729533, - -0.041396488, - 0.040562224, - 0.0072581097, - -0.08263742, - -0.0562156, - -0.015488454, - 0.05251555, - -0.093467265, - 0.023409631, - 0.025775665, - -0.044880413, - -0.049109295, - 0.047048803, - 0.0037931658, - -0.0067197834, - 0.06803116, - 0.07420838, - -5.630403E-4, - 0.081702, - 0.06873878, - -0.0719469, - 0.07724739, - -0.05212626, - -0.042729367, - -0.042923346, - 0.03461211, - 0.0384493, - 0.07852812, - 0.010787158, - -0.08513074, - -0.061220147, - -0.064391315, - -0.05105939, - 0.052274473, - 0.051858254, - -0.025238348, - -0.00587187, - 0.027783165, - 0.08390886, - 0.09118287, - 0.0045411596, - -0.007192923, - -0.03402139, - -0.0055287075, - -0.023308607, - 0.048499316, - 0.0056659714, - -0.055594128, - 0.006816471, - 0.06142901, - 0.069629386, - -0.06880756, - 0.03697912, - 4.030213E-4, - -0.016491663, - -0.04839326, - -0.07392797, - 0.043547455, - -0.056421243, - 0.04223018, - 0.08332315, - -0.067911245, - 0.090487525, - -0.055714566, - 0.08206281, - 0.06703987, - -0.08389162, - -0.057403725, - -0.08070137, - -0.08085191, - -0.06221053, - 0.022357801, - 0.05380439, - -0.057247546, - 0.082033284, - -0.040765326, - 0.013981313, - -0.0040798467, - -0.026184458, - 0.041849125, - 0.0670039, - -0.054438762, - 0.05614216, - -0.042283792, - -0.011577375, - -0.005841353, - 0.053594112, - 0.046762522, - -0.052612707, - -0.057888422, - -0.041523386, - -0.024746502, - -0.0075298445, - -0.064313106, - 0.07056589, - -0.060802132, - -0.066174984, - -0.028887944, - -0.045796074, - -0.032927513, - 0.020563344, - 0.03263002, - 0.062557735, - 0.017696919, - 0.07386037, - 0.03261784, - 0.049800515, - 0.030138545, - 0.08249261, - 0.09115441, - -0.042155825, - -0.03988317, - 0.020776471, - -0.051469974, - -0.08725858, - 0.03421217, - -0.05013289, - 0.013482718, - 0.064455256, - 0.03295194, - 0.05072303, - 0.006866378, - 0.07478394, - -0.08232063, - 0.019163597, - 0.004971397, - 0.04126514, - 0.058498725, - 0.051773094, - -0.075701, - -0.10187357, - -0.04737017, - 0.024935009, - 0.05112209, - -0.06950842, - -0.043909222, - -0.08784876, - 0.024858471, - -0.09546347, - -0.066443644, - -0.039961666, - 0.038705625, - 0.024331694, - -8.98396E-4, - -0.05572306, - 0.029712915, - -0.03771733, - 0.03198425, - -0.018850418, - 0.029596135, - -0.03073546, - 0.040810063, - 0.05748256, - 0.073663406, - -4.3307795E-4, - -0.012033559, - -0.04193751, - -0.025243256, - 0.0020644036, - -0.045018397, - -0.041560806, - 0.052930553, - 0.019955857, - -0.026577184, - -0.008272473, - 0.021633727, - -0.025493031, - -0.0703225, - -0.06678734, - 0.03229182, - 0.0071383226, - 0.034542687, - 0.059906006, - 0.053990763, - -0.03435307, - -0.013460787, - 0.0066855447, - 0.06581118, - 0.03435488, - -0.013016893, - -0.06384082, - 0.04292309, - -0.01003905, - 0.07465682, - 0.041681886, - -0.09872228, - -0.073181555, - 0.06117674, - -0.037698943, - -0.04354557, - 0.015390995, - 0.016960131, - -0.08594164, - -0.0031558785, - 0.053712446, - -0.022476645, - 0.049800374, - -0.091516644, - -0.054994736, - 0.0021578616, - 0.0319539, - -0.037861917, - -0.035363257, - 0.029294293, - -0.038181435, - -0.032684956, - -0.059862334, - -0.052932844, - -0.058168415, - -0.09271316, - -0.03091905, - 0.058375362, - 0.033076484, - -0.048589885, - -0.0471485, - -0.036419317, - 0.0197355, - -0.09041303, - 0.005987353, - -0.04762716, - -0.025347468, - 0.01992799, - -0.040301844, - 0.028963821, - 0.04351864, - -0.07274519, - -0.029667713, - 0.002675472, - -0.008265489, - 0.024745574, - 0.015290826, - 0.05244983, - -0.06499378, - 0.062229145, - 0.056773033, - -0.013647868, - 0.10126457, - 0.07742867, - 0.06907199, - 0.064441785, - -0.03506488, - -0.0027899756, - -0.043987043, - -0.049338706, - -0.06806032, - 0.025320068, - 0.07688298, - -0.037168447, - -0.015209554, - -0.04958993, - 0.029053042, - 0.078892104, - -0.05066037, - -0.030179376, - 0.047830258, - 0.05499768, - 0.04351645, - 0.052307993, - 0.044633888, - 0.020583658, - -0.033953577, - 0.095311515, - -0.0630289, - 0.007157878, - 0.038106248, - -0.035896186, - 0.082412794, - -0.029322542, - 0.09868366, - 0.055021353, - -0.0075476193, - 0.06234535, - -0.070212856, - 0.059051443, - -0.034478117, - -0.062892415, - 0.051439803, - 0.027673196, - -0.08141708, - 0.051184427, - 0.0028761302, - 0.016736014, - 0.05301783, - 0.070441864, - 0.034725133, - 0.07278133, - -0.034562826, - -0.08274096, - 0.04781931, - 0.067391045, - -0.028286146, - 0.045300007, - -0.070981935, - -0.0900906, - -0.01804769, - -0.07678485, - -0.054171197, - -0.04371682, - 0.044014435, - 0.019092314, - -0.0533041, - -0.05406611, - 0.001399687, - 0.008414226, - 0.0070721963, - -0.054595735, - -0.06279298, - 0.012740916, - -0.068271995, - -0.016297301, - -0.018569002, - 0.07028272, - -0.021509787, - -0.07611714, - 0.00775331, - 0.043958176, - -0.015166803, - 0.057754774, - -0.013378479, - -0.06428601, - 0.033813998, - -0.03535889, - -0.0053371727, - 0.022787765, - 0.0827088, - -0.12142623, - 0.0026697267, - 0.03981775, - -0.02158926, - 0.03722548, - -0.04657821, - -0.049696047, - 0.027757794, - 0.046377983, - -0.049581885, - -0.08924511, - 0.035119716, - 0.07465048, - 0.07677282, - 0.053386416, - -0.020686079, - 0.013271858, - 0.057107273, - -0.016681688, - 0.015427299, - 0.046444256, - -0.0758986, - 0.03103317, - 0.0036917871, - -0.07186075, - -0.0624062, - 0.043409187, - -0.054538824, - -0.065254256, - 0.05370674, - 0.03439175, - 0.02197341, - 0.025227817 - ] - }, - { - "start_offset": 8427, - "end_offset": 9687, - "embeddings": [ - 0.05744903, - -0.02452922, - -0.08476994, - -0.022428924, - 0.048399355, - -0.036132727, - -0.015275069, - 0.074007444, - 0.07940483, - 0.02248898, - 0.04316835, - -0.0034011744, - 0.08490044, - -4.1730207E-5, - -0.038465198, - 0.047819026, - 0.072968654, - -0.0597117, - 0.01257942, - -0.058731165, - 0.01321756, - 0.015429294, - -0.04443649, - 0.067764916, - 0.032255292, - 0.057302598, - -0.013705533, - -0.002871075, - -0.0017963633, - -0.076624624, - -0.04033174, - -0.03958768, - 0.021592977, - -0.083355255, - 0.02508422, - 0.014075689, - -0.042936496, - -0.069775715, - 0.053771127, - -0.06096773, - -0.038709678, - 0.030585166, - 0.06309865, - 0.0289272, - 0.070409566, - 0.075638674, - -0.039296776, - 0.02741248, - -0.041558262, - -0.009545241, - -0.060929116, - 0.017809264, - 0.04246089, - 0.092424795, - 0.0044749626, - -0.084972195, - -0.071833394, - -0.05189755, - -0.05925639, - 0.07651771, - 0.051788367, - -0.053483434, - -0.021773372, - -0.00506648, - 0.038404945, - 0.06250312, - 0.061945193, - 0.011288415, - -0.060019504, - -0.026446447, - -0.055844307, - 0.06780296, - -0.03332657, - -0.048795506, - 0.03756737, - 0.045220662, - 0.034406263, - -0.058406588, - 0.018282196, - -0.09083589, - -0.03040247, - -0.05790508, - -0.016188977, - 0.022804815, - -0.056110263, - 0.07543798, - 0.038187183, - -0.08649141, - 0.08623204, - -0.042687863, - 0.0573812, - 0.050730344, - -0.0433588, - -0.09344185, - -0.046142764, - -0.07739427, - -0.05609858, - 0.052337695, - 0.053889126, - -0.05016094, - 0.096083306, - 0.011468343, - 0.042769995, - 0.008584574, - -0.028934095, - 0.029772492, - 0.05292526, - -0.024594065, - 0.08542614, - -0.066132575, - -0.0076108603, - 0.0075524007, - 0.09586245, - 0.07127726, - -0.08062749, - -0.06285386, - -0.034123085, - 0.053412784, - 0.03723955, - -0.033416737, - 0.04680435, - -0.03861024, - -0.027420327, - -0.081069514, - -0.059449777, - -0.023693249, - 0.023154624, - 0.052628066, - 0.053673804, - 0.03851477, - 0.048254706, - 0.040450633, - 0.024582013, - 0.030465266, - 0.07089921, - 0.087507665, - -0.009536147, - -0.014239722, - 0.0023720453, - -0.03707558, - -0.025194108, - 0.08157714, - -0.03958548, - 0.051691998, - 0.06314976, - 0.02721075, - 0.052713513, - -0.023559293, - 0.06393838, - -0.07106552, - 0.044660386, - -0.025641244, - 0.06264186, - 0.014594412, - 0.048385747, - -0.055564065, - -0.06955722, - -0.088032804, - 0.034305904, - 0.045169048, - -0.03802287, - -0.013604237, - -0.08036378, - 0.022200659, - -0.055803996, - -0.084766835, - -0.03537992, - 0.0466811, - -0.01768934, - -0.04932191, - -0.028891142, - 0.0119931735, - -0.030645167, - 0.02563793, - 0.011760058, - 0.02289236, - -0.052902717, - 0.0097223595, - 0.042422734, - 0.020096473, - 0.0088921515, - -0.013737467, - -0.03993987, - -0.05381494, - -0.04218381, - -0.03449234, - -0.054990627, - 0.009642538, - 0.05949224, - -0.007698366, - 0.027766742, - 0.031446908, - -0.08122337, - -0.038493186, - -0.06830541, - 0.020205725, - -0.030477056, - 0.044251017, - 0.08096215, - 0.10125872, - -0.009518375, - -0.018208051, - 0.04083479, - 0.021746838, - 0.030360037, - 0.0030146895, - -0.04425533, - 0.063152075, - -0.040584363, - 0.07283654, - 0.062402766, - -0.072093405, - -0.07191966, - 0.041823577, - 0.004934987, - -0.037696403, - 0.032516938, - 0.072518826, - -0.06659665, - -0.006708449, - 0.07320258, - -0.028489655, - 0.0686214, - -0.07320168, - -0.03665047, - 0.020025352, - 0.018766245, - -0.025394067, - -0.043893065, - 0.013678436, - -0.0817917, - -0.02630837, - -0.03421568, - -0.0654703, - -0.042911462, - -0.07311668, - -0.0038604182, - 0.016762605, - 0.021780867, - -0.06629608, - -0.012976095, - -0.051092017, - 0.011383003, - -0.11568767, - 0.056158062, - -0.011376737, - 0.020621011, - 0.015717132, - -0.01347594, - 0.018848866, - 0.039923675, - -0.06502122, - -0.044894896, - -0.032492988, - -0.035042934, - 0.045391146, - 0.047973733, - 0.10662139, - -0.056172207, - 0.031413678, - 0.0125645455, - -0.003751948, - 0.07743928, - 0.084872924, - 0.047170028, - 0.046972826, - -0.00976389, - -0.032883007, - -0.054116864, - -0.027746534, - -0.08914457, - 0.007070583, - 0.04398771, - -0.0475649, - -0.06489332, - -0.060108416, - 0.0143431965, - 0.05955711, - -0.0774654, - -0.030995058, - 0.05263145, - 0.029864812, - 0.01608842, - 0.09080374, - 0.05185686, - -0.032855753, - 0.0063909087, - 0.0853062, - -0.10142854, - -0.07251046, - -0.005085327, - -0.066178784, - 0.046009053, - -0.09079122, - 0.08566233, - 0.06576406, - 0.017733688, - 0.06487284, - -0.039741356, - 0.04176326, - -0.010695733, - -0.050619148, - 0.01245912, - 0.03467508, - -0.06871932, - 0.030141022, - 0.026552299, - -0.0035028423, - 0.030276356, - 0.05361378, - 0.054491397, - 0.06513585, - -0.08491482, - -0.051875558, - 0.086067244, - 0.0396853, - -0.054731067, - 0.016796874, - -0.036002953, - -0.0658579, - -0.016491668, - -0.0758324, - -0.039184928, - -0.068875834, - 0.031522863, - 0.009083638, - -0.024529556, - -0.059996516, - 0.06894157, - -0.033383097, - -0.002836109, - -0.044933245, - -0.09211297, - 0.075231805, - -0.09029687, - -0.0025871666, - -0.02342682, - 0.06138579, - -0.052864984, - -0.078638926, - 0.020620788, - 0.011810836, - -0.014471281, - 0.01986825, - -0.040482074, - -0.06512211, - 0.062289387, - -0.03012425, - -4.7029057E-4, - 0.035347983, - 0.11894842, - -0.050478995, - -0.014397127, - 0.049630538, - -0.01540003, - 0.052197892, - -0.048483927, - -0.0076621673, - 0.04089758, - 0.015284395, - -0.023267174, - -0.0582655, - 0.035793785, - 0.06800681, - 0.11031594, - 0.10364201, - -0.042768136, - 0.03487297, - 0.03780645, - -0.040866226, - 0.046048936, - 0.029865082, - -0.04171421, - 0.03842289, - -0.0154759055, - -0.020621978, - -0.05873017, - 0.05175785, - -0.03108134, - -0.08132814, - 0.04200817, - 0.05092204, - 0.02828486, - 0.06530922 - ] - }, - { - "start_offset": 9554, - "end_offset": 10460, - "embeddings": [ - 0.06795254, - -0.027788855, - -0.06532636, - -0.05325019, - 0.05093753, - -0.055382267, - 0.051724233, - 0.03824768, - 0.07362302, - 0.04002248, - 0.0550001, - -4.6239374E-4, - 0.09122236, - 0.026436811, - -0.06672792, - 0.011183016, - 0.097761884, - -0.082106106, - -0.028012855, - -0.062181316, - -0.008753627, - -0.019600896, - -0.036626942, - 0.03447432, - 0.06013969, - 0.05223775, - -0.016101984, - -0.010203473, - 0.025855985, - -0.060056984, - -0.03937554, - -0.043756496, - 0.030997807, - -0.10395428, - 0.027634699, - 0.005324417, - -0.024001809, - -0.019012816, - 0.057175636, - -0.04684799, - -0.053544424, - 0.010870207, - 0.029463693, - 0.012833155, - 0.09024689, - 0.07413883, - -0.032765836, - 0.015112767, - -0.026345447, - -0.061428167, - -0.03721613, - 0.049783345, - -0.0010639617, - 0.09159631, - 0.02264281, - -0.055135295, - -0.05914746, - -0.052138176, - -0.07942767, - 0.029073795, - 0.02702419, - -0.0532197, - -0.014727404, - 6.2745955E-4, - 0.029936861, - 0.07468935, - 0.017335532, - 0.059831787, - -0.049344696, - 0.01880937, - -0.04200233, - 0.067229606, - -0.0012889965, - -0.0632363, - 0.043949638, - 0.049309365, - 0.036185548, - -0.058062393, - 0.04830483, - -0.02813847, - -0.06845039, - -0.046040177, - 0.0015298559, - 0.0377331, - -0.028661495, - 0.077781945, - 0.050341487, - -0.060820885, - 0.07588156, - -0.034051448, - 0.0768756, - 0.048993148, - -0.066278465, - -0.09077045, - -0.06511732, - -0.04687162, - -0.06367129, - 0.04149166, - 0.07077744, - -0.041742414, - 0.054795545, - -0.029036827, - 0.06274923, - 0.0061874306, - -0.0317641, - 0.0038963803, - 0.056757834, - -0.043710202, - 0.06571763, - -0.039196618, - 0.011638405, - -0.014480316, - 0.0782259, - 0.041573986, - -0.056704924, - -0.044138405, - -0.032456245, - 0.025932135, - 0.044077054, - -0.007750241, - 0.054932345, - -0.03292227, - -0.028155934, - -0.08390399, - -0.044745676, - -0.039294515, - 0.020936523, - 0.059180506, - 0.09919356, - 0.04366707, - 0.02902992, - 0.041400306, - 0.009594294, - -0.0058838082, - 0.042111326, - 0.12996204, - -0.038631447, - -0.019210441, - 0.056625124, - -0.057970613, - -0.08764153, - 0.08361837, - -0.016109295, - 0.030824538, - 0.061104048, - 0.05500983, - 0.045061268, - -0.055872414, - 0.08214088, - -0.046806127, - 0.057676565, - -0.055537637, - 0.072990045, - 0.045658644, - 0.06032115, - 0.0016026857, - -0.08040042, - -0.082738034, - 0.021192942, - 0.06619772, - -0.060728885, - -0.012204158, - -0.05736885, - 0.011759795, - -0.09559732, - -0.03487954, - -0.004853385, - 0.07568596, - 0.0170426, - -0.032266848, - -0.034448244, - 0.0015031097, - -0.051096436, - 0.067675546, - -0.008337999, - 0.02016469, - -0.034166988, - 1.3699784E-4, - 0.036702186, - 0.03628234, - -0.034941807, - 0.00841879, - -0.034299497, - -0.045383744, - -0.021920165, - -0.037155207, - -0.012305447, - -0.018064288, - 0.041540947, - -0.013256499, - -0.01824263, - 0.027535202, - -0.10648625, - -0.10162097, - -0.08293666, - 0.048940066, - -0.008739751, - 0.03177586, - 0.06314134, - 0.08493229, - -0.03178613, - -0.04156539, - 0.021325408, - 0.015963139, - 0.030367697, - 0.0012957318, - -0.054147527, - 0.049582303, - -0.058355026, - 0.059193954, - 0.080090895, - -0.0643068, - -0.078586616, - 0.061390623, - -0.035683163, - -0.05697204, - 0.016509915, - 0.0456678, - -0.06869852, - -0.021377739, - 0.0459535, - -0.034752127, - 0.044991855, - -0.07434412, - -0.061407465, - 0.0066419234, - 0.04971079, - -0.020545505, - -0.03348485, - 0.072175615, - -0.08419868, - -0.06409017, - -0.028774735, - -0.08295683, - -0.067340076, - -0.052633435, - -0.02234827, - -0.0048523103, - 0.036146127, - -0.041977044, - -0.04563754, - -0.056249525, - 0.040496923, - -0.07444201, - 0.042330384, - -0.034291748, - -0.037762616, - 0.035350475, - -0.023694497, - 0.044436026, - 0.034658603, - -0.071404554, - -0.052793555, - -0.030472925, - -0.023625389, - 0.043577187, - 0.05148583, - 0.09133436, - -0.054247066, - 0.04203479, - 0.030377146, - 0.0089587355, - 0.08783934, - 0.102596834, - 0.004045215, - 0.041863658, - -0.049759816, - -0.041472945, - -0.06560168, - -0.049456153, - -0.06286144, - -0.0021516692, - 0.06415723, - -0.057984285, - -0.052246314, - -0.0468379, - 0.005024449, - 0.063394494, - -0.049811874, - -0.007827677, - 0.043182477, - 0.03432028, - 0.059190553, - 0.051201522, - 0.06459717, - -0.0028205558, - 0.011427307, - 0.07478203, - -0.09011506, - -0.06896538, - 0.015105613, - -0.06902061, - 0.048208747, - -0.076154344, - 0.05893959, - 0.026351677, - -0.013113587, - 0.038620975, - -0.020734645, - 0.042907227, - -0.02616936, - -0.012401203, - 0.036476728, - 0.031379998, - -0.07657323, - 0.07557042, - 0.017815659, - 0.057302337, - 0.031211596, - 0.041240353, - 0.06864739, - 0.056433342, - -0.05830147, - -0.027380649, - 0.054324336, - 0.07243749, - -0.044019613, - 0.0029616277, - -0.061004672, - -0.06978305, - -0.055067733, - -0.06398177, - -0.025761655, - -0.031062664, - 0.038432557, - 0.01983404, - -0.022323918, - -0.08653916, - 0.036503706, - 0.027113369, - 0.051526625, - 0.003591905, - -0.043091606, - 0.048455648, - -0.06892166, - -0.007492171, - -0.018578587, - 0.05494636, - -0.05301073, - -0.094928786, - 0.003945227, - 0.033395912, - -0.034273494, - 0.06995625, - -0.024217183, - -0.06057119, - 0.022178173, - -0.048596364, - -0.03847148, - 0.01584574, - 0.08880866, - -0.09683496, - 0.040496774, - 0.0554991, - -0.0325551, - 0.066031836, - -0.07693793, - -0.014788223, - 0.013764252, - 0.04855808, - -0.037729017, - -0.037790805, - 0.033332434, - 0.09727558, - 0.09606235, - 0.07886385, - -0.017046498, - -0.0047775926, - 0.049902774, - -0.06325739, - 0.032437313, - 0.054471422, - -0.06110438, - 0.020669593, - 0.0070950463, - -0.026809083, - -0.05658399, - 0.048453655, - -0.048016146, - -0.047978207, - 0.046292298, - 0.046507128, - 0.022924135, - 0.07091171 - ] - }, - { - "start_offset": 10459, - "end_offset": 11696, - "embeddings": [ - 0.053117193, - -0.015585508, - -0.05423901, - -0.05138859, - 0.06471939, - -0.07901192, - 0.01693148, - 0.050192464, - 0.09575295, - 0.043414578, - 0.011923588, - -0.009796319, - 0.05132375, - -0.014788656, - -0.025382983, - 0.028342921, - 0.06872216, - -0.055240728, - -0.018316492, - -0.053359665, - 0.013118909, - -0.01603142, - -0.05637189, - 0.060144503, - 0.078957014, - 0.052481424, - -0.063893974, - 0.012951693, - 0.037284218, - -0.0989329, - -0.031654015, - -0.018283853, - 0.048968345, - -0.04817539, - 0.026837517, - 6.222096E-5, - -0.024189027, - 0.0112748975, - 0.0207289, - -0.012949756, - -0.03303762, - 0.04864192, - 0.028754367, - 0.025379542, - 0.047412705, - 0.051565237, - -0.057438288, - 0.032263443, - -0.06824788, - -0.019407846, - -0.059993997, - 0.06091319, - -0.0069746193, - 0.099794194, - -6.160557E-4, - -0.09514187, - -0.09679237, - -0.048262954, - -0.047733244, - 0.09921752, - 0.0332093, - -0.04550775, - -0.05143887, - 0.014637188, - 0.07129097, - 0.09510039, - 0.032291826, - 0.034658313, - -0.017751144, - -0.044415683, - -0.05508973, - 0.067787856, - -0.031251505, - -0.044856634, - -0.0033598887, - 0.04760263, - 0.054377872, - -0.040341455, - 0.018044798, - -0.023554679, - -0.049902994, - -0.031270802, - -0.007537713, - 0.03402409, - -0.027234826, - 0.09944215, - 0.045163024, - -0.05408758, - 0.04893289, - -0.048714437, - 0.061802126, - 0.06499505, - -0.07351746, - -0.08406793, - -0.08679661, - -0.051905084, - -0.034713045, - 0.040123433, - 0.07967649, - -0.06041734, - 0.061612148, - -0.020921662, - 0.05665623, - 0.041377034, - -0.007348656, - 0.015952924, - 0.05296665, - -0.052709162, - 0.071244985, - -0.038275376, - -0.01164368, - 0.014391718, - 0.06113161, - 0.034303535, - -0.050069015, - -0.070354894, - -0.011464902, - -0.028307518, - 0.04133397, - -0.049779277, - 0.08302818, - -0.048584647, - -0.06805662, - -0.04735593, - -0.04913521, - -0.005428242, - 0.03233016, - 0.044904802, - 0.06872594, - -0.01780296, - 0.06279163, - 0.039817583, - 0.007986946, - 0.0121078305, - 0.074653216, - 0.12367899, - -0.037977446, - -0.02724532, - 0.021000944, - -0.07356985, - -0.06435206, - 0.013165806, - -0.004956233, - 0.038697783, - 0.0691664, - 0.041731402, - 0.06331449, - -0.0046027564, - 0.078827925, - -0.028814215, - 0.02115456, - -0.030129815, - 0.071896814, - 0.005554397, - 0.060193166, - -0.016858125, - -0.067393966, - -0.06267468, - 0.019814175, - 0.045483287, - -0.093514144, - -0.026769608, - -0.091787525, - 0.019846648, - -0.092779495, - -0.04158812, - 0.01915316, - 0.03254872, - -9.048901E-4, - 0.014318523, - -0.013507805, - 0.040734824, - -0.047447592, - 0.052798737, - -0.04318385, - 0.020014195, - -0.05593343, - 0.045916248, - 0.059790693, - 0.032657895, - -0.038109995, - -0.006277211, - -0.042986337, - -0.090472385, - -0.003131573, - -0.0031761206, - -0.047034763, - 0.023323804, - 0.06837014, - -0.0039844033, - 0.002091333, - 0.021284567, - -0.052262813, - -0.082303464, - -0.052592263, - 0.032273255, - 0.009803746, - 0.0013473934, - 0.05583177, - 0.06429418, - 0.001517824, - -0.0072332155, - 0.020265736, - 0.0033951101, - 0.058746524, - 0.022550192, - -0.07356808, - 0.045694035, - -0.018434413, - 0.025329743, - 0.061233632, - -0.07960079, - -0.08406201, - 0.06330057, - -0.09599598, - -0.025174508, - 0.028187213, - 0.067423336, - -0.06526651, - 0.006772753, - 0.07572871, - -0.031995185, - 0.05916029, - -0.047238894, - -0.06869731, - 0.032157637, - 0.07589699, - -0.043760736, - -0.013728161, - 0.053143077, - -0.021147272, - -0.049572222, - -0.04899867, - -0.08653491, - -0.07939669, - -0.10523086, - -0.001059735, - 0.0063834176, - 0.015314108, - -0.05562784, - -0.056119584, - -0.08270628, - -3.2258706E-4, - -0.083571695, - 0.052503087, - -0.03977744, - -0.047228433, - 0.07893777, - -0.017052159, - 0.035709318, - 0.04999642, - -0.100927435, - -0.025071207, - -0.046351615, - -0.026675632, - 0.025651569, - 0.068944395, - 0.031405594, - -0.07291537, - 0.018124148, - 0.018039903, - -0.034970153, - 0.10088425, - 0.09433116, - 0.0689122, - 0.049935102, - -0.02560692, - -0.06034739, - -0.060196366, - -0.02504903, - -0.058731087, - 0.04172741, - 0.0038506123, - -0.035828065, - -0.018227967, - -0.07467086, - 0.037910078, - 0.054497574, - -0.07775332, - -0.017336372, - 0.046693277, - 0.022060173, - 0.036212, - 0.046006728, - 0.027395774, - -0.020391421, - -0.029180788, - 0.05312558, - -0.072161354, - 0.016918298, - -0.025024151, - -0.031315047, - 0.08490075, - -0.03845013, - 0.047562983, - 0.021411635, - -0.023305604, - 0.039255943, - -0.026875794, - 0.08610026, - -0.029386222, - -0.016845187, - 0.054429937, - 0.027040144, - -0.06772479, - 0.095606916, - -0.036488708, - 7.7485084E-4, - 0.037060957, - 0.07791183, - 0.07910346, - 0.013702623, - -0.03475561, - -0.040810455, - 0.0774657, - 0.043717105, - -0.05542658, - 0.0030442073, - -0.1050271, - -0.07705069, - -0.029897174, - -0.03622423, - -0.044971265, - -0.06206865, - 0.019566234, - 0.023725986, - 0.010738356, - -0.07149888, - 0.002263669, - 0.023846326, - 0.037898906, - 0.008864181, - -0.03436943, - 0.03523395, - -0.061920922, - -0.022051072, - -0.07035821, - 0.09721548, - -0.047868855, - -0.09084715, - 0.01050229, - 0.06422868, - 0.02094103, - 0.038811173, - -0.023608131, - -0.04335279, - 0.053133078, - -0.021861738, - -0.039793, - 0.048549335, - 0.07316228, - -0.08636803, - 0.017843066, - 0.06287863, - -0.034799643, - 0.06658666, - -0.042144388, - -0.025062915, - -0.005463377, - 0.024971562, - -0.05923357, - -0.041639276, - 0.039569613, - 0.06571587, - 0.096652776, - 0.061983064, - -0.036815662, - 0.0028833281, - 0.05262061, - -0.05568962, - 0.05730981, - 0.08141181, - -0.030994864, - 0.020174727, - -0.06336232, - -0.012292672, - -0.02354779, - 0.03636813, - -0.062137593, - -0.06593778, - 0.008968277, - 0.08741745, - -0.0025689485, - 0.043467455 - ] - }, - { - "start_offset": 11635, - "end_offset": 12404, - "embeddings": [ - 0.060443457, - -0.018814357, - -0.073390484, - -0.072757736, - 0.07602336, - -0.08031318, - 0.049980927, - 0.09587944, - 0.051309362, - 0.06949769, - -0.0072211474, - -0.015413545, - 0.07187972, - -0.027608033, - -0.050633453, - 0.0033393581, - 0.08592932, - -0.05384897, - 0.0090165865, - -0.067287035, - 0.047661647, - -0.034592163, - -0.039346103, - 0.0146116605, - 0.071183585, - 0.08697948, - -0.024614712, - 0.028339177, - 0.022019284, - -0.09268575, - -0.019253781, - -0.041030932, - 0.007305104, - -0.07492374, - 0.053613797, - 0.01886426, - -0.04425684, - -0.024854647, - 0.031085161, - -0.017220812, - -0.020209908, - 0.05369729, - 0.03976705, - 0.029386787, - 0.050238505, - 0.054753933, - -0.06296793, - -0.0058290027, - -0.03582435, - -0.017357286, - -0.02952249, - 0.08404001, - 0.005996583, - 0.07228626, - 0.0453729, - -0.100141585, - -0.092281535, - -0.04168767, - -0.10046059, - 0.1075754, - 0.024743102, - -0.056973584, - -0.035330076, - 0.011421968, - 0.030275127, - 0.09172467, - 0.017434414, - 0.015847225, - -0.0726862, - -0.06845117, - -0.055281464, - 0.067980886, - -3.857295E-4, - -0.054992713, - 0.0075252233, - 0.047023434, - 0.035014, - -0.012921049, - 0.02088017, - -0.058113724, - -0.025709266, - -0.054443315, - -0.019515503, - 0.064740464, - -0.05698313, - 0.09463141, - 0.04497404, - -0.049769837, - 0.0833754, - -0.029804397, - 0.048232727, - 0.06960264, - -0.0549942, - -0.052367542, - -0.053988345, - -0.043551333, - -0.0440573, - 0.0228508, - 0.06116432, - -0.034144748, - 0.07046748, - 0.030397533, - 0.08092524, - 0.01595668, - -0.040372074, - 0.005287498, - 0.08518292, - -0.085493654, - 0.07491553, - -0.057637572, - -0.052299142, - 0.025728408, - 0.061017167, - 0.062338777, - -0.025426613, - -0.046602402, - -0.00770177, - -0.022468466, - 0.04037256, - -0.027729545, - 0.049696933, - -0.04159955, - -0.03250282, - -0.05583671, - -0.057482447, - -0.013210838, - 0.010765793, - -6.568303E-4, - 0.01951912, - 0.0042298064, - 0.06481922, - 0.051263362, - 0.03024384, - 0.0143968, - 0.057499222, - 0.09256815, - -0.057120778, - 0.0056950618, - 0.009500937, - -0.085512474, - -0.062135834, - 0.03066087, - -0.022205362, - 0.04599781, - 0.03531616, - 0.033788696, - 0.092292726, - -0.010158623, - 0.080052234, - -0.0060746367, - 0.05273896, - -0.017564675, - 0.057575084, - -0.005175612, - 0.030423889, - -0.04613064, - -0.067384765, - -0.0777474, - 0.050731033, - 0.06055307, - -0.057881925, - -0.05091726, - -0.09201947, - 0.004303206, - -0.055900693, - -0.0481762, - 0.016243042, - 0.027040469, - -0.0034547276, - -0.049395755, - -0.011644979, - 0.080957845, - -0.058048993, - 0.0492391, - -0.0063328324, - -2.4730185E-4, - -0.07200027, - 0.09804746, - 0.048087306, - 0.048413623, - -0.043330252, - -0.008462916, - -0.046491988, - -0.070683904, - -0.04057368, - 0.0125348065, - -0.059007447, - 0.038095772, - 0.041568384, - -0.024388209, - -0.013926745, - -0.009171631, - -0.05361981, - -0.04222372, - -0.02127755, - 0.051767804, - 0.0061274986, - 0.053409755, - 0.035079833, - 0.027605304, - -0.013933335, - -0.031408813, - 0.005120374, - 0.020053213, - 0.039294656, - -0.005544306, - -0.10680002, - 0.034485042, - -0.02083935, - 0.04792578, - 0.068743885, - -0.11507496, - -0.10216752, - 0.056888673, - -0.06800507, - -0.059926618, - 0.008200659, - 0.030621173, - -0.059572708, - 0.020859051, - 0.11224187, - -0.026253646, - 0.05764227, - -0.047062173, - -0.056426648, - -0.018189454, - 0.06514884, - -0.060741644, - -0.039313216, - 0.011433455, - -0.038083345, - -0.05282726, - -0.052797362, - -0.08434047, - -0.06285792, - -0.058861967, - -0.059305865, - 0.004766285, - 0.06191272, - -0.061296433, - -0.05848144, - -0.038482025, - 0.033259515, - -0.11248364, - 0.017305091, - -0.024461089, - -0.03555484, - 0.0663307, - -0.014705792, - 0.014617273, - 0.04280535, - -0.074889824, - -0.052947134, - -0.030037379, - -0.0077148285, - 0.057981927, - 0.047073305, - 0.06093273, - -0.05974137, - 0.064445026, - 0.029471356, - 9.505361E-4, - 0.08606595, - 0.086340785, - 0.046603594, - 0.05858932, - -0.032077473, - -0.019977393, - -0.03431287, - -0.047011334, - -0.056820385, - 0.013462027, - 0.042805202, - -0.0677109, - -0.023264, - -0.05485633, - 0.055690948, - 0.05651245, - -0.071241796, - -0.00915478, - 0.053730387, - 0.056755595, - 0.03846687, - 0.05310068, - 0.0056861867, - 0.005360462, - -0.039538994, - 0.03497575, - -0.06781882, - -0.011839252, - -0.042778153, - -0.041556057, - 0.034042798, - -0.04711682, - 0.034821853, - 0.043264013, - 0.01696988, - 0.048099734, - -0.019220253, - 0.11707801, - -0.054026723, - -0.018543418, - 0.03708661, - 0.032689948, - -0.05068468, - 0.0691382, - -8.202863E-4, - -0.0019999356, - 0.014463376, - 0.07405446, - 0.07647231, - 0.011515665, - -0.034625884, - -0.055066366, - 0.058186855, - 0.024419852, - -0.031584322, - -0.029543389, - -0.07736987, - -0.07829203, - -0.0053546038, - -0.06570245, - -0.010904349, - -0.06490494, - 0.03149016, - 0.009859199, - -0.052703284, - -0.06884288, - 0.02139801, - 0.026021063, - 0.07129519, - -0.022009108, - -0.041722506, - 0.07192836, - -0.01098611, - -0.0027591465, - -0.04109422, - 0.046898007, - -0.036396515, - -0.090931825, - 0.022607114, - 0.030457368, - -0.03448933, - 0.021621844, - -0.048675153, - -0.033822104, - 0.057124067, - -0.048874307, - -0.054428495, - 0.056644462, - 0.08236624, - -0.08848753, - 0.033674665, - 0.053105284, - -0.019323535, - 0.05071626, - -0.025313161, - 0.0112252515, - 0.018250609, - 0.07660853, - -0.054870043, - -0.07221262, - 0.018527014, - 0.073324844, - 0.061312377, - 0.052779585, - -0.017265014, - 0.0044537727, - 0.054682422, - -0.055878393, - 0.064048916, - 0.03346393, - -0.028677322, - 0.050278228, - -0.02905618, - -0.038899165, - -0.03864768, - 0.042319845, - -0.06788429, - -0.06178736, - 0.06868577, - 0.05830974, - 0.02179902, - 0.052530885 - ] - } - ] - } - } - } - }, - "field": "CHAPTER 1\n\n\n\nLOOMINGS\n\n\n\nCall me Ishmael. Some years ago--never mind how long precisely--having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world. It is a way I have of driving off the spleen, and regulating the circulation. Whenever I find myself growing grim about the mouth; whenever it is a damp, drizzly November in my soul; whenever I find myself involuntarily pausing before coffin warehouses, and bringing up the rear of every funeral I meet; and especially whenever my hypos get such an upper hand of me, that it requires a strong moral principle to prevent me from deliberately stepping into the street, and methodically knocking people's hats off--then, I account it high time to get to sea as soon as I can. This is my substitute for pistol and ball. With a philosophical flourish Cato throws himself upon his sword; I quietly take to the ship. There is nothing surprising in this. If they but knew it, almost all men in their degree, some time or other, cherish very nearly the same feelings towards the ocean with me.\n\nThere now is your insular city of the Manhattoes, belted round by wharves as Indian isles by coral reefs--commerce surrounds it with her surf. Right and left, the streets take you waterward. Its extreme down-town is the battery, where that noble mole is washed by waves, and cooled by breezes, which a few hours previous were out of sight of land. Look at the crowds of water-gazers there.\n\nCircumambulate the city of a dreamy Sabbath afternoon. Go from Corlears Hook to Coenties Slip, and from thence, by Whitehall, northward. What do you see?--Posted like silent sentinels all around the town, stand thousands upon thousands of mortal men fixed in ocean reveries. Some leaning against the spiles; some seated upon the pier-heads; some looking over the bulwarks of ships from China; some high aloft in the rigging, as if striving to get a still better seaward peep. But these are all landsmen; of week days pent up in lath and plaster--tied to counters, nailed to benches, clinched to desks. How then is this? Are the green fields gone? What do they here?\n\nBut look! here come more crowds, pacing straight for the water, and seemingly bound for a dive. Strange! Nothing will content them but the extremest limit of the land; loitering under the shady lee of yonder warehouses will not suffice. No. They must get just as nigh the water as they possibly can without falling in. And there they stand--miles of them--leagues. Inlanders all, they come from lanes and alleys, streets and avenues--north, east, south, and west. Yet here they all unite. Tell me, does the magnetic virtue of the needles of the compasses of all those ships attract them thither?\n\nOnce more. Say, you are in the country; in some high land of lakes. Take almost any path you please, and ten to one it carries you down in a dale, and leaves you there by a pool in the stream. There is magic in it. Let the most absentminded of men be plunged in his deepest reveries--stand that man on his legs, set his feet a-going, and he will infallibly lead you to water, if water there be in all that region. Should you ever be athirst in the great American desert, try this experiment, if your caravan happen to be supplied with a metaphysical professor. Yes, as every one knows, meditation and water are wedded for ever.\n\nBut here is an artist. He desires to paint you the dreamiest, shadiest, quietest, most enchanting bit of romantic landscape in all the valley of the Saco. What is the chief element he employs? There stand his trees, each with a hollow trunk, as if a hermit and a crucifix were within; and here sleeps his meadow, and there sleep his cattle; and up from yonder cottage goes a sleepy smoke. Deep into distant woodlands winds a mazy way, reaching to overlapping spurs of mountains bathed in their hill-side blue. But though the picture lies thus tranced, and though this pine-tree shakes down its sighs like leaves upon this shepherd's head, yet all were vain, unless the shepherd's eye were fixed upon the magic stream before him. Go visit the Prairies in June, when for scores on scores of miles you wade knee-deep among Tiger-lilies--what is the one charm wanting?--Water--there is not a drop of water there! Were Niagara but a cataract of sand, would you travel your thousand miles to see it? Why did the poor poet of Tennessee, upon suddenly receiving two handfuls of silver, deliberate whether to buy him a coat, which he sadly needed, or invest his money in a pedestrian trip to Rockaway Beach? Why is almost every robust healthy boy with a robust healthy soul in him, at some time or other crazy to go to sea? Why upon your first voyage as a passenger, did you yourself feel such a mystical vibration, when first told that you and your ship were now out of sight of land? Why did the old Persians hold the sea holy? Why did the Greeks give it a separate deity, and own brother of Jove? Surely all this is not without meaning. And still deeper the meaning of that story of Narcissus, who because he could not grasp the tormenting, mild image he saw in the fountain, plunged into it and was drowned. But that same image, we ourselves see in all rivers and oceans. It is the image of the ungraspable phantom of life; and this is the key to it all.\n\nNow, when I say that I am in the habit of going to sea whenever I begin to grow hazy about the eyes, and begin to be over conscious of my lungs, I do not mean to have it inferred that I ever go to sea as a passenger. For to go as a passenger you must needs have a purse, and a purse is but a rag unless you have something in it. Besides, passengers get sea-sick--grow quarrelsome--don't sleep of nights--do not enjoy themselves much, as a general thing;--no, I never go as a passenger; nor, though I am something of a salt, do I ever go to sea as a Commodore, or a Captain, or a Cook. I abandon the glory and distinction of such offices to those who like them. For my part, I abominate all honorable respectable toils, trials, and tribulations of every kind whatsoever. It is quite as much as I can do to take care of myself, without taking care of ships, barques, brigs, schooners, and what not. And as for going as cook,--though I confess there is considerable glory in that, a cook being a sort of officer on ship-board--yet, somehow, I never fancied broiling fowls;--though once broiled, judiciously buttered, and judgmatically salted and peppered, there is no one who will speak more respectfully, not to say reverentially, of a broiled fowl than I will. It is out of the idolatrous dotings of the old Egyptians upon broiled ibis and roasted river horse, that you see the mummies of those creatures in their huge bake-houses the pyramids.\n\nNo, when I go to sea, I go as a simple sailor, right before the mast, plumb down into the forecastle, aloft there to the royal mast-head. True, they rather order me about some, and make me jump from spar to spar, like a grasshopper in a May meadow. And at first, this sort of thing is unpleasant enough. It touches one's sense of honor, particularly if you come of an old established family in the land, the Van Rensselaers, or Randolphs, or Hardicanutes. And more than all, if just previous to putting your hand into the tar-pot, you have been lording it as a country schoolmaster, making the tallest boys stand in awe of you. The transition is a keen one, I assure you, from a schoolmaster to a sailor, and requires a strong decoction of Seneca and the Stoics to enable you to grin and bear it. But even this wears off in time.\n\nWhat of it, if some old hunks of a sea-captain orders me to get a broom and sweep down the decks? What does that indignity amount to, weighed, I mean, in the scales of the New Testament? Do you think the archangel Gabriel thinks anything the less of me, because I promptly and respectfully obey that old hunks in that particular instance? Who ain't a slave? Tell me that. Well, then, however the old sea-captains may order me about--however they may thump and punch me about, I have the satisfaction of knowing that it is all right; that everybody else is one way or other served in much the same way--either in a physical or metaphysical point of view, that is; and so the universal thump is passed round, and all hands should rub each other's shoulder-blades, and be content.\n\nAgain, I always go to sea as a sailor, because they make a point of paying me for my trouble, whereas they never pay passengers a single penny that I ever heard of. On the contrary, passengers themselves must pay. And there is all the difference in the world between paying and being paid. The act of paying is perhaps the most uncomfortable infliction that the two orchard thieves entailed upon us. But being paid,--what will compare with it? The urbane activity with which a man receives money is really marvellous, considering that we so earnestly believe money to be the root of all earthly ills, and that on no account can a monied man enter heaven. Ah! how cheerfully we consign ourselves to perdition!\n\nFinally, I always go to sea as a sailor, because of the wholesome exercise and pure air of the forecastle deck. For as in this world, head winds are far more prevalent than winds from astern (that is, if you never violate the Pythagorean maxim), so for the most part the Commodore on the quarter-deck gets his atmosphere at second hand from the sailors on the forecastle. He thinks he breathes it first; but not so. In much the same way do the commonalty lead their leaders in many other things, at the same time that the leaders little suspect it. But wherefore it was that after having repeatedly smelt the sea as a merchant sailor, I should now take it into my head to go on a whaling voyage; this the invisible police officer of the Fates, who has the constant surveillance of me, and secretly dogs me, and influences me in some unaccountable way--he can better answer than any one else. And, doubtless, my going on this whaling voyage, formed part of the grand programme of Providence that was drawn up a long time ago. It came in as a sort of brief interlude and solo between more extensive performances. I take it that this part of the bill must have run something like this:\n\n\n\n\"grand contested election for the presidency of the united states.\n\n\"whaling voyage by one ishmael.\n\n\"bloody battle in afghanistan.\"\n\n\n\nThough I cannot tell why it was exactly that those stage managers, the Fates, put me down for this shabby part of a whaling voyage, when others were set down for magnificent parts in high tragedies, and short and easy parts in genteel comedies, and jolly parts in farces--though I cannot tell why this was exactly; yet, now that I recall all the circumstances, I think I can see a little into the springs and motives which being cunningly presented to me under various disguises, induced me to set about performing the part I did, besides cajoling me into the delusion that it was a choice resulting from my own unbiased freewill and discriminating judgment.\n\nChief among these motives was the overwhelming idea of the great whale himself. Such a portentous and mysterious monster roused all my curiosity. Then the wild and distant seas where he rolled his island bulk; the undeliverable, nameless perils of the whale; these, with all the attending marvels of a thousand Patagonian sights and sounds, helped to sway me to my wish. With other men, perhaps, such things would not have been inducements; but as for me, I am tormented with an everlasting itch for things remote. I love to sail forbidden seas, and land on barbarous coasts. Not ignoring what is good, I am quick to perceive a horror, and could still be social with it--would they let me--since it is but well to be on friendly terms with all the inmates of the place one lodges in.\n\nBy reason of these things, then, the whaling voyage was welcome; the great flood-gates of the wonder-world swung open, and in the wild conceits that swayed me to my purpose, two and two there floated into my inmost soul, endless processions of the whale, and, mid most of them all, one grand hooded phantom, like a snow hill in the air.\n\nCopyright © 1967 by Bantam Books\n\nPublisher\nModern Library\n\nCategories\nClassic Fiction\nLiterary Fiction\nFiction\nClassics\n\n\nAbout Moby-Dick\n\nAbout Herman Melville" -} \ No newline at end of file diff --git a/x-pack/plugin/inference/src/test/resources/org/elasticsearch/xpack/inference/highlight/sample-doc.json.gz b/x-pack/plugin/inference/src/test/resources/org/elasticsearch/xpack/inference/highlight/sample-doc.json.gz index 881524e46e18639782402236d4aca01ffcfaf02b..d49625f0969874d42ba93b826b95bde74ea28738 100644 GIT binary patch literal 272830 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�5Mou!zf-GgbALC0~V#(LhPv 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

E=Cy4Lz44V9#zFz^cp43;C3+?@nczP81XCi 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

(p3hkgVXT3Uo2g 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%0DWsE!ljWJ! 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 Y>Xl#rd;jI{zyJFCA2)n8K%&7E09@TS= z>9x+;$IRT9T~;ZDMngbD1?6R&?PkZ$b3fKz`#=5yD4@&>pw#^rz(?|FYZR?;pK&KYEkk$IW=|wqx52+vkt&gZ!c2wfnyu+w-|QK8=ef zq3zs^@BZ@qdg2Q{8c)qIwtv|k9@^awvLBh;Ur&$PK3|US_=tZ$Jz{f7SkZmH*ja zul!(W?R!W0@%@T8hNpk%zyBA>9-H@TqKiJoQS@hj{ZqdFd2<^2+zR3%K!22-W`(7Ct3WDe>eW|AOG&qeR{v~(_npk>@UOl`OQ`L@H{qsc^Udsi|73I z$jeDbm7M@$d+c-$PC@A|?007JmW$L`3%yWi}()4o46TRdjl9}exnKW;C3JQ@FZ zY{qAF{NDBa3EKcu)gNBpZa#0f&1H1&=`fu8w&BX&4E??hoo@y-@OR_3^UI9?L1}Cx zd~&mEPUmTou);AE-TQWfm$dD9v+tgsxwG!^6MWaUIkcO1$NmMQ=!g9aTL!~A|LE8DhZkFI{o`YYHM{@d zvWt`Zq>S&&Iz#84n+L4pm6hk-&^%!0pznVcI&=M`u+aG>%g$iRcbjH|8NqDsH$VHy zH!b zJY!V3npYR{+s$X&Z9ljvKlff>%azgL7hfIEE#C9QIj8t}^Lwts7wo*v7hLmh&ffF4 z-(H6IEmoeb@UW6!Y=+%daO2JYI(A3wve2)sJ!$WswA?T@@6$=`j?n4!y*{a3+lg<* zpOd#)ROVS#-e0$Orv|O@+oCM$tV(WL4==tkP2#esZW`x_bV7NW)QJc^x^vJAM0F~y zjlZelw^?0e=)sMEKXsizS`~S6`v7+WTXS01S$@;bVYcSDOv~G5w-J4NSrnPP{_f7- zt!OXuERN;z{s{LHX_>`&EKhj<;F=SBTovEG;AwaAtx;LV`R(J~&Enc)ep_+-@YYtY z6N&NyLwNfLUQ50?iJ~H|Z>N9nM?Z?=0_{3_UCY%Iy{)nD>O9J10J%hiL>kw(E9mZy z=c*Sd>O`M#YWtJx1O<{JE=6Lx*}PDmWkqq@)2n;d%VkBB$roWO`qrdK>hyLsVY66k z9_R8~p1-ac^B7f8a=Vo{8&f-$^X=2Qt$lkLsSsqKN?#vlb2W; zqHLI=Z6Z0&6ZOM+IN37Z}}{(v$&MSdVm#Sy@g7EQ}T8=a7#qK zJxQQ5-M;5LJ2A2(PU<+l{f;X4t$6P3d>_1)YVFu)m5kKr^hT3N@R_l8-xgJdTL|aL z?PRszpS-!@gwndo^>}WNPy254D<`e$h{x9LHoJ8Dvk4R!?AuYmKK9*A%OuXr{B{TN z(DGl3(?6+Xm+qV6)1`T`USdhqv0Qn7W{uRK>)XK`x~+WxR(`6w;h{NMbB=+MQ>1&E zZqqcybsfpE?e|XWFVr+iYmBwbs5K^T5N;dWUDv*E_CW@Bn8?tq^zCt3VcAP3g7s`d zT$1_if<3g*vQGV;C$Pyu14*SnFl#Rde`=)|6O7BP2vxqnYL7vt$e_3CxO8?tr%{T7 zO_q+cWt~6*-2m^o?e7jcoqq)`lQOF0N@|+W8m%0y!7BAKMI9wj9appiYfrEP%G(e1 zo((UNLqmyG59%++U3f{3fj~#)8W?z&coCQnRW6+!db_I<+9zoy{h$fdcQzU+&4k-E zmO%fp<`@UGT+c6Uvk#ww`>v>D#+;qf?@gq{r--WW{U=@mHy%d*c0a-Rw&tSBS2ome z8F3ASN5mD(kz1MWxPxJCH!o}+bhfztnlmP*8xJOeL5<~epwC!yQdPB#$HQP|T|~Pn zfoZEZ*1;>n-F7s&sLn-W$JD&D1rXys85W7?u-J92o#-(X`#KRL(rKa7W3VxGev-)M zFD`2=WzmN3?ow;!J5o`Wy%}nsQbsUDWu3wN^UY9|acRji#iv?3zEiX^=hm`zoVBSK zlC)mz{do;#{B|hs?h=)F;-;$xd$@cUUXF zJUM!*TDJYJHIXbSBh~rc$c`q0qova8p3Y`30QI!2Wg(wVp|wiXZuXXmy`d;ztI4SD zyT>-PCwU}y_+#JitUb%hOs=G-eg9yKG%BFi)UwvS@g8KbRf|&2tQ{`!bGXDKY`Y@K z#D`r4Z4)Y?sOHW4CNyK>X`@J3WQ4&`;LkgW-(>No13I}A> zOnMC>S;daXsGraKcCbYhCq)YVN_jAT;f*^PPW^D+JYOC*Znf?<53if^OTX#p@;JIvgCV$XpxpT9n=hVm z)3xJf*KU5+Tri=V&wQH?9h{%LVfW_YGIn&-+t28s_dx{z?yngFvY)-(d<|=?b&)P8 z8PWaZ{r`B}jF$&=cr(6^=l0-R{OA4hhkt-VfA9M|ZgOaTjL!KG$Eksyb$r4S*zEA_ zuWvVBokQGbS0Fzz>*{ zX=Z&l{0CYPZu(_^-21uqZtUyMo}U|hPP=V8E(-qr+r{&LGp(G@UK)(W`2`k_#a^Zb z=p%LvF){FGwv}Ie!}hs5x7+h&z~X|TyTe`j4y%jr`9*(uKeY3^tGD$$B=5VC8`lQJ zh0u=t+U+~{qIYe3av>qS@YF-pMPA2gklwi8x9q{$dUPE=a&fj_UdA8(0Tcc4*TcyD zV*mZiW;pa`Sdds1$M)>LB#5?~J)|2>R>$yXyE*nDz=o%H!)DuKvp7f7=;L}W{{7YA zL{krcW%#V&esGb#{&4Dc{blooyC9}6{3>k7-N&Ed3x0_UdpOR`zwUS4aoMkLx-HgF z|1as#!9C0U7+VC(1=Gtw<bPn%?fw zmF}_Q=<{^??XSN4_KUB5fN=A3jN7?+!gDY^8+Y{LIH=?QhIk%bCM!xCck)LrpoSY$ z)bzVMOtEiH@>t?wwsoCAT0_wnU*Fx`-U4cQnyFv(?hY%;w`XM>i3cwnv|a={V=cO? ziI_x@6r!gsP68*Dq@_lB{Ml;lMN*2paS?l@9hr)rG&1nlw;cBI>fI3rFm7_1uS zoT8v{os_kNIo;Os?NI13wqkn>JKqd7Os%i!8iqhx7O5Orp0 z8P9&O#w1VGb?eSFFA&9bEFaiS=YSK6D%vEvw(J>D;Zu3U6v~BST$SQ=byuNphXEUj z*YwHV<|e?Hl{kzp4^Ba;>nLH2@ut~MRxeUj+{jfeoC0@uIGcTYUe<*;J?1E5MQd8R zH{H%&CduMTJb+jFmzSe+v=lF{zuQeBMQ3imbuyUC3YKQ2282^_yadjySPmRhX1qjJ zamdsX_N}mjVU&Hq8%3uX_U`Ry-QBgJ9R{JgJ}_G5C&$MZvHBR%JjKjlLX~hC@&Rd#fmF`8|3`P>>ga$pO>k_7PNXeS2Q620w7bSQs?V zc?#Xyr579!p_6$Qya~u4xib7sM-gjTgunhe^dsTspAx3|fVRig2)Z7O-VVE|E#$yjeT! zS=r(vl`r3(;Ik7^JFe{kFBw-+l*rk(uxT0jr6Xu{8JYyvpg6I^h73=^nII8nXD9l0 z+$Oc`g`sce=29Ie%jgti$H@wIDVP;bD66qw)O!Mb&myMuN2pK#aS__j2!JTWm9Pwh zWKQLjuW4u`d4Zyg@<=?elR;!cxL`G`WcH#Lq3&ABuuQ>}EW@7CU3CTc$k1EyY0P*J zu0$;Q+s|eA!P<)|Qar}Fe`$k2!d)ffwGZF}tYw@aa$3Xkd))?4Q5M(Gv}XS}}ph`FPdz zvEW!r@RW4)^bG6kWXQRsrjuEWgQaIbpaD z1ouiI!!`6FVqG$3y=MMc7aitKV&dJf$2}NCU_)gRFqxemUMhz+m&q~O9p4l36++t; zv})<>zT5Aoz;&`VrtcSM%Or*JU8wGD5DboZo@w;7HN`qfVRTj+q*{OglN3g};!AP! zzi&feyH0C40nW|$oi)R7jbvu&cC_|1$x2zkSCJ5EA6X&+J*N?b;lwbcm4uSp|QhA&7nYb!T==Qf=o)IAsh?7`jw3zGDG}*BWqzkeMN5KJFPY6Wk zutCIAGP~hSD$Da)fU*;Ih?kO}i60x-oOZ7<=9p$;VbAe$hP5);KF9V9GdYN0$-rom zz(_ZQ>kF4Nw6j9``NWvg9Hx!Sq!gK5J9baU8DbFSS*f9=L$EUA2zO=>k=pt0a+wW|G^6nto zIu6$%WvJeDtRSfVIG%?EY%+polgk|YvuA!*S>pClGp&w8J2Z50mY9VWl`yJnaqM|5 zZi-3gbsnoFFu{8vKy;^g=YsWwOC`!8frfa9SqN+AETv5yD zFs>LJO|nm+O&MB^E2^&5TzllZ0?;p_8wbaioH;X^hz5HUXMzXb_ck!-24lbL2n8=f zLzsI^{1=@8>m!^faV2U7{beC|9A&r^)dj!349yfi#y+ZPKdA8#nE($+xp#LLYlY5T zN1FO$sV!atm!|H*85w{pI;&t^qzi#RDQ5f(`;l2)WBa~kXpSjd?asnZ~dk+DJAZq-!XK${FbTh+f%b`uUZ>ep)`B^*gN}C=$T%I0YHy4+S>V&^N zH@nv57yj^{8{!3qcJt7TJ{0esZhMs zRPT$+>7L8V?8gnW4mZwTStMlokl~S2_`uT~!{T9LE=cV^<|plu-Lc?zj|1PQnI4Z9 z&YF*<5=gN5*}xC}cHbN}=k|DHkRA^`Hf}BT{#^r8ZTF4K3jK9YKM^DQIK-B3u&DQp zN#K!nKMf}XUYl<(%*EJzy?;HNx~+{@T&I;2TNw>omAs=v3p)1kxEwDp5S5!>yBS-w zEVh^LP=T&dDRr;ILyOICzr;hQHT1=EgN|XdJ$EPmmf_fTzntJNvCm&Oe{tE{3jGZR zYo6cDL+4yEn}I9&u_H>5ImCV#KZB8U;c6KDi^exU{HOgZ2aPd?^f&s`Hx6~3+e_|t%!Aj}*; zKU4ShQEdD91oX(~4CKvc{zN-Yat`8>6#3iDpOl^o)hQOQ$s({>(B&s?@+W@`c!{`* z#H+Xn^QP3E*+`<#Q8A?mRA8`1U-Dv*^QFDrJsUl}Om5af+gs$cjvHx~04zEu&+)lS!1ZM$qhlvmkxSkh3iK05gj`dxgx>a|k6CNnPL& z(~OV+U@4NkPzT=-z9EjvT7m&y!}bDEoyaKdW(&{><>Um=RF7Z`c^T&JO0ubUF69N+ zqBy2`Q%pbvhWG`LHw7BeT4a$t0rz)l?HDJyYN+4X7o>$l*N7j~97}l`7n&i7uY2mI zfPGR59D`PgHDeT4G?XRyAcoZpnI8*Wh!w-$VAT4IFD8mH)uC`fux2JA!}&6G&H?nROi*oses`PDeT0vrQ%!r z&e>{CBE{Z{#pOHp+pYQ8Q?deR(uLo!P!#ei7QEcuoyC1ioc)S_xwLkAr zJ}eU?0zr6vCQp(HF&AFO?K%OvjBr%TkkOyu+l#8!OeCME7T}I4J}Z$3)Ky+HVb5hL zK5%PS083@NjR$7R_-!oaUG zIcv@^M(wc2>6)b)`q}lDhy9fH4MR_(OOO2kOD)8|E8gRxmpd=9NhGOaBbJdtnu~=p zVLkWf5XX;P0SESmTqJ}=DmH04fkGZO401hZpP=MS0x1rB0dxc`4{XpCMujO5Ne4_4X+A|4a-VUC z#)T+Ahqj%N&~ZeJaUwo3bm85kj74>oB$a$Goy68&;Dk|ox;cjSyslEgSiSTij9uZ1 z&lP(M+ay>IFfprIVJR~XF~UdS9isgZsO+aTD(PgAGbH#}LhKjDWT{!!L-P>YQ>EE@ zd2WX}He4!DBColpA(4K~Z;hD>{T2j$@15C4~I{29;1`_0QUuGWovJ9>W_ zTI+h-xyU?|h7Rn^BW^#>soU<)-F7qd{dx1R_I%_Uj15n(_Tx_-Rjm_6)46vo%`iUS zZ^jpBfggXmAl&8cGPCVs9$gx*`|->GydcE8UyeGyYV)%ON5__&wGZvwzpn<2_h(P- z6oOq2p%1;{o@QQ2m`En5V}) z=J3!CXHt3Njr_)b6F5hvX$>*!kH-_{f8*%^!xtWpgyh=B@Eg3{J8dg`@z?tu=AU!9 z#mwNF-DCKrSIdh;;Ji#R=)U{o|NXzb-F!t51m4q(?G?L#n+L4WW6w-?&%kZ(^Q#xj z$Ze+0;r0CN^kG}&zn-|nZKb($iU10~amgg$3FPL(0t4dDlViXuOieACK5^9NZW;S0 zL2v0XPT%!|jrzv(XSm-y_2=m)zDqxMKzdYS{VRZMPGxlFtt zGiCOva4FjGgjg^CHStvY2_m z`F1Ges^H=6tp#8+nBy8H4ly#cXK|(kF6P-}!g)l(B5A(7^UX;C`$bd3`m;sfp}Z

pSn5bXnhp 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�A`c*hJGS4(m(BB6cOg3JKi-Yf_>*qOeUc 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Ġ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

rVsROZ{a8(LJ zo9R+Zbf%i8C^&K=OoaMUnu@)KycLA3$pZy)V13Qc>sdETTAWOGZ>Dz`A%pA$D$3oo z^ExT(%xw3m*FuD~o-p?7ozjLZytoo5-dAgG53?~!Du>#9vjjr9K`afS>9KPUFtm8= zYLatCB6@)fx~6E*-`GB~fDfGku_$B=RHII}h{AKWP=<+)kvPeR!6~umqoX8W5}h8# z9m>T5{kWp_iFL#Wu{`$8Ah8?YUm>nQ&yV9cF7iQJ- z?ryGpqEFAbyowTBuikFw*;y^TXzL`!TfbsRHb7*9YNE_ow~g z_Cx*7TS47Uhx6^9?H_OU>jk*@FxwCIPlCHucto~)ab9|xwYqh=?Hqb}*?P316v;Au;=-<4%plzM2 z_yyp&djBx{2g`ii&5uI!R`6vVnB`fWBzPH`WkmFYquTZd=cKpylYmx0t&*3rCiIOoY` zX}fyoKfm=~o_8XhuITpt`ToHcsy%MK-6sS6xVHDWwV8c+VvYS?GjkcN`h_o`+jED19MrnO_LCf0m6xLS6 z+`{<3yrPZOyj^88qL zvOUtXl@MImruxmiKHJ)R+O9w7rR#bUFjzOZ-@JPvTd%0+r}Jq+hS!lj?eEsMZoWEI zb9UI=Z)}Oancr5ks-1Orw{-~m@j|3+gM9pmb^RG!f85$L)(1V>|6?oQ&kpUk9Y62x zUYL>1fc-L-V715f$kcDKcIq0wrFtX}xiqvR?ur$m(ny3VOsVC1sfp+yT@}dv2xbI< zO&){|g7km|f~kxMI#x-HlseVUj5v`Y%3mh7N71BEerZT@-B9AuIgfxxS9Gdv3?9Tq zhS~*DG`bBzWLL|h*dW%cmOOxKENX^U!hR{Fh)oCiYK5+YW?ZR=wNlizUoas9rb5s_ zs92$yD4JDueVRV~g=fQDafKXt3jn9jh{i^8+oJcM!Gd#9O{7#VQ0jBX-_|><=|L@l z6n&0CH3W)OMvLg0oT*<*9zH=7MCV3H)}+vz6l;1R^}&sf$*Y_YuueUaDoQAp5NZ|< zqo}j(^#np^Js(e9IR)o>jFFK^A%0fER zP=zE;N(fAgIH9S8sxD8mpOZ?pSk0HnbpY6Va5gfMe-^_YF`9_=Gc{ce^(HAbHP>nl z1;8Td?=g%7D3dDHn26U}yoQkI54JySQBxtsqT4di^2zGcEf`1V&q#&$Q8i+KD2cZX z(OF@Ls!{@&E{T7hx(dqFVV|;tzex_v4CsVBq;{I7Ot>_m!W&(4KhSJ@Qk}mfM>1o% z(Y68QZE~5U!bYWGv1%Y`ofHoNDL)ju79oMeiq*)v*78{vW&u`pavQ*jZk={S2dX{~ zB+(g1b*IxNnTq)gFv7j)K2X_v(mT@bk?QHt^j5ir7gYojlTZF^D8iXbY$zNx!>TVq z4%&RRJitzr;sJ9&Ww9ia6_5gPqWWFX50HaajWpnXi1os@0=33>W|UI~8*is)o*E_c zr4ZU-&wMFzXOQ}I6crOzw&I$9PMPqWF3phiV-bnCtL&5?<&8# zGz7rVO0J7|qWf`-$keR!!tO#xdq1`efWCypH$v9Y4wAkF0p}ZwPQ=sC=}+ZkQC+}h z#9T1))72x^DB`+V>$?Ujxttn>wdO@_*%9Z_So&t({j7F&_jZIQSNz2_WDfj*c&8wg z2>D1+`nM6g!j;mNJC=gCL~Ir2bKJYZd(QD($G%UDvOYl9?^8_q-mKw>k!+{CXdgeMjiez zl39gN%z9fCVdntrR;1Vwn^;QfJJ{=rql53IN6OEQmOe{|KB6X$(riLv7%t^AN zpm=<8>?Lx_2v8LpvM66ip@{4+%`-`(Og@~O!e3D1&ZLn< zFK1BTf`#@`M0(BJ2QgQs2545j?u7k=7Q;ryI~6|0K<9Yh2xMOKVgg)5Dp;%)uVQ~*ZEf3Xr{ zQ<|o5Oo+U2?I>*7vSUj?dP-D`65U3NBf?2y!xBb_*09Ls5yIK4r4;+!&G91&eW@I< z1iC|!7*U?(D^o8_Q6h#k=3`7YXV~DN6CK9UEe;}Xif|LC>Jb#vK?22&KjZ-JN7bXr z276wb05rBwq}l>Rf=aSA_<_zdT9e@E^t^pajkun>OBR_!!u|5{W?e+4ce} z1jat521K*0#-Y(=ud7jH)sSM8U)zw+yKk9X?-w4cl+aK<`tf6vPH^#LXGUy#)#~~+ ziw5CQ7SNe+*%DbS(4{Bq)Q_0%F>jPHwNhWs+}swsmf5lTTyYrDPc`>Epz@Bkx^&FI z88%;-uvsYx{!GhZ6eJP0v- zhT}kq9nsxR;5|tVKqmvFSNlAT*f^Rn>S)^8hjw^W=Dyb5~WChG!oO) zMnE<6G^5clku0gfKzYy+&-R|afwgL@e!!VjF=xWIup$N?I+(J$_~^V;XHdol z74;#GNV}edaEIMBsT-mR;&l@{{z@~%zPof_ewwB6fwccY{Igk=(ozL$yh<-hV2sG6 z>Px+_Tn7*FbK4y3D0* zh$gzLG+7Wrb;Mq@5h!3AC!u2DO}wg0L!4wSntZD7)FOC6dpdcq7$EXPls!T|1F1*? z#59SWhl=uIx{2gz$6VSVtA-iUyrABKK|(}5K}~EmP9!9kt3EIp$1cETo6y5s9{=^dhJ?s1pTr0hSgaZbKs`$yT}d` zzm@!(24~=tXa@?ryD>H$cfPjl05lWv>hFI$9QgkW9NHiCFT2Fm>hxapnPLg8xVXQs zRF*&3A5Pbm>heO!+0q1mWq;os?i|v%!0m!X)2sF2w0Y~S#oG_7+r#WwKmYmq{Fl`? zAMSVag~;@~{oQ=HKtA{H=i}<}Tw$^rl)L@=-ARDsr|o+8DXh}rg@?!e?t>t$|G0kI zZ)Y*N{{HtB&}WO0>w|soAJ*sN@o~M|-K@TzPw$1ZRCBTa*7iiFUwp8! z5&ZD}_zPnm&mT5hn z)`AY-t=_J0*P>cpZ}$sZ>B~X{SKKb(QcbnsBv#Y>OJ^SPJ z{lVVv$6wW9Z{OPJ>`tq|-xx^J&mKlp#g&Vmc= zPXTam_qLjZef5EPn77X;@;|Iszxny6xAV^KxzOF#r}^#XAYN(Pl8(t1XZf4?-F|aH zKL5l1Y&X5vfBt@_yOm0L>~lB&#Tl*N%^xj_I+QO6Z(*`!y#(JqI3io~<=bWTIQuTs zFnslH-kmE?_S%MDX!_I2qWCn%)qFnekInCHR`roWeWcy_LP5Pe&F%cmzWvQdgvq*H zxDrK{g-yQ55kS1BTVL;6O!9pLE)WzI?B)_j=Ipy_I2Wt^~DXHLr4ak;%TOog5(n5Ik* zYkr;DQkkOIJSfzB@^nDMo$14soJ)d2^`hDvk)w_x@S^Zbl#?An>c-HqGboK)k$RHI zhD&k5(sq(c%8N?os1T+-Nh=E5EwSx4+9DEqjr`y;Oo&U7>qL@_!!kX0#hyR6Q1^Z9;yJuIPUekLzb9z|i_EMR=N*AfO|lwCtcs6RAfEMMA!U zv<7IF1AV`hv@GqcACWcLM%)I(ss?!+TRSqmB)lwUfX9m zVGmEtwjK(s-7K{fD#!Fw6mk)Amm+Q??t>`e>xSG#y?EmLfl`4Ocu_mg)%L(#NF)I{ zM6(&O9{HV1=qIX=335dm&9*z5a*NwMDb&CQ97mCaA`YSRj!D>>llSS+2ew9tM>v|j zEe*1%o*YX1W0!-R8Pq8aDoIl@QC2CA2#B`%?pZ83n`e(ly+h;(y&#gshOF7WmeR4; z&`Z1((L%+u-!%F|iR~wTat_jwq4Qb&2@w8!+JpJ0MuAfR0W-O(1qKD%}{lp7ImUi6k*07GwIq`dUYRyoha>*RA0VN zl)aL&&Pc&#UzDgqoQ<76NFHmi(UNXfw|5emKZYHXi!Vdmk$s9u&sbzcji85H79m+b zeSqmE+GC}FEjhuSmwHK8p$P=<{SVmMhi31<7jvWh)YLgpzk;YSCY|n(D zyhxwNj?N2n8cU;|y~O1Om5TinqaH?HR|<2$pOzm zl6?@AqsglItV?$WFsw-wUStI9oE)hXF!UisA|xArxJ5E@b6sgG(cqztQ+qmlYAMA4~!MuDPl zB)Hvcw7(`Yu|a~`jYLn4hHOhC&9;08#GnZYTsYGioXQ2lO_B5yPDr;elmrygst{d^ znh2ZDWVdGOTp`3@Qa>bt9~D_O-Pi7}n;+jJy^O@FklaybE;iAluV5(}(Yp_37;_`S zSx*=N;3!6py?``?C{yCB>G^c8N>WIyaHw`|B7O{Vnkk2GK^6gWqmWG#)VZ`B5=vg0 z2iQ?BwQ@MA;htH3l2K4En)A|A_jj!MgtjkA%+1_^oTJ1~z!e&>OMVb`m^QBv*hoEI zfG764y7BhnaFa2pNdlZ-W&b)Xi7A2Hl2F&}rk*oQEeDY#<6)xB(4!+HX5EfLPNjs^ z=mhpoq|%7LGZWP_z)^T>3b>1!BFL!rkws|-;eDYQFgxaz#@KB-rI4ct?`bjidJ9^N z=CD%MDLOO`yvg2i%hZ#k4#h}=E77f-;pCM>OTvCIK?a5%jZltLYMju;{Z}4~QbtKk zN$6deeMGk|OTQR1!|HGt8=QYv`#@XT4F81~(1DpKiPZ)+mzs|yV~J^7Gn-9C&39@p z9hI7Tl~*yY?!_uWk)?D@Mu_5^U7o5oY9zqwqa>zK!%^l8<-n$K3e?{in= ze$V3Rjw7^PjM9>(*AQ0SRvy#Z6$uegy+a*K;0n5qRzut1F2Nvrh<3|K%c%j@=v+_{ z7w!2Z$A(%?g14NIm)OgJqfCz3EPF|0wL=BED4sMdVOlU~+lK`n)eO>91nY5WQ;))5 zlA%Ur7s(1tbXq5|f@I__@J2miVF+rI0kFK;Q>lVcFG?JmQ>JrFOt!-j2r#k?dY@nY z`EQ5l{@;Tp`|5E)aSC@EuGE)e3u5&}$v2ZAY(gP^xq3f4K+-Pwa`~&39kphzR$mM^ z<&&=-=i9x|q8~o`{spsJp}j%~jyLJ@%lgCl@#*wo0rUN^`OE3UwXndKuh>hx@NV9T z{?w6~>MX8MM~5k2t=?}=4>mZ@zpKd6Hy1$dd~r>ehSzZDL# z{^+0I@2?$Ze0&Wh{k09Pz0u=lyA{Ur)l@iJ?&*BD+1F99pC9)2=xc#HA1jIP!Z2IG zhq{s`VE?qO5X9$;iMMx|?iXHGAJN&ljRn*_y@HemGln+!?;k{BYB$)<$73aG7Wn!4 zZoYm-aK@YD^KsnouI>N3e!l1Bscu$(+-*OsQhGgPPY1i#=4risdB*xK8z(`2zgtLJ zAJ%U+mGsnJ;ohG2cv|)2^OeNde8DXrK6y5~^1c1;X7!zeaF=QN^=m}019hL-VC!RC zAeZCS>bQ4qXu*anb@D@niq`!wy)5?2rC%n`t|HX;YxL~9wX@OcQMZDu9>gTPKQBMN zs>?Fo46lbt?{>NAvNJ2w?1z=$zU#xmw#?>uoGX;~v|pvykG1?HOwD(f?P9O`+xgAm ztX(H@ORbZ-r2g@Df7HUbJKs9ttuxr}&Ndoavknu#-Jk12KI|W7Um$fA92e-de{R1` zSA!XcPrvjGp1sl~-rL8vz~}9|`QyF)-hSp&cp(aZSa0o)>$?R2e7UL?!V8=Ddi7xz zmvFo)CD#jWE1m8#A{D@UTwM_1S1UXI{lmk0Q}Ox2-|mHAUwD}Hw=oa;QU!F|Eg$Pn zHUqRjXb6uF^Vase24Jz8Yw>jprG9j-V(!jjcH)7ErDNI~bMVZ;MM*Ssf^wUUS3O-`Q#(#_Gtg;B%DSM6nkZXUw`x8S zuCGudpE&w@mO>X~v@{;r;$jxDTD0#ns5;fQzS8OUlweim0(zDX1=Qw zCr#IQ^?j#4HN3brr0tQQDNk`Eq6-oGHPn=zcaSg_<-vmRIlwm5_adi&hpmKJ4MW8B z61|j>2vlWF)MtS5#RUkd|VmijCsAk4aY90ZIa@#i~IWg5W{T(a=wwY}6y6 z$|YBs0KeA@fJ*Xt;tVcrR-$IS#MVW90C^M!73pPSX<#9p%RKg!ukOVofOOh2S`F_( zO>qyU0gNt{xr`iv(Y9zDkcOyaFYUl5eay^eGTD$c>T)&PYQbivPqHYGv0`XO7=^4u zOQdyuF%p?Ha;v--7zst@4Ix0yEG5)#a%31m07g{{q0nZhh>~~A0@zV`(@eS6DXK!- zDDn=~*is!T+G)|D)O;#xil@?o9if35m(=yqsH)a9l`?unC@kS2#OX+Pa|G)=2%$tY z5J_YUNM$K+pa4Ba5?TY!5*w(}9vSti%#inxpmR!n)W0>qmoiSaJCxiZhIhf{fz4u2 z`#OQo?A#+=da+W7+YCN&u>|lcr00Z-#P;|Y8$u%=bm@>|-MrYErX$Q8y}qekyH8`Q za3XU#iYBwkRM%vtGV)|Ibm}0xOc)09Q!t3IiSHY7&-(U-q^2BXMs-pt+!8Crs17ec zpqg2jh?_tF859jDQd*@(0ilDyj0ro^HLMptwu8!nkW)9Op~rfS9gjM^2=pNe1oDo| zOSjz#+h2kVRA39PTMd2tX5jkJAZFe5lzbV%=%ounw-!|{rb$!s5;#n^=+B5%Uu|FQ zsVy+MrWMcHejsNx3uKOL@S>)s-lyPX+Gt^-1eK9vG!4^$94vCiksLed*o-8YZRZNN zDVW=7aRtU_Q4$YWj~j;;g)`oWb7G2!5La`^&@di$&bO#TgdmN=%2DB|7ib8pXvuFv zZh!*EMhe;AMMZ1K3OIE$T`7zDmFVXzkVm2Tq>!%RT5(UqmLqB%n7c^O%-FjYWji1e z%kGJh-A)$OZRr*kuLDn?8K5yW0wpz&76g(i(?J}N0kBs#529hDsKVBiIbRUF2oDUskuv!hPl}tjXYwYYtpjNa51m*CSnc}X^jYnM9g#AyTU{-}&rk?YLDVW9L#MJGAuzBhS zxJ6QXcoWChz*G(G*vRP=jnI|VYcnA4+@y*%@uv$3jS>XCD5Wq+u|I#N@1z$5ALWsU zqRAovtQp8e%U%jjOr6nap1?D-hLz7m3S_}%%~0S`I%f4RLT-N)w44H;tZsY41xE==Q}C$KinLQkvrtF| zuUwq+57g&iX3hK#aC~})Ab<{#I!~HrgT)^-n*af_g%X}NfZd{Qun{s(a;?;F3f{9F zjzq3&3qKIz(@cRgZ@}hOxdlTLQMqCJ=ICT+@b^$8ga$8|OX-?4zMtAsUWV99K8#Hy zWQ2MFXvnUODP)vmRwRrSA_2vfCkc_m6ncVrj;OT}$Wf(g z)N)s!FlJ)x#XHOcIh{75=%bQ1s2pG)1VEgs*Q0SH+;Z9uD#%jrO&WNX770UuAJLCG z&OZ4?Sa8;9pl-fwhyO^DAZ8w2@CSCc8Yvs***cNxKj-G~g3x|j-gai<@;1}bvitf@ zQH+8u=)EW5U?|P=8=Dfh)~b9As+?+80;}pOW!Y54eHj(uBxvEA7lnRYAC&k1RnfG^#eE{8ajNdyQfbOm z{(_=NZX~vRpBD8^0)AuaL~{-UpT!?W7G0W2w5`=YOCn41db*~m&Trk@7J@{o0IKBd zO97R5wbTi0cSrUVb6p7!pqR8E|8;aq3E~k^e;l;2{^ZriW-=k4A(CSU*cUxYc^?dBIQ z+=}*ln75m!{o!==!qR#7xY-H5xOSq|?dDM!K<6ZV29BP0w-4*xy@*~bYp2D8;?li$ zM%lxs*KpEWdx{Hu^##UvzkfF$b}w@GdN|$gSP^l{<@FaQt935Y-747ODEiXM?<(x5 z_(T0C>)mUZr|$E(zS9+)pjE`EVgz+`^2q^zc29eq&A*-Jl{h|6A8uCvyw~6!D)QAH z>glk5vz;I7fZ99g4SxL9Z#D}rYvmI@{QQ$Zr~2HUM??MNuU23D`tI_rWtQq|R)FfS zzjUPFVcs9^MgJ)EL5<@FHj5$-ncY@yvfgP!%P)5Bq&n`bzl4^E-$kjhi#g8ggnxV+)cp7YKI?PH*> zjgV$j@=(icY6-k~bC}<4oSFDS?OU&9U)Ob3&h@+5Zp9+~xEI9utg&de&l%a*CYI9zIQa}>c6db7r^ZxjP)|o-~Ig4>97~~^Xl%r`rSc~ zSTE(%>uX~Eiw&})ls{$;wz0q6+hViP|Mb3B{*UeY_Rr3;ec2wi40cCt`2}3P*}dWn zzIt9$HoT|3ZG@*~!TZ%;X7{6!vFEry?BAar1WP|}SHGFJ`}4cQ#w>yDoySd`9f73x z!udX5<@z#0k3au(oHedCh(0XhiLMXwFt6`$Vfo4#f}`slj4UQ*0lwFdZ)6zHzH$H6 zM&|g87XN-(lNTCm2f!cBx0ikKR@Ulyq<;L>yNyVSS37%~S^uRi{o}8+Cn}BekH7lz zd6#|v?f1SQ&oY1&O}w-1v_JfLnX+F3?G-6NK$1~ub4N^m_Pr|&kl#E>0uCa%A(TF1 zGhCJ&6)Ft6YB_Z64;HIWNaB^dLS1TNjcO?zbzTRBm~f@8>k4CE$DnE?y7`mc9aHGy z+=cYEdH)@Oc`O>1A_j}s*i<3KYM%v|B{|n%&K(p_%=;EYKQ_6Bger3y^$wCvd2pFI z@PLP8!6n5JS&9t=E3vm9h^5d07Q{Xdj+?wMPdm~ikG*RYOQ!*`D$TwnH+Xg*idZe$IdT8DmUSQukWv5z$l8qL4YxeUDWtF&0h@Ke~^*@K3azm2e}< zjxXirvA*m@iv(k$2iLJ$!mbn_(DRxb!xsI=RlVCyg+0nSL5$u#A z(1qC9z*^=$s^cGyFZnEqa7JY+9rDrzal@g?tTWW((i#C>lo#Jn~{4~E`6Hl{w6 zY(@LQC}$O+zydRY0#oh>W=hU^nkI6MhCIrgz>e~|7RuiaV?$3_bJ$ZyO#LG23!rnZ zO)!qcp+AkGA@J**Ey5Bi9K$E8SrC?7>imK{5>e`MCH+^CQA=hV^#4$%;J3CLo_9PJ~ z69KWj=cb(D2dzbZO*>oNv}!RVcwUKZnbPy6gA%z2=xd3DYr$rmn&P~__Q?F=z4ku6 zh0W?j1s0nl^-U3USBYAdy)f5@T3a*~Un1tf|J(GhdmRb!3ZFdK}SzF-bO>(4FE+BU+1I zjOY^`cAYNUwr{3SN4LL`(6X%`rtP+s zh3Mek&Vo`$cE>z?9>ngy94VIPGEt|>+G<| zqkKJ$WD%4O;pL+(;Q;g4>sqK#WlKIZvKQWSAV&jS;b^DrK<8A>W8f|Y5gSRZ6vf~} ziI@X&r3_*Zv?$hgJb*Y#Fb4rn5usGWL=06?biIT`@(vB`wH+;zW4~nz9Zj$D4K%x| zblT!>{FdGUFS#ci!8oY%8Y!jByG87<1^rF5TH`;9SHTUDhIyvUo6uZcOGfREh{XpD zH<=#Sjy>F@L7)@jy&s}Zd|2@c*f2UVQfku6;G+v)tn>SB2a!-XcP&@ z=46shdv!g?EDB*x!639enU3NxOhV*oT@(Lg5_%Nzi=x=a!m*uuLG)bUG)j4c4mor6 z8tEhV+LExjoa(VVP|7s~SD>JF>8Z51%25gl_Pn$eEF$g(N=-@LXT(FUOlq_vmSKVT z3ng$R+%OWISCM`^5N2d?438s%Gg1)C8c3hq3`XPNZeWo zHta-~bU9{dlbzEd3V{inq?Us~-f;xq$&Qu@mCPoKosdS-97DO9pDvzoW9OhnLZ9hq z6PrNe33)hTdmR&~B8|bgSV+JKQsARg{lN!=bn1{ULZVp&j&blfxY$xbBvR4QmHTL- zq}bR&YSY_sFoPh~=Zr+Cl3Cy>5wm2(<*x2rQs1%Z?NN{}%Ax6~o5D;fX(L#Krml7} z8J#(-B!3kwBx!guYLzA<&`~?EAOTEL#+SxKMHlL4v)IPsR4iqaJU8f)l~oW#~k85E}< z$BuzfL>2JBlTsD96@n6_*orPxGty2LduC~ZfEAi-TakfRbt9lWRutZjBoI`BQvgZN z+@83;;>|6kp76;wTjRG}Dk5gH=@nIcplhjXfb4ac8XMqS$F9^s1DBJ#YxH$%ej^Dd z+b*C^E)Wc$ZDz?r(9lYA1CiE2Bpp!w)1i|Za;oYtPDqh7P9+jaaZ*v82!#7d+l{;& z=fW6~tj3%Tc_+By)y9b361K6LK5pHnsP;fW&R(jtv>K*h$2Z{hMHfqWdE03%iNkdj z?Gkk}43|108fLC~wn+&Ug*q%QrZ&wyiC7*<=Y@)=Ho`0gz{c^d(-=nTz7_^SSb8!X z!gvoXP~BUYPc5f*zD*ruK6D;7$z|USQn`hbXArY6b_aVKL;D^Ufm(zQa~rzQ^2%S1 zDnRK-?lMzYERyYl3`yc6Z#9amo31hrw+4&u2@(=YDULlhQ;8L0XoBF*Wi=D>^r{Mo zdn72*Lo#unS*oF1kS$yjoMSd!ZK_lIZBSZxdiCdDg5dpbz5B4xMn2=pUJJ@!u#?Bt z7xx1G9aqw^e|)o@k6*r~lYNcM6vf5y!bvN(*3({4H$ga8>(zGu{`yupxZ{3X`A3C* zTdxl5r_J5=gM{tZ6~Flclyw~EaennQm6+FQQ0+I5o4?F=(yV{GIUG+Ftoe3+|NJKQ zG`FX-e|7&}0O5thb^kb5Qc%YS>Yk$d-9LV)s9Yx!wx8b4$K%Fc`GUcG+}z#Szizkd z<8eN&9OC&5g7$azi`pHY_V#Wcq4@sI9zzty3oOr>WS<_^|Gqv5U3;7l3yAoFsnkQ& zX{iuKU9D2LR?uR-#@&4RLg&}b)+*7cv6bsZS}!S8KjczzN#cD>Q0Eu^cC|Gxe~nCt7`%sWSjmKLL+8)4-QPNp`1OOV-q}K( zKRELB=l^(juq|;~eX~EjnK#?(Z;!{l!{onM{_9Ks-gjralyaj{rv|ar{AoPx{4DKuN|^2lHljA0>94R zf5bPu)hc`DAQr$@?`do1LH~Mznb%!=ecE3O^s2YLY~W>8zO0L%)}mU)SMx>+|8-w)ORI z_s8SUKOH|>ZhF3NclQsQd3SBA^7?D>PhYC#@kRoOgya2@T zf)_z38Z!4@ZX4?Q74a(&KTWhJLrI2Ui=lzN*Jx!NKlS{(N-h_eUfA9pi}SIRLE%z+ zEpfM?&n)7uM1_;l`H2zGZBH z@^uL*EzMe;X0)gR)C&}aWsq4H8mhNTv^~&>cX%$X&7_eG*2N= zGiQ?eI+B-)v51IB`aYCE;>UI+LBkormQbiv5~4&7lkMBBRJ|W#LBS}<;@Ddx$~1(2 zP#8{aBlac{(z&`t87RfmtNFCy`mU3x)(uMj^x0NWf#6*v*=C^_<}fw3px!^Jr<~^G zGb%!&H)=@ne498s3>Yr4pb?mR4C?=<*4L=~Ks#C?*r=BVFyWTS3~*~|{c+VKf#mPS zE>#GXI*M4e;gea4VMwC!wt%TSLA$WG!iI?g9#BGcx(Aej; zAHY|NEo^C@wx5WM0&7IMxKV=-bRX>G7hgckw1mPC8)vQ_*w)6+8qV+)l1EkCy`w3eSc;tSj3xb(o9g6Fr zZy@V_mm&cKqQD3ekznE=b1@^@9%Z(kjMgxMd)mf4KxopI>iT^m2SG=ux%tQ(m~BkJq}!?+Xy9XV0%DZo)OpF0 zxmlcV*fcp7>Qx=2Y(<7!6!$&!KdQe=c||ZcW|^@sV-f_6oDnHLQ^+woeHR_Eqf1aw zm}GY$_azGpLWw-wNBlC*QVOIjdj+VbMXp9nasP7Ca&j{+(+ zkLDj(G*0KNxy*^%T!y}Dk*IZ+1!pEJF(`3@y)-TtMLBqT;DCjRC~h^hMU%i_D6^!D z26jr9sljLX5j04!gc51$nn;w@Hpk06VqypGYjaoY`?+=-fjy#lyBcEodMyE?NxMT@ zvG68pej%0NAYnCv*{H=ALA^FuNG;wc1zyBmk?#hG=iU%OA7e|A>(4c)y_0cQ9Y&E#G9mqOH;4iSS@_2s8_&9PwirRx+C4IfQG^ib zy);Fj?b;l!#&Y@2vF(ABj26+@S%yLE=ti|&CsJI*zC>}FBfE?oK9nGdML__cm=Qgd zQBsBUxFQo2lnH*(HG~0fvhDh~szvbMw9UDV?YQmPD?UxW-lszyT}Xa7s$4;y?v#6x zfKW7H9v9)$Qk3J0XOC1c$sH0FxAepSuYMH^bLh$Bq7vzjoe41q0+u;<5wtv+?F$n% zj+u3EvS?Zla*5E5>D4m=UW`jig5zO9R$^vmfiu&Gqpf#-|9ox z;8D9uus&gGC=>w*D3VBuYbo>+g;|pV>1sz%0ZhD_d^5s>C-rln^a|l{N43#WGCoNf zm^|np^fCBr*>*9K*sA1;`lWq0D1`@Uak4?Mp+xvN!wWOYuq=+Wo;ny$eX~_y73Ax8GLA z+TV)b^q~scA1j1#eQ$sIaI^Y)K^5C(P7Zpjw>*9P)NkkQRyalT9A@f#_iU|?P_5HwpVo!?fpS7aC}1XtKZDW zCsDKN=XZzw)73MH=wrq7JyfjWO1GT1AFh}8wx`kEG}7Om?RWE4g&oEmU!k7u)mIPm z?P)FG?{0ru-R{pjf3~Of;m?jz7TDE(@3XuUr}^+GR^HQkyO5*q z&-Sgy*W|JSi|X2M?IU|Io40#`KOfJ#&F$u?f~*%%XC0ySZuO^~Q_8O2iUalQ`LNyW z1ev`%Z0`J7zu!O3H~w|4#?{l-X6?Al$QQ#+w)fm_oke-xKW*nPS8wKrjs5Nq``w-W z^^0=(LZw|@U&vwWtyW*8mrHzkC8(>7^nSN+XNUM|QTr&p*D8E|8lhs3w*D$;c749v zXg&|~GuP`4?dSUNm3!F!qt2x*Z>M2?jYPEpaw6V%Gd;hibJ)gEx6adHv-6Q%3CF5O z6cBd3I&SWFz8Q8W-#~&e+YdFx^TU2C4(@-y5F6WCTR+;f-P$egU-+J1R?K1^UZ{zy z0k9w-UOEc$&FZ)7TYK!|Wqx0-Wly+0i~QI&sZES_?#7nFap4kv*xWz(x~faqtc-nr z*~h+))ef;Sn{ar>t=F$QE3vJ_$LFtZH}9O*+jq9(_4mSe&&T?z&s5`Y-)_%N;9LRM z7wqxdwGHw{?FSdC*sw8efip*pVd8Txp`I-T>Y}ByVlcb2viaW00QA#xp z(*+8*h-pEs$x~B7@wKNa8>d8aOH^C)QD)wo47x9|=)8;&qJ_T6V0YgAosn2TbhOkg zDIiO3_Poz;$#EhSjp#%R;<M#>|hhJGqfS^H0?2PFrP|LW3TyCQ<^wWQltF zek1;~1okN*bz@E{Bt!3VKiS0sU_CUHebazbGyjt8rtW3cQL(o{5r1-d;~P&Jy?;HX+;UT{Bbe_H+r6H$wf;A`zo> z{&ba0H@%wBT5Mh&EAvNCdDOhIrpcw2Z^h9-rHdHM-$xx&9WWiic_jlfP_E1YPvAWz zY0*JK+NM0KWf7c?pyC`cALsZiSEvuLmX;4~U z8Y@$wPc&0fnQmWXoJs?2tp!GNS&1}EfFGjYwS74>Lc&gDnTy415ES%k+9TggTy&8C zHSabJXeme4wtzWM3>pm~QZ20&br`k_!D5cF0Y@zniG{zYZN&Nurv`bZ)>Rg?;A4#>y&M%?iiRFJ##sU#{od{Y9JV~^z7PY8#0fMb4 zKrjVPN(p3YnhME9fB?9ssx-3wxeO=xWW}W&pdW7#D;n~K_Bh{al`cdDZ??LO&GA)p z2+EOReO(Z$rub%F++;@!@&`|Na`O%)PG zTI}gi1u!TQY$8mDxSNr9POO+?!gxdUQ4u!KV1C&|3Kmjwm~iE#L3Cc9p>lWXV>+pG zP93ls2)@o>mmv8E(%dM*vO?2t5T7g}qQ&4r;(Jmxwg{9G5`+3*W2;Hx#u`ZEr^Ofp%?Q#wHcfL-)Q#vRHYVi*LiP^ZCA_P=3-WZ1zbw&p#fU@C#r;GY`l(Unn^0fp^gptXpL_M=94sI zJ`&E~LRSg4LZA2~!eq`9AvJ-S5{)9&PJ~saei*a;QoIC*FAq3Y%06QEQu4Ye0Q>A@ z6^RD~Byxr@udjw_vL~H-v!;ebqo(5Br>28X6Gcwykds1WvZa-@hzy7K7|?IDvZ-Hh z>T|=L>#nx5@KO!i=0uH;u&W1gSaTzT*szgJ(_Vx!(&kqcY*(Mulun6fGp4a4Vc%)6 zPq3ja#?mb8n&c5z2Fe$^xFn>*#gPRWx8S5&lm(DHjTr*cVDJnVcy2l5rkl+-k6Ir} zb_VlEko!i(W(aFu?Zr5b?3fqBk|X_E#CyBzV6I8Hg>)m6$`*9 z*D#IdwgP34t;U3=E^0ZVY?1iGRYPu10Ie<32^Jj|ifm+IkBJRd!8=eJ$VC~k0F+cC z9;ldP-mF^hzz^%?+E8na`l4Yg^ig&ITg)Vbx0;J$3Kw7 ztLI)wsayI&*lC-lp)U<$xaOmjYovCuAdR8V^kr!^pxS~>2=aj_QW`U@tZas6M6u

@v{RLZ%>h0M{d!27~{V`m7qq+OF;KS?6a(p*maJ@hN>g{>wf7BQ4T0j2k>XV;8&ZmdH z-}z~MxX>1Bh)(vXqLp1<;mXIyChuV_DCs8ylCIQ&ZyWk$v4rVn_`A!p{rKy@Jyg!s z3qtuBKK$uTUys|r?{^nY+uvVS?nlV>3s$$z@ z-!zl|EPm%oj2*+3*_8#Q>?rV~;H>lN&l|0&)1lHlFBkHQ)`edm{2%}H&p%wJj~`y+ z{{m?Ky+dRd*z{Wg!TTNJ)J#o*L8pG zd9PNsTpYGrLA=iM-Fxa#gEOkZauib{e-H77c9%1w7$Y>kMUkC@DLeB}6-UT-) zYOp_N^ErtuQ2O#DZ7DVwM4=6y(;z}bB`^VDA~~n7P0a+AIulAIifJH*7DK9lj2d)9 z&5wiEo}{*mUY*5>BZ=+S4t*#=%7uXpskuoiL6A2zHU;-O7m6hiU^uC%pXBJ(kc8dR zA-NC*dBzr|6)2?+(za?V8A=vW7DuzxH;#V|kcAebT6|Q9N@^m`z{X`<$#CPEF3Ler zTeRr#8p`BuX}Y3JRf-{wg_e(vZ6t_hDrG1QlcxKVB8y_(txSTKpLHp)DCPcI&5`Z3HK%LTLscGG>fve~+V8OfS{77>c zCwo7vNc5iNfi%8nrg0McZla1nku22&?p=`teM~*brgfewh0*>?3tC!LG^F-X^{OA9wKzuX)V%3>few+ ze9ld^xn|YX^FlozgD`ifDcXxTnzCGK9wEYmn0qXo+v%GMlKp2pumdyuijciIqUxz; z=Qg%Z+1vMRa>XsX(x{{bEgD@CGcR@$^hA!`E3-`1DslG^N+tGooHrz%zABt>l(Hm( zUpH#Voj1r#iHI4yQaqf3Q;@+|Vq@QjJqvV-^u6!IY1^kh-*dMd#TnFVqK!aROg3s>iYcWw~cFDPSWzQ`F3Y zIvF-55vje*9h-<5&diniEXhfbWG-NNhH>nW*jb3I0m^zou29Q*RhQTAXMnlrunv+9N>B}KKv zwwaDPx@I3f-Jy#+pGp5ZNUf$P@M#vzoWOob;XB7yrRNSf6}Yh#!mJ6xv(?PlQR=|v zgNwhS_CpYyoJE@2$;=PYO$m)VH6wCeZp7yWO-H^vr4UUq`XGo6His8ErQqTPv!qE1 zH|>l>dvR)1@FE<<3GyWxA$Z^a>L*7v9H|jdIHtqJ3^Ra0!~w*TU_uIGH0H+<$)E=5 z_!2NrpeNdHYO1wsf$wSCrsXpd95{+Wib8i!F%gVMq@(6fk+~dNTKQxls-4dP7m8$F zJ7QKJq{M(-^n+UEQA#U@AqVJA9-I}EATB|SwusgL9JE$M$EoM8-bvXfq+ApNo|c3J zSet}rU3fC_V9G_ZHj8L61Lag#4xNaH# zs&8&1j~%>4DM^aEk~vlhsofQ*5lDG3m%wZ>qWQ<6YiMt)cQYpP_(b|ffZSphCxf(J z()yv0)}5pVp6zQ<2`7|!lwKHf8`#O%Lt)Ddy4ZKfV-J$6K(1_&Wuv+2M`2kpU=cYA zsRM}Q1l5z2scPiOeRgfP6K%58-x~(Nx_8w!O6*3`A^cRx%-2>gGD>WVw-^fZv%-7@ zvJdJCKu66SjNB7;P%x^3Vx4gi*D`pul13<`@xvVQhU}w7-OAj< z8nyrrp}*Nd*JK7Iz=h2?qGRYWrJh>`U~PcB0Z&SVK=Z8qB z<8NYd9&5r$s|3QM=uAF9ZJ~C8rY*xqF~>;C&%FW~NGwRC)#5y|sli;5CSG)m!nPI)3om`wvg2t5v@0@>IY0&*#IR=MPsaGazvq>)*aQ zZq}>)`J{(_{z58t_40DtuO4Szb|D1~_Kf-E!yoL|5B7Gq;vjtimcC$szn|}&w=_@P zm7PGZM(D2&hUyP?`1}onp^{)q)88^0!(`tq9}kB-E{ie$%6Ql+w|7pT8<2Pvhwy(n zAQfqQdcn8aAct=C^}!b3@nsFxA?~is9}^~4P|P1r>ys_o=Wi^etqbt=xxGH^7R|X?*I5-|2IL~ zuNE%r;S=&XIqY|yS)=jFT}eSv+#)-`Qy9!a1w1UDs}ZiMLA5v@sCCGNqQOnb!iiBhG+2a)FKB}(#T?3`nd>$* zqFtS{Qna+pH9;O)b`!sQ8ixkkT&LFJV@NVd-lA)|0c*W6D7T0yqa;K!VX>vMNeJVT zC98BBr9}LAHuC3aEgny)xR8Bv??1L`~*#a3=Y)p{RriAB@>zRHSpY$rxjLiK4FQ zHD%Z6H(8n}6QwyiApjdZVdo-ir~&3w9a!E;-i`@r8OfR>4$bEgT60y^?TA<~l{_|S zQlH;3CrHyt&@Uzs1+7m-Im%wtRt=#+ecm(`VsbKjno(!NhU;Xr4T9a(VtW>LXVU8WMGQNCBW zV%%|(Egp$3N@!%^p~(~#(XvL|(pCo%Dvy_`1bTI|5yYVcQGq0h5mcd$mx3TUk(o76_Ij}Q zf}|02MAY1k7K78POp%41}U!q z8cltniV@qN2qM>%GX40rPv|7J*v%YoQkRrEcGCmmgPz2}MZ{I34t2yHiCG#c_o8#v z!M=&ewrJ6V5XaPZo6S4HSWKKls9kENy@guTazK)HAOcnd!EBMkOr z1v=zFSe?woRb*al2ho)x`6!hygB3SlzR+(a|+O&e&r9@KA+z|d?~mb7VtoWD$f z2EF-+_&DKf1EotwUkmiSX64P#1Gu$XQvjo7)&wCQ$u86OMxIk~tw^&EqI>-i)C?ly zZg{}W1Wrl8c`Gi~c^6(uO}o9j@Nyq0J`=*WsrS33vsK-maKW6DFc6YZyi2(`EdAY! z@G9Id+&9r_J+4NnHh^mu6t_}qR~D`dRYD|i0dN9A$C^#(BQiAP*)m1#0YHS}E%O+I&-G zzZ;7(UE6?^j*~%yIU^)`qFAACr1$)Uv31?34!Da{)H)5Bo%+1kM><*{3Sjym)J?;@ zU%eF9Ngy{&291oif<4MNc^q zev>_1vTEbV>KMvQG!hDKQpKoCZTsrMSMC5$avL@hzm`(XMDdTEC$`AQc`Hf;Qgjd{ zD@wetQJufoP+wHRB8Xg6lkG^&@5`pJ}Bq?6OYxZ{5QytQbF}Q=~HzyXk%Y$e7;U2-c<4NCU5`-75 zy;6%!?zH;bNhHi*kDPadq6V=zM6PK{d5~hvQN&DSbkda7K?EO|o$Sf|QISE;Uu#)3 zkkmFS+KYm1#*;wL$oDINHu@RKyUXE|af(XUf#+u-DRwyz(mtTBbG05~El#RN1r71o zcbL!?M0&zBZ59(Rb^7+=6Ghq!wNw$WhZ%yV2iSM0IjYq7p;GcIRY38rLkiqtppMmr z)hUvx)@YuvvwmA)^f9L)T@LcT53IFYw2zyl{)RILFuFf9NHm8ibR6^i`(zw?|(ja`2WXHw@Y%;`f^vRk#GF!HNQI@x10Op)vAB`q5bvy!~StT zJ__e}wThRY{MGzX_)>?Q=F1NRxV}If?iPIHSC_oAKJI`0yKlY`lk(%odEVJ=b*cOW z8eN9@1%g-r%_~HIE||~y1!w$yILx>E`_0ZCe*0;8zXcd><0I16&CO}MKG=s}ZQsv_ z&H8Hf-Ttt*2lZ$9{mJHWv%X$^wOeWS&+EqdaJ$JK?O}g-^nnzEt_?Flmyh$m^&Fd7 z!}>gY!iS#6=YD_G!aL0G>qB0z`sc;;;KaqpI*U(3T@k>kzqp>p%s!n3Xtlw%dAZ%( zI##q^;%5Hr3ci*c>|U|Nc2tO>S@=|22Ali!`F$_Z&Fifb%bNLdUfN|PA!zw(6|SG> z_{BFrU;lb@$FJIh^cocWUH$H7(CfaE0xt{n--a2#e6zic)=C@>_99oGL2_^QI}PdK z=~8z6<7d#^CoH-6hL4B!ynSM8{tR)wJnT1i#r^#!{i8U^=lZYQN?`we>m=p=G`5QD z5svfWgH2yWc8djDbAG-0P5pf;-Ibk#f^pA>2fN1X54%jl)LjqHdsaB>-TU=>yZ&bP zbSZm%8{4DS_+rd-quY%`qo3|>Chq!q{rb<%o*qs&&p%1m)8!X7yW5j}CK#}lMzM80wsX#&bJheFB?Wm2M&Fmv`-)D0J1 zK!V_~NH3}B|MTcj(k@gowNR%~4ffN!7ao%GE0Yii;7$dLs6q!xw^8y-lt~wLYfqJX zN2H*mZh?*klYo_sT`67TWL95NZPgT)+sLc!37$B3<`^7lZ#;!CS2;I?*$p;U9Wj4O zK4!vcSNAfhJt%jXnpmq&R^NA|{gEvUDo~M77k|mrz-p^HO+Aqr_W~7A4NmQ=%!r^0 z6_UdQ+lP&CkY2?0E%y6LDl#{`i#1ac;wvCoZFVZVOp5BLYfwtOR0s>bIrmLO(0N<2 zlDf!QGm2UchTcLw6_{b6N~8>7Lcv+XkqlE=ep20)ni1*DNfQOqU|Gw7KwYu}UDME9 zGi~;RL>Z@;`YCo)S`r8h<*zN0?bUIz z;TOjwC>TVDW`qKTdp3>@!H=IWN@7sRHF@fpjuAzIR1#3)fflLLvN9o#kT+<{EA0@H zj|rhgnMq|JM+&(_cwkl=sn15D;}Hg{A>6K~aS>Axok{}IQ3_qKjEI!`Lgh87HoZsh zw31J}E3Y*S zl#H@kPe>?rP$dxwg3O_5YCP3j&aE``o9b0C$#o~kFi}U0=oHX%u@|2j;F7zBc5ftf z5SA~DSaP4lb4Vt0lw2v{v4^o2l`OfYqPRlX{^VTRU>#Jf1G}7^S%>t-#KGJgpj~Z3 z>t15lJ8#r+CfW7}SvUk(yS-2u5OIvj>vV8u@yikvr%E{!WxBC~7vSGAKvPT-k%9 zwNW-PjxDcbJwJkq(6AI#{3V2>q**ffICiL*D~ArW*%+kBE#BLQT)d;C>gewFpGF+F zt0Y|`0txI)>)DF-^7xTGS1cA((3Ha@1z<8+vg2g-E&hv=@dKZKF#AKkT+p$Ovz08O z#ohpE`-x)^9hVNN-n34UhS~hWk(R2;EE#*iLSGalAca;#%<5%+8#w!OU|E7 zZf?#Ow*uzDPXuhV2{CU6u?+gjXclqQ>a9$zh=_Y< z@>?jLPSUmp3l*nH7)msPc5}GLC?FC-8`QLgub2fkYiicjowNW0Y?L|PYH@=fhzpBE zb$bb`HgIVlc{O=K2x?;}`ecB$SRfR*6-j%J=x3wAM$N(GPKrfO^oC-SjXec>f<3oD zv%0ZMCfKWRa_%fE~Rgp9+`k0a&foLjsB%r4=fFeq>v_2&<$mpF8yuO;2ANqw6@g)6)a zr52QSO<;MmTGt6=YC&|$4f}$x5<8`^)*zLw4#f$R+M}p_QM-`hlw#p`v!it-q0KV( zK3I4$5Yi+F>rX4loR$vDEFyes7)m;a3{DL>eSPsP4~&upSqOD%Oc29y!??bf8DTLX z{*9BlY;+`L5ir8!ih5^KRsvq$T;;J*`>URzRJ{rE-8p9h`9P{yVY_Zn(uZ8u-s@=C zX>T@@mau5@dYa%QRVeIq(0pYs=L`eJs1_@TOqv)K?R*_ElN!YyPZOCHoZ}&<=C_O? zk)XY@+~i6NehFJb;)MuR8^v+~9%#1XQfC~z-5Q}TOiok)Ib62+?y|mfYlhJMMpbd(j{zl z%%L5ciboCOGPYdV!Kh9m3X`)rgGdTxyI93JD#)52L5W3eZd#G%$Cn9lzfss`aGbSM zu;7uh8V0GKIz*?Kg0p6{qZ!NBVn@bwu5t$)@`l1|Sap~wqnJZBC%lcwEWA-{jkFX& z&K(*9>A_OUN{VxIUaKgGrbz8b;H`8eS zl8^~~PFz&IYeT(!yYX6*7G^N1*-CtP2}^Gxu~E4_~SC^Mu)?;LEkrB=eoV-lq$P!(C|Bt+$B zi=v1qNJxziMY6L{0VvK=GMeN#WhWvBlkB~J?cZ&CG(^UA(~2zr;?I9RAou@6NHqcU zj*t7pCn52UoBPdneK=$P{!I+;e_V~j^=DAr%h!D6ef(LTAGur6a!~D43Y&F)mHss}c z^zS?z_V4E7(Jr{&UagKdn~E>Ksn7j5-`wpsH|y=^)9@cwFG)%l4C6^(UZB&<*FK+H z|K>*~*`E`ztRG4Kh{$CH1&zP;bscl+I&cCfqa-aoxN3DkWz zueXmCR(;&xY;52@?hik#1l9epd33yRSsrphpkKb&^02q_yV+k}|8lm}P=)h(Z_-ya0Hw(Fen zy1#$9B!%kEw$#r+Ut4?jvF(oe{$acSG*{DL>%4QkwXM(lRlJT*-}fc`jMS~$DwWm4 zkN@XZ+`m8b>)8GFht*rHA6vO*DC~hZH)8w#{RQB+0&$PCqseX0-aBf4ce;OTv#gDL zexxfIg&%hNkGl#;cHH_x==-0){>tI%|8NrA+jhK% z!^3uc<9OmTwz?gVGu?9PF0D*$2cW^L<6W7jKmW!4I5QIar*Y|uEw@MJht!u5^W=7@ zkC^007EBW`$KrLAmYNi@0k_bkG6OM_BuVo%f0yDRT|Z3X`UD(Cj^^h#0+G72`aK~q z$&=`~u+L1*OASV%t4X_wloeG4olss>I8}Q|^rPZvu_uBuCs(^i<|Yd$C|(nug))O# zE!bGp6+mNXiYA(p$-FYaJmij=z4~6&PD+DI;sv55$Fl|U1_iNh9m`tGwbj!omer6y z3@p}X(E+8%leutB$5YLS>z;?|LB{JT@Pi7tscT?^lFgj?10L8*dL+TfPbS_=G-?z z@4m0Z(gszTASMxdvS7w+=mD2KC+t*t-VY z)Dor?4FVa>lBFz&WF{8=!TK^2PYe{&AO|u(i@R-UCk(q4-{qJIE$PK!s7dMcB(8%j zmL7_41-vR_qi}Q1RH}gk#>=){LW*rOo1rVnNh9$yA`KDZ#MTOZpeFhP_?)PedmsW1 z!AKiU&H7;K)2G8)a6{yFACy0Chu9X;2rD>@v8c6`{FaHaF5;zVYS4a^j7i2B9;(RD z(+W=gGzQcyCTV!-XGi8lw9|?*-ASwvSU${xypo(%HwkzSMIoEJ=@q3#a|N(y>w;ti zZBW}gl43_^lmiDTh&hHz|E{z;ygxL0NDM!{^U#F@KF#$=Fl1_!GOTa9z%KNuwa zOE(vAmZ(;;(w&rgSJ#?m1s1idA&_G@jLj+O`^Fv^+6JVAO{jK3R}1yBsk^UGwRljt zf!tZ6 zJL(T;N+Dg9E{Kjvpi_t{0};qh9G6g)oV<`qepbx733worK%%g&%rP4yDK1Kh z;1#y5K|&0u0`B-(${LTZ%tuF#5IZF_SQ9_KY{VkdUXLx^Z+(AzW*kX-o6H?Vk`%XK z1?!(S*psFn#ZE1RX;gOoRERxt%-d!c?u?8_KZ%|V5til!0$#~HDl@^@!ld#T ztRs)wsl2Z4lLSnyDl$lxn5P)|wdJlxl0-JoPz|1NgqHM*FuNF{8eE0{!ZtMtwyV8x zYIJAny7Rs#DpQFXl&TM96c(5PZz9%(!>?CthZPpVkC=~E?W?INm3tJUGAp%c^y(a@ zQmUv_5ePDvqerKlYBdu?P=dL$?ytPI5&BncQBTzKWQT(tGjQ~Yc@+dRf*ACOW-HjV z3(60}A(kZ4lMuoaU~s)U4`1FPTw5$n7~nbBOs1sQtvlKVJR}UM~R9KRhG=l9Giya8XOi|5D>U2O6nU*;WydK ztT}^tj?beWn%u|iJb5%_;`Acyo_NUHK%!o&^o6o<_Sb<>0%rNm&Xf11gObny@W2ie|sW8VW?9K<#sH# zDrnMrSHhsz4o+V{TgxH#u<3$Cxkx!W$pa?dJ99IWdb7!Eb(uEAPpR5MA4H3u&Edn| zE2Rjasw2VsgncVgu96I;Q$L1!R0direHiUvrre0Vp8DS@u_nPGBpFGzkSySbqb~IFsIikka9yN! z7p9()8tRl|Rut(HpzfMnY9u>$8N3ER-nllp9V$H;3BhX-sU4Ia>PY0>c2Vw#CcS2lEiJu@=?>*H72fETW=3LTL+GcGvS~}+$83PKQsH>=hVKLK^8oX%d0uwD5xh~eO zp*^p;R>jxgQ){i3MxClol~hgOFw3=C0WY3(2GEd<7D96r8ANu3nF4$9mK&<3Fmqwn zcXiWqql1c0fT=f^P;h@b1(ec3%-x{AS+eSO2S^Wzgi~c4YKa-unNLOc-fUFH%%hrX zXaNt3FQMVbTlgsA7Y7oTN=A`|lY=8iA~o#98s1I~2$cJmw*+B`wuo&X2vl`6^wf%& zr$}%ErEOx%8|rgw&)SHs`Z5*cEt%S37%;STHenRzvS=zJ9gZURz9VMT;(Y;)K~Yb@ z5D?XDmdxHAz#KM)^nzpWbgh&zQsX|fL)#f1k#fx5ylXhGeb^P%6CCpE5YZe3IxVDp(0DfPzIcxy@^le#xH3WsD{SgF=GvPSO{j>W7U6=VC`qQ5 zP9w8QnK;NrJYOi$9ppN8(4C@omXToqVm?4!n3$zpO&LcOSJl$fzN0)LtocY75Sj6^ zl(`WzE(KId)Ty5`A`E&cp@GZ$CM;@nzxeY{qR#z)H9YMSws)Lw9`^^w>MfwjPv@VV zv3Cvfui^#~K)U)O44=VwFCSJHJzwKX|J~E2F94oTpyMy=lRn*bv%A@z90*vSzU3Ib zokdf7uX_uAtl>P~?H?W-hc-~b&%ikbvp<6^q>J@)#(Ab^Y_@(uI;ey zy*<>YOXgiOx&E8S{lggsd$YfPSnmWU-r9@RIn!5uX=8n|;rw>He``C^?8nN6bal7> z;C#fJgMiStj+&hh2w%Tm{ciI|ANYTFcN3-VmA&EV;J?4w%Cs!3%QqMH;xE^y$D`~_ zo%&xqZAQK3VV=)-znI86xAx_YKQzspJ^229ejb@C8=4T{bA9iX;!BEj))ePX6m zX5E5r82QkHj)sQ`LLNgh(E|Gf8%w}&dkd%p#D2u_5J7~EITjU!{UXeI>a`dEKy8bs zZ!piEx$x$G7!iT*q0D7r8PZ<5lo%?`ipr;JTHE~-$tpFRUNu6onI)nYQ7*|2wWHW6 zEJW?7aY|Teo-7(i389c2FH0#li@~TalqKCeVE?>@Cy=3!k=0r3GP$GFj8Lpi70rJk zcq^)R%VIU`bDfiHB*f4Py=(V@$X;~Mfgr5*-czGG=d0J%WT-7hr5|kR7s6CBh45fD z@&QprzDlUJ8Eu=ZB-nmZoV*c`mMMq|he~zQy(ZX>Q{<5OkENaVI>KVkp*%IUhce`^U00nApN1cX*{}fiW!5h|tQgkIq38jW`#EvNYh0WS_>QEZ3S7IEg zU~B@x0K{HI=H!+IQTh`g)<#4{LRi)@>0xP=+S%0;h%SwCT?h#%$#}|;3UeDkYFD_9 zR^xuDF6Du#W{dn)xR!{5DZiEnxq7gp%P7PuilL=8M_JQ0VWb%mh`z@PhV+${IQsmP zAUV`DzSa?t%mEw-*do*p(hx@1v?9MdmjO_yzJ4cFtkFLSwy9|zC)*?q_|_j;nCG6R zMM@TdfYNsBNLD_K+zugn^`V1vJu77gJ$;iz7JxNZZ15SlSXDjgo6e-J@&Ufs6;Jx!*yLN@$9?AmI)L(Z3IU`CJoB{ zBR7HPx)E}q-YeSe7M{f>8 zIN2#vs4_Z5HD*F}P9msdA;gEY{z}skR@X}60%$b%bE1Yybtht_&jRyKmG}06g)SgE zaT{QJXv*gYGqMxci>JUnWJQGLF!54Az-~D8MkfkRMIjilVk&k>Y@Jlw%!n#R$&5U@ zLaMOzECL@Da$yVc)QkBZCS`JafT}%a?+CsSHH`%|ktMv{oMk@4acWSj)ffb!CukXs z3cJYU^kT;Yq~f5HsUtI-ZJ#iHLE7F8uEQ-$YNNi+g&S;VVf&()qM@mYEpD@pQsONW zu{k!rl#&|cv7aX?_D#BInXM#2Zt_VcI|*7p-$J;eP?1)i_lC6tJjvpcFQ|?NEa6Ml zoW{M_;%c;2d`JYWL;`VhpxR=xe_*cQNDa#(0qdJoS?7`P6me-w$b(>dG7#-C9^^d@ zL@*~xan!HUfrSLb>YzhUCFCFi`WLS^T=&Werv|CrRZic`(g`904%jpxf+g@G9RC?9 z%P~w6(?v*!8VxA-tQOCN9@Lmh#ypaEoSU$y2815O(I=r;L<$F^uilB+@kIkBeFIEn znT6<)@>~r@$l0pI3`E=#4IUa<>B2&Iw=;iG{P&Mx3Dmoth}HHDCRC(L*V_W6CO|~f~Kkw9ue$_ z`qqLoGf(ZT)6|j5P>hl%2kh$XnjpDGk6MM$8fAyk&w^ojb4;N~&<)!aD5jsT(oxM>J+zmB1+Z-ah zUiQ>9Ot045xa_oqw(2h2XxoNI~{If>AM}sB1mBFhDf^l|OL5`A`K?-^)IT6W?cse5T>8mI~ zH1JXYkwh6R)hxw2qW+P~+Gwh|wG*2@B`<NiAIgJ zg~tV;MN-BJs&=+Sx`xWXzs?pxq-i4hYyfINmA~@~C3;57q(_HbnbR^rlA%|iONjv| zy}*KH7@VlB^{#`uxF`TGuJa3LNK$(`>;X}>6W(|j)t-vPMJ|!};)8r`?p%iic40dW(l#L<%OY8OYt-^FZ=dP96uX#nPpdse?=3)ZOOXf=@`|X@30X8I zF+!7FvON_^Ml{%o7aL-0KXxQ<10!SmO#P{Jf(^aO-WPxW^Rc@Boxo)cRj2(^h2Q?{ zxZ2KZ2Pz)wN5T$PIeXEQE{MXb)yIwShpTUY@x4%Z|N2k=)lA^(ZDsCUV4je0;oK{q5amJ6`}1>m}{|ANCKY?LxnL zbF)9~gmly>gz17&*zWw<6V>5c2u;fsU09Fv`4viG3v_ltkG@1aJ9q4QWtUj* z-rL%FJ3oG$=ZY@<&4c#g>f80fHtON3L6Pb^e{iPQl|Oj9{?3zW|9EQ;vvb1Rx1V0n z6knpWUy}J&u)ME^+xbQ)VjGaV_2FUrsjkOmM<3?<^=2otaDkKl{8Duwt{ibJn&0(d zTT#TC)}2j3o#WHv{(f(J`}}l&_ZRjSfA<#`3+fqByl`5N!h3ITKW=Vi*y;dpZMyaR zr^AQ&liu0)be$CY#;^6^AtGDapENHGx$MUQD^{wx|-^~w?v$Oh& zn(FGj;;Kzq?7(sUVDEQVm*4!y2O+&be2y0OhrD`*U^|ljl!sU2`AC>4Wv3bkq|Tl| zlLT|pTQr!H8WIXIibeaDFv{P1ewlux&FMH{W@}+7~Beue%Zb@Jeuw^|Von=-WLRpPo_(%jC z7T+VJye_CaO=B?&K-wO|D83=?ZOejo{};ba8IdecWfFAY9UN)m$a@`BBz*W3rS0UYHXBeI7-0+ zl!#Ml!UQ@gjWm2+!$G=(l!OZ+@&K24elO`VFkfLb*F|#c+Bv}0%VM%z+8k_^QH_=)I{uT5wtKjJO!P%yo89Y({{k&LF%9g1TxrC$kZK> zY_At2*cNIiBN?gLHGBU;ewyGm>=2m?QJTDEt(%yy^3oF5u@@kndJXIs1BwxjlkJm0 zYugpHd(wXs*>s^&k8L~iJ|-lg>S9AJzl<5S7TI5IDya;i5*v6cqYN~WtII*ACz4VG z47>O}nn1!wJtirKq2jOfO1ZOS@c$1#VeCs}?ZCn;-SB;$ zh>d&!slZCUqaA+Qz$9yHfdN*$rPW&KXi`Mlk=BCklA^c|+!6I~HU#AL!Ia9PyJ$U5 zsQVoxnMS*Glx_<)&?Z4u2r%f3QrK27DcwS6%4jp0Um-sn(0Z5`Dn(rIh|CQwJ)u$* zYnXEY{&9$-nsh09E&Y~OM!cRxnUH~Y1Wt%^6ERrJ8t8tBSTHEW)FD)w^rJtQdMatV zbW)cZkd)Hq1TvZGc8_Jd$D6g7)%1-rG!gr2;`du2qD2f3ww-{Q zJ@wF;E$m2R%Xz;k?JsfyNPMUs&|&AM`m3owbX51%%W%4@!dQjuMUwyA(^+ngNy)@g zWaFfiG~|JTNTJ~r7}c{%BogM8p%CUEv0HL|gyBba(MdGJWO$sN2nj7ql3-qY6Unj0 zhIGQGLsN@%ujVT^YiDtyL`6=_0ON!N4?$$$NPW|}|4#NT3;Ry=t)X+sCK7n7eV!Ox zrNj}@yN+sDLQR?>v`MOE@Xa=WxlEF@f_p>}n-f`%S88EYib5wO$I7BN z10r1YEV;%6If^>iDNHasj_D-}Y|4bhN`s^@(X;Le$Zx@Y+X%18bxL!}AX`jMHaSWd z6nKK9RWnkSQ4|2mV8dSMrZ6_$5cSBD6eJD1d7)x`qdcP>I;1e0ix8k>dwW?RxJQYS z;Dd}6KU^|; z+J%8q_}yl^wLhe>5)_{wc)noh{rmk}d(vm_-Dj54-Tv@+_eP*jaj8y^cVd?g!@p{*0>l3|4)9jFwxuMD=X}53o*}8u%zHR4VDGTdLRUoWGk^18 zeq3+1D|_49`FizBv7*kOU)!&?S?`V)T))h8Tp3rLJNIcuANRtOZa!>;Z$1M`|Jo)V zZ*#F)bh9VwTdj3}mW$=s7PanXfJuroYh5#xAjWx4F^m&FjO>-38fkor2?; z|GAE5-G1}BK9)bto8PTByT>=bn0K;2r`yf`!{&JMZT5s@HXE_f7Qfqwsd^z3_t}v> zxVOEaU!E7nd8$6gGjEPh3w(cbI@VEFw?GAqpZB`oaedgI>?U?JYqfuVou?gfzd)C3 zm%{~du`KpR{TMe}TgN`z+j;Fv?)`p$y8xw+cl){SnBy5NoUvzM5|{EBN`GN?mQ{Xx z-j#LZt?ul}53z zL13OG#br`m9hz3bt}+u8=t~;}Ool93P>hjL;%pcrHbKfsMgGY?522wi^++OG_(5s4 zA_aNIpotWYXpEGMCZ9bNmA|kH-kaCKaW-#oY}{l2iMilZJeP=q#3U(-DpPJGU~3p9 znHq?erYwD4a8k3f0EAIh07)*Slecm_7*aBa5R%Rob;hQhs|KCstszcz?3HsPq**Us zEeZmny4J8S*0tsECl-M~jz>GBydwWA6brVZtH4QMI*E`(dilX(_tYfym)e-Z0ZPcJ zwVOnig>j#SnC+x4Z*eo|RdNmJFr1V7KFu`arJ8a9LgV9p9bsS!T zmpo|`LvEPlYS@-Xvjvo!l12$p5Qyy>jLM|g5Tdy(T}I$hC>CcmI$?DJT`iJuon;WE zA`{;*wNnpr`6pxk9DTVG3=wTPxV!BsD*AJD+uuV^y#dX*!Kckj58bE2Ytmi*+1CvW8?C zg98*=dm|AeDE8ao9udN1)1JsQOYmSAD9aYbqXs1$k!}Ynba(Ox8ht7stfBN+X-}h< z`Kb_AYwctn#bE(lGg3*w(d|V)KTw^>j^iZd(u;(k1L2c9>uoL#Ff_WX0@KYLTQ_AH8fyU&+$uQ0-08dEgq;>+Lld(_qG@b z5xeFdq=v3tABY?lYi(KFOhma6)eeKWsE|8qo)YuoL_v}=<{fdV+eRDPa;yedSgA}v zDjhh1kc;Ax=^7&8>dScnna*1m+9nR}LA*^+p9*Rl!-7GU>~Bw}x*c71g3?AW;=`nB zW^Zc_@$Ol|8!unKE+7j=NU%^~VrXJfQFP)uLoY$imqspMTTo%fx*@)-V=vu%BEYiM z&asdhnMq{SHUTa=30lVnW82jdj_BaP@J|-(k}`vZ(}e<|Bq@NAd=oS7)DI#FSNk)q9VdJ#zFLP$TFM7e~6B>?Ja81&1#N=I*R&4P_;o`WayeOr9M|DZE!3+ zIU6?68{60q%^F(HR{H^VhlyREygVUEh{-3bosEjPy{+r6A)R*1WoCuKs!84e(9eka zc4BE}wK|X~w`CndL%-vT#nD4leKo_`=z?njTWBoxbF!#inHo=hytX6Sb~`kbSumjf zV0zvhM|&F}*-aA3f+DNgMadh%YMh2l#eQ|5bxqQ;#xClOBlM@37AEWh^Kv8hAxNpc z1ygpejggS-N@utPtiZz^Myjnx{Q%3t-px(S!$AQLt@zQb7Ir6y>!zosEn9L?JB|iL z$wta{n&q+yrp_=k@(IxBYMM?6$+Li3c?Nv>q=*j%A9_2lnf_LI0Bk>>=*W=RGHS+( zZZ(qbQw-hoivF!Sr!g-r!VJXYCdnD0UU#2Z9;0{WVG4#EB--d)`?Al{%>Yv`{E0B+ zbfClxOp9k{e!#Avpgb_)_w5)LYdZK{=5aRNW8peV6ucj))k3V-1+#%Ju}20$xw@jH zcKcwHaO#v#52N%D!7)ftLTu!!iHd_dFCC)S3|QR~5{t)Rtx)8i#85$o#ezh{X(!Qh z6w1`uF>VJ3GENV}h#g!Ow+nMe(0y~zBa(8~-euasMJ%;oChTYmO|0)`LS_rZRMxvM%GK zW>iSMC-ZoS=x4AauIX#4>AupnB&BZWgLzh%&KO&cbH9neFX*94Bml`zvYPm*RcH!g z7o}fBbv==~jO*tR%Zcs(M7#!qKbD4y&<(H!UPu)$ER6Ds?G%buyU=N3u27ts)cBHz zlm-QCcC|({Nglnt1Xl2fSG|cUjS5F~G=Zz6Y!NkMsqsFMkcypF0{4=iq~Zc38^&>L zt(*@q=wiI7R#~kXH1Dp+LX*|2&b+}BQ9?t`3$psirOVCjeRPGd$26Kb zg4~EZ6!qS~qEmLH5!US-xvZ8dFhXWB!E;ejup>=Wk;--rG}~9N+T|wd@)9?A*XYF7 z)S?_Wq`tBPfCK|Ait1pmoAtB92dux~!&8e~@GTv?mLS15PM@3bO0O=}UM%T|Y{&iw zBilT1JE(2j3F!!I{p2RJb+ep2M@)M}@b+`85*Tp_bLEj+d1;JU{kG% zNrjTov6y$nk^^HuU}jw46N}=&kyV2T$yqq#G}L{E)VEFC)kzT1E;V5$JF1XLs<(~X zXkOL#Ff)!PtF#y~oo%rNCd_RYl#I=(67g#meD$e>&?e11GXjt&RJ}P+P2Ik&K=|U% ze?H{+zagINyY=qVGi=lmv(7L2gnj&dn`i z$HV@||6?a2R|i1;{%-RbK6bs`@8%~QqWQTFk*h$vz5?x@-b0YT)yKQNz1#8h?%nL~ zy8sNg`{Nn@>Y!fxcfkPdUC!V5>a^XhKfO8bPscYu-`i6>J=TxVEKv+&8~`*zbjczB;2+_w~`vPvhX;3nt?8QjS6iUqYaT zFrID7Z!c)JXDx}_)mF%UfA4?&r~g{UQ9rZW?F28@b)7m~DCLK}&G_S|)z)c>fB(@g z{prm+^%q>+$ez}oNr>$;_8friTlJD}f3gWWukqj8n{STy`p2IF!W{&n>?sI0pC%!P zZLEq5h~bn(4IIdmSe)4Xokr}jR&ga#2WFp1g;QRQl3ER`Z>`{r4oHPVQJrwW@T#^p zjBWZPCJ_q7B+yRfv*_Sb5->4e57pLVR#KM&rKxLmApGXNIMb-NY*4gE*cRmtDJf$y z$J7E5YIM<|`gB$#2$|tY7=;Of1)IKr$t%fEw#dIF1Q&TRNni-RLp|mea!3`GqV`c# z(&QNTTG*8B6IE40@vtbO%bxPm=Il*S#P%jOBtlTzcBDu&WS6w3eDx?vJcPsyVz{OF zzb_Hc?NOmKDSp|P$1p;=cn}!A;j%vGGYg5=B&~^t-m1nuF3kz}+%ieX8%dx`-y?2p zR1K#`DZSKBZDq@YeT%mn5-YvFE$#-a=+@DqG`Nlc{Foe&c03~W)%AxRkIwBEXl-}V z{Cvs9v@1fy5h#)v1bbyJk0Ry)!UX1y$PH7GZX{UKL185^eB0b26GIV7ipY|NBpp4l zfG(1Q1!>_l$u3(ML#ubPhiwiXU%Nv>Mn$Q|W<*@6^WOdoYd7UFSd<96O`RS@4%15+ z8TH~+0V)xZSd#^i3Gs;HN5(i&d9sEB49DM&4RaH2c1TlSjF z*JGpAH*3C5@X%qdQzUED37(=zy2ze7#1TuTLsIyT!F!%^)9GH%j3M=O@QdG%kz#sz zY=ju>{2|t8?-ruAeEX~T%_;poiG!KUqpPtu8f-Oppmz5c>u9X0~Z+3`M z{7DB5>6;JA0i*Lc3|&h`-&Kx|#!2%5_F^q$RaHig4SQARb^1sy*C=Ec6i!rdf3IpTgYhYxd+0&%z1U>~bd#H{30 z4$@U8t_C&8A(UD`04V!P{du7LTAW10L*gKlQk2B6AQ~C)wuXd~TaFiex!BzQjiJr! z`71;$&q&sf3-D7A?HScm%oRY`nkHoS<= z9eVHkfS-(=u0_6!s)VTK+lLS+PapM?Bk5yED~1}8Bszn%$hkB3q|jQJZUFj`!J9CA}0 zhKSszIXWdZO4z8{0zSDJcE?xJ{F;BC=?s~K3v38!d{!pa&S7=;T3rO~52|;g-=f$8 zN%YiDT#yfE5R(;2E|{A+Qq^^sBtlCG0O5e!;R<&1G7`!_8H)g}zhG=V6pw@X451Nc z>Rh40314AEhAFCt9VXsfslK7h^ZlcqPr^g0$1jaU5i0@Ah>Gr#1rBHk)y~rD?r6LO zfTq&x|n+Cd@1VQ#E~JKzJH|dlGwul!Xn7Ygd$h=_d>--aheM@Ody>> zK{fS}$6^N-opK710#f5no?QahQ2Igml4{7e_atD35<-z&n@Q|^uVGtq!$;s5Qo%n4 z7L}SriNKK^LtzD5KnPD#J1DU%XWR3b(C7y@>11qsvFcG5v~tr3B1}>;gSav%LZ(CB zB1CnQ!=T8uYtwP%+HTSh$VEP>EuAc$o3D}?X+lT{JWKGNfKaH^ zhlZHgSA#m!k@??3sIF;3T=J;`vJ>t<67Xd(uct{hdK7975wROejzPtW_9X;e!W}(2 zp)jK2bn0VBE7p3Ex|4HP>^2SLRC~k@jfP^s`UIlFqm#Uo1U>Ot$SWXy_}H7T+h}p< zCDo@-ViZEwlaN{V{ydImEJ|%u>+P6RkkL;q>fN`fCI!!Tma~uAhv?N6g|B3_q(DCc z5X*uO0X6X^+MzZmQoIS^beRLE zF_QF_8N|LrEU{AAxv^$-{R&A)kXnHusYarNIf}D}p*ESbt39^4?D}NRt3yv_kpbG2 zUg&ew_RM9HXe}n$l^v##Y4A2$C|#A&hYg(SI5Zi`B^#iIMhc9Ia{uJ0$g&LBf77Xh zx^Hr0ev&HC0{fxHhJd|@%Gj&U(e5u-VF<6WbYgUpUxXy7s>p#uW%D=3Mp3ZZwGyVrdY*SA(rug1VaE;n zBU$9bL{~bt%+@+FmHMP+jG)60xyqyw2Y?b`Cjy2bLXl!(#Vldde(Jw)%@)-EO_j*2 z-9K7abk4YXgo>c#gaCoYua zD3U#n3(U8p41d%lLSSE<{txc07@C-*I#r7ssY?Hedm}jNos!+u{u6VRYiXZY;1HxZ z7*w*QB#=XuC=H{GA*7RRvx%$=X3DmdMWmD;4>}tAi@*Q*aNH+sn8-sPH@nk(D`wQg zd?Ucy8G&{Q&(z-})GO}Jo5Q?zNT>az@BihW?>F16zVcyn+&u0N&PsXynj_ds{+EA# zg8S(PuHmtIdlL7o{dg79^B06{J3L`3m2Y3*Y~R}T1gTqiNd=%gRBF)+h~}fKm;o>pu<8SA~y+G4nlqvknKR*iAX=C-J z57^gto85Z##TYI>dBVspJkgg!pr`rfWY4wV>FHPBZuf83TLF~?-u{KXfnCs9aDTPC zo&WffWcp}BzPo)RvSq#OdUM!TCfVoTU2;yJ*@BDt0kqKG&i4GbtDmoT?|<0;U;`7c z$LHDn(wEr!ZeHJN8UEVtY`^}(uGW?3FP-tP!_`W;eDhGANO%kk{rdfaOs^a6&0*d;QEz3X6=$p{Uylogu`O%e&6!>w59{6W zVSlJd_3gaT9DGJhYZrZ3-JG_MClURwAMF=68p7jwx7Mf7^Zj~%`e6U~-RU@=Y=w;1 zV>_H*)|L3p=G{A6<-hlR_(i^k-LZVruJ+@fZ1R5go5OK!>nmMHx@-lU+xNeAp#JK6 z+qs+D{mFg+-~Mdz+5Y=%0#0@6%>t%jyvVvJ2 zbE;N{{r>)mF1P41tM%>e##f-(wMx5OFVQ~1P$A`a4k4F;6xR2Q<^5`Nc)NRhZM*W; zezaJD?fRok&+bvn>ZyC-w3ETQKiN)rSbw@Oy31-=J+A*)amTek;*))CbNhtcUcHw! z-8mL{yuKLB**56egbmApezm$cLw~g8BD+!-ik{@9Ia>M_s_m&ybNsZswSUv9zMFk_ zZVt{AfAEHaVc@D!u#X1XwN1{F% zEP88H>TBSdL+St-ti~o{1vMY5Yf8WJ;?y0+{j^cU9FRhZPL)UCD5(}hw^d3c>Fzov zm=943qk}wkl2UAwDfZb2gP4ZlEzDM;CQK6D9@d7^)SFXCPLA+$6yc_E>h1=fZPK`|EaXHEOWV+WkH}CbCZKS*pS0ougYWQ5Akb8l zY&(=dJ)_eKF_iVsvb5#oGwK>BTmUB{Yl1J7V^e9u+|*rB^>NkBzol z0`O@N`V{#%#R`ucM#1UK2}WUtqaY)W)=2}%t2v62(km*L#O{#I_M$+WfU5M1X>jrx zO0UHsponsBKWcP=Jqr@lvJa<=xedj3DA}gsn(o+PTskBIvBSGXJNo2GhdTnKsTT+e zCDoK1!Ql$xPJ&A%y$6y9rIIP1BX6}~)$oT^)*QiV0%j!uVWy}K3ZgU`vxr*}tEy>) zR-Ym`K*6k-GIb5ur+N?O{{?LF8kG10Cr>^YfGfmzk9h7uqH(A%Xt$mkf65(!qG5%$d_2L*m0J3W$~vb2#$ zDpDzjK7ki$E8X@~b9|mn^3*}|PZXlDrw%f)$_+%$q{8Tk)3hiAf+eB3N+@FH~~H zg36#Lv6;|87=?!_lu92(qC!ZItco;P%OJ^REOAO+7;(ZDyt6*ZAf^~}J#DO}hRUh> zKqB8I8CsjJAwmhP_lXAw-Zpb9ld;52_5aO{jfdxVB z{v%Rx+T+Fs>|Ixv*~O8LgsJL?!cC^wz`cAUO0tC#J$4@0)sRkU6ao^W7j+CwAWW>T zhlmC5N$rnhQk;ngPJ7i0wX;b_RFMUSLJH~#Y%X=v*f=id-9vJ(GQAP2?aHhaJd6i{ z>EVHe{lo|@*+)7_!1k;8pTZhjKK+Q)d?M`YsduHk7QOVs(2@|h8l*d7zA>LaO$n)e z#DG@_FDW#xT@S)gLD8U~XA9nJ7j#*gQRErWL#n>tagWDZ~ zdd5-vd=$kK_<_c@N(m1#c^{W+OaL7I{Fw-<_4AabX(gzhaME~X3AYfTYa8VL{?goq~yOOQwqWvJ{p942BXHj82N!5w`$1C3v@ z`EHcK{g@0L)5rQPNU~rMdIpBo=Ai-H`*5q~0qe#B^`Q+O>N#woQ-i%)LSLm@$jeIH z9_vLN%1#e45E;10X2S%Yau9)DqNe+7aXNC>W}CYSwdu?r+nGvUw2r%W`|E+tUKI+$ z)X1U}hfGOO%NK2b38}+7iVr&>H(cnNjE-Amb1>;ZDB_1CgmICn!cbBkHwj@%tq(k@ zprkTxd>h>EH69qLWMTifxwZ-Es|RHZu_q)klaL+5iE`tU==JFA5CaYYzGdt&*_-9Z zfjb&RuhF#jRG(My+m}93yjGFTRyIWlYHLqDX(kPFRR`)5x7U~&9K64xbbtVU+V|f6 zh~dUGwrswg15-QRZpv-Q+`xKQ?;-V92$)J{G|KHQbP8HrQApP-d;AG*oE?CDqm5Me zt!mU*=u>|%wcgvG_qBlk~Wdq{;@KI+~&!Bc$CQA#vmrVkQm@Rvso%kzkxv zyBxp)P#GSDE41V&0xQw0nQ%hdN&skp*|E%lq*xJP*G6?d(4&q{k^uu~vuYj*<7Y)q z0Qcy)*6xx;P2R8ObId3b&|CbakYQKzVs0P?HIwetT$F>6s7*m?d7<1JQnb2lEgT-8 z+|?J?NTi=6e@9NxL?V$0=Il508NLSxk@?WZnF65=*f#V1O)20aHAM8zKf4=nj^DhR7hu@;RDT3MMw><*Qhaof)8=0*i++>93JWNmvmNRlMd!RfEW#O;Vp zA_+{>#h-r)wD@ZWB+eD4xDmX#lD`Ui_Hh2>m-~bB_MXJsdUZj8x}X?^&pkYDj*rI* zM7!YcbztcA>Z_w8c#n3s&whXN52wvxf%iU~DiCe8pilqqFTNIRZvSre)#35){^EM| ztH>#&?n0t^JAatB`-l4l`YDdsmjs|;5aQ5&97HyH z@sa`|Z)_0OhwZ1z$GZ%OfBP_RH}kvW^@;~=^>%hhu+x$rE+||VfZ_dqw?5q5eR=|0 zE`LAlKdrZ`ckBDj)>)SCH^-xm$SmI8-KYBGmm~1FU#)NVhcn9WVJ)uR%Gny%Az@KCG`-zw@WQgtvaXIjj%2``y**>;0$W{9*sc`osO{__#kk z&)V~x9nX{YPGruHPY<|^a(%Cx{i)7?#`;Yi>rYRNso!trgFvsF_ck`Smm~OYb8yV% zMu1Gcv#`?w$=WpjkH7lE^XuBb3+A}Lb*N~N42ECetDE)hkAJ$~EDxfEVPD+re5&S0 z{p<78eeqj=Sp8{cvnIB>l@A5{#Hz{@Aikf3J>dh z8>E|+Kfgw2vpcUv2Zyd7Hny@C&e-F8aJ>6*8JM3P9XPD-A8+pV`|avv53{u~Ea?(o z>`!A?6h^gv&DeHd3B1n}dilQR=hrS> zD3_lfQ!C=Qzu7o`+M%|WtjEhTS?2VKZuwD6y#I0am-Fth(X9M_f7*)I_|31^r^my5 zbG7>Mf4SYCv_8ID@5Ezmi}_?<{BH06_VfARQ0Ki3$lfi@X}kJ%eR_Y|*kZ0L?9Es9 zug6EH7T?>Z(UUuSx$oxlNIFfqErSJJ{KAs_c5nOfvF@Sz)(dv|>4l!Q(vN>SY;Hth zZfo-X;V}D#w%=XJs;&NdfBG=5PgkqoeY$_U-}>KwxjudHfB5?JRyWWC>bt*~Z}w(6 zJ~$Dw4exflvaPxOP-ns){d)CN(7TfAYTH$62r|6VSewiZ?_Oy>lr%SRru4Oy4kbw1 zW>F99&CehzxvXxlwvcDBzC>Wj=M}*Tz+;LMhtLzQzHbXvA(1mlofS3LQ}|Wgjw2xf0Tz`8b*EiGZxt{)jwt*%P*Z;1e^x4lMjQ_OODQO~6B1JUdWGb)O& zcCALQnZZQbpfp@;op<@hhN5SQ5PC!=MUf_x)|{(LqVl*>y3KxY17s@&$sPr`D@53t zqzjI`SK`}g4MY%sNrB?6gv}d$j%qLCD4u87y;)ix)RH|Ya-rZ;Axj~+pY%jBs_dyW z)Q|wz^=n4CQQ2EkLld&0*t-<03=U0>{*0yO7w?seCg| zLvGm1+%TqCpc6xo^@Pm4?r=0`XdQJs+X6M4sP-`8@uD7rhB3j{k5FMyNC?9IBLl%C z$PMHjZAUjmhQuiXFF;Tl_BvBfBAYSsvH76Ri zq@MuAqUjxRPy?n6IDyHN$I8Rv~hwBwDKm8(OoJL&=TSWzG0bV%mhIC4gdS z+%`S29qWzAh<+f=3@VDm*bgnKR}Bf6y(1UN_)$-Q@COY~Mm;5EnxL)}M{yAnls-9D zjnHNNg!JHp2tv@49kMh0klSR=A<>Np)Ho2nBS^pzR#36|%Si4d&xN_2#JD|TbD3?1 z=G<8-eK9n$lGQ;O5 zl~oU}=;c*P##3=nftzfUdGTdz$l=^{YHtxp)6Q5)s1un_=YBS&o)mt-VzHQZM5Sw4 z``E-+HEq&IVu#bBYsG513Oi~zf_>pR^qE{3HFzM9xCqG$KE53#qVb~>$Sy{NmXiv8 z1JTO&LWEO?qA(R?Bg8k{$b58_htj-!L@7!lnX+iYznI&M(oi}$i0)CfICQKOpa+_& zY|lmdQ+8fX6Q>-5trbXKPQ*#>$HpWLb9(u#P7A21dV5_{v+gSMT^sszONM8HrxNX8 z4h^Ys^-s;IC8IJH@!g{ghM8?_2kcavrej$g+lZM_9+pFARnl!4V^d6#019Mp1;{|8 zm=w-SXb9t~Q5QcbCS%3+jIByZ^xw3D#TnP=0Q&uVHAYjvy};Lapiw%o+8djGxRk7U zhw@Ffh15(#oVPMjunsOsmZ!k)1MO}bd$O_8`;vj6uXXTT3;a)Q6eKX zGCiF``ht=vaIp8HB>-zBbRcCRekGJx&1xms_pO$D6CbgR6+Ye3_?j!JG8moM}Mu zS$=XAi;^H2uVyjKGMK4MSm?GlQLI2cA!_|^+`r|qVs1JJyUM?${5qZ!p~o=Xsr^wc zR+2}^VH4HS^wMvt_Oh^`rn>Hk)l_{uM9v`!boCX0O&+*TnZ- zS1(p;Y)7{RNg;%&DhR+UW(26vDAuEfQt=XS@DgH?tT08Vk|Q7?59R3S-7E?l;0M`* zDr$#L!rPFGFenR%orqD?(bLN@pRS8UT84}%FDIWz&L0sS;DMDCu_FPV1Ow65M00l< zb(PMksLkak`d{%#kQoT#rpu5~wd2L?M!xv-pAYK&e*$Lqs|x)SJL+e+!mA2YeF6Vm zK&TIg{fCWHQ0iWe4E`u=?7Qv$=7)-(JQHfJ=0DzT-fkWjV5_KFpRTq$-Oq>p>9{(s zw~jm&l<|)b`{QOoqV5Ej{Xx*+o%8Zm9OnITwwJJH|7v--GeqzE_1mr8d2=Jc;?)8^ z{BCVuI?h+CKj?{fkE;*s-Rj%@`@02H`1Ox}`p5NdXJ7cM**^Jhe*DMH?)`kQ@!r0j zZ5Y4Z&YOP}khos&xAwqCpMvk!hnv;cckA~yvi9x!`F7r~zT4k!-V5BkSsq`gO9v&M zfv_*plyxF1092f#_j}`LGi#*rrhP z_T!&!9l*FcgC>7&Q+v1H-fmW3h~N0+h|XVc^va*Uyn6cDZ|!{q9~P2%J1;0rz3%RD zFACwG?@tH&!**VV^Vjy)`;W&T?6SwF%YJ=lkLF8Y^;;VyTaeCn{oBo6*wDXP@9b^% zUoHz*fL8%Q*LK7Gw(_ukYY#f_R$sk;!kzxELTDY-tM{IFqJn-qKYpAmSL*8VqT=KA`1Gy%VRyCivE03P*zS1=Yf)Cr z^ZI_j;J7utZ~WQ~B*&g?+A9nkXJ{~`}z4O)<&3i$VH@0y_e?1>BnT`M2*YtY3 zy8W5#*mu5`XMgU;yUpQt_1RZhe9j*nU?c0X%H~sZs!K8&K2yM0nK_wmwAi9Ynd|Pru zq3x{n=@c<{9W*L5UXz4GF&jKhf|Ub=&w|;E;zr{jMIPcu^3FKuIaMbgu>YxDuStjK z``N-buhY{s{PnsG1XV8Q{ZgVi=LJeiRG&3>D{|-B`I%uOM)7*H0HpHssAL%h z{mL}CcI=_defH8IHINLF37n9&MOeM2hE_8~`WbN?My!Aetu{2&Fr9Zx#ir@P?O*?j z5pcSdCcRMWvSLytB$=JbWx!g%B>pL=vkZ2QB+M?GkCy{#-Ach5g^uk_rV(ozX39&$ zlCET;^w>ad)*EN0M)I$wy9NSTiK?q_KpJoA9#Op-TnO=@A-c|C{z$-_bQ{Xnj^gkp zUe5}9#_X9e`!vClr|6JmR@~l+mQfn)#0rQwQ6D|=beeM))t*GlK5IN7l`3wx1}o4x z8&o1RWE3A;0@{om?9?D`GaHizJ>tfr?^@MUH*`UqkOZxclKdtFbspK&iJ792sIC5Y zCc>m16w1$%%OpWk$*oW_+Dv>O38ZFTkb?+d z)a^h-YBe1^l)<+BZ`+MY-Q)}azBiSrBZRnlrY>0sA%-%=2y9S?AOJKb(X%7TsV&1u zy`+Qi;aHazBA3o1m)W3jWI%YFbpC8%y#_d7QVi*1rbcF?dO@bZ37B7ElDOp%c*nD#w)Sw6ud}->Cw~<0Y4kuM@0|GXk^o=U!ssjonPO1ml8A{vx zYm){l`3)(D5ll)S%A|O+T@#{!L9V~P7m5`riUM;krqZ(3J30qu45m|Hs~YAScMyiCHfSsYLJ+RLKxXupHqVQh4EJd)G36P;k&@AP|Ku)Un}{c1Ksh83Gav!jaOe7m2e`6TC&6 z4Fsniud+4(w49Qe0YVYP&_Fgj$8eR>qOx6!9Wj=@rZ3PwOkkqw7eKe1!P`6D3`e*yBh~QX`UuOGP(mN^mHs7i@$ig195h4Z_VS zY+@s4QeR!kI5JtIriA)_)o(abv!#qr13&kJ#HIseWYh#QBqo?KzbR8{U1WRMvNNem z57KZ-?pokQ-6>M4!S>AL>RO0Cn(Tlf>d(+)UdN_TX<2HkmM00_RWbqv& z^M$02R3mTfMpwJ+JK}*z>a`=!Wt>!^rT4P~q)=sAod5&Tm1Hd|WLs5e0bXwrD3ff7 zdCviDejXJFp?s=DugEfF^Xy5M#AaMtBD6hiJS^-0lvwSypa$Z>wnsy`;6^~_Fp@@1 zQbwUvX4bJvIx0~w0`ZP2CLO$p7_B4OlgIn%i!9~>%1Tlf%YoBiF(^hbYM_93oI(c;mU$B81mr%=6K}M& zs_z%E;nj?mg?h9{Y!guK$}y%O>gX?=|>ZhjLq~;d}$t;mys1{B*4n;W8U_0DmMrGB>I@tP+ zkn|W7N00I1&p!dx``-^#W|tQ5?VbH#|50$rPnWQ|+n@dBa9n@7TD_YEffFq7b0*Ql z<4YRbO9ZkWX+i9*Z&&->41l?X5O^zOfB9cmeHiz}iyT zKDWXB!h8XLod4nSalT$3cIyx8t&P+dXGr5275kGZ zFP4~p_j}FV%cWN_u^LlHe+pH6!5I6qV_jsczg>%3_}825X4Z_`{yElVu{`kZ30r!y zUw)c*s~`XAy*;??!>_le-KPa8dgTag$IX8?-)?3bU=7oPMm}xsZMe_hw4XK?pM9=H zox8EWX>nXRPd03d%k8b@aOQ=6-W`5djidfggSXp@yZ3n?-OeBOj}>>X#r9!yd#ca- za_BDB%@a)i;%^T2ewwbAFZIpo{g3~F`86GhH>vfhhl+|cDw!l`QuP+ni~=)tM4u+rX($|I zQGozq3<^XeoL;9738WNU@pa&{96b7n^B%xutTS^f3b;Ny=Qt zsZVKyM6MVI(ukrtAyU;yr6J@1QdhcURw2XUDFuvgl&41Uq7p()s;Gv%qE9C1b?imE zM)?78Q#2Hd?$Hb4MPTVDa|XW;v&2ff7@$VlLwmJPDS$5Eu< znEJ676dy5KXO(=Lo0LhVECe-{9-C`Z6uy{n_)?o3NPb(yAQ1DZ#lFL0*&7F{(N-=QM&!8wvf9YFnr z-EJ_vU8R|m!D_E0sv_hLOTu^(DYaa)hU=pGa)PcP8)TnD0Z4+AD@yjZokKBOy&{dM z3|;#sBGf^}P3`jmoA||qRfrO$h(?ggHs&V8NLZgiEak{aJ$VL{pgx0e7X*UrMX)j= zH)<5$JAt%a1*|bB`b7G9J<(D1L4_kkG}!?=QO0q|f)G-=d{9$2_NOaD$~kBeHld`W z_Im>&^a(3{ATjHqXB1FhN+7Kb(e#c88Wm9@P(NjhImU+V-M2%QF-Pi((g-cPofCx> zIftWTqqu2H%xy$llq`ZlI<;h8W0Pg}Q8znBeD?BB8t7N`Ce3p~0(=We8nObd1q+@U zjmNGsTM_xv|4rSyEJt!(YnrbTrU@l80Ofo8{bYx#Bf5j#VE8aJgrT3L-B|-8dPuqC}Qv&IzSjKLW>#o$YM6Iw@(gf zk3?LhBtjW4D@u1FMw37w;Kc<{CQn1O?KyNX)er?4BD`I1(-%;~&3nSg$Lq^7ld4P; zVo?=wm9!lbAy)EYv7DpWEo-Pr%cNKRn_f})S`6}wApYZA_>tb6({#E74ffMznKE znwV5Rv0a6Fx#l0)?!lfvTPc`Ev6EWO*aY%d$qrjPf*E*ZXH@;VCo1)KX9flv*PVR-&Ny9vgDOqPhSnw^ONm z8^TG^XS3jX-wKaL1KUbH8BWQlQa2RZrJdS0n2fSJL}JmDr%c?X()>jje`o|(fN9nD zE83gAWEu#xQ;J!-r<9u34R99zwY?Hoe#4~VrB3#YrrNi&fRsdv+-l%y<49GlMnz&X%elJC zl5$b_4SsAH#Qa3YuPHJ>hEJm?q^SX2@TZKE)5oh8pE}CP$p=J!8 zc6MhBhJGH|`s(P!we>6M3bM%J9LRsqOjw-moDl@_itPjz6<$5TBMGTF6*uEb2Q}b(Y~>Q z$Jz*eQ@1(nAW>l25<`I`MS`^Q)YVf08L!J)R#}7gWpZ?zz!^$4evpk4Gk{30Y5CP5 zB4)T!#tU(!%KDe=VVDQrfzdG^wJnf@rS8-sg*ef=X|pl&8Pf?xN3#?&)Y&$R-y3b8nX7{HV0^4C&=(8bP*-8gVgbz`s%3{ zT|^|%hOa|jgrhKx>ZOxNDfnbjo;|vdU7NRgq(q^FMX7hUWMr%4kZNjKmc9*^5_J5N zK2{|p3FXqGI_V&sDI3he+Ma3^3&Z3((E!jWNEx-uG@8;Tu{rEA0V6-vEJE+eNGY>O z9!_xOU1|u5D)^xKS=mdj2F`y`BV-KNzTwPrW|q($oGO6ISEZ~0#*xYf_Sli9pe1Bv z7=^2>FgQU~YSqDD5>=)l1cXg5DkMokt_8IKjfX80OzBodM$5KjWh_dkJ_NyTAoVVW zH9NEsAS-!Ls^(Qnq5+b^C9RPGp>Hy9k1t+Thae?n#?Sou{_Nv_960+w0%!L1b~W7G zB=XKhG5#60D^LU7RfB-fLL>)md8Y-t`t7>)|l0=lkpZ^HY2hllZWk9z`bnOl_)Zdp+B%+&|1aP2J}i-1I}(?H}jk zg2%lOkaD`+rU@N(>$~YNt`9!rKd!zU@5EDVW4le1#(%cAxgK{bbA754jp?g7z5c8D zxS8!rFPO#Qup3YC#S<3O=jp^q`aFBXf)f^6`tpR9{`158U+lYI+O$n}&)=qLn%1^Z z(y!7N607Y($GiOI)v!Nko)V7t?Yt8o?qS^Ch%ouxu)A4^V(qr;&9L83>(#aJ-U~d| zA9DW!=-mtlVP2h-*@36FOMbEu*^Tza!#wSLMo(9Id7NkR=lkjAX7h|o{g4Iv;Iq6y zrFY{AUOlW2(_=#R+PZic4_e0OqxVk<@#`;q`Fg$=26pw^gdg{}UyVNro%*{ATOjX$ zdH=uLY+QbQuzfft1nTprt2a-(^IzMWKvYW3aSw7DC0_p{C4*^W75Pu@S>Kit`$*Y=KPVQksniA4KlBfc!XZ-(trYulDy zeYN_0yMWM-dtVS6d!GAY_oHl-u7CbWLX8ji5Btma|GIh7zIK@X37VeRgKb>3N(P6- z+wH%YhFg33@$s|0cB-$8??p?k1vLM-GP@^(xV5ap6e*U??rr^lylWBY5w0`RYp2(`_hok*ci$ZYx!+bM5y%>hQ+3S6>)812X812EQ z{jX-hb%6kaFe$M^O(jyP3#hLlU$3U)SB`5#F;ipC0_p~|soxGFHubhrZbRgd#G)jQ zBfAOo47KKgW_2n*eM6ONN$R{-c$xJE$`6zhQ^o!k|7 zB_z%yo!w9cL>22cEB~hWwJVhhL#aQ(u8@+%LX$evFG;R@EtVxp9`p@GQubjWcwp04 zeMfplZ4=s-pd*6%Wu1U2(u@Nr8!LYtTuo`Q7s2=v}a>Kn7&N~#l1UE)EA6f}cDC?Y#u zBo_~Fp>hlsidxA=p)$A#(?M!FENdi3pi^TL>Dx-2(~KCrVk_|^+BS_-jsQr({*a^p zl0no4p+;-bhvZKs|0iU0oIdWAlurrnS%nrcnvyEVo|{S-C1R$rqZSQ`ttngA#1k(% znHoDOlu2y}k|-TIWT&=a>JimYN*^jKdL+vrMFT8g)Tn}2^{Ty6jmoanXT0w|zEZ`e zBw(%GMv_@}o*|P>-v&4V^@ozEv2DZ)Vv?zBHUhCA+vdp19DbCVcY!_qjky;U(QZYX zy9SY%-u6e-p=#Buk*OzE=BXff+`U0e=!=A(8h4`T31~>vdjSDZT?uyvE}yi~QK`_3 zNQVmSV((?8z$TPXr|m*r(fMZcA^GhF6|zN$95tePWDx!#Lt5M5VRK*?G?nP)yP(%slWk~yUa0@JrxG`6L z21l{@M2KnYuBs_@A;!m^fPbP+rh-XT_ozBpONTLol^33eD7aEpIa~wb*tUWT1l?3Z zb8+3GuS=vIQW#(25#pjTMJ9@nCb3c2M2IqR&r%&kxsZ%2O%EpGDsm}oJ{SWgMlzBz z5V@``IU*Aj+dU1J*|~@cNz(Nu)ODw>U_L(c908=i7;5v8VB%K+e)q4Fdso;yl|3Kauy2`ge`MCVDehp25a)NGLg6h z&HS5(K*phnez1p1yXgw^qJIV+Hr**8SA-SpyQ|4aZCu!MxY1Oe6T243bOfQ zm1@^O;#+0w$g}TMkSEw-5YV)uR;uWorj#vgnPAaE>lm_3T76XuYr?46;7vue;C1R$ zD4QkzFY*XvWUzBniG?oXoJ%+9)hj@qa+LNW<0MQ|-H2F^##ppc$blf8AT^nQyWXKhhmZ&6sz3?ATwUT-wzwu{ z_Sbi*qHIi+c8)+oY?ka0MQ@IRA^*h|qym!sbLBlD>1n&PL_vYjIR*wMDyWYbwR*(q z2e=23gY^=i$*(2E5>ecmk?*qhtiqE(d5e(ud#koXsH9rnDPd#vMA-J>fHZQD%n=Hi zfLgjqQz@$t9+IuA3=8VhVSy=STm)Uu+v%4xG*%h4od3m~q$W$Dq{zGx!6Zf>9rDmS zB{@|(<@Gf@$DkDZ%Jk2HpofTf5l-3H2R}+dNlb%RU zRnW`ltIkHT#vb{~qV|%GQ3rGq6i(~PhLUiI!b_nBRac7Xg~$=Bwk(;vFSgXuT1k$a z8mq-$EbpI+on|G-pp~wiN2(%ii0e_lwC-j zJoz6=ofsIzRaM*MYDsCA3a3p$vQl-7VyH_yvS4eAmnTpBr2xb{F^Im*)T*}>Dn06E zfn(9Uj<&?3*N*s}2zc!l7MC#hyJJn^%#vztQ^T31^F3tbQEA6p6xpEeN7pkQo_eS% z>N~YiwNps~&Oe!3V3VlbqLbR7NX{|H(IG%e1frZq5!kNH1Ooh7YaI^QFX^qjV4VG6 zKuT{Nj7Tx(jpwYh-Afi3^Oxd%CdWsfQd3YZwiO9kLrKS~7LNz>zquy^$ODUU8ap{4 zDQKe^vf8!AOrmgP(beu|mpc3SS3!FJ=L4lViR|V^c+dovw0~LXdK0qqusrpG=6gNg zzyIZC8ZQM)egA(9)83xxtw5{^8yL(`U#-4>0S$jSKaRWY{kT26z?U!V$xk@H^aeH% z%fl_u&1WR@4}$!yzMs~2<7OI+Z+# zY?N2~NmRJ|)wk1LnAqcZNUP}mzuE%7TYWbTZ=XlxVVJf;?*2vC~Vdh{=9j*f0%~np?OSbczx@3r`y_ePP_H6 zAN683yY_e+L3d9))cd>n-TvYX)B8?Ot-svvY|2*xcW*8h)@0|{eKqcG-~ZcA52fGx zzFHQfRJfj(+y`vN+hv@5DE#?%t8eE0_;5FE$JHwv)7{nTji`JtK6<<^K zKRgfY#p>H(w;4rIJB?bNclOD&v4{L(cobguo8!%s5ZhX_&$IBQkoj+qo7ETNaC5c* zUk~<-^D{E|?9Og$mN{P*#xm{ap#HNJpa(nJ^Vmi2L?t{eZ~hnE;QQG&_ecBnnXr1< z0xui)js3srX1+Le2jt-4v(?^L&CC9Ky&HahT76~4&@IR;c>N1ewaB#}E)U}%RycP$yS>!ISAc8-kj{3*}-S>?xo9OJsqBw z!GALy)GcvL@cdr`5pL_Yp~$9a%`tY# zQkvxxX>Rc=6BCWtP>49EEN%A^mw0FImnks%9cp!N(rZYlGh-@F(-9hEnGD(t@P10R zidiLp@mRIFnvdt=s>p()ZHS;FlIqv??nE=xDhrA|wxS*>kf=bRGeUJ635ftG*49JY zu>N9c>jdfx(b)i~Uf}V3Ndzt`1k4)(x$bD%i3@md+@_Qw(#R))a|7 zHS1XM35}hHC?M*GOuj{;=aAqyZexSxRh3mT#)6cMX^7}c^&tXlG-4qn^g(Q6hVF11 z9zA_Sut@=XpiC(_!4|o~OOaBx1Yfa3O5C`xtZHUP?X~?8n<=66notosrXX+BmC{7V z?N^z}Cy-lhMhxpYB9ABuDPmTnH!BKTun}aA8IQ#rikvmB2nSZ7H|tX`1-`li{*`oV^G~SER0_ifXQ$-jk&8h@#DpJIlMBN2 z9kN~`ah6~V9c6>1mtavE6}hTL%BfVE>C9UuNNcAgIVFUna0!5w=%U&ZD55j>lE@YM zAj(9fkaG@6>R@sLMsmk%@pEJ^qPwW;2_gGpFYZY%vMocEQG@x4tE;TP$j`{C&QR#7 z+$)Z6!cK~9xy@362)rJ__7+aj~rsm7xRW)f;?2qUD^ys3x{ zYVsnnHWR#?lbDhlk$Mn;j%eJG)6~qrcroD^Z3FZA1!c}lR2vL-xWi9EV$cAOxavFR z#+EJu2~wzCvn8l@YaRzVvT6VbAJ;XD#Py$nTs=mJb;iE!lio?eoSF$bJ981pD^}?i za~o0#t&suCrd&O=aQ{{=Du4m8h(;OHD92lHE+hj7B?h)TJiByc0ic8-67PuwVVi-u^?7G z&STkj0(DWti1%nwc-}|h%qV1WngNtlP(LCwFUaR&rR-i!npEz!3z2-comlb+>0ML_ zrd*YxLR*xiejz?}NUfQDvS6R)vKBPD1}1wc>U1bzpw`38KBh!RQ4|@D#1C1eEvVEk zTHQ!0cgg~{r1__gVaop4&1>9UB0%g=G)|#`d63X-D@ANnh_Lvh&Xk7S7ghH^31Ukp zrNWLGj}HLfDI(Ksu9m%BFb28o1Y-f_^jhpF`5<~%7kIn25Mzssb3(PE(2p=~8T>Bo zt1jkzq06k7b=Eq&Orjblu??havqtL6_NrB+ULuodQ1@!){Pb7Reqb-jEZ%KUGayx# zdg0-*z+%2-OKwTse?p)`t-Gwiq?{_zVp>?51%^dxj--yWx{=a6fP^~jYH~bkX(>@W z(BCQu`%RE16pj`8s9NB&UQ&hVvjmtxfIL zG*RYO*BxvI$!3&UJW;rqN1sczB)8fEKqTbpRa1ilOPrMzkwK};g`)JT7tb!Z;o@^B zGNk@xTB8ND(x_n_g$F8u2s2&*w`Y}u`(S@`CCgc=SD%O7y!KwHds;!Fq=t1Z4TXwS zRNFc-qirR27G#c<6i3%GL4(5`vgQK6p4gg^y5539Cs(55K@H#NqxVh7gT{1T+FyvN z!7NIZQ_K1aGmn7~0aaA%6=8}i={Vw`<&Wz-tKi&5R8l+A$}{J<>ZqSnv>aI!lpG>E z9*{tyaPoXit%QOJlhuG42v?wJt|2slo$-T=qWW6hD=bDX zj9z(X>R?c}U#5Lnc*vx*C|0GF`~|mBa;TPVXmTmL@BHU8W7$a7Duoh*)qT z*7k#I5R#E>l}5(^Fmy=Q=Uyeej2&9cT4o1qY|cLY$AQBMqL}G*_XrqVX&VZ6FKa-yB+T5)o)K9&#N2JwC;YM ze*Sr|UkF9|aJ=43`@3|H6Tot12Sahf^$H=lUyXYa;ihleAHJFIhV6Fs)%djCOxvr~ z50kKU_Vw+>auvayug5Xr`9!?Bdq$!z=)&dJ!s$)ho1+Ma69)5czW49$m;cpg@8;d+ z<}+P#f4EE_)_1$fQKUljJAuv z#p?CE+m7OIy;!{&R)3tghhf^{stb0gm?zGw+Fr_%ybkuZNrWzuZsuw`Z*PGmUQOJ|fOt z-goz8|MGTx;S=7CkMrhH*!G?7kmh}O`~H_SL;GPfZ}-0!AYAM2M$bDeq}G3(H$w2* z3w|>W+ski;^}ihLEx(_|{;CoBZn774i1oLFz`Dnu{F=+huk1Vb;!(B-U(l9cB>ZR2 z{F|Qj-7*%w(){U;*MAoWvlh&0*`*!#*#Z(4aDG{F=XluDjJz6-H{&L~#1Dt}zdYFf z(9>=gz0oqg8TaembiLeiKd&b(Yo|e8wzw@k2j|;N-rL^!z+&k) zqfN!rN`0Gl|37b^ZN~?l6ZV-f<;&iEp3!fPn#I40bo{~}Q49I7K>Sl<#EG%_WMtC4 z%^2I@jX$L)706vvCjk2-vT9quwlIBN-KB5ugfCw%{ihQP`mI6Oc2w>0W!Ml@MnNM%kt~)dG8kLR z_d9bktEZ<@gMXeomzn~4JDc=;-(Rptz_~PQN=})v#~AI zgBzgSd6kKLr6b1dSw%cay(nwx&~?rBtffEYI|@Rm3!ZMzMcE;V!1mKmdshN}(UznLIFcf%)G)jBD;r8RokIa>qLACzNDSTJtWD4ILk75 zOg~+FVX5I^?U^!~o9ar^V>atlz0~ux$XX+InyfwDKetmU!>*>>o0u}l_wA~_L@I;I zY!GwGHsUiQSYFwf>-`D1gpEC&W>se|2~-2M-MYwX_Js?}MWiEb1d0L2!iy{!*J9y9 z?pmeD*6G}z5R3SUl`nUtfeTo>waXtukx9Jf+}cCvmK>{04aMrq+^e#md+Y1)UwWAdufw2xLVbxvE5cmM`~xt_lv(?PX||6xHZB z$aqvzDC9>4f`Y~7l@$a1v1~*2u-pYo>N3`8H3^!lh5lzLHfHE2koqsS0*MKfXRCmBN?aN5&rB$ouCh|>75!Lm)Sfd(FNz0+B)GnUCh)y3$ z&zbv@vAm~&mkd*hC?IL;WEd|u=&fU~$#d(aBTa6u9dVGMD;&xOZyp@RMw_L#TW8Ko z;ot_l3$|2<36+jl0Z~E;&?Iq&iD;4rOgw5u#!TjChhxGh-w=f}fM-^7NIvswq)Ma0!~eZjXg7_ro}8k;E&e!Ffo8u!roD%rL2n9C9JXD zj(YHS&8_VtA+zjEGm`@#e#r>g15@NDwp|jVDFrg_IL?W6!N8X&JqU=?OXXFud03+2 zgriUpK+cza8>J=81JHgX9D^L&0{saW$sst9!$66Ny>yT>5m8F5fv|c_8Cr~!Z4i4V z=PcFeNNqEXlI;jMYRewzXloBW^Q3MlgvbMwh_bB_T4kHIDSK>qv!%s~&>r@J*VRiA zjhO1}&1zbqjmH2m<7HD~!-{mlsBOAaCL5x}DA^b6pi-Z6m*KViFTE7TNG(Ndj)*6< ztz088wu}nZATv>$?bev`hS8iJXo=4WLoXrD(v&BmHPl9hgKA* zSeoiW?gpe0iFgQ!aXF`7SrVYC7C@L7YArZqWVcadHheK0!r}?yzNNlvvr-sgbV99> z1dd%E6{TWdIB+fZzXXb;a-?~YWri+YPIBpB!ZfM6R#4!qh9XD>#V*&0O~IQoT@+Xa zJDQM##QXh_ebt#NkU!WjN0Eqm=@IpE6jU_GNTK!+IJ2Z{SV489bSbvnxG7Jg*qDe^ z%@?kbgWpzkD8PnU)Fh6V{PR}i#V}Ull2Vf|#?uyRL8{gXY%9d*ihBZ!y|p0InE_9S zX%#DC39{v@{za_LNKk-$kES%|jyMSHXtvD*=_sk*B6EQKB$G^VH^R=~f@*?t7Yd~B z=_Lq3OGu3f4Z<3>F|_eE8kAHM{(qy zP^YiwjX=W}tIxMLLI-|1-PnI5lHb{`>71U!`uXqQ4x8O@{7E=Ofelx$hx=nf+S)(f zis<#91)BI`_81~&@gY|PtpGbp!793q|H(%RZCWQWe+-!tF zzka5*-VE=4pZ;{Q8Xs+OkC)4Tt%q#_mOo#@*MNw^?*_a0^f*3`xGkmmou1kD&IzKw z`)qGd^Js7QAlBVwcE1%*t^Q@1y^Xd;i01}lSnbz$^X!=Qhk5h#a5rz0r8r0R4~H`# z@73z_`_riXWj7xmg+q7X{MI(2J}tyg`AqFXEQ=$$XJjAH zfMwtSe`1TdJ|PAlGc{HZhHI)NIq8`Z=R{Oe zjb$ z3ILdiCZ%L%9Wu;;hrDJL0@YF4-j%_@VQB3zfCXx&bIe?Wl%kM!8x5}G_K+0H4x=g) z5=hy(zRHqHscv8=3%N4hMg#|r9R=71q6VCt8N%HOv)`N^YMlWHfE%TVy{Ud)nW2sa zQV!d3TSD7$>?A)9t3iF;_KviEng-mWzRYCEQo>A9vGj*fcc`S=ma(Lor}8*m3+&{b zE%oB#&o7gM)1pgM*W&dC#De>34JmX5F)R>OtmqIMR8JR|JL$YNjdTTQNjF_Y46w*o z3fzE7E>do(6Z5V@~ty4S6V9a{)lJ4lZgUn zLtUIDmELt?e1grnww)UmX>(~mXeb(n+H#Ee$a|4@mU8r(Tmfr!zul0XK92?8W!?&^|3 z&{+;`j*^f?2%nIU)MO(uE@C`VvW1z2D#>jS=TBv4Sp(@ywLk|49F{_f~YhxA#2_u6feQ6SF^+{!sO?f4E zq^&A!EE890pyO2F*cNqiV$lov0k%N1n28{z5pxQ4?9Z0E1IEp*E4b6uI)%rS465zP zT5N%@g=UB04AP~Eq(mI*T<#=ge$7+s&_qiCfiS?){KO34kj|!FkPs-Ct7D4fw|fgg zs8P++V+gxdy8&sB!!D2w9FEe$rabDKq69X zd?meODMoM#iq%;{P{i2vq&p<|4@z;gWuHkKC2MXgkwRbPYO5?uo(e-{PK28hnmT}( z+1)}AWSHs9%tTc2DTO0PeTPz|0PrJ(qoL|y+4O>+llhgTXI>AK!a;>DwVc|PsA@vR zr6=Ppkf=TO@h-CTIYy`J=of;Ln>Ej>JBy3 z)Bu?g0_Y_wtr7BByU<|AL?ezIjt0$;k%EHlWLu&rx?o{tOHI5I)9a{jFDO~o5s+Ox z;B6+EBZ@e zlpdvO?{toYJgn}oY~vuCx@yTaVk6DVYp|`MQL_`UlegjrL*X$q?shd4L$IBOonxIk zn~8KMi0})$02`NxpoJ=lI_mJ3GzsxN$c_c}PgIcO?NIi14+={}nH!L`xD;b<0o%7! zcSu3FeT^So;(!sGOapSuR_98{6_|3d{k@6>ic7il1P*GnY!33^M7R zsM5%CH$iyWAxxNc=Xk2s_4%6O7=go1md0Mz%zq^|@ z)5C)erVW^=U-dXIgZ+9w+9Qi`Si|*t-r98^hr>KA?6CH*qUb!)kosdfCN&WptM%w= z^-3h6ZSlfXd~;&^9kypsib{j)feMt zx*ijNHxZY9JM8!4R#dWs<2D@$yT4j}InKLV(bG;pkB86p0yy7~TX8zy+j6o&DV=-v zP6J{iv;0}y&3k8bUdCnq1evNH;O%a-A>ST0PnR|zHd?lj(%3u$cNg|$@wpD$d3z2n z{rcYdrERTE3)nUd*t@%VwRYa!o7HxFw-7gLE*=tudbX#w1*m1_H@gs5?EUq)OVg2N z$nn6Z6|6_I5wt~{Aj%Je?Wwii!v=dJ{$3l{>*IcJ)BK0s^rMZu?K!`YgW}g(l#k=) zYW2fHx@=dJJ-ED{ciWd|zj(&l|8e*JmmBf^u5EVbhiRLD_CK%QO#7d0u1-Y9e}4OR z++GjsyNlJIruBN>y#K##wcHNdX*;DI@U`vZ)erWzkJEPlqdnj`a`(&*IN!Cs$le}n zdTXz(bv)ZTp01DD&;mRk?h+q$!r`WYUGU?RY}4C~P3L-iL2;**{c6};+EA)_Ac4vE zho{YW#)JJb?rv;^YCfFE%rpD<0dcQ(V|oUQf{Oj`1*g`(oo!GjWfm+vUHeYR?q3JV zZDO#{7S$6};3okp;re?_EQ+Wh7Z@!P4ON>}d)=#6e>RCjML8vqSTqNbI39!dFk6+bB`_f%Dz+f$-+hR!6EY{uC$(os!NedKwiiq01FvO2d{1F4192z z(mxhsVW+)Hls(n*ZHx9ft5$oZKFyX1NJ<^|EkYI~C>$Xu?pj-vD1;>5g_>|iN<;$m zF**nq5mt)IGIg`GfgALWB>{!HV6hjEN`8+ZJ0D<}4%$(Gu*;Go2x}&^_5O^IS zkg7(^<}kLBwIS75v!i8J5-7aS)Qh&TL8=0a#mW*QGFO1OpTBItu)XgyT9#yB#e0rrHkIsPhqfwxQXS6>98(H}&XvlL#Y(NZ z=+)FnCZrr8GrvgFo81cACPa>)!Vw9LiU}-~2nAD06%O3Sj=S#TRh24f>Nclba!_vv zpp3n*g?cz_g%b0kC|sJJlI2Ysaw5g0d|XjxOL($~XzA$9U!>xy{+Nnn6;;K{}I?|I!;v3hG?OE2&vegi%dTfqwUm+a5c19?ojINc} z1OG!Po=lF=O`l-PLW&cp>tbk()pJ(3D#qY4y4j?^}U)Rh)g^#B^P zGosIte2a5ZGnBikvbvPNxtvad8Vmf^l51jHy(W}=olu%E>cT5fB}>RVWC0VWS5_m? z!$~s1c$y=$L1wxLU56qRb+))O|gZn71r8qA9h)B-d$f6sY#%(Z`JTa!JHm8Am?D+h*FBsIIX$}s4k}y zpF6s$#^#0ilN$4+sU4`PEw+eM?r(%5!R}0H98fLX7Np2($&c>6zZtnELDt-Xnm`F@to&Dbe)}8bMViv8ZHBpO^ z7rgb@sN0j8L|k719WD_>WdytaTy5w90Uex%3h=0M+j0VOH(#aDa_DtP{hGXT3v3z+ z3C!K+bm-y7q za9BX*Op3oAR!I|cFjtCayROXoh>HY4w#`coXLic81rj}V0wL3>?1P(e)Fx|gHi#N} zY>fo!wG-4=dO_GcCstoN&7^OZiGHVrVoRF_#tv+XJjC%8VCyJlsXlmUKJJCiAlPhd zyl)5+1Er>zC%y~hya{J3hBL6)l8ga2+oFZCMshjjV_I$y5x*8xqU}@V5|BF3B1@7p z))~`h-9J9MAWBs$(uy+ItnJt0ig;!{%WY9~S@Ep(Bgvl_YU zLX;GX3N@SmA-Nr$+CRzb@x&;!dvtY?buH^-b?9N+x!m16acHM^8FQSzJ1{O#1&6EH zCCEG}USKe~CZuAOlt;RZ$;&nGBvXlz{U#I=t?1Vknv5D zDmj9)aME*&3h5~6WesS{_3}g^n_D&RA_IuBRc9Y@>YGyoDa}p||JVpu^o=u=ATgzd z^%+(uO?^;$B!4VB6p`eiw)3Y#T6YVKB*RGD(`Ifc7uSfw8#3GqvND6_wjtTI)T;5Dp7#h(#dYSb36t572pe2)VfA5~uY_DNsmck4t=*rBeG8jx~)G zTBwCa-SyNhBH(C+)yP&FJE$Ti(n-?NvOU#MuYMy^Dl%rJGK6?0bjtWKBad|2=%}h3 zR!`oRIA)N$NtT?F!aCd#1}o(d@;6%Bo|#&ZpWbbOUH=L@I^xQ)qo^%2(iV>g8cDz+ zi?{jY)K(*pjfx zwFF}zZD9MYilp=>wlYd`s~TBn3d~=-swnL8w%S={5VlFDG zlt?UXCw{D%(?SgxJ%BfZsBW^K!8rIR&BThr7i$QC3VO-&ejqD)dE zEfb9{=JqU3vm=8@9MqpsqI6#;AqA>~tH-|2+BkiPl|zK;wS}VMiGs~2maz&pql)lM zZEV4IgDqu^EK5g1I_AnVili&O`k4PhCsSxCE!3!EuZm}%|KkAN{~4ia;(Qg}&Oc1# ztk?5#w|oDK-G27}9@fGP4%_K|Az5{-mkOo8KkeAe_QS5qh0gvxVw3}ywyK{_l(XQ z-oF23VS^P3?-|$Z)fuIyP>6?Nqks3|w0}u3&411f4wa#y`F3wZ*4h0rFVUS{W`Anahf-i!+C!=y#M9lZrF~iFL%SkgDu7B3~Blwj??zw zkAHJqeKj9euWcR#-A+ue&pXhZhh+!a>35o(ukY=CqJb7d-f5`yU9llM(XV5szZ`e> z_Ai$=u)f6}{s@L1{d?=?5y&&S&_{r6v|@%Yo_>v=QZUr*z* zn4WRhHiNU+x8IDbzlbT>Ven7(6lQB~jODRx;hh5p(Swh}HOvLWODIbrQ3K0xd+AwHcpb%CV_9i&3HYo3hQ8 zDi8u*kR077RB!8A#9$=TB^6U5&8k(lq<}^#M-;0TCbB?CM6Ygo*n*OOZ=jAZ5s{j3 zpLKL1N#x115T1x_?OCxmUIsDi|8xUh2~|fsvu!glkz2k>UE{C{g)GP@WYf7~OB9q< zi&Cs>*zw$yf|o;6gMD8Zh7bP`uf&_wvY#vJ690w@oH0 z>(3ja*H>VxxsVkewoQXt!-Cv5S-Yn1sa~srOj)lqI|;qnZtF8hs4^#Z98h^%3_Te@ z*EdeXMptn0f*76~WeV|(GK+|iiblCCSfk=uirDcQI@vyC=WCU~rPM`G_KR>E!7Orv z?^yMX7jbA*s*D)K4Qbcp0O*wZGFy{LNv5BKyfo^^YEuc%{PCh5&5tBHWN}_ z(zJa`Lm$PQNAiA6;i_MhbuGOypANPbiJ?6)gQX8O%mW;&6T?x3ETtlA$(XO*ZIHSk zR9BqC3s(d*M~ zno2a{h(3=h_L&EX2p|455#R4Jm(}R26ixmZ^ zL{&Bq8Czc3YN7jtns9IDNI`S!;6v2&6rv$^+=tTDfz-T3wb~ODSv+Am zsM+r#Ka+@cylb$6)g|)kB12GJCMO?mPzWo;N2}c$yM+Yv#zu)~D}oqim5U(+XVW3o zaCr2{o&AgS^yYQDoCE@5Pa;?MMwePp}XV#cGEJaE=-;$zio zSV%~z6L~YiS3^xQJ8GJ(5RM};YE*<$Z%h+OEvc_KEhi19COZz6Gbe**`AnHdob}DR zM^QHw_3Q?5h?kK6vV~K(5HQ#F<{{H>@n;hG90~V!eP3gbs8ADT$0)(*2#-myC+?CFFlNy1CQJBmfMraYN*SN43&hyVL1+#_%o9E$wSOQNhufKD-MU_#6m}M zDWxYDGpgaVwag1G5a{T_(3Axg8$otpCyOf>6@&}DO;yImnXHtZS`=#wyl2M^41Ogd zS!y%yq^d+tWnUsaa%-EKN(3^3T~=K4U2SW+pt6a*LtSMA)P*We!8T<$R4c6^jaOwsG)ednRKaGqQI<#PbhGa;z35hl73=m4OVw7Y7r*{0rkw6 z>98lR)iNjR-MP;~?W3X~M=b{NBlW}z5oA<*+W0bs6(O1B6Sow^H|oYG%(=x>HD#cp zz|zQ_6s2V2o4Do<0BlyDg;@)|-Rv?nzu*AkTj&#P{_ zHfsY&nJ($8K$N0@=M%kb^3yY-5MPdcRrdur0KsX+u@Rtc`aaVtOg1b8)L^nV@2MqG z?nh1XQ?)sY9sIz84SD3ygk`4+C4w7CZ%~b;r6KGD+edkvwxZ&oax?Y|0BEbJo2BoDXmpBnXa8X6oF`)UlT!yQRdO#63G= z+is&M;vkTYt(kr(OH@L`Sh#xj`9BW3{r?1e_N{PmCy1&8H`kkaZ+E|b^3TR$w|QC# zP$LxS{+a#rFzgTGezm`w-a0OIemCrHR=auqqu*vXZ#E0G@P`H9nLwG_(e8IYZ0F

tFiQ_|8UPx3#M~3h;;HcCT@JGdRQO=-9*WY&H^N^3{C&m*aR4!17P??&gKL z^eGL~TYI_baoE_54L|yGug?*pAEFx*9`+kO*&mnRJ);wS98XtUeXsu-w{|xhzC_jg z=Y_8IBW~VvK(P3E`=-5GeKD>_XL7akzxJ;=4zv&)cGzwwdxib5dxqCuPdodA{l_0} z1V8<58s7f5|MI`Sn{I>+-Ho?4&w@$s7hLIQ`xkQK_1&;NjK}@xOXb}tkgyQPdgX=l z_W4J*&PKZz9@bXz^Cj#Bb{`^!?;In0J>9PEriYcy%4)wJ(>P4adi)r5e)GaGE$aP! z8Z$BDIuols#;~&Q-Hxlz--^#U!LeW4?XIuK!MSJek6W#+yK(a{J|mkKkg;IA7pvRJ z@xBl9W;*zmaOm`G%h})Ja7_HVj&!}Bwzf$R(|CHd*EW;)gZ}L=zE&S6EtH$1P3ewph`@ETt_VJtJ{q+9dv_p3D-^cX{AfBMl_p^p{^)Rgu#|7a% ztRB)%GV?L{P}ttlFTUKR0kFMg6Sa!n%c8LpuQoHW;II90Z1&c({d#x!cV`%Vn{T_# z!LGDl;LA3%vu#nm>GBG`F$FaKc*d^B+i9z9_yJ7$>iK>?TVgc!tJ(gT?`=|UhNsm_ zZ$WyA@5i6?UxW6BJmYO1e^m%%xUD%Nuo^92ErrLO{jEaCS0EE(Xb zsb2mcXU1$?sOn~JbV-UxqAx~0vk+YjksSY0y-U=dFR~SAiZeIX_9Eg|>^&MpMFnYA z5Mxki&0{4E9#!^{)z5;x?h`yH!5)kjW6>%PpFstRgj?)Ulvk9k6`{NvbEK)7EJ!G- zt2BMfd810*{-ii=PIg~qbaB3Qz4wmt4Yf2(h;FQOunPfV#bnu__MN~R0KaLa*+Dw! zHd!?im_`LrCE;G>Y2zj>>n@|nO0^l=)FgkZqy_OpNC8PwW2lXmwV`Uk3${Zk_@I7P zG6E8+#rA~8+uG?ZlqdZ-T8LLsx$Z9KJN6jL)-}C^Xv9$+(i6u$z}H%lAR;qtsos68 zgIbJDT)oo&3Pgt|re#<<7Qi$;mbNTJjOvkx_mBilK(=yE3jlB=RFUFPX?yoryljFQ zQq;n8LiUe~bZ$-52taUnVWS(oSlf41&J5Oz#jR}Htj3;dA390sM1~7oQVqBh-94(x3&DjccvXN~VneE=8-@VWroqmex)RR;oQGoT=ImS) z*?mSgSh!HBnNonX39gjkR(!M?Q3{aZP<0g2!s=1zu@SwHh7$aukB;riC*9mXOS} zn=FUq%Ry-`S|)w8U4neXwn~wusI*go0J?(h)hydyDJKg_Sv7Ce^oD{MMLw)L<-Wl$ z4Q7~XxRgp~QnQDEK)_`v&oyEZr|L}|WzDHsrG>DzVh0OqIerS1uup8~lAQunnlqYr5@jl|!H>qCOe zc;Z?hPy?2tQz;Jy*TR`PPu%-3spk;pH8wUL1#}3A{G+Z3gJ6c*h6GQL!ujlxOhp`R z)cex)4bmXhqDe;$g$T8b#ThOmqMKR)ASm3BL)GRoC;q2Kf{J7S%?qlrp{;k>klgrs z(@}{u&9)5{QlZ%r93KTQY5@xfkZ+DtOF)xW1X0AWW1C80>_`_uE&Vi`sS6s06W-#0QG3D<@e%3!cbmrsx;Aacc*Gk|XI#`?9SNf2KdHQbe|_+rDa1u%Us%IRyxMQf-d)|Mj@$BK`iATyE=vgd^WN-azU z)dl5Lm4Q-Dp^G)L4w-kVtSzmsUQD|%^MyL9VWEnX4LwJB{|L6Tx$5%dXpus`NQ*1j z$~IRQy=gm_Gk*Qcb5myrDHSi&!o>`3Hc})ss5CV_RIe^LKMa!Q~^S2SF*xV#{$unYOMf@~V*^{KD0=A0JqyhQ;}d$qD+*84GZ#ciV99*gh5Dq%J!cUi-d*o`qqbftf!2iJ z6yHMov1*@2(ZbaJ6Nhm}*@s%qqcd}0ZmY)mmuTNIr%y5xA+OlT=jCc82~#)!b%aM1x)?fuu!FXQX<6O zHcHjgDhjn|exdExEVd|O^Go$b#?U2TNAruAaoSB{Ji1VqAeODl@f=Y!2 z?c9Q)jnQmYiG4A#7Ktzrhl^C_3}ns`}cZtAS;;^wZ!g$@yKktMRAd-j>YO>JP`={4g$f)6bp6RVa5eqMST`$3|gT^MgKRxfZ`U#yAz)N!H0 zw(dT<>fLa(D=gQ(u&>QGtNYPOdF^NRi1t_y_SiS+DR+mr$4&ZluSvYQT7ACS9Dfqm z?#rbeS^XE=FT3ry`h0u4876^+ZA`WcV!7>_6P|O}tq0++pJ{*f?aS}yCtGZ`hCbgO zY;le@Q^WCb+H9tAxBtDp${EA)Y-8y!`1a@+*fauXZ<>I?FCPd4o?xVZegDhb`M5hh z%Lg~V5pX&2AU|)HhjBN}H|cuI$Yysty-DcLr{!bLTVZfdpzaf??fP!q>BHBWkSqu}|wZed&9V@m?f^u9$CaqC|VGZ70%R|Klsy3tYf_Xo|#qIqrf81)hp1%(kj?tC1+ z9e$ebKl2Cq{;1b~@^^kS-po(q_B169MBhFS>gzk(WBbeZ|GIhF+W_oew(egvk2jxv zZst$C;OW=@;W$hh(aqq0-|AVG{q<|WzDg|Q>~1NRs#KYwfK{p**u)e>z6QQ+ZzpwD znRdS~v_&Q;rgV!URqc6s)HnL-F7t zC56Q-Y9XcUxcJQw{$nn6m9;l}>ZFf|o0D1#@rbG8yTDYMa^qblN>X?Nvt-=Lb`2Mu&G53yvJJXu zA8?UGrPqj$sP~*I8pa@O0VdeQi%3`+(ZJ)yBr+W{j?Q8!3R6?M#N&}}zUo!OCR%<8 zS(6EfwsmNFRZS#{IDsZIGV7EtQzf2Gk=~3l627&evil$>xcFj_PSBoK;$<{gvByed zW2UU^D5)%QV3F*?=51PRv5DgT&XuyNE87ntB4$MbjWt%o#njWm2DU-02{746Lkcw- z#Yov^EELW>*)r_E6@rwGP_yAccF@^gZwUV3ZDTZot>pdCSl5-@Hh3f(cJBA@%{C%w zg4y1t%{UI-3{`4BA*`FY6sb}z-T-X+sVY%)Qqr#%Gy~g&1V=(j^u~+;ktBOh7l?Y* zMZ`rd9q^E`rD#mLt}juDyRoef2aHnI89lRqZr(u$2TvuJ1!|?SX}VnM%WaHE=xNJV z(o3h}l%u&2PS%LB6#2!)r4Tc$SK;susVX8)UJfJR#>{buAyeE=2GdS^(pGSe0xCI6 z*c4L9VydOmqk2WK@>ttgkxD}&yeWe6)Qm`LM_7BL;g#G1^ikBYD_SBzknX#^AV7VU zKStDvHb)G|TOyW9#2T3cWRp&vdh&;{ep?}{Zd*#|mHY+~4PzJ}cAuuCf_mtMup@v& zUpa|3443$&z^ym)+R|cBg{?&CYO}dr$7((zXzwYGEd`&?+&q7-R;WsRbyRFmCOd}{|jVyetK5x-D$a$)k;MN~yDuG+qlKvIpt9n~0B9HI)j zxp=vpP>K|Ur@)pqi)_GQ?1P}eC~we<7Kdneg)tyG&_)PyvNq24Mg0-cCMrXLUMBvc zhO$sWJjXS0`&jtbwy>#NEi7to7W$ye)V$pcMK!>ZJu6GWmC4l*u@RibwOX(s+fs@z zAB)67xmMWkE+W^4@F-pEK5-Z-n@5s2au+Q?fywP8S_Dq7*}n#vOryHDBS03UAk{$5 zOkXPiN^3zb5Ro3HD{}wn2A`XG>p-ybl5ITvH%mxy&_CZfYvAyl-HY0pXXSa@f zvM9lPAod*kF4I2og<`%@0LZ-9Q$qxj7pZcGn$dOMhmI((P~{yN$#EXm#&NUwB+G zbrVrfCmbfV67*($8QI;mBH)L+S7J6Nl$9O2T}D^q2c;UBDIeTN<%6kJx>Z#qH<;$c zcbLAYgzlpxwd^0_3ZvK+iCi|-aS%4G&3XruYoW9h{z|Su-yvvU_S%kD zf}-nh#1CMev=WTSjay?!Na#F%!bS&gXTZ}^4irTfGT7MtCZub`?7cl0o(pxWID+c# zLHXSbR-at4E@1IM4FxElQH6}mw(!<0NjZ^DtDt~z__S*9rc#GaD=aaIR4L0D=t^z% ziJ-MBFuhr;-4cb{Z2Uw601i@Y`%IBErApO>gcPEc(s|evt%@7u^K89UnS`pl8-hSq z;4!O*y2lPa5t^47b$~C$&OA!kaAiv3(7DjZvS2M93;tuKpOZoo!96ID5Zw~MImMOM zWJNsRRTc+kReYa!^I5Uq()MkLSy$&}b)`fNR5Sb~?d-8LfYK5{@D$+QZOq{+AeLyP zKuX?IDN-_YI?BEhm=xL^WIAgoC##PmQckn!y+)9qmUUSYF}<0Sy3b_ImLRGsvgT($ z6>aFV3eOTOspJaFt_e+CFQh38htO^2Z#?(A#*g;|Ll%lNI3ejB^!m&fU5d_j8-;w0S))l0k1>FW?)7T* z^;Yb&-Ngy57u%O7^=n<~TKww^L6jXKd%`T9z=i(G`|+95_j*2j_&V?I>?W)IxO)`4 z@vu+a#V1tp3EO%C2fz93^ZV=FY@a?)%Xd!UD*)tQ=l$&qs!#yr^NVli?d4%N+)T^t z-jCbk{(~#;56jD>pRMQnYmp(J9_9rQygb&2NXuv1Twh8Hz|_X??FY2N-%aDrhUv@U zb~{WvyVvKN!CvHxKU$Y|?cY`GfGWvM!qv(4*ndOVxcX9C#v93-nJT^Om)LCwz`*(Y9T zN4V;byYT~(XdAf?iF((^ja|V0V>7*7IF%Dr_PgD@7W4Ch6MZwjJ*-|0+aEtf{n~S$ z5WioiFUI2hd2_1j=L?z1*gpu-Ex7bE+;=mqzMl{C_GaPt9amqx|9|dJ4`pNW?Yuoa z47;sna`nR2Yv2FlMn)n1YQOqoJpQ!$cDS7n4xoKO@%~`*d{})s?(XehY(zJrDW2?~ zlNuL%$?X@2@O1w$?+(I4-;d+jyg8QoVQ|J~eRntMU;Ne&chhFx&kwc$_JV$2PqyG^ zvGWeA!_$M4E}yRf+sn3x)E6*{6x<1=ht+m8Gjly3cXxuDpW(6{VV@A)w*GI%wb+bx z+ud{`=N@Ez9hAQoQu#1$7V|5z;@fd6UgqIo`$x|>{z^_?6|$+PJ4zjyEs7X;UIkYgADW(RAYef_jO#7%MErNmaYf>VxjnOV^p2%G9=) zA*2e24=EFmb!m$N$Vm=V1hjWhyia}XO_yWWmsF+Xa9|8e5eP7%w6*n1Lt;*K2cb;c z!&A8%T6u3^{)5iq6#{LDH8SfY^i+ebkcbGzN=g*ac50tV_YDbO`YMyfyezMJG0655 z--+|j!eO{cuY4$AK*aK30RSaj>kQlH@k*I7SoxL>!bV|3guO+Ju#G}xoea{RVlulD zRUTx>x4uMxoziFl zwU@-+r3M7b^mJ7&!sC`-aAG>v#fE}(MWtBKVUrYs+Bb|Pu2jhZRD(`#3&>%u1Qyg* z8M`aVl1l0?6Z%d?wMJ}-;0QRS19Z?h+8qmrb`~P8pe=#a($A1q6i%2gtD26Ly?U<= zz?j57RHURN;>?UxCYksu_8ET57k$T|5kaC$YJInZ${rY|UCqP+1&bRMgt+sg$ky+Y zm11=?nUlUJ75Bx~&A`%I}b7Q zV}sZcDpBRkmbfP60oi2H6x!rg8LNYAV;35P!IxsBMzEFmRk8e9N-P;mcToy=1RD#| z*?_}Gl*MJ1o7XSO%Fb6ftyC?@D$oA7!i_=Up>-JsFhA;#hf`?)66^N($sb?p8|e;tf~x7mMSQs z5&~PTSrQF75w!+^i(pF;?@=AZTL{<$HT89r-B+Ho$SMeFt*g8Mr)Q@ou8dCH-!Hay z6cZ?=sihl(X16V%-N%Mcz%<%7P9TD1lByNZn2wM-#EdFJ&!tW$5=dygmkK2c{IT#R zg*qfrvC>X3X7F&?4}>SQIo2TA-b!s`Xsyi=f@V^=PFOiBRU<(HC-t$S_O~tHDr2iJ z5_2FSM}>6lNVhQ6FED)}kC^xx+t6e3BIxxp5^G;{t?1||P>?G{UX}&QP3E<@P1X`F z$YU#dw_98RR8I!|MNOL}=?7P??gS&>Sg=6epUa^G*RI~Z!NRibk-&U1D*u7^S4cF5 zpfZXR1SO!pzGtgF+3S{Sv39b#Y7U%8^0DX-f=FgG?`aGz{v;4b6?L=&<3Xne z`^+wdpcDd~Y!+&?4VaA10}67`MLR&4G&^nuivV9OScr)|`9jiSV~ZL5uFN`dme^Nu z2>5G_RH!oVvb&0nHzr|i-W-so#dzK3N&X`3^tNpgJ<~b)JqF)>B)&T}$`wd6CTfL9 zFmZWP7R^%rrnPtqX;KBStB5wyW=pJPu!_V9K#@fgUAr4hrj`*VF*~`kl)Vy=x}s|} zqWPfavql?^I4;#v8Q?&SqWD5~16!@1;^I?dD*eRlU)iBZwe-PZFM5WEqA>fqMHaAx z#kr4E8#aM4XYFo;ZL#r1;`b25>`&*UOd!x6_u^=PE~KXKb5K#5K_~De%jguw@C)+` z&CjBRrEW4@*K&)oZA+05;yZ-P%^D6<#N0H3wm@{K{wRvL8Yy%k;6_a($l@FPk9@F~ zneub8*=iD})7Z|dimYHGMXfAiE>e-BCYlC|m0QWLk<(Zc?Mzn*&GzxZ-du@4#=-{G$ zw`Lu&C6tS|jm6onTA~?*Htk)hj~p}! zJV6mu;v$ipq`DFY7xEZNJ5!b~sMCw`t`Y~J-fat}W7eacoT|#JBe_$oqZPnsl^D^p zSZJ}OCHBVJ2_D;){K=-Y%?_mo3%+epAx5@*{DE)y;mTJF>Nc_ zZoqrm28}I>6N!>O>kKJUKTd;)Jc04CI2+WFm>r`jq?Rld@cM}Bw!lfLy}g|HK5QgQ zYT+?wp6r9Yg{pG!xOON;a`nVI7OR)y5e(bt)9O|riVAE`gKQP!3e zgUvt$vO~3P-I(>!xDgbMF|9eNAkcb9)udV|;QpL57P9==hTLJRP0S^|bF+L?|v0&4A=*3IH=2?Fr zGPWY;p-M|$*bZ2DL4f=Sn?d|Ywz?rfDTTHca2KUS2cS7Z_^Rf=kHz=@58$-#N0FTR zVdz9&49AIdO#E939RpB&5B;dfp%G!}WasFdn7^Qr4|*rnhhH+V;H5 ztKJRQQz9jOMp53_+b;OMoq&eB$;M_k-A-FaE57q_I5>an8G-0e2i<OVc&GbXs~8(USQc#FTB9);6h zpvbT9Yz7Y6F>i+TZk~R+S|(+gz12UDl-yC1&;PtTEX+$=* zg;#Ip(c@-1xd^C%zYhn15R+k)I4o(X(EwJ0{D`T(w0 z-`cp%k9y$+c)d>))cWn+*(9ELzE6{>RtOP6@7>1OwEWZR&1Zjh!tL`3ODzKDk7z@9 zA`8DCeiU-p{9;d@WR_v>Bckf#&!Jl`UtzU=Z)fty5 zD=coX_yy>|?8HsRIoDF@Yl!|_vglmUzmg1P?L-FkFthIcbto!WO76gCNTzZ z9z~EteuueG5yfc442#?tk~$6?{qz!@p|q;PTL2q~;|!r$X7h_OB1eOHp*3pR2}fI@ zh<95F_wvzC>MLR-GsHG{G$4i%1nwO1>{P@kQ$lSiV%isBaiN=InL$}5l?B| zWPVawr)rnSu3Jg}Ay`pG=`304zYtv%wyk@+H7IX2sx}7bMic!>ONnz~ez58;5^Tn8 zwDvcoAgU!0kFj!Pk$n&4zAA>Ew8*q~Ym$_cVg+(h3qxJd#*ze3i!|RB)>kFC$Exp? zh@Yw?9*GFF;6&pTMOv6a?T@9@kWn2}0c@r^R(Nr{Bp#khu~&scf~h$jmR#(`M2!TS zVyWhWMQl_q&+gx;nGnjOO_b`%|4ZJxEJ<=?XPU2K(jpuH(h}vvTsC}fxinY}2Ag?KsL@IrYO|qn<%6rY07A9{8+iYEt()Q7{osODj zqo?LES0>R{2JFs37apAY+o+iHK{m zu`MlLI}9W%Q6TyRu|@=NLnIM900=`GdCf6va4$wTiy2NgQF!A`h_N zV$@5LP;3-t2MN~4asky&S)2+0vZp$mh85d7&`)&JByxAg*Vx{Lf=eqR))B*2+fQmh z0C!xb7u*&z{F2FrUx>)50Ip_#yoWxO{EZjA$j*!U@)meH^?ifi|aTniw_8 zkQ6ceiruqZZsuk*Me#aUbb=T}ApBF0N<%;CZEQyrEU?(2D*~|E!=}1m?(#!t)ZmgE zrzS5{N35d?3si|P>tiF2-}Dv*kvG+gp#(!l`B~T!t9nO4keEXkEl1SEF$c52ulsXJ zy1W7Bvz1%~H5xQhy-!4*WxkvRb*L;ZsYUFQ3FczL$_~++oyhiDoJ+ZtD3lqoKAXR0 zt_v~tjCG0b&iRN|Mi$xf%=`s%^voR>-8eMtDzJcHWR#2#Je9HwP0#nRXua$n@))}p zqd5Tt7FDI*FId!2>)g>9 zd!%HxF&9`IY??h5U_UG@7Wj|bSq1a^c!PFVwnFv#7@3>bWFaMKCnVRmhF_#s6s}-7 z#I%OF)S-6lEcmNZ;f20^XA-5&qZcV~W_e{dkU;luqNH@-{2Rn*M*fC5_dNwYU8ib4 zGIlme<3fRornlHXT6to-9g)&pDjw84->cqFg0?~%Ac2L<83y1svjZAOQKL5q0}v>N zfCHT{?j-W1FjyEZ;sG%WQ8LEW-eA)-1-_=vIZJ9_7x~-3@_FWT5ZQT5>L3TBEjlyI zI-5f|#KK5u6opMgbec^p^YjniaZkbKAbmiBPKCY~yFaWtIg|yu-@_jBh>C1qUMWg6 zB6+TKL@3KTSU`fv;YNpV(H3)=Z{y4*F!mzT#Lih+bn-2Fl@CZ;rB?<3k}{oSS14*$ z97v2NqmwiuTdA$B61=LPD3T|Za(fN)UI{`J2PMPEbsPk$eS!K^lojQg_r?`++(m^> z>M;V+k<}FPn_>@(%}2r&HHz4=b5@s%J(0c+!mQE5ny1@C)v?o7FSel%hzbNrVSVmKObc~U*h~7&pnM}_rPK>hBy6&= zYuVd03)mIOz&aD_#v&TchfkBRTqxxZ3$P%cDr#4DxtbxRfc#PYm4#F+DQ_H0&AjFdFhqw3psj$$o$kB456s%@?*h!=9{3g2gahc2)JNp2A5~!OSw!J zJeD2QP01LTH-Q;TO7hyKX}dzJFP~#g2@uLYc2DYExt>D|`woam{j<;iayak*Phf1X zMC`iU=6?FaZeOAp&*ZH0dS4yxc5nB)-MwB`fI3X+2?r!(f!`(am=g$r!6spjk=ezal{jU#q zLR)^fwtubW>S4dTIj!b=o!9HVy~2YCMz?|)KRjMbh{VYWSPysh#}D({&B2kV`}OrnPhQ5&diOI(JXv^=oezQKlyLbk*{l(YmEBnJArwm1X zHJyY|uYR7cr~S=U_1)=y79RE4!#KU`>TW#?E1lt}4g$`L@cF2nVdT&8ykDJe-~V}Q z3-fq8A1|uyPGbO2K(D`|pNl{DW`0<&9M7uX9*(xnj@7~5P6+BBch~d&Sp9CdK5Xad z^zm

AZV=+Elv2X`%Xkn0F5gs{Vf3|MGaT>eCFV&FkRXxw@X#2U}Mn-Tmb5{eL?O zemhrh)|<_lFMB1kv9`%uug+U?zq3_s*24bou)xy&bw9h%8d%vizSzCd+kg0=+x6|; z(_1|=D-Q5IJi?OyZd(2EG#@VicHZvS)wePVwub#>@<)rExcp)-yRx-4Vyjrtb{i!( zcV}$;_8EJxzVsFTF}bquysd5fqgjU!d5ayE{gre z-UMIXz5jKu2|myF?;Q(oAAEkZ+t?zi{y~F#JlbwtD5}5MZMV)h{rh<*bL>3E^GTf5 ze!I)xPuFHVH`O=S^X4Ga?g;HS(|)^NXsd1UZ4YMcYy_vpdcB%&)|3A6TQI@Bg;s@H zRE`sryu=iDuO3-)sG7PIHpos&jZ8C1N=`((??h@?Y_hnnBP79K?k9571XW=mY!A{Z zB_#rpU5&)}If%T!M$!yvhoQuKFG+fEmRm(T;A*Ls9| zI*Np~B}p~AcfcZ>Im>-Vg#wFAm7OHGg!0=^!O#niSnN@fXrQ(+(J2(^;+#2aF<+p7 zITjIfj-{Krl%w}`qWmYMgXFQ6jnO{vT8kvU)HSida{Buz!;JdsD!LX(hP(~C#Ya&!{g?_gi|G7kaPc54GR21r+rV)6hOorU+I$3mM@ zgyn9?sb`@)urIt(Dv&A#W>or~U^>dh^<=bbt@?(WdPl)-==BxwGVrDm;R4Y+2PqU0 zGAv4o7y1c=+ZqeL9k)fQY!gwb=8HA4#GhK|y5%B9myj$_>5@bQ@2ZM+#KaI?xek%R zqO1d3uL5s`H#7?w+CuX&ua*=_^`2aIXltxT^hrA2xV2l=+7NSYryQB3azt*+gMUK%&ZY{7F2HTFfPQMqF#Qu*>?1kCmP70}Ax? zf+G@sGTGK?kww|IwJ5|8j4A9h)(llLfP9hbC1M_MOj3=4;Zi=C>EheIMn%0SWl~bR zA4h2#(~`Gs7^uG_*hr>GG3Z%GALv=4nW`;5&!wZIlcM@us@#8gu~So!Fd)_bc{l-kdd zSf3%p7)AA6kns504Qk4R*%0Lnshp}SqA*#0>`J@ zwsT63^=wE{6HpifH3C4upqc}6f{2Zu2%%!Y^tzZrM)ug1cSqd(C_EV@-p&83iT**V zk|jLLkDb^%ohBWiaqP)nikDN0kg$FfASV=1Pl|Zq$sF3=2bdFaW1>K^fXM-Q&=l3H z#|2L-k#f*RiR#TLfbzat#3%&6NVZK2N^|!`l6slpxso`L;G7;apD`JKJ4uSJ$2#MX z$6|43Cr}M`5Li3o7o8VMfCRG2L9sY43W;gd#Q~RN!sH+cSV;L|6nlyHi=pyrN`&ob zwk{S?WUe8P=A+@36auoL4s-JZb@(6~Wh(-6vUr0HGPRywrr`w+p!$fmaluB|@yOn4wTJsxx=dNOfn&_al}v zDEh$&x3O(H6u)tDzNnT$#HHHCAEDZ5v)dJ*U!M|-6p<}5Mn$+-8kQ#-Ao5gKJjOD; zU^Cd3*$VDQxbbGJC7Du=ygcnfuOLSU!smd`HwvIq<|XZbh_)s$Z6;A-a;;)^EXj6? z@g4Pp%nt<=Mo?Qq(Gst*8i4!P&5C(T*idLO`bgwR;+QHB>;40&tQHz!OH!jzy__~)Sf6PxsM0s@KFJ#KJ6NL)kwsj(L;eX&n`pF9DM2t7z+Uc_jpBmAP=z9Y0IfRGeD3uwYpG6b}Jt8D}d(HyipX0|to+{OMEX;^VAEU`7o;~kz z0yL_*=CX6pt!_@863EO}D{6UcX-PfOFqktC3rf4%iKgR#pr=OZ6j-Ec-0QKeSUzx5 z0Kt5>shC1RuboB#G&6&m+({`yOq5*@PNnN&A_sp^{~DEEhLmVR1{c@DhRNV6M6?SO zb~3PQlmsV=y2V7vsx+pt;NZ#OPh*EYDgej}rGkZ+9Xs-X<+cbDTUznXo4a6m(^ykl zMm?Sbw#fB$fw{~Hp4KIp;J}rz7%UQ7=n2&>2GIb+G0`Z3P0*d;4Kt*ZWu|8+SVDYg zl|rIqW2>Av{6c)Y5%yUlhdYvvUe`GVGE7pG6(!3M)e}iX3xbW}F(C>Odt_v-vG}y( zBDQ%t=(u!>Zc46>_DXJsok!T-G>F=^z*FbdIH;2yZe&qMPnw!i06;S!Y85*dX!F|5 zDQB(Fozx@8A;|M3<7?+CwZEvpsGy+naa5s`dg?l{{1ekyl(Z^&f9;@3D|$e}a8h!_ zT<(?_Gg2!uYfPaPz}q20<{^sEj68}_U9Y6X*ebDzKnVFq zWXYRWEKx96LM*ckkewotDlV;(t<-kfs9X&0c#sqZHE!EV?dZxoXm0uoEaD$b9tUotO=^7a6}Gs5P;%cXs&N5WrgwjZ`Gy zIFovv?XLeZnDBquW(1tTW1_uXZFYybI-IUg`|C`xdnPd5o?(#N`R(ChdT{>G`{{Q2 z$MtrB%|4v2H|vFs^BLapTL<6X2%b7uU$1Yc{m%ZmzJCAfe#%6=_W5_a)0=ryeSa-t z*y%W*_WtpglK^p*NJgjk|NHj+ulDIweJOHL|31S!=WX@rdYj2fFTX#{+t2jnp?d$% ztGnId41s<%9aneNr{B$|^=9+#@^IQ;I>^`l_{aCZ9_H!vr|N&Het!S!=KZg$-M#RZ z^XVu&;@A6WD|qeZllTAp$J6>@u0H)jsK49oeEEf4%)Z^7_Q%hB6u$lB``546tF;3t z57kc(^XfRQHuK?Xxy~nt>iBk-0k;q0=w08gKOWfgnB^-z4Vz{}C`5<5&JXK(m0_Nb zB*B8b`aB$*t#-Y=IUSDscURTtx3hS2^CMjTAi(4-RQTgF?KUE6&iLzRG^%HS`1xxA zdDq*MGav8lVKZy8p1qoMi?v?#^RIt!T<6+3a96v{W@qE(znQMD_wySk4c7Wu3zeMkHocdQ%Oy{wznrUuiNH;)fsZ?nzBvrjMi?rG$z->n}uyL%f3TOcpr z?bUiK-fBk#f4$q!>)TAz`_*Z0e`=HV`RmuydcWY`?ZbjaIL?K7u7$ci|V_d?VjKL_;*!k@&@+ZEP(ocGi&Va)#t~{b{Ewb zU%#q;{`))_zdvm@YhU?!8V<+B#GJXd*Lf&ygPa!d{=)HmRsA^Ktap#E{aoZR=WlnL_09AyudCNGN^k5ozZEqsqFr+lFdZWWYt*(ePj)DBrAtOc2n5o|Y?_3f zm#s^qBHLmkkr_ya3uy+PQ*WM5DyRr^+|il^f~1;xZ4EVP+2hs)dMH0E*6j!L=3by} zZR<#MnY}1l2B3s9zesFGSZ`Mg6Q&Yl6mplj79~iDEIi{_C@|$p@hHu2D%48WvT%Rf zEA=3EfmP22mHe5$i}4I1#Vjzz?oNrwgJd|R9Y;0a(WM_zx2|Qf5Y++&354MqgtbCG zzCpzXRQT$I+91HK#pbByH+0IZ!IVhNo=A9-EfsvK#_0|ytX1=4!nX9m;tTNagFS32 zqV$ql8la}%NFWbp zT@dS1T(fo%VMF4`}(_)gJgd7%W~ zV+u{&=)~>iYGq2w!~2W>o+xjFYwsfRNYIlOx*IwXD?q}rZBs-PdpEX;x^bNZ2%#r~ z&3izeme3_4YV1URhpfyJX^SK^FzrjW!?yW(AA^pV`*#IhNEWdK`EhxQrD7+D{`l` zoE!louy7%&s{sxd?Je}!g}p!(MLUSGNFCH_R@mO09w_O4 zv;R4$pNs$=A&oUs*<1M7mCVW6LlR^Ie3a!)P1A>p&D{6_THYG?Ih@0U&`brd}wk%Wn~ z8?2;vbx`hWuoFP?FYxN-n^Ni3o+yr3O4P)*R9_B4jF4J;P`(Q7U1*yECwM;KYs$YU zCsZ&I>nv?0G(>@&l$pSEv=%{i-~tM{uihU#Fk3wTTxps#d?f>hgr&m1b{*4C+n!EE zi0WUU*m5&E?ErSdisTJL{iLImoZL1tL49KmK`B3enL`3$w6J&AW(1?Ib`+U4)*@4) z)RPCmB=$=866>Lemd(^48CtNRr<{qsx4cg3KQTY5A-+~+!36~FZ#EsOQGp{M zAAypD0{z&{>A9o`*uuuOFmWh2dg=_JX`rb{jLq;!(adWL3%v<`s$!iENA6{5+>M3UM&8PyQ2NOxTy4|{!Z#z9iY~^yX9ut&gE*>@z1z%pKvEsw zw2|`ecH$*Fa!}H-dns?$7EY|66P;)%!B1CefY~+F^oJv&ED>#|*oIgD^6DjWEg~DY zR-K@m6mj(Sf|#Xm8fWpRluRw98ryzul{L-FU1k8Qu3IxbGX)qvJK*%jmWe0F0x0qH}GrZLOHkwOGl4PCw zpfE#>wNiT`vo{z}*J;FrUuZ*9f;sZ}7soQP@|7Y85e-SSb1oHGoVoO^XMUuP`u8Gm*-?)LWrhA#j8 z_!IHjjy5I!>Gk^7Nr%sPv*%#9i;U~MUvJjOY5z`8!RcnMj?*u??89bS&DH#7wr}3e z(_UPiarJ{=Q0%8u_2q86+U;-VtLmHM zf@2oKxq7{M_b`c%_{~DVn{QD)kq0ke&mX4aes}Wsy_p};htv5T#BY0ktwmUuJBy9P2r?uT!@YOr}uP@hjq5G+tPSt8NtuwFf zN!R*eZ?~T{ZJN~mNpJS`dHvmdGM$dQ`|X_P;C$ah^@nMHv)(SO$6rqS?c{$xpE1hM z0Mi*L{cI$kkjyvJQHx|+{c@%~ezm^2u~qWaF=U_NykD%ZH*1@u_kXt6 zenfFTTUphoUu?hr?2I^m1h;O^7kUn*zF%0e?-vO4w0-}-?u3nBACL2X?`U)Xo$bFL z*EW=!^?Z8z=-b`t%}y8k{z2&dr!Sm*c7K?KFI_%-hDiSK6~5l>xAPMT^DCP`5g!X4 zyx}Jvq=&X0Ir-w7_Q%8DEZg{l8)h=-b>6CGer#1gZnJCKjW@nw^rXU) zPnq)E!RhlV+pg^y6mGxLV4n8#-#ik6fA|u2YneE$#ARK+IdAv#Pz$7MulVix4KsA! zQQePd{qtp3Vy>PKwg>Iz>VR0U=DgOtr(wSQ{k)yutl$6H-v4pT7Y1~Pn4cMvuhpV) z%xwdD=i_;l@7Fh%79H2mA7iTa+U3`~-7gD4^!9XE?bi=Sn~e;nzp8!<{CBVu9qX8N zr_LoTH#^=D6TFi397rEx2&LvhcBGS-IU&w}0R^h0PDj0A!jq0g1!O7lh)%NXxpq<* z@`!~p>Pt7oUAguJ5#nSnDQT`WQAiXLH?&YpRF)9im`8!0k&qRnK`Oc+$vt4CGPI;B zDXq0Y@mtV*AUosO%Jqg?fQ3#PEto9xdMP|@&G#~A?&Et5iUchb{OS^LPDz4IK>ea3 zR^j!!!>D#S)GAc@oZnp~cT#*A#3k8NmfRwz)Y3u~cNKAGDRkZ9I=iM{|&s0~RZPS-XJB8-G+!vgluLKS%ImAIoEpg=|=VcYs7 z0&P?w9+d5eoohSVmIRguVgyBXJy;Sn0V1uT8!T*vcej|lAze7tw}yhsI46pdR|+ZI zX=)^`GE?L7S}=(ghI9kWqQrygbBU{rs8Q@dnI2LfB7d~t8+$2YQ>1MDREXn98N$|u zh|46M6y|D@C~Nz=B)3txY#~!yq9C)?@?aKzBNa^I6mWfXWM{XpnB2N`v@pE79ej;i zuPIs3B&yNc@=?{3aDDc1i#(-v8oLr3Oo>2o1mIJ{YG1S^`|&=+7)LamgNNXd!LoM` zMH5X<{M(uUHbiAAuz|g4hA|d&Vfj^hX_i9BEch>0nW8jop`s#QbION^Jt!c_jo8au z%5L;Q&JYWU*QE^RWj+*R!6W835sI)d+kPo?xkk#1o0BATH!XX~=E3o9ra6hv29r?@ z(sBstRp>G1r6LtJEQ|@yhK(LdG!iY2N->mt7i(3KNUs+r2`U3isJw*u z#1{dbSfWZTcxLqX!L|aDCVKH7ljxm!RrpXt8Vg1Yzqe@Uh=^885&61YC;?8(-pm|# zDCHg@s>6=48!7$hirhW!gg*6!P~ft0o1rMCx#yOo?^QN03EfEIWwzOD*1_MARB0$? z#KVg&bRU=H>fFXq`daRos@MaqPG%BY;yM|XmV@;vKyV>E>T4tk`%l|H4pOb8uAXs} zLr1=^8fb`4ca)Y06pe?3EJ(eXgjBE?`$HwKB$Y!RrFu%PedQ0{OP2%8A*PakU@ahpB~Wg^$4)*AEq4+GIw zYt$pPaS1Jt##>B0NK4nNWQ;dg@v;y>%u#&m%Sbw#g`up^W-F%R9+*lQy|!S*@-t1E zJqQ~aa4Bk;KrTccE*wV_+BFtgAvt2q46>6mZ24cGgne)=n<@S>P}U zS5B=@wKp;md|C+<3-ZawbG}wm0Jcz`3eBx7A2uurIv0wB$mMc|^w{-hOCn(gr&E_U z*_5`?u45AzMO_CtKnc&a4ES!$5Wz$?g6AWNka`Xi*VCmDfI}uaQSgn%I@JZyl^+*E z41o1e_bc%i$u<%qLS^HCc>XSFJ0hK)oq7}|=+2=4A7$^P5sm=7wU+f{YB@$I#nlR| z3iuqoL@f2{eFgPG14FlPJElf9HS*ek=Z&O(r&KuX0IJ7^-Bwm~V{-)-%A&ON*dx+Sw zSsY5~7~iCw{R9Wi2DwlI_odQkwGd3hg~%w~)`)?cA|W~V2)Phzb0LylXM|v1q|iO6 zk{CAqLXJ{F%8&yXi}8ydrR?5^n5fayY-Zv}q3as;X_UVh)LKlc)0##s@P{EHkkqW1 zG;_$3w`%DpAI1hgjD*k;uCXg{%}aL4;(U@vkLI%@p>-b|rU5VC;);-#GS9nc;)q$U zw=fsdnL!DBl2eoSB9)!ui{z#mNhAbA39>mV}}HRK?qGEpA4O(-ce@FO)%{_i$Tx$AY}IyK2<;*b~ZE>EE(@-7lqfIoxwngQSv++8&kW zC%dAK$R3V)B_RX0vZ=EMaev9#gdlLR$Wze<^i7SNZ5$g3u!7T|z7uL?R!};CsSCZD z^`M7i6nK(WN>CP=_%#C}k9(o614Jc3Ju2oXF`a)H3kg3zMMrZ;_%IO^58PwPO9e!) zH_=?=L;$iO%~c~2L)(rmFD@~4kY3f$sjx!Fwdk`7 z-X}Li_NW~ZA#_PVa(MG3K|)Hh>$NF~sVoGZij6|8j(imfvL*rjUDm#Eo70z`#qaYz+ajk7q3 zgLfY{&p!Ukk-z`1z@vQ#!+SOT&Zzuv5;$4i_J!r$py zcbj=H9OX9iZi=YRALQ`~pTL5LYCmtz2*rC{B47Kz2dS(+-L6-^Y^Qts)zAC)e?C;d z*Vi9G3qPygPP)_m!)897A0%~^V`lRh3u^ki-Tiv&_`@G`my-?c2ao!CciLCCo9SQ! zBgpSFhS>e==-z|i)6=G!R@2RV{{dn&)2XiR)^DD{M;AciZhyVoZXf6UJo1jFw4pz3 z?MM5=`uOho@GlqmW?M}+H)}^*F38Tu>p7dN(?K5}AMtwccwT>oS2jln`{r7R-7hyb z3=385rNgk-y2$auhFz%D`FQ!w_HbMuPqubG`Fww@=KPP<-TPm6o87J0dViYtHrKYA zUrp*>Ps124!12ud`fOBwxSRI( z(`r5)9rpQzt(|w`y53bcQ}y@u<8}3)pMLcCR~a_?)9P-w+h`fQa`x>HaJY`cp11FR zt$sHjR^o*{z@^R*@Q2<0=vd=3mu=>y-aR;y{GhKZdy$0=T-UZGwOg$--2e4%cf6i9 z8~>B@!#NH2@8`YPovW{}zPx&Tto`Zs+A;6;(|pmNj?>L~*Gvl$`H#~|`1RCWEGtWx z``6XmJDb`ke&#=%^zrFZxgZQqiFHa8+L_Sjt`^~mC7I%7*{GR7#h28!ADZ{_>oBwX!`dWAH>ysW; zcR7#L#Rr4n1G5((+KR@0fKdCNn>%xiP@5Q11L^=M``cKt& z3mfx!7as1`4-3rNFMKvLYoYy*)Am?gDsB@?fl8pxs!TbQ~lv9*qaUFOeqi~?aGA7^< z7WOR$P7MYf(gPU~|EBi_vc072!^cI59MamGV7<8USQiZJS27P(S{82X?H z8MWfXD+S{?hz=TZv-VVp7;c(cuy*nbm021J#@<{NX=3tMJ~c*LAc_DUi}E8Dh3nWS!Zld@+k@X7q}oeyLhIVZz``d&ZF-4LlCH>@)|fX; zJjsLP8VmC5oRP6jQjWP=CT*^Ws!;(Q34^tg<|TS0)%eOhiEiGDU<@lXFTp_Nz!QsN zCoB~)-gQZ-uyXdq&IxGB*7kqVbFIH0Z6P3FqwR%GLTQ#-$tDW=+i^?-#@8uIIg7Fp z7C3!OHC<<(YkPIVEsa5jfzY>6&ES+@wM}cQmjWl7*s+j<%X1iJId-eWgqXutI#KkE3Rg9WgK4c4WU77#k>!H*>xTgw$6ZpoP}j}1 z%9u(zUY99Csv+Bmk(O0oi=h+RB_wpkJ;JVgk4ZLHc%|KA$DrC#umlrFWFNP2ste9K zT}oMvqW9m;_#ogs;%mhXj+{-SZ609Okz9Jo@|2HNHN(K1OJ=M_W!PTBNaAPaMoKD^ z=A>lO&dEP@l7ZvUzJR|N8ZopXFu<`bbV_<#eEF=6c;*P0Dw0m@FY84PjpTdIf=m`D zIHd_;aXM8NNm@g-35MBA+O47E+o|)3;ii!!+Q3i-LHrS2IogIMkXKp~Jgw7Y~qk`;(R2=Gp5z)_lbznicSNoaR z_M>?lNZK*>jpQYe8`XY+&`LFn5ec&@y|z{m04A~v@>Lse;(LL43vu0zSc)2`LJ#IA zG&RVVwvu2TU_vaYuoDR>*V|YZy=1;h)oP0J;)4tzvBF3)frehLQ(LH~x;YzEr=)d4 z>eC91`a&)t-@zuN2pV(Usk11Ej%XFC8Y&rUM{z&I@IpLiBNB*D$~i*|Sc`i>BE}-e zrPXnP@KA+X4Mt)1Od3eS!nF2iFp|NXumNj+LPYfF=Z>vN<;ZpEI;ATpijX=00k$QE z1mUk4>=x@tK{^=(^6NxEf?SYhmr*{c8ym6f5*_-W)+n$+W@rM|ce>V%6V&@uZVcr9 znGNVVR38^Aj=G6#aK{0KSce!;lhGSTNo1fAmaM}qDgYLOe>*XEB3@cl-vf+rGm4!W znedW&7-?htK&m>Z9@x{i z?j=@%Dyf~2?L~`Q_LJ1*Oc@g?zmpSeOT~^dD7cz282W-4JuhN4Q-fQnZai2Jl3oC# zBHG)b=o5Fd)xN+8--=le93E)`jmXHB)PhS!#YV~wEYgn>Z!;^VOA`X29pV8fbYpWq z%BhyX1}keADAaGoa?P3z!%#FNc|_I^T|t_dlhv9mY8+KkS`jZrMU6zVJ3QrOS^z%U zig*}2+DuQ4p_eU{X5dESZeWfJVGk`n004q8(-?zD1|VfoS zU6g!s*l$a_uu{IUqU|{(;}>lN#R0WcR460Zwe}75od-KI%iSK;6GTz3^1Vf)xLz*^ z#7C{=&eO_MC`ublv6%&;x+UTIys zLr)E~E~1L8Ymt0q>>ge`b)?=9g3PJoz z*b;8{Kh+UqCb8sOpeXhWIuoS76e(Y)c&6n0ckfC$Nph~#c3d?3U3&MljTnYTqWZy6s1*lZ%r+(EaUf4+S-`JNmJuzNglE$|*%+r%NE4ttpAT zR79ZK$W@^uL$no?RtYK-524h;LW zF51(5;%$*qSM}&^L6CTKF&_$)ZJtEC1uI@1^K@qD9Nez1R3*{(Y zK!gt>%0g_tTwro^rF+#v+1=X%6KVC;>Ux54x5b{&azrP;!4D$c`Sn8h`>@}=o)3roT8{U%hnP?M4?9QTky}o%4)NC#) zA$Bg7--qV>!|L}osfX(NbgVW4vD)x_G3{6L#@_Lw`eI)H;gJFM+uinNw|z!Y`*gQw z&-!}36@l+EE4D2^#)wv*F67F22=a3*oUmW+Hai>g!)JEKL-lsH5uFY%flVI~vi4?U z^`p=C)0bcCIjT>uZRV;EZup32{Y+!FpXcg7e`S|_TzJ*D^K>i9-TWeF#Oi6k7i;s% z{?}=*1tMBqAL)7Cid*|##+}2B{`&lswa>zEp2X&=`e3U4IlemWcbcK$*+Bc4R)^zs z`^cE=h~wAO{qAIww_d$lZRTp9F~G}1ywy-#R6h&T{+v;J^LBc7&?VQ0yAP1+KdogL z%xCWNM%atpTN`2d+nbMA!oOM=yzN1Mp0`_}d$qQgt?~gF`h1gR%J#d{?cL6nTz;s( zd2Tkof0(xy)tx}SA5xY3BiTc&7JhGsZ0|O@;_s*Zes@@Gh>g_pIA7Xa?Ptd%KjWHq zkiRz(R6lLZ;idwtGn*tHJ zFq@cD5y3@qF&%#*x*^&+NfCkPVaIsr86a1{{}8V4RUi zmsR*g2w!v(W591VLZT9IRg@}3ERxKy6lo|QMGHS$RGth{gl-5{-m7rIvhQYw8Z1{z zBAX=S+oX&vacin67;0}_9HMXtkaaKzy%4zZbtj>A6bNZ-6Jd2k3SC%oZUn|0sg)su zB#}RsXi}&G)dejt!pBRe6R?T`IF~HDnyOBGS{N8AKEOtB5fVdG+}h5??(HgHv zXx;!CEXH)^*pdD%pj!kYOqBf7Yd6?Z-m0RC2^Z-}Ma(I=T3Abs3&ANDY3NloK~{ub z%;=C09^^lvEZU%&dX3YiK53LRweiB<{GlnVY`vhq2iT**ZeXq;N=ns2Qjl{o2AwH@W#%RCmb2{b@1Nl<53`SKzk1>!8xQ4~+*4`m}iP+7A}U&FLQ$l# z?IUINM{|L(Mb*N-SX2c4WN=O0@=EGBqM+A&W7|6jdNkLc&`kDWq=pU)2o!fx5!#8) z$vYj)V~2`k>+%nToE5&WMOHF9l7_laV_B@0hb1uZ!H-L1>WkQ;&{!N?N-w*m2_?1b zVw%jK26uW8$rzFM2O;0Ngl9Ic!==@m9U#gh^?atDSX5D27ywUOaG)%FKr-*y8+RX6_Q1PGtgW zZdbA}66vz-4r(KXY)7viT>v*W-YGyec=P_{Si*e8G4w_B<7?ZtC=z$s!O<7J{dMlC z7J!kKi!j?X#8Nov0T+>KCF^J}Mnz1-^w6c4C?zM540li14V1%#$1-22E{EPtWK=T| z%4^qZl!JJ&RkTV^oK(>RBVkT0HQ9^fxh^m1o91f{E%I-pP6>K9-)YsnSE(i&S^ z^oU z{HPBcQOkXj1PrzE3>j^^|{!|o?st`I@++v zAX@VpT^6#efus$~>{4D%0LmhKo`Mu?oGKT4I^LD>>E*5bEBo|YX*(ih`?vbM-r`+$sNLJYInB?$pjrc7i3 zqyZ}KeI>HW=Sl)-A``feFQu_YfsaWwM4D?wk-xVU!7N-3VbgCR>Z$RyOramY`BS zbw#%31@_1p+?(54)R40K6wQaA6kDT{tN;YK@#wJ)p;xCf6-0Vv-rA;r_W5sM`u(2< z11CtL1tgC=pEJ$ptl=Qnu%)E|Rb&4!QFH{bm2*9)NZo7G(X?QZqU{O%)w@^N=N`&_?WAMYH# zdb_pJc2x29UB1yX^ycFbfBnrD8S44PbogaHR_5ylAD0h4OR0M6w7z=0Cy1%P=b7hK zgvn=s>;K*GJ%f~9`#qk3-`~z}?BCA8JRkSFhuvm!CUbwQY~SwoBeRV0gJ> zr&Um`riaPFz!~`Z!+PHD7d-Fjdfp$`+pFsHWm6n?50@KTZ<~)7*mQqkt5?Lo_FDm# z^R4ZD&z~-j|IJq5+4iEEKD@-|wxHIlY5O6h{bCszUm7R9^z6WOA6Q?7kFZ^Tg+J`p zTcK$6fhOZ&wks}>U>kw2muo*h%j>tnT@kG6Y%Ils|q3Dzt2|cs~;CG?C-w(`svb# z)Aeb8Z6mCKv7gFDJ-^x`#yc;b7q9yL!*RXQn{5yF66@2w{^DW3exvuzciWjwuubW^ zFkIMq{q#=DWd0UxZ|ek@R3#q0+6CT5ttvc(J(3*}<4}1VSvV3JOmIlLjzX)^r9!|% zh{EJhc~zBg==QPKP(L_;27>x?s2xwN8{}pwhfNNJMWB(GER?e=hzV+^gQ|<1yFXDs zHi-LkaWbTqk`zZn$ptZ?nnO%LnO-?ziq}JMX+H3kC7=YU4U53cy(L!6)T9C=O_=#7TmWz zfP=&&Ab1@m3W9`WpcB9=2G}9qiOL(PGuql5DM~sBtN<7ai%gWKpeR}~KkQC5O$?N7 z7cp&Yq0vvt(7wps`c6B6m|8Q2f|=x8>5e2EC4nSD z8mTl)=_IvM^hnjvs!T@o3ffIJEQAKJsbw=G3WXviT4%z)rrNm_umoVy9(Y!%UbSFbCiqmefRlY3j@>0U<+M?dMBzOh8A;~8NNDb6rY_MWU zI-SdY(z*wCXD~a5DPci7Y`uV6BeA-ol9sD)L9aqE5|PUjfUwg+hVoIVCboF#%G%rm zH)f|^QRD+0M}f>Rtt9qVDs3v)2X)&{s$}FFn%z|Sg-nr}*APZ0-d@6>s*PksFur;w zTEIA{bfJ-?3Re)78}*@^`6x&Oa{68;O=6V`^XdZD4+f=8u>&QE^NE~CkuhQ0lLW?z z8cu;k*{|bctnv(m5m861@@2hfr+VA)Ix;4Gv_;Cv0Fe>O3c|J3B{A<0)c8= zsGXL??ZBM6t#}P-xaT7p{Ve`vSd@Fhnz|iyEF-%bIk=EZR|^P_Ca* z&4Ada-6~^AWO}23U36NQV~_9Gyd+s8norTN!9A1;qIUbi4+|*2>O~3x`+QWH$sz}+ zYut&ZLw8V@5qjgXL*mS+oHoLDgL;oq;B096u6X%8i&5K$aGzs`bPl3b^9Zf{iPY#3 zwj%22k#>-s(Progl4UCk`z?hNAlBoq9rVZ)Q`xd^2t6D}Fq3o`BOh^WfR z#eK*H&O1VVlZvxylmajt)MGwINpI>&5IK+b$rEE?Hr!h_H=fE^?I89!M46jURTngv zK8Y4bkHt9V11|K12byOwaS$SD~OA=I!9ANoRHL|?RCxC4{ZIsXsH zu{286b3;n2iX}L3<_;CQoq5Z31IsEl78I83tnPNHdW2mZ!ogE%QYUj$@XXepyBrgc z2?e=o1G$N6m@e_JbtZhNiw*}joa)KrzRupF5Fk$ry=`qgwsgwcYl7_@%y}LFJ#L>% zKcJiv(F`G*P_1|Z74Xza9iVqgY}z`}%JCHqH32=lq~Zx>zFVoKp!Ad!Vh}vu^dNPx zEFm*d*zP~bo*JX z^rvSxc!UyGpTC{<_Wj$n7(CZo=W;!>h_=peD>~7C|EGV+z{tM6YX8cgd%u2oqWH|1 z$9q9EcNrylQML77=|4V(0bW!gTs8jH!Y-O|%bj0%Tdk)3;i~##{fi)|TYYI)zMch~ zyxG~c=H=Dr&AhUQSm_6q_(iuzd)4QEzS_^zalScIq1ykup0Z9p& z+}#TaX_t7t-`!V2^BWh&xtr+>8n_$-4$tNZnKxA%4P>G`?~1X};K+HJQsvRX7d zfyw9j{2qtDc6jOK;bFFK{S6)CSbh5Q@BjY7A*~1JBmPF9T8F%T^{0pZd^lVPe!g0* zC;N-T^w~va4{$H!vR}ytajg+J|Lpy*ho@@@mTC{UJ*{mRz7r<&53~L2=dXVJ?BWr^ z`61TRp2sn(oAtc?EQ2_oJ~+d?SG)WBlK{@oXR12P`!`w*dBtRm>%|#TU!^k))gq9m znbSjr3-gTr?O%VnuRe`+cNPBaU+>qSX;JtCEvqN9;OgeK3s1MFecs&*`1$pEZwu0q zskW;!FY|fbWK8ViQ_6hY?gef?iX?a?2=y6dY=7-5`|bK>Hj8jN*Z^;KE8(CY_k6Y| z%jUKK%kHmTv|robPS@%jurQ;wb+Xy$0UxxUwzopQ-`MM9?76Vx_Wy_BaZH-}*=p|U z&i-rnaL9|!0=BCmk5A|u{quwIG28So??u3UICBA?!Oj2WKjc}k7nt*6IuFBt`41Oo zr0zxa_RfB4WB6u1KTp$-`3d|1%yrGTw;=e#o1Yi_GUqm;_d9J0+xp@HxBc|gzK|E0 zz4!DR>3UWCiRhmPi*f5hkF9nd-KOml)Or<|CgQ}Z-QA`dlN_=TNGZ*NFsc(u6|tvk zuc|d=*wSC6C^aPtOIvZ_B!VS{QUSw#S~cAxZ9{BdP=b?0SmeUH*b<4FPuWk5)$3#q zS<#J}{SdD-@z~wG%ihVT$dh78CUNdS+-<&7AQ)Bb zgz_d|P}xdA-*ingHb~@Z5yPO0C*+P)JEh!U7kl9&v2QsQ;zT(SqkNo0R$EDRp zWPDa%ZONUJOBYE@BISzjQY>Nv|3R!#Nmm?1B4(vTs`L*bE^1Yu4J4DSH3}u`q|`lF zfI&hmESzKUeoYf4kU3L{D>pZev=fBtKuB}+0s)j7dc`t;8JD)nVcAv>fJiU*3236ny$XS<^Co)?vk z6NQ^ylOp#=v<;zOI!D-1c~VSjMN@L#1Z~hdq_T+FYUa1=+c6QATuFej=%&rTFk4A2 z3SvQwi8JbE$qKe%Ungm72ZA=VE)D=DS-io8(6py`B&v+vNuGcg)vC{8|8QGpopk|WAQ&>QI$xM)HF<^v&>OSY!olw3vBb| zI{@~-6KET8bt0p}ikMduKF)~wW2K=ck?&r7Hihqy>$7cJU|RCX30rF4kWf=0@$FW{Ca^$O_+zQMR8Y8Hb}H1B&Zj?aFD*^X!w%vU#!dwZ zRKjRU7J+c0Djy+JN79>+*=!{cjMo~?`(x$et_=-m|A$5_CbYCiiPS>Qs})%Xl-8Qq zHi#x_gUa#%EgRKtQuL2$atHH|;IuLeIGR^OYq773#9qPni@-Fr%NAdM+f%5(*H8y%%aZ0{Te$rj(nE;?JWRs0=o<&NbT8;JTRG z5>r6|lUJ6VVjZy@MDzxn{F3S zO%!q33Xo2$8?l!XExcjlDR#y*t1AfkW5rZWr@qQ_FVLC3RFd%WZ4U|kta_oo?F{xvQs95UG+-7iHN6DabH=MR3dAoMFQ&wd2+W{J>y) z5gw}+{3*f->w*jowd6#WJDT0ZRS(O@7 zME#^rZH2V4qZs0`ORtmmcMqum^^KY%g^E`qJBB1$vMrhlKL3n)C>p=qsA*wSZ>+FE zO{7;5s-+`fN#p%6)aBHOHJbc4M?H`i-bcL#l{s~qi&hyfrj<|3$#$_~6vI_Bs2gV_ zuR6#Qn!Tq;qY=#!wujm}rVcvkA&HG1c3skzB&O4nX28!AMF#}f3by3Ump};`MGha& zZ@9AQ74a+Ovu!QbtjQpcg~W9&ByBMc5PW=8n<5NXPvDL@v*My+1RyWXpB3{fH$0}&d-265!GObiPU zwy3r-;FJVWLej}Jq$Cb#$o&oCd4|ZoAF$g6$cxv<_pP^o_)Qcsvd_{$SH8n&k4^FakP1g`xq3~-%A!_9-YiLw@0lTGa7OnSD zootNMwwa=InMJCF8b-EF!deo<*p|BFeIT1OI{h_9Ix%Pol|NC}59QvJ_-xfRLH>n% z=yWlO0%6-xQX~s=Vo{Uh@F@n0&OS@wuNv-2G_)J-EKfvlu7jUq)<#i$(JbWeZ)`XW=2liN{Ey|7KqeZ+ccW)iM_SJMLzyb_Yht4(W~nqji$X47C@E za{{SO>;#Q8Ln@yU3$dgidNdiGdxr=U?nlrZZLg9Vq1p~z(}1K^qrEn~o*C*vVqWE< zwWXn?GVHUYj39Pn+Zh>{u1gIelvfq)LL|Cw6{*x^49ncXm$VE;@Pp0%_F#e1%66SV zxhJVp#GtX&^DnVv)Z2tXQk*(KFw(`GYQpXcu`s_(^ly!@9x)EDz~dNZvL|Nc+^^0Q6w`(MxBo{^u)$Nw-d zw?E%Su<_mgCL?pjxvT|b0W&O+O7edV1S3$DK%aMeppiteYE+r2l3;JzmA%Y_+ldVqZE!d12RGEp*gx@7Ak3JX8ZScUGi$46X{){X+Lz?vku3Lcw|i^v^xqj|L1~ZYT|QUy&Fv$Ke`|kWgRx!E z$iD3sKIL6r*!H;3ruaO#j`kfpe~9aOH7#J?^HM4X!2doyV)I*v@4j7Vt~*$S&sU!o z+lOoG{21O&a6IpHVcO3e*!fRC(Qr+-3s87}p)pw)#;+ci+U17}?PQnN9(HAO;XKsq{bB;P0yMw9TnXj8Jj{6yzuMUvIs^273qUt?odYr8 zP&Ain98kkez|vTra5<(FA`H$Yi+O~rzzR}taUdo96uJ?~&L99zp^oT|RTD;3gl@%{ zgU*5&9Z4t1oO?=4NA=qi+-?-Ui)ullsDfs^B#Z<`-(of*K!>0-#gV_%u}6#cC}AP# zHsZhOg}S8R)Xbf^frLm(5>tog6+;uz<+g*Uyr@%5F$Z%NjA9=IuQ3d2%7XA-00qRG zHOZ!sr85Re7*lDkNx~4&UTAvhRA9My^lAYpUbJez1uw8^V=U{~KEf{KNVw$`Eiy+R zn9=o0)Y!XFAdv)thMJNzONdcs^Z_Gz*w~A|1*#OWjWwYWBveLh*1~NJ$Sv8A%6ZX# zR!Q{Zrwvz8G^k~dc+L>UE)YeO@H#*s*;{NANf0IpQ9(4bW=v{ibe7HrYmnM@O9;tU zgh&~hAkB~t{QKTPXh2zD=2e!IG7O?rCBe&90xx6&w60n~>dMXDH%S}nx#Vu~0r49s|9q=J)$#WbJJ1BppNg1L_p ziNxbGrGf`KXPcr*dO8Wh~4`9CG7Ye#nnqHzhlFE;N}x zQ@9U{E$9fBsA?8s;$s{WBK<@(*c0iosIy9qxNJ^^$RW-VH6vgSD@hp~3!-+s1*)Fd zn^PeqN*J|h2UzklU}mK;UP!O{OXzGXa3ntJz3|WAZ>SJj5Nf+|62^qM_Ei6G$=W1Q z7Sb2aph=qO>f9=D(b;gdu`8Kv+pE+Bb2eH=^$tSRQR;GNeT=~s5{{FA38ScrknU-e z@C22NLOYJB!R)pqhpDftR=&MU)XblBW(w9tyEWA?QOmoU#!?+h816M!OMJI9b@}Wh5lv>ZCDEA^^5K$eUEEJd)uzw^u$O zGGGlgmo?1*j7VE3MVe6Z(X?05Nq-_5A;DCzk_)Iw(iZU zmax~*3MB=TZ*$)#T9D=fj|3!%(!C^mE{6J+d*3^!(SftUJj52C${|M(qN_tWA-jxy z)uh6L_{eKx!%hjFStMG0v#RDCgSEE^4}rM7d2j`=G}qvytx2t+Ht03%Qn|o&$+w-8 zDUx}B<5Kz}&^;n>MW9ZUP%BwQ>;*wEH$d&C7y88dD8GtG?9J68`zK8)Y|&8aRhM*AgHd0WYeS z_GC6Re*+Rc2T2z|z?s_8{??g8+BPAaRfELc5V0j@UaaZcqzLCl6l#LHqUc2{k#;08 zlWaA1ZpTqe5|22GkWqbH;BThT7gaS8zS_hWUHR_H%gVFcoElE_2x2@SKe^=gP%^C+ zTQeoUx<0y60J%!$C-y{HsT72G-*BF{RpO zpcXngPaWiEC67>=0^cU)P@`hekc3?&e;`KnI-*p2uR6vHT$U}df!ir<2L`qMN?)CB zZ%+7tIZyEmv<0(V4vWSpq7m{GLL7=XAY;iC=&%P9x$D`sVnnvk&LQy-w?y?Qf>D)Y z6(FoOSJ3tfX*64uJhFFO`~2cJLUKc6K~y^cdhITNK|R5p@LM$RqlyodQ;@0aA%QBS z`hd=m-6hBsD<9bWmzGlP?kbe6fc}k{M{`5LNT?T^S)NM_YY;Jr{D$%bW>KlcTT8J$Qax&L zHAGm&t=h||0Z4R?<``fq!~*Ps<+ApSsDe!JgS~YW2Fn%NATp~}_C_Xli)W;oS30{c z#DOs9G=#bUlV|Ip;DAh##!G2Y3fj~q2+gKyDkS!#)&{=mu^?Z|*XLS862o{oEVg~j z_d^O-J7>cHIemqmW6^hz^O6!RB}37V*e%wHtpfX5L-RrkP6@E0yDb|d)h`L>9Jtlf z7K#|4%Zc}5HqqZ$)K^dlouLw7I3LfRMq6}53;BzcH~WZ zMEb2*F_D;+c|A=-H!)Yt;&J4Qa8_CH20Nx@h!U*BM4JVpbH!3OoNzaJ75a>tL#9Dh=dXv&dov{ebP;X+?)DKi7i-t<49QBq#@Nv za}X?QFB*BW`!7{y0+QRuBn#CyDkRVeYKLKmR0gBeDX{k333i04C=QNhnVzvg{VeG! zTMW>mCW;PJP%yJ#rzgX5&|ep&MMX}{l{wl~jFo4ft>`Z#T>*Y+R6p8d7o;fMFX?$-}@ z`rm&%J;D-S?>3v=+x!gE!^3{}r}e!Mi4Rjo!-aIbyA%rUw0Fqjas7I|I`fSBozIX$ zUE%XMJU!}y@>_4WQnSwx#3yj7znT-EZs+1RJ10V2esjjBiez-!RyKa~_8?^PemC7b zVr}0(;)k1yx~>;$&x_`a@3VIiSFFavpW%GVGg9v#?5!V>dITJPoTX_cUf=4ie((%> zD;Tq$|BOIF2z+D=bkZ86OH z06H!6?3Y_$tJ~G)bdv#~U+Omtf$yuymcsVpgU^09Z`aReIDh4o!QY?ut3NIS{pGvW z#_qQa^TOI{j(eUli*+C8%ek0+CFUvHYgs%|Jo``_=Ep~TSRZWR>PKRfzNoIB7@H6C z!?gFYbSCAUV6l%lQyYzkyLSg6eXHvQzM0?R+Wyz`D^6#EXuqtz+IDw5W62*h1oj_! z#nvrE^<^fCw&y#3xI6QhAMWfETTu(vTnK7=xxat^>t=oZ zNq%_m2{_trsG3^a^-RkBNWh(muCGtN{*P6-i25TNCcp59K>4p0;_dbE-ADhaEoYv&Pz|i!k#>-r@&02gTrs_)i0{oc{=Y;o8$Vy=J~L*m8&uPP2{?crvZU$`gVfY((qRJ46*S&%2Vy5Zceag=wV&X&Vhmt;D+luCbgsar`p3|TKb^NuO`>rezt zzbfUAR!u$x_OpxW?Zs+dkJ@Zv`X>a6$TdiBSo-V;SXWn0AkwW?Yy^~8*HQsqqG2c$ zxHPxo*++n`IM&L66^u^UV5ow}u`X~K*=1`~`J>{ZXpFj#bN$U#BSdXoVkP~2F%PUp zn%6Ganui+GDDNA^ep*VshlC6W#zQj=QrW(OnPUdZ>p2Y6*89+jf* z=x4I?$-ziQ`I*E}W`GpQkGa<+nF?DqsIOzBmv0oybaeW5%61f_G&xR|t52dJ zW{Y|%y7p2frREutRRttC6rf;0AkU!gX7WUPac7bgp(|a$8;T_vJ6yZb(+codg9Psj zV4I&nqX^I`U#6DMaD-uqBi&hAUO_-;Y)$W*zEJsazg8F~I3e03 z860@7Mw;0jcu}oVX(Z~XMq1l-a1tb)wd6h~PcA}9wwG8d9N7w(u%}UI0uD>mPFlW% zPCp7IbTaisv^fYXQSgsuOD9Y(VBkb+fDDzbs@g=rE#Q_tSn<3fQi~m;(4vT$NC-;F zL(=+H33n_SmhvtfQcGC*c8HM#Tsy_7$lgDU8Y{5nYEqymv2*Dd3YMgN5eUj)9*m+W z0&%Jtg2KB_Q5=iPB(-j1Ds+rJ`cT5y^{6Z>T`&?97721f)+V(mD6fF@12&X}gW=QF zitCzkY@$6Iuz}C{o=GE1TIopc+u2g$%0Mp^DfP=nCk=qfx1cnFu8V}1B0x4oeoEN> zR>@oJ=+qvG1!ssqt#X)<^>akExp2hbD?x4|AZa>RcA>6sJ2FO;F%gcmMWVRIf^}*@ zQX?+{Vh4?TBpQXmTqwfth9DlW>9Y}#Z-6DFKDII!>bDo|ZP7K9GppiPLqj+^a2}R~1!qlxjjvrsWgJ_CaRv!W zAlrbVE$VMJ4{^jwmFO-p**n4v>_6bT?rh{YxF_vSO(s{vL|A}KvmDGcJ^ zD9}qZG8jbp!Pps=KF0;{48&b>OuLwOi2I zUS`{18x69+(y~Wjnv8PE#hw#|LsxW4jJ`f1Lmz~PYswXLc$d)xBm!(&<>(9oXC;Jq7Iigd?P}6@>f;bC*Z`` zw^Zp1=HQXeSEC6Alyi^|Z>IU#$A39+_x}-iS*Aa2F3wobzWysA1m|b>$}FbB!!01$ z_y2V>U*61@8E{%TPp2dOR=eeIg`}I?8hWc+pSOUseD9Pydp!d>`B{-{(x@x(v<}C#pUA-8>zu=}^6$ zHygY9{VW*ZT;1A7pZfjo-rek{(`LOAS*|`f>^9T>{7g1`fAv}BN3FK=?Ph(uzP6E^ z?rq#0Z~Jy_-}xV3Ri9UXJY}}dGZ5Dv;*&GFaCP*D5uz|N6|Z*ZA)NAy=y@}?_50Jj zy*!-umkT=f`n2Ebhm%d!f9mVY`}Ln3vbqz`tUbWn-OirEUQrOqX9#2e@-S`J8N&FC z;CEZCkB4fWM4FqqXYKz^3t8;(3H0j^km+>S@BjQ}pE072M!u@P*2Al?b%7Avr`4Ko z>hqU@%>LS&`Ea;=*ljkByIgL#aN0US>g7B=M>RhPXa0Cs^D&n}ezV@#8oRXzwJU#h zx_$p=d*m+rg~h3_C|;Kjql6-EY9QI`jN5K-^Kn? zK-c^_y5r-Yok6V&FYcKv_F=F6@n9FsdrD7wW1l%(b(tFnZqN4u=$=P#x4Bs^cu_r^ z?jL+}+tY1)t#9lZH;;dN(EXks*Y@SSUsmh#xS68%Op?3W%#$zCXPmZ=nBAX62!7^* z*5_*t(?T#Uj_&8b^5?h3|M0MRY(TI}?8L_X1pa*n>AmQl0Qg-BkAP>N_uD)fhxzRj zO|F=G^RjcW{q~H9Kfj%Qxz4-$&Dv(e{;!^Ky*h2wt8hOZHSwSR@G8`wT|5#7uW#=} zI{XO9&#S$S|Msu{=l^m0pYGe=2I}q1{|~6|+?w-*LUp2b8(O6EGq0|VaAL(Flx!{e zFYKoBi-n?e${4r;}Zz%AR2>U>~LegoiSpm51+ph3+>&zCJkXciLpxBWw zZnI>D3x&PMLMO+wL?N)Uj(yQ|Sgy6_YA6;Ct|AQ;@or42KVo_(rJ<;qdEg`G33Zi3 zAWWfqQfn3T5!%!?1#{jKeW+TBEr!bEK$p4mZ=v2@+pGJWg5j=j1A-(Z_FL%G))}yf zU9dL1qMIOQHwBO|>%CZ8Dg6>_p`<9RRf{*GCG|{HbnRT`7@pQ*l0@~XPRTP&Zx7Po zBW^qgW|K6OjjatZ+@uu~C595>A+`VnT;slPo5DBF31g|rlLTSvLZRH6i!`k=L*+2q zf+O-J^VM4#6AO_4ukOxf$&Dnt(tAAxc3ox0Obh>sa1ZT@EOuA7)!#IyM{6(>WI}}m zQUJ1895b0|tIcfm5>wJvZ@@RvlgvHWfy^ZRV^8-iW=tc=R8{v_}< zWLK&{mqfN>FPu=jW_Th&E~6(VDRhd$Dj=JutpbWP)!A4pF?U(S95U)bi8nc-SrG7H zL{76HR2s5whny2-am?@zh*J>&t z681ti+~g05z4k?+D{yp;&REeuy@jr`4!C}Iy66sK3k7)u*CD4GJ88aj8RsBbSk9-0 zQBpmG8jhj_$39%uiOlx<-}H!dE}F|sB?hS7|mNAiPTcUzJvxp;L# zrC`CFWE&9Sq0NleF5R!Pjl?t&hG|YW5fc|la}FKqs|rgj83xK#%U(`YoQHm};5Z5-#WOx*!-QCdv3#!&sLE_XvZ!^y4-X@< z>eVD9DREnl!3Dhf6(aT;Sn06}R)(kz;mx_zCzw};uF0tGAk;Ayc^(cc3*tlOJE-%5 zq!?JB6sL?PPfJ*ioA z#CAJ{khC#_E0&{PMiJ2}HW`E{Q4Wgti*zP27`DJAlFw}iN2nbo=AhKYgtbnel!6_$ zQsEBWTl5c7oru9YNnsfeXVoDo7${!-Miyh6$3kHKlA||tqTgvw1Dq^EMUwTiMUtpu zY_>r<$&gO5>79@#Oij+Bm`uhV=rLWYm#L{byQBt?2SvhBQ+2sw52*{lQbGbkU} zi5j#s3Jd#!(32ogmKYKB$R$x}BNRdTnu)-~QfC%EtDRWKn}e0I`kw@?wC{yz*zi2eW?h&8&xkw_4Rq`Ug9Ympn!rLbS)u7J!KIO zV{cBbQdtLIap?QA+lny5PaeIwmLlJ#Tcp6@y%wj4W7f@a875eI)ih$8|F zgu3)>)l@#Zqa-w&6h9$D?a!L))*dph%rc z)1U|eKm`_5XPQE>y9V_B#8)z+_IQ*4IC>&}dUxY(xt16PLd09tf=-1R@g{83vM|zY zJguSFN)m90sSyGL<>=iIaIEJEJDbD_YBmjv7z(L?nm=aZ_>|lesioU0oOo+B1JDfPO2#p0lp45q}4S~t`6A!o|GSE-8u0?GS~fVwK(=>FT z(7}~eGLdi3K@lw>t8BN^oOqf7Re44sze%?yPO2CX6@${vkespLLehTVg-OHa?gXTKW~6Ti+(CJ?DemIw!5OoaNu;<=HF|Qi?T?j2YwgXanW77oI4Ti1 zD8ffleRX0-y0;YJL`c)W#<|q4?(1(c%mVsR!XS(084JJmL4;Wp3sOKEQPhA>LFFvL zQ$j9Cfrk1lLRP~W%&s~$k-J?{=!BxOVoWxtgN~(CGjK4OGZzvbmG*s(nv-qDOa%i; zDNtvT$`x|bASMY;3JYd#6!@I_M`P&A>g~Xg6gTxVr_2yt2@odq8jHHdVOdKKuU04| zIMGJ>j9#VyE0i^qMS+lAiGh$a07C=|sZ{V6`#-he7L_frTSh$SMB-)UM3EIGOfA|> zSZPh7#6tGv7@*lI1PPTQ-?m1JgcG7hM%FLEZ4-Fvz z;bb31_v{If7c1dbK?~!b?9!=;as|xA)t1 zgDl>C`m<+?E5R`Z9(?>wa-Pnc)zxviKdIhd?Y5!>{rG!k+x(k?8VYInZub;RxZ7Oo z0U86Z{mUBxcMsA&8uHx2UnJO9K+v|pXU&+1lqfH^*X^T*|8dDW1y`_;8( z?e+V`SKI6ThhG=pt`^^a_;(x9;`QqIZe>$02g<)2q-O9yTKnz&FRRJ9|Dc!v1FQ-Rj!r)yFBiofD7l(b1AO_N=SJiDh?d&(lz$f3Q2* z_ibhx?06;2W&7Hj_1AaZFa9Rn^&rey$)Sj}I;o0Kl?cHj> z`xtur@aQLObh~5Ye%rh_54bs zUIZb39s$MLUFV0kh2@ap)5U$2Z|(iPKEb$8&$ZYrZ3cu7H{0?>m}~j+G!LgG`$ERy z!@q6y;T+E&Y9?3vtM~rb^5x@9z1Y|?dw=nKd0fBUni;X@`9h6FU;dTcwJ}>LO$axk zGds1!7I8?12N4JoxUIy;n$(hrakd~3kam`f6}sbgXpDy)EY}aun3}m`uMQErbHK z16#o6t72+0`R$PlOx=$Zz9i*D;Ng>mZmDzLMm+Z5Lyv?;>5)KbZ^~oG?ctuJ;9SIo z8_G2Hv^c)J)sPPOEXgYl*pF@-A`lZx61P&q?mIGwe(Wv zPITT+aph8>DclSJLaB?;X~cdnFedUYrAZyC!~iy_>M!NyZ(h5AE zkk?jHeTj|*H9(ZEs@t*^pJ6Z2ww}A>g8%?R6C;3g5V$^LWpj)pd9*d4XsG$D;_oJi zlLVEiaAAfcVFt$*V^u80KvE1D+(3OQ|ZgXiZ4tBzC05L7 z6q_;lxfTy1ilnHHp7%6F!Jni_E+_?bV4z9#64o z1*}taTnnE7_UIi((ML8&jRw3Vb39PKT($qMA)>`^LG*9fohFM;R#V9F+99xprtmt_ zw8#b!cXkjf9TCO{3&JC@DI`IzJCaF1N~+kw5%sKQ5Nh2u0omeO^R`iiV}?xW(l z^4~(~!2>SKcl`eVa_cQPI1! zunb_FF231>zX zC;_lk$$){W>I521>K&fBZ9%}34v6ZphS-u}wv^?ko+6P8_P7^c*|v29pFS7!eX}B zHVT4Wo!XZY0V0oxfXD&>oMEC4!^z;MaW62>2Q|XDH+Ho;-B0=6Z zCRq-Y8l7XLYEYTgNJ2hG1CA21QCpDMtt~zlSen}M=6OO{yC4l0lvs>aeHP%Lj!8!Y zybs$3*vdbtDhf{+<#JHtfa}YWQ)v#Rosy8smVVhtpiZ$cWLiD8naq%*kB~H~ZsMDt zAEQk@iEW5E3}DHVr05D|VM12PhuW9ScTqPIQXPq^A0V|B{8*Sr$e1erEJ%RscpYiP zqFD<_&Jk3qK^J)HYiPU0V;iD^<9AHi>2)vh2l9{Z6&WXE8?Q(qPG}cO8#i zbsknE>&tR9v6gH;M-GUw4gxr#OvCJi9*a(j5Q+V9)_my7*syZhN+ z;$ii`ar;QoD&+F*+HtWBHGJo|=C4;4_J@PM>Ql1*Xh6Q+KVp>L ztZ&y&Y<*{M^39359kJF@6ZH7jM!rA&yFJC$2C-_m z@Qw2d|7d@B|JQ+O$5Pbm38%a{CtW-H;3+MOy(y(-htL=y@D&&$OcX9oLV*&t!?|Q3 z1dxL@1KvbbX_$WU-Xq}750ck}{Di7#bC*_dPt@+f3TI-d!vdR&f+5H%%84UEIEnIh z3E7r!m{dtZY;(>XiHW<2o@c=@gaN^ofuY%2a3V-M3O-Hu zR{NCsf&|F2Xd*)*esp(;{A1BsaKx!DX{1uD>I{d%L9qB-U9t2=5`_CLnn@6rsRk^O zb?ls0ZVG`{A{j)^-%)~HRHd`{2i^86a2Y%{KW+{iv>KQj1s0rY~v^t(*}FJ|2V~Cn6^c$^>hHXRppF4P-(s2kw{vi##BzZ*qMh7AmWe=np3)$N{AyIH$<)kS0M5yuf}W?X804_Z$Y+REf4q zGl3@OaYE(e(ITcm2sYbQ19IL)Z*nKt{3J{d7R=3-QN2c7(qjj(ZRHZ%2&yQknQ^l)@vN`9Tb6g*dYnJr@P*}8?3J8rF zl|950F_%1y)KNW3UVEL%fzSa) ze7vc4GPoCQt}IMPK?#XfBdAOO7s~tw^*VH%{r;P(^+>Lingrg$$RtT!p zU^yajqp(1%87;tXfSz3M6&9~7*r?e_j?qL;y;`nMrHV1gaVNf+flv^6tiAS2n|xa- zT}bOkkR7qmi1@+;XP89R%4iIWrx&19oP0RH<#&6(1pqvuzWhJZQLLiDi)xX?|i2EJZt= z;9yp}YA+k$mcZg^hECa)CSsNmReJ`bW`1Cqx<_dt#8f-w=w|FkZnG54xdkv}>}*hx zlpoB}Gfl3#m27E~BOx3DLJmagYYsBi-9`2fhEQ%-MozO7(j1YpshX{=2;&idf5KB} z7V#_@$>eAVn*B60FRDx3B1^FIQZdEgJk|+W3oI6#=nS@BSlB`>$wi%VSgMZ&w~@|s z@fIL_P5f7M1gpEIQ+W4N)9h_PENvBVa)jMds}e8-JXZ5OmFrbrsEoLq%r%*?h15PjF=lW|4U@&H2Kb}jeSh25RSGW(S#i>nBCU|vSVtWZ&4hh0Qj9UzqHtja1< zf+>xuc224PMDePmWgAv}fo&IJ6qFGtk=-$I{#zj{YFy%S#XkqT5dT{&#coo4rN@6nRc~!wOntH7eCyK3-!-@?Z@TzxVEn>H;3Kg zr|s_DR(zX(_RAN~cdyrPx9|VVb$|2wpM~K(qijEOx#!Eb+tvLqmy6#vI@!C`?ryVk zG-sO+f)cK`SDSnL@ehZq<$m#Z>&>;z_;2?ge!c$i>)yezyE{G5AJ(__TK0AUp%y>< z^R;7F*UL9Ps#iiAFMelpbZ~Ci6ZG=s_5GE@8XqZmPmIBKbq7fbr}+rQJu~~>?RR&( z{TUCbzuG%o`Nix>+H+kle!sQ%I?T_`Jg0fEkM?@Y4^UEj*u&yxwGjq$v$l_}Ru@hi zytrQ9ZFaZI#jc^BSNmt58^Hsq@#P|T9c8yTN<=)}4*%m-VepflWqAjbFIU#j`~y z?Z558-`&^-^wqpt3MAWZU_XAdIvjR;!CCczpvoU#GhWV%+x2FnyB?0VCcADbj0f!{;fUur|tS@8=nBI=NBfT zVF79%_HT%fJJ-P#Uzpznz&dM#k`e*Jd6U2Yb)tLydZ zXZx2c;pyKBdu@wHauasRqa(^+?{`1hb?@)&#>bt%$)mvT%lqSQyYu~Ye;%%5g5TJs z96#-YIL()B!&`gCcVlBcoEGeF z4i8(xUbo)E{s~TbwRmgaQoF&2Uu|mbpa1bs|FRgz#o=yswO($_uwVPj+c%rv7Rklq zA~^$@Z5P@aIYXN7?q3Us|Ky2nM(?j|39SA~=<#UoAQ35;yE}=^1<-6F*a@iKolBAS zGB~!=z@&vbOD&|J22*p1I@Uy;{pN}0PWo7>AhmO&v`4WUU1us$BZUTW2kC<32Af!+)4-zH{Fq5%sULAC?5TZ;Hz|>ATi7cYyt7%cJ zIq4PBaKR!96nL<3Q4ML(XlZfsX8?G%Cg!ezuVp8Tn0&C@CyWsRmXsOBnzdLN2;EuJ zFb530m7TQ+4XW(3TtA9&Rq35bx>Wgqk=mEV`oy}|g0W*dL@ITi##zhXsDlw+qpcx} z1qiGehEg%z=<0n#CrIa!zvF{orxf8I0d*$SX-BT)E_#r9IZRizr~)j3{g0CSFz-2a zQT#=?tda;R9G+Cs_;+M(niE@%T@S|K*v^UZtID1b(r9pXZPWu6Z4BXBB>$+gIDDcV zhx&3_K{FA`Op_ZBFlv%CrAwJT%LH(bVroDV&!omp2%3~qLM=66uL=ZHqND7Ef_zVj z+mcctg9~!gTnUBKDcrUNpHv-%w>Va5y3poPqbFq_!{ltjKx5!q=yU>zsfmcCMO7ra z1`1=9p~8XL-pQyZlLdN368Id&EGdyXhwTatuJ?Xt_Q;1N}`g!L=zZl{{9#}-;CAeZl~{uiohi~^DtEO4sz7$w7# z(sqOzD(V9v%wH8B6Rgvzsy!d9K%RrTvB6PMg^%(uK~x4*R2ehl-jglsUJ1|*M^fiJ zr1{KZ6S;kqi-JdJ6fm@tFLgGv(EEp{EWG%45ksGRlXSPA=OC_euyZQJ!+3?xCfJ4& zqI9s9*y-Cglc8QWQVJF?)!e~#2G`y;Q%Vo#q{AdgrV1&p!eG0g!{GU22mwLGq8ybj zLoV|{Oa++V3$uFKAYPc`q(ovr?L~NU0OPA4GIa8mzSBmb;$gK{@r47JGtQHF{!qbF z!$>A1#i(X8QeUjaY%knGtzM{Dp_8y*(Gsm1>=sZSRnO(rK}hnYUWFM%1{Q||ns&aZ zXK`E+MeA%2k3{WeMClEdtmZs$<#NtS!=h597)y}SBB6Y-Q2)qUTct{v$R?U=Vy1~W z+QiY>A@YaTW{2GfQKjZW&T10Z4wWS&{*45wSuK$rM5rAURX$4pBx3MFNygl>LivTJ zsZhaq615Ccz)rdI<1|y|i;rTLA%iS|5+c>H>5!T$ob%HFEarm~(AAj9n&~D;S{EdQ zQYb=FwVJ9iqY&=QKNM4ieK?LuU9(K~lZjiV+WFB3dM%Bi-X(%O*lO#kHQSyFG%7FB zAR~!IW@eQcP@FonRIB;ht+{VYy9bM}w%1|@QS}e9#M@DPyVntF=RxgNJz8o><`3Hl z#Va#)TyJ`mB-vqbN0Y_0u%175|&!Qz=+hP-Vr}yA#9Qa0!1V0?8*?y+iuSUhYRYuC_qN6 zKI$=Hr-YfgL^V@M8&Lvjlf-1!v@JGnhYu;9Y{2#OHpsZ=7)6Q#mDB9&_G)nR?b z7YXnnq(keP*wbuTj}%iTo!02>*|9WG?`ae}X`r6}?5+Z>5<8Qrt5Nwps%xl!7XUL; zR#!GKu|&1x&>1SBgN}x|#WtVe*|upy&Ny{OWK?e-y@`jC2m&e*&w{Nq>==;}dd5!N zEND@|PefaTgs{SQ0_e#cw662}l)0aoRb>)U2%uiQGY@fPMHZ($^_56O6T)2!1ADcw=HdxK+67AGQgjZ}Trl$@0K9seVM`27 z(@xGt77m*_Yi#FDAgp)i}d%Xs>ZqiQXHK%AQV8y-O-gF%iQrG`EoR=89j!5Cg%&~~vvLXFbkf5*?f zM)Lu?ANYdME`}3ZbvEVEXy4mm0QC#A+|CmNYfBYI2nZ*SU-9iGi>x6*q4u}fH3K*I zMmkp5Z{+mJD9@Y6fu2xJV5Liiw*4#RD~w9i6wry(4qii!64>gerHCnukn3ff)q2~1 z5Ncs%LCHyWxzOfq>QJYWY*cote{@IL6LZLv<+=hG+5Fk=oNd;A3Izov6`+riocXL| zF9k7r480fnB!y0|!Y9jodF196n;rJKx4u(AizrJ;@=D@r2$i5kG53*RGrtxxRqVrOe$&Ipu)sM+YEg8XAN)h{ceA|w12+3zZ1}SbuZlakFUOc3JMi_@O~xs-$wPj zzZbRepEkGWL64u~e06AW%+D4dfsSu>w~h^c`Vu~x{k34LYoUZ2R&sT9v)yfWZ{IJz z_;I&+@BeLY?Dr=)>*@(?wcW^`_rtGG9^v%&i&x95&GP+6A3VTTAOHB}v&G$RV?((T zA?;}(U%YDna#;Mh`_k!wmv0+v`ipN~zBu3h<*QfrAJ6X(qRc%kUOD(ye}3^}|JUDt z|LWyeUw62<>w>7lAdhe)Qf6~?d=k?VC2==2j)8NClsn6?Hmw6!8ZJf%B zuMUUx;pm`g-&6l!>qOi6n-Bkfw>~cKe`#QQUG9soe!TeRN1MmxdHb2o(3fl&?+?e- zt=9JO0d(!Wy}sJ#kMY(GHZSz=-F|sxtHEr-O4#bd{hfg0LVq9hdN&Ooy}Z6%Z`TeC zb_ljTYt9e%79RO{UZv;Ggii-%KY4k--`%bJ%cnUIy8U5(ACcY9Y~LJK%l*~OGp+WY zZMitx@T2|u-@b}5E?&!!-ZTT~->_xWHu1y2?LJp4(G)+<)OcARVC2i~)@<40&hDud z`}6uBn&P%ho{*V8p;mu-?bC$VYdo$t7hju^_y`_8jp5nZ3Vk$T9kTxPg?GFC=K7s% zwe4S9_coV%rzTgw#_?u%|F*RuT;1>Y8m@@a{T-hMVsmcu=LT2&)mM)6zJDOEmM`*G z;*&)LMU^6@)>Pg`vL1_-QMDmS>Y>k<2~d%{5_2mus3JpDqw2>W!J9T`Gj${wgKMnD zo-^#^>)Ck%l!WSiB0!Ghs8a^aoCI`3#Rn;pV8c9@AaDZ(%cEN5P$gVAU@AvV&Ow4Q zr$v42q^3} zP?n%*$w0wzmVhNCaHJ9=u|yj1H03VeHe5D=rB0n%0~T{?g?F5tyMhw>s+3_$U5pwq zRfE{iXsKAhQn3Oc5L4}L(&C&TiWABz717&}M%SdiPAK>(XhJFgDVkD=ZW6O0rop0c z=}dPjD~OO5!8<8I64IOs!9mSz3*t^`VTpG!B4f6PBsn?Bn^3QKQuUCkjbV4eJ08<%LP$!@7!-KiwY)<|TOC^MDQKsPN&ZLHF^DzVdR@O>+tbVyQ)y#&>8 zqpJ5EX|+H2IK@b62KM$uBSl)gk^`sCt8Duqqi-R7WTxs8sE-nYn)L#kXSVNSHZW^n z0Y#rsx&h%oLKsELg^mKjKoZ&u+_g)V4bDv%Y$B;ePcT4wKw-H@Vl9w<-+-7MiH#+a z6&52@pf@5qKhzr$*IPtb^Ek<`Lp^76Y9nP&RS*Q9Mu6^#+zLC`1Pba`mV`$K=&MRm zjtCea@17z=VNyMYs+6{RA0P_$|7Ja6gL>~nj%F*_~ zr(r_8G>2izy)=B=%&Ciz{74hSq-})uhcnU50TE#0ZW69+C~BP z*`hbhGMI*N7f#jY8d@>dZmY@`=dCJ59J*%6AI=99+bbkFsTfovY z2UyvpzD^=KRNqfWjOBCXG<9&^3T8p!y^<{%(F{^y?Rs$iBpz+J1iVrNL=DSQ*~Nx` z^QMY=0zfJ8v}Mu z*jktob)wFFB|v)~E884qm*_OkL!B^OP1TH9r_|L_W3|{~#Js4IG}ulz2^vhOI`I%7 zU{M+!GwK7F`5yr{XwP0G&qOn6zexb#7vuZfOLes5y4uCD8^6RvDGULFMHdywl-h9v`x;7Wc%>nmk?%#?+~KOC{f1LqWE}|dtl}`I401rW z(>beQhI&3Nbn5!)+}WA14K1npgbt+1R|B>U%)<0yRz+Igq#z`lMSZ0qdp`kSA}4hp zlk;tkOH53NoD~cq6N_|;$lKClsGV?>n`ZMR@%HAFMl>7Q0yKb8svorixICJdH9*uT z|1WePuffw?L)WD3B&)lu1=ALOR7TD;K!Aas`(GL$S6NxzH!g? z?I)IM7yU0ZCj&!(T_*vY`B5hg*;=_fW0zU?M;XV`C54-llywL}Or-86%vvb!qGMl9 zU?*(gGp`;vihR_|LmSvEq)g5yAH+)~opb2(TWw8LB{V5voTX<*tuSeHRS_%^OF4%6 zHIo3?#KU6~AA6E&|3EMgh{UA_P{|yryVp(+aCT=2I?`#QUVCW18dRmlehi8A#zYHG zlNAQY+p00D({&iUM_ZvPDwL%-cWMZ34HTDAGk=)OO@nB{oc~y;NIQyFd4`BIi(tKD z0&ANzOC1~Qh)Kv0D2CXcHXBVfNnd)zgk5HDWb3b0J!GTGoJ|&GE(S00Q8=Dm{+vPp zVdBXdwe>(!(2{U3T~AN5_2Z1hGf|U85-&k&6|^J`t^yuW*@YA*%^@m?CUM)9wAO7{YZ~VmHoWAz#%**-|;rM`Pe0GLvZWb?g z0x&*XJYQekERX;3Pyg~_v((j}ulC#J{`$!UAAaK3`0(p$yZGH|rz>ClxVybuU+?by zG8)X&fjnO=@BiK&=E#_-YT2%kr=m7Wezz&w@Yh7iLuIK)t&-t>Y7H^=lD0@9r7~`iGYb9)Gv8jdQ~3+c>^k?tfa@{l2=lt+jtju>0_f=gaL+ z+FuV}Idks56WDq8Zrl0}1Yfp!y7Fu5^H)BBU)}B38_nMI1jxSn#kSjF{j(UGbwAst zYumS1-ZF5s>k2F{DE{A`V79(pA6CoF`tI<^#;sSme7j$@egaL@8`}okYkkeHe)V+n zpIr6TYUS@y|Ni~%*hc-w)tlAc0pj|v7q*5UR^Y4M{r>d#-`?*}Lt4uAI8XR5KK+}; zX1)E%zx3CjXce^19ru2#mPuLyRsIy9b>eXTNff9K@^%)9^a2v@F3uL%bc{uQrl}K{ zWDLiMk`vOgX4!Vh)q=YsghH1x99j#KxkPj{swz%1Qq32w*hgkATovL$1eyz-z?i8H8CS~$bxvqh{3 z6f&kd^fV65vl0joR+S6ClG|f*K6iShr(nuf4{LLd(|`m+j`sRYJVh<(gZGzNEJv03 zF!nWQkHDngOKr~L$creACGac-6j=gL*fDLpcIto?9(+!!c2Wp3_)6&?WL9brHi=Ei zR7nt4Dw`cR?mY3K>jg}giX(IVjFgCIwQzN%YThVGsi^V0V{;i!jE#`;$s&eDvcFn8 z6?mU@0qiM9GKs*4iriH(HzmO&2U9WnQHwrU*D_)LO+}~DiQ~0kX&x{pQrI(gJ<`4n zP;g!Sux9*_DA&yNOyP=JEhex^7FtP)2G@w~bEJ3?!Rpkd7~Ag5fyn5x60!*Gw`jZc zB!K6*dP2fIv%cBxPmD3lNG?(N5j#fHWNW26B;#d?&f&=;2H7aX%;B~ZIqJa(~vZ=7?0>c6snGSx$M^JoB=qI?UdM&ODC<5h@$N{U^kJH1=l&-v(J7Hb-Mw(wK_XXy zdG!i4!=*1fF9=VQMOQ=|yR`uq`&*36VK9lCb)s&Sb?Ej#|r6O=7xfh8W&&01Jec!2LC2O}2LDB*JfW>t} zp;ZaWD}!+~U#{2Q^EsAl6G>?xs7MRvg?$?sUYt3)*SK?6)@HEcc_B)oZhBk7b*zZe z80QKK4}&nO&S76iz4ghLG1P8V>445-Nyn*%&NBgw;MLbqP}dVfM|O5mK@#&Vdb^aI#}> zqy|Hk?7?PDDtdI(%FU;c^+oo|gvX2eYciYuB&xrzU(i>BT9FIYd{n>bbcftM3(|rD z7?lzkp+ji<9#JBJ1}1ILfGH=7XTuyRJ~dyOsxeuT1*q<0PhmI5=vWQ61OpeOd_sMK!-Z|NY1 zG20qJ(X2_0k8s*2_0l1%OuWL>W^D6qdl8K9WWGtphDhOp5@NMPt7+#Oh4MmqqenH0 zKaH%cYJ;gm<@+*e&I6{@14;NV#5^{Ql13A`nG&KU-!`u-i)v z3D~V2lcW2oDmlpx0scr1O6^j5z8=D8?}|)~8Xl(HvE&a9&aoAbDID{>vG=jaoKrX? zeKW*in0ID#iM=4Ud4#BhyVw*5N}0%$Cz&fH87gIE#6d^yVe=cYFR@Cz9U)fY4;Wyh zm;)&7dQ{|AGX$(VQ7vNUjQRI-*AvxVW2n+|fs~DAizc|ntkf`aRP=HV9;(!wk;Psz zHVNCp)%Y&`K3LyVa5=)>fw5EE4qq_Yb|eju>C}enyJUUSNl=-N81d$f9o4q)U^S1x z0cUZmZBx`?8bzr`bnR0%50MhXS^jsY(&zg`k_wc}wU7i=phhLckZW4XACyKP2ez~l ztF9<`q$UxnKdI-x1Dg9A6r_=0_9H|JZDHF79n8I@iyhOA9N%UhX}_BjF9#KVF+1@m zSyb}^p(jh8BjnCv(R%NxXe47v-*@*D=1;l)KEco&?`V%k^PwK{&H?q6GbhwwQOJP; zQ07O5fmOwYn?jCZ^YX&fIYDg(1NRe~6V%mg+D(eoVE`6svD=KrOS7;Uz05M&M#rqM zq&=wV-MoX($P%hO5F3z%(4t5sd%O<8f=;Oc4{(uH%w#U3>&a8+@SsW(d0Rp91B?M5 zMg4)kMNw9bNP%r+U3%ZwW0l+tEFuLyT?wH*WSB}vEAI!TCn5VsRB{{PY>hqsQ=?qH z!K&{7@|P7=45cjKRK>>5^%mi$F_~(sh@xOo#3)oEXFy&GI0M2D2ciQAcII~+pnjI0D zm~yXo>SvOukcqxPXAi4r>id~Ir!2T8Sm&fI1OPxWH`|jCAJ@QgSJ9KjkV+}@Jays{ zEupC1Vu;yo!=;MgfWc`M2I?-6*49Y60@5fz?pa${>O_Zux$_Ne2|<>AhQeT(EU=|b z9Ru`->jxGog->y!{`Yx8?0YCRGo-f!uYLBXk7`_qvX0`#p!)b&C;3REWu}S_l`17E zLcfp~8xfprzOqUbpMFv=gAmA!GFL__baH&Y7j*m)=0!FzB9r)}MCbt3n>gEak%qAy r{Rwrz#1=@TFKV8td7Pg7{Rw{dZ=U`||Mic5^N;@vP + { + "service": "test_service", + "service_settings": { + "model": "my_model", + "api_key": "abc64" + }, + "task_settings": { + } + } + + - do: + inference.put: + task_type: text_embedding + inference_id: dense-inference-id + body: > + { + "service": "text_embedding_test_service", + "service_settings": { + "model": "my_model", + "dimensions": 10, + "api_key": "abc64", + "similarity": "COSINE" + }, + "task_settings": { + } + } + + - do: + indices.create: + index: test-sparse-index + body: + settings: + index.mapping.semantic_text.use_legacy_format: true + mappings: + properties: + body: + type: semantic_text + inference_id: sparse-inference-id + + - do: + indices.create: + index: test-dense-index + body: + settings: + index.mapping.semantic_text.use_legacy_format: true + mappings: + properties: + body: + type: semantic_text + inference_id: dense-inference-id + +--- +"Highlighting using a sparse embedding model": + - do: + index: + index: test-sparse-index + id: doc_1 + body: + body: ["ElasticSearch is an open source, distributed, RESTful, search engine which is built on top of Lucene internally and enjoys all the features it provides.", "You Know, for Search!"] + refresh: true + + - match: { result: created } + + - do: + search: + index: test-sparse-index + body: + query: + semantic: + field: "body" + query: "What is Elasticsearch?" + highlight: + fields: + body: + type: "semantic" + number_of_fragments: 1 + + - match: { hits.total.value: 1 } + - match: { hits.hits.0._id: "doc_1" } + - length: { hits.hits.0.highlight.body: 1 } + - match: { hits.hits.0.highlight.body.0: "ElasticSearch is an open source, distributed, RESTful, search engine which is built on top of Lucene internally and enjoys all the features it provides." } + + - do: + search: + index: test-sparse-index + body: + query: + semantic: + field: "body" + query: "What is Elasticsearch?" + highlight: + fields: + body: + type: "semantic" + number_of_fragments: 2 + + - match: { hits.total.value: 1 } + - match: { hits.hits.0._id: "doc_1" } + - length: { hits.hits.0.highlight.body: 2 } + - match: { hits.hits.0.highlight.body.0: "ElasticSearch is an open source, distributed, RESTful, search engine which is built on top of Lucene internally and enjoys all the features it provides." } + - match: { hits.hits.0.highlight.body.1: "You Know, for Search!" } + + - do: + search: + index: test-sparse-index + body: + query: + semantic: + field: "body" + query: "What is Elasticsearch?" + highlight: + fields: + body: + type: "semantic" + order: "score" + number_of_fragments: 1 + + - match: { hits.total.value: 1 } + - match: { hits.hits.0._id: "doc_1" } + - length: { hits.hits.0.highlight.body: 1 } + - match: { hits.hits.0.highlight.body.0: "ElasticSearch is an open source, distributed, RESTful, search engine which is built on top of Lucene internally and enjoys all the features it provides." } + + - do: + search: + index: test-sparse-index + body: + query: + semantic: + field: "body" + query: "What is Elasticsearch?" + highlight: + fields: + body: + type: "semantic" + order: "score" + number_of_fragments: 2 + + - match: { hits.total.value: 1 } + - match: { hits.hits.0._id: "doc_1" } + - length: { hits.hits.0.highlight.body: 2 } + - match: { hits.hits.0.highlight.body.0: "ElasticSearch is an open source, distributed, RESTful, search engine which is built on top of Lucene internally and enjoys all the features it provides." } + - match: { hits.hits.0.highlight.body.1: "You Know, for Search!" } + +--- +"Highlighting using a dense embedding model": + - do: + index: + index: test-dense-index + id: doc_1 + body: + body: ["ElasticSearch is an open source, distributed, RESTful, search engine which is built on top of Lucene internally and enjoys all the features it provides.", "You Know, for Search!"] + refresh: true + + - match: { result: created } + + - do: + search: + index: test-dense-index + body: + query: + semantic: + field: "body" + query: "What is Elasticsearch?" + highlight: + fields: + body: + type: "semantic" + number_of_fragments: 1 + + - match: { hits.total.value: 1 } + - match: { hits.hits.0._id: "doc_1" } + - length: { hits.hits.0.highlight.body: 1 } + - match: { hits.hits.0.highlight.body.0: "You Know, for Search!" } + + - do: + search: + index: test-dense-index + body: + query: + semantic: + field: "body" + query: "What is Elasticsearch?" + highlight: + fields: + body: + type: "semantic" + number_of_fragments: 2 + + - match: { hits.total.value: 1 } + - match: { hits.hits.0._id: "doc_1" } + - length: { hits.hits.0.highlight.body: 2 } + - match: { hits.hits.0.highlight.body.0: "ElasticSearch is an open source, distributed, RESTful, search engine which is built on top of Lucene internally and enjoys all the features it provides." } + - match: { hits.hits.0.highlight.body.1: "You Know, for Search!" } + + - do: + search: + index: test-dense-index + body: + query: + semantic: + field: "body" + query: "What is Elasticsearch?" + highlight: + fields: + body: + type: "semantic" + order: "score" + number_of_fragments: 1 + + - match: { hits.total.value: 1 } + - match: { hits.hits.0._id: "doc_1" } + - length: { hits.hits.0.highlight.body: 1 } + - match: { hits.hits.0.highlight.body.0: "You Know, for Search!" } + + - do: + search: + index: test-dense-index + body: + query: + semantic: + field: "body" + query: "What is Elasticsearch?" + highlight: + fields: + body: + type: "semantic" + order: "score" + number_of_fragments: 2 + + - match: { hits.total.value: 1 } + - match: { hits.hits.0._id: "doc_1" } + - length: { hits.hits.0.highlight.body: 2 } + - match: { hits.hits.0.highlight.body.0: "You Know, for Search!" } + - match: { hits.hits.0.highlight.body.1: "ElasticSearch is an open source, distributed, RESTful, search engine which is built on top of Lucene internally and enjoys all the features it provides." } + +